<?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>223953</bug_id>
          
          <creation_ts>2021-03-30 13:30:54 -0700</creation_ts>
          <short_desc>Optimize constructors of ES6 collections</short_desc>
          <delta_ts>2021-03-31 00:22:14 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Shvayka">ashvayka</reporter>
          <assigned_to name="Alexey Shvayka">ashvayka</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1745274</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-03-30 13:30:54 -0700</bug_when>
    <thetext>Optimize constructors of ES6 collections</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745278</commentid>
    <comment_count>1</comment_count>
      <attachid>424684</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-03-30 13:34:39 -0700</bug_when>
    <thetext>Created attachment 424684
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745281</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-03-30 13:35:37 -0700</bug_when>
    <thetext>(In reply to Alexey Shvayka from comment #1)
&gt; Created attachment 424684 [details]
&gt; Patch

                               r274330                     patch

map-constructor            58.2210+-1.2994     ^     30.8037+-2.3228        ^ definitely 1.8901x faster
set-constructor            45.7864+-0.7473     ^     24.6108+-0.5660        ^ definitely 1.8604x faster
weak-map-constructor       49.8301+-1.0494     ^     20.1428+-0.3565        ^ definitely 2.4738x faster
weak-set-constructor       33.8521+-0.5850     ^     14.6234+-0.7491        ^ definitely 2.3149x faster

&lt;geometric&gt;                45.9778+-0.4459     ^     21.5779+-0.3504        ^ definitely 2.1308x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745288</commentid>
    <comment_count>3</comment_count>
      <attachid>424684</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-03-30 13:46:00 -0700</bug_when>
    <thetext>Comment on attachment 424684
Patch

r=me, nice!!!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745528</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-03-31 00:16:42 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #3)
&gt; Comment on attachment 424684 [details]
&gt; Patch
&gt; 
&gt; r=me, nice!!!

Thank you for review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745529</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-03-31 00:21:41 -0700</bug_when>
    <thetext>Committed r275271: &lt;https://commits.webkit.org/r275271&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 424684.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745530</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-31 00:22:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/76041677&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424684</attachid>
            <date>2021-03-30 13:34:39 -0700</date>
            <delta_ts>2021-03-31 00:21:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223953-20210330233437.patch</filename>
            <type>text/plain</type>
            <size>31662</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNzUyMzApCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDIyIEBACisyMDIxLTAzLTMwICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNo
QGdtYWlsLmNvbT4KKworICAgICAgICBPcHRpbWl6ZSBjb25zdHJ1Y3RvcnMgb2YgRVM2IGNvbGxl
Y3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjM5NTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IG1pY3JvYmVuY2htYXJrcy9tYXAtY29uc3RydWN0b3IuanM6CisgICAgICAgICogbWljcm9iZW5j
aG1hcmtzL3NldC1jb25zdHJ1Y3Rvci5qczogQWRkZWQuCisgICAgICAgICogbWljcm9iZW5jaG1h
cmtzL3dlYWstbWFwLWNvbnN0cnVjdG9yLmpzOiBBZGRlZC4KKyAgICAgICAgKiBtaWNyb2JlbmNo
bWFya3Mvd2Vhay1zZXQtY29uc3RydWN0b3IuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9t
YXAtY29uc3RydWN0b3ItYWRkZXIuanM6CisgICAgICAgICogc3RyZXNzL3NldC1jb25zdHJ1Y3Rv
ci1hZGRlci5qczoKKyAgICAgICAgKiBzdHJlc3Mvd2Vhay1tYXAtY29uc3RydWN0b3ItYWRkZXIt
ZXJyb3ItY3Jvc3MtcmVhbG0uanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy93ZWFrLW1hcC1j
b25zdHJ1Y3Rvci1hZGRlci5qczoKKyAgICAgICAgKiBzdHJlc3Mvd2Vhay1zZXQtY29uc3RydWN0
b3ItYWRkZXItZXJyb3ItY3Jvc3MtcmVhbG0uanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy93
ZWFrLXNldC1jb25zdHJ1Y3Rvci1hZGRlci5qczoKKyAgICAgICAgKiBzdHJlc3Mvd2Vhay1zZXQt
Y29uc3RydWN0b3IuanM6CisKIDIwMjEtMDMtMjYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFw
cGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBVc2UgQXBwbGVJQ1UgU1BJIGZvciBjYW5vbmljYWxp
emF0aW9uCkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9tYXAtY29uc3RydWN0b3IuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvbWFwLWNvbnN0cnVjdG9yLmpz
CShyZXZpc2lvbiAyNzUxNTkpCisrKyBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9tYXAtY29uc3Ry
dWN0b3IuanMJKHdvcmtpbmcgY29weSkKQEAgLTQsMjggKzQsMTAgQEAgZnVuY3Rpb24gdGVzdChh
cnJheSkKIH0KIG5vSW5saW5lKHRlc3QpOwogCi12YXIgYXJyYXkgPSBbCi0gICAgWzAsIDBdLAot
ICAgIFsxLCAwXSwKLSAgICBbMiwgMF0sCi0gICAgWzMsIDBdLAotICAgIFs0LCAwXSwKLSAgICBb
NSwgMF0sCi0gICAgWzYsIDBdLAotICAgIFs3LCAwXSwKLSAgICBbOCwgMF0sCi0gICAgWzksIDBd
LAotICAgIFsxMCwgMF0sCi0gICAgWzExLCAwXSwKLSAgICBbMTIsIDBdLAotICAgIFsxMywgMF0s
Ci0gICAgWzE0LCAwXSwKLSAgICBbMTUsIDBdLAotICAgIFsxNiwgMF0sCi0gICAgWzE3LCAwXSwK
LSAgICBbMTgsIDBdLAotICAgIFsxOSwgMF0sCi1dOwordmFyIGFycmF5ID0gW107CisKK2ZvciAo
dmFyIGogPSAwOyBqIDwgNTA7ICsraikKKyAgICBhcnJheVtqXSA9IFtqLCAwXTsKIAogZm9yICh2
YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkKICAgICB0ZXN0KGFycmF5KTsKSW5kZXg6IEpTVGVzdHMv
bWljcm9iZW5jaG1hcmtzL3NldC1jb25zdHJ1Y3Rvci5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3Rz
L21pY3JvYmVuY2htYXJrcy9zZXQtY29uc3RydWN0b3IuanMJKG5vbmV4aXN0ZW50KQorKysgSlNU
ZXN0cy9taWNyb2JlbmNobWFya3Mvc2V0LWNvbnN0cnVjdG9yLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTMgQEAKK2Z1bmN0aW9uIHRlc3QoYXJyYXkpCit7CisgICAgcmV0dXJuIG5ldyBT
ZXQoYXJyYXkpOworfQorbm9JbmxpbmUodGVzdCk7CisKK3ZhciBhcnJheSA9IFtdOworCitmb3Ig
KHZhciBqID0gMDsgaiA8IDUwOyArK2opCisgICAgYXJyYXlbal0gPSBqOworCitmb3IgKHZhciBp
ID0gMDsgaSA8IDFlNDsgKytpKQorICAgIHRlc3QoYXJyYXkpOwpJbmRleDogSlNUZXN0cy9taWNy
b2JlbmNobWFya3Mvd2Vhay1tYXAtY29uc3RydWN0b3IuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0
cy9taWNyb2JlbmNobWFya3Mvd2Vhay1tYXAtY29uc3RydWN0b3IuanMJKG5vbmV4aXN0ZW50KQor
KysgSlNUZXN0cy9taWNyb2JlbmNobWFya3Mvd2Vhay1tYXAtY29uc3RydWN0b3IuanMJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxMyBAQAorZnVuY3Rpb24gdGVzdChhcnJheSkKK3sKKyAgICBy
ZXR1cm4gbmV3IFdlYWtNYXAoYXJyYXkpOworfQorbm9JbmxpbmUodGVzdCk7CisKK3ZhciBhcnJh
eSA9IFtdOworCitmb3IgKHZhciBqID0gMDsgaiA8IDUwOyArK2opCisgICAgYXJyYXlbal0gPSBb
e30sIDBdOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKQorICAgIHRlc3QoYXJyYXkp
OwpJbmRleDogSlNUZXN0cy9taWNyb2JlbmNobWFya3Mvd2Vhay1zZXQtY29uc3RydWN0b3IuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3Mvd2Vhay1zZXQtY29uc3RydWN0
b3IuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3Mvd2Vhay1zZXQt
Y29uc3RydWN0b3IuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMyBAQAorZnVuY3Rpb24g
dGVzdChhcnJheSkKK3sKKyAgICByZXR1cm4gbmV3IFdlYWtTZXQoYXJyYXkpOworfQorbm9Jbmxp
bmUodGVzdCk7CisKK3ZhciBhcnJheSA9IFtdOworCitmb3IgKHZhciBqID0gMDsgaiA8IDUwOyAr
K2opCisgICAgYXJyYXlbal0gPSB7fTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkK
KyAgICB0ZXN0KGFycmF5KTsKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL21hcC1jb25zdHJ1Y3Rvci1h
ZGRlci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9tYXAtY29uc3RydWN0b3ItYWRk
ZXIuanMJKHJldmlzaW9uIDI3NTE1OSkKKysrIEpTVGVzdHMvc3RyZXNzL21hcC1jb25zdHJ1Y3Rv
ci1hZGRlci5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDE4IEBACiAvLyBNYXAgY29uc3Ry
dWN0b3Igd2l0aCBhZGRlciBjaGFuZ2UuCiAKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVy
cm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHRyeSB7Cisg
ICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlcnJvcikgeworICAgICAgICBlcnJvclRocm93
biA9IHRydWU7CisgICAgICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisg
ICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEJhZCBlcnJvcjogJHtlcnJvcn1gKTsKKyAgICB9
CisgICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJEaWRuJ3Qg
dGhyb3chIik7Cit9CisKIHZhciBvcmlnaW5hbEFkZGVyID0gTWFwLnByb3RvdHlwZS5zZXQ7CiB2
YXIgY291bnRlciA9IDA7CiAKQEAgLTMzLDE0ICs0NiwxMiBAQCBNYXAucHJvdG90eXBlLnNldCA9
IGZ1bmN0aW9uICgpIHsKIAogdmFyIG1hcCA9IG5ldyBNYXAoKTsKIHZhciBtYXAgPSBuZXcgTWFw
KFtdKTsKLXZhciBlcnJvciA9IG51bGw7Ci10cnkgewotICAgIHZhciBtYXAgPSBuZXcgTWFwKFsg
WzAsIDBdIF0pOwotfSBjYXRjaCAoZSkgewotICAgIGVycm9yID0gZTsKLX0KLWlmICghZXJyb3Ip
Ci0gICAgdGhyb3cgIkVycm9yOiBlcnJvciBub3QgdGhyb3duIjsKLWlmIChTdHJpbmcoZXJyb3Ip
ICE9PSAiRXJyb3I6IGFkZGVyIGNhbGxlZCIpCi0gICAgdGhyb3cgIkVycm9yOiBiYWQgZXJyb3Ig
IiArIFN0cmluZyhlcnJvcik7CiAKK3Nob3VsZFRocm93KCgpID0+IHsKKyAgICBuZXcgTWFwKFsg
WzAsIDBdIF0pOworfSwgIkVycm9yOiBhZGRlciBjYWxsZWQiKTsKKworTWFwLnByb3RvdHlwZS5z
ZXQgPSB1bmRlZmluZWQ7CitzaG91bGRUaHJvdygoKSA9PiB7CisgICAgbmV3IE1hcChbIFswLCAw
XSBdKTsKK30sICJUeXBlRXJyb3I6ICdzZXQnIHByb3BlcnR5IG9mIGEgTWFwIHNob3VsZCBiZSBj
YWxsYWJsZS4iKTsKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL3NldC1jb25zdHJ1Y3Rvci1hZGRlci5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9zZXQtY29uc3RydWN0b3ItYWRkZXIuanMJ
KHJldmlzaW9uIDI3NTE1OSkKKysrIEpTVGVzdHMvc3RyZXNzL3NldC1jb25zdHJ1Y3Rvci1hZGRl
ci5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDE4IEBACiAvLyBTZXQgY29uc3RydWN0b3Ig
d2l0aCBhZGRlciBjaGFuZ2UuCiAKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVz
c2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHRyeSB7CisgICAgICAg
IGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlcnJvcikgeworICAgICAgICBlcnJvclRocm93biA9IHRy
dWU7CisgICAgICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoYEJhZCBlcnJvcjogJHtlcnJvcn1gKTsKKyAgICB9CisgICAg
aWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJEaWRuJ3QgdGhyb3ch
Iik7Cit9CisKIHZhciBvcmlnaW5hbEFkZGVyID0gU2V0LnByb3RvdHlwZS5hZGQ7CiB2YXIgY291
bnRlciA9IDA7CiAKQEAgLTIxLDE0ICszNCwxMiBAQCBTZXQucHJvdG90eXBlLmFkZCA9IGZ1bmN0
aW9uICgpIHsKIAogdmFyIHNldCA9IG5ldyBTZXQoKTsKIHZhciBzZXQgPSBuZXcgU2V0KFtdKTsK
LXZhciBlcnJvciA9IG51bGw7Ci10cnkgewotICAgIHZhciBzZXQgPSBuZXcgU2V0KFswXSk7Ci19
IGNhdGNoIChlKSB7Ci0gICAgZXJyb3IgPSBlOwotfQotaWYgKCFlcnJvcikKLSAgICB0aHJvdyAi
RXJyb3I6IGVycm9yIG5vdCB0aHJvd24iOwotaWYgKFN0cmluZyhlcnJvcikgIT09ICJFcnJvcjog
YWRkZXIgY2FsbGVkIikKLSAgICB0aHJvdyAiRXJyb3I6IGJhZCBlcnJvciAiICsgU3RyaW5nKGVy
cm9yKTsKIAorc2hvdWxkVGhyb3coKCkgPT4geworICAgIG5ldyBTZXQoWzBdKTsKK30sICJFcnJv
cjogYWRkZXIgY2FsbGVkIik7CisKK1NldC5wcm90b3R5cGUuYWRkID0gU3ltYm9sKCk7CitzaG91
bGRUaHJvdygoKSA9PiB7CisgICAgbmV3IFNldChbMF0pOworfSwgIlR5cGVFcnJvcjogJ2FkZCcg
cHJvcGVydHkgb2YgYSBTZXQgc2hvdWxkIGJlIGNhbGxhYmxlLiIpOwpJbmRleDogSlNUZXN0cy9z
dHJlc3Mvd2Vhay1tYXAtY29uc3RydWN0b3ItYWRkZXItZXJyb3ItY3Jvc3MtcmVhbG0uanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3Mvd2Vhay1tYXAtY29uc3RydWN0b3ItYWRkZXItZXJy
b3ItY3Jvc3MtcmVhbG0uanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9zdHJlc3Mvd2Vhay1t
YXAtY29uc3RydWN0b3ItYWRkZXItZXJyb3ItY3Jvc3MtcmVhbG0uanMJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxNCBAQAorY29uc3QgcmVhbG1BID0gJHZtLmNyZWF0ZUdsb2JhbE9iamVjdCgp
OworY29uc3QgcmVhbG1CID0gJHZtLmNyZWF0ZUdsb2JhbE9iamVjdCgpOworY29uc3QgcmVhbG1D
ID0gJHZtLmNyZWF0ZUdsb2JhbE9iamVjdCgpOworCityZWFsbUIuV2Vha01hcC5wcm90b3R5cGUu
c2V0ID0KK3JlYWxtQy5XZWFrTWFwLnByb3RvdHlwZS5zZXQ7CisKK3RyeSB7CisgICAgUmVmbGVj
dC5jb25zdHJ1Y3QocmVhbG1BLldlYWtNYXAsIFtbWzAsIDBdXV0sIHJlYWxtQi5XZWFrTWFwKTsK
KyAgICB0aHJvdyAiRGlkbid0IHRocm93ISI7Cit9IGNhdGNoIChlcnIpIHsKKyAgICBpZiAoIShl
cnIgaW5zdGFuY2VvZiByZWFsbUMuVHlwZUVycm9yKSkKKyAgICAgICAgdGhyb3cgIkJhZCByZWFs
bSBvZiBhbiBlcnJvciEiOworfQpJbmRleDogSlNUZXN0cy9zdHJlc3Mvd2Vhay1tYXAtY29uc3Ry
dWN0b3ItYWRkZXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3Mvd2Vhay1tYXAtY29u
c3RydWN0b3ItYWRkZXIuanMJKHJldmlzaW9uIDI3NTE1OSkKKysrIEpTVGVzdHMvc3RyZXNzL3dl
YWstbWFwLWNvbnN0cnVjdG9yLWFkZGVyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsMTgg
QEAKIC8vIFdlYWtNYXAgY29uc3RydWN0b3Igd2l0aCBhZGRlciBjaGFuZ2UuCiAKK2Z1bmN0aW9u
IHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9
IGZhbHNlOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlcnJvcikg
eworICAgICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAgIGlmIChTdHJpbmcoZXJyb3Ip
ICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEJhZCBlcnJv
cjogJHtlcnJvcn1gKTsKKyAgICB9CisgICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJEaWRuJ3QgdGhyb3chIik7Cit9CisKIHZhciBvcmlnaW5hbEFkZGVyID0g
V2Vha01hcC5wcm90b3R5cGUuc2V0OwogdmFyIGNvdW50ZXIgPSAwOwogCkBAIC0zOCwxNCArNTEs
MTIgQEAgV2Vha01hcC5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24gKCkgewogCiB2YXIgbWFwID0g
bmV3IFdlYWtNYXAoKTsKIHZhciBtYXAgPSBuZXcgV2Vha01hcChbXSk7Ci12YXIgZXJyb3IgPSBu
dWxsOwotdHJ5IHsKLSAgICB2YXIgbWFwID0gbmV3IFdlYWtNYXAoWyBbMCwgMF0gXSk7Ci19IGNh
dGNoIChlKSB7Ci0gICAgZXJyb3IgPSBlOwotfQotaWYgKCFlcnJvcikKLSAgICB0aHJvdyAiRXJy
b3I6IGVycm9yIG5vdCB0aHJvd24iOwotaWYgKFN0cmluZyhlcnJvcikgIT09ICJFcnJvcjogYWRk
ZXIgY2FsbGVkIikKLSAgICB0aHJvdyAiRXJyb3I6IGJhZCBlcnJvciAiICsgU3RyaW5nKGVycm9y
KTsKIAorc2hvdWxkVGhyb3coKCkgPT4geworICAgIG5ldyBXZWFrTWFwKFsgWzAsIDBdIF0pOwor
fSwgIkVycm9yOiBhZGRlciBjYWxsZWQiKTsKKworV2Vha01hcC5wcm90b3R5cGUuc2V0ID0gbnVs
bDsKK3Nob3VsZFRocm93KCgpID0+IHsKKyAgICBuZXcgV2Vha01hcChbIFswLCAwXSBdKTsKK30s
ICJUeXBlRXJyb3I6ICdzZXQnIHByb3BlcnR5IG9mIGEgV2Vha01hcCBzaG91bGQgYmUgY2FsbGFi
bGUuIik7CkluZGV4OiBKU1Rlc3RzL3N0cmVzcy93ZWFrLXNldC1jb25zdHJ1Y3Rvci1hZGRlci1l
cnJvci1jcm9zcy1yZWFsbS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy93ZWFrLXNl
dC1jb25zdHJ1Y3Rvci1hZGRlci1lcnJvci1jcm9zcy1yZWFsbS5qcwkobm9uZXhpc3RlbnQpCisr
KyBKU1Rlc3RzL3N0cmVzcy93ZWFrLXNldC1jb25zdHJ1Y3Rvci1hZGRlci1lcnJvci1jcm9zcy1y
ZWFsbS5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0IEBACitjb25zdCByZWFsbUEgPSAk
dm0uY3JlYXRlR2xvYmFsT2JqZWN0KCk7Citjb25zdCByZWFsbUIgPSAkdm0uY3JlYXRlR2xvYmFs
T2JqZWN0KCk7Citjb25zdCByZWFsbUMgPSAkdm0uY3JlYXRlR2xvYmFsT2JqZWN0KCk7CisKK3Jl
YWxtQi5XZWFrU2V0LnByb3RvdHlwZS5hZGQgPQorcmVhbG1DLldlYWtTZXQucHJvdG90eXBlLmFk
ZDsKKwordHJ5IHsKKyAgICBSZWZsZWN0LmNvbnN0cnVjdChyZWFsbUEuV2Vha1NldCwgW1swXV0s
IHJlYWxtQi5XZWFrU2V0KTsKKyAgICB0aHJvdyAiRGlkbid0IHRocm93ISI7Cit9IGNhdGNoIChl
cnIpIHsKKyAgICBpZiAoIShlcnIgaW5zdGFuY2VvZiByZWFsbUMuVHlwZUVycm9yKSkKKyAgICAg
ICAgdGhyb3cgIkJhZCByZWFsbSBvZiBhbiBlcnJvciEiOworfQpJbmRleDogSlNUZXN0cy9zdHJl
c3Mvd2Vhay1zZXQtY29uc3RydWN0b3ItYWRkZXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9z
dHJlc3Mvd2Vhay1zZXQtY29uc3RydWN0b3ItYWRkZXIuanMJKHJldmlzaW9uIDI3NTE1OSkKKysr
IEpTVGVzdHMvc3RyZXNzL3dlYWstc2V0LWNvbnN0cnVjdG9yLWFkZGVyLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsMTggQEAKIC8vIFdlYWtTZXQgY29uc3RydWN0b3Igd2l0aCBhZGRlciBj
aGFuZ2UuCiAKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAg
IHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAg
ICB9IGNhdGNoIChlcnJvcikgeworICAgICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAg
IGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoYEJhZCBlcnJvcjogJHtlcnJvcn1gKTsKKyAgICB9CisgICAgaWYgKCFlcnJvclRo
cm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJEaWRuJ3QgdGhyb3chIik7Cit9CisKIHZh
ciBvcmlnaW5hbEFkZGVyID0gV2Vha1NldC5wcm90b3R5cGUuYWRkOwogdmFyIGNvdW50ZXIgPSAw
OwogCkBAIC0zOCwxNCArNTEsMTIgQEAgV2Vha1NldC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24g
KCkgewogCiB2YXIgc2V0ID0gbmV3IFdlYWtTZXQoKTsKIHZhciBzZXQgPSBuZXcgV2Vha1NldChb
XSk7Ci12YXIgZXJyb3IgPSBudWxsOwotdHJ5IHsKLSAgICB2YXIgc2V0ID0gbmV3IFdlYWtTZXQo
WyAwIF0pOwotfSBjYXRjaCAoZSkgewotICAgIGVycm9yID0gZTsKLX0KLWlmICghZXJyb3IpCi0g
ICAgdGhyb3cgbmV3IEVycm9yKCJlcnJvciBub3QgdGhyb3duIik7Ci1pZiAoU3RyaW5nKGVycm9y
KSAhPT0gIkVycm9yOiBhZGRlciBjYWxsZWQiKQotICAgIHRocm93IG5ldyBFcnJvcigiYmFkIGVy
cm9yICIgKyBTdHJpbmcoZXJyb3IpKTsKIAorc2hvdWxkVGhyb3coKCkgPT4geworICAgIG5ldyBX
ZWFrU2V0KFsgMCBdKTsKK30sICJFcnJvcjogYWRkZXIgY2FsbGVkIik7CisKK1dlYWtTZXQucHJv
dG90eXBlLmFkZCA9ICJmb28iOworc2hvdWxkVGhyb3coKCkgPT4geworICAgIG5ldyBXZWFrU2V0
KFsgMCBdKTsKK30sICJUeXBlRXJyb3I6ICdhZGQnIHByb3BlcnR5IG9mIGEgV2Vha1NldCBzaG91
bGQgYmUgY2FsbGFibGUuIik7CkluZGV4OiBKU1Rlc3RzL3N0cmVzcy93ZWFrLXNldC1jb25zdHJ1
Y3Rvci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy93ZWFrLXNldC1jb25zdHJ1Y3Rv
ci5qcwkocmV2aXNpb24gMjc1MTU5KQorKysgSlNUZXN0cy9zdHJlc3Mvd2Vhay1zZXQtY29uc3Ry
dWN0b3IuanMJKHdvcmtpbmcgY29weSkKQEAgLTE0MSw2ICsxNDEsNiBAQCB2YXIgbm9uT2JqZWN0
S2V5cyA9IFsKIF07CiAKIGZvciAodmFyIGl0ZW0gb2Ygbm9uT2JqZWN0S2V5cykgewotICAgIHRl
c3RUeXBlRXJyb3IoaXRlbSwgJ1R5cGVFcnJvcjogQXR0ZW1wdGVkIHRvIGFkZCBhIG5vbi1vYmpl
Y3Qga2V5IHRvIGEgV2Vha1NldCcpOworICAgIHRlc3RUeXBlRXJyb3IoaXRlbSwgJ1R5cGVFcnJv
cjogQXR0ZW1wdGVkIHRvIGFkZCBhIG5vbi1vYmplY3QgdmFsdWUgdG8gYSBXZWFrU2V0Jyk7CiAg
ICAgdGVzdENhbGxUeXBlRXJyb3IoaXRlbSk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDI3NTE2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1MSBAQAorMjAyMS0wMy0zMCAgQWxleGV5IFNodmF5
a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CisKKyAgICAgICAgT3B0aW1pemUgY29uc3RydWN0
b3JzIG9mIEVTNiBjb2xsZWN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIzOTUzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBzcGVlZHMgdXAgdGhlIGNvbnN0cnVjdG9ycyBieSBh
dm9pZGluZyBjYWxsKCkgZm9yIG5vbi1vYnNlcnZhYmxlCisgICAgICAgICJzZXQiIC8gImFkZCIg
bWV0aG9kcyBhbmQgdXNpbmcgZ2V0SW5kZXgoKSBmb3IgTWFwIC8gV2Vha01hcCBjb2xsZWN0aW9u
cy4KKworICAgICAgICBGb3IgTWFwIC8gU2V0LCB0aGlzIGNoYW5nZSBsZXZlcmFnZXMgZXhpc3Rp
bmcgY2xvbmluZyBoZWxwZXJzLCB3aGljaCByZWx5IG9uCisgICAgICAgIHdhdGNocG9pbnRzLCB0
byBhdm9pZCBldmVuIGEgbWV0aG9kIGxvb2t1cC4gSG93ZXZlciwgc2xvd2VyIHBhdGggaXMgdXNl
ZCBmb3IKKyAgICAgICAgc3ViY2xhc3Nlcy4gUmVzdWx0cyBpbiAxLjl4IHNwZWVkLXVwIGZvciBj
b21tb24gY2FzZS4KKworICAgICAgICBGb3IgV2Vha01hcCAvIFdlYWtTZXQsIGFkZGVyIGZ1bmN0
aW9uIGlzIGNoZWNrZWQgYnkgQysrIHBvaW50ZXIsIHdoaWNoIGVuYWJsZXMKKyAgICAgICAgZmFz
dCBwYXRoIGV2ZW4gZm9yIGNyb3NzLXJlYWxtIHN1YmNsYXNzZXMuIFJlc3VsdHMgaW4gMi4zeCBw
cm9ncmVzc2lvbi4KKworICAgICAgICBCb3RoIGFwcHJvYWNoZXMgcmVxdWlyZSBzcGVjaWFsIGhh
bmRsaW5nIG9mIGEgY3Jvc3MtcmVhbG0gTmV3VGFyZ2V0IHRvIGVuc3VyZQorICAgICAgICB0aGF0
IHJhaXNlZCBleGNlcHRpb25zIChPT00gLyBUeXBlRXJyb3IpIGJlbG9uZyB0byByZWFsbSBvZiB0
aGUgYWRkZXIgZnVuY3Rpb24sCisgICAgICAgIGFuZCBub3QgdG8gY29uc3RydWN0b3IncyBvciBO
ZXdUYXJnZXQncy4KKworICAgICAgICBBbHNvLCBhZGRzIGRlc2NyaXB0dmUgZXJyb3IgbWVzc2Fn
ZXMgZm9yIG5vbi1jYWxsYWJsZSAic2V0IiAvICJhZGQiIHByb3BlcnRpZXMuCisKKyAgICAgICAg
KiBydW50aW1lL0pTTWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SlNNYXA6OmlzU2V0RmFzdEFuZE5v
bk9ic2VydmFibGUpOgorICAgICAgICAoSlNDOjpKU01hcDo6Y2FuQ2xvbmVGYXN0QW5kTm9uT2Jz
ZXJ2YWJsZSk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU01hcC5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNTZXQuY3BwOgorICAgICAgICAoSlNDOjpKU1NldDo6aXNBZGRGYXN0QW5kTm9u
T2JzZXJ2YWJsZSk6CisgICAgICAgIChKU0M6OkpTU2V0OjpjYW5DbG9uZUZhc3RBbmROb25PYnNl
cnZhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTU2V0Lmg6CisgICAgICAgICog
cnVudGltZS9NYXBDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5jcHA6CisgICAg
ICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9X
ZWFrTWFwQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvV2Vha01hcFByb3RvdHlwZS5jcHA6CisgICAgICAg
IChKU0M6OldlYWtNYXBQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL1dlYWtNYXBQcm90
b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL1dlYWtTZXRDb25zdHJ1Y3Rvci5jcHA6CisgICAg
ICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9X
ZWFrU2V0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6V2Vha1NldFByb3RvdHlwZTo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgor
ICAgICAgICAqIHJ1bnRpbWUvV2Vha1NldFByb3RvdHlwZS5oOgorCiAyMDIxLTAzLTI4ICBTYW0g
V2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgRU5BQkxFX0lOREVY
RURfREFUQUJBU0UgJiBFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRV9JTl9XT1JLRVJTLCBpdCBzZWVt
cyBsaWtlIGl0IGlzIG9uIGZvciBhbGwgcG9ydHMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU01hcC5jcHAJKHJldmlzaW9uIDI3NTE1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksMjEgQEAg
SlNNYXAqIEpTTWFwOjpjbG9uZShKU0dsb2JhbE9iamVjdCogZ2xvYgogICAgIHJldHVybiBpbnN0
YW5jZTsKIH0KIAorYm9vbCBKU01hcDo6aXNTZXRGYXN0QW5kTm9uT2JzZXJ2YWJsZShTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc3Ry
dWN0dXJlLT5nbG9iYWxPYmplY3QoKTsKKyAgICBpZiAoIWdsb2JhbE9iamVjdC0+aXNNYXBQcm90
b3R5cGVTZXRGYXN0QW5kTm9uT2JzZXJ2YWJsZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBpZiAoc3RydWN0dXJlLT5oYXNQb2x5UHJvdG8oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgaWYgKHN0cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBlKCkgIT0gZ2xvYmFsT2JqZWN0
LT5tYXBQcm90b3R5cGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRy
dWU7Cit9CisKIGJvb2wgSlNNYXA6OmlzSXRlcmF0b3JQcm90b2NvbEZhc3RBbmROb25PYnNlcnZh
YmxlKCkKIHsKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdGhpcy0+Z2xvYmFs
T2JqZWN0KCk7CkBAIC02MCwyMyArNzUsNCBAQCBib29sIEpTTWFwOjppc0l0ZXJhdG9yUHJvdG9j
b2xGYXN0QW5kTm9uCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSlNNYXA6OmNhbkNsb25l
RmFzdEFuZE5vbk9ic2VydmFibGUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi17Ci0gICAgYXV0byBz
ZXRGYXN0QW5kTm9uT2JzZXJ2YWJsZSA9IFsmXSAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIHsKLSAg
ICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHN0cnVjdHVyZS0+Z2xvYmFsT2Jq
ZWN0KCk7Ci0gICAgICAgIGlmICghZ2xvYmFsT2JqZWN0LT5pc01hcFByb3RvdHlwZVNldEZhc3RB
bmROb25PYnNlcnZhYmxlKCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAg
aWYgKHN0cnVjdHVyZS0+aGFzUG9seVByb3RvKCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICAgICAgaWYgKHN0cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBlKCkgIT0gZ2xvYmFsT2Jq
ZWN0LT5tYXBQcm90b3R5cGUoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICB9OwotCi0gICAgcmV0dXJuIGlzSXRlcmF0b3JQcm90b2NvbEZh
c3RBbmROb25PYnNlcnZhYmxlKCkgJiYgc2V0RmFzdEFuZE5vbk9ic2VydmFibGUoc3RydWN0dXJl
KTsKLX0KLQogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNYXAuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01hcC5oCShyZXZp
c2lvbiAyNzUxNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01hcC5oCSh3
b3JraW5nIGNvcHkpCkBAIC01OSw4ICs1OSw4IEBAIHB1YmxpYzoKICAgICAgICAgYWRkKGdsb2Jh
bE9iamVjdCwga2V5LCB2YWx1ZSk7CiAgICAgfQogCisgICAgc3RhdGljIGJvb2wgaXNTZXRGYXN0
QW5kTm9uT2JzZXJ2YWJsZShTdHJ1Y3R1cmUqKTsKICAgICBib29sIGlzSXRlcmF0b3JQcm90b2Nv
bEZhc3RBbmROb25PYnNlcnZhYmxlKCk7Ci0gICAgYm9vbCBjYW5DbG9uZUZhc3RBbmROb25PYnNl
cnZhYmxlKFN0cnVjdHVyZSopOwogICAgIEpTTWFwKiBjbG9uZShKU0dsb2JhbE9iamVjdCosIFZN
JiwgU3RydWN0dXJlKik7CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1NldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTZXQuY3BwCShyZXZpc2lvbiAyNzUxNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1NldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDIxIEBAIEpT
U2V0KiBKU1NldDo6Y2xvbmUoSlNHbG9iYWxPYmplY3QqIGdsb2IKICAgICByZXR1cm4gaW5zdGFu
Y2U7CiB9CiAKK2Jvb2wgSlNTZXQ6OmlzQWRkRmFzdEFuZE5vbk9ic2VydmFibGUoU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCit7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHN0cnVj
dHVyZS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgaWYgKCFnbG9iYWxPYmplY3QtPmlzU2V0UHJvdG90
eXBlQWRkRmFzdEFuZE5vbk9ic2VydmFibGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgaWYgKHN0cnVjdHVyZS0+aGFzUG9seVByb3RvKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGlmIChzdHJ1Y3R1cmUtPnN0b3JlZFByb3RvdHlwZSgpICE9IGdsb2JhbE9iamVjdC0+
anNTZXRQcm90b3R5cGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRy
dWU7Cit9CisKIGJvb2wgSlNTZXQ6OmlzSXRlcmF0b3JQcm90b2NvbEZhc3RBbmROb25PYnNlcnZh
YmxlKCkKIHsKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdGhpcy0+Z2xvYmFs
T2JqZWN0KCk7CkBAIC02MCwyMyArNzUsNCBAQCBib29sIEpTU2V0Ojppc0l0ZXJhdG9yUHJvdG9j
b2xGYXN0QW5kTm9uCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSlNTZXQ6OmNhbkNsb25l
RmFzdEFuZE5vbk9ic2VydmFibGUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi17Ci0gICAgYXV0byBh
ZGRGYXN0QW5kTm9uT2JzZXJ2YWJsZSA9IFsmXSAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIHsKLSAg
ICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHN0cnVjdHVyZS0+Z2xvYmFsT2Jq
ZWN0KCk7Ci0gICAgICAgIGlmICghZ2xvYmFsT2JqZWN0LT5pc1NldFByb3RvdHlwZUFkZEZhc3RB
bmROb25PYnNlcnZhYmxlKCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAg
aWYgKHN0cnVjdHVyZS0+aGFzUG9seVByb3RvKCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICAgICAgaWYgKHN0cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBlKCkgIT0gZ2xvYmFsT2Jq
ZWN0LT5qc1NldFByb3RvdHlwZSgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
ICAgIHJldHVybiB0cnVlOwotICAgIH07Ci0KLSAgICByZXR1cm4gaXNJdGVyYXRvclByb3RvY29s
RmFzdEFuZE5vbk9ic2VydmFibGUoKSAmJiBhZGRGYXN0QW5kTm9uT2JzZXJ2YWJsZShzdHJ1Y3R1
cmUpOwotfQotCiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NldC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2V0LmgJKHJl
dmlzaW9uIDI3NTE1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2V0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTU5LDggKzU5LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
aW5zdGFuY2U7CiAgICAgfQogCisgICAgc3RhdGljIGJvb2wgaXNBZGRGYXN0QW5kTm9uT2JzZXJ2
YWJsZShTdHJ1Y3R1cmUqKTsKICAgICBib29sIGlzSXRlcmF0b3JQcm90b2NvbEZhc3RBbmROb25P
YnNlcnZhYmxlKCk7Ci0gICAgYm9vbCBjYW5DbG9uZUZhc3RBbmROb25PYnNlcnZhYmxlKFN0cnVj
dHVyZSopOwogICAgIEpTU2V0KiBjbG9uZShKU0dsb2JhbE9iamVjdCosIFZNJiwgU3RydWN0dXJl
Kik7CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBD
b25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTWFwQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyNzUxNTkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcw
LDIwICs3MCwyNSBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY29uc3RydWN0TWFwLCAoCiAg
ICAgaWYgKGl0ZXJhYmxlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTTWFwOjpjcmVhdGUoZ2xvYmFsT2JqZWN0
LCB2bSwgbWFwU3RydWN0dXJlKSkpOwogCisgICAgYm9vbCBjYW5QZXJmb3JtRmFzdFNldCA9IEpT
TWFwOjppc1NldEZhc3RBbmROb25PYnNlcnZhYmxlKG1hcFN0cnVjdHVyZSk7CiAgICAgaWYgKGF1
dG8qIGl0ZXJhYmxlTWFwID0ganNEeW5hbWljQ2FzdDxKU01hcCo+KHZtLCBpdGVyYWJsZSkpIHsK
LSAgICAgICAgaWYgKGl0ZXJhYmxlTWFwLT5jYW5DbG9uZUZhc3RBbmROb25PYnNlcnZhYmxlKG1h
cFN0cnVjdHVyZSkpCisgICAgICAgIGlmIChjYW5QZXJmb3JtRmFzdFNldCAmJiBpdGVyYWJsZU1h
cC0+aXNJdGVyYXRvclByb3RvY29sRmFzdEFuZE5vbk9ic2VydmFibGUoKSkKICAgICAgICAgICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGl0ZXJhYmxlTWFwLT5j
bG9uZShnbG9iYWxPYmplY3QsIHZtLCBtYXBTdHJ1Y3R1cmUpKSk7CiAgICAgfQogCiAgICAgSlNN
YXAqIG1hcCA9IEpTTWFwOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCB2bSwgbWFwU3RydWN0dXJlKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAg
IEpTVmFsdWUgYWRkZXJGdW5jdGlvbiA9IG1hcC0+SlNPYmplY3Q6OmdldChnbG9iYWxPYmplY3Qs
IHZtLnByb3BlcnR5TmFtZXMtPnNldCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7Ci0KLSAgICBhdXRvIGFkZGVyRnVuY3Rpb25DYWxsRGF0YSA9IGdl
dENhbGxEYXRhKHZtLCBhZGRlckZ1bmN0aW9uKTsKLSAgICBpZiAoYWRkZXJGdW5jdGlvbkNhbGxE
YXRhLnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUpCi0gICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSkpOworICAgIEpTVmFs
dWUgYWRkZXJGdW5jdGlvbjsKKyAgICBDYWxsRGF0YSBhZGRlckZ1bmN0aW9uQ2FsbERhdGE7Cisg
ICAgaWYgKCFjYW5QZXJmb3JtRmFzdFNldCkgeworICAgICAgICBhZGRlckZ1bmN0aW9uID0gbWFw
LT5KU09iamVjdDo6Z2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+c2V0KTsKKyAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgICAgICBhZGRlckZ1
bmN0aW9uQ2FsbERhdGEgPSBnZXRDYWxsRGF0YSh2bSwgYWRkZXJGdW5jdGlvbik7CisgICAgICAg
IGlmIChVTkxJS0VMWShhZGRlckZ1bmN0aW9uQ2FsbERhdGEudHlwZSA9PSBDYWxsRGF0YTo6VHlw
ZTo6Tm9uZSkpCisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiJ3NldCcgcHJvcGVydHkgb2YgYSBNYXAgc2hvdWxkIGJlIGNhbGxhYmxlLiJf
cyk7CisgICAgfQogCiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIGZvckVhY2hJbkl0ZXJhYmxl
KGdsb2JhbE9iamVjdCwgaXRlcmFibGUsIFsmXShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgbmV4dEl0ZW0pIHsKQEAgLTkzLDE3ICs5OCwyNCBAQCBKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04oY29uc3RydWN0TWFwLCAoCiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIAotICAgICAgICBKU1ZhbHVlIGtleSA9IG5leHRJdGVtLmdldChnbG9iYWxPYmpl
Y3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSk7CisgICAgICAgIEpTT2JqZWN0KiBuZXh0T2Jq
ZWN0ID0gYXNPYmplY3QobmV4dEl0ZW0pOworCisgICAgICAgIEpTVmFsdWUga2V5ID0gbmV4dE9i
amVjdC0+Z2V0SW5kZXgoZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCkpOwog
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCi0gICAgICAgIEpT
VmFsdWUgdmFsdWUgPSBuZXh0SXRlbS5nZXQoZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oMSkpOworICAgICAgICBKU1ZhbHVlIHZhbHVlID0gbmV4dE9iamVjdC0+Z2V0SW5kZXgo
Z2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMSkpOwogICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCisgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsK
KyAgICAgICAgaWYgKGNhblBlcmZvcm1GYXN0U2V0KSB7CisgICAgICAgICAgICBtYXAtPnNldCht
YXBTdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpLCBrZXksIHZhbHVlKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCiAgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50
czsKICAgICAgICAgYXJndW1lbnRzLmFwcGVuZChrZXkpOwogICAgICAgICBhcmd1bWVudHMuYXBw
ZW5kKHZhbHVlKTsKICAgICAgICAgQVNTRVJUKCFhcmd1bWVudHMuaGFzT3ZlcmZsb3dlZCgpKTsK
LSAgICAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgICAgICBjYWxsKGdsb2JhbE9iamVjdCwgYWRk
ZXJGdW5jdGlvbiwgYWRkZXJGdW5jdGlvbkNhbGxEYXRhLCBtYXAsIGFyZ3VtZW50cyk7CiAgICAg
fSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25z
dHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI3NTE1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1NldENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsMjMgKzcwLDMz
IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RTZXQsICgKICAgICBpZiAoaXRl
cmFibGUuaXNVbmRlZmluZWRPck51bGwoKSkgCiAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTU2V0OjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCB2bSwgc2V0
U3RydWN0dXJlKSkpOwogCisgICAgYm9vbCBjYW5QZXJmb3JtRmFzdEFkZCA9IEpTU2V0Ojppc0Fk
ZEZhc3RBbmROb25PYnNlcnZhYmxlKHNldFN0cnVjdHVyZSk7CiAgICAgaWYgKGF1dG8qIGl0ZXJh
YmxlU2V0ID0ganNEeW5hbWljQ2FzdDxKU1NldCo+KHZtLCBpdGVyYWJsZSkpIHsKLSAgICAgICAg
aWYgKGl0ZXJhYmxlU2V0LT5jYW5DbG9uZUZhc3RBbmROb25PYnNlcnZhYmxlKHNldFN0cnVjdHVy
ZSkpIAorICAgICAgICBpZiAoY2FuUGVyZm9ybUZhc3RBZGQgJiYgaXRlcmFibGVTZXQtPmlzSXRl
cmF0b3JQcm90b2NvbEZhc3RBbmROb25PYnNlcnZhYmxlKCkpIAogICAgICAgICAgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoaXRlcmFibGVTZXQtPmNsb25lKGds
b2JhbE9iamVjdCwgdm0sIHNldFN0cnVjdHVyZSkpKTsKICAgICB9CiAKICAgICBKU1NldCogc2V0
ID0gSlNTZXQ6OmNyZWF0ZShnbG9iYWxPYmplY3QsIHZtLCBzZXRTdHJ1Y3R1cmUpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgSlNWYWx1
ZSBhZGRlckZ1bmN0aW9uID0gc2V0LT5KU09iamVjdDo6Z2V0KGdsb2JhbE9iamVjdCwgdm0ucHJv
cGVydHlOYW1lcy0+YWRkKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKLQotICAgIGF1dG8gYWRkZXJGdW5jdGlvbkNhbGxEYXRhID0gZ2V0Q2FsbERh
dGEodm0sIGFkZGVyRnVuY3Rpb24pOwotICAgIGlmIChVTkxJS0VMWShhZGRlckZ1bmN0aW9uQ2Fs
bERhdGEudHlwZSA9PSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSkpCi0gICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSkpOworICAgIEpT
VmFsdWUgYWRkZXJGdW5jdGlvbjsKKyAgICBDYWxsRGF0YSBhZGRlckZ1bmN0aW9uQ2FsbERhdGE7
CisgICAgaWYgKCFjYW5QZXJmb3JtRmFzdEFkZCkgeworICAgICAgICBhZGRlckZ1bmN0aW9uID0g
c2V0LT5KU09iamVjdDo6Z2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+YWRkKTsK
KyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgICAgICBhZGRl
ckZ1bmN0aW9uQ2FsbERhdGEgPSBnZXRDYWxsRGF0YSh2bSwgYWRkZXJGdW5jdGlvbik7CisgICAg
ICAgIGlmIChVTkxJS0VMWShhZGRlckZ1bmN0aW9uQ2FsbERhdGEudHlwZSA9PSBDYWxsRGF0YTo6
VHlwZTo6Tm9uZSkpCisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiJ2FkZCcgcHJvcGVydHkgb2YgYSBTZXQgc2hvdWxkIGJlIGNhbGxhYmxl
LiJfcyk7CisgICAgfQogCiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIGZvckVhY2hJbkl0ZXJh
YmxlKGdsb2JhbE9iamVjdCwgaXRlcmFibGUsIFsmXShWTSYsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgbmV4dFZhbHVlKSB7CisgICAgICAgIGlmIChjYW5QZXJmb3JtRmFz
dEFkZCkgeworICAgICAgICAgICAgc2V0LT5hZGQoc2V0U3RydWN0dXJlLT5nbG9iYWxPYmplY3Qo
KSwgbmV4dFZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCiAgICAgICAg
IE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKICAgICAgICAgYXJndW1lbnRzLmFwcGVu
ZChuZXh0VmFsdWUpOwogICAgICAgICBBU1NFUlQoIWFyZ3VtZW50cy5oYXNPdmVyZmxvd2VkKCkp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFw
Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyNzUxNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9XZWFrTWFwQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3
ICs3NSw5IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RXZWFrTWEKIAogICAg
IGF1dG8gYWRkZXJGdW5jdGlvbkNhbGxEYXRhID0gZ2V0Q2FsbERhdGEodm0sIGFkZGVyRnVuY3Rp
b24pOwogICAgIGlmIChhZGRlckZ1bmN0aW9uQ2FsbERhdGEudHlwZSA9PSBDYWxsRGF0YTo6VHlw
ZTo6Tm9uZSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICInc2V0JyBwcm9wZXJ0eSBvZiBhIFdlYWtNYXAgc2hvdWxkIGJl
IGNhbGxhYmxlLiJfcyk7CisKKyAgICBib29sIGNhblBlcmZvcm1GYXN0U2V0ID0gYWRkZXJGdW5j
dGlvbkNhbGxEYXRhLnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5hdGl2ZSAmJiBhZGRlckZ1bmN0
aW9uQ2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID09IHByb3RvRnVuY1dlYWtNYXBTZXQ7CiAKICAg
ICBzY29wZS5yZWxlYXNlKCk7CiAgICAgZm9yRWFjaEluSXRlcmFibGUoZ2xvYmFsT2JqZWN0LCBp
dGVyYWJsZSwgWyZdKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBuZXh0SXRlbSkgewpAQCAtODUsMTIgKzg3LDIyIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
Tihjb25zdHJ1Y3RXZWFrTWEKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAg
ICAgIEpTVmFsdWUga2V5ID0gbmV4dEl0ZW0uZ2V0KGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KDApKTsKKyAgICAgICAgSlNPYmplY3QqIG5leHRPYmplY3QgPSBhc09iamVjdChu
ZXh0SXRlbSk7CisKKyAgICAgICAgSlNWYWx1ZSBrZXkgPSBuZXh0T2JqZWN0LT5nZXRJbmRleChn
bG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSk7CiAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAKLSAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IG5l
eHRJdGVtLmdldChnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigxKSk7CisgICAg
ICAgIEpTVmFsdWUgdmFsdWUgPSBuZXh0T2JqZWN0LT5nZXRJbmRleChnbG9iYWxPYmplY3QsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPigxKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHZvaWQoKSk7CiAKKyAgICAgICAgaWYgKGNhblBlcmZvcm1GYXN0U2V0KSB7CisgICAgICAg
ICAgICBpZiAoa2V5LmlzT2JqZWN0KCkpCisgICAgICAgICAgICAgICAgd2Vha01hcC0+c2V0KHZt
LCBhc09iamVjdChrZXkpLCB2YWx1ZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoYXNPYmplY3QoYWRkZXJGdW5jdGlvbiktPmdsb2JhbE9iamVjdCh2
bSksIHNjb3BlLCBXZWFrTWFwTm9uT2JqZWN0S2V5RXJyb3IpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKICAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwog
ICAgICAgICBhcmd1bWVudHMuYXBwZW5kKGtleSk7CiAgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQo
dmFsdWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcFByb3Rv
dHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vh
a01hcFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI3NTE1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1dlYWtNYXBQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwx
MiArMzEsMTMgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NvbnN0IEFTQ0lJTGl0ZXJhbCBXZWFr
TWFwTm9uT2JqZWN0S2V5RXJyb3IgeyAiQXR0ZW1wdGVkIHRvIHNldCBhIG5vbi1vYmplY3Qga2V5
IGluIGEgV2Vha01hcCJfcyB9OworCiBjb25zdCBDbGFzc0luZm8gV2Vha01hcFByb3RvdHlwZTo6
c19pbmZvID0geyAiV2Vha01hcCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENS
RUFURV9NRVRIT0RfVEFCTEUoV2Vha01hcFByb3RvdHlwZSkgfTsKIAogc3RhdGljIEpTQ19ERUNM
QVJFX0hPU1RfRlVOQ1RJT04ocHJvdG9GdW5jV2Vha01hcERlbGV0ZSk7CiBzdGF0aWMgSlNDX0RF
Q0xBUkVfSE9TVF9GVU5DVElPTihwcm90b0Z1bmNXZWFrTWFwR2V0KTsKIHN0YXRpYyBKU0NfREVD
TEFSRV9IT1NUX0ZVTkNUSU9OKHByb3RvRnVuY1dlYWtNYXBIYXMpOwotc3RhdGljIEpTQ19ERUNM
QVJFX0hPU1RfRlVOQ1RJT04ocHJvdG9GdW5jV2Vha01hcFNldCk7CiAKIHZvaWQgV2Vha01hcFBy
b3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQogewpAQCAtMTA5LDcgKzExMCw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihwcm90
b0Z1bmNXZWFrTWEKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKICAgICBKU1ZhbHVlIGtleSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCFr
ZXkuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQXR0ZW1wdGVkIHRvIHNldCBhIG5vbi1vYmplY3Qg
a2V5IGluIGEgV2Vha01hcCJfcykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIFdlYWtNYXBOb25PYmplY3RLZXlFcnJv
cikpOwogICAgIG1hcC0+c2V0KHZtLCBhc09iamVjdChrZXkpLCBjYWxsRnJhbWUtPmFyZ3VtZW50
KDEpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkp
OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcFByb3RvdHlw
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBQ
cm90b3R5cGUuaAkocmV2aXNpb24gMjc1MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvV2Vha01hcFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSwxMCBA
QAogCiBuYW1lc3BhY2UgSlNDIHsKIAorZXh0ZXJuIGNvbnN0IEFTQ0lJTGl0ZXJhbCBXZWFrTWFw
Tm9uT2JqZWN0S2V5RXJyb3I7CisKK0pTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04ocHJvdG9GdW5j
V2Vha01hcFNldCk7CisKIGNsYXNzIFdlYWtNYXBQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNO
b25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmpl
Y3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrU2V0Q29uc3RydWN0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtT
ZXRDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI3NTE1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1dlYWtTZXRDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1
LDEwICs3NSwyMCBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY29uc3RydWN0V2Vha1NlCiAK
ICAgICBhdXRvIGFkZGVyRnVuY3Rpb25DYWxsRGF0YSA9IGdldENhbGxEYXRhKHZtLCBhZGRlckZ1
bmN0aW9uKTsKICAgICBpZiAoYWRkZXJGdW5jdGlvbkNhbGxEYXRhLnR5cGUgPT0gQ2FsbERhdGE6
OlR5cGU6Ok5vbmUpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiJ2FkZCcgcHJvcGVydHkgb2YgYSBXZWFrU2V0IHNob3Vs
ZCBiZSBjYWxsYWJsZS4iX3MpOworCisgICAgYm9vbCBjYW5QZXJmb3JtRmFzdEFkZCA9IGFkZGVy
RnVuY3Rpb25DYWxsRGF0YS50eXBlID09IENhbGxEYXRhOjpUeXBlOjpOYXRpdmUgJiYgYWRkZXJG
dW5jdGlvbkNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9PSBwcm90b0Z1bmNXZWFrU2V0QWRkOwog
CiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIGZvckVhY2hJbkl0ZXJhYmxlKGdsb2JhbE9iamVj
dCwgaXRlcmFibGUsIFsmXShWTSYsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgbmV4dFZhbHVlKSB7CisgICAgICAgIGlmIChjYW5QZXJmb3JtRmFzdEFkZCkgeworICAgICAg
ICAgICAgaWYgKG5leHRWYWx1ZS5pc09iamVjdCgpKQorICAgICAgICAgICAgICAgIHdlYWtTZXQt
PmFkZCh2bSwgYXNPYmplY3QobmV4dFZhbHVlKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgdGhyb3dUeXBlRXJyb3IoYXNPYmplY3QoYWRkZXJGdW5jdGlvbiktPmdsb2JhbE9i
amVjdCh2bSksIHNjb3BlLCBXZWFrU2V0Tm9uT2JqZWN0VmFsdWVFcnJvcik7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKwogICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1
bWVudHM7CiAgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQobmV4dFZhbHVlKTsKICAgICAgICAgQVNT
RVJUKCFhcmd1bWVudHMuaGFzT3ZlcmZsb3dlZCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1dlYWtTZXRQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtTZXRQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNzUx
NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrU2V0UHJvdG90eXBlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTEgKzMxLDEyIEBACiAKIG5hbWVzcGFjZSBKU0Mgewog
Citjb25zdCBBU0NJSUxpdGVyYWwgV2Vha1NldE5vbk9iamVjdFZhbHVlRXJyb3IgeyAiQXR0ZW1w
dGVkIHRvIGFkZCBhIG5vbi1vYmplY3QgdmFsdWUgdG8gYSBXZWFrU2V0Il9zIH07CisKIGNvbnN0
IENsYXNzSW5mbyBXZWFrU2V0UHJvdG90eXBlOjpzX2luZm8gPSB7ICJXZWFrU2V0IiwgJkJhc2U6
OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShXZWFrU2V0UHJv
dG90eXBlKSB9OwogCiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihwcm90b0Z1bmNX
ZWFrU2V0RGVsZXRlKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHByb3RvRnVu
Y1dlYWtTZXRIYXMpOwotc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04ocHJvdG9GdW5j
V2Vha1NldEFkZCk7CiAKIHZvaWQgV2Vha1NldFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewpAQCAtOTYsNyArOTcsNyBAQCBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04ocHJvdG9GdW5jV2Vha1NlCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgSlNWYWx1ZSBrZXkgPSBjYWxsRnJh
bWUtPmFyZ3VtZW50KDApOwogICAgIGlmICgha2V5LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkF0
dGVtcHRlZCB0byBhZGQgYSBub24tb2JqZWN0IGtleSB0byBhIFdlYWtTZXQiX3MpKTsKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCBXZWFrU2V0Tm9uT2JqZWN0VmFsdWVFcnJvcikpOwogICAgIHNldC0+YWRkKHZtLCBhc09i
amVjdChrZXkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha1NldFBy
b3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dl
YWtTZXRQcm90b3R5cGUuaAkocmV2aXNpb24gMjc1MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvV2Vha1NldFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsy
OSwxMCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorZXh0ZXJuIGNvbnN0IEFTQ0lJTGl0ZXJhbCBX
ZWFrU2V0Tm9uT2JqZWN0VmFsdWVFcnJvcjsKKworSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihw
cm90b0Z1bmNXZWFrU2V0QWRkKTsKKwogY2xhc3MgV2Vha1NldFByb3RvdHlwZSBmaW5hbCA6IHB1
YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNOb25G
aW5hbE9iamVjdDsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NTE1OSkKKysrIExheW91dFRlc3RzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIxLTAzLTMwICBBbGV4
ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBPcHRpbWl6ZSBj
b25zdHJ1Y3RvcnMgb2YgRVM2IGNvbGxlY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjM5NTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIGpzL2RvbS9iYXNpYy13ZWFrc2V0LWV4cGVjdGVkLnR4
dDoKKwogMjAyMS0wMy0yOCAgRGllZ28gUGlubyBHYXJjaWEgIDxkcGlub0BpZ2FsaWEuY29tPgog
CiAgICAgICAgIFtHVEtdIFVucmV2aWV3ZWQgdGVzdCBnYXJkZW5pbmcuIEFkZCBzZXZlcmFsIEEx
MXkgdGVzdCBmYWlsdXJlcyB0byBUZXN0RXhwZWN0YXRpb25zLgpJbmRleDogTGF5b3V0VGVzdHMv
anMvZG9tL2Jhc2ljLXdlYWtzZXQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2pzL2RvbS9iYXNpYy13ZWFrc2V0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc1MTU5KQor
KysgTGF5b3V0VGVzdHMvanMvZG9tL2Jhc2ljLXdlYWtzZXQtZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC03LDE0ICs3LDE0IEBAIFBBU1MgV2Vha1NldCBpbnN0YW5jZW9mIFdlYWtTZXQg
aXMgZmFsc2UKIFBBU1MgV2Vha1NldC5wcm90b3R5cGUgaW5zdGFuY2VvZiBXZWFrU2V0IGlzIGZh
bHNlCiBQQVNTIG5ldyBXZWFrU2V0KCkgaW5zdGFuY2VvZiBXZWFrU2V0IGlzIHRydWUKIFBBU1Mg
V2Vha1NldCgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IGNhbGxpbmcgV2Vha1NldCBjb25z
dHJ1Y3RvciB3aXRob3V0IG5ldyBpcyBpbnZhbGlkLgotUEFTUyBzZXQuYWRkKDApIHRocmV3IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6IEF0dGVtcHRlZCB0byBhZGQgYSBub24tb2JqZWN0IGtleSB0byBh
IFdlYWtTZXQuCi1QQVNTIHNldC5hZGQoMC41KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBB
dHRlbXB0ZWQgdG8gYWRkIGEgbm9uLW9iamVjdCBrZXkgdG8gYSBXZWFrU2V0LgotUEFTUyBzZXQu
YWRkKCdmb28nKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBdHRlbXB0ZWQgdG8gYWRkIGEg
bm9uLW9iamVjdCBrZXkgdG8gYSBXZWFrU2V0LgotUEFTUyBzZXQuYWRkKHRydWUpIHRocmV3IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6IEF0dGVtcHRlZCB0byBhZGQgYSBub24tb2JqZWN0IGtleSB0byBh
IFdlYWtTZXQuCi1QQVNTIHNldC5hZGQoZmFsc2UpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IEF0dGVtcHRlZCB0byBhZGQgYSBub24tb2JqZWN0IGtleSB0byBhIFdlYWtTZXQuCi1QQVNTIHNl
dC5hZGQobnVsbCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXR0ZW1wdGVkIHRvIGFkZCBh
IG5vbi1vYmplY3Qga2V5IHRvIGEgV2Vha1NldC4KLVBBU1Mgc2V0LmFkZCh1bmRlZmluZWQpIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEF0dGVtcHRlZCB0byBhZGQgYSBub24tb2JqZWN0IGtl
eSB0byBhIFdlYWtTZXQuCi1QQVNTIHNldC5hZGQoU3ltYm9sLml0ZXJhdG9yKSB0aHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiBBdHRlbXB0ZWQgdG8gYWRkIGEgbm9uLW9iamVjdCBrZXkgdG8gYSBX
ZWFrU2V0LgorUEFTUyBzZXQuYWRkKDApIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEF0dGVt
cHRlZCB0byBhZGQgYSBub24tb2JqZWN0IHZhbHVlIHRvIGEgV2Vha1NldC4KK1BBU1Mgc2V0LmFk
ZCgwLjUpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEF0dGVtcHRlZCB0byBhZGQgYSBub24t
b2JqZWN0IHZhbHVlIHRvIGEgV2Vha1NldC4KK1BBU1Mgc2V0LmFkZCgnZm9vJykgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogQXR0ZW1wdGVkIHRvIGFkZCBhIG5vbi1vYmplY3QgdmFsdWUgdG8g
YSBXZWFrU2V0LgorUEFTUyBzZXQuYWRkKHRydWUpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IEF0dGVtcHRlZCB0byBhZGQgYSBub24tb2JqZWN0IHZhbHVlIHRvIGEgV2Vha1NldC4KK1BBU1Mg
c2V0LmFkZChmYWxzZSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXR0ZW1wdGVkIHRvIGFk
ZCBhIG5vbi1vYmplY3QgdmFsdWUgdG8gYSBXZWFrU2V0LgorUEFTUyBzZXQuYWRkKG51bGwpIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEF0dGVtcHRlZCB0byBhZGQgYSBub24tb2JqZWN0IHZh
bHVlIHRvIGEgV2Vha1NldC4KK1BBU1Mgc2V0LmFkZCh1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IEF0dGVtcHRlZCB0byBhZGQgYSBub24tb2JqZWN0IHZhbHVlIHRvIGEgV2Vh
a1NldC4KK1BBU1Mgc2V0LmFkZChTeW1ib2wuaXRlcmF0b3IpIHRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IEF0dGVtcHRlZCB0byBhZGQgYSBub24tb2JqZWN0IHZhbHVlIHRvIGEgV2Vha1NldC4K
IFBBU1Mgc2V0LmhhcygwKSBpcyBmYWxzZQogUEFTUyBzZXQuaGFzKDAuNSkgaXMgZmFsc2UKIFBB
U1Mgc2V0LmhhcygnZm9vJykgaXMgZmFsc2UK
</data>

          </attachment>
      

    </bug>

</bugzilla>