<?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>79383</bug_id>
          
          <creation_ts>2012-02-23 11:46:28 -0800</creation_ts>
          <short_desc>Remove obsolete File attributes</short_desc>
          <delta_ts>2012-03-21 10:27:05 -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>WebCore Misc.</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>aa</cc>
    
    <cc>abarth</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dimich</cc>
    
    <cc>fishd</cc>
    
    <cc>jianli</cc>
    
    <cc>morrita</cc>
    
    <cc>ojan</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>563316</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-02-23 11:46:28 -0800</bug_when>
    <thetext>// FIXME: obsolete attributes. To be removed.
        readonly attribute DOMString fileName;
        readonly attribute unsigned long long fileSize;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563354</commentid>
    <comment_count>1</comment_count>
      <attachid>128531</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-02-23 12:17:46 -0800</bug_when>
    <thetext>Created attachment 128531
proposed patch

Talked to Tim Hatcher on IRC, he&apos;s fine with removing these from public interfaces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563370</commentid>
    <comment_count>2</comment_count>
      <attachid>128537</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-02-23 12:32:19 -0800</bug_when>
    <thetext>Created attachment 128537
with build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563379</commentid>
    <comment_count>3</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2012-02-23 12:51:32 -0800</bug_when>
    <thetext>This is a breaking change. Alex, do you know how many web pages might be still accessing fileName and fileSize?

Fisher, is it fine to stop supporting these obsolete attributes in Chromium?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563440</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-02-23 13:55:39 -0800</bug_when>
    <thetext>I do not know how much content would break, but if we ever plan to drop these attributes, now is a great time, in my opinion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563560</commentid>
    <comment_count>5</comment_count>
      <attachid>128537</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-23 15:33:03 -0800</bug_when>
    <thetext>Comment on attachment 128537
with build fix

Attachment 128537 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11603448

New failing tests:
http/tests/security/clipboard/clipboard-file-access.html
editing/pasteboard/file-input-files-access.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563573</commentid>
    <comment_count>6</comment_count>
      <attachid>128573</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-02-23 15:45:20 -0800</bug_when>
    <thetext>Created attachment 128573
with updated tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563760</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-02-23 17:45:57 -0800</bug_when>
    <thetext>It seems like it would be helpful to announce deprecation / removal of APIs on webkit-dev, and give port maintainers a chance to review the change.

For Chromium, we might want to look to see if any Chrome Extensions are using these attributes before we remove them.  See for example the webkit-dev thread about removing HTML notifications from WebKit.

I&apos;m also a little bit concerned about the possibility of fileName and fileSize being used on the web since Firefox also implements those attributes:
https://developer.mozilla.org/en/DOM/File

Alexey, have you spoken with any Firefox devs about removing these attributes?  What makes you confident that we can make this change without breaking web sites?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563836</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-02-23 19:23:50 -0800</bug_when>
    <thetext>Just getting my feet wet by following a comment left by someone else, CC&apos;ing people in the know and waiting for feedback. Thanks for the pointers!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564114</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2012-02-24 02:05:26 -0800</bug_when>
    <thetext>Please wait for approval from timothy@apple.com (or another member of the Apple Safari Team) before submitting because this patch contains changes to the Apple Mac WebKit.framework public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564386</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-02-24 09:33:14 -0800</bug_when>
    <thetext>Firefox 10 doesn&apos;t support these - Jonas says that they were removed a few versions ago.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564529</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-02-24 11:49:09 -0800</bug_when>
    <thetext>I&apos;m glad to hear that Firefox has removed them too.  On the Chromium side, we can certainly be aggressive about disabling these in our nightly / dev channel builds.  Hopefully, if it breaks any websites (or extensions), that&apos;ll be enough for people to notice and file bug reports.

Would it make sense to do a smaller patch up front that just hides the DOM properties?  Should we worry about our ability to revert this patch if we find a month from now that it is doom-and-gloom?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564532</commentid>
    <comment_count>12</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-02-24 11:57:01 -0800</bug_when>
    <thetext>This seems trivial to revert if needed, I&apos;d prefer removing to hiding if it&apos;s OK with you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580098</commentid>
    <comment_count>13</comment_count>
      <attachid>128573</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-03-15 21:12:26 -0700</bug_when>
    <thetext>Comment on attachment 128573
with updated tests

Looks like there has been no further objection over weeks.
I agree that it&apos;s easy to revert this patch because the API is basically just alias or new name.
r+ing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583728</commentid>
    <comment_count>14</comment_count>
      <attachid>128573</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-20 20:07:45 -0700</bug_when>
    <thetext>Comment on attachment 128573
with updated tests

Rejecting attachment 128573 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
youtTests/http/tests/security/clipboard/script-tests/clipboard-file-access.js is not empty after patch, as expected
1 out of 1 hunk FAILED -- saving rejects to file LayoutTests/http/tests/security/clipboard/script-tests/clipboard-file-access.js.rej
rm &apos;LayoutTests/http/tests/security/clipboard/script-tests/clipboard-file-access.js&apos;

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;, u&apos;--reviewer&apos;, u&apos;Hajime Mor...&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue/

Full output: http://queues.webkit.org/results/12035183</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583759</commentid>
    <comment_count>15</comment_count>
      <attachid>132960</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-03-20 20:56:03 -0700</bug_when>
    <thetext>Created attachment 132960
updated for test changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583763</commentid>
    <comment_count>16</comment_count>
      <attachid>132960</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-20 20:58:25 -0700</bug_when>
    <thetext>Comment on attachment 132960
updated for test changes

Rejecting attachment 132960 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 1

Hajime Morrita found in /mnt/git/webkit-commit-queue/LayoutTests/ChangeLog does not appear to be a valid reviewer according to committers.py.
ERROR: /mnt/git/webkit-commit-queue/LayoutTests/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://queues.webkit.org/results/12071120</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583767</commentid>
    <comment_count>17</comment_count>
      <attachid>132962</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-03-20 21:03:25 -0700</bug_when>
    <thetext>Created attachment 132962
spell reviewer name per committers.py, not per Bugzilla name</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583845</commentid>
    <comment_count>18</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-03-20 23:32:42 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; Created an attachment (id=132962) [details]
&gt; spell reviewer name per committers.py, not per Bugzilla name
Oops. I&apos;ll align this once the patch landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583846</commentid>
    <comment_count>19</comment_count>
      <attachid>132962</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-20 23:34:45 -0700</bug_when>
    <thetext>Comment on attachment 132962
spell reviewer name per committers.py, not per Bugzilla name

Rejecting attachment 132962 from commit-queue.

New failing tests:
http/tests/security/clipboard/clipboard-file-access.html
Full output: http://queues.webkit.org/results/12035269</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584300</commentid>
    <comment_count>20</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-03-21 10:27:05 -0700</bug_when>
    <thetext>Landed manually in &lt;http://trac.webkit.org/changeset/111569&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128531</attachid>
            <date>2012-02-23 12:17:46 -0800</date>
            <delta_ts>2012-02-23 12:32:19 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>RemoveObsoleteFileAttributes.txt</filename>
            <type>text/plain</type>
            <size>2521</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwODY1NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEyLTAyLTIzICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBvYnNvbGV0ZSBG
aWxlIGF0dHJpYnV0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc5MzgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9vYmpjL1B1YmxpY0RPTUludGVyZmFjZXMuaDoKKyAgICAgICAgKiBm
aWxlYXBpL0ZpbGUuaDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGUuaWRsOgorICAgICAgICBSZW1v
dmVkIGZpbGVOYW1lIGFuZCBmaWxlU2l6ZSwgdGhleSBoYXZlIGRpZmZlcmVudCBuYW1lcyBub3cu
CisKIDIwMTItMDItMjMgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgV2ViIEluc3BlY3RvcjogbWFkIFJlZG8gdG8gQ21kK1NoaWZ0K1osIG5vdCBDbWQr
WSBvbiBhIE1hYy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvUHVibGljRE9N
SW50ZXJmYWNlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMv
UHVibGljRE9NSW50ZXJmYWNlcy5oCShyZXZpc2lvbiAxMDg1MTApCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9vYmpjL1B1YmxpY0RPTUludGVyZmFjZXMuaAkod29ya2luZyBjb3B5KQpAQCAt
MjQ0LDEwICsyNDQsNiBAQCBAaW50ZXJmYWNlIERPTUJsb2IgOiBET01PYmplY3QgV0VCS0lUX1ZF
CiAKIEBpbnRlcmZhY2UgRE9NRmlsZSA6IERPTUJsb2IgV0VCS0lUX1ZFUlNJT05fNF8wCiBAcHJv
cGVydHkocmVhZG9ubHksIGNvcHkpIE5TU3RyaW5nICpuYW1lOwotCi0vLyBGSVhNRTogb2Jzb2xl
dGUgcHJvcGVydGllcy4gVG8gYmUgcmVtb3ZlZC4KLUBwcm9wZXJ0eShyZWFkb25seSwgY29weSkg
TlNTdHJpbmcgKmZpbGVOYW1lOwotQHByb3BlcnR5KHJlYWRvbmx5KSB1bnNpZ25lZCBsb25nIGxv
bmcgZmlsZVNpemU7CiBAZW5kCiAKIEBpbnRlcmZhY2UgRE9NRmlsZUxpc3QgOiBET01PYmplY3Qg
V0VCS0lUX1ZFUlNJT05fNF8wCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaAkocmV2aXNpb24gMTA4
NTEwKQorKysgU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTc0LDEwICs3NCw2IEBAIHB1YmxpYzoKICAgICAvLyBOb3RlIHRoYXQgdGhpcyBpbnZvbHZlcyBz
eW5jaHJvbm91cyBmaWxlIG9wZXJhdGlvbi4gVGhpbmsgdHdpY2UgYmVmb3JlIGNhbGxpbmcgdGhp
cyBmdW5jdGlvbi4KICAgICB2b2lkIGNhcHR1cmVTbmFwc2hvdChsb25nIGxvbmcmIHNuYXBzaG90
U2l6ZSwgZG91YmxlJiBzbmFwc2hvdE1vZGlmaWNhdGlvblRpbWUpIGNvbnN0OwogCi0gICAgLy8g
RklYTUU6IG9ic29sZXRlIGF0dHJpYnV0ZXMuIFRvIGJlIHJlbW92ZWQuCi0gICAgY29uc3QgU3Ry
aW5nJiBmaWxlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG5hbWUoKTsgfQotICAgIHVuc2lnbmVkIGxv
bmcgbG9uZyBmaWxlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHNpemUoKTsgfQotCiBwcml2YXRlOgog
ICAgIEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9GaWxlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUu
aWRsCShyZXZpc2lvbiAxMDg1MTApCisrKyBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0zNywxMCArMzcsNiBAQCBtb2R1bGUgaHRtbCB7CiAjaWYgZGVm
aW5lZChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkgJiYgRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQK
ICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB3ZWJraXRSZWxhdGl2ZVBhdGg7
CiAjZW5kaWYKLQotICAgICAgICAvLyBGSVhNRTogb2Jzb2xldGUgYXR0cmlidXRlcy4gVG8gYmUg
cmVtb3ZlZC4KLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBmaWxlTmFtZTsK
LSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbG9uZyBmaWxlU2l6ZTsK
ICAgICB9OwogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128537</attachid>
            <date>2012-02-23 12:32:19 -0800</date>
            <delta_ts>2012-02-23 15:45:20 -0800</delta_ts>
            <desc>with build fix</desc>
            <filename>ObsoleteFileAttributes.txt</filename>
            <type>text/plain</type>
            <size>4118</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwODY1NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDEyLTAyLTIzICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBvYnNvbGV0ZSBG
aWxlIGF0dHJpYnV0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc5MzgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9vYmpjL1B1YmxpY0RPTUludGVyZmFjZXMuaDoKKyAgICAgICAgKiBm
aWxlYXBpL0ZpbGUuaDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGUuaWRsOgorICAgICAgICBSZW1v
dmVkIGZpbGVOYW1lIGFuZCBmaWxlU2l6ZSwgdGhleSBoYXZlIGRpZmZlcmVudCBuYW1lcyBub3cu
CisKKyAgICAgICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RmlsZUlucHV0VHlwZTo6YXBwZW5kRm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlu
cHV0VHlwZTo6Z2V0VHlwZVNwZWNpZmljVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlu
cHV0VHlwZTo6ZGVmYXVsdFRvb2xUaXApOgorICAgICAgICBVcGRhdGVkIHRvIHVzZSBuZXcgZnVu
Y3Rpb24gbmFtZXMuCisKIDIwMTItMDItMjMgIE1hdHRoZXcgRGVsYW5leSAgPG1kZWxhbmV5QGFw
cGxlLmNvbT4KIAogICAgICAgICBGaXggZm9yIGNhbnZhcyBicmVha2FnZSBjYXVzZWQgYnkgcjEw
ODU5NyBmcm9tIHRoZSBmb2xsb3dpbmc6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL1B1YmxpY0RPTUludGVyZmFjZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9vYmpjL1B1YmxpY0RPTUludGVyZmFjZXMuaAkocmV2aXNpb24gMTA4NTEwKQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9QdWJsaWNET01JbnRlcmZhY2VzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI0NCwxMCArMjQ0LDYgQEAgQGludGVyZmFjZSBET01CbG9iIDogRE9NT2Jq
ZWN0IFdFQktJVF9WRQogCiBAaW50ZXJmYWNlIERPTUZpbGUgOiBET01CbG9iIFdFQktJVF9WRVJT
SU9OXzRfMAogQHByb3BlcnR5KHJlYWRvbmx5LCBjb3B5KSBOU1N0cmluZyAqbmFtZTsKLQotLy8g
RklYTUU6IG9ic29sZXRlIHByb3BlcnRpZXMuIFRvIGJlIHJlbW92ZWQuCi1AcHJvcGVydHkocmVh
ZG9ubHksIGNvcHkpIE5TU3RyaW5nICpmaWxlTmFtZTsKLUBwcm9wZXJ0eShyZWFkb25seSkgdW5z
aWduZWQgbG9uZyBsb25nIGZpbGVTaXplOwogQGVuZAogCiBAaW50ZXJmYWNlIERPTUZpbGVMaXN0
IDogRE9NT2JqZWN0IFdFQktJVF9WRVJTSU9OXzRfMApJbmRleDogU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9GaWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgJ
KHJldmlzaW9uIDEwODUxMCkKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03NCwxMCArNzQsNiBAQCBwdWJsaWM6CiAgICAgLy8gTm90ZSB0aGF0IHRo
aXMgaW52b2x2ZXMgc3luY2hyb25vdXMgZmlsZSBvcGVyYXRpb24uIFRoaW5rIHR3aWNlIGJlZm9y
ZSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uCiAgICAgdm9pZCBjYXB0dXJlU25hcHNob3QobG9uZyBs
b25nJiBzbmFwc2hvdFNpemUsIGRvdWJsZSYgc25hcHNob3RNb2RpZmljYXRpb25UaW1lKSBjb25z
dDsKIAotICAgIC8vIEZJWE1FOiBvYnNvbGV0ZSBhdHRyaWJ1dGVzLiBUbyBiZSByZW1vdmVkLgot
ICAgIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUoKSBjb25zdCB7IHJldHVybiBuYW1lKCk7IH0KLSAg
ICB1bnNpZ25lZCBsb25nIGxvbmcgZmlsZVNpemUoKSBjb25zdCB7IHJldHVybiBzaXplKCk7IH0K
LQogcHJpdmF0ZToKICAgICBGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCk7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9GaWxlLmlkbAkocmV2aXNpb24gMTA4NTEwKQorKysgU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9GaWxlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTAgKzM3LDYgQEAgbW9kdWxlIGh0
bWwgewogI2lmIGRlZmluZWQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICYmIEVOQUJMRV9ESVJF
Q1RPUllfVVBMT0FECiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgd2Via2l0
UmVsYXRpdmVQYXRoOwogI2VuZGlmCi0KLSAgICAgICAgLy8gRklYTUU6IG9ic29sZXRlIGF0dHJp
YnV0ZXMuIFRvIGJlIHJlbW92ZWQuCi0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJp
bmcgZmlsZU5hbWU7Ci0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxv
bmcgZmlsZVNpemU7CiAgICAgfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9GaWxl
SW5wdXRUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1
dFR5cGUuY3BwCShyZXZpc2lvbiAxMDg1MTApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJ
bnB1dFR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsNyArMTEyLDcgQEAgYm9vbCBGaWxl
SW5wdXRUeXBlOjphcHBlbmRGb3JtRGF0YShGb3JtRAogICAgICAgICAvLyBzdWJtaXNzaW9uIG9m
IGZpbGUgaW5wdXRzLCBhbmQgRmlyZWZveCBkb2Vzbid0IGFkZCAibmFtZT0iIHF1ZXJ5CiAgICAg
ICAgIC8vIHBhcmFtZXRlci4KICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUZp
bGVzOyArK2kpCi0gICAgICAgICAgICBlbmNvZGluZy5hcHBlbmREYXRhKGVsZW1lbnQoKS0+bmFt
ZSgpLCBmaWxlTGlzdC0+aXRlbShpKS0+ZmlsZU5hbWUoKSk7CisgICAgICAgICAgICBlbmNvZGlu
Zy5hcHBlbmREYXRhKGVsZW1lbnQoKS0+bmFtZSgpLCBmaWxlTGlzdC0+aXRlbShpKS0+bmFtZSgp
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0yMDksNyArMjA5LDcgQEAgYm9v
bCBGaWxlSW5wdXRUeXBlOjpnZXRUeXBlU3BlY2lmaWNWYWx1ZQogICAgIC8vIGRlY2lkZWQgdG8g
dHJ5IHRvIHBhcnNlIHRoZSB2YWx1ZSBieSBsb29raW5nIGZvciBiYWNrc2xhc2hlcwogICAgIC8v
IChiZWNhdXNlIHRoYXQncyB3aGF0IFdpbmRvd3MgZmlsZSBwYXRocyB1c2UpLiBUbyBiZSBjb21w
YXRpYmxlCiAgICAgLy8gd2l0aCB0aGF0IGNvZGUsIHdlIG1ha2UgdXAgYSBmYWtlIHBhdGggZm9y
IHRoZSBmaWxlLgotICAgIHZhbHVlID0gIkM6XFxmYWtlcGF0aFxcIiArIG1fZmlsZUxpc3QtPml0
ZW0oMCktPmZpbGVOYW1lKCk7CisgICAgdmFsdWUgPSAiQzpcXGZha2VwYXRoXFwiICsgbV9maWxl
TGlzdC0+aXRlbSgwKS0+bmFtZSgpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zODQsNyAr
Mzg0LDcgQEAgU3RyaW5nIEZpbGVJbnB1dFR5cGU6OmRlZmF1bHRUb29sVGlwKCkgYwogCiAgICAg
U3RyaW5nQnVpbGRlciBuYW1lczsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3RTaXpl
OyArK2kpIHsKLSAgICAgICAgbmFtZXMuYXBwZW5kKGZpbGVMaXN0LT5pdGVtKGkpLT5maWxlTmFt
ZSgpKTsKKyAgICAgICAgbmFtZXMuYXBwZW5kKGZpbGVMaXN0LT5pdGVtKGkpLT5uYW1lKCkpOwog
ICAgICAgICBpZiAoaSAhPSBsaXN0U2l6ZSAtIDEpCiAgICAgICAgICAgICBuYW1lcy5hcHBlbmQo
J1xuJyk7CiAgICAgfQo=
</data>
<flag name="commit-queue"
          id="130992"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128573</attachid>
            <date>2012-02-23 15:45:20 -0800</date>
            <delta_ts>2012-03-20 20:56:03 -0700</delta_ts>
            <desc>with updated tests</desc>
            <filename>ObsoleteFileAttributes.txt</filename>
            <type>text/plain</type>
            <size>37090</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwODY1NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDEyLTAyLTIzICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBvYnNvbGV0ZSBG
