<?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>31189</bug_id>
          
          <creation_ts>2009-11-05 14:54:56 -0800</creation_ts>
          <short_desc>Web Inspector: brush up inspector tests</short_desc>
          <delta_ts>2009-11-05 15:30:03 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>zundel</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>160961</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-11-05 14:54:56 -0800</bug_when>
    <thetext>- Introduce utility scripts for code reuse
- Migrate from div section for frontend scripts to function prefix
- Rename evaluate-in-frontend.js to inspector-test.js
- Rename highlighters tests
- Other cleanups</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160965</commentid>
    <comment_count>1</comment_count>
      <attachid>42600</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-11-05 14:58:51 -0800</bug_when>
    <thetext>Created attachment 42600
[PATCH]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160967</commentid>
    <comment_count>2</comment_count>
      <attachid>42600</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-11-05 15:08:45 -0800</bug_when>
    <thetext>Comment on attachment 42600
[PATCH]


&gt; +        for (var i = 0; i &lt; result.length; ++i) {
&gt; +            output(result[i].text + &quot; &quot; + result[i].clazz);
&gt; +        }

No braces.


&gt; -        var output = document.getElementById(&quot;output&quot;);
&gt; +        var output = document.getElementById(&quot;outputPre&quot;);

I don&apos;t think Pre helps. What was wrong with output?


&gt; +window.didEvaluateForTestInFrontend = function(callId, jsonResult)

This should just be function didEvaluateForTestInFrontend(callId, jsonResult)


&gt; +//Fronten functions.

Typo. Needs space after //.


&gt; +// Fronten functions.

Typo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160975</commentid>
    <comment_count>3</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-11-05 15:15:55 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 42600 [details])
&gt; 
&gt; &gt; +        for (var i = 0; i &lt; result.length; ++i) {
&gt; &gt; +            output(result[i].text + &quot; &quot; + result[i].clazz);
&gt; &gt; +        }
&gt; 
&gt; No braces.
&gt; 
&gt; 
&gt; &gt; -        var output = document.getElementById(&quot;output&quot;);
&gt; &gt; +        var output = document.getElementById(&quot;outputPre&quot;);
&gt; 
&gt; I don&apos;t think Pre helps. What was wrong with output?
&gt; 

Otherwise it gives single line output...

&gt; 
&gt; &gt; +window.didEvaluateForTestInFrontend = function(callId, jsonResult)
&gt; 
&gt; This should just be function didEvaluateForTestInFrontend(callId, jsonResult)
&gt; 

Done.

&gt; 
&gt; &gt; +//Fronten functions.
&gt; 
&gt; Typo. Needs space after //.
&gt;

Done. 
&gt; 
&gt; &gt; +// Fronten functions.
&gt; 
&gt; Typo.


Done. Copy paste / regex issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160993</commentid>
    <comment_count>4</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-11-05 15:30:03 -0800</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	R	LayoutTests/inspector/evaluate-in-frontend.js =&gt; LayoutTests/inspector/inspector-test.js
	R	LayoutTests/inspector/css-syntax-highlight-expected.txt =&gt; LayoutTests/inspector/syntax-highlight-css-expected.txt
	R	LayoutTests/inspector/javascript-syntax-highlight-expected.txt =&gt; LayoutTests/inspector/syntax-highlight-javascript-expected.txt
	D	LayoutTests/inspector/css-syntax-highlight.html
	D	LayoutTests/inspector/javascript-syntax-highlight.html
	M	LayoutTests/ChangeLog
	M	LayoutTests/inspector/console-dir-expected.txt
	M	LayoutTests/inspector/console-dir.html
	M	LayoutTests/inspector/console-dirxml-expected.txt
	M	LayoutTests/inspector/console-dirxml.html
	M	LayoutTests/inspector/console-format-collections-expected.txt
	M	LayoutTests/inspector/console-format-collections.html
	M	LayoutTests/inspector/console-format-expected.txt
	M	LayoutTests/inspector/console-format.html
	M	LayoutTests/inspector/console-tests-expected.txt
	M	LayoutTests/inspector/console-tests.html
	A	LayoutTests/inspector/console-tests.js
	M	LayoutTests/inspector/elements-panel-structure-expected.txt
	M	LayoutTests/inspector/elements-panel-structure.html
	A	LayoutTests/inspector/elements-tests.js
	M	LayoutTests/inspector/evaluate-in-frontend.html
	M	LayoutTests/inspector/styles-iframe.html
	A	LayoutTests/inspector/syntax-highlight-css.html
	A	LayoutTests/inspector/syntax-highlight-javascript.html
	A	LayoutTests/inspector/syntax-highlight.js
	M	LayoutTests/inspector/timeline-trivial.html
	M	LayoutTests/platform/qt/Skipped
Committed r50582</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42600</attachid>
            <date>2009-11-05 14:58:51 -0800</date>
            <delta_ts>2009-11-05 15:08:45 -0800</delta_ts>
            <desc>[PATCH]</desc>
            <filename>tests</filename>
            <type>text/plain</type>
            <size>42411</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlMDBjMDA3Li4xMTQwYTU2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNTYgQEAKIDIwMDktMTEt
MDUgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogYmVhdXRp
ZnkgbGF5b3V0IHRlc3RzLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zMTE4OQorCisgICAgICAgICogaW5zcGVjdG9yL2NvbnNvbGUtZGlyLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvY29uc29sZS1kaXIuaHRtbDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvY29uc29sZS1kaXJ4bWwtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3Bl
Y3Rvci9jb25zb2xlLWRpcnhtbC5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9jb25zb2xlLWZv
cm1hdC1jb2xsZWN0aW9ucy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2NvbnNv
bGUtZm9ybWF0LWNvbGxlY3Rpb25zLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2NvbnNvbGUt
Zm9ybWF0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvY29uc29sZS1mb3JtYXQu
aHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvY29uc29sZS10ZXN0cy1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogaW5zcGVjdG9yL2NvbnNvbGUtdGVzdHMuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvY29uc29sZS10ZXN0cy5qczogQWRkZWQuCisgICAgICAgIChkdW1wQ29uc29sZU1lc3NhZ2Vz
LmNhbGxiYWNrKToKKyAgICAgICAgKGR1bXBDb25zb2xlTWVzc2FnZXMpOgorICAgICAgICAoZHVt
cENvbnNvbGVNZXNzYWdlc1dpdGhDbGFzc2VzLmNhbGxiYWNrKToKKyAgICAgICAgKGR1bXBDb25z
b2xlTWVzc2FnZXNXaXRoQ2xhc3Nlcyk6CisgICAgICAgIChmcm9udGVuZFNjcmlwdF9kdW1wQ29u
c29sZU1lc3NhZ2VzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvY3NzLXN5bnRheC1oaWdobGlnaHQu
aHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZWxlbWVudHMtcGFuZWwtc3RydWN0
dXJlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZWxlbWVudHMtcGFuZWwtc3Ry
dWN0dXJlLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2VsZW1lbnRzLXRlc3RzLmpzOiBBZGRl
ZC4KKyAgICAgICAgKGZyb250ZW5kU2NyaXB0X2V4cGFuZERPTVN1YnRyZWUucHJvY2Vzc0NoaWxk
cmVuKToKKyAgICAgICAgKGZyb250ZW5kU2NyaXB0X2V4cGFuZERPTVN1YnRyZWUpOgorICAgICAg
ICAqIGluc3BlY3Rvci9ldmFsdWF0ZS1pbi1mcm9udGVuZC5odG1sOgorICAgICAgICAqIGluc3Bl
Y3Rvci9ldmFsdWF0ZS1pbi1mcm9udGVuZC5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0
b3IvaW5zcGVjdG9yLXRlc3QuanM6IEFkZGVkLgorICAgICAgICAoKToKKyAgICAgICAgKGV2YWx1
YXRlSW5XZWJJbnNwZWN0b3IpOgorICAgICAgICAobm90aWZ5RG9uZSk6CisgICAgICAgIChvdXRw
dXQpOgorICAgICAgICAod2luZG93LmRpZEV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQpOgorICAg
ICAgICAqIGluc3BlY3Rvci9qYXZhc2NyaXB0LXN5bnRheC1oaWdobGlnaHQuaHRtbDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBpbnNwZWN0b3Ivc3R5bGVzLWlmcmFtZS5odG1sOgorICAgICAgICAqIGlu
c3BlY3Rvci9zeW50YXgtaGlnaGxpZ2h0LWNzcy1leHBlY3RlZC50eHQ6IFJlbmFtZWQgZnJvbSBM
YXlvdXRUZXN0cy9pbnNwZWN0b3IvY3NzLXN5bnRheC1oaWdobGlnaHQtZXhwZWN0ZWQudHh0Lgor
ICAgICAgICAqIGluc3BlY3Rvci9zeW50YXgtaGlnaGxpZ2h0LWNzcy5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBpbnNwZWN0b3Ivc3ludGF4LWhpZ2hsaWdodC1qYXZhc2NyaXB0LWV4cGVjdGVkLnR4
dDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2luc3BlY3Rvci9qYXZhc2NyaXB0LXN5bnRheC1o
aWdobGlnaHQtZXhwZWN0ZWQudHh0LgorICAgICAgICAqIGluc3BlY3Rvci9zeW50YXgtaGlnaGxp
Z2h0LWphdmFzY3JpcHQuaHRtbDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL3N5bnRheC1o
aWdobGlnaHQuanM6IEFkZGVkLgorICAgICAgICAoZG9pdC5jYWxsYmFjayk6CisgICAgICAgIChk
b2l0KToKKyAgICAgICAgKGZyb250ZW5kU2NyaXB0X2R1bXBTeW50YXhIaWdobGlnaHQpOgorICAg
ICAgICAqIGluc3BlY3Rvci90aW1lbGluZS10cml2aWFsLmh0bWw6CisgICAgICAgICogcGxhdGZv
cm0vcXQvU2tpcHBlZDoKKworMjAwOS0xMS0wNSAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNo
cm9taXVtLm9yZz4KKwogICAgICAgICBOb3QgcmV2aWV3ZWQ6IGVtcHR5IGxpbmUgaW4gZXhwZWN0
YXRpb25zIGJ1aWxkIGZpeC4KIAogICAgICAgICAqIGZhc3QvZXZlbnRzL2V2ZW50LWxpc3RlbmVy
LW1hcC1yZWhhc2gtY3Jhc2gtZXhwZWN0ZWQudHh0OgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2NvbnNvbGUtZGlyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9jb25zb2xlLWRpci1leHBlY3RlZC50eHQKaW5kZXggOWQ3NmEwNC4uMDc3OWJhNSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtZGlyLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS1kaXItZXhwZWN0ZWQudHh0CkBAIC0xLDkg
KzEsOSBAQAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDg6IFtvYmplY3QgSFRNTERvY3VtZW50XQot
Q09OU09MRSBNRVNTQUdFOiBsaW5lIDk6IHRlc3QxLHRlc3QyCi1DT05TT0xFIE1FU1NBR0U6IGxp
bmUgMTA6IFtvYmplY3QgTm9kZUxpc3RdCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgOTogW29iamVj
dCBIVE1MRG9jdW1lbnRdCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTA6IHRlc3QxLHRlc3QyCitD
T05TT0xFIE1FU1NBR0U6IGxpbmUgMTE6IFtvYmplY3QgTm9kZUxpc3RdCiBUZXN0cyB0aGF0IGNv
bnNvbGUgbG9nZ2luZyBkdW1wcyBwcm9wZXIgbWVzc2FnZXMuCiAKLWNvbnNvbGUtZGlyLmh0bWw6
OEhUTUxEb2N1bWVudAotY29uc29sZS1kaXIuaHRtbDo5QXJyYXkKLWNvbnNvbGUtZGlyLmh0bWw6
MTBOb2RlTGlzdAorY29uc29sZS1kaXIuaHRtbDo5SFRNTERvY3VtZW50Citjb25zb2xlLWRpci5o
dG1sOjEwQXJyYXkKK2NvbnNvbGUtZGlyLmh0bWw6MTFOb2RlTGlzdAogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS1kaXIuaHRtbCBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9jb25zb2xlLWRpci5odG1sCmluZGV4IDMxY2NkODYuLjNiODZlODUgMTAwNzU1Ci0tLSBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlLWRpci5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9jb25zb2xlLWRpci5odG1sCkBAIC0xLDYgKzEsNyBAQAogPGh0bWw+CiA8aGVh
ZD4KLTxzY3JpcHQgc3JjPSJldmFsdWF0ZS1pbi1mcm9udGVuZC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9ImNvbnNv
bGUtdGVzdHMuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KIAogZnVuY3Rpb24gZG9pdCgpCkBAIC05
LDEzICsxMCw3IEBAIGZ1bmN0aW9uIGRvaXQoKQogICAgIGNvbnNvbGUuZGlyKFsidGVzdDEiLCAi
dGVzdDIiXSk7CiAgICAgY29uc29sZS5kaXIoZG9jdW1lbnQuY2hpbGROb2Rlcyk7CiAKLSAgICBm
dW5jdGlvbiBjYWxsYmFjayhyZXN1bHQpCi0gICAgewotICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IHJlc3VsdC5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgIG91dHB1dChyZXN1bHRbaV0udGV4
dCk7Ci0gICAgICAgIG5vdGlmeURvbmUoKTsKLSAgICB9Ci0gICAgZXZhbHVhdGVJbldlYkluc3Bl
Y3RvcigiZHVtcENvbnNvbGVNZXNzYWdlcyIsIGNhbGxiYWNrKTsKKyAgICBkdW1wQ29uc29sZU1l
c3NhZ2VzKCk7CiB9CiAKIDwvc2NyaXB0PgpAQCAtMjYsOCArMjEsNSBAQCBmdW5jdGlvbiBkb2l0
KCkKIFRlc3RzIHRoYXQgY29uc29sZSBsb2dnaW5nIGR1bXBzIHByb3BlciBtZXNzYWdlcy4KIDwv
cD4KIAotPGRpdiBpZD0ib3V0cHV0Ij4KLTwvZGl2PgotCiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS1kaXJ4bWwtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtZGlyeG1sLWV4cGVjdGVkLnR4dAppbmRl
eCBhNmNiODNkLi5iNjlkMmMzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29u
c29sZS1kaXJ4bWwtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25z
b2xlLWRpcnhtbC1leHBlY3RlZC50eHQKQEAgLTEsNSArMSw1IEBACi1DT05TT0xFIE1FU1NBR0U6
IGxpbmUgODogW29iamVjdCBIVE1MRG9jdW1lbnRdCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgOTog
W29iamVjdCBIVE1MRG9jdW1lbnRdCiBUZXN0cyB0aGF0IGNvbnNvbGUgbG9nZ2luZyBkdW1wcyBw
cm9wZXIgbWVzc2FnZXMuCiAKLWNvbnNvbGUtZGlyeG1sLmh0bWw6OERvY3VtZW50Citjb25zb2xl
LWRpcnhtbC5odG1sOjlEb2N1bWVudAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvY29uc29sZS1kaXJ4bWwuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlLWRp
cnhtbC5odG1sCmluZGV4IDgwZWJmZWYuLjQxZmY3OTEgMTAwNzU1Ci0tLSBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9jb25zb2xlLWRpcnhtbC5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9jb25zb2xlLWRpcnhtbC5odG1sCkBAIC0xLDE5ICsxLDE0IEBACiA8aHRtbD4KIDxoZWFkPgot
PHNjcmlwdCBzcmM9ImV2YWx1YXRlLWluLWZyb250ZW5kLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJpbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iY29uc29sZS10
ZXN0cy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogCiBmdW5jdGlvbiBkb2l0KCkKIHsKICAgICBj
b25zb2xlLmRpcnhtbChkb2N1bWVudCk7CiAKLSAgICBmdW5jdGlvbiBjYWxsYmFjayhyZXN1bHQp
Ci0gICAgewotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdC5sZW5ndGg7ICsraSkK
LSAgICAgICAgICAgIG91dHB1dChyZXN1bHRbaV0udGV4dCk7Ci0gICAgICAgIG5vdGlmeURvbmUo
KTsKLSAgICB9Ci0gICAgZXZhbHVhdGVJbldlYkluc3BlY3RvcigiZHVtcENvbnNvbGVNZXNzYWdl
cyIsIGNhbGxiYWNrKTsKKyAgICBkdW1wQ29uc29sZU1lc3NhZ2VzKCk7CiB9CiAKIDwvc2NyaXB0
PgpAQCAtMjQsOCArMTksNSBAQCBmdW5jdGlvbiBkb2l0KCkKIFRlc3RzIHRoYXQgY29uc29sZSBs
b2dnaW5nIGR1bXBzIHByb3BlciBtZXNzYWdlcy4KIDwvcD4KIAotPGRpdiBpZD0ib3V0cHV0Ij4K
LTwvZGl2PgotCiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvY29uc29sZS1mb3JtYXQtY29sbGVjdGlvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2NvbnNvbGUtZm9ybWF0LWNvbGxlY3Rpb25zLWV4cGVjdGVkLnR4dAppbmRl
eCA5ZTRlODZkLi42YjJlYWVlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29u
c29sZS1mb3JtYXQtY29sbGVjdGlvbnMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9jb25zb2xlLWZvcm1hdC1jb2xsZWN0aW9ucy1leHBlY3RlZC50eHQKQEAgLTEsMTUg
KzEsMTUgQEAKLUNPTlNPTEUgTUVTU0FHRTogbGluZSAxNDogW29iamVjdCBOb2RlTGlzdF0KLUNP
TlNPTEUgTUVTU0FHRTogbGluZSAxODogW29iamVjdCBIVE1MQ29sbGVjdGlvbl0KLUNPTlNPTEUg
TUVTU0FHRTogbGluZSAyMjogW29iamVjdCBIVE1MT3B0aW9uc0NvbGxlY3Rpb25dCi1DT05TT0xF
IE1FU1NBR0U6IGxpbmUgMjY6IFtvYmplY3QgSFRNTEFsbENvbGxlY3Rpb25dCi1DT05TT0xFIE1F
U1NBR0U6IGxpbmUgMzA6IFtvYmplY3QgSFRNTENvbGxlY3Rpb25dCi1DT05TT0xFIE1FU1NBR0U6
IGxpbmUgMzQ6IFtvYmplY3QgTm9kZUxpc3RdCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTU6IFtv
YmplY3QgTm9kZUxpc3RdCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTk6IFtvYmplY3QgSFRNTENv
bGxlY3Rpb25dCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMjM6IFtvYmplY3QgSFRNTE9wdGlvbnND
b2xsZWN0aW9uXQorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDI3OiBbb2JqZWN0IEhUTUxBbGxDb2xs
ZWN0aW9uXQorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDMxOiBbb2JqZWN0IEhUTUxDb2xsZWN0aW9u
XQorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDM1OiBbb2JqZWN0IE5vZGVMaXN0XQogVGVzdHMgdGhh
dCBjb25zb2xlIG5pY2VseSBmb3JtYXRzIEhUTUwgQ29sbGVjdGlvbnMgYW5kIE5vZGVMaXN0cy4K
IAotY29uc29sZS1mb3JtYXQtY29sbGVjdGlvbnMuaHRtbDoxNFs8c2VsZWN0IGlkPSJzZWwiIG5h
bWU9InNlbCI+XQotY29uc29sZS1mb3JtYXQtY29sbGVjdGlvbnMuaHRtbDoxOFs8c2NyaXB0IHNy
Yz0iZXZhbHVhdGUtaW4tZnJvbnRlbmQuanMiPiwgPHNjcmlwdD5dCi1jb25zb2xlLWZvcm1hdC1j
b2xsZWN0aW9ucy5odG1sOjIyWzxvcHRpb24gdmFsdWU9IjEiPm9uZTwvb3B0aW9uPiwgPG9wdGlv
biB2YWx1ZT0iMiI+dHdvPC9vcHRpb24+XQotY29uc29sZS1mb3JtYXQtY29sbGVjdGlvbnMuaHRt
bDoyNls8aHRtbD4sIDxoZWFkPiwgPHNjcmlwdCBzcmM9ImV2YWx1YXRlLWluLWZyb250ZW5kLmpz
Ij4sIDxzY3JpcHQ+LCA8Ym9keSBvbmxvYWQ9Im9ubG9hZCgpIj4sIDxwPiBUZXN0cyB0aGF0IGNv
bnNvbGUgbmljZWx5IGZvcm1hdHMgSFRNTCBDb2xsZWN0aW9ucyBhbmQgTm9kZUxpc3RzLiA8L3A+
LCA8ZGl2IHN0eWxlPSJkaXNwbGF5Om5vbmUiPiwgPGZvcm0gaWQ9ImYiPiwgPHNlbGVjdCBpZD0i
c2VsIiBuYW1lPSJzZWwiPiwgPG9wdGlvbiB2YWx1ZT0iMSI+b25lPC9vcHRpb24+LCA8b3B0aW9u
IHZhbHVlPSIyIj50d288L29wdGlvbj4sIDxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0ieCIgdmFs
dWU9IngxIj4sIDxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0ieCIgdmFsdWU9IngyIj4sIDxkaXYg
aWQ9Im91dHB1dCI+XQotY29uc29sZS1mb3JtYXQtY29sbGVjdGlvbnMuaHRtbDozMFs8c2VsZWN0
IGlkPSJzZWwiIG5hbWU9InNlbCI+LCA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9IngiIHZhbHVl
PSJ4MSI+LCA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9IngiIHZhbHVlPSJ4MiI+XQotY29uc29s
ZS1mb3JtYXQtY29sbGVjdGlvbnMuaHRtbDozNFs8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9Ingi
IHZhbHVlPSJ4MSI+LCA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9IngiIHZhbHVlPSJ4MiI+XQor
Y29uc29sZS1mb3JtYXQtY29sbGVjdGlvbnMuaHRtbDoxNVs8c2VsZWN0IGlkPSJzZWwiIG5hbWU9
InNlbCI+XQorY29uc29sZS1mb3JtYXQtY29sbGVjdGlvbnMuaHRtbDoxOVs8c2NyaXB0IHNyYz0i
aW5zcGVjdG9yLXRlc3QuanMiPiwgPHNjcmlwdCBzcmM9ImNvbnNvbGUtdGVzdHMuanMiPiwgPHNj
cmlwdD5dCitjb25zb2xlLWZvcm1hdC1jb2xsZWN0aW9ucy5odG1sOjIzWzxvcHRpb24gdmFsdWU9
IjEiPm9uZTwvb3B0aW9uPiwgPG9wdGlvbiB2YWx1ZT0iMiI+dHdvPC9vcHRpb24+XQorY29uc29s
ZS1mb3JtYXQtY29sbGVjdGlvbnMuaHRtbDoyN1s8aHRtbD4sIDxoZWFkPiwgPHNjcmlwdCBzcmM9
Imluc3BlY3Rvci10ZXN0LmpzIj4sIDxzY3JpcHQgc3JjPSJjb25zb2xlLXRlc3RzLmpzIj4sIDxz
Y3JpcHQ+LCA8Ym9keSBvbmxvYWQ9Im9ubG9hZCgpIj4sIDxwPiBUZXN0cyB0aGF0IGNvbnNvbGUg
bmljZWx5IGZvcm1hdHMgSFRNTCBDb2xsZWN0aW9ucyBhbmQgTm9kZUxpc3RzLiA8L3A+LCA8ZGl2
IHN0eWxlPSJkaXNwbGF5Om5vbmUiPiwgPGZvcm0gaWQ9ImYiPiwgPHNlbGVjdCBpZD0ic2VsIiBu
YW1lPSJzZWwiPiwgPG9wdGlvbiB2YWx1ZT0iMSI+b25lPC9vcHRpb24+LCA8b3B0aW9uIHZhbHVl
PSIyIj50d288L29wdGlvbj4sIDxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0ieCIgdmFsdWU9Ingx
Ij4sIDxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0ieCIgdmFsdWU9IngyIj4sIDxkaXYgaWQ9Im91
dHB1dCI+XQorY29uc29sZS1mb3JtYXQtY29sbGVjdGlvbnMuaHRtbDozMVs8c2VsZWN0IGlkPSJz
ZWwiIG5hbWU9InNlbCI+LCA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9IngiIHZhbHVlPSJ4MSI+
LCA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9IngiIHZhbHVlPSJ4MiI+XQorY29uc29sZS1mb3Jt
YXQtY29sbGVjdGlvbnMuaHRtbDozNVs8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9IngiIHZhbHVl
PSJ4MSI+LCA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9IngiIHZhbHVlPSJ4MiI+XQogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS1mb3JtYXQtY29sbGVjdGlvbnMu
aHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlLWZvcm1hdC1jb2xsZWN0aW9ucy5o
dG1sCmluZGV4IGI1M2ZhZjguLjYwNmI1ODAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9jb25zb2xlLWZvcm1hdC1jb2xsZWN0aW9ucy5odG1sCisrKyBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9jb25zb2xlLWZvcm1hdC1jb2xsZWN0aW9ucy5odG1sCkBAIC0xLDYgKzEsNyBAQAog
PGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSJldmFsdWF0ZS1pbi1mcm9udGVuZC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9ImNvbnNvbGUtdGVzdHMuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KIAogZnVuY3Rpb24g
ZG9pdCgpCkBAIC0zMywxMSArMzQsNyBAQCBmdW5jdGlvbiBkb2l0KCkKICAgICB2YXIgcmFkaW9O
b2RlTGlzdCA9IGZvcm1FbGVtZW50Lng7CiAgICAgY29uc29sZS5sb2cocmFkaW9Ob2RlTGlzdCk7
CiAKLSAgICBldmFsdWF0ZUluV2ViSW5zcGVjdG9yKCJkdW1wQ29uc29sZU1lc3NhZ2VzIiwgZnVu
Y3Rpb24ocmVzdWx0KSB7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0
aDsgKytpKQotICAgICAgICAgICAgb3V0cHV0KHJlc3VsdFtpXS50ZXh0KTsKLSAgICAgICAgbm90
aWZ5RG9uZSgpOwotICAgIH0pOworICAgIGR1bXBDb25zb2xlTWVzc2FnZXMoKTsKIH0KIAogPC9z
Y3JpcHQ+CkBAIC01OCw4ICs1NSw1IEBAIFRlc3RzIHRoYXQgY29uc29sZSBuaWNlbHkgZm9ybWF0
cyBIVE1MIENvbGxlY3Rpb25zIGFuZCBOb2RlTGlzdHMuCiAgICAgPC9mb3JtPgogPC9kaXY+CiAK
LTxkaXYgaWQ9Im91dHB1dCI+Ci08L2Rpdj4KLQogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtZm9ybWF0LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlLWZvcm1hdC1leHBlY3RlZC50eHQKaW5kZXggMDYz
NjFkYi4uNTVmNjUwYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUt
Zm9ybWF0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS1m
b3JtYXQtZXhwZWN0ZWQudHh0CkBAIC0xLDExICsxLDExIEBACi1DT05TT0xFIE1FU1NBR0U6IGxp
bmUgODogTWVzc2FnZSBmb3JtYXQgbnVtYmVyICVpLCAlZCBhbmQgJWYKLUNPTlNPTEUgTUVTU0FH
RTogbGluZSA5OiBNZXNzYWdlICVzIGZvciAlcwotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDEwOiBP
YmplY3QgJW8KLUNPTlNPTEUgTUVTU0FHRTogbGluZSAxNTogdGVzdCx0ZXN0MiwsLHRlc3Q0CitD
T05TT0xFIE1FU1NBR0U6IGxpbmUgOTogTWVzc2FnZSBmb3JtYXQgbnVtYmVyICVpLCAlZCBhbmQg
JWYKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxMDogTWVzc2FnZSAlcyBmb3IgJXMKK0NPTlNPTEUg
TUVTU0FHRTogbGluZSAxMTogT2JqZWN0ICVvCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTY6IHRl
c3QsdGVzdDIsLCx0ZXN0NAogVGVzdHMgdGhhdCBjb25zb2xlIGxvZ2dpbmcgZHVtcHMgcHJvcGVy
IG1lc3NhZ2VzLgogCi1jb25zb2xlLWZvcm1hdC5odG1sOjhNZXNzYWdlIGZvcm1hdCBudW1iZXIg
MSwgMiBhbmQgMy41Ci1jb25zb2xlLWZvcm1hdC5odG1sOjlNZXNzYWdlIGZvcm1hdCBmb3Igc3Ry
aW5nCi1jb25zb2xlLWZvcm1hdC5odG1sOjEwT2JqZWN0IE9iamVjdAotY29uc29sZS1mb3JtYXQu
aHRtbDoxNVsidGVzdCIsICJ0ZXN0MiIsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCAidGVzdDQiXQor
Y29uc29sZS1mb3JtYXQuaHRtbDo5TWVzc2FnZSBmb3JtYXQgbnVtYmVyIDEsIDIgYW5kIDMuNQor
Y29uc29sZS1mb3JtYXQuaHRtbDoxME1lc3NhZ2UgZm9ybWF0IGZvciBzdHJpbmcKK2NvbnNvbGUt
Zm9ybWF0Lmh0bWw6MTFPYmplY3QgT2JqZWN0Citjb25zb2xlLWZvcm1hdC5odG1sOjE2WyJ0ZXN0
IiwgInRlc3QyIiwgdW5kZWZpbmVkLCB1bmRlZmluZWQsICJ0ZXN0NCJdCiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlLWZvcm1hdC5odG1sIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2NvbnNvbGUtZm9ybWF0Lmh0bWwKaW5kZXggYzllYTAyNy4uMmQ2Y2QwYyAxMDA3
NTUKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtZm9ybWF0Lmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtZm9ybWF0Lmh0bWwKQEAgLTEsNiArMSw3IEBA
CiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9ImV2YWx1YXRlLWluLWZyb250ZW5kLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJpbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iY29uc29sZS10ZXN0cy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogCiBmdW5jdGlv
biBkb2l0KCkKQEAgLTE0LDEzICsxNSw3IEBAIGZ1bmN0aW9uIGRvaXQoKQogICAgIGFycmF5WzRd
ID0gInRlc3Q0IjsKICAgICBjb25zb2xlLmxvZyhhcnJheSk7CiAKLSAgICBmdW5jdGlvbiBjYWxs
YmFjayhyZXN1bHQpCi0gICAgewotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdC5s
ZW5ndGg7ICsraSkKLSAgICAgICAgICAgIG91dHB1dChyZXN1bHRbaV0udGV4dCk7Ci0gICAgICAg
IG5vdGlmeURvbmUoKTsKLSAgICB9Ci0gICAgZXZhbHVhdGVJbldlYkluc3BlY3RvcigiZHVtcENv
bnNvbGVNZXNzYWdlcyIsIGNhbGxiYWNrKTsKKyAgICBkdW1wQ29uc29sZU1lc3NhZ2VzKCk7CiB9
CiAKIDwvc2NyaXB0PgpAQCAtMzEsOCArMjYsNSBAQCBmdW5jdGlvbiBkb2l0KCkKIFRlc3RzIHRo
YXQgY29uc29sZSBsb2dnaW5nIGR1bXBzIHByb3BlciBtZXNzYWdlcy4KIDwvcD4KIAotPGRpdiBp
ZD0ib3V0cHV0Ij4KLTwvZGl2PgotCiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS10ZXN0cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvY29uc29sZS10ZXN0cy1leHBlY3RlZC50eHQKaW5kZXggZTA0MTYxMC4uN2Nl
MjdhMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtdGVzdHMtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlLXRlc3RzLWV4cGVj
dGVkLnR4dApAQCAtMSwyNSArMSwyNSBAQAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDg6IGxvZwot
Q09OU09MRSBNRVNTQUdFOiBsaW5lIDk6IGRlYnVnCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMTA6
IGluZm8KLUNPTlNPTEUgTUVTU0FHRTogbGluZSAxMTogd2FybgotQ09OU09MRSBNRVNTQUdFOiBs
aW5lIDEyOiBlcnJvcgotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE0OiByZXBlYXRlZAotQ09OU09M
RSBNRVNTQUdFOiBsaW5lIDE0OiByZXBlYXRlZAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE0OiBy
ZXBlYXRlZAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE0OiByZXBlYXRlZAotQ09OU09MRSBNRVNT
QUdFOiBsaW5lIDE0OiByZXBlYXRlZAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE5OiAxCitDT05T
T0xFIE1FU1NBR0U6IGxpbmUgOTogbG9nCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTA6IGRlYnVn
CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTE6IGluZm8KK0NPTlNPTEUgTUVTU0FHRTogbGluZSAx
Mjogd2FybgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDEzOiBlcnJvcgorQ09OU09MRSBNRVNTQUdF
OiBsaW5lIDE1OiByZXBlYXRlZAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE1OiByZXBlYXRlZAor
Q09OU09MRSBNRVNTQUdFOiBsaW5lIDE1OiByZXBlYXRlZAorQ09OU09MRSBNRVNTQUdFOiBsaW5l
IDE1OiByZXBlYXRlZAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE1OiByZXBlYXRlZAorQ09OU09M
RSBNRVNTQUdFOiBsaW5lIDIwOiAxCiBUZXN0cyB0aGF0IGNvbnNvbGUgbG9nZ2luZyBkdW1wcyBw
cm9wZXIgbWVzc2FnZXMuCiAKLWNvbnNvbGUtdGVzdHMuaHRtbDo4bG9nIGNvbnNvbGUtbWVzc2Fn
ZSBjb25zb2xlLWpzLXNvdXJjZSBjb25zb2xlLWxvZy1sZXZlbAotY29uc29sZS10ZXN0cy5odG1s
OjlkZWJ1ZyBjb25zb2xlLW1lc3NhZ2UgY29uc29sZS1qcy1zb3VyY2UgY29uc29sZS1sb2ctbGV2
ZWwKLWNvbnNvbGUtdGVzdHMuaHRtbDoxMGluZm8gY29uc29sZS1tZXNzYWdlIGNvbnNvbGUtanMt
c291cmNlIGNvbnNvbGUtbG9nLWxldmVsCi1jb25zb2xlLXRlc3RzLmh0bWw6MTF3YXJuIGNvbnNv
bGUtbWVzc2FnZSBjb25zb2xlLWpzLXNvdXJjZSBjb25zb2xlLXdhcm5pbmctbGV2ZWwKLWNvbnNv
bGUtdGVzdHMuaHRtbDoxMmVycm9yIGNvbnNvbGUtbWVzc2FnZSBjb25zb2xlLWpzLXNvdXJjZSBj
b25zb2xlLWVycm9yLWxldmVsCi01Y29uc29sZS10ZXN0cy5odG1sOjE0cmVwZWF0ZWQgY29uc29s
ZS1tZXNzYWdlIGNvbnNvbGUtanMtc291cmNlIGNvbnNvbGUtbG9nLWxldmVsIHJlcGVhdGVkLW1l
c3NhZ2UKLWNvbnNvbGUtdGVzdHMuaHRtbDoxNmNvdW50OiAxIGNvbnNvbGUtbWVzc2FnZSBjb25z
b2xlLWpzLXNvdXJjZSBjb25zb2xlLWxvZy1sZXZlbAotY29uc29sZS10ZXN0cy5odG1sOjE2Y291
bnQ6IDIgY29uc29sZS1tZXNzYWdlIGNvbnNvbGUtanMtc291cmNlIGNvbnNvbGUtbG9nLWxldmVs
Ci1jb25zb2xlLXRlc3RzLmh0bWw6MTdncm91cCBjb25zb2xlLW1lc3NhZ2UgY29uc29sZS1qcy1z
b3VyY2UgY29uc29sZS1sb2ctbGV2ZWwgY29uc29sZS1ncm91cC10aXRsZQorY29uc29sZS10ZXN0
cy5odG1sOjlsb2cgY29uc29sZS1tZXNzYWdlIGNvbnNvbGUtanMtc291cmNlIGNvbnNvbGUtbG9n
LWxldmVsCitjb25zb2xlLXRlc3RzLmh0bWw6MTBkZWJ1ZyBjb25zb2xlLW1lc3NhZ2UgY29uc29s
ZS1qcy1zb3VyY2UgY29uc29sZS1sb2ctbGV2ZWwKK2NvbnNvbGUtdGVzdHMuaHRtbDoxMWluZm8g
Y29uc29sZS1tZXNzYWdlIGNvbnNvbGUtanMtc291cmNlIGNvbnNvbGUtbG9nLWxldmVsCitjb25z
b2xlLXRlc3RzLmh0bWw6MTJ3YXJuIGNvbnNvbGUtbWVzc2FnZSBjb25zb2xlLWpzLXNvdXJjZSBj
b25zb2xlLXdhcm5pbmctbGV2ZWwKK2NvbnNvbGUtdGVzdHMuaHRtbDoxM2Vycm9yIGNvbnNvbGUt
bWVzc2FnZSBjb25zb2xlLWpzLXNvdXJjZSBjb25zb2xlLWVycm9yLWxldmVsCis1Y29uc29sZS10
ZXN0cy5odG1sOjE1cmVwZWF0ZWQgY29uc29sZS1tZXNzYWdlIGNvbnNvbGUtanMtc291cmNlIGNv
bnNvbGUtbG9nLWxldmVsIHJlcGVhdGVkLW1lc3NhZ2UKK2NvbnNvbGUtdGVzdHMuaHRtbDoxN2Nv
dW50OiAxIGNvbnNvbGUtbWVzc2FnZSBjb25zb2xlLWpzLXNvdXJjZSBjb25zb2xlLWxvZy1sZXZl
bAorY29uc29sZS10ZXN0cy5odG1sOjE3Y291bnQ6IDIgY29uc29sZS1tZXNzYWdlIGNvbnNvbGUt
anMtc291cmNlIGNvbnNvbGUtbG9nLWxldmVsCitjb25zb2xlLXRlc3RzLmh0bWw6MThncm91cCBj
b25zb2xlLW1lc3NhZ2UgY29uc29sZS1qcy1zb3VyY2UgY29uc29sZS1sb2ctbGV2ZWwgY29uc29s
ZS1ncm91cC10aXRsZQogY29uc29sZS1tZXNzYWdlIGNvbnNvbGUtanMtc291cmNlIGNvbnNvbGUt
bG9nLWxldmVsCi1jb25zb2xlLXRlc3RzLmh0bWw6MTkxIDIgMyBjb25zb2xlLW1lc3NhZ2UgY29u
c29sZS1qcy1zb3VyY2UgY29uc29sZS1sb2ctbGV2ZWwKK2NvbnNvbGUtdGVzdHMuaHRtbDoyMDEg
MiAzIGNvbnNvbGUtbWVzc2FnZSBjb25zb2xlLWpzLXNvdXJjZSBjb25zb2xlLWxvZy1sZXZlbAog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS10ZXN0cy5odG1sIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtdGVzdHMuaHRtbAppbmRleCA0OWMwYTMwLi4w
N2IwYjE4IDEwMDc1NQotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS10ZXN0cy5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlLXRlc3RzLmh0bWwKQEAgLTEs
NiArMSw3IEBACiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9ImV2YWx1YXRlLWluLWZyb250
ZW5kLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJpbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iY29uc29sZS10ZXN0cy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0Pgog
CiBmdW5jdGlvbiBkb2l0KCkKQEAgLTE4LDE0ICsxOSw3IEBAIGZ1bmN0aW9uIGRvaXQoKQogICAg
IGNvbnNvbGUuZ3JvdXBFbmQoKTsKICAgICBjb25zb2xlLmxvZygnMScsICcyJywgJzMnKTsKIAot
ICAgIGZ1bmN0aW9uIGNhbGxiYWNrKHJlc3VsdCkKLSAgICB7Ci0gICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBvdXRwdXQocmVzdWx0
W2ldLnRleHQgKyAiICIgKyByZXN1bHRbaV0uY2xhenopOwotICAgICAgICB9Ci0gICAgICAgIG5v
dGlmeURvbmUoKTsKLSAgICB9Ci0gICAgZXZhbHVhdGVJbldlYkluc3BlY3RvcigiZHVtcENvbnNv
bGVNZXNzYWdlcyIsIGNhbGxiYWNrKTsKKyAgICBkdW1wQ29uc29sZU1lc3NhZ2VzV2l0aENsYXNz
ZXMoKTsKIH0KIAogPC9zY3JpcHQ+CkBAIC0zNiw4ICszMCw1IEBAIGZ1bmN0aW9uIGRvaXQoKQog
VGVzdHMgdGhhdCBjb25zb2xlIGxvZ2dpbmcgZHVtcHMgcHJvcGVyIG1lc3NhZ2VzLgogPC9wPgog
Ci08ZGl2IGlkPSJvdXRwdXQiPgotPC9kaXY+Ci0KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlLXRlc3RzLmpzIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2NvbnNvbGUtdGVzdHMuanMKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAw
MDAwMC4uZDI3YjdlZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9j
b25zb2xlLXRlc3RzLmpzCkBAIC0wLDAgKzEsMzYgQEAKKy8vIEluc3BlY3RlZCBQYWdlIGZ1bmN0
aW9ucy4KKworZnVuY3Rpb24gZHVtcENvbnNvbGVNZXNzYWdlcygpIHsKKyAgICBmdW5jdGlvbiBj
YWxsYmFjayhyZXN1bHQpCisgICAgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc3Vs
dC5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIG91dHB1dChyZXN1bHRbaV0udGV4dCk7CisgICAg
ICAgIG5vdGlmeURvbmUoKTsKKyAgICB9CisgICAgZXZhbHVhdGVJbldlYkluc3BlY3RvcigiZnJv
bnRlbmRTY3JpcHRfZHVtcENvbnNvbGVNZXNzYWdlcyIsIGNhbGxiYWNrKTsKK30KKworZnVuY3Rp
b24gZHVtcENvbnNvbGVNZXNzYWdlc1dpdGhDbGFzc2VzKCkgeworICAgIGZ1bmN0aW9uIGNhbGxi
YWNrKHJlc3VsdCkKKyAgICB7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0Lmxl
bmd0aDsgKytpKSB7CisgICAgICAgICAgICBvdXRwdXQocmVzdWx0W2ldLnRleHQgKyAiICIgKyBy
ZXN1bHRbaV0uY2xhenopOworICAgICAgICB9CisgICAgICAgIG5vdGlmeURvbmUoKTsKKyAgICB9
CisgICAgZXZhbHVhdGVJbldlYkluc3BlY3RvcigiZnJvbnRlbmRTY3JpcHRfZHVtcENvbnNvbGVN
ZXNzYWdlcyIsIGNhbGxiYWNrKTsKK30KKworCisvLyBGcm9udGVuZCBmdW5jdGlvbnMuCisKK2Z1
bmN0aW9uIGZyb250ZW5kU2NyaXB0X2R1bXBDb25zb2xlTWVzc2FnZXMoKQoreworICAgIHZhciBy
ZXN1bHQgPSBbXTsKKyAgICB2YXIgbWVzc2FnZXMgPSBXZWJJbnNwZWN0b3IuY29uc29sZS5tZXNz
YWdlczsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1lc3NhZ2VzLmxlbmd0aDsgKytpKSB7Cisg
ICAgICAgIHZhciBlbGVtZW50ID0gbWVzc2FnZXNbaV0udG9NZXNzYWdlRWxlbWVudCgpOworICAg
ICAgICByZXN1bHQucHVzaCh7IHRleHQ6IGVsZW1lbnQudGV4dENvbnRlbnQucmVwbGFjZSgvXHUy
MDBiL2csICIiKSwgY2xheno6IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfSk7CisgICAg
fQorICAgIHJldHVybiByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvY3NzLXN5bnRheC1oaWdobGlnaHQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2Nzcy1zeW50YXgtaGlnaGxpZ2h0LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggM2YzMDY3ZC4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
Y3NzLXN5bnRheC1oaWdobGlnaHQtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTEg
KzAsMCBAQAotVGVzdHMgdGhhdCBDU1NTb3VyY2VTeW50YXhIaWdobGlnaHRlciBkZXRlY3RzIHRo
ZSB0b2tlbnMuCi0KLXdlYmtpdC1jc3Mtc2VsZWN0b3IKLXdlYmtpdC1jc3Mtc2VsZWN0b3IsKix3
ZWJraXQtY3NzLXNlbGVjdG9yCi13ZWJraXQtY3NzLWF0LXJ1bGUsKix3ZWJraXQtY3NzLXVybCwq
Ci13ZWJraXQtY3NzLWF0LXJ1bGUsKix3ZWJraXQtY3NzLXVybCwqLHdlYmtpdC1jc3Mta2V5d29y
ZCwqLHdlYmtpdC1jc3Mta2V5d29yZCwqCi13ZWJraXQtY3NzLWF0LXJ1bGUsKix3ZWJraXQtY3Nz
LWtleXdvcmQsKix3ZWJraXQtY3NzLXNlbGVjdG9yLCosd2Via2l0LWNzcy1wcm9wZXJ0eSwqLHdl
YmtpdC1jc3Mta2V5d29yZCwqCi13ZWJraXQtY3NzLWF0LXJ1bGUsKix3ZWJraXQtY3NzLXByb3Bl
cnR5LCoKLXdlYmtpdC1jc3Mtc2VsZWN0b3IsKix3ZWJraXQtY3NzLXByb3BlcnR5LCosd2Via2l0
LWNzcy1rZXl3b3JkLCoKLXdlYmtpdC1jc3Mtc2VsZWN0b3IsKix3ZWJraXQtY3NzLXByb3BlcnR5
LCosd2Via2l0LWNzcy1rZXl3b3JkLCosd2Via2l0LWNzcy1pbXBvcnRhbnQsKgotCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY3NzLXN5bnRheC1oaWdobGlnaHQuaHRtbCBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9jc3Mtc3ludGF4LWhpZ2hsaWdodC5odG1sCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBhZWI4MzM5Li4wMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9jc3Mtc3ludGF4LWhpZ2hsaWdodC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjUg
KzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSJldmFsdWF0ZS1pbi1mcm9udGVu
ZC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotCi1mdW5jdGlvbiBkb2l0KCkKLXsKLSAgICBmdW5j
dGlvbiBjYWxsYmFjayhyZXN1bHQpCi0gICAgewotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHJlc3VsdC5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgIG91dHB1dChyZXN1bHRbaV0pOwotICAg
ICAgICBub3RpZnlEb25lKCk7Ci0gICAgfQotICAgIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoImRv
aXRBbmREdW1wIiwgY2FsbGJhY2spOwotfQotCi08L3NjcmlwdD4KLTwvaGVhZD4KLQotPGJvZHkg
b25sb2FkPSJvbmxvYWQoKSI+Ci08cD4KLVRlc3RzIHRoYXQgQ1NTU291cmNlU3ludGF4SGlnaGxp
Z2h0ZXIgZGV0ZWN0cyB0aGUgdG9rZW5zLgotPC9wPgotCi08ZGl2IGlkPSJmcm9udGVuZC1zY3Jp
cHQiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPgotZnVuY3Rpb24gZG9pdEFuZER1bXAodGVzdENvbnRy
b2xsZXIpIHsKLSAgICB0ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgdmFyIHJlc3VsdCA9IFtdOwotICAgICAgICAKLSAg
ICAgICAgcmVzdWx0LnB1c2goZHVtcFN5bnRheEhpZ2hsaWdodCgiYVtocmVmPScvJ10iKSk7Ci0g
ICAgICAgIHJlc3VsdC5wdXNoKGR1bXBTeW50YXhIaWdobGlnaHQoIiNjb250ZW50ID4gYTpob3Zl
ciIpKTsKLSAgICAgICAgcmVzdWx0LnB1c2goZHVtcFN5bnRheEhpZ2hsaWdodCgiQGltcG9ydCB1
cmwoc3R5bGUuY3NzKTsiKSk7Ci0gICAgICAgIHJlc3VsdC5wdXNoKGR1bXBTeW50YXhIaWdobGln
aHQoIkBpbXBvcnQgdXJsKFwic3R5bGUuY3NzXCIpIHByb2plY3Rpb24sIHR2OyIpKTsKLSAgICAg
ICAgcmVzdWx0LnB1c2goZHVtcFN5bnRheEhpZ2hsaWdodCgiQG1lZGlhIHNjcmVlbiB7IGJvZHkg
eyBjb2xvcjogcmVkOyB9IH0iKSk7Ci0gICAgICAgIHJlc3VsdC5wdXNoKGR1bXBTeW50YXhIaWdo
bGlnaHQoIkBmb250LWZhY2UgeyBmb250LWZhbWlseTogTXlIZWx2ZXRpY2E7IH0iKSk7Ci0gICAg
ICAgIHJlc3VsdC5wdXNoKGR1bXBTeW50YXhIaWdobGlnaHQoInAgeyBjb2xvcjogY29sb3I7IHJl
ZDogcmVkOyB9IikpOwotICAgICAgICByZXN1bHQucHVzaChkdW1wU3ludGF4SGlnaGxpZ2h0KCJw
IHsgY29sb3I6IHJlZCAhaW1wb3J0YW50OyB9IikpOwotICAgICAgICAKLSAgICAgICAgdGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZShyZXN1bHQpOwotICAgICAgICAKLSAgICB9LCAwKTsKLX0KLWZ1
bmN0aW9uIGR1bXBTeW50YXhIaWdobGlnaHQoc3RyKSB7Ci0gICAgdmFyIG5vZGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJzcGFuIik7Ci0gICAgbm9kZS50ZXh0Q29udGVudCA9IHN0cjsKLSAg
ICB2YXIgamF2YXNjcmlwdFN5bnRheEhpZ2hsaWdodGVyID0gbmV3IFdlYkluc3BlY3Rvci5DU1NT
b3VyY2VTeW50YXhIaWdobGlnaHRlcihudWxsLCBudWxsKTsKLSAgICBqYXZhc2NyaXB0U3ludGF4
SGlnaGxpZ2h0ZXIuc3ludGF4SGlnaGxpZ2h0Tm9kZShub2RlKTsKLSAgICB2YXIgbm9kZV9wYXJ0
cyA9IFtdOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZS5jaGlsZE5vZGVzLmxlbmd0aDsg
aSsrKSB7Ci0gICAgICAgIGlmIChub2RlLmNoaWxkTm9kZXNbaV0uZ2V0QXR0cmlidXRlKSB7Ci0g
ICAgICAgICAgICBub2RlX3BhcnRzLnB1c2gobm9kZS5jaGlsZE5vZGVzW2ldLmdldEF0dHJpYnV0
ZSgiY2xhc3MiKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBub2RlX3BhcnRzLnB1
c2goIioiKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gbm9kZV9wYXJ0cy5qb2luKCIs
Iik7Ci19Ci08L2Rpdj4KLQotPGRpdiBpZD0ib3V0cHV0Ij4KLTwvZGl2PgotCi08L2JvZHk+Ci08
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtcGFuZWwt
c3RydWN0dXJlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy1w
YW5lbC1zdHJ1Y3R1cmUtZXhwZWN0ZWQudHh0CmluZGV4IDIyODVmOTkuLjM1YTA1NGQgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy1wYW5lbC1zdHJ1Y3R1cmUtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy1wYW5lbC1zdHJ1
Y3R1cmUtZXhwZWN0ZWQudHh0CkBAIC02LDcgKzYsOCBAQCBUZXN0cyB0aGF0IGVsZW1lbnRzIHBh
bmVsIHNob3dzIGRvbSB0cmVlIHN0cnVjdHVyZS4KIDxib2R5IG9ubG9hZD0ib25sb2FkKCkiPgog
PHA+VGVzdHMgdGhhdCBlbGVtZW50cyBwYW5lbCBzaG93cyBkb20gdHJlZSBzdHJ1Y3R1cmUuCiA8
L3A+Ci08ZGl2IGlkPSJmcm9udGVuZC1zY3JpcHQiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPgotPHBy
ZSBpZD0ib3V0cHV0Ij4KKzxwcmUgaWQ9Im91dHB1dFByZSI+Cis8ZGl2IGlkPSJvdXRwdXQiPgog
PC9ib2R5PgogPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxl
bWVudHMtcGFuZWwtc3RydWN0dXJlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVu
dHMtcGFuZWwtc3RydWN0dXJlLmh0bWwKaW5kZXggYzk3NDRlOC4uMDBlYWVlZSAxMDA3NTUKLS0t
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXBhbmVsLXN0cnVjdHVyZS5odG1sCisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy1wYW5lbC1zdHJ1Y3R1cmUuaHRtbApA
QCAtMSwzOSArMSw0MiBAQAogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSJldmFsdWF0ZS1p
bi1mcm9udGVuZC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iaW5zcGVjdG9yLXRlc3QuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9ImVsZW1lbnRzLXRlc3RzLmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQ+CiAKIGZ1bmN0aW9uIGRvaXQoKQogewogICAgIGZ1bmN0aW9uIGNhbGxiYWNrKHJlc3Vs
dCkKICAgICB7Ci0gICAgICAgIHZhciBvdXRwdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
b3V0cHV0Iik7CisgICAgICAgIHZhciBvdXRwdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
b3V0cHV0UHJlIik7CiAgICAgICAgIG91dHB1dC50ZXh0Q29udGVudCA9IHJlc3VsdC5yZXBsYWNl
KC9cdTIwMGIvZywgIiIpLnJlcGxhY2UoL1xuL2csICIiKS5yZXBsYWNlKC88L2csICJcbjwiKTsK
ICAgICAgICAgbm90aWZ5RG9uZSgpOwogICAgIH0KLSAgICBldmFsdWF0ZUluV2ViSW5zcGVjdG9y
KCJkdW1wRWxlbWVudHMiLCBjYWxsYmFjayk7CisgICAgZXZhbHVhdGVJbldlYkluc3BlY3Rvcigi
ZnJvbnRlbmRTY3JpcHRfZHVtcEFsbEVsZW1lbnRzIiwgY2FsbGJhY2spOwogfQogCi08L3Njcmlw
dD4KLTwvaGVhZD4KIAotPGJvZHkgb25sb2FkPSJvbmxvYWQoKSI+Ci08cD4KLVRlc3RzIHRoYXQg
ZWxlbWVudHMgcGFuZWwgc2hvd3MgZG9tIHRyZWUgc3RydWN0dXJlLgotPC9wPgorLy8gRnJvbnRl
bmQgZnVuY3Rpb25zLgogCi08ZGl2IGlkPSJmcm9udGVuZC1zY3JpcHQiIHN0eWxlPSJkaXNwbGF5
Om5vbmUiPgotZnVuY3Rpb24gZHVtcEVsZW1lbnRzKHRlc3RDb250cm9sbGVyKQorZnVuY3Rpb24g
ZnJvbnRlbmRTY3JpcHRfZHVtcEFsbEVsZW1lbnRzKHRlc3RDb250cm9sbGVyKQogewogICAgIHRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICBleHBhbmRET01TdWJ0cmVlKFdlYklu
c3BlY3Rvci5kb21BZ2VudC5kb2N1bWVudCk7CisgICAgLy8gTmVlZCB0ZXN0IHRvIGJlIGFzeW5j
IHRvIGV4cGFuZCB3aG9sZSB0aGUgdHJlZSBmaXJzdC4KKyAgICBmcm9udGVuZFNjcmlwdF9leHBh
bmRET01TdWJ0cmVlKFdlYkluc3BlY3Rvci5kb21BZ2VudC5kb2N1bWVudCk7CiAgICAgdGVzdENv
bnRyb2xsZXIucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhmdW5jdGlvbigpIHsKICAgICAgICAg
dGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZShXZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1lbnRzLnRy
ZWVPdXRsaW5lLmVsZW1lbnQudGV4dENvbnRlbnQpOwogICAgIH0pOwogfQotPC9kaXY+CiAKLTxw
cmUgaWQ9Im91dHB1dCI+Cis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJvbmxv
YWQoKSI+Cis8cD4KK1Rlc3RzIHRoYXQgZWxlbWVudHMgcGFuZWwgc2hvd3MgZG9tIHRyZWUgc3Ry
dWN0dXJlLgorPC9wPgorCis8cHJlIGlkPSJvdXRwdXRQcmUiPgogPC9wcmU+CiAKIDwvYm9keT4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy10ZXN0cy5qcyBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy10ZXN0cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDc1
NQppbmRleCAwMDAwMDAwLi40NTAzZDUyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2VsZW1lbnRzLXRlc3RzLmpzCkBAIC0wLDAgKzEsMTEgQEAKKy8vIEZyb250ZW5k
IGZ1bmN0aW9ucy4KKworZnVuY3Rpb24gZnJvbnRlbmRTY3JpcHRfZXhwYW5kRE9NU3VidHJlZShu
b2RlKQoreworICAgIGZ1bmN0aW9uIHByb2Nlc3NDaGlsZHJlbihjaGlsZHJlbikKKyAgICB7Cisg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGNoaWxkcmVuICYmIGkgPCBjaGlsZHJlbi5sZW5ndGg7ICsr
aSkKKyAgICAgICAgICAgZnJvbnRlbmRTY3JpcHRfZXhwYW5kRE9NU3VidHJlZShjaGlsZHJlbltp
XSk7CisgICAgfQorICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5nZXRDaGlsZE5vZGVzQXN5bmMo
bm9kZSwgcHJvY2Vzc0NoaWxkcmVuKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9ldmFsdWF0ZS1pbi1mcm9udGVuZC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V2
YWx1YXRlLWluLWZyb250ZW5kLmh0bWwKaW5kZXggNDUxYTk1Ny4uMWFmNmNiYiAxMDA3NTUKLS0t
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V2YWx1YXRlLWluLWZyb250ZW5kLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V2YWx1YXRlLWluLWZyb250ZW5kLmh0bWwKQEAgLTEsNiAr
MSw2IEBACiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9ImV2YWx1YXRlLWluLWZyb250ZW5k
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJpbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+
CiA8c2NyaXB0PgogCiBmdW5jdGlvbiBkb2l0KCkKQEAgLTEwLDcgKzEwLDE1IEBAIGZ1bmN0aW9u
IGRvaXQoKQogICAgICAgICBvdXRwdXQoIjIgKyAyID0gIiArIHJlc3VsdCk7CiAgICAgICAgIG5v
dGlmeURvbmUoKTsKICAgICB9Ci0gICAgZXZhbHVhdGVJbldlYkluc3BlY3Rvcigic3VtKDIsIDIp
IiwgY2FsbGJhY2spOworICAgIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoImZyb250ZW5kU2NyaXB0
X3N1bSgyLCAyKSIsIGNhbGxiYWNrKTsKK30KKworCisvLyBGcm9udGVuZCBmdW5jdGlvbnMuCisK
K2Z1bmN0aW9uIGZyb250ZW5kU2NyaXB0X3N1bShhLCBiKQoreworICAgIHJldHVybiBhICsgYjsK
IH0KIAogPC9zY3JpcHQ+CkBAIC0yMSwxNSArMjksNSBAQCBmdW5jdGlvbiBkb2l0KCkKIFRoaXMg
dGVzdHMgdGhhdCBsYXlvdXQgdGVzdCBjYW4gZXZhbHVhdGUgc2NyaXB0cyBpbiB0aGUgd2ViIGlu
c3BlY3RvciBjb250ZXh0LgogPC9wPgogCi08ZGl2IGlkPSJmcm9udGVuZC1zY3JpcHQiIHN0eWxl
PSJkaXNwbGF5Om5vbmUiPgotZnVuY3Rpb24gc3VtKGEsIGIpCi17Ci0gICAgcmV0dXJuIGEgKyBi
OwotfQotPC9kaXY+Ci0KLTxkaXYgaWQ9Im91dHB1dCI+Ci08L2Rpdj4KLQogPC9ib2R5PgogPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V2YWx1YXRlLWluLWZyb250
ZW5kLmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V2YWx1YXRlLWluLWZyb250ZW5kLmpzCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBhYzNmOTk4Li4wMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9ldmFsdWF0ZS1pbi1mcm9udGVuZC5qcworKysgL2Rldi9udWxsCkBA
IC0xLDk2ICswLDAgQEAKLXZhciBsYXN0Q2FsbElkID0gMDsKLXZhciBjYWxsYmFja3MgPSB7fTsK
LQotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7Ci19Ci0KLS8vIFdlIGlnbm9yZSBpbml0aWFsIGxvYWQgb2YgdGhlIHBhZ2UsIGVuYWJs
ZSBpbnNwZWN0b3IgYW5kIGluaXRpYXRlIHJlbG9hZC4gVGhpcyBhbGxvd3MgaW5zcGVjdG9yIGNv
bnRyb2xsZXIKLS8vIHRvIGNhcHR1cmUgZXZlbnRzIHRoYXQgaGFwcGVuIGR1cmluZyB0aGUgaW5p
dGlhbCBwYWdlIGxvYWQuCi12YXIgaWdub3JlTG9hZCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmLmlu
ZGV4T2YoIj9yZWxvYWQiKSA9PT0gLTE7Ci1pZiAoaWdub3JlTG9hZCkgewotICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zaG93V2ViSW5zcGVjdG9yKCk7Ci0g
ICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmICs9ICI/cmVsb2FkIjsKLSAgICB9LCAwKTsKLX0K
LQotZnVuY3Rpb24gb25sb2FkKCkKLXsKLSAgICBpZiAoaWdub3JlTG9hZCkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgdmFyIHRvSW5qZWN0ID0gZXhwYW5kRE9NU3VidHJlZS50b1N0cmluZygpICsg
IlxuIiArIGR1bXBDb25zb2xlTWVzc2FnZXMudG9TdHJpbmcoKTsKLSAgICBpZiAoZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImZyb250ZW5kLXNjcmlwdCIpKQotICAgICAgICB0b0luamVjdCArPSAi
XG4iICsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZyb250ZW5kLXNjcmlwdCIpLnRleHRDb250
ZW50OwotICAgIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IodG9JbmplY3QsIGRvaXQpOwotCi0gICAg
Ly8gTWFrZSBzdXJlIHdlYiBpbnNwZWN0b3Igd2luZG93IGlzIGNsb3NlZCBiZWZvcmUgdGhlIHRl
c3QgaXMgaW50ZXJydXB0ZWQuCi0gICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAg
YWxlcnQoIkludGVybmFsIHRpbWVvdXQgZXhjZWVkZWQuIikKLSAgICAgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
Y2xvc2VXZWJJbnNwZWN0b3IoKTsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5v
dGlmeURvbmUoKTsKLSAgICAgICAgfQotICAgIH0sIDEwMDAwKTsKLX0KLQotZnVuY3Rpb24gZXZh
bHVhdGVJbldlYkluc3BlY3RvcihzY3JpcHQsIGNhbGxiYWNrKQotewotICAgIHZhciBjYWxsSWQg
PSBsYXN0Q2FsbElkKys7Ci0gICAgY2FsbGJhY2tzW2NhbGxJZF0gPSBjYWxsYmFjazsKLSAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZXZhbHVhdGVJbldlYklu
c3BlY3RvcihjYWxsSWQsIHNjcmlwdCk7Ci0gICAgfSwgMCk7Ci19Ci0KLWZ1bmN0aW9uIG5vdGlm
eURvbmUoKQotewotICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmNsb3NlV2ViSW5zcGVjdG9yKCk7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5ub3RpZnlEb25lKCk7Ci0gICAgICAgIH0KLSAgICB9LCAwKTsKLX0KLQotZnVuY3Rpb24gb3V0
cHV0KHRleHQpCi17Ci0gICAgdmFyIG91dHB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJv
dXRwdXQiKTsKLSAgICBvdXRwdXQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo
dGV4dCkpOwotICAgIG91dHB1dC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJi
ciIpKTsKLX0KLQotd2luZG93LmRpZEV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQgPSBmdW5jdGlv
bihjYWxsSWQsIGpzb25SZXN1bHQpCi17Ci0gICAgaWYgKGNhbGxiYWNrc1tjYWxsSWRdKSB7Ci0g
ICAgICAgIGNhbGxiYWNrc1tjYWxsSWRdLmNhbGwodGhpcywgSlNPTi5wYXJzZShqc29uUmVzdWx0
KSk7Ci0gICAgICAgIGRlbGV0ZSBjYWxsYmFja3NbY2FsbElkXTsKLSAgICB9Ci19OwotCi0vLyBJ
bmplY3RlZCB1dGlsaXR5IGZ1bmN0aW9ucy4KLQotZnVuY3Rpb24gZXhwYW5kRE9NU3VidHJlZShu
b2RlKQotewotICAgIGZ1bmN0aW9uIHByb2Nlc3NDaGlsZHJlbihjaGlsZHJlbikKLSAgICB7Ci0g
ICAgICAgZm9yICh2YXIgaSA9IDA7IGNoaWxkcmVuICYmIGkgPCBjaGlsZHJlbi5sZW5ndGg7ICsr
aSkKLSAgICAgICAgICAgZXhwYW5kRE9NU3VidHJlZShjaGlsZHJlbltpXSk7Ci0gICAgfQotICAg
IFdlYkluc3BlY3Rvci5kb21BZ2VudC5nZXRDaGlsZE5vZGVzQXN5bmMobm9kZSwgcHJvY2Vzc0No
aWxkcmVuKTsKLX0KLQotZnVuY3Rpb24gZHVtcENvbnNvbGVNZXNzYWdlcygpCi17Ci0gICAgdmFy
IHJlc3VsdCA9IFtdOwotICAgIHZhciBtZXNzYWdlcyA9IFdlYkluc3BlY3Rvci5jb25zb2xlLm1l
c3NhZ2VzOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWVzc2FnZXMubGVuZ3RoOyArK2kpIHsK
LSAgICAgICAgdmFyIGVsZW1lbnQgPSBtZXNzYWdlc1tpXS50b01lc3NhZ2VFbGVtZW50KCk7Ci0g
ICAgICAgIHJlc3VsdC5wdXNoKHsgdGV4dDogZWxlbWVudC50ZXh0Q29udGVudC5yZXBsYWNlKC9c
dTIwMGIvZywgIiIpLCBjbGF6ejogZWxlbWVudC5nZXRBdHRyaWJ1dGUoImNsYXNzIil9KTsKLSAg
ICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9pbnNwZWN0b3ItdGVzdC5qcyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3It
dGVzdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi41NjJkZmQ2Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzCkBA
IC0wLDAgKzEsODEgQEAKK3ZhciBsYXN0Q2FsbElkID0gMDsKK3ZhciBjYWxsYmFja3MgPSB7fTsK
KworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7Cit9CisKKy8vIFdlIGlnbm9yZSBpbml0aWFsIGxvYWQgb2YgdGhlIHBhZ2UsIGVuYWJs
ZSBpbnNwZWN0b3IgYW5kIGluaXRpYXRlIHJlbG9hZC4gVGhpcyBhbGxvd3MgaW5zcGVjdG9yIGNv
bnRyb2xsZXIKKy8vIHRvIGNhcHR1cmUgZXZlbnRzIHRoYXQgaGFwcGVuIGR1cmluZyB0aGUgaW5p
dGlhbCBwYWdlIGxvYWQuCit2YXIgaWdub3JlTG9hZCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmLmlu
ZGV4T2YoIj9yZWxvYWQiKSA9PT0gLTE7CitpZiAoaWdub3JlTG9hZCkgeworICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zaG93V2ViSW5zcGVjdG9yKCk7Cisg
ICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmICs9ICI/cmVsb2FkIjsKKyAgICB9LCAwKTsKK30K
KworZnVuY3Rpb24gb25sb2FkKCkKK3sKKyAgICBpZiAoaWdub3JlTG9hZCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgdmFyIG91dHB1dEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKTsKKyAgICBvdXRwdXRFbGVtZW50LmlkID0gIm91dHB1dCI7CisgICAgZG9jdW1lbnQuYm9k
eS5hcHBlbmRDaGlsZChvdXRwdXRFbGVtZW50KTsKKworICAgIHZhciB0b0luamVjdCA9IFtdOwor
ICAgIGZvciAodmFyIG5hbWUgaW4gd2luZG93KSB7CisgICAgICAgIGlmIChuYW1lLmluZGV4T2Yo
ImZyb250ZW5kU2NyaXB0IikgPT09IDAgJiYgdHlwZW9mIHdpbmRvd1tuYW1lXSA9PT0gImZ1bmN0
aW9uIikKKyAgICAgICAgICAgIHRvSW5qZWN0LnB1c2god2luZG93W25hbWVdLnRvU3RyaW5nKCkp
OworICAgIH0KKyAgICBldmFsdWF0ZUluV2ViSW5zcGVjdG9yKHRvSW5qZWN0LmpvaW4oIlxuIiks
IGRvaXQpOworCisgICAgLy8gTWFrZSBzdXJlIHdlYiBpbnNwZWN0b3Igd2luZG93IGlzIGNsb3Nl
ZCBiZWZvcmUgdGhlIHRlc3QgaXMgaW50ZXJydXB0ZWQuCisgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsKKyAgICAgICAgYWxlcnQoIkludGVybmFsIHRpbWVvdXQgZXhjZWVkZWQuIikKKyAgICAg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuY2xvc2VXZWJJbnNwZWN0b3IoKTsKKyAgICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfQorICAgIH0sIDEwMDAwKTsKK30K
KworZnVuY3Rpb24gZXZhbHVhdGVJbldlYkluc3BlY3RvcihzY3JpcHQsIGNhbGxiYWNrKQorewor
ICAgIHZhciBjYWxsSWQgPSBsYXN0Q2FsbElkKys7CisgICAgY2FsbGJhY2tzW2NhbGxJZF0gPSBj
YWxsYmFjazsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZXZhbHVhdGVJbldlYkluc3BlY3RvcihjYWxsSWQsIHNjcmlwdCk7CisgICAgfSwgMCk7Cit9CisK
K2Z1bmN0aW9uIG5vdGlmeURvbmUoKQoreworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Cisg
ICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmNsb3NlV2ViSW5zcGVjdG9yKCk7CisgICAgICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIH0KKyAgICB9LCAwKTsKK30K
KworZnVuY3Rpb24gb3V0cHV0KHRleHQpCit7CisgICAgdmFyIG91dHB1dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJvdXRwdXQiKTsKKyAgICBvdXRwdXQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUodGV4dCkpOworICAgIG91dHB1dC5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJiciIpKTsKK30KKword2luZG93LmRpZEV2YWx1YXRlRm9yVGVzdEluRnJv
bnRlbmQgPSBmdW5jdGlvbihjYWxsSWQsIGpzb25SZXN1bHQpCit7CisgICAgaWYgKGNhbGxiYWNr
c1tjYWxsSWRdKSB7CisgICAgICAgIGNhbGxiYWNrc1tjYWxsSWRdLmNhbGwodGhpcywgSlNPTi5w
YXJzZShqc29uUmVzdWx0KSk7CisgICAgICAgIGRlbGV0ZSBjYWxsYmFja3NbY2FsbElkXTsKKyAg
ICB9Cit9OworCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9qYXZhc2NyaXB0
LXN5bnRheC1oaWdobGlnaHQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2ph
dmFzY3JpcHQtc3ludGF4LWhpZ2hsaWdodC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDg4YzEwY2YuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2phdmFzY3JpcHQtc3ludGF4LWhpZ2hsaWdodC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApA
QCAtMSwxNCArMCwwIEBACi1UZXN0cyB0aGF0IEphdmFTY3JpcHRTb3VyY2VTeW50YXhIaWdobGln
aHRlciBkZXRlY3RzIHRoZSB0b2tlbnMuCi0KLXdlYmtpdC1qYXZhc2NyaXB0LWtleXdvcmQsd2Vi
a2l0LWphdmFzY3JpcHQtc3RyaW5nLCoKLXdlYmtpdC1qYXZhc2NyaXB0LXJlZ2V4cAotd2Via2l0
LWphdmFzY3JpcHQtY29tbWVudAotd2Via2l0LWphdmFzY3JpcHQtbnVtYmVyLCosd2Via2l0LWph
dmFzY3JpcHQtbnVtYmVyLCosd2Via2l0LWphdmFzY3JpcHQtcmVnZXhwLCosd2Via2l0LWphdmFz
Y3JpcHQtaWRlbnQsKix3ZWJraXQtamF2YXNjcmlwdC1zdHJpbmcsKgotd2Via2l0LWphdmFzY3Jp
cHQtc3RyaW5nLCosd2Via2l0LWphdmFzY3JpcHQtaWRlbnQsKix3ZWJraXQtamF2YXNjcmlwdC1u
dW1iZXIKLXdlYmtpdC1qYXZhc2NyaXB0LWtleXdvcmQsKix3ZWJraXQtamF2YXNjcmlwdC1pZGVu
dCwqLHdlYmtpdC1qYXZhc2NyaXB0LW51bWJlcix3ZWJraXQtamF2YXNjcmlwdC1jb21tZW50LCos
d2Via2l0LWphdmFzY3JpcHQtbnVtYmVyCi13ZWJraXQtamF2YXNjcmlwdC1jb21tZW50LHdlYmtp
dC1qYXZhc2NyaXB0LXJlZ2V4cCwqLHdlYmtpdC1qYXZhc2NyaXB0LWlkZW50LCosd2Via2l0LWph
dmFzY3JpcHQtc3RyaW5nLCoKLXdlYmtpdC1qYXZhc2NyaXB0LXN0cmluZywqCi13ZWJraXQtamF2
YXNjcmlwdC1zdHJpbmcsKgotd2Via2l0LWphdmFzY3JpcHQtc3RyaW5nLCoKLXdlYmtpdC1qYXZh
c2NyaXB0LWlkZW50LHdlYmtpdC1qYXZhc2NyaXB0LWNvbW1lbnQsd2Via2l0LWphdmFzY3JpcHQt
aWRlbnQKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2phdmFzY3JpcHQtc3lu
dGF4LWhpZ2hsaWdodC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2phdmFzY3JpcHQtc3lu
dGF4LWhpZ2hsaWdodC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OGQ0NmQ2
Li4wMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9qYXZhc2NyaXB0LXN5bnRheC1o
aWdobGlnaHQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLTxodG1sPgotPGhl
YWQ+Ci08c2NyaXB0IHNyYz0iZXZhbHVhdGUtaW4tZnJvbnRlbmQuanMiPjwvc2NyaXB0PgotPHNj
cmlwdD4KLQotZnVuY3Rpb24gZG9pdCgpCi17Ci0gICAgZnVuY3Rpb24gY2FsbGJhY2socmVzdWx0
KQotICAgIHsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXN1bHQubGVuZ3RoOyArK2kp
Ci0gICAgICAgICAgICBvdXRwdXQocmVzdWx0W2ldKTsKLSAgICAgICAgbm90aWZ5RG9uZSgpOwot
ICAgIH0KLSAgICBldmFsdWF0ZUluV2ViSW5zcGVjdG9yKCJkb2l0QW5kRHVtcCIsIGNhbGxiYWNr
KTsKLX0KLQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci0KLTxib2R5IG9ubG9hZD0ib25sb2FkKCkiPgot
PHA+Ci1UZXN0cyB0aGF0IEphdmFTY3JpcHRTb3VyY2VTeW50YXhIaWdobGlnaHRlciBkZXRlY3Rz
IHRoZSB0b2tlbnMuCi08L3A+Ci0KLTxkaXYgaWQ9ImZyb250ZW5kLXNjcmlwdCIgc3R5bGU9ImRp
c3BsYXk6bm9uZSI+Ci1mdW5jdGlvbiBkb2l0QW5kRHVtcCh0ZXN0Q29udHJvbGxlcikgewotICAg
IHRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgewotICAgICAgICB2YXIgcmVzdWx0ID0gW107Ci0gICAgICAgIAotICAgICAgICByZXN1bHQu
cHVzaChkdW1wU3ludGF4SGlnaGxpZ2h0KCJyZXR1cm4nZm9vJzsiKSk7Ci0gICAgICAgIHJlc3Vs
dC5wdXNoKGR1bXBTeW50YXhIaWdobGlnaHQoIi9cXFwvL2ciKSk7Ci0gICAgICAgIHJlc3VsdC5w
dXNoKGR1bXBTeW50YXhIaWdobGlnaHQoIi8vaWcnOyIpKTsKLSAgICAgICAgcmVzdWx0LnB1c2go
ZHVtcFN5bnRheEhpZ2hsaWdodCgiMSAvIDIgKyAvYS8udGVzdCgnYScpOyIpKTsKLSAgICAgICAg
cmVzdWx0LnB1c2goZHVtcFN5bnRheEhpZ2hsaWdodCgiXCJcXFwiL1wiLmxlbmd0aCAvIDIiKSk7
Ci0gICAgICAgIHJlc3VsdC5wdXNoKGR1bXBTeW50YXhIaWdobGlnaHQoInZhciBmb28gPSAxLyov
KioqLy8yIikpOwotICAgICAgICByZXN1bHQucHVzaChkdW1wU3ludGF4SGlnaGxpZ2h0KCIvKmNv
bW1lbnQqLy8uKi8udGVzdCgnYScpIikpOwotICAgICAgICByZXN1bHQucHVzaChkdW1wU3ludGF4
SGlnaGxpZ2h0KCInZlxcXG5vbyc7IikpOwotICAgICAgICByZXN1bHQucHVzaChkdW1wU3ludGF4
SGlnaGxpZ2h0KCInXFxmXFxiXFx0JzsiKSk7Ci0gICAgICAgIHJlc3VsdC5wdXNoKGR1bXBTeW50
YXhIaWdobGlnaHQoIicvXFxcbi8nOyIpKTsKLSAgICAgICAgcmVzdWx0LnB1c2goZHVtcFN5bnRh
eEhpZ2hsaWdodCgiZm9vLyoqXG4vXG4qL2ZvbyIpKTsKLSAgICAgICAgCi0gICAgICAgIHRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUocmVzdWx0KTsKLSAgICAgICAgCi0gICAgfSwgMCk7Ci19Ci1m
dW5jdGlvbiBkdW1wU3ludGF4SGlnaGxpZ2h0KHN0cikgewotICAgIHZhciBub2RlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwotICAgIG5vZGUudGV4dENvbnRlbnQgPSBzdHI7Ci0g
ICAgdmFyIGphdmFzY3JpcHRTeW50YXhIaWdobGlnaHRlciA9IG5ldyBXZWJJbnNwZWN0b3IuSmF2
YVNjcmlwdFNvdXJjZVN5bnRheEhpZ2hsaWdodGVyKG51bGwsIG51bGwpOwotICAgIGphdmFzY3Jp
cHRTeW50YXhIaWdobGlnaHRlci5zeW50YXhIaWdobGlnaHROb2RlKG5vZGUpOwotICAgIHZhciBu
b2RlX3BhcnRzID0gW107Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlLmNoaWxkTm9kZXMu
bGVuZ3RoOyBpKyspIHsKLSAgICAgICAgaWYgKG5vZGUuY2hpbGROb2Rlc1tpXS5nZXRBdHRyaWJ1
dGUpIHsKLSAgICAgICAgICAgIG5vZGVfcGFydHMucHVzaChub2RlLmNoaWxkTm9kZXNbaV0uZ2V0
QXR0cmlidXRlKCJjbGFzcyIpKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG5vZGVf
cGFydHMucHVzaCgiKiIpOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBub2RlX3BhcnRz
LmpvaW4oIiwiKTsKLX0KLTwvZGl2PgotCi08ZGl2IGlkPSJvdXRwdXQiPgotPC9kaXY+Ci0KLTwv
Ym9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMt
aWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzLWlmcmFtZS5odG1sCmlu
ZGV4IDE2ZjM1YzEuLjc3NWU5MDggMTAwNzU1Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9z
dHlsZXMtaWZyYW1lLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy1pZnJh
bWUuaHRtbApAQCAtNSw3ICs1LDggQEAKICAgYm9keSB7IGJhY2tncm91bmQ6Ymx1ZTsgfQogPC9z
dHlsZT4KIAotPHNjcmlwdCBzcmM9ImV2YWx1YXRlLWluLWZyb250ZW5kLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJpbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
ZWxlbWVudHMtdGVzdHMuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KIAogZnVuY3Rpb24gcnVuQWZ0
ZXJJZnJhbWVJc0xvYWRlZChjb250aW51YXRpb24pCkBAIC0zNCwzNCArMzUsMjUgQEAgZnVuY3Rp
b24gZG9pdCgpCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBub3RpZnlEb25lKCk7CiAgICAg
ICAgIH0KLSAgICAgICAgZXZhbHVhdGVJbldlYkluc3BlY3RvcigiZHVtcFN0eWxlcyIsIGNhbGxi
YWNrKTsKKyAgICAgICAgZXZhbHVhdGVJbldlYkluc3BlY3RvcigiZnJvbnRlbmRTY3JpcHRfZHVt
cFN0eWxlcyIsIGNhbGxiYWNrKTsKICAgICB9KTsKIH0KIAotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci0K
LTxib2R5IG9ubG9hZD0ib25sb2FkKCkiPgotPHA+Ci1UZXN0cyB0aGF0IHByb3BlciAoYW5kIGRp
ZmZlcmVudCkgc3R5bGVzIGFyZSByZXR1cm5lZCBmb3IgYm9keSBlbGVtZW50cyBvZiBtYWluIGRv
Y3VtZW50IGFuZCBpZnJhbWUuCi08L3A+Ci0KLTxpZnJhbWUgc3JjPSdyZXNvdXJjZXMvc3R5bGVz
LWlmcmFtZS1kYXRhLmh0bWwnPjwvaWZyYW1lPgogCi08ZGl2IGlkPSJmcm9udGVuZC1zY3JpcHQi
IHN0eWxlPSJkaXNwbGF5Om5vbmUiPgorLy9Gcm9udGVuIGZ1bmN0aW9ucy4KIAotZnVuY3Rpb24g
ZHVtcFN0eWxlcyh0ZXN0Q29udHJvbGxlcikKK2Z1bmN0aW9uIGZyb250ZW5kU2NyaXB0X2R1bXBT
dHlsZXModGVzdENvbnRyb2xsZXIpCiB7CiAgICAgdGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9u
ZSgpOwogCi0gICAgZXhwYW5kRE9NU3VidHJlZShXZWJJbnNwZWN0b3IuZG9tQWdlbnQuZG9jdW1l
bnQpOworICAgIGZyb250ZW5kU2NyaXB0X2V4cGFuZERPTVN1YnRyZWUoV2ViSW5zcGVjdG9yLmRv
bUFnZW50LmRvY3VtZW50KTsKIAogICAgIHRlc3RDb250cm9sbGVyLnJ1bkFmdGVyUGVuZGluZ0Rp
c3BhdGNoZXMoZnVuY3Rpb24oKSB7Ci0gICAgICAgIGR1bXBTdHlsZXNDb250aW51YXRpb24odGVz
dENvbnRyb2xsZXIpOworICAgICAgICBmcm9udGVuZFNjcmlwdF9kdW1wU3R5bGVzQ29udGludWF0
aW9uKHRlc3RDb250cm9sbGVyKTsKICAgICB9KTsKIH0KIAotZnVuY3Rpb24gZHVtcFN0eWxlc0Nv
bnRpbnVhdGlvbih0ZXN0Q29udHJvbGxlcikKK2Z1bmN0aW9uIGZyb250ZW5kU2NyaXB0X2R1bXBT
dHlsZXNDb250aW51YXRpb24odGVzdENvbnRyb2xsZXIpCiB7CiAgICAgLy8gMS4gR2V0IHN0eWxl
cyBmb3IgYm9keSwgc3RvcmUgdGhlbSBpbiBtYWluU3R5bGVzIHZhci4KICAgICB2YXIgYm9keUlk
ID0gV2ViSW5zcGVjdG9yLmRvbUFnZW50LmRvY3VtZW50LmJvZHkuaWQ7CkBAIC05MCwxMCArODIs
MTYgQEAgZnVuY3Rpb24gZHVtcFN0eWxlc0NvbnRpbnVhdGlvbih0ZXN0Q29udHJvbGxlcikKICAg
ICB9CiAgICAgSW5qZWN0ZWRTY3JpcHRBY2Nlc3MuZ2V0U3R5bGVzKGlmcmFtZUJvZHlJZCwgZmFs
c2UsIGlmcmFtZUNhbGxiYWNrKTsKIH0KLTwvZGl2PgogCi08ZGl2IGlkPSJvdXRwdXQiPgotPC9k
aXY+Cis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJvbmxvYWQoKSI+Cis8cD4K
K1Rlc3RzIHRoYXQgcHJvcGVyIChhbmQgZGlmZmVyZW50KSBzdHlsZXMgYXJlIHJldHVybmVkIGZv
ciBib2R5IGVsZW1lbnRzIG9mIG1haW4gZG9jdW1lbnQgYW5kIGlmcmFtZS4KKzwvcD4KKworPGlm
cmFtZSBzcmM9J3Jlc291cmNlcy9zdHlsZXMtaWZyYW1lLWRhdGEuaHRtbCc+PC9pZnJhbWU+CiAK
IDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zeW50
YXgtaGlnaGxpZ2h0LWNzcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3lu
dGF4LWhpZ2hsaWdodC1jc3MtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjNmMzA2N2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3Ivc3ludGF4LWhpZ2hsaWdodC1jc3MtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1Rl
c3RzIHRoYXQgQ1NTU291cmNlU3ludGF4SGlnaGxpZ2h0ZXIgZGV0ZWN0cyB0aGUgdG9rZW5zLgor
Cit3ZWJraXQtY3NzLXNlbGVjdG9yCit3ZWJraXQtY3NzLXNlbGVjdG9yLCosd2Via2l0LWNzcy1z
ZWxlY3Rvcgord2Via2l0LWNzcy1hdC1ydWxlLCosd2Via2l0LWNzcy11cmwsKgord2Via2l0LWNz
cy1hdC1ydWxlLCosd2Via2l0LWNzcy11cmwsKix3ZWJraXQtY3NzLWtleXdvcmQsKix3ZWJraXQt
Y3NzLWtleXdvcmQsKgord2Via2l0LWNzcy1hdC1ydWxlLCosd2Via2l0LWNzcy1rZXl3b3JkLCos
d2Via2l0LWNzcy1zZWxlY3RvciwqLHdlYmtpdC1jc3MtcHJvcGVydHksKix3ZWJraXQtY3NzLWtl
eXdvcmQsKgord2Via2l0LWNzcy1hdC1ydWxlLCosd2Via2l0LWNzcy1wcm9wZXJ0eSwqCit3ZWJr
aXQtY3NzLXNlbGVjdG9yLCosd2Via2l0LWNzcy1wcm9wZXJ0eSwqLHdlYmtpdC1jc3Mta2V5d29y
ZCwqCit3ZWJraXQtY3NzLXNlbGVjdG9yLCosd2Via2l0LWNzcy1wcm9wZXJ0eSwqLHdlYmtpdC1j
c3Mta2V5d29yZCwqLHdlYmtpdC1jc3MtaW1wb3J0YW50LCoKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL3N5bnRheC1oaWdobGlnaHQtY3NzLmh0bWwgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3Ivc3ludGF4LWhpZ2hsaWdodC1jc3MuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi41ZDMwZTU4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3N5bnRheC1oaWdobGlnaHQtY3NzLmh0bWwKQEAgLTAsMCArMSwzNiBAQAorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJpbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0ic3ludGF4LWhpZ2hsaWdodC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCisvLyBG
cm9udGVuZCBmdW5jdGlvbnMuCisKK2Z1bmN0aW9uIGZyb250ZW5kU2NyaXB0X2R1bXBTeW50YXhI
aWdobGlnaHRDU1Moc3RyKQoreworICAgIHJldHVybiBmcm9udGVuZFNjcmlwdF9kdW1wU3ludGF4
SGlnaGxpZ2h0KHN0ciwgV2ViSW5zcGVjdG9yLkNTU1NvdXJjZVN5bnRheEhpZ2hsaWdodGVyKTsK
K30KKworZnVuY3Rpb24gZnJvbnRlbmRTY3JpcHRfZG9pdEFuZER1bXAoKSB7CisgICAgdmFyIHJl
c3VsdCA9IFtdOworICAgIHJlc3VsdC5wdXNoKGZyb250ZW5kU2NyaXB0X2R1bXBTeW50YXhIaWdo
bGlnaHRDU1MoImFbaHJlZj0nLyddIikpOworICAgIHJlc3VsdC5wdXNoKGZyb250ZW5kU2NyaXB0
X2R1bXBTeW50YXhIaWdobGlnaHRDU1MoIiNjb250ZW50ID4gYTpob3ZlciIpKTsKKyAgICByZXN1
bHQucHVzaChmcm9udGVuZFNjcmlwdF9kdW1wU3ludGF4SGlnaGxpZ2h0Q1NTKCJAaW1wb3J0IHVy
bChzdHlsZS5jc3MpOyIpKTsKKyAgICByZXN1bHQucHVzaChmcm9udGVuZFNjcmlwdF9kdW1wU3lu
dGF4SGlnaGxpZ2h0Q1NTKCJAaW1wb3J0IHVybChcInN0eWxlLmNzc1wiKSBwcm9qZWN0aW9uLCB0
djsiKSk7CisgICAgcmVzdWx0LnB1c2goZnJvbnRlbmRTY3JpcHRfZHVtcFN5bnRheEhpZ2hsaWdo
dENTUygiQG1lZGlhIHNjcmVlbiB7IGJvZHkgeyBjb2xvcjogcmVkOyB9IH0iKSk7CisgICAgcmVz
dWx0LnB1c2goZnJvbnRlbmRTY3JpcHRfZHVtcFN5bnRheEhpZ2hsaWdodENTUygiQGZvbnQtZmFj
ZSB7IGZvbnQtZmFtaWx5OiBNeUhlbHZldGljYTsgfSIpKTsKKyAgICByZXN1bHQucHVzaChmcm9u
dGVuZFNjcmlwdF9kdW1wU3ludGF4SGlnaGxpZ2h0Q1NTKCJwIHsgY29sb3I6IGNvbG9yOyByZWQ6
IHJlZDsgfSIpKTsKKyAgICByZXN1bHQucHVzaChmcm9udGVuZFNjcmlwdF9kdW1wU3ludGF4SGln
aGxpZ2h0Q1NTKCJwIHsgY29sb3I6IHJlZCAhaW1wb3J0YW50OyB9IikpOworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9Im9ubG9hZCgp
Ij4KKzxwPgorVGVzdHMgdGhhdCBDU1NTb3VyY2VTeW50YXhIaWdobGlnaHRlciBkZXRlY3RzIHRo
ZSB0b2tlbnMuCis8L3A+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9zeW50YXgtaGlnaGxpZ2h0LWphdmFzY3JpcHQtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N5bnRheC1oaWdobGlnaHQtamF2YXNjcmlwdC1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODhjMTBjZgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zeW50YXgtaGlnaGxpZ2h0LWphdmFz
Y3JpcHQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgSmF2YVNjcmlw
dFNvdXJjZVN5bnRheEhpZ2hsaWdodGVyIGRldGVjdHMgdGhlIHRva2Vucy4KKword2Via2l0LWph
dmFzY3JpcHQta2V5d29yZCx3ZWJraXQtamF2YXNjcmlwdC1zdHJpbmcsKgord2Via2l0LWphdmFz
Y3JpcHQtcmVnZXhwCit3ZWJraXQtamF2YXNjcmlwdC1jb21tZW50Cit3ZWJraXQtamF2YXNjcmlw
dC1udW1iZXIsKix3ZWJraXQtamF2YXNjcmlwdC1udW1iZXIsKix3ZWJraXQtamF2YXNjcmlwdC1y
ZWdleHAsKix3ZWJraXQtamF2YXNjcmlwdC1pZGVudCwqLHdlYmtpdC1qYXZhc2NyaXB0LXN0cmlu
ZywqCit3ZWJraXQtamF2YXNjcmlwdC1zdHJpbmcsKix3ZWJraXQtamF2YXNjcmlwdC1pZGVudCwq
LHdlYmtpdC1qYXZhc2NyaXB0LW51bWJlcgord2Via2l0LWphdmFzY3JpcHQta2V5d29yZCwqLHdl
YmtpdC1qYXZhc2NyaXB0LWlkZW50LCosd2Via2l0LWphdmFzY3JpcHQtbnVtYmVyLHdlYmtpdC1q
YXZhc2NyaXB0LWNvbW1lbnQsKix3ZWJraXQtamF2YXNjcmlwdC1udW1iZXIKK3dlYmtpdC1qYXZh
c2NyaXB0LWNvbW1lbnQsd2Via2l0LWphdmFzY3JpcHQtcmVnZXhwLCosd2Via2l0LWphdmFzY3Jp
cHQtaWRlbnQsKix3ZWJraXQtamF2YXNjcmlwdC1zdHJpbmcsKgord2Via2l0LWphdmFzY3JpcHQt
c3RyaW5nLCoKK3dlYmtpdC1qYXZhc2NyaXB0LXN0cmluZywqCit3ZWJraXQtamF2YXNjcmlwdC1z
dHJpbmcsKgord2Via2l0LWphdmFzY3JpcHQtaWRlbnQsd2Via2l0LWphdmFzY3JpcHQtY29tbWVu
dCx3ZWJraXQtamF2YXNjcmlwdC1pZGVudAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3Ivc3ludGF4LWhpZ2hsaWdodC1qYXZhc2NyaXB0Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3Ivc3ludGF4LWhpZ2hsaWdodC1qYXZhc2NyaXB0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uNGJmNzFhYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9zeW50YXgtaGlnaGxpZ2h0LWphdmFzY3JpcHQuaHRtbApAQCAtMCwwICsxLDQw
IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Imluc3BlY3Rvci10ZXN0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJzeW50YXgtaGlnaGxpZ2h0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQ+CisKKy8vRnJvbnRlbmQgZnVuY3Rpb25zLgorCitmdW5jdGlvbiBmcm9udGVuZFNjcmlwdF9k
dW1wU3ludGF4SGlnaGxpZ2h0SlMoc3RyKQoreworICAgIHJldHVybiBmcm9udGVuZFNjcmlwdF9k
dW1wU3ludGF4SGlnaGxpZ2h0KHN0ciwgV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRTb3VyY2VTeW50
YXhIaWdobGlnaHRlcik7Cit9CisKK2Z1bmN0aW9uIGZyb250ZW5kU2NyaXB0X2RvaXRBbmREdW1w
KCkgeworICAgIHZhciByZXN1bHQgPSBbXTsKKyAgICAKKyAgICByZXN1bHQucHVzaChmcm9udGVu
ZFNjcmlwdF9kdW1wU3ludGF4SGlnaGxpZ2h0SlMoInJldHVybidmb28nOyIpKTsKKyAgICByZXN1
bHQucHVzaChmcm9udGVuZFNjcmlwdF9kdW1wU3ludGF4SGlnaGxpZ2h0SlMoIi9cXFwvL2ciKSk7
CisgICAgcmVzdWx0LnB1c2goZnJvbnRlbmRTY3JpcHRfZHVtcFN5bnRheEhpZ2hsaWdodEpTKCIv
L2lnJzsiKSk7CisgICAgcmVzdWx0LnB1c2goZnJvbnRlbmRTY3JpcHRfZHVtcFN5bnRheEhpZ2hs
aWdodEpTKCIxIC8gMiArIC9hLy50ZXN0KCdhJyk7IikpOworICAgIHJlc3VsdC5wdXNoKGZyb250
ZW5kU2NyaXB0X2R1bXBTeW50YXhIaWdobGlnaHRKUygiXCJcXFwiL1wiLmxlbmd0aCAvIDIiKSk7
CisgICAgcmVzdWx0LnB1c2goZnJvbnRlbmRTY3JpcHRfZHVtcFN5bnRheEhpZ2hsaWdodEpTKCJ2
YXIgZm9vID0gMS8qLyoqKi8vMiIpKTsKKyAgICByZXN1bHQucHVzaChmcm9udGVuZFNjcmlwdF9k
dW1wU3ludGF4SGlnaGxpZ2h0SlMoIi8qY29tbWVudCovLy4qLy50ZXN0KCdhJykiKSk7CisgICAg
cmVzdWx0LnB1c2goZnJvbnRlbmRTY3JpcHRfZHVtcFN5bnRheEhpZ2hsaWdodEpTKCInZlxcXG5v
byc7IikpOworICAgIHJlc3VsdC5wdXNoKGZyb250ZW5kU2NyaXB0X2R1bXBTeW50YXhIaWdobGln
aHRKUygiJ1xcZlxcYlxcdCc7IikpOworICAgIHJlc3VsdC5wdXNoKGZyb250ZW5kU2NyaXB0X2R1
bXBTeW50YXhIaWdobGlnaHRKUygiJy9cXFxuLyc7IikpOworICAgIHJlc3VsdC5wdXNoKGZyb250
ZW5kU2NyaXB0X2R1bXBTeW50YXhIaWdobGlnaHRKUygiZm9vLyoqXG4vXG4qL2ZvbyIpKTsKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHkgb25sb2Fk
PSJvbmxvYWQoKSI+Cis8cD4KK1Rlc3RzIHRoYXQgSmF2YVNjcmlwdFNvdXJjZVN5bnRheEhpZ2hs
aWdodGVyIGRldGVjdHMgdGhlIHRva2Vucy4KKzwvcD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N5bnRheC1oaWdobGlnaHQuanMgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3Ivc3ludGF4LWhpZ2hsaWdodC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi41NmQ0YzFlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3N5bnRheC1oaWdobGlnaHQuanMKQEAgLTAsMCArMSwzMSBAQAorLy8gSW5zcGVj
dGVkIFBhZ2UgZnVuY3Rpb25zLgorCitmdW5jdGlvbiBkb2l0KCkKK3sKKyAgICBmdW5jdGlvbiBj
YWxsYmFjayhyZXN1bHQpCisgICAgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc3Vs
dC5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIG91dHB1dChyZXN1bHRbaV0pOworICAgICAgICBu
b3RpZnlEb25lKCk7CisgICAgfQorICAgIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoImZyb250ZW5k
U2NyaXB0X2RvaXRBbmREdW1wIiwgY2FsbGJhY2spOworfQorCisvLyBGcm9udGVuZCBmdW5jdGlv
bnMuCisKK2Z1bmN0aW9uIGZyb250ZW5kU2NyaXB0X2R1bXBTeW50YXhIaWdobGlnaHQoc3RyLCBo
aWdobGlnaHRlckNvbnN0cnVjdG9yKQoreworICAgIHZhciBub2RlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgic3BhbiIpOworICAgIG5vZGUudGV4dENvbnRlbnQgPSBzdHI7CisgICAgdmFyIGph
dmFzY3JpcHRTeW50YXhIaWdobGlnaHRlciA9IG5ldyBoaWdobGlnaHRlckNvbnN0cnVjdG9yKG51
bGwsIG51bGwpOworICAgIGphdmFzY3JpcHRTeW50YXhIaWdobGlnaHRlci5zeW50YXhIaWdobGln
aHROb2RlKG5vZGUpOworICAgIHZhciBub2RlX3BhcnRzID0gW107CisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBub2RlLmNoaWxkTm9kZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYgKG5vZGUu
Y2hpbGROb2Rlc1tpXS5nZXRBdHRyaWJ1dGUpIHsKKyAgICAgICAgICAgIG5vZGVfcGFydHMucHVz
aChub2RlLmNoaWxkTm9kZXNbaV0uZ2V0QXR0cmlidXRlKCJjbGFzcyIpKTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIG5vZGVfcGFydHMucHVzaCgiKiIpOworICAgICAgICB9CisgICAg
fQorICAgIHJldHVybiBub2RlX3BhcnRzLmpvaW4oIiwiKTsKK30KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS10cml2aWFsLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvdGltZWxpbmUtdHJpdmlhbC5odG1sCmluZGV4IDkzZThhMGQuLjUzMmRmZWEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS10cml2aWFsLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLXRyaXZpYWwuaHRtbApAQCAtMSw2ICsxLDYg
QEAKIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iZXZhbHVhdGUtaW4tZnJvbnRlbmQuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Imluc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQ+CiAKIGZ1bmN0aW9uIGRvaXQoKQpAQCAtMTIsMjYgKzEyLDIzIEBAIGZ1bmN0aW9uIGRv
aXQoKQogICAgIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoInN0YXJ0VGltZWxpbmUoKSIsIGNhbGxi
YWNrKTsKIH0KIAotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci0KLTxib2R5IG9ubG9hZD0ib25sb2FkKCki
PgotPHA+IAotVHJpdmlhbCB1c2Ugb2YgaW5zcGVjdG9yIGZyb250ZW5kIHRlc3RzIAotPC9wPgog
Ci08ZGl2IGlkPSJmcm9udGVuZC1zY3JpcHQiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPgorLy8gRnJv
bnRlbiBmdW5jdGlvbnMuCiAKLWZ1bmN0aW9uIHN0YXJ0VGltZWxpbmUoKSB7CitmdW5jdGlvbiBm
cm9udGVuZFNjcmlwdF9zdGFydFRpbWVsaW5lKCkgewogICAgIC8qIFRoaXMgdGVzdCBzZWVtcyBz
aWxseSwgYnV0IG9yaWdpbmFsbHkgaXQgdGlja2xlZCBidWcgMzEwODAgKi8KICAgICBJbnNwZWN0
b3JDb250cm9sbGVyLnN0YXJ0VGltZWxpbmVQcm9maWxlcigpOwogICAgIHJldHVybiB0cnVlOwog
fQogCi08L2Rpdj4KIAotPGRpdiBpZD0ib3V0cHV0Ij4KLTwvZGl2PgorPC9zY3JpcHQ+Cis8L2hl
YWQ+CisKKzxib2R5IG9ubG9hZD0ib25sb2FkKCkiPgorPHA+IAorVHJpdmlhbCB1c2Ugb2YgaW5z
cGVjdG9yIGZyb250ZW5kIHRlc3RzIAorPC9wPgogCiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vcXQvU2tpcHBlZAppbmRleCBmOTNjZGY1Li45OTA4OWFjIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1Nr
aXBwZWQKQEAgLTExNiw5ICsxMTYsOSBAQCBmYXN0L3RleHQvZmluZC1oaWRkZW4tdGV4dC5odG1s
CiAKICMgTWlzc2luZyBsYXlvdXRUZXN0Q29udHJvbGxlci5zaG93V2ViSW5zcGVjdG9yKCkKIGlu
c3BlY3Rvci9jb25zb2xlLWZvcm1hdC1jb2xsZWN0aW9ucy5odG1sCi1pbnNwZWN0b3IvY3NzLXN5
bnRheC1oaWdobGlnaHQuaHRtbAotaW5zcGVjdG9yL2phdmFzY3JpcHQtc3ludGF4LWhpZ2hsaWdo
dC5odG1sCiBpbnNwZWN0b3Ivc3R5bGVzLWlmcmFtZS5odG1sCitpbnNwZWN0b3Ivc3ludGF4LWhp
Z2hsaWdodC1jc3MuaHRtbAoraW5zcGVjdG9yL3N5bnRheC1oaWdobGlnaHQtamF2YXNjcmlwdC5o
dG1sCiBpbnNwZWN0b3IvdGltZWxpbmUtdHJpdmlhbC5odG1sCiBpbnNwZWN0b3IvdW5jYXVnaHQt
ZG9tMS1leGNlcHRpb24uaHRtbAogaW5zcGVjdG9yL3VuY2F1Z2h0LWRvbTMtZXhjZXB0aW9uLmh0
bWwK
</data>
<flag name="review"
          id="24157"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>