<?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>26549</bug_id>
          
          <creation_ts>2009-06-19 11:08:00 -0700</creation_ts>
          <short_desc>Web Inspector needs a testing infrastructure</short_desc>
          <delta_ts>2009-11-08 08:19:27 -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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>30008</dependson>
    
    <dependson>30009</dependson>
    
    <dependson>30010</dependson>
    
    <dependson>30014</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kevin McCullough">kmccullough</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>126964</commentid>
    <comment_count>0</comment_count>
    <who name="Kevin McCullough">kmccullough</who>
    <bug_when>2009-06-19 11:08:00 -0700</bug_when>
    <thetext>* SUMMARY
We have many involved and highly promoted features in the Web Inspector but with almost no way to test most of them.  (e.g. the JS debugger and profiler)

We should build a testing infrastructure similar to DRT that allows the Inspector to be tested with simple JS and HTML files so that developers can create tests like the LayoutTests, and make them easy to run by developers and the build bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127031</commentid>
    <comment_count>1</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2009-06-19 13:58:53 -0700</bug_when>
    <thetext>&lt;rdar://problem/6988926&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151246</commentid>
    <comment_count>2</comment_count>
      <attachid>40370</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-09-30 07:45:26 -0700</bug_when>
    <thetext>Created attachment 40370
testing harness

This patch contains two test cases and the harness implementation for the Mac. I&apos;d like to get your feedback on it before I extract WebInspectorPrivate.h and jump into implementing it for other platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151541</commentid>
    <comment_count>3</comment_count>
      <attachid>40370</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-10-01 07:47:50 -0700</bug_when>
    <thetext>Comment on attachment 40370
testing harness

Some tabs in evaluate-in-frontend.js.

&gt; +	var output = document.getElementById(&quot;output&quot;);
&gt; +    output.innerHTML += text + &quot;&lt;BR&gt;&quot;;

Stray space.

&gt; +    void testEvaluateInFrontend(long callId, const String&amp; script);

These functions with &quot;testEvaluate&quot; read funny. I think &quot;evaluateTest&quot; would read better. Since I read it as &quot;evaluate this test&quot;, not &quot;test the evaluate&quot;.

&gt; +    Vector&lt;pair&lt;long, String&gt; &gt; m_pendingTestEvaluateInFrontendCommands;

Maybe m_pendingEvaluateTestCommands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151670</commentid>
    <comment_count>4</comment_count>
      <attachid>40470</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-10-01 12:48:37 -0700</bug_when>
    <thetext>Created attachment 40470
testing harness #2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151672</commentid>
    <comment_count>5</comment_count>
      <attachid>40472</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-10-01 12:52:04 -0700</bug_when>
    <thetext>Created attachment 40472
testing harness #2 with waitToDumpWatchdogInterval rolled back to original value

Note that this patch requires additional testing on non-Mac platforms prior to landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151829</commentid>
    <comment_count>6</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-10-02 04:39:15 -0700</bug_when>
    <thetext>I am splitting this patch into several ones:
https://bugs.webkit.org/show_bug.cgi?id=30008
https://bugs.webkit.org/show_bug.cgi?id=30009
https://bugs.webkit.org/show_bug.cgi?id=30010
https://bugs.webkit.org/show_bug.cgi?id=30014</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151905</commentid>
    <comment_count>7</comment_count>
      <attachid>40472</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-10-02 11:12:05 -0700</bug_when>
    <thetext>Comment on attachment 40472
testing harness #2 with waitToDumpWatchdogInterval rolled back to original value

Clearing the review flag since this patch has been split.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40370</attachid>
            <date>2009-09-30 07:45:26 -0700</date>
            <delta_ts>2009-10-01 12:48:37 -0700</delta_ts>
            <desc>testing harness</desc>
            <filename>testing_harness</filename>
            <type>text/plain</type>
            <size>20082</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy1wYW5lbC1zdHJ1Y3R1
cmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXBhbmVsLXN0
cnVjdHVyZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
MTlhNTI3MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50
cy1wYW5lbC1zdHJ1Y3R1cmUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1Rlc3RzIHRo
YXQgZWxlbWVudHMgcGFuZWwgc2hvd3MgZG9tIHRyZWUgc3RydWN0dXJlLgorCisKKzxodG1sPgor
PGhlYWQ+Cis8Ym9keSBvbmxvYWQ9Im9ubG9hZCI+Cis8cD5UZXN0cyB0aGF0IGVsZW1lbnRzIHBh
bmVsIHNob3dzIGRvbSB0cmVlIHN0cnVjdHVyZQorPC9wPgorPGRpdiBpZD0iZnJvbnRlbmRzY3Jp
cHQiIHN0eWxlPSJkaXNwbGF5bm9uZSI+Cis8cHJlIGlkPSJvdXRwdXQiPgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXBhbmVsLXN0
cnVjdHVyZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXBhbmVsLXN0cnVj
dHVyZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhNjdmNTMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtcGFuZWwtc3Ry
dWN0dXJlLmh0bWwKQEAgLTAsMCArMSwzMiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSJldmFsdWF0ZS1pbi1mcm9udGVuZC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlv
biBkb2l0KCkKK3sKKyAgICBmdW5jdGlvbiBjYWxsYmFjayhyZXN1bHQpCisgICAgeworICAgICAg
ICB2YXIgb3V0cHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm91dHB1dCIpOworICAgICAg
ICBvdXRwdXQudGV4dENvbnRlbnQgPSByZXN1bHQucmVwbGFjZSgvW15hLXpBLVowLTk8Pi89XCIg
XS9nLCAiIikucmVwbGFjZSgvPC9nLCAiXG48Iik7CisgICAgICAgIG5vdGlmeURvbmUoKTsKKyAg
ICB9CisgICAgZXZhbHVhdGVJbldlYkluc3BlY3RvcigiV2ViSW5zcGVjdG9yLnBhbmVscy5lbGVt
ZW50cy50cmVlT3V0bGluZS5lbGVtZW50LnRleHRDb250ZW50IiwgY2FsbGJhY2spOworfQorCis8
L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJvbmxvYWQoKSI+Cis8cD4KK1Rlc3Rz
IHRoYXQgZWxlbWVudHMgcGFuZWwgc2hvd3MgZG9tIHRyZWUgc3RydWN0dXJlLgorPC9wPgorCis8
ZGl2IGlkPSJmcm9udGVuZC1zY3JpcHQiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPgorPC9kaXY+CisK
KzxwcmUgaWQ9Im91dHB1dCI+Cis8L3ByZT4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V2YWx1YXRlLWluLWZyb250ZW5kLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9ldmFsdWF0ZS1pbi1mcm9udGVuZC1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTg3NTJkZgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9ldmFsdWF0ZS1pbi1mcm9udGVuZC1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSw0IEBACitUaGlzIHRlc3RzIHRoYXQgbGF5b3V0IHRlc3QgY2Fu
IGV2YWx1YXRlIHNjcmlwdHMgaW4gdGhlIHdlYiBpbnNwZWN0b3IgY29udGV4dC4KKworMiArIDIg
PSA0CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9ldmFsdWF0ZS1pbi1mcm9u
dGVuZC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V2YWx1YXRlLWluLWZyb250ZW5kLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDUxYTk1NwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9ldmFsdWF0ZS1pbi1mcm9udGVuZC5odG1s
CkBAIC0wLDAgKzEsMzUgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iZXZhbHVhdGUt
aW4tZnJvbnRlbmQuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZnVuY3Rpb24gZG9pdCgpCit7
CisgICAgZnVuY3Rpb24gY2FsbGJhY2socmVzdWx0KQorICAgIHsKKyAgICAgICAgb3V0cHV0KCIy
ICsgMiA9ICIgKyByZXN1bHQpOworICAgICAgICBub3RpZnlEb25lKCk7CisgICAgfQorICAgIGV2
YWx1YXRlSW5XZWJJbnNwZWN0b3IoInN1bSgyLCAyKSIsIGNhbGxiYWNrKTsKK30KKworPC9zY3Jp
cHQ+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0ib25sb2FkKCkiPgorPHA+CitUaGlzIHRlc3Rz
IHRoYXQgbGF5b3V0IHRlc3QgY2FuIGV2YWx1YXRlIHNjcmlwdHMgaW4gdGhlIHdlYiBpbnNwZWN0
b3IgY29udGV4dC4KKzwvcD4KKworPGRpdiBpZD0iZnJvbnRlbmQtc2NyaXB0IiBzdHlsZT0iZGlz
cGxheTpub25lIj4KK2Z1bmN0aW9uIHN1bShhLCBiKQoreworICAgIHJldHVybiBhICsgYjsKK30K
KzwvZGl2PgorCis8ZGl2IGlkPSJvdXRwdXQiPgorPC9kaXY+CisKKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9ldmFsdWF0ZS1pbi1mcm9udGVuZC5q
cyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9ldmFsdWF0ZS1pbi1mcm9udGVuZC5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kODdjZmZlCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V2YWx1YXRlLWluLWZyb250ZW5kLmpzCkBAIC0wLDAgKzEs
NDYgQEAKK3ZhciBsYXN0Q2FsbElkID0gMDsKK3ZhciBjYWxsYmFja3MgPSB7fTsKKworZnVuY3Rp
b24gZXZhbHVhdGVJbldlYkluc3BlY3RvcihzY3JpcHQsIGNhbGxiYWNrKQoreworCWlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgY2FsbGJhY2tzW2xhc3RDYWxsSWRd
ID0gY2FsbGJhY2s7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmV2YWx1YXRlSW5XZWJJ
bnNwZWN0b3IobGFzdENhbGxJZCsrLCBzY3JpcHQpOyAgICAKKwl9Cit9CisKK2Z1bmN0aW9uIG9u
bG9hZCgpCit7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5zaG93V2ViSW5zcGVjdG9yKCk7CisgICAgICAgIGV2YWx1
YXRlSW5XZWJJbnNwZWN0b3IoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZyb250ZW5kLXNjcmlw
dCIpLnRleHRDb250ZW50KTsKKyAgICAgICAgZG9pdCgpOworICAgIH0KK30KKworZnVuY3Rpb24g
bm90aWZ5RG9uZSgpCit7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewor
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5jbG9zZVdlYkluc3BlY3RvcigpOworICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgfQorfQorCitmdW5jdGlv
biBvdXRwdXQodGV4dCkKK3sKKwl2YXIgb3V0cHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
Im91dHB1dCIpOworICAgIG91dHB1dC5pbm5lckhUTUwgKz0gdGV4dCArICI8QlI+IjsKK30KKwor
d2luZG93LmRpZFRlc3RFdmFsdWF0ZUluRnJvbnRlbmQgPSBmdW5jdGlvbihjYWxsSWQsIGpzb25S
ZXN1bHQpCit7CisJaWYgKGNhbGxiYWNrc1tjYWxsSWRdKSB7CisgICAgICAgIGNhbGxiYWNrc1tj
YWxsSWRdLmNhbGwodGhpcywgSlNPTi5wYXJzZShqc29uUmVzdWx0KSk7CisgICAgICAgIGRlbGV0
ZSBjYWxsYmFja3NbY2FsbElkXTsKKwl9Cit9OworCitpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvV2ViQ29yZS5JbnNwZWN0b3IuZXhwIGIvV2ViQ29yZS9XZWJDb3JlLkluc3BlY3Rvci5leHAK
aW5kZXggZjc5MzQ4Zi4uNDVjOTdjZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLkluc3Bl
Y3Rvci5leHAKKysrIGIvV2ViQ29yZS9XZWJDb3JlLkluc3BlY3Rvci5leHAKQEAgLTEyLDYgKzEy
LDcgQEAgX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyNHNob3dFdgogX19aTjdXZWJD
b3JlMTlJbnNwZWN0b3JDb250cm9sbGVyNWNsb3NlRXYKIF9fWk43V2ViQ29yZTE5SW5zcGVjdG9y
Q29udHJvbGxlcjdpbnNwZWN0RVBOU180Tm9kZUUKIF9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29u
dHJvbGxlcjlzaG93UGFuZWxFTlMwXzEzU3BlY2lhbFBhbmVsc0UKK19fWk43V2ViQ29yZTE5SW5z
cGVjdG9yQ29udHJvbGxlcjIydGVzdEV2YWx1YXRlSW5Gcm9udGVuZEVsUktOU182U3RyaW5nRQog
X19aTks3V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjE3ZHJhd05vZGVIaWdobGlnaHRFUk5T
XzE1R3JhcGhpY3NDb250ZXh0RQogX19aTks3V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjdl
bmFibGVkRXYKIF9fWk5LN1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXI3c2V0dGluZ0VSS05T
XzZTdHJpbmdFCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUub3JkZXIgYi9XZWJDb3JlL1dl
YkNvcmUub3JkZXIKaW5kZXggZmY0MmUyNi4uZDg5N2MxYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9X
ZWJDb3JlLm9yZGVyCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgpAQCAtNzg1MSw2ICs3ODUx
LDcgQEAgX19aTjNXVEY5SGFzaFRhYmxlSVBON1dlYkNvcmU0UGFnZUVTM19OU18xN0lkZW50aXR5
RXh0cmFjdG9ySVMzX0VFTlNfN1B0ckhhc2hJUzMKIF9fWk4zV1RGOUhhc2hUYWJsZUlQTjdXZWJD
b3JlNFBhZ2VFUzNfTlNfMTdJZGVudGl0eUV4dHJhY3RvcklTM19FRU5TXzdQdHJIYXNoSVMzX0VF
TlNfMTBIYXNoVHJhaXRzSVMzX0VFUzlfRTQ3cmVtb3ZlQW5kSW52YWxpZGEKIF9fWk4zV1RGOUhh
c2hUYWJsZUlQTjdXZWJDb3JlNFBhZ2VFUzNfTlNfMTdJZGVudGl0eUV4dHJhY3RvcklTM19FRU5T
XzdQdHJIYXNoSVMzX0VFTlNfMTBIYXNoVHJhaXRzSVMzX0VFUzlfRTZyZW1vdmVFUFMzXwogX19a
TjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMjJpbnNwZWN0ZWRQYWdlRGVzdHJveWVkRXYK
K19fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjIydGVzdEV2YWx1YXRlSW5Gcm9udGVu
ZEVsUktOU182U3RyaW5nRQogX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyNWNsb3Nl
RXYKIF9fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0NWNsb3NlRXYKIF9fWk4zV1RGNlZlY3Rv
cklOU182UmVmUHRySU43V2ViQ29yZTExSGlzdG9yeUl0ZW1FRUVMbTBFRTE0c2hyaW5rQ2FwYWNp
dHlFbQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5jcHAg
Yi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmNwcAppbmRleCA3NTJlYzBjLi40
NDliMDY5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmNw
cAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmNwcApAQCAtNTQzLDYg
KzU0MywxMiBAQCB2b2lkIEluc3BlY3RvckJhY2tlbmQ6OnJlbW92ZURPTVN0b3JhZ2VJdGVtKGxv
bmcgY2FsbElkLCBsb25nIHN0b3JhZ2VJZCwgY29uc3QgUwogfQogI2VuZGlmCiAKK3ZvaWQgSW5z
cGVjdG9yQmFja2VuZDo6ZGlkVGVzdEV2YWx1YXRlSW5Gcm9udGVuZChsb25nIGNhbGxJZCwgY29u
c3QgU3RyaW5nJiBqc29uUmVzdWx0KQoreworICAgIGlmIChtX2luc3BlY3RvckNvbnRyb2xsZXIp
CisgICAgICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+ZGlkVGVzdEV2YWx1YXRlSW5Gcm9udGVu
ZChjYWxsSWQsIGpzb25SZXN1bHQpOworfQorCiBJbnNwZWN0b3JET01BZ2VudCogSW5zcGVjdG9y
QmFja2VuZDo6aW5zcGVjdG9yRE9NQWdlbnQoKQogewogICAgIGlmICghbV9pbnNwZWN0b3JDb250
cm9sbGVyKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5o
IGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5oCmluZGV4IDcyMjc4YTMuLjA1
NGIyMzQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaAor
KysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmgKQEAgLTE1Nyw2ICsxNTcs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRET01TdG9yYWdlSXRlbShsb25nIGNhbGxJZCwgbG9u
ZyBzdG9yYWdlSWQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKICAg
ICB2b2lkIHJlbW92ZURPTVN0b3JhZ2VJdGVtKGxvbmcgY2FsbElkLCBsb25nIHN0b3JhZ2VJZCwg
Y29uc3QgU3RyaW5nJiBrZXkpOwogI2VuZGlmCisgICAgdm9pZCBkaWRUZXN0RXZhbHVhdGVJbkZy
b250ZW5kKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIGpzb25SZXN1bHQpOwogCiBwcml2YXRl
OgogICAgIEluc3BlY3RvckJhY2tlbmQoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29u
dHJvbGxlciwgSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5pZGwgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JCYWNrZW5kLmlkbAppbmRleCA1YzZiYWJiLi4wNTY1ZGUwIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmlkbAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JCYWNrZW5kLmlkbApAQCAtMTI3LDUgKzEyNyw2IEBAIG1vZHVsZSBjb3JlIHsKICAg
ICAgICAgdm9pZCBzZXRET01TdG9yYWdlSXRlbShpbiBsb25nIGNhbGxJZCwgaW4gbG9uZyBzdG9y
YWdlSWQsIGluIERPTVN0cmluZyBrZXksIGluIERPTVN0cmluZyB2YWx1ZSk7CiAgICAgICAgIHZv
aWQgcmVtb3ZlRE9NU3RvcmFnZUl0ZW0oaW4gbG9uZyBjYWxsSWQsIGluIGxvbmcgc3RvcmFnZUlk
LCBpbiBET01TdHJpbmcga2V5KTsKICNlbmRpZgorICAgICAgICB2b2lkIGRpZFRlc3RFdmFsdWF0
ZUluRnJvbnRlbmQoaW4gbG9uZyBjYWxsSWQsIGluIERPTVN0cmluZyBqc29uUmVzdWx0KTsKICAg
ICB9OwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCBi
Yjc3ZWJmLi45ZTZkZTBjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
b250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
LmNwcApAQCAtNjczLDYgKzY3MywxMSBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnBvcHVs
YXRlU2NyaXB0T2JqZWN0cygpCiAjZW5kaWYKIAogICAgIG1fZnJvbnRlbmQtPnBvcHVsYXRlSW50
ZXJmYWNlKCk7CisgICAgCisgICAgLy8gRGlzcGF0Y2ggcGVuZGluZyBmcm9udGVuZCBjb21tYW5k
cworICAgIGZvciAoVmVjdG9yPHBhaXI8bG9uZywgU3RyaW5nPiA+OjppdGVyYXRvciBpdCA9IG1f
cGVuZGluZ1Rlc3RFdmFsdWF0ZUluRnJvbnRlbmRDb21tYW5kcy5iZWdpbigpOyBpdCAhPSBtX3Bl
bmRpbmdUZXN0RXZhbHVhdGVJbkZyb250ZW5kQ29tbWFuZHMuZW5kKCk7ICsraXQpCisgICAgICAg
IG1fZnJvbnRlbmQtPnRlc3RFdmFsdWF0ZUluRnJvbnRlbmQoKCppdCkuZmlyc3QsICgqaXQpLnNl
Y29uZCk7CisgICAgbV9wZW5kaW5nVGVzdEV2YWx1YXRlSW5Gcm9udGVuZENvbW1hbmRzLmNsZWFy
KCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6cmVzZXRTY3JpcHRPYmplY3RzKCkK
QEAgLTE0MjksNiArMTQzNCwyNSBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZENvbnRp
bnVlKCkKIAogI2VuZGlmCiAKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6dGVzdEV2YWx1YXRl
SW5Gcm9udGVuZChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQpCit7CisgICAgaWYg
KG1fZnJvbnRlbmQgJiYgd2luZG93VmlzaWJsZSgpKQorICAgICAgICBtX2Zyb250ZW5kLT50ZXN0
RXZhbHVhdGVJbkZyb250ZW5kKGNhbGxJZCwgc2NyaXB0KTsKKyAgICBlbHNlCisgICAgICAgIG1f
cGVuZGluZ1Rlc3RFdmFsdWF0ZUluRnJvbnRlbmRDb21tYW5kcy5hcHBlbmQocGFpcjxsb25nLCBT
dHJpbmc+KGNhbGxJZCwgc2NyaXB0KSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6
ZGlkVGVzdEV2YWx1YXRlSW5Gcm9udGVuZChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBqc29u
UmVzdWx0KQoreworICAgIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSA9IHNjcmlwdFN0YXRlRnJv
bVBhZ2UobV9pbnNwZWN0ZWRQYWdlKTsKKyAgICBTY3JpcHRPYmplY3Qgd2luZG93OworICAgIFNj
cmlwdEdsb2JhbE9iamVjdDo6Z2V0KHNjcmlwdFN0YXRlLCAid2luZG93Iiwgd2luZG93KTsKKyAg
ICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oc2NyaXB0U3RhdGUsIHdpbmRvdywgImRpZFRl
c3RFdmFsdWF0ZUluRnJvbnRlbmQiKTsKKyAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChzdGF0
aWNfY2FzdDxpbnQ+KGNhbGxJZCkpOworICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGpzb25S
ZXN1bHQpOworICAgIGZ1bmN0aW9uLmNhbGwoKTsKK30KKwogc3RhdGljIFBhdGggcXVhZFRvUGF0
aChjb25zdCBGbG9hdFF1YWQmIHF1YWQpCiB7CiAgICAgUGF0aCBxdWFkUGF0aDsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCBmZjdhNTE2Li4xZjBhMzkwIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC0yODAsNiArMjgwLDggQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRDb250aW51ZSgpOwogI2VuZGlmCiAKKyAgICB2
b2lkIHRlc3RFdmFsdWF0ZUluRnJvbnRlbmQobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgc2Ny
aXB0KTsKKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgSW5zcGVjdG9yQmFja2VuZDsKICAg
ICAvLyBGb2xsb3dpbmcgYXJlIHVzZWQgZnJvbSBJbnNwZWN0b3JCYWNrZW5kIGFuZCBpbnRlcm5h
bGx5LgpAQCAtMzI4LDYgKzMzMCw4IEBAIHByaXZhdGU6CiAKICAgICBTcGVjaWFsUGFuZWxzIHNw
ZWNpYWxQYW5lbEZvckpTTmFtZShjb25zdCBTdHJpbmcmIHBhbmVsTmFtZSk7CiAKKyAgICB2b2lk
IGRpZFRlc3RFdmFsdWF0ZUluRnJvbnRlbmQobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYganNv
blJlc3VsdCk7CisKICAgICBQYWdlKiBtX2luc3BlY3RlZFBhZ2U7CiAgICAgSW5zcGVjdG9yQ2xp
ZW50KiBtX2NsaWVudDsKICAgICBPd25QdHI8SW5zcGVjdG9yRnJvbnRlbmQ+IG1fZnJvbnRlbmQ7
CkBAIC0zNjIsNiArMzY2LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SW5zcGVjdG9yQmFja2Vu
ZD4gbV9pbnNwZWN0b3JCYWNrZW5kOwogICAgIEhhc2hNYXA8U3RyaW5nLCBTY3JpcHRWYWx1ZT4g
bV9pZFRvQ29uc29sZU9iamVjdDsKICAgICBsb25nIG1fbGFzdEJvdW5kT2JqZWN0SWQ7CisgICAg
VmVjdG9yPHBhaXI8bG9uZywgU3RyaW5nPiA+IG1fcGVuZGluZ1Rlc3RFdmFsdWF0ZUluRnJvbnRl
bmRDb21tYW5kczsKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKICAgICBib29sIG1f
ZGVidWdnZXJFbmFibGVkOwogICAgIGJvb2wgbV9hdHRhY2hEZWJ1Z2dlcldoZW5TaG93bjsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNwcCBiL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNwcAppbmRleCA2M2JiNmUyLi5lNzg3NjM0
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5jcHAKKysr
IGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuY3BwCkBAIC00NTksNiArNDU5
LDE0IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmQ6OmFkZE5vZGVzVG9TZWFyY2hSZXN1bHQoY29u
c3QgU3RyaW5nJiBub2RlSWRzKQogICAgIGZ1bmN0aW9uLT5jYWxsKCk7CiB9CiAKK3ZvaWQgSW5z
cGVjdG9yRnJvbnRlbmQ6OnRlc3RFdmFsdWF0ZUluRnJvbnRlbmQoaW50IGNhbGxJZCwgY29uc3Qg
U3RyaW5nJiBzY3JpcHQpCit7CisgICAgT3duUHRyPFNjcmlwdEZ1bmN0aW9uQ2FsbD4gZnVuY3Rp
b24obmV3RnVuY3Rpb25DYWxsKCJ0ZXN0RXZhbHVhdGVJbkZyb250ZW5kIikpOworICAgIGZ1bmN0
aW9uLT5hcHBlbmRBcmd1bWVudChjYWxsSWQpOworICAgIGZ1bmN0aW9uLT5hcHBlbmRBcmd1bWVu
dChzY3JpcHQpOworICAgIGZ1bmN0aW9uLT5jYWxsKCk7Cit9CisKIFBhc3NPd25QdHI8U2NyaXB0
RnVuY3Rpb25DYWxsPiBJbnNwZWN0b3JGcm9udGVuZDo6bmV3RnVuY3Rpb25DYWxsKGNvbnN0IFN0
cmluZyYgZnVuY3Rpb25OYW1lKQogewogICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCogZnVuY3Rpb24g
PSBuZXcgU2NyaXB0RnVuY3Rpb25DYWxsKG1fc2NyaXB0U3RhdGUsIG1fd2ViSW5zcGVjdG9yLCAi
ZGlzcGF0Y2giKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kLmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5oCmluZGV4IDUxZjE3
ZmIuLmI1NWYwZmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kLmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuaApAQCAtMTI5
LDYgKzEyOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBTY3JpcHRTdGF0ZSog
c2NyaXB0U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdFN0YXRlOyB9CiAKKyAgICAgICAg
dm9pZCB0ZXN0RXZhbHVhdGVJbkZyb250ZW5kKGludCBjYWxsSWQsIGNvbnN0IFN0cmluZyYgc2Ny
aXB0KTsKICAgICBwcml2YXRlOgogICAgICAgICBQYXNzT3duUHRyPFNjcmlwdEZ1bmN0aW9uQ2Fs
bD4gbmV3RnVuY3Rpb25DYWxsKGNvbnN0IFN0cmluZyYgZnVuY3Rpb25OYW1lKTsKICAgICAgICAg
dm9pZCBjYWxsU2ltcGxlRnVuY3Rpb24oY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUpOwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcyBiL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKaW5kZXggZGU0ZjRmYi4uMzU5OGQw
OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwor
KysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCkBAIC0xNjAwLDYg
KzE2MDAsMTEgQEAgV2ViSW5zcGVjdG9yLl90b29sYmFySXRlbUNsaWNrZWQgPSBmdW5jdGlvbihl
dmVudCkKICAgICB0aGlzLmN1cnJlbnRQYW5lbCA9IHRvb2xiYXJJdGVtLnBhbmVsOwogfQogCitX
ZWJJbnNwZWN0b3IudGVzdEV2YWx1YXRlSW5Gcm9udGVuZCA9IGZ1bmN0aW9uKGNhbGxJZCwgc2Ny
aXB0KQoreworICAgIEluc3BlY3RvckNvbnRyb2xsZXIuZGlkVGVzdEV2YWx1YXRlSW5Gcm9udGVu
ZChjYWxsSWQsIEpTT04uc3RyaW5naWZ5KHdpbmRvdy5ldmFsKHNjcmlwdCkpKTsKK30KKwogLy8g
VGhpcyB0YWJsZSBtYXBzIE1JTUUgdHlwZXMgdG8gdGhlIFJlc291cmNlLlR5cGVzIHdoaWNoIGFy
ZSB2YWxpZCBmb3IgdGhlbS4KIC8vIFRoZSBmb2xsb3dpbmcgbGluZToKIC8vICAgICJ0ZXh0L2h0
bWwiOiAgICAgICAgICAgICAgICB7MDogMX0sCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL1dlYklu
c3BlY3Rvci9XZWJJbnNwZWN0b3IuaCBiL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL1dlYkluc3Bl
Y3Rvci5oCmluZGV4IGMxNjcyNmQuLjk5OWU5ZGIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvV2Vi
SW5zcGVjdG9yL1dlYkluc3BlY3Rvci5oCisrKyBiL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL1dl
Ykluc3BlY3Rvci5oCkBAIC01NCw0ICs1NCw2IEBACiAtICh2b2lkKXRvZ2dsZVByb2ZpbGluZ0ph
dmFTY3JpcHQ6KGlkKXNlbmRlcjsKIC0gKHZvaWQpc3RhcnRQcm9maWxpbmdKYXZhU2NyaXB0Oihp
ZClzZW5kZXI7CiAtICh2b2lkKXN0b3BQcm9maWxpbmdKYXZhU2NyaXB0OihpZClzZW5kZXI7CisK
Ky0gKHZvaWQpZXZhbHVhdGVJbkZyb250ZW5kOihpZClzZW5kZXIgY2FsbElkOihsb25nKWNhbGxJ
ZCBzY3JpcHQ6KE5TU3RyaW5nICopc2NyaXB0OwogQGVuZApkaWZmIC0tZ2l0IGEvV2ViS2l0L21h
Yy9XZWJJbnNwZWN0b3IvV2ViSW5zcGVjdG9yLm1tIGIvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3Iv
V2ViSW5zcGVjdG9yLm1tCmluZGV4IGMwNGE1NmMuLjRiZWI2YzQgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9tYWMvV2ViSW5zcGVjdG9yL1dlYkluc3BlY3Rvci5tbQorKysgYi9XZWJLaXQvbWFjL1dlYklu
c3BlY3Rvci9XZWJJbnNwZWN0b3IubW0KQEAgLTE2Myw2ICsxNjMsMTIgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBjb3JlKF93ZWJWaWV3KSkKICAgICAg
ICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5kZXRhY2hXaW5kb3coKTsKIH0KKworLSAo
dm9pZClldmFsdWF0ZUluRnJvbnRlbmQ6KGlkKXNlbmRlciBjYWxsSWQ6KGxvbmcpY2FsbElkIHNj
cmlwdDooTlNTdHJpbmcgKilzY3JpcHQKK3sKKyAgICBpZiAoUGFnZSogcGFnZSA9IGNvcmUoX3dl
YlZpZXcpKQorICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnRlc3RFdmFsdWF0
ZUluRnJvbnRlbmQoY2FsbElkLCBzY3JpcHQpOworfQogQGVuZAogCiBAaW1wbGVtZW50YXRpb24g
V2ViSW5zcGVjdG9yIChPYnNvbGV0ZSkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCBjNzlhMWRjLi41MTI1M2YzIDEwMDY0
NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5j
cHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIu
Y3BwCkBAIC05MjksNiArOTI5LDMyIEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHNldFN0b3BQcm92aXNp
b25hbEZyYW1lTG9hZHNDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPCiAgICAgcmV0
dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJl
ZiBzaG93V2ViSW5zcGVjdG9yQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0
UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3Vu
dCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQor
eworICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5
b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAg
IGNvbnRyb2xsZXItPnNob3dXZWJJbnNwZWN0b3IoKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VV
bmRlZmluZWQoY29udGV4dCk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIGNsb3NlV2ViSW5zcGVj
dG9yQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBK
U09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1
ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIExheW91dFRl
c3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xs
ZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIGNvbnRyb2xsZXItPmNs
b3NlV2ViSW5zcGVjdG9yKCk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRl
eHQpOworfQorCitzdGF0aWMgSlNWYWx1ZVJlZiBldmFsdWF0ZUluV2ViSW5zcGVjdG9yQ2FsbGJh
Y2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJl
ZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1
bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIExheW91dFRlc3RDb250cm9s
bGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09i
amVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIGRvdWJsZSBjYWxsSWQgPSBKU1ZhbHVl
VG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pOworICAgIEFTU0VSVCgh
KmV4Y2VwdGlvbik7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHNjcmlwdChBZG9wdCwg
SlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBhcmd1bWVudHNbMV0sIGV4Y2VwdGlvbikpOwor
ICAgIEFTU0VSVCghKmV4Y2VwdGlvbik7CisKKyAgICBjb250cm9sbGVyLT5ldmFsdWF0ZUluV2Vi
SW5zcGVjdG9yKHN0YXRpY19jYXN0PGxvbmc+KGNhbGxJZCksIHNjcmlwdC5nZXQoKSk7CisgICAg
cmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCiBzdGF0aWMgSlNWYWx1
ZVJlZiBlbGVtZW50RG9lc0F1dG9Db21wbGV0ZUZvckVsZW1lbnRXaXRoSWRDYWxsYmFjayhKU0Nv
bnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNP
YmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1td
LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNv
bnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0
UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CkBAIC0xMTE0LDYgKzExNDAsNyBAQCBKU1N0YXRpY0Z1bmN0
aW9uKiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKCkKICAgICAgICAgeyAi
Y2xlYXJBbGxEYXRhYmFzZXMiLCBjbGVhckFsbERhdGFiYXNlc0NhbGxiYWNrLCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAg
ICAgICAgIHsgImNsZWFyQmFja0ZvcndhcmRMaXN0IiwgY2xlYXJCYWNrRm9yd2FyZExpc3RDYWxs
YmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRl
RG9udERlbGV0ZSB9LAogICAgICAgICB7ICJjbGVhclBlcnNpc3RlbnRVc2VyU3R5bGVTaGVldCIs
IGNsZWFyUGVyc2lzdGVudFVzZXJTdHlsZVNoZWV0Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAg
eyAiY2xvc2VXZWJJbnNwZWN0b3IiLCBjbG9zZVdlYkluc3BlY3RvckNhbGxiYWNrLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0s
CiAgICAgICAgIHsgImRlY29kZUhvc3ROYW1lIiwgZGVjb2RlSG9zdE5hbWVDYWxsYmFjaywga0pT
UHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0
ZSB9LAogICAgICAgICB7ICJkaXNhYmxlSW1hZ2VMb2FkaW5nIiwgZGlzYWJsZUltYWdlTG9hZGlu
Z0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRy
aWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImRpc3BhdGNoUGVuZGluZ0xvYWRSZXF1ZXN0
cyIsIGRpc3BhdGNoUGVuZGluZ0xvYWRSZXF1ZXN0c0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCkBAIC0xMTM1
LDYgKzExNjIsNyBAQCBKU1N0YXRpY0Z1bmN0aW9uKiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3Rh
dGljRnVuY3Rpb25zKCkKICAgICAgICAgeyAiZHVtcFdpbGxDYWNoZVJlc3BvbnNlIiwgZHVtcFdp
bGxDYWNoZVJlc3BvbnNlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiZWxlbWVudERvZXNB
dXRvQ29tcGxldGVGb3JFbGVtZW50V2l0aElkIiwgZWxlbWVudERvZXNBdXRvQ29tcGxldGVGb3JF
bGVtZW50V2l0aElkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiZW5jb2RlSG9zdE5hbWUi
LCBlbmNvZGVIb3N0TmFtZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwg
a0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgImV2YWx1YXRlSW5X
ZWJJbnNwZWN0b3IiLCBldmFsdWF0ZUluV2ViSW5zcGVjdG9yQ2FsbGJhY2ssIGtKU1Byb3BlcnR5
QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAg
ICAgICAgeyAiZXhlY0NvbW1hbmQiLCBleGVjQ29tbWFuZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAg
ICAgIHsgImdyYW50RGVza3RvcE5vdGlmaWNhdGlvblBlcm1pc3Npb24iLCBncmFudERlc2t0b3BO
b3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwgCiAgICAgICAgIHsgImlzQ29t
bWFuZEVuYWJsZWQiLCBpc0NvbW1hbmRFbmFibGVkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKQEAgLTExODUs
NiArMTIxMyw3IEBAIEpTU3RhdGljRnVuY3Rpb24qIExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0
aWNGdW5jdGlvbnMoKQogICAgICAgICB7ICJzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uIiwgc2V0
VXNlclN0eWxlU2hlZXRMb2NhdGlvbkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRP
bmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldFdp
bGxTZW5kUmVxdWVzdFJldHVybnNOdWxsT25SZWRpcmVjdCIsIHNldFdpbGxTZW5kUmVxdWVzdFJl
dHVybnNOdWxsT25SZWRpcmVjdENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5
IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldFdpbmRv
d0lzS2V5Iiwgc2V0V2luZG93SXNLZXlDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJzaG93
V2ViSW5zcGVjdG9yIiwgc2hvd1dlYkluc3BlY3RvckNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAg
IHsgInRlc3RPbnNjcmVlbiIsIHRlc3RPbnNjcmVlbkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAg
IHsgInRlc3RSZXBhaW50IiwgdGVzdFJlcGFpbnRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1
dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7
ICJ3YWl0Rm9yUG9saWN5RGVsZWdhdGUiLCB3YWl0Rm9yUG9saWN5RGVsZWdhdGVDYWxsYmFjaywg
a0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERl
bGV0ZSB9LApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVz
dENvbnRyb2xsZXIuaCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250
cm9sbGVyLmgKaW5kZXggODVmNWI4My4uNTc5MWFmNyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAorKysgYi9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCkBAIC04Nyw3ICs4Nyw3IEBAIHB1
YmxpYzoKICAgICBzaXplX3Qgd2ViSGlzdG9yeUl0ZW1Db3VudCgpOwogICAgIHVuc2lnbmVkIHdv
cmtlclRocmVhZENvdW50KCkgY29uc3Q7CiAgICAgaW50IHdpbmRvd0NvdW50KCk7Ci0gICAgCisK
ICAgICB2b2lkIGdyYW50RGVza3RvcE5vdGlmaWNhdGlvblBlcm1pc3Npb24oSlNTdHJpbmdSZWYg
b3JpZ2luKTsKICAgICBib29sIGNoZWNrRGVza3RvcE5vdGlmaWNhdGlvblBlcm1pc3Npb24oSlNT
dHJpbmdSZWYgb3JpZ2luKTsKIApAQCAtMjAzLDYgKzIwMywxMCBAQCBwdWJsaWM6CiAgICAgYm9v
bCBpc0dlb2xvY2F0aW9uUGVybWlzc2lvblNldCgpIGNvbnN0IHsgcmV0dXJuIG1faXNHZW9sb2Nh
dGlvblBlcm1pc3Npb25TZXQ7IH0KICAgICBib29sIGdlb2xvY2F0aW9uUGVybWlzc2lvbigpIGNv
bnN0IHsgcmV0dXJuIG1fZ2VvbG9jYXRpb25QZXJtaXNzaW9uOyB9CiAKKyAgICB2b2lkIHNob3dX
ZWJJbnNwZWN0b3IoKTsKKyAgICB2b2lkIGNsb3NlV2ViSW5zcGVjdG9yKCk7CisgICAgdm9pZCBl
dmFsdWF0ZUluV2ViSW5zcGVjdG9yKGxvbmcgY2FsbElkLCBKU1N0cmluZ1JlZiBzY3JpcHQpOwor
CiBwcml2YXRlOgogICAgIGJvb2wgbV9kdW1wQXNQREY7CiAgICAgYm9vbCBtX2R1bXBBc1RleHQ7
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENv
bnRyb2xsZXJNYWMubW0gYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVz
dENvbnRyb2xsZXJNYWMubW0KaW5kZXggNjNiNzNiNS4uMzA1YzM0OSAxMDA2NDQKLS0tIGEvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCisr
KyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1h
Yy5tbQpAQCAtNDkyLDMgKzQ5MiwxOSBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjphZGRV
c2VyU3R5bGVTaGVldChKU1N0cmluZ1JlZiBzb3VyY2UpCiAgICAgW1dlYlZpZXcgX2FkZFVzZXJT
dHlsZVNoZWV0VG9Hcm91cDpAIm9yZy53ZWJraXQuRHVtcFJlbmRlclRyZWUiIHNvdXJjZTpzb3Vy
Y2VOUyB1cmw6bmlsIHdvcmxkSUQ6MSBwYXR0ZXJuczpuaWxdOwogfQogCit2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjpzaG93V2ViSW5zcGVjdG9yKCkKK3sKKyAgICBbW1ttYWluRnJhbWUgd2Vi
Vmlld10gaW5zcGVjdG9yXSBzaG93Om5pbF07Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OmNsb3NlV2ViSW5zcGVjdG9yKCkKK3sKKyAgICBbW1ttYWluRnJhbWUgd2ViVmlld10gaW5z
cGVjdG9yXSBjbG9zZTpuaWxdOworfQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpldmFs
dWF0ZUluV2ViSW5zcGVjdG9yKGxvbmcgY2FsbElkLCBKU1N0cmluZ1JlZiBzY3JpcHQpCit7Cisg
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzY3JpcHRDRihBZG9wdENGLCBKU1N0cmluZ0NvcHlD
RlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzY3JpcHQpKTsKKyAgICBOU1N0cmluZyAqc2Ny
aXB0TlMgPSAoTlNTdHJpbmcgKilzY3JpcHRDRi5nZXQoKTsKKyAgICBbW1ttYWluRnJhbWUgd2Vi
Vmlld10gaW5zcGVjdG9yXSBldmFsdWF0ZUluRnJvbnRlbmQ6bmlsIGNhbGxJZDpjYWxsSWQgc2Ny
aXB0OnNjcmlwdE5TXTsKK30K
</data>
<flag name="review"
          id="21586"
          type_id="1"
          status="-"
          setter="timothy"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40470</attachid>
            <date>2009-10-01 12:48:37 -0700</date>
            <delta_ts>2009-10-01 12:52:04 -0700</delta_ts>
            <desc>testing harness #2</desc>
            <filename>testing_harness</filename>
            <type>text/plain</type>
            <size>48918</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhNWFhMzczLi5hNzE4NjgxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMDktMTAt
MDEgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3IgbmVlZHMg
YSB0ZXN0aW5nIGluZnJhc3RydWN0dXJlCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI2NTQ5CisKKyAgICAgICAgKiBpbnNwZWN0b3IvY29uc29sZS10
ZXN0cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9jb25zb2xlLXRl
c3RzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9lbGVtZW50cy1wYW5lbC1zdHJ1
Y3R1cmUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZWxlbWVudHMt
cGFuZWwtc3RydWN0dXJlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9ldmFsdWF0
ZS1pbi1mcm9udGVuZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9l
dmFsdWF0ZS1pbi1mcm9udGVuZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZXZh
bHVhdGUtaW4tZnJvbnRlbmQuanM6IEFkZGVkLgorICAgICAgICAoKToKKyAgICAgICAgKHNob3dX
ZWJJbnNwZWN0b3IpOgorICAgICAgICAoY2xvc2VXZWJJbnNwZWN0b3IpOgorICAgICAgICAob25s
b2FkKToKKyAgICAgICAgKG5vdGlmeURvbmUpOgorICAgICAgICAob3V0cHV0KToKKyAgICAgICAg
KHdpbmRvdy5kaWRFdmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKToKKwogMjAwOS0wOS0yOSAgU2hp
bmljaGlybyBIYW1hamkgIDxoYW1hamlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNv
bGUtdGVzdHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtdGVz
dHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzY2M0
ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS10ZXN0
cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzNiBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDg6
IGxvZworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDk6IGRlYnVnCitDT05TT0xFIE1FU1NBR0U6IGxp
bmUgMTA6IGluZm8KK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxMTogd2FybgorQ09OU09MRSBNRVNT
QUdFOiBsaW5lIDEyOiBlcnJvcgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDEzOiBNZXNzYWdlIGZv
cm1hdCBudW1iZXIgJWksICVkIGFuZCAlZgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE0OiBNZXNz
YWdlICVzIGZvciAlcworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE1OiBPYmplY3QgJW8KK0NPTlNP
TEUgTUVTU0FHRTogbGluZSAxNzogcmVwZWF0ZWQKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxNzog
cmVwZWF0ZWQKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxNzogcmVwZWF0ZWQKK0NPTlNPTEUgTUVT
U0FHRTogbGluZSAxNzogcmVwZWF0ZWQKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxNzogcmVwZWF0
ZWQKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAyNDogMQorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDI1
OiBbb2JqZWN0IEhUTUxEb2N1bWVudF0KK0NPTlNPTEUgTUVTU0FHRTogbGluZSAyNjogW29iamVj
dCBIVE1MSHRtbEVsZW1lbnRdCitUZXN0cyB0aGF0IGNvbnNvbGUgbG9nZ2luZyBkdW1wcyBwcm9w
ZXIgbWVzc2FnZXMuCisKK2NvbnNvbGUtdGVzdHMuaHRtbDo4bG9nIGNvbnNvbGUtbWVzc2FnZSBj
b25zb2xlLWpzLXNvdXJjZSBjb25zb2xlLWxvZy1sZXZlbAorY29uc29sZS10ZXN0cy5odG1sOjlk
ZWJ1ZyBjb25zb2xlLW1lc3NhZ2UgY29uc29sZS1qcy1zb3VyY2UgY29uc29sZS1sb2ctbGV2ZWwK
K2NvbnNvbGUtdGVzdHMuaHRtbDoxMGluZm8gY29uc29sZS1tZXNzYWdlIGNvbnNvbGUtanMtc291
cmNlIGNvbnNvbGUtbG9nLWxldmVsCitjb25zb2xlLXRlc3RzLmh0bWw6MTF3YXJuIGNvbnNvbGUt
bWVzc2FnZSBjb25zb2xlLWpzLXNvdXJjZSBjb25zb2xlLXdhcm5pbmctbGV2ZWwKK2NvbnNvbGUt
dGVzdHMuaHRtbDoxMmVycm9yIGNvbnNvbGUtbWVzc2FnZSBjb25zb2xlLWpzLXNvdXJjZSBjb25z
b2xlLWVycm9yLWxldmVsCitjb25zb2xlLXRlc3RzLmh0bWw6MTNNZXNzYWdlIGZvcm1hdCBudW1i
ZXIgMSwgMiBhbmQgMy41IGNvbnNvbGUtbWVzc2FnZSBjb25zb2xlLWpzLXNvdXJjZSBjb25zb2xl
LWxvZy1sZXZlbAorY29uc29sZS10ZXN0cy5odG1sOjE0TWVzc2FnZSBmb3JtYXQgZm9yIHN0cmlu
ZyBjb25zb2xlLW1lc3NhZ2UgY29uc29sZS1qcy1zb3VyY2UgY29uc29sZS1sb2ctbGV2ZWwKK2Nv
bnNvbGUtdGVzdHMuaHRtbDoxNU9iamVjdCBPYmplY3QgY29uc29sZS1tZXNzYWdlIGNvbnNvbGUt
anMtc291cmNlIGNvbnNvbGUtbG9nLWxldmVsCis1Y29uc29sZS10ZXN0cy5odG1sOjE3cmVwZWF0
ZWQgY29uc29sZS1tZXNzYWdlIGNvbnNvbGUtanMtc291cmNlIGNvbnNvbGUtbG9nLWxldmVsIHJl
cGVhdGVkLW1lc3NhZ2UKK2NvbnNvbGUtdGVzdHMuaHRtbDoxOWNvdW50OiAxIGNvbnNvbGUtbWVz
c2FnZSBjb25zb2xlLWpzLXNvdXJjZSBjb25zb2xlLWxvZy1sZXZlbAorY29uc29sZS10ZXN0cy5o
dG1sOjE5Y291bnQ6IDIgY29uc29sZS1tZXNzYWdlIGNvbnNvbGUtanMtc291cmNlIGNvbnNvbGUt
bG9nLWxldmVsCitjb25zb2xlLXRlc3RzLmh0bWw6MjBncm91cCBjb25zb2xlLW1lc3NhZ2UgY29u
c29sZS1qcy1zb3VyY2UgY29uc29sZS1sb2ctbGV2ZWwgY29uc29sZS1ncm91cC10aXRsZQorY29u
c29sZS1tZXNzYWdlIGNvbnNvbGUtanMtc291cmNlIGNvbnNvbGUtbG9nLWxldmVsCitjb25zb2xl
LXRlc3RzLmh0bWw6MjN0aW1lcjogMG1zIGNvbnNvbGUtbWVzc2FnZSBjb25zb2xlLWpzLXNvdXJj
ZSBjb25zb2xlLWxvZy1sZXZlbAorY29uc29sZS10ZXN0cy5odG1sOjI0MSAyIDMgY29uc29sZS1t
ZXNzYWdlIGNvbnNvbGUtanMtc291cmNlIGNvbnNvbGUtbG9nLWxldmVsCitjb25zb2xlLXRlc3Rz
Lmh0bWw6MjVIVE1MRG9jdW1lbnQgY29uc29sZS1tZXNzYWdlIGNvbnNvbGUtanMtc291cmNlIGNv
bnNvbGUtbG9nLWxldmVsCitjb25zb2xlLXRlc3RzLmh0bWw6MjbigIsgY29uc29sZS1tZXNzYWdl
IGNvbnNvbGUtanMtc291cmNlIGNvbnNvbGUtbG9nLWxldmVsCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlLXRlc3RzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvY29uc29sZS10ZXN0cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjIyNGUyZjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29s
ZS10ZXN0cy5odG1sCkBAIC0wLDAgKzEsNjMgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iZXZhbHVhdGUtaW4tZnJvbnRlbmQuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZnVuY3Rp
b24gZG9pdCgpCit7CisgICAgY29uc29sZS5sb2coJ2xvZycpOworICAgIGNvbnNvbGUuZGVidWco
J2RlYnVnJyk7CisgICAgY29uc29sZS5pbmZvKCdpbmZvJyk7CisgICAgY29uc29sZS53YXJuKCd3
YXJuJyk7CisgICAgY29uc29sZS5lcnJvcignZXJyb3InKTsKKyAgICBjb25zb2xlLmxvZygnTWVz
c2FnZSBmb3JtYXQgbnVtYmVyICVpLCAlZCBhbmQgJWYnLCAxLCAyLCAzLjUpOworICAgIGNvbnNv
bGUubG9nKCdNZXNzYWdlICVzIGZvciAlcycsICdmb3JtYXQnLCAnc3RyaW5nJyk7CisgICAgY29u
c29sZS5sb2coJ09iamVjdCAlbycsIHsnZm9vJyA6ICdiYXInIH0pOworICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgNTsgKytpKQorICAgICAgICBjb25zb2xlLmxvZygncmVwZWF0ZWQnKTsKKyAgICBm
b3IgKHZhciBpID0gMDsgaSA8IDI7ICsraSkKKyAgICAgICAgY29uc29sZS5jb3VudCgnY291bnQn
KTsKKyAgICBjb25zb2xlLmdyb3VwKCdncm91cCcpOworICAgIGNvbnNvbGUuZ3JvdXBFbmQoKTsK
KyAgICBjb25zb2xlLnRpbWUoJ3RpbWVyJyk7CisgICAgY29uc29sZS50aW1lRW5kKCd0aW1lcicp
OworICAgIGNvbnNvbGUubG9nKCcxJywgJzInLCAnMycpOworICAgIGNvbnNvbGUuZGlyKGRvY3Vt
ZW50KTsKKyAgICBjb25zb2xlLmRpcnhtbChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpOworCisg
ICAgZnVuY3Rpb24gY2FsbGJhY2socmVzdWx0KQorICAgIHsKKyAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCByZXN1bHQubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIG91dHB1dChyZXN1bHRb
aV0udGV4dCArICIgIiArIHJlc3VsdFtpXS5jbGF6eik7CisgICAgICAgIH0KKyAgICAgICAgbm90
aWZ5RG9uZSgpOworICAgIH0KKyAgICBldmFsdWF0ZUluV2ViSW5zcGVjdG9yKCJkdW1wTWVzc2Fn
ZXMoKSIsIGNhbGxiYWNrKTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9h
ZD0ib25sb2FkKCkiPgorPHA+CitUZXN0cyB0aGF0IGNvbnNvbGUgbG9nZ2luZyBkdW1wcyBwcm9w
ZXIgbWVzc2FnZXMuCis8L3A+CisKKzxkaXYgaWQ9ImZyb250ZW5kLXNjcmlwdCIgc3R5bGU9ImRp
c3BsYXk6bm9uZSI+CitmdW5jdGlvbiBkdW1wTWVzc2FnZXMoKQoreworICAgIHZhciByZXN1bHQg
PSBbXTsKKyAgICB2YXIgbWVzc2FnZXMgPSBXZWJJbnNwZWN0b3IuY29uc29sZS5tZXNzYWdlczsK
KyAgICBmb3IgKHZhciBpID0gMDsgaSAmbHQ7IG1lc3NhZ2VzLmxlbmd0aDsgKytpKSB7CisgICAg
ICAgIHZhciBlbGVtZW50ID0gbWVzc2FnZXNbaV0udG9NZXNzYWdlRWxlbWVudCgpOworICAgICAg
ICByZXN1bHQucHVzaCh7IHRleHQ6IGVsZW1lbnQudGV4dENvbnRlbnQsIGNsYXp6OiBlbGVtZW50
LmdldEF0dHJpYnV0ZSgiY2xhc3MiKX0pOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQor
PC9kaXY+CisKKzxkaXYgaWQ9Im91dHB1dCI+Cis8L2Rpdj4KKworPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXBhbmVsLXN0cnVjdHVy
ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtcGFuZWwtc3Ry
dWN0dXJlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44
NDc5OTQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRz
LXBhbmVsLXN0cnVjdHVyZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhh
dCBlbGVtZW50cyBwYW5lbCBzaG93cyBkb20gdHJlZSBzdHJ1Y3R1cmUuCisKKworPGh0bWw+4oCL
Cis8aGVhZD7igIsKKzxib2R5IG9ubG9hZD3igIsib25sb2FkKCnigIsiPuKAiworPHA+4oCLCitU
ZXN0cyB0aGF0IGVsZW1lbnRzIHBhbmVsIHNob3dzIGRvbSB0cmVlIHN0cnVjdHVyZS4KK+KAiwor
PC9wPgorPGRpdiBpZD3igIsiZnJvbnRlbmQtc2NyaXB0IiBzdHlsZT3igIsiZGlzcGxheTrigItu
b25lIj7igIsKKzxwcmUgaWQ94oCLIm91dHB1dCI+4oCLCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtcGFuZWwtc3RydWN0dXJlLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtcGFuZWwtc3RydWN0dXJlLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjc0YmJiMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy1wYW5lbC1zdHJ1Y3R1cmUuaHRt
bApAQCAtMCwwICsxLDMyIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9ImV2YWx1YXRl
LWluLWZyb250ZW5kLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIGRvaXQoKQor
eworICAgIGZ1bmN0aW9uIGNhbGxiYWNrKHJlc3VsdCkKKyAgICB7CisgICAgICAgIHZhciBvdXRw
dXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib3V0cHV0Iik7CisgICAgICAgIG91dHB1dC50
ZXh0Q29udGVudCA9IHJlc3VsdC5yZXBsYWNlKC88L2csICJcbjwiKTsKKyAgICAgICAgbm90aWZ5
RG9uZSgpOworICAgIH0KKyAgICBldmFsdWF0ZUluV2ViSW5zcGVjdG9yKCJXZWJJbnNwZWN0b3Iu
cGFuZWxzLmVsZW1lbnRzLnRyZWVPdXRsaW5lLmVsZW1lbnQudGV4dENvbnRlbnQiLCBjYWxsYmFj
ayk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9Im9ubG9hZCgpIj4K
KzxwPgorVGVzdHMgdGhhdCBlbGVtZW50cyBwYW5lbCBzaG93cyBkb20gdHJlZSBzdHJ1Y3R1cmUu
Cis8L3A+CisKKzxkaXYgaWQ9ImZyb250ZW5kLXNjcmlwdCIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+
Cis8L2Rpdj4KKworPHByZSBpZD0ib3V0cHV0Ij4KKzwvcHJlPgorCis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXZhbHVhdGUtaW4tZnJvbnRlbmQt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V2YWx1YXRlLWluLWZyb250ZW5k
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODc1MmRm
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V2YWx1YXRlLWluLWZy
b250ZW5kLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK1RoaXMgdGVzdHMgdGhhdCBsYXlv
dXQgdGVzdCBjYW4gZXZhbHVhdGUgc2NyaXB0cyBpbiB0aGUgd2ViIGluc3BlY3RvciBjb250ZXh0
LgorCisyICsgMiA9IDQKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V2YWx1
YXRlLWluLWZyb250ZW5kLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXZhbHVhdGUtaW4t
ZnJvbnRlbmQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTFhOTU3
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V2YWx1YXRlLWluLWZy
b250ZW5kLmh0bWwKQEAgLTAsMCArMSwzNSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSJldmFsdWF0ZS1pbi1mcm9udGVuZC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlv
biBkb2l0KCkKK3sKKyAgICBmdW5jdGlvbiBjYWxsYmFjayhyZXN1bHQpCisgICAgeworICAgICAg
ICBvdXRwdXQoIjIgKyAyID0gIiArIHJlc3VsdCk7CisgICAgICAgIG5vdGlmeURvbmUoKTsKKyAg
ICB9CisgICAgZXZhbHVhdGVJbldlYkluc3BlY3Rvcigic3VtKDIsIDIpIiwgY2FsbGJhY2spOwor
fQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJvbmxvYWQoKSI+Cis8cD4K
K1RoaXMgdGVzdHMgdGhhdCBsYXlvdXQgdGVzdCBjYW4gZXZhbHVhdGUgc2NyaXB0cyBpbiB0aGUg
d2ViIGluc3BlY3RvciBjb250ZXh0LgorPC9wPgorCis8ZGl2IGlkPSJmcm9udGVuZC1zY3JpcHQi
IHN0eWxlPSJkaXNwbGF5Om5vbmUiPgorZnVuY3Rpb24gc3VtKGEsIGIpCit7CisgICAgcmV0dXJu
IGEgKyBiOworfQorPC9kaXY+CisKKzxkaXYgaWQ9Im91dHB1dCI+Cis8L2Rpdj4KKworPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V2YWx1YXRlLWlu
LWZyb250ZW5kLmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V2YWx1YXRlLWluLWZyb250ZW5k
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljNjM5N2UKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXZhbHVhdGUtaW4tZnJvbnRlbmQuanMK
QEAgLTAsMCArMSw3MSBAQAordmFyIGxhc3RDYWxsSWQgPSAwOwordmFyIGNhbGxiYWNrcyA9IHt9
OworCitmdW5jdGlvbiBldmFsdWF0ZUluV2ViSW5zcGVjdG9yKHNjcmlwdCwgY2FsbGJhY2spCit7
CisgICAgY2FsbGJhY2tzW2xhc3RDYWxsSWRdID0gY2FsbGJhY2s7CisgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewor
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZXZhbHVhdGVJbldlYkluc3BlY3Rvcihs
YXN0Q2FsbElkKyssIHNjcmlwdCk7CisgICAgICAgIH0KKyAgICB9LCAwKTsKKworfQorCitmdW5j
dGlvbiBzaG93V2ViSW5zcGVjdG9yKCkKK3sKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewor
ICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5zaG93V2ViSW5zcGVjdG9yKCk7CisgICAgICAgIH0KKyAgICB9
LCAwKTsKK30KKworZnVuY3Rpb24gY2xvc2VXZWJJbnNwZWN0b3IoKQoreworICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsb3NlV2ViSW5zcGVjdG9yKCk7
CisgICAgICAgIH0KKyAgICB9LCAwKTsKK30KKworZnVuY3Rpb24gb25sb2FkKCkKK3sKKyAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zaG93V2ViSW5zcGVj
dG9yKCk7CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ldmFsdWF0ZUluV2ViSW5z
cGVjdG9yKGxhc3RDYWxsSWQrKywgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZyb250ZW5kLXNj
cmlwdCIpLnRleHRDb250ZW50KTsKKyAgICAgICAgfQorICAgICAgICBkb2l0KCk7CisgICAgfSwg
MCk7Cit9CisKK2Z1bmN0aW9uIG5vdGlmeURvbmUoKQoreworICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsb3NlV2ViSW5zcGVjdG9yKCk7CisgICAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIH0KKyAgICB9
LCAwKTsKK30KKworZnVuY3Rpb24gb3V0cHV0KHRleHQpCit7CisgICAgdmFyIG91dHB1dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRwdXQiKTsKKyAgICBvdXRwdXQuaW5uZXJIVE1MICs9
IHRleHQgKyAiPEJSPiI7Cit9CisKK3dpbmRvdy5kaWRFdmFsdWF0ZUZvclRlc3RJbkZyb250ZW5k
ID0gZnVuY3Rpb24oY2FsbElkLCBqc29uUmVzdWx0KQoreworICAgIGlmIChjYWxsYmFja3NbY2Fs
bElkXSkgeworICAgICAgICBjYWxsYmFja3NbY2FsbElkXS5jYWxsKHRoaXMsIEpTT04ucGFyc2Uo
anNvblJlc3VsdCkpOworICAgICAgICBkZWxldGUgY2FsbGJhY2tzW2NhbGxJZF07CisgICAgfQor
fTsKKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7Cit9CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IGFhY2MzZGMuLmI2NzgxOTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMDktMTAtMDEg
IFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3IgbmVlZHMgYSB0
ZXN0aW5nIGluZnJhc3RydWN0dXJlCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTI2NTQ5CisKKyAgICAgICAgVGVzdHM6IGluc3BlY3Rvci9jb25zb2xl
LXRlc3RzLmh0bWwKKyAgICAgICAgICAgICAgIGluc3BlY3Rvci9lbGVtZW50cy1wYW5lbC1zdHJ1
Y3R1cmUuaHRtbAorICAgICAgICAgICAgICAgaW5zcGVjdG9yL2V2YWx1YXRlLWluLWZyb250ZW5k
Lmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuSW5zcGVjdG9yLmV4cDoKKyAgICAgICAgKiBXZWJD
b3JlLm9yZGVyOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckJhY2tlbmQ6OmRpZEV2YWx1YXRlRm9yVGVzdEluRnJv
bnRlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmg6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaWRsOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRy
b2xsZXI6Omluc3BlY3RlZFBhZ2VEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ29udHJvbGxlcjo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJv
bGxlcjo6cG9wdWxhdGVTY3JpcHRPYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNvbnRyb2xsZXI6OmV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkRXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RnJvbnRlbmQ6OmV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZC5oOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5z
cGVjdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmV2YWx1YXRlRm9yVGVzdEluRnJvbnRl
bmQpOgorCiAyMDA5LTA5LTI5ICBEYXZlIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEpvbiBIb25leWN1dHQuCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNv
cmUuSW5zcGVjdG9yLmV4cCBiL1dlYkNvcmUvV2ViQ29yZS5JbnNwZWN0b3IuZXhwCmluZGV4IGY3
OTM0OGYuLjU3Njk5NGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5JbnNwZWN0b3IuZXhw
CisrKyBiL1dlYkNvcmUvV2ViQ29yZS5JbnNwZWN0b3IuZXhwCkBAIC0xMiw2ICsxMiw3IEBAIF9f
Wk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjRzaG93RXYKIF9fWk43V2ViQ29yZTE5SW5z
cGVjdG9yQ29udHJvbGxlcjVjbG9zZUV2CiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xs
ZXI3aW5zcGVjdEVQTlNfNE5vZGVFCiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXI5
c2hvd1BhbmVsRU5TMF8xM1NwZWNpYWxQYW5lbHNFCitfX1pON1dlYkNvcmUxOUluc3BlY3RvckNv
bnRyb2xsZXIyNWV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmRFbFJLTlNfNlN0cmluZ0UKIF9fWk5L
N1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIxN2RyYXdOb2RlSGlnaGxpZ2h0RVJOU18xNUdy
YXBoaWNzQ29udGV4dEUKIF9fWk5LN1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXI3ZW5hYmxl
ZEV2CiBfX1pOSzdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyN3NldHRpbmdFUktOU182U3Ry
aW5nRQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLm9yZGVyIGIvV2ViQ29yZS9XZWJDb3Jl
Lm9yZGVyCmluZGV4IGZmNDJlMjYuLmMxMDQwZTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29y
ZS5vcmRlcgorKysgYi9XZWJDb3JlL1dlYkNvcmUub3JkZXIKQEAgLTc4NTEsNiArNzg1MSw3IEBA
IF9fWk4zV1RGOUhhc2hUYWJsZUlQTjdXZWJDb3JlNFBhZ2VFUzNfTlNfMTdJZGVudGl0eUV4dHJh
Y3RvcklTM19FRU5TXzdQdHJIYXNoSVMzCiBfX1pOM1dURjlIYXNoVGFibGVJUE43V2ViQ29yZTRQ
YWdlRVMzX05TXzE3SWRlbnRpdHlFeHRyYWN0b3JJUzNfRUVOU183UHRySGFzaElTM19FRU5TXzEw
SGFzaFRyYWl0c0lTM19FRVM5X0U0N3JlbW92ZUFuZEludmFsaWRhCiBfX1pOM1dURjlIYXNoVGFi
bGVJUE43V2ViQ29yZTRQYWdlRVMzX05TXzE3SWRlbnRpdHlFeHRyYWN0b3JJUzNfRUVOU183UHRy
SGFzaElTM19FRU5TXzEwSGFzaFRyYWl0c0lTM19FRVM5X0U2cmVtb3ZlRVBTM18KIF9fWk43V2Vi
Q29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjIyaW5zcGVjdGVkUGFnZURlc3Ryb3llZEV2CitfX1pO
N1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIyNWV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmRF
bFJLTlNfNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjVjbG9zZUV2
CiBfX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDVjbG9zZUV2CiBfX1pOM1dURjZWZWN0b3JJ
TlNfNlJlZlB0cklON1dlYkNvcmUxMUhpc3RvcnlJdGVtRUVFTG0wRUUxNHNocmlua0NhcGFjaXR5
RW0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuY3BwIGIv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5jcHAKaW5kZXggNzUyZWMwYy4uMDYy
ODliYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5jcHAK
KysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5jcHAKQEAgLTU0Myw2ICs1
NDMsMTIgQEAgdm9pZCBJbnNwZWN0b3JCYWNrZW5kOjpyZW1vdmVET01TdG9yYWdlSXRlbShsb25n
IGNhbGxJZCwgbG9uZyBzdG9yYWdlSWQsIGNvbnN0IFMKIH0KICNlbmRpZgogCit2b2lkIEluc3Bl
Y3RvckJhY2tlbmQ6OmRpZEV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQobG9uZyBjYWxsSWQsIGNv
bnN0IFN0cmluZyYganNvblJlc3VsdCkKK3sKKyAgICBpZiAobV9pbnNwZWN0b3JDb250cm9sbGVy
KQorICAgICAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPmRpZEV2YWx1YXRlRm9yVGVzdEluRnJv
bnRlbmQoY2FsbElkLCBqc29uUmVzdWx0KTsKK30KKwogSW5zcGVjdG9yRE9NQWdlbnQqIEluc3Bl
Y3RvckJhY2tlbmQ6Omluc3BlY3RvckRPTUFnZW50KCkKIHsKICAgICBpZiAoIW1faW5zcGVjdG9y
Q29udHJvbGxlcikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tl
bmQuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaAppbmRleCA3MjI3OGEz
Li40YTNhYTFlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5k
LmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5oCkBAIC0xNTcsNiAr
MTU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RE9NU3RvcmFnZUl0ZW0obG9uZyBjYWxsSWQs
IGxvbmcgc3RvcmFnZUlkLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7
CiAgICAgdm9pZCByZW1vdmVET01TdG9yYWdlSXRlbShsb25nIGNhbGxJZCwgbG9uZyBzdG9yYWdl
SWQsIGNvbnN0IFN0cmluZyYga2V5KTsKICNlbmRpZgorICAgIHZvaWQgZGlkRXZhbHVhdGVGb3JU
ZXN0SW5Gcm9udGVuZChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBqc29uUmVzdWx0KTsKIAog
cHJpdmF0ZToKICAgICBJbnNwZWN0b3JCYWNrZW5kKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3Bl
Y3RvckNvbnRyb2xsZXIsIEluc3BlY3RvckNsaWVudCogY2xpZW50KTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaWRsIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQmFja2VuZC5pZGwKaW5kZXggNWM2YmFiYi4uNTZmNjZiOSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5pZGwKKysrIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5pZGwKQEAgLTEyNyw1ICsxMjcsNiBAQCBtb2R1bGUgY29y
ZSB7CiAgICAgICAgIHZvaWQgc2V0RE9NU3RvcmFnZUl0ZW0oaW4gbG9uZyBjYWxsSWQsIGluIGxv
bmcgc3RvcmFnZUlkLCBpbiBET01TdHJpbmcga2V5LCBpbiBET01TdHJpbmcgdmFsdWUpOwogICAg
ICAgICB2b2lkIHJlbW92ZURPTVN0b3JhZ2VJdGVtKGluIGxvbmcgY2FsbElkLCBpbiBsb25nIHN0
b3JhZ2VJZCwgaW4gRE9NU3RyaW5nIGtleSk7CiAjZW5kaWYKKyAgICAgICAgdm9pZCBkaWRFdmFs
dWF0ZUZvclRlc3RJbkZyb250ZW5kKGluIGxvbmcgY2FsbElkLCBpbiBET01TdHJpbmcganNvblJl
c3VsdCk7CiAgICAgfTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5j
cHAKaW5kZXggYmI3N2ViZi4uZmFkMzAyMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHAKQEAgLTE3OSwxMSArMTc5LDYgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9s
bGVyOjppbnNwZWN0ZWRQYWdlRGVzdHJveWVkKCkKICAgICBpZiAobV9zY3JpcHRTdGF0ZSkKICAg
ICAgICAgU2NyaXB0R2xvYmFsT2JqZWN0OjpyZW1vdmUobV9zY3JpcHRTdGF0ZSwgIkluc3BlY3Rv
ckNvbnRyb2xsZXIiKTsKIAotICAgIGlmIChtX3BhZ2UpIHsKLSAgICAgICAgbV9wYWdlLT5zZXRQ
YXJlbnRJbnNwZWN0b3JDb250cm9sbGVyKDApOwotICAgICAgICBtX3BhZ2UgPSAwOwotICAgIH0K
LQogICAgIEFTU0VSVChtX2luc3BlY3RlZFBhZ2UpOwogICAgIG1faW5zcGVjdGVkUGFnZSA9IDA7
CiAKQEAgLTYyMSw2ICs2MTYsOSBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmNsb3NlKCkK
ICAgICBtX2RvbUFnZW50ID0gMDsKICAgICBtX3RpbWVsaW5lQWdlbnQgPSAwOwogICAgIG1fc2Ny
aXB0U3RhdGUgPSAwOworICAgIGlmIChtX3BhZ2UpCisgICAgICAgIG1fcGFnZS0+c2V0UGFyZW50
SW5zcGVjdG9yQ29udHJvbGxlcigwKTsKKyAgICBtX3BhZ2UgPSAwOwogfQogCiB2b2lkIEluc3Bl
Y3RvckNvbnRyb2xsZXI6OnNob3dXaW5kb3coKQpAQCAtNjczLDYgKzY3MSwxMSBAQCB2b2lkIElu
c3BlY3RvckNvbnRyb2xsZXI6OnBvcHVsYXRlU2NyaXB0T2JqZWN0cygpCiAjZW5kaWYKIAogICAg
IG1fZnJvbnRlbmQtPnBvcHVsYXRlSW50ZXJmYWNlKCk7CisKKyAgICAvLyBEaXNwYXRjaCBwZW5k
aW5nIGZyb250ZW5kIGNvbW1hbmRzCisgICAgZm9yIChWZWN0b3I8cGFpcjxsb25nLCBTdHJpbmc+
ID46Oml0ZXJhdG9yIGl0ID0gbV9wZW5kaW5nRXZhbHVhdGVUZXN0Q29tbWFuZHMuYmVnaW4oKTsg
aXQgIT0gbV9wZW5kaW5nRXZhbHVhdGVUZXN0Q29tbWFuZHMuZW5kKCk7ICsraXQpCisgICAgICAg
IG1fZnJvbnRlbmQtPmV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQoKCppdCkuZmlyc3QsICgqaXQp
LnNlY29uZCk7CisgICAgbV9wZW5kaW5nRXZhbHVhdGVUZXN0Q29tbWFuZHMuY2xlYXIoKTsKIH0K
IAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpyZXNldFNjcmlwdE9iamVjdHMoKQpAQCAtMTQy
OSw2ICsxNDMyLDI1IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkQ29udGludWUoKQog
CiAjZW5kaWYKIAordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpldmFsdWF0ZUZvclRlc3RJbkZy
b250ZW5kKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIHNjcmlwdCkKK3sKKyAgICBpZiAobV9m
cm9udGVuZCAmJiB3aW5kb3dWaXNpYmxlKCkpCisgICAgICAgIG1fZnJvbnRlbmQtPmV2YWx1YXRl
Rm9yVGVzdEluRnJvbnRlbmQoY2FsbElkLCBzY3JpcHQpOworICAgIGVsc2UKKyAgICAgICAgbV9w
ZW5kaW5nRXZhbHVhdGVUZXN0Q29tbWFuZHMuYXBwZW5kKHBhaXI8bG9uZywgU3RyaW5nPihjYWxs
SWQsIHNjcmlwdCkpOworfQorCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZEV2YWx1YXRl
Rm9yVGVzdEluRnJvbnRlbmQobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYganNvblJlc3VsdCkK
K3sKKyAgICBTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUgPSBzY3JpcHRTdGF0ZUZyb21QYWdlKG1f
aW5zcGVjdGVkUGFnZSk7CisgICAgU2NyaXB0T2JqZWN0IHdpbmRvdzsKKyAgICBTY3JpcHRHbG9i
YWxPYmplY3Q6OmdldChzY3JpcHRTdGF0ZSwgIndpbmRvdyIsIHdpbmRvdyk7CisgICAgU2NyaXB0
RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKHNjcmlwdFN0YXRlLCB3aW5kb3csICJkaWRFdmFsdWF0ZUZv
clRlc3RJbkZyb250ZW5kIik7CisgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoc3RhdGljX2Nh
c3Q8aW50PihjYWxsSWQpKTsKKyAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChqc29uUmVzdWx0
KTsKKyAgICBmdW5jdGlvbi5jYWxsKCk7Cit9CisKIHN0YXRpYyBQYXRoIHF1YWRUb1BhdGgoY29u
c3QgRmxvYXRRdWFkJiBxdWFkKQogewogICAgIFBhdGggcXVhZFBhdGg7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmggYi9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggZmY3YTUxNi4uZTk5ZDM3OCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtMjgwLDYgKzI4MCw4IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29udGludWUoKTsKICNlbmRpZgogCisgICAgdm9pZCBl
dmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIHNjcmlw
dCk7CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEluc3BlY3RvckJhY2tlbmQ7CiAgICAg
Ly8gRm9sbG93aW5nIGFyZSB1c2VkIGZyb20gSW5zcGVjdG9yQmFja2VuZCBhbmQgaW50ZXJuYWxs
eS4KQEAgLTMyOCw2ICszMzAsOCBAQCBwcml2YXRlOgogCiAgICAgU3BlY2lhbFBhbmVscyBzcGVj
aWFsUGFuZWxGb3JKU05hbWUoY29uc3QgU3RyaW5nJiBwYW5lbE5hbWUpOwogCisgICAgdm9pZCBk
aWRFdmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIGpz
b25SZXN1bHQpOworCiAgICAgUGFnZSogbV9pbnNwZWN0ZWRQYWdlOwogICAgIEluc3BlY3RvckNs
aWVudCogbV9jbGllbnQ7CiAgICAgT3duUHRyPEluc3BlY3RvckZyb250ZW5kPiBtX2Zyb250ZW5k
OwpAQCAtMzYyLDYgKzM2Niw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEluc3BlY3RvckJhY2tl
bmQ+IG1faW5zcGVjdG9yQmFja2VuZDsKICAgICBIYXNoTWFwPFN0cmluZywgU2NyaXB0VmFsdWU+
IG1faWRUb0NvbnNvbGVPYmplY3Q7CiAgICAgbG9uZyBtX2xhc3RCb3VuZE9iamVjdElkOworICAg
IFZlY3RvcjxwYWlyPGxvbmcsIFN0cmluZz4gPiBtX3BlbmRpbmdFdmFsdWF0ZVRlc3RDb21tYW5k
czsKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKICAgICBib29sIG1fZGVidWdnZXJF
bmFibGVkOwogICAgIGJvb2wgbV9hdHRhY2hEZWJ1Z2dlcldoZW5TaG93bjsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNwcCBiL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kLmNwcAppbmRleCA2M2JiNmUyLi45OTQ0ZTNjIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5jcHAKKysrIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuY3BwCkBAIC00NTksNiArNDU5LDE0IEBAIHZv
aWQgSW5zcGVjdG9yRnJvbnRlbmQ6OmFkZE5vZGVzVG9TZWFyY2hSZXN1bHQoY29uc3QgU3RyaW5n
JiBub2RlSWRzKQogICAgIGZ1bmN0aW9uLT5jYWxsKCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yRnJv
bnRlbmQ6OmV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQoaW50IGNhbGxJZCwgY29uc3QgU3RyaW5n
JiBzY3JpcHQpCit7CisgICAgT3duUHRyPFNjcmlwdEZ1bmN0aW9uQ2FsbD4gZnVuY3Rpb24obmV3
RnVuY3Rpb25DYWxsKCJldmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kIikpOworICAgIGZ1bmN0aW9u
LT5hcHBlbmRBcmd1bWVudChjYWxsSWQpOworICAgIGZ1bmN0aW9uLT5hcHBlbmRBcmd1bWVudChz
Y3JpcHQpOworICAgIGZ1bmN0aW9uLT5jYWxsKCk7Cit9CisKIFBhc3NPd25QdHI8U2NyaXB0RnVu
Y3Rpb25DYWxsPiBJbnNwZWN0b3JGcm9udGVuZDo6bmV3RnVuY3Rpb25DYWxsKGNvbnN0IFN0cmlu
ZyYgZnVuY3Rpb25OYW1lKQogewogICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCogZnVuY3Rpb24gPSBu
ZXcgU2NyaXB0RnVuY3Rpb25DYWxsKG1fc2NyaXB0U3RhdGUsIG1fd2ViSW5zcGVjdG9yLCAiZGlz
cGF0Y2giKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
LmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5oCmluZGV4IDUxZjE3ZmIu
LmI0MTRjN2MgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
LmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuaApAQCAtMTI5LDYg
KzEyOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBTY3JpcHRTdGF0ZSogc2Ny
aXB0U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdFN0YXRlOyB9CiAKKyAgICAgICAgdm9p
ZCBldmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKGludCBjYWxsSWQsIGNvbnN0IFN0cmluZyYgc2Ny
aXB0KTsKICAgICBwcml2YXRlOgogICAgICAgICBQYXNzT3duUHRyPFNjcmlwdEZ1bmN0aW9uQ2Fs
bD4gbmV3RnVuY3Rpb25DYWxsKGNvbnN0IFN0cmluZyYgZnVuY3Rpb25OYW1lKTsKICAgICAgICAg
dm9pZCBjYWxsU2ltcGxlRnVuY3Rpb24oY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUpOwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcyBiL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKaW5kZXggZGU0ZjRmYi4uYjQ5NWY3
YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwor
KysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCkBAIC0xNjAwLDYg
KzE2MDAsMTEgQEAgV2ViSW5zcGVjdG9yLl90b29sYmFySXRlbUNsaWNrZWQgPSBmdW5jdGlvbihl
dmVudCkKICAgICB0aGlzLmN1cnJlbnRQYW5lbCA9IHRvb2xiYXJJdGVtLnBhbmVsOwogfQogCitX
ZWJJbnNwZWN0b3IuZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZCA9IGZ1bmN0aW9uKGNhbGxJZCwg
c2NyaXB0KQoreworICAgIEluc3BlY3RvckNvbnRyb2xsZXIuZGlkRXZhbHVhdGVGb3JUZXN0SW5G
cm9udGVuZChjYWxsSWQsIEpTT04uc3RyaW5naWZ5KHdpbmRvdy5ldmFsKHNjcmlwdCkpKTsKK30K
KwogLy8gVGhpcyB0YWJsZSBtYXBzIE1JTUUgdHlwZXMgdG8gdGhlIFJlc291cmNlLlR5cGVzIHdo
aWNoIGFyZSB2YWxpZCBmb3IgdGhlbS4KIC8vIFRoZSBmb2xsb3dpbmcgbGluZToKIC8vICAgICJ0
ZXh0L2h0bWwiOiAgICAgICAgICAgICAgICB7MDogMX0sCmRpZmYgLS1naXQgYS9XZWJLaXQvQ2hh
bmdlTG9nIGIvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAyZjhmMThmLi5jYWM5ZWQzIDEwMDY0NAot
LS0gYS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NCBAQAorMjAwOS0xMC0wMSAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCisKKyAgICAgICAgV2ViIElu
c3BlY3RvciBuZWVkcyBhIHRlc3RpbmcgaW5mcmFzdHJ1Y3R1cmUKKworICAgICAgICBOZWVkIGEg
c2hvcnQgZGVzY3JpcHRpb24gYW5kIGJ1ZyBVUkwgKE9PUFMhKQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY1NDkKKworICAgICAgICAqIFdlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDA5LTA5LTI5ICBCcmFkeSBFaWRzb24gIDxi
ZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBKb2huIFN1bGxpdmFuLgpk
aWZmIC0tZ2l0IGEvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGI3NjJmYzkuLjRkN2E3
MjAgMTAwNjQ0Ci0tLSBhL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyMSw2ICsx
MjEsNyBAQAogCQk2NUVFREU1ODA4NEZGQzlFMDAwMkRCMjUgLyogV2ViTlNGaWxlTWFuYWdlckV4
dHJhcy5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVF
RURFNTYwODRGRkM5RTAwMDJEQjI1IC8qIFdlYk5TRmlsZU1hbmFnZXJFeHRyYXMubSAqLzsgfTsK
IAkJNjVGRkI3RkMwQUQwQjdEMzAwNDhDRDA1IC8qIFdlYkRvY3VtZW50TG9hZGVyTWFjLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUZGQjdGQTBBRDBC
N0QzMDA0OENEMDUgLyogV2ViRG9jdW1lbnRMb2FkZXJNYWMuaCAqLzsgfTsKIAkJNjVGRkI3RkQw
QUQwQjdEMzAwNDhDRDA1IC8qIFdlYkRvY3VtZW50TG9hZGVyTWFjLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVGRkI3RkIwQUQwQjdEMzAwNDhDRDA1
IC8qIFdlYkRvY3VtZW50TG9hZGVyTWFjLm1tICovOyB9OworCQk3QThGRjBEMTEwNzUwMjRBMDBB
ODBBMDggLyogV2ViSW5zcGVjdG9yUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0E4RkYwRDAxMDc1MDI0QTAwQTgwQTA4IC8qIFdlYkluc3Bl
Y3RvclByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3RTZGRUYwODA4OTg1QTcyMDBDNDRDM0YgLyogV2ViU2NyaXB0RGVidWdEZWxlZ2F0
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U2RkVG
MDUwODk4NUE3MjAwQzQ0QzNGIC8qIFdlYlNjcmlwdERlYnVnRGVsZWdhdGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RTZGRUYwOTA4OTg1QTcy
MDBDNDRDM0YgLyogV2ViU2NyaXB0RGVidWdEZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFNkZFRjA2MDg5ODVBNzIwMEM0NEMzRiAvKiBX
ZWJTY3JpcHREZWJ1Z0RlbGVnYXRlLm1tICovOyB9OwogCQk5MzA0QjMwMDBCMDIzNDE1MDBGNzg1
MEQgLyogV2ViSWNvbkRhdGFiYXNlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMDRCMkZGMEIwMjM0MTUwMEY3ODUwRCAvKiBXZWJJY29u
RGF0YWJhc2VJbnRlcm5hbC5oICovOyB9OwpAQCAtNTEwLDYgKzUxMSw3IEBACiAJCTY1RkZCN0ZC
MEFEMEI3RDMwMDQ4Q0QwNSAvKiBXZWJEb2N1bWVudExvYWRlck1hYy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJEb2N1bWVudExvYWRlck1hYy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzA4MkY1NkYwMzhFQURBQTAwQTgwMTgwIC8qIFdl
YktpdE5TU3RyaW5nRXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYktpdE5TU3RyaW5nRXh0cmFzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk3MDgyRjU3MDAzOEVBREFB
MDBBODAxODAgLyogV2ViS2l0TlNTdHJpbmdFeHRyYXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgZmlsZUVu
Y29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgcGF0aCA9IFdlYktpdE5TU3RyaW5nRXh0cmFz
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsg
fTsKKwkJN0E4RkYwRDAxMDc1MDI0QTAwQTgwQTA4IC8qIFdlYkluc3BlY3RvclByaXZhdGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5zcGVjdG9yUHJpdmF0ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RTZGRUYwNTA4OTg1QTcyMDBDNDRDM0YgLyog
V2ViU2NyaXB0RGVidWdEZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNjcmlwdERlYnVnRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTdFNkZFRjA2MDg5
ODVBNzIwMEM0NEMzRiAvKiBXZWJTY3JpcHREZWJ1Z0RlbGVnYXRlLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJTY3JpcHREZWJ1
Z0RlbGVnYXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNU
YWJzID0gMDsgfTsKIAkJODMwRTgxRTAwNTg1M0FDMDAwQUQwODkxIC8qIFNlY3VyaXR5LmZyYW1l
d29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdy
YXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gU2VjdXJpdHkuZnJhbWV3b3JrOyBwYXRoID0gL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxh
YnNvbHV0ZT4iOyB9OwpAQCAtODExLDYgKzgxMyw3IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQk1
RDdCRjgxMjBDMkExRDkwMDA4Q0UwNkQgLyogV2ViSW5zcGVjdG9yLmggKi8sCiAJCQkJNUQ3QkY4
MTMwQzJBMUQ5MDAwOENFMDZEIC8qIFdlYkluc3BlY3Rvci5tbSAqLywKKwkJCQk3QThGRjBEMDEw
NzUwMjRBMDBBODBBMDggLyogV2ViSW5zcGVjdG9yUHJpdmF0ZS5oICovLAogCQkJCTFDNjhGNjYz
MDk1QjVGQzEwMEMyOTg0RSAvKiBXZWJOb2RlSGlnaGxpZ2h0LmggKi8sCiAJCQkJMUM2OEY2NjQw
OTVCNUZDMTAwQzI5ODRFIC8qIFdlYk5vZGVIaWdobGlnaHQubW0gKi8sCiAJCQkJMUM2OEY2NjUw
OTVCNUZDMTAwQzI5ODRFIC8qIFdlYk5vZGVIaWdobGlnaHRWaWV3LmggKi8sCkBAIC0xMzc4LDYg
KzEzODEsNyBAQAogCQkJCTFBMkQ3NTUwMERFNDgxMEUwMEYwQTY0OCAvKiBXZWJJY29uRmV0Y2hl
ckludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk1RDdCRjgxNDBDMkExRDkwMDA4Q0UwNkQg
LyogV2ViSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNjY5M0REQzBCRkJBODUyMDAy
MTYwNzIgLyogV2ViSW5zcGVjdG9yQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk3QThGRjBE
MTEwNzUwMjRBMDBBODBBMDggLyogV2ViSW5zcGVjdG9yUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTM5ODEwQTAwODI0QkYwMTAwOERGMDM4IC8qIFdlYkphdmFQbHVnSW4uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTkzOTgxMDQyMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJKYXZhU2NyaXB0VGV4
dElucHV0UGFuZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzOTgxMDg1MDgyNEJGMDEwMDhERjAz
OCAvKiBXZWJLZXlHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvV2ViS2l0
L2d0ay9DaGFuZ2VMb2cgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCA0MjY1OTg4Li45MTZh
YzY0IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9XZWJLaXQvZ3RrL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDA5LTEwLTAxICBQYXZlbCBGZWxkbWFuICA8cGZl
bGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hl
ci4KKworICAgICAgICBXZWIgSW5zcGVjdG9yIG5lZWRzIGEgdGVzdGluZyBpbmZyYXN0cnVjdHVy
ZQorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjU0
OQorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQ2xpZW50OjpjcmVhdGVQYWdlKToKKwogMjAwOS0wOS0y
OSAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
R3VzdGF2byBOb3JvbmhhLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9J
bnNwZWN0b3JDbGllbnRHdGsuY3BwIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0
b3JDbGllbnRHdGsuY3BwCmluZGV4IDkwOGJmZmEuLmZlZjA3YzEgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmNwcAorKysgYi9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5jcHAKQEAgLTY4LDggKzY4LDEz
IEBAIHZvaWQgSW5zcGVjdG9yQ2xpZW50Ojp3ZWJWaWV3RGVzdHJveWVkKCkKIAogUGFnZSogSW5z
cGVjdG9yQ2xpZW50OjpjcmVhdGVQYWdlKCkKIHsKLSAgICBpZiAobV93ZWJWaWV3KQotICAgICAg
cmV0dXJuIGNvcmUobV93ZWJWaWV3KTsKKyAgICBpZiAobV93ZWJWaWV3KSB7CisgICAgICAgIGdi
b29sZWFuIGhhbmRsZWQgPSBGQUxTRTsKKyAgICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKG1f
d2ViSW5zcGVjdG9yLCAiZGVzdHJveSIsICZoYW5kbGVkKTsKKworICAgICAgICAvKiB3ZSBjYW4g
bm93IGRpc3Bvc2Ugb3VyIG93biByZWZlcmVuY2UgKi8KKyAgICAgICAgZ19vYmplY3RfdW5yZWYo
bV93ZWJJbnNwZWN0b3IpOworICAgIH0KIAogICAgIC8vIFRoaXMgZ19vYmplY3RfZ2V0IHdpbGwg
cmVmIHRoZSBpbnNwZWN0b3IuIFdlJ3JlIG5vdCBkb2luZyBhbgogICAgIC8vIHVucmVmIGlmIHRo
aXMgbWV0aG9kIHN1Y2NlZWRzIGJlY2F1c2UgdGhlIGluc3BlY3RvciBvYmplY3QgbXVzdApkaWZm
IC0tZ2l0IGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRl
eCBlNDZiYzQ2Li45ODJkODBlIDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysg
Yi9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDA5LTEwLTAxICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IFRpbW90aHkgSGF0Y2hlci4KKworICAgICAgICBXZWIgSW5zcGVjdG9yIG5lZWRzIGEgdGVzdGlu
ZyBpbmZyYXN0cnVjdHVyZQorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yNjU0OQorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50Lm1tOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpjcmVhdGVQYWdlKToKKyAg
ICAgICAgKiBXZWJJbnNwZWN0b3IvV2ViSW5zcGVjdG9yLm1tOgorICAgICAgICAoLVtXZWJJbnNw
ZWN0b3IgZXZhbHVhdGVJbkZyb250ZW5kOmNhbGxJZDpzY3JpcHQ6XSk6CisgICAgICAgICogV2Vi
SW5zcGVjdG9yL1dlYkluc3BlY3RvclByaXZhdGUuaDogQWRkZWQuCisKIDIwMDktMDktMjkgIEJy
YWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJ1YmJlcnN0YW1wZWQg
YnkgRGFuIEJlcm5zdGVpbi4KZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50Lm1tIGIvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQubW0KaW5kZXggM2YwYjQzZC4uYzZiM2U3NiAxMDA2NDQKLS0tIGEvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KKysrIGIvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KQEAgLTgxLDggKzgxLDkgQEAg
dm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3RvckRlc3Ryb3llZCgpCiAKIFBhZ2UqIFdl
Ykluc3BlY3RvckNsaWVudDo6Y3JlYXRlUGFnZSgpCiB7Ci0gICAgaWYgKCFtX3dpbmRvd0NvbnRy
b2xsZXIpCi0gICAgICAgIG1fd2luZG93Q29udHJvbGxlci5hZG9wdE5TKFtbV2ViSW5zcGVjdG9y
V2luZG93Q29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhJbnNwZWN0ZWRXZWJWaWV3Om1fd2ViVmll
d10pOworICAgIGlmIChtX3dpbmRvd0NvbnRyb2xsZXIpCisgICAgICAgIFtbbV93aW5kb3dDb250
cm9sbGVyLmdldCgpIHdlYlZpZXddIGNsb3NlXTsKKyAgICBtX3dpbmRvd0NvbnRyb2xsZXIuYWRv
cHROUyhbW1dlYkluc3BlY3RvcldpbmRvd0NvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoSW5zcGVj
dGVkV2ViVmlldzptX3dlYlZpZXddKTsKIAogICAgIHJldHVybiBjb3JlKFttX3dpbmRvd0NvbnRy
b2xsZXIuZ2V0KCkgd2ViVmlld10pOwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9XZWJJbnNw
ZWN0b3IvV2ViSW5zcGVjdG9yLm1tIGIvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvV2ViSW5zcGVj
dG9yLm1tCmluZGV4IGMwNGE1NmMuLmNjYjA5YzUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvV2Vi
SW5zcGVjdG9yL1dlYkluc3BlY3Rvci5tbQorKysgYi9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9X
ZWJJbnNwZWN0b3IubW0KQEAgLTI3LDcgKzI3LDkgQEAKICAqLwogCiAjaW1wb3J0ICJXZWJJbnNw
ZWN0b3IuaCIKKwogI2ltcG9ydCAiV2ViRnJhbWVJbnRlcm5hbC5oIgorI2ltcG9ydCAiV2ViSW5z
cGVjdG9yUHJpdmF0ZS5oIgogCiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvRnJhbWUuaD4KQEAgLTE2Myw2ICsxNjUsMTIgQEAgdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBjb3JlKF93ZWJWaWV3KSkKICAgICAgICAg
cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5kZXRhY2hXaW5kb3coKTsKIH0KKworLSAodm9p
ZClldmFsdWF0ZUluRnJvbnRlbmQ6KGlkKXNlbmRlciBjYWxsSWQ6KGxvbmcpY2FsbElkIHNjcmlw
dDooTlNTdHJpbmcgKilzY3JpcHQKK3sKKyAgICBpZiAoUGFnZSogcGFnZSA9IGNvcmUoX3dlYlZp
ZXcpKQorICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmV2YWx1YXRlRm9yVGVz
dEluRnJvbnRlbmQoY2FsbElkLCBzY3JpcHQpOworfQogQGVuZAogCiBAaW1wbGVtZW50YXRpb24g
V2ViSW5zcGVjdG9yIChPYnNvbGV0ZSkKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2ViSW5zcGVj
dG9yL1dlYkluc3BlY3RvclByaXZhdGUuaCBiL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL1dlYklu
c3BlY3RvclByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jODJi
YjkyCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvV2ViSW5zcGVj
dG9yUHJpdmF0ZS5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUg
QXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLiAKKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgi
QXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4g
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gVGhpcyBoZWFk
ZXIgY29udGFpbnMgdGhlIFdlYkluc3BlY3RvciBTUEkuCisKKyNpbXBvcnQgIldlYkluc3BlY3Rv
ci5oIgorCitAaW50ZXJmYWNlIFdlYkluc3BlY3RvciAoV2ViUHJpdmF0ZSkKKy0gKHZvaWQpZXZh
bHVhdGVJbkZyb250ZW5kOihpZClzZW5kZXIgY2FsbElkOihsb25nKWNhbGxJZCBzY3JpcHQ6KE5T
U3RyaW5nICopc2NyaXB0OworQGVuZApkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0NoYW5nZUxvZyBi
L1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggYjI1MmQ4Yy4uMDMwM2ZkMiAxMDA2NDQKLS0tIGEv
V2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTQgQEAKKzIwMDktMTAtMDEgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgorCisgICAgICAgIFdlYiBJ
bnNwZWN0b3IgbmVlZHMgYSB0ZXN0aW5nIGluZnJhc3RydWN0dXJlCisKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2NTQ5CisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDbGllbnRRdDo6Y3JlYXRlUGFnZSk6CisKIDIwMDktMDktMjkgIEFuZHJhcyBCZWNzaSAg
PGJlY3NpLmFuZHJhc0BzdHVkLnUtc3plZ2VkLmh1PgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRv
ciBBcm5lIFZlc3Riw7guCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5z
cGVjdG9yQ2xpZW50UXQuY3BwIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNs
aWVudFF0LmNwcAppbmRleCAzNDAzMjVlLi5lMjExZmIzIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuY3BwCisrKyBiL1dlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5jcHAKQEAgLTg0LDkgKzg0LDYgQEAgdm9pZCBJ
bnNwZWN0b3JDbGllbnRRdDo6aW5zcGVjdG9yRGVzdHJveWVkKCkKIAogUGFnZSogSW5zcGVjdG9y
Q2xpZW50UXQ6OmNyZWF0ZVBhZ2UoKQogewotICAgIGlmIChtX2luc3BlY3RvclZpZXcpCi0gICAg
ICAgIHJldHVybiBtX2luc3BlY3RvclZpZXctPnBhZ2UoKS0+ZC0+cGFnZTsKLQogICAgIFFXZWJW
aWV3KiBpbnNwZWN0b3JWaWV3ID0gbmV3IFFXZWJWaWV3OwogICAgIEluc3BlY3RvckNsaWVudFdl
YlBhZ2UqIGluc3BlY3RvclBhZ2UgPSBuZXcgSW5zcGVjdG9yQ2xpZW50V2ViUGFnZShpbnNwZWN0
b3JWaWV3KTsKICAgICBpbnNwZWN0b3JWaWV3LT5zZXRQYWdlKGluc3BlY3RvclBhZ2UpOwpkaWZm
IC0tZ2l0IGEvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRl
eCAwNzQ2NTE2Li5hMWIzMjY3IDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysg
Yi9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDA5LTEwLTAxICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IFRpbW90aHkgSGF0Y2hlci4KKworICAgICAgICBXZWIgSW5zcGVjdG9yIG5lZWRzIGEgdGVzdGlu
ZyBpbmZyYXN0cnVjdHVyZQorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yNjU0OQorCisgICAgICAgICogSW50ZXJmYWNlcy9JV2ViSW5zcGVjdG9yUHJp
dmF0ZS5pZGw6IEFkZGVkLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5jcHA6CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6OmNyZWF0ZVBhZ2UpOgorICAg
ICAgICAqIFdlYkluc3BlY3Rvci5jcHA6CisgICAgICAgIChXZWJJbnNwZWN0b3I6OmV2YWx1YXRl
SW5Gcm9udGVuZCk6CisgICAgICAgICogV2ViSW5zcGVjdG9yLmg6CisgICAgICAgICogV2ViS2l0
LnZjcHJvai9JbnRlcmZhY2VzLnZjcHJvajoKKwogMjAwOS0wOS0yOSAgS2VubmV0aCBSdXNzZWxs
ICA8a2JyQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292
LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJJbnNwZWN0b3JQcml2YXRl
LmlkbCBiL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViSW5zcGVjdG9yUHJpdmF0ZS5pZGwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQ0MjFiZAotLS0gL2Rldi9udWxsCisr
KyBiL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViSW5zcGVjdG9yUHJpdmF0ZS5pZGwKQEAgLTAs
MCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUg
bmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgor
ICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBET19OT19JTVBPUlRTCitpbXBvcnQgIm9haWRsLmlk
bCI7CitpbXBvcnQgIm9jaWRsLmlkbCI7CisjZW5kaWYKKworWworICAgIG9iamVjdCwKKyAgICBv
bGVhdXRvbWF0aW9uLAorICAgIHV1aWQoQTVBMzFDRDAtQUVBOS0xMWRlLThBMzktMDgwMDIwMEM5
QTY2KSwKKyAgICBwb2ludGVyX2RlZmF1bHQodW5pcXVlKQorXQoraW50ZXJmYWNlIElXZWJJbnNw
ZWN0b3JQcml2YXRlIDogSVVua25vd24KK3sKKyAgICBIUkVTVUxUIGV2YWx1YXRlSW5Gcm9udGVu
ZChbaW5dIFVMT05HIGNhbGxJZCwgW2luXSBCU1RSIHNjcmlwdCk7Cit9CmRpZmYgLS1naXQgYS9X
ZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAgYi9XZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKaW5kZXggYmE3MjRiNC4u
ZGUyY2ZkZSAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnQuY3BwCisrKyBiL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50LmNwcApAQCAtOTksOSArOTksNiBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6aW5z
cGVjdG9yRGVzdHJveWVkKCkKIAogUGFnZSogV2ViSW5zcGVjdG9yQ2xpZW50OjpjcmVhdGVQYWdl
KCkKIHsKLSAgICBpZiAobV93ZWJWaWV3KQotICAgICAgICByZXR1cm4gY29yZShtX3dlYlZpZXcu
Z2V0KCkpOwotCiAgICAgQVNTRVJUKCFtX2h3bmQpOwogCiAgICAgcmVnaXN0ZXJXaW5kb3dDbGFz
cygpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJJbnNwZWN0b3IuY3BwIGIvV2ViS2l0L3dp
bi9XZWJJbnNwZWN0b3IuY3BwCmluZGV4IDFkZGJkZDguLmZkY2U1ZWEgMTAwNjQ0Ci0tLSBhL1dl
YktpdC93aW4vV2ViSW5zcGVjdG9yLmNwcAorKysgYi9XZWJLaXQvd2luL1dlYkluc3BlY3Rvci5j
cHAKQEAgLTI1NiwzICsyNTYsMTYgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJJbnNw
ZWN0b3I6OnNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKEJPT0wgZW5hYmwKIAogICAgIHJl
dHVybiBTX09LOwogfQorCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFICBXZWJJbnNwZWN0b3I6
OmV2YWx1YXRlSW5Gcm9udGVuZChVTE9ORyBjYWxsSWQsIEJTVFIgYlNjcmlwdCkKK3sKKyAgICBp
ZiAoIW1fd2ViVmlldykKKyAgICAgICAgcmV0dXJuIFNfT0s7CisKKyAgICBQYWdlKiBwYWdlID0g
bV93ZWJWaWV3LT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm4gU19PSzsK
KworICAgIFN0cmluZyBzY3JpcHQoYlNjcmlwdCwgU3lzU3RyaW5nTGVuKGJTY3JpcHQpKTsKKyAg
ICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmV2YWx1YXRlSW5Gcm9udGVuZChjYWxsSWQs
IHNjcmlwdCk7Cit9CmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL1dlYkluc3BlY3Rvci5oIGIvV2Vi
S2l0L3dpbi9XZWJJbnNwZWN0b3IuaAppbmRleCA1MzAzYTYxLi4zNzM3YmY4IDEwMDY0NAotLS0g
YS9XZWJLaXQvd2luL1dlYkluc3BlY3Rvci5oCisrKyBiL1dlYktpdC93aW4vV2ViSW5zcGVjdG9y
LmgKQEAgLTM0LDcgKzM0LDcgQEAKIAogY2xhc3MgV2ViVmlldzsKIAotY2xhc3MgV2ViSW5zcGVj
dG9yIDogcHVibGljIElXZWJJbnNwZWN0b3IsIHB1YmxpYyBOb25jb3B5YWJsZSB7CitjbGFzcyBX
ZWJJbnNwZWN0b3IgOiBwdWJsaWMgSVdlYkluc3BlY3RvciwgcHVibGljIElXZWJJbnNwZWN0b3JQ
cml2YXRlIHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFdlYkluc3Bl
Y3RvciogY3JlYXRlSW5zdGFuY2UoV2ViVmlldyopOwogCkBAIC01OSw2ICs1OSw4IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpc0phdmFTY3JpcHRQ
cm9maWxpbmdFbmFibGVkKEJPT0wqIGlzUHJvZmlsaW5nRW5hYmxlZCk7CiAgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKEJP
T0wpOworICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBldmFsdWF0
ZUluRnJvbnRlbmQoVUxPTkcgY2FsbElkLCBCU1RSIHNjcmlwdCk7CiAKIHByaXZhdGU6CiAgICAg
V2ViSW5zcGVjdG9yKFdlYlZpZXcqKTsKZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vV2ViS2l0LnZj
cHJvai9JbnRlcmZhY2VzLnZjcHJvaiBiL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9JbnRlcmZh
Y2VzLnZjcHJvagppbmRleCA2MWY1MzAzLi5jYmM4MjMxIDEwMDY0NAotLS0gYS9XZWJLaXQvd2lu
L1dlYktpdC52Y3Byb2ovSW50ZXJmYWNlcy52Y3Byb2oKKysrIGIvV2ViS2l0L3dpbi9XZWJLaXQu
dmNwcm9qL0ludGVyZmFjZXMudmNwcm9qCkBAIC05NDQsNiArOTQ0LDI2IEBACiAJCQk8L0ZpbGVD
b25maWd1cmF0aW9uPg0KIAkJPC9GaWxlPg0KIAkJPEZpbGUNCisJCQlSZWxhdGl2ZVBhdGg9Ii4u
XEludGVyZmFjZXNcSVdlYkluc3BlY3RvclByaXZhdGUuaWRsIg0KKwkJCT4NCisJCQk8RmlsZUNv
bmZpZ3VyYXRpb24NCisJCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJCUV4Y2x1ZGVkRnJvbUJ1
aWxkPSJ0cnVlIg0KKwkJCQk+DQorCQkJCTxUb29sDQorCQkJCQlOYW1lPSJWQ01JRExUb29sIg0K
KwkJCQkvPg0KKwkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJPEZpbGVDb25maWd1cmF0aW9u
DQorCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVl
Ig0KKwkJCQk+DQorCQkJCTxUb29sDQorCQkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCQkvPg0K
KwkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQk8L0ZpbGU+DQorCQk8RmlsZQ0KIAkJCVJlbGF0
aXZlUGF0aD0iLi5cSW50ZXJmYWNlc1xJV2ViSmF2YVNjcmlwdENvbGxlY3Rvci5pZGwiDQogCQkJ
Pg0KIAkJCTxGaWxlQ29uZmlndXJhdGlvbg0KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5n
ZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwppbmRleCBmOTkyOGQ3Li40ZTA1NTA1IDEwMDY0
NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzQgQEAKKzIwMDktMTAtMDEgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgorCisg
ICAgICAgIFdlYiBJbnNwZWN0b3IgbmVlZHMgYSB0ZXN0aW5nIGluZnJhc3RydWN0dXJlCisKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2NTQ5CisKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAg
IChzaG93V2ViSW5zcGVjdG9yQ2FsbGJhY2spOgorICAgICAgICAoY2xvc2VXZWJJbnNwZWN0b3JD
YWxsYmFjayk6CisgICAgICAgIChldmFsdWF0ZUluV2ViSW5zcGVjdG9yQ2FsbGJhY2spOgorICAg
ICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwOgorICAgICAgICAoTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnNob3dXZWJJbnNwZWN0b3IpOgorICAgICAgICAoTGF5b3V0VGVzdENv
bnRyb2xsZXI6OmNsb3NlV2ViSW5zcGVjdG9yKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9s
bGVyOjpldmFsdWF0ZUluV2ViSW5zcGVjdG9yKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9t
YWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2hvd1dlYkluc3BlY3Rvcik6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6
Y2xvc2VXZWJJbnNwZWN0b3IpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmV2YWx1
YXRlSW5XZWJJbnNwZWN0b3IpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRU
ZXN0Q29udHJvbGxlcldpbi5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2hv
d1dlYkluc3BlY3Rvcik6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xvc2VXZWJJ
bnNwZWN0b3IpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmV2YWx1YXRlSW5XZWJJ
bnNwZWN0b3IpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9s
bGVyV3guY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNob3dXZWJJbnNwZWN0
b3IpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsb3NlV2ViSW5zcGVjdG9yKToK
KyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpldmFsdWF0ZUluV2ViSW5zcGVjdG9yKToK
KwogMjAwOS0wOS0yOSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgUnViYmVyc3RhbXBlZCBieSBEYW4gQmVybnN0ZWluLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGM3OWExZGMuLjUx
MjUzZjMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RD
b250cm9sbGVyLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0
Q29udHJvbGxlci5jcHAKQEAgLTkyOSw2ICs5MjksMzIgQEAgc3RhdGljIEpTVmFsdWVSZWYgc2V0
U3RvcFByb3Zpc2lvbmFsRnJhbWVMb2Fkc0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBK
U08KICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKK3N0YXRp
YyBKU1ZhbHVlUmVmIHNob3dXZWJJbnNwZWN0b3JDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4
dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBh
cmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBl
eGNlcHRpb24pCit7CisgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0
aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2Jq
ZWN0KSk7CisgICAgY29udHJvbGxlci0+c2hvd1dlYkluc3BlY3RvcigpOworICAgIHJldHVybiBK
U1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYgY2xv
c2VXZWJJbnNwZWN0b3JDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYg
ZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBj
b25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7Cisg
ICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRU
ZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgY29u
dHJvbGxlci0+Y2xvc2VXZWJJbnNwZWN0b3IoKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRl
ZmluZWQoY29udGV4dCk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIGV2YWx1YXRlSW5XZWJJbnNw
ZWN0b3JDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24s
IEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1Zh
bHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgTGF5b3V0
VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJv
bGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgZG91YmxlIGNhbGxJ
ZCA9IEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbik7Cisg
ICAgQVNTRVJUKCEqZXhjZXB0aW9uKTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gc2Ny
aXB0KEFkb3B0LCBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGFyZ3VtZW50c1sxXSwgZXhj
ZXB0aW9uKSk7CisgICAgQVNTRVJUKCEqZXhjZXB0aW9uKTsKKworICAgIGNvbnRyb2xsZXItPmV2
YWx1YXRlSW5XZWJJbnNwZWN0b3Ioc3RhdGljX2Nhc3Q8bG9uZz4oY2FsbElkKSwgc2NyaXB0Lmdl
dCgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKIHN0
YXRpYyBKU1ZhbHVlUmVmIGVsZW1lbnREb2VzQXV0b0NvbXBsZXRlRm9yRWxlbWVudFdpdGhJZENh
bGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmpl
Y3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYg
YXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBMYXlvdXRUZXN0Q29u
dHJvbGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4o
SlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKQEAgLTExMTQsNiArMTE0MCw3IEBAIEpT
U3RhdGljRnVuY3Rpb24qIExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMoKQog
ICAgICAgICB7ICJjbGVhckFsbERhdGFiYXNlcyIsIGNsZWFyQWxsRGF0YWJhc2VzQ2FsbGJhY2ss
IGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRE
ZWxldGUgfSwKICAgICAgICAgeyAiY2xlYXJCYWNrRm9yd2FyZExpc3QiLCBjbGVhckJhY2tGb3J3
YXJkTGlzdENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVy
dHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImNsZWFyUGVyc2lzdGVudFVzZXJT
dHlsZVNoZWV0IiwgY2xlYXJQZXJzaXN0ZW50VXNlclN0eWxlU2hlZXRDYWxsYmFjaywga0pTUHJv
cGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9
LAorICAgICAgICB7ICJjbG9zZVdlYkluc3BlY3RvciIsIGNsb3NlV2ViSW5zcGVjdG9yQ2FsbGJh
Y2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKICAgICAgICAgeyAiZGVjb2RlSG9zdE5hbWUiLCBkZWNvZGVIb3N0TmFtZUNh
bGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImRpc2FibGVJbWFnZUxvYWRpbmciLCBkaXNhYmxl
SW1hZ2VMb2FkaW5nQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiZGlzcGF0Y2hQZW5kaW5n
TG9hZFJlcXVlc3RzIiwgZGlzcGF0Y2hQZW5kaW5nTG9hZFJlcXVlc3RzQ2FsbGJhY2ssIGtKU1By
b3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUg
fSwKQEAgLTExMzUsNiArMTE2Miw3IEBAIEpTU3RhdGljRnVuY3Rpb24qIExheW91dFRlc3RDb250
cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMoKQogICAgICAgICB7ICJkdW1wV2lsbENhY2hlUmVzcG9u
c2UiLCBkdW1wV2lsbENhY2hlUmVzcG9uc2VDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJl
bGVtZW50RG9lc0F1dG9Db21wbGV0ZUZvckVsZW1lbnRXaXRoSWQiLCBlbGVtZW50RG9lc0F1dG9D
b21wbGV0ZUZvckVsZW1lbnRXaXRoSWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJlbmNv
ZGVIb3N0TmFtZSIsIGVuY29kZUhvc3ROYW1lQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRl
UmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAi
ZXZhbHVhdGVJbldlYkluc3BlY3RvciIsIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3JDYWxsYmFjaywg
a0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERl
bGV0ZSB9LAogICAgICAgICB7ICJleGVjQ29tbWFuZCIsIGV4ZWNDb21tYW5kQ2FsbGJhY2ssIGtK
U1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxl
dGUgfSwKICAgICAgICAgeyAiZ3JhbnREZXNrdG9wTm90aWZpY2F0aW9uUGVybWlzc2lvbiIsIGdy
YW50RGVza3RvcE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjaywga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LCAKICAgICAg
ICAgeyAiaXNDb21tYW5kRW5hYmxlZCIsIGlzQ29tbWFuZEVuYWJsZWRDYWxsYmFjaywga0pTUHJv
cGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9
LApAQCAtMTE4NSw2ICsxMjEzLDcgQEAgSlNTdGF0aWNGdW5jdGlvbiogTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnN0YXRpY0Z1bmN0aW9ucygpCiAgICAgICAgIHsgInNldFVzZXJTdHlsZVNoZWV0TG9j
YXRpb24iLCBzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0
cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAg
ICAgeyAic2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGxPblJlZGlyZWN0Iiwgc2V0V2lsbFNl
bmRSZXF1ZXN0UmV0dXJuc051bGxPblJlZGlyZWN0Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAg
eyAic2V0V2luZG93SXNLZXkiLCBzZXRXaW5kb3dJc0tleUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAg
ICAgIHsgInNob3dXZWJJbnNwZWN0b3IiLCBzaG93V2ViSW5zcGVjdG9yQ2FsbGJhY2ssIGtKU1By
b3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUg
fSwKICAgICAgICAgeyAidGVzdE9uc2NyZWVuIiwgdGVzdE9uc2NyZWVuQ2FsbGJhY2ssIGtKU1By
b3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUg
fSwKICAgICAgICAgeyAidGVzdFJlcGFpbnQiLCB0ZXN0UmVwYWludENhbGxiYWNrLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0s
CiAgICAgICAgIHsgIndhaXRGb3JQb2xpY3lEZWxlZ2F0ZSIsIHdhaXRGb3JQb2xpY3lEZWxlZ2F0
ZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRy
aWJ1dGVEb250RGVsZXRlIH0sCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5
b3V0VGVzdENvbnRyb2xsZXIuaAppbmRleCA4NWY1YjgzLi41NzkxYWY3IDEwMDY0NAotLS0gYS9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCisrKyBiL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKQEAgLTg3LDcg
Kzg3LDcgQEAgcHVibGljOgogICAgIHNpemVfdCB3ZWJIaXN0b3J5SXRlbUNvdW50KCk7CiAgICAg
dW5zaWduZWQgd29ya2VyVGhyZWFkQ291bnQoKSBjb25zdDsKICAgICBpbnQgd2luZG93Q291bnQo
KTsKLSAgICAKKwogICAgIHZvaWQgZ3JhbnREZXNrdG9wTm90aWZpY2F0aW9uUGVybWlzc2lvbihK
U1N0cmluZ1JlZiBvcmlnaW4pOwogICAgIGJvb2wgY2hlY2tEZXNrdG9wTm90aWZpY2F0aW9uUGVy
bWlzc2lvbihKU1N0cmluZ1JlZiBvcmlnaW4pOwogCkBAIC0yMDMsNiArMjAzLDEwIEBAIHB1Ymxp
YzoKICAgICBib29sIGlzR2VvbG9jYXRpb25QZXJtaXNzaW9uU2V0KCkgY29uc3QgeyByZXR1cm4g
bV9pc0dlb2xvY2F0aW9uUGVybWlzc2lvblNldDsgfQogICAgIGJvb2wgZ2VvbG9jYXRpb25QZXJt
aXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9nZW9sb2NhdGlvblBlcm1pc3Npb247IH0KIAorICAg
IHZvaWQgc2hvd1dlYkluc3BlY3RvcigpOworICAgIHZvaWQgY2xvc2VXZWJJbnNwZWN0b3IoKTsK
KyAgICB2b2lkIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IobG9uZyBjYWxsSWQsIEpTU3RyaW5nUmVm
IHNjcmlwdCk7CisKIHByaXZhdGU6CiAgICAgYm9vbCBtX2R1bXBBc1BERjsKICAgICBib29sIG1f
ZHVtcEFzVGV4dDsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9M
YXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9n
dGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCmluZGV4IGUxNDJmN2MuLjBiNGEzOGYgMTAw
NjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJv
bGxlckd0ay5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRl
c3RDb250cm9sbGVyR3RrLmNwcApAQCAtNDcxLDMgKzQ3MSwxOCBAQCB2b2lkIExheW91dFRlc3RD
b250cm9sbGVyOjphZGRVc2VyU3R5bGVTaGVldChKU1N0cmluZ1JlZiBzb3VyY2UpCiB7CiAgICAg
cHJpbnRmKCJMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWRkVXNlclN0eWxlU2hlZXQgbm90IGltcGxl
bWVudGVkLlxuIik7CiB9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNob3dXZWJJbnNw
ZWN0b3IoKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KK30KKwordm9pZCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6Y2xvc2VXZWJJbnNwZWN0b3IoKQoreworICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnQgdGhpcy4KK30KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZXZhbHVhdGVJ
bldlYkluc3BlY3Rvcihsb25nIGNhbGxJZCwgSlNTdHJpbmdSZWYgc2NyaXB0KQoreworICAgIC8v
IEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KK30KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbSBiL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQppbmRleCA2M2I3M2I1
Li5iMjZlM2FkIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5
b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCkBAIC01MSw3ICs1MSw3IEBACiAjaW1wb3J0
IDxXZWJLaXQvV2ViSFRNTFZpZXdQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViSGlzdG9y
eS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkhpc3RvcnlQcml2YXRlLmg+Ci0jaW1wb3J0IDxXZWJL
aXQvV2ViSW5zcGVjdG9yLmg+CisjaW1wb3J0IDxXZWJLaXQvV2ViSW5zcGVjdG9yUHJpdmF0ZS5o
PgogI2ltcG9ydCA8V2ViS2l0L1dlYkdlb2xvY2F0aW9uTW9ja1ByaXZhdGUuaD4KICNpbXBvcnQg
PFdlYktpdC9XZWJOU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYlByZWZlcmVuY2Vz
Lmg+CkBAIC0zNjAsNyArMzYwLDcgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0U2Vs
ZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZChib29sIGZsYWcpCiAgICAgW1ttYWluRnJhbWUg
d2ViVmlld10gc2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZDpmbGFnXTsKIH0KIAot
c3RhdGljIGNvbnN0IENGVGltZUludGVydmFsIHdhaXRUb0R1bXBXYXRjaGRvZ0ludGVydmFsID0g
MTUuMDsKK3N0YXRpYyBjb25zdCBDRlRpbWVJbnRlcnZhbCB3YWl0VG9EdW1wV2F0Y2hkb2dJbnRl
cnZhbCA9IDM2MDAuMDsKIAogc3RhdGljIHZvaWQgd2FpdFVudGlsRG9uZVdhdGNoZG9nRmlyZWQo
Q0ZSdW5Mb29wVGltZXJSZWYgdGltZXIsIHZvaWQqIGluZm8pCiB7CkBAIC00OTIsMyArNDkyLDE5
IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZFVzZXJTdHlsZVNoZWV0KEpTU3RyaW5n
UmVmIHNvdXJjZSkKICAgICBbV2ViVmlldyBfYWRkVXNlclN0eWxlU2hlZXRUb0dyb3VwOkAib3Jn
LndlYmtpdC5EdW1wUmVuZGVyVHJlZSIgc291cmNlOnNvdXJjZU5TIHVybDpuaWwgd29ybGRJRDox
IHBhdHRlcm5zOm5pbF07CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNob3dXZWJJ
bnNwZWN0b3IoKQoreworICAgIFtbW21haW5GcmFtZSB3ZWJWaWV3XSBpbnNwZWN0b3JdIHNob3c6
bmlsXTsKK30KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xvc2VXZWJJbnNwZWN0b3Io
KQoreworICAgIFtbW21haW5GcmFtZSB3ZWJWaWV3XSBpbnNwZWN0b3JdIGNsb3NlOm5pbF07Cit9
CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmV2YWx1YXRlSW5XZWJJbnNwZWN0b3IobG9u
ZyBjYWxsSWQsIEpTU3RyaW5nUmVmIHNjcmlwdCkKK3sKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IHNjcmlwdENGKEFkb3B0Q0YsIEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIHNjcmlwdCkpOworICAgIE5TU3RyaW5nICpzY3JpcHROUyA9IChOU1N0cmluZyAqKXNj
cmlwdENGLmdldCgpOworICAgIFtbW21haW5GcmFtZSB3ZWJWaWV3XSBpbnNwZWN0b3JdIGV2YWx1
YXRlSW5Gcm9udGVuZDpuaWwgY2FsbElkOmNhbGxJZCBzY3JpcHQ6c2NyaXB0TlNdOworfQpkaWZm
IC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9s
bGVyV2luLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29u
dHJvbGxlcldpbi5jcHAKaW5kZXggNDU4ZDdjMi4uZjI5MzhkNiAxMDA2NDQKLS0tIGEvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAorKysg
Yi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4u
Y3BwCkBAIC04NjksMyArODY5LDMwIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZFVz
ZXJTdHlsZVNoZWV0KEpTU3RyaW5nUmVmIHNvdXJjZSkKIAogICAgIHdlYlZpZXctPmFkZFVzZXJT
dHlsZVNoZWV0VG9Hcm91cChfYnN0cl90KEwib3JnLndlYmtpdC5EdW1wUmVuZGVyVHJlZSIpLkdl
dEJTVFIoKSwgMSwgYnN0clQoc291cmNlKS5HZXRCU1RSKCksIDAsIDAsIDApOwogfQorCit2b2lk
IExheW91dFRlc3RDb250cm9sbGVyOjpzaG93V2ViSW5zcGVjdG9yKCkKK3sKKyAgICBDT01QdHI8
SVdlYlZpZXdQcml2YXRlPiB3ZWJWaWV3OworICAgIGlmIChGQUlMRUQoV2ViS2l0Q3JlYXRlSW5z
dGFuY2UoX191dWlkb2YoV2ViVmlldyksIDAsIF9fdXVpZG9mKHdlYlZpZXcpLCByZWludGVycHJl
dF9jYXN0PHZvaWQqKj4oJndlYlZpZXcpKSkpCisgICAgICAgIHJldHVybjsKKworICAgIHdlYlZp
ZXctPmluc3BlY3Rvci0+c2hvdygpOworfQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpj
bG9zZVdlYkluc3BlY3RvcigpCit7CisgICAgQ09NUHRyPElXZWJWaWV3UHJpdmF0ZT4gd2ViVmll
dzsKKyAgICBpZiAoRkFJTEVEKFdlYktpdENyZWF0ZUluc3RhbmNlKF9fdXVpZG9mKFdlYlZpZXcp
LCAwLCBfX3V1aWRvZih3ZWJWaWV3KSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZ3ZWJWaWV3
KSkpKQorICAgICAgICByZXR1cm47CisKKyAgICB3ZWJWaWV3LT5pbnNwZWN0b3ItPmNsb3NlKCk7
Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmV2YWx1YXRlSW5XZWJJbnNwZWN0b3Io
bG9uZyBjYWxsSWQsIEpTU3RyaW5nUmVmIHNjcmlwdCkKK3sKKyAgICBDT01QdHI8SVdlYlZpZXdQ
cml2YXRlPiB3ZWJWaWV3OworICAgIGlmIChGQUlMRUQoV2ViS2l0Q3JlYXRlSW5zdGFuY2UoX191
dWlkb2YoV2ViVmlldyksIDAsIF9fdXVpZG9mKHdlYlZpZXcpLCByZWludGVycHJldF9jYXN0PHZv
aWQqKj4oJndlYlZpZXcpKSkpCisgICAgICAgIHJldHVybjsKKworICAgIHdlYlZpZXctPmluc3Bl
Y3Rvci0+ZXZhbHVhdGVJbkZyb250ZW5kKGNhbGxJZCwgYnN0clQoc2NyaXB0KS5HZXRCU1RSKCkp
OworfQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVz
dENvbnRyb2xsZXJXeC5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRU
ZXN0Q29udHJvbGxlcld4LmNwcAppbmRleCBkMGY2MmIwLi5iZmUxZDk5IDEwMDY0NAotLS0gYS9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAor
KysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4
LmNwcApAQCAtMjk4LDMgKzI5OCwxOCBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjphZGRV
c2VyU3R5bGVTaGVldChKU1N0cmluZ1JlZiBzb3VyY2UpCiB7CiAgICAgcHJpbnRmKCJMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6YWRkVXNlclN0eWxlU2hlZXQgbm90IGltcGxlbWVudGVkLlxuIik7CiB9
CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNob3dXZWJJbnNwZWN0b3IoKQoreworICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KK30KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6Y2xvc2VXZWJJbnNwZWN0b3IoKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4K
K30KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbldlYkluc3BlY3Rvcihs
b25nIGNhbGxJZCwgSlNTdHJpbmdSZWYgc2NyaXB0KQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQgdGhpcy4KK30K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40472</attachid>
            <date>2009-10-01 12:52:04 -0700</date>
            <delta_ts>2009-10-02 11:12:04 -0700</delta_ts>
            <desc>testing harness #2 with waitToDumpWatchdogInterval rolled back to original value</desc>
            <filename>testing_harness</filename>
            <type>text/plain</type>
            <size>48540</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhNWFhMzczLi5hNzE4NjgxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMDktMTAt
MDEgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3IgbmVlZHMg
YSB0ZXN0aW5nIGluZnJhc3RydWN0dXJlCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI2NTQ5CisKKyAgICAgICAgKiBpbnNwZWN0b3IvY29uc29sZS10
ZXN0cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9jb25zb2xlLXRl
c3RzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9lbGVtZW50cy1wYW5lbC1zdHJ1
Y3R1cmUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZWxlbWVudHMt
cGFuZWwtc3RydWN0dXJlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9ldmFsdWF0
ZS1pbi1mcm9udGVuZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9l
dmFsdWF0ZS1pbi1mcm9udGVuZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZXZh
bHVhdGUtaW4tZnJvbnRlbmQuanM6IEFkZGVkLgorICAgICAgICAoKToKKyAgICAgICAgKHNob3dX
ZWJJbnNwZWN0b3IpOgorICAgICAgICAoY2xvc2VXZWJJbnNwZWN0b3IpOgorICAgICAgICAob25s
b2FkKToKKyAgICAgICAgKG5vdGlmeURvbmUpOgorICAgICAgICAob3V0cHV0KToKKyAgICAgICAg
KHdpbmRvdy5kaWRFdmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKToKKwogMjAwOS0wOS0yOSAgU2hp
bmljaGlybyBIYW1hamkgIDxoYW1hamlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNv
bGUtdGVzdHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtdGVz
dHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzY2M0
ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS10ZXN0
cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzNiBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDg6
IGxvZworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDk6IGRlYnVnCitDT05TT0xFIE1FU1NBR0U6IGxp
bmUgMTA6IGluZm8KK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxMTogd2FybgorQ09OU09MRSBNRVNT
QUdFOiBsaW5lIDEyOiBlcnJvcgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDEzOiBNZXNzYWdlIGZv
cm1hdCBudW1iZXIgJWksICVkIGFuZCAlZgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE0OiBNZXNz
YWdlICVzIGZvciAlcworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE1OiBPYmplY3QgJW8KK0NPTlNP
TEUgTUVTU0FHRTogbGluZSAxNzogcmVwZWF0ZWQKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxNzog
cmVwZWF0ZWQKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxNzogcmVwZWF0ZWQKK0NPTlNPTEUgTUVT
U0FHRTogbGluZSAxNzogcmVwZWF0ZWQKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxNzogcmVwZWF0
ZWQKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAyNDogMQorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDI1
OiBbb2JqZWN0IEhUTUxEb2N1bWVudF0KK0NPTlNPTEUgTUVTU0FHRTogbGluZSAyNjogW29iamVj
dCBIVE1MSHRtbEVsZW1lbnRdCitUZXN0cyB0aGF0IGNvbnNvbGUgbG9nZ2luZyBkdW1wcyBwcm9w
ZXIgbWVzc2FnZXMuCisKK2NvbnNvbGUtdGVzdHMuaHRtbDo4bG9nIGNvbnNvbGUtbWVzc2FnZSBj
b25zb2xlLWpzLXNvdXJjZSBjb25zb2xlLWxvZy1sZXZlbAorY29uc29sZS10ZXN0cy5odG1sOjlk
ZWJ1ZyBjb25zb2xlLW1lc3NhZ2UgY29uc29sZS1qcy1zb3VyY2UgY29uc29sZS1sb2ctbGV2ZWwK
K2NvbnNvbGUtdGVzdHMuaHRtbDoxMGluZm8gY29uc29sZS1tZXNzYWdlIGNvbnNvbGUtanMtc291
cmNlIGNvbnNvbGUtbG9nLWxldmVsCitjb25zb2xlLXRlc3RzLmh0bWw6MTF3YXJuIGNvbnNvbGUt
bWVzc2FnZSBjb25zb2xlLWpzLXNvdXJjZSBjb25zb2xlLXdhcm5pbmctbGV2ZWwKK2NvbnNvbGUt
dGVzdHMuaHRtbDoxMmVycm9yIGNvbnNvbGUtbWVzc2FnZSBjb25zb2xlLWpzLXNvdXJjZSBjb25z
b2xlLWVycm9yLWxldmVsCitjb25zb2xlLXRlc3RzLmh0bWw6MTNNZXNzYWdlIGZvcm1hdCBudW1i
ZXIgMSwgMiBhbmQgMy41IGNvbnNvbGUtbWVzc2FnZSBjb25zb2xlLWpzLXNvdXJjZSBjb25zb2xl
LWxvZy1sZXZlbAorY29uc29sZS10ZXN0cy5odG1sOjE0TWVzc2FnZSBmb3JtYXQgZm9yIHN0cmlu
ZyBjb25zb2xlLW1lc3NhZ2UgY29uc29sZS1qcy1zb3VyY2UgY29uc29sZS1sb2ctbGV2ZWwKK2Nv
bnNvbGUtdGVzdHMuaHRtbDoxNU9iamVjdCBPYmplY3QgY29uc29sZS1tZXNzYWdlIGNvbnNvbGUt
anMtc291cmNlIGNvbnNvbGUtbG9nLWxldmVsCis1Y29uc29sZS10ZXN0cy5odG1sOjE3cmVwZWF0
ZWQgY29uc29sZS1tZXNzYWdlIGNvbnNvbGUtanMtc291cmNlIGNvbnNvbGUtbG9nLWxldmVsIHJl
cGVhdGVkLW1lc3NhZ2UKK2NvbnNvbGUtdGVzdHMuaHRtbDoxOWNvdW50OiAxIGNvbnNvbGUtbWVz
c2FnZSBjb25zb2xlLWpzLXNvdXJjZSBjb25zb2xlLWxvZy1sZXZlbAorY29uc29sZS10ZXN0cy5o
dG1sOjE5Y291bnQ6IDIgY29uc29sZS1tZXNzYWdlIGNvbnNvbGUtanMtc291cmNlIGNvbnNvbGUt
bG9nLWxldmVsCitjb25zb2xlLXRlc3RzLmh0bWw6MjBncm91cCBjb25zb2xlLW1lc3NhZ2UgY29u
c29sZS1qcy1zb3VyY2UgY29uc29sZS1sb2ctbGV2ZWwgY29uc29sZS1ncm91cC10aXRsZQorY29u
c29sZS1tZXNzYWdlIGNvbnNvbGUtanMtc291cmNlIGNvbnNvbGUtbG9nLWxldmVsCitjb25zb2xl
LXRlc3RzLmh0bWw6MjN0aW1lcjogMG1zIGNvbnNvbGUtbWVzc2FnZSBjb25zb2xlLWpzLXNvdXJj
ZSBjb25zb2xlLWxvZy1sZXZlbAorY29uc29sZS10ZXN0cy5odG1sOjI0MSAyIDMgY29uc29sZS1t
ZXNzYWdlIGNvbnNvbGUtanMtc291cmNlIGNvbnNvbGUtbG9nLWxldmVsCitjb25zb2xlLXRlc3Rz
Lmh0bWw6MjVIVE1MRG9jdW1lbnQgY29uc29sZS1tZXNzYWdlIGNvbnNvbGUtanMtc291cmNlIGNv
bnNvbGUtbG9nLWxldmVsCitjb25zb2xlLXRlc3RzLmh0bWw6MjbigIsgY29uc29sZS1tZXNzYWdl
IGNvbnNvbGUtanMtc291cmNlIGNvbnNvbGUtbG9nLWxldmVsCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlLXRlc3RzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvY29uc29sZS10ZXN0cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjIyNGUyZjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29s
ZS10ZXN0cy5odG1sCkBAIC0wLDAgKzEsNjMgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iZXZhbHVhdGUtaW4tZnJvbnRlbmQuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZnVuY3Rp
b24gZG9pdCgpCit7CisgICAgY29uc29sZS5sb2coJ2xvZycpOworICAgIGNvbnNvbGUuZGVidWco
J2RlYnVnJyk7CisgICAgY29uc29sZS5pbmZvKCdpbmZvJyk7CisgICAgY29uc29sZS53YXJuKCd3
YXJuJyk7CisgICAgY29uc29sZS5lcnJvcignZXJyb3InKTsKKyAgICBjb25zb2xlLmxvZygnTWVz
c2FnZSBmb3JtYXQgbnVtYmVyICVpLCAlZCBhbmQgJWYnLCAxLCAyLCAzLjUpOworICAgIGNvbnNv
bGUubG9nKCdNZXNzYWdlICVzIGZvciAlcycsICdmb3JtYXQnLCAnc3RyaW5nJyk7CisgICAgY29u
c29sZS5sb2coJ09iamVjdCAlbycsIHsnZm9vJyA6ICdiYXInIH0pOworICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgNTsgKytpKQorICAgICAgICBjb25zb2xlLmxvZygncmVwZWF0ZWQnKTsKKyAgICBm
b3IgKHZhciBpID0gMDsgaSA8IDI7ICsraSkKKyAgICAgICAgY29uc29sZS5jb3VudCgnY291bnQn
KTsKKyAgICBjb25zb2xlLmdyb3VwKCdncm91cCcpOworICAgIGNvbnNvbGUuZ3JvdXBFbmQoKTsK
KyAgICBjb25zb2xlLnRpbWUoJ3RpbWVyJyk7CisgICAgY29uc29sZS50aW1lRW5kKCd0aW1lcicp
OworICAgIGNvbnNvbGUubG9nKCcxJywgJzInLCAnMycpOworICAgIGNvbnNvbGUuZGlyKGRvY3Vt
ZW50KTsKKyAgICBjb25zb2xlLmRpcnhtbChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpOworCisg
ICAgZnVuY3Rpb24gY2FsbGJhY2socmVzdWx0KQorICAgIHsKKyAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCByZXN1bHQubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIG91dHB1dChyZXN1bHRb
aV0udGV4dCArICIgIiArIHJlc3VsdFtpXS5jbGF6eik7CisgICAgICAgIH0KKyAgICAgICAgbm90
aWZ5RG9uZSgpOworICAgIH0KKyAgICBldmFsdWF0ZUluV2ViSW5zcGVjdG9yKCJkdW1wTWVzc2Fn
ZXMoKSIsIGNhbGxiYWNrKTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9h
ZD0ib25sb2FkKCkiPgorPHA+CitUZXN0cyB0aGF0IGNvbnNvbGUgbG9nZ2luZyBkdW1wcyBwcm9w
ZXIgbWVzc2FnZXMuCis8L3A+CisKKzxkaXYgaWQ9ImZyb250ZW5kLXNjcmlwdCIgc3R5bGU9ImRp
c3BsYXk6bm9uZSI+CitmdW5jdGlvbiBkdW1wTWVzc2FnZXMoKQoreworICAgIHZhciByZXN1bHQg
PSBbXTsKKyAgICB2YXIgbWVzc2FnZXMgPSBXZWJJbnNwZWN0b3IuY29uc29sZS5tZXNzYWdlczsK
KyAgICBmb3IgKHZhciBpID0gMDsgaSAmbHQ7IG1lc3NhZ2VzLmxlbmd0aDsgKytpKSB7CisgICAg
ICAgIHZhciBlbGVtZW50ID0gbWVzc2FnZXNbaV0udG9NZXNzYWdlRWxlbWVudCgpOworICAgICAg
ICByZXN1bHQucHVzaCh7IHRleHQ6IGVsZW1lbnQudGV4dENvbnRlbnQsIGNsYXp6OiBlbGVtZW50
LmdldEF0dHJpYnV0ZSgiY2xhc3MiKX0pOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQor
PC9kaXY+CisKKzxkaXYgaWQ9Im91dHB1dCI+Cis8L2Rpdj4KKworPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXBhbmVsLXN0cnVjdHVy
ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtcGFuZWwtc3Ry
dWN0dXJlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44
NDc5OTQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRz
LXBhbmVsLXN0cnVjdHVyZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhh
dCBlbGVtZW50cyBwYW5lbCBzaG93cyBkb20gdHJlZSBzdHJ1Y3R1cmUuCisKKworPGh0bWw+4oCL
Cis8aGVhZD7igIsKKzxib2R5IG9ubG9hZD3igIsib25sb2FkKCnigIsiPuKAiworPHA+4oCLCitU
ZXN0cyB0aGF0IGVsZW1lbnRzIHBhbmVsIHNob3dzIGRvbSB0cmVlIHN0cnVjdHVyZS4KK+KAiwor
PC9wPgorPGRpdiBpZD3igIsiZnJvbnRlbmQtc2NyaXB0IiBzdHlsZT3igIsiZGlzcGxheTrigItu
b25lIj7igIsKKzxwcmUgaWQ94oCLIm91dHB1dCI+4oCLCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtcGFuZWwtc3RydWN0dXJlLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtcGFuZWwtc3RydWN0dXJlLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjc0YmJiMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy1wYW5lbC1zdHJ1Y3R1cmUuaHRt
bApAQCAtMCwwICsxLDMyIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9ImV2YWx1YXRl
LWluLWZyb250ZW5kLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIGRvaXQoKQor
eworICAgIGZ1bmN0aW9uIGNhbGxiYWNrKHJlc3VsdCkKKyAgICB7CisgICAgICAgIHZhciBvdXRw
dXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib3V0cHV0Iik7CisgICAgICAgIG91dHB1dC50
ZXh0Q29udGVudCA9IHJlc3VsdC5yZXBsYWNlKC88L2csICJcbjwiKTsKKyAgICAgICAgbm90aWZ5
RG9uZSgpOworICAgIH0KKyAgICBldmFsdWF0ZUluV2ViSW5zcGVjdG9yKCJXZWJJbnNwZWN0b3Iu
cGFuZWxzLmVsZW1lbnRzLnRyZWVPdXRsaW5lLmVsZW1lbnQudGV4dENvbnRlbnQiLCBjYWxsYmFj
ayk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9Im9ubG9hZCgpIj4K
KzxwPgorVGVzdHMgdGhhdCBlbGVtZW50cyBwYW5lbCBzaG93cyBkb20gdHJlZSBzdHJ1Y3R1cmUu
Cis8L3A+CisKKzxkaXYgaWQ9ImZyb250ZW5kLXNjcmlwdCIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+
Cis8L2Rpdj4KKworPHByZSBpZD0ib3V0cHV0Ij4KKzwvcHJlPgorCis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXZhbHVhdGUtaW4tZnJvbnRlbmQt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V2YWx1YXRlLWluLWZyb250ZW5k
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODc1MmRm
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V2YWx1YXRlLWluLWZy
b250ZW5kLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK1RoaXMgdGVzdHMgdGhhdCBsYXlv
dXQgdGVzdCBjYW4gZXZhbHVhdGUgc2NyaXB0cyBpbiB0aGUgd2ViIGluc3BlY3RvciBjb250ZXh0
LgorCisyICsgMiA9IDQKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V2YWx1
YXRlLWluLWZyb250ZW5kLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXZhbHVhdGUtaW4t
ZnJvbnRlbmQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTFhOTU3
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V2YWx1YXRlLWluLWZy
b250ZW5kLmh0bWwKQEAgLTAsMCArMSwzNSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSJldmFsdWF0ZS1pbi1mcm9udGVuZC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlv
biBkb2l0KCkKK3sKKyAgICBmdW5jdGlvbiBjYWxsYmFjayhyZXN1bHQpCisgICAgeworICAgICAg
ICBvdXRwdXQoIjIgKyAyID0gIiArIHJlc3VsdCk7CisgICAgICAgIG5vdGlmeURvbmUoKTsKKyAg
ICB9CisgICAgZXZhbHVhdGVJbldlYkluc3BlY3Rvcigic3VtKDIsIDIpIiwgY2FsbGJhY2spOwor
fQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJvbmxvYWQoKSI+Cis8cD4K
K1RoaXMgdGVzdHMgdGhhdCBsYXlvdXQgdGVzdCBjYW4gZXZhbHVhdGUgc2NyaXB0cyBpbiB0aGUg
d2ViIGluc3BlY3RvciBjb250ZXh0LgorPC9wPgorCis8ZGl2IGlkPSJmcm9udGVuZC1zY3JpcHQi
IHN0eWxlPSJkaXNwbGF5Om5vbmUiPgorZnVuY3Rpb24gc3VtKGEsIGIpCit7CisgICAgcmV0dXJu
IGEgKyBiOworfQorPC9kaXY+CisKKzxkaXYgaWQ9Im91dHB1dCI+Cis8L2Rpdj4KKworPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V2YWx1YXRlLWlu
LWZyb250ZW5kLmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V2YWx1YXRlLWluLWZyb250ZW5k
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljNjM5N2UKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXZhbHVhdGUtaW4tZnJvbnRlbmQuanMK
QEAgLTAsMCArMSw3MSBAQAordmFyIGxhc3RDYWxsSWQgPSAwOwordmFyIGNhbGxiYWNrcyA9IHt9
OworCitmdW5jdGlvbiBldmFsdWF0ZUluV2ViSW5zcGVjdG9yKHNjcmlwdCwgY2FsbGJhY2spCit7
CisgICAgY2FsbGJhY2tzW2xhc3RDYWxsSWRdID0gY2FsbGJhY2s7CisgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewor
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZXZhbHVhdGVJbldlYkluc3BlY3Rvcihs
YXN0Q2FsbElkKyssIHNjcmlwdCk7CisgICAgICAgIH0KKyAgICB9LCAwKTsKKworfQorCitmdW5j
dGlvbiBzaG93V2ViSW5zcGVjdG9yKCkKK3sKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewor
ICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5zaG93V2ViSW5zcGVjdG9yKCk7CisgICAgICAgIH0KKyAgICB9
LCAwKTsKK30KKworZnVuY3Rpb24gY2xvc2VXZWJJbnNwZWN0b3IoKQoreworICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsb3NlV2ViSW5zcGVjdG9yKCk7
CisgICAgICAgIH0KKyAgICB9LCAwKTsKK30KKworZnVuY3Rpb24gb25sb2FkKCkKK3sKKyAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zaG93V2ViSW5zcGVj
dG9yKCk7CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ldmFsdWF0ZUluV2ViSW5z
cGVjdG9yKGxhc3RDYWxsSWQrKywgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZyb250ZW5kLXNj
cmlwdCIpLnRleHRDb250ZW50KTsKKyAgICAgICAgfQorICAgICAgICBkb2l0KCk7CisgICAgfSwg
MCk7Cit9CisKK2Z1bmN0aW9uIG5vdGlmeURvbmUoKQoreworICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsb3NlV2ViSW5zcGVjdG9yKCk7CisgICAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIH0KKyAgICB9
LCAwKTsKK30KKworZnVuY3Rpb24gb3V0cHV0KHRleHQpCit7CisgICAgdmFyIG91dHB1dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRwdXQiKTsKKyAgICBvdXRwdXQuaW5uZXJIVE1MICs9
IHRleHQgKyAiPEJSPiI7Cit9CisKK3dpbmRvdy5kaWRFdmFsdWF0ZUZvclRlc3RJbkZyb250ZW5k
ID0gZnVuY3Rpb24oY2FsbElkLCBqc29uUmVzdWx0KQoreworICAgIGlmIChjYWxsYmFja3NbY2Fs
bElkXSkgeworICAgICAgICBjYWxsYmFja3NbY2FsbElkXS5jYWxsKHRoaXMsIEpTT04ucGFyc2Uo
anNvblJlc3VsdCkpOworICAgICAgICBkZWxldGUgY2FsbGJhY2tzW2NhbGxJZF07CisgICAgfQor
fTsKKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7Cit9CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IGFhY2MzZGMuLmI2NzgxOTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMDktMTAtMDEg
IFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3IgbmVlZHMgYSB0
ZXN0aW5nIGluZnJhc3RydWN0dXJlCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTI2NTQ5CisKKyAgICAgICAgVGVzdHM6IGluc3BlY3Rvci9jb25zb2xl
LXRlc3RzLmh0bWwKKyAgICAgICAgICAgICAgIGluc3BlY3Rvci9lbGVtZW50cy1wYW5lbC1zdHJ1
Y3R1cmUuaHRtbAorICAgICAgICAgICAgICAgaW5zcGVjdG9yL2V2YWx1YXRlLWluLWZyb250ZW5k
Lmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuSW5zcGVjdG9yLmV4cDoKKyAgICAgICAgKiBXZWJD
b3JlLm9yZGVyOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckJhY2tlbmQ6OmRpZEV2YWx1YXRlRm9yVGVzdEluRnJv
bnRlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmg6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaWRsOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRy
b2xsZXI6Omluc3BlY3RlZFBhZ2VEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ29udHJvbGxlcjo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJv
bGxlcjo6cG9wdWxhdGVTY3JpcHRPYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNvbnRyb2xsZXI6OmV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkRXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RnJvbnRlbmQ6OmV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZC5oOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5z
cGVjdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmV2YWx1YXRlRm9yVGVzdEluRnJvbnRl
bmQpOgorCiAyMDA5LTA5LTI5ICBEYXZlIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEpvbiBIb25leWN1dHQuCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNv
cmUuSW5zcGVjdG9yLmV4cCBiL1dlYkNvcmUvV2ViQ29yZS5JbnNwZWN0b3IuZXhwCmluZGV4IGY3
OTM0OGYuLjU3Njk5NGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5JbnNwZWN0b3IuZXhw
CisrKyBiL1dlYkNvcmUvV2ViQ29yZS5JbnNwZWN0b3IuZXhwCkBAIC0xMiw2ICsxMiw3IEBAIF9f
Wk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjRzaG93RXYKIF9fWk43V2ViQ29yZTE5SW5z
cGVjdG9yQ29udHJvbGxlcjVjbG9zZUV2CiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xs
ZXI3aW5zcGVjdEVQTlNfNE5vZGVFCiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXI5
c2hvd1BhbmVsRU5TMF8xM1NwZWNpYWxQYW5lbHNFCitfX1pON1dlYkNvcmUxOUluc3BlY3RvckNv
bnRyb2xsZXIyNWV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmRFbFJLTlNfNlN0cmluZ0UKIF9fWk5L
N1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIxN2RyYXdOb2RlSGlnaGxpZ2h0RVJOU18xNUdy
YXBoaWNzQ29udGV4dEUKIF9fWk5LN1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXI3ZW5hYmxl
ZEV2CiBfX1pOSzdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyN3NldHRpbmdFUktOU182U3Ry
aW5nRQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLm9yZGVyIGIvV2ViQ29yZS9XZWJDb3Jl
Lm9yZGVyCmluZGV4IGZmNDJlMjYuLmMxMDQwZTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29y
ZS5vcmRlcgorKysgYi9XZWJDb3JlL1dlYkNvcmUub3JkZXIKQEAgLTc4NTEsNiArNzg1MSw3IEBA
IF9fWk4zV1RGOUhhc2hUYWJsZUlQTjdXZWJDb3JlNFBhZ2VFUzNfTlNfMTdJZGVudGl0eUV4dHJh
Y3RvcklTM19FRU5TXzdQdHJIYXNoSVMzCiBfX1pOM1dURjlIYXNoVGFibGVJUE43V2ViQ29yZTRQ
YWdlRVMzX05TXzE3SWRlbnRpdHlFeHRyYWN0b3JJUzNfRUVOU183UHRySGFzaElTM19FRU5TXzEw
SGFzaFRyYWl0c0lTM19FRVM5X0U0N3JlbW92ZUFuZEludmFsaWRhCiBfX1pOM1dURjlIYXNoVGFi
bGVJUE43V2ViQ29yZTRQYWdlRVMzX05TXzE3SWRlbnRpdHlFeHRyYWN0b3JJUzNfRUVOU183UHRy
SGFzaElTM19FRU5TXzEwSGFzaFRyYWl0c0lTM19FRVM5X0U2cmVtb3ZlRVBTM18KIF9fWk43V2Vi
Q29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjIyaW5zcGVjdGVkUGFnZURlc3Ryb3llZEV2CitfX1pO
N1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIyNWV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmRF
bFJLTlNfNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjVjbG9zZUV2
CiBfX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDVjbG9zZUV2CiBfX1pOM1dURjZWZWN0b3JJ
TlNfNlJlZlB0cklON1dlYkNvcmUxMUhpc3RvcnlJdGVtRUVFTG0wRUUxNHNocmlua0NhcGFjaXR5
RW0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuY3BwIGIv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5jcHAKaW5kZXggNzUyZWMwYy4uMDYy
ODliYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5jcHAK
KysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5jcHAKQEAgLTU0Myw2ICs1
NDMsMTIgQEAgdm9pZCBJbnNwZWN0b3JCYWNrZW5kOjpyZW1vdmVET01TdG9yYWdlSXRlbShsb25n
IGNhbGxJZCwgbG9uZyBzdG9yYWdlSWQsIGNvbnN0IFMKIH0KICNlbmRpZgogCit2b2lkIEluc3Bl
Y3RvckJhY2tlbmQ6OmRpZEV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQobG9uZyBjYWxsSWQsIGNv
bnN0IFN0cmluZyYganNvblJlc3VsdCkKK3sKKyAgICBpZiAobV9pbnNwZWN0b3JDb250cm9sbGVy
KQorICAgICAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPmRpZEV2YWx1YXRlRm9yVGVzdEluRnJv
bnRlbmQoY2FsbElkLCBqc29uUmVzdWx0KTsKK30KKwogSW5zcGVjdG9yRE9NQWdlbnQqIEluc3Bl
Y3RvckJhY2tlbmQ6Omluc3BlY3RvckRPTUFnZW50KCkKIHsKICAgICBpZiAoIW1faW5zcGVjdG9y
Q29udHJvbGxlcikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tl
bmQuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaAppbmRleCA3MjI3OGEz
Li40YTNhYTFlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5k
LmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5oCkBAIC0xNTcsNiAr
MTU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RE9NU3RvcmFnZUl0ZW0obG9uZyBjYWxsSWQs
IGxvbmcgc3RvcmFnZUlkLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7
CiAgICAgdm9pZCByZW1vdmVET01TdG9yYWdlSXRlbShsb25nIGNhbGxJZCwgbG9uZyBzdG9yYWdl
SWQsIGNvbnN0IFN0cmluZyYga2V5KTsKICNlbmRpZgorICAgIHZvaWQgZGlkRXZhbHVhdGVGb3JU
ZXN0SW5Gcm9udGVuZChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBqc29uUmVzdWx0KTsKIAog
cHJpdmF0ZToKICAgICBJbnNwZWN0b3JCYWNrZW5kKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3Bl
Y3RvckNvbnRyb2xsZXIsIEluc3BlY3RvckNsaWVudCogY2xpZW50KTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaWRsIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQmFja2VuZC5pZGwKaW5kZXggNWM2YmFiYi4uNTZmNjZiOSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5pZGwKKysrIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5pZGwKQEAgLTEyNyw1ICsxMjcsNiBAQCBtb2R1bGUgY29y
ZSB7CiAgICAgICAgIHZvaWQgc2V0RE9NU3RvcmFnZUl0ZW0oaW4gbG9uZyBjYWxsSWQsIGluIGxv
bmcgc3RvcmFnZUlkLCBpbiBET01TdHJpbmcga2V5LCBpbiBET01TdHJpbmcgdmFsdWUpOwogICAg
ICAgICB2b2lkIHJlbW92ZURPTVN0b3JhZ2VJdGVtKGluIGxvbmcgY2FsbElkLCBpbiBsb25nIHN0
b3JhZ2VJZCwgaW4gRE9NU3RyaW5nIGtleSk7CiAjZW5kaWYKKyAgICAgICAgdm9pZCBkaWRFdmFs
dWF0ZUZvclRlc3RJbkZyb250ZW5kKGluIGxvbmcgY2FsbElkLCBpbiBET01TdHJpbmcganNvblJl
c3VsdCk7CiAgICAgfTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5j
cHAKaW5kZXggYmI3N2ViZi4uZmFkMzAyMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHAKQEAgLTE3OSwxMSArMTc5LDYgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9s
bGVyOjppbnNwZWN0ZWRQYWdlRGVzdHJveWVkKCkKICAgICBpZiAobV9zY3JpcHRTdGF0ZSkKICAg
ICAgICAgU2NyaXB0R2xvYmFsT2JqZWN0OjpyZW1vdmUobV9zY3JpcHRTdGF0ZSwgIkluc3BlY3Rv
ckNvbnRyb2xsZXIiKTsKIAotICAgIGlmIChtX3BhZ2UpIHsKLSAgICAgICAgbV9wYWdlLT5zZXRQ
YXJlbnRJbnNwZWN0b3JDb250cm9sbGVyKDApOwotICAgICAgICBtX3BhZ2UgPSAwOwotICAgIH0K
LQogICAgIEFTU0VSVChtX2luc3BlY3RlZFBhZ2UpOwogICAgIG1faW5zcGVjdGVkUGFnZSA9IDA7
CiAKQEAgLTYyMSw2ICs2MTYsOSBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmNsb3NlKCkK
ICAgICBtX2RvbUFnZW50ID0gMDsKICAgICBtX3RpbWVsaW5lQWdlbnQgPSAwOwogICAgIG1fc2Ny
aXB0U3RhdGUgPSAwOworICAgIGlmIChtX3BhZ2UpCisgICAgICAgIG1fcGFnZS0+c2V0UGFyZW50
SW5zcGVjdG9yQ29udHJvbGxlcigwKTsKKyAgICBtX3BhZ2UgPSAwOwogfQogCiB2b2lkIEluc3Bl
Y3RvckNvbnRyb2xsZXI6OnNob3dXaW5kb3coKQpAQCAtNjczLDYgKzY3MSwxMSBAQCB2b2lkIElu
c3BlY3RvckNvbnRyb2xsZXI6OnBvcHVsYXRlU2NyaXB0T2JqZWN0cygpCiAjZW5kaWYKIAogICAg
IG1fZnJvbnRlbmQtPnBvcHVsYXRlSW50ZXJmYWNlKCk7CisKKyAgICAvLyBEaXNwYXRjaCBwZW5k
aW5nIGZyb250ZW5kIGNvbW1hbmRzCisgICAgZm9yIChWZWN0b3I8cGFpcjxsb25nLCBTdHJpbmc+
ID46Oml0ZXJhdG9yIGl0ID0gbV9wZW5kaW5nRXZhbHVhdGVUZXN0Q29tbWFuZHMuYmVnaW4oKTsg
aXQgIT0gbV9wZW5kaW5nRXZhbHVhdGVUZXN0Q29tbWFuZHMuZW5kKCk7ICsraXQpCisgICAgICAg
IG1fZnJvbnRlbmQtPmV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQoKCppdCkuZmlyc3QsICgqaXQp
LnNlY29uZCk7CisgICAgbV9wZW5kaW5nRXZhbHVhdGVUZXN0Q29tbWFuZHMuY2xlYXIoKTsKIH0K
IAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpyZXNldFNjcmlwdE9iamVjdHMoKQpAQCAtMTQy
OSw2ICsxNDMyLDI1IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkQ29udGludWUoKQog
CiAjZW5kaWYKIAordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpldmFsdWF0ZUZvclRlc3RJbkZy
b250ZW5kKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIHNjcmlwdCkKK3sKKyAgICBpZiAobV9m
cm9udGVuZCAmJiB3aW5kb3dWaXNpYmxlKCkpCisgICAgICAgIG1fZnJvbnRlbmQtPmV2YWx1YXRl
Rm9yVGVzdEluRnJvbnRlbmQoY2FsbElkLCBzY3JpcHQpOworICAgIGVsc2UKKyAgICAgICAgbV9w
ZW5kaW5nRXZhbHVhdGVUZXN0Q29tbWFuZHMuYXBwZW5kKHBhaXI8bG9uZywgU3RyaW5nPihjYWxs
SWQsIHNjcmlwdCkpOworfQorCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZEV2YWx1YXRl
Rm9yVGVzdEluRnJvbnRlbmQobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYganNvblJlc3VsdCkK
K3sKKyAgICBTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUgPSBzY3JpcHRTdGF0ZUZyb21QYWdlKG1f
aW5zcGVjdGVkUGFnZSk7CisgICAgU2NyaXB0T2JqZWN0IHdpbmRvdzsKKyAgICBTY3JpcHRHbG9i
YWxPYmplY3Q6OmdldChzY3JpcHRTdGF0ZSwgIndpbmRvdyIsIHdpbmRvdyk7CisgICAgU2NyaXB0
RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKHNjcmlwdFN0YXRlLCB3aW5kb3csICJkaWRFdmFsdWF0ZUZv
clRlc3RJbkZyb250ZW5kIik7CisgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoc3RhdGljX2Nh
c3Q8aW50PihjYWxsSWQpKTsKKyAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChqc29uUmVzdWx0
KTsKKyAgICBmdW5jdGlvbi5jYWxsKCk7Cit9CisKIHN0YXRpYyBQYXRoIHF1YWRUb1BhdGgoY29u
c3QgRmxvYXRRdWFkJiBxdWFkKQogewogICAgIFBhdGggcXVhZFBhdGg7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmggYi9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggZmY3YTUxNi4uZTk5ZDM3OCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtMjgwLDYgKzI4MCw4IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29udGludWUoKTsKICNlbmRpZgogCisgICAgdm9pZCBl
dmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIHNjcmlw
dCk7CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEluc3BlY3RvckJhY2tlbmQ7CiAgICAg
Ly8gRm9sbG93aW5nIGFyZSB1c2VkIGZyb20gSW5zcGVjdG9yQmFja2VuZCBhbmQgaW50ZXJuYWxs
eS4KQEAgLTMyOCw2ICszMzAsOCBAQCBwcml2YXRlOgogCiAgICAgU3BlY2lhbFBhbmVscyBzcGVj
aWFsUGFuZWxGb3JKU05hbWUoY29uc3QgU3RyaW5nJiBwYW5lbE5hbWUpOwogCisgICAgdm9pZCBk
aWRFdmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIGpz
b25SZXN1bHQpOworCiAgICAgUGFnZSogbV9pbnNwZWN0ZWRQYWdlOwogICAgIEluc3BlY3RvckNs
aWVudCogbV9jbGllbnQ7CiAgICAgT3duUHRyPEluc3BlY3RvckZyb250ZW5kPiBtX2Zyb250ZW5k
OwpAQCAtMzYyLDYgKzM2Niw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEluc3BlY3RvckJhY2tl
bmQ+IG1faW5zcGVjdG9yQmFja2VuZDsKICAgICBIYXNoTWFwPFN0cmluZywgU2NyaXB0VmFsdWU+
IG1faWRUb0NvbnNvbGVPYmplY3Q7CiAgICAgbG9uZyBtX2xhc3RCb3VuZE9iamVjdElkOworICAg
IFZlY3RvcjxwYWlyPGxvbmcsIFN0cmluZz4gPiBtX3BlbmRpbmdFdmFsdWF0ZVRlc3RDb21tYW5k
czsKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKICAgICBib29sIG1fZGVidWdnZXJF
bmFibGVkOwogICAgIGJvb2wgbV9hdHRhY2hEZWJ1Z2dlcldoZW5TaG93bjsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNwcCBiL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kLmNwcAppbmRleCA2M2JiNmUyLi45OTQ0ZTNjIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5jcHAKKysrIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuY3BwCkBAIC00NTksNiArNDU5LDE0IEBAIHZv
aWQgSW5zcGVjdG9yRnJvbnRlbmQ6OmFkZE5vZGVzVG9TZWFyY2hSZXN1bHQoY29uc3QgU3RyaW5n
JiBub2RlSWRzKQogICAgIGZ1bmN0aW9uLT5jYWxsKCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yRnJv
bnRlbmQ6OmV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQoaW50IGNhbGxJZCwgY29uc3QgU3RyaW5n
JiBzY3JpcHQpCit7CisgICAgT3duUHRyPFNjcmlwdEZ1bmN0aW9uQ2FsbD4gZnVuY3Rpb24obmV3
RnVuY3Rpb25DYWxsKCJldmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kIikpOworICAgIGZ1bmN0aW9u
LT5hcHBlbmRBcmd1bWVudChjYWxsSWQpOworICAgIGZ1bmN0aW9uLT5hcHBlbmRBcmd1bWVudChz
Y3JpcHQpOworICAgIGZ1bmN0aW9uLT5jYWxsKCk7Cit9CisKIFBhc3NPd25QdHI8U2NyaXB0RnVu
Y3Rpb25DYWxsPiBJbnNwZWN0b3JGcm9udGVuZDo6bmV3RnVuY3Rpb25DYWxsKGNvbnN0IFN0cmlu
ZyYgZnVuY3Rpb25OYW1lKQogewogICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCogZnVuY3Rpb24gPSBu
ZXcgU2NyaXB0RnVuY3Rpb25DYWxsKG1fc2NyaXB0U3RhdGUsIG1fd2ViSW5zcGVjdG9yLCAiZGlz
cGF0Y2giKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
LmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5oCmluZGV4IDUxZjE3ZmIu
LmI0MTRjN2MgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
LmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuaApAQCAtMTI5LDYg
KzEyOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBTY3JpcHRTdGF0ZSogc2Ny
aXB0U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdFN0YXRlOyB9CiAKKyAgICAgICAgdm9p
ZCBldmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKGludCBjYWxsSWQsIGNvbnN0IFN0cmluZyYgc2Ny
aXB0KTsKICAgICBwcml2YXRlOgogICAgICAgICBQYXNzT3duUHRyPFNjcmlwdEZ1bmN0aW9uQ2Fs
bD4gbmV3RnVuY3Rpb25DYWxsKGNvbnN0IFN0cmluZyYgZnVuY3Rpb25OYW1lKTsKICAgICAgICAg
dm9pZCBjYWxsU2ltcGxlRnVuY3Rpb24oY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUpOwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcyBiL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKaW5kZXggZGU0ZjRmYi4uYjQ5NWY3
YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwor
KysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCkBAIC0xNjAwLDYg
KzE2MDAsMTEgQEAgV2ViSW5zcGVjdG9yLl90b29sYmFySXRlbUNsaWNrZWQgPSBmdW5jdGlvbihl
dmVudCkKICAgICB0aGlzLmN1cnJlbnRQYW5lbCA9IHRvb2xiYXJJdGVtLnBhbmVsOwogfQogCitX
ZWJJbnNwZWN0b3IuZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZCA9IGZ1bmN0aW9uKGNhbGxJZCwg
c2NyaXB0KQoreworICAgIEluc3BlY3RvckNvbnRyb2xsZXIuZGlkRXZhbHVhdGVGb3JUZXN0SW5G
cm9udGVuZChjYWxsSWQsIEpTT04uc3RyaW5naWZ5KHdpbmRvdy5ldmFsKHNjcmlwdCkpKTsKK30K
KwogLy8gVGhpcyB0YWJsZSBtYXBzIE1JTUUgdHlwZXMgdG8gdGhlIFJlc291cmNlLlR5cGVzIHdo
aWNoIGFyZSB2YWxpZCBmb3IgdGhlbS4KIC8vIFRoZSBmb2xsb3dpbmcgbGluZToKIC8vICAgICJ0
ZXh0L2h0bWwiOiAgICAgICAgICAgICAgICB7MDogMX0sCmRpZmYgLS1naXQgYS9XZWJLaXQvQ2hh
bmdlTG9nIGIvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAyZjhmMThmLi5jYWM5ZWQzIDEwMDY0NAot
LS0gYS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NCBAQAorMjAwOS0xMC0wMSAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCisKKyAgICAgICAgV2ViIElu
c3BlY3RvciBuZWVkcyBhIHRlc3RpbmcgaW5mcmFzdHJ1Y3R1cmUKKworICAgICAgICBOZWVkIGEg
c2hvcnQgZGVzY3JpcHRpb24gYW5kIGJ1ZyBVUkwgKE9PUFMhKQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY1NDkKKworICAgICAgICAqIFdlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDA5LTA5LTI5ICBCcmFkeSBFaWRzb24gIDxi
ZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBKb2huIFN1bGxpdmFuLgpk
aWZmIC0tZ2l0IGEvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGI3NjJmYzkuLjRkN2E3
MjAgMTAwNjQ0Ci0tLSBhL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyMSw2ICsx
MjEsNyBAQAogCQk2NUVFREU1ODA4NEZGQzlFMDAwMkRCMjUgLyogV2ViTlNGaWxlTWFuYWdlckV4
dHJhcy5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVF
RURFNTYwODRGRkM5RTAwMDJEQjI1IC8qIFdlYk5TRmlsZU1hbmFnZXJFeHRyYXMubSAqLzsgfTsK
IAkJNjVGRkI3RkMwQUQwQjdEMzAwNDhDRDA1IC8qIFdlYkRvY3VtZW50TG9hZGVyTWFjLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUZGQjdGQTBBRDBC
N0QzMDA0OENEMDUgLyogV2ViRG9jdW1lbnRMb2FkZXJNYWMuaCAqLzsgfTsKIAkJNjVGRkI3RkQw
QUQwQjdEMzAwNDhDRDA1IC8qIFdlYkRvY3VtZW50TG9hZGVyTWFjLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVGRkI3RkIwQUQwQjdEMzAwNDhDRDA1
IC8qIFdlYkRvY3VtZW50TG9hZGVyTWFjLm1tICovOyB9OworCQk3QThGRjBEMTEwNzUwMjRBMDBB
ODBBMDggLyogV2ViSW5zcGVjdG9yUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0E4RkYwRDAxMDc1MDI0QTAwQTgwQTA4IC8qIFdlYkluc3Bl
Y3RvclByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3RTZGRUYwODA4OTg1QTcyMDBDNDRDM0YgLyogV2ViU2NyaXB0RGVidWdEZWxlZ2F0
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U2RkVG
MDUwODk4NUE3MjAwQzQ0QzNGIC8qIFdlYlNjcmlwdERlYnVnRGVsZWdhdGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RTZGRUYwOTA4OTg1QTcy
MDBDNDRDM0YgLyogV2ViU2NyaXB0RGVidWdEZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFNkZFRjA2MDg5ODVBNzIwMEM0NEMzRiAvKiBX
ZWJTY3JpcHREZWJ1Z0RlbGVnYXRlLm1tICovOyB9OwogCQk5MzA0QjMwMDBCMDIzNDE1MDBGNzg1
MEQgLyogV2ViSWNvbkRhdGFiYXNlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMDRCMkZGMEIwMjM0MTUwMEY3ODUwRCAvKiBXZWJJY29u
RGF0YWJhc2VJbnRlcm5hbC5oICovOyB9OwpAQCAtNTEwLDYgKzUxMSw3IEBACiAJCTY1RkZCN0ZC
MEFEMEI3RDMwMDQ4Q0QwNSAvKiBXZWJEb2N1bWVudExvYWRlck1hYy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJEb2N1bWVudExvYWRlck1hYy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzA4MkY1NkYwMzhFQURBQTAwQTgwMTgwIC8qIFdl
YktpdE5TU3RyaW5nRXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYktpdE5TU3RyaW5nRXh0cmFzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk3MDgyRjU3MDAzOEVBREFB
MDBBODAxODAgLyogV2ViS2l0TlNTdHJpbmdFeHRyYXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgZmlsZUVu
Y29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgcGF0aCA9IFdlYktpdE5TU3RyaW5nRXh0cmFz
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsg
fTsKKwkJN0E4RkYwRDAxMDc1MDI0QTAwQTgwQTA4IC8qIFdlYkluc3BlY3RvclByaXZhdGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5zcGVjdG9yUHJpdmF0ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RTZGRUYwNTA4OTg1QTcyMDBDNDRDM0YgLyog
V2ViU2NyaXB0RGVidWdEZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNjcmlwdERlYnVnRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTdFNkZFRjA2MDg5
ODVBNzIwMEM0NEMzRiAvKiBXZWJTY3JpcHREZWJ1Z0RlbGVnYXRlLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJTY3JpcHREZWJ1
Z0RlbGVnYXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNU
YWJzID0gMDsgfTsKIAkJODMwRTgxRTAwNTg1M0FDMDAwQUQwODkxIC8qIFNlY3VyaXR5LmZyYW1l
d29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdy
YXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gU2VjdXJpdHkuZnJhbWV3b3JrOyBwYXRoID0gL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxh
YnNvbHV0ZT4iOyB9OwpAQCAtODExLDYgKzgxMyw3IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQk1
RDdCRjgxMjBDMkExRDkwMDA4Q0UwNkQgLyogV2ViSW5zcGVjdG9yLmggKi8sCiAJCQkJNUQ3QkY4
MTMwQzJBMUQ5MDAwOENFMDZEIC8qIFdlYkluc3BlY3Rvci5tbSAqLywKKwkJCQk3QThGRjBEMDEw
NzUwMjRBMDBBODBBMDggLyogV2ViSW5zcGVjdG9yUHJpdmF0ZS5oICovLAogCQkJCTFDNjhGNjYz
MDk1QjVGQzEwMEMyOTg0RSAvKiBXZWJOb2RlSGlnaGxpZ2h0LmggKi8sCiAJCQkJMUM2OEY2NjQw
OTVCNUZDMTAwQzI5ODRFIC8qIFdlYk5vZGVIaWdobGlnaHQubW0gKi8sCiAJCQkJMUM2OEY2NjUw
OTVCNUZDMTAwQzI5ODRFIC8qIFdlYk5vZGVIaWdobGlnaHRWaWV3LmggKi8sCkBAIC0xMzc4LDYg
KzEzODEsNyBAQAogCQkJCTFBMkQ3NTUwMERFNDgxMEUwMEYwQTY0OCAvKiBXZWJJY29uRmV0Y2hl
ckludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk1RDdCRjgxNDBDMkExRDkwMDA4Q0UwNkQg
LyogV2ViSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNjY5M0REQzBCRkJBODUyMDAy
MTYwNzIgLyogV2ViSW5zcGVjdG9yQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk3QThGRjBE
MTEwNzUwMjRBMDBBODBBMDggLyogV2ViSW5zcGVjdG9yUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTM5ODEwQTAwODI0QkYwMTAwOERGMDM4IC8qIFdlYkphdmFQbHVnSW4uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTkzOTgxMDQyMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJKYXZhU2NyaXB0VGV4
dElucHV0UGFuZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzOTgxMDg1MDgyNEJGMDEwMDhERjAz
OCAvKiBXZWJLZXlHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvV2ViS2l0
L2d0ay9DaGFuZ2VMb2cgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCA0MjY1OTg4Li45MTZh
YzY0IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9XZWJLaXQvZ3RrL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDA5LTEwLTAxICBQYXZlbCBGZWxkbWFuICA8cGZl
bGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hl
ci4KKworICAgICAgICBXZWIgSW5zcGVjdG9yIG5lZWRzIGEgdGVzdGluZyBpbmZyYXN0cnVjdHVy
ZQorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjU0
OQorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQ2xpZW50OjpjcmVhdGVQYWdlKToKKwogMjAwOS0wOS0y
OSAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
R3VzdGF2byBOb3JvbmhhLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9J
bnNwZWN0b3JDbGllbnRHdGsuY3BwIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0
b3JDbGllbnRHdGsuY3BwCmluZGV4IDkwOGJmZmEuLmZlZjA3YzEgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmNwcAorKysgYi9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5jcHAKQEAgLTY4LDggKzY4LDEz
IEBAIHZvaWQgSW5zcGVjdG9yQ2xpZW50Ojp3ZWJWaWV3RGVzdHJveWVkKCkKIAogUGFnZSogSW5z
cGVjdG9yQ2xpZW50OjpjcmVhdGVQYWdlKCkKIHsKLSAgICBpZiAobV93ZWJWaWV3KQotICAgICAg
cmV0dXJuIGNvcmUobV93ZWJWaWV3KTsKKyAgICBpZiAobV93ZWJWaWV3KSB7CisgICAgICAgIGdi
b29sZWFuIGhhbmRsZWQgPSBGQUxTRTsKKyAgICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKG1f
d2ViSW5zcGVjdG9yLCAiZGVzdHJveSIsICZoYW5kbGVkKTsKKworICAgICAgICAvKiB3ZSBjYW4g
bm93IGRpc3Bvc2Ugb3VyIG93biByZWZlcmVuY2UgKi8KKyAgICAgICAgZ19vYmplY3RfdW5yZWYo
bV93ZWJJbnNwZWN0b3IpOworICAgIH0KIAogICAgIC8vIFRoaXMgZ19vYmplY3RfZ2V0IHdpbGwg
cmVmIHRoZSBpbnNwZWN0b3IuIFdlJ3JlIG5vdCBkb2luZyBhbgogICAgIC8vIHVucmVmIGlmIHRo
aXMgbWV0aG9kIHN1Y2NlZWRzIGJlY2F1c2UgdGhlIGluc3BlY3RvciBvYmplY3QgbXVzdApkaWZm
IC0tZ2l0IGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRl
eCBlNDZiYzQ2Li45ODJkODBlIDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysg
Yi9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDA5LTEwLTAxICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IFRpbW90aHkgSGF0Y2hlci4KKworICAgICAgICBXZWIgSW5zcGVjdG9yIG5lZWRzIGEgdGVzdGlu
ZyBpbmZyYXN0cnVjdHVyZQorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yNjU0OQorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50Lm1tOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpjcmVhdGVQYWdlKToKKyAg
ICAgICAgKiBXZWJJbnNwZWN0b3IvV2ViSW5zcGVjdG9yLm1tOgorICAgICAgICAoLVtXZWJJbnNw
ZWN0b3IgZXZhbHVhdGVJbkZyb250ZW5kOmNhbGxJZDpzY3JpcHQ6XSk6CisgICAgICAgICogV2Vi
SW5zcGVjdG9yL1dlYkluc3BlY3RvclByaXZhdGUuaDogQWRkZWQuCisKIDIwMDktMDktMjkgIEJy
YWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJ1YmJlcnN0YW1wZWQg
YnkgRGFuIEJlcm5zdGVpbi4KZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50Lm1tIGIvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQubW0KaW5kZXggM2YwYjQzZC4uYzZiM2U3NiAxMDA2NDQKLS0tIGEvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KKysrIGIvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KQEAgLTgxLDggKzgxLDkgQEAg
dm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3RvckRlc3Ryb3llZCgpCiAKIFBhZ2UqIFdl
Ykluc3BlY3RvckNsaWVudDo6Y3JlYXRlUGFnZSgpCiB7Ci0gICAgaWYgKCFtX3dpbmRvd0NvbnRy
b2xsZXIpCi0gICAgICAgIG1fd2luZG93Q29udHJvbGxlci5hZG9wdE5TKFtbV2ViSW5zcGVjdG9y
V2luZG93Q29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhJbnNwZWN0ZWRXZWJWaWV3Om1fd2ViVmll
d10pOworICAgIGlmIChtX3dpbmRvd0NvbnRyb2xsZXIpCisgICAgICAgIFtbbV93aW5kb3dDb250
cm9sbGVyLmdldCgpIHdlYlZpZXddIGNsb3NlXTsKKyAgICBtX3dpbmRvd0NvbnRyb2xsZXIuYWRv
cHROUyhbW1dlYkluc3BlY3RvcldpbmRvd0NvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoSW5zcGVj
dGVkV2ViVmlldzptX3dlYlZpZXddKTsKIAogICAgIHJldHVybiBjb3JlKFttX3dpbmRvd0NvbnRy
b2xsZXIuZ2V0KCkgd2ViVmlld10pOwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9XZWJJbnNw
ZWN0b3IvV2ViSW5zcGVjdG9yLm1tIGIvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvV2ViSW5zcGVj
dG9yLm1tCmluZGV4IGMwNGE1NmMuLmNjYjA5YzUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvV2Vi
SW5zcGVjdG9yL1dlYkluc3BlY3Rvci5tbQorKysgYi9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9X
ZWJJbnNwZWN0b3IubW0KQEAgLTI3LDcgKzI3LDkgQEAKICAqLwogCiAjaW1wb3J0ICJXZWJJbnNw
ZWN0b3IuaCIKKwogI2ltcG9ydCAiV2ViRnJhbWVJbnRlcm5hbC5oIgorI2ltcG9ydCAiV2ViSW5z
cGVjdG9yUHJpdmF0ZS5oIgogCiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvRnJhbWUuaD4KQEAgLTE2Myw2ICsxNjUsMTIgQEAgdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBjb3JlKF93ZWJWaWV3KSkKICAgICAgICAg
cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5kZXRhY2hXaW5kb3coKTsKIH0KKworLSAodm9p
ZClldmFsdWF0ZUluRnJvbnRlbmQ6KGlkKXNlbmRlciBjYWxsSWQ6KGxvbmcpY2FsbElkIHNjcmlw
dDooTlNTdHJpbmcgKilzY3JpcHQKK3sKKyAgICBpZiAoUGFnZSogcGFnZSA9IGNvcmUoX3dlYlZp
ZXcpKQorICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmV2YWx1YXRlRm9yVGVz
dEluRnJvbnRlbmQoY2FsbElkLCBzY3JpcHQpOworfQogQGVuZAogCiBAaW1wbGVtZW50YXRpb24g
V2ViSW5zcGVjdG9yIChPYnNvbGV0ZSkKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2ViSW5zcGVj
dG9yL1dlYkluc3BlY3RvclByaXZhdGUuaCBiL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL1dlYklu
c3BlY3RvclByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jODJi
YjkyCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvV2ViSW5zcGVj
dG9yUHJpdmF0ZS5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUg
QXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLiAKKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgi
QXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4g
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gVGhpcyBoZWFk
ZXIgY29udGFpbnMgdGhlIFdlYkluc3BlY3RvciBTUEkuCisKKyNpbXBvcnQgIldlYkluc3BlY3Rv
ci5oIgorCitAaW50ZXJmYWNlIFdlYkluc3BlY3RvciAoV2ViUHJpdmF0ZSkKKy0gKHZvaWQpZXZh
bHVhdGVJbkZyb250ZW5kOihpZClzZW5kZXIgY2FsbElkOihsb25nKWNhbGxJZCBzY3JpcHQ6KE5T
U3RyaW5nICopc2NyaXB0OworQGVuZApkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0NoYW5nZUxvZyBi
L1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggYjI1MmQ4Yy4uMDMwM2ZkMiAxMDA2NDQKLS0tIGEv
V2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTQgQEAKKzIwMDktMTAtMDEgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgorCisgICAgICAgIFdlYiBJ
bnNwZWN0b3IgbmVlZHMgYSB0ZXN0aW5nIGluZnJhc3RydWN0dXJlCisKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2NTQ5CisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDbGllbnRRdDo6Y3JlYXRlUGFnZSk6CisKIDIwMDktMDktMjkgIEFuZHJhcyBCZWNzaSAg
PGJlY3NpLmFuZHJhc0BzdHVkLnUtc3plZ2VkLmh1PgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRv
ciBBcm5lIFZlc3Riw7guCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5z
cGVjdG9yQ2xpZW50UXQuY3BwIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNs
aWVudFF0LmNwcAppbmRleCAzNDAzMjVlLi5lMjExZmIzIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuY3BwCisrKyBiL1dlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5jcHAKQEAgLTg0LDkgKzg0LDYgQEAgdm9pZCBJ
bnNwZWN0b3JDbGllbnRRdDo6aW5zcGVjdG9yRGVzdHJveWVkKCkKIAogUGFnZSogSW5zcGVjdG9y
Q2xpZW50UXQ6OmNyZWF0ZVBhZ2UoKQogewotICAgIGlmIChtX2luc3BlY3RvclZpZXcpCi0gICAg
ICAgIHJldHVybiBtX2luc3BlY3RvclZpZXctPnBhZ2UoKS0+ZC0+cGFnZTsKLQogICAgIFFXZWJW
aWV3KiBpbnNwZWN0b3JWaWV3ID0gbmV3IFFXZWJWaWV3OwogICAgIEluc3BlY3RvckNsaWVudFdl
YlBhZ2UqIGluc3BlY3RvclBhZ2UgPSBuZXcgSW5zcGVjdG9yQ2xpZW50V2ViUGFnZShpbnNwZWN0
b3JWaWV3KTsKICAgICBpbnNwZWN0b3JWaWV3LT5zZXRQYWdlKGluc3BlY3RvclBhZ2UpOwpkaWZm
IC0tZ2l0IGEvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRl
eCAwNzQ2NTE2Li5hMWIzMjY3IDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysg
Yi9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDA5LTEwLTAxICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IFRpbW90aHkgSGF0Y2hlci4KKworICAgICAgICBXZWIgSW5zcGVjdG9yIG5lZWRzIGEgdGVzdGlu
ZyBpbmZyYXN0cnVjdHVyZQorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yNjU0OQorCisgICAgICAgICogSW50ZXJmYWNlcy9JV2ViSW5zcGVjdG9yUHJp
dmF0ZS5pZGw6IEFkZGVkLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5jcHA6CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6OmNyZWF0ZVBhZ2UpOgorICAg
ICAgICAqIFdlYkluc3BlY3Rvci5jcHA6CisgICAgICAgIChXZWJJbnNwZWN0b3I6OmV2YWx1YXRl
SW5Gcm9udGVuZCk6CisgICAgICAgICogV2ViSW5zcGVjdG9yLmg6CisgICAgICAgICogV2ViS2l0
LnZjcHJvai9JbnRlcmZhY2VzLnZjcHJvajoKKwogMjAwOS0wOS0yOSAgS2VubmV0aCBSdXNzZWxs
ICA8a2JyQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292
LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJJbnNwZWN0b3JQcml2YXRl
LmlkbCBiL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViSW5zcGVjdG9yUHJpdmF0ZS5pZGwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQ0MjFiZAotLS0gL2Rldi9udWxsCisr
KyBiL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViSW5zcGVjdG9yUHJpdmF0ZS5pZGwKQEAgLTAs
MCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUg
bmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgor
ICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBET19OT19JTVBPUlRTCitpbXBvcnQgIm9haWRsLmlk
bCI7CitpbXBvcnQgIm9jaWRsLmlkbCI7CisjZW5kaWYKKworWworICAgIG9iamVjdCwKKyAgICBv
bGVhdXRvbWF0aW9uLAorICAgIHV1aWQoQTVBMzFDRDAtQUVBOS0xMWRlLThBMzktMDgwMDIwMEM5
QTY2KSwKKyAgICBwb2ludGVyX2RlZmF1bHQodW5pcXVlKQorXQoraW50ZXJmYWNlIElXZWJJbnNw
ZWN0b3JQcml2YXRlIDogSVVua25vd24KK3sKKyAgICBIUkVTVUxUIGV2YWx1YXRlSW5Gcm9udGVu
ZChbaW5dIFVMT05HIGNhbGxJZCwgW2luXSBCU1RSIHNjcmlwdCk7Cit9CmRpZmYgLS1naXQgYS9X
ZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAgYi9XZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKaW5kZXggYmE3MjRiNC4u
ZGUyY2ZkZSAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnQuY3BwCisrKyBiL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50LmNwcApAQCAtOTksOSArOTksNiBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6aW5z
cGVjdG9yRGVzdHJveWVkKCkKIAogUGFnZSogV2ViSW5zcGVjdG9yQ2xpZW50OjpjcmVhdGVQYWdl
KCkKIHsKLSAgICBpZiAobV93ZWJWaWV3KQotICAgICAgICByZXR1cm4gY29yZShtX3dlYlZpZXcu
Z2V0KCkpOwotCiAgICAgQVNTRVJUKCFtX2h3bmQpOwogCiAgICAgcmVnaXN0ZXJXaW5kb3dDbGFz
cygpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJJbnNwZWN0b3IuY3BwIGIvV2ViS2l0L3dp
bi9XZWJJbnNwZWN0b3IuY3BwCmluZGV4IDFkZGJkZDguLmZkY2U1ZWEgMTAwNjQ0Ci0tLSBhL1dl
YktpdC93aW4vV2ViSW5zcGVjdG9yLmNwcAorKysgYi9XZWJLaXQvd2luL1dlYkluc3BlY3Rvci5j
cHAKQEAgLTI1NiwzICsyNTYsMTYgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJJbnNw
ZWN0b3I6OnNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKEJPT0wgZW5hYmwKIAogICAgIHJl
dHVybiBTX09LOwogfQorCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFICBXZWJJbnNwZWN0b3I6
OmV2YWx1YXRlSW5Gcm9udGVuZChVTE9ORyBjYWxsSWQsIEJTVFIgYlNjcmlwdCkKK3sKKyAgICBp
ZiAoIW1fd2ViVmlldykKKyAgICAgICAgcmV0dXJuIFNfT0s7CisKKyAgICBQYWdlKiBwYWdlID0g
bV93ZWJWaWV3LT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm4gU19PSzsK
KworICAgIFN0cmluZyBzY3JpcHQoYlNjcmlwdCwgU3lzU3RyaW5nTGVuKGJTY3JpcHQpKTsKKyAg
ICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmV2YWx1YXRlSW5Gcm9udGVuZChjYWxsSWQs
IHNjcmlwdCk7Cit9CmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL1dlYkluc3BlY3Rvci5oIGIvV2Vi
S2l0L3dpbi9XZWJJbnNwZWN0b3IuaAppbmRleCA1MzAzYTYxLi4zNzM3YmY4IDEwMDY0NAotLS0g
YS9XZWJLaXQvd2luL1dlYkluc3BlY3Rvci5oCisrKyBiL1dlYktpdC93aW4vV2ViSW5zcGVjdG9y
LmgKQEAgLTM0LDcgKzM0LDcgQEAKIAogY2xhc3MgV2ViVmlldzsKIAotY2xhc3MgV2ViSW5zcGVj
dG9yIDogcHVibGljIElXZWJJbnNwZWN0b3IsIHB1YmxpYyBOb25jb3B5YWJsZSB7CitjbGFzcyBX
ZWJJbnNwZWN0b3IgOiBwdWJsaWMgSVdlYkluc3BlY3RvciwgcHVibGljIElXZWJJbnNwZWN0b3JQ
cml2YXRlIHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFdlYkluc3Bl
Y3RvciogY3JlYXRlSW5zdGFuY2UoV2ViVmlldyopOwogCkBAIC01OSw2ICs1OSw4IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpc0phdmFTY3JpcHRQ
cm9maWxpbmdFbmFibGVkKEJPT0wqIGlzUHJvZmlsaW5nRW5hYmxlZCk7CiAgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKEJP
T0wpOworICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBldmFsdWF0
ZUluRnJvbnRlbmQoVUxPTkcgY2FsbElkLCBCU1RSIHNjcmlwdCk7CiAKIHByaXZhdGU6CiAgICAg
V2ViSW5zcGVjdG9yKFdlYlZpZXcqKTsKZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vV2ViS2l0LnZj
cHJvai9JbnRlcmZhY2VzLnZjcHJvaiBiL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9JbnRlcmZh
Y2VzLnZjcHJvagppbmRleCA2MWY1MzAzLi5jYmM4MjMxIDEwMDY0NAotLS0gYS9XZWJLaXQvd2lu
L1dlYktpdC52Y3Byb2ovSW50ZXJmYWNlcy52Y3Byb2oKKysrIGIvV2ViS2l0L3dpbi9XZWJLaXQu
dmNwcm9qL0ludGVyZmFjZXMudmNwcm9qCkBAIC05NDQsNiArOTQ0LDI2IEBACiAJCQk8L0ZpbGVD
b25maWd1cmF0aW9uPg0KIAkJPC9GaWxlPg0KIAkJPEZpbGUNCisJCQlSZWxhdGl2ZVBhdGg9Ii4u
XEludGVyZmFjZXNcSVdlYkluc3BlY3RvclByaXZhdGUuaWRsIg0KKwkJCT4NCisJCQk8RmlsZUNv
bmZpZ3VyYXRpb24NCisJCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJCUV4Y2x1ZGVkRnJvbUJ1
aWxkPSJ0cnVlIg0KKwkJCQk+DQorCQkJCTxUb29sDQorCQkJCQlOYW1lPSJWQ01JRExUb29sIg0K
KwkJCQkvPg0KKwkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJPEZpbGVDb25maWd1cmF0aW9u
DQorCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVl
Ig0KKwkJCQk+DQorCQkJCTxUb29sDQorCQkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCQkvPg0K
KwkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQk8L0ZpbGU+DQorCQk8RmlsZQ0KIAkJCVJlbGF0
aXZlUGF0aD0iLi5cSW50ZXJmYWNlc1xJV2ViSmF2YVNjcmlwdENvbGxlY3Rvci5pZGwiDQogCQkJ
Pg0KIAkJCTxGaWxlQ29uZmlndXJhdGlvbg0KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5n
ZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwppbmRleCBmOTkyOGQ3Li40ZTA1NTA1IDEwMDY0
NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzQgQEAKKzIwMDktMTAtMDEgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgorCisg
ICAgICAgIFdlYiBJbnNwZWN0b3IgbmVlZHMgYSB0ZXN0aW5nIGluZnJhc3RydWN0dXJlCisKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2NTQ5CisKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAg
IChzaG93V2ViSW5zcGVjdG9yQ2FsbGJhY2spOgorICAgICAgICAoY2xvc2VXZWJJbnNwZWN0b3JD
YWxsYmFjayk6CisgICAgICAgIChldmFsdWF0ZUluV2ViSW5zcGVjdG9yQ2FsbGJhY2spOgorICAg
ICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwOgorICAgICAgICAoTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnNob3dXZWJJbnNwZWN0b3IpOgorICAgICAgICAoTGF5b3V0VGVzdENv
bnRyb2xsZXI6OmNsb3NlV2ViSW5zcGVjdG9yKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9s
bGVyOjpldmFsdWF0ZUluV2ViSW5zcGVjdG9yKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9t
YWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2hvd1dlYkluc3BlY3Rvcik6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6
Y2xvc2VXZWJJbnNwZWN0b3IpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmV2YWx1
YXRlSW5XZWJJbnNwZWN0b3IpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRU
ZXN0Q29udHJvbGxlcldpbi5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2hv
d1dlYkluc3BlY3Rvcik6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xvc2VXZWJJ
bnNwZWN0b3IpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmV2YWx1YXRlSW5XZWJJ
bnNwZWN0b3IpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9s
bGVyV3guY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNob3dXZWJJbnNwZWN0
b3IpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsb3NlV2ViSW5zcGVjdG9yKToK
KyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpldmFsdWF0ZUluV2ViSW5zcGVjdG9yKToK
KwogMjAwOS0wOS0yOSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgUnViYmVyc3RhbXBlZCBieSBEYW4gQmVybnN0ZWluLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGM3OWExZGMuLjUx
MjUzZjMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RD
b250cm9sbGVyLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0
Q29udHJvbGxlci5jcHAKQEAgLTkyOSw2ICs5MjksMzIgQEAgc3RhdGljIEpTVmFsdWVSZWYgc2V0
U3RvcFByb3Zpc2lvbmFsRnJhbWVMb2Fkc0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBK
U08KICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKK3N0YXRp
YyBKU1ZhbHVlUmVmIHNob3dXZWJJbnNwZWN0b3JDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4
dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBh
cmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBl
eGNlcHRpb24pCit7CisgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0
aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2Jq
ZWN0KSk7CisgICAgY29udHJvbGxlci0+c2hvd1dlYkluc3BlY3RvcigpOworICAgIHJldHVybiBK
U1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYgY2xv
c2VXZWJJbnNwZWN0b3JDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYg
ZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBj
b25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7Cisg
ICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRU
ZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgY29u
dHJvbGxlci0+Y2xvc2VXZWJJbnNwZWN0b3IoKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRl
ZmluZWQoY29udGV4dCk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIGV2YWx1YXRlSW5XZWJJbnNw
ZWN0b3JDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24s
IEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1Zh
bHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgTGF5b3V0
VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJv
bGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgZG91YmxlIGNhbGxJ
ZCA9IEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbik7Cisg
ICAgQVNTRVJUKCEqZXhjZXB0aW9uKTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gc2Ny
aXB0KEFkb3B0LCBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGFyZ3VtZW50c1sxXSwgZXhj
ZXB0aW9uKSk7CisgICAgQVNTRVJUKCEqZXhjZXB0aW9uKTsKKworICAgIGNvbnRyb2xsZXItPmV2
YWx1YXRlSW5XZWJJbnNwZWN0b3Ioc3RhdGljX2Nhc3Q8bG9uZz4oY2FsbElkKSwgc2NyaXB0Lmdl
dCgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKIHN0
YXRpYyBKU1ZhbHVlUmVmIGVsZW1lbnREb2VzQXV0b0NvbXBsZXRlRm9yRWxlbWVudFdpdGhJZENh
bGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmpl
Y3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYg
YXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBMYXlvdXRUZXN0Q29u
dHJvbGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4o
SlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKQEAgLTExMTQsNiArMTE0MCw3IEBAIEpT
U3RhdGljRnVuY3Rpb24qIExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMoKQog
ICAgICAgICB7ICJjbGVhckFsbERhdGFiYXNlcyIsIGNsZWFyQWxsRGF0YWJhc2VzQ2FsbGJhY2ss
IGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRE
ZWxldGUgfSwKICAgICAgICAgeyAiY2xlYXJCYWNrRm9yd2FyZExpc3QiLCBjbGVhckJhY2tGb3J3
YXJkTGlzdENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVy
dHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImNsZWFyUGVyc2lzdGVudFVzZXJT
dHlsZVNoZWV0IiwgY2xlYXJQZXJzaXN0ZW50VXNlclN0eWxlU2hlZXRDYWxsYmFjaywga0pTUHJv
cGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9
LAorICAgICAgICB7ICJjbG9zZVdlYkluc3BlY3RvciIsIGNsb3NlV2ViSW5zcGVjdG9yQ2FsbGJh
Y2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKICAgICAgICAgeyAiZGVjb2RlSG9zdE5hbWUiLCBkZWNvZGVIb3N0TmFtZUNh
bGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImRpc2FibGVJbWFnZUxvYWRpbmciLCBkaXNhYmxl
SW1hZ2VMb2FkaW5nQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiZGlzcGF0Y2hQZW5kaW5n
TG9hZFJlcXVlc3RzIiwgZGlzcGF0Y2hQZW5kaW5nTG9hZFJlcXVlc3RzQ2FsbGJhY2ssIGtKU1By
b3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUg
fSwKQEAgLTExMzUsNiArMTE2Miw3IEBAIEpTU3RhdGljRnVuY3Rpb24qIExheW91dFRlc3RDb250
cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMoKQogICAgICAgICB7ICJkdW1wV2lsbENhY2hlUmVzcG9u
c2UiLCBkdW1wV2lsbENhY2hlUmVzcG9uc2VDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJl
bGVtZW50RG9lc0F1dG9Db21wbGV0ZUZvckVsZW1lbnRXaXRoSWQiLCBlbGVtZW50RG9lc0F1dG9D
b21wbGV0ZUZvckVsZW1lbnRXaXRoSWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJlbmNv
ZGVIb3N0TmFtZSIsIGVuY29kZUhvc3ROYW1lQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRl
UmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAi
ZXZhbHVhdGVJbldlYkluc3BlY3RvciIsIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3JDYWxsYmFjaywg
a0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERl
bGV0ZSB9LAogICAgICAgICB7ICJleGVjQ29tbWFuZCIsIGV4ZWNDb21tYW5kQ2FsbGJhY2ssIGtK
U1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxl
dGUgfSwKICAgICAgICAgeyAiZ3JhbnREZXNrdG9wTm90aWZpY2F0aW9uUGVybWlzc2lvbiIsIGdy
YW50RGVza3RvcE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjaywga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LCAKICAgICAg
ICAgeyAiaXNDb21tYW5kRW5hYmxlZCIsIGlzQ29tbWFuZEVuYWJsZWRDYWxsYmFjaywga0pTUHJv
cGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9
LApAQCAtMTE4NSw2ICsxMjEzLDcgQEAgSlNTdGF0aWNGdW5jdGlvbiogTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnN0YXRpY0Z1bmN0aW9ucygpCiAgICAgICAgIHsgInNldFVzZXJTdHlsZVNoZWV0TG9j
YXRpb24iLCBzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0
cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAg
ICAgeyAic2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGxPblJlZGlyZWN0Iiwgc2V0V2lsbFNl
bmRSZXF1ZXN0UmV0dXJuc051bGxPblJlZGlyZWN0Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAg
eyAic2V0V2luZG93SXNLZXkiLCBzZXRXaW5kb3dJc0tleUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAg
ICAgIHsgInNob3dXZWJJbnNwZWN0b3IiLCBzaG93V2ViSW5zcGVjdG9yQ2FsbGJhY2ssIGtKU1By
b3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUg
fSwKICAgICAgICAgeyAidGVzdE9uc2NyZWVuIiwgdGVzdE9uc2NyZWVuQ2FsbGJhY2ssIGtKU1By
b3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUg
fSwKICAgICAgICAgeyAidGVzdFJlcGFpbnQiLCB0ZXN0UmVwYWludENhbGxiYWNrLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0s
CiAgICAgICAgIHsgIndhaXRGb3JQb2xpY3lEZWxlZ2F0ZSIsIHdhaXRGb3JQb2xpY3lEZWxlZ2F0
ZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRy
aWJ1dGVEb250RGVsZXRlIH0sCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5
b3V0VGVzdENvbnRyb2xsZXIuaAppbmRleCA4NWY1YjgzLi41NzkxYWY3IDEwMDY0NAotLS0gYS9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCisrKyBiL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKQEAgLTg3LDcg
Kzg3LDcgQEAgcHVibGljOgogICAgIHNpemVfdCB3ZWJIaXN0b3J5SXRlbUNvdW50KCk7CiAgICAg
dW5zaWduZWQgd29ya2VyVGhyZWFkQ291bnQoKSBjb25zdDsKICAgICBpbnQgd2luZG93Q291bnQo
KTsKLSAgICAKKwogICAgIHZvaWQgZ3JhbnREZXNrdG9wTm90aWZpY2F0aW9uUGVybWlzc2lvbihK
U1N0cmluZ1JlZiBvcmlnaW4pOwogICAgIGJvb2wgY2hlY2tEZXNrdG9wTm90aWZpY2F0aW9uUGVy
bWlzc2lvbihKU1N0cmluZ1JlZiBvcmlnaW4pOwogCkBAIC0yMDMsNiArMjAzLDEwIEBAIHB1Ymxp
YzoKICAgICBib29sIGlzR2VvbG9jYXRpb25QZXJtaXNzaW9uU2V0KCkgY29uc3QgeyByZXR1cm4g
bV9pc0dlb2xvY2F0aW9uUGVybWlzc2lvblNldDsgfQogICAgIGJvb2wgZ2VvbG9jYXRpb25QZXJt
aXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9nZW9sb2NhdGlvblBlcm1pc3Npb247IH0KIAorICAg
IHZvaWQgc2hvd1dlYkluc3BlY3RvcigpOworICAgIHZvaWQgY2xvc2VXZWJJbnNwZWN0b3IoKTsK
KyAgICB2b2lkIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IobG9uZyBjYWxsSWQsIEpTU3RyaW5nUmVm
IHNjcmlwdCk7CisKIHByaXZhdGU6CiAgICAgYm9vbCBtX2R1bXBBc1BERjsKICAgICBib29sIG1f
ZHVtcEFzVGV4dDsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9M
YXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9n
dGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCmluZGV4IGUxNDJmN2MuLjBiNGEzOGYgMTAw
NjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJv
bGxlckd0ay5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRl
c3RDb250cm9sbGVyR3RrLmNwcApAQCAtNDcxLDMgKzQ3MSwxOCBAQCB2b2lkIExheW91dFRlc3RD
b250cm9sbGVyOjphZGRVc2VyU3R5bGVTaGVldChKU1N0cmluZ1JlZiBzb3VyY2UpCiB7CiAgICAg
cHJpbnRmKCJMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWRkVXNlclN0eWxlU2hlZXQgbm90IGltcGxl
bWVudGVkLlxuIik7CiB9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNob3dXZWJJbnNw
ZWN0b3IoKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KK30KKwordm9pZCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6Y2xvc2VXZWJJbnNwZWN0b3IoKQoreworICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnQgdGhpcy4KK30KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZXZhbHVhdGVJ
bldlYkluc3BlY3Rvcihsb25nIGNhbGxJZCwgSlNTdHJpbmdSZWYgc2NyaXB0KQoreworICAgIC8v
IEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KK30KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbSBiL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQppbmRleCA2M2I3M2I1
Li42MjNhNzcwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5
b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCkBAIC01MSw3ICs1MSw3IEBACiAjaW1wb3J0
IDxXZWJLaXQvV2ViSFRNTFZpZXdQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViSGlzdG9y
eS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkhpc3RvcnlQcml2YXRlLmg+Ci0jaW1wb3J0IDxXZWJL
aXQvV2ViSW5zcGVjdG9yLmg+CisjaW1wb3J0IDxXZWJLaXQvV2ViSW5zcGVjdG9yUHJpdmF0ZS5o
PgogI2ltcG9ydCA8V2ViS2l0L1dlYkdlb2xvY2F0aW9uTW9ja1ByaXZhdGUuaD4KICNpbXBvcnQg
PFdlYktpdC9XZWJOU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYlByZWZlcmVuY2Vz
Lmg+CkBAIC00OTIsMyArNDkyLDE5IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZFVz
ZXJTdHlsZVNoZWV0KEpTU3RyaW5nUmVmIHNvdXJjZSkKICAgICBbV2ViVmlldyBfYWRkVXNlclN0
eWxlU2hlZXRUb0dyb3VwOkAib3JnLndlYmtpdC5EdW1wUmVuZGVyVHJlZSIgc291cmNlOnNvdXJj
ZU5TIHVybDpuaWwgd29ybGRJRDoxIHBhdHRlcm5zOm5pbF07CiB9CiAKK3ZvaWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnNob3dXZWJJbnNwZWN0b3IoKQoreworICAgIFtbW21haW5GcmFtZSB3ZWJW
aWV3XSBpbnNwZWN0b3JdIHNob3c6bmlsXTsKK30KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6Y2xvc2VXZWJJbnNwZWN0b3IoKQoreworICAgIFtbW21haW5GcmFtZSB3ZWJWaWV3XSBpbnNw
ZWN0b3JdIGNsb3NlOm5pbF07Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmV2YWx1
YXRlSW5XZWJJbnNwZWN0b3IobG9uZyBjYWxsSWQsIEpTU3RyaW5nUmVmIHNjcmlwdCkKK3sKKyAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHNjcmlwdENGKEFkb3B0Q0YsIEpTU3RyaW5nQ29weUNG
U3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHNjcmlwdCkpOworICAgIE5TU3RyaW5nICpzY3Jp
cHROUyA9IChOU1N0cmluZyAqKXNjcmlwdENGLmdldCgpOworICAgIFtbW21haW5GcmFtZSB3ZWJW
aWV3XSBpbnNwZWN0b3JdIGV2YWx1YXRlSW5Gcm9udGVuZDpuaWwgY2FsbElkOmNhbGxJZCBzY3Jp
cHQ6c2NyaXB0TlNdOworfQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
d2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKaW5kZXggNDU4ZDdjMi4uZjI5Mzhk
NiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RD
b250cm9sbGVyV2luLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5
b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCkBAIC04NjksMyArODY5LDMwIEBAIHZvaWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OmFkZFVzZXJTdHlsZVNoZWV0KEpTU3RyaW5nUmVmIHNvdXJjZSkKIAog
ICAgIHdlYlZpZXctPmFkZFVzZXJTdHlsZVNoZWV0VG9Hcm91cChfYnN0cl90KEwib3JnLndlYmtp
dC5EdW1wUmVuZGVyVHJlZSIpLkdldEJTVFIoKSwgMSwgYnN0clQoc291cmNlKS5HZXRCU1RSKCks
IDAsIDAsIDApOwogfQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzaG93V2ViSW5zcGVj
dG9yKCkKK3sKKyAgICBDT01QdHI8SVdlYlZpZXdQcml2YXRlPiB3ZWJWaWV3OworICAgIGlmIChG
QUlMRUQoV2ViS2l0Q3JlYXRlSW5zdGFuY2UoX191dWlkb2YoV2ViVmlldyksIDAsIF9fdXVpZG9m
KHdlYlZpZXcpLCByZWludGVycHJldF9jYXN0PHZvaWQqKj4oJndlYlZpZXcpKSkpCisgICAgICAg
IHJldHVybjsKKworICAgIHdlYlZpZXctPmluc3BlY3Rvci0+c2hvdygpOworfQorCit2b2lkIExh
eW91dFRlc3RDb250cm9sbGVyOjpjbG9zZVdlYkluc3BlY3RvcigpCit7CisgICAgQ09NUHRyPElX
ZWJWaWV3UHJpdmF0ZT4gd2ViVmlldzsKKyAgICBpZiAoRkFJTEVEKFdlYktpdENyZWF0ZUluc3Rh
bmNlKF9fdXVpZG9mKFdlYlZpZXcpLCAwLCBfX3V1aWRvZih3ZWJWaWV3KSwgcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKio+KCZ3ZWJWaWV3KSkpKQorICAgICAgICByZXR1cm47CisKKyAgICB3ZWJWaWV3
LT5pbnNwZWN0b3ItPmNsb3NlKCk7Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmV2
YWx1YXRlSW5XZWJJbnNwZWN0b3IobG9uZyBjYWxsSWQsIEpTU3RyaW5nUmVmIHNjcmlwdCkKK3sK
KyAgICBDT01QdHI8SVdlYlZpZXdQcml2YXRlPiB3ZWJWaWV3OworICAgIGlmIChGQUlMRUQoV2Vi
S2l0Q3JlYXRlSW5zdGFuY2UoX191dWlkb2YoV2ViVmlldyksIDAsIF9fdXVpZG9mKHdlYlZpZXcp
LCByZWludGVycHJldF9jYXN0PHZvaWQqKj4oJndlYlZpZXcpKSkpCisgICAgICAgIHJldHVybjsK
KworICAgIHdlYlZpZXctPmluc3BlY3Rvci0+ZXZhbHVhdGVJbkZyb250ZW5kKGNhbGxJZCwgYnN0
clQoc2NyaXB0KS5HZXRCU1RSKCkpOworfQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAgYi9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAppbmRleCBkMGY2MmIwLi5i
ZmUxZDk5IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRU
ZXN0Q29udHJvbGxlcld4LmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93eC9M
YXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcApAQCAtMjk4LDMgKzI5OCwxOCBAQCB2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjphZGRVc2VyU3R5bGVTaGVldChKU1N0cmluZ1JlZiBzb3VyY2UpCiB7
CiAgICAgcHJpbnRmKCJMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWRkVXNlclN0eWxlU2hlZXQgbm90
IGltcGxlbWVudGVkLlxuIik7CiB9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNob3dX
ZWJJbnNwZWN0b3IoKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KK30KKwordm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xvc2VXZWJJbnNwZWN0b3IoKQoreworICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnQgdGhpcy4KK30KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZXZh
bHVhdGVJbldlYkluc3BlY3Rvcihsb25nIGNhbGxJZCwgSlNTdHJpbmdSZWYgc2NyaXB0KQorewor
ICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KK30K
</data>

          </attachment>
      

    </bug>

</bugzilla>