aWxlIGF0dHJpYnV0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc5MzgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9vYmpjL1B1YmxpY0RPTUludGVyZmFjZXMuaDoKKyAgICAgICAgKiBm
aWxlYXBpL0ZpbGUuaDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGUuaWRsOgorICAgICAgICBSZW1v
dmVkIGZpbGVOYW1lIGFuZCBmaWxlU2l6ZSwgdGhleSBoYXZlIGRpZmZlcmVudCBuYW1lcyBub3cu
CisKKyAgICAgICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RmlsZUlucHV0VHlwZTo6YXBwZW5kRm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlu
cHV0VHlwZTo6Z2V0VHlwZVNwZWNpZmljVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlu
cHV0VHlwZTo6ZGVmYXVsdFRvb2xUaXApOgorICAgICAgICBVcGRhdGVkIHRvIHVzZSBuZXcgZnVu
Y3Rpb24gbmFtZXMuCisKIDIwMTItMDItMjMgIE1hdHRoZXcgRGVsYW5leSAgPG1kZWxhbmV5QGFw
cGxlLmNvbT4KIAogICAgICAgICBGaXggZm9yIGNhbnZhcyBicmVha2FnZSBjYXVzZWQgYnkgcjEw
ODU5NyBmcm9tIHRoZSBmb2xsb3dpbmc6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL1B1YmxpY0RPTUludGVyZmFjZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9vYmpjL1B1YmxpY0RPTUludGVyZmFjZXMuaAkocmV2aXNpb24gMTA4NTEwKQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9QdWJsaWNET01JbnRlcmZhY2VzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI0NCwxMCArMjQ0LDYgQEAgQGludGVyZmFjZSBET01CbG9iIDogRE9NT2Jq
ZWN0IFdFQktJVF9WRQogCiBAaW50ZXJmYWNlIERPTUZpbGUgOiBET01CbG9iIFdFQktJVF9WRVJT
SU9OXzRfMAogQHByb3BlcnR5KHJlYWRvbmx5LCBjb3B5KSBOU1N0cmluZyAqbmFtZTsKLQotLy8g
RklYTUU6IG9ic29sZXRlIHByb3BlcnRpZXMuIFRvIGJlIHJlbW92ZWQuCi1AcHJvcGVydHkocmVh
ZG9ubHksIGNvcHkpIE5TU3RyaW5nICpmaWxlTmFtZTsKLUBwcm9wZXJ0eShyZWFkb25seSkgdW5z
aWduZWQgbG9uZyBsb25nIGZpbGVTaXplOwogQGVuZAogCiBAaW50ZXJmYWNlIERPTUZpbGVMaXN0
IDogRE9NT2JqZWN0IFdFQktJVF9WRVJTSU9OXzRfMApJbmRleDogU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9GaWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgJ
KHJldmlzaW9uIDEwODUxMCkKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03NCwxMCArNzQsNiBAQCBwdWJsaWM6CiAgICAgLy8gTm90ZSB0aGF0IHRo
aXMgaW52b2x2ZXMgc3luY2hyb25vdXMgZmlsZSBvcGVyYXRpb24uIFRoaW5rIHR3aWNlIGJlZm9y
ZSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uCiAgICAgdm9pZCBjYXB0dXJlU25hcHNob3QobG9uZyBs
b25nJiBzbmFwc2hvdFNpemUsIGRvdWJsZSYgc25hcHNob3RNb2RpZmljYXRpb25UaW1lKSBjb25z
dDsKIAotICAgIC8vIEZJWE1FOiBvYnNvbGV0ZSBhdHRyaWJ1dGVzLiBUbyBiZSByZW1vdmVkLgot
ICAgIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUoKSBjb25zdCB7IHJldHVybiBuYW1lKCk7IH0KLSAg
ICB1bnNpZ25lZCBsb25nIGxvbmcgZmlsZVNpemUoKSBjb25zdCB7IHJldHVybiBzaXplKCk7IH0K
LQogcHJpdmF0ZToKICAgICBGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCk7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9GaWxlLmlkbAkocmV2aXNpb24gMTA4NTEwKQorKysgU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9GaWxlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTAgKzM3LDYgQEAgbW9kdWxlIGh0
bWwgewogI2lmIGRlZmluZWQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICYmIEVOQUJMRV9ESVJF
Q1RPUllfVVBMT0FECiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgd2Via2l0
UmVsYXRpdmVQYXRoOwogI2VuZGlmCi0KLSAgICAgICAgLy8gRklYTUU6IG9ic29sZXRlIGF0dHJp
YnV0ZXMuIFRvIGJlIHJlbW92ZWQuCi0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJp
bmcgZmlsZU5hbWU7Ci0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxv
bmcgZmlsZVNpemU7CiAgICAgfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9GaWxl
SW5wdXRUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1
dFR5cGUuY3BwCShyZXZpc2lvbiAxMDg1MTApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJ
bnB1dFR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsNyArMTEyLDcgQEAgYm9vbCBGaWxl
SW5wdXRUeXBlOjphcHBlbmRGb3JtRGF0YShGb3JtRAogICAgICAgICAvLyBzdWJtaXNzaW9uIG9m
IGZpbGUgaW5wdXRzLCBhbmQgRmlyZWZveCBkb2Vzbid0IGFkZCAibmFtZT0iIHF1ZXJ5CiAgICAg
ICAgIC8vIHBhcmFtZXRlci4KICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUZp
bGVzOyArK2kpCi0gICAgICAgICAgICBlbmNvZGluZy5hcHBlbmREYXRhKGVsZW1lbnQoKS0+bmFt
ZSgpLCBmaWxlTGlzdC0+aXRlbShpKS0+ZmlsZU5hbWUoKSk7CisgICAgICAgICAgICBlbmNvZGlu
Zy5hcHBlbmREYXRhKGVsZW1lbnQoKS0+bmFtZSgpLCBmaWxlTGlzdC0+aXRlbShpKS0+bmFtZSgp
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0yMDksNyArMjA5LDcgQEAgYm9v
bCBGaWxlSW5wdXRUeXBlOjpnZXRUeXBlU3BlY2lmaWNWYWx1ZQogICAgIC8vIGRlY2lkZWQgdG8g
dHJ5IHRvIHBhcnNlIHRoZSB2YWx1ZSBieSBsb29raW5nIGZvciBiYWNrc2xhc2hlcwogICAgIC8v
IChiZWNhdXNlIHRoYXQncyB3aGF0IFdpbmRvd3MgZmlsZSBwYXRocyB1c2UpLiBUbyBiZSBjb21w
YXRpYmxlCiAgICAgLy8gd2l0aCB0aGF0IGNvZGUsIHdlIG1ha2UgdXAgYSBmYWtlIHBhdGggZm9y
IHRoZSBmaWxlLgotICAgIHZhbHVlID0gIkM6XFxmYWtlcGF0aFxcIiArIG1fZmlsZUxpc3QtPml0
ZW0oMCktPmZpbGVOYW1lKCk7CisgICAgdmFsdWUgPSAiQzpcXGZha2VwYXRoXFwiICsgbV9maWxl
TGlzdC0+aXRlbSgwKS0+bmFtZSgpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zODQsNyAr
Mzg0LDcgQEAgU3RyaW5nIEZpbGVJbnB1dFR5cGU6OmRlZmF1bHRUb29sVGlwKCkgYwogCiAgICAg
U3RyaW5nQnVpbGRlciBuYW1lczsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3RTaXpl
OyArK2kpIHsKLSAgICAgICAgbmFtZXMuYXBwZW5kKGZpbGVMaXN0LT5pdGVtKGkpLT5maWxlTmFt
ZSgpKTsKKyAgICAgICAgbmFtZXMuYXBwZW5kKGZpbGVMaXN0LT5pdGVtKGkpLT5uYW1lKCkpOwog
ICAgICAgICBpZiAoaSAhPSBsaXN0U2l6ZSAtIDEpCiAgICAgICAgICAgICBuYW1lcy5hcHBlbmQo
J1xuJyk7CiAgICAgfQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTA4Njg1KQorKysgTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMDItMjMgIEFs
ZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIG9ic29s
ZXRlIEZpbGUgYXR0cmlidXRlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzkzODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9maWxlLWlucHV0LWZpbGVzLWFjY2Vzcy1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2ZpbGUtaW5wdXQtZmls
ZXMtYWNjZXNzLmh0bWw6CisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL3NjcmlwdC10ZXN0
cy9maWxlLWlucHV0LWZpbGVzLWFjY2Vzcy5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL3NlY3VyaXR5L2NsaXBib2FyZC9jbGlwYm9hcmQtZmlsZS1hY2Nlc3MtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY2xpcGJvYXJkL2NsaXBib2FyZC1maWxl
LWFjY2Vzcy5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY2xpcGJvYXJkL3Nj
cmlwdC10ZXN0cy9jbGlwYm9hcmQtZmlsZS1hY2Nlc3MuanM6IFJlbW92ZWQuCisgICAgICAgIFVw
ZGF0ZWQgdGhlIHRlc3RzIHRvIG5vdCB1c2UgcmVtb3ZlZCBhdHRyaWJ1dGVzLCBhbmQgY29uc29s
aWRhdGVkIGZpbGVzIGZvciBlYXNpZXIgYWNjZXNzLgorCiAyMDEyLTAyLTIzICBBZHJpZW5uZSBX
YWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBVbnJldmlld2Vk
IGdhcmRlbmluZy4gTWFyayBhIG1lZGlhLWZyYWdtZW50cyB0ZXN0IGFzIHNsb3cuCkluZGV4OiBM
YXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZmlsZS1pbnB1dC1maWxlcy1hY2Nlc3MtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9m
aWxlLWlucHV0LWZpbGVzLWFjY2Vzcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDEwODY3MikKKysr
IExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9maWxlLWlucHV0LWZpbGVzLWFjY2Vzcy1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTksMTYgKzksMTIgQEAgUEFTUyBmaWxlSW5w
dXQuZmlsZXMubGVuZ3RoIGlzIDEKIFBBU1MgZmlsZUlucHV0LmZpbGVzWzBdLm5hbWUgaXMgIkRS
VEZha2VGaWxlIgogUEFTUyBmaWxlSW5wdXQuZmlsZXNbMF0udHlwZSBpcyAiIgogUEFTUyBmaWxl
SW5wdXQuZmlsZXNbMF0uc2l6ZSBpcyAwCi1QQVNTIGZpbGVJbnB1dC5maWxlc1swXS5maWxlTmFt
ZSBpcyAiRFJURmFrZUZpbGUiCi1QQVNTIGZpbGVJbnB1dC5maWxlc1swXS5maWxlU2l6ZSBpcyAw
CiBEcmFnZ2luZyBhIHJlYWwgZmlsZSB0byBhIGZpbGUgaW5wdXQgY29udHJvbDoKIFBBU1MgZmls
ZUlucHV0LnZhbHVlIGlzICJDOlxcZmFrZXBhdGhcXGFwcGxlLmdpZiIKIFBBU1MgZmlsZUlucHV0
LmZpbGVzLmxlbmd0aCBpcyAxCiBQQVNTIGZpbGVJbnB1dC5maWxlc1swXS5uYW1lIGlzICJhcHBs
ZS5naWYiCiBQQVNTIGZpbGVJbnB1dC5maWxlc1swXS50eXBlIGlzICJpbWFnZS9naWYiCiBQQVNT
IGZpbGVJbnB1dC5maWxlc1swXS5zaXplIGlzIDE0NzYKLVBBU1MgZmlsZUlucHV0LmZpbGVzWzBd
LmZpbGVOYW1lIGlzICJhcHBsZS5naWYiCi1QQVNTIGZpbGVJbnB1dC5maWxlc1swXS5maWxlU2l6
ZSBpcyAxNDc2CiBEcmFnZ2luZyBhIGRpcmVjdG9yeSBvbnRvIGFuIGZpbGUgaW5wdXQgY29udHJv
bDoKIEZBSUwgZmlsZUlucHV0LnZhbHVlIHNob3VsZCBiZSAuIFdhcyBDOlxmYWtlcGF0aFxkaXJl
Y3RvcnktZm9yLWRyYWdnaW5nLgogRkFJTCBmaWxlSW5wdXQuZmlsZXMubGVuZ3RoIHNob3VsZCBi
ZSAwLiBXYXMgMS4KQEAgLTM4LDE4ICszNCwxMiBAQCBQQVNTIGZpbGVJbnB1dC5maWxlcy5sZW5n
dGggaXMgMwogUEFTUyBmaWxlSW5wdXQuZmlsZXNbMF0ubmFtZSBpcyAiYXBwbGUuZ2lmIgogUEFT
UyBmaWxlSW5wdXQuZmlsZXNbMF0udHlwZSBpcyAiaW1hZ2UvZ2lmIgogUEFTUyBmaWxlSW5wdXQu
ZmlsZXNbMF0uc2l6ZSBpcyAxNDc2Ci1QQVNTIGZpbGVJbnB1dC5maWxlc1swXS5maWxlTmFtZSBp
cyAiYXBwbGUuZ2lmIgotUEFTUyBmaWxlSW5wdXQuZmlsZXNbMF0uZmlsZVNpemUgaXMgMTQ3Ngog
UEFTUyBmaWxlSW5wdXQuZmlsZXNbMV0ubmFtZSBpcyAibW96aWxsYS5naWYiCiBQQVNTIGZpbGVJ
bnB1dC5maWxlc1sxXS50eXBlIGlzICJpbWFnZS9naWYiCiBQQVNTIGZpbGVJbnB1dC5maWxlc1sx
XS5zaXplIGlzIDI1OTMKLVBBU1MgZmlsZUlucHV0LmZpbGVzWzFdLmZpbGVOYW1lIGlzICJtb3pp
bGxhLmdpZiIKLVBBU1MgZmlsZUlucHV0LmZpbGVzWzFdLmZpbGVTaXplIGlzIDI1OTMKIFBBU1Mg
ZmlsZUlucHV0LmZpbGVzWzJdLm5hbWUgaXMgImZpbGUuaW52YWxpZGV4dCIKIFBBU1MgZmlsZUlu
cHV0LmZpbGVzWzJdLnR5cGUgaXMgIiIKIFBBU1MgZmlsZUlucHV0LmZpbGVzWzJdLnNpemUgaXMg
MTAKLVBBU1MgZmlsZUlucHV0LmZpbGVzWzJdLmZpbGVOYW1lIGlzICJmaWxlLmludmFsaWRleHQi
Ci1QQVNTIGZpbGVJbnB1dC5maWxlc1syXS5maWxlU2l6ZSBpcyAxMAogRHJhZ2dpbmcgYSBmaWxl
IGFuZCBhIGRpcmVjdG9yeSBvbnRvIGEgbXV0bGktZmlsZSBpbnB1dCBjb250cm9sOgogRkFJTCBm
aWxlSW5wdXQudmFsdWUgc2hvdWxkIGJlIC4gV2FzIEM6XGZha2VwYXRoXGFwcGxlLmdpZi4KIEZB
SUwgZmlsZUlucHV0LmZpbGVzLmxlbmd0aCBzaG91bGQgYmUgMC4gV2FzIDIuCkluZGV4OiBMYXlv
dXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZmlsZS1pbnB1dC1maWxlcy1hY2Nlc3MuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZmlsZS1pbnB1dC1m
aWxlcy1hY2Nlc3MuaHRtbAkocmV2aXNpb24gMTA4NjcyKQorKysgTGF5b3V0VGVzdHMvZWRpdGlu
Zy9wYXN0ZWJvYXJkL2ZpbGUtaW5wdXQtZmlsZXMtYWNjZXNzLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTYsNyArNiwxMjkgQEAKIDxib2R5PgogPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CiA8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvZmlsZS1pbnB1
dC1maWxlcy1hY2Nlc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0
cyBmb3IgbXVsdGktZmlsZSBkcmFnIG9udG8gZmlsZSBpbnB1dCBlbGVtZW50cyBmb3IgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1ODYyIik7CisKK3ZhciBmaWxlSW5w
dXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOworZmlsZUlucHV0LnR5cGUgPSAn
ZmlsZSc7CitmaWxlSW5wdXQuc3R5bGUud2lkdGggPSAiMTAwJSI7IC8vIFNvIHRoYXQgYW55IG1h
bnVhbCB0ZXN0aW5nIHdpbGwgc2hvdyBmdWxsIGZpbGUgbmFtZXMKKy8vIEltcG9ydGFudCB0aGF0
IHdlIHB1dCB0aGlzIGF0IHRoZSB0b3Agb2YgdGhlIGRvYyBzbyB0aGF0IGxvZ2dpbmcgZG9lcyBu
b3QgY2F1c2UgaXQgdG8gZ28gb3V0IG9mIHZpZXcgKHdoZXJlIGl0IGNhbid0IGJlIGRyYWdnZWQg
dG8pCitkb2N1bWVudC5ib2R5Lmluc2VydEJlZm9yZShmaWxlSW5wdXQsIGRvY3VtZW50LmJvZHku
Zmlyc3RDaGlsZCk7CisKK2Z1bmN0aW9uIG1vdmVNb3VzZVRvQ2VudGVyT2ZFbGVtZW50KGVsZW1l
bnQpCit7CisgICAgdmFyIGNlbnRlclggPSBlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9m
ZnNldFdpZHRoIC8gMjsKKyAgICB2YXIgY2VudGVyWSA9IGVsZW1lbnQub2Zmc2V0VG9wICsgZWxl
bWVudC5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKGNlbnRl
clgsIGNlbnRlclkpOworfQorCitmdW5jdGlvbiBkcmFnRmlsZXNPbnRvSW5wdXQoZmlsZXMpIHsK
KyAgICBmaWxlSW5wdXQudmFsdWUgPSAiIjsgLy8gQ2xlYXIgdGhlIDxpbnB1dD4KKworICAgIGV2
ZW50U2VuZGVyLmJlZ2luRHJhZ1dpdGhGaWxlcyhmaWxlcyk7CisgICAgbW92ZU1vdXNlVG9DZW50
ZXJPZkVsZW1lbnQoZmlsZUlucHV0KTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7Cit9CisK
K2Z1bmN0aW9uIGZpbGVMaXN0U2hvdWxkQmUoZmlsZUxpc3RTdHJpbmcsIGZpbGVzQXJyYXkpCit7
CisgICAgc2hvdWxkQmUoZmlsZUxpc3RTdHJpbmcgKyAiLmxlbmd0aCIsICIiICsgZmlsZXNBcnJh
eS5sZW5ndGgpOworICAgIGZvciAodmFyIHggPSAwOyB4IDwgZmlsZXNBcnJheS5sZW5ndGg7IHgr
KykgeworICAgICAgICB2YXIgZmlsZVZhbHVlU3RyaW5nID0gZmlsZUxpc3RTdHJpbmcgKyAiWyIg
KyB4ICsgIl0iOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoZmlsZVZhbHVlU3RyaW5n
ICsgIi5uYW1lIiwgZmlsZXNBcnJheVt4XVsnbmFtZSddKTsKKyAgICAgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKGZpbGVWYWx1ZVN0cmluZyArICIudHlwZSIsIGZpbGVzQXJyYXlbeF1bJ3R5cGUn
XSk7CisgICAgICAgIHNob3VsZEJlKGZpbGVWYWx1ZVN0cmluZyArICIuc2l6ZSIsICIiICsgZmls
ZXNBcnJheVt4XVsnc2l6ZSddKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGZpbGVzU2hvdWxkQmUo
ZmlsZXNBcnJheSkKK3sKKyAgICBmaWxlTGlzdFNob3VsZEJlKCJmaWxlSW5wdXQuZmlsZXMiLCBm
aWxlc0FycmF5KTsKK30KKworZnVuY3Rpb24gZHJhZ2dpbmdQYXRoc1Nob3VsZFJlc3VsdEluRmls
ZXMocGF0aHNBcnJheSwgZmlsZXNBcnJheSkKK3sKKyAgICBkcmFnRmlsZXNPbnRvSW5wdXQocGF0
aHNBcnJheSk7CisgICAgLy8gV2ViS2l0IHNlZW1zIHRvIGFsd2F5cyB0YWtlIHRoZSBmaXJzdCBm
aWxlIGluIHRoZSBkcmFnZ2VkIGxpc3QgYXMgLnZhbHVlOgorICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygiZmlsZUlucHV0LnZhbHVlIiwgZmlsZXNBcnJheVswXSA/ICJDOlxcZmFrZXBhdGhcXCIg
KyBmaWxlc0FycmF5WzBdWyduYW1lJ10gOiAnJyk7CisgICAgZmlsZXNTaG91bGRCZShmaWxlc0Fy
cmF5KTsKK30KKworZnVuY3Rpb24gdGVzdERyYWdnaW5nRmlsZXMoZmlsZXNBcnJheSkKK3sKKyAg
ICAvLyBXZSBjb3VsZCBtYWtlIGEgd2F5IHRvIHBhcnNlIHRoZSBmaWxlbmFtZSBmcm9tIHRoZSBw
YXRoLCBhbmQgdGhlbiBvbmx5IG5lZWQgdG8gcGFzcworICAgIC8vIHRoZSBwYXRoIGluIHRoZSBm
aWxlc0FycmF5LgorICAgIHZhciBwYXRoc09ubHkgPSBmaWxlc0FycmF5Lm1hcChmdW5jdGlvbihm
aWxlU3BlYykgeyByZXR1cm4gZmlsZVNwZWNbJ3BhdGgnXTsgfSk7CisgICAgZHJhZ2dpbmdQYXRo
c1Nob3VsZFJlc3VsdEluRmlsZXMocGF0aHNPbmx5LCBmaWxlc0FycmF5KTsKK30KKworZnVuY3Rp
b24gdGVzdE9yZGVyZWREcmFnZ2luZ1dpdGhEaXJlY3RvcnkoKQoreworICAgIHZhciBpbnB1dFR5
cGUgPSBmaWxlSW5wdXQubXVsdGlwbGUgPyAibXV0bGktZmlsZSIgOiAic2luZ2xlLWZpbGUiOwor
CisgICAgLy8gTm90ZTogVGhlIG9yZGVyIG9mIHNlbGVjdGlvbiBpbiB0aGUgRmluZGVyIGNoYW5n
ZXMgdGhlIG9yZGVyIG9mIGZpbGUgcGF0aHMgaW4gdGhlIHBhc3RlYm9hcmQKKyAgICAvLyB0aHVz
IGl0J3MgaW1wb3J0YW50IHRoYXQgd2UgdGVzdCBkaWZmZXJlbnQgb3JkZXJzIGhlcmUgYXMgd2Vs
bCAoYXQgbGVhc3Qgb24gdGhlIE1hYykKKyAgICBkZWJ1ZygiRHJhZ2dpbmcgYSBmaWxlIGFuZCBh
IGRpcmVjdG9yeSBvbnRvIGEgIiArIGlucHV0VHlwZSArICIgaW5wdXQgY29udHJvbDoiKQorICAg
IGRyYWdnaW5nUGF0aHNTaG91bGRSZXN1bHRJbkZpbGVzKFsncmVzb3VyY2VzL2FwcGxlLmdpZics
ICdyZXNvdXJjZXMvZGlyZWN0b3J5LWZvci1kcmFnZ2luZyddLCBbXSk7CisKKyAgICBkZWJ1Zygi
RklYTUU6IDxpbnB1dD4gZWxlbWVudHMgc2hvdWxkIHJlZnVzZSBkcmFncyBpbmNsdWRpbmcgZGly
ZWN0b3JpZXM6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTg3OS4g
IFRoZSBwYWdlIGlzIGdpdmVuIEZpbGUgb2JqZWN0cyBjb3JyZXNwb25kaW5nIHRvIGRpcmVjdG9y
aWVzLCBidXQgZm9ybSBzdWJtaXNzaW9uIHdpbGwgZmFpbC4iKTsKKworICAgIGRlYnVnKCJEcmFn
Z2luZyBhIGRpcmVjdG9yeSBhbmQgYSBmaWxlIG9udG8gYSAiICArIGlucHV0VHlwZSArICIgaW5w
dXQgY29udHJvbDoiKQorICAgIGRyYWdnaW5nUGF0aHNTaG91bGRSZXN1bHRJbkZpbGVzKFsncmVz
b3VyY2VzL2RpcmVjdG9yeS1mb3ItZHJhZ2dpbmcnLCAncmVzb3VyY2VzL2FwcGxlLmdpZiddLCBb
XSk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGRlYnVnKCJEcmFnZ2luZyBhIHNp
bmdsZSAobm9uLWV4aXN0YW50KSBmaWxlIHRvIGEgZmlsZSBpbnB1dCBjb250cm9sOiIpOworICAg
IHRlc3REcmFnZ2luZ0ZpbGVzKFsKKyAgICAgICAgeyAncGF0aCc6ICdEUlRGYWtlRmlsZScsICdu
YW1lJyA6ICdEUlRGYWtlRmlsZScsICdzaXplJyA6IDAsICd0eXBlJyA6ICcnIH0KKyAgICBdKTsK
KworICAgIGRlYnVnKCJEcmFnZ2luZyBhIHJlYWwgZmlsZSB0byBhIGZpbGUgaW5wdXQgY29udHJv
bDoiKTsKKyAgICB0ZXN0RHJhZ2dpbmdGaWxlcyhbCisgICAgICAgIHsgJ3BhdGgnOiAncmVzb3Vy
Y2VzL2FwcGxlLmdpZicsICduYW1lJyA6ICdhcHBsZS5naWYnLCAnc2l6ZScgOiAxNDc2LCAndHlw
ZScgOiAnaW1hZ2UvZ2lmJyB9CisgICAgXSk7CisKKyAgICAvLyBEaXJlY3RvcnkgZHJhZ2dpbmcg
YmVoYXZpb3IgaXMgY292ZXJlZCBieQorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yNTg1MgorICAgIGRlYnVnKCJEcmFnZ2luZyBhIGRpcmVjdG9yeSBvbnRv
IGFuIGZpbGUgaW5wdXQgY29udHJvbDoiKTsKKyAgICBkcmFnZ2luZ1BhdGhzU2hvdWxkUmVzdWx0
SW5GaWxlcyhbJ3Jlc291cmNlcy9kaXJlY3RvcnktZm9yLWRyYWdnaW5nJ10sIFtdKTsKKworICAg
IGRlYnVnKCJEcmFnZ2luZyB0d28gZmlsZXMgdG8gYSBzaW5nbGUtZmlsZSBpbnB1dCBjb250cm9s
OiIpCisgICAgZHJhZ2dpbmdQYXRoc1Nob3VsZFJlc3VsdEluRmlsZXMoWydyZXNvdXJjZXMvYXBw
bGUuZ2lmJywgJ3Jlc291cmNlcy9tb3ppbGxhLmdpZiddLCBbXSk7CisKKyAgICB0ZXN0T3JkZXJl
ZERyYWdnaW5nV2l0aERpcmVjdG9yeSgpOworCisgICAgZmlsZUlucHV0Lm11bHRpcGxlID0gdHJ1
ZTsKKworICAgIGRlYnVnKCJEcmFnZ2luZyB0aHJlZSBmaWxlcyB0byBhIG11bHRpLWZpbGUgaW5w
dXQgY29udHJvbDoiKTsKKyAgICB0ZXN0RHJhZ2dpbmdGaWxlcyhbCisgICAgICAgIHsgJ3BhdGgn
OiAncmVzb3VyY2VzL2FwcGxlLmdpZicsICduYW1lJyA6ICdhcHBsZS5naWYnLCAnc2l6ZScgOiAx
NDc2LCAndHlwZScgOiAnaW1hZ2UvZ2lmJyB9LAorICAgICAgICB7ICdwYXRoJzogJ3Jlc291cmNl
cy9tb3ppbGxhLmdpZicsICduYW1lJyA6ICdtb3ppbGxhLmdpZicsICdzaXplJyA6IDI1OTMsICd0
eXBlJyA6ICdpbWFnZS9naWYnIH0sCisgICAgICAgIHsgJ3BhdGgnOiAncmVzb3VyY2VzL2ZpbGUu
aW52YWxpZGV4dCcsICduYW1lJyA6ICdmaWxlLmludmFsaWRleHQnLCAnc2l6ZScgOiAxMCwgJ3R5
cGUnIDogJycgfQorICAgIF0pOworCisgICAgdGVzdE9yZGVyZWREcmFnZ2luZ1dpdGhEaXJlY3Rv
cnkoKTsKKworICAgIGRlYnVnKCJEcmFnZ2luZyB0byBhIGRpc2FibGVkIGZpbGUgaW5wdXQgY29u
dHJvbDoiKTsKKyAgICBmaWxlSW5wdXQuZGlzYWJsZWQgPSB0cnVlOworICAgIGRyYWdnaW5nUGF0
aHNTaG91bGRSZXN1bHRJbkZpbGVzKFsnRFJURmFrZUZpbGUnXSwgW10pOworCisgICAgLy8gQ2xl
YW4gdXAgYWZ0ZXIgb3Vyc2VsdmVzCisgICAgZmlsZUlucHV0LnBhcmVudE5vZGUucmVtb3ZlQ2hp
bGQoZmlsZUlucHV0KTsKKworICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsK
K30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKK2lmICh3aW5kb3cuZXZlbnRT
ZW5kZXIpIHsKKyAgICBydW5UZXN0KCk7Cit9IGVsc2UgeworICAgIHRlc3RGYWlsZWQoIlRoaXMg
dGVzdCBpcyBub3QgaW50ZXJhY3RpdmUsIHBsZWFzZSBydW4gdXNpbmcgcnVuLXdlYmtpdC10ZXN0
cyIpOworfQorCis8L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpJbmRleDogTGF5
b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3NjcmlwdC10ZXN0cy9maWxlLWlucHV0LWZpbGVz
LWFjY2Vzcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQv
c2NyaXB0LXRlc3RzL2ZpbGUtaW5wdXQtZmlsZXMtYWNjZXNzLmpzCShyZXZpc2lvbiAxMDg2NzIp
CisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvc2NyaXB0LXRlc3RzL2ZpbGUtaW5w
dXQtZmlsZXMtYWNjZXNzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEyNCArMCwwIEBACi1kZXNj
cmlwdGlvbigiVGVzdHMgZm9yIG11bHRpLWZpbGUgZHJhZyBvbnRvIGZpbGUgaW5wdXQgZWxlbWVu
dHMgZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTg2MiIpOwot
Ci12YXIgZmlsZUlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKLWZpbGVJ
bnB1dC50eXBlID0gJ2ZpbGUnOwotZmlsZUlucHV0LnN0eWxlLndpZHRoID0gIjEwMCUiOyAvLyBT
byB0aGF0IGFueSBtYW51YWwgdGVzdGluZyB3aWxsIHNob3cgZnVsbCBmaWxlIG5hbWVzCi0vLyBJ
bXBvcnRhbnQgdGhhdCB3ZSBwdXQgdGhpcyBhdCB0aGUgdG9wIG9mIHRoZSBkb2Mgc28gdGhhdCBs
b2dnaW5nIGRvZXMgbm90IGNhdXNlIGl0IHRvIGdvIG91dCBvZiB2aWV3ICh3aGVyZSBpdCBjYW4n
dCBiZSBkcmFnZ2VkIHRvKQotZG9jdW1lbnQuYm9keS5pbnNlcnRCZWZvcmUoZmlsZUlucHV0LCBk
b2N1bWVudC5ib2R5LmZpcnN0Q2hpbGQpOwotCi1mdW5jdGlvbiBtb3ZlTW91c2VUb0NlbnRlck9m
RWxlbWVudChlbGVtZW50KQotewotICAgIHZhciBjZW50ZXJYID0gZWxlbWVudC5vZmZzZXRMZWZ0
ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAvIDI7Ci0gICAgdmFyIGNlbnRlclkgPSBlbGVtZW50Lm9m
ZnNldFRvcCArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMjsKLSAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyhjZW50ZXJYLCBjZW50ZXJZKTsKLX0KLQotZnVuY3Rpb24gZHJhZ0ZpbGVzT250b0lu
cHV0KGZpbGVzKSB7Ci0gICAgZmlsZUlucHV0LnZhbHVlID0gIiI7IC8vIENsZWFyIHRoZSA8aW5w
dXQ+Ci0KLSAgICBldmVudFNlbmRlci5iZWdpbkRyYWdXaXRoRmlsZXMoZmlsZXMpOwotICAgIG1v
dmVNb3VzZVRvQ2VudGVyT2ZFbGVtZW50KGZpbGVJbnB1dCk7Ci0gICAgZXZlbnRTZW5kZXIubW91
c2VVcCgpOwotfQotCi1mdW5jdGlvbiBmaWxlTGlzdFNob3VsZEJlKGZpbGVMaXN0U3RyaW5nLCBm
aWxlc0FycmF5KQotewotICAgIHNob3VsZEJlKGZpbGVMaXN0U3RyaW5nICsgIi5sZW5ndGgiLCAi
IiArIGZpbGVzQXJyYXkubGVuZ3RoKTsKLSAgICBmb3IgKHZhciB4ID0gMDsgeCA8IGZpbGVzQXJy
YXkubGVuZ3RoOyB4KyspIHsKLSAgICAgICAgdmFyIGZpbGVWYWx1ZVN0cmluZyA9IGZpbGVMaXN0
U3RyaW5nICsgIlsiICsgeCArICJdIjsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKGZp
bGVWYWx1ZVN0cmluZyArICIubmFtZSIsIGZpbGVzQXJyYXlbeF1bJ25hbWUnXSk7Ci0gICAgICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZyhmaWxlVmFsdWVTdHJpbmcgKyAiLnR5cGUiLCBmaWxlc0Fy
cmF5W3hdWyd0eXBlJ10pOwotICAgICAgICBzaG91bGRCZShmaWxlVmFsdWVTdHJpbmcgKyAiLnNp
emUiLCAiIiArIGZpbGVzQXJyYXlbeF1bJ3NpemUnXSk7Ci0KLSAgICAgICAgLy8gRklYTUU6IHRv
IGJlIHJlbW92ZWQgYWZ0ZXIgbGVnYWN5IGF0dHJpYnV0ZXMgYXJlIHJlbW92ZWQuIAotICAgICAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoZmlsZVZhbHVlU3RyaW5nICsgIi5maWxlTmFtZSIsIGZp
bGVzQXJyYXlbeF1bJ25hbWUnXSk7Ci0gICAgICAgIHNob3VsZEJlKGZpbGVWYWx1ZVN0cmluZyAr
ICIuZmlsZVNpemUiLCAiIiArIGZpbGVzQXJyYXlbeF1bJ3NpemUnXSk7Ci0gICAgfQotfQotCi1m
dW5jdGlvbiBmaWxlc1Nob3VsZEJlKGZpbGVzQXJyYXkpCi17Ci0gICAgZmlsZUxpc3RTaG91bGRC
ZSgiZmlsZUlucHV0LmZpbGVzIiwgZmlsZXNBcnJheSk7Ci19Ci0KLWZ1bmN0aW9uIGRyYWdnaW5n
UGF0aHNTaG91bGRSZXN1bHRJbkZpbGVzKHBhdGhzQXJyYXksIGZpbGVzQXJyYXkpCi17Ci0gICAg
ZHJhZ0ZpbGVzT250b0lucHV0KHBhdGhzQXJyYXkpOwotICAgIC8vIFdlYktpdCBzZWVtcyB0byBh
bHdheXMgdGFrZSB0aGUgZmlyc3QgZmlsZSBpbiB0aGUgZHJhZ2dlZCBsaXN0IGFzIC52YWx1ZToK
LSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImZpbGVJbnB1dC52YWx1ZSIsIGZpbGVzQXJyYXlb
MF0gPyAiQzpcXGZha2VwYXRoXFwiICsgZmlsZXNBcnJheVswXVsnbmFtZSddIDogJycpOwotICAg
IGZpbGVzU2hvdWxkQmUoZmlsZXNBcnJheSk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3REcmFnZ2luZ0Zp
bGVzKGZpbGVzQXJyYXkpCi17Ci0gICAgLy8gV2UgY291bGQgbWFrZSBhIHdheSB0byBwYXJzZSB0
aGUgZmlsZW5hbWUgZnJvbSB0aGUgcGF0aCwgYW5kIHRoZW4gb25seSBuZWVkIHRvIHBhc3MKLSAg
ICAvLyB0aGUgcGF0aCBpbiB0aGUgZmlsZXNBcnJheS4KLSAgICB2YXIgcGF0aHNPbmx5ID0gZmls
ZXNBcnJheS5tYXAoZnVuY3Rpb24oZmlsZVNwZWMpIHsgcmV0dXJuIGZpbGVTcGVjWydwYXRoJ107
IH0pOwotICAgIGRyYWdnaW5nUGF0aHNTaG91bGRSZXN1bHRJbkZpbGVzKHBhdGhzT25seSwgZmls
ZXNBcnJheSk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RPcmRlcmVkRHJhZ2dpbmdXaXRoRGlyZWN0b3J5
KCkKLXsKLSAgICB2YXIgaW5wdXRUeXBlID0gZmlsZUlucHV0Lm11bHRpcGxlID8gIm11dGxpLWZp
bGUiIDogInNpbmdsZS1maWxlIjsKLQotICAgIC8vIE5vdGU6IFRoZSBvcmRlciBvZiBzZWxlY3Rp
b24gaW4gdGhlIEZpbmRlciBjaGFuZ2VzIHRoZSBvcmRlciBvZiBmaWxlIHBhdGhzIGluIHRoZSBw
YXN0ZWJvYXJkCi0gICAgLy8gdGh1cyBpdCdzIGltcG9ydGFudCB0aGF0IHdlIHRlc3QgZGlmZmVy
ZW50IG9yZGVycyBoZXJlIGFzIHdlbGwgKGF0IGxlYXN0IG9uIHRoZSBNYWMpCi0gICAgZGVidWco
IkRyYWdnaW5nIGEgZmlsZSBhbmQgYSBkaXJlY3Rvcnkgb250byBhICIgKyBpbnB1dFR5cGUgKyAi
IGlucHV0IGNvbnRyb2w6IikKLSAgICBkcmFnZ2luZ1BhdGhzU2hvdWxkUmVzdWx0SW5GaWxlcyhb
J3Jlc291cmNlcy9hcHBsZS5naWYnLCAncmVzb3VyY2VzL2RpcmVjdG9yeS1mb3ItZHJhZ2dpbmcn
XSwgW10pOwotCi0gICAgZGVidWcoIkZJWE1FOiA8aW5wdXQ+IGVsZW1lbnRzIHNob3VsZCByZWZ1
c2UgZHJhZ3MgaW5jbHVkaW5nIGRpcmVjdG9yaWVzOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjU4NzkuICBUaGUgcGFnZSBpcyBnaXZlbiBGaWxlIG9iamVjdHMgY29y
cmVzcG9uZGluZyB0byBkaXJlY3RvcmllcywgYnV0IGZvcm0gc3VibWlzc2lvbiB3aWxsIGZhaWwu
Iik7Ci0KLSAgICBkZWJ1ZygiRHJhZ2dpbmcgYSBkaXJlY3RvcnkgYW5kIGEgZmlsZSBvbnRvIGEg
IiAgKyBpbnB1dFR5cGUgKyAiIGlucHV0IGNvbnRyb2w6IikKLSAgICBkcmFnZ2luZ1BhdGhzU2hv
dWxkUmVzdWx0SW5GaWxlcyhbJ3Jlc291cmNlcy9kaXJlY3RvcnktZm9yLWRyYWdnaW5nJywgJ3Jl
c291cmNlcy9hcHBsZS5naWYnXSwgW10pOwotfQotCi1mdW5jdGlvbiBydW5UZXN0KCkKLXsKLSAg
ICBkZWJ1ZygiRHJhZ2dpbmcgYSBzaW5nbGUgKG5vbi1leGlzdGFudCkgZmlsZSB0byBhIGZpbGUg
aW5wdXQgY29udHJvbDoiKTsKLSAgICB0ZXN0RHJhZ2dpbmdGaWxlcyhbCi0gICAgICAgIHsgJ3Bh
dGgnOiAnRFJURmFrZUZpbGUnLCAnbmFtZScgOiAnRFJURmFrZUZpbGUnLCAnc2l6ZScgOiAwLCAn
dHlwZScgOiAnJyB9Ci0gICAgXSk7Ci0KLSAgICBkZWJ1ZygiRHJhZ2dpbmcgYSByZWFsIGZpbGUg
dG8gYSBmaWxlIGlucHV0IGNvbnRyb2w6Iik7Ci0gICAgdGVzdERyYWdnaW5nRmlsZXMoWwotICAg
ICAgICB7ICdwYXRoJzogJ3Jlc291cmNlcy9hcHBsZS5naWYnLCAnbmFtZScgOiAnYXBwbGUuZ2lm
JywgJ3NpemUnIDogMTQ3NiwgJ3R5cGUnIDogJ2ltYWdlL2dpZicgfQotICAgIF0pOwotCi0gICAg
Ly8gRGlyZWN0b3J5IGRyYWdnaW5nIGJlaGF2aW9yIGlzIGNvdmVyZWQgYnkKLSAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU4NTIKLSAgICBkZWJ1ZygiRHJh
Z2dpbmcgYSBkaXJlY3Rvcnkgb250byBhbiBmaWxlIGlucHV0IGNvbnRyb2w6Iik7Ci0gICAgZHJh
Z2dpbmdQYXRoc1Nob3VsZFJlc3VsdEluRmlsZXMoWydyZXNvdXJjZXMvZGlyZWN0b3J5LWZvci1k
cmFnZ2luZyddLCBbXSk7Ci0KLSAgICBkZWJ1ZygiRHJhZ2dpbmcgdHdvIGZpbGVzIHRvIGEgc2lu
Z2xlLWZpbGUgaW5wdXQgY29udHJvbDoiKQotICAgIGRyYWdnaW5nUGF0aHNTaG91bGRSZXN1bHRJ
bkZpbGVzKFsncmVzb3VyY2VzL2FwcGxlLmdpZicsICdyZXNvdXJjZXMvbW96aWxsYS5naWYnXSwg
W10pOwotCi0gICAgdGVzdE9yZGVyZWREcmFnZ2luZ1dpdGhEaXJlY3RvcnkoKTsKLQotICAgIGZp
bGVJbnB1dC5tdWx0aXBsZSA9IHRydWU7Ci0KLSAgICBkZWJ1ZygiRHJhZ2dpbmcgdGhyZWUgZmls
ZXMgdG8gYSBtdWx0aS1maWxlIGlucHV0IGNvbnRyb2w6Iik7Ci0gICAgdGVzdERyYWdnaW5nRmls
ZXMoWwotICAgICAgICB7ICdwYXRoJzogJ3Jlc291cmNlcy9hcHBsZS5naWYnLCAnbmFtZScgOiAn
YXBwbGUuZ2lmJywgJ3NpemUnIDogMTQ3NiwgJ3R5cGUnIDogJ2ltYWdlL2dpZicgfSwKLSAgICAg
ICAgeyAncGF0aCc6ICdyZXNvdXJjZXMvbW96aWxsYS5naWYnLCAnbmFtZScgOiAnbW96aWxsYS5n
aWYnLCAnc2l6ZScgOiAyNTkzLCAndHlwZScgOiAnaW1hZ2UvZ2lmJyB9LAotICAgICAgICB7ICdw
YXRoJzogJ3Jlc291cmNlcy9maWxlLmludmFsaWRleHQnLCAnbmFtZScgOiAnZmlsZS5pbnZhbGlk
ZXh0JywgJ3NpemUnIDogMTAsICd0eXBlJyA6ICcnIH0KLSAgICBdKTsKLQotICAgIHRlc3RPcmRl
cmVkRHJhZ2dpbmdXaXRoRGlyZWN0b3J5KCk7Ci0KLSAgICBkZWJ1ZygiRHJhZ2dpbmcgdG8gYSBk
aXNhYmxlZCBmaWxlIGlucHV0IGNvbnRyb2w6Iik7Ci0gICAgZmlsZUlucHV0LmRpc2FibGVkID0g
dHJ1ZTsKLSAgICBkcmFnZ2luZ1BhdGhzU2hvdWxkUmVzdWx0SW5GaWxlcyhbJ0RSVEZha2VGaWxl
J10sIFtdKTsKLQotICAgIC8vIENsZWFuIHVwIGFmdGVyIG91cnNlbHZlcwotICAgIGZpbGVJbnB1
dC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGZpbGVJbnB1dCk7Ci0KLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7Ci19Ci0KLXZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OwotCi1pZiAod2luZG93LmV2ZW50U2VuZGVyKSB7Ci0gICAgcnVuVGVzdCgpOwotfSBlbHNlIHsK
LSAgICB0ZXN0RmFpbGVkKCJUaGlzIHRlc3QgaXMgbm90IGludGVyYWN0aXZlLCBwbGVhc2UgcnVu
IHVzaW5nIER1bXBSZW5kZXJUcmVlIik7Ci19CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L2NsaXBib2FyZC9jbGlwYm9hcmQtZmlsZS1hY2Nlc3MtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY2xpcGJvYXJkL2Ns
aXBib2FyZC1maWxlLWFjY2Vzcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDEwODY3MikKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY2xpcGJvYXJkL2NsaXBib2FyZC1maWxlLWFj
Y2Vzcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTI2LDkgKzI2LDkgQEAgUEFTUyBl
dmVudC5kYXRhVHJhbnNmZXIuZmlsZXMubGVuZ3RoIGlzIAogT24gZHJvcDoKIFBBU1MgZXZlbnQu
ZGF0YVRyYW5zZmVyLnR5cGVzIGNvbnRhaW5zIEZpbGVzLgogUEFTUyBldmVudC5kYXRhVHJhbnNm
ZXIuZmlsZXMubGVuZ3RoIGlzIDEKLVBBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzWzBdLmZp
bGVOYW1lIGlzICJEUlRGYWtlRmlsZSIKLVBBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzWzBd
LmZpbGVTaXplIGlzIDAKLUZJWE1FOiBGaWxlLmZpbGVTaXplIGFsd2F5cyByZXR1cm5zIDAgZm9y
IGZpbGVzIGRyb3BwZWQgYnkgZXZlbnRTZW5kZXIuYmVnaW5EcmFnV2l0aEZpbGVzIGZyb20gaHR0
cCB0ZXN0czogIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTkwOQor
UEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXNbMF0ubmFtZSBpcyAiRFJURmFrZUZpbGUiCitQ
QVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlc1swXS5zaXplIGlzIDAKK0ZJWE1FOiBGaWxlLnNp
emUgYWx3YXlzIHJldHVybnMgMCBmb3IgZmlsZXMgZHJvcHBlZCBieSBldmVudFNlbmRlci5iZWdp
bkRyYWdXaXRoRmlsZXMgZnJvbSBodHRwIHRlc3RzOiAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTI1OTA5CiBEcmFnIGZpbGVzIG92ZXIgYW4gZWxlbWVudCwgbGVhdmUg
dGhhdCBlbGVtZW50IGFuZCByZWxlYXNlIHRoZSBtb3VzZToKIE9uIGRyYWdlbnRlcjoKIFBBU1Mg
ZXZlbnQuZGF0YVRyYW5zZmVyLnR5cGVzIGNvbnRhaW5zIEZpbGVzLgpAQCAtNDksOCArNDksOCBA
QCBQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcy5sZW5ndGggaXMgCiBPbiBkcm9wOgogUEFT
UyBldmVudC5kYXRhVHJhbnNmZXIudHlwZXMgY29udGFpbnMgRmlsZXMuCiBQQVNTIGV2ZW50LmRh
dGFUcmFuc2Zlci5maWxlcy5sZW5ndGggaXMgMQotUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZmls
ZXNbMF0uZmlsZU5hbWUgaXMgImFwcGxlLmdpZiIKLUZBSUwgZXZlbnQuZGF0YVRyYW5zZmVyLmZp
bGVzWzBdLmZpbGVTaXplIHNob3VsZCBiZSAxNDc2LiBXYXMgMC4KK1BBU1MgZXZlbnQuZGF0YVRy
YW5zZmVyLmZpbGVzWzBdLm5hbWUgaXMgImFwcGxlLmdpZiIKK0ZBSUwgZXZlbnQuZGF0YVRyYW5z
ZmVyLmZpbGVzWzBdLnNpemUgc2hvdWxkIGJlIDE0NzYuIFdhcyAwLgogRHJhZyBkcm9wIHR3byBm
aWxlcyBvbnRvIGFuIGVsZW1lbnQ6CiBPbiBkcmFnZW50ZXI6CiBQQVNTIGV2ZW50LmRhdGFUcmFu
c2Zlci50eXBlcyBjb250YWlucyBGaWxlcy4KQEAgLTY0LDEwICs2NCwxMCBAQCBQQVNTIGV2ZW50
LmRhdGFUcmFuc2Zlci5maWxlcy5sZW5ndGggaXMgCiBPbiBkcm9wOgogUEFTUyBldmVudC5kYXRh
VHJhbnNmZXIudHlwZXMgY29udGFpbnMgRmlsZXMuCiBQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5m
aWxlcy5sZW5ndGggaXMgMgotUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXNbMF0uZmlsZU5h
bWUgaXMgImFwcGxlLmdpZiIKLUZBSUwgZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzWzBdLmZpbGVT
aXplIHNob3VsZCBiZSAxNDc2LiBXYXMgMC4KLVBBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVz
WzFdLmZpbGVOYW1lIGlzICJtb3ppbGxhLmdpZiIKLUZBSUwgZXZlbnQuZGF0YVRyYW5zZmVyLmZp
bGVzWzFdLmZpbGVTaXplIHNob3VsZCBiZSAyNTkzLiBXYXMgMC4KK1BBU1MgZXZlbnQuZGF0YVRy
YW5zZmVyLmZpbGVzWzBdLm5hbWUgaXMgImFwcGxlLmdpZiIKK0ZBSUwgZXZlbnQuZGF0YVRyYW5z
ZmVyLmZpbGVzWzBdLnNpemUgc2hvdWxkIGJlIDE0NzYuIFdhcyAwLgorUEFTUyBldmVudC5kYXRh
VHJhbnNmZXIuZmlsZXNbMV0ubmFtZSBpcyAibW96aWxsYS5naWYiCitGQUlMIGV2ZW50LmRhdGFU
cmFuc2Zlci5maWxlc1sxXS5zaXplIHNob3VsZCBiZSAyNTkzLiBXYXMgMC4KIERyYWcgZHJvcCB0
d28gZmlsZXMgaW4gcmV2ZXJzZSBhbHBoYWJldGljYWwgb3JkZXIgb250byBhbiBlbGVtZW50Ogog
T24gZHJhZ2VudGVyOgogUEFTUyBldmVudC5kYXRhVHJhbnNmZXIudHlwZXMgY29udGFpbnMgRmls
ZXMuCkBAIC04MSwxMCArODEsMTAgQEAgUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMubGVu
Z3RoIGlzIAogT24gZHJvcDoKIFBBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLnR5cGVzIGNvbnRhaW5z
IEZpbGVzLgogUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMubGVuZ3RoIGlzIDIKLVBBU1Mg
ZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzWzBdLmZpbGVOYW1lIGlzICJtb3ppbGxhLmdpZiIKLUZB
SUwgZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzWzBdLmZpbGVTaXplIHNob3VsZCBiZSAyNTkzLiBX
YXMgMC4KLVBBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzWzFdLmZpbGVOYW1lIGlzICJhcHBs
ZS5naWYiCi1GQUlMIGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlc1sxXS5maWxlU2l6ZSBzaG91bGQg
YmUgMTQ3Ni4gV2FzIDAuCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlc1swXS5uYW1lIGlz
ICJtb3ppbGxhLmdpZiIKK0ZBSUwgZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzWzBdLnNpemUgc2hv
dWxkIGJlIDI1OTMuIFdhcyAwLgorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXNbMV0ubmFt
ZSBpcyAiYXBwbGUuZ2lmIgorRkFJTCBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXNbMV0uc2l6ZSBz
aG91bGQgYmUgMTQ3Ni4gV2FzIDAuCiBGSVhNRTogV2Ugc2hvdWxkIG5vdCBhbGxvdyBlbGVtZW50
IHRvIGFjY2VwdCBkcm9wcyBpbmNsdWRpbmcgZGlyZWN0b3JpZXMgdW5sZXNzIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTg3OSBpcyBmaXhlZCB0byBtYWtlIGRpcmVj
dG9yeSBGaWxlIG9iamVjdHMgdXNlZnVsIGZyb20gSmF2YVNjcmlwdC4gIFRoZSBwYWdlIGlzIGdp
dmVuIEZpbGUgb2JqZWN0cyBjb3JyZXNwb25kaW5nIHRvIGRpcmVjdG9yaWVzLCBidXQgZm9ybSBz
dWJtaXNzaW9uIGFuZCB4aHIuc2VuZCgpIHdpbGwgZmFpbC4KIERyYWcgZHJvcCBhIGRpcmVjdG9y
eSBvbnRvIGFuIGVsZW1lbnQ6CiBPbiBkcmFnZW50ZXI6CkluZGV4OiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L2NsaXBib2FyZC9jbGlwYm9hcmQtZmlsZS1hY2Nlc3MuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NsaXBib2FyZC9jbGlw
Ym9hcmQtZmlsZS1hY2Nlc3MuaHRtbAkocmV2aXNpb24gMTA4NjcyKQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9jbGlwYm9hcmQvY2xpcGJvYXJkLWZpbGUtYWNjZXNzLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTYsNyArNiwxODAgQEAKIDxib2R5PgogPHAgaWQ9ImRlc2NyaXB0
aW9uIj48L3A+CiA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxzY3JpcHQgc3JjPSJzY3JpcHQt
dGVzdHMvY2xpcGJvYXJkLWZpbGUtYWNjZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitkZXNj
cmlwdGlvbigiVGVzdHMgYWNjZXNzIHRvIGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcyBhbmQgLnR5
cGVzIik7CisKK3ZhciBkcmFnVGFyZ2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7
CitkcmFnVGFyZ2V0LmlubmVySFRNTCA9ICJEcmFnIGhlcmUiCitkcmFnVGFyZ2V0LnN0eWxlLmJh
Y2tncm91bmRDb2xvciA9ICJibHVlIjsKK2RyYWdUYXJnZXQuc3R5bGUud2lkdGggPSAiMTAwcHgi
OworZHJhZ1RhcmdldC5zdHlsZS5oZWlnaHQgPSAiMTAwcHgiOworLy8gSW1wb3J0YW50IHRoYXQg
d2UgcHV0IHRoaXMgYXQgdGhlIHRvcCBvZiB0aGUgZG9jIHNvIHRoYXQgbG9nZ2luZyBkb2VzIG5v
dCBjYXVzZSBpdCB0byBnbyBvdXQgb2YgdmlldyAoYW5kIGJlIHVuZHJhZ2FibGUpCitkb2N1bWVu
dC5ib2R5Lmluc2VydEJlZm9yZShkcmFnVGFyZ2V0LCBkb2N1bWVudC5ib2R5LmZpcnN0Q2hpbGQp
OworCit2YXIgZmlsZXNUb0RyYWc7CitkcmFnVGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoImRyYWdl
bnRlciIsIGZ1bmN0aW9uKCkgeworICAgIGRlYnVnKCJPbiBkcmFnZW50ZXI6IikKKyAgICBldmVu
dC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9ICJjb3B5IjsKKyAgICB2YXIgc2hvdWxkQ29udGFp
blR5cGUgPSAoZmlsZXNUb0RyYWcubGVuZ3RoID4gMCk7CisgICAgY2hlY2tGb3JFdmVudFRyYW5z
ZmVyVHlwZShldmVudCwgIkZpbGVzIiwgc2hvdWxkQ29udGFpblR5cGUpOworICAgIGZpbGVMaXN0
U2hvdWxkQmUoImV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcyIsIFtdKTsKKyAgICBldmVudC5wcmV2
ZW50RGVmYXVsdCgpOworfSwgZmFsc2UpOworCitkcmFnVGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIo
ImRyYWdvdmVyIiwgZnVuY3Rpb24oKSB7CisgICAgZGVidWcoIk9uIGRyYWdvdmVyOiIpCisgICAg
ZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAiY29weSI7CisgICAgdmFyIHNob3VsZENv
bnRhaW5UeXBlID0gKGZpbGVzVG9EcmFnLmxlbmd0aCA+IDApOworICAgIGNoZWNrRm9yRXZlbnRU
cmFuc2ZlclR5cGUoZXZlbnQsICJGaWxlcyIsIHNob3VsZENvbnRhaW5UeXBlKTsKKyAgICBmaWxl
TGlzdFNob3VsZEJlKCJldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMiLCBbXSk7CisgICAgZXZlbnQu
cHJldmVudERlZmF1bHQoKTsKK30sIGZhbHNlKTsKKworZHJhZ1RhcmdldC5hZGRFdmVudExpc3Rl
bmVyKCJkcmFnbGVhdmUiLCBmdW5jdGlvbigpIHsKKyAgICBkZWJ1ZygiT24gZHJhZ2xlYXZlOiIp
CisgICAgdmFyIHNob3VsZENvbnRhaW5UeXBlID0gKGZpbGVzVG9EcmFnLmxlbmd0aCA+IDApOwor
ICAgIGNoZWNrRm9yRXZlbnRUcmFuc2ZlclR5cGUoZXZlbnQsICJGaWxlcyIsIHNob3VsZENvbnRh
aW5UeXBlKTsKKyAgICBmaWxlTGlzdFNob3VsZEJlKCJldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMi
LCBbXSk7Cit9LCBmYWxzZSk7CisKK3ZhciBleHBlY3RlZEZpbGVzT25Ecm9wOworZHJhZ1Rhcmdl
dC5hZGRFdmVudExpc3RlbmVyKCJkcm9wIiwgZnVuY3Rpb24oKSB7CisgICAgZGVidWcoIk9uIGRy
b3A6IikKKyAgICB2YXIgc2hvdWxkQ29udGFpblR5cGUgPSAoZmlsZXNUb0RyYWcubGVuZ3RoID4g
MCk7CisgICAgY2hlY2tGb3JFdmVudFRyYW5zZmVyVHlwZShldmVudCwgIkZpbGVzIiwgc2hvdWxk
Q29udGFpblR5cGUpOworICAgIGZpbGVMaXN0U2hvdWxkQmUoImV2ZW50LmRhdGFUcmFuc2Zlci5m
aWxlcyIsIGV4cGVjdGVkRmlsZXNPbkRyb3ApOworICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7
Cit9LCBmYWxzZSk7CisKKy8vIFNvbWUgdGVzdHMgZG9uJ3QgZW5kIHVwIGRyb3BwaW5nIHRoZSBk
cmFnZ2VlIG92ZXIgdGhlIGRyYWcgdGFyZ2V0LiBDYXRjaCBhbnkKKy8vIGxlZnRvdmVyIGRyb3Ag
ZXZlbnRzIGJ1YmJsaW5nIHVwIHRocm91Z2ggdGhlIHRyZWUgc28gdGhleSBkb24ndCBjYXVzZSBw
YWdlCisvLyBuYXZpZ2F0aW9uLgorZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVyKCJkcmFn
b3ZlciIsIGZ1bmN0aW9uKCkgeworICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7Cit9KTsKKwor
ZnVuY3Rpb24gbW92ZU1vdXNlVG9DZW50ZXJPZkVsZW1lbnQoZWxlbWVudCkgeworICAgIHZhciBj
ZW50ZXJYID0gZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAvIDI7Cisg
ICAgdmFyIGNlbnRlclkgPSBlbGVtZW50Lm9mZnNldFRvcCArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0
IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhjZW50ZXJYLCBjZW50ZXJZKTsKK30K
KworZnVuY3Rpb24gbW92ZU1vdXNlVG9PdXRzaWRlT2ZFbGVtZW50KGVsZW1lbnQpIHsKKyAgICB2
YXIgb3V0c2lkZVggPSBlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoICsg
NDI7CisgICAgdmFyIG91dHNpZGVZID0gZWxlbWVudC5vZmZzZXRUb3AgKyBlbGVtZW50Lm9mZnNl
dEhlaWdodCArIDQyOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKG91dHNpZGVYLCBvdXRz
aWRlWSk7Cit9CisKK2Z1bmN0aW9uIGRyYWdGaWxlc09udG9EcmFnVGFyZ2V0KGZpbGVzLCBsZWF2
ZSkgeworICAgIGZpbGVzVG9EcmFnID0gZmlsZXM7CisgICAgZXZlbnRTZW5kZXIuYmVnaW5EcmFn
V2l0aEZpbGVzKGZpbGVzKTsKKyAgICBtb3ZlTW91c2VUb0NlbnRlck9mRWxlbWVudChkcmFnVGFy
Z2V0KTsKKyAgICBpZiAobGVhdmUgJiYgbGVhdmUgPT09IHRydWUpCisgICAgICAgIG1vdmVNb3Vz
ZVRvT3V0c2lkZU9mRWxlbWVudChkcmFnVGFyZ2V0KTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVw
KCk7Cit9CisKK2Z1bmN0aW9uIGNoZWNrRm9yRXZlbnRUcmFuc2ZlclR5cGUoZXZlbnQsIHR5cGVT
dHJpbmcsIHNob3VsZENvbnRhaW5UeXBlKQoreworICAgIHZhciBwYXNzZWRDaGVjazsKKyAgICB2
YXIgbWVzc2FnZTsKKyAgICBpZiAoZXZlbnQuZGF0YVRyYW5zZmVyLnR5cGVzICYmIGV2ZW50LmRh
dGFUcmFuc2Zlci50eXBlcy5jb250YWlucyh0eXBlU3RyaW5nKSkgeworICAgICAgICBwYXNzZWRD
aGVjayA9IHNob3VsZENvbnRhaW5UeXBlOworICAgICAgICBtZXNzYWdlID0gImV2ZW50LmRhdGFU
cmFuc2Zlci50eXBlcyBjb250YWlucyAiICsgdHlwZVN0cmluZyArICIuIjsKKyAgICB9IGVsc2Ug
eworICAgICAgICBwYXNzZWRDaGVjayA9ICFzaG91bGRDb250YWluVHlwZTsKKyAgICAgICAgbWVz
c2FnZSA9ICJldmVudC5kYXRhVHJhbnNmZXIudHlwZXMgZG9lcyBub3QgY29udGFpbiAiICsgdHlw
ZVN0cmluZyArICIuIjsKKyAgICB9CisgICAgaWYgKHBhc3NlZENoZWNrKQorICAgICAgICB0ZXN0
UGFzc2VkKG1lc3NhZ2UpOworICAgIGVsc2UKKyAgICAgICAgdGVzdEZhaWxlZChtZXNzYWdlKTsK
K30KKworZnVuY3Rpb24gZmlsZUxpc3RTaG91bGRCZShmaWxlTGlzdFN0cmluZywgZmlsZXNBcnJh
eSkKK3sKKyAgICBzaG91bGRCZShmaWxlTGlzdFN0cmluZyArICIubGVuZ3RoIiwgIiIgKyBmaWxl
c0FycmF5Lmxlbmd0aCk7CisgICAgZm9yICh2YXIgeCA9IDA7IHggPCBmaWxlc0FycmF5Lmxlbmd0
aDsgeCsrKSB7CisgICAgICAgIHZhciBmaWxlVmFsdWVTdHJpbmcgPSBmaWxlTGlzdFN0cmluZyAr
ICJbIiArIHggKyAiXSI7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZyhmaWxlVmFsdWVT
dHJpbmcgKyAiLm5hbWUiLCBmaWxlc0FycmF5W3hdWyduYW1lJ10pOworICAgICAgICBzaG91bGRC
ZShmaWxlVmFsdWVTdHJpbmcgKyAiLnNpemUiLCAiIiArIGZpbGVzQXJyYXlbeF1bJ3NpemUnXSk7
CisgICAgfQorfQorCitmdW5jdGlvbiBkcmFnZ2luZ1BhdGhzU2hvdWxkUmVzdWx0SW5GaWxlcyhw
YXRoc0FycmF5LCBmaWxlc0FycmF5LCBsZWF2ZSkKK3sKKyAgICBleHBlY3RlZEZpbGVzT25Ecm9w
ID0gZmlsZXNBcnJheTsKKyAgICBkcmFnRmlsZXNPbnRvRHJhZ1RhcmdldChwYXRoc0FycmF5LCBs
ZWF2ZSB8fCBmYWxzZSk7Cit9CisKK2Z1bmN0aW9uIHRlc3REcmFnZ2luZ0ZpbGVzKGZpbGVzQXJy
YXksIGxlYXZlKQoreworICAgIC8vIFdlIGNvdWxkIG1ha2UgYSB3YXkgdG8gcGFyc2UgdGhlIGZp
bGVuYW1lIGZyb20gdGhlIHBhdGgsIGFuZCB0aGVuIG9ubHkgbmVlZCB0byBwYXNzCisgICAgLy8g
dGhlIHBhdGggaW4gdGhlIGZpbGVzQXJyYXkuCisgICAgdmFyIHBhdGhzT25seSA9IGZpbGVzQXJy
YXkubWFwKGZ1bmN0aW9uKGZpbGVTcGVjKSB7IHJldHVybiBmaWxlU3BlY1sncGF0aCddOyB9KTsK
KyAgICBkcmFnZ2luZ1BhdGhzU2hvdWxkUmVzdWx0SW5GaWxlcyhwYXRoc09ubHksIGZpbGVzQXJy
YXksIGxlYXZlIHx8IGZhbHNlKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgZGVi
dWcoIkRyYWdnaW5nIG5vIGZpbGVzIHNob3VsZCByZXR1cm4gYW4gZW1wdHkgZmlsZSBsaXN0IChh
cmJpdHJhcnkgaW1wbGVtZW50YXRpb24gZGV0YWlsKToiKTsKKyAgICB0ZXN0RHJhZ2dpbmdGaWxl
cyhbXSk7CisKKyAgICBkZWJ1ZygiRHJhZyBkcm9wIGEgc2luZ2xlIChub24tZXhpc3RhbnQpIGZp
bGUgb250byBhbiBlbGVtZW50OiIpOworICAgIHRlc3REcmFnZ2luZ0ZpbGVzKFsKKyAgICAgICAg
eyAncGF0aCc6ICdEUlRGYWtlRmlsZScsICduYW1lJyA6ICdEUlRGYWtlRmlsZScsICdzaXplJyA6
IDAgfQorICAgIF0pOworCisgICAgZGVidWcoIkZJWE1FOiBGaWxlLnNpemUgYWx3YXlzIHJldHVy
bnMgMCBmb3IgZmlsZXMgZHJvcHBlZCBieSBldmVudFNlbmRlci5iZWdpbkRyYWdXaXRoRmlsZXMg
ZnJvbSBodHRwIHRlc3RzOiAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTI1OTA5Iik7CisKKyAgICBkZWJ1ZygiRHJhZyBmaWxlcyBvdmVyIGFuIGVsZW1lbnQsIGxlYXZl
IHRoYXQgZWxlbWVudCBhbmQgcmVsZWFzZSB0aGUgbW91c2U6Iik7ICAgCisgICAgdGVzdERyYWdn
aW5nRmlsZXMoWworICAgICAgICB7ICdwYXRoJzogJ3Jlc291cmNlcy9hcHBsZS5naWYnLCAnbmFt
ZScgOiAnYXBwbGUuZ2lmJywgJ3NpemUnIDogMTQ3NiB9CisgICAgXSwgdHJ1ZSk7CisKKyAgICBk
ZWJ1ZygiRHJhZyBkcm9wIGEgcmVhbCBmaWxlIG9udG8gYW4gZWxlbWVudDoiKTsKKyAgICB0ZXN0
RHJhZ2dpbmdGaWxlcyhbCisgICAgICAgIHsgJ3BhdGgnOiAncmVzb3VyY2VzL2FwcGxlLmdpZics
ICduYW1lJyA6ICdhcHBsZS5naWYnLCAnc2l6ZScgOiAxNDc2IH0KKyAgICBdKTsKKyAgICAKKyAg
ICBkZWJ1ZygiRHJhZyBkcm9wIHR3byBmaWxlcyBvbnRvIGFuIGVsZW1lbnQ6Iik7CisgICAgdGVz
dERyYWdnaW5nRmlsZXMoWworICAgICAgICB7ICdwYXRoJzogJ3Jlc291cmNlcy9hcHBsZS5naWYn
LCAnbmFtZScgOiAnYXBwbGUuZ2lmJywgJ3NpemUnIDogMTQ3NiB9LAorICAgICAgICB7ICdwYXRo
JzogJ3Jlc291cmNlcy9tb3ppbGxhLmdpZicsICduYW1lJyA6ICdtb3ppbGxhLmdpZicsICdzaXpl
JyA6IDI1OTMgfQorICAgIF0pOworCisgICAgZGVidWcoIkRyYWcgZHJvcCB0d28gZmlsZXMgaW4g
cmV2ZXJzZSBhbHBoYWJldGljYWwgb3JkZXIgb250byBhbiBlbGVtZW50OiIpOworICAgIHRlc3RE
cmFnZ2luZ0ZpbGVzKFsKKyAgICAgICAgeyAncGF0aCc6ICdyZXNvdXJjZXMvbW96aWxsYS5naWYn
LCAnbmFtZScgOiAnbW96aWxsYS5naWYnLCAnc2l6ZScgOiAyNTkzIH0sCisgICAgICAgIHsgJ3Bh
dGgnOiAncmVzb3VyY2VzL2FwcGxlLmdpZicsICduYW1lJyA6ICdhcHBsZS5naWYnLCAnc2l6ZScg
OiAxNDc2IH0KKyAgICBdKTsKKworICAgIC8vIERpcmVjdG9yeSBkcmFnZ2luZyBiZWhhdmlvciBp
cyBjb3ZlcmVkIGJ5IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTg1
MiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1ODc5CisgICAg
ZGVidWcoIkZJWE1FOiBXZSBzaG91bGQgbm90IGFsbG93IGVsZW1lbnQgdG8gYWNjZXB0IGRyb3Bz
IGluY2x1ZGluZyBkaXJlY3RvcmllcyB1bmxlc3MgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTI1ODc5IGlzIGZpeGVkIHRvIG1ha2UgZGlyZWN0b3J5IEZpbGUgb2JqZWN0
cyB1c2VmdWwgZnJvbSBKYXZhU2NyaXB0LiAgVGhlIHBhZ2UgaXMgZ2l2ZW4gRmlsZSBvYmplY3Rz
IGNvcnJlc3BvbmRpbmcgdG8gZGlyZWN0b3JpZXMsIGJ1dCBmb3JtIHN1Ym1pc3Npb24gYW5kIHho
ci5zZW5kKCkgd2lsbCBmYWlsLiIpOworICAgIGRlYnVnKCJEcmFnIGRyb3AgYSBkaXJlY3Rvcnkg
b250byBhbiBlbGVtZW50OiIpOworICAgIGRyYWdnaW5nUGF0aHNTaG91bGRSZXN1bHRJbkZpbGVz
KFsncmVzb3VyY2VzL2RpcmVjdG9yeS1mb3ItZHJhZ2dpbmcnXSwgW10pOworCisgICAgLy8gTm90
ZTogVGhlIG9yZGVyIG9mIHNlbGVjdGlvbiBpbiB0aGUgRmluZGVyIGNoYW5nZXMgdGhlIG9yZGVy
IG9mIGZpbGUgcGF0aHMgaW4gdGhlIHBhc3RlYm9hcmQKKyAgICAvLyB0aHVzIGl0J3MgaW1wb3J0
YW50IHRoYXQgd2UgdGVzdCBkaWZmZXJlbnQgb3JkZXJzIGhlcmUgYXMgd2VsbCAoYXQgbGVhc3Qg
b24gdGhlIE1hYykKKyAgICAvLyBCb3RoIGRyb3BzIHNob3VsZCBiZSByZWZ1c2VkIG9yIHN1Y2Nl
ZWQgYmFzZWQgb24gaG93IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
NTg3OSBpcyByZXNvbHZlZC4gIEN1cnJlbnRseSB3ZSBleHBlY3QgZHJvcHMgdG8gYmUgcmVmdXNl
ZC4KKyAgICBkZWJ1ZygiRHJhZyBkcm9wIGEgZmlsZSBhbmQgYSBkaXJlY3Rvcnkgb250byBhbiBl
bGVtZW50OiIpOworICAgIGRyYWdnaW5nUGF0aHNTaG91bGRSZXN1bHRJbkZpbGVzKFsncmVzb3Vy
Y2VzL2FwcGxlLmdpZicsICdyZXNvdXJjZXMvZGlyZWN0b3J5LWZvci1kcmFnZ2luZyddLCBbXSk7
CisKKyAgICBkZWJ1ZygiRHJhZyBkcm9wIGEgZGlyZWN0b3J5IGFuZCBhIGZpbGUgb250byBhbiBl
bGVtZW50OiIpCisgICAgZHJhZ2dpbmdQYXRoc1Nob3VsZFJlc3VsdEluRmlsZXMoWydyZXNvdXJj
ZXMvZGlyZWN0b3J5LWZvci1kcmFnZ2luZycsICdyZXNvdXJjZXMvYXBwbGUuZ2lmJ10sIFtdKTsK
K30KKworaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgIHJ1blRlc3QoKTsKKyAgICAvLyBD
bGVhbiB1cCBhZnRlciBvdXJzZWx2ZXMKKyAgICBkcmFnVGFyZ2V0LnBhcmVudE5vZGUucmVtb3Zl
Q2hpbGQoZHJhZ1RhcmdldCk7Cit9IGVsc2UgeworICAgIHRlc3RGYWlsZWQoIlRoaXMgdGVzdCBp
cyBub3QgaW50ZXJhY3RpdmUsIHBsZWFzZSBydW4gdXNpbmcgRHVtcFJlbmRlclRyZWUiKTsKK30K
KwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KIDxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9i
b2R5PgogPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jbGlw
Ym9hcmQvc2NyaXB0LXRlc3RzL2NsaXBib2FyZC1maWxlLWFjY2Vzcy5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NsaXBib2FyZC9zY3JpcHQtdGVzdHMv
Y2xpcGJvYXJkLWZpbGUtYWNjZXNzLmpzCShyZXZpc2lvbiAxMDg2NzIpCisrKyBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NsaXBib2FyZC9zY3JpcHQtdGVzdHMvY2xpcGJvYXJkLWZp
bGUtYWNjZXNzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE3MiArMCwwIEBACi1kZXNjcmlwdGlv
bigiVGVzdHMgYWNjZXNzIHRvIGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcyBhbmQgLnR5cGVzIik7
Ci0KLXZhciBkcmFnVGFyZ2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci1kcmFn
VGFyZ2V0LmlubmVySFRNTCA9ICJEcmFnIGhlcmUiCi1kcmFnVGFyZ2V0LnN0eWxlLmJhY2tncm91
bmRDb2xvciA9ICJibHVlIjsKLWRyYWdUYXJnZXQuc3R5bGUud2lkdGggPSAiMTAwcHgiOwotZHJh
Z1RhcmdldC5zdHlsZS5oZWlnaHQgPSAiMTAwcHgiOwotLy8gSW1wb3J0YW50IHRoYXQgd2UgcHV0
IHRoaXMgYXQgdGhlIHRvcCBvZiB0aGUgZG9jIHNvIHRoYXQgbG9nZ2luZyBkb2VzIG5vdCBjYXVz
ZSBpdCB0byBnbyBvdXQgb2YgdmlldyAoYW5kIGJlIHVuZHJhZ2FibGUpCi1kb2N1bWVudC5ib2R5
Lmluc2VydEJlZm9yZShkcmFnVGFyZ2V0LCBkb2N1bWVudC5ib2R5LmZpcnN0Q2hpbGQpOwotCi12
YXIgZmlsZXNUb0RyYWc7Ci1kcmFnVGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoImRyYWdlbnRlciIs
IGZ1bmN0aW9uKCkgewotICAgIGRlYnVnKCJPbiBkcmFnZW50ZXI6IikKLSAgICBldmVudC5kYXRh
VHJhbnNmZXIuZHJvcEVmZmVjdCA9ICJjb3B5IjsKLSAgICB2YXIgc2hvdWxkQ29udGFpblR5cGUg
PSAoZmlsZXNUb0RyYWcubGVuZ3RoID4gMCk7Ci0gICAgY2hlY2tGb3JFdmVudFRyYW5zZmVyVHlw
ZShldmVudCwgIkZpbGVzIiwgc2hvdWxkQ29udGFpblR5cGUpOwotICAgIGZpbGVMaXN0U2hvdWxk
QmUoImV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcyIsIFtdKTsKLSAgICBldmVudC5wcmV2ZW50RGVm
YXVsdCgpOwotfSwgZmFsc2UpOwotCi1kcmFnVGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoImRyYWdv
dmVyIiwgZnVuY3Rpb24oKSB7Ci0gICAgZGVidWcoIk9uIGRyYWdvdmVyOiIpCi0gICAgZXZlbnQu
ZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAiY29weSI7Ci0gICAgdmFyIHNob3VsZENvbnRhaW5U
eXBlID0gKGZpbGVzVG9EcmFnLmxlbmd0aCA+IDApOwotICAgIGNoZWNrRm9yRXZlbnRUcmFuc2Zl
clR5cGUoZXZlbnQsICJGaWxlcyIsIHNob3VsZENvbnRhaW5UeXBlKTsKLSAgICBmaWxlTGlzdFNo
b3VsZEJlKCJldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMiLCBbXSk7Ci0gICAgZXZlbnQucHJldmVu
dERlZmF1bHQoKTsKLX0sIGZhbHNlKTsKLQotZHJhZ1RhcmdldC5hZGRFdmVudExpc3RlbmVyKCJk
cmFnbGVhdmUiLCBmdW5jdGlvbigpIHsKLSAgICBkZWJ1ZygiT24gZHJhZ2xlYXZlOiIpCi0gICAg
dmFyIHNob3VsZENvbnRhaW5UeXBlID0gKGZpbGVzVG9EcmFnLmxlbmd0aCA+IDApOwotICAgIGNo
ZWNrRm9yRXZlbnRUcmFuc2ZlclR5cGUoZXZlbnQsICJGaWxlcyIsIHNob3VsZENvbnRhaW5UeXBl
KTsKLSAgICBmaWxlTGlzdFNob3VsZEJlKCJldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMiLCBbXSk7
Ci19LCBmYWxzZSk7Ci0KLXZhciBleHBlY3RlZEZpbGVzT25Ecm9wOwotZHJhZ1RhcmdldC5hZGRF
dmVudExpc3RlbmVyKCJkcm9wIiwgZnVuY3Rpb24oKSB7Ci0gICAgZGVidWcoIk9uIGRyb3A6IikK
LSAgICB2YXIgc2hvdWxkQ29udGFpblR5cGUgPSAoZmlsZXNUb0RyYWcubGVuZ3RoID4gMCk7Ci0g
ICAgY2hlY2tGb3JFdmVudFRyYW5zZmVyVHlwZShldmVudCwgIkZpbGVzIiwgc2hvdWxkQ29udGFp
blR5cGUpOwotICAgIGZpbGVMaXN0U2hvdWxkQmUoImV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcyIs
IGV4cGVjdGVkRmlsZXNPbkRyb3ApOwotICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7Ci19LCBm
YWxzZSk7Ci0KLS8vIFNvbWUgdGVzdHMgZG9uJ3QgZW5kIHVwIGRyb3BwaW5nIHRoZSBkcmFnZ2Vl
IG92ZXIgdGhlIGRyYWcgdGFyZ2V0LiBDYXRjaCBhbnkKLS8vIGxlZnRvdmVyIGRyb3AgZXZlbnRz
IGJ1YmJsaW5nIHVwIHRocm91Z2ggdGhlIHRyZWUgc28gdGhleSBkb24ndCBjYXVzZSBwYWdlCi0v
LyBuYXZpZ2F0aW9uLgotZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVyKCJkcmFnb3ZlciIs
IGZ1bmN0aW9uKCkgewotICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7Ci19KTsKLQotZnVuY3Rp
b24gbW92ZU1vdXNlVG9DZW50ZXJPZkVsZW1lbnQoZWxlbWVudCkgewotICAgIHZhciBjZW50ZXJY
ID0gZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAvIDI7Ci0gICAgdmFy
IGNlbnRlclkgPSBlbGVtZW50Lm9mZnNldFRvcCArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMjsK
LSAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhjZW50ZXJYLCBjZW50ZXJZKTsKLX0KLQotZnVu
Y3Rpb24gbW92ZU1vdXNlVG9PdXRzaWRlT2ZFbGVtZW50KGVsZW1lbnQpIHsKLSAgICB2YXIgb3V0
c2lkZVggPSBlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoICsgNDI7Ci0g
ICAgdmFyIG91dHNpZGVZID0gZWxlbWVudC5vZmZzZXRUb3AgKyBlbGVtZW50Lm9mZnNldEhlaWdo
dCArIDQyOwotICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKG91dHNpZGVYLCBvdXRzaWRlWSk7
Ci19Ci0KLWZ1bmN0aW9uIGRyYWdGaWxlc09udG9EcmFnVGFyZ2V0KGZpbGVzLCBsZWF2ZSkgewot
ICAgIGZpbGVzVG9EcmFnID0gZmlsZXM7Ci0gICAgZXZlbnRTZW5kZXIuYmVnaW5EcmFnV2l0aEZp
bGVzKGZpbGVzKTsKLSAgICBtb3ZlTW91c2VUb0NlbnRlck9mRWxlbWVudChkcmFnVGFyZ2V0KTsK
LSAgICBpZiAobGVhdmUgJiYgbGVhdmUgPT09IHRydWUpCi0gICAgICAgIG1vdmVNb3VzZVRvT3V0
c2lkZU9mRWxlbWVudChkcmFnVGFyZ2V0KTsKLSAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7Ci19
Ci0KLWZ1bmN0aW9uIGNoZWNrRm9yRXZlbnRUcmFuc2ZlclR5cGUoZXZlbnQsIHR5cGVTdHJpbmcs
IHNob3VsZENvbnRhaW5UeXBlKQotewotICAgIHZhciBwYXNzZWRDaGVjazsKLSAgICB2YXIgbWVz
c2FnZTsKLSAgICBpZiAoZXZlbnQuZGF0YVRyYW5zZmVyLnR5cGVzICYmIGV2ZW50LmRhdGFUcmFu
c2Zlci50eXBlcy5jb250YWlucyh0eXBlU3RyaW5nKSkgewotICAgICAgICBwYXNzZWRDaGVjayA9
IHNob3VsZENvbnRhaW5UeXBlOwotICAgICAgICBtZXNzYWdlID0gImV2ZW50LmRhdGFUcmFuc2Zl
ci50eXBlcyBjb250YWlucyAiICsgdHlwZVN0cmluZyArICIuIjsKLSAgICB9IGVsc2UgewotICAg
ICAgICBwYXNzZWRDaGVjayA9ICFzaG91bGRDb250YWluVHlwZTsKLSAgICAgICAgbWVzc2FnZSA9
ICJldmVudC5kYXRhVHJhbnNmZXIudHlwZXMgZG9lcyBub3QgY29udGFpbiAiICsgdHlwZVN0cmlu
ZyArICIuIjsKLSAgICB9Ci0gICAgaWYgKHBhc3NlZENoZWNrKQotICAgICAgICB0ZXN0UGFzc2Vk
KG1lc3NhZ2UpOwotICAgIGVsc2UKLSAgICAgICAgdGVzdEZhaWxlZChtZXNzYWdlKTsKLX0KLQot
ZnVuY3Rpb24gZmlsZUxpc3RTaG91bGRCZShmaWxlTGlzdFN0cmluZywgZmlsZXNBcnJheSkKLXsK
LSAgICBzaG91bGRCZShmaWxlTGlzdFN0cmluZyArICIubGVuZ3RoIiwgIiIgKyBmaWxlc0FycmF5
Lmxlbmd0aCk7Ci0gICAgZm9yICh2YXIgeCA9IDA7IHggPCBmaWxlc0FycmF5Lmxlbmd0aDsgeCsr
KSB7Ci0gICAgICAgIHZhciBmaWxlVmFsdWVTdHJpbmcgPSBmaWxlTGlzdFN0cmluZyArICJbIiAr
IHggKyAiXSI7Ci0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZyhmaWxlVmFsdWVTdHJpbmcg
KyAiLmZpbGVOYW1lIiwgZmlsZXNBcnJheVt4XVsnbmFtZSddKTsKLSAgICAgICAgc2hvdWxkQmUo
ZmlsZVZhbHVlU3RyaW5nICsgIi5maWxlU2l6ZSIsICIiICsgZmlsZXNBcnJheVt4XVsnc2l6ZSdd
KTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGRyYWdnaW5nUGF0aHNTaG91bGRSZXN1bHRJbkZpbGVz
KHBhdGhzQXJyYXksIGZpbGVzQXJyYXksIGxlYXZlKQotewotICAgIGV4cGVjdGVkRmlsZXNPbkRy
b3AgPSBmaWxlc0FycmF5OwotICAgIGRyYWdGaWxlc09udG9EcmFnVGFyZ2V0KHBhdGhzQXJyYXks
IGxlYXZlIHx8IGZhbHNlKTsKLX0KLQotZnVuY3Rpb24gdGVzdERyYWdnaW5nRmlsZXMoZmlsZXNB
cnJheSwgbGVhdmUpCi17Ci0gICAgLy8gV2UgY291bGQgbWFrZSBhIHdheSB0byBwYXJzZSB0aGUg
ZmlsZW5hbWUgZnJvbSB0aGUgcGF0aCwgYW5kIHRoZW4gb25seSBuZWVkIHRvIHBhc3MKLSAgICAv
LyB0aGUgcGF0aCBpbiB0aGUgZmlsZXNBcnJheS4KLSAgICB2YXIgcGF0aHNPbmx5ID0gZmlsZXNB
cnJheS5tYXAoZnVuY3Rpb24oZmlsZVNwZWMpIHsgcmV0dXJuIGZpbGVTcGVjWydwYXRoJ107IH0p
OwotICAgIGRyYWdnaW5nUGF0aHNTaG91bGRSZXN1bHRJbkZpbGVzKHBhdGhzT25seSwgZmlsZXNB
cnJheSwgbGVhdmUgfHwgZmFsc2UpOwotfQotCi1mdW5jdGlvbiBydW5UZXN0KCkKLXsKLSAgICBk
ZWJ1ZygiRHJhZ2dpbmcgbm8gZmlsZXMgc2hvdWxkIHJldHVybiBhbiBlbXB0eSBmaWxlIGxpc3Qg
KGFyYml0cmFyeSBpbXBsZW1lbnRhdGlvbiBkZXRhaWwpOiIpOwotICAgIHRlc3REcmFnZ2luZ0Zp
bGVzKFtdKTsKLQotICAgIGRlYnVnKCJEcmFnIGRyb3AgYSBzaW5nbGUgKG5vbi1leGlzdGFudCkg
ZmlsZSBvbnRvIGFuIGVsZW1lbnQ6Iik7Ci0gICAgdGVzdERyYWdnaW5nRmlsZXMoWwotICAgICAg
ICB7ICdwYXRoJzogJ0RSVEZha2VGaWxlJywgJ25hbWUnIDogJ0RSVEZha2VGaWxlJywgJ3NpemUn
IDogMCB9Ci0gICAgXSk7Ci0KLSAgICBkZWJ1ZygiRklYTUU6IEZpbGUuZmlsZVNpemUgYWx3YXlz
IHJldHVybnMgMCBmb3IgZmlsZXMgZHJvcHBlZCBieSBldmVudFNlbmRlci5iZWdpbkRyYWdXaXRo
RmlsZXMgZnJvbSBodHRwIHRlc3RzOiAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTI1OTA5Iik7Ci0KLSAgICBkZWJ1ZygiRHJhZyBmaWxlcyBvdmVyIGFuIGVsZW1lbnQs
IGxlYXZlIHRoYXQgZWxlbWVudCBhbmQgcmVsZWFzZSB0aGUgbW91c2U6Iik7ICAgCi0gICAgdGVz
dERyYWdnaW5nRmlsZXMoWwotICAgICAgICB7ICdwYXRoJzogJ3Jlc291cmNlcy9hcHBsZS5naWYn
LCAnbmFtZScgOiAnYXBwbGUuZ2lmJywgJ3NpemUnIDogMTQ3NiB9Ci0gICAgXSwgdHJ1ZSk7Ci0K
LSAgICBkZWJ1ZygiRHJhZyBkcm9wIGEgcmVhbCBmaWxlIG9udG8gYW4gZWxlbWVudDoiKTsKLSAg
ICB0ZXN0RHJhZ2dpbmdGaWxlcyhbCi0gICAgICAgIHsgJ3BhdGgnOiAncmVzb3VyY2VzL2FwcGxl
LmdpZicsICduYW1lJyA6ICdhcHBsZS5naWYnLCAnc2l6ZScgOiAxNDc2IH0KLSAgICBdKTsKLSAg
ICAKLSAgICBkZWJ1ZygiRHJhZyBkcm9wIHR3byBmaWxlcyBvbnRvIGFuIGVsZW1lbnQ6Iik7Ci0g
ICAgdGVzdERyYWdnaW5nRmlsZXMoWwotICAgICAgICB7ICdwYXRoJzogJ3Jlc291cmNlcy9hcHBs
ZS5naWYnLCAnbmFtZScgOiAnYXBwbGUuZ2lmJywgJ3NpemUnIDogMTQ3NiB9LAotICAgICAgICB7
ICdwYXRoJzogJ3Jlc291cmNlcy9tb3ppbGxhLmdpZicsICduYW1lJyA6ICdtb3ppbGxhLmdpZics
ICdzaXplJyA6IDI1OTMgfQotICAgIF0pOwotCi0gICAgZGVidWcoIkRyYWcgZHJvcCB0d28gZmls
ZXMgaW4gcmV2ZXJzZSBhbHBoYWJldGljYWwgb3JkZXIgb250byBhbiBlbGVtZW50OiIpOwotICAg
IHRlc3REcmFnZ2luZ0ZpbGVzKFsKLSAgICAgICAgeyAncGF0aCc6ICdyZXNvdXJjZXMvbW96aWxs
YS5naWYnLCAnbmFtZScgOiAnbW96aWxsYS5naWYnLCAnc2l6ZScgOiAyNTkzIH0sCi0gICAgICAg
IHsgJ3BhdGgnOiAncmVzb3VyY2VzL2FwcGxlLmdpZicsICduYW1lJyA6ICdhcHBsZS5naWYnLCAn
c2l6ZScgOiAxNDc2IH0KLSAgICBdKTsKLQotICAgIC8vIERpcmVjdG9yeSBkcmFnZ2luZyBiZWhh
dmlvciBpcyBjb3ZlcmVkIGJ5IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yNTg1MiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1ODc5
Ci0gICAgZGVidWcoIkZJWE1FOiBXZSBzaG91bGQgbm90IGFsbG93IGVsZW1lbnQgdG8gYWNjZXB0
IGRyb3BzIGluY2x1ZGluZyBkaXJlY3RvcmllcyB1bmxlc3MgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI1ODc5IGlzIGZpeGVkIHRvIG1ha2UgZGlyZWN0b3J5IEZpbGUg
b2JqZWN0cyB1c2VmdWwgZnJvbSBKYXZhU2NyaXB0LiAgVGhlIHBhZ2UgaXMgZ2l2ZW4gRmlsZSBv
YmplY3RzIGNvcnJlc3BvbmRpbmcgdG8gZGlyZWN0b3JpZXMsIGJ1dCBmb3JtIHN1Ym1pc3Npb24g
YW5kIHhoci5zZW5kKCkgd2lsbCBmYWlsLiIpOwotICAgIGRlYnVnKCJEcmFnIGRyb3AgYSBkaXJl
Y3Rvcnkgb250byBhbiBlbGVtZW50OiIpOwotICAgIGRyYWdnaW5nUGF0aHNTaG91bGRSZXN1bHRJ
bkZpbGVzKFsncmVzb3VyY2VzL2RpcmVjdG9yeS1mb3ItZHJhZ2dpbmcnXSwgW10pOwotCi0gICAg
Ly8gTm90ZTogVGhlIG9yZGVyIG9mIHNlbGVjdGlvbiBpbiB0aGUgRmluZGVyIGNoYW5nZXMgdGhl
IG9yZGVyIG9mIGZpbGUgcGF0aHMgaW4gdGhlIHBhc3RlYm9hcmQKLSAgICAvLyB0aHVzIGl0J3Mg
aW1wb3J0YW50IHRoYXQgd2UgdGVzdCBkaWZmZXJlbnQgb3JkZXJzIGhlcmUgYXMgd2VsbCAoYXQg
bGVhc3Qgb24gdGhlIE1hYykKLSAgICAvLyBCb3RoIGRyb3BzIHNob3VsZCBiZSByZWZ1c2VkIG9y
IHN1Y2NlZWQgYmFzZWQgb24gaG93IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yNTg3OSBpcyByZXNvbHZlZC4gIEN1cnJlbnRseSB3ZSBleHBlY3QgZHJvcHMgdG8gYmUg
cmVmdXNlZC4KLSAgICBkZWJ1ZygiRHJhZyBkcm9wIGEgZmlsZSBhbmQgYSBkaXJlY3Rvcnkgb250
byBhbiBlbGVtZW50OiIpOwotICAgIGRyYWdnaW5nUGF0aHNTaG91bGRSZXN1bHRJbkZpbGVzKFsn
cmVzb3VyY2VzL2FwcGxlLmdpZicsICdyZXNvdXJjZXMvZGlyZWN0b3J5LWZvci1kcmFnZ2luZydd
LCBbXSk7Ci0KLSAgICBkZWJ1ZygiRHJhZyBkcm9wIGEgZGlyZWN0b3J5IGFuZCBhIGZpbGUgb250
byBhbiBlbGVtZW50OiIpCi0gICAgZHJhZ2dpbmdQYXRoc1Nob3VsZFJlc3VsdEluRmlsZXMoWydy
ZXNvdXJjZXMvZGlyZWN0b3J5LWZvci1kcmFnZ2luZycsICdyZXNvdXJjZXMvYXBwbGUuZ2lmJ10s
IFtdKTsKLX0KLQotaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewotICAgIHJ1blRlc3QoKTsKLSAg
ICAvLyBDbGVhbiB1cCBhZnRlciBvdXJzZWx2ZXMKLSAgICBkcmFnVGFyZ2V0LnBhcmVudE5vZGUu
cmVtb3ZlQ2hpbGQoZHJhZ1RhcmdldCk7Ci19IGVsc2UgewotICAgIHRlc3RGYWlsZWQoIlRoaXMg
dGVzdCBpcyBub3QgaW50ZXJhY3RpdmUsIHBsZWFzZSBydW4gdXNpbmcgRHVtcFJlbmRlclRyZWUi
KTsKLX0KLQotdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cg==
</data>
<flag name="review"
          id="130997"
          type_id="1"
          status="+"
          setter="morrita"
    />
    <flag name="commit-queue"
          id="136768"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132960</attachid>
            <date>2012-03-20 20:56:03 -0700</date>
            <delta_ts>2012-03-20 21:03:25 -0700</delta_ts>
            <desc>updated for test changes</desc>
            <filename>ObsoleteFileAttributes2.txt</filename>
            <type>text/plain</type>
            <size>37139</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMTQ4NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDEyLTAzLTIwICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBvYnNvbGV0ZSBG
aWxlIGF0dHJpYnV0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc5MzgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSGFqaW1lIE1vcnJpdGEuCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9vYmpjL1B1YmxpY0RPTUludGVyZmFjZXMuaDoKKyAgICAgICAgKiBm
aWxlYXBpL0ZpbGUuaDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGUuaWRsOgorICAgICAgICBSZW1v
dmVkIGZpbGVOYW1lIGFuZCBmaWxlU2l6ZSwgdGhleSBoYXZlIGRpZmZlcmVudCBuYW1lcyBub3cu
CisKKyAgICAgICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RmlsZUlucHV0VHlwZTo6YXBwZW5kRm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlu
cHV0VHlwZTo6Z2V0VHlwZVNwZWNpZmljVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlu
cHV0VHlwZTo6ZGVmYXVsdFRvb2xUaXApOgorICAgICAgICBVcGRhdGVkIHRvIHVzZSBuZXcgZnVu
Y3Rpb24gbmFtZXMuCisKIDIwMTItMDMtMjAgIFcuIEphbWVzIE1hY0xlYW4gIDx3am1hY2xlYW5A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gQ29udmVydCBUb3VjaEZsaW5nUGxh
dGZvcm1HZXN0dXJlQ3VydmUgdG8gYSAyLUQgQmV6aWVyIGZvciBiZXR0ZXIgY29udHJvbCBvZiBj
dXJ2ZSBzaGFwZS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvUHVibGljRE9N
SW50ZXJmYWNlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMv
UHVibGljRE9NSW50ZXJmYWNlcy5oCShyZXZpc2lvbiAxMTE0ODcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9vYmpjL1B1YmxpY0RPTUludGVyZmFjZXMuaAkod29ya2luZyBjb3B5KQpAQCAt
MjQ0LDEwICsyNDQsNiBAQCBAaW50ZXJmYWNlIERPTUJsb2IgOiBET01PYmplY3QgV0VCS0lUX1ZF
CiAKIEBpbnRlcmZhY2UgRE9NRmlsZSA6IERPTUJsb2IgV0VCS0lUX1ZFUlNJT05fNF8wCiBAcHJv
cGVydHkocmVhZG9ubHksIGNvcHkpIE5TU3RyaW5nICpuYW1lOwotCi0vLyBGSVhNRTogb2Jzb2xl
dGUgcHJvcGVydGllcy4gVG8gYmUgcmVtb3ZlZC4KLUBwcm9wZXJ0eShyZWFkb25seSwgY29weSkg
TlNTdHJpbmcgKmZpbGVOYW1lOwotQHByb3BlcnR5KHJlYWRvbmx5KSB1bnNpZ25lZCBsb25nIGxv
bmcgZmlsZVNpemU7CiBAZW5kCiAKIEBpbnRlcmZhY2UgRE9NRmlsZUxpc3QgOiBET01PYmplY3Qg
V0VCS0lUX1ZFUlNJT05fNF8wCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaAkocmV2aXNpb24gMTEx
NDg3KQorKysgU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTc0LDEwICs3NCw2IEBAIHB1YmxpYzoKICAgICAvLyBOb3RlIHRoYXQgdGhpcyBpbnZvbHZlcyBz
eW5jaHJvbm91cyBmaWxlIG9wZXJhdGlvbi4gVGhpbmsgdHdpY2UgYmVmb3JlIGNhbGxpbmcgdGhp
cyBmdW5jdGlvbi4KICAgICB2b2lkIGNhcHR1cmVTbmFwc2hvdChsb25nIGxvbmcmIHNuYXBzaG90
U2l6ZSwgZG91YmxlJiBzbmFwc2hvdE1vZGlmaWNhdGlvblRpbWUpIGNvbnN0OwogCi0gICAgLy8g
RklYTUU6IG9ic29sZXRlIGF0dHJpYnV0ZXMuIFRvIGJlIHJlbW92ZWQuCi0gICAgY29uc3QgU3Ry
aW5nJiBmaWxlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG5hbWUoKTsgfQotICAgIHVuc2lnbmVkIGxv
bmcgbG9uZyBmaWxlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHNpemUoKTsgfQotCiBwcml2YXRlOgog
ICAgIEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9GaWxlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUu
aWRsCShyZXZpc2lvbiAxMTE0ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0zNywxMCArMzcsNiBAQCBtb2R1bGUgaHRtbCB7CiAjaWYgZGVm
aW5lZChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkgJiYgRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQK
ICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB3ZWJraXRSZWxhdGl2ZVBhdGg7
CiAjZW5kaWYKLQotICAgICAgICAvLyBGSVhNRTogb2Jzb2xldGUgYXR0cmlidXRlcy4gVG8gYmUg
cmVtb3ZlZC4KLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBmaWxlTmFtZTsK
LSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbG9uZyBmaWxlU2l6ZTsK
ICAgICB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAJKHJl
dmlzaW9uIDExMTQ4NykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE0Myw3ICsxNDMsNyBAQCBib29sIEZpbGVJbnB1dFR5cGU6OmFw
cGVuZEZvcm1EYXRhKEZvcm1ECiAgICAgICAgIC8vIHN1Ym1pc3Npb24gb2YgZmlsZSBpbnB1dHMs
IGFuZCBGaXJlZm94IGRvZXNuJ3QgYWRkICJuYW1lPSIgcXVlcnkKICAgICAgICAgLy8gcGFyYW1l
dGVyLgogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtRmlsZXM7ICsraSkKLSAg
ICAgICAgICAgIGVuY29kaW5nLmFwcGVuZERhdGEoZWxlbWVudCgpLT5uYW1lKCksIGZpbGVMaXN0
LT5pdGVtKGkpLT5maWxlTmFtZSgpKTsKKyAgICAgICAgICAgIGVuY29kaW5nLmFwcGVuZERhdGEo
ZWxlbWVudCgpLT5uYW1lKCksIGZpbGVMaXN0LT5pdGVtKGkpLT5uYW1lKCkpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTI0MCw3ICsyNDAsNyBAQCBib29sIEZpbGVJbnB1dFR5
cGU6OmdldFR5cGVTcGVjaWZpY1ZhbHVlCiAgICAgLy8gZGVjaWRlZCB0byB0cnkgdG8gcGFyc2Ug
dGhlIHZhbHVlIGJ5IGxvb2tpbmcgZm9yIGJhY2tzbGFzaGVzCiAgICAgLy8gKGJlY2F1c2UgdGhh
dCdzIHdoYXQgV2luZG93cyBmaWxlIHBhdGhzIHVzZSkuIFRvIGJlIGNvbXBhdGlibGUKICAgICAv
LyB3aXRoIHRoYXQgY29kZSwgd2UgbWFrZSB1cCBhIGZha2UgcGF0aCBmb3IgdGhlIGZpbGUuCi0g
ICAgdmFsdWUgPSAiQzpcXGZha2VwYXRoXFwiICsgbV9maWxlTGlzdC0+aXRlbSgwKS0+ZmlsZU5h
bWUoKTsKKyAgICB2YWx1ZSA9ICJDOlxcZmFrZXBhdGhcXCIgKyBtX2ZpbGVMaXN0LT5pdGVtKDAp
LT5uYW1lKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTQxNyw3ICs0MTcsNyBAQCBTdHJp
bmcgRmlsZUlucHV0VHlwZTo6ZGVmYXVsdFRvb2xUaXAoKSBjCiAKICAgICBTdHJpbmdCdWlsZGVy
IG5hbWVzOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdFNpemU7ICsraSkgewotICAg
ICAgICBuYW1lcy5hcHBlbmQoZmlsZUxpc3QtPml0ZW0oaSktPmZpbGVOYW1lKCkpOworICAgICAg
ICBuYW1lcy5hcHBlbmQoZmlsZUxpc3QtPml0ZW0oaSktPm5hbWUoKSk7CiAgICAgICAgIGlmIChp
ICE9IGxpc3RTaXplIC0gMSkKICAgICAgICAgICAgIG5hbWVzLmFwcGVuZCgnXG4nKTsKICAgICB9
CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiAxMTE0ODcpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wMy0yMCAgQWxleGV5IFByb3NrdXJ5
YWtvdiAgPGFwQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgb2Jzb2xldGUgRmlsZSBhdHRy
aWJ1dGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
OTM4MworCisgICAgICAgIFJldmlld2VkIGJ5IEhhamltZSBNb3JyaXRhLgorCisgICAgICAgICog
ZWRpdGluZy9wYXN0ZWJvYXJkL2ZpbGUtaW5wdXQtZmlsZXMtYWNjZXNzLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvZmlsZS1pbnB1dC1maWxlcy1hY2Nlc3MuaHRt
bDoKKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvc2NyaXB0LXRlc3RzL2ZpbGUtaW5wdXQt
ZmlsZXMtYWNjZXNzLmpzOiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkv
Y2xpcGJvYXJkL2NsaXBib2FyZC1maWxlLWFjY2Vzcy1leHBlY3RlZC50eHQ6CisgICAgICAgICog
aHR0cC90ZXN0cy9zZWN1cml0eS9jbGlwYm9hcmQvY2xpcGJvYXJkLWZpbGUtYWNjZXNzLmh0bWw6
CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9jbGlwYm9hcmQvc2NyaXB0LXRlc3RzL2Ns
aXBib2FyZC1maWxlLWFjY2Vzcy5qczogUmVtb3ZlZC4KKyAgICAgICAgVXBkYXRlZCB0aGUgdGVz
dHMgdG8gbm90IHVzZSByZW1vdmVkIGF0dHJpYnV0ZXMsIGFuZCBjb25zb2xpZGF0ZWQgZmlsZXMg
Zm9yIGVhc2llciBhY2Nlc3MuCisKIDIwMTItMDMtMjAgIEtlaXNoaSBIYXR0b3JpICA8a2Vpc2hp
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBSZWJhc2VsaW5pbmcgZm9udC1mYW1p
bHktcGljdG9ncmFwaC5odG1sIG9uIE1hYy4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvcGFz
dGVib2FyZC9maWxlLWlucHV0LWZpbGVzLWFjY2Vzcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2ZpbGUtaW5wdXQtZmlsZXMtYWNjZXNz
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTExNDg3KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9w
YXN0ZWJvYXJkL2ZpbGUtaW5wdXQtZmlsZXMtYWNjZXNzLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtOSwxNiArOSwxMiBAQCBQQVNTIGZpbGVJbnB1dC5maWxlcy5sZW5ndGggaXMgMQog
UEFTUyBmaWxlSW5wdXQuZmlsZXNbMF0ubmFtZSBpcyAiRFJURmFrZUZpbGUiCiBQQVNTIGZpbGVJ
bnB1dC5maWxlc1swXS50eXBlIGlzICIiCiBQQVNTIGZpbGVJbnB1dC5maWxlc1swXS5zaXplIGlz
IDAKLVBBU1MgZmlsZUlucHV0LmZpbGVzWzBdLmZpbGVOYW1lIGlzICJEUlRGYWtlRmlsZSIKLVBB
U1MgZmlsZUlucHV0LmZpbGVzWzBdLmZpbGVTaXplIGlzIDAKIERyYWdnaW5nIGEgcmVhbCBmaWxl
IHRvIGEgZmlsZSBpbnB1dCBjb250cm9sOgogUEFTUyBmaWxlSW5wdXQudmFsdWUgaXMgIkM6XFxm
YWtlcGF0aFxcYXBwbGUuZ2lmIgogUEFTUyBmaWxlSW5wdXQuZmlsZXMubGVuZ3RoIGlzIDEKIFBB
U1MgZmlsZUlucHV0LmZpbGVzWzBdLm5hbWUgaXMgImFwcGxlLmdpZiIKIFBBU1MgZmlsZUlucHV0
LmZpbGVzWzBdLnR5cGUgaXMgImltYWdlL2dpZiIKIFBBU1MgZmlsZUlucHV0LmZpbGVzWzBdLnNp
emUgaXMgMTQ3NgotUEFTUyBmaWxlSW5wdXQuZmlsZXNbMF0uZmlsZU5hbWUgaXMgImFwcGxlLmdp
ZiIKLVBBU1MgZmlsZUlucHV0LmZpbGVzWzBdLmZpbGVTaXplIGlzIDE0NzYKIERyYWdnaW5nIGEg
ZGlyZWN0b3J5IG9udG8gYW4gZmlsZSBpbnB1dCBjb250cm9sOgogRkFJTCBmaWxlSW5wdXQudmFs
dWUgc2hvdWxkIGJlIC4gV2FzIEM6XGZha2VwYXRoXGRpcmVjdG9yeS1mb3ItZHJhZ2dpbmcuCiBG
QUlMIGZpbGVJbnB1dC5maWxlcy5sZW5ndGggc2hvdWxkIGJlIDAuIFdhcyAxLgpAQCAtMzgsMTgg
KzM0LDEyIEBAIFBBU1MgZmlsZUlucHV0LmZpbGVzLmxlbmd0aCBpcyAzCiBQQVNTIGZpbGVJbnB1
dC5maWxlc1swXS5uYW1lIGlzICJhcHBsZS5naWYiCiBQQVNTIGZpbGVJbnB1dC5maWxlc1swXS50
eXBlIGlzICJpbWFnZS9naWYiCiBQQVNTIGZpbGVJbnB1dC5maWxlc1swXS5zaXplIGlzIDE0NzYK
LVBBU1MgZmlsZUlucHV0LmZpbGVzWzBdLmZpbGVOYW1lIGlzICJhcHBsZS5naWYiCi1QQVNTIGZp
bGVJbnB1dC5maWxlc1swXS5maWxlU2l6ZSBpcyAxNDc2CiBQQVNTIGZpbGVJbnB1dC5maWxlc1sx
XS5uYW1lIGlzICJtb3ppbGxhLmdpZiIKIFBBU1MgZmlsZUlucHV0LmZpbGVzWzFdLnR5cGUgaXMg
ImltYWdlL2dpZiIKIFBBU1MgZmlsZUlucHV0LmZpbGVzWzFdLnNpemUgaXMgMjU5MwotUEFTUyBm
aWxlSW5wdXQuZmlsZXNbMV0uZmlsZU5hbWUgaXMgIm1vemlsbGEuZ2lmIgotUEFTUyBmaWxlSW5w
dXQuZmlsZXNbMV0uZmlsZVNpemUgaXMgMjU5MwogUEFTUyBmaWxlSW5wdXQuZmlsZXNbMl0ubmFt
ZSBpcyAiZmlsZS5pbnZhbGlkZXh0IgogUEFTUyBmaWxlSW5wdXQuZmlsZXNbMl0udHlwZSBpcyAi
IgogUEFTUyBmaWxlSW5wdXQuZmlsZXNbMl0uc2l6ZSBpcyAxMAotUEFTUyBmaWxlSW5wdXQuZmls
ZXNbMl0uZmlsZU5hbWUgaXMgImZpbGUuaW52YWxpZGV4dCIKLVBBU1MgZmlsZUlucHV0LmZpbGVz
WzJdLmZpbGVTaXplIGlzIDEwCiBEcmFnZ2luZyBhIGZpbGUgYW5kIGEgZGlyZWN0b3J5IG9udG8g
YSBtdXRsaS1maWxlIGlucHV0IGNvbnRyb2w6CiBGQUlMIGZpbGVJbnB1dC52YWx1ZSBzaG91bGQg
YmUgLiBXYXMgQzpcZmFrZXBhdGhcYXBwbGUuZ2lmLgogRkFJTCBmaWxlSW5wdXQuZmlsZXMubGVu
Z3RoIHNob3VsZCBiZSAwLiBXYXMgMi4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVi
b2FyZC9maWxlLWlucHV0LWZpbGVzLWFjY2Vzcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2VkaXRpbmcvcGFzdGVib2FyZC9maWxlLWlucHV0LWZpbGVzLWFjY2Vzcy5odG1sCShyZXZp
c2lvbiAxMTE0ODcpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZmlsZS1pbnB1
dC1maWxlcy1hY2Nlc3MuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNiw3ICs2LDEyOSBAQAogPGJv
ZHk+CiA8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgot
PHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9maWxlLWlucHV0LWZpbGVzLWFjY2Vzcy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3RzIGZvciBtdWx0aS1maWxlIGRyYWcg
b250byBmaWxlIGlucHV0IGVsZW1lbnRzIGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjU4NjIiKTsKKwordmFyIGZpbGVJbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImlucHV0Iik7CitmaWxlSW5wdXQudHlwZSA9ICdmaWxlJzsKK2ZpbGVJbnB1dC5zdHls
ZS53aWR0aCA9ICIxMDAlIjsgLy8gU28gdGhhdCBhbnkgbWFudWFsIHRlc3Rpbmcgd2lsbCBzaG93
IGZ1bGwgZmlsZSBuYW1lcworLy8gSW1wb3J0YW50IHRoYXQgd2UgcHV0IHRoaXMgYXQgdGhlIHRv
cCBvZiB0aGUgZG9jIHNvIHRoYXQgbG9nZ2luZyBkb2VzIG5vdCBjYXVzZSBpdCB0byBnbyBvdXQg
b2YgdmlldyAod2hlcmUgaXQgY2FuJ3QgYmUgZHJhZ2dlZCB0bykKK2RvY3VtZW50LmJvZHkuaW5z
ZXJ0QmVmb3JlKGZpbGVJbnB1dCwgZG9jdW1lbnQuYm9keS5maXJzdENoaWxkKTsKKworZnVuY3Rp
b24gbW92ZU1vdXNlVG9DZW50ZXJPZkVsZW1lbnQoZWxlbWVudCkKK3sKKyAgICB2YXIgY2VudGVy
WCA9IGVsZW1lbnQub2Zmc2V0TGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGggLyAyOworICAgIHZh
ciBjZW50ZXJZID0gZWxlbWVudC5vZmZzZXRUb3AgKyBlbGVtZW50Lm9mZnNldEhlaWdodCAvIDI7
CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oY2VudGVyWCwgY2VudGVyWSk7Cit9CisKK2Z1
bmN0aW9uIGRyYWdGaWxlc09udG9JbnB1dChmaWxlcykgeworICAgIGZpbGVJbnB1dC52YWx1ZSA9
ICIiOyAvLyBDbGVhciB0aGUgPGlucHV0PgorCisgICAgZXZlbnRTZW5kZXIuYmVnaW5EcmFnV2l0
aEZpbGVzKGZpbGVzKTsKKyAgICBtb3ZlTW91c2VUb0NlbnRlck9mRWxlbWVudChmaWxlSW5wdXQp
OworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKK30KKworZnVuY3Rpb24gZmlsZUxpc3RTaG91
bGRCZShmaWxlTGlzdFN0cmluZywgZmlsZXNBcnJheSkKK3sKKyAgICBzaG91bGRCZShmaWxlTGlz
dFN0cmluZyArICIubGVuZ3RoIiwgIiIgKyBmaWxlc0FycmF5Lmxlbmd0aCk7CisgICAgZm9yICh2
YXIgeCA9IDA7IHggPCBmaWxlc0FycmF5Lmxlbmd0aDsgeCsrKSB7CisgICAgICAgIHZhciBmaWxl
VmFsdWVTdHJpbmcgPSBmaWxlTGlzdFN0cmluZyArICJbIiArIHggKyAiXSI7CisgICAgICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZyhmaWxlVmFsdWVTdHJpbmcgKyAiLm5hbWUiLCBmaWxlc0FycmF5
W3hdWyduYW1lJ10pOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoZmlsZVZhbHVlU3Ry
aW5nICsgIi50eXBlIiwgZmlsZXNBcnJheVt4XVsndHlwZSddKTsKKyAgICAgICAgc2hvdWxkQmUo
ZmlsZVZhbHVlU3RyaW5nICsgIi5zaXplIiwgIiIgKyBmaWxlc0FycmF5W3hdWydzaXplJ10pOwor
ICAgIH0KK30KKworZnVuY3Rpb24gZmlsZXNTaG91bGRCZShmaWxlc0FycmF5KQoreworICAgIGZp
bGVMaXN0U2hvdWxkQmUoImZpbGVJbnB1dC5maWxlcyIsIGZpbGVzQXJyYXkpOworfQorCitmdW5j
dGlvbiBkcmFnZ2luZ1BhdGhzU2hvdWxkUmVzdWx0SW5GaWxlcyhwYXRoc0FycmF5LCBmaWxlc0Fy
cmF5KQoreworICAgIGRyYWdGaWxlc09udG9JbnB1dChwYXRoc0FycmF5KTsKKyAgICAvLyBXZWJL
aXQgc2VlbXMgdG8gYWx3YXlzIHRha2UgdGhlIGZpcnN0IGZpbGUgaW4gdGhlIGRyYWdnZWQgbGlz
dCBhcyAudmFsdWU6CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJmaWxlSW5wdXQudmFsdWUi
LCBmaWxlc0FycmF5WzBdID8gIkM6XFxmYWtlcGF0aFxcIiArIGZpbGVzQXJyYXlbMF1bJ25hbWUn
XSA6ICcnKTsKKyAgICBmaWxlc1Nob3VsZEJlKGZpbGVzQXJyYXkpOworfQorCitmdW5jdGlvbiB0
ZXN0RHJhZ2dpbmdGaWxlcyhmaWxlc0FycmF5KQoreworICAgIC8vIFdlIGNvdWxkIG1ha2UgYSB3
YXkgdG8gcGFyc2UgdGhlIGZpbGVuYW1lIGZyb20gdGhlIHBhdGgsIGFuZCB0aGVuIG9ubHkgbmVl
ZCB0byBwYXNzCisgICAgLy8gdGhlIHBhdGggaW4gdGhlIGZpbGVzQXJyYXkuCisgICAgdmFyIHBh
dGhzT25seSA9IGZpbGVzQXJyYXkubWFwKGZ1bmN0aW9uKGZpbGVTcGVjKSB7IHJldHVybiBmaWxl
U3BlY1sncGF0aCddOyB9KTsKKyAgICBkcmFnZ2luZ1BhdGhzU2hvdWxkUmVzdWx0SW5GaWxlcyhw
YXRoc09ubHksIGZpbGVzQXJyYXkpOworfQorCitmdW5jdGlvbiB0ZXN0T3JkZXJlZERyYWdnaW5n
V2l0aERpcmVjdG9yeSgpCit7CisgICAgdmFyIGlucHV0VHlwZSA9IGZpbGVJbnB1dC5tdWx0aXBs
ZSA/ICJtdXRsaS1maWxlIiA6ICJzaW5nbGUtZmlsZSI7CisKKyAgICAvLyBOb3RlOiBUaGUgb3Jk
ZXIgb2Ygc2VsZWN0aW9uIGluIHRoZSBGaW5kZXIgY2hhbmdlcyB0aGUgb3JkZXIgb2YgZmlsZSBw
YXRocyBpbiB0aGUgcGFzdGVib2FyZAorICAgIC8vIHRodXMgaXQncyBpbXBvcnRhbnQgdGhhdCB3
ZSB0ZXN0IGRpZmZlcmVudCBvcmRlcnMgaGVyZSBhcyB3ZWxsIChhdCBsZWFzdCBvbiB0aGUgTWFj
KQorICAgIGRlYnVnKCJEcmFnZ2luZyBhIGZpbGUgYW5kIGEgZGlyZWN0b3J5IG9udG8gYSAiICsg
aW5wdXRUeXBlICsgIiBpbnB1dCBjb250cm9sOiIpCisgICAgZHJhZ2dpbmdQYXRoc1Nob3VsZFJl
c3VsdEluRmlsZXMoWydyZXNvdXJjZXMvYXBwbGUuZ2lmJywgJ3Jlc291cmNlcy9kaXJlY3Rvcnkt
Zm9yLWRyYWdnaW5nJ10sIFtdKTsKKworICAgIGRlYnVnKCJGSVhNRTogPGlucHV0PiBlbGVtZW50
cyBzaG91bGQgcmVmdXNlIGRyYWdzIGluY2x1ZGluZyBkaXJlY3RvcmllczogaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1ODc5LiAgVGhlIHBhZ2UgaXMgZ2l2ZW4gRmls
ZSBvYmplY3RzIGNvcnJlc3BvbmRpbmcgdG8gZGlyZWN0b3JpZXMsIGJ1dCBmb3JtIHN1Ym1pc3Np
b24gd2lsbCBmYWlsLiIpOworCisgICAgZGVidWcoIkRyYWdnaW5nIGEgZGlyZWN0b3J5IGFuZCBh
IGZpbGUgb250byBhICIgICsgaW5wdXRUeXBlICsgIiBpbnB1dCBjb250cm9sOiIpCisgICAgZHJh
Z2dpbmdQYXRoc1Nob3VsZFJlc3VsdEluRmlsZXMoWydyZXNvdXJjZXMvZGlyZWN0b3J5LWZvci1k
cmFnZ2luZycsICdyZXNvdXJjZXMvYXBwbGUuZ2lmJ10sIFtdKTsKK30KKworZnVuY3Rpb24gcnVu
VGVzdCgpCit7CisgICAgZGVidWcoIkRyYWdnaW5nIGEgc2luZ2xlIChub24tZXhpc3RhbnQpIGZp
bGUgdG8gYSBmaWxlIGlucHV0IGNvbnRyb2w6Iik7CisgICAgdGVzdERyYWdnaW5nRmlsZXMoWwor
ICAgICAgICB7ICdwYXRoJzogJ0RSVEZha2VGaWxlJywgJ25hbWUnIDogJ0RSVEZha2VGaWxlJywg
J3NpemUnIDogMCwgJ3R5cGUnIDogJycgfQorICAgIF0pOworCisgICAgZGVidWcoIkRyYWdnaW5n
IGEgcmVhbCBmaWxlIHRvIGEgZmlsZSBpbnB1dCBjb250cm9sOiIpOworICAgIHRlc3REcmFnZ2lu
Z0ZpbGVzKFsKKyAgICAgICAgeyAncGF0aCc6ICdyZXNvdXJjZXMvYXBwbGUuZ2lmJywgJ25hbWUn
IDogJ2FwcGxlLmdpZicsICdzaXplJyA6IDE0NzYsICd0eXBlJyA6ICdpbWFnZS9naWYnIH0KKyAg
ICBdKTsKKworICAgIC8vIERpcmVjdG9yeSBkcmFnZ2luZyBiZWhhdmlvciBpcyBjb3ZlcmVkIGJ5
CisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1ODUyCisg
ICAgZGVidWcoIkRyYWdnaW5nIGEgZGlyZWN0b3J5IG9udG8gYW4gZmlsZSBpbnB1dCBjb250cm9s
OiIpOworICAgIGRyYWdnaW5nUGF0aHNTaG91bGRSZXN1bHRJbkZpbGVzKFsncmVzb3VyY2VzL2Rp
cmVjdG9yeS1mb3ItZHJhZ2dpbmcnXSwgW10pOworCisgICAgZGVidWcoIkRyYWdnaW5nIHR3byBm
aWxlcyB0byBhIHNpbmdsZS1maWxlIGlucHV0IGNvbnRyb2w6IikKKyAgICBkcmFnZ2luZ1BhdGhz
U2hvdWxkUmVzdWx0SW5GaWxlcyhbJ3Jlc291cmNlcy9hcHBsZS5naWYnLCAncmVzb3VyY2VzL21v
emlsbGEuZ2lmJ10sIFtdKTsKKworICAgIHRlc3RPcmRlcmVkRHJhZ2dpbmdXaXRoRGlyZWN0b3J5
KCk7CisKKyAgICBmaWxlSW5wdXQubXVsdGlwbGUgPSB0cnVlOworCisgICAgZGVidWcoIkRyYWdn
aW5nIHRocmVlIGZpbGVzIHRvIGEgbXVsdGktZmlsZSBpbnB1dCBjb250cm9sOiIpOworICAgIHRl
c3REcmFnZ2luZ0ZpbGVzKFsKKyAgICAgICAgeyAncGF0aCc6ICdyZXNvdXJjZXMvYXBwbGUuZ2lm
JywgJ25hbWUnIDogJ2FwcGxlLmdpZicsICdzaXplJyA6IDE0NzYsICd0eXBlJyA6ICdpbWFnZS9n
aWYnIH0sCisgICAgICAgIHsgJ3BhdGgnOiAncmVzb3VyY2VzL21vemlsbGEuZ2lmJywgJ25hbWUn
IDogJ21vemlsbGEuZ2lmJywgJ3NpemUnIDogMjU5MywgJ3R5cGUnIDogJ2ltYWdlL2dpZicgfSwK
KyAgICAgICAgeyAncGF0aCc6ICdyZXNvdXJjZXMvZmlsZS5pbnZhbGlkZXh0JywgJ25hbWUnIDog
J2ZpbGUuaW52YWxpZGV4dCcsICdzaXplJyA6IDEwLCAndHlwZScgOiAnJyB9CisgICAgXSk7CisK
KyAgICB0ZXN0T3JkZXJlZERyYWdnaW5nV2l0aERpcmVjdG9yeSgpOworCisgICAgZGVidWcoIkRy
YWdnaW5nIHRvIGEgZGlzYWJsZWQgZmlsZSBpbnB1dCBjb250cm9sOiIpOworICAgIGZpbGVJbnB1
dC5kaXNhYmxlZCA9IHRydWU7CisgICAgZHJhZ2dpbmdQYXRoc1Nob3VsZFJlc3VsdEluRmlsZXMo
WydEUlRGYWtlRmlsZSddLCBbXSk7CisKKyAgICAvLyBDbGVhbiB1cCBhZnRlciBvdXJzZWx2ZXMK
KyAgICBmaWxlSW5wdXQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChmaWxlSW5wdXQpOworCisgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCit2YXIgc3VjY2Vzc2Z1bGx5
UGFyc2VkID0gdHJ1ZTsKKworaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgIHJ1blRlc3Qo
KTsKK30gZWxzZSB7CisgICAgdGVzdEZhaWxlZCgiVGhpcyB0ZXN0IGlzIG5vdCBpbnRlcmFjdGl2
ZSwgcGxlYXNlIHJ1biB1c2luZyBydW4td2Via2l0LXRlc3RzIik7Cit9CisKKzwvc2NyaXB0Pgog
PHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3Rl
Ym9hcmQvc2NyaXB0LXRlc3RzL2ZpbGUtaW5wdXQtZmlsZXMtYWNjZXNzLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9zY3JpcHQtdGVzdHMvZmlsZS1pbnB1
dC1maWxlcy1hY2Nlc3MuanMJKHJldmlzaW9uIDExMTQ4NykKKysrIExheW91dFRlc3RzL2VkaXRp
bmcvcGFzdGVib2FyZC9zY3JpcHQtdGVzdHMvZmlsZS1pbnB1dC1maWxlcy1hY2Nlc3MuanMJKHdv
cmtpbmcgY29weSkKQEAgLTEsMTI0ICswLDAgQEAKLWRlc2NyaXB0aW9uKCJUZXN0cyBmb3IgbXVs
dGktZmlsZSBkcmFnIG9udG8gZmlsZSBpbnB1dCBlbGVtZW50cyBmb3IgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1ODYyIik7Ci0KLXZhciBmaWxlSW5wdXQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOwotZmlsZUlucHV0LnR5cGUgPSAnZmlsZSc7Ci1m
aWxlSW5wdXQuc3R5bGUud2lkdGggPSAiMTAwJSI7IC8vIFNvIHRoYXQgYW55IG1hbnVhbCB0ZXN0
aW5nIHdpbGwgc2hvdyBmdWxsIGZpbGUgbmFtZXMKLS8vIEltcG9ydGFudCB0aGF0IHdlIHB1dCB0
aGlzIGF0IHRoZSB0b3Agb2YgdGhlIGRvYyBzbyB0aGF0IGxvZ2dpbmcgZG9lcyBub3QgY2F1c2Ug
aXQgdG8gZ28gb3V0IG9mIHZpZXcgKHdoZXJlIGl0IGNhbid0IGJlIGRyYWdnZWQgdG8pCi1kb2N1
bWVudC5ib2R5Lmluc2VydEJlZm9yZShmaWxlSW5wdXQsIGRvY3VtZW50LmJvZHkuZmlyc3RDaGls
ZCk7Ci0KLWZ1bmN0aW9uIG1vdmVNb3VzZVRvQ2VudGVyT2ZFbGVtZW50KGVsZW1lbnQpCi17Ci0g
ICAgdmFyIGNlbnRlclggPSBlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRo
IC8gMjsKLSAgICB2YXIgY2VudGVyWSA9IGVsZW1lbnQub2Zmc2V0VG9wICsgZWxlbWVudC5vZmZz
ZXRIZWlnaHQgLyAyOwotICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKGNlbnRlclgsIGNlbnRl
clkpOwotfQotCi1mdW5jdGlvbiBkcmFnRmlsZXNPbnRvSW5wdXQoZmlsZXMpIHsKLSAgICBmaWxl
SW5wdXQudmFsdWUgPSAiIjsgLy8gQ2xlYXIgdGhlIDxpbnB1dD4KLQotICAgIGV2ZW50U2VuZGVy
LmJlZ2luRHJhZ1dpdGhGaWxlcyhmaWxlcyk7Ci0gICAgbW92ZU1vdXNlVG9DZW50ZXJPZkVsZW1l
bnQoZmlsZUlucHV0KTsKLSAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7Ci19Ci0KLWZ1bmN0aW9u
IGZpbGVMaXN0U2hvdWxkQmUoZmlsZUxpc3RTdHJpbmcsIGZpbGVzQXJyYXkpCi17Ci0gICAgc2hv
dWxkQmUoZmlsZUxpc3RTdHJpbmcgKyAiLmxlbmd0aCIsICIiICsgZmlsZXNBcnJheS5sZW5ndGgp
OwotICAgIGZvciAodmFyIHggPSAwOyB4IDwgZmlsZXNBcnJheS5sZW5ndGg7IHgrKykgewotICAg
ICAgICB2YXIgZmlsZVZhbHVlU3RyaW5nID0gZmlsZUxpc3RTdHJpbmcgKyAiWyIgKyB4ICsgIl0i
OwotICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoZmlsZVZhbHVlU3RyaW5nICsgIi5uYW1l
IiwgZmlsZXNBcnJheVt4XVsnbmFtZSddKTsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KGZpbGVWYWx1ZVN0cmluZyArICIudHlwZSIsIGZpbGVzQXJyYXlbeF1bJ3R5cGUnXSk7Ci0gICAg
ICAgIHNob3VsZEJlKGZpbGVWYWx1ZVN0cmluZyArICIuc2l6ZSIsICIiICsgZmlsZXNBcnJheVt4
XVsnc2l6ZSddKTsKLQotICAgICAgICAvLyBGSVhNRTogdG8gYmUgcmVtb3ZlZCBhZnRlciBsZWdh
Y3kgYXR0cmlidXRlcyBhcmUgcmVtb3ZlZC4gCi0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZyhmaWxlVmFsdWVTdHJpbmcgKyAiLmZpbGVOYW1lIiwgZmlsZXNBcnJheVt4XVsnbmFtZSddKTsK
LSAgICAgICAgc2hvdWxkQmUoZmlsZVZhbHVlU3RyaW5nICsgIi5maWxlU2l6ZSIsICIiICsgZmls
ZXNBcnJheVt4XVsnc2l6ZSddKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGZpbGVzU2hvdWxkQmUo
ZmlsZXNBcnJheSkKLXsKLSAgICBmaWxlTGlzdFNob3VsZEJlKCJmaWxlSW5wdXQuZmlsZXMiLCBm
aWxlc0FycmF5KTsKLX0KLQotZnVuY3Rpb24gZHJhZ2dpbmdQYXRoc1Nob3VsZFJlc3VsdEluRmls
ZXMocGF0aHNBcnJheSwgZmlsZXNBcnJheSkKLXsKLSAgICBkcmFnRmlsZXNPbnRvSW5wdXQocGF0
aHNBcnJheSk7Ci0gICAgLy8gV2ViS2l0IHNlZW1zIHRvIGFsd2F5cyB0YWtlIHRoZSBmaXJzdCBm
aWxlIGluIHRoZSBkcmFnZ2VkIGxpc3QgYXMgLnZhbHVlOgotICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygiZmlsZUlucHV0LnZhbHVlIiwgZmlsZXNBcnJheVswXSA/ICJDOlxcZmFrZXBhdGhcXCIg
KyBmaWxlc0FycmF5WzBdWyduYW1lJ10gOiAnJyk7Ci0gICAgZmlsZXNTaG91bGRCZShmaWxlc0Fy
cmF5KTsKLX0KLQotZnVuY3Rpb24gdGVzdERyYWdnaW5nRmlsZXMoZmlsZXNBcnJheSkKLXsKLSAg
ICAvLyBXZSBjb3VsZCBtYWtlIGEgd2F5IHRvIHBhcnNlIHRoZSBmaWxlbmFtZSBmcm9tIHRoZSBw
YXRoLCBhbmQgdGhlbiBvbmx5IG5lZWQgdG8gcGFzcwotICAgIC8vIHRoZSBwYXRoIGluIHRoZSBm
aWxlc0FycmF5LgotICAgIHZhciBwYXRoc09ubHkgPSBmaWxlc0FycmF5Lm1hcChmdW5jdGlvbihm
aWxlU3BlYykgeyByZXR1cm4gZmlsZVNwZWNbJ3BhdGgnXTsgfSk7Ci0gICAgZHJhZ2dpbmdQYXRo
c1Nob3VsZFJlc3VsdEluRmlsZXMocGF0aHNPbmx5LCBmaWxlc0FycmF5KTsKLX0KLQotZnVuY3Rp
b24gdGVzdE9yZGVyZWREcmFnZ2luZ1dpdGhEaXJlY3RvcnkoKQotewotICAgIHZhciBpbnB1dFR5
cGUgPSBmaWxlSW5wdXQubXVsdGlwbGUgPyAibXV0bGktZmlsZSIgOiAic2luZ2xlLWZpbGUiOwot
Ci0gICAgLy8gTm90ZTogVGhlIG9yZGVyIG9mIHNlbGVjdGlvbiBpbiB0aGUgRmluZGVyIGNoYW5n
ZXMgdGhlIG9yZGVyIG9mIGZpbGUgcGF0aHMgaW4gdGhlIHBhc3RlYm9hcmQKLSAgICAvLyB0aHVz
IGl0J3MgaW1wb3J0YW50IHRoYXQgd2UgdGVzdCBkaWZmZXJlbnQgb3JkZXJzIGhlcmUgYXMgd2Vs
bCAoYXQgbGVhc3Qgb24gdGhlIE1hYykKLSAgICBkZWJ1ZygiRHJhZ2dpbmcgYSBmaWxlIGFuZCBh
IGRpcmVjdG9yeSBvbnRvIGEgIiArIGlucHV0VHlwZSArICIgaW5wdXQgY29udHJvbDoiKQotICAg
IGRyYWdnaW5nUGF0aHNTaG91bGRSZXN1bHRJbkZpbGVzKFsncmVzb3VyY2VzL2FwcGxlLmdpZics
ICdyZXNvdXJjZXMvZGlyZWN0b3J5LWZvci1kcmFnZ2luZyddLCBbXSk7Ci0KLSAgICBkZWJ1Zygi
RklYTUU6IDxpbnB1dD4gZWxlbWVudHMgc2hvdWxkIHJlZnVzZSBkcmFncyBpbmNsdWRpbmcgZGly
ZWN0b3JpZXM6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTg3OS4g
IFRoZSBwYWdlIGlzIGdpdmVuIEZpbGUgb2JqZWN0cyBjb3JyZXNwb25kaW5nIHRvIGRpcmVjdG9y
aWVzLCBidXQgZm9ybSBzdWJtaXNzaW9uIHdpbGwgZmFpbC4iKTsKLQotICAgIGRlYnVnKCJEcmFn
Z2luZyBhIGRpcmVjdG9yeSBhbmQgYSBmaWxlIG9udG8gYSAiICArIGlucHV0VHlwZSArICIgaW5w
dXQgY29udHJvbDoiKQotICAgIGRyYWdnaW5nUGF0aHNTaG91bGRSZXN1bHRJbkZpbGVzKFsncmVz
b3VyY2VzL2RpcmVjdG9yeS1mb3ItZHJhZ2dpbmcnLCAncmVzb3VyY2VzL2FwcGxlLmdpZiddLCBb
XSk7Ci19Ci0KLWZ1bmN0aW9uIHJ1blRlc3QoKQotewotICAgIGRlYnVnKCJEcmFnZ2luZyBhIHNp
bmdsZSAobm9uLWV4aXN0YW50KSBmaWxlIHRvIGEgZmlsZSBpbnB1dCBjb250cm9sOiIpOwotICAg
IHRlc3REcmFnZ2luZ0ZpbGVzKFsKLSAgICAgICAgeyAncGF0aCc6ICdEUlRGYWtlRmlsZScsICdu
YW1lJyA6ICdEUlRGYWtlRmlsZScsICdzaXplJyA6IDAsICd0eXBlJyA6ICcnIH0KLSAgICBdKTsK
LQotICAgIGRlYnVnKCJEcmFnZ2luZyBhIHJlYWwgZmlsZSB0byBhIGZpbGUgaW5wdXQgY29udHJv
bDoiKTsKLSAgICB0ZXN0RHJhZ2dpbmdGaWxlcyhbCi0gICAgICAgIHsgJ3BhdGgnOiAncmVzb3Vy
Y2VzL2FwcGxlLmdpZicsICduYW1lJyA6ICdhcHBsZS5naWYnLCAnc2l6ZScgOiAxNDc2LCAndHlw
ZScgOiAnaW1hZ2UvZ2lmJyB9Ci0gICAgXSk7Ci0KLSAgICAvLyBEaXJlY3RvcnkgZHJhZ2dpbmcg
YmVoYXZpb3IgaXMgY292ZXJlZCBieQotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yNTg1MgotICAgIGRlYnVnKCJEcmFnZ2luZyBhIGRpcmVjdG9yeSBvbnRv
IGFuIGZpbGUgaW5wdXQgY29udHJvbDoiKTsKLSAgICBkcmFnZ2luZ1BhdGhzU2hvdWxkUmVzdWx0
SW5GaWxlcyhbJ3Jlc291cmNlcy9kaXJlY3RvcnktZm9yLWRyYWdnaW5nJ10sIFtdKTsKLQotICAg
IGRlYnVnKCJEcmFnZ2luZyB0d28gZmlsZXMgdG8gYSBzaW5nbGUtZmlsZSBpbnB1dCBjb250cm9s
OiIpCi0gICAgZHJhZ2dpbmdQYXRoc1Nob3VsZFJlc3VsdEluRmlsZXMoWydyZXNvdXJjZXMvYXBw
bGUuZ2lmJywgJ3Jlc291cmNlcy9tb3ppbGxhLmdpZiddLCBbXSk7Ci0KLSAgICB0ZXN0T3JkZXJl
ZERyYWdnaW5nV2l0aERpcmVjdG9yeSgpOwotCi0gICAgZmlsZUlucHV0Lm11bHRpcGxlID0gdHJ1
ZTsKLQotICAgIGRlYnVnKCJEcmFnZ2luZyB0aHJlZSBmaWxlcyB0byBhIG11bHRpLWZpbGUgaW5w
dXQgY29udHJvbDoiKTsKLSAgICB0ZXN0RHJhZ2dpbmdGaWxlcyhbCi0gICAgICAgIHsgJ3BhdGgn
OiAncmVzb3VyY2VzL2FwcGxlLmdpZicsICduYW1lJyA6ICdhcHBsZS5naWYnLCAnc2l6ZScgOiAx
NDc2LCAndHlwZScgOiAnaW1hZ2UvZ2lmJyB9LAotICAgICAgICB7ICdwYXRoJzogJ3Jlc291cmNl
cy9tb3ppbGxhLmdpZicsICduYW1lJyA6ICdtb3ppbGxhLmdpZicsICdzaXplJyA6IDI1OTMsICd0
eXBlJyA6ICdpbWFnZS9naWYnIH0sCi0gICAgICAgIHsgJ3BhdGgnOiAncmVzb3VyY2VzL2ZpbGUu
aW52YWxpZGV4dCcsICduYW1lJyA6ICdmaWxlLmludmFsaWRleHQnLCAnc2l6ZScgOiAxMCwgJ3R5
cGUnIDogJycgfQotICAgIF0pOwotCi0gICAgdGVzdE9yZGVyZWREcmFnZ2luZ1dpdGhEaXJlY3Rv
cnkoKTsKLQotICAgIGRlYnVnKCJEcmFnZ2luZyB0byBhIGRpc2FibGVkIGZpbGUgaW5wdXQgY29u
dHJvbDoiKTsKLSAgICBmaWxlSW5wdXQuZGlzYWJsZWQgPSB0cnVlOwotICAgIGRyYWdnaW5nUGF0
aHNTaG91bGRSZXN1bHRJbkZpbGVzKFsnRFJURmFrZUZpbGUnXSwgW10pOwotCi0gICAgLy8gQ2xl
YW4gdXAgYWZ0ZXIgb3Vyc2VsdmVzCi0gICAgZmlsZUlucHV0LnBhcmVudE5vZGUucmVtb3ZlQ2hp
bGQoZmlsZUlucHV0KTsKLQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsK
LX0KLQotdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Ci0KLWlmICh3aW5kb3cuZXZlbnRT
ZW5kZXIpIHsKLSAgICBydW5UZXN0KCk7Ci19IGVsc2UgewotICAgIHRlc3RGYWlsZWQoIlRoaXMg
dGVzdCBpcyBub3QgaW50ZXJhY3RpdmUsIHBsZWFzZSBydW4gdXNpbmcgRHVtcFJlbmRlclRyZWUi
KTsKLX0KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY2xpcGJvYXJkL2Ns
aXBib2FyZC1maWxlLWFjY2Vzcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jbGlwYm9hcmQvY2xpcGJvYXJkLWZpbGUtYWNjZXNzLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMTExNDg3KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9jbGlwYm9hcmQvY2xpcGJvYXJkLWZpbGUtYWNjZXNzLWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMjYsOSArMjYsOSBAQCBQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5maWxl
cy5sZW5ndGggaXMgCiBPbiBkcm9wOgogUEFTUyBldmVudC5kYXRhVHJhbnNmZXIudHlwZXMgY29u
dGFpbnMgRmlsZXMuCiBQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcy5sZW5ndGggaXMgMQot
UEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXNbMF0uZmlsZU5hbWUgaXMgIkRSVEZha2VGaWxl
IgotUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXNbMF0uZmlsZVNpemUgaXMgMAotRklYTUU6
IEZpbGUuZmlsZVNpemUgYWx3YXlzIHJldHVybnMgMCBmb3IgZmlsZXMgZHJvcHBlZCBieSBldmVu
dFNlbmRlci5iZWdpbkRyYWdXaXRoRmlsZXMgZnJvbSBodHRwIHRlc3RzOiAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1OTA5CitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zl
ci5maWxlc1swXS5uYW1lIGlzICJEUlRGYWtlRmlsZSIKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVy
LmZpbGVzWzBdLnNpemUgaXMgMAorRklYTUU6IEZpbGUuc2l6ZSBhbHdheXMgcmV0dXJucyAwIGZv
ciBmaWxlcyBkcm9wcGVkIGJ5IGV2ZW50U2VuZGVyLmJlZ2luRHJhZ1dpdGhGaWxlcyBmcm9tIGh0
dHAgdGVzdHM6ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU5MDkK
IERyYWcgZmlsZXMgb3ZlciBhbiBlbGVtZW50LCBsZWF2ZSB0aGF0IGVsZW1lbnQgYW5kIHJlbGVh
c2UgdGhlIG1vdXNlOgogT24gZHJhZ2VudGVyOgogUEFTUyBldmVudC5kYXRhVHJhbnNmZXIudHlw
ZXMgY29udGFpbnMgRmlsZXMuCkBAIC00OSw4ICs0OSw4IEBAIFBBU1MgZXZlbnQuZGF0YVRyYW5z
ZmVyLmZpbGVzLmxlbmd0aCBpcyAKIE9uIGRyb3A6CiBQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci50
eXBlcyBjb250YWlucyBGaWxlcy4KIFBBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzLmxlbmd0
aCBpcyAxCi1QQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlc1swXS5maWxlTmFtZSBpcyAiYXBw
bGUuZ2lmIgotRkFJTCBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXNbMF0uZmlsZVNpemUgc2hvdWxk
IGJlIDE0NzYuIFdhcyAwLgorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXNbMF0ubmFtZSBp
cyAiYXBwbGUuZ2lmIgorRkFJTCBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXNbMF0uc2l6ZSBzaG91
bGQgYmUgMTQ3Ni4gV2FzIDAuCiBEcmFnIGRyb3AgdHdvIGZpbGVzIG9udG8gYW4gZWxlbWVudDoK
IE9uIGRyYWdlbnRlcjoKIFBBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLnR5cGVzIGNvbnRhaW5zIEZp
bGVzLgpAQCAtNjQsMTAgKzY0LDEwIEBAIFBBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzLmxl
bmd0aCBpcyAKIE9uIGRyb3A6CiBQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci50eXBlcyBjb250YWlu
cyBGaWxlcy4KIFBBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzLmxlbmd0aCBpcyAyCi1QQVNT
IGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlc1swXS5maWxlTmFtZSBpcyAiYXBwbGUuZ2lmIgotRkFJ
TCBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXNbMF0uZmlsZVNpemUgc2hvdWxkIGJlIDE0NzYuIFdh
cyAwLgotUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXNbMV0uZmlsZU5hbWUgaXMgIm1vemls
bGEuZ2lmIgotRkFJTCBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXNbMV0uZmlsZVNpemUgc2hvdWxk
IGJlIDI1OTMuIFdhcyAwLgorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXNbMF0ubmFtZSBp
cyAiYXBwbGUuZ2lmIgorRkFJTCBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXNbMF0uc2l6ZSBzaG91
bGQgYmUgMTQ3Ni4gV2FzIDAuCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlc1sxXS5uYW1l
IGlzICJtb3ppbGxhLmdpZiIKK0ZBSUwgZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzWzFdLnNpemUg
c2hvdWxkIGJlIDI1OTMuIFdhcyAwLgogRHJhZyBkcm9wIHR3byBmaWxlcyBpbiByZXZlcnNlIGFs
cGhhYmV0aWNhbCBvcmRlciBvbnRvIGFuIGVsZW1lbnQ6CiBPbiBkcmFnZW50ZXI6CiBQQVNTIGV2
ZW50LmRhdGFUcmFuc2Zlci50eXBlcyBjb250YWlucyBGaWxlcy4KQEAgLTgxLDEwICs4MSwxMCBA
QCBQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcy5sZW5ndGggaXMgCiBPbiBkcm9wOgogUEFT
UyBldmVudC5kYXRhVHJhbnNmZXIudHlwZXMgY29udGFpbnMgRmlsZXMuCiBQQVNTIGV2ZW50LmRh
dGFUcmFuc2Zlci5maWxlcy5sZW5ndGggaXMgMgotUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZmls
ZXNbMF0uZmlsZU5hbWUgaXMgIm1vemlsbGEuZ2lmIgotRkFJTCBldmVudC5kYXRhVHJhbnNmZXIu
ZmlsZXNbMF0uZmlsZVNpemUgc2hvdWxkIGJlIDI1OTMuIFdhcyAwLgotUEFTUyBldmVudC5kYXRh
VHJhbnNmZXIuZmlsZXNbMV0uZmlsZU5hbWUgaXMgImFwcGxlLmdpZiIKLUZBSUwgZXZlbnQuZGF0
YVRyYW5zZmVyLmZpbGVzWzFdLmZpbGVTaXplIHNob3VsZCBiZSAxNDc2LiBXYXMgMC4KK1BBU1Mg
ZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzWzBdLm5hbWUgaXMgIm1vemlsbGEuZ2lmIgorRkFJTCBl
dmVudC5kYXRhVHJhbnNmZXIuZmlsZXNbMF0uc2l6ZSBzaG91bGQgYmUgMjU5My4gV2FzIDAuCitQ
QVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlc1sxXS5uYW1lIGlzICJhcHBsZS5naWYiCitGQUlM
IGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlc1sxXS5zaXplIHNob3VsZCBiZSAxNDc2LiBXYXMgMC4K
IEZJWE1FOiBXZSBzaG91bGQgbm90IGFsbG93IGVsZW1lbnQgdG8gYWNjZXB0IGRyb3BzIGluY2x1
ZGluZyBkaXJlY3RvcmllcyB1bmxlc3MgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTI1ODc5IGlzIGZpeGVkIHRvIG1ha2UgZGlyZWN0b3J5IEZpbGUgb2JqZWN0cyB1c2Vm
dWwgZnJvbSBKYXZhU2NyaXB0LiAgVGhlIHBhZ2UgaXMgZ2l2ZW4gRmlsZSBvYmplY3RzIGNvcnJl
c3BvbmRpbmcgdG8gZGlyZWN0b3JpZXMsIGJ1dCBmb3JtIHN1Ym1pc3Npb24gYW5kIHhoci5zZW5k
KCkgd2lsbCBmYWlsLgogRHJhZyBkcm9wIGEgZGlyZWN0b3J5IG9udG8gYW4gZWxlbWVudDoKIE9u
IGRyYWdlbnRlcjoKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY2xpcGJv
YXJkL2NsaXBib2FyZC1maWxlLWFjY2Vzcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvY2xpcGJvYXJkL2NsaXBib2FyZC1maWxlLWFjY2Vzcy5odG1s
CShyZXZpc2lvbiAxMTE0ODcpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Ns
aXBib2FyZC9jbGlwYm9hcmQtZmlsZS1hY2Nlc3MuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNiw3
ICs2LDE4MCBAQAogPGJvZHk+CiA8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KIDxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgotPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9jbGlwYm9hcmQtZmlsZS1h
Y2Nlc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0cyBhY2Nlc3Mg
dG8gZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzIGFuZCAudHlwZXMiKTsKKwordmFyIGRyYWdUYXJn
ZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK2RyYWdUYXJnZXQuaW5uZXJIVE1M
ID0gIkRyYWcgaGVyZSIKK2RyYWdUYXJnZXQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gImJsdWUi
OworZHJhZ1RhcmdldC5zdHlsZS53aWR0aCA9ICIxMDBweCI7CitkcmFnVGFyZ2V0LnN0eWxlLmhl
aWdodCA9ICIxMDBweCI7CisvLyBJbXBvcnRhbnQgdGhhdCB3ZSBwdXQgdGhpcyBhdCB0aGUgdG9w
IG9mIHRoZSBkb2Mgc28gdGhhdCBsb2dnaW5nIGRvZXMgbm90IGNhdXNlIGl0IHRvIGdvIG91dCBv
ZiB2aWV3IChhbmQgYmUgdW5kcmFnYWJsZSkKK2RvY3VtZW50LmJvZHkuaW5zZXJ0QmVmb3JlKGRy
YWdUYXJnZXQsIGRvY3VtZW50LmJvZHkuZmlyc3RDaGlsZCk7CisKK3ZhciBmaWxlc1RvRHJhZzsK
K2RyYWdUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigiZHJhZ2VudGVyIiwgZnVuY3Rpb24oKSB7Cisg
ICAgZGVidWcoIk9uIGRyYWdlbnRlcjoiKQorICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZm
ZWN0ID0gImNvcHkiOworICAgIHZhciBzaG91bGRDb250YWluVHlwZSA9IChmaWxlc1RvRHJhZy5s
ZW5ndGggPiAwKTsKKyAgICBjaGVja0ZvckV2ZW50VHJhbnNmZXJUeXBlKGV2ZW50LCAiRmlsZXMi
LCBzaG91bGRDb250YWluVHlwZSk7CisgICAgZmlsZUxpc3RTaG91bGRCZSgiZXZlbnQuZGF0YVRy
YW5zZmVyLmZpbGVzIiwgW10pOworICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7Cit9LCBmYWxz
ZSk7CisKK2RyYWdUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigiZHJhZ292ZXIiLCBmdW5jdGlvbigp
IHsKKyAgICBkZWJ1ZygiT24gZHJhZ292ZXI6IikKKyAgICBldmVudC5kYXRhVHJhbnNmZXIuZHJv
cEVmZmVjdCA9ICJjb3B5IjsKKyAgICB2YXIgc2hvdWxkQ29udGFpblR5cGUgPSAoZmlsZXNUb0Ry
YWcubGVuZ3RoID4gMCk7CisgICAgY2hlY2tGb3JFdmVudFRyYW5zZmVyVHlwZShldmVudCwgIkZp
bGVzIiwgc2hvdWxkQ29udGFpblR5cGUpOworICAgIGZpbGVMaXN0U2hvdWxkQmUoImV2ZW50LmRh
dGFUcmFuc2Zlci5maWxlcyIsIFtdKTsKKyAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworfSwg
ZmFsc2UpOworCitkcmFnVGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoImRyYWdsZWF2ZSIsIGZ1bmN0
aW9uKCkgeworICAgIGRlYnVnKCJPbiBkcmFnbGVhdmU6IikKKyAgICB2YXIgc2hvdWxkQ29udGFp
blR5cGUgPSAoZmlsZXNUb0RyYWcubGVuZ3RoID4gMCk7CisgICAgY2hlY2tGb3JFdmVudFRyYW5z
ZmVyVHlwZShldmVudCwgIkZpbGVzIiwgc2hvdWxkQ29udGFpblR5cGUpOworICAgIGZpbGVMaXN0
U2hvdWxkQmUoImV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcyIsIFtdKTsKK30sIGZhbHNlKTsKKwor
dmFyIGV4cGVjdGVkRmlsZXNPbkRyb3A7CitkcmFnVGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoImRy
b3AiLCBmdW5jdGlvbigpIHsKKyAgICBkZWJ1ZygiT24gZHJvcDoiKQorICAgIHZhciBzaG91bGRD
b250YWluVHlwZSA9IChmaWxlc1RvRHJhZy5sZW5ndGggPiAwKTsKKyAgICBjaGVja0ZvckV2ZW50
VHJhbnNmZXJUeXBlKGV2ZW50LCAiRmlsZXMiLCBzaG91bGRDb250YWluVHlwZSk7CisgICAgZmls
ZUxpc3RTaG91bGRCZSgiZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzIiwgZXhwZWN0ZWRGaWxlc09u
RHJvcCk7CisgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKK30sIGZhbHNlKTsKKworLy8gU29t
ZSB0ZXN0cyBkb24ndCBlbmQgdXAgZHJvcHBpbmcgdGhlIGRyYWdnZWUgb3ZlciB0aGUgZHJhZyB0
YXJnZXQuIENhdGNoIGFueQorLy8gbGVmdG92ZXIgZHJvcCBldmVudHMgYnViYmxpbmcgdXAgdGhy
b3VnaCB0aGUgdHJlZSBzbyB0aGV5IGRvbid0IGNhdXNlIHBhZ2UKKy8vIG5hdmlnYXRpb24uCitk
b2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoImRyYWdvdmVyIiwgZnVuY3Rpb24oKSB7Cisg
ICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKK30pOworCitmdW5jdGlvbiBtb3ZlTW91c2VUb0Nl
bnRlck9mRWxlbWVudChlbGVtZW50KSB7CisgICAgdmFyIGNlbnRlclggPSBlbGVtZW50Lm9mZnNl
dExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoIC8gMjsKKyAgICB2YXIgY2VudGVyWSA9IGVsZW1l
bnQub2Zmc2V0VG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVy
Lm1vdXNlTW92ZVRvKGNlbnRlclgsIGNlbnRlclkpOworfQorCitmdW5jdGlvbiBtb3ZlTW91c2VU
b091dHNpZGVPZkVsZW1lbnQoZWxlbWVudCkgeworICAgIHZhciBvdXRzaWRlWCA9IGVsZW1lbnQu
b2Zmc2V0TGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGggKyA0MjsKKyAgICB2YXIgb3V0c2lkZVkg
PSBlbGVtZW50Lm9mZnNldFRvcCArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0ICsgNDI7CisgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8ob3V0c2lkZVgsIG91dHNpZGVZKTsKK30KKworZnVuY3Rpb24g
ZHJhZ0ZpbGVzT250b0RyYWdUYXJnZXQoZmlsZXMsIGxlYXZlKSB7CisgICAgZmlsZXNUb0RyYWcg
PSBmaWxlczsKKyAgICBldmVudFNlbmRlci5iZWdpbkRyYWdXaXRoRmlsZXMoZmlsZXMpOworICAg
IG1vdmVNb3VzZVRvQ2VudGVyT2ZFbGVtZW50KGRyYWdUYXJnZXQpOworICAgIGlmIChsZWF2ZSAm
JiBsZWF2ZSA9PT0gdHJ1ZSkKKyAgICAgICAgbW92ZU1vdXNlVG9PdXRzaWRlT2ZFbGVtZW50KGRy
YWdUYXJnZXQpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKK30KKworZnVuY3Rpb24gY2hl
Y2tGb3JFdmVudFRyYW5zZmVyVHlwZShldmVudCwgdHlwZVN0cmluZywgc2hvdWxkQ29udGFpblR5
cGUpCit7CisgICAgdmFyIHBhc3NlZENoZWNrOworICAgIHZhciBtZXNzYWdlOworICAgIGlmIChl
dmVudC5kYXRhVHJhbnNmZXIudHlwZXMgJiYgZXZlbnQuZGF0YVRyYW5zZmVyLnR5cGVzLmluZGV4
T2YodHlwZVN0cmluZykgIT0gLTEpIHsKKyAgICAgICAgcGFzc2VkQ2hlY2sgPSBzaG91bGRDb250
YWluVHlwZTsKKyAgICAgICAgbWVzc2FnZSA9ICJldmVudC5kYXRhVHJhbnNmZXIudHlwZXMgY29u
dGFpbnMgIiArIHR5cGVTdHJpbmcgKyAiLiI7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcGFzc2Vk
Q2hlY2sgPSAhc2hvdWxkQ29udGFpblR5cGU7CisgICAgICAgIG1lc3NhZ2UgPSAiZXZlbnQuZGF0
YVRyYW5zZmVyLnR5cGVzIGRvZXMgbm90IGNvbnRhaW4gIiArIHR5cGVTdHJpbmcgKyAiLiI7Cisg
ICAgfQorICAgIGlmIChwYXNzZWRDaGVjaykKKyAgICAgICAgdGVzdFBhc3NlZChtZXNzYWdlKTsK
KyAgICBlbHNlCisgICAgICAgIHRlc3RGYWlsZWQobWVzc2FnZSk7Cit9CisKK2Z1bmN0aW9uIGZp
bGVMaXN0U2hvdWxkQmUoZmlsZUxpc3RTdHJpbmcsIGZpbGVzQXJyYXkpCit7CisgICAgc2hvdWxk
QmUoZmlsZUxpc3RTdHJpbmcgKyAiLmxlbmd0aCIsICIiICsgZmlsZXNBcnJheS5sZW5ndGgpOwor
ICAgIGZvciAodmFyIHggPSAwOyB4IDwgZmlsZXNBcnJheS5sZW5ndGg7IHgrKykgeworICAgICAg
ICB2YXIgZmlsZVZhbHVlU3RyaW5nID0gZmlsZUxpc3RTdHJpbmcgKyAiWyIgKyB4ICsgIl0iOwor
ICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoZmlsZVZhbHVlU3RyaW5nICsgIi5uYW1lIiwg
ZmlsZXNBcnJheVt4XVsnbmFtZSddKTsKKyAgICAgICAgc2hvdWxkQmUoZmlsZVZhbHVlU3RyaW5n
ICsgIi5zaXplIiwgIiIgKyBmaWxlc0FycmF5W3hdWydzaXplJ10pOworICAgIH0KK30KKworZnVu
Y3Rpb24gZHJhZ2dpbmdQYXRoc1Nob3VsZFJlc3VsdEluRmlsZXMocGF0aHNBcnJheSwgZmlsZXNB
cnJheSwgbGVhdmUpCit7CisgICAgZXhwZWN0ZWRGaWxlc09uRHJvcCA9IGZpbGVzQXJyYXk7Cisg
ICAgZHJhZ0ZpbGVzT250b0RyYWdUYXJnZXQocGF0aHNBcnJheSwgbGVhdmUgfHwgZmFsc2UpOwor
fQorCitmdW5jdGlvbiB0ZXN0RHJhZ2dpbmdGaWxlcyhmaWxlc0FycmF5LCBsZWF2ZSkKK3sKKyAg
ICAvLyBXZSBjb3VsZCBtYWtlIGEgd2F5IHRvIHBhcnNlIHRoZSBmaWxlbmFtZSBmcm9tIHRoZSBw
YXRoLCBhbmQgdGhlbiBvbmx5IG5lZWQgdG8gcGFzcworICAgIC8vIHRoZSBwYXRoIGluIHRoZSBm
aWxlc0FycmF5LgorICAgIHZhciBwYXRoc09ubHkgPSBmaWxlc0FycmF5Lm1hcChmdW5jdGlvbihm
aWxlU3BlYykgeyByZXR1cm4gZmlsZVNwZWNbJ3BhdGgnXTsgfSk7CisgICAgZHJhZ2dpbmdQYXRo
c1Nob3VsZFJlc3VsdEluRmlsZXMocGF0aHNPbmx5LCBmaWxlc0FycmF5LCBsZWF2ZSB8fCBmYWxz
ZSk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGRlYnVnKCJEcmFnZ2luZyBubyBm
aWxlcyBzaG91bGQgcmV0dXJuIGFuIGVtcHR5IGZpbGUgbGlzdCAoYXJiaXRyYXJ5IGltcGxlbWVu
dGF0aW9uIGRldGFpbCk6Iik7CisgICAgdGVzdERyYWdnaW5nRmlsZXMoW10pOworCisgICAgZGVi
dWcoIkRyYWcgZHJvcCBhIHNpbmdsZSAobm9uLWV4aXN0YW50KSBmaWxlIG9udG8gYW4gZWxlbWVu
dDoiKTsKKyAgICB0ZXN0RHJhZ2dpbmdGaWxlcyhbCisgICAgICAgIHsgJ3BhdGgnOiAnRFJURmFr
ZUZpbGUnLCAnbmFtZScgOiAnRFJURmFrZUZpbGUnLCAnc2l6ZScgOiAwIH0KKyAgICBdKTsKKwor
ICAgIGRlYnVnKCJGSVhNRTogRmlsZS5maWxlU2l6ZSBhbHdheXMgcmV0dXJucyAwIGZvciBmaWxl
cyBkcm9wcGVkIGJ5IGV2ZW50U2VuZGVyLmJlZ2luRHJhZ1dpdGhGaWxlcyBmcm9tIGh0dHAgdGVz
dHM6ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU5MDkiKTsKKwor
ICAgIGRlYnVnKCJEcmFnIGZpbGVzIG92ZXIgYW4gZWxlbWVudCwgbGVhdmUgdGhhdCBlbGVtZW50
IGFuZCByZWxlYXNlIHRoZSBtb3VzZToiKTsgICAKKyAgICB0ZXN0RHJhZ2dpbmdGaWxlcyhbCisg
ICAgICAgIHsgJ3BhdGgnOiAncmVzb3VyY2VzL2FwcGxlLmdpZicsICduYW1lJyA6ICdhcHBsZS5n
aWYnLCAnc2l6ZScgOiAxNDc2IH0KKyAgICBdLCB0cnVlKTsKKworICAgIGRlYnVnKCJEcmFnIGRy
b3AgYSByZWFsIGZpbGUgb250byBhbiBlbGVtZW50OiIpOworICAgIHRlc3REcmFnZ2luZ0ZpbGVz
KFsKKyAgICAgICAgeyAncGF0aCc6ICdyZXNvdXJjZXMvYXBwbGUuZ2lmJywgJ25hbWUnIDogJ2Fw
cGxlLmdpZicsICdzaXplJyA6IDE0NzYgfQorICAgIF0pOworICAgIAorICAgIGRlYnVnKCJEcmFn
IGRyb3AgdHdvIGZpbGVzIG9udG8gYW4gZWxlbWVudDoiKTsKKyAgICB0ZXN0RHJhZ2dpbmdGaWxl
cyhbCisgICAgICAgIHsgJ3BhdGgnOiAncmVzb3VyY2VzL2FwcGxlLmdpZicsICduYW1lJyA6ICdh
cHBsZS5naWYnLCAnc2l6ZScgOiAxNDc2IH0sCisgICAgICAgIHsgJ3BhdGgnOiAncmVzb3VyY2Vz
L21vemlsbGEuZ2lmJywgJ25hbWUnIDogJ21vemlsbGEuZ2lmJywgJ3NpemUnIDogMjU5MyB9Cisg
ICAgXSk7CisKKyAgICBkZWJ1ZygiRHJhZyBkcm9wIHR3byBmaWxlcyBpbiByZXZlcnNlIGFscGhh
YmV0aWNhbCBvcmRlciBvbnRvIGFuIGVsZW1lbnQ6Iik7CisgICAgdGVzdERyYWdnaW5nRmlsZXMo
WworICAgICAgICB7ICdwYXRoJzogJ3Jlc291cmNlcy9tb3ppbGxhLmdpZicsICduYW1lJyA6ICdt
b3ppbGxhLmdpZicsICdzaXplJyA6IDI1OTMgfSwKKyAgICAgICAgeyAncGF0aCc6ICdyZXNvdXJj
ZXMvYXBwbGUuZ2lmJywgJ25hbWUnIDogJ2FwcGxlLmdpZicsICdzaXplJyA6IDE0NzYgfQorICAg
IF0pOworCisgICAgLy8gRGlyZWN0b3J5IGRyYWdnaW5nIGJlaGF2aW9yIGlzIGNvdmVyZWQgYnkg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1ODUyIGFuZCBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU4NzkKKyAgICBkZWJ1ZygiRklYTUU6
IFdlIHNob3VsZCBub3QgYWxsb3cgZWxlbWVudCB0byBhY2NlcHQgZHJvcHMgaW5jbHVkaW5nIGRp
cmVjdG9yaWVzIHVubGVzcyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjU4NzkgaXMgZml4ZWQgdG8gbWFrZSBkaXJlY3RvcnkgRmlsZSBvYmplY3RzIHVzZWZ1bCBmcm9t
IEphdmFTY3JpcHQuICBUaGUgcGFnZSBpcyBnaXZlbiBGaWxlIG9iamVjdHMgY29ycmVzcG9uZGlu
ZyB0byBkaXJlY3RvcmllcywgYnV0IGZvcm0gc3VibWlzc2lvbiBhbmQgeGhyLnNlbmQoKSB3aWxs
IGZhaWwuIik7CisgICAgZGVidWcoIkRyYWcgZHJvcCBhIGRpcmVjdG9yeSBvbnRvIGFuIGVsZW1l
bnQ6Iik7CisgICAgZHJhZ2dpbmdQYXRoc1Nob3VsZFJlc3VsdEluRmlsZXMoWydyZXNvdXJjZXMv
ZGlyZWN0b3J5LWZvci1kcmFnZ2luZyddLCBbXSk7CisKKyAgICAvLyBOb3RlOiBUaGUgb3JkZXIg
b2Ygc2VsZWN0aW9uIGluIHRoZSBGaW5kZXIgY2hhbmdlcyB0aGUgb3JkZXIgb2YgZmlsZSBwYXRo
cyBpbiB0aGUgcGFzdGVib2FyZAorICAgIC8vIHRodXMgaXQncyBpbXBvcnRhbnQgdGhhdCB3ZSB0
ZXN0IGRpZmZlcmVudCBvcmRlcnMgaGVyZSBhcyB3ZWxsIChhdCBsZWFzdCBvbiB0aGUgTWFjKQor
ICAgIC8vIEJvdGggZHJvcHMgc2hvdWxkIGJlIHJlZnVzZWQgb3Igc3VjY2VlZCBiYXNlZCBvbiBo
b3cgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1ODc5IGlzIHJlc29s
dmVkLiAgQ3VycmVudGx5IHdlIGV4cGVjdCBkcm9wcyB0byBiZSByZWZ1c2VkLgorICAgIGRlYnVn
KCJEcmFnIGRyb3AgYSBmaWxlIGFuZCBhIGRpcmVjdG9yeSBvbnRvIGFuIGVsZW1lbnQ6Iik7Cisg
ICAgZHJhZ2dpbmdQYXRoc1Nob3VsZFJlc3VsdEluRmlsZXMoWydyZXNvdXJjZXMvYXBwbGUuZ2lm
JywgJ3Jlc291cmNlcy9kaXJlY3RvcnktZm9yLWRyYWdnaW5nJ10sIFtdKTsKKworICAgIGRlYnVn
KCJEcmFnIGRyb3AgYSBkaXJlY3RvcnkgYW5kIGEgZmlsZSBvbnRvIGFuIGVsZW1lbnQ6IikKKyAg
ICBkcmFnZ2luZ1BhdGhzU2hvdWxkUmVzdWx0SW5GaWxlcyhbJ3Jlc291cmNlcy9kaXJlY3Rvcnkt
Zm9yLWRyYWdnaW5nJywgJ3Jlc291cmNlcy9hcHBsZS5naWYnXSwgW10pOworfQorCitpZiAod2lu
ZG93LmV2ZW50U2VuZGVyKSB7CisgICAgcnVuVGVzdCgpOworICAgIC8vIENsZWFuIHVwIGFmdGVy
IG91cnNlbHZlcworICAgIGRyYWdUYXJnZXQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChkcmFnVGFy
Z2V0KTsKK30gZWxzZSB7CisgICAgdGVzdEZhaWxlZCgiVGhpcyB0ZXN0IGlzIG5vdCBpbnRlcmFj
dGl2ZSwgcGxlYXNlIHJ1biB1c2luZyBEdW1wUmVuZGVyVHJlZSIpOworfQorCit2YXIgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2pzLXRl
c3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NsaXBib2FyZC9zY3JpcHQt
dGVzdHMvY2xpcGJvYXJkLWZpbGUtYWNjZXNzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvY2xpcGJvYXJkL3NjcmlwdC10ZXN0cy9jbGlwYm9hcmQtZmls
ZS1hY2Nlc3MuanMJKHJldmlzaW9uIDExMTQ4NykKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvY2xpcGJvYXJkL3NjcmlwdC10ZXN0cy9jbGlwYm9hcmQtZmlsZS1hY2Nlc3MuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMTcyICswLDAgQEAKLWRlc2NyaXB0aW9uKCJUZXN0cyBhY2Nl
c3MgdG8gZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzIGFuZCAudHlwZXMiKTsKLQotdmFyIGRyYWdU
YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLWRyYWdUYXJnZXQuaW5uZXJI
VE1MID0gIkRyYWcgaGVyZSIKLWRyYWdUYXJnZXQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gImJs
dWUiOwotZHJhZ1RhcmdldC5zdHlsZS53aWR0aCA9ICIxMDBweCI7Ci1kcmFnVGFyZ2V0LnN0eWxl
LmhlaWdodCA9ICIxMDBweCI7Ci0vLyBJbXBvcnRhbnQgdGhhdCB3ZSBwdXQgdGhpcyBhdCB0aGUg
dG9wIG9mIHRoZSBkb2Mgc28gdGhhdCBsb2dnaW5nIGRvZXMgbm90IGNhdXNlIGl0IHRvIGdvIG91
dCBvZiB2aWV3IChhbmQgYmUgdW5kcmFnYWJsZSkKLWRvY3VtZW50LmJvZHkuaW5zZXJ0QmVmb3Jl
KGRyYWdUYXJnZXQsIGRvY3VtZW50LmJvZHkuZmlyc3RDaGlsZCk7Ci0KLXZhciBmaWxlc1RvRHJh
ZzsKLWRyYWdUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigiZHJhZ2VudGVyIiwgZnVuY3Rpb24oKSB7
Ci0gICAgZGVidWcoIk9uIGRyYWdlbnRlcjoiKQotICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9w
RWZmZWN0ID0gImNvcHkiOwotICAgIHZhciBzaG91bGRDb250YWluVHlwZSA9IChmaWxlc1RvRHJh
Zy5sZW5ndGggPiAwKTsKLSAgICBjaGVja0ZvckV2ZW50VHJhbnNmZXJUeXBlKGV2ZW50LCAiRmls
ZXMiLCBzaG91bGRDb250YWluVHlwZSk7Ci0gICAgZmlsZUxpc3RTaG91bGRCZSgiZXZlbnQuZGF0
YVRyYW5zZmVyLmZpbGVzIiwgW10pOwotICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7Ci19LCBm
YWxzZSk7Ci0KLWRyYWdUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigiZHJhZ292ZXIiLCBmdW5jdGlv
bigpIHsKLSAgICBkZWJ1ZygiT24gZHJhZ292ZXI6IikKLSAgICBldmVudC5kYXRhVHJhbnNmZXIu
ZHJvcEVmZmVjdCA9ICJjb3B5IjsKLSAgICB2YXIgc2hvdWxkQ29udGFpblR5cGUgPSAoZmlsZXNU
b0RyYWcubGVuZ3RoID4gMCk7Ci0gICAgY2hlY2tGb3JFdmVudFRyYW5zZmVyVHlwZShldmVudCwg
IkZpbGVzIiwgc2hvdWxkQ29udGFpblR5cGUpOwotICAgIGZpbGVMaXN0U2hvdWxkQmUoImV2ZW50
LmRhdGFUcmFuc2Zlci5maWxlcyIsIFtdKTsKLSAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwot
fSwgZmFsc2UpOwotCi1kcmFnVGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoImRyYWdsZWF2ZSIsIGZ1
bmN0aW9uKCkgewotICAgIGRlYnVnKCJPbiBkcmFnbGVhdmU6IikKLSAgICB2YXIgc2hvdWxkQ29u
dGFpblR5cGUgPSAoZmlsZXNUb0RyYWcubGVuZ3RoID4gMCk7Ci0gICAgY2hlY2tGb3JFdmVudFRy
YW5zZmVyVHlwZShldmVudCwgIkZpbGVzIiwgc2hvdWxkQ29udGFpblR5cGUpOwotICAgIGZpbGVM
aXN0U2hvdWxkQmUoImV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcyIsIFtdKTsKLX0sIGZhbHNlKTsK
LQotdmFyIGV4cGVjdGVkRmlsZXNPbkRyb3A7Ci1kcmFnVGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIo
ImRyb3AiLCBmdW5jdGlvbigpIHsKLSAgICBkZWJ1ZygiT24gZHJvcDoiKQotICAgIHZhciBzaG91
bGRDb250YWluVHlwZSA9IChmaWxlc1RvRHJhZy5sZW5ndGggPiAwKTsKLSAgICBjaGVja0ZvckV2
ZW50VHJhbnNmZXJUeXBlKGV2ZW50LCAiRmlsZXMiLCBzaG91bGRDb250YWluVHlwZSk7Ci0gICAg
ZmlsZUxpc3RTaG91bGRCZSgiZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzIiwgZXhwZWN0ZWRGaWxl
c09uRHJvcCk7Ci0gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKLX0sIGZhbHNlKTsKLQotLy8g
U29tZSB0ZXN0cyBkb24ndCBlbmQgdXAgZHJvcHBpbmcgdGhlIGRyYWdnZWUgb3ZlciB0aGUgZHJh
ZyB0YXJnZXQuIENhdGNoIGFueQotLy8gbGVmdG92ZXIgZHJvcCBldmVudHMgYnViYmxpbmcgdXAg
dGhyb3VnaCB0aGUgdHJlZSBzbyB0aGV5IGRvbid0IGNhdXNlIHBhZ2UKLS8vIG5hdmlnYXRpb24u
Ci1kb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoImRyYWdvdmVyIiwgZnVuY3Rpb24oKSB7
Ci0gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKLX0pOwotCi1mdW5jdGlvbiBtb3ZlTW91c2VU
b0NlbnRlck9mRWxlbWVudChlbGVtZW50KSB7Ci0gICAgdmFyIGNlbnRlclggPSBlbGVtZW50Lm9m
ZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoIC8gMjsKLSAgICB2YXIgY2VudGVyWSA9IGVs
ZW1lbnQub2Zmc2V0VG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyOwotICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKGNlbnRlclgsIGNlbnRlclkpOwotfQotCi1mdW5jdGlvbiBtb3ZlTW91
c2VUb091dHNpZGVPZkVsZW1lbnQoZWxlbWVudCkgewotICAgIHZhciBvdXRzaWRlWCA9IGVsZW1l
bnQub2Zmc2V0TGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGggKyA0MjsKLSAgICB2YXIgb3V0c2lk
ZVkgPSBlbGVtZW50Lm9mZnNldFRvcCArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0ICsgNDI7Ci0gICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8ob3V0c2lkZVgsIG91dHNpZGVZKTsKLX0KLQotZnVuY3Rp
b24gZHJhZ0ZpbGVzT250b0RyYWdUYXJnZXQoZmlsZXMsIGxlYXZlKSB7Ci0gICAgZmlsZXNUb0Ry
YWcgPSBmaWxlczsKLSAgICBldmVudFNlbmRlci5iZWdpbkRyYWdXaXRoRmlsZXMoZmlsZXMpOwot
ICAgIG1vdmVNb3VzZVRvQ2VudGVyT2ZFbGVtZW50KGRyYWdUYXJnZXQpOwotICAgIGlmIChsZWF2
ZSAmJiBsZWF2ZSA9PT0gdHJ1ZSkKLSAgICAgICAgbW92ZU1vdXNlVG9PdXRzaWRlT2ZFbGVtZW50
KGRyYWdUYXJnZXQpOwotICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKLX0KLQotZnVuY3Rpb24g
Y2hlY2tGb3JFdmVudFRyYW5zZmVyVHlwZShldmVudCwgdHlwZVN0cmluZywgc2hvdWxkQ29udGFp
blR5cGUpCi17Ci0gICAgdmFyIHBhc3NlZENoZWNrOwotICAgIHZhciBtZXNzYWdlOwotICAgIGlm
IChldmVudC5kYXRhVHJhbnNmZXIudHlwZXMgJiYgZXZlbnQuZGF0YVRyYW5zZmVyLnR5cGVzLmlu
ZGV4T2YodHlwZVN0cmluZykgIT0gLTEpIHsKLSAgICAgICAgcGFzc2VkQ2hlY2sgPSBzaG91bGRD
b250YWluVHlwZTsKLSAgICAgICAgbWVzc2FnZSA9ICJldmVudC5kYXRhVHJhbnNmZXIudHlwZXMg
Y29udGFpbnMgIiArIHR5cGVTdHJpbmcgKyAiLiI7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgcGFz
c2VkQ2hlY2sgPSAhc2hvdWxkQ29udGFpblR5cGU7Ci0gICAgICAgIG1lc3NhZ2UgPSAiZXZlbnQu
ZGF0YVRyYW5zZmVyLnR5cGVzIGRvZXMgbm90IGNvbnRhaW4gIiArIHR5cGVTdHJpbmcgKyAiLiI7
Ci0gICAgfQotICAgIGlmIChwYXNzZWRDaGVjaykKLSAgICAgICAgdGVzdFBhc3NlZChtZXNzYWdl
KTsKLSAgICBlbHNlCi0gICAgICAgIHRlc3RGYWlsZWQobWVzc2FnZSk7Ci19Ci0KLWZ1bmN0aW9u
IGZpbGVMaXN0U2hvdWxkQmUoZmlsZUxpc3RTdHJpbmcsIGZpbGVzQXJyYXkpCi17Ci0gICAgc2hv
dWxkQmUoZmlsZUxpc3RTdHJpbmcgKyAiLmxlbmd0aCIsICIiICsgZmlsZXNBcnJheS5sZW5ndGgp
OwotICAgIGZvciAodmFyIHggPSAwOyB4IDwgZmlsZXNBcnJheS5sZW5ndGg7IHgrKykgewotICAg
ICAgICB2YXIgZmlsZVZhbHVlU3RyaW5nID0gZmlsZUxpc3RTdHJpbmcgKyAiWyIgKyB4ICsgIl0i
OwotICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoZmlsZVZhbHVlU3RyaW5nICsgIi5maWxl
TmFtZSIsIGZpbGVzQXJyYXlbeF1bJ25hbWUnXSk7Ci0gICAgICAgIHNob3VsZEJlKGZpbGVWYWx1
ZVN0cmluZyArICIuZmlsZVNpemUiLCAiIiArIGZpbGVzQXJyYXlbeF1bJ3NpemUnXSk7Ci0gICAg
fQotfQotCi1mdW5jdGlvbiBkcmFnZ2luZ1BhdGhzU2hvdWxkUmVzdWx0SW5GaWxlcyhwYXRoc0Fy
cmF5LCBmaWxlc0FycmF5LCBsZWF2ZSkKLXsKLSAgICBleHBlY3RlZEZpbGVzT25Ecm9wID0gZmls
ZXNBcnJheTsKLSAgICBkcmFnRmlsZXNPbnRvRHJhZ1RhcmdldChwYXRoc0FycmF5LCBsZWF2ZSB8
fCBmYWxzZSk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3REcmFnZ2luZ0ZpbGVzKGZpbGVzQXJyYXksIGxl
YXZlKQotewotICAgIC8vIFdlIGNvdWxkIG1ha2UgYSB3YXkgdG8gcGFyc2UgdGhlIGZpbGVuYW1l
IGZyb20gdGhlIHBhdGgsIGFuZCB0aGVuIG9ubHkgbmVlZCB0byBwYXNzCi0gICAgLy8gdGhlIHBh
dGggaW4gdGhlIGZpbGVzQXJyYXkuCi0gICAgdmFyIHBhdGhzT25seSA9IGZpbGVzQXJyYXkubWFw
KGZ1bmN0aW9uKGZpbGVTcGVjKSB7IHJldHVybiBmaWxlU3BlY1sncGF0aCddOyB9KTsKLSAgICBk
cmFnZ2luZ1BhdGhzU2hvdWxkUmVzdWx0SW5GaWxlcyhwYXRoc09ubHksIGZpbGVzQXJyYXksIGxl
YXZlIHx8IGZhbHNlKTsKLX0KLQotZnVuY3Rpb24gcnVuVGVzdCgpCi17Ci0gICAgZGVidWcoIkRy
YWdnaW5nIG5vIGZpbGVzIHNob3VsZCByZXR1cm4gYW4gZW1wdHkgZmlsZSBsaXN0IChhcmJpdHJh
cnkgaW1wbGVtZW50YXRpb24gZGV0YWlsKToiKTsKLSAgICB0ZXN0RHJhZ2dpbmdGaWxlcyhbXSk7
Ci0KLSAgICBkZWJ1ZygiRHJhZyBkcm9wIGEgc2luZ2xlIChub24tZXhpc3RhbnQpIGZpbGUgb250
byBhbiBlbGVtZW50OiIpOwotICAgIHRlc3REcmFnZ2luZ0ZpbGVzKFsKLSAgICAgICAgeyAncGF0
aCc6ICdEUlRGYWtlRmlsZScsICduYW1lJyA6ICdEUlRGYWtlRmlsZScsICdzaXplJyA6IDAgfQot
ICAgIF0pOwotCi0gICAgZGVidWcoIkZJWE1FOiBGaWxlLmZpbGVTaXplIGFsd2F5cyByZXR1cm5z
IDAgZm9yIGZpbGVzIGRyb3BwZWQgYnkgZXZlbnRTZW5kZXIuYmVnaW5EcmFnV2l0aEZpbGVzIGZy
b20gaHR0cCB0ZXN0czogIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
NTkwOSIpOwotCi0gICAgZGVidWcoIkRyYWcgZmlsZXMgb3ZlciBhbiBlbGVtZW50LCBsZWF2ZSB0
aGF0IGVsZW1lbnQgYW5kIHJlbGVhc2UgdGhlIG1vdXNlOiIpOyAgIAotICAgIHRlc3REcmFnZ2lu
Z0ZpbGVzKFsKLSAgICAgICAgeyAncGF0aCc6ICdyZXNvdXJjZXMvYXBwbGUuZ2lmJywgJ25hbWUn
IDogJ2FwcGxlLmdpZicsICdzaXplJyA6IDE0NzYgfQotICAgIF0sIHRydWUpOwotCi0gICAgZGVi
dWcoIkRyYWcgZHJvcCBhIHJlYWwgZmlsZSBvbnRvIGFuIGVsZW1lbnQ6Iik7Ci0gICAgdGVzdERy
YWdnaW5nRmlsZXMoWwotICAgICAgICB7ICdwYXRoJzogJ3Jlc291cmNlcy9hcHBsZS5naWYnLCAn
bmFtZScgOiAnYXBwbGUuZ2lmJywgJ3NpemUnIDogMTQ3NiB9Ci0gICAgXSk7Ci0gICAgCi0gICAg
ZGVidWcoIkRyYWcgZHJvcCB0d28gZmlsZXMgb250byBhbiBlbGVtZW50OiIpOwotICAgIHRlc3RE
cmFnZ2luZ0ZpbGVzKFsKLSAgICAgICAgeyAncGF0aCc6ICdyZXNvdXJjZXMvYXBwbGUuZ2lmJywg
J25hbWUnIDogJ2FwcGxlLmdpZicsICdzaXplJyA6IDE0NzYgfSwKLSAgICAgICAgeyAncGF0aCc6
ICdyZXNvdXJjZXMvbW96aWxsYS5naWYnLCAnbmFtZScgOiAnbW96aWxsYS5naWYnLCAnc2l6ZScg
OiAyNTkzIH0KLSAgICBdKTsKLQotICAgIGRlYnVnKCJEcmFnIGRyb3AgdHdvIGZpbGVzIGluIHJl
dmVyc2UgYWxwaGFiZXRpY2FsIG9yZGVyIG9udG8gYW4gZWxlbWVudDoiKTsKLSAgICB0ZXN0RHJh
Z2dpbmdGaWxlcyhbCi0gICAgICAgIHsgJ3BhdGgnOiAncmVzb3VyY2VzL21vemlsbGEuZ2lmJywg
J25hbWUnIDogJ21vemlsbGEuZ2lmJywgJ3NpemUnIDogMjU5MyB9LAotICAgICAgICB7ICdwYXRo
JzogJ3Jlc291cmNlcy9hcHBsZS5naWYnLCAnbmFtZScgOiAnYXBwbGUuZ2lmJywgJ3NpemUnIDog
MTQ3NiB9Ci0gICAgXSk7Ci0KLSAgICAvLyBEaXJlY3RvcnkgZHJhZ2dpbmcgYmVoYXZpb3IgaXMg
Y292ZXJlZCBieSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU4NTIg
YW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTg3OQotICAgIGRl
YnVnKCJGSVhNRTogV2Ugc2hvdWxkIG5vdCBhbGxvdyBlbGVtZW50IHRvIGFjY2VwdCBkcm9wcyBp
bmNsdWRpbmcgZGlyZWN0b3JpZXMgdW5sZXNzIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yNTg3OSBpcyBmaXhlZCB0byBtYWtlIGRpcmVjdG9yeSBGaWxlIG9iamVjdHMg
dXNlZnVsIGZyb20gSmF2YVNjcmlwdC4gIFRoZSBwYWdlIGlzIGdpdmVuIEZpbGUgb2JqZWN0cyBj
b3JyZXNwb25kaW5nIHRvIGRpcmVjdG9yaWVzLCBidXQgZm9ybSBzdWJtaXNzaW9uIGFuZCB4aHIu
c2VuZCgpIHdpbGwgZmFpbC4iKTsKLSAgICBkZWJ1ZygiRHJhZyBkcm9wIGEgZGlyZWN0b3J5IG9u
dG8gYW4gZWxlbWVudDoiKTsKLSAgICBkcmFnZ2luZ1BhdGhzU2hvdWxkUmVzdWx0SW5GaWxlcyhb
J3Jlc291cmNlcy9kaXJlY3RvcnktZm9yLWRyYWdnaW5nJ10sIFtdKTsKLQotICAgIC8vIE5vdGU6
IFRoZSBvcmRlciBvZiBzZWxlY3Rpb24gaW4gdGhlIEZpbmRlciBjaGFuZ2VzIHRoZSBvcmRlciBv
ZiBmaWxlIHBhdGhzIGluIHRoZSBwYXN0ZWJvYXJkCi0gICAgLy8gdGh1cyBpdCdzIGltcG9ydGFu
dCB0aGF0IHdlIHRlc3QgZGlmZmVyZW50IG9yZGVycyBoZXJlIGFzIHdlbGwgKGF0IGxlYXN0IG9u
IHRoZSBNYWMpCi0gICAgLy8gQm90aCBkcm9wcyBzaG91bGQgYmUgcmVmdXNlZCBvciBzdWNjZWVk
IGJhc2VkIG9uIGhvdyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU4
NzkgaXMgcmVzb2x2ZWQuICBDdXJyZW50bHkgd2UgZXhwZWN0IGRyb3BzIHRvIGJlIHJlZnVzZWQu
Ci0gICAgZGVidWcoIkRyYWcgZHJvcCBhIGZpbGUgYW5kIGEgZGlyZWN0b3J5IG9udG8gYW4gZWxl
bWVudDoiKTsKLSAgICBkcmFnZ2luZ1BhdGhzU2hvdWxkUmVzdWx0SW5GaWxlcyhbJ3Jlc291cmNl
cy9hcHBsZS5naWYnLCAncmVzb3VyY2VzL2RpcmVjdG9yeS1mb3ItZHJhZ2dpbmcnXSwgW10pOwot
Ci0gICAgZGVidWcoIkRyYWcgZHJvcCBhIGRpcmVjdG9yeSBhbmQgYSBmaWxlIG9udG8gYW4gZWxl
bWVudDoiKQotICAgIGRyYWdnaW5nUGF0aHNTaG91bGRSZXN1bHRJbkZpbGVzKFsncmVzb3VyY2Vz
L2RpcmVjdG9yeS1mb3ItZHJhZ2dpbmcnLCAncmVzb3VyY2VzL2FwcGxlLmdpZiddLCBbXSk7Ci19
Ci0KLWlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKLSAgICBydW5UZXN0KCk7Ci0gICAgLy8gQ2xl
YW4gdXAgYWZ0ZXIgb3Vyc2VsdmVzCi0gICAgZHJhZ1RhcmdldC5wYXJlbnROb2RlLnJlbW92ZUNo
aWxkKGRyYWdUYXJnZXQpOwotfSBlbHNlIHsKLSAgICB0ZXN0RmFpbGVkKCJUaGlzIHRlc3QgaXMg
bm90IGludGVyYWN0aXZlLCBwbGVhc2UgcnVuIHVzaW5nIER1bXBSZW5kZXJUcmVlIik7Ci19Ci0K
LXZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwo=
</data>
<flag name="commit-queue"
          id="136780"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132962</attachid>
            <date>2012-03-20 21:03:25 -0700</date>
            <delta_ts>2012-03-20 23:34:44 -0700</delta_ts>
            <desc>spell reviewer name per committers.py, not per Bugzilla name</desc>
            <filename>ObsoleteFileAttributes2.txt</filename>
            <type>text/plain</type>
            <size>37137</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMTQ4NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDEyLTAzLTIwICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBvYnNvbGV0ZSBG
aWxlIGF0dHJpYnV0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc5MzgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSGFqaW1lIE1vcml0YS4KKworICAg
ICAgICAqIGJpbmRpbmdzL29iamMvUHVibGljRE9NSW50ZXJmYWNlcy5oOgorICAgICAgICAqIGZp
bGVhcGkvRmlsZS5oOgorICAgICAgICAqIGZpbGVhcGkvRmlsZS5pZGw6CisgICAgICAgIFJlbW92
ZWQgZmlsZU5hbWUgYW5kIGZpbGVTaXplLCB0aGV5IGhhdmUgZGlmZmVyZW50IG5hbWVzIG5vdy4K
KworICAgICAgICAqIGh0bWwvRmlsZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
aWxlSW5wdXRUeXBlOjphcHBlbmRGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5w
dXRUeXBlOjpnZXRUeXBlU3BlY2lmaWNWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5w
dXRUeXBlOjpkZWZhdWx0VG9vbFRpcCk6CisgICAgICAgIFVwZGF0ZWQgdG8gdXNlIG5ldyBmdW5j
dGlvbiBuYW1lcy4KKwogMjAxMi0wMy0yMCAgVy4gSmFtZXMgTWFjTGVhbiAgPHdqbWFjbGVhbkBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBDb252ZXJ0IFRvdWNoRmxpbmdQbGF0
Zm9ybUdlc3R1cmVDdXJ2ZSB0byBhIDItRCBCZXppZXIgZm9yIGJldHRlciBjb250cm9sIG9mIGN1
cnZlIHNoYXBlLgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9QdWJsaWNET01J
bnRlcmZhY2VzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9Q
dWJsaWNET01JbnRlcmZhY2VzLmgJKHJldmlzaW9uIDExMTQ4NykKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL29iamMvUHVibGljRE9NSW50ZXJmYWNlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NDQsMTAgKzI0NCw2IEBAIEBpbnRlcmZhY2UgRE9NQmxvYiA6IERPTU9iamVjdCBXRUJLSVRfVkUK
IAogQGludGVyZmFjZSBET01GaWxlIDogRE9NQmxvYiBXRUJLSVRfVkVSU0lPTl80XzAKIEBwcm9w
ZXJ0eShyZWFkb25seSwgY29weSkgTlNTdHJpbmcgKm5hbWU7Ci0KLS8vIEZJWE1FOiBvYnNvbGV0
ZSBwcm9wZXJ0aWVzLiBUbyBiZSByZW1vdmVkLgotQHByb3BlcnR5KHJlYWRvbmx5LCBjb3B5KSBO
U1N0cmluZyAqZmlsZU5hbWU7Ci1AcHJvcGVydHkocmVhZG9ubHkpIHVuc2lnbmVkIGxvbmcgbG9u
ZyBmaWxlU2l6ZTsKIEBlbmQKIAogQGludGVyZmFjZSBET01GaWxlTGlzdCA6IERPTU9iamVjdCBX
RUJLSVRfVkVSU0lPTl80XzAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCShyZXZpc2lvbiAxMTE0
ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAt
NzQsMTAgKzc0LDYgQEAgcHVibGljOgogICAgIC8vIE5vdGUgdGhhdCB0aGlzIGludm9sdmVzIHN5
bmNocm9ub3VzIGZpbGUgb3BlcmF0aW9uLiBUaGluayB0d2ljZSBiZWZvcmUgY2FsbGluZyB0aGlz
IGZ1bmN0aW9uLgogICAgIHZvaWQgY2FwdHVyZVNuYXBzaG90KGxvbmcgbG9uZyYgc25hcHNob3RT
aXplLCBkb3VibGUmIHNuYXBzaG90TW9kaWZpY2F0aW9uVGltZSkgY29uc3Q7CiAKLSAgICAvLyBG
SVhNRTogb2Jzb2xldGUgYXR0cmlidXRlcy4gVG8gYmUgcmVtb3ZlZC4KLSAgICBjb25zdCBTdHJp
bmcmIGZpbGVOYW1lKCkgY29uc3QgeyByZXR1cm4gbmFtZSgpOyB9Ci0gICAgdW5zaWduZWQgbG9u
ZyBsb25nIGZpbGVTaXplKCkgY29uc3QgeyByZXR1cm4gc2l6ZSgpOyB9Ci0KIHByaXZhdGU6CiAg
ICAgRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0ZpbGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5p
ZGwJKHJldmlzaW9uIDExMTQ4NykKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTM3LDEwICszNyw2IEBAIG1vZHVsZSBodG1sIHsKICNpZiBkZWZp
bmVkKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEKSAmJiBFTkFCTEVfRElSRUNUT1JZX1VQTE9BRAog
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHdlYmtpdFJlbGF0aXZlUGF0aDsK
ICNlbmRpZgotCi0gICAgICAgIC8vIEZJWE1FOiBvYnNvbGV0ZSBhdHRyaWJ1dGVzLiBUbyBiZSBy
ZW1vdmVkLgotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGZpbGVOYW1lOwot
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsb25nIGZpbGVTaXplOwog
ICAgIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAkocmV2
aXNpb24gMTExNDg3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTQzLDcgKzE0Myw3IEBAIGJvb2wgRmlsZUlucHV0VHlwZTo6YXBw
ZW5kRm9ybURhdGEoRm9ybUQKICAgICAgICAgLy8gc3VibWlzc2lvbiBvZiBmaWxlIGlucHV0cywg
YW5kIEZpcmVmb3ggZG9lc24ndCBhZGQgIm5hbWU9IiBxdWVyeQogICAgICAgICAvLyBwYXJhbWV0
ZXIuCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1GaWxlczsgKytpKQotICAg
ICAgICAgICAgZW5jb2RpbmcuYXBwZW5kRGF0YShlbGVtZW50KCktPm5hbWUoKSwgZmlsZUxpc3Qt
Pml0ZW0oaSktPmZpbGVOYW1lKCkpOworICAgICAgICAgICAgZW5jb2RpbmcuYXBwZW5kRGF0YShl
bGVtZW50KCktPm5hbWUoKSwgZmlsZUxpc3QtPml0ZW0oaSktPm5hbWUoKSk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KIApAQCAtMjQwLDcgKzI0MCw3IEBAIGJvb2wgRmlsZUlucHV0VHlw
ZTo6Z2V0VHlwZVNwZWNpZmljVmFsdWUKICAgICAvLyBkZWNpZGVkIHRvIHRyeSB0byBwYXJzZSB0
aGUgdmFsdWUgYnkgbG9va2luZyBmb3IgYmFja3NsYXNoZXMKICAgICAvLyAoYmVjYXVzZSB0aGF0
J3Mgd2hhdCBXaW5kb3dzIGZpbGUgcGF0aHMgdXNlKS4gVG8gYmUgY29tcGF0aWJsZQogICAgIC8v
IHdpdGggdGhhdCBjb2RlLCB3ZSBtYWtlIHVwIGEgZmFrZSBwYXRoIGZvciB0aGUgZmlsZS4KLSAg
ICB2YWx1ZSA9ICJDOlxcZmFrZXBhdGhcXCIgKyBtX2ZpbGVMaXN0LT5pdGVtKDApLT5maWxlTmFt
ZSgpOworICAgIHZhbHVlID0gIkM6XFxmYWtlcGF0aFxcIiArIG1fZmlsZUxpc3QtPml0ZW0oMCkt
Pm5hbWUoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNDE3LDcgKzQxNyw3IEBAIFN0cmlu
ZyBGaWxlSW5wdXRUeXBlOjpkZWZhdWx0VG9vbFRpcCgpIGMKIAogICAgIFN0cmluZ0J1aWxkZXIg
bmFtZXM7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0U2l6ZTsgKytpKSB7Ci0gICAg
ICAgIG5hbWVzLmFwcGVuZChmaWxlTGlzdC0+aXRlbShpKS0+ZmlsZU5hbWUoKSk7CisgICAgICAg
IG5hbWVzLmFwcGVuZChmaWxlTGlzdC0+aXRlbShpKS0+bmFtZSgpKTsKICAgICAgICAgaWYgKGkg
IT0gbGlzdFNpemUgLSAxKQogICAgICAgICAgICAgbmFtZXMuYXBwZW5kKCdcbicpOwogICAgIH0K
SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDExMTQ4NykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDEyLTAzLTIwICBBbGV4ZXkgUHJvc2t1cnlh
a292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBvYnNvbGV0ZSBGaWxlIGF0dHJp
YnV0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5
MzgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSGFqaW1lIE1vcml0YS4KKworICAgICAgICAqIGVk
aXRpbmcvcGFzdGVib2FyZC9maWxlLWlucHV0LWZpbGVzLWFjY2Vzcy1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2ZpbGUtaW5wdXQtZmlsZXMtYWNjZXNzLmh0bWw6
CisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL3NjcmlwdC10ZXN0cy9maWxlLWlucHV0LWZp
bGVzLWFjY2Vzcy5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2Ns
aXBib2FyZC9jbGlwYm9hcmQtZmlsZS1hY2Nlc3MtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0
dHAvdGVzdHMvc2VjdXJpdHkvY2xpcGJvYXJkL2NsaXBib2FyZC1maWxlLWFjY2Vzcy5odG1sOgor
ICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY2xpcGJvYXJkL3NjcmlwdC10ZXN0cy9jbGlw
Ym9hcmQtZmlsZS1hY2Nlc3MuanM6IFJlbW92ZWQuCisgICAgICAgIFVwZGF0ZWQgdGhlIHRlc3Rz
IHRvIG5vdCB1c2UgcmVtb3ZlZCBhdHRyaWJ1dGVzLCBhbmQgY29uc29saWRhdGVkIGZpbGVzIGZv
ciBlYXNpZXIgYWNjZXNzLgorCiAyMDEyLTAzLTIwICBLZWlzaGkgSGF0dG9yaSAgPGtlaXNoaUB3
ZWJraXQub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gUmViYXNlbGluaW5nIGZvbnQtZmFtaWx5
LXBpY3RvZ3JhcGguaHRtbCBvbiBNYWMuCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3Rl
Ym9hcmQvZmlsZS1pbnB1dC1maWxlcy1hY2Nlc3MtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9maWxlLWlucHV0LWZpbGVzLWFjY2Vzcy1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDExMTQ4NykKKysrIExheW91dFRlc3RzL2VkaXRpbmcvcGFz
dGVib2FyZC9maWxlLWlucHV0LWZpbGVzLWFjY2Vzcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTksMTYgKzksMTIgQEAgUEFTUyBmaWxlSW5wdXQuZmlsZXMubGVuZ3RoIGlzIDEKIFBB
U1MgZmlsZUlucHV0LmZpbGVzWzBdLm5hbWUgaXMgIkRSVEZha2VGaWxlIgogUEFTUyBmaWxlSW5w
dXQuZmlsZXNbMF0udHlwZSBpcyAiIgogUEFTUyBmaWxlSW5wdXQuZmlsZXNbMF0uc2l6ZSBpcyAw
Ci1QQVNTIGZpbGVJbnB1dC5maWxlc1swXS5maWxlTmFtZSBpcyAiRFJURmFrZUZpbGUiCi1QQVNT
IGZpbGVJbnB1dC5maWxlc1swXS5maWxlU2l6ZSBpcyAwCiBEcmFnZ2luZyBhIHJlYWwgZmlsZSB0
byBhIGZpbGUgaW5wdXQgY29udHJvbDoKIFBBU1MgZmlsZUlucHV0LnZhbHVlIGlzICJDOlxcZmFr
ZXBhdGhcXGFwcGxlLmdpZiIKIFBBU1MgZmlsZUlucHV0LmZpbGVzLmxlbmd0aCBpcyAxCiBQQVNT
IGZpbGVJbnB1dC5maWxlc1swXS5uYW1lIGlzICJhcHBsZS5naWYiCiBQQVNTIGZpbGVJbnB1dC5m
aWxlc1swXS50eXBlIGlzICJpbWFnZS9naWYiCiBQQVNTIGZpbGVJbnB1dC5maWxlc1swXS5zaXpl
IGlzIDE0NzYKLVBBU1MgZmlsZUlucHV0LmZpbGVzWzBdLmZpbGVOYW1lIGlzICJhcHBsZS5naWYi
Ci1QQVNTIGZpbGVJbnB1dC5maWxlc1swXS5maWxlU2l6ZSBpcyAxNDc2CiBEcmFnZ2luZyBhIGRp
cmVjdG9yeSBvbnRvIGFuIGZpbGUgaW5wdXQgY29udHJvbDoKIEZBSUwgZmlsZUlucHV0LnZhbHVl
IHNob3VsZCBiZSAuIFdhcyBDOlxmYWtlcGF0aFxkaXJlY3RvcnktZm9yLWRyYWdnaW5nLgogRkFJ
TCBmaWxlSW5wdXQuZmlsZXMubGVuZ3RoIHNob3VsZCBiZSAwLiBXYXMgMS4KQEAgLTM4LDE4ICsz
NCwxMiBAQCBQQVNTIGZpbGVJbnB1dC5maWxlcy5sZW5ndGggaXMgMwogUEFTUyBmaWxlSW5wdXQu
ZmlsZXNbMF0ubmFtZSBpcyAiYXBwbGUuZ2lmIgogUEFTUyBmaWxlSW5wdXQuZmlsZXNbMF0udHlw
ZSBpcyAiaW1hZ2UvZ2lmIgogUEFTUyBmaWxlSW5wdXQuZmlsZXNbMF0uc2l6ZSBpcyAxNDc2Ci1Q
QVNTIGZpbGVJbnB1dC5maWxlc1swXS5maWxlTmFtZSBpcyAiYXBwbGUuZ2lmIgotUEFTUyBmaWxl
SW5wdXQuZmlsZXNbMF0uZmlsZVNpemUgaXMgMTQ3NgogUEFTUyBmaWxlSW5wdXQuZmlsZXNbMV0u
bmFtZSBpcyAibW96aWxsYS5naWYiCiBQQVNTIGZpbGVJbnB1dC5maWxlc1sxXS50eXBlIGlzICJp
bWFnZS9naWYiCiBQQVNTIGZpbGVJbnB1dC5maWxlc1sxXS5zaXplIGlzIDI1OTMKLVBBU1MgZmls
ZUlucHV0LmZpbGVzWzFdLmZpbGVOYW1lIGlzICJtb3ppbGxhLmdpZiIKLVBBU1MgZmlsZUlucHV0
LmZpbGVzWzFdLmZpbGVTaXplIGlzIDI1OTMKIFBBU1MgZmlsZUlucHV0LmZpbGVzWzJdLm5hbWUg
aXMgImZpbGUuaW52YWxpZGV4dCIKIFBBU1MgZmlsZUlucHV0LmZpbGVzWzJdLnR5cGUgaXMgIiIK
IFBBU1MgZmlsZUlucHV0LmZpbGVzWzJdLnNpemUgaXMgMTAKLVBBU1MgZmlsZUlucHV0LmZpbGVz
WzJdLmZpbGVOYW1lIGlzICJmaWxlLmludmFsaWRleHQiCi1QQVNTIGZpbGVJbnB1dC5maWxlc1sy
XS5maWxlU2l6ZSBpcyAxMAogRHJhZ2dpbmcgYSBmaWxlIGFuZCBhIGRpcmVjdG9yeSBvbnRvIGEg
bXV0bGktZmlsZSBpbnB1dCBjb250cm9sOgogRkFJTCBmaWxlSW5wdXQudmFsdWUgc2hvdWxkIGJl
IC4gV2FzIEM6XGZha2VwYXRoXGFwcGxlLmdpZi4KIEZBSUwgZmlsZUlucHV0LmZpbGVzLmxlbmd0
aCBzaG91bGQgYmUgMC4gV2FzIDIuCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9h
cmQvZmlsZS1pbnB1dC1maWxlcy1hY2Nlc3MuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZmlsZS1pbnB1dC1maWxlcy1hY2Nlc3MuaHRtbAkocmV2aXNp
b24gMTExNDg3KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2ZpbGUtaW5wdXQt
ZmlsZXMtYWNjZXNzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTYsNyArNiwxMjkgQEAKIDxib2R5
PgogPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CiA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxz
Y3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvZmlsZS1pbnB1dC1maWxlcy1hY2Nlc3MuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0cyBmb3IgbXVsdGktZmlsZSBkcmFnIG9u
dG8gZmlsZSBpbnB1dCBlbGVtZW50cyBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTI1ODYyIik7CisKK3ZhciBmaWxlSW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJpbnB1dCIpOworZmlsZUlucHV0LnR5cGUgPSAnZmlsZSc7CitmaWxlSW5wdXQuc3R5bGUu
d2lkdGggPSAiMTAwJSI7IC8vIFNvIHRoYXQgYW55IG1hbnVhbCB0ZXN0aW5nIHdpbGwgc2hvdyBm
dWxsIGZpbGUgbmFtZXMKKy8vIEltcG9ydGFudCB0aGF0IHdlIHB1dCB0aGlzIGF0IHRoZSB0b3Ag
b2YgdGhlIGRvYyBzbyB0aGF0IGxvZ2dpbmcgZG9lcyBub3QgY2F1c2UgaXQgdG8gZ28gb3V0IG9m
IHZpZXcgKHdoZXJlIGl0IGNhbid0IGJlIGRyYWdnZWQgdG8pCitkb2N1bWVudC5ib2R5Lmluc2Vy
dEJlZm9yZShmaWxlSW5wdXQsIGRvY3VtZW50LmJvZHkuZmlyc3RDaGlsZCk7CisKK2Z1bmN0aW9u
IG1vdmVNb3VzZVRvQ2VudGVyT2ZFbGVtZW50KGVsZW1lbnQpCit7CisgICAgdmFyIGNlbnRlclgg
PSBlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoIC8gMjsKKyAgICB2YXIg
Y2VudGVyWSA9IGVsZW1lbnQub2Zmc2V0VG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyOwor
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKGNlbnRlclgsIGNlbnRlclkpOworfQorCitmdW5j
dGlvbiBkcmFnRmlsZXNPbnRvSW5wdXQoZmlsZXMpIHsKKyAgICBmaWxlSW5wdXQudmFsdWUgPSAi
IjsgLy8gQ2xlYXIgdGhlIDxpbnB1dD4KKworICAgIGV2ZW50U2VuZGVyLmJlZ2luRHJhZ1dpdGhG
aWxlcyhmaWxlcyk7CisgICAgbW92ZU1vdXNlVG9DZW50ZXJPZkVsZW1lbnQoZmlsZUlucHV0KTsK
KyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7Cit9CisKK2Z1bmN0aW9uIGZpbGVMaXN0U2hvdWxk
QmUoZmlsZUxpc3RTdHJpbmcsIGZpbGVzQXJyYXkpCit7CisgICAgc2hvdWxkQmUoZmlsZUxpc3RT
dHJpbmcgKyAiLmxlbmd0aCIsICIiICsgZmlsZXNBcnJheS5sZW5ndGgpOworICAgIGZvciAodmFy
IHggPSAwOyB4IDwgZmlsZXNBcnJheS5sZW5ndGg7IHgrKykgeworICAgICAgICB2YXIgZmlsZVZh
bHVlU3RyaW5nID0gZmlsZUxpc3RTdHJpbmcgKyAiWyIgKyB4ICsgIl0iOworICAgICAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoZmlsZVZhbHVlU3RyaW5nICsgIi5uYW1lIiwgZmlsZXNBcnJheVt4
XVsnbmFtZSddKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKGZpbGVWYWx1ZVN0cmlu
ZyArICIudHlwZSIsIGZpbGVzQXJyYXlbeF1bJ3R5cGUnXSk7CisgICAgICAgIHNob3VsZEJlKGZp
bGVWYWx1ZVN0cmluZyArICIuc2l6ZSIsICIiICsgZmlsZXNBcnJheVt4XVsnc2l6ZSddKTsKKyAg
ICB9Cit9CisKK2Z1bmN0aW9uIGZpbGVzU2hvdWxkQmUoZmlsZXNBcnJheSkKK3sKKyAgICBmaWxl
TGlzdFNob3VsZEJlKCJmaWxlSW5wdXQuZmlsZXMiLCBmaWxlc0FycmF5KTsKK30KKworZnVuY3Rp
b24gZHJhZ2dpbmdQYXRoc1Nob3VsZFJlc3VsdEluRmlsZXMocGF0aHNBcnJheSwgZmlsZXNBcnJh
eSkKK3sKKyAgICBkcmFnRmlsZXNPbnRvSW5wdXQocGF0aHNBcnJheSk7CisgICAgLy8gV2ViS2l0
IHNlZW1zIHRvIGFsd2F5cyB0YWtlIHRoZSBmaXJzdCBmaWxlIGluIHRoZSBkcmFnZ2VkIGxpc3Qg
YXMgLnZhbHVlOgorICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZmlsZUlucHV0LnZhbHVlIiwg
ZmlsZXNBcnJheVswXSA/ICJDOlxcZmFrZXBhdGhcXCIgKyBmaWxlc0FycmF5WzBdWyduYW1lJ10g
OiAnJyk7CisgICAgZmlsZXNTaG91bGRCZShmaWxlc0FycmF5KTsKK30KKworZnVuY3Rpb24gdGVz
dERyYWdnaW5nRmlsZXMoZmlsZXNBcnJheSkKK3sKKyAgICAvLyBXZSBjb3VsZCBtYWtlIGEgd2F5
IHRvIHBhcnNlIHRoZSBmaWxlbmFtZSBmcm9tIHRoZSBwYXRoLCBhbmQgdGhlbiBvbmx5IG5lZWQg
dG8gcGFzcworICAgIC8vIHRoZSBwYXRoIGluIHRoZSBmaWxlc0FycmF5LgorICAgIHZhciBwYXRo
c09ubHkgPSBmaWxlc0FycmF5Lm1hcChmdW5jdGlvbihmaWxlU3BlYykgeyByZXR1cm4gZmlsZVNw
ZWNbJ3BhdGgnXTsgfSk7CisgICAgZHJhZ2dpbmdQYXRoc1Nob3VsZFJlc3VsdEluRmlsZXMocGF0
aHNPbmx5LCBmaWxlc0FycmF5KTsKK30KKworZnVuY3Rpb24gdGVzdE9yZGVyZWREcmFnZ2luZ1dp
dGhEaXJlY3RvcnkoKQoreworICAgIHZhciBpbnB1dFR5cGUgPSBmaWxlSW5wdXQubXVsdGlwbGUg
PyAibXV0bGktZmlsZSIgOiAic2luZ2xlLWZpbGUiOworCisgICAgLy8gTm90ZTogVGhlIG9yZGVy
IG9mIHNlbGVjdGlvbiBpbiB0aGUgRmluZGVyIGNoYW5nZXMgdGhlIG9yZGVyIG9mIGZpbGUgcGF0
aHMgaW4gdGhlIHBhc3RlYm9hcmQKKyAgICAvLyB0aHVzIGl0J3MgaW1wb3J0YW50IHRoYXQgd2Ug
dGVzdCBkaWZmZXJlbnQgb3JkZXJzIGhlcmUgYXMgd2VsbCAoYXQgbGVhc3Qgb24gdGhlIE1hYykK
KyAgICBkZWJ1ZygiRHJhZ2dpbmcgYSBmaWxlIGFuZCBhIGRpcmVjdG9yeSBvbnRvIGEgIiArIGlu
cHV0VHlwZSArICIgaW5wdXQgY29udHJvbDoiKQorICAgIGRyYWdnaW5nUGF0aHNTaG91bGRSZXN1
bHRJbkZpbGVzKFsncmVzb3VyY2VzL2FwcGxlLmdpZicsICdyZXNvdXJjZXMvZGlyZWN0b3J5LWZv
ci1kcmFnZ2luZyddLCBbXSk7CisKKyAgICBkZWJ1ZygiRklYTUU6IDxpbnB1dD4gZWxlbWVudHMg
c2hvdWxkIHJlZnVzZSBkcmFncyBpbmNsdWRpbmcgZGlyZWN0b3JpZXM6IGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTg3OS4gIFRoZSBwYWdlIGlzIGdpdmVuIEZpbGUg
b2JqZWN0cyBjb3JyZXNwb25kaW5nIHRvIGRpcmVjdG9yaWVzLCBidXQgZm9ybSBzdWJtaXNzaW9u
IHdpbGwgZmFpbC4iKTsKKworICAgIGRlYnVnKCJEcmFnZ2luZyBhIGRpcmVjdG9yeSBhbmQgYSBm
aWxlIG9udG8gYSAiICArIGlucHV0VHlwZSArICIgaW5wdXQgY29udHJvbDoiKQorICAgIGRyYWdn
aW5nUGF0aHNTaG91bGRSZXN1bHRJbkZpbGVzKFsncmVzb3VyY2VzL2RpcmVjdG9yeS1mb3ItZHJh
Z2dpbmcnLCAncmVzb3VyY2VzL2FwcGxlLmdpZiddLCBbXSk7Cit9CisKK2Z1bmN0aW9uIHJ1blRl
c3QoKQoreworICAgIGRlYnVnKCJEcmFnZ2luZyBhIHNpbmdsZSAobm9uLWV4aXN0YW50KSBmaWxl
IHRvIGEgZmlsZSBpbnB1dCBjb250cm9sOiIpOworICAgIHRlc3REcmFnZ2luZ0ZpbGVzKFsKKyAg
ICAgICAgeyAncGF0aCc6ICdEUlRGYWtlRmlsZScsICduYW1lJyA6ICdEUlRGYWtlRmlsZScsICdz
aXplJyA6IDAsICd0eXBlJyA6ICcnIH0KKyAgICBdKTsKKworICAgIGRlYnVnKCJEcmFnZ2luZyBh
IHJlYWwgZmlsZSB0byBhIGZpbGUgaW5wdXQgY29udHJvbDoiKTsKKyAgICB0ZXN0RHJhZ2dpbmdG
aWxlcyhbCisgICAgICAgIHsgJ3BhdGgnOiAncmVzb3VyY2VzL2FwcGxlLmdpZicsICduYW1lJyA6
ICdhcHBsZS5naWYnLCAnc2l6ZScgOiAxNDc2LCAndHlwZScgOiAnaW1hZ2UvZ2lmJyB9CisgICAg
XSk7CisKKyAgICAvLyBEaXJlY3RvcnkgZHJhZ2dpbmcgYmVoYXZpb3IgaXMgY292ZXJlZCBieQor
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTg1MgorICAg
IGRlYnVnKCJEcmFnZ2luZyBhIGRpcmVjdG9yeSBvbnRvIGFuIGZpbGUgaW5wdXQgY29udHJvbDoi
KTsKKyAgICBkcmFnZ2luZ1BhdGhzU2hvdWxkUmVzdWx0SW5GaWxlcyhbJ3Jlc291cmNlcy9kaXJl
Y3RvcnktZm9yLWRyYWdnaW5nJ10sIFtdKTsKKworICAgIGRlYnVnKCJEcmFnZ2luZyB0d28gZmls
ZXMgdG8gYSBzaW5nbGUtZmlsZSBpbnB1dCBjb250cm9sOiIpCisgICAgZHJhZ2dpbmdQYXRoc1No
b3VsZFJlc3VsdEluRmlsZXMoWydyZXNvdXJjZXMvYXBwbGUuZ2lmJywgJ3Jlc291cmNlcy9tb3pp
bGxhLmdpZiddLCBbXSk7CisKKyAgICB0ZXN0T3JkZXJlZERyYWdnaW5nV2l0aERpcmVjdG9yeSgp
OworCisgICAgZmlsZUlucHV0Lm11bHRpcGxlID0gdHJ1ZTsKKworICAgIGRlYnVnKCJEcmFnZ2lu
ZyB0aHJlZSBmaWxlcyB0byBhIG11bHRpLWZpbGUgaW5wdXQgY29udHJvbDoiKTsKKyAgICB0ZXN0
RHJhZ2dpbmdGaWxlcyhbCisgICAgICAgIHsgJ3BhdGgnOiAncmVzb3VyY2VzL2FwcGxlLmdpZics
ICduYW1lJyA6ICdhcHBsZS5naWYnLCAnc2l6ZScgOiAxNDc2LCAndHlwZScgOiAnaW1hZ2UvZ2lm
JyB9LAorICAgICAgICB7ICdwYXRoJzogJ3Jlc291cmNlcy9tb3ppbGxhLmdpZicsICduYW1lJyA6
ICdtb3ppbGxhLmdpZicsICdzaXplJyA6IDI1OTMsICd0eXBlJyA6ICdpbWFnZS9naWYnIH0sCisg
ICAgICAgIHsgJ3BhdGgnOiAncmVzb3VyY2VzL2ZpbGUuaW52YWxpZGV4dCcsICduYW1lJyA6ICdm
aWxlLmludmFsaWRleHQnLCAnc2l6ZScgOiAxMCwgJ3R5cGUnIDogJycgfQorICAgIF0pOworCisg
ICAgdGVzdE9yZGVyZWREcmFnZ2luZ1dpdGhEaXJlY3RvcnkoKTsKKworICAgIGRlYnVnKCJEcmFn
Z2luZyB0byBhIGRpc2FibGVkIGZpbGUgaW5wdXQgY29udHJvbDoiKTsKKyAgICBmaWxlSW5wdXQu
ZGlzYWJsZWQgPSB0cnVlOworICAgIGRyYWdnaW5nUGF0aHNTaG91bGRSZXN1bHRJbkZpbGVzKFsn
RFJURmFrZUZpbGUnXSwgW10pOworCisgICAgLy8gQ2xlYW4gdXAgYWZ0ZXIgb3Vyc2VsdmVzCisg
ICAgZmlsZUlucHV0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZmlsZUlucHV0KTsKKworICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7CisKK2lmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICBydW5UZXN0KCk7
Cit9IGVsc2UgeworICAgIHRlc3RGYWlsZWQoIlRoaXMgdGVzdCBpcyBub3QgaW50ZXJhY3RpdmUs
IHBsZWFzZSBydW4gdXNpbmcgcnVuLXdlYmtpdC10ZXN0cyIpOworfQorCis8L3NjcmlwdD4KIDxz
Y3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgogPC9ib2R5PgogPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJv
YXJkL3NjcmlwdC10ZXN0cy9maWxlLWlucHV0LWZpbGVzLWFjY2Vzcy5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvc2NyaXB0LXRlc3RzL2ZpbGUtaW5wdXQt
ZmlsZXMtYWNjZXNzLmpzCShyZXZpc2lvbiAxMTE0ODcpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5n
L3Bhc3RlYm9hcmQvc2NyaXB0LXRlc3RzL2ZpbGUtaW5wdXQtZmlsZXMtYWNjZXNzLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDEyNCArMCwwIEBACi1kZXNjcmlwdGlvbigiVGVzdHMgZm9yIG11bHRp
LWZpbGUgZHJhZyBvbnRvIGZpbGUgaW5wdXQgZWxlbWVudHMgZm9yIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTg2MiIpOwotCi12YXIgZmlsZUlucHV0ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKLWZpbGVJbnB1dC50eXBlID0gJ2ZpbGUnOwotZmls
ZUlucHV0LnN0eWxlLndpZHRoID0gIjEwMCUiOyAvLyBTbyB0aGF0IGFueSBtYW51YWwgdGVzdGlu
ZyB3aWxsIHNob3cgZnVsbCBmaWxlIG5hbWVzCi0vLyBJbXBvcnRhbnQgdGhhdCB3ZSBwdXQgdGhp
cyBhdCB0aGUgdG9wIG9mIHRoZSBkb2Mgc28gdGhhdCBsb2dnaW5nIGRvZXMgbm90IGNhdXNlIGl0
IHRvIGdvIG91dCBvZiB2aWV3ICh3aGVyZSBpdCBjYW4ndCBiZSBkcmFnZ2VkIHRvKQotZG9jdW1l
bnQuYm9keS5pbnNlcnRCZWZvcmUoZmlsZUlucHV0LCBkb2N1bWVudC5ib2R5LmZpcnN0Q2hpbGQp
OwotCi1mdW5jdGlvbiBtb3ZlTW91c2VUb0NlbnRlck9mRWxlbWVudChlbGVtZW50KQotewotICAg
IHZhciBjZW50ZXJYID0gZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAv
IDI7Ci0gICAgdmFyIGNlbnRlclkgPSBlbGVtZW50Lm9mZnNldFRvcCArIGVsZW1lbnQub2Zmc2V0
SGVpZ2h0IC8gMjsKLSAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhjZW50ZXJYLCBjZW50ZXJZ
KTsKLX0KLQotZnVuY3Rpb24gZHJhZ0ZpbGVzT250b0lucHV0KGZpbGVzKSB7Ci0gICAgZmlsZUlu
cHV0LnZhbHVlID0gIiI7IC8vIENsZWFyIHRoZSA8aW5wdXQ+Ci0KLSAgICBldmVudFNlbmRlci5i
ZWdpbkRyYWdXaXRoRmlsZXMoZmlsZXMpOwotICAgIG1vdmVNb3VzZVRvQ2VudGVyT2ZFbGVtZW50
KGZpbGVJbnB1dCk7Ci0gICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOwotfQotCi1mdW5jdGlvbiBm
aWxlTGlzdFNob3VsZEJlKGZpbGVMaXN0U3RyaW5nLCBmaWxlc0FycmF5KQotewotICAgIHNob3Vs
ZEJlKGZpbGVMaXN0U3RyaW5nICsgIi5sZW5ndGgiLCAiIiArIGZpbGVzQXJyYXkubGVuZ3RoKTsK
LSAgICBmb3IgKHZhciB4ID0gMDsgeCA8IGZpbGVzQXJyYXkubGVuZ3RoOyB4KyspIHsKLSAgICAg
ICAgdmFyIGZpbGVWYWx1ZVN0cmluZyA9IGZpbGVMaXN0U3RyaW5nICsgIlsiICsgeCArICJdIjsK
LSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKGZpbGVWYWx1ZVN0cmluZyArICIubmFtZSIs
IGZpbGVzQXJyYXlbeF1bJ25hbWUnXSk7Ci0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZyhm
aWxlVmFsdWVTdHJpbmcgKyAiLnR5cGUiLCBmaWxlc0FycmF5W3hdWyd0eXBlJ10pOwotICAgICAg
ICBzaG91bGRCZShmaWxlVmFsdWVTdHJpbmcgKyAiLnNpemUiLCAiIiArIGZpbGVzQXJyYXlbeF1b
J3NpemUnXSk7Ci0KLSAgICAgICAgLy8gRklYTUU6IHRvIGJlIHJlbW92ZWQgYWZ0ZXIgbGVnYWN5
IGF0dHJpYnV0ZXMgYXJlIHJlbW92ZWQuIAotICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
ZmlsZVZhbHVlU3RyaW5nICsgIi5maWxlTmFtZSIsIGZpbGVzQXJyYXlbeF1bJ25hbWUnXSk7Ci0g
ICAgICAgIHNob3VsZEJlKGZpbGVWYWx1ZVN0cmluZyArICIuZmlsZVNpemUiLCAiIiArIGZpbGVz
QXJyYXlbeF1bJ3NpemUnXSk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBmaWxlc1Nob3VsZEJlKGZp
bGVzQXJyYXkpCi17Ci0gICAgZmlsZUxpc3RTaG91bGRCZSgiZmlsZUlucHV0LmZpbGVzIiwgZmls
ZXNBcnJheSk7Ci19Ci0KLWZ1bmN0aW9uIGRyYWdnaW5nUGF0aHNTaG91bGRSZXN1bHRJbkZpbGVz
KHBhdGhzQXJyYXksIGZpbGVzQXJyYXkpCi17Ci0gICAgZHJhZ0ZpbGVzT250b0lucHV0KHBhdGhz
QXJyYXkpOwotICAgIC8vIFdlYktpdCBzZWVtcyB0byBhbHdheXMgdGFrZSB0aGUgZmlyc3QgZmls
ZSBpbiB0aGUgZHJhZ2dlZCBsaXN0IGFzIC52YWx1ZToKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoImZpbGVJbnB1dC52YWx1ZSIsIGZpbGVzQXJyYXlbMF0gPyAiQzpcXGZha2VwYXRoXFwiICsg
ZmlsZXNBcnJheVswXVsnbmFtZSddIDogJycpOwotICAgIGZpbGVzU2hvdWxkQmUoZmlsZXNBcnJh
eSk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3REcmFnZ2luZ0ZpbGVzKGZpbGVzQXJyYXkpCi17Ci0gICAg
Ly8gV2UgY291bGQgbWFrZSBhIHdheSB0byBwYXJzZSB0aGUgZmlsZW5hbWUgZnJvbSB0aGUgcGF0
aCwgYW5kIHRoZW4gb25seSBuZWVkIHRvIHBhc3MKLSAgICAvLyB0aGUgcGF0aCBpbiB0aGUgZmls
ZXNBcnJheS4KLSAgICB2YXIgcGF0aHNPbmx5ID0gZmlsZXNBcnJheS5tYXAoZnVuY3Rpb24oZmls
ZVNwZWMpIHsgcmV0dXJuIGZpbGVTcGVjWydwYXRoJ107IH0pOwotICAgIGRyYWdnaW5nUGF0aHNT
aG91bGRSZXN1bHRJbkZpbGVzKHBhdGhzT25seSwgZmlsZXNBcnJheSk7Ci19Ci0KLWZ1bmN0aW9u
IHRlc3RPcmRlcmVkRHJhZ2dpbmdXaXRoRGlyZWN0b3J5KCkKLXsKLSAgICB2YXIgaW5wdXRUeXBl
ID0gZmlsZUlucHV0Lm11bHRpcGxlID8gIm11dGxpLWZpbGUiIDogInNpbmdsZS1maWxlIjsKLQot
ICAgIC8vIE5vdGU6IFRoZSBvcmRlciBvZiBzZWxlY3Rpb24gaW4gdGhlIEZpbmRlciBjaGFuZ2Vz
IHRoZSBvcmRlciBvZiBmaWxlIHBhdGhzIGluIHRoZSBwYXN0ZWJvYXJkCi0gICAgLy8gdGh1cyBp
dCdzIGltcG9ydGFudCB0aGF0IHdlIHRlc3QgZGlmZmVyZW50IG9yZGVycyBoZXJlIGFzIHdlbGwg
KGF0IGxlYXN0IG9uIHRoZSBNYWMpCi0gICAgZGVidWcoIkRyYWdnaW5nIGEgZmlsZSBhbmQgYSBk
aXJlY3Rvcnkgb250byBhICIgKyBpbnB1dFR5cGUgKyAiIGlucHV0IGNvbnRyb2w6IikKLSAgICBk
cmFnZ2luZ1BhdGhzU2hvdWxkUmVzdWx0SW5GaWxlcyhbJ3Jlc291cmNlcy9hcHBsZS5naWYnLCAn
cmVzb3VyY2VzL2RpcmVjdG9yeS1mb3ItZHJhZ2dpbmcnXSwgW10pOwotCi0gICAgZGVidWcoIkZJ
WE1FOiA8aW5wdXQ+IGVsZW1lbnRzIHNob3VsZCByZWZ1c2UgZHJhZ3MgaW5jbHVkaW5nIGRpcmVj
dG9yaWVzOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU4NzkuICBU
aGUgcGFnZSBpcyBnaXZlbiBGaWxlIG9iamVjdHMgY29ycmVzcG9uZGluZyB0byBkaXJlY3Rvcmll
cywgYnV0IGZvcm0gc3VibWlzc2lvbiB3aWxsIGZhaWwuIik7Ci0KLSAgICBkZWJ1ZygiRHJhZ2dp
bmcgYSBkaXJlY3RvcnkgYW5kIGEgZmlsZSBvbnRvIGEgIiAgKyBpbnB1dFR5cGUgKyAiIGlucHV0
IGNvbnRyb2w6IikKLSAgICBkcmFnZ2luZ1BhdGhzU2hvdWxkUmVzdWx0SW5GaWxlcyhbJ3Jlc291
cmNlcy9kaXJlY3RvcnktZm9yLWRyYWdnaW5nJywgJ3Jlc291cmNlcy9hcHBsZS5naWYnXSwgW10p
OwotfQotCi1mdW5jdGlvbiBydW5UZXN0KCkKLXsKLSAgICBkZWJ1ZygiRHJhZ2dpbmcgYSBzaW5n
bGUgKG5vbi1leGlzdGFudCkgZmlsZSB0byBhIGZpbGUgaW5wdXQgY29udHJvbDoiKTsKLSAgICB0
ZXN0RHJhZ2dpbmdGaWxlcyhbCi0gICAgICAgIHsgJ3BhdGgnOiAnRFJURmFrZUZpbGUnLCAnbmFt
ZScgOiAnRFJURmFrZUZpbGUnLCAnc2l6ZScgOiAwLCAndHlwZScgOiAnJyB9Ci0gICAgXSk7Ci0K
LSAgICBkZWJ1ZygiRHJhZ2dpbmcgYSByZWFsIGZpbGUgdG8gYSBmaWxlIGlucHV0IGNvbnRyb2w6
Iik7Ci0gICAgdGVzdERyYWdnaW5nRmlsZXMoWwotICAgICAgICB7ICdwYXRoJzogJ3Jlc291cmNl
cy9hcHBsZS5naWYnLCAnbmFtZScgOiAnYXBwbGUuZ2lmJywgJ3NpemUnIDogMTQ3NiwgJ3R5cGUn
IDogJ2ltYWdlL2dpZicgfQotICAgIF0pOwotCi0gICAgLy8gRGlyZWN0b3J5IGRyYWdnaW5nIGJl
aGF2aW9yIGlzIGNvdmVyZWQgYnkKLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjU4NTIKLSAgICBkZWJ1ZygiRHJhZ2dpbmcgYSBkaXJlY3Rvcnkgb250byBh
biBmaWxlIGlucHV0IGNvbnRyb2w6Iik7Ci0gICAgZHJhZ2dpbmdQYXRoc1Nob3VsZFJlc3VsdElu
RmlsZXMoWydyZXNvdXJjZXMvZGlyZWN0b3J5LWZvci1kcmFnZ2luZyddLCBbXSk7Ci0KLSAgICBk
ZWJ1ZygiRHJhZ2dpbmcgdHdvIGZpbGVzIHRvIGEgc2luZ2xlLWZpbGUgaW5wdXQgY29udHJvbDoi
KQotICAgIGRyYWdnaW5nUGF0aHNTaG91bGRSZXN1bHRJbkZpbGVzKFsncmVzb3VyY2VzL2FwcGxl
LmdpZicsICdyZXNvdXJjZXMvbW96aWxsYS5naWYnXSwgW10pOwotCi0gICAgdGVzdE9yZGVyZWRE
cmFnZ2luZ1dpdGhEaXJlY3RvcnkoKTsKLQotICAgIGZpbGVJbnB1dC5tdWx0aXBsZSA9IHRydWU7
Ci0KLSAgICBkZWJ1ZygiRHJhZ2dpbmcgdGhyZWUgZmlsZXMgdG8gYSBtdWx0aS1maWxlIGlucHV0
IGNvbnRyb2w6Iik7Ci0gICAgdGVzdERyYWdnaW5nRmlsZXMoWwotICAgICAgICB7ICdwYXRoJzog
J3Jlc291cmNlcy9hcHBsZS5naWYnLCAnbmFtZScgOiAnYXBwbGUuZ2lmJywgJ3NpemUnIDogMTQ3
NiwgJ3R5cGUnIDogJ2ltYWdlL2dpZicgfSwKLSAgICAgICAgeyAncGF0aCc6ICdyZXNvdXJjZXMv
bW96aWxsYS5naWYnLCAnbmFtZScgOiAnbW96aWxsYS5naWYnLCAnc2l6ZScgOiAyNTkzLCAndHlw
ZScgOiAnaW1hZ2UvZ2lmJyB9LAotICAgICAgICB7ICdwYXRoJzogJ3Jlc291cmNlcy9maWxlLmlu
dmFsaWRleHQnLCAnbmFtZScgOiAnZmlsZS5pbnZhbGlkZXh0JywgJ3NpemUnIDogMTAsICd0eXBl
JyA6ICcnIH0KLSAgICBdKTsKLQotICAgIHRlc3RPcmRlcmVkRHJhZ2dpbmdXaXRoRGlyZWN0b3J5
KCk7Ci0KLSAgICBkZWJ1ZygiRHJhZ2dpbmcgdG8gYSBkaXNhYmxlZCBmaWxlIGlucHV0IGNvbnRy
b2w6Iik7Ci0gICAgZmlsZUlucHV0LmRpc2FibGVkID0gdHJ1ZTsKLSAgICBkcmFnZ2luZ1BhdGhz
U2hvdWxkUmVzdWx0SW5GaWxlcyhbJ0RSVEZha2VGaWxlJ10sIFtdKTsKLQotICAgIC8vIENsZWFu
IHVwIGFmdGVyIG91cnNlbHZlcwotICAgIGZpbGVJbnB1dC5wYXJlbnROb2RlLnJlbW92ZUNoaWxk
KGZpbGVJbnB1dCk7Ci0KLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci19
Ci0KLXZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwotCi1pZiAod2luZG93LmV2ZW50U2Vu
ZGVyKSB7Ci0gICAgcnVuVGVzdCgpOwotfSBlbHNlIHsKLSAgICB0ZXN0RmFpbGVkKCJUaGlzIHRl
c3QgaXMgbm90IGludGVyYWN0aXZlLCBwbGVhc2UgcnVuIHVzaW5nIER1bXBSZW5kZXJUcmVlIik7
Ci19CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NsaXBib2FyZC9jbGlw
Ym9hcmQtZmlsZS1hY2Nlc3MtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvY2xpcGJvYXJkL2NsaXBib2FyZC1maWxlLWFjY2Vzcy1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDExMTQ4NykKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvY2xpcGJvYXJkL2NsaXBib2FyZC1maWxlLWFjY2Vzcy1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTI2LDkgKzI2LDkgQEAgUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMu
bGVuZ3RoIGlzIAogT24gZHJvcDoKIFBBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLnR5cGVzIGNvbnRh
aW5zIEZpbGVzLgogUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMubGVuZ3RoIGlzIDEKLVBB
U1MgZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzWzBdLmZpbGVOYW1lIGlzICJEUlRGYWtlRmlsZSIK
LVBBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzWzBdLmZpbGVTaXplIGlzIDAKLUZJWE1FOiBG
aWxlLmZpbGVTaXplIGFsd2F5cyByZXR1cm5zIDAgZm9yIGZpbGVzIGRyb3BwZWQgYnkgZXZlbnRT
ZW5kZXIuYmVnaW5EcmFnV2l0aEZpbGVzIGZyb20gaHR0cCB0ZXN0czogIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTkwOQorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIu
ZmlsZXNbMF0ubmFtZSBpcyAiRFJURmFrZUZpbGUiCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5m
aWxlc1swXS5zaXplIGlzIDAKK0ZJWE1FOiBGaWxlLnNpemUgYWx3YXlzIHJldHVybnMgMCBmb3Ig
ZmlsZXMgZHJvcHBlZCBieSBldmVudFNlbmRlci5iZWdpbkRyYWdXaXRoRmlsZXMgZnJvbSBodHRw
IHRlc3RzOiAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1OTA5CiBE
cmFnIGZpbGVzIG92ZXIgYW4gZWxlbWVudCwgbGVhdmUgdGhhdCBlbGVtZW50IGFuZCByZWxlYXNl
IHRoZSBtb3VzZToKIE9uIGRyYWdlbnRlcjoKIFBBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLnR5cGVz
IGNvbnRhaW5zIEZpbGVzLgpAQCAtNDksOCArNDksOCBAQCBQQVNTIGV2ZW50LmRhdGFUcmFuc2Zl
ci5maWxlcy5sZW5ndGggaXMgCiBPbiBkcm9wOgogUEFTUyBldmVudC5kYXRhVHJhbnNmZXIudHlw
ZXMgY29udGFpbnMgRmlsZXMuCiBQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcy5sZW5ndGgg
aXMgMQotUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXNbMF0uZmlsZU5hbWUgaXMgImFwcGxl
LmdpZiIKLUZBSUwgZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzWzBdLmZpbGVTaXplIHNob3VsZCBi
ZSAxNDc2LiBXYXMgMC4KK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzWzBdLm5hbWUgaXMg
ImFwcGxlLmdpZiIKK0ZBSUwgZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzWzBdLnNpemUgc2hvdWxk
IGJlIDE0NzYuIFdhcyAwLgogRHJhZyBkcm9wIHR3byBmaWxlcyBvbnRvIGFuIGVsZW1lbnQ6CiBP
biBkcmFnZW50ZXI6CiBQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci50eXBlcyBjb250YWlucyBGaWxl
cy4KQEAgLTY0LDEwICs2NCwxMCBAQCBQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcy5sZW5n
dGggaXMgCiBPbiBkcm9wOgogUEFTUyBldmVudC5kYXRhVHJhbnNmZXIudHlwZXMgY29udGFpbnMg
RmlsZXMuCiBQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcy5sZW5ndGggaXMgMgotUEFTUyBl
dmVudC5kYXRhVHJhbnNmZXIuZmlsZXNbMF0uZmlsZU5hbWUgaXMgImFwcGxlLmdpZiIKLUZBSUwg
ZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzWzBdLmZpbGVTaXplIHNob3VsZCBiZSAxNDc2LiBXYXMg
MC4KLVBBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzWzFdLmZpbGVOYW1lIGlzICJtb3ppbGxh
LmdpZiIKLUZBSUwgZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzWzFdLmZpbGVTaXplIHNob3VsZCBi
ZSAyNTkzLiBXYXMgMC4KK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzWzBdLm5hbWUgaXMg
ImFwcGxlLmdpZiIKK0ZBSUwgZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzWzBdLnNpemUgc2hvdWxk
IGJlIDE0NzYuIFdhcyAwLgorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXNbMV0ubmFtZSBp
cyAibW96aWxsYS5naWYiCitGQUlMIGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlc1sxXS5zaXplIHNo
b3VsZCBiZSAyNTkzLiBXYXMgMC4KIERyYWcgZHJvcCB0d28gZmlsZXMgaW4gcmV2ZXJzZSBhbHBo
YWJldGljYWwgb3JkZXIgb250byBhbiBlbGVtZW50OgogT24gZHJhZ2VudGVyOgogUEFTUyBldmVu
dC5kYXRhVHJhbnNmZXIudHlwZXMgY29udGFpbnMgRmlsZXMuCkBAIC04MSwxMCArODEsMTAgQEAg
UEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMubGVuZ3RoIGlzIAogT24gZHJvcDoKIFBBU1Mg
ZXZlbnQuZGF0YVRyYW5zZmVyLnR5cGVzIGNvbnRhaW5zIEZpbGVzLgogUEFTUyBldmVudC5kYXRh
VHJhbnNmZXIuZmlsZXMubGVuZ3RoIGlzIDIKLVBBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVz
WzBdLmZpbGVOYW1lIGlzICJtb3ppbGxhLmdpZiIKLUZBSUwgZXZlbnQuZGF0YVRyYW5zZmVyLmZp
bGVzWzBdLmZpbGVTaXplIHNob3VsZCBiZSAyNTkzLiBXYXMgMC4KLVBBU1MgZXZlbnQuZGF0YVRy
YW5zZmVyLmZpbGVzWzFdLmZpbGVOYW1lIGlzICJhcHBsZS5naWYiCi1GQUlMIGV2ZW50LmRhdGFU
cmFuc2Zlci5maWxlc1sxXS5maWxlU2l6ZSBzaG91bGQgYmUgMTQ3Ni4gV2FzIDAuCitQQVNTIGV2
ZW50LmRhdGFUcmFuc2Zlci5maWxlc1swXS5uYW1lIGlzICJtb3ppbGxhLmdpZiIKK0ZBSUwgZXZl
bnQuZGF0YVRyYW5zZmVyLmZpbGVzWzBdLnNpemUgc2hvdWxkIGJlIDI1OTMuIFdhcyAwLgorUEFT
UyBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXNbMV0ubmFtZSBpcyAiYXBwbGUuZ2lmIgorRkFJTCBl
dmVudC5kYXRhVHJhbnNmZXIuZmlsZXNbMV0uc2l6ZSBzaG91bGQgYmUgMTQ3Ni4gV2FzIDAuCiBG
SVhNRTogV2Ugc2hvdWxkIG5vdCBhbGxvdyBlbGVtZW50IHRvIGFjY2VwdCBkcm9wcyBpbmNsdWRp
bmcgZGlyZWN0b3JpZXMgdW5sZXNzIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yNTg3OSBpcyBmaXhlZCB0byBtYWtlIGRpcmVjdG9yeSBGaWxlIG9iamVjdHMgdXNlZnVs
IGZyb20gSmF2YVNjcmlwdC4gIFRoZSBwYWdlIGlzIGdpdmVuIEZpbGUgb2JqZWN0cyBjb3JyZXNw
b25kaW5nIHRvIGRpcmVjdG9yaWVzLCBidXQgZm9ybSBzdWJtaXNzaW9uIGFuZCB4aHIuc2VuZCgp
IHdpbGwgZmFpbC4KIERyYWcgZHJvcCBhIGRpcmVjdG9yeSBvbnRvIGFuIGVsZW1lbnQ6CiBPbiBk
cmFnZW50ZXI6CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NsaXBib2Fy
ZC9jbGlwYm9hcmQtZmlsZS1hY2Nlc3MuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L2NsaXBib2FyZC9jbGlwYm9hcmQtZmlsZS1hY2Nlc3MuaHRtbAko
cmV2aXNpb24gMTExNDg3KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jbGlw
Ym9hcmQvY2xpcGJvYXJkLWZpbGUtYWNjZXNzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTYsNyAr
NiwxODAgQEAKIDxib2R5PgogPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CiA8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KLTxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvY2xpcGJvYXJkLWZpbGUtYWNj
ZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdHMgYWNjZXNzIHRv
IGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcyBhbmQgLnR5cGVzIik7CisKK3ZhciBkcmFnVGFyZ2V0
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CitkcmFnVGFyZ2V0LmlubmVySFRNTCA9
ICJEcmFnIGhlcmUiCitkcmFnVGFyZ2V0LnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICJibHVlIjsK
K2RyYWdUYXJnZXQuc3R5bGUud2lkdGggPSAiMTAwcHgiOworZHJhZ1RhcmdldC5zdHlsZS5oZWln
aHQgPSAiMTAwcHgiOworLy8gSW1wb3J0YW50IHRoYXQgd2UgcHV0IHRoaXMgYXQgdGhlIHRvcCBv
ZiB0aGUgZG9jIHNvIHRoYXQgbG9nZ2luZyBkb2VzIG5vdCBjYXVzZSBpdCB0byBnbyBvdXQgb2Yg
dmlldyAoYW5kIGJlIHVuZHJhZ2FibGUpCitkb2N1bWVudC5ib2R5Lmluc2VydEJlZm9yZShkcmFn
VGFyZ2V0LCBkb2N1bWVudC5ib2R5LmZpcnN0Q2hpbGQpOworCit2YXIgZmlsZXNUb0RyYWc7Citk
cmFnVGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoImRyYWdlbnRlciIsIGZ1bmN0aW9uKCkgeworICAg
IGRlYnVnKCJPbiBkcmFnZW50ZXI6IikKKyAgICBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVj
dCA9ICJjb3B5IjsKKyAgICB2YXIgc2hvdWxkQ29udGFpblR5cGUgPSAoZmlsZXNUb0RyYWcubGVu
Z3RoID4gMCk7CisgICAgY2hlY2tGb3JFdmVudFRyYW5zZmVyVHlwZShldmVudCwgIkZpbGVzIiwg
c2hvdWxkQ29udGFpblR5cGUpOworICAgIGZpbGVMaXN0U2hvdWxkQmUoImV2ZW50LmRhdGFUcmFu
c2Zlci5maWxlcyIsIFtdKTsKKyAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworfSwgZmFsc2Up
OworCitkcmFnVGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoImRyYWdvdmVyIiwgZnVuY3Rpb24oKSB7
CisgICAgZGVidWcoIk9uIGRyYWdvdmVyOiIpCisgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BF
ZmZlY3QgPSAiY29weSI7CisgICAgdmFyIHNob3VsZENvbnRhaW5UeXBlID0gKGZpbGVzVG9EcmFn
Lmxlbmd0aCA+IDApOworICAgIGNoZWNrRm9yRXZlbnRUcmFuc2ZlclR5cGUoZXZlbnQsICJGaWxl
cyIsIHNob3VsZENvbnRhaW5UeXBlKTsKKyAgICBmaWxlTGlzdFNob3VsZEJlKCJldmVudC5kYXRh
VHJhbnNmZXIuZmlsZXMiLCBbXSk7CisgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKK30sIGZh
bHNlKTsKKworZHJhZ1RhcmdldC5hZGRFdmVudExpc3RlbmVyKCJkcmFnbGVhdmUiLCBmdW5jdGlv
bigpIHsKKyAgICBkZWJ1ZygiT24gZHJhZ2xlYXZlOiIpCisgICAgdmFyIHNob3VsZENvbnRhaW5U
eXBlID0gKGZpbGVzVG9EcmFnLmxlbmd0aCA+IDApOworICAgIGNoZWNrRm9yRXZlbnRUcmFuc2Zl
clR5cGUoZXZlbnQsICJGaWxlcyIsIHNob3VsZENvbnRhaW5UeXBlKTsKKyAgICBmaWxlTGlzdFNo
b3VsZEJlKCJldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMiLCBbXSk7Cit9LCBmYWxzZSk7CisKK3Zh
ciBleHBlY3RlZEZpbGVzT25Ecm9wOworZHJhZ1RhcmdldC5hZGRFdmVudExpc3RlbmVyKCJkcm9w
IiwgZnVuY3Rpb24oKSB7CisgICAgZGVidWcoIk9uIGRyb3A6IikKKyAgICB2YXIgc2hvdWxkQ29u
dGFpblR5cGUgPSAoZmlsZXNUb0RyYWcubGVuZ3RoID4gMCk7CisgICAgY2hlY2tGb3JFdmVudFRy
YW5zZmVyVHlwZShldmVudCwgIkZpbGVzIiwgc2hvdWxkQ29udGFpblR5cGUpOworICAgIGZpbGVM
aXN0U2hvdWxkQmUoImV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcyIsIGV4cGVjdGVkRmlsZXNPbkRy
b3ApOworICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7Cit9LCBmYWxzZSk7CisKKy8vIFNvbWUg
dGVzdHMgZG9uJ3QgZW5kIHVwIGRyb3BwaW5nIHRoZSBkcmFnZ2VlIG92ZXIgdGhlIGRyYWcgdGFy
Z2V0LiBDYXRjaCBhbnkKKy8vIGxlZnRvdmVyIGRyb3AgZXZlbnRzIGJ1YmJsaW5nIHVwIHRocm91
Z2ggdGhlIHRyZWUgc28gdGhleSBkb24ndCBjYXVzZSBwYWdlCisvLyBuYXZpZ2F0aW9uLgorZG9j
dW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVyKCJkcmFnb3ZlciIsIGZ1bmN0aW9uKCkgeworICAg
IGV2ZW50LnByZXZlbnREZWZhdWx0KCk7Cit9KTsKKworZnVuY3Rpb24gbW92ZU1vdXNlVG9DZW50
ZXJPZkVsZW1lbnQoZWxlbWVudCkgeworICAgIHZhciBjZW50ZXJYID0gZWxlbWVudC5vZmZzZXRM
ZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAvIDI7CisgICAgdmFyIGNlbnRlclkgPSBlbGVtZW50
Lm9mZnNldFRvcCArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyhjZW50ZXJYLCBjZW50ZXJZKTsKK30KKworZnVuY3Rpb24gbW92ZU1vdXNlVG9P
dXRzaWRlT2ZFbGVtZW50KGVsZW1lbnQpIHsKKyAgICB2YXIgb3V0c2lkZVggPSBlbGVtZW50Lm9m
ZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoICsgNDI7CisgICAgdmFyIG91dHNpZGVZID0g
ZWxlbWVudC5vZmZzZXRUb3AgKyBlbGVtZW50Lm9mZnNldEhlaWdodCArIDQyOworICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKG91dHNpZGVYLCBvdXRzaWRlWSk7Cit9CisKK2Z1bmN0aW9uIGRy
YWdGaWxlc09udG9EcmFnVGFyZ2V0KGZpbGVzLCBsZWF2ZSkgeworICAgIGZpbGVzVG9EcmFnID0g
ZmlsZXM7CisgICAgZXZlbnRTZW5kZXIuYmVnaW5EcmFnV2l0aEZpbGVzKGZpbGVzKTsKKyAgICBt
b3ZlTW91c2VUb0NlbnRlck9mRWxlbWVudChkcmFnVGFyZ2V0KTsKKyAgICBpZiAobGVhdmUgJiYg
bGVhdmUgPT09IHRydWUpCisgICAgICAgIG1vdmVNb3VzZVRvT3V0c2lkZU9mRWxlbWVudChkcmFn
VGFyZ2V0KTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7Cit9CisKK2Z1bmN0aW9uIGNoZWNr
Rm9yRXZlbnRUcmFuc2ZlclR5cGUoZXZlbnQsIHR5cGVTdHJpbmcsIHNob3VsZENvbnRhaW5UeXBl
KQoreworICAgIHZhciBwYXNzZWRDaGVjazsKKyAgICB2YXIgbWVzc2FnZTsKKyAgICBpZiAoZXZl
bnQuZGF0YVRyYW5zZmVyLnR5cGVzICYmIGV2ZW50LmRhdGFUcmFuc2Zlci50eXBlcy5pbmRleE9m
KHR5cGVTdHJpbmcpICE9IC0xKSB7CisgICAgICAgIHBhc3NlZENoZWNrID0gc2hvdWxkQ29udGFp
blR5cGU7CisgICAgICAgIG1lc3NhZ2UgPSAiZXZlbnQuZGF0YVRyYW5zZmVyLnR5cGVzIGNvbnRh
aW5zICIgKyB0eXBlU3RyaW5nICsgIi4iOworICAgIH0gZWxzZSB7CisgICAgICAgIHBhc3NlZENo
ZWNrID0gIXNob3VsZENvbnRhaW5UeXBlOworICAgICAgICBtZXNzYWdlID0gImV2ZW50LmRhdGFU
cmFuc2Zlci50eXBlcyBkb2VzIG5vdCBjb250YWluICIgKyB0eXBlU3RyaW5nICsgIi4iOworICAg
IH0KKyAgICBpZiAocGFzc2VkQ2hlY2spCisgICAgICAgIHRlc3RQYXNzZWQobWVzc2FnZSk7Cisg
ICAgZWxzZQorICAgICAgICB0ZXN0RmFpbGVkKG1lc3NhZ2UpOworfQorCitmdW5jdGlvbiBmaWxl
TGlzdFNob3VsZEJlKGZpbGVMaXN0U3RyaW5nLCBmaWxlc0FycmF5KQoreworICAgIHNob3VsZEJl
KGZpbGVMaXN0U3RyaW5nICsgIi5sZW5ndGgiLCAiIiArIGZpbGVzQXJyYXkubGVuZ3RoKTsKKyAg
ICBmb3IgKHZhciB4ID0gMDsgeCA8IGZpbGVzQXJyYXkubGVuZ3RoOyB4KyspIHsKKyAgICAgICAg
dmFyIGZpbGVWYWx1ZVN0cmluZyA9IGZpbGVMaXN0U3RyaW5nICsgIlsiICsgeCArICJdIjsKKyAg
ICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKGZpbGVWYWx1ZVN0cmluZyArICIubmFtZSIsIGZp
bGVzQXJyYXlbeF1bJ25hbWUnXSk7CisgICAgICAgIHNob3VsZEJlKGZpbGVWYWx1ZVN0cmluZyAr
ICIuc2l6ZSIsICIiICsgZmlsZXNBcnJheVt4XVsnc2l6ZSddKTsKKyAgICB9Cit9CisKK2Z1bmN0
aW9uIGRyYWdnaW5nUGF0aHNTaG91bGRSZXN1bHRJbkZpbGVzKHBhdGhzQXJyYXksIGZpbGVzQXJy
YXksIGxlYXZlKQoreworICAgIGV4cGVjdGVkRmlsZXNPbkRyb3AgPSBmaWxlc0FycmF5OworICAg
IGRyYWdGaWxlc09udG9EcmFnVGFyZ2V0KHBhdGhzQXJyYXksIGxlYXZlIHx8IGZhbHNlKTsKK30K
KworZnVuY3Rpb24gdGVzdERyYWdnaW5nRmlsZXMoZmlsZXNBcnJheSwgbGVhdmUpCit7CisgICAg
Ly8gV2UgY291bGQgbWFrZSBhIHdheSB0byBwYXJzZSB0aGUgZmlsZW5hbWUgZnJvbSB0aGUgcGF0
aCwgYW5kIHRoZW4gb25seSBuZWVkIHRvIHBhc3MKKyAgICAvLyB0aGUgcGF0aCBpbiB0aGUgZmls
ZXNBcnJheS4KKyAgICB2YXIgcGF0aHNPbmx5ID0gZmlsZXNBcnJheS5tYXAoZnVuY3Rpb24oZmls
ZVNwZWMpIHsgcmV0dXJuIGZpbGVTcGVjWydwYXRoJ107IH0pOworICAgIGRyYWdnaW5nUGF0aHNT
aG91bGRSZXN1bHRJbkZpbGVzKHBhdGhzT25seSwgZmlsZXNBcnJheSwgbGVhdmUgfHwgZmFsc2Up
OworfQorCitmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICBkZWJ1ZygiRHJhZ2dpbmcgbm8gZmls
ZXMgc2hvdWxkIHJldHVybiBhbiBlbXB0eSBmaWxlIGxpc3QgKGFyYml0cmFyeSBpbXBsZW1lbnRh
dGlvbiBkZXRhaWwpOiIpOworICAgIHRlc3REcmFnZ2luZ0ZpbGVzKFtdKTsKKworICAgIGRlYnVn
KCJEcmFnIGRyb3AgYSBzaW5nbGUgKG5vbi1leGlzdGFudCkgZmlsZSBvbnRvIGFuIGVsZW1lbnQ6
Iik7CisgICAgdGVzdERyYWdnaW5nRmlsZXMoWworICAgICAgICB7ICdwYXRoJzogJ0RSVEZha2VG
aWxlJywgJ25hbWUnIDogJ0RSVEZha2VGaWxlJywgJ3NpemUnIDogMCB9CisgICAgXSk7CisKKyAg
ICBkZWJ1ZygiRklYTUU6IEZpbGUuZmlsZVNpemUgYWx3YXlzIHJldHVybnMgMCBmb3IgZmlsZXMg
ZHJvcHBlZCBieSBldmVudFNlbmRlci5iZWdpbkRyYWdXaXRoRmlsZXMgZnJvbSBodHRwIHRlc3Rz
OiAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1OTA5Iik7CisKKyAg
ICBkZWJ1ZygiRHJhZyBmaWxlcyBvdmVyIGFuIGVsZW1lbnQsIGxlYXZlIHRoYXQgZWxlbWVudCBh
bmQgcmVsZWFzZSB0aGUgbW91c2U6Iik7ICAgCisgICAgdGVzdERyYWdnaW5nRmlsZXMoWworICAg
ICAgICB7ICdwYXRoJzogJ3Jlc291cmNlcy9hcHBsZS5naWYnLCAnbmFtZScgOiAnYXBwbGUuZ2lm
JywgJ3NpemUnIDogMTQ3NiB9CisgICAgXSwgdHJ1ZSk7CisKKyAgICBkZWJ1ZygiRHJhZyBkcm9w
IGEgcmVhbCBmaWxlIG9udG8gYW4gZWxlbWVudDoiKTsKKyAgICB0ZXN0RHJhZ2dpbmdGaWxlcyhb
CisgICAgICAgIHsgJ3BhdGgnOiAncmVzb3VyY2VzL2FwcGxlLmdpZicsICduYW1lJyA6ICdhcHBs
ZS5naWYnLCAnc2l6ZScgOiAxNDc2IH0KKyAgICBdKTsKKyAgICAKKyAgICBkZWJ1ZygiRHJhZyBk
cm9wIHR3byBmaWxlcyBvbnRvIGFuIGVsZW1lbnQ6Iik7CisgICAgdGVzdERyYWdnaW5nRmlsZXMo
WworICAgICAgICB7ICdwYXRoJzogJ3Jlc291cmNlcy9hcHBsZS5naWYnLCAnbmFtZScgOiAnYXBw
bGUuZ2lmJywgJ3NpemUnIDogMTQ3NiB9LAorICAgICAgICB7ICdwYXRoJzogJ3Jlc291cmNlcy9t
b3ppbGxhLmdpZicsICduYW1lJyA6ICdtb3ppbGxhLmdpZicsICdzaXplJyA6IDI1OTMgfQorICAg
IF0pOworCisgICAgZGVidWcoIkRyYWcgZHJvcCB0d28gZmlsZXMgaW4gcmV2ZXJzZSBhbHBoYWJl
dGljYWwgb3JkZXIgb250byBhbiBlbGVtZW50OiIpOworICAgIHRlc3REcmFnZ2luZ0ZpbGVzKFsK
KyAgICAgICAgeyAncGF0aCc6ICdyZXNvdXJjZXMvbW96aWxsYS5naWYnLCAnbmFtZScgOiAnbW96
aWxsYS5naWYnLCAnc2l6ZScgOiAyNTkzIH0sCisgICAgICAgIHsgJ3BhdGgnOiAncmVzb3VyY2Vz
L2FwcGxlLmdpZicsICduYW1lJyA6ICdhcHBsZS5naWYnLCAnc2l6ZScgOiAxNDc2IH0KKyAgICBd
KTsKKworICAgIC8vIERpcmVjdG9yeSBkcmFnZ2luZyBiZWhhdmlvciBpcyBjb3ZlcmVkIGJ5IGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTg1MiBhbmQgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1ODc5CisgICAgZGVidWcoIkZJWE1FOiBX
ZSBzaG91bGQgbm90IGFsbG93IGVsZW1lbnQgdG8gYWNjZXB0IGRyb3BzIGluY2x1ZGluZyBkaXJl
Y3RvcmllcyB1bmxlc3MgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1
ODc5IGlzIGZpeGVkIHRvIG1ha2UgZGlyZWN0b3J5IEZpbGUgb2JqZWN0cyB1c2VmdWwgZnJvbSBK
YXZhU2NyaXB0LiAgVGhlIHBhZ2UgaXMgZ2l2ZW4gRmlsZSBvYmplY3RzIGNvcnJlc3BvbmRpbmcg
dG8gZGlyZWN0b3JpZXMsIGJ1dCBmb3JtIHN1Ym1pc3Npb24gYW5kIHhoci5zZW5kKCkgd2lsbCBm
YWlsLiIpOworICAgIGRlYnVnKCJEcmFnIGRyb3AgYSBkaXJlY3Rvcnkgb250byBhbiBlbGVtZW50
OiIpOworICAgIGRyYWdnaW5nUGF0aHNTaG91bGRSZXN1bHRJbkZpbGVzKFsncmVzb3VyY2VzL2Rp
cmVjdG9yeS1mb3ItZHJhZ2dpbmcnXSwgW10pOworCisgICAgLy8gTm90ZTogVGhlIG9yZGVyIG9m
IHNlbGVjdGlvbiBpbiB0aGUgRmluZGVyIGNoYW5nZXMgdGhlIG9yZGVyIG9mIGZpbGUgcGF0aHMg
aW4gdGhlIHBhc3RlYm9hcmQKKyAgICAvLyB0aHVzIGl0J3MgaW1wb3J0YW50IHRoYXQgd2UgdGVz
dCBkaWZmZXJlbnQgb3JkZXJzIGhlcmUgYXMgd2VsbCAoYXQgbGVhc3Qgb24gdGhlIE1hYykKKyAg
ICAvLyBCb3RoIGRyb3BzIHNob3VsZCBiZSByZWZ1c2VkIG9yIHN1Y2NlZWQgYmFzZWQgb24gaG93
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTg3OSBpcyByZXNvbHZl
ZC4gIEN1cnJlbnRseSB3ZSBleHBlY3QgZHJvcHMgdG8gYmUgcmVmdXNlZC4KKyAgICBkZWJ1Zygi
RHJhZyBkcm9wIGEgZmlsZSBhbmQgYSBkaXJlY3Rvcnkgb250byBhbiBlbGVtZW50OiIpOworICAg
IGRyYWdnaW5nUGF0aHNTaG91bGRSZXN1bHRJbkZpbGVzKFsncmVzb3VyY2VzL2FwcGxlLmdpZics
ICdyZXNvdXJjZXMvZGlyZWN0b3J5LWZvci1kcmFnZ2luZyddLCBbXSk7CisKKyAgICBkZWJ1Zygi
RHJhZyBkcm9wIGEgZGlyZWN0b3J5IGFuZCBhIGZpbGUgb250byBhbiBlbGVtZW50OiIpCisgICAg
ZHJhZ2dpbmdQYXRoc1Nob3VsZFJlc3VsdEluRmlsZXMoWydyZXNvdXJjZXMvZGlyZWN0b3J5LWZv
ci1kcmFnZ2luZycsICdyZXNvdXJjZXMvYXBwbGUuZ2lmJ10sIFtdKTsKK30KKworaWYgKHdpbmRv
dy5ldmVudFNlbmRlcikgeworICAgIHJ1blRlc3QoKTsKKyAgICAvLyBDbGVhbiB1cCBhZnRlciBv
dXJzZWx2ZXMKKyAgICBkcmFnVGFyZ2V0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZHJhZ1Rhcmdl
dCk7Cit9IGVsc2UgeworICAgIHRlc3RGYWlsZWQoIlRoaXMgdGVzdCBpcyBub3QgaW50ZXJhY3Rp
dmUsIHBsZWFzZSBydW4gdXNpbmcgRHVtcFJlbmRlclRyZWUiKTsKK30KKwordmFyIHN1Y2Nlc3Nm
dWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9qcy10ZXN0
LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jbGlwYm9hcmQvc2NyaXB0LXRl
c3RzL2NsaXBib2FyZC1maWxlLWFjY2Vzcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L2NsaXBib2FyZC9zY3JpcHQtdGVzdHMvY2xpcGJvYXJkLWZpbGUt
YWNjZXNzLmpzCShyZXZpc2lvbiAxMTE0ODcpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L2NsaXBib2FyZC9zY3JpcHQtdGVzdHMvY2xpcGJvYXJkLWZpbGUtYWNjZXNzLmpzCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDE3MiArMCwwIEBACi1kZXNjcmlwdGlvbigiVGVzdHMgYWNjZXNz
IHRvIGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcyBhbmQgLnR5cGVzIik7Ci0KLXZhciBkcmFnVGFy
Z2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci1kcmFnVGFyZ2V0LmlubmVySFRN
TCA9ICJEcmFnIGhlcmUiCi1kcmFnVGFyZ2V0LnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICJibHVl
IjsKLWRyYWdUYXJnZXQuc3R5bGUud2lkdGggPSAiMTAwcHgiOwotZHJhZ1RhcmdldC5zdHlsZS5o
ZWlnaHQgPSAiMTAwcHgiOwotLy8gSW1wb3J0YW50IHRoYXQgd2UgcHV0IHRoaXMgYXQgdGhlIHRv
cCBvZiB0aGUgZG9jIHNvIHRoYXQgbG9nZ2luZyBkb2VzIG5vdCBjYXVzZSBpdCB0byBnbyBvdXQg
b2YgdmlldyAoYW5kIGJlIHVuZHJhZ2FibGUpCi1kb2N1bWVudC5ib2R5Lmluc2VydEJlZm9yZShk
cmFnVGFyZ2V0LCBkb2N1bWVudC5ib2R5LmZpcnN0Q2hpbGQpOwotCi12YXIgZmlsZXNUb0RyYWc7
Ci1kcmFnVGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoImRyYWdlbnRlciIsIGZ1bmN0aW9uKCkgewot
ICAgIGRlYnVnKCJPbiBkcmFnZW50ZXI6IikKLSAgICBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVm
ZmVjdCA9ICJjb3B5IjsKLSAgICB2YXIgc2hvdWxkQ29udGFpblR5cGUgPSAoZmlsZXNUb0RyYWcu
bGVuZ3RoID4gMCk7Ci0gICAgY2hlY2tGb3JFdmVudFRyYW5zZmVyVHlwZShldmVudCwgIkZpbGVz
Iiwgc2hvdWxkQ29udGFpblR5cGUpOwotICAgIGZpbGVMaXN0U2hvdWxkQmUoImV2ZW50LmRhdGFU
cmFuc2Zlci5maWxlcyIsIFtdKTsKLSAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwotfSwgZmFs
c2UpOwotCi1kcmFnVGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoImRyYWdvdmVyIiwgZnVuY3Rpb24o
KSB7Ci0gICAgZGVidWcoIk9uIGRyYWdvdmVyOiIpCi0gICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRy
b3BFZmZlY3QgPSAiY29weSI7Ci0gICAgdmFyIHNob3VsZENvbnRhaW5UeXBlID0gKGZpbGVzVG9E
cmFnLmxlbmd0aCA+IDApOwotICAgIGNoZWNrRm9yRXZlbnRUcmFuc2ZlclR5cGUoZXZlbnQsICJG
aWxlcyIsIHNob3VsZENvbnRhaW5UeXBlKTsKLSAgICBmaWxlTGlzdFNob3VsZEJlKCJldmVudC5k
YXRhVHJhbnNmZXIuZmlsZXMiLCBbXSk7Ci0gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKLX0s
IGZhbHNlKTsKLQotZHJhZ1RhcmdldC5hZGRFdmVudExpc3RlbmVyKCJkcmFnbGVhdmUiLCBmdW5j
dGlvbigpIHsKLSAgICBkZWJ1ZygiT24gZHJhZ2xlYXZlOiIpCi0gICAgdmFyIHNob3VsZENvbnRh
aW5UeXBlID0gKGZpbGVzVG9EcmFnLmxlbmd0aCA+IDApOwotICAgIGNoZWNrRm9yRXZlbnRUcmFu
c2ZlclR5cGUoZXZlbnQsICJGaWxlcyIsIHNob3VsZENvbnRhaW5UeXBlKTsKLSAgICBmaWxlTGlz
dFNob3VsZEJlKCJldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMiLCBbXSk7Ci19LCBmYWxzZSk7Ci0K
LXZhciBleHBlY3RlZEZpbGVzT25Ecm9wOwotZHJhZ1RhcmdldC5hZGRFdmVudExpc3RlbmVyKCJk
cm9wIiwgZnVuY3Rpb24oKSB7Ci0gICAgZGVidWcoIk9uIGRyb3A6IikKLSAgICB2YXIgc2hvdWxk
Q29udGFpblR5cGUgPSAoZmlsZXNUb0RyYWcubGVuZ3RoID4gMCk7Ci0gICAgY2hlY2tGb3JFdmVu
dFRyYW5zZmVyVHlwZShldmVudCwgIkZpbGVzIiwgc2hvdWxkQ29udGFpblR5cGUpOwotICAgIGZp
bGVMaXN0U2hvdWxkQmUoImV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcyIsIGV4cGVjdGVkRmlsZXNP
bkRyb3ApOwotICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7Ci19LCBmYWxzZSk7Ci0KLS8vIFNv
bWUgdGVzdHMgZG9uJ3QgZW5kIHVwIGRyb3BwaW5nIHRoZSBkcmFnZ2VlIG92ZXIgdGhlIGRyYWcg
dGFyZ2V0LiBDYXRjaCBhbnkKLS8vIGxlZnRvdmVyIGRyb3AgZXZlbnRzIGJ1YmJsaW5nIHVwIHRo
cm91Z2ggdGhlIHRyZWUgc28gdGhleSBkb24ndCBjYXVzZSBwYWdlCi0vLyBuYXZpZ2F0aW9uLgot
ZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVyKCJkcmFnb3ZlciIsIGZ1bmN0aW9uKCkgewot
ICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7Ci19KTsKLQotZnVuY3Rpb24gbW92ZU1vdXNlVG9D
ZW50ZXJPZkVsZW1lbnQoZWxlbWVudCkgewotICAgIHZhciBjZW50ZXJYID0gZWxlbWVudC5vZmZz
ZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAvIDI7Ci0gICAgdmFyIGNlbnRlclkgPSBlbGVt
ZW50Lm9mZnNldFRvcCArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMjsKLSAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyhjZW50ZXJYLCBjZW50ZXJZKTsKLX0KLQotZnVuY3Rpb24gbW92ZU1vdXNl
VG9PdXRzaWRlT2ZFbGVtZW50KGVsZW1lbnQpIHsKLSAgICB2YXIgb3V0c2lkZVggPSBlbGVtZW50
Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoICsgNDI7Ci0gICAgdmFyIG91dHNpZGVZ
ID0gZWxlbWVudC5vZmZzZXRUb3AgKyBlbGVtZW50Lm9mZnNldEhlaWdodCArIDQyOwotICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKG91dHNpZGVYLCBvdXRzaWRlWSk7Ci19Ci0KLWZ1bmN0aW9u
IGRyYWdGaWxlc09udG9EcmFnVGFyZ2V0KGZpbGVzLCBsZWF2ZSkgewotICAgIGZpbGVzVG9EcmFn
ID0gZmlsZXM7Ci0gICAgZXZlbnRTZW5kZXIuYmVnaW5EcmFnV2l0aEZpbGVzKGZpbGVzKTsKLSAg
ICBtb3ZlTW91c2VUb0NlbnRlck9mRWxlbWVudChkcmFnVGFyZ2V0KTsKLSAgICBpZiAobGVhdmUg
JiYgbGVhdmUgPT09IHRydWUpCi0gICAgICAgIG1vdmVNb3VzZVRvT3V0c2lkZU9mRWxlbWVudChk
cmFnVGFyZ2V0KTsKLSAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7Ci19Ci0KLWZ1bmN0aW9uIGNo
ZWNrRm9yRXZlbnRUcmFuc2ZlclR5cGUoZXZlbnQsIHR5cGVTdHJpbmcsIHNob3VsZENvbnRhaW5U
eXBlKQotewotICAgIHZhciBwYXNzZWRDaGVjazsKLSAgICB2YXIgbWVzc2FnZTsKLSAgICBpZiAo
ZXZlbnQuZGF0YVRyYW5zZmVyLnR5cGVzICYmIGV2ZW50LmRhdGFUcmFuc2Zlci50eXBlcy5pbmRl
eE9mKHR5cGVTdHJpbmcpICE9IC0xKSB7Ci0gICAgICAgIHBhc3NlZENoZWNrID0gc2hvdWxkQ29u
dGFpblR5cGU7Ci0gICAgICAgIG1lc3NhZ2UgPSAiZXZlbnQuZGF0YVRyYW5zZmVyLnR5cGVzIGNv
bnRhaW5zICIgKyB0eXBlU3RyaW5nICsgIi4iOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHBhc3Nl
ZENoZWNrID0gIXNob3VsZENvbnRhaW5UeXBlOwotICAgICAgICBtZXNzYWdlID0gImV2ZW50LmRh
dGFUcmFuc2Zlci50eXBlcyBkb2VzIG5vdCBjb250YWluICIgKyB0eXBlU3RyaW5nICsgIi4iOwot
ICAgIH0KLSAgICBpZiAocGFzc2VkQ2hlY2spCi0gICAgICAgIHRlc3RQYXNzZWQobWVzc2FnZSk7
Ci0gICAgZWxzZQotICAgICAgICB0ZXN0RmFpbGVkKG1lc3NhZ2UpOwotfQotCi1mdW5jdGlvbiBm
aWxlTGlzdFNob3VsZEJlKGZpbGVMaXN0U3RyaW5nLCBmaWxlc0FycmF5KQotewotICAgIHNob3Vs
ZEJlKGZpbGVMaXN0U3RyaW5nICsgIi5sZW5ndGgiLCAiIiArIGZpbGVzQXJyYXkubGVuZ3RoKTsK
LSAgICBmb3IgKHZhciB4ID0gMDsgeCA8IGZpbGVzQXJyYXkubGVuZ3RoOyB4KyspIHsKLSAgICAg
ICAgdmFyIGZpbGVWYWx1ZVN0cmluZyA9IGZpbGVMaXN0U3RyaW5nICsgIlsiICsgeCArICJdIjsK
LSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKGZpbGVWYWx1ZVN0cmluZyArICIuZmlsZU5h
bWUiLCBmaWxlc0FycmF5W3hdWyduYW1lJ10pOwotICAgICAgICBzaG91bGRCZShmaWxlVmFsdWVT
dHJpbmcgKyAiLmZpbGVTaXplIiwgIiIgKyBmaWxlc0FycmF5W3hdWydzaXplJ10pOwotICAgIH0K
LX0KLQotZnVuY3Rpb24gZHJhZ2dpbmdQYXRoc1Nob3VsZFJlc3VsdEluRmlsZXMocGF0aHNBcnJh
eSwgZmlsZXNBcnJheSwgbGVhdmUpCi17Ci0gICAgZXhwZWN0ZWRGaWxlc09uRHJvcCA9IGZpbGVz
QXJyYXk7Ci0gICAgZHJhZ0ZpbGVzT250b0RyYWdUYXJnZXQocGF0aHNBcnJheSwgbGVhdmUgfHwg
ZmFsc2UpOwotfQotCi1mdW5jdGlvbiB0ZXN0RHJhZ2dpbmdGaWxlcyhmaWxlc0FycmF5LCBsZWF2
ZSkKLXsKLSAgICAvLyBXZSBjb3VsZCBtYWtlIGEgd2F5IHRvIHBhcnNlIHRoZSBmaWxlbmFtZSBm
cm9tIHRoZSBwYXRoLCBhbmQgdGhlbiBvbmx5IG5lZWQgdG8gcGFzcwotICAgIC8vIHRoZSBwYXRo
IGluIHRoZSBmaWxlc0FycmF5LgotICAgIHZhciBwYXRoc09ubHkgPSBmaWxlc0FycmF5Lm1hcChm
dW5jdGlvbihmaWxlU3BlYykgeyByZXR1cm4gZmlsZVNwZWNbJ3BhdGgnXTsgfSk7Ci0gICAgZHJh
Z2dpbmdQYXRoc1Nob3VsZFJlc3VsdEluRmlsZXMocGF0aHNPbmx5LCBmaWxlc0FycmF5LCBsZWF2
ZSB8fCBmYWxzZSk7Ci19Ci0KLWZ1bmN0aW9uIHJ1blRlc3QoKQotewotICAgIGRlYnVnKCJEcmFn
Z2luZyBubyBmaWxlcyBzaG91bGQgcmV0dXJuIGFuIGVtcHR5IGZpbGUgbGlzdCAoYXJiaXRyYXJ5
IGltcGxlbWVudGF0aW9uIGRldGFpbCk6Iik7Ci0gICAgdGVzdERyYWdnaW5nRmlsZXMoW10pOwot
Ci0gICAgZGVidWcoIkRyYWcgZHJvcCBhIHNpbmdsZSAobm9uLWV4aXN0YW50KSBmaWxlIG9udG8g
YW4gZWxlbWVudDoiKTsKLSAgICB0ZXN0RHJhZ2dpbmdGaWxlcyhbCi0gICAgICAgIHsgJ3BhdGgn
OiAnRFJURmFrZUZpbGUnLCAnbmFtZScgOiAnRFJURmFrZUZpbGUnLCAnc2l6ZScgOiAwIH0KLSAg
ICBdKTsKLQotICAgIGRlYnVnKCJGSVhNRTogRmlsZS5maWxlU2l6ZSBhbHdheXMgcmV0dXJucyAw
IGZvciBmaWxlcyBkcm9wcGVkIGJ5IGV2ZW50U2VuZGVyLmJlZ2luRHJhZ1dpdGhGaWxlcyBmcm9t
IGh0dHAgdGVzdHM6ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU5
MDkiKTsKLQotICAgIGRlYnVnKCJEcmFnIGZpbGVzIG92ZXIgYW4gZWxlbWVudCwgbGVhdmUgdGhh
dCBlbGVtZW50IGFuZCByZWxlYXNlIHRoZSBtb3VzZToiKTsgICAKLSAgICB0ZXN0RHJhZ2dpbmdG
aWxlcyhbCi0gICAgICAgIHsgJ3BhdGgnOiAncmVzb3VyY2VzL2FwcGxlLmdpZicsICduYW1lJyA6
ICdhcHBsZS5naWYnLCAnc2l6ZScgOiAxNDc2IH0KLSAgICBdLCB0cnVlKTsKLQotICAgIGRlYnVn
KCJEcmFnIGRyb3AgYSByZWFsIGZpbGUgb250byBhbiBlbGVtZW50OiIpOwotICAgIHRlc3REcmFn
Z2luZ0ZpbGVzKFsKLSAgICAgICAgeyAncGF0aCc6ICdyZXNvdXJjZXMvYXBwbGUuZ2lmJywgJ25h
bWUnIDogJ2FwcGxlLmdpZicsICdzaXplJyA6IDE0NzYgfQotICAgIF0pOwotICAgIAotICAgIGRl
YnVnKCJEcmFnIGRyb3AgdHdvIGZpbGVzIG9udG8gYW4gZWxlbWVudDoiKTsKLSAgICB0ZXN0RHJh
Z2dpbmdGaWxlcyhbCi0gICAgICAgIHsgJ3BhdGgnOiAncmVzb3VyY2VzL2FwcGxlLmdpZicsICdu
YW1lJyA6ICdhcHBsZS5naWYnLCAnc2l6ZScgOiAxNDc2IH0sCi0gICAgICAgIHsgJ3BhdGgnOiAn
cmVzb3VyY2VzL21vemlsbGEuZ2lmJywgJ25hbWUnIDogJ21vemlsbGEuZ2lmJywgJ3NpemUnIDog
MjU5MyB9Ci0gICAgXSk7Ci0KLSAgICBkZWJ1ZygiRHJhZyBkcm9wIHR3byBmaWxlcyBpbiByZXZl
cnNlIGFscGhhYmV0aWNhbCBvcmRlciBvbnRvIGFuIGVsZW1lbnQ6Iik7Ci0gICAgdGVzdERyYWdn
aW5nRmlsZXMoWwotICAgICAgICB7ICdwYXRoJzogJ3Jlc291cmNlcy9tb3ppbGxhLmdpZicsICdu
YW1lJyA6ICdtb3ppbGxhLmdpZicsICdzaXplJyA6IDI1OTMgfSwKLSAgICAgICAgeyAncGF0aCc6
ICdyZXNvdXJjZXMvYXBwbGUuZ2lmJywgJ25hbWUnIDogJ2FwcGxlLmdpZicsICdzaXplJyA6IDE0
NzYgfQotICAgIF0pOwotCi0gICAgLy8gRGlyZWN0b3J5IGRyYWdnaW5nIGJlaGF2aW9yIGlzIGNv
dmVyZWQgYnkgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1ODUyIGFu
ZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU4NzkKLSAgICBkZWJ1
ZygiRklYTUU6IFdlIHNob3VsZCBub3QgYWxsb3cgZWxlbWVudCB0byBhY2NlcHQgZHJvcHMgaW5j
bHVkaW5nIGRpcmVjdG9yaWVzIHVubGVzcyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjU4NzkgaXMgZml4ZWQgdG8gbWFrZSBkaXJlY3RvcnkgRmlsZSBvYmplY3RzIHVz
ZWZ1bCBmcm9tIEphdmFTY3JpcHQuICBUaGUgcGFnZSBpcyBnaXZlbiBGaWxlIG9iamVjdHMgY29y
cmVzcG9uZGluZyB0byBkaXJlY3RvcmllcywgYnV0IGZvcm0gc3VibWlzc2lvbiBhbmQgeGhyLnNl
bmQoKSB3aWxsIGZhaWwuIik7Ci0gICAgZGVidWcoIkRyYWcgZHJvcCBhIGRpcmVjdG9yeSBvbnRv
IGFuIGVsZW1lbnQ6Iik7Ci0gICAgZHJhZ2dpbmdQYXRoc1Nob3VsZFJlc3VsdEluRmlsZXMoWydy
ZXNvdXJjZXMvZGlyZWN0b3J5LWZvci1kcmFnZ2luZyddLCBbXSk7Ci0KLSAgICAvLyBOb3RlOiBU
aGUgb3JkZXIgb2Ygc2VsZWN0aW9uIGluIHRoZSBGaW5kZXIgY2hhbmdlcyB0aGUgb3JkZXIgb2Yg
ZmlsZSBwYXRocyBpbiB0aGUgcGFzdGVib2FyZAotICAgIC8vIHRodXMgaXQncyBpbXBvcnRhbnQg
dGhhdCB3ZSB0ZXN0IGRpZmZlcmVudCBvcmRlcnMgaGVyZSBhcyB3ZWxsIChhdCBsZWFzdCBvbiB0
aGUgTWFjKQotICAgIC8vIEJvdGggZHJvcHMgc2hvdWxkIGJlIHJlZnVzZWQgb3Igc3VjY2VlZCBi
YXNlZCBvbiBob3cgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1ODc5
IGlzIHJlc29sdmVkLiAgQ3VycmVudGx5IHdlIGV4cGVjdCBkcm9wcyB0byBiZSByZWZ1c2VkLgot
ICAgIGRlYnVnKCJEcmFnIGRyb3AgYSBmaWxlIGFuZCBhIGRpcmVjdG9yeSBvbnRvIGFuIGVsZW1l
bnQ6Iik7Ci0gICAgZHJhZ2dpbmdQYXRoc1Nob3VsZFJlc3VsdEluRmlsZXMoWydyZXNvdXJjZXMv
YXBwbGUuZ2lmJywgJ3Jlc291cmNlcy9kaXJlY3RvcnktZm9yLWRyYWdnaW5nJ10sIFtdKTsKLQot
ICAgIGRlYnVnKCJEcmFnIGRyb3AgYSBkaXJlY3RvcnkgYW5kIGEgZmlsZSBvbnRvIGFuIGVsZW1l
bnQ6IikKLSAgICBkcmFnZ2luZ1BhdGhzU2hvdWxkUmVzdWx0SW5GaWxlcyhbJ3Jlc291cmNlcy9k
aXJlY3RvcnktZm9yLWRyYWdnaW5nJywgJ3Jlc291cmNlcy9hcHBsZS5naWYnXSwgW10pOwotfQot
Ci1pZiAod2luZG93LmV2ZW50U2VuZGVyKSB7Ci0gICAgcnVuVGVzdCgpOwotICAgIC8vIENsZWFu
IHVwIGFmdGVyIG91cnNlbHZlcwotICAgIGRyYWdUYXJnZXQucGFyZW50Tm9kZS5yZW1vdmVDaGls
ZChkcmFnVGFyZ2V0KTsKLX0gZWxzZSB7Ci0gICAgdGVzdEZhaWxlZCgiVGhpcyB0ZXN0IGlzIG5v
dCBpbnRlcmFjdGl2ZSwgcGxlYXNlIHJ1biB1c2luZyBEdW1wUmVuZGVyVHJlZSIpOwotfQotCi12
YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
</data>
<flag name="commit-queue"
          id="136783"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>