<?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>16833</bug_id>
          
          <creation_ts>2008-01-10 20:00:06 -0800</creation_ts>
          <short_desc>Acid3 expects createElementNS to throw exception for localname = &quot;:div&quot; (affects Acid3 test 23)</short_desc>
          <delta_ts>2019-02-06 09:04:01 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>16693</blocked>
    
    <blocked>17064</blocked>
    
    <blocked>76143</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          <cc>ap</cc>
    
    <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>ian</cc>
    
    <cc>jwalden+bwo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>66865</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-01-10 20:00:06 -0800</bug_when>
    <thetext>Acid3 expects createElementNS to throw exception for localname = &quot;:div&quot;

We fail to throw exception 14 in the &quot;:div&quot; case.

    function () {
      // test 23: createElementNS() with invalid tag names
      var test = function (name, ns, code) {
        var result;
        try {
          var div = document.createElementNS(ns, name);
        } catch (e) {
          result = e;
        }
        return result &amp;&amp; result.code == code;
      }
      assert(test(&apos;&lt;div&gt;&apos;, null, 5), &quot;no, or wrong, exception for: &lt;div&gt;&quot;);
      assert(test(&apos;0div&apos;, null, 5), &quot;no, or wrong, exception for: 0div&quot;);
      assert(test(&apos;di v&apos;, null, 5), &quot;no, or wrong, exception for: di v&quot;);
      assert(test(&apos;di&lt;v&apos;, null, 5), &quot;no, or wrong, exception for: di&lt;v&quot;);
      assert(test(&apos;-div&apos;, null, 5), &quot;no, or wrong, exception for: -div&quot;);
      assert(test(&apos;.div&apos;, null, 5), &quot;no, or wrong, exception for: .div&quot;);
      assert(test(&apos;&lt;div&gt;&apos;, &quot;http://example.com/&quot;, 5), &quot;no, or wrong, exception for: &lt;div&gt;&quot;);
      assert(test(&apos;0div&apos;, &quot;http://example.com/&quot;, 5), &quot;no, or wrong, exception for: 0div&quot;);
      assert(test(&apos;di&lt;v&apos;, &quot;http://example.com/&quot;, 5), &quot;no, or wrong, exception for: di&lt;v&quot;);
      assert(test(&apos;-div&apos;, &quot;http://example.com/&quot;, 5), &quot;no, or wrong, exception for: -div&quot;);
      assert(test(&apos;.div&apos;, &quot;http://example.com/&quot;, 5), &quot;no, or wrong, exception for: .div&quot;);
      assert(test(&apos;:div&apos;, null, 14), &quot;no, or wrong, exception for: :div&quot;);
      assert(test(&apos;:div&apos;, &quot;http://example.com/&quot;, 14), &quot;no, or wrong, exception for: :div&quot;);
      assert(test(&apos;d:iv&apos;, null, 14), &quot;no, or wrong, exception for: d:iv&quot;);
      assert(test(&apos;xml:test&apos;, &quot;http://example.com/&quot;, 14), &quot;no, or wrong, exception for: xml:test&quot;);
      assert(test(&apos;xmlns:test&apos;, &quot;http://example.com/&quot;, 14), &quot;no, or wrong, exception for: xmlns:test&quot;);
      assert(test(&apos;x:test&apos;, &quot;http://www.w3.org/2000/xmlns/&quot;, 14), &quot;no, or wrong, exception for: x:test&quot;);
      document.createElementNS(&apos;xmlns:test&apos;, &quot;http://www.w3.org/2000/xmlns/&quot;);
      return 2;
    },</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>67071</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-01-12 15:14:26 -0800</bug_when>
    <thetext>Ok, a few things were wrong with his test.  I&apos;ve fixed them and sent him a diff.  I&apos;ve written some additional tests for us, and have prepared a patch, which I will attach shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>67077</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-01-12 17:32:35 -0800</bug_when>
    <thetext>About to attach patches.  They don&apos;t fix the test.  But they do make us agree with Moz more or less.  I still need to check IE to make sure all 3 of us agree.  Hixie&apos;s test had several problems which I&apos;m still working on communicating to him.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>67078</commentid>
    <comment_count>3</comment_count>
      <attachid>18413</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-01-12 17:33:03 -0800</bug_when>
    <thetext>Created attachment 18413
First pass at throwing additional exceptions

 WebCore/dom/Document.cpp |   42 ++++++++++++++++++++++++++++++------------
 1 files changed, 30 insertions(+), 12 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>67079</commentid>
    <comment_count>4</comment_count>
      <attachid>18414</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-01-12 17:33:05 -0800</bug_when>
    <thetext>Created attachment 18414
A more complete fix

 WebCore/dom/Document.cpp |   63 +++++++++++++++++++++++++++++++++++-----------
 WebCore/dom/Document.idl |    4 +-
 2 files changed, 50 insertions(+), 17 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>67080</commentid>
    <comment_count>5</comment_count>
      <attachid>18415</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-01-12 17:33:07 -0800</bug_when>
    <thetext>Created attachment 18415
Final fixes and adding test cases

 .../documentsetstricterrorchecking02-expected.txt  |    3 +-
 .../createAttributeNS-namespace-err-expected.txt   |   38 ++++++++
 .../Document/createAttributeNS-namespace-err.html  |   13 +++
 .../createElementNS-namespace-err-expected.txt     |   37 ++++++++
 .../Document/createElementNS-namespace-err.html    |   13 +++
 .../fast/dom/Document/resources/TEMPLATE.html      |   13 +++
 .../resources/createAttributeNS-namespace-err.js   |   89 ++++++++++++++++++++
 .../resources/createElementNS-namespace-err.js     |   88 +++++++++++++++++++
 WebCore/dom/Document.cpp                           |   42 ++++------
 9 files changed, 307 insertions(+), 29 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>67081</commentid>
    <comment_count>6</comment_count>
      <attachid>18416</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-01-12 17:55:06 -0800</bug_when>
    <thetext>Created attachment 18416
full patch, including test cases

This is a combined version of the previous 3 patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>67082</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-01-12 17:59:12 -0800</bug_when>
    <thetext>I didn&apos;t include a changelog in the patch, but here&apos;s the gist:

This patch fixes the interesting test cases in Acid3 test23.  This makes us agree with the W3C as well as Mozilla wrt throwing exceptions from create*NS.  This cannot be a compat issue with IE since IE does not support either of these methods.  Mozilla is also moving to match our/the spec&apos;s behavior.

Most interesting was &quot;:div&quot; which we didn&apos;t throw about due to not checking prefix.isEmpty(), there were also a few obscure cases from the spec, where DOM Core Level 2 requires that you disallow &quot;xmlns&quot; and &quot;xml&quot; as prefixes when not matched with their correct namespace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>67113</commentid>
    <comment_count>8</comment_count>
      <attachid>18416</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-01-13 09:04:15 -0800</bug_when>
    <thetext>Comment on attachment 18416
full patch, including test cases

Looks like great work!

 3 function quoteString(s) {

Please format JavaScript code so that function braces are on a new line, as in our C code.

 36     shouldThrowWithCode(&quot;document.createAttributeNS(&quot; + quoteString(namespace) + &quot;, &quot; + quoteString(name) + &quot;)&quot;, code);

Can you use the standard shouldThrow instead of writing your own?

 39 // We use numbers instead of names, because it&apos;s slightly easier to read

I think the names are clearer. I found the numbers confusing when looking at the test output. If you find the long qualified names and full exception strings too wordy maybe you could still write your own harness, but make it so only the short part of the names show up: &quot;NAMESPACE_ERR&quot;. That&apos;s definitely clearer than &quot;5&quot;.

 49 shouldBeEqualToString(&quot;document.createElementNS(null, undefined).toString()&quot;, &quot;[object Element]&quot;);

I normally just use shouldBe here and put two sets of quotes around the expected string. Is this style better?

 703     // FIXME: We define these more than once in WebCore, we could use an XMLNSNames.cpp someday

While this is true, I personally don&apos;t think it&apos;s helpful to have a FIXME for this.

Also, I don&apos;t think we want to add a file named XMLNSNames.cpp. I&apos;d suggest we add these XML namespace constants to XMLNames.h.

 704     static const AtomicString xmlnsURI = &quot;http://www.w3.org/2000/xmlns/&quot;;

I think it&apos;s confusing to have this named xmlnsURL and another one named xmlNamespaceURI meaning something different. The new one should probably be xmlnsNamespaceURI.

 701 static bool checkForNamespaceError(const QualifiedName&amp; qName)

A function that returns a bool and is named &quot;check&quot; confused me. I couldn&apos;t figure out whether true meant &quot;had an error&quot; or &quot;OK&quot;. It would be better to name this something like hasNamespaceError.

 710     if (qName.prefix() == emptyAtom) // createElementNS(null, &quot;:div&quot;)
 714     if (!qName.prefix().isEmpty() &amp;&amp; qName.namespaceURI().isNull()) // createElementNS(null, &quot;html:div&quot;)

One of these checks uses isEmpty() and the other uses emptyAtom. Why the difference?

 744     // FIXME: the element factories should be fixed to not ignore qName.prefix()

This comment is not clear enough. The comment should state what the factories should do with the prefix rather than just saying &quot;not ignore&quot;.

 746     // Then function can stop taking ExceptionCode&amp; as well.

What function? You mean setPrefix? Please name the function and also say why.

 757 PassRefPtr&lt;Element&gt; Document::createElementNS(const String&amp; _namespaceURI, const String&amp; qualifiedName, ExceptionCode&amp; ec)

Given the other changes you made, I&apos;m surprised you didn&apos;t take the spurious underscore off of _namespaceURI here.

 761         // qualifiedName.isEmpty() also hits this path (not NAMESPACE_ERR), see:
 762         // dom/html/level1/core/hc_documentinvalidcharacterexceptioncreateattribute1.html
 763         // and http://www.w3.org/Bugs/Public/show_bug.cgi?id=525

I don&apos;t think this is a helpful comment. It&apos;s a great code change! But we already have a test case, and I don&apos;t really think we need a pointer to that bug. If we do want that bug URL somewhere, I suggest putting it in the test case rather than putting it in two places in the code.

 3447     // Spec: DOM Level 2 Core:  createAttributeNS(null, &quot;xmlns&quot;) should throw
 3448     // http://www.w3.org/TR/DOM-Level-2-Core/core.html#ID-DocCrAttrN
 3449     if (qName.localName() == &quot;xmlns&quot; &amp;&amp; qName.namespaceURI() != &quot;http://www.w3.org/2000/xmlns/&quot;) {

You left an &quot;S&quot; off the URL here, so the URL didn&apos;t work. Please fix that.

I also don&apos;t think the example in the comment is clear enough since it&apos;s a specific case involving null and doesn&apos;t match the much broader test in the code, although the code does match the spec. It&apos;d probably be better to just omit the example.

The code you added is only for xmlns, but the section you site in the DOM Level 2 document also mentions a couple other rules that don&apos;t seem to be implemented here. The one for xml and the one about a prefix without a namespace. The test cases seem to cover these, but I don&apos;t see why it works. Shouldn&apos;t you use the whole hasNamespaceError function here?

Even though everything looks good, there are enough comments here that I&apos;ll say review-.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>67162</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-01-13 15:41:11 -0800</bug_when>
    <thetext>The FireFox dudes have created another test case:
http://web.mit.edu/jwalden/www/ce.html
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>67164</commentid>
    <comment_count>10</comment_count>
      <attachid>18427</attachid>
    <who name="Jeff Walden (remove +bwo to email)">jwalden+bwo</who>
    <bug_when>2008-01-13 16:19:50 -0800</bug_when>
    <thetext>Created attachment 18427
Gecko tests, some with explanations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>67169</commentid>
    <comment_count>11</comment_count>
      <attachid>18428</attachid>
    <who name="Jeff Walden (remove +bwo to email)">jwalden+bwo</who>
    <bug_when>2008-01-13 16:59:29 -0800</bug_when>
    <thetext>Created attachment 18428
Gecko tests, with bugs fixed

Sorry, I had a misunderstanding about colons in XML names -- this is better, especially since passing the previous would have meant failing acid3.  :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68541</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-01-29 00:18:29 -0800</bug_when>
    <thetext>I still have this patch in my tree.  I&apos;ll see if I can get this polished off an submitted this week.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69153</commentid>
    <comment_count>13</comment_count>
      <attachid>18866</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-02-01 18:39:37 -0800</bug_when>
    <thetext>Created attachment 18866
Address Darin&apos;s comments and update tests to match mozilla

 .../createAttributeNS-namespace-err-expected.txt   |   70 +++++---
 .../createElementNS-namespace-err-expected.txt     |   68 +++++---
 .../resources/createAttributeNS-namespace-err.js   |  190 ++++++++++++--------
 .../resources/createElementNS-namespace-err.js     |  188 ++++++++++++--------
 WebCore/dom/Document.cpp                           |   32 ++--
 5 files changed, 331 insertions(+), 217 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69154</commentid>
    <comment_count>14</comment_count>
      <attachid>18866</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-02-01 18:40:48 -0800</bug_when>
    <thetext>Comment on attachment 18866
Address Darin&apos;s comments and update tests to match mozilla

This includes darin&apos;s suggested fixes, as well as updated tests.  We don&apos;t pass all of the updated moz tests (and I haven&apos;t spent any serious effort to find out why).  I&apos;m not sure passing the moz tests is worth much effort however, given how obscure a section of the spec this is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69237</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-02-03 05:12:22 -0800</bug_when>
    <thetext>&quot;blocking&quot; bug 16693, since some of the functions added by this patch should be reused there.  I&apos;d like to land this (even though we &quot;fail&quot; some of moz&apos;s new tests -- we throw different exception numbers in a couple cases).  I can file a follow-up bug for those cases.  It would be hard to imagine any number of websites depending on such an obscure section of the DOM as &quot;which exception is thrown for this particular flavor of invalid qualified name&quot; -- hence my desire to get this landed and move on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69238</commentid>
    <comment_count>16</comment_count>
      <attachid>18882</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-02-03 05:13:54 -0800</bug_when>
    <thetext>Created attachment 18882
Squashed patch for final review

 .../documentsetstricterrorchecking02-expected.txt  |    3 +-
 .../createAttributeNS-namespace-err-expected.txt   |   52 ++++++++
 .../Document/createAttributeNS-namespace-err.html  |   13 ++
 .../createElementNS-namespace-err-expected.txt     |   51 ++++++++
 .../Document/createElementNS-namespace-err.html    |   13 ++
 .../fast/dom/Document/resources/TEMPLATE.html      |   13 ++
 .../resources/createAttributeNS-namespace-err.js   |  135 ++++++++++++++++++++
 .../resources/createElementNS-namespace-err.js     |  134 +++++++++++++++++++
 WebCore/dom/Document.cpp                           |   77 ++++++++---
 WebCore/dom/Document.idl                           |    4 +-
 10 files changed, 470 insertions(+), 25 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69267</commentid>
    <comment_count>17</comment_count>
      <attachid>18882</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-02-03 13:21:34 -0800</bug_when>
    <thetext>Comment on attachment 18882
Squashed patch for final review

+description(&quot;createAttirbuteNS tests adapted from createElementNS tests attached to webkit bug 16833&quot;);

Typo. Should be &quot;createAttributeNS&quot;.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69280</commentid>
    <comment_count>18</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-02-03 15:50:01 -0800</bug_when>
    <thetext>Fixed and landed in r29952.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69598</commentid>
    <comment_count>19</comment_count>
    <who name="Kevin McCullough">kmccullough</who>
    <bug_when>2008-02-06 12:28:28 -0800</bug_when>
    <thetext>Unfortunately this fix caused a regression in Yahoo! mail.  Passing Acid 3 is important but we need to not break a real-world high-priority site, so we are going to roll this change out.

1. Login to the Yahoo! mail beta.
2. Click the New button on the top left to make a new message.
3. Fill in the To field and Subject field.
4. From the Subject field hit Tab.  In previous revisions the focus and cursor would go to the Body.
5. Fill in the body and hit the Send button.

It will take a long time to send and then fail saying &quot;Oops! We are having a problem sending your message.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69601</commentid>
    <comment_count>20</comment_count>
    <who name="Jeff Walden (remove +bwo to email)">jwalden+bwo</who>
    <bug_when>2008-02-06 13:20:37 -0800</bug_when>
    <thetext>At a glance the problem is one of these three, assuming I didn&apos;t mess up line numbers or anything:

this.A.setAttribute(&quot;xmlns:xsi&quot;,yC.O+&quot;-instance&quot;);
this.A.setAttribute(&quot;xmlns:xsd&quot;,yC.O);
this.A.setAttribute(yC.L+&quot;encodingStyle&quot;,yC.q+&quot;/encoding/&quot;);
this.n.createElement(yC.L+&quot;Body&quot;);

yC looks a few lines up to be defined (with reformatting, natch) as:

  {
    q: &quot;http://schemas.xmlsoap.org/soap&quot;,
    O: &quot;http://www.w3.org/1999/XMLSchema&quot;,
    L: &quot;SOAP-ENV:&quot;,
    B: &quot;srcWindow&quot;,
    s: &quot;urn:yahoo:ymws&quot;,
    n: function(){},
    u: function(){}
  }

So I&apos;m guessing it&apos;s most likely the last one, although looking at the patch I don&apos;t quite know why.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69610</commentid>
    <comment_count>21</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-02-06 14:21:27 -0800</bug_when>
    <thetext>OK, this is a real regression.

The problem is this check:

    if (!qName.prefix().isEmpty() &amp;&amp; qName.namespaceURI().isNull()) // createElementNS(null, &quot;html:div&quot;)
        return true;

fails for document.createElement(&quot;foo:bar&quot;), because we send createElement down the createElementNS path (which is wrong).

So this patch is wrong (due to existing code being &quot;wrong&quot;).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69631</commentid>
    <comment_count>22</comment_count>
    <who name="Ian &apos;Hixie&apos; Hickson">ian</who>
    <bug_when>2008-02-06 17:40:08 -0800</bug_when>
    <thetext>Good lord what is Yahoo doing here. That&apos;s insane code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69633</commentid>
    <comment_count>23</comment_count>
      <attachid>18882</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-02-06 17:47:15 -0800</bug_when>
    <thetext>Comment on attachment 18882
Squashed patch for final review

Clearing review flag since this bug was reopened.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69754</commentid>
    <comment_count>24</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-02-08 01:08:15 -0800</bug_when>
    <thetext>I do not wish to hold the mutex on this bug, I&apos;m not working on it actively at the moment.

What remains to be done:
1.  create HTML and XHTML test cases for createElement (and test against other browsers to see what exceptions we should throw)
2.  make createElement stop calling createElementNS under the covers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70129</commentid>
    <comment_count>25</comment_count>
      <attachid>18882</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-02-10 13:35:21 -0800</bug_when>
    <thetext>Comment on attachment 18882
Squashed patch for final review

Marking this review- to make it clear that we need a new patch that doesn&apos;t break Yahoo. I didn&apos;t want to mark this obsolete since it&apos;s the latest and greatest we have so far.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70399</commentid>
    <comment_count>26</comment_count>
    <who name="Jeff Walden (remove +bwo to email)">jwalden+bwo</who>
    <bug_when>2008-02-12 06:22:48 -0800</bug_when>
    <thetext>I added a bunch of tests for createElement to complement the createElementNS ones:

http://mxr.mozilla.org/mozilla/source/dom/tests/mochitest/bugs/test_bug411103.html?raw=1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>73846</commentid>
    <comment_count>27</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-03-15 18:26:27 -0700</bug_when>
    <thetext>I merged in Jeff&apos;s additional test, but since none of those tests fails with the patch applied, clearly none exactly covers the problem that affected Yahoo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>73847</commentid>
    <comment_count>28</comment_count>
      <attachid>19785</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-03-15 18:28:02 -0700</bug_when>
    <thetext>Created attachment 19785
patch rebased with addition of more tests from Gecko tree</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>74691</commentid>
    <comment_count>29</comment_count>
      <attachid>19938</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-03-21 14:45:43 -0700</bug_when>
    <thetext>Created attachment 19938
Fix xml/xhtml handling of createElement and add tests

 .../documentsetstricterrorchecking02-expected.txt  |    3 +-
 .../createAttributeNS-namespace-err-expected.txt   |   52 ++++++
 .../Document/createAttributeNS-namespace-err.html  |   13 ++
 .../createElementNS-namespace-err-expected.txt     |  138 +++++++++++++++
 .../Document/createElementNS-namespace-err.html    |   13 ++
 .../fast/dom/Document/resources/TEMPLATE.html      |   13 ++
 .../resources/createAttributeNS-namespace-err.js   |  135 +++++++++++++++
 .../resources/createElementNS-namespace-err.js     |  180 ++++++++++++++++++++
 WebCore/dom/Document.cpp                           |   89 +++++++---
 WebCore/dom/Document.idl                           |    4 +-
 10 files changed, 609 insertions(+), 31 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>74697</commentid>
    <comment_count>30</comment_count>
      <attachid>19938</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-03-21 15:37:48 -0700</bug_when>
    <thetext>Comment on attachment 19938
Fix xml/xhtml handling of createElement and add tests

Oops, turns out there was an error in the test harness.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>74699</commentid>
    <comment_count>31</comment_count>
      <attachid>19940</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-03-21 15:38:21 -0700</bug_when>
    <thetext>Created attachment 19940
additional patch needed to fix the test and code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>74700</commentid>
    <comment_count>32</comment_count>
      <attachid>19941</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-03-21 15:39:33 -0700</bug_when>
    <thetext>Created attachment 19941
Fix xml/xhtml handling of createElement and add tests

xml/xhtml createElement fixed, now with test harness fixed too
---
 .../documentsetstricterrorchecking02-expected.txt  |    3 +-
 .../createAttributeNS-namespace-err-expected.txt   |   52 ++++++
 .../Document/createAttributeNS-namespace-err.html  |   13 ++
 .../createElementNS-namespace-err-expected.txt     |  138 +++++++++++++++
 .../Document/createElementNS-namespace-err.html    |   13 ++
 .../fast/dom/Document/resources/TEMPLATE.html      |   13 ++
 .../resources/createAttributeNS-namespace-err.js   |  135 +++++++++++++++
 .../resources/createElementNS-namespace-err.js     |  180 ++++++++++++++++++++
 WebCore/dom/Document.cpp                           |   89 +++++++---
 WebCore/dom/Document.idl                           |    6 +-
 10 files changed, 610 insertions(+), 32 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>74747</commentid>
    <comment_count>33</comment_count>
      <attachid>19941</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2008-03-21 22:20:02 -0700</bug_when>
    <thetext>Comment on attachment 19941
Fix xml/xhtml handling of createElement and add tests

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>74791</commentid>
    <comment_count>34</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-03-22 02:51:25 -0700</bug_when>
    <thetext>r31230</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503083</commentid>
    <comment_count>35</comment_count>
    <who name="Lucas Forschler">lforschler</who>
    <bug_when>2019-02-06 09:04:01 -0800</bug_when>
    <thetext>Mass moving XML DOM bugs to the &quot;DOM&quot; Component.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18413</attachid>
            <date>2008-01-12 17:33:03 -0800</date>
            <delta_ts>2008-02-10 13:33:43 -0800</delta_ts>
            <desc>First pass at throwing additional exceptions</desc>
            <filename>First-pass-at-throwing-additional-exceptions.patch</filename>
            <type>text/plain</type>
            <size>3151</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">MDc0OTRiMjU2N2FlYzQwODIxOTEyNTYyMzc5YTMxYzE0YWI0YTE5YwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGNi
Mjg0MWYuLjQ2OTY5ZjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysg
Yi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTEwMCw2ICsxMDAsNyBAQAogI2luY2x1ZGUg
IlVJRXZlbnQuaCIKICNpbmNsdWRlICJXaGVlbEV2ZW50LmgiCiAjaW5jbHVkZSAiWE1MSHR0cFJl
cXVlc3QuaCIKKyNpbmNsdWRlICJYTUxOYW1lcy5oIgogI2luY2x1ZGUgIlhNTFRva2VuaXplci5o
IgogI2luY2x1ZGUgImtqc19iaW5kaW5nLmgiCiAjaW5jbHVkZSAia2pzX3Byb3h5LmgiCkBAIC02
OTcsOSArNjk4LDMxIEBAIFBhc3NSZWZQdHI8Tm9kZT4gRG9jdW1lbnQ6OmFkb3B0Tm9kZShQYXNz
UmVmUHRyPE5vZGU+IHNvdXJjZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgcmV0dXJuIHNvdXJj
ZTsKIH0KIAorc3RhdGljIGJvb2wgY2hlY2tGb3JOYW1lc3BhY2VFcnJvcihjb25zdCBRdWFsaWZp
ZWROYW1lJiBxTmFtZSkKK3sKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIHhtbG5zVVJJ
ID0gImh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIjsKKyAgICBzdGF0aWMgY29uc3QgUXVh
bGlmaWVkTmFtZSB4bWxuc0F0dHIobnVsbEF0b20sICJ4bWxucyIsIHhtbG5zVVJJKTsKKyAgICAv
LyBQZXIgRE9NIENvcmUyLCBjcmVhdGVFbGVtZW50TlMKKyAgICAvLyBodHRwOi8vd3d3LnczLm9y
Zy9UUi9ET00tTGV2ZWwtMi1Db3JlL2NvcmUuaHRtbCNJRC1Eb2NDckVsTlMKKyAgICBpZiAocU5h
bWUucHJlZml4KCkgPT0gIiIpIC8vIGUuZy4gY3JlYXRlRWxlbWVudE5TKCI6ZGl2IiwgbnVsbCkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKCFxTmFtZS5wcmVmaXgoKS5pc0VtcHR5KCkg
JiYgcU5hbWUubmFtZXNwYWNlVVJJKCkuaXNOdWxsKCkpIC8vIGUuZy4gY3JlYXRlRWxlbWVudE5T
KCJodG1sOmRpdiIsIG51bGwpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChxTmFtZS5w
cmVmaXgoKSA9PSAieG1sIiAmJiBxTmFtZS5uYW1lc3BhY2VVUkkoKSAhPSBYTUxOYW1lczo6eG1s
TmFtZXNwYWNlVVJJKSAvLyBlLmcuIGNyZWF0ZUVsZW1lbnROUygieG1sOmxhbmciLCBudWxsKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAocU5hbWUucHJlZml4KCkgPT0geG1sbnNBdHRy
LnByZWZpeCgpICYmIHFOYW1lLmxvY2FsTmFtZSgpID09IHhtbG5zQXR0ci5sb2NhbE5hbWUoKSAm
JiBxTmFtZS5uYW1lc3BhY2VVUkkoKSAhPSB4bWxuc0F0dHIubmFtZXNwYWNlVVJJKCkpIC8vIGUu
Zy4gY3JlYXRlQXR0cmlidXRlTlMoInhtbG5zIiwgbnVsbCkKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCiAvLyBGSVhNRTogVGhpcyBzaG91bGQgcmVhbGx5IGJl
IGluIGEgcG9zc2libGUgRWxlbWVudEZhY3RvcnkgY2xhc3MKIFBhc3NSZWZQdHI8RWxlbWVudD4g
RG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgcU5hbWUsIGJvb2wg
Y3JlYXRlZEJ5UGFyc2VyLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBpZiAoY2hlY2tGb3JO
YW1lc3BhY2VFcnJvcihxTmFtZSkpIHsKKyAgICAgICAgZWMgPSBOQU1FU1BBQ0VfRVJSOworICAg
ICAgICByZXR1cm4gMDsKKyAgICB9CisKICAgICBSZWZQdHI8RWxlbWVudD4gZTsKIAogICAgIC8v
IEZJWE1FOiBVc2UgcmVnaXN0ZXJlZCBuYW1lc3BhY2VzIGFuZCBsb29rIHVwIGluIGEgaGFzaCB0
byBmaW5kIHRoZSByaWdodCBmYWN0b3J5LgpAQCAtMzM5MCwyOCArMzQxMywyMyBAQCBEb2N1bWVu
dCAqRG9jdW1lbnQ6OnRvcERvY3VtZW50KCkgY29uc3QKICAgICByZXR1cm4gZG9jOwogfQogCi1Q
YXNzUmVmUHRyPEF0dHI+IERvY3VtZW50OjpjcmVhdGVBdHRyaWJ1dGVOUyhjb25zdCBTdHJpbmcg
Jm5hbWVzcGFjZVVSSSwgY29uc3QgU3RyaW5nICZxdWFsaWZpZWROYW1lLCBFeGNlcHRpb25Db2Rl
JiBlYykKK1Bhc3NSZWZQdHI8QXR0cj4gRG9jdW1lbnQ6OmNyZWF0ZUF0dHJpYnV0ZU5TKGNvbnN0
IFN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcmIHF1YWxpZmllZE5hbWUsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewogICAgIGlmIChxdWFsaWZpZWROYW1lLmlzTnVsbCgpKSB7CiAgICAg
ICAgIGVjID0gTkFNRVNQQUNFX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAg
U3RyaW5nIGxvY2FsTmFtZSA9IHF1YWxpZmllZE5hbWU7Ci0gICAgU3RyaW5nIHByZWZpeDsKLSAg
ICBpbnQgY29sb25wb3M7Ci0gICAgaWYgKChjb2xvbnBvcyA9IHF1YWxpZmllZE5hbWUuZmluZCgn
OicpKSA+PSAwKSB7Ci0gICAgICAgIHByZWZpeCA9IHF1YWxpZmllZE5hbWUuY29weSgpOwotICAg
ICAgICBsb2NhbE5hbWUgPSBxdWFsaWZpZWROYW1lLmNvcHkoKTsKLSAgICAgICAgcHJlZml4LnRy
dW5jYXRlKGNvbG9ucG9zKTsKLSAgICAgICAgbG9jYWxOYW1lLnJlbW92ZSgwLCBjb2xvbnBvcysx
KTsKKyAgICBpZiAoIXBhcnNlUXVhbGlmaWVkTmFtZShxdWFsaWZpZWROYW1lLCBwcmVmaXgsIGxv
Y2FsTmFtZSkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0NIQVJBQ1RFUl9FUlI7CisgICAgICAg
IHJldHVybiAwOwogICAgIH0KIAotICAgIGlmICghaXNWYWxpZE5hbWUobG9jYWxOYW1lKSkgewot
ICAgICAgICBlYyA9IElOVkFMSURfQ0hBUkFDVEVSX0VSUjsKKyAgICBpZiAoY2hlY2tGb3JOYW1l
c3BhY2VFcnJvcihxTmFtZSkpIHsKKyAgICAgICAgZWMgPSBOQU1FU1BBQ0VfRVJSOwogICAgICAg
ICByZXR1cm4gMDsKICAgICB9Ci0gICAgCisKICAgICAvLyBGSVhNRTogQXNzdW1lIHRoaXMgaXMg
YSBtYXBwZWQgYXR0cmlidXRlLCBzaW5jZSBjcmVhdGVBdHRyaWJ1dGUgaXNuJ3QgbmFtZXNwYWNl
LWF3YXJlLiAgVGhlcmUncyBubyBoYXJtIHRvIFhNTAogICAgIC8vIGRvY3VtZW50cyBpZiB3ZSdy
ZSB3cm9uZy4KICAgICByZXR1cm4gbmV3IEF0dHIoMCwgdGhpcywgbmV3IE1hcHBlZEF0dHJpYnV0
ZShRdWFsaWZpZWROYW1lKHByZWZpeCwgbG9jYWxOYW1lLCBuYW1lc3BhY2VVUkkpLCBTdHJpbmdJ
bXBsOjplbXB0eSgpKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18414</attachid>
            <date>2008-01-12 17:33:05 -0800</date>
            <delta_ts>2008-02-10 13:33:53 -0800</delta_ts>
            <desc>A more complete fix</desc>
            <filename>A-more-complete-fix.patch</filename>
            <type>text/plain</type>
            <size>7631</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">NzZhYzM3Yzg1NTkxZGUzNzY4Y2Q2YWRjNDYyYzYwYjMwY2ZiZDY3NQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDQ2
OTY5ZjYuLjVlMTZkZjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysg
Yi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTUwNyw3ICs1MDcsNyBAQCBQYXNzUmVmUHRy
PEVsZW1lbnQ+IERvY3VtZW50OjpjcmVhdGVFbGVtZW50KGNvbnN0IFN0cmluZyAmbmFtZSwgRXhj
ZXB0aW9uQ29kZSYgZQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KIAotICAgICAg
ICByZXR1cm4gSFRNTEVsZW1lbnRGYWN0b3J5OjpjcmVhdGVIVE1MRWxlbWVudChBdG9taWNTdHJp
bmcobmFtZSksIHRoaXMsIDAsIGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIEhUTUxFbGVtZW50RmFj
dG9yeTo6Y3JlYXRlSFRNTEVsZW1lbnQobmFtZSwgdGhpcywgMCwgZmFsc2UpOwogICAgIH0gZWxz
ZQogICAgICAgICByZXR1cm4gY3JlYXRlRWxlbWVudE5TKG51bGxBdG9tLCBuYW1lLCBlYyk7CiB9
CkBAIC03MDAsMTggKzcwMCwzMiBAQCBQYXNzUmVmUHRyPE5vZGU+IERvY3VtZW50OjphZG9wdE5v
ZGUoUGFzc1JlZlB0cjxOb2RlPiBzb3VyY2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQogCiBzdGF0aWMg
Ym9vbCBjaGVja0Zvck5hbWVzcGFjZUVycm9yKGNvbnN0IFF1YWxpZmllZE5hbWUmIHFOYW1lKQog
eworICAgIC8vIEZJWE1FOiBXZSBkZWZpbmUgdGhlc2UgbW9yZSB0aGFuIG9uY2UgaW4gV2ViQ29y
ZSwgd2UgY291bGQgdXNlIGFuIFhNTE5TTmFtZXMuY3BwIHNvbWVkYXkKICAgICBzdGF0aWMgY29u
c3QgQXRvbWljU3RyaW5nIHhtbG5zVVJJID0gImh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMv
IjsKLSAgICBzdGF0aWMgY29uc3QgUXVhbGlmaWVkTmFtZSB4bWxuc0F0dHIobnVsbEF0b20sICJ4
bWxucyIsIHhtbG5zVVJJKTsKLSAgICAvLyBQZXIgRE9NIENvcmUyLCBjcmVhdGVFbGVtZW50TlMK
KyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIHhtbG5zID0gInhtbG5zIjsKKyAgICBzdGF0
aWMgY29uc3QgQXRvbWljU3RyaW5nIHhtbCA9ICJ4bWwiOworCisgICAgLy8gVGhlc2UgY2hlY2tz
IGFyZSBmcm9tIERPTSBDb3JlIExldmVsIDIsIGNyZWF0ZUVsZW1lbnROUwogICAgIC8vIGh0dHA6
Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0yLUNvcmUvY29yZS5odG1sI0lELURvY0NyRWxOUwot
ICAgIGlmIChxTmFtZS5wcmVmaXgoKSA9PSAiIikgLy8gZS5nLiBjcmVhdGVFbGVtZW50TlMoIjpk
aXYiLCBudWxsKQorICAgIGlmIChxTmFtZS5wcmVmaXgoKSA9PSBlbXB0eUF0b20pIC8vIGNyZWF0
ZUVsZW1lbnROUyhudWxsLCAiOmRpdiIpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChx
TmFtZS5sb2NhbE5hbWUoKS5pc0VtcHR5KCkpIC8vIGNyZWF0ZUVsZW1lbnROUyhudWxsLCAiIiks
IGNyZWF0ZUVsZW1lbnROUyhudWxsLCBudWxsKSwgY3JlYXRlRWxlbWVudE5TKCkKICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgaWYgKCFxTmFtZS5wcmVmaXgoKS5pc0VtcHR5KCkgJiYgcU5hbWUu
bmFtZXNwYWNlVVJJKCkuaXNOdWxsKCkpIC8vIGUuZy4gY3JlYXRlRWxlbWVudE5TKCJodG1sOmRp
diIsIG51bGwpCisgICAgaWYgKCFxTmFtZS5wcmVmaXgoKS5pc0VtcHR5KCkgJiYgcU5hbWUubmFt
ZXNwYWNlVVJJKCkuaXNOdWxsKCkpIC8vIGNyZWF0ZUVsZW1lbnROUyhudWxsLCAiaHRtbDpkaXYi
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAocU5hbWUucHJlZml4KCkgPT0gInhtbCIg
JiYgcU5hbWUubmFtZXNwYWNlVVJJKCkgIT0gWE1MTmFtZXM6OnhtbE5hbWVzcGFjZVVSSSkgLy8g
ZS5nLiBjcmVhdGVFbGVtZW50TlMoInhtbDpsYW5nIiwgbnVsbCkKKyAgICBpZiAocU5hbWUucHJl
Zml4KCkgPT0geG1sICYmIHFOYW1lLm5hbWVzcGFjZVVSSSgpICE9IFhNTE5hbWVzOjp4bWxOYW1l
c3BhY2VVUkkpIC8vIGNyZWF0ZUVsZW1lbnROUyhudWxsLCAieG1sOmxhbmciKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICBpZiAocU5hbWUucHJlZml4KCkgPT0geG1sbnNBdHRyLnByZWZpeCgp
ICYmIHFOYW1lLmxvY2FsTmFtZSgpID09IHhtbG5zQXR0ci5sb2NhbE5hbWUoKSAmJiBxTmFtZS5u
YW1lc3BhY2VVUkkoKSAhPSB4bWxuc0F0dHIubmFtZXNwYWNlVVJJKCkpIC8vIGUuZy4gY3JlYXRl
QXR0cmlidXRlTlMoInhtbG5zIiwgbnVsbCkKKworICAgIC8vIE5vdCByZXF1aXJlZCBieSBET00g
Q29yZSBMZXZlbCAyLCBidXQgTW96aWxsYSBkb2VzIHNvbWUgbWluaW1hbCBuYW1lc3BhY2UgdmFs
aWRhdGlvbiBhbmQgdGhyb3dzIGZvciB0aGlzOgorICAgIC8vIGNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8iLCAiZm9vOmJhciIpLCBjcmVhdGVFbGVtZW50TlMo
bnVsbCwgInhtbG5zOmJhciIpCisgICAgaWYgKChxTmFtZS5wcmVmaXgoKSA9PSB4bWxucyAmJiBx
TmFtZS5uYW1lc3BhY2VVUkkoKSAhPSB4bWxuc1VSSSkgfHwgKHFOYW1lLnByZWZpeCgpICE9IHht
bG5zICYmIHFOYW1lLm5hbWVzcGFjZVVSSSgpID09IHhtbG5zVVJJKSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICAvLyBNb3ppbGxhIGRvZXNuJ3QgaGF2ZSB0aGlzIGNoZWNrLCBidXQgaXQg
bWFrZXMgc2Vuc2UgZ2l2ZW4gdGhlaXIgInhtbG5zOiIgdmFsaWRhdGlvbjoKKyAgICAvLyBjcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIsICJmb286
YmFyIikKKyAgICBpZiAocU5hbWUucHJlZml4KCkgIT0geG1sICYmIHFOYW1lLm5hbWVzcGFjZVVS
SSgpID09IFhNTE5hbWVzOjp4bWxOYW1lc3BhY2VVUkkpCiAgICAgICAgIHJldHVybiB0cnVlOwor
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC03MzYsMTggKzc1MCwyNyBAQCBQYXNzUmVmUHRy
PEVsZW1lbnQ+IERvY3VtZW50OjpjcmVhdGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHFO
YW1lLCBib29sIGNyZQogICAgIGlmICghZSkKICAgICAgICAgZSA9IG5ldyBFbGVtZW50KHFOYW1l
LCBkb2N1bWVudCgpKTsKICAgICAKKyAgICAvLyBGSVhNRTogdGhlIGVsZW1lbnQgZmFjdG9yaWVz
IHNob3VsZCBiZSBmaXhlZCB0byBub3QgaWdub3JlIHFOYW1lLnByZWZpeCgpCisgICAgLy8gdGhl
biB0aGlzIGNvZGUgY2FuIGJlY29tZSBBU1NFUlQocU5hbWUgPT0gZS5xbmFtZSgpKTsKICAgICBp
ZiAoZSAmJiAhcU5hbWUucHJlZml4KCkuaXNOdWxsKCkpIHsKICAgICAgICAgZWMgPSAwOwogICAg
ICAgICBlLT5zZXRQcmVmaXgocU5hbWUucHJlZml4KCksIGVjKTsKICAgICAgICAgaWYgKGVjKQog
ICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgfSAgICAKKyAgICB9CiAgICAgCiAgICAgcmV0dXJu
IGUucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPEVsZW1lbnQ+IERvY3VtZW50OjpjcmVhdGVF
bGVtZW50TlMoY29uc3QgU3RyaW5nICZfbmFtZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcgJnF1YWxp
ZmllZE5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxFbGVtZW50PiBEb2N1bWVu
dDo6Y3JlYXRlRWxlbWVudE5TKGNvbnN0IFN0cmluZyYgX25hbWVzcGFjZVVSSSwgY29uc3QgU3Ry
aW5nJiBxdWFsaWZpZWROYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICAvLyBTcGVjOiBE
T00gTGV2ZWwgMiwgSU5WQUxJRF9DSEFSQUNURVJfRVJSIGlzIG9ubHkgZm9yIHdoZW4gdGhlIHF1
YWxpZmllZCBuYW1lIGNvbnRhaW5zIGFuIGludmFsaWQgY2hhcnMKKyAgICAvLyBOQU1FU1BBQ0Vf
RVJSIGlzIGZvciB3aGVuIHRoZSBuYW1lIGlzICJtYWxmb3JtZWQiIHdoaWNoIGluY2x1ZGVzIGVt
cHR5CisgICAgaWYgKHF1YWxpZmllZE5hbWUuaXNFbXB0eSgpKSB7CisgICAgICAgIGVjID0gTkFN
RVNQQUNFX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCiAgICAgU3RyaW5nIHByZWZp
eCwgbG9jYWxOYW1lOwogICAgIGlmICghcGFyc2VRdWFsaWZpZWROYW1lKHF1YWxpZmllZE5hbWUs
IHByZWZpeCwgbG9jYWxOYW1lKSkgewogICAgICAgICBlYyA9IElOVkFMSURfQ0hBUkFDVEVSX0VS
UjsKQEAgLTc1NSwxMiArNzc4LDExIEBAIFBhc3NSZWZQdHI8RWxlbWVudD4gRG9jdW1lbnQ6OmNy
ZWF0ZUVsZW1lbnROUyhjb25zdCBTdHJpbmcgJl9uYW1lc3BhY2VVUkksIGNvbnN0CiAgICAgfQog
CiAgICAgUmVmUHRyPEVsZW1lbnQ+IGU7Ci0gICAgUXVhbGlmaWVkTmFtZSBxTmFtZSA9IFF1YWxp
ZmllZE5hbWUoQXRvbWljU3RyaW5nKHByZWZpeCksIEF0b21pY1N0cmluZyhsb2NhbE5hbWUpLCBB
dG9taWNTdHJpbmcoX25hbWVzcGFjZVVSSSkpOwotICAgIAorICAgIFF1YWxpZmllZE5hbWUgcU5h
bWUocHJlZml4LCBsb2NhbE5hbWUsIF9uYW1lc3BhY2VVUkkpOwogICAgIHJldHVybiBjcmVhdGVF
bGVtZW50KHFOYW1lLCBmYWxzZSwgZWMpOwogfQogCi1FbGVtZW50ICpEb2N1bWVudDo6Z2V0RWxl
bWVudEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBlbGVtZW50SWQpIGNvbnN0CitFbGVtZW50KiBE
b2N1bWVudDo6Z2V0RWxlbWVudEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBlbGVtZW50SWQpIGNv
bnN0CiB7CiAgICAgaWYgKGVsZW1lbnRJZC5sZW5ndGgoKSA9PSAwKQogICAgICAgICByZXR1cm4g
MDsKQEAgLTI3MDAsNyArMjcyMiw3IEBAIGJvb2wgRG9jdW1lbnQ6OmlzVmFsaWROYW1lKGNvbnN0
IFN0cmluZyAmbmFtZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBEb2N1bWVudDo6cGFy
c2VRdWFsaWZpZWROYW1lKGNvbnN0IFN0cmluZyAmcXVhbGlmaWVkTmFtZSwgU3RyaW5nICZwcmVm
aXgsIFN0cmluZyAmbG9jYWxOYW1lKQorYm9vbCBEb2N1bWVudDo6cGFyc2VRdWFsaWZpZWROYW1l
KGNvbnN0IFN0cmluZyYgcXVhbGlmaWVkTmFtZSwgU3RyaW5nJiBwcmVmaXgsIFN0cmluZyYgbG9j
YWxOYW1lKQogewogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHF1YWxpZmllZE5hbWUubGVuZ3RoKCk7
CiAKQEAgLTM0MTUsMjQgKzM0MzcsMzUgQEAgRG9jdW1lbnQgKkRvY3VtZW50Ojp0b3BEb2N1bWVu
dCgpIGNvbnN0CiAKIFBhc3NSZWZQdHI8QXR0cj4gRG9jdW1lbnQ6OmNyZWF0ZUF0dHJpYnV0ZU5T
KGNvbnN0IFN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcmIHF1YWxpZmllZE5hbWUs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIGlmIChxdWFsaWZpZWROYW1lLmlzTnVsbCgpKSB7
CisgICAgLy8gU3BlYzogRE9NIExldmVsIDIsIElOVkFMSURfQ0hBUkFDVEVSX0VSUiBpcyBvbmx5
IGZvciB3aGVuIHRoZSBxdWFsaWZpZWQgbmFtZSBjb250YWlucyBhbiBpbnZhbGlkIGNoYXJzCisg
ICAgLy8gTkFNRVNQQUNFX0VSUiBpcyBmb3Igd2hlbiB0aGUgbmFtZSBpcyAibWFsZm9ybWVkIiB3
aGljaCBpbmNsdWRlcyBlbXB0eQorICAgIGlmIChxdWFsaWZpZWROYW1lLmlzRW1wdHkoKSkgewog
ICAgICAgICBlYyA9IE5BTUVTUEFDRV9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAor
ICAgIFN0cmluZyBwcmVmaXgsIGxvY2FsTmFtZTsKICAgICBpZiAoIXBhcnNlUXVhbGlmaWVkTmFt
ZShxdWFsaWZpZWROYW1lLCBwcmVmaXgsIGxvY2FsTmFtZSkpIHsKICAgICAgICAgZWMgPSBJTlZB
TElEX0NIQVJBQ1RFUl9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAorICAgIFF1YWxp
ZmllZE5hbWUgcU5hbWUocHJlZml4LCBsb2NhbE5hbWUsIG5hbWVzcGFjZVVSSSk7CiAgICAgaWYg
KGNoZWNrRm9yTmFtZXNwYWNlRXJyb3IocU5hbWUpKSB7CiAgICAgICAgIGVjID0gTkFNRVNQQUNF
X0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisgICAgLy8gU3BlYzogRE9NIExldmVs
IDIgQ29yZTogIGNyZWF0ZUF0dHJpYnV0ZU5TKG51bGwsICJ4bWxucyIpIHNob3VsZCB0aHJvdwor
ICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0yLUNvcmUvY29yZS5odG1sI0lE
LURvY0NyQXR0ck4KKyAgICBpZiAocU5hbWUubG9jYWxOYW1lKCkgPT0gInhtbG5zIiAmJiBxTmFt
ZS5uYW1lc3BhY2VVUkkoKSAhPSAiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8iKSB7Cisg
ICAgICAgIGVjID0gTkFNRVNQQUNFX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCiAg
ICAgLy8gRklYTUU6IEFzc3VtZSB0aGlzIGlzIGEgbWFwcGVkIGF0dHJpYnV0ZSwgc2luY2UgY3Jl
YXRlQXR0cmlidXRlIGlzbid0IG5hbWVzcGFjZS1hd2FyZS4gIFRoZXJlJ3Mgbm8gaGFybSB0byBY
TUwKICAgICAvLyBkb2N1bWVudHMgaWYgd2UncmUgd3JvbmcuCi0gICAgcmV0dXJuIG5ldyBBdHRy
KDAsIHRoaXMsIG5ldyBNYXBwZWRBdHRyaWJ1dGUoUXVhbGlmaWVkTmFtZShwcmVmaXgsIGxvY2Fs
TmFtZSwgbmFtZXNwYWNlVVJJKSwgU3RyaW5nSW1wbDo6ZW1wdHkoKSkpOworICAgIHJldHVybiBu
ZXcgQXR0cigwLCB0aGlzLCBuZXcgTWFwcGVkQXR0cmlidXRlKHFOYW1lLCBTdHJpbmdJbXBsOjpl
bXB0eSgpKSk7CiB9CiAKICNpZiBFTkFCTEUoU1ZHKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaWRsIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCmluZGV4IDZkZTUxZDcuLjkz
OWYzMDQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAorKysgYi9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5pZGwKQEAgLTU1LDEwICs1NSwxMCBAQCBtb2R1bGUgY29yZSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBib29sZWFuIGRlZXApCiAgICAg
ICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIFtPbGRTdHlsZU9iakNdIEVs
ZW1lbnQgY3JlYXRlRWxlbWVudE5TKGluIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3Ry
aW5nIG5hbWVzcGFjZVVSSSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW4gRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10g
RE9NU3RyaW5nIHF1YWxpZmllZE5hbWUpCiAgICAgICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlv
bik7CiAgICAgICAgIFtPbGRTdHlsZU9iakNdIEF0dHIgY3JlYXRlQXR0cmlidXRlTlMoaW4gW0Nv
bnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgbmFtZXNwYWNlVVJJLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIERPTVN0cmluZyBxdWFsaWZp
ZWROYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
IFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUpCiAgICAg
ICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIFtPbGRTdHlsZU9iakNdIE5v
ZGVMaXN0IGdldEVsZW1lbnRzQnlUYWdOYW1lTlMoaW4gW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5n
XSBET01TdHJpbmcgbmFtZXNwYWNlVVJJLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGluIERPTVN0cmluZyBsb2NhbE5hbWUpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18415</attachid>
            <date>2008-01-12 17:33:07 -0800</date>
            <delta_ts>2008-02-10 13:34:02 -0800</delta_ts>
            <desc>Final fixes and adding test cases</desc>
            <filename>Final-fixes-and-adding-test-cases.patch</filename>
            <type>text/plain</type>
            <size>20765</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">OWNjYTYyN2EwNmRkZWQxMWJmMDNkZDFjOWEzYjU4MjdlOWM0NzAzOApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMy9jb3JlL2RvY3VtZW50c2V0c3RyaWN0ZXJyb3JjaGVj
a2luZzAyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDMvY29yZS9k
b2N1bWVudHNldHN0cmljdGVycm9yY2hlY2tpbmcwMi1leHBlY3RlZC50eHQKaW5kZXggMmYyMzNl
MS4uOGI1YTc1ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMy9jb3Jl
L2RvY3VtZW50c2V0c3RyaWN0ZXJyb3JjaGVja2luZzAyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9kb20veGh0bWwvbGV2ZWwzL2NvcmUvZG9jdW1lbnRzZXRzdHJpY3RlcnJvcmNoZWNr
aW5nMDItZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsMiBAQAogVGVzdAlodHRwOi8vd3d3LnczLm9y
Zy8yMDAxL0RPTS1UZXN0LVN1aXRlL2xldmVsMy9jb3JlL2RvY3VtZW50c2V0c3RyaWN0ZXJyb3Jj
aGVja2luZzAyCi1TdGF0dXMJZmFpbHVyZQotTWVzc2FnZQlOQU1FU1BBQ0VfRVJSX2RvY3VtZW50
c2V0c3RyaWN0ZXJyb3JjaGVja2luZzAyOiBhc3NlcnRUcnVlIGZhaWxlZAorU3RhdHVzCVN1Y2Nl
c3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L2NyZWF0ZUF0dHJp
YnV0ZU5TLW5hbWVzcGFjZS1lcnItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
RG9jdW1lbnQvY3JlYXRlQXR0cmlidXRlTlMtbmFtZXNwYWNlLWVyci1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDlmYjlmMgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L2NyZWF0ZUF0dHJpYnV0ZU5TLW5hbWVz
cGFjZS1lcnItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzggQEAKK0Vuc3VyZSBkb2N1bWVudC5j
cmVhdGVBdHRyaWJ1dGVOUyBtZXRob2QgdGhyb3dzIE5BTUVTUEFDRV9FUlIgYXQgcHJvcGVyIHRp
bWVzCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGRvY3VtZW50LmNyZWF0
ZUF0dHJpYnV0ZU5TKCkudG9TdHJpbmcoKSBpcyAiW29iamVjdCBBdHRyXSIKK1BBU1MgZG9jdW1l
bnQuY3JlYXRlQXR0cmlidXRlTlMoImh0dHA6Ly93d3cuZXhhbXBsZS5jb20iKS50b1N0cmluZygp
IGlzICJbb2JqZWN0IEF0dHJdIgorUEFTUyBkb2N1bWVudC5jcmVhdGVBdHRyaWJ1dGVOUyh1bmRl
ZmluZWQsIHVuZGVmaW5lZCkudG9TdHJpbmcoKSBpcyAiW29iamVjdCBBdHRyXSIKK1BBU1MgZG9j
dW1lbnQuY3JlYXRlQXR0cmlidXRlTlMobnVsbCwgdW5kZWZpbmVkKS50b1N0cmluZygpIGlzICJb
b2JqZWN0IEF0dHJdIgorUEFTUyBkb2N1bWVudC5jcmVhdGVBdHRyaWJ1dGVOUyh1bmRlZmluZWQs
IG51bGwpIHRocmV3IGV4Y2VwdGlvbiBjb2RlIDUKK1BBU1MgZG9jdW1lbnQuY3JlYXRlQXR0cmli
dXRlTlMobnVsbCwgbnVsbCkgdGhyZXcgZXhjZXB0aW9uIGNvZGUgNQorUEFTUyBkb2N1bWVudC5j
cmVhdGVBdHRyaWJ1dGVOUyhudWxsLCAiIikgdGhyZXcgZXhjZXB0aW9uIGNvZGUgNQorUEFTUyBk
b2N1bWVudC5jcmVhdGVBdHRyaWJ1dGVOUygiIiwgIiIpIHRocmV3IGV4Y2VwdGlvbiBjb2RlIDUK
K1BBU1MgZG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlTlMobnVsbCwgIjxkaXY+IikgdGhyZXcgZXhj
ZXB0aW9uIGNvZGUgNQorUEFTUyBkb2N1bWVudC5jcmVhdGVBdHRyaWJ1dGVOUyhudWxsLCAiMGRp
diIpIHRocmV3IGV4Y2VwdGlvbiBjb2RlIDUKK1BBU1MgZG9jdW1lbnQuY3JlYXRlQXR0cmlidXRl
TlMobnVsbCwgImRpIHYiKSB0aHJldyBleGNlcHRpb24gY29kZSA1CitQQVNTIGRvY3VtZW50LmNy
ZWF0ZUF0dHJpYnV0ZU5TKG51bGwsICJkaTx2IikgdGhyZXcgZXhjZXB0aW9uIGNvZGUgNQorUEFT
UyBkb2N1bWVudC5jcmVhdGVBdHRyaWJ1dGVOUyhudWxsLCAiLWRpdiIpIHRocmV3IGV4Y2VwdGlv
biBjb2RlIDUKK1BBU1MgZG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlTlMobnVsbCwgIi5kaXYiKSB0
aHJldyBleGNlcHRpb24gY29kZSA1CitQQVNTIGRvY3VtZW50LmNyZWF0ZUF0dHJpYnV0ZU5TKCJo
dHRwOi8vZXhhbXBsZS5jb20vIiwgIjxkaXY+IikgdGhyZXcgZXhjZXB0aW9uIGNvZGUgNQorUEFT
UyBkb2N1bWVudC5jcmVhdGVBdHRyaWJ1dGVOUygiaHR0cDovL2V4YW1wbGUuY29tLyIsICIwZGl2
IikgdGhyZXcgZXhjZXB0aW9uIGNvZGUgNQorUEFTUyBkb2N1bWVudC5jcmVhdGVBdHRyaWJ1dGVO
UygiaHR0cDovL2V4YW1wbGUuY29tLyIsICJkaTx2IikgdGhyZXcgZXhjZXB0aW9uIGNvZGUgNQor
UEFTUyBkb2N1bWVudC5jcmVhdGVBdHRyaWJ1dGVOUygiaHR0cDovL2V4YW1wbGUuY29tLyIsICIt
ZGl2IikgdGhyZXcgZXhjZXB0aW9uIGNvZGUgNQorUEFTUyBkb2N1bWVudC5jcmVhdGVBdHRyaWJ1
dGVOUygiaHR0cDovL2V4YW1wbGUuY29tLyIsICIuZGl2IikgdGhyZXcgZXhjZXB0aW9uIGNvZGUg
NQorUEFTUyBkb2N1bWVudC5jcmVhdGVBdHRyaWJ1dGVOUyhudWxsLCAiOmRpdiIpIHRocmV3IGV4
Y2VwdGlvbiBjb2RlIDE0CitQQVNTIGRvY3VtZW50LmNyZWF0ZUF0dHJpYnV0ZU5TKCJodHRwOi8v
ZXhhbXBsZS5jb20vIiwgIjpkaXYiKSB0aHJldyBleGNlcHRpb24gY29kZSAxNAorUEFTUyBkb2N1
bWVudC5jcmVhdGVBdHRyaWJ1dGVOUyhudWxsLCAiZDppdiIpIHRocmV3IGV4Y2VwdGlvbiBjb2Rl
IDE0CitQQVNTIGRvY3VtZW50LmNyZWF0ZUF0dHJpYnV0ZU5TKCJodHRwOi8vZXhhbXBsZS5jb20v
IiwgInhtbDp0ZXN0IikgdGhyZXcgZXhjZXB0aW9uIGNvZGUgMTQKK1BBU1MgZG9jdW1lbnQuY3Jl
YXRlQXR0cmlidXRlTlMoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAieG1sbnMiKSB0aHJldyBleGNl
cHRpb24gY29kZSAxNAorUEFTUyBkb2N1bWVudC5jcmVhdGVBdHRyaWJ1dGVOUygiaHR0cDovL2V4
YW1wbGUuY29tLyIsICJ4bWxuczp0ZXN0IikgdGhyZXcgZXhjZXB0aW9uIGNvZGUgMTQKK1BBU1Mg
ZG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlTlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMv
IiwgIng6dGVzdCIpIHRocmV3IGV4Y2VwdGlvbiBjb2RlIDE0CitQQVNTIGRvY3VtZW50LmNyZWF0
ZUF0dHJpYnV0ZU5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLycsICd4bWxuczp0ZXN0
JykudG9TdHJpbmcoKSBpcyAiW29iamVjdCBBdHRyXSIKK1BBU1MgZG9jdW1lbnQuY3JlYXRlQXR0
cmlidXRlTlMoJ2h0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZScsICd4bWw6dGVz
dCcpLnRvU3RyaW5nKCkgaXMgIltvYmplY3QgQXR0cl0iCitQQVNTIGRvY3VtZW50LmNyZWF0ZUF0
dHJpYnV0ZU5TKCdodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UnLCAneDp0ZXN0
JykudG9TdHJpbmcoKSBpcyAiW29iamVjdCBBdHRyXSIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9Eb2N1bWVudC9jcmVhdGVBdHRyaWJ1dGVOUy1uYW1lc3BhY2UtZXJyLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9jcmVhdGVBdHRyaWJ1dGVOUy1uYW1lc3BhY2UtZXJy
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzBjYjJiZAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L2NyZWF0ZUF0dHJpYnV0
ZU5TLW5hbWVzcGFjZS1lcnIuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQ
VUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2NyZWF0ZUF0dHJpYnV0ZU5T
LW5hbWVzcGFjZS1lcnIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvY3JlYXRlRWxlbWVudE5TLW5hbWVz
cGFjZS1lcnItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvY3Jl
YXRlRWxlbWVudE5TLW5hbWVzcGFjZS1lcnItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmMwNjYwZjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9Eb2N1bWVudC9jcmVhdGVFbGVtZW50TlMtbmFtZXNwYWNlLWVyci1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwzNyBAQAorRW5zdXJlIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyBt
ZXRob2QgdGhyb3dzIE5BTUVTUEFDRV9FUlIgYXQgcHJvcGVyIHRpbWVzCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitQQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygpLnRvU3Ry
aW5nKCkgaXMgIltvYmplY3QgRWxlbWVudF0iCitQQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy5leGFtcGxlLmNvbSIpLnRvU3RyaW5nKCkgaXMgIltvYmplY3QgRWxlbWVu
dF0iCitQQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh1bmRlZmluZWQsIHVuZGVmaW5lZCku
dG9TdHJpbmcoKSBpcyAiW29iamVjdCBFbGVtZW50XSIKK1BBU1MgZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKG51bGwsIHVuZGVmaW5lZCkudG9TdHJpbmcoKSBpcyAiW29iamVjdCBFbGVtZW50XSIK
K1BBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHVuZGVmaW5lZCwgbnVsbCkgdGhyZXcgZXhj
ZXB0aW9uIGNvZGUgNQorUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMobnVsbCwgbnVsbCkg
dGhyZXcgZXhjZXB0aW9uIGNvZGUgNQorUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMobnVs
bCwgIiIpIHRocmV3IGV4Y2VwdGlvbiBjb2RlIDUKK1BBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCIiLCAiIikgdGhyZXcgZXhjZXB0aW9uIGNvZGUgNQorUEFTUyBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMobnVsbCwgIjxkaXY+IikgdGhyZXcgZXhjZXB0aW9uIGNvZGUgNQorUEFTUyBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMobnVsbCwgIjBkaXYiKSB0aHJldyBleGNlcHRpb24gY29kZSA1
CitQQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhudWxsLCAiZGkgdiIpIHRocmV3IGV4Y2Vw
dGlvbiBjb2RlIDUKK1BBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG51bGwsICJkaTx2Iikg
dGhyZXcgZXhjZXB0aW9uIGNvZGUgNQorUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMobnVs
bCwgIi1kaXYiKSB0aHJldyBleGNlcHRpb24gY29kZSA1CitQQVNTIGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUyhudWxsLCAiLmRpdiIpIHRocmV3IGV4Y2VwdGlvbiBjb2RlIDUKK1BBU1MgZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vZXhhbXBsZS5jb20vIiwgIjxkaXY+IikgdGhyZXcg
ZXhjZXB0aW9uIGNvZGUgNQorUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly9l
eGFtcGxlLmNvbS8iLCAiMGRpdiIpIHRocmV3IGV4Y2VwdGlvbiBjb2RlIDUKK1BBU1MgZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vZXhhbXBsZS5jb20vIiwgImRpPHYiKSB0aHJldyBl
eGNlcHRpb24gY29kZSA1CitQQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL2V4
YW1wbGUuY29tLyIsICItZGl2IikgdGhyZXcgZXhjZXB0aW9uIGNvZGUgNQorUEFTUyBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiLmRpdiIpIHRocmV3IGV4
Y2VwdGlvbiBjb2RlIDUKK1BBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG51bGwsICI6ZGl2
IikgdGhyZXcgZXhjZXB0aW9uIGNvZGUgMTQKK1BBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vZXhhbXBsZS5jb20vIiwgIjpkaXYiKSB0aHJldyBleGNlcHRpb24gY29kZSAxNAor
UEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMobnVsbCwgImQ6aXYiKSB0aHJldyBleGNlcHRp
b24gY29kZSAxNAorUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly9leGFtcGxl
LmNvbS8iLCAieG1sOnRlc3QiKSB0aHJldyBleGNlcHRpb24gY29kZSAxNAorUEFTUyBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAieG1sbnM6dGVzdCIpIHRo
cmV3IGV4Y2VwdGlvbiBjb2RlIDE0CitQQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8iLCAieDp0ZXN0IikgdGhyZXcgZXhjZXB0aW9uIGNv
ZGUgMTQKK1BBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3htbG5zLycsICd4bWxuczp0ZXN0JykudG9TdHJpbmcoKSBpcyAiW29iamVjdCBFbGVtZW50
XSIKK1BBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy9YTUwv
MTk5OC9uYW1lc3BhY2UnLCAneG1sOnRlc3QnKS50b1N0cmluZygpIGlzICJbb2JqZWN0IEVsZW1l
bnRdIgorUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnL1hN
TC8xOTk4L25hbWVzcGFjZScsICd4OnRlc3QnKS50b1N0cmluZygpIGlzICJbb2JqZWN0IEVsZW1l
bnRdIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L2NyZWF0ZUVsZW1lbnRO
Uy1uYW1lc3BhY2UtZXJyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9jcmVh
dGVFbGVtZW50TlMtbmFtZXNwYWNlLWVyci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmUzZTk0NGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9Eb2N1bWVudC9jcmVhdGVFbGVtZW50TlMtbmFtZXNwYWNlLWVyci5odG1sCkBAIC0wLDAgKzEs
MTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxo
dG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2Ny
aXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvY3JlYXRlRWxlbWVudE5TLW5hbWVzcGFjZS1lcnIuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQv
cmVzb3VyY2VzL1RFTVBMQVRFLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9y
ZXNvdXJjZXMvVEVNUExBVEUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li4xOTUxYzQzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1l
bnQvcmVzb3VyY2VzL1RFTVBMQVRFLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhU
TUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9IllPVVJfSlNfRklMRV9IRVJFIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL0RvY3VtZW50L3Jlc291cmNlcy9jcmVhdGVBdHRyaWJ1dGVOUy1uYW1lc3BhY2UtZXJyLmpz
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvcmVzb3VyY2VzL2NyZWF0ZUF0dHJpYnV0
ZU5TLW5hbWVzcGFjZS1lcnIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
NzI2NWYwMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50
L3Jlc291cmNlcy9jcmVhdGVBdHRyaWJ1dGVOUy1uYW1lc3BhY2UtZXJyLmpzCkBAIC0wLDAgKzEs
ODkgQEAKK2Rlc2NyaXB0aW9uKCdFbnN1cmUgZG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlTlMgbWV0
aG9kIHRocm93cyBOQU1FU1BBQ0VfRVJSIGF0IHByb3BlciB0aW1lcycpOworCitmdW5jdGlvbiBx
dW90ZVN0cmluZyhzKSB7CisgICAgaWYgKHR5cGVvZiBzID09ICJzdHJpbmciKSB7CisgICAgICAg
IHJldHVybiAnIicgKyBzICsgJyInOworICAgIH0KKyAgICByZXR1cm4gIiIgKyBzOworfQorCitm
dW5jdGlvbiBzaG91bGRUaHJvd1dpdGhDb2RlKGEsIGNvZGUpIHsKKyAgICB0cnkgeworICAgICAg
ICB2YXIgcmVzdWx0ID0gZXZhbChhKTsKKyAgICAgICAgdmFyIGZhaWx1cmVTdHJpbmcgPSAiIiAr
IGEgKyAiIHJldHVybmVkICIgKyByZXN1bHQ7CisgICAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2Vv
ZiBBdHRyKSB7CisgICAgICAgICAgICBmYWlsdXJlU3RyaW5nICs9ICIgcHJlZml4OiAiICsgcXVv
dGVTdHJpbmcocmVzdWx0LnByZWZpeCk7CisgICAgICAgICAgICBmYWlsdXJlU3RyaW5nICs9ICIg
bG9jYWxOYW1lOiAiICsgcXVvdGVTdHJpbmcocmVzdWx0LmxvY2FsTmFtZSk7CisgICAgICAgICAg
ICBmYWlsdXJlU3RyaW5nICs9ICIgbmFtZXNwYWNlVVJJOiAiICsgcXVvdGVTdHJpbmcocmVzdWx0
Lm5hbWVzcGFjZVVSSSk7CisgICAgICAgIH0KKyAgICAgICAgZmFpbHVyZVN0cmluZyArPSAiLCBl
eHBlY3RlZCBleGNlcHRpb24gY29kZTogIiArIGNvZGU7CisgICAgICAgIHRlc3RGYWlsZWQoZmFp
bHVyZVN0cmluZyk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICB0cnkgeworICAgICAgICAg
ICAgaWYgKGUuY29kZSA9PSBjb2RlKSB7CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiIiAr
IGEgKyAiIHRocmV3IGV4Y2VwdGlvbiBjb2RlICIgKyBjb2RlKTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiIiArIGEgKyAiIHRocmV3IHdyb25nIGV4
Y2VwdGlvbiBjb2RlICIgKyBlLmNvZGUgKyAiIGV4cGVjdGVkICIgKyBjb2RlKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSBjYXRjaChleHApIHt9CisgICAg
ICAgIHRlc3RGYWlsZWQoIiIgKyBhICsgIiB0aHJldyB3cm9uZyBleGNlcHRpb246ICIgKyBlKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKworZnVuY3Rpb24gdGVzdChuYW1lLCBuYW1lc3Bh
Y2UsIGNvZGUpIHsKKyAgICBzaG91bGRUaHJvd1dpdGhDb2RlKCJkb2N1bWVudC5jcmVhdGVBdHRy
aWJ1dGVOUygiICsgcXVvdGVTdHJpbmcobmFtZXNwYWNlKSArICIsICIgKyBxdW90ZVN0cmluZyhu
YW1lKSArICIpIiwgY29kZSk7Cit9CisKKy8vIFdlIHVzZSBudW1iZXJzIGluc3RlYWQgb2YgbmFt
ZXMsIGJlY2F1c2UgaXQncyBzbGlnaHRseSBlYXNpZXIgdG8gcmVhZAorLy8gRE9NRXhjZXB0aW9u
LklOVkFMSURfQ0hBUkFDVEVSX0VSUiA9IDUKKy8vIERPTUV4Y2VwdGlvbi5OQU1FU1BBQ0VfRVJS
ID0gMTQKKworLy8gTW96IHRocm93cyBhICJOb3QgZW5vdWdoIGFyZ3VtZW50cyIgZXhjZXB0aW9u
IGluIHRoZXNlLCB3ZSBkb24ndDoKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZG9jdW1lbnQuY3Jl
YXRlQXR0cmlidXRlTlMoKS50b1N0cmluZygpIiwgIltvYmplY3QgQXR0cl0iKTsKK3Nob3VsZEJl
RXF1YWxUb1N0cmluZygiZG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlTlMoXCJodHRwOi8vd3d3LmV4
YW1wbGUuY29tXCIpLnRvU3RyaW5nKCkiLCAiW29iamVjdCBBdHRyXSIpOworCisvLyBJIGV4cGVj
dCB0aGlzIGlzIHNvbWUgb2xkIElFL01veiBxdWlyaworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJk
b2N1bWVudC5jcmVhdGVBdHRyaWJ1dGVOUyh1bmRlZmluZWQsIHVuZGVmaW5lZCkudG9TdHJpbmco
KSIsICJbb2JqZWN0IEF0dHJdIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvY3VtZW50LmNy
ZWF0ZUF0dHJpYnV0ZU5TKG51bGwsIHVuZGVmaW5lZCkudG9TdHJpbmcoKSIsICJbb2JqZWN0IEF0
dHJdIik7CisKKy8vICcnIGFyZSBleHBlY3RlZCBhcyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIgaW5z
dGVhZCBvZiBOQU1FU1BBQ0VfRVJSCisvLyBzZWUgZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfZG9j
dW1lbnRpbnZhbGlkY2hhcmFjdGVyZXhjZXB0aW9uY3JlYXRlYXR0cmlidXRlMS5odG1sCisvLyBh
bmQgaHR0cDovL3d3dy53My5vcmcvQnVncy9QdWJsaWMvc2hvd19idWcuY2dpP2lkPTUyNQordGVz
dChudWxsLCB1bmRlZmluZWQsIDUpOwordGVzdChudWxsLCBudWxsLCA1KTsKK3Rlc3QoJycsIG51
bGwsIDUpOwordGVzdCgnJywgJycsIDUpOworCisvLyBUaGVzZSBhcmUgZGVmaW5lZCBpbiBET00g
TGV2ZWwgMiBjb3JlCit0ZXN0KCc8ZGl2PicsIG51bGwsIDUpOwordGVzdCgnMGRpdicsIG51bGws
IDUpOwordGVzdCgnZGkgdicsIG51bGwsIDUpOwordGVzdCgnZGk8dicsIG51bGwsIDUpOwordGVz
dCgnLWRpdicsIG51bGwsIDUpOwordGVzdCgnLmRpdicsIG51bGwsIDUpOwordGVzdCgnPGRpdj4n
LCAiaHR0cDovL2V4YW1wbGUuY29tLyIsIDUpOwordGVzdCgnMGRpdicsICJodHRwOi8vZXhhbXBs
ZS5jb20vIiwgNSk7Cit0ZXN0KCdkaTx2JywgImh0dHA6Ly9leGFtcGxlLmNvbS8iLCA1KTsKK3Rl
c3QoJy1kaXYnLCAiaHR0cDovL2V4YW1wbGUuY29tLyIsIDUpOwordGVzdCgnLmRpdicsICJodHRw
Oi8vZXhhbXBsZS5jb20vIiwgNSk7Cit0ZXN0KCc6ZGl2JywgbnVsbCwgMTQpOwordGVzdCgnOmRp
dicsICJodHRwOi8vZXhhbXBsZS5jb20vIiwgMTQpOwordGVzdCgnZDppdicsIG51bGwsIDE0KTsK
K3Rlc3QoJ3htbDp0ZXN0JywgImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAxNCk7Cit0ZXN0KCd4bWxu
cycsICJodHRwOi8vZXhhbXBsZS5jb20vIiwgMTQpOyAvLyBmcm9tIGNyZWF0ZUF0dHJpYnV0ZU5T
IHNlY3Rpb24KKworLy8gVGhlc2UgYXJlIHJlcXVpcmVkIGJ5IERPTSBMZXZlbCAzIGNvcmUKK3Rl
c3QoJ3htbG5zOnRlc3QnLCAiaHR0cDovL2V4YW1wbGUuY29tLyIsIDE0KTsKK3Rlc3QoJ3g6dGVz
dCcsICJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyIsIDE0KTsKKworLy8gbWFrZSBzdXJl
IHdlIGNhbiBzdGlsbCBjcmVhdGUgYXJiaXRyYXJ5IGVsbWVudHMgaW4geG1sbnMgYW5kIHhtbCBu
YW1lc3BhY2VzCitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvY3VtZW50LmNyZWF0ZUF0dHJpYnV0
ZU5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLycsICd4bWxuczp0ZXN0JykudG9TdHJp
bmcoKSIsICJbb2JqZWN0IEF0dHJdIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvY3VtZW50
LmNyZWF0ZUF0dHJpYnV0ZU5TKCdodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2Un
LCAneG1sOnRlc3QnKS50b1N0cmluZygpIiwgIltvYmplY3QgQXR0cl0iKTsKKworLy8gRE9NIENv
cmUgZG9lcyBub3Qgc2VlbSB0byBkaXNhbGxvdyB0aGlzLCBhbHRob3VnaCBhIHZhbGlkYXRpbmcg
WE1MIHBhcnNlciB3b3VsZAorLy8gc2luY2UgInhtbCIgaXMgYWxyZWFkeSBpbXBsaWNpdHkgYm91
bmQgdG8gdGhpcyBuYW1lc3BhY2VVUkkKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZG9jdW1lbnQu
Y3JlYXRlQXR0cmlidXRlTlMoJ2h0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZScs
ICd4OnRlc3QnKS50b1N0cmluZygpIiwgIltvYmplY3QgQXR0cl0iKTsKKwordmFyIHN1Y2Nlc3Nm
dWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1
bWVudC9yZXNvdXJjZXMvY3JlYXRlRWxlbWVudE5TLW5hbWVzcGFjZS1lcnIuanMgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9yZXNvdXJjZXMvY3JlYXRlRWxlbWVudE5TLW5hbWVzcGFj
ZS1lcnIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjFjMGU1YQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L3Jlc291cmNlcy9j
cmVhdGVFbGVtZW50TlMtbmFtZXNwYWNlLWVyci5qcwpAQCAtMCwwICsxLDg4IEBACitkZXNjcmlw
dGlvbignRW5zdXJlIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyBtZXRob2QgdGhyb3dzIE5BTUVT
UEFDRV9FUlIgYXQgcHJvcGVyIHRpbWVzJyk7CisKK2Z1bmN0aW9uIHF1b3RlU3RyaW5nKHMpIHsK
KyAgICBpZiAodHlwZW9mIHMgPT0gInN0cmluZyIpIHsKKyAgICAgICAgcmV0dXJuICciJyArIHMg
KyAnIic7CisgICAgfQorICAgIHJldHVybiAiIiArIHM7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRo
cm93V2l0aENvZGUoYSwgY29kZSkgeworICAgIHRyeSB7CisgICAgICAgIHZhciByZXN1bHQgPSBl
dmFsKGEpOworICAgICAgICB2YXIgZmFpbHVyZVN0cmluZyA9ICIiICsgYSArICIgcmV0dXJuZWQg
IiArIHJlc3VsdDsKKyAgICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIEVsZW1lbnQpIHsKKyAg
ICAgICAgICAgIGZhaWx1cmVTdHJpbmcgKz0gIiBwcmVmaXg6ICIgKyBxdW90ZVN0cmluZyhyZXN1
bHQucHJlZml4KTsKKyAgICAgICAgICAgIGZhaWx1cmVTdHJpbmcgKz0gIiBsb2NhbE5hbWU6ICIg
KyBxdW90ZVN0cmluZyhyZXN1bHQubG9jYWxOYW1lKTsKKyAgICAgICAgICAgIGZhaWx1cmVTdHJp
bmcgKz0gIiBuYW1lc3BhY2VVUkk6ICIgKyBxdW90ZVN0cmluZyhyZXN1bHQubmFtZXNwYWNlVVJJ
KTsKKyAgICAgICAgfQorICAgICAgICBmYWlsdXJlU3RyaW5nICs9ICIsIGV4cGVjdGVkIGV4Y2Vw
dGlvbiBjb2RlOiAiICsgY29kZTsKKyAgICAgICAgdGVzdEZhaWxlZChmYWlsdXJlU3RyaW5nKTsK
KyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBpZiAoZS5jb2Rl
ID09IGNvZGUpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCIiICsgYSArICIgdGhyZXcg
ZXhjZXB0aW9uIGNvZGUgIiArIGNvZGUpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCIiICsgYSArICIgdGhyZXcgd3JvbmcgZXhjZXB0aW9uIGNvZGUg
IiArIGUuY29kZSArICIgZXhwZWN0ZWQgIiArIGNvZGUpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9IGNhdGNoKGV4cCkge30KKyAgICAgICAgdGVzdEZhaWxl
ZCgiIiArIGEgKyAiIHRocmV3IHdyb25nIGV4Y2VwdGlvbjogIiArIGUpOworICAgICAgICByZXR1
cm47CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0KG5hbWUsIG5hbWVzcGFjZSwgY29kZSkgewor
ICAgIHNob3VsZFRocm93V2l0aENvZGUoImRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiICsgcXVv
dGVTdHJpbmcobmFtZXNwYWNlKSArICIsICIgKyBxdW90ZVN0cmluZyhuYW1lKSArICIpIiwgY29k
ZSk7Cit9CisKKy8vIFdlIHVzZSBudW1iZXJzIGluc3RlYWQgb2YgbmFtZXMsIGJlY2F1c2UgaXQn
cyBzbGlnaHRseSBlYXNpZXIgdG8gcmVhZAorLy8gRE9NRXhjZXB0aW9uLklOVkFMSURfQ0hBUkFD
VEVSX0VSUiA9IDUKKy8vIERPTUV4Y2VwdGlvbi5OQU1FU1BBQ0VfRVJSID0gMTQKKworLy8gTW96
IHRocm93cyBhICJOb3QgZW5vdWdoIGFyZ3VtZW50cyIgZXhjZXB0aW9uIGluIHRoZXNlLCB3ZSBk
b24ndDoKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCku
dG9TdHJpbmcoKSIsICJbb2JqZWN0IEVsZW1lbnRdIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmco
ImRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhcImh0dHA6Ly93d3cuZXhhbXBsZS5jb21cIikudG9T
dHJpbmcoKSIsICJbb2JqZWN0IEVsZW1lbnRdIik7CisKKy8vIEkgZXhwZWN0IHRoaXMgaXMgc29t
ZSBvbGQgSUUvTW96IHF1aXJrCitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUyh1bmRlZmluZWQsIHVuZGVmaW5lZCkudG9TdHJpbmcoKSIsICJbb2JqZWN0IEVs
ZW1lbnRdIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UyhudWxsLCB1bmRlZmluZWQpLnRvU3RyaW5nKCkiLCAiW29iamVjdCBFbGVtZW50XSIpOworCisv
LyAnJyBhcmUgZXhwZWN0ZWQgYXMgSU5WQUxJRF9DSEFSQUNURVJfRVJSIGluc3RlYWQgb2YgTkFN
RVNQQUNFX0VSUgorLy8gc2VlIGRvbS9odG1sL2xldmVsMS9jb3JlL2hjX2RvY3VtZW50aW52YWxp
ZGNoYXJhY3RlcmV4Y2VwdGlvbmNyZWF0ZWF0dHJpYnV0ZTEuaHRtbAorLy8gYW5kIGh0dHA6Ly93
d3cudzMub3JnL0J1Z3MvUHVibGljL3Nob3dfYnVnLmNnaT9pZD01MjUKK3Rlc3QobnVsbCwgdW5k
ZWZpbmVkLCA1KTsKK3Rlc3QobnVsbCwgbnVsbCwgNSk7Cit0ZXN0KCcnLCBudWxsLCA1KTsKK3Rl
c3QoJycsICcnLCA1KTsKKworLy8gVGhlc2UgYXJlIGRlZmluZWQgaW4gRE9NIExldmVsIDIgY29y
ZQordGVzdCgnPGRpdj4nLCBudWxsLCA1KTsKK3Rlc3QoJzBkaXYnLCBudWxsLCA1KTsKK3Rlc3Qo
J2RpIHYnLCBudWxsLCA1KTsKK3Rlc3QoJ2RpPHYnLCBudWxsLCA1KTsKK3Rlc3QoJy1kaXYnLCBu
dWxsLCA1KTsKK3Rlc3QoJy5kaXYnLCBudWxsLCA1KTsKK3Rlc3QoJzxkaXY+JywgImh0dHA6Ly9l
eGFtcGxlLmNvbS8iLCA1KTsKK3Rlc3QoJzBkaXYnLCAiaHR0cDovL2V4YW1wbGUuY29tLyIsIDUp
OwordGVzdCgnZGk8dicsICJodHRwOi8vZXhhbXBsZS5jb20vIiwgNSk7Cit0ZXN0KCctZGl2Jywg
Imh0dHA6Ly9leGFtcGxlLmNvbS8iLCA1KTsKK3Rlc3QoJy5kaXYnLCAiaHR0cDovL2V4YW1wbGUu
Y29tLyIsIDUpOwordGVzdCgnOmRpdicsIG51bGwsIDE0KTsKK3Rlc3QoJzpkaXYnLCAiaHR0cDov
L2V4YW1wbGUuY29tLyIsIDE0KTsKK3Rlc3QoJ2Q6aXYnLCBudWxsLCAxNCk7Cit0ZXN0KCd4bWw6
dGVzdCcsICJodHRwOi8vZXhhbXBsZS5jb20vIiwgMTQpOworCisvLyBUaGVzZSBhcmUgcmVxdWly
ZWQgYnkgRE9NIExldmVsIDMgY29yZQordGVzdCgneG1sbnM6dGVzdCcsICJodHRwOi8vZXhhbXBs
ZS5jb20vIiwgMTQpOwordGVzdCgneDp0ZXN0JywgImh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1s
bnMvIiwgMTQpOworCisvLyBtYWtlIHN1cmUgd2UgY2FuIHN0aWxsIGNyZWF0ZSBhcmJpdHJhcnkg
ZWxtZW50cyBpbiB4bWxucyBhbmQgeG1sIG5hbWVzcGFjZXMKK3Nob3VsZEJlRXF1YWxUb1N0cmlu
ZygiZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5z
LycsICd4bWxuczp0ZXN0JykudG9TdHJpbmcoKSIsICJbb2JqZWN0IEVsZW1lbnRdIik7CitzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53
My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlJywgJ3htbDp0ZXN0JykudG9TdHJpbmcoKSIsICJbb2Jq
ZWN0IEVsZW1lbnRdIik7CisKKy8vIERPTSBDb3JlIGRvZXMgbm90IHNlZW0gdG8gZGlzYWxsb3cg
dGhpcywgYWx0aG91Z2ggYSB2YWxpZGF0aW5nIFhNTCBwYXJzZXIgd291bGQKKy8vIHNpbmNlICJ4
bWwiIGlzIGFscmVhZHkgaW1wbGljaXR5IGJvdW5kIHRvIHRoaXMgbmFtZXNwYWNlVVJJCitzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53
My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlJywgJ3g6dGVzdCcpLnRvU3RyaW5nKCkiLCAiW29iamVj
dCBFbGVtZW50XSIpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApp
bmRleCA1ZTE2ZGYxLi5lOTI2YWUxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKKysrIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC03MTMsMzAgKzcxMywyMSBAQCBz
dGF0aWMgYm9vbCBjaGVja0Zvck5hbWVzcGFjZUVycm9yKGNvbnN0IFF1YWxpZmllZE5hbWUmIHFO
YW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAoIXFOYW1lLnByZWZpeCgpLmlzRW1w
dHkoKSAmJiBxTmFtZS5uYW1lc3BhY2VVUkkoKS5pc051bGwoKSkgLy8gY3JlYXRlRWxlbWVudE5T
KG51bGwsICJodG1sOmRpdiIpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChxTmFtZS5w
cmVmaXgoKSA9PSB4bWwgJiYgcU5hbWUubmFtZXNwYWNlVVJJKCkgIT0gWE1MTmFtZXM6OnhtbE5h
bWVzcGFjZVVSSSkgLy8gY3JlYXRlRWxlbWVudE5TKG51bGwsICJ4bWw6bGFuZyIpCisgICAgaWYg
KHFOYW1lLnByZWZpeCgpID09IHhtbCAmJiBxTmFtZS5uYW1lc3BhY2VVUkkoKSAhPSBYTUxOYW1l
czo6eG1sTmFtZXNwYWNlVVJJKSAvLyBjcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cuZXhhbXBs
ZS5jb20iLCAieG1sOmxhbmciKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIC8vIE5vdCBy
ZXF1aXJlZCBieSBET00gQ29yZSBMZXZlbCAyLCBidXQgTW96aWxsYSBkb2VzIHNvbWUgbWluaW1h
bCBuYW1lc3BhY2UgdmFsaWRhdGlvbiBhbmQgdGhyb3dzIGZvciB0aGlzOgorICAgIC8vIFJlcXVp
cmVkIGJ5IERPTSBMZXZlbCAzIENvcmUgYW5kIHVuc3BlY2lmaWVkIGJ5IERPTSBMZXZlbCAyIENv
cmU6CisgICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIvMjAwNC9SRUMtRE9NLUxldmVsLTMtQ29y
ZS0yMDA0MDQwNy9jb3JlLmh0bWwjSUQtRG9jQ3JFbE5TCiAgICAgLy8gY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyIsICJmb286YmFyIiksIGNyZWF0ZUVsZW1l
bnROUyhudWxsLCAieG1sbnM6YmFyIikKICAgICBpZiAoKHFOYW1lLnByZWZpeCgpID09IHhtbG5z
ICYmIHFOYW1lLm5hbWVzcGFjZVVSSSgpICE9IHhtbG5zVVJJKSB8fCAocU5hbWUucHJlZml4KCkg
IT0geG1sbnMgJiYgcU5hbWUubmFtZXNwYWNlVVJJKCkgPT0geG1sbnNVUkkpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAotICAgIC8vIE1vemlsbGEgZG9lc24ndCBoYXZlIHRoaXMgY2hlY2ssIGJ1
dCBpdCBtYWtlcyBzZW5zZSBnaXZlbiB0aGVpciAieG1sbnM6IiB2YWxpZGF0aW9uOgotICAgIC8v
IGNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIiwg
ImZvbzpiYXIiKQotICAgIGlmIChxTmFtZS5wcmVmaXgoKSAhPSB4bWwgJiYgcU5hbWUubmFtZXNw
YWNlVVJJKCkgPT0gWE1MTmFtZXM6OnhtbE5hbWVzcGFjZVVSSSkKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIC8vIEZJWE1FOiBUaGlzIHNob3VsZCByZWFs
bHkgYmUgaW4gYSBwb3NzaWJsZSBFbGVtZW50RmFjdG9yeSBjbGFzcwogUGFzc1JlZlB0cjxFbGVt
ZW50PiBEb2N1bWVudDo6Y3JlYXRlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiBxTmFtZSwg
Ym9vbCBjcmVhdGVkQnlQYXJzZXIsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIGlmIChjaGVj
a0Zvck5hbWVzcGFjZUVycm9yKHFOYW1lKSkgewotICAgICAgICBlYyA9IE5BTUVTUEFDRV9FUlI7
Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQogICAgIFJlZlB0cjxFbGVtZW50PiBlOwogCiAg
ICAgLy8gRklYTUU6IFVzZSByZWdpc3RlcmVkIG5hbWVzcGFjZXMgYW5kIGxvb2sgdXAgaW4gYSBo
YXNoIHRvIGZpbmQgdGhlIHJpZ2h0IGZhY3RvcnkuCkBAIC03NTIsNiArNzQzLDcgQEAgUGFzc1Jl
ZlB0cjxFbGVtZW50PiBEb2N1bWVudDo6Y3JlYXRlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiBxTmFtZSwgYm9vbCBjcmUKICAgICAKICAgICAvLyBGSVhNRTogdGhlIGVsZW1lbnQgZmFjdG9y
aWVzIHNob3VsZCBiZSBmaXhlZCB0byBub3QgaWdub3JlIHFOYW1lLnByZWZpeCgpCiAgICAgLy8g
dGhlbiB0aGlzIGNvZGUgY2FuIGJlY29tZSBBU1NFUlQocU5hbWUgPT0gZS5xbmFtZSgpKTsKKyAg
ICAvLyBUaGVuIGZ1bmN0aW9uIGNhbiBzdG9wIHRha2luZyBFeGNlcHRpb25Db2RlJiBhcyB3ZWxs
LgogICAgIGlmIChlICYmICFxTmFtZS5wcmVmaXgoKS5pc051bGwoKSkgewogICAgICAgICBlYyA9
IDA7CiAgICAgICAgIGUtPnNldFByZWZpeChxTmFtZS5wcmVmaXgoKSwgZWMpOwpAQCAtNzY0LDIx
ICs3NTYsMjEgQEAgUGFzc1JlZlB0cjxFbGVtZW50PiBEb2N1bWVudDo6Y3JlYXRlRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiBxTmFtZSwgYm9vbCBjcmUKIAogUGFzc1JlZlB0cjxFbGVtZW50
PiBEb2N1bWVudDo6Y3JlYXRlRWxlbWVudE5TKGNvbnN0IFN0cmluZyYgX25hbWVzcGFjZVVSSSwg
Y29uc3QgU3RyaW5nJiBxdWFsaWZpZWROYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICAv
LyBTcGVjOiBET00gTGV2ZWwgMiwgSU5WQUxJRF9DSEFSQUNURVJfRVJSIGlzIG9ubHkgZm9yIHdo
ZW4gdGhlIHF1YWxpZmllZCBuYW1lIGNvbnRhaW5zIGFuIGludmFsaWQgY2hhcnMKLSAgICAvLyBO
QU1FU1BBQ0VfRVJSIGlzIGZvciB3aGVuIHRoZSBuYW1lIGlzICJtYWxmb3JtZWQiIHdoaWNoIGlu
Y2x1ZGVzIGVtcHR5Ci0gICAgaWYgKHF1YWxpZmllZE5hbWUuaXNFbXB0eSgpKSB7Ci0gICAgICAg
IGVjID0gTkFNRVNQQUNFX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCiAgICAgU3Ry
aW5nIHByZWZpeCwgbG9jYWxOYW1lOwogICAgIGlmICghcGFyc2VRdWFsaWZpZWROYW1lKHF1YWxp
ZmllZE5hbWUsIHByZWZpeCwgbG9jYWxOYW1lKSkgeworICAgICAgICAvLyBxdWFsaWZpZWROYW1l
LmlzRW1wdHkoKSBhbHNvIGhpdHMgdGhpcyBwYXRoIChub3QgTkFNRVNQQUNFX0VSUiksIHNlZToK
KyAgICAgICAgLy8gZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfZG9jdW1lbnRpbnZhbGlkY2hhcmFj
dGVyZXhjZXB0aW9uY3JlYXRlYXR0cmlidXRlMS5odG1sCisgICAgICAgIC8vIGFuZCBodHRwOi8v
d3d3LnczLm9yZy9CdWdzL1B1YmxpYy9zaG93X2J1Zy5jZ2k/aWQ9NTI1CiAgICAgICAgIGVjID0g
SU5WQUxJRF9DSEFSQUNURVJfRVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBS
ZWZQdHI8RWxlbWVudD4gZTsKICAgICBRdWFsaWZpZWROYW1lIHFOYW1lKHByZWZpeCwgbG9jYWxO
YW1lLCBfbmFtZXNwYWNlVVJJKTsKKyAgICBpZiAoY2hlY2tGb3JOYW1lc3BhY2VFcnJvcihxTmFt
ZSkpIHsKKyAgICAgICAgZWMgPSBOQU1FU1BBQ0VfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAg
ICB9CisKICAgICByZXR1cm4gY3JlYXRlRWxlbWVudChxTmFtZSwgZmFsc2UsIGVjKTsKIH0KIApA
QCAtMzQzNywxNSArMzQyOSwxMSBAQCBEb2N1bWVudCAqRG9jdW1lbnQ6OnRvcERvY3VtZW50KCkg
Y29uc3QKIAogUGFzc1JlZlB0cjxBdHRyPiBEb2N1bWVudDo6Y3JlYXRlQXR0cmlidXRlTlMoY29u
c3QgU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyYgcXVhbGlmaWVkTmFtZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgLy8gU3BlYzogRE9NIExldmVsIDIsIElOVkFMSURfQ0hB
UkFDVEVSX0VSUiBpcyBvbmx5IGZvciB3aGVuIHRoZSBxdWFsaWZpZWQgbmFtZSBjb250YWlucyBh
biBpbnZhbGlkIGNoYXJzCi0gICAgLy8gTkFNRVNQQUNFX0VSUiBpcyBmb3Igd2hlbiB0aGUgbmFt
ZSBpcyAibWFsZm9ybWVkIiB3aGljaCBpbmNsdWRlcyBlbXB0eQotICAgIGlmIChxdWFsaWZpZWRO
YW1lLmlzRW1wdHkoKSkgewotICAgICAgICBlYyA9IE5BTUVTUEFDRV9FUlI7Ci0gICAgICAgIHJl
dHVybiAwOwotICAgIH0KLQogICAgIFN0cmluZyBwcmVmaXgsIGxvY2FsTmFtZTsKICAgICBpZiAo
IXBhcnNlUXVhbGlmaWVkTmFtZShxdWFsaWZpZWROYW1lLCBwcmVmaXgsIGxvY2FsTmFtZSkpIHsK
KyAgICAgICAgLy8gcXVhbGlmaWVkTmFtZS5pc0VtcHR5KCkgYWxzbyBoaXRzIHRoaXMgcGF0aCAo
bm90IE5BTUVTUEFDRV9FUlIpLCBzZWU6CisgICAgICAgIC8vIGRvbS9odG1sL2xldmVsMS9jb3Jl
L2hjX2RvY3VtZW50aW52YWxpZGNoYXJhY3RlcmV4Y2VwdGlvbmNyZWF0ZWF0dHJpYnV0ZTEuaHRt
bAorICAgICAgICAvLyBhbmQgaHR0cDovL3d3dy53My5vcmcvQnVncy9QdWJsaWMvc2hvd19idWcu
Y2dpP2lkPTUyNQogICAgICAgICBlYyA9IElOVkFMSURfQ0hBUkFDVEVSX0VSUjsKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18416</attachid>
            <date>2008-01-12 17:55:06 -0800</date>
            <delta_ts>2008-02-01 18:41:34 -0800</delta_ts>
            <desc>full patch, including test cases</desc>
            <filename>full.patch</filename>
            <type>text/plain</type>
            <size>24075</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDMvY29yZS9kb2N1bWVudHNl
dHN0cmljdGVycm9yY2hlY2tpbmcwMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9kb20veGh0
bWwvbGV2ZWwzL2NvcmUvZG9jdW1lbnRzZXRzdHJpY3RlcnJvcmNoZWNraW5nMDItZXhwZWN0ZWQu
dHh0CmluZGV4IDJmMjMzZTEuLjhiNWE3NWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2RvbS94
aHRtbC9sZXZlbDMvY29yZS9kb2N1bWVudHNldHN0cmljdGVycm9yY2hlY2tpbmcwMi1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMy9jb3JlL2RvY3VtZW50c2V0
c3RyaWN0ZXJyb3JjaGVja2luZzAyLWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDIgQEAKIFRlc3QJ
aHR0cDovL3d3dy53My5vcmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZlbDMvY29yZS9kb2N1bWVu
dHNldHN0cmljdGVycm9yY2hlY2tpbmcwMgotU3RhdHVzCWZhaWx1cmUKLU1lc3NhZ2UJTkFNRVNQ
QUNFX0VSUl9kb2N1bWVudHNldHN0cmljdGVycm9yY2hlY2tpbmcwMjogYXNzZXJ0VHJ1ZSBmYWls
ZWQKK1N0YXR1cwlTdWNjZXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1
bWVudC9jcmVhdGVBdHRyaWJ1dGVOUy1uYW1lc3BhY2UtZXJyLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L2NyZWF0ZUF0dHJpYnV0ZU5TLW5hbWVzcGFjZS1lcnIt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5ZmI5ZjIK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9jcmVhdGVB
dHRyaWJ1dGVOUy1uYW1lc3BhY2UtZXJyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM4IEBACitF
bnN1cmUgZG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlTlMgbWV0aG9kIHRocm93cyBOQU1FU1BBQ0Vf
RVJSIGF0IHByb3BlciB0aW1lcworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFT
UyBkb2N1bWVudC5jcmVhdGVBdHRyaWJ1dGVOUygpLnRvU3RyaW5nKCkgaXMgIltvYmplY3QgQXR0
cl0iCitQQVNTIGRvY3VtZW50LmNyZWF0ZUF0dHJpYnV0ZU5TKCJodHRwOi8vd3d3LmV4YW1wbGUu
Y29tIikudG9TdHJpbmcoKSBpcyAiW29iamVjdCBBdHRyXSIKK1BBU1MgZG9jdW1lbnQuY3JlYXRl
QXR0cmlidXRlTlModW5kZWZpbmVkLCB1bmRlZmluZWQpLnRvU3RyaW5nKCkgaXMgIltvYmplY3Qg
QXR0cl0iCitQQVNTIGRvY3VtZW50LmNyZWF0ZUF0dHJpYnV0ZU5TKG51bGwsIHVuZGVmaW5lZCku
dG9TdHJpbmcoKSBpcyAiW29iamVjdCBBdHRyXSIKK1BBU1MgZG9jdW1lbnQuY3JlYXRlQXR0cmli
dXRlTlModW5kZWZpbmVkLCBudWxsKSB0aHJldyBleGNlcHRpb24gY29kZSA1CitQQVNTIGRvY3Vt
ZW50LmNyZWF0ZUF0dHJpYnV0ZU5TKG51bGwsIG51bGwpIHRocmV3IGV4Y2VwdGlvbiBjb2RlIDUK
K1BBU1MgZG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlTlMobnVsbCwgIiIpIHRocmV3IGV4Y2VwdGlv
biBjb2RlIDUKK1BBU1MgZG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlTlMoIiIsICIiKSB0aHJldyBl
eGNlcHRpb24gY29kZSA1CitQQVNTIGRvY3VtZW50LmNyZWF0ZUF0dHJpYnV0ZU5TKG51bGwsICI8
ZGl2PiIpIHRocmV3IGV4Y2VwdGlvbiBjb2RlIDUKK1BBU1MgZG9jdW1lbnQuY3JlYXRlQXR0cmli
dXRlTlMobnVsbCwgIjBkaXYiKSB0aHJldyBleGNlcHRpb24gY29kZSA1CitQQVNTIGRvY3VtZW50
LmNyZWF0ZUF0dHJpYnV0ZU5TKG51bGwsICJkaSB2IikgdGhyZXcgZXhjZXB0aW9uIGNvZGUgNQor
UEFTUyBkb2N1bWVudC5jcmVhdGVBdHRyaWJ1dGVOUyhudWxsLCAiZGk8diIpIHRocmV3IGV4Y2Vw
dGlvbiBjb2RlIDUKK1BBU1MgZG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlTlMobnVsbCwgIi1kaXYi
KSB0aHJldyBleGNlcHRpb24gY29kZSA1CitQQVNTIGRvY3VtZW50LmNyZWF0ZUF0dHJpYnV0ZU5T
KG51bGwsICIuZGl2IikgdGhyZXcgZXhjZXB0aW9uIGNvZGUgNQorUEFTUyBkb2N1bWVudC5jcmVh
dGVBdHRyaWJ1dGVOUygiaHR0cDovL2V4YW1wbGUuY29tLyIsICI8ZGl2PiIpIHRocmV3IGV4Y2Vw
dGlvbiBjb2RlIDUKK1BBU1MgZG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlTlMoImh0dHA6Ly9leGFt
cGxlLmNvbS8iLCAiMGRpdiIpIHRocmV3IGV4Y2VwdGlvbiBjb2RlIDUKK1BBU1MgZG9jdW1lbnQu
Y3JlYXRlQXR0cmlidXRlTlMoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiZGk8diIpIHRocmV3IGV4
Y2VwdGlvbiBjb2RlIDUKK1BBU1MgZG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlTlMoImh0dHA6Ly9l
eGFtcGxlLmNvbS8iLCAiLWRpdiIpIHRocmV3IGV4Y2VwdGlvbiBjb2RlIDUKK1BBU1MgZG9jdW1l
bnQuY3JlYXRlQXR0cmlidXRlTlMoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiLmRpdiIpIHRocmV3
IGV4Y2VwdGlvbiBjb2RlIDUKK1BBU1MgZG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlTlMobnVsbCwg
IjpkaXYiKSB0aHJldyBleGNlcHRpb24gY29kZSAxNAorUEFTUyBkb2N1bWVudC5jcmVhdGVBdHRy
aWJ1dGVOUygiaHR0cDovL2V4YW1wbGUuY29tLyIsICI6ZGl2IikgdGhyZXcgZXhjZXB0aW9uIGNv
ZGUgMTQKK1BBU1MgZG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlTlMobnVsbCwgImQ6aXYiKSB0aHJl
dyBleGNlcHRpb24gY29kZSAxNAorUEFTUyBkb2N1bWVudC5jcmVhdGVBdHRyaWJ1dGVOUygiaHR0
cDovL2V4YW1wbGUuY29tLyIsICJ4bWw6dGVzdCIpIHRocmV3IGV4Y2VwdGlvbiBjb2RlIDE0CitQ
QVNTIGRvY3VtZW50LmNyZWF0ZUF0dHJpYnV0ZU5TKCJodHRwOi8vZXhhbXBsZS5jb20vIiwgInht
bG5zIikgdGhyZXcgZXhjZXB0aW9uIGNvZGUgMTQKK1BBU1MgZG9jdW1lbnQuY3JlYXRlQXR0cmli
dXRlTlMoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAieG1sbnM6dGVzdCIpIHRocmV3IGV4Y2VwdGlv
biBjb2RlIDE0CitQQVNTIGRvY3VtZW50LmNyZWF0ZUF0dHJpYnV0ZU5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3htbG5zLyIsICJ4OnRlc3QiKSB0aHJldyBleGNlcHRpb24gY29kZSAxNAorUEFT
UyBkb2N1bWVudC5jcmVhdGVBdHRyaWJ1dGVOUygnaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxu
cy8nLCAneG1sbnM6dGVzdCcpLnRvU3RyaW5nKCkgaXMgIltvYmplY3QgQXR0cl0iCitQQVNTIGRv
Y3VtZW50LmNyZWF0ZUF0dHJpYnV0ZU5TKCdodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1l
c3BhY2UnLCAneG1sOnRlc3QnKS50b1N0cmluZygpIGlzICJbb2JqZWN0IEF0dHJdIgorUEFTUyBk
b2N1bWVudC5jcmVhdGVBdHRyaWJ1dGVOUygnaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFt
ZXNwYWNlJywgJ3g6dGVzdCcpLnRvU3RyaW5nKCkgaXMgIltvYmplY3QgQXR0cl0iCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvY3JlYXRlQXR0cmlidXRlTlMtbmFtZXNwYWNl
LWVyci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvY3JlYXRlQXR0cmlidXRl
TlMtbmFtZXNwYWNlLWVyci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmMwY2IyYmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVu
dC9jcmVhdGVBdHRyaWJ1dGVOUy1uYW1lc3BhY2UtZXJyLmh0bWwKQEAgLTAsMCArMSwxMyBAQAor
PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8
aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24i
PjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9j
cmVhdGVBdHRyaWJ1dGVOUy1uYW1lc3BhY2UtZXJyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L2NyZWF0
ZUVsZW1lbnROUy1uYW1lc3BhY2UtZXJyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL0RvY3VtZW50L2NyZWF0ZUVsZW1lbnROUy1uYW1lc3BhY2UtZXJyLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDY2MGY5Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvY3JlYXRlRWxlbWVudE5TLW5hbWVz
cGFjZS1lcnItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzcgQEAKK0Vuc3VyZSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMgbWV0aG9kIHRocm93cyBOQU1FU1BBQ0VfRVJSIGF0IHByb3BlciB0aW1l
cworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoKS50b1N0cmluZygpIGlzICJbb2JqZWN0IEVsZW1lbnRdIgorUEFTUyBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cuZXhhbXBsZS5jb20iKS50b1N0cmluZygpIGlz
ICJbb2JqZWN0IEVsZW1lbnRdIgorUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlModW5kZWZp
bmVkLCB1bmRlZmluZWQpLnRvU3RyaW5nKCkgaXMgIltvYmplY3QgRWxlbWVudF0iCitQQVNTIGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUyhudWxsLCB1bmRlZmluZWQpLnRvU3RyaW5nKCkgaXMgIltv
YmplY3QgRWxlbWVudF0iCitQQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh1bmRlZmluZWQs
IG51bGwpIHRocmV3IGV4Y2VwdGlvbiBjb2RlIDUKK1BBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKG51bGwsIG51bGwpIHRocmV3IGV4Y2VwdGlvbiBjb2RlIDUKK1BBU1MgZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKG51bGwsICIiKSB0aHJldyBleGNlcHRpb24gY29kZSA1CitQQVNTIGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiIiwgIiIpIHRocmV3IGV4Y2VwdGlvbiBjb2RlIDUKK1BBU1Mg
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG51bGwsICI8ZGl2PiIpIHRocmV3IGV4Y2VwdGlvbiBj
b2RlIDUKK1BBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG51bGwsICIwZGl2IikgdGhyZXcg
ZXhjZXB0aW9uIGNvZGUgNQorUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMobnVsbCwgImRp
IHYiKSB0aHJldyBleGNlcHRpb24gY29kZSA1CitQQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UyhudWxsLCAiZGk8diIpIHRocmV3IGV4Y2VwdGlvbiBjb2RlIDUKK1BBU1MgZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKG51bGwsICItZGl2IikgdGhyZXcgZXhjZXB0aW9uIGNvZGUgNQorUEFTUyBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMobnVsbCwgIi5kaXYiKSB0aHJldyBleGNlcHRpb24gY29k
ZSA1CitQQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL2V4YW1wbGUuY29tLyIs
ICI8ZGl2PiIpIHRocmV3IGV4Y2VwdGlvbiBjb2RlIDUKK1BBU1MgZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vZXhhbXBsZS5jb20vIiwgIjBkaXYiKSB0aHJldyBleGNlcHRpb24gY29k
ZSA1CitQQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL2V4YW1wbGUuY29tLyIs
ICJkaTx2IikgdGhyZXcgZXhjZXB0aW9uIGNvZGUgNQorUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiLWRpdiIpIHRocmV3IGV4Y2VwdGlvbiBjb2Rl
IDUKK1BBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vZXhhbXBsZS5jb20vIiwg
Ii5kaXYiKSB0aHJldyBleGNlcHRpb24gY29kZSA1CitQQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUyhudWxsLCAiOmRpdiIpIHRocmV3IGV4Y2VwdGlvbiBjb2RlIDE0CitQQVNTIGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL2V4YW1wbGUuY29tLyIsICI6ZGl2IikgdGhyZXcgZXhj
ZXB0aW9uIGNvZGUgMTQKK1BBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG51bGwsICJkOml2
IikgdGhyZXcgZXhjZXB0aW9uIGNvZGUgMTQKK1BBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vZXhhbXBsZS5jb20vIiwgInhtbDp0ZXN0IikgdGhyZXcgZXhjZXB0aW9uIGNvZGUg
MTQKK1BBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vZXhhbXBsZS5jb20vIiwg
InhtbG5zOnRlc3QiKSB0aHJldyBleGNlcHRpb24gY29kZSAxNAorUEFTUyBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIiwgIng6dGVzdCIpIHRo
cmV3IGV4Y2VwdGlvbiBjb2RlIDE0CitQQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0
cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8nLCAneG1sbnM6dGVzdCcpLnRvU3RyaW5nKCkgaXMg
IltvYmplY3QgRWxlbWVudF0iCitQQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDov
L3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlJywgJ3htbDp0ZXN0JykudG9TdHJpbmcoKSBp
cyAiW29iamVjdCBFbGVtZW50XSIKK1BBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRw
Oi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UnLCAneDp0ZXN0JykudG9TdHJpbmcoKSBp
cyAiW29iamVjdCBFbGVtZW50XSIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVu
dC9jcmVhdGVFbGVtZW50TlMtbmFtZXNwYWNlLWVyci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vRG9jdW1lbnQvY3JlYXRlRWxlbWVudE5TLW5hbWVzcGFjZS1lcnIuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lM2U5NDRmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvY3JlYXRlRWxlbWVudE5TLW5hbWVzcGFjZS1lcnIu
aHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RU
RCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL2NyZWF0ZUVsZW1lbnROUy1uYW1lc3BhY2UtZXJyLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZG9tL0RvY3VtZW50L3Jlc291cmNlcy9URU1QTEFURS5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vRG9jdW1lbnQvcmVzb3VyY2VzL1RFTVBMQVRFLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uMTk1MWM0MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL0RvY3VtZW50L3Jlc291cmNlcy9URU1QTEFURS5odG1sCkBAIC0wLDAgKzEsMTMg
QEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1s
PgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0
aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJZT1VSX0pT
X0ZJTEVfSEVSRSI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9yZXNvdXJjZXMvY3JlYXRlQXR0cmlidXRlTlMt
bmFtZXNwYWNlLWVyci5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L3Jlc291cmNl
cy9jcmVhdGVBdHRyaWJ1dGVOUy1uYW1lc3BhY2UtZXJyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjcyNjVmMDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9Eb2N1bWVudC9yZXNvdXJjZXMvY3JlYXRlQXR0cmlidXRlTlMtbmFtZXNwYWNlLWVy
ci5qcwpAQCAtMCwwICsxLDg5IEBACitkZXNjcmlwdGlvbignRW5zdXJlIGRvY3VtZW50LmNyZWF0
ZUF0dHJpYnV0ZU5TIG1ldGhvZCB0aHJvd3MgTkFNRVNQQUNFX0VSUiBhdCBwcm9wZXIgdGltZXMn
KTsKKworZnVuY3Rpb24gcXVvdGVTdHJpbmcocykgeworICAgIGlmICh0eXBlb2YgcyA9PSAic3Ry
aW5nIikgeworICAgICAgICByZXR1cm4gJyInICsgcyArICciJzsKKyAgICB9CisgICAgcmV0dXJu
ICIiICsgczsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3dXaXRoQ29kZShhLCBjb2RlKSB7Cisg
ICAgdHJ5IHsKKyAgICAgICAgdmFyIHJlc3VsdCA9IGV2YWwoYSk7CisgICAgICAgIHZhciBmYWls
dXJlU3RyaW5nID0gIiIgKyBhICsgIiByZXR1cm5lZCAiICsgcmVzdWx0OworICAgICAgICBpZiAo
cmVzdWx0IGluc3RhbmNlb2YgQXR0cikgeworICAgICAgICAgICAgZmFpbHVyZVN0cmluZyArPSAi
IHByZWZpeDogIiArIHF1b3RlU3RyaW5nKHJlc3VsdC5wcmVmaXgpOworICAgICAgICAgICAgZmFp
bHVyZVN0cmluZyArPSAiIGxvY2FsTmFtZTogIiArIHF1b3RlU3RyaW5nKHJlc3VsdC5sb2NhbE5h
bWUpOworICAgICAgICAgICAgZmFpbHVyZVN0cmluZyArPSAiIG5hbWVzcGFjZVVSSTogIiArIHF1
b3RlU3RyaW5nKHJlc3VsdC5uYW1lc3BhY2VVUkkpOworICAgICAgICB9CisgICAgICAgIGZhaWx1
cmVTdHJpbmcgKz0gIiwgZXhwZWN0ZWQgZXhjZXB0aW9uIGNvZGU6ICIgKyBjb2RlOworICAgICAg
ICB0ZXN0RmFpbGVkKGZhaWx1cmVTdHJpbmcpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAg
dHJ5IHsKKyAgICAgICAgICAgIGlmIChlLmNvZGUgPT0gY29kZSkgeworICAgICAgICAgICAgICAg
IHRlc3RQYXNzZWQoIiIgKyBhICsgIiB0aHJldyBleGNlcHRpb24gY29kZSAiICsgY29kZSk7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIiIgKyBhICsg
IiB0aHJldyB3cm9uZyBleGNlcHRpb24gY29kZSAiICsgZS5jb2RlICsgIiBleHBlY3RlZCAiICsg
Y29kZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0gY2F0
Y2goZXhwKSB7fQorICAgICAgICB0ZXN0RmFpbGVkKCIiICsgYSArICIgdGhyZXcgd3JvbmcgZXhj
ZXB0aW9uOiAiICsgZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRl
c3QobmFtZSwgbmFtZXNwYWNlLCBjb2RlKSB7CisgICAgc2hvdWxkVGhyb3dXaXRoQ29kZSgiZG9j
dW1lbnQuY3JlYXRlQXR0cmlidXRlTlMoIiArIHF1b3RlU3RyaW5nKG5hbWVzcGFjZSkgKyAiLCAi
ICsgcXVvdGVTdHJpbmcobmFtZSkgKyAiKSIsIGNvZGUpOworfQorCisvLyBXZSB1c2UgbnVtYmVy
cyBpbnN0ZWFkIG9mIG5hbWVzLCBiZWNhdXNlIGl0J3Mgc2xpZ2h0bHkgZWFzaWVyIHRvIHJlYWQK
Ky8vIERPTUV4Y2VwdGlvbi5JTlZBTElEX0NIQVJBQ1RFUl9FUlIgPSA1CisvLyBET01FeGNlcHRp
b24uTkFNRVNQQUNFX0VSUiA9IDE0CisKKy8vIE1veiB0aHJvd3MgYSAiTm90IGVub3VnaCBhcmd1
bWVudHMiIGV4Y2VwdGlvbiBpbiB0aGVzZSwgd2UgZG9uJ3Q6CitzaG91bGRCZUVxdWFsVG9TdHJp
bmcoImRvY3VtZW50LmNyZWF0ZUF0dHJpYnV0ZU5TKCkudG9TdHJpbmcoKSIsICJbb2JqZWN0IEF0
dHJdIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvY3VtZW50LmNyZWF0ZUF0dHJpYnV0ZU5T
KFwiaHR0cDovL3d3dy5leGFtcGxlLmNvbVwiKS50b1N0cmluZygpIiwgIltvYmplY3QgQXR0cl0i
KTsKKworLy8gSSBleHBlY3QgdGhpcyBpcyBzb21lIG9sZCBJRS9Nb3ogcXVpcmsKK3Nob3VsZEJl
RXF1YWxUb1N0cmluZygiZG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlTlModW5kZWZpbmVkLCB1bmRl
ZmluZWQpLnRvU3RyaW5nKCkiLCAiW29iamVjdCBBdHRyXSIpOworc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJkb2N1bWVudC5jcmVhdGVBdHRyaWJ1dGVOUyhudWxsLCB1bmRlZmluZWQpLnRvU3RyaW5n
KCkiLCAiW29iamVjdCBBdHRyXSIpOworCisvLyAnJyBhcmUgZXhwZWN0ZWQgYXMgSU5WQUxJRF9D
SEFSQUNURVJfRVJSIGluc3RlYWQgb2YgTkFNRVNQQUNFX0VSUgorLy8gc2VlIGRvbS9odG1sL2xl
dmVsMS9jb3JlL2hjX2RvY3VtZW50aW52YWxpZGNoYXJhY3RlcmV4Y2VwdGlvbmNyZWF0ZWF0dHJp
YnV0ZTEuaHRtbAorLy8gYW5kIGh0dHA6Ly93d3cudzMub3JnL0J1Z3MvUHVibGljL3Nob3dfYnVn
LmNnaT9pZD01MjUKK3Rlc3QobnVsbCwgdW5kZWZpbmVkLCA1KTsKK3Rlc3QobnVsbCwgbnVsbCwg
NSk7Cit0ZXN0KCcnLCBudWxsLCA1KTsKK3Rlc3QoJycsICcnLCA1KTsKKworLy8gVGhlc2UgYXJl
IGRlZmluZWQgaW4gRE9NIExldmVsIDIgY29yZQordGVzdCgnPGRpdj4nLCBudWxsLCA1KTsKK3Rl
c3QoJzBkaXYnLCBudWxsLCA1KTsKK3Rlc3QoJ2RpIHYnLCBudWxsLCA1KTsKK3Rlc3QoJ2RpPHYn
LCBudWxsLCA1KTsKK3Rlc3QoJy1kaXYnLCBudWxsLCA1KTsKK3Rlc3QoJy5kaXYnLCBudWxsLCA1
KTsKK3Rlc3QoJzxkaXY+JywgImh0dHA6Ly9leGFtcGxlLmNvbS8iLCA1KTsKK3Rlc3QoJzBkaXYn
LCAiaHR0cDovL2V4YW1wbGUuY29tLyIsIDUpOwordGVzdCgnZGk8dicsICJodHRwOi8vZXhhbXBs
ZS5jb20vIiwgNSk7Cit0ZXN0KCctZGl2JywgImh0dHA6Ly9leGFtcGxlLmNvbS8iLCA1KTsKK3Rl
c3QoJy5kaXYnLCAiaHR0cDovL2V4YW1wbGUuY29tLyIsIDUpOwordGVzdCgnOmRpdicsIG51bGws
IDE0KTsKK3Rlc3QoJzpkaXYnLCAiaHR0cDovL2V4YW1wbGUuY29tLyIsIDE0KTsKK3Rlc3QoJ2Q6
aXYnLCBudWxsLCAxNCk7Cit0ZXN0KCd4bWw6dGVzdCcsICJodHRwOi8vZXhhbXBsZS5jb20vIiwg
MTQpOwordGVzdCgneG1sbnMnLCAiaHR0cDovL2V4YW1wbGUuY29tLyIsIDE0KTsgLy8gZnJvbSBj
cmVhdGVBdHRyaWJ1dGVOUyBzZWN0aW9uCisKKy8vIFRoZXNlIGFyZSByZXF1aXJlZCBieSBET00g
TGV2ZWwgMyBjb3JlCit0ZXN0KCd4bWxuczp0ZXN0JywgImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAx
NCk7Cit0ZXN0KCd4OnRlc3QnLCAiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8iLCAxNCk7
CisKKy8vIG1ha2Ugc3VyZSB3ZSBjYW4gc3RpbGwgY3JlYXRlIGFyYml0cmFyeSBlbG1lbnRzIGlu
IHhtbG5zIGFuZCB4bWwgbmFtZXNwYWNlcworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkb2N1bWVu
dC5jcmVhdGVBdHRyaWJ1dGVOUygnaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8nLCAneG1s
bnM6dGVzdCcpLnRvU3RyaW5nKCkiLCAiW29iamVjdCBBdHRyXSIpOworc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJkb2N1bWVudC5jcmVhdGVBdHRyaWJ1dGVOUygnaHR0cDovL3d3dy53My5vcmcvWE1M
LzE5OTgvbmFtZXNwYWNlJywgJ3htbDp0ZXN0JykudG9TdHJpbmcoKSIsICJbb2JqZWN0IEF0dHJd
Iik7CisKKy8vIERPTSBDb3JlIGRvZXMgbm90IHNlZW0gdG8gZGlzYWxsb3cgdGhpcywgYWx0aG91
Z2ggYSB2YWxpZGF0aW5nIFhNTCBwYXJzZXIgd291bGQKKy8vIHNpbmNlICJ4bWwiIGlzIGFscmVh
ZHkgaW1wbGljaXR5IGJvdW5kIHRvIHRoaXMgbmFtZXNwYWNlVVJJCitzaG91bGRCZUVxdWFsVG9T
dHJpbmcoImRvY3VtZW50LmNyZWF0ZUF0dHJpYnV0ZU5TKCdodHRwOi8vd3d3LnczLm9yZy9YTUwv
MTk5OC9uYW1lc3BhY2UnLCAneDp0ZXN0JykudG9TdHJpbmcoKSIsICJbb2JqZWN0IEF0dHJdIik7
CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vRG9jdW1lbnQvcmVzb3VyY2VzL2NyZWF0ZUVsZW1lbnROUy1uYW1lc3BhY2Ut
ZXJyLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvcmVzb3VyY2VzL2NyZWF0ZUVs
ZW1lbnROUy1uYW1lc3BhY2UtZXJyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjYxYzBlNWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1
bWVudC9yZXNvdXJjZXMvY3JlYXRlRWxlbWVudE5TLW5hbWVzcGFjZS1lcnIuanMKQEAgLTAsMCAr
MSw4OCBAQAorZGVzY3JpcHRpb24oJ0Vuc3VyZSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMgbWV0
aG9kIHRocm93cyBOQU1FU1BBQ0VfRVJSIGF0IHByb3BlciB0aW1lcycpOworCitmdW5jdGlvbiBx
dW90ZVN0cmluZyhzKSB7CisgICAgaWYgKHR5cGVvZiBzID09ICJzdHJpbmciKSB7CisgICAgICAg
IHJldHVybiAnIicgKyBzICsgJyInOworICAgIH0KKyAgICByZXR1cm4gIiIgKyBzOworfQorCitm
dW5jdGlvbiBzaG91bGRUaHJvd1dpdGhDb2RlKGEsIGNvZGUpIHsKKyAgICB0cnkgeworICAgICAg
ICB2YXIgcmVzdWx0ID0gZXZhbChhKTsKKyAgICAgICAgdmFyIGZhaWx1cmVTdHJpbmcgPSAiIiAr
IGEgKyAiIHJldHVybmVkICIgKyByZXN1bHQ7CisgICAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2Vv
ZiBFbGVtZW50KSB7CisgICAgICAgICAgICBmYWlsdXJlU3RyaW5nICs9ICIgcHJlZml4OiAiICsg
cXVvdGVTdHJpbmcocmVzdWx0LnByZWZpeCk7CisgICAgICAgICAgICBmYWlsdXJlU3RyaW5nICs9
ICIgbG9jYWxOYW1lOiAiICsgcXVvdGVTdHJpbmcocmVzdWx0LmxvY2FsTmFtZSk7CisgICAgICAg
ICAgICBmYWlsdXJlU3RyaW5nICs9ICIgbmFtZXNwYWNlVVJJOiAiICsgcXVvdGVTdHJpbmcocmVz
dWx0Lm5hbWVzcGFjZVVSSSk7CisgICAgICAgIH0KKyAgICAgICAgZmFpbHVyZVN0cmluZyArPSAi
LCBleHBlY3RlZCBleGNlcHRpb24gY29kZTogIiArIGNvZGU7CisgICAgICAgIHRlc3RGYWlsZWQo
ZmFpbHVyZVN0cmluZyk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICB0cnkgeworICAgICAg
ICAgICAgaWYgKGUuY29kZSA9PSBjb2RlKSB7CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgi
IiArIGEgKyAiIHRocmV3IGV4Y2VwdGlvbiBjb2RlICIgKyBjb2RlKTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiIiArIGEgKyAiIHRocmV3IHdyb25n
IGV4Y2VwdGlvbiBjb2RlICIgKyBlLmNvZGUgKyAiIGV4cGVjdGVkICIgKyBjb2RlKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSBjYXRjaChleHApIHt9Cisg
ICAgICAgIHRlc3RGYWlsZWQoIiIgKyBhICsgIiB0aHJldyB3cm9uZyBleGNlcHRpb246ICIgKyBl
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKworZnVuY3Rpb24gdGVzdChuYW1lLCBuYW1l
c3BhY2UsIGNvZGUpIHsKKyAgICBzaG91bGRUaHJvd1dpdGhDb2RlKCJkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoIiArIHF1b3RlU3RyaW5nKG5hbWVzcGFjZSkgKyAiLCAiICsgcXVvdGVTdHJpbmco
bmFtZSkgKyAiKSIsIGNvZGUpOworfQorCisvLyBXZSB1c2UgbnVtYmVycyBpbnN0ZWFkIG9mIG5h
bWVzLCBiZWNhdXNlIGl0J3Mgc2xpZ2h0bHkgZWFzaWVyIHRvIHJlYWQKKy8vIERPTUV4Y2VwdGlv
bi5JTlZBTElEX0NIQVJBQ1RFUl9FUlIgPSA1CisvLyBET01FeGNlcHRpb24uTkFNRVNQQUNFX0VS
UiA9IDE0CisKKy8vIE1veiB0aHJvd3MgYSAiTm90IGVub3VnaCBhcmd1bWVudHMiIGV4Y2VwdGlv
biBpbiB0aGVzZSwgd2UgZG9uJ3Q6CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygpLnRvU3RyaW5nKCkiLCAiW29iamVjdCBFbGVtZW50XSIpOworc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoXCJodHRwOi8vd3d3LmV4
YW1wbGUuY29tXCIpLnRvU3RyaW5nKCkiLCAiW29iamVjdCBFbGVtZW50XSIpOworCisvLyBJIGV4
cGVjdCB0aGlzIGlzIHNvbWUgb2xkIElFL01veiBxdWlyaworc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJkb2N1bWVudC5jcmVhdGVFbGVtZW50TlModW5kZWZpbmVkLCB1bmRlZmluZWQpLnRvU3RyaW5n
KCkiLCAiW29iamVjdCBFbGVtZW50XSIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMobnVsbCwgdW5kZWZpbmVkKS50b1N0cmluZygpIiwgIltvYmplY3Qg
RWxlbWVudF0iKTsKKworLy8gJycgYXJlIGV4cGVjdGVkIGFzIElOVkFMSURfQ0hBUkFDVEVSX0VS
UiBpbnN0ZWFkIG9mIE5BTUVTUEFDRV9FUlIKKy8vIHNlZSBkb20vaHRtbC9sZXZlbDEvY29yZS9o
Y19kb2N1bWVudGludmFsaWRjaGFyYWN0ZXJleGNlcHRpb25jcmVhdGVhdHRyaWJ1dGUxLmh0bWwK
Ky8vIGFuZCBodHRwOi8vd3d3LnczLm9yZy9CdWdzL1B1YmxpYy9zaG93X2J1Zy5jZ2k/aWQ9NTI1
Cit0ZXN0KG51bGwsIHVuZGVmaW5lZCwgNSk7Cit0ZXN0KG51bGwsIG51bGwsIDUpOwordGVzdCgn
JywgbnVsbCwgNSk7Cit0ZXN0KCcnLCAnJywgNSk7CisKKy8vIFRoZXNlIGFyZSBkZWZpbmVkIGlu
IERPTSBMZXZlbCAyIGNvcmUKK3Rlc3QoJzxkaXY+JywgbnVsbCwgNSk7Cit0ZXN0KCcwZGl2Jywg
bnVsbCwgNSk7Cit0ZXN0KCdkaSB2JywgbnVsbCwgNSk7Cit0ZXN0KCdkaTx2JywgbnVsbCwgNSk7
Cit0ZXN0KCctZGl2JywgbnVsbCwgNSk7Cit0ZXN0KCcuZGl2JywgbnVsbCwgNSk7Cit0ZXN0KCc8
ZGl2PicsICJodHRwOi8vZXhhbXBsZS5jb20vIiwgNSk7Cit0ZXN0KCcwZGl2JywgImh0dHA6Ly9l
eGFtcGxlLmNvbS8iLCA1KTsKK3Rlc3QoJ2RpPHYnLCAiaHR0cDovL2V4YW1wbGUuY29tLyIsIDUp
OwordGVzdCgnLWRpdicsICJodHRwOi8vZXhhbXBsZS5jb20vIiwgNSk7Cit0ZXN0KCcuZGl2Jywg
Imh0dHA6Ly9leGFtcGxlLmNvbS8iLCA1KTsKK3Rlc3QoJzpkaXYnLCBudWxsLCAxNCk7Cit0ZXN0
KCc6ZGl2JywgImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAxNCk7Cit0ZXN0KCdkOml2JywgbnVsbCwg
MTQpOwordGVzdCgneG1sOnRlc3QnLCAiaHR0cDovL2V4YW1wbGUuY29tLyIsIDE0KTsKKworLy8g
VGhlc2UgYXJlIHJlcXVpcmVkIGJ5IERPTSBMZXZlbCAzIGNvcmUKK3Rlc3QoJ3htbG5zOnRlc3Qn
LCAiaHR0cDovL2V4YW1wbGUuY29tLyIsIDE0KTsKK3Rlc3QoJ3g6dGVzdCcsICJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3htbG5zLyIsIDE0KTsKKworLy8gbWFrZSBzdXJlIHdlIGNhbiBzdGlsbCBj
cmVhdGUgYXJiaXRyYXJ5IGVsbWVudHMgaW4geG1sbnMgYW5kIHhtbCBuYW1lc3BhY2VzCitzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53
My5vcmcvMjAwMC94bWxucy8nLCAneG1sbnM6dGVzdCcpLnRvU3RyaW5nKCkiLCAiW29iamVjdCBF
bGVtZW50XSIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoJ2h0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZScsICd4bWw6dGVzdCcpLnRv
U3RyaW5nKCkiLCAiW29iamVjdCBFbGVtZW50XSIpOworCisvLyBET00gQ29yZSBkb2VzIG5vdCBz
ZWVtIHRvIGRpc2FsbG93IHRoaXMsIGFsdGhvdWdoIGEgdmFsaWRhdGluZyBYTUwgcGFyc2VyIHdv
dWxkCisvLyBzaW5jZSAieG1sIiBpcyBhbHJlYWR5IGltcGxpY2l0eSBib3VuZCB0byB0aGlzIG5h
bWVzcGFjZVVSSQorc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoJ2h0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZScsICd4OnRlc3QnKS50b1N0
cmluZygpIiwgIltvYmplY3QgRWxlbWVudF0iKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9
IHRydWU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKaW5kZXggY2IyODQxZi4uZTkyNmFlMSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMTAw
LDYgKzEwMCw3IEBACiAjaW5jbHVkZSAiVUlFdmVudC5oIgogI2luY2x1ZGUgIldoZWVsRXZlbnQu
aCIKICNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdC5oIgorI2luY2x1ZGUgIlhNTE5hbWVzLmgiCiAj
aW5jbHVkZSAiWE1MVG9rZW5pemVyLmgiCiAjaW5jbHVkZSAia2pzX2JpbmRpbmcuaCIKICNpbmNs
dWRlICJranNfcHJveHkuaCIKQEAgLTUwNiw3ICs1MDcsNyBAQCBQYXNzUmVmUHRyPEVsZW1lbnQ+
IERvY3VtZW50OjpjcmVhdGVFbGVtZW50KGNvbnN0IFN0cmluZyAmbmFtZSwgRXhjZXB0aW9uQ29k
ZSYgZQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KIAotICAgICAgICByZXR1cm4g
SFRNTEVsZW1lbnRGYWN0b3J5OjpjcmVhdGVIVE1MRWxlbWVudChBdG9taWNTdHJpbmcobmFtZSks
IHRoaXMsIDAsIGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIEhUTUxFbGVtZW50RmFjdG9yeTo6Y3Jl
YXRlSFRNTEVsZW1lbnQobmFtZSwgdGhpcywgMCwgZmFsc2UpOwogICAgIH0gZWxzZQogICAgICAg
ICByZXR1cm4gY3JlYXRlRWxlbWVudE5TKG51bGxBdG9tLCBuYW1lLCBlYyk7CiB9CkBAIC02OTcs
NiArNjk4LDMzIEBAIFBhc3NSZWZQdHI8Tm9kZT4gRG9jdW1lbnQ6OmFkb3B0Tm9kZShQYXNzUmVm
UHRyPE5vZGU+IHNvdXJjZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgcmV0dXJuIHNvdXJjZTsK
IH0KIAorc3RhdGljIGJvb2wgY2hlY2tGb3JOYW1lc3BhY2VFcnJvcihjb25zdCBRdWFsaWZpZWRO
YW1lJiBxTmFtZSkKK3sKKyAgICAvLyBGSVhNRTogV2UgZGVmaW5lIHRoZXNlIG1vcmUgdGhhbiBv
bmNlIGluIFdlYkNvcmUsIHdlIGNvdWxkIHVzZSBhbiBYTUxOU05hbWVzLmNwcCBzb21lZGF5Cisg
ICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyB4bWxuc1VSSSA9ICJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3htbG5zLyI7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyB4bWxucyA9ICJ4
bWxucyI7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyB4bWwgPSAieG1sIjsKKworICAg
IC8vIFRoZXNlIGNoZWNrcyBhcmUgZnJvbSBET00gQ29yZSBMZXZlbCAyLCBjcmVhdGVFbGVtZW50
TlMKKyAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwtMi1Db3JlL2NvcmUuaHRt
bCNJRC1Eb2NDckVsTlMKKyAgICBpZiAocU5hbWUucHJlZml4KCkgPT0gZW1wdHlBdG9tKSAvLyBj
cmVhdGVFbGVtZW50TlMobnVsbCwgIjpkaXYiKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBp
ZiAocU5hbWUubG9jYWxOYW1lKCkuaXNFbXB0eSgpKSAvLyBjcmVhdGVFbGVtZW50TlMobnVsbCwg
IiIpLCBjcmVhdGVFbGVtZW50TlMobnVsbCwgbnVsbCksIGNyZWF0ZUVsZW1lbnROUygpCisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIGlmICghcU5hbWUucHJlZml4KCkuaXNFbXB0eSgpICYmIHFO
YW1lLm5hbWVzcGFjZVVSSSgpLmlzTnVsbCgpKSAvLyBjcmVhdGVFbGVtZW50TlMobnVsbCwgImh0
bWw6ZGl2IikKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHFOYW1lLnByZWZpeCgpID09
IHhtbCAmJiBxTmFtZS5uYW1lc3BhY2VVUkkoKSAhPSBYTUxOYW1lczo6eG1sTmFtZXNwYWNlVVJJ
KSAvLyBjcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cuZXhhbXBsZS5jb20iLCAieG1sOmxhbmci
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIFJlcXVpcmVkIGJ5IERPTSBMZXZlbCAz
IENvcmUgYW5kIHVuc3BlY2lmaWVkIGJ5IERPTSBMZXZlbCAyIENvcmU6CisgICAgLy8gaHR0cDov
L3d3dy53My5vcmcvVFIvMjAwNC9SRUMtRE9NLUxldmVsLTMtQ29yZS0yMDA0MDQwNy9jb3JlLmh0
bWwjSUQtRG9jQ3JFbE5TCisgICAgLy8gY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3htbG5zLyIsICJmb286YmFyIiksIGNyZWF0ZUVsZW1lbnROUyhudWxsLCAieG1sbnM6
YmFyIikKKyAgICBpZiAoKHFOYW1lLnByZWZpeCgpID09IHhtbG5zICYmIHFOYW1lLm5hbWVzcGFj
ZVVSSSgpICE9IHhtbG5zVVJJKSB8fCAocU5hbWUucHJlZml4KCkgIT0geG1sbnMgJiYgcU5hbWUu
bmFtZXNwYWNlVVJJKCkgPT0geG1sbnNVUkkpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAg
IHJldHVybiBmYWxzZTsKK30KKwogLy8gRklYTUU6IFRoaXMgc2hvdWxkIHJlYWxseSBiZSBpbiBh
IHBvc3NpYmxlIEVsZW1lbnRGYWN0b3J5IGNsYXNzCiBQYXNzUmVmUHRyPEVsZW1lbnQ+IERvY3Vt
ZW50OjpjcmVhdGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHFOYW1lLCBib29sIGNyZWF0
ZWRCeVBhcnNlciwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CkBAIC03MTMsMzEgKzc0MSw0MCBAQCBQ
YXNzUmVmUHRyPEVsZW1lbnQ+IERvY3VtZW50OjpjcmVhdGVFbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHFOYW1lLCBib29sIGNyZQogICAgIGlmICghZSkKICAgICAgICAgZSA9IG5ldyBFbGVt
ZW50KHFOYW1lLCBkb2N1bWVudCgpKTsKICAgICAKKyAgICAvLyBGSVhNRTogdGhlIGVsZW1lbnQg
ZmFjdG9yaWVzIHNob3VsZCBiZSBmaXhlZCB0byBub3QgaWdub3JlIHFOYW1lLnByZWZpeCgpCisg
ICAgLy8gdGhlbiB0aGlzIGNvZGUgY2FuIGJlY29tZSBBU1NFUlQocU5hbWUgPT0gZS5xbmFtZSgp
KTsKKyAgICAvLyBUaGVuIGZ1bmN0aW9uIGNhbiBzdG9wIHRha2luZyBFeGNlcHRpb25Db2RlJiBh
cyB3ZWxsLgogICAgIGlmIChlICYmICFxTmFtZS5wcmVmaXgoKS5pc051bGwoKSkgewogICAgICAg
ICBlYyA9IDA7CiAgICAgICAgIGUtPnNldFByZWZpeChxTmFtZS5wcmVmaXgoKSwgZWMpOwogICAg
ICAgICBpZiAoZWMpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICB9ICAgIAorICAgIH0KICAg
ICAKICAgICByZXR1cm4gZS5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8RWxlbWVudD4gRG9j
dW1lbnQ6OmNyZWF0ZUVsZW1lbnROUyhjb25zdCBTdHJpbmcgJl9uYW1lc3BhY2VVUkksIGNvbnN0
IFN0cmluZyAmcXVhbGlmaWVkTmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPEVs
ZW1lbnQ+IERvY3VtZW50OjpjcmVhdGVFbGVtZW50TlMoY29uc3QgU3RyaW5nJiBfbmFtZXNwYWNl
VVJJLCBjb25zdCBTdHJpbmcmIHF1YWxpZmllZE5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewog
ICAgIFN0cmluZyBwcmVmaXgsIGxvY2FsTmFtZTsKICAgICBpZiAoIXBhcnNlUXVhbGlmaWVkTmFt
ZShxdWFsaWZpZWROYW1lLCBwcmVmaXgsIGxvY2FsTmFtZSkpIHsKKyAgICAgICAgLy8gcXVhbGlm
aWVkTmFtZS5pc0VtcHR5KCkgYWxzbyBoaXRzIHRoaXMgcGF0aCAobm90IE5BTUVTUEFDRV9FUlIp
LCBzZWU6CisgICAgICAgIC8vIGRvbS9odG1sL2xldmVsMS9jb3JlL2hjX2RvY3VtZW50aW52YWxp
ZGNoYXJhY3RlcmV4Y2VwdGlvbmNyZWF0ZWF0dHJpYnV0ZTEuaHRtbAorICAgICAgICAvLyBhbmQg
aHR0cDovL3d3dy53My5vcmcvQnVncy9QdWJsaWMvc2hvd19idWcuY2dpP2lkPTUyNQogICAgICAg
ICBlYyA9IElOVkFMSURfQ0hBUkFDVEVSX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQog
Ci0gICAgUmVmUHRyPEVsZW1lbnQ+IGU7Ci0gICAgUXVhbGlmaWVkTmFtZSBxTmFtZSA9IFF1YWxp
ZmllZE5hbWUoQXRvbWljU3RyaW5nKHByZWZpeCksIEF0b21pY1N0cmluZyhsb2NhbE5hbWUpLCBB
dG9taWNTdHJpbmcoX25hbWVzcGFjZVVSSSkpOwotICAgIAorICAgIFF1YWxpZmllZE5hbWUgcU5h
bWUocHJlZml4LCBsb2NhbE5hbWUsIF9uYW1lc3BhY2VVUkkpOworICAgIGlmIChjaGVja0Zvck5h
bWVzcGFjZUVycm9yKHFOYW1lKSkgeworICAgICAgICBlYyA9IE5BTUVTUEFDRV9FUlI7CisgICAg
ICAgIHJldHVybiAwOworICAgIH0KKwogICAgIHJldHVybiBjcmVhdGVFbGVtZW50KHFOYW1lLCBm
YWxzZSwgZWMpOwogfQogCi1FbGVtZW50ICpEb2N1bWVudDo6Z2V0RWxlbWVudEJ5SWQoY29uc3Qg
QXRvbWljU3RyaW5nJiBlbGVtZW50SWQpIGNvbnN0CitFbGVtZW50KiBEb2N1bWVudDo6Z2V0RWxl
bWVudEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBlbGVtZW50SWQpIGNvbnN0CiB7CiAgICAgaWYg
KGVsZW1lbnRJZC5sZW5ndGgoKSA9PSAwKQogICAgICAgICByZXR1cm4gMDsKQEAgLTI2NzcsNyAr
MjcxNCw3IEBAIGJvb2wgRG9jdW1lbnQ6OmlzVmFsaWROYW1lKGNvbnN0IFN0cmluZyAmbmFtZSkK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBEb2N1bWVudDo6cGFyc2VRdWFsaWZpZWROYW1l
KGNvbnN0IFN0cmluZyAmcXVhbGlmaWVkTmFtZSwgU3RyaW5nICZwcmVmaXgsIFN0cmluZyAmbG9j
YWxOYW1lKQorYm9vbCBEb2N1bWVudDo6cGFyc2VRdWFsaWZpZWROYW1lKGNvbnN0IFN0cmluZyYg
cXVhbGlmaWVkTmFtZSwgU3RyaW5nJiBwcmVmaXgsIFN0cmluZyYgbG9jYWxOYW1lKQogewogICAg
IHVuc2lnbmVkIGxlbmd0aCA9IHF1YWxpZmllZE5hbWUubGVuZ3RoKCk7CiAKQEAgLTMzOTAsMzEg
KzM0MjcsMzMgQEAgRG9jdW1lbnQgKkRvY3VtZW50Ojp0b3BEb2N1bWVudCgpIGNvbnN0CiAgICAg
cmV0dXJuIGRvYzsKIH0KIAotUGFzc1JlZlB0cjxBdHRyPiBEb2N1bWVudDo6Y3JlYXRlQXR0cmli
dXRlTlMoY29uc3QgU3RyaW5nICZuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyAmcXVhbGlmaWVk
TmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPEF0dHI+IERvY3VtZW50OjpjcmVh
dGVBdHRyaWJ1dGVOUyhjb25zdCBTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgU3RyaW5nJiBx
dWFsaWZpZWROYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBpZiAocXVhbGlmaWVkTmFt
ZS5pc051bGwoKSkgewotICAgICAgICBlYyA9IE5BTUVTUEFDRV9FUlI7CisgICAgU3RyaW5nIHBy
ZWZpeCwgbG9jYWxOYW1lOworICAgIGlmICghcGFyc2VRdWFsaWZpZWROYW1lKHF1YWxpZmllZE5h
bWUsIHByZWZpeCwgbG9jYWxOYW1lKSkgeworICAgICAgICAvLyBxdWFsaWZpZWROYW1lLmlzRW1w
dHkoKSBhbHNvIGhpdHMgdGhpcyBwYXRoIChub3QgTkFNRVNQQUNFX0VSUiksIHNlZToKKyAgICAg
ICAgLy8gZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfZG9jdW1lbnRpbnZhbGlkY2hhcmFjdGVyZXhj
ZXB0aW9uY3JlYXRlYXR0cmlidXRlMS5odG1sCisgICAgICAgIC8vIGFuZCBodHRwOi8vd3d3Lncz
Lm9yZy9CdWdzL1B1YmxpYy9zaG93X2J1Zy5jZ2k/aWQ9NTI1CisgICAgICAgIGVjID0gSU5WQUxJ
RF9DSEFSQUNURVJfRVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBTdHJpbmcg
bG9jYWxOYW1lID0gcXVhbGlmaWVkTmFtZTsKLSAgICBTdHJpbmcgcHJlZml4OwotICAgIGludCBj
b2xvbnBvczsKLSAgICBpZiAoKGNvbG9ucG9zID0gcXVhbGlmaWVkTmFtZS5maW5kKCc6JykpID49
IDApIHsKLSAgICAgICAgcHJlZml4ID0gcXVhbGlmaWVkTmFtZS5jb3B5KCk7Ci0gICAgICAgIGxv
Y2FsTmFtZSA9IHF1YWxpZmllZE5hbWUuY29weSgpOwotICAgICAgICBwcmVmaXgudHJ1bmNhdGUo
Y29sb25wb3MpOwotICAgICAgICBsb2NhbE5hbWUucmVtb3ZlKDAsIGNvbG9ucG9zKzEpOworICAg
IFF1YWxpZmllZE5hbWUgcU5hbWUocHJlZml4LCBsb2NhbE5hbWUsIG5hbWVzcGFjZVVSSSk7Cisg
ICAgaWYgKGNoZWNrRm9yTmFtZXNwYWNlRXJyb3IocU5hbWUpKSB7CisgICAgICAgIGVjID0gTkFN
RVNQQUNFX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgaWYgKCFpc1ZhbGlk
TmFtZShsb2NhbE5hbWUpKSB7Ci0gICAgICAgIGVjID0gSU5WQUxJRF9DSEFSQUNURVJfRVJSOwor
ICAgIC8vIFNwZWM6IERPTSBMZXZlbCAyIENvcmU6ICBjcmVhdGVBdHRyaWJ1dGVOUyhudWxsLCAi
eG1sbnMiKSBzaG91bGQgdGhyb3cKKyAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2
ZWwtMi1Db3JlL2NvcmUuaHRtbCNJRC1Eb2NDckF0dHJOCisgICAgaWYgKHFOYW1lLmxvY2FsTmFt
ZSgpID09ICJ4bWxucyIgJiYgcU5hbWUubmFtZXNwYWNlVVJJKCkgIT0gImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAveG1sbnMvIikgeworICAgICAgICBlYyA9IE5BTUVTUEFDRV9FUlI7CiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KLSAgICAKKwogICAgIC8vIEZJWE1FOiBBc3N1bWUgdGhpcyBpcyBh
IG1hcHBlZCBhdHRyaWJ1dGUsIHNpbmNlIGNyZWF0ZUF0dHJpYnV0ZSBpc24ndCBuYW1lc3BhY2Ut
YXdhcmUuICBUaGVyZSdzIG5vIGhhcm0gdG8gWE1MCiAgICAgLy8gZG9jdW1lbnRzIGlmIHdlJ3Jl
IHdyb25nLgotICAgIHJldHVybiBuZXcgQXR0cigwLCB0aGlzLCBuZXcgTWFwcGVkQXR0cmlidXRl
KFF1YWxpZmllZE5hbWUocHJlZml4LCBsb2NhbE5hbWUsIG5hbWVzcGFjZVVSSSksIFN0cmluZ0lt
cGw6OmVtcHR5KCkpKTsKKyAgICByZXR1cm4gbmV3IEF0dHIoMCwgdGhpcywgbmV3IE1hcHBlZEF0
dHJpYnV0ZShxTmFtZSwgU3RyaW5nSW1wbDo6ZW1wdHkoKSkpOwogfQogCiAjaWYgRU5BQkxFKFNW
RykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbCBiL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmlkbAppbmRleCA2ZGU1MWQ3Li45MzlmMzA0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5pZGwKKysrIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCkBAIC01NSwxMCAr
NTUsMTAgQEAgbW9kdWxlIGNvcmUgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW4gYm9vbGVhbiBkZWVwKQogICAgICAgICAgICAgcmFpc2VzIChET01FeGNlcHRpb24p
OwogICAgICAgICBbT2xkU3R5bGVPYmpDXSBFbGVtZW50IGNyZWF0ZUVsZW1lbnROUyhpbiBbQ29u
dmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBuYW1lc3BhY2VVUkksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIERPTVN0cmluZyBxdWFsaWZp
ZWROYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
biBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBxdWFsaWZpZWROYW1lKQogICAg
ICAgICAgICAgcmFpc2VzIChET01FeGNlcHRpb24pOwogICAgICAgICBbT2xkU3R5bGVPYmpDXSBB
dHRyIGNyZWF0ZUF0dHJpYnV0ZU5TKGluIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3Ry
aW5nIG5hbWVzcGFjZVVSSSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbiBET01TdHJpbmcgcXVhbGlmaWVkTmFtZSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERP
TVN0cmluZyBxdWFsaWZpZWROYW1lKQogICAgICAgICAgICAgcmFpc2VzIChET01FeGNlcHRpb24p
OwogICAgICAgICBbT2xkU3R5bGVPYmpDXSBOb2RlTGlzdCBnZXRFbGVtZW50c0J5VGFnTmFtZU5T
KGluIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIG5hbWVzcGFjZVVSSSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBE
T01TdHJpbmcgbG9jYWxOYW1lKTsK
</data>
<flag name="review"
          id="8046"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>18427</attachid>
            <date>2008-01-13 16:19:50 -0800</date>
            <delta_ts>2008-01-13 16:59:29 -0800</delta_ts>
            <desc>Gecko tests, some with explanations</desc>
            <filename>ce.html</filename>
            <type>text/html</type>
            <size>4824</size>
            <attacher name="Jeff Walden (remove +bwo to email)">jwalden+bwo</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KICA8dGl0bGU+Y3JlYXRlRWxlbWVudE5TIHRl
c3RzPC90aXRsZT4KICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CmZ1bmN0aW9uIHJl
cG9ydChtKQp7CiAgdmFyIGMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGFpbmVyIik7
CiAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJwIik7CiAgZS50ZXh0Q29udGVudCA9
IG07CiAgYy5hcHBlbmRDaGlsZChlKTsKfQoKZnVuY3Rpb24gYXNzZXJ0KGMsIG0pCnsKICBpZiAo
IWMpCiAgICByZXBvcnQoIkZBSUw6ICIgKyBtKTsKICBlbHNlCiAgICByZXBvcnQoIlBBU1M6ICIg
KyBtKTsKfQoKZnVuY3Rpb24gYXNzZXJ0RXF1YWxzKGFjdHVhbCwgZXhwZWN0LCBtKQp7CiAgYXNz
ZXJ0KGFjdHVhbCA9PT0gZXhwZWN0LCBtICsgIjsgZXhwZWN0ZWQgIiArIGV4cGVjdCArICIsIGdv
dCAiICsgYWN0dWFsKTsKfQoKdmFyIGFsbE5TVGVzdHMgPQogIFsKICAgeyBhcmdzOiBbdW5kZWZp
bmVkLCB1bmRlZmluZWRdIH0sCiAgIHsgYXJnczogW251bGwsIHVuZGVmaW5lZF0gfSwKICAgeyBh
cmdzOiBbdW5kZWZpbmVkLCBudWxsXSwgY29kZTogNSB9LAogICB7IGFyZ3M6IFtudWxsLCBudWxs
XSwgY29kZTogNSB9LAogICB7IGFyZ3M6IFtudWxsLCAiIl0sIGNvZGU6IDUgfSwKICAgeyBhcmdz
OiBbIiIsIG51bGxdLCBjb2RlOiA1IH0sCiAgIHsgYXJnczogWyIiLCAiIl0sIGNvZGU6IDUgfSwK
ICAgeyBhcmdzOiBbbnVsbCwgIjxkaXY+Il0sIGNvZGU6IDUgfSwKICAgeyBhcmdzOiBbbnVsbCwg
IjBkaXYiXSwgY29kZTogNSB9LAogICB7IGFyZ3M6IFtudWxsLCAiZGkgdiJdLCBjb2RlOiA1IH0s
CiAgIHsgYXJnczogW251bGwsICJkaTx2Il0sIGNvZGU6IDUgfSwKICAgeyBhcmdzOiBbbnVsbCwg
Ii1kaXYiXSwgY29kZTogNSB9LAogICB7IGFyZ3M6IFtudWxsLCAiLmRpdiJdLCBjb2RlOiA1IH0s
CiAgIHsgYXJnczogWyJodHRwOi8vZXhhbXBsZS5jb20vIiwgIjxkaXY+Il0sIGNvZGU6IDUgfSwK
ICAgeyBhcmdzOiBbImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiMGRpdiJdLCBjb2RlOiA1IH0sCiAg
IHsgYXJnczogWyJodHRwOi8vZXhhbXBsZS5jb20vIiwgImRpPHYiXSwgY29kZTogNSB9LAogICB7
IGFyZ3M6IFsiaHR0cDovL2V4YW1wbGUuY29tLyIsICItZGl2Il0sIGNvZGU6IDUgfSwKICAgeyBh
cmdzOiBbImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiLmRpdiJdLCBjb2RlOiA1IH0sCiAgIHsgYXJn
czogW251bGwsICI6ZGl2Il0sIGNvZGU6IDUsIG1lc3NhZ2U6ICJjb2xvbiBhdCBzdGFydCBtYWtl
cyBpdCBib3RoIGludmFsaWQgWE1MIG5hbWUgYW5kIGludmFsaWQgUU5hbWUsIEdlY2tvIGNob29z
ZXMgSU5WQUxJRF9DSEFSIiB9LAogICB7IGFyZ3M6IFtudWxsLCAiZGl2OiJdLCBjb2RlOiAxNCB9
LAogICB7IGFyZ3M6IFsiaHR0cDovL2V4YW1wbGUuY29tLyIsICI6ZGl2Il0sIGNvZGU6IDUsIG1l
c3NhZ2U6ICJub3QgdmFsaWQgWE1MIG5hbWUgYmVjYXVzZSBhdCBzdGFydCwgaGVuY2UgaW52YWxp
ZCBjaGFyYWN0ZXIiIH0sCiAgIHsgYXJnczogWyJodHRwOi8vZXhhbXBsZS5jb20vIiwgImRpdjoi
XSwgY29kZTogMTQsIG1lc3NhZ2U6ICJ2YWxpZCBYTUwgbmFtZSwgaW52YWxpZCBRTmFtZSIgfSwK
ICAgeyBhcmdzOiBbbnVsbCwgImQ6aXYiXSwgY29kZTogMTQsIG1lc3NhZ2U6ICJ2YWxpZCBYTUwg
bmFtZSwgaW52YWxpZCBRTmFtZSIgfSwKICAgeyBhcmdzOiBbbnVsbCwgImE6YjpjIl0sIGNvZGU6
IDE0LCBtZXNzYWdlOiAidmFsaWQgWE1MIG5hbWUsIG5vdCBhIHZhbGlkIFFOYW1lIiB9LAogICB7
IGFyZ3M6IFsiaHR0cDovL2V4YW1wbGUuY29tLyIsICJhOmI6YyJdLCBjb2RlOiAxNCwgbWVzc2Fn
ZTogInZhbGlkIFhNTCBuYW1lLCBub3QgYSB2YWxpZCBRTmFtZSIgfSwKICAgeyBhcmdzOiBbbnVs
bCwgImE6OmMiXSwgY29kZTogNSwgbWVzc2FnZTogInZhbGlkIFhNTCBuYW1lLCBub3QgYSB2YWxp
ZCBRTmFtZSIgfSwKICAgeyBhcmdzOiBbImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiYTo6YyJdLCBj
b2RlOiA1LCBtZXNzYWdlOiAidmFsaWQgWE1MIG5hbWUsIG5vdCBhIHZhbGlkIFFOYW1lIiB9LAog
ICB7IGFyZ3M6IFsiaHR0cDovL2V4YW1wbGUuY29tLyIsICJhOjAiXSwgY29kZTogNSwgbWVzc2Fn
ZTogInZhbGlkIFhNTCBuYW1lLCBub3QgYSB2YWxpZCBRTmFtZSIgfSwKICAgeyBhcmdzOiBbImh0
dHA6Ly9leGFtcGxlLmNvbS8iLCAiMDphIl0sIGNvZGU6IDUsIG1lc3NhZ2U6ICIwIGF0IHN0YXJ0
IG1ha2VzIGl0IG5vdCBhIHZhbGlkIFhNTCBuYW1lIiB9LAogICB7IGFyZ3M6IFsiaHR0cDovL2V4
YW1wbGUuY29tLyIsICJhOl8iXSB9LAoKICAgLy8gQ29tYmluaW5nQ2hhciwgd2hpY2ggaXMgTkNO
YW1lQ2hhciBidXQgbm90IChMZXR0ZXIgfCAiXyIpIHNvIGludmFsaWQgYXQgc3RhcnQgb2YgTkNO
YW1lCiAgIHsgYXJnczogWyJodHRwOi8vZXhhbXBsZS5jb20vIiwgImE6XHUwQkM2Il0sIGNvZGU6
IDE0LAogICAgIG1lc3NhZ2U6ICJub24tQVNDSUkgY2hhcmFjdGVyIGFmdGVyIGNvbG9uIGlzIENv
bWJpbmluZ0NoYXIsIHdoaWNoIGlzICIgKwogICAgICAgICAgICAgICJOQ05hbWVDaGFyIGJ1dCBu
b3QgKExldHRlciB8IFwiX1wiKSBzbyBpbnZhbGlkIGF0IHN0YXJ0IG9mICIgKwogICAgICAgICAg
ICAgICJOQ05hbWUgKGJ1dCBzdGlsbCBhIHZhbGlkIFhNTCBuYW1lLCBoZW5jZSBub3QgNSkiIH0s
CgogICAvLyBDb21iaW5pbmdDaGFyLCB3aGljaCBpcyBOQ05hbWVDaGFyIGJ1dCBub3QgKExldHRl
ciB8ICJfIikgc28gaW52YWxpZCBhdCBzdGFydCBvZiBOQ05hbWUKICAgeyBhcmdzOiBbImh0dHA6
Ly9leGFtcGxlLmNvbS8iLCAiXHUwQkM2OmEiXSwgY29kZTogNSwKICAgICBtZXNzYWdlOiAibm9u
LUFTQ0lJIGNoYXJhY3RlciBhZnRlciBjb2xvbiBpcyBDb21iaW5pbmdDaGFyLCB3aGljaCBpcyAi
ICsKICAgICAgICAgICAgICAiTkNOYW1lQ2hhciBidXQgbm90IChMZXR0ZXIgfCBcIl9cIikgc28g
aW52YWxpZCBhdCBzdGFydCBvZiAiICsKICAgICAgICAgICAgICAiTkNOYW1lIiB9LAoKICAgeyBh
cmdzOiBbImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiYTphXHUwQkM2Il0gfSwKICAgeyBhcmdzOiBb
Imh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiYVx1MEJDNjphIl0gfSwKICAgeyBhcmdzOiBbImh0dHA6
Ly9leGFtcGxlLmNvbS8iLCAieG1sOnRlc3QiXSwgY29kZTogMTQsIG1lc3NhZ2U6ICJiaW5kaW5n
IHhtbCBwcmVmaXggd3JvbmciIH0sCiAgIHsgYXJnczogWyJodHRwOi8vZXhhbXBsZS5jb20vIiwg
InhtbG5zOnRlc3QiXSwgY29kZTogMTQsIG1lc3NhZ2U6ICJiaW5kaW5nIHhtbG5zIHByZWZpeCB3
cm9uZyIgfSwKICAgeyBhcmdzOiBbImh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIiwgIng6
dGVzdCJdLCBjb2RlOiAxNCwgbWVzc2FnZTogImJpbmRpbmcgbmFtZXNwYWNlIG5hbWVzcGFjZSB0
byB3cm9uZyBwcmVmaXgiIH0sCiAgIHsgYXJnczogWyJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3ht
bG5zLyIsICJ4bWxuczp0ZXN0Il0gfSwKICAgeyBhcmdzOiBbImh0dHA6Ly93d3cudzMub3JnL1hN
TC8xOTk4L25hbWVzcGFjZSIsICJ4bWw6dGVzdCJdIH0sCiAgIHsgYXJnczogWyJodHRwOi8vd3d3
LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiLCAieDp0ZXN0Il0gfSwKICBdOwoKZnVuY3Rpb24g
c291cmNlaWZ5KHYpCnsKICBzd2l0Y2ggKHR5cGVvZiB2KQogIHsKICAgIGNhc2UgInVuZGVmaW5l
ZCI6CiAgICAgIHJldHVybiB2OwoKICAgIGNhc2UgInN0cmluZyI6CiAgICAgIHJldHVybiAnIicg
KyB2LnJlcGxhY2UoJyInLCAnXFwiJykgKyAnIic7CgogICAgZGVmYXVsdDoKICAgICAgcmV0dXJu
IFN0cmluZyh2KTsKICB9Cn0KCmZ1bmN0aW9uIHJ1bk5TVGVzdHMoKQp7CiAgdmFyIGNyZWF0ZUVs
ZW1lbnROUyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUzsKICB2YXIgZG9jID0gZG9jdW1lbnQ7
CgogIGZvciAodmFyIGkgPSAwLCBzeiA9IGFsbE5TVGVzdHMubGVuZ3RoOyBpIDwgc3o7IGkrKykK
ICB7CiAgICB2YXIgdGVzdCA9IGFsbE5TVGVzdHNbaV07CgogICAgdmFyIGNvZGUgPSAtMTsKICAg
IHZhciBhcmdTdHIgPSBzb3VyY2VpZnkodGVzdC5hcmdzWzBdKSArICIsICIgKyBzb3VyY2VpZnko
dGVzdC5hcmdzWzFdKTsKICAgIHRyeQogICAgewogICAgICBjcmVhdGVFbGVtZW50TlMuYXBwbHko
ZG9jLCB0ZXN0LmFyZ3MpOwogICAgICB2YXIgbXNnID0gImV4cGVjdGVkIG5vIGV4Y2VwdGlvbiBm
b3IgY3JlYXRlRWxlbWVudE5TKCIgKyBhcmdTdHIgKyAiKSI7CiAgICAgIGlmICgibWVzc2FnZSIg
aW4gdGVzdCkKICAgICAgICBtc2cgKz0gIjsgIiArIHRlc3QubWVzc2FnZTsKICAgICAgYXNzZXJ0
KCEoY29kZSBpbiB0ZXN0KSwgbXNnKTsKICAgIH0KICAgIGNhdGNoIChlKQogICAgewogICAgICB2
YXIgYXJnU3RyID0gc291cmNlaWZ5KHRlc3QuYXJnc1swXSkgKyAiLCAiICsgc291cmNlaWZ5KHRl
c3QuYXJnc1sxXSk7CiAgICAgIG1zZyA9ICJleGNlcHRpb24gY29kZSBmb3IgY3JlYXRlRWxlbWVu
dE5TKCIgKyBhcmdTdHIgKyAiKSI7CiAgICAgIGlmICgibWVzc2FnZSIgaW4gdGVzdCkKICAgICAg
ICBtc2cgKz0gIjsgIiArIHRlc3QubWVzc2FnZTsKICAgICAgYXNzZXJ0RXF1YWxzKGUuY29kZSwg
dGVzdC5jb2RlIHx8ICJleHBlY3RlZCBubyBleGNlcHRpb24iLCBtc2cpOwogICAgfQogIH0KfQoK
ICA8L3NjcmlwdD4KPC9oZWFkPgo8Ym9keSBvbmxvYWQ9InJ1bk5TVGVzdHMoKSI+CjxkaXYgaWQ9
ImNvbnRhaW5lciI+CjwvZGl2Pgo8L2JvZHk+CjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>18428</attachid>
            <date>2008-01-13 16:59:29 -0800</date>
            <delta_ts>2008-01-13 16:59:29 -0800</delta_ts>
            <desc>Gecko tests, with bugs fixed</desc>
            <filename>ce.html</filename>
            <type>text/html</type>
            <size>5847</size>
            <attacher name="Jeff Walden (remove +bwo to email)">jwalden+bwo</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KICA8dGl0bGU+Y3JlYXRlRWxlbWVudE5TIHRl
c3RzPC90aXRsZT4KICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CmZ1bmN0aW9uIHJl
cG9ydChtKQp7CiAgdmFyIGMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGFpbmVyIik7
CiAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJwIik7CiAgZS50ZXh0Q29udGVudCA9
IG07CiAgYy5hcHBlbmRDaGlsZChlKTsKfQoKZnVuY3Rpb24gYXNzZXJ0KGMsIG0pCnsKICBpZiAo
IWMpCiAgICByZXBvcnQoIkZBSUw6ICIgKyBtKTsKICBlbHNlCiAgICByZXBvcnQoIlBBU1M6ICIg
KyBtKTsKfQoKZnVuY3Rpb24gYXNzZXJ0RXF1YWxzKGFjdHVhbCwgZXhwZWN0LCBtKQp7CiAgYXNz
ZXJ0KGFjdHVhbCA9PT0gZXhwZWN0LCBtICsgIjsgZXhwZWN0ZWQgIiArIGV4cGVjdCArICIsIGdv
dCAiICsgYWN0dWFsKTsKfQoKdmFyIGFsbE5TVGVzdHMgPQogIFsKICAgeyBhcmdzOiBbdW5kZWZp
bmVkLCB1bmRlZmluZWRdIH0sCiAgIHsgYXJnczogW251bGwsIHVuZGVmaW5lZF0gfSwKICAgeyBh
cmdzOiBbdW5kZWZpbmVkLCBudWxsXSwgY29kZTogNSB9LAogICB7IGFyZ3M6IFtudWxsLCBudWxs
XSwgY29kZTogNSB9LAogICB7IGFyZ3M6IFtudWxsLCAiIl0sIGNvZGU6IDUgfSwKICAgeyBhcmdz
OiBbIiIsIG51bGxdLCBjb2RlOiA1IH0sCiAgIHsgYXJnczogWyIiLCAiIl0sIGNvZGU6IDUgfSwK
ICAgeyBhcmdzOiBbbnVsbCwgIjxkaXY+Il0sIGNvZGU6IDUgfSwKICAgeyBhcmdzOiBbbnVsbCwg
IjBkaXYiXSwgY29kZTogNSB9LAogICB7IGFyZ3M6IFtudWxsLCAiZGkgdiJdLCBjb2RlOiA1IH0s
CiAgIHsgYXJnczogW251bGwsICJkaTx2Il0sIGNvZGU6IDUgfSwKICAgeyBhcmdzOiBbbnVsbCwg
Ii1kaXYiXSwgY29kZTogNSB9LAogICB7IGFyZ3M6IFtudWxsLCAiLmRpdiJdLCBjb2RlOiA1IH0s
CiAgIHsgYXJnczogWyJodHRwOi8vZXhhbXBsZS5jb20vIiwgIjxkaXY+Il0sIGNvZGU6IDUgfSwK
ICAgeyBhcmdzOiBbImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiMGRpdiJdLCBjb2RlOiA1IH0sCiAg
IHsgYXJnczogWyJodHRwOi8vZXhhbXBsZS5jb20vIiwgImRpPHYiXSwgY29kZTogNSB9LAogICB7
IGFyZ3M6IFsiaHR0cDovL2V4YW1wbGUuY29tLyIsICItZGl2Il0sIGNvZGU6IDUgfSwKICAgeyBh
cmdzOiBbImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiLmRpdiJdLCBjb2RlOiA1IH0sCiAgIHsgYXJn
czogW251bGwsICI6ZGl2Il0sIGNvZGU6IDE0IH0sCiAgIHsgYXJnczogW251bGwsICJkaXY6Il0s
IGNvZGU6IDE0IH0sCiAgIHsgYXJnczogWyJodHRwOi8vZXhhbXBsZS5jb20vIiwgIjpkaXYiXSwg
Y29kZTogMTQgfSwKICAgeyBhcmdzOiBbImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiZGl2OiJdLCBj
b2RlOiAxNCB9LAogICB7IGFyZ3M6IFtudWxsLCAiZDppdiJdLCBjb2RlOiAxNCB9LAogICB7IGFy
Z3M6IFtudWxsLCAiYTpiOmMiXSwgY29kZTogMTQsIG1lc3NhZ2U6ICJ2YWxpZCBYTUwgbmFtZSwg
aW52YWxpZCBRTmFtZSIgfSwKICAgeyBhcmdzOiBbImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiYTpi
OmMiXSwgY29kZTogMTQsIG1lc3NhZ2U6ICJ2YWxpZCBYTUwgbmFtZSwgaW52YWxpZCBRTmFtZSIg
fSwKICAgeyBhcmdzOiBbbnVsbCwgImE6OmMiXSwgY29kZTogMTQsIG1lc3NhZ2U6ICJ2YWxpZCBY
TUwgbmFtZSwgaW52YWxpZCBRTmFtZSIgfSwKICAgeyBhcmdzOiBbImh0dHA6Ly9leGFtcGxlLmNv
bS8iLCAiYTo6YyJdLCBjb2RlOiAxNCwgbWVzc2FnZTogInZhbGlkIFhNTCBuYW1lLCBpbnZhbGlk
IFFOYW1lIiB9LAogICB7IGFyZ3M6IFsiaHR0cDovL2V4YW1wbGUuY29tLyIsICJhOjAiXSwgY29k
ZTogNSwgbWVzc2FnZTogInZhbGlkIFhNTCBuYW1lLCBub3QgYSB2YWxpZCBRTmFtZSIgfSwKICAg
eyBhcmdzOiBbImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiMDphIl0sIGNvZGU6IDUsIG1lc3NhZ2U6
ICIwIGF0IHN0YXJ0IG1ha2VzIGl0IG5vdCBhIHZhbGlkIFhNTCBuYW1lIiB9LAogICB7IGFyZ3M6
IFsiaHR0cDovL2V4YW1wbGUuY29tLyIsICJhOl8iXSB9LAogICB7IGFyZ3M6IFsiaHR0cDovL2V4
YW1wbGUuY29tLyIsICJhOlx1MEJDNiJdLCBjb2RlOiAxNCwKICAgICBtZXNzYWdlOiAibm9uLUFT
Q0lJIGNoYXJhY3RlciBhZnRlciBjb2xvbiBpcyBDb21iaW5pbmdDaGFyLCB3aGljaCBpcyAiICsK
ICAgICAgICAgICAgICAiTkNOYW1lQ2hhciBidXQgbm90IChMZXR0ZXIgfCBcIl9cIikgc28gaW52
YWxpZCBhdCBzdGFydCBvZiAiICsKICAgICAgICAgICAgICAiTkNOYW1lIChidXQgc3RpbGwgYSB2
YWxpZCBYTUwgbmFtZSwgaGVuY2Ugbm90IDUpIiB9LAogICB7IGFyZ3M6IFsiaHR0cDovL2V4YW1w
bGUuY29tLyIsICJcdTBCQzY6YSJdLCBjb2RlOiAxNCwKICAgICBtZXNzYWdlOiAibm9uLUFTQ0lJ
IGNoYXJhY3RlciBhZnRlciBjb2xvbiBpcyBDb21iaW5pbmdDaGFyLCB3aGljaCBpcyAiICsKICAg
ICAgICAgICAgICAiTkNOYW1lQ2hhciBidXQgbm90IChMZXR0ZXIgfCBcIl9cIikgc28gaW52YWxp
ZCBhdCBzdGFydCBvZiAiICsKICAgICAgICAgICAgICAiTkNOYW1lIChHZWNrbyBjaG9vc2VzIHRv
IHRocm93IDE0IGhlcmUsIGJ1dCBlaXRoZXIgaXMgdmFsaWQgIiArCiAgICAgICAgICAgICAgImFz
IHRoaXMgaXMgYm90aCBhbiBpbnZhbGlkIFhNTCBuYW1lIGFuZCBhbiBpbnZhbGlkIFFOYW1lKSIg
fSwKICAgeyBhcmdzOiBbImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiYTphXHUwQkM2Il0gfSwKICAg
eyBhcmdzOiBbImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiYVx1MEJDNjphIl0gfSwKICAgeyBhcmdz
OiBbImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAieG1sOnRlc3QiXSwgY29kZTogMTQsIG1lc3NhZ2U6
ICJiaW5kaW5nIHhtbCBwcmVmaXggd3JvbmciIH0sCiAgIHsgYXJnczogWyJodHRwOi8vZXhhbXBs
ZS5jb20vIiwgInhtbG5zOnRlc3QiXSwgY29kZTogMTQsIG1lc3NhZ2U6ICJiaW5kaW5nIHhtbG5z
IHByZWZpeCB3cm9uZyIgfSwKICAgeyBhcmdzOiBbImh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1s
bnMvIiwgIng6dGVzdCJdLCBjb2RlOiAxNCwgbWVzc2FnZTogImJpbmRpbmcgbmFtZXNwYWNlIG5h
bWVzcGFjZSB0byB3cm9uZyBwcmVmaXgiIH0sCiAgIHsgYXJnczogWyJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3htbG5zLyIsICJ4bWxuczp0ZXN0Il0gfSwKICAgeyBhcmdzOiBbImh0dHA6Ly93d3cu
dzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIsICJ4bWw6dGVzdCJdIH0sCiAgIHsgYXJnczogWyJo
dHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiLCAieDp0ZXN0Il0gfSwKICBdOwoK
ZnVuY3Rpb24gc291cmNlaWZ5KHYpCnsKICBzd2l0Y2ggKHR5cGVvZiB2KQogIHsKICAgIGNhc2Ug
InVuZGVmaW5lZCI6CiAgICAgIHJldHVybiB2OwoKICAgIGNhc2UgInN0cmluZyI6CiAgICAgIHJl
dHVybiAnIicgKyB2LnJlcGxhY2UoJyInLCAnXFwiJykgKyAnIic7CgogICAgZGVmYXVsdDoKICAg
ICAgcmV0dXJuIFN0cmluZyh2KTsKICB9Cn0KCmZ1bmN0aW9uIHJ1bk5TVGVzdHMoKQp7CiAgdmFy
IGNyZWF0ZUVsZW1lbnROUyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUzsKICB2YXIgZG9jID0g
ZG9jdW1lbnQ7CgogIGZvciAodmFyIGkgPSAwLCBzeiA9IGFsbE5TVGVzdHMubGVuZ3RoOyBpIDwg
c3o7IGkrKykKICB7CiAgICB2YXIgdGVzdCA9IGFsbE5TVGVzdHNbaV07CgogICAgdmFyIGNvZGUg
PSAtMTsKICAgIHZhciBhcmdTdHIgPSBzb3VyY2VpZnkodGVzdC5hcmdzWzBdKSArICIsICIgKyBz
b3VyY2VpZnkodGVzdC5hcmdzWzFdKTsKICAgIHRyeQogICAgewogICAgICBjcmVhdGVFbGVtZW50
TlMuYXBwbHkoZG9jLCB0ZXN0LmFyZ3MpOwogICAgICB2YXIgbXNnID0gImV4cGVjdGVkIG5vIGV4
Y2VwdGlvbiBmb3IgY3JlYXRlRWxlbWVudE5TKCIgKyBhcmdTdHIgKyAiKSI7CiAgICAgIGlmICgi
bWVzc2FnZSIgaW4gdGVzdCkKICAgICAgICBtc2cgKz0gIjsgIiArIHRlc3QubWVzc2FnZTsKICAg
ICAgYXNzZXJ0KCEoY29kZSBpbiB0ZXN0KSwgbXNnKTsKICAgIH0KICAgIGNhdGNoIChlKQogICAg
ewogICAgICB2YXIgYXJnU3RyID0gc291cmNlaWZ5KHRlc3QuYXJnc1swXSkgKyAiLCAiICsgc291
cmNlaWZ5KHRlc3QuYXJnc1sxXSk7CiAgICAgIG1zZyA9ICJleGNlcHRpb24gY29kZSBmb3IgY3Jl
YXRlRWxlbWVudE5TKCIgKyBhcmdTdHIgKyAiKSI7CiAgICAgIGlmICgibWVzc2FnZSIgaW4gdGVz
dCkKICAgICAgICBtc2cgKz0gIjsgIiArIHRlc3QubWVzc2FnZTsKICAgICAgYXNzZXJ0RXF1YWxz
KGUuY29kZSwgdGVzdC5jb2RlIHx8ICJleHBlY3RlZCBubyBleGNlcHRpb24iLCBtc2cpOwogICAg
fQogIH0KfQoKZnVuY3Rpb24gYWNpZDMoKSB7CiAgICAgIC8vIHRlc3QgMjM6IGNyZWF0ZUVsZW1l
bnROUygpIHdpdGggaW52YWxpZCB0YWcgbmFtZXMKICAgICAgdmFyIHRlc3QgPSBmdW5jdGlvbiAo
bmFtZSwgbnMsIGNvZGUpIHsKICAgICAgICB2YXIgcmVzdWx0OwogICAgICAgIHRyeSB7CiAgICAg
ICAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG5zLCBuYW1lKTsKICAgICAg
ICB9IGNhdGNoIChlKSB7CiAgICAgICAgICByZXN1bHQgPSBlOwogICAgICAgIH0KICAgICAgICBh
c3NlcnQocmVzdWx0LCAibm8gZXhjZXB0aW9uIGZvciBjcmVhdGVFbGVtZW50TlMoJyIgKyBucyAr
ICInLCAnIiArIG5hbWUgKyAiJykiKTsKICAgICAgICBhc3NlcnRFcXVhbHMocmVzdWx0LmNvZGUs
IGNvZGUsICJ3cm9uZyBleGNlcHRpb24gZm9yIGNyZWF0ZUVsZW1lbnROUygnIiArIG5zICsgIics
ICciICsgbmFtZSArICInKSIpOwogICAgICB9CiAgICAgIHRlc3QoJzxkaXY+JywgbnVsbCwgNSk7
CiAgICAgIHRlc3QoJzBkaXYnLCBudWxsLCA1KTsKICAgICAgdGVzdCgnZGkgdicsIG51bGwsIDUp
OwogICAgICB0ZXN0KCdkaTx2JywgbnVsbCwgNSk7CiAgICAgIHRlc3QoJy1kaXYnLCBudWxsLCA1
KTsKICAgICAgdGVzdCgnLmRpdicsIG51bGwsIDUpOwogICAgICB0ZXN0KCc8ZGl2PicsICJodHRw
Oi8vZXhhbXBsZS5jb20vIiwgNSk7CiAgICAgIHRlc3QoJzBkaXYnLCAiaHR0cDovL2V4YW1wbGUu
Y29tLyIsIDUpOwogICAgICB0ZXN0KCdkaTx2JywgImh0dHA6Ly9leGFtcGxlLmNvbS8iLCA1KTsK
ICAgICAgdGVzdCgnLWRpdicsICJodHRwOi8vZXhhbXBsZS5jb20vIiwgNSk7CiAgICAgIHRlc3Qo
Jy5kaXYnLCAiaHR0cDovL2V4YW1wbGUuY29tLyIsIDUpOwogICAgICB0ZXN0KCc6ZGl2JywgbnVs
bCwgMTQpOwogICAgICB0ZXN0KCc6ZGl2JywgImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAxNCk7CiAg
ICAgIHRlc3QoJ2Q6aXYnLCBudWxsLCAxNCk7CiAgICAgIHRlc3QoJ3htbDp0ZXN0JywgImh0dHA6
Ly9leGFtcGxlLmNvbS8iLCAxNCk7CiAgICAgIHRlc3QoJ3htbG5zOnRlc3QnLCAiaHR0cDovL2V4
YW1wbGUuY29tLyIsIDE0KTsgLy8gKHRlY2huaWNhbGx5IGEgRE9NMyBDb3JlIHRlc3QpCiAgICAg
IHRlc3QoJ3g6dGVzdCcsICJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyIsIDE0KTsgLy8g
KHRlY2huaWNhbGx5IGEgRE9NMyBDb3JlIHRlc3QpCiAgICAgIGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8iLCAneG1sbnM6dGVzdCcpOyAvLyAo
dGVjaG5pY2FsbHkgYSBET00zIENvcmUgdGVzdCkKICAgICAgcmV0dXJuIDI7CiAgICB9CgogIDwv
c2NyaXB0Pgo8L2hlYWQ+Cjxib2R5IG9ubG9hZD0icnVuTlNUZXN0cygpOyI+CjxkaXYgaWQ9ImNv
bnRhaW5lciI+CjwvZGl2Pgo8L2JvZHk+CjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18866</attachid>
            <date>2008-02-01 18:39:37 -0800</date>
            <delta_ts>2008-02-10 13:34:15 -0800</delta_ts>
            <desc>Address Darin&apos;s comments and update tests to match mozilla</desc>
            <filename>Address-Darin-s-comments-and-update-tests-to-match-mozilla.patch</filename>
            <type>text/plain</type>
            <size>36625</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">NDVlMjA1YjBmZWY2YzhmNTVkNTYxODUxMTNiN2IyZmE5ZWU2ZDY4ZApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvY3JlYXRlQXR0cmlidXRlTlMtbmFtZXNwYWNlLWVy
ci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9jcmVhdGVBdHRy
aWJ1dGVOUy1uYW1lc3BhY2UtZXJyLWV4cGVjdGVkLnR4dAppbmRleCBkOWZiOWYyLi5jY2RmMjU2
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9jcmVhdGVBdHRyaWJ1
dGVOUy1uYW1lc3BhY2UtZXJyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9Eb2N1bWVudC9jcmVhdGVBdHRyaWJ1dGVOUy1uYW1lc3BhY2UtZXJyLWV4cGVjdGVkLnR4dApA
QCAtMSwzNyArMSw1MSBAQAotRW5zdXJlIGRvY3VtZW50LmNyZWF0ZUF0dHJpYnV0ZU5TIG1ldGhv
ZCB0aHJvd3MgTkFNRVNQQUNFX0VSUiBhdCBwcm9wZXIgdGltZXMKK2NyZWF0ZUF0dGlyYnV0ZU5T
IHRlc3RzIGFkYXB0ZWQgZnJvbSBjcmVhdGVFbGVtZW50TlMgdGVzdHMgYXR0YWNoZWQgdG8gd2Vi
a2l0IGJ1ZyAxNjgzMwogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAogUEFTUyBkb2N1
bWVudC5jcmVhdGVBdHRyaWJ1dGVOUygpLnRvU3RyaW5nKCkgaXMgIltvYmplY3QgQXR0cl0iCiBQ
QVNTIGRvY3VtZW50LmNyZWF0ZUF0dHJpYnV0ZU5TKCJodHRwOi8vd3d3LmV4YW1wbGUuY29tIiku
dG9TdHJpbmcoKSBpcyAiW29iamVjdCBBdHRyXSIKLVBBU1MgZG9jdW1lbnQuY3JlYXRlQXR0cmli
dXRlTlModW5kZWZpbmVkLCB1bmRlZmluZWQpLnRvU3RyaW5nKCkgaXMgIltvYmplY3QgQXR0cl0i
Ci1QQVNTIGRvY3VtZW50LmNyZWF0ZUF0dHJpYnV0ZU5TKG51bGwsIHVuZGVmaW5lZCkudG9TdHJp
bmcoKSBpcyAiW29iamVjdCBBdHRyXSIKLVBBU1MgZG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlTlMo
dW5kZWZpbmVkLCBudWxsKSB0aHJldyBleGNlcHRpb24gY29kZSA1Ci1QQVNTIGRvY3VtZW50LmNy
ZWF0ZUF0dHJpYnV0ZU5TKG51bGwsIG51bGwpIHRocmV3IGV4Y2VwdGlvbiBjb2RlIDUKLVBBU1Mg
ZG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlTlMobnVsbCwgIiIpIHRocmV3IGV4Y2VwdGlvbiBjb2Rl
IDUKLVBBU1MgZG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlTlMoIiIsICIiKSB0aHJldyBleGNlcHRp
b24gY29kZSA1Ci1QQVNTIGRvY3VtZW50LmNyZWF0ZUF0dHJpYnV0ZU5TKG51bGwsICI8ZGl2PiIp
IHRocmV3IGV4Y2VwdGlvbiBjb2RlIDUKLVBBU1MgZG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlTlMo
bnVsbCwgIjBkaXYiKSB0aHJldyBleGNlcHRpb24gY29kZSA1Ci1QQVNTIGRvY3VtZW50LmNyZWF0
ZUF0dHJpYnV0ZU5TKG51bGwsICJkaSB2IikgdGhyZXcgZXhjZXB0aW9uIGNvZGUgNQotUEFTUyBk
b2N1bWVudC5jcmVhdGVBdHRyaWJ1dGVOUyhudWxsLCAiZGk8diIpIHRocmV3IGV4Y2VwdGlvbiBj
b2RlIDUKLVBBU1MgZG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlTlMobnVsbCwgIi1kaXYiKSB0aHJl
dyBleGNlcHRpb24gY29kZSA1Ci1QQVNTIGRvY3VtZW50LmNyZWF0ZUF0dHJpYnV0ZU5TKG51bGws
ICIuZGl2IikgdGhyZXcgZXhjZXB0aW9uIGNvZGUgNQotUEFTUyBkb2N1bWVudC5jcmVhdGVBdHRy
aWJ1dGVOUygiaHR0cDovL2V4YW1wbGUuY29tLyIsICI8ZGl2PiIpIHRocmV3IGV4Y2VwdGlvbiBj
b2RlIDUKLVBBU1MgZG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlTlMoImh0dHA6Ly9leGFtcGxlLmNv
bS8iLCAiMGRpdiIpIHRocmV3IGV4Y2VwdGlvbiBjb2RlIDUKLVBBU1MgZG9jdW1lbnQuY3JlYXRl
QXR0cmlidXRlTlMoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiZGk8diIpIHRocmV3IGV4Y2VwdGlv
biBjb2RlIDUKLVBBU1MgZG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlTlMoImh0dHA6Ly9leGFtcGxl
LmNvbS8iLCAiLWRpdiIpIHRocmV3IGV4Y2VwdGlvbiBjb2RlIDUKLVBBU1MgZG9jdW1lbnQuY3Jl
YXRlQXR0cmlidXRlTlMoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiLmRpdiIpIHRocmV3IGV4Y2Vw
dGlvbiBjb2RlIDUKLVBBU1MgZG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlTlMobnVsbCwgIjpkaXYi
KSB0aHJldyBleGNlcHRpb24gY29kZSAxNAotUEFTUyBkb2N1bWVudC5jcmVhdGVBdHRyaWJ1dGVO
UygiaHR0cDovL2V4YW1wbGUuY29tLyIsICI6ZGl2IikgdGhyZXcgZXhjZXB0aW9uIGNvZGUgMTQK
LVBBU1MgZG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlTlMobnVsbCwgImQ6aXYiKSB0aHJldyBleGNl
cHRpb24gY29kZSAxNAotUEFTUyBkb2N1bWVudC5jcmVhdGVBdHRyaWJ1dGVOUygiaHR0cDovL2V4
YW1wbGUuY29tLyIsICJ4bWw6dGVzdCIpIHRocmV3IGV4Y2VwdGlvbiBjb2RlIDE0Ci1QQVNTIGRv
Y3VtZW50LmNyZWF0ZUF0dHJpYnV0ZU5TKCJodHRwOi8vZXhhbXBsZS5jb20vIiwgInhtbG5zIikg
dGhyZXcgZXhjZXB0aW9uIGNvZGUgMTQKLVBBU1MgZG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlTlMo
Imh0dHA6Ly9leGFtcGxlLmNvbS8iLCAieG1sbnM6dGVzdCIpIHRocmV3IGV4Y2VwdGlvbiBjb2Rl
IDE0Ci1QQVNTIGRvY3VtZW50LmNyZWF0ZUF0dHJpYnV0ZU5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3htbG5zLyIsICJ4OnRlc3QiKSB0aHJldyBleGNlcHRpb24gY29kZSAxNAotUEFTUyBkb2N1
bWVudC5jcmVhdGVBdHRyaWJ1dGVOUygnaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8nLCAn
eG1sbnM6dGVzdCcpLnRvU3RyaW5nKCkgaXMgIltvYmplY3QgQXR0cl0iCi1QQVNTIGRvY3VtZW50
LmNyZWF0ZUF0dHJpYnV0ZU5TKCdodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2Un
LCAneG1sOnRlc3QnKS50b1N0cmluZygpIGlzICJbb2JqZWN0IEF0dHJdIgotUEFTUyBkb2N1bWVu
dC5jcmVhdGVBdHRyaWJ1dGVOUygnaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNl
JywgJ3g6dGVzdCcpLnRvU3RyaW5nKCkgaXMgIltvYmplY3QgQXR0cl0iCitQQVNTIGNyZWF0ZUF0
dHJpYnV0ZU5TKHVuZGVmaW5lZCwgdW5kZWZpbmVkKQorUEFTUyBjcmVhdGVBdHRyaWJ1dGVOUyhu
dWxsLCB1bmRlZmluZWQpCitQQVNTIGNyZWF0ZUF0dHJpYnV0ZU5TKHVuZGVmaW5lZCwgbnVsbCk7
IHRocmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgorUEFTUyBjcmVhdGVBdHRyaWJ1dGVOUyhudWxs
LCBudWxsKTsgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUF0dHJpYnV0
ZU5TKG51bGwsICIiKTsgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUF0
dHJpYnV0ZU5TKCIiLCBudWxsKTsgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNy
ZWF0ZUF0dHJpYnV0ZU5TKCIiLCAiIik7IHRocmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgorUEFT
UyBjcmVhdGVBdHRyaWJ1dGVOUyhudWxsLCAiPGRpdj4iKTsgdGhyZXcgSU5WQUxJRF9DSEFSQUNU
RVJfRVJSCitQQVNTIGNyZWF0ZUF0dHJpYnV0ZU5TKG51bGwsICIwZGl2Iik7IHRocmV3IElOVkFM
SURfQ0hBUkFDVEVSX0VSUgorUEFTUyBjcmVhdGVBdHRyaWJ1dGVOUyhudWxsLCAiZGkgdiIpOyB0
aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlQXR0cmlidXRlTlMobnVsbCwg
ImRpPHYiKTsgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUF0dHJpYnV0
ZU5TKG51bGwsICItZGl2Iik7IHRocmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgorUEFTUyBjcmVh
dGVBdHRyaWJ1dGVOUyhudWxsLCAiLmRpdiIpOyB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIK
K1BBU1MgY3JlYXRlQXR0cmlidXRlTlMoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiPGRpdj4iKTsg
dGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUF0dHJpYnV0ZU5TKCJodHRw
Oi8vZXhhbXBsZS5jb20vIiwgIjBkaXYiKTsgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitQ
QVNTIGNyZWF0ZUF0dHJpYnV0ZU5TKCJodHRwOi8vZXhhbXBsZS5jb20vIiwgImRpPHYiKTsgdGhy
ZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUF0dHJpYnV0ZU5TKCJodHRwOi8v
ZXhhbXBsZS5jb20vIiwgIi1kaXYiKTsgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNT
IGNyZWF0ZUF0dHJpYnV0ZU5TKCJodHRwOi8vZXhhbXBsZS5jb20vIiwgIi5kaXYiKTsgdGhyZXcg
SU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUF0dHJpYnV0ZU5TKG51bGwsICI6ZGl2
Iik7IHRocmV3IE5BTUVTUEFDRV9FUlIKK1BBU1MgY3JlYXRlQXR0cmlidXRlTlMobnVsbCwgImRp
djoiKTsgdGhyZXcgTkFNRVNQQUNFX0VSUgorUEFTUyBjcmVhdGVBdHRyaWJ1dGVOUygiaHR0cDov
L2V4YW1wbGUuY29tLyIsICI6ZGl2Iik7IHRocmV3IE5BTUVTUEFDRV9FUlIKK1BBU1MgY3JlYXRl
QXR0cmlidXRlTlMoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiZGl2OiIpOyB0aHJldyBOQU1FU1BB
Q0VfRVJSCitQQVNTIGNyZWF0ZUF0dHJpYnV0ZU5TKG51bGwsICJkOml2Iik7IHRocmV3IE5BTUVT
UEFDRV9FUlIKK0ZBSUwgY3JlYXRlQXR0cmlidXRlTlMobnVsbCwgImE6YjpjIik7IHZhbGlkIFhN
TCBuYW1lLCBpbnZhbGlkIFFOYW1lOyBleHBlY3RlZCBOQU1FU1BBQ0VfRVJSLCB0aHJldyBJTlZB
TElEX0NIQVJBQ1RFUl9FUlIKK0ZBSUwgY3JlYXRlQXR0cmlidXRlTlMoImh0dHA6Ly9leGFtcGxl
LmNvbS8iLCAiYTpiOmMiKTsgdmFsaWQgWE1MIG5hbWUsIGludmFsaWQgUU5hbWU7IGV4cGVjdGVk
IE5BTUVTUEFDRV9FUlIsIHRocmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgorRkFJTCBjcmVhdGVB
dHRyaWJ1dGVOUyhudWxsLCAiYTo6YyIpOyB2YWxpZCBYTUwgbmFtZSwgaW52YWxpZCBRTmFtZTsg
ZXhwZWN0ZWQgTkFNRVNQQUNFX0VSUiwgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitGQUlM
IGNyZWF0ZUF0dHJpYnV0ZU5TKCJodHRwOi8vZXhhbXBsZS5jb20vIiwgImE6OmMiKTsgdmFsaWQg
WE1MIG5hbWUsIGludmFsaWQgUU5hbWU7IGV4cGVjdGVkIE5BTUVTUEFDRV9FUlIsIHRocmV3IElO
VkFMSURfQ0hBUkFDVEVSX0VSUgorUEFTUyBjcmVhdGVBdHRyaWJ1dGVOUygiaHR0cDovL2V4YW1w
bGUuY29tLyIsICJhOjAiKTsgdmFsaWQgWE1MIG5hbWUsIG5vdCBhIHZhbGlkIFFOYW1lOyB0aHJl
dyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlQXR0cmlidXRlTlMoImh0dHA6Ly9l
eGFtcGxlLmNvbS8iLCAiMDphIik7IDAgYXQgc3RhcnQgbWFrZXMgaXQgbm90IGEgdmFsaWQgWE1M
IG5hbWU7IHRocmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgorUEFTUyBjcmVhdGVBdHRyaWJ1dGVO
UygiaHR0cDovL2V4YW1wbGUuY29tLyIsICJhOl8iKQorRkFJTCBjcmVhdGVBdHRyaWJ1dGVOUygi
aHR0cDovL2V4YW1wbGUuY29tLyIsICJhOuCvhiIpOyBub24tQVNDSUkgY2hhcmFjdGVyIGFmdGVy
IGNvbG9uIGlzIENvbWJpbmluZ0NoYXIsIHdoaWNoIGlzIE5DTmFtZUNoYXIgYnV0IG5vdCAoTGV0
dGVyIHwgIl8iKSBzbyBpbnZhbGlkIGF0IHN0YXJ0IG9mIE5DTmFtZSAoYnV0IHN0aWxsIGEgdmFs
aWQgWE1MIG5hbWUsIGhlbmNlIG5vdCBJTlZBTElEX0NIQVJBQ1RFUl9FUlIpOyBleHBlY3RlZCBO
QU1FU1BBQ0VfRVJSLCB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlQXR0
cmlidXRlTlMoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAi4K+GOmEiKTsgbm9uLUFTQ0lJIGNoYXJh
Y3RlciBhZnRlciBjb2xvbiBpcyBDb21iaW5pbmdDaGFyLCB3aGljaCBpcyBOQ05hbWVDaGFyIGJ1
dCBub3QgKExldHRlciB8ICJfIikgc28gaW52YWxpZCBhdCBzdGFydCBvZiBOQ05hbWUgKEdlY2tv
IGNob29zZXMgdG8gdGhyb3cgTkFNRVNQQUNFX0VSUiBoZXJlLCBidXQgZWl0aGVyIGlzIHZhbGlk
IGFzIHRoaXMgaXMgYm90aCBhbiBpbnZhbGlkIFhNTCBuYW1lIGFuZCBhbiBpbnZhbGlkIFFOYW1l
KTsgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUF0dHJpYnV0ZU5TKCJo
dHRwOi8vZXhhbXBsZS5jb20vIiwgImE6YeCvhiIpCitQQVNTIGNyZWF0ZUF0dHJpYnV0ZU5TKCJo
dHRwOi8vZXhhbXBsZS5jb20vIiwgImHgr4Y6YSIpCitQQVNTIGNyZWF0ZUF0dHJpYnV0ZU5TKCJo
dHRwOi8vZXhhbXBsZS5jb20vIiwgInhtbDp0ZXN0Iik7IGJpbmRpbmcgeG1sIHByZWZpeCB3cm9u
ZzsgdGhyZXcgTkFNRVNQQUNFX0VSUgorUEFTUyBjcmVhdGVBdHRyaWJ1dGVOUygiaHR0cDovL2V4
YW1wbGUuY29tLyIsICJ4bWxuczp0ZXN0Iik7IGJpbmRpbmcgeG1sbnMgcHJlZml4IHdyb25nOyB0
aHJldyBOQU1FU1BBQ0VfRVJSCitQQVNTIGNyZWF0ZUF0dHJpYnV0ZU5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3htbG5zLyIsICJ4OnRlc3QiKTsgYmluZGluZyBuYW1lc3BhY2UgbmFtZXNwYWNl
IHRvIHdyb25nIHByZWZpeDsgdGhyZXcgTkFNRVNQQUNFX0VSUgorUEFTUyBjcmVhdGVBdHRyaWJ1
dGVOUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8iLCAieG1sbnM6dGVzdCIpCitQQVNT
IGNyZWF0ZUF0dHJpYnV0ZU5TKCJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2Ui
LCAieG1sOnRlc3QiKQorUEFTUyBjcmVhdGVBdHRyaWJ1dGVOUygiaHR0cDovL3d3dy53My5vcmcv
WE1MLzE5OTgvbmFtZXNwYWNlIiwgIng6dGVzdCIpCitQQVNTIGNyZWF0ZUF0dHJpYnV0ZU5TKCJo
dHRwOi8vZXhhbXBsZS5jb20vIiwgInhtbG5zIik7IHRocmV3IE5BTUVTUEFDRV9FUlIKIFBBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvY3JlYXRlRWxlbWVudE5TLW5hbWVzcGFjZS1l
cnItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvY3JlYXRlRWxl
bWVudE5TLW5hbWVzcGFjZS1lcnItZXhwZWN0ZWQudHh0CmluZGV4IGMwNjYwZjkuLjUyYzI4ZDgg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L2NyZWF0ZUVsZW1lbnRO
Uy1uYW1lc3BhY2UtZXJyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9E
b2N1bWVudC9jcmVhdGVFbGVtZW50TlMtbmFtZXNwYWNlLWVyci1leHBlY3RlZC50eHQKQEAgLTEs
MzYgKzEsNTAgQEAKLUVuc3VyZSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMgbWV0aG9kIHRocm93
cyBOQU1FU1BBQ0VfRVJSIGF0IHByb3BlciB0aW1lcworY3JlYXRlRWxlbWVudE5TIHRlc3RzIGZy
b20gbW96aWxsYSwgYXR0YWNoZWQgdG8gd2Via2l0IGJ1ZyAxNjgzMwogCiBPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCiAKIAogUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoKS50b1N0cmlu
ZygpIGlzICJbb2JqZWN0IEVsZW1lbnRdIgogUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cuZXhhbXBsZS5jb20iKS50b1N0cmluZygpIGlzICJbb2JqZWN0IEVsZW1lbnRd
IgotUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlModW5kZWZpbmVkLCB1bmRlZmluZWQpLnRv
U3RyaW5nKCkgaXMgIltvYmplY3QgRWxlbWVudF0iCi1QQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUyhudWxsLCB1bmRlZmluZWQpLnRvU3RyaW5nKCkgaXMgIltvYmplY3QgRWxlbWVudF0iCi1Q
QVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh1bmRlZmluZWQsIG51bGwpIHRocmV3IGV4Y2Vw
dGlvbiBjb2RlIDUKLVBBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG51bGwsIG51bGwpIHRo
cmV3IGV4Y2VwdGlvbiBjb2RlIDUKLVBBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG51bGws
ICIiKSB0aHJldyBleGNlcHRpb24gY29kZSA1Ci1QQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiIiwgIiIpIHRocmV3IGV4Y2VwdGlvbiBjb2RlIDUKLVBBU1MgZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKG51bGwsICI8ZGl2PiIpIHRocmV3IGV4Y2VwdGlvbiBjb2RlIDUKLVBBU1MgZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKG51bGwsICIwZGl2IikgdGhyZXcgZXhjZXB0aW9uIGNvZGUgNQot
UEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMobnVsbCwgImRpIHYiKSB0aHJldyBleGNlcHRp
b24gY29kZSA1Ci1QQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhudWxsLCAiZGk8diIpIHRo
cmV3IGV4Y2VwdGlvbiBjb2RlIDUKLVBBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG51bGws
ICItZGl2IikgdGhyZXcgZXhjZXB0aW9uIGNvZGUgNQotUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMobnVsbCwgIi5kaXYiKSB0aHJldyBleGNlcHRpb24gY29kZSA1Ci1QQVNTIGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL2V4YW1wbGUuY29tLyIsICI8ZGl2PiIpIHRocmV3IGV4
Y2VwdGlvbiBjb2RlIDUKLVBBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vZXhh
bXBsZS5jb20vIiwgIjBkaXYiKSB0aHJldyBleGNlcHRpb24gY29kZSA1Ci1QQVNTIGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL2V4YW1wbGUuY29tLyIsICJkaTx2IikgdGhyZXcgZXhj
ZXB0aW9uIGNvZGUgNQotUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly9leGFt
cGxlLmNvbS8iLCAiLWRpdiIpIHRocmV3IGV4Y2VwdGlvbiBjb2RlIDUKLVBBU1MgZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vZXhhbXBsZS5jb20vIiwgIi5kaXYiKSB0aHJldyBleGNl
cHRpb24gY29kZSA1Ci1QQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhudWxsLCAiOmRpdiIp
IHRocmV3IGV4Y2VwdGlvbiBjb2RlIDE0Ci1QQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL2V4YW1wbGUuY29tLyIsICI6ZGl2IikgdGhyZXcgZXhjZXB0aW9uIGNvZGUgMTQKLVBB
U1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG51bGwsICJkOml2IikgdGhyZXcgZXhjZXB0aW9u
IGNvZGUgMTQKLVBBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vZXhhbXBsZS5j
b20vIiwgInhtbDp0ZXN0IikgdGhyZXcgZXhjZXB0aW9uIGNvZGUgMTQKLVBBU1MgZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vZXhhbXBsZS5jb20vIiwgInhtbG5zOnRlc3QiKSB0aHJl
dyBleGNlcHRpb24gY29kZSAxNAotUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIiwgIng6dGVzdCIpIHRocmV3IGV4Y2VwdGlvbiBjb2Rl
IDE0Ci1QQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvMjAw
MC94bWxucy8nLCAneG1sbnM6dGVzdCcpLnRvU3RyaW5nKCkgaXMgIltvYmplY3QgRWxlbWVudF0i
Ci1QQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvWE1MLzE5
OTgvbmFtZXNwYWNlJywgJ3htbDp0ZXN0JykudG9TdHJpbmcoKSBpcyAiW29iamVjdCBFbGVtZW50
XSIKLVBBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy9YTUwv
MTk5OC9uYW1lc3BhY2UnLCAneDp0ZXN0JykudG9TdHJpbmcoKSBpcyAiW29iamVjdCBFbGVtZW50
XSIKK1BBU1MgY3JlYXRlRWxlbWVudE5TKHVuZGVmaW5lZCwgdW5kZWZpbmVkKQorUEFTUyBjcmVh
dGVFbGVtZW50TlMobnVsbCwgdW5kZWZpbmVkKQorUEFTUyBjcmVhdGVFbGVtZW50TlModW5kZWZp
bmVkLCBudWxsKTsgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUVsZW1l
bnROUyhudWxsLCBudWxsKTsgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0
ZUVsZW1lbnROUyhudWxsLCAiIik7IHRocmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgorUEFTUyBj
cmVhdGVFbGVtZW50TlMoIiIsIG51bGwpOyB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BB
U1MgY3JlYXRlRWxlbWVudE5TKCIiLCAiIik7IHRocmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgor
UEFTUyBjcmVhdGVFbGVtZW50TlMobnVsbCwgIjxkaXY+Iik7IHRocmV3IElOVkFMSURfQ0hBUkFD
VEVSX0VSUgorUEFTUyBjcmVhdGVFbGVtZW50TlMobnVsbCwgIjBkaXYiKTsgdGhyZXcgSU5WQUxJ
RF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUVsZW1lbnROUyhudWxsLCAiZGkgdiIpOyB0aHJl
dyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlRWxlbWVudE5TKG51bGwsICJkaTx2
Iik7IHRocmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgorUEFTUyBjcmVhdGVFbGVtZW50TlMobnVs
bCwgIi1kaXYiKTsgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUVsZW1l
bnROUyhudWxsLCAiLmRpdiIpOyB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vZXhhbXBsZS5jb20vIiwgIjxkaXY+Iik7IHRocmV3IElOVkFM
SURfQ0hBUkFDVEVSX0VSUgorUEFTUyBjcmVhdGVFbGVtZW50TlMoImh0dHA6Ly9leGFtcGxlLmNv
bS8iLCAiMGRpdiIpOyB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vZXhhbXBsZS5jb20vIiwgImRpPHYiKTsgdGhyZXcgSU5WQUxJRF9DSEFS
QUNURVJfRVJSCitQQVNTIGNyZWF0ZUVsZW1lbnROUygiaHR0cDovL2V4YW1wbGUuY29tLyIsICIt
ZGl2Iik7IHRocmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgorUEFTUyBjcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiLmRpdiIpOyB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9F
UlIKK1BBU1MgY3JlYXRlRWxlbWVudE5TKG51bGwsICI6ZGl2Iik7IHRocmV3IE5BTUVTUEFDRV9F
UlIKK1BBU1MgY3JlYXRlRWxlbWVudE5TKG51bGwsICJkaXY6Iik7IHRocmV3IE5BTUVTUEFDRV9F
UlIKK1BBU1MgY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vZXhhbXBsZS5jb20vIiwgIjpkaXYiKTsg
dGhyZXcgTkFNRVNQQUNFX0VSUgorUEFTUyBjcmVhdGVFbGVtZW50TlMoImh0dHA6Ly9leGFtcGxl
LmNvbS8iLCAiZGl2OiIpOyB0aHJldyBOQU1FU1BBQ0VfRVJSCitQQVNTIGNyZWF0ZUVsZW1lbnRO
UyhudWxsLCAiZDppdiIpOyB0aHJldyBOQU1FU1BBQ0VfRVJSCitGQUlMIGNyZWF0ZUVsZW1lbnRO
UyhudWxsLCAiYTpiOmMiKTsgdmFsaWQgWE1MIG5hbWUsIGludmFsaWQgUU5hbWU7IGV4cGVjdGVk
IE5BTUVTUEFDRV9FUlIsIHRocmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgorRkFJTCBjcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiYTpiOmMiKTsgdmFsaWQgWE1MIG5hbWUs
IGludmFsaWQgUU5hbWU7IGV4cGVjdGVkIE5BTUVTUEFDRV9FUlIsIHRocmV3IElOVkFMSURfQ0hB
UkFDVEVSX0VSUgorRkFJTCBjcmVhdGVFbGVtZW50TlMobnVsbCwgImE6OmMiKTsgdmFsaWQgWE1M
IG5hbWUsIGludmFsaWQgUU5hbWU7IGV4cGVjdGVkIE5BTUVTUEFDRV9FUlIsIHRocmV3IElOVkFM
SURfQ0hBUkFDVEVSX0VSUgorRkFJTCBjcmVhdGVFbGVtZW50TlMoImh0dHA6Ly9leGFtcGxlLmNv
bS8iLCAiYTo6YyIpOyB2YWxpZCBYTUwgbmFtZSwgaW52YWxpZCBRTmFtZTsgZXhwZWN0ZWQgTkFN
RVNQQUNFX0VSUiwgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL2V4YW1wbGUuY29tLyIsICJhOjAiKTsgdmFsaWQgWE1MIG5hbWUsIG5vdCBh
IHZhbGlkIFFOYW1lOyB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vZXhhbXBsZS5jb20vIiwgIjA6YSIpOyAwIGF0IHN0YXJ0IG1ha2VzIGl0
IG5vdCBhIHZhbGlkIFhNTCBuYW1lOyB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1Mg
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vZXhhbXBsZS5jb20vIiwgImE6XyIpCitGQUlMIGNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL2V4YW1wbGUuY29tLyIsICJhOuCvhiIpOyBub24tQVNDSUkgY2hh
cmFjdGVyIGFmdGVyIGNvbG9uIGlzIENvbWJpbmluZ0NoYXIsIHdoaWNoIGlzIE5DTmFtZUNoYXIg
YnV0IG5vdCAoTGV0dGVyIHwgIl8iKSBzbyBpbnZhbGlkIGF0IHN0YXJ0IG9mIE5DTmFtZSAoYnV0
IHN0aWxsIGEgdmFsaWQgWE1MIG5hbWUsIGhlbmNlIG5vdCBJTlZBTElEX0NIQVJBQ1RFUl9FUlIp
OyBleHBlY3RlZCBOQU1FU1BBQ0VfRVJSLCB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BB
U1MgY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vZXhhbXBsZS5jb20vIiwgIuCvhjphIik7IG5vbi1B
U0NJSSBjaGFyYWN0ZXIgYWZ0ZXIgY29sb24gaXMgQ29tYmluaW5nQ2hhciwgd2hpY2ggaXMgTkNO
YW1lQ2hhciBidXQgbm90IChMZXR0ZXIgfCAiXyIpIHNvIGludmFsaWQgYXQgc3RhcnQgb2YgTkNO
YW1lIChHZWNrbyBjaG9vc2VzIHRvIHRocm93IE5BTUVTUEFDRV9FUlIgaGVyZSwgYnV0IGVpdGhl
ciBpcyB2YWxpZCBhcyB0aGlzIGlzIGJvdGggYW4gaW52YWxpZCBYTUwgbmFtZSBhbmQgYW4gaW52
YWxpZCBRTmFtZSk7IHRocmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgorUEFTUyBjcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiYTph4K+GIikKK1BBU1MgY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vZXhhbXBsZS5jb20vIiwgImHgr4Y6YSIpCitQQVNTIGNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL2V4YW1wbGUuY29tLyIsICJ4bWw6dGVzdCIpOyBiaW5kaW5nIHhtbCBwcmVmaXgg
d3Jvbmc7IHRocmV3IE5BTUVTUEFDRV9FUlIKK1BBU1MgY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
ZXhhbXBsZS5jb20vIiwgInhtbG5zOnRlc3QiKTsgYmluZGluZyB4bWxucyBwcmVmaXggd3Jvbmc7
IHRocmV3IE5BTUVTUEFDRV9FUlIKK1BBU1MgY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3htbG5zLyIsICJ4OnRlc3QiKTsgYmluZGluZyBuYW1lc3BhY2UgbmFtZXNwYWNl
IHRvIHdyb25nIHByZWZpeDsgdGhyZXcgTkFNRVNQQUNFX0VSUgorUEFTUyBjcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIiwgInhtbG5zOnRlc3QiKQorUEFTUyBj
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIsICJ4
bWw6dGVzdCIpCitQQVNTIGNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5
OTgvbmFtZXNwYWNlIiwgIng6dGVzdCIpCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3Vt
ZW50L3Jlc291cmNlcy9jcmVhdGVBdHRyaWJ1dGVOUy1uYW1lc3BhY2UtZXJyLmpzIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvcmVzb3VyY2VzL2NyZWF0ZUF0dHJpYnV0ZU5TLW5hbWVz
cGFjZS1lcnIuanMKaW5kZXggNzI2NWYwMS4uZjZlY2EyNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vRG9jdW1lbnQvcmVzb3VyY2VzL2NyZWF0ZUF0dHJpYnV0ZU5TLW5hbWVzcGFj
ZS1lcnIuanMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvcmVzb3VyY2VzL2Ny
ZWF0ZUF0dHJpYnV0ZU5TLW5hbWVzcGFjZS1lcnIuanMKQEAgLTEsODkgKzEsMTM1IEBACi1kZXNj
cmlwdGlvbignRW5zdXJlIGRvY3VtZW50LmNyZWF0ZUF0dHJpYnV0ZU5TIG1ldGhvZCB0aHJvd3Mg
TkFNRVNQQUNFX0VSUiBhdCBwcm9wZXIgdGltZXMnKTsKK2Rlc2NyaXB0aW9uKCJjcmVhdGVBdHRp
cmJ1dGVOUyB0ZXN0cyBhZGFwdGVkIGZyb20gY3JlYXRlRWxlbWVudE5TIHRlc3RzIGF0dGFjaGVk
IHRvIHdlYmtpdCBidWcgMTY4MzMiKTsKIAotZnVuY3Rpb24gcXVvdGVTdHJpbmcocykgewotICAg
IGlmICh0eXBlb2YgcyA9PSAic3RyaW5nIikgewotICAgICAgICByZXR1cm4gJyInICsgcyArICci
JzsKLSAgICB9Ci0gICAgcmV0dXJuICIiICsgczsKK2Z1bmN0aW9uIGFzc2VydChjLCBtKQorewor
ICAgIGlmICghYykKKyAgICAgICAgdGVzdEZhaWxlZChtKTsKKyAgICBlbHNlCisgICAgICAgIHRl
c3RQYXNzZWQobSk7CiB9CiAKLWZ1bmN0aW9uIHNob3VsZFRocm93V2l0aENvZGUoYSwgY29kZSkg
ewotICAgIHRyeSB7Ci0gICAgICAgIHZhciByZXN1bHQgPSBldmFsKGEpOwotICAgICAgICB2YXIg
ZmFpbHVyZVN0cmluZyA9ICIiICsgYSArICIgcmV0dXJuZWQgIiArIHJlc3VsdDsKLSAgICAgICAg
aWYgKHJlc3VsdCBpbnN0YW5jZW9mIEF0dHIpIHsKLSAgICAgICAgICAgIGZhaWx1cmVTdHJpbmcg
Kz0gIiBwcmVmaXg6ICIgKyBxdW90ZVN0cmluZyhyZXN1bHQucHJlZml4KTsKLSAgICAgICAgICAg
IGZhaWx1cmVTdHJpbmcgKz0gIiBsb2NhbE5hbWU6ICIgKyBxdW90ZVN0cmluZyhyZXN1bHQubG9j
YWxOYW1lKTsKLSAgICAgICAgICAgIGZhaWx1cmVTdHJpbmcgKz0gIiBuYW1lc3BhY2VVUkk6ICIg
KyBxdW90ZVN0cmluZyhyZXN1bHQubmFtZXNwYWNlVVJJKTsKLSAgICAgICAgfQotICAgICAgICBm
YWlsdXJlU3RyaW5nICs9ICIsIGV4cGVjdGVkIGV4Y2VwdGlvbiBjb2RlOiAiICsgY29kZTsKLSAg
ICAgICAgdGVzdEZhaWxlZChmYWlsdXJlU3RyaW5nKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAg
ICAgIHRyeSB7Ci0gICAgICAgICAgICBpZiAoZS5jb2RlID09IGNvZGUpIHsKLSAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCIiICsgYSArICIgdGhyZXcgZXhjZXB0aW9uIGNvZGUgIiArIGNvZGUp
OwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCIiICsg
YSArICIgdGhyZXcgd3JvbmcgZXhjZXB0aW9uIGNvZGUgIiArIGUuY29kZSArICIgZXhwZWN0ZWQg
IiArIGNvZGUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
IGNhdGNoKGV4cCkge30KLSAgICAgICAgdGVzdEZhaWxlZCgiIiArIGEgKyAiIHRocmV3IHdyb25n
IGV4Y2VwdGlvbjogIiArIGUpOwotICAgICAgICByZXR1cm47CitmdW5jdGlvbiBzdHJpbmdGb3JF
eGNlcHRpb25Db2RlKGMpCit7CisgICAgdmFyIGV4Y2VwdGlvbk5hbWU7CisgICAgc3dpdGNoKGMp
IHsKKyAgICAgICAgY2FzZSBET01FeGNlcHRpb24uSU5WQUxJRF9DSEFSQUNURVJfRVJSOgorICAg
ICAgICAgICAgZXhjZXB0aW9uTmFtZSA9ICJJTlZBTElEX0NIQVJBQ1RFUl9FUlIiOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRE9NRXhjZXB0aW9uLk5BTUVTUEFDRV9FUlI6Cisg
ICAgICAgICAgICBleGNlcHRpb25OYW1lID0gIk5BTUVTUEFDRV9FUlIiOwogICAgIH0KKyAgICBp
ZiAoZXhjZXB0aW9uTmFtZSkKKyAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbk5hbWU7IC8vICsgIigi
ICsgYyArICIpIjsKKyAgICByZXR1cm4gYzsKIH0KIAotZnVuY3Rpb24gdGVzdChuYW1lLCBuYW1l
c3BhY2UsIGNvZGUpIHsKLSAgICBzaG91bGRUaHJvd1dpdGhDb2RlKCJkb2N1bWVudC5jcmVhdGVB
dHRyaWJ1dGVOUygiICsgcXVvdGVTdHJpbmcobmFtZXNwYWNlKSArICIsICIgKyBxdW90ZVN0cmlu
ZyhuYW1lKSArICIpIiwgY29kZSk7CitmdW5jdGlvbiBhc3NlcnRFcXVhbHMoYWN0dWFsLCBleHBl
Y3QsIG0pCit7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0KSB7CisgICAgICAgIG0gKz0gIjsg
ZXhwZWN0ZWQgIiArIHN0cmluZ0ZvckV4Y2VwdGlvbkNvZGUoZXhwZWN0KSArICIsIHRocmV3ICIg
KyBzdHJpbmdGb3JFeGNlcHRpb25Db2RlKGFjdHVhbCk7CisgICAgICAgIHRlc3RGYWlsZWQobSk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgbSArPSAiOyB0aHJldyAiICsgc3RyaW5nRm9yRXhjZXB0
aW9uQ29kZShhY3R1YWwpOzsKKyAgICAgICAgdGVzdFBhc3NlZChtKTsKKyAgICB9CiB9CiAKLS8v
IFdlIHVzZSBudW1iZXJzIGluc3RlYWQgb2YgbmFtZXMsIGJlY2F1c2UgaXQncyBzbGlnaHRseSBl
YXNpZXIgdG8gcmVhZAotLy8gRE9NRXhjZXB0aW9uLklOVkFMSURfQ0hBUkFDVEVSX0VSUiA9IDUK
LS8vIERPTUV4Y2VwdGlvbi5OQU1FU1BBQ0VfRVJSID0gMTQKK3ZhciBhbGxOU1Rlc3RzID0gWwor
ICAgeyBhcmdzOiBbdW5kZWZpbmVkLCB1bmRlZmluZWRdIH0sCisgICB7IGFyZ3M6IFtudWxsLCB1
bmRlZmluZWRdIH0sCisgICB7IGFyZ3M6IFt1bmRlZmluZWQsIG51bGxdLCBjb2RlOiA1IH0sCisg
ICB7IGFyZ3M6IFtudWxsLCBudWxsXSwgY29kZTogNSB9LAorICAgeyBhcmdzOiBbbnVsbCwgIiJd
LCBjb2RlOiA1IH0sCisgICB7IGFyZ3M6IFsiIiwgbnVsbF0sIGNvZGU6IDUgfSwKKyAgIHsgYXJn
czogWyIiLCAiIl0sIGNvZGU6IDUgfSwKKyAgIHsgYXJnczogW251bGwsICI8ZGl2PiJdLCBjb2Rl
OiA1IH0sCisgICB7IGFyZ3M6IFtudWxsLCAiMGRpdiJdLCBjb2RlOiA1IH0sCisgICB7IGFyZ3M6
IFtudWxsLCAiZGkgdiJdLCBjb2RlOiA1IH0sCisgICB7IGFyZ3M6IFtudWxsLCAiZGk8diJdLCBj
b2RlOiA1IH0sCisgICB7IGFyZ3M6IFtudWxsLCAiLWRpdiJdLCBjb2RlOiA1IH0sCisgICB7IGFy
Z3M6IFtudWxsLCAiLmRpdiJdLCBjb2RlOiA1IH0sCisgICB7IGFyZ3M6IFsiaHR0cDovL2V4YW1w
bGUuY29tLyIsICI8ZGl2PiJdLCBjb2RlOiA1IH0sCisgICB7IGFyZ3M6IFsiaHR0cDovL2V4YW1w
bGUuY29tLyIsICIwZGl2Il0sIGNvZGU6IDUgfSwKKyAgIHsgYXJnczogWyJodHRwOi8vZXhhbXBs
ZS5jb20vIiwgImRpPHYiXSwgY29kZTogNSB9LAorICAgeyBhcmdzOiBbImh0dHA6Ly9leGFtcGxl
LmNvbS8iLCAiLWRpdiJdLCBjb2RlOiA1IH0sCisgICB7IGFyZ3M6IFsiaHR0cDovL2V4YW1wbGUu
Y29tLyIsICIuZGl2Il0sIGNvZGU6IDUgfSwKKyAgIHsgYXJnczogW251bGwsICI6ZGl2Il0sIGNv
ZGU6IDE0IH0sCisgICB7IGFyZ3M6IFtudWxsLCAiZGl2OiJdLCBjb2RlOiAxNCB9LAorICAgeyBh
cmdzOiBbImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiOmRpdiJdLCBjb2RlOiAxNCB9LAorICAgeyBh
cmdzOiBbImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiZGl2OiJdLCBjb2RlOiAxNCB9LAorICAgeyBh
cmdzOiBbbnVsbCwgImQ6aXYiXSwgY29kZTogMTQgfSwKKyAgIHsgYXJnczogW251bGwsICJhOmI6
YyJdLCBjb2RlOiAxNCwgbWVzc2FnZTogInZhbGlkIFhNTCBuYW1lLCBpbnZhbGlkIFFOYW1lIiB9
LAorICAgeyBhcmdzOiBbImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiYTpiOmMiXSwgY29kZTogMTQs
IG1lc3NhZ2U6ICJ2YWxpZCBYTUwgbmFtZSwgaW52YWxpZCBRTmFtZSIgfSwKKyAgIHsgYXJnczog
W251bGwsICJhOjpjIl0sIGNvZGU6IDE0LCBtZXNzYWdlOiAidmFsaWQgWE1MIG5hbWUsIGludmFs
aWQgUU5hbWUiIH0sCisgICB7IGFyZ3M6IFsiaHR0cDovL2V4YW1wbGUuY29tLyIsICJhOjpjIl0s
IGNvZGU6IDE0LCBtZXNzYWdlOiAidmFsaWQgWE1MIG5hbWUsIGludmFsaWQgUU5hbWUiIH0sCisg
ICB7IGFyZ3M6IFsiaHR0cDovL2V4YW1wbGUuY29tLyIsICJhOjAiXSwgY29kZTogNSwgbWVzc2Fn
ZTogInZhbGlkIFhNTCBuYW1lLCBub3QgYSB2YWxpZCBRTmFtZSIgfSwKKyAgIHsgYXJnczogWyJo
dHRwOi8vZXhhbXBsZS5jb20vIiwgIjA6YSJdLCBjb2RlOiA1LCBtZXNzYWdlOiAiMCBhdCBzdGFy
dCBtYWtlcyBpdCBub3QgYSB2YWxpZCBYTUwgbmFtZSIgfSwKKyAgIHsgYXJnczogWyJodHRwOi8v
ZXhhbXBsZS5jb20vIiwgImE6XyJdIH0sCisgICB7IGFyZ3M6IFsiaHR0cDovL2V4YW1wbGUuY29t
LyIsICJhOlx1MEJDNiJdLCBjb2RlOiAxNCwKKyAgICAgbWVzc2FnZTogIm5vbi1BU0NJSSBjaGFy
YWN0ZXIgYWZ0ZXIgY29sb24gaXMgQ29tYmluaW5nQ2hhciwgd2hpY2ggaXMgIiArCisgICAgICAg
ICAgICAgICJOQ05hbWVDaGFyIGJ1dCBub3QgKExldHRlciB8IFwiX1wiKSBzbyBpbnZhbGlkIGF0
IHN0YXJ0IG9mICIgKworICAgICAgICAgICAgICAiTkNOYW1lIChidXQgc3RpbGwgYSB2YWxpZCBY
TUwgbmFtZSwgaGVuY2Ugbm90IElOVkFMSURfQ0hBUkFDVEVSX0VSUikiIH0sCisgICB7IGFyZ3M6
IFsiaHR0cDovL2V4YW1wbGUuY29tLyIsICJcdTBCQzY6YSJdLCBjb2RlOiA1LAorICAgICBtZXNz
YWdlOiAibm9uLUFTQ0lJIGNoYXJhY3RlciBhZnRlciBjb2xvbiBpcyBDb21iaW5pbmdDaGFyLCB3
aGljaCBpcyAiICsKKyAgICAgICAgICAgICAgIk5DTmFtZUNoYXIgYnV0IG5vdCAoTGV0dGVyIHwg
XCJfXCIpIHNvIGludmFsaWQgYXQgc3RhcnQgb2YgIiArCisgICAgICAgICAgICAgICJOQ05hbWUg
KEdlY2tvIGNob29zZXMgdG8gdGhyb3cgTkFNRVNQQUNFX0VSUiBoZXJlLCBidXQgZWl0aGVyIGlz
IHZhbGlkICIgKworICAgICAgICAgICAgICAiYXMgdGhpcyBpcyBib3RoIGFuIGludmFsaWQgWE1M
IG5hbWUgYW5kIGFuIGludmFsaWQgUU5hbWUpIiB9LAorICAgeyBhcmdzOiBbImh0dHA6Ly9leGFt
cGxlLmNvbS8iLCAiYTphXHUwQkM2Il0gfSwKKyAgIHsgYXJnczogWyJodHRwOi8vZXhhbXBsZS5j
b20vIiwgImFcdTBCQzY6YSJdIH0sCisgICB7IGFyZ3M6IFsiaHR0cDovL2V4YW1wbGUuY29tLyIs
ICJ4bWw6dGVzdCJdLCBjb2RlOiAxNCwgbWVzc2FnZTogImJpbmRpbmcgeG1sIHByZWZpeCB3cm9u
ZyIgfSwKKyAgIHsgYXJnczogWyJodHRwOi8vZXhhbXBsZS5jb20vIiwgInhtbG5zOnRlc3QiXSwg
Y29kZTogMTQsIG1lc3NhZ2U6ICJiaW5kaW5nIHhtbG5zIHByZWZpeCB3cm9uZyIgfSwKKyAgIHsg
YXJnczogWyJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyIsICJ4OnRlc3QiXSwgY29kZTog
MTQsIG1lc3NhZ2U6ICJiaW5kaW5nIG5hbWVzcGFjZSBuYW1lc3BhY2UgdG8gd3JvbmcgcHJlZml4
IiB9LAorICAgeyBhcmdzOiBbImh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIiwgInhtbG5z
OnRlc3QiXSB9LAorICAgeyBhcmdzOiBbImh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVz
cGFjZSIsICJ4bWw6dGVzdCJdIH0sCisgICB7IGFyZ3M6IFsiaHR0cDovL3d3dy53My5vcmcvWE1M
LzE5OTgvbmFtZXNwYWNlIiwgIng6dGVzdCJdIH0sCisgICB7IGFyZ3M6IFsiaHR0cDovL2V4YW1w
bGUuY29tLyIsICJ4bWxucyJdLCBjb2RlOiAxNCB9LCAvLyBmcm9tIHRoZSBjcmVhdGVBdHRyaWJ1
dGVOUyBzZWN0aW9uCitdOwogCi0vLyBNb3ogdGhyb3dzIGEgIk5vdCBlbm91Z2ggYXJndW1lbnRz
IiBleGNlcHRpb24gaW4gdGhlc2UsIHdlIGRvbid0Ogotc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJk
b2N1bWVudC5jcmVhdGVBdHRyaWJ1dGVOUygpLnRvU3RyaW5nKCkiLCAiW29iamVjdCBBdHRyXSIp
Owotc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkb2N1bWVudC5jcmVhdGVBdHRyaWJ1dGVOUyhcImh0
dHA6Ly93d3cuZXhhbXBsZS5jb21cIikudG9TdHJpbmcoKSIsICJbb2JqZWN0IEF0dHJdIik7Citm
dW5jdGlvbiBzb3VyY2VpZnkodikKK3sKKyAgICBzd2l0Y2ggKHR5cGVvZiB2KSB7CisgICAgY2Fz
ZSAidW5kZWZpbmVkIjoKKyAgICAgICAgcmV0dXJuIHY7CiAKLS8vIEkgZXhwZWN0IHRoaXMgaXMg
c29tZSBvbGQgSUUvTW96IHF1aXJrCi1zaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvY3VtZW50LmNy
ZWF0ZUF0dHJpYnV0ZU5TKHVuZGVmaW5lZCwgdW5kZWZpbmVkKS50b1N0cmluZygpIiwgIltvYmpl
Y3QgQXR0cl0iKTsKLXNob3VsZEJlRXF1YWxUb1N0cmluZygiZG9jdW1lbnQuY3JlYXRlQXR0cmli
dXRlTlMobnVsbCwgdW5kZWZpbmVkKS50b1N0cmluZygpIiwgIltvYmplY3QgQXR0cl0iKTsKKyAg
ICBjYXNlICJzdHJpbmciOgorICAgICAgICByZXR1cm4gJyInICsgdi5yZXBsYWNlKCciJywgJ1xc
IicpICsgJyInOwogCi0vLyAnJyBhcmUgZXhwZWN0ZWQgYXMgSU5WQUxJRF9DSEFSQUNURVJfRVJS
IGluc3RlYWQgb2YgTkFNRVNQQUNFX0VSUgotLy8gc2VlIGRvbS9odG1sL2xldmVsMS9jb3JlL2hj
X2RvY3VtZW50aW52YWxpZGNoYXJhY3RlcmV4Y2VwdGlvbmNyZWF0ZWF0dHJpYnV0ZTEuaHRtbAot
Ly8gYW5kIGh0dHA6Ly93d3cudzMub3JnL0J1Z3MvUHVibGljL3Nob3dfYnVnLmNnaT9pZD01MjUK
LXRlc3QobnVsbCwgdW5kZWZpbmVkLCA1KTsKLXRlc3QobnVsbCwgbnVsbCwgNSk7Ci10ZXN0KCcn
LCBudWxsLCA1KTsKLXRlc3QoJycsICcnLCA1KTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1
cm4gU3RyaW5nKHYpOworICAgIH0KK30KIAotLy8gVGhlc2UgYXJlIGRlZmluZWQgaW4gRE9NIExl
dmVsIDIgY29yZQotdGVzdCgnPGRpdj4nLCBudWxsLCA1KTsKLXRlc3QoJzBkaXYnLCBudWxsLCA1
KTsKLXRlc3QoJ2RpIHYnLCBudWxsLCA1KTsKLXRlc3QoJ2RpPHYnLCBudWxsLCA1KTsKLXRlc3Qo
Jy1kaXYnLCBudWxsLCA1KTsKLXRlc3QoJy5kaXYnLCBudWxsLCA1KTsKLXRlc3QoJzxkaXY+Jywg
Imh0dHA6Ly9leGFtcGxlLmNvbS8iLCA1KTsKLXRlc3QoJzBkaXYnLCAiaHR0cDovL2V4YW1wbGUu
Y29tLyIsIDUpOwotdGVzdCgnZGk8dicsICJodHRwOi8vZXhhbXBsZS5jb20vIiwgNSk7Ci10ZXN0
KCctZGl2JywgImh0dHA6Ly9leGFtcGxlLmNvbS8iLCA1KTsKLXRlc3QoJy5kaXYnLCAiaHR0cDov
L2V4YW1wbGUuY29tLyIsIDUpOwotdGVzdCgnOmRpdicsIG51bGwsIDE0KTsKLXRlc3QoJzpkaXYn
LCAiaHR0cDovL2V4YW1wbGUuY29tLyIsIDE0KTsKLXRlc3QoJ2Q6aXYnLCBudWxsLCAxNCk7Ci10
ZXN0KCd4bWw6dGVzdCcsICJodHRwOi8vZXhhbXBsZS5jb20vIiwgMTQpOwotdGVzdCgneG1sbnMn
LCAiaHR0cDovL2V4YW1wbGUuY29tLyIsIDE0KTsgLy8gZnJvbSBjcmVhdGVBdHRyaWJ1dGVOUyBz
ZWN0aW9uCitmdW5jdGlvbiBydW5OU1Rlc3RzKCkKK3sKKyAgICB2YXIgY3JlYXRlRnVuY3Rpb24g
PSBkb2N1bWVudC5jcmVhdGVBdHRyaWJ1dGVOUzsKKyAgICB2YXIgY3JlYXRlRnVuY3Rpb25OYW1l
ID0gImNyZWF0ZUF0dHJpYnV0ZU5TIjsKKyAgICB2YXIgZG9jID0gZG9jdW1lbnQ7CiAKLS8vIFRo
ZXNlIGFyZSByZXF1aXJlZCBieSBET00gTGV2ZWwgMyBjb3JlCi10ZXN0KCd4bWxuczp0ZXN0Jywg
Imh0dHA6Ly9leGFtcGxlLmNvbS8iLCAxNCk7Ci10ZXN0KCd4OnRlc3QnLCAiaHR0cDovL3d3dy53
My5vcmcvMjAwMC94bWxucy8iLCAxNCk7CisgICAgZm9yICh2YXIgaSA9IDAsIHN6ID0gYWxsTlNU
ZXN0cy5sZW5ndGg7IGkgPCBzejsgaSsrKSB7CisgICAgICAgIHZhciB0ZXN0ID0gYWxsTlNUZXN0
c1tpXTsKIAotLy8gbWFrZSBzdXJlIHdlIGNhbiBzdGlsbCBjcmVhdGUgYXJiaXRyYXJ5IGVsbWVu
dHMgaW4geG1sbnMgYW5kIHhtbCBuYW1lc3BhY2VzCi1zaG91bGRCZUVxdWFsVG9TdHJpbmcoImRv
Y3VtZW50LmNyZWF0ZUF0dHJpYnV0ZU5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLycs
ICd4bWxuczp0ZXN0JykudG9TdHJpbmcoKSIsICJbb2JqZWN0IEF0dHJdIik7Ci1zaG91bGRCZUVx
dWFsVG9TdHJpbmcoImRvY3VtZW50LmNyZWF0ZUF0dHJpYnV0ZU5TKCdodHRwOi8vd3d3LnczLm9y
Zy9YTUwvMTk5OC9uYW1lc3BhY2UnLCAneG1sOnRlc3QnKS50b1N0cmluZygpIiwgIltvYmplY3Qg
QXR0cl0iKTsKKyAgICAgICAgdmFyIGNvZGUgPSAtMTsKKyAgICAgICAgdmFyIGFyZ1N0ciA9IHNv
dXJjZWlmeSh0ZXN0LmFyZ3NbMF0pICsgIiwgIiArIHNvdXJjZWlmeSh0ZXN0LmFyZ3NbMV0pOwor
ICAgICAgICB0cnkgeworICAgICAgICAgICAgY3JlYXRlRnVuY3Rpb24uYXBwbHkoZG9jLCB0ZXN0
LmFyZ3MpOworICAgICAgICAgICAgdmFyIG1zZyA9IGNyZWF0ZUZ1bmN0aW9uTmFtZSArICIoIiAr
IGFyZ1N0ciArICIpIjsKKyAgICAgICAgICAgIGlmICgibWVzc2FnZSIgaW4gdGVzdCkKKyAgICAg
ICAgICAgICAgICBtc2cgKz0gIjsgIiArIHRlc3QubWVzc2FnZTsKKyAgICAgICAgICAgIGFzc2Vy
dCghKGNvZGUgaW4gdGVzdCksIG1zZyk7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAg
ICAgIHZhciBhcmdTdHIgPSBzb3VyY2VpZnkodGVzdC5hcmdzWzBdKSArICIsICIgKyBzb3VyY2Vp
ZnkodGVzdC5hcmdzWzFdKTsKKyAgICAgICAgICAgIG1zZyA9IGNyZWF0ZUZ1bmN0aW9uTmFtZSAr
ICIoIiArIGFyZ1N0ciArICIpIjsKKyAgICAgICAgICAgIGlmICgibWVzc2FnZSIgaW4gdGVzdCkK
KyAgICAgICAgICAgICAgICBtc2cgKz0gIjsgIiArIHRlc3QubWVzc2FnZTsKKyAgICAgICAgICAg
IGFzc2VydEVxdWFscyhlLmNvZGUsIHRlc3QuY29kZSB8fCAiZXhwZWN0ZWQgbm8gZXhjZXB0aW9u
IiwgbXNnKTsKKyAgICAgICAgfQorICAgIH0KK30KKworLy8gTW96IHRocm93cyBhICJOb3QgZW5v
dWdoIGFyZ3VtZW50cyIgZXhjZXB0aW9uIGluIHRoZXNlLCB3ZSBkb24ndDoKK3Nob3VsZEJlRXF1
YWxUb1N0cmluZygiZG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlTlMoKS50b1N0cmluZygpIiwgIltv
YmplY3QgQXR0cl0iKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZG9jdW1lbnQuY3JlYXRlQXR0
cmlidXRlTlMoXCJodHRwOi8vd3d3LmV4YW1wbGUuY29tXCIpLnRvU3RyaW5nKCkiLCAiW29iamVj
dCBBdHRyXSIpOwogCi0vLyBET00gQ29yZSBkb2VzIG5vdCBzZWVtIHRvIGRpc2FsbG93IHRoaXMs
IGFsdGhvdWdoIGEgdmFsaWRhdGluZyBYTUwgcGFyc2VyIHdvdWxkCi0vLyBzaW5jZSAieG1sIiBp
cyBhbHJlYWR5IGltcGxpY2l0eSBib3VuZCB0byB0aGlzIG5hbWVzcGFjZVVSSQotc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJkb2N1bWVudC5jcmVhdGVBdHRyaWJ1dGVOUygnaHR0cDovL3d3dy53My5v
cmcvWE1MLzE5OTgvbmFtZXNwYWNlJywgJ3g6dGVzdCcpLnRvU3RyaW5nKCkiLCAiW29iamVjdCBB
dHRyXSIpOworcnVuTlNUZXN0cygpOwogCiB2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L3Jlc291cmNlcy9jcmVh
dGVFbGVtZW50TlMtbmFtZXNwYWNlLWVyci5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3Vt
ZW50L3Jlc291cmNlcy9jcmVhdGVFbGVtZW50TlMtbmFtZXNwYWNlLWVyci5qcwppbmRleCA2MWMw
ZTVhLi5jZTk5OTllIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9y
ZXNvdXJjZXMvY3JlYXRlRWxlbWVudE5TLW5hbWVzcGFjZS1lcnIuanMKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vRG9jdW1lbnQvcmVzb3VyY2VzL2NyZWF0ZUVsZW1lbnROUy1uYW1lc3BhY2Ut
ZXJyLmpzCkBAIC0xLDg4ICsxLDEzNCBAQAotZGVzY3JpcHRpb24oJ0Vuc3VyZSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMgbWV0aG9kIHRocm93cyBOQU1FU1BBQ0VfRVJSIGF0IHByb3BlciB0aW1l
cycpOworZGVzY3JpcHRpb24oImNyZWF0ZUVsZW1lbnROUyB0ZXN0cyBmcm9tIG1vemlsbGEsIGF0
dGFjaGVkIHRvIHdlYmtpdCBidWcgMTY4MzMiKTsKIAotZnVuY3Rpb24gcXVvdGVTdHJpbmcocykg
ewotICAgIGlmICh0eXBlb2YgcyA9PSAic3RyaW5nIikgewotICAgICAgICByZXR1cm4gJyInICsg
cyArICciJzsKLSAgICB9Ci0gICAgcmV0dXJuICIiICsgczsKK2Z1bmN0aW9uIGFzc2VydChjLCBt
KQoreworICAgIGlmICghYykKKyAgICAgICAgdGVzdEZhaWxlZChtKTsKKyAgICBlbHNlCisgICAg
ICAgIHRlc3RQYXNzZWQobSk7CiB9CiAKLWZ1bmN0aW9uIHNob3VsZFRocm93V2l0aENvZGUoYSwg
Y29kZSkgewotICAgIHRyeSB7Ci0gICAgICAgIHZhciByZXN1bHQgPSBldmFsKGEpOwotICAgICAg
ICB2YXIgZmFpbHVyZVN0cmluZyA9ICIiICsgYSArICIgcmV0dXJuZWQgIiArIHJlc3VsdDsKLSAg
ICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIEVsZW1lbnQpIHsKLSAgICAgICAgICAgIGZhaWx1
cmVTdHJpbmcgKz0gIiBwcmVmaXg6ICIgKyBxdW90ZVN0cmluZyhyZXN1bHQucHJlZml4KTsKLSAg
ICAgICAgICAgIGZhaWx1cmVTdHJpbmcgKz0gIiBsb2NhbE5hbWU6ICIgKyBxdW90ZVN0cmluZyhy
ZXN1bHQubG9jYWxOYW1lKTsKLSAgICAgICAgICAgIGZhaWx1cmVTdHJpbmcgKz0gIiBuYW1lc3Bh
Y2VVUkk6ICIgKyBxdW90ZVN0cmluZyhyZXN1bHQubmFtZXNwYWNlVVJJKTsKLSAgICAgICAgfQot
ICAgICAgICBmYWlsdXJlU3RyaW5nICs9ICIsIGV4cGVjdGVkIGV4Y2VwdGlvbiBjb2RlOiAiICsg
Y29kZTsKLSAgICAgICAgdGVzdEZhaWxlZChmYWlsdXJlU3RyaW5nKTsKLSAgICB9IGNhdGNoIChl
KSB7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBpZiAoZS5jb2RlID09IGNvZGUpIHsKLSAg
ICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCIiICsgYSArICIgdGhyZXcgZXhjZXB0aW9uIGNvZGUg
IiArIGNvZGUpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCIiICsgYSArICIgdGhyZXcgd3JvbmcgZXhjZXB0aW9uIGNvZGUgIiArIGUuY29kZSArICIg
ZXhwZWN0ZWQgIiArIGNvZGUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9IGNhdGNoKGV4cCkge30KLSAgICAgICAgdGVzdEZhaWxlZCgiIiArIGEgKyAiIHRo
cmV3IHdyb25nIGV4Y2VwdGlvbjogIiArIGUpOwotICAgICAgICByZXR1cm47CitmdW5jdGlvbiBz
dHJpbmdGb3JFeGNlcHRpb25Db2RlKGMpCit7CisgICAgdmFyIGV4Y2VwdGlvbk5hbWU7CisgICAg
c3dpdGNoKGMpIHsKKyAgICAgICAgY2FzZSBET01FeGNlcHRpb24uSU5WQUxJRF9DSEFSQUNURVJf
RVJSOgorICAgICAgICAgICAgZXhjZXB0aW9uTmFtZSA9ICJJTlZBTElEX0NIQVJBQ1RFUl9FUlIi
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRE9NRXhjZXB0aW9uLk5BTUVTUEFD
RV9FUlI6CisgICAgICAgICAgICBleGNlcHRpb25OYW1lID0gIk5BTUVTUEFDRV9FUlIiOwogICAg
IH0KKyAgICBpZiAoZXhjZXB0aW9uTmFtZSkKKyAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbk5hbWU7
IC8vICsgIigiICsgYyArICIpIjsKKyAgICByZXR1cm4gYzsKIH0KIAotZnVuY3Rpb24gdGVzdChu
YW1lLCBuYW1lc3BhY2UsIGNvZGUpIHsKLSAgICBzaG91bGRUaHJvd1dpdGhDb2RlKCJkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoIiArIHF1b3RlU3RyaW5nKG5hbWVzcGFjZSkgKyAiLCAiICsgcXVv
dGVTdHJpbmcobmFtZSkgKyAiKSIsIGNvZGUpOworZnVuY3Rpb24gYXNzZXJ0RXF1YWxzKGFjdHVh
bCwgZXhwZWN0LCBtKQoreworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdCkgeworICAgICAgICBt
ICs9ICI7IGV4cGVjdGVkICIgKyBzdHJpbmdGb3JFeGNlcHRpb25Db2RlKGV4cGVjdCkgKyAiLCB0
aHJldyAiICsgc3RyaW5nRm9yRXhjZXB0aW9uQ29kZShhY3R1YWwpOworICAgICAgICB0ZXN0RmFp
bGVkKG0pOworICAgIH0gZWxzZSB7CisgICAgICAgIG0gKz0gIjsgdGhyZXcgIiArIHN0cmluZ0Zv
ckV4Y2VwdGlvbkNvZGUoYWN0dWFsKTs7CisgICAgICAgIHRlc3RQYXNzZWQobSk7CisgICAgfQog
fQogCi0vLyBXZSB1c2UgbnVtYmVycyBpbnN0ZWFkIG9mIG5hbWVzLCBiZWNhdXNlIGl0J3Mgc2xp
Z2h0bHkgZWFzaWVyIHRvIHJlYWQKLS8vIERPTUV4Y2VwdGlvbi5JTlZBTElEX0NIQVJBQ1RFUl9F
UlIgPSA1Ci0vLyBET01FeGNlcHRpb24uTkFNRVNQQUNFX0VSUiA9IDE0Cit2YXIgYWxsTlNUZXN0
cyA9IFsKKyAgIHsgYXJnczogW3VuZGVmaW5lZCwgdW5kZWZpbmVkXSB9LAorICAgeyBhcmdzOiBb
bnVsbCwgdW5kZWZpbmVkXSB9LAorICAgeyBhcmdzOiBbdW5kZWZpbmVkLCBudWxsXSwgY29kZTog
NSB9LAorICAgeyBhcmdzOiBbbnVsbCwgbnVsbF0sIGNvZGU6IDUgfSwKKyAgIHsgYXJnczogW251
bGwsICIiXSwgY29kZTogNSB9LAorICAgeyBhcmdzOiBbIiIsIG51bGxdLCBjb2RlOiA1IH0sCisg
ICB7IGFyZ3M6IFsiIiwgIiJdLCBjb2RlOiA1IH0sCisgICB7IGFyZ3M6IFtudWxsLCAiPGRpdj4i
XSwgY29kZTogNSB9LAorICAgeyBhcmdzOiBbbnVsbCwgIjBkaXYiXSwgY29kZTogNSB9LAorICAg
eyBhcmdzOiBbbnVsbCwgImRpIHYiXSwgY29kZTogNSB9LAorICAgeyBhcmdzOiBbbnVsbCwgImRp
PHYiXSwgY29kZTogNSB9LAorICAgeyBhcmdzOiBbbnVsbCwgIi1kaXYiXSwgY29kZTogNSB9LAor
ICAgeyBhcmdzOiBbbnVsbCwgIi5kaXYiXSwgY29kZTogNSB9LAorICAgeyBhcmdzOiBbImh0dHA6
Ly9leGFtcGxlLmNvbS8iLCAiPGRpdj4iXSwgY29kZTogNSB9LAorICAgeyBhcmdzOiBbImh0dHA6
Ly9leGFtcGxlLmNvbS8iLCAiMGRpdiJdLCBjb2RlOiA1IH0sCisgICB7IGFyZ3M6IFsiaHR0cDov
L2V4YW1wbGUuY29tLyIsICJkaTx2Il0sIGNvZGU6IDUgfSwKKyAgIHsgYXJnczogWyJodHRwOi8v
ZXhhbXBsZS5jb20vIiwgIi1kaXYiXSwgY29kZTogNSB9LAorICAgeyBhcmdzOiBbImh0dHA6Ly9l
eGFtcGxlLmNvbS8iLCAiLmRpdiJdLCBjb2RlOiA1IH0sCisgICB7IGFyZ3M6IFtudWxsLCAiOmRp
diJdLCBjb2RlOiAxNCB9LAorICAgeyBhcmdzOiBbbnVsbCwgImRpdjoiXSwgY29kZTogMTQgfSwK
KyAgIHsgYXJnczogWyJodHRwOi8vZXhhbXBsZS5jb20vIiwgIjpkaXYiXSwgY29kZTogMTQgfSwK
KyAgIHsgYXJnczogWyJodHRwOi8vZXhhbXBsZS5jb20vIiwgImRpdjoiXSwgY29kZTogMTQgfSwK
KyAgIHsgYXJnczogW251bGwsICJkOml2Il0sIGNvZGU6IDE0IH0sCisgICB7IGFyZ3M6IFtudWxs
LCAiYTpiOmMiXSwgY29kZTogMTQsIG1lc3NhZ2U6ICJ2YWxpZCBYTUwgbmFtZSwgaW52YWxpZCBR
TmFtZSIgfSwKKyAgIHsgYXJnczogWyJodHRwOi8vZXhhbXBsZS5jb20vIiwgImE6YjpjIl0sIGNv
ZGU6IDE0LCBtZXNzYWdlOiAidmFsaWQgWE1MIG5hbWUsIGludmFsaWQgUU5hbWUiIH0sCisgICB7
IGFyZ3M6IFtudWxsLCAiYTo6YyJdLCBjb2RlOiAxNCwgbWVzc2FnZTogInZhbGlkIFhNTCBuYW1l
LCBpbnZhbGlkIFFOYW1lIiB9LAorICAgeyBhcmdzOiBbImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAi
YTo6YyJdLCBjb2RlOiAxNCwgbWVzc2FnZTogInZhbGlkIFhNTCBuYW1lLCBpbnZhbGlkIFFOYW1l
IiB9LAorICAgeyBhcmdzOiBbImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiYTowIl0sIGNvZGU6IDUs
IG1lc3NhZ2U6ICJ2YWxpZCBYTUwgbmFtZSwgbm90IGEgdmFsaWQgUU5hbWUiIH0sCisgICB7IGFy
Z3M6IFsiaHR0cDovL2V4YW1wbGUuY29tLyIsICIwOmEiXSwgY29kZTogNSwgbWVzc2FnZTogIjAg
YXQgc3RhcnQgbWFrZXMgaXQgbm90IGEgdmFsaWQgWE1MIG5hbWUiIH0sCisgICB7IGFyZ3M6IFsi
aHR0cDovL2V4YW1wbGUuY29tLyIsICJhOl8iXSB9LAorICAgeyBhcmdzOiBbImh0dHA6Ly9leGFt
cGxlLmNvbS8iLCAiYTpcdTBCQzYiXSwgY29kZTogMTQsCisgICAgIG1lc3NhZ2U6ICJub24tQVND
SUkgY2hhcmFjdGVyIGFmdGVyIGNvbG9uIGlzIENvbWJpbmluZ0NoYXIsIHdoaWNoIGlzICIgKwor
ICAgICAgICAgICAgICAiTkNOYW1lQ2hhciBidXQgbm90IChMZXR0ZXIgfCBcIl9cIikgc28gaW52
YWxpZCBhdCBzdGFydCBvZiAiICsKKyAgICAgICAgICAgICAgIk5DTmFtZSAoYnV0IHN0aWxsIGEg
dmFsaWQgWE1MIG5hbWUsIGhlbmNlIG5vdCBJTlZBTElEX0NIQVJBQ1RFUl9FUlIpIiB9LAorICAg
eyBhcmdzOiBbImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiXHUwQkM2OmEiXSwgY29kZTogNSwKKyAg
ICAgbWVzc2FnZTogIm5vbi1BU0NJSSBjaGFyYWN0ZXIgYWZ0ZXIgY29sb24gaXMgQ29tYmluaW5n
Q2hhciwgd2hpY2ggaXMgIiArCisgICAgICAgICAgICAgICJOQ05hbWVDaGFyIGJ1dCBub3QgKExl
dHRlciB8IFwiX1wiKSBzbyBpbnZhbGlkIGF0IHN0YXJ0IG9mICIgKworICAgICAgICAgICAgICAi
TkNOYW1lIChHZWNrbyBjaG9vc2VzIHRvIHRocm93IE5BTUVTUEFDRV9FUlIgaGVyZSwgYnV0IGVp
dGhlciBpcyB2YWxpZCAiICsKKyAgICAgICAgICAgICAgImFzIHRoaXMgaXMgYm90aCBhbiBpbnZh
bGlkIFhNTCBuYW1lIGFuZCBhbiBpbnZhbGlkIFFOYW1lKSIgfSwKKyAgIHsgYXJnczogWyJodHRw
Oi8vZXhhbXBsZS5jb20vIiwgImE6YVx1MEJDNiJdIH0sCisgICB7IGFyZ3M6IFsiaHR0cDovL2V4
YW1wbGUuY29tLyIsICJhXHUwQkM2OmEiXSB9LAorICAgeyBhcmdzOiBbImh0dHA6Ly9leGFtcGxl
LmNvbS8iLCAieG1sOnRlc3QiXSwgY29kZTogMTQsIG1lc3NhZ2U6ICJiaW5kaW5nIHhtbCBwcmVm
aXggd3JvbmciIH0sCisgICB7IGFyZ3M6IFsiaHR0cDovL2V4YW1wbGUuY29tLyIsICJ4bWxuczp0
ZXN0Il0sIGNvZGU6IDE0LCBtZXNzYWdlOiAiYmluZGluZyB4bWxucyBwcmVmaXggd3JvbmciIH0s
CisgICB7IGFyZ3M6IFsiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8iLCAieDp0ZXN0Il0s
IGNvZGU6IDE0LCBtZXNzYWdlOiAiYmluZGluZyBuYW1lc3BhY2UgbmFtZXNwYWNlIHRvIHdyb25n
IHByZWZpeCIgfSwKKyAgIHsgYXJnczogWyJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyIs
ICJ4bWxuczp0ZXN0Il0gfSwKKyAgIHsgYXJnczogWyJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5
OC9uYW1lc3BhY2UiLCAieG1sOnRlc3QiXSB9LAorICAgeyBhcmdzOiBbImh0dHA6Ly93d3cudzMu
b3JnL1hNTC8xOTk4L25hbWVzcGFjZSIsICJ4OnRlc3QiXSB9LAorXTsKIAotLy8gTW96IHRocm93
cyBhICJOb3QgZW5vdWdoIGFyZ3VtZW50cyIgZXhjZXB0aW9uIGluIHRoZXNlLCB3ZSBkb24ndDoK
LXNob3VsZEJlRXF1YWxUb1N0cmluZygiZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCkudG9TdHJp
bmcoKSIsICJbb2JqZWN0IEVsZW1lbnRdIik7Ci1zaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUyhcImh0dHA6Ly93d3cuZXhhbXBsZS5jb21cIikudG9TdHJpbmco
KSIsICJbb2JqZWN0IEVsZW1lbnRdIik7CitmdW5jdGlvbiBzb3VyY2VpZnkodikKK3sKKyAgICBz
d2l0Y2ggKHR5cGVvZiB2KSB7CisgICAgY2FzZSAidW5kZWZpbmVkIjoKKyAgICAgICAgcmV0dXJu
IHY7CiAKLS8vIEkgZXhwZWN0IHRoaXMgaXMgc29tZSBvbGQgSUUvTW96IHF1aXJrCi1zaG91bGRC
ZUVxdWFsVG9TdHJpbmcoImRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh1bmRlZmluZWQsIHVuZGVm
aW5lZCkudG9TdHJpbmcoKSIsICJbb2JqZWN0IEVsZW1lbnRdIik7Ci1zaG91bGRCZUVxdWFsVG9T
dHJpbmcoImRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhudWxsLCB1bmRlZmluZWQpLnRvU3RyaW5n
KCkiLCAiW29iamVjdCBFbGVtZW50XSIpOworICAgIGNhc2UgInN0cmluZyI6CisgICAgICAgIHJl
dHVybiAnIicgKyB2LnJlcGxhY2UoJyInLCAnXFwiJykgKyAnIic7CiAKLS8vICcnIGFyZSBleHBl
Y3RlZCBhcyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIgaW5zdGVhZCBvZiBOQU1FU1BBQ0VfRVJSCi0v
LyBzZWUgZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfZG9jdW1lbnRpbnZhbGlkY2hhcmFjdGVyZXhj
ZXB0aW9uY3JlYXRlYXR0cmlidXRlMS5odG1sCi0vLyBhbmQgaHR0cDovL3d3dy53My5vcmcvQnVn
cy9QdWJsaWMvc2hvd19idWcuY2dpP2lkPTUyNQotdGVzdChudWxsLCB1bmRlZmluZWQsIDUpOwot
dGVzdChudWxsLCBudWxsLCA1KTsKLXRlc3QoJycsIG51bGwsIDUpOwotdGVzdCgnJywgJycsIDUp
OworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBTdHJpbmcodik7CisgICAgfQorfQogCi0v
LyBUaGVzZSBhcmUgZGVmaW5lZCBpbiBET00gTGV2ZWwgMiBjb3JlCi10ZXN0KCc8ZGl2PicsIG51
bGwsIDUpOwotdGVzdCgnMGRpdicsIG51bGwsIDUpOwotdGVzdCgnZGkgdicsIG51bGwsIDUpOwot
dGVzdCgnZGk8dicsIG51bGwsIDUpOwotdGVzdCgnLWRpdicsIG51bGwsIDUpOwotdGVzdCgnLmRp
dicsIG51bGwsIDUpOwotdGVzdCgnPGRpdj4nLCAiaHR0cDovL2V4YW1wbGUuY29tLyIsIDUpOwot
dGVzdCgnMGRpdicsICJodHRwOi8vZXhhbXBsZS5jb20vIiwgNSk7Ci10ZXN0KCdkaTx2JywgImh0
dHA6Ly9leGFtcGxlLmNvbS8iLCA1KTsKLXRlc3QoJy1kaXYnLCAiaHR0cDovL2V4YW1wbGUuY29t
LyIsIDUpOwotdGVzdCgnLmRpdicsICJodHRwOi8vZXhhbXBsZS5jb20vIiwgNSk7Ci10ZXN0KCc6
ZGl2JywgbnVsbCwgMTQpOwotdGVzdCgnOmRpdicsICJodHRwOi8vZXhhbXBsZS5jb20vIiwgMTQp
OwotdGVzdCgnZDppdicsIG51bGwsIDE0KTsKLXRlc3QoJ3htbDp0ZXN0JywgImh0dHA6Ly9leGFt
cGxlLmNvbS8iLCAxNCk7CitmdW5jdGlvbiBydW5OU1Rlc3RzKCkKK3sKKyAgICB2YXIgY3JlYXRl
RnVuY3Rpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlM7CisgICAgdmFyIGNyZWF0ZUZ1bmN0
aW9uTmFtZSA9ICJjcmVhdGVFbGVtZW50TlMiOworICAgIHZhciBkb2MgPSBkb2N1bWVudDsKIAot
Ly8gVGhlc2UgYXJlIHJlcXVpcmVkIGJ5IERPTSBMZXZlbCAzIGNvcmUKLXRlc3QoJ3htbG5zOnRl
c3QnLCAiaHR0cDovL2V4YW1wbGUuY29tLyIsIDE0KTsKLXRlc3QoJ3g6dGVzdCcsICJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3htbG5zLyIsIDE0KTsKKyAgICBmb3IgKHZhciBpID0gMCwgc3ogPSBh
bGxOU1Rlc3RzLmxlbmd0aDsgaSA8IHN6OyBpKyspIHsKKyAgICAgICAgdmFyIHRlc3QgPSBhbGxO
U1Rlc3RzW2ldOwogCi0vLyBtYWtlIHN1cmUgd2UgY2FuIHN0aWxsIGNyZWF0ZSBhcmJpdHJhcnkg
ZWxtZW50cyBpbiB4bWxucyBhbmQgeG1sIG5hbWVzcGFjZXMKLXNob3VsZEJlRXF1YWxUb1N0cmlu
ZygiZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5z
LycsICd4bWxuczp0ZXN0JykudG9TdHJpbmcoKSIsICJbb2JqZWN0IEVsZW1lbnRdIik7Ci1zaG91
bGRCZUVxdWFsVG9TdHJpbmcoImRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53
My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlJywgJ3htbDp0ZXN0JykudG9TdHJpbmcoKSIsICJbb2Jq
ZWN0IEVsZW1lbnRdIik7CisgICAgICAgIHZhciBjb2RlID0gLTE7CisgICAgICAgIHZhciBhcmdT
dHIgPSBzb3VyY2VpZnkodGVzdC5hcmdzWzBdKSArICIsICIgKyBzb3VyY2VpZnkodGVzdC5hcmdz
WzFdKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGNyZWF0ZUZ1bmN0aW9uLmFwcGx5KGRv
YywgdGVzdC5hcmdzKTsKKyAgICAgICAgICAgIHZhciBtc2cgPSBjcmVhdGVGdW5jdGlvbk5hbWUg
KyAiKCIgKyBhcmdTdHIgKyAiKSI7CisgICAgICAgICAgICBpZiAoIm1lc3NhZ2UiIGluIHRlc3Qp
CisgICAgICAgICAgICAgICAgbXNnICs9ICI7ICIgKyB0ZXN0Lm1lc3NhZ2U7CisgICAgICAgICAg
ICBhc3NlcnQoIShjb2RlIGluIHRlc3QpLCBtc2cpOworICAgICAgICB9IGNhdGNoIChlKSB7Cisg
ICAgICAgICAgICB2YXIgYXJnU3RyID0gc291cmNlaWZ5KHRlc3QuYXJnc1swXSkgKyAiLCAiICsg
c291cmNlaWZ5KHRlc3QuYXJnc1sxXSk7CisgICAgICAgICAgICBtc2cgPSBjcmVhdGVGdW5jdGlv
bk5hbWUgKyAiKCIgKyBhcmdTdHIgKyAiKSI7CisgICAgICAgICAgICBpZiAoIm1lc3NhZ2UiIGlu
IHRlc3QpCisgICAgICAgICAgICAgICAgbXNnICs9ICI7ICIgKyB0ZXN0Lm1lc3NhZ2U7CisgICAg
ICAgICAgICBhc3NlcnRFcXVhbHMoZS5jb2RlLCB0ZXN0LmNvZGUgfHwgImV4cGVjdGVkIG5vIGV4
Y2VwdGlvbiIsIG1zZyk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8vIE1veiB0aHJvd3MgYSAi
Tm90IGVub3VnaCBhcmd1bWVudHMiIGV4Y2VwdGlvbiBpbiB0aGVzZSwgd2UgZG9uJ3Q6CitzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygpLnRvU3RyaW5nKCki
LCAiW29iamVjdCBFbGVtZW50XSIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoXCJodHRwOi8vd3d3LmV4YW1wbGUuY29tXCIpLnRvU3RyaW5nKCkiLCAi
W29iamVjdCBFbGVtZW50XSIpOwogCi0vLyBET00gQ29yZSBkb2VzIG5vdCBzZWVtIHRvIGRpc2Fs
bG93IHRoaXMsIGFsdGhvdWdoIGEgdmFsaWRhdGluZyBYTUwgcGFyc2VyIHdvdWxkCi0vLyBzaW5j
ZSAieG1sIiBpcyBhbHJlYWR5IGltcGxpY2l0eSBib3VuZCB0byB0aGlzIG5hbWVzcGFjZVVSSQot
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93
d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZScsICd4OnRlc3QnKS50b1N0cmluZygpIiwgIltv
YmplY3QgRWxlbWVudF0iKTsKK3J1bk5TVGVzdHMoKTsKIAogdmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggYTcxZjZlNS4uNTc1MTAwZSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAt
NzAwLDEwICs3MDAsOSBAQCBQYXNzUmVmUHRyPE5vZGU+IERvY3VtZW50OjphZG9wdE5vZGUoUGFz
c1JlZlB0cjxOb2RlPiBzb3VyY2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIHJldHVybiBzb3Vy
Y2U7CiB9CiAKLXN0YXRpYyBib29sIGNoZWNrRm9yTmFtZXNwYWNlRXJyb3IoY29uc3QgUXVhbGlm
aWVkTmFtZSYgcU5hbWUpCitzdGF0aWMgYm9vbCBoYXNOYW1lc3BhY2VFcnJvcihjb25zdCBRdWFs
aWZpZWROYW1lJiBxTmFtZSkKIHsKLSAgICAvLyBGSVhNRTogV2UgZGVmaW5lIHRoZXNlIG1vcmUg
dGhhbiBvbmNlIGluIFdlYkNvcmUsIHdlIGNvdWxkIHVzZSBhbiBYTUxOU05hbWVzLmNwcCBzb21l
ZGF5Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyB4bWxuc1VSSSA9ICJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3htbG5zLyI7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyB4bWxu
c05hbWVzcGFjZVVSSSA9ICJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyI7CiAgICAgc3Rh
dGljIGNvbnN0IEF0b21pY1N0cmluZyB4bWxucyA9ICJ4bWxucyI7CiAgICAgc3RhdGljIGNvbnN0
IEF0b21pY1N0cmluZyB4bWwgPSAieG1sIjsKIApAQCAtNzIxLDcgKzcyMCw3IEBAIHN0YXRpYyBi
b29sIGNoZWNrRm9yTmFtZXNwYWNlRXJyb3IoY29uc3QgUXVhbGlmaWVkTmFtZSYgcU5hbWUpCiAg
ICAgLy8gUmVxdWlyZWQgYnkgRE9NIExldmVsIDMgQ29yZSBhbmQgdW5zcGVjaWZpZWQgYnkgRE9N
IExldmVsIDIgQ29yZToKICAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDA0L1JFQy1ET00t
TGV2ZWwtMy1Db3JlLTIwMDQwNDA3L2NvcmUuaHRtbCNJRC1Eb2NDckVsTlMKICAgICAvLyBjcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIiwgImZvbzpiYXIiKSwg
Y3JlYXRlRWxlbWVudE5TKG51bGwsICJ4bWxuczpiYXIiKQotICAgIGlmICgocU5hbWUucHJlZml4
KCkgPT0geG1sbnMgJiYgcU5hbWUubmFtZXNwYWNlVVJJKCkgIT0geG1sbnNVUkkpIHx8IChxTmFt
ZS5wcmVmaXgoKSAhPSB4bWxucyAmJiBxTmFtZS5uYW1lc3BhY2VVUkkoKSA9PSB4bWxuc1VSSSkp
CisgICAgaWYgKChxTmFtZS5wcmVmaXgoKSA9PSB4bWxucyAmJiBxTmFtZS5uYW1lc3BhY2VVUkko
KSAhPSB4bWxuc05hbWVzcGFjZVVSSSkgfHwgKHFOYW1lLnByZWZpeCgpICE9IHhtbG5zICYmIHFO
YW1lLm5hbWVzcGFjZVVSSSgpID09IHhtbG5zTmFtZXNwYWNlVVJJKSkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAKICAgICByZXR1cm4gZmFsc2U7CkBAIC03NDMsOSArNzQyLDExIEBAIFBhc3NSZWZQ
dHI8RWxlbWVudD4gRG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
cU5hbWUsIGJvb2wgY3JlCiAgICAgaWYgKCFlKQogICAgICAgICBlID0gbmV3IEVsZW1lbnQocU5h
bWUsIGRvY3VtZW50KCkpOwogICAgIAotICAgIC8vIEZJWE1FOiB0aGUgZWxlbWVudCBmYWN0b3Jp
ZXMgc2hvdWxkIGJlIGZpeGVkIHRvIG5vdCBpZ25vcmUgcU5hbWUucHJlZml4KCkKLSAgICAvLyB0
aGVuIHRoaXMgY29kZSBjYW4gYmVjb21lIEFTU0VSVChxTmFtZSA9PSBlLnFuYW1lKCkpOwotICAg
IC8vIFRoZW4gZnVuY3Rpb24gY2FuIHN0b3AgdGFraW5nIEV4Y2VwdGlvbkNvZGUmIGFzIHdlbGwu
CisgICAgLy8gRklYTUU6IFRoZSBlbGVtZW50IGZhY3RvcmllcyBzaG91bGQgYmUgZml4ZWQgdG8g
bm90IGlnbm9yZSBxTmFtZS5wcmVmaXgoKQorICAgIC8vIEluc3RlYWQgdGhleSBzaG91bGQgcGFz
cyB0aGUgZW50aXJlIHFOYW1lIGludG8gZWxlbWVudCBjcmVhdGlvbiBzbyB3ZSBkb24ndAorICAg
IC8vIG5lZWQgdG8gbWFudWFsbHkgc2V0IHRoZSBwcmVmaXggYWZ0ZXIgY3JlYXRpb24uCisgICAg
Ly8gVGhlbiB0aGlzIGNvZGUgY2FuIGJlY29tZSBBU1NFUlQocU5hbWUgPT0gZS5xbmFtZSgpKTsK
KyAgICAvLyBhbmQgRG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnQgY2FuIHN0b3AgdGFraW5nIEV4Y2Vw
dGlvbkNvZGUmIGFzIHdlbGwuCiAgICAgaWYgKGUgJiYgIXFOYW1lLnByZWZpeCgpLmlzTnVsbCgp
KSB7CiAgICAgICAgIGVjID0gMDsKICAgICAgICAgZS0+c2V0UHJlZml4KHFOYW1lLnByZWZpeCgp
LCBlYyk7CkBAIC03NTYsMTkgKzc1NywxNiBAQCBQYXNzUmVmUHRyPEVsZW1lbnQ+IERvY3VtZW50
OjpjcmVhdGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHFOYW1lLCBib29sIGNyZQogICAg
IHJldHVybiBlLnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxFbGVtZW50PiBEb2N1bWVudDo6
Y3JlYXRlRWxlbWVudE5TKGNvbnN0IFN0cmluZyYgX25hbWVzcGFjZVVSSSwgY29uc3QgU3RyaW5n
JiBxdWFsaWZpZWROYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8RWxlbWVudD4g
RG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnROUyhjb25zdCBTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29u
c3QgU3RyaW5nJiBxdWFsaWZpZWROYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBTdHJp
bmcgcHJlZml4LCBsb2NhbE5hbWU7CiAgICAgaWYgKCFwYXJzZVF1YWxpZmllZE5hbWUocXVhbGlm
aWVkTmFtZSwgcHJlZml4LCBsb2NhbE5hbWUpKSB7Ci0gICAgICAgIC8vIHF1YWxpZmllZE5hbWUu
aXNFbXB0eSgpIGFsc28gaGl0cyB0aGlzIHBhdGggKG5vdCBOQU1FU1BBQ0VfRVJSKSwgc2VlOgot
ICAgICAgICAvLyBkb20vaHRtbC9sZXZlbDEvY29yZS9oY19kb2N1bWVudGludmFsaWRjaGFyYWN0
ZXJleGNlcHRpb25jcmVhdGVhdHRyaWJ1dGUxLmh0bWwKLSAgICAgICAgLy8gYW5kIGh0dHA6Ly93
d3cudzMub3JnL0J1Z3MvUHVibGljL3Nob3dfYnVnLmNnaT9pZD01MjUKICAgICAgICAgZWMgPSBJ
TlZBTElEX0NIQVJBQ1RFUl9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIFF1
YWxpZmllZE5hbWUgcU5hbWUocHJlZml4LCBsb2NhbE5hbWUsIF9uYW1lc3BhY2VVUkkpOwotICAg
IGlmIChjaGVja0Zvck5hbWVzcGFjZUVycm9yKHFOYW1lKSkgeworICAgIFF1YWxpZmllZE5hbWUg
cU5hbWUocHJlZml4LCBsb2NhbE5hbWUsIG5hbWVzcGFjZVVSSSk7CisgICAgaWYgKGhhc05hbWVz
cGFjZUVycm9yKHFOYW1lKSkgewogICAgICAgICBlYyA9IE5BTUVTUEFDRV9FUlI7CiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KQEAgLTM0MzEsMjEgKzM0MjksMTcgQEAgUGFzc1JlZlB0cjxBdHRy
PiBEb2N1bWVudDo6Y3JlYXRlQXR0cmlidXRlTlMoY29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUkks
IGNvbnN0IFMKIHsKICAgICBTdHJpbmcgcHJlZml4LCBsb2NhbE5hbWU7CiAgICAgaWYgKCFwYXJz
ZVF1YWxpZmllZE5hbWUocXVhbGlmaWVkTmFtZSwgcHJlZml4LCBsb2NhbE5hbWUpKSB7Ci0gICAg
ICAgIC8vIHF1YWxpZmllZE5hbWUuaXNFbXB0eSgpIGFsc28gaGl0cyB0aGlzIHBhdGggKG5vdCBO
QU1FU1BBQ0VfRVJSKSwgc2VlOgotICAgICAgICAvLyBkb20vaHRtbC9sZXZlbDEvY29yZS9oY19k
b2N1bWVudGludmFsaWRjaGFyYWN0ZXJleGNlcHRpb25jcmVhdGVhdHRyaWJ1dGUxLmh0bWwKLSAg
ICAgICAgLy8gYW5kIGh0dHA6Ly93d3cudzMub3JnL0J1Z3MvUHVibGljL3Nob3dfYnVnLmNnaT9p
ZD01MjUKICAgICAgICAgZWMgPSBJTlZBTElEX0NIQVJBQ1RFUl9FUlI7CiAgICAgICAgIHJldHVy
biAwOwogICAgIH0KIAogICAgIFF1YWxpZmllZE5hbWUgcU5hbWUocHJlZml4LCBsb2NhbE5hbWUs
IG5hbWVzcGFjZVVSSSk7Ci0gICAgaWYgKGNoZWNrRm9yTmFtZXNwYWNlRXJyb3IocU5hbWUpKSB7
CisgICAgaWYgKGhhc05hbWVzcGFjZUVycm9yKHFOYW1lKSkgewogICAgICAgICBlYyA9IE5BTUVT
UEFDRV9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIC8vIFNwZWM6IERPTSBM
ZXZlbCAyIENvcmU6ICBjcmVhdGVBdHRyaWJ1dGVOUyhudWxsLCAieG1sbnMiKSBzaG91bGQgdGhy
b3cKLSAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwtMi1Db3JlL2NvcmUuaHRt
bCNJRC1Eb2NDckF0dHJOCisgICAgLy8gU3BlYzogRE9NIExldmVsIDIgQ29yZTogaHR0cDovL3d3
dy53My5vcmcvVFIvRE9NLUxldmVsLTItQ29yZS9jb3JlLmh0bWwjSUQtRG9jQ3JBdHRyTlMKICAg
ICBpZiAocU5hbWUubG9jYWxOYW1lKCkgPT0gInhtbG5zIiAmJiBxTmFtZS5uYW1lc3BhY2VVUkko
KSAhPSAiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8iKSB7CiAgICAgICAgIGVjID0gTkFN
RVNQQUNFX0VSUjsKICAgICAgICAgcmV0dXJuIDA7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18882</attachid>
            <date>2008-02-03 05:13:54 -0800</date>
            <delta_ts>2008-03-15 18:28:02 -0700</delta_ts>
            <desc>Squashed patch for final review</desc>
            <filename>Squashed-patch-for-final-review.patch</filename>
            <type>text/plain</type>
            <size>30182</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">YTVhMDQ3ZjQ4MmIzOGExNTllMjBmMmIzNTQ3YzMxYTJmODhlMWY0ZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMy9jb3JlL2RvY3VtZW50c2V0c3RyaWN0ZXJyb3JjaGVj
a2luZzAyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDMvY29yZS9k
b2N1bWVudHNldHN0cmljdGVycm9yY2hlY2tpbmcwMi1leHBlY3RlZC50eHQKaW5kZXggMmYyMzNl
MS4uOGI1YTc1ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMy9jb3Jl
L2RvY3VtZW50c2V0c3RyaWN0ZXJyb3JjaGVja2luZzAyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9kb20veGh0bWwvbGV2ZWwzL2NvcmUvZG9jdW1lbnRzZXRzdHJpY3RlcnJvcmNoZWNr
aW5nMDItZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsMiBAQAogVGVzdAlodHRwOi8vd3d3LnczLm9y
Zy8yMDAxL0RPTS1UZXN0LVN1aXRlL2xldmVsMy9jb3JlL2RvY3VtZW50c2V0c3RyaWN0ZXJyb3Jj
aGVja2luZzAyCi1TdGF0dXMJZmFpbHVyZQotTWVzc2FnZQlOQU1FU1BBQ0VfRVJSX2RvY3VtZW50
c2V0c3RyaWN0ZXJyb3JjaGVja2luZzAyOiBhc3NlcnRUcnVlIGZhaWxlZAorU3RhdHVzCVN1Y2Nl
c3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L2NyZWF0ZUF0dHJp
YnV0ZU5TLW5hbWVzcGFjZS1lcnItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
RG9jdW1lbnQvY3JlYXRlQXR0cmlidXRlTlMtbmFtZXNwYWNlLWVyci1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2NkZjI1NgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L2NyZWF0ZUF0dHJpYnV0ZU5TLW5hbWVz
cGFjZS1lcnItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNTIgQEAKK2NyZWF0ZUF0dGlyYnV0ZU5T
IHRlc3RzIGFkYXB0ZWQgZnJvbSBjcmVhdGVFbGVtZW50TlMgdGVzdHMgYXR0YWNoZWQgdG8gd2Vi
a2l0IGJ1ZyAxNjgzMworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBkb2N1
bWVudC5jcmVhdGVBdHRyaWJ1dGVOUygpLnRvU3RyaW5nKCkgaXMgIltvYmplY3QgQXR0cl0iCitQ
QVNTIGRvY3VtZW50LmNyZWF0ZUF0dHJpYnV0ZU5TKCJodHRwOi8vd3d3LmV4YW1wbGUuY29tIiku
dG9TdHJpbmcoKSBpcyAiW29iamVjdCBBdHRyXSIKK1BBU1MgY3JlYXRlQXR0cmlidXRlTlModW5k
ZWZpbmVkLCB1bmRlZmluZWQpCitQQVNTIGNyZWF0ZUF0dHJpYnV0ZU5TKG51bGwsIHVuZGVmaW5l
ZCkKK1BBU1MgY3JlYXRlQXR0cmlidXRlTlModW5kZWZpbmVkLCBudWxsKTsgdGhyZXcgSU5WQUxJ
RF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUF0dHJpYnV0ZU5TKG51bGwsIG51bGwpOyB0aHJl
dyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlQXR0cmlidXRlTlMobnVsbCwgIiIp
OyB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlQXR0cmlidXRlTlMoIiIs
IG51bGwpOyB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlQXR0cmlidXRl
TlMoIiIsICIiKTsgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUF0dHJp
YnV0ZU5TKG51bGwsICI8ZGl2PiIpOyB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1Mg
Y3JlYXRlQXR0cmlidXRlTlMobnVsbCwgIjBkaXYiKTsgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJf
RVJSCitQQVNTIGNyZWF0ZUF0dHJpYnV0ZU5TKG51bGwsICJkaSB2Iik7IHRocmV3IElOVkFMSURf
Q0hBUkFDVEVSX0VSUgorUEFTUyBjcmVhdGVBdHRyaWJ1dGVOUyhudWxsLCAiZGk8diIpOyB0aHJl
dyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlQXR0cmlidXRlTlMobnVsbCwgIi1k
aXYiKTsgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUF0dHJpYnV0ZU5T
KG51bGwsICIuZGl2Iik7IHRocmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgorUEFTUyBjcmVhdGVB
dHRyaWJ1dGVOUygiaHR0cDovL2V4YW1wbGUuY29tLyIsICI8ZGl2PiIpOyB0aHJldyBJTlZBTElE
X0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlQXR0cmlidXRlTlMoImh0dHA6Ly9leGFtcGxlLmNv
bS8iLCAiMGRpdiIpOyB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlQXR0
cmlidXRlTlMoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiZGk8diIpOyB0aHJldyBJTlZBTElEX0NI
QVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlQXR0cmlidXRlTlMoImh0dHA6Ly9leGFtcGxlLmNvbS8i
LCAiLWRpdiIpOyB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlQXR0cmli
dXRlTlMoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiLmRpdiIpOyB0aHJldyBJTlZBTElEX0NIQVJB
Q1RFUl9FUlIKK1BBU1MgY3JlYXRlQXR0cmlidXRlTlMobnVsbCwgIjpkaXYiKTsgdGhyZXcgTkFN
RVNQQUNFX0VSUgorUEFTUyBjcmVhdGVBdHRyaWJ1dGVOUyhudWxsLCAiZGl2OiIpOyB0aHJldyBO
QU1FU1BBQ0VfRVJSCitQQVNTIGNyZWF0ZUF0dHJpYnV0ZU5TKCJodHRwOi8vZXhhbXBsZS5jb20v
IiwgIjpkaXYiKTsgdGhyZXcgTkFNRVNQQUNFX0VSUgorUEFTUyBjcmVhdGVBdHRyaWJ1dGVOUygi
aHR0cDovL2V4YW1wbGUuY29tLyIsICJkaXY6Iik7IHRocmV3IE5BTUVTUEFDRV9FUlIKK1BBU1Mg
Y3JlYXRlQXR0cmlidXRlTlMobnVsbCwgImQ6aXYiKTsgdGhyZXcgTkFNRVNQQUNFX0VSUgorRkFJ
TCBjcmVhdGVBdHRyaWJ1dGVOUyhudWxsLCAiYTpiOmMiKTsgdmFsaWQgWE1MIG5hbWUsIGludmFs
aWQgUU5hbWU7IGV4cGVjdGVkIE5BTUVTUEFDRV9FUlIsIHRocmV3IElOVkFMSURfQ0hBUkFDVEVS
X0VSUgorRkFJTCBjcmVhdGVBdHRyaWJ1dGVOUygiaHR0cDovL2V4YW1wbGUuY29tLyIsICJhOmI6
YyIpOyB2YWxpZCBYTUwgbmFtZSwgaW52YWxpZCBRTmFtZTsgZXhwZWN0ZWQgTkFNRVNQQUNFX0VS
UiwgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitGQUlMIGNyZWF0ZUF0dHJpYnV0ZU5TKG51
bGwsICJhOjpjIik7IHZhbGlkIFhNTCBuYW1lLCBpbnZhbGlkIFFOYW1lOyBleHBlY3RlZCBOQU1F
U1BBQ0VfRVJSLCB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK0ZBSUwgY3JlYXRlQXR0cmli
dXRlTlMoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiYTo6YyIpOyB2YWxpZCBYTUwgbmFtZSwgaW52
YWxpZCBRTmFtZTsgZXhwZWN0ZWQgTkFNRVNQQUNFX0VSUiwgdGhyZXcgSU5WQUxJRF9DSEFSQUNU
RVJfRVJSCitQQVNTIGNyZWF0ZUF0dHJpYnV0ZU5TKCJodHRwOi8vZXhhbXBsZS5jb20vIiwgImE6
MCIpOyB2YWxpZCBYTUwgbmFtZSwgbm90IGEgdmFsaWQgUU5hbWU7IHRocmV3IElOVkFMSURfQ0hB
UkFDVEVSX0VSUgorUEFTUyBjcmVhdGVBdHRyaWJ1dGVOUygiaHR0cDovL2V4YW1wbGUuY29tLyIs
ICIwOmEiKTsgMCBhdCBzdGFydCBtYWtlcyBpdCBub3QgYSB2YWxpZCBYTUwgbmFtZTsgdGhyZXcg
SU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUF0dHJpYnV0ZU5TKCJodHRwOi8vZXhh
bXBsZS5jb20vIiwgImE6XyIpCitGQUlMIGNyZWF0ZUF0dHJpYnV0ZU5TKCJodHRwOi8vZXhhbXBs
ZS5jb20vIiwgImE64K+GIik7IG5vbi1BU0NJSSBjaGFyYWN0ZXIgYWZ0ZXIgY29sb24gaXMgQ29t
YmluaW5nQ2hhciwgd2hpY2ggaXMgTkNOYW1lQ2hhciBidXQgbm90IChMZXR0ZXIgfCAiXyIpIHNv
IGludmFsaWQgYXQgc3RhcnQgb2YgTkNOYW1lIChidXQgc3RpbGwgYSB2YWxpZCBYTUwgbmFtZSwg
aGVuY2Ugbm90IElOVkFMSURfQ0hBUkFDVEVSX0VSUik7IGV4cGVjdGVkIE5BTUVTUEFDRV9FUlIs
IHRocmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgorUEFTUyBjcmVhdGVBdHRyaWJ1dGVOUygiaHR0
cDovL2V4YW1wbGUuY29tLyIsICLgr4Y6YSIpOyBub24tQVNDSUkgY2hhcmFjdGVyIGFmdGVyIGNv
bG9uIGlzIENvbWJpbmluZ0NoYXIsIHdoaWNoIGlzIE5DTmFtZUNoYXIgYnV0IG5vdCAoTGV0dGVy
IHwgIl8iKSBzbyBpbnZhbGlkIGF0IHN0YXJ0IG9mIE5DTmFtZSAoR2Vja28gY2hvb3NlcyB0byB0
aHJvdyBOQU1FU1BBQ0VfRVJSIGhlcmUsIGJ1dCBlaXRoZXIgaXMgdmFsaWQgYXMgdGhpcyBpcyBi
b3RoIGFuIGludmFsaWQgWE1MIG5hbWUgYW5kIGFuIGludmFsaWQgUU5hbWUpOyB0aHJldyBJTlZB
TElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlQXR0cmlidXRlTlMoImh0dHA6Ly9leGFtcGxl
LmNvbS8iLCAiYTph4K+GIikKK1BBU1MgY3JlYXRlQXR0cmlidXRlTlMoImh0dHA6Ly9leGFtcGxl
LmNvbS8iLCAiYeCvhjphIikKK1BBU1MgY3JlYXRlQXR0cmlidXRlTlMoImh0dHA6Ly9leGFtcGxl
LmNvbS8iLCAieG1sOnRlc3QiKTsgYmluZGluZyB4bWwgcHJlZml4IHdyb25nOyB0aHJldyBOQU1F
U1BBQ0VfRVJSCitQQVNTIGNyZWF0ZUF0dHJpYnV0ZU5TKCJodHRwOi8vZXhhbXBsZS5jb20vIiwg
InhtbG5zOnRlc3QiKTsgYmluZGluZyB4bWxucyBwcmVmaXggd3Jvbmc7IHRocmV3IE5BTUVTUEFD
RV9FUlIKK1BBU1MgY3JlYXRlQXR0cmlidXRlTlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1s
bnMvIiwgIng6dGVzdCIpOyBiaW5kaW5nIG5hbWVzcGFjZSBuYW1lc3BhY2UgdG8gd3JvbmcgcHJl
Zml4OyB0aHJldyBOQU1FU1BBQ0VfRVJSCitQQVNTIGNyZWF0ZUF0dHJpYnV0ZU5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3htbG5zLyIsICJ4bWxuczp0ZXN0IikKK1BBU1MgY3JlYXRlQXR0cmli
dXRlTlMoImh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIsICJ4bWw6dGVzdCIp
CitQQVNTIGNyZWF0ZUF0dHJpYnV0ZU5TKCJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1l
c3BhY2UiLCAieDp0ZXN0IikKK1BBU1MgY3JlYXRlQXR0cmlidXRlTlMoImh0dHA6Ly9leGFtcGxl
LmNvbS8iLCAieG1sbnMiKTsgdGhyZXcgTkFNRVNQQUNFX0VSUgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL0RvY3VtZW50L2NyZWF0ZUF0dHJpYnV0ZU5TLW5hbWVzcGFjZS1lcnIuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L2NyZWF0ZUF0dHJpYnV0ZU5TLW5hbWVzcGFj
ZS1lcnIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMGNiMmJkCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvY3JlYXRlQXR0
cmlidXRlTlMtbmFtZXNwYWNlLWVyci5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBI
VE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY3JlYXRlQXR0cmli
dXRlTlMtbmFtZXNwYWNlLWVyci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9jcmVhdGVFbGVtZW50TlMt
bmFtZXNwYWNlLWVyci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVu
dC9jcmVhdGVFbGVtZW50TlMtbmFtZXNwYWNlLWVyci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTJjMjhkOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L2NyZWF0ZUVsZW1lbnROUy1uYW1lc3BhY2UtZXJyLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDUxIEBACitjcmVhdGVFbGVtZW50TlMgdGVzdHMgZnJvbSBt
b3ppbGxhLCBhdHRhY2hlZCB0byB3ZWJraXQgYnVnIDE2ODMzCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitQQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygpLnRvU3RyaW5nKCkg
aXMgIltvYmplY3QgRWxlbWVudF0iCitQQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0
cDovL3d3dy5leGFtcGxlLmNvbSIpLnRvU3RyaW5nKCkgaXMgIltvYmplY3QgRWxlbWVudF0iCitQ
QVNTIGNyZWF0ZUVsZW1lbnROUyh1bmRlZmluZWQsIHVuZGVmaW5lZCkKK1BBU1MgY3JlYXRlRWxl
bWVudE5TKG51bGwsIHVuZGVmaW5lZCkKK1BBU1MgY3JlYXRlRWxlbWVudE5TKHVuZGVmaW5lZCwg
bnVsbCk7IHRocmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgorUEFTUyBjcmVhdGVFbGVtZW50TlMo
bnVsbCwgbnVsbCk7IHRocmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgorUEFTUyBjcmVhdGVFbGVt
ZW50TlMobnVsbCwgIiIpOyB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRl
RWxlbWVudE5TKCIiLCBudWxsKTsgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNy
ZWF0ZUVsZW1lbnROUygiIiwgIiIpOyB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1Mg
Y3JlYXRlRWxlbWVudE5TKG51bGwsICI8ZGl2PiIpOyB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9F
UlIKK1BBU1MgY3JlYXRlRWxlbWVudE5TKG51bGwsICIwZGl2Iik7IHRocmV3IElOVkFMSURfQ0hB
UkFDVEVSX0VSUgorUEFTUyBjcmVhdGVFbGVtZW50TlMobnVsbCwgImRpIHYiKTsgdGhyZXcgSU5W
QUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUVsZW1lbnROUyhudWxsLCAiZGk8diIpOyB0
aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlRWxlbWVudE5TKG51bGwsICIt
ZGl2Iik7IHRocmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgorUEFTUyBjcmVhdGVFbGVtZW50TlMo
bnVsbCwgIi5kaXYiKTsgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL2V4YW1wbGUuY29tLyIsICI8ZGl2PiIpOyB0aHJldyBJTlZBTElEX0NI
QVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vZXhhbXBsZS5jb20vIiwg
IjBkaXYiKTsgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL2V4YW1wbGUuY29tLyIsICJkaTx2Iik7IHRocmV3IElOVkFMSURfQ0hBUkFDVEVS
X0VSUgorUEFTUyBjcmVhdGVFbGVtZW50TlMoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiLWRpdiIp
OyB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vZXhhbXBsZS5jb20vIiwgIi5kaXYiKTsgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitQ
QVNTIGNyZWF0ZUVsZW1lbnROUyhudWxsLCAiOmRpdiIpOyB0aHJldyBOQU1FU1BBQ0VfRVJSCitQ
QVNTIGNyZWF0ZUVsZW1lbnROUyhudWxsLCAiZGl2OiIpOyB0aHJldyBOQU1FU1BBQ0VfRVJSCitQ
QVNTIGNyZWF0ZUVsZW1lbnROUygiaHR0cDovL2V4YW1wbGUuY29tLyIsICI6ZGl2Iik7IHRocmV3
IE5BTUVTUEFDRV9FUlIKK1BBU1MgY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vZXhhbXBsZS5jb20v
IiwgImRpdjoiKTsgdGhyZXcgTkFNRVNQQUNFX0VSUgorUEFTUyBjcmVhdGVFbGVtZW50TlMobnVs
bCwgImQ6aXYiKTsgdGhyZXcgTkFNRVNQQUNFX0VSUgorRkFJTCBjcmVhdGVFbGVtZW50TlMobnVs
bCwgImE6YjpjIik7IHZhbGlkIFhNTCBuYW1lLCBpbnZhbGlkIFFOYW1lOyBleHBlY3RlZCBOQU1F
U1BBQ0VfRVJSLCB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK0ZBSUwgY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vZXhhbXBsZS5jb20vIiwgImE6YjpjIik7IHZhbGlkIFhNTCBuYW1lLCBpbnZh
bGlkIFFOYW1lOyBleHBlY3RlZCBOQU1FU1BBQ0VfRVJSLCB0aHJldyBJTlZBTElEX0NIQVJBQ1RF
Ul9FUlIKK0ZBSUwgY3JlYXRlRWxlbWVudE5TKG51bGwsICJhOjpjIik7IHZhbGlkIFhNTCBuYW1l
LCBpbnZhbGlkIFFOYW1lOyBleHBlY3RlZCBOQU1FU1BBQ0VfRVJSLCB0aHJldyBJTlZBTElEX0NI
QVJBQ1RFUl9FUlIKK0ZBSUwgY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vZXhhbXBsZS5jb20vIiwg
ImE6OmMiKTsgdmFsaWQgWE1MIG5hbWUsIGludmFsaWQgUU5hbWU7IGV4cGVjdGVkIE5BTUVTUEFD
RV9FUlIsIHRocmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgorUEFTUyBjcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiYTowIik7IHZhbGlkIFhNTCBuYW1lLCBub3QgYSB2YWxp
ZCBRTmFtZTsgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL2V4YW1wbGUuY29tLyIsICIwOmEiKTsgMCBhdCBzdGFydCBtYWtlcyBpdCBub3Qg
YSB2YWxpZCBYTUwgbmFtZTsgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL2V4YW1wbGUuY29tLyIsICJhOl8iKQorRkFJTCBjcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiYTrgr4YiKTsgbm9uLUFTQ0lJIGNoYXJhY3Rl
ciBhZnRlciBjb2xvbiBpcyBDb21iaW5pbmdDaGFyLCB3aGljaCBpcyBOQ05hbWVDaGFyIGJ1dCBu
b3QgKExldHRlciB8ICJfIikgc28gaW52YWxpZCBhdCBzdGFydCBvZiBOQ05hbWUgKGJ1dCBzdGls
bCBhIHZhbGlkIFhNTCBuYW1lLCBoZW5jZSBub3QgSU5WQUxJRF9DSEFSQUNURVJfRVJSKTsgZXhw
ZWN0ZWQgTkFNRVNQQUNFX0VSUiwgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL2V4YW1wbGUuY29tLyIsICLgr4Y6YSIpOyBub24tQVNDSUkg
Y2hhcmFjdGVyIGFmdGVyIGNvbG9uIGlzIENvbWJpbmluZ0NoYXIsIHdoaWNoIGlzIE5DTmFtZUNo
YXIgYnV0IG5vdCAoTGV0dGVyIHwgIl8iKSBzbyBpbnZhbGlkIGF0IHN0YXJ0IG9mIE5DTmFtZSAo
R2Vja28gY2hvb3NlcyB0byB0aHJvdyBOQU1FU1BBQ0VfRVJSIGhlcmUsIGJ1dCBlaXRoZXIgaXMg
dmFsaWQgYXMgdGhpcyBpcyBib3RoIGFuIGludmFsaWQgWE1MIG5hbWUgYW5kIGFuIGludmFsaWQg
UU5hbWUpOyB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vZXhhbXBsZS5jb20vIiwgImE6YeCvhiIpCitQQVNTIGNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL2V4YW1wbGUuY29tLyIsICJh4K+GOmEiKQorUEFTUyBjcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly9leGFtcGxlLmNvbS8iLCAieG1sOnRlc3QiKTsgYmluZGluZyB4bWwgcHJlZml4IHdyb25n
OyB0aHJldyBOQU1FU1BBQ0VfRVJSCitQQVNTIGNyZWF0ZUVsZW1lbnROUygiaHR0cDovL2V4YW1w
bGUuY29tLyIsICJ4bWxuczp0ZXN0Iik7IGJpbmRpbmcgeG1sbnMgcHJlZml4IHdyb25nOyB0aHJl
dyBOQU1FU1BBQ0VfRVJSCitQQVNTIGNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC94bWxucy8iLCAieDp0ZXN0Iik7IGJpbmRpbmcgbmFtZXNwYWNlIG5hbWVzcGFjZSB0byB3
cm9uZyBwcmVmaXg7IHRocmV3IE5BTUVTUEFDRV9FUlIKK1BBU1MgY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyIsICJ4bWxuczp0ZXN0IikKK1BBU1MgY3JlYXRl
RWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiLCAieG1sOnRl
c3QiKQorUEFTUyBjcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25h
bWVzcGFjZSIsICJ4OnRlc3QiKQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50
L2NyZWF0ZUVsZW1lbnROUy1uYW1lc3BhY2UtZXJyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9Eb2N1bWVudC9jcmVhdGVFbGVtZW50TlMtbmFtZXNwYWNlLWVyci5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzZTk0NGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9jcmVhdGVFbGVtZW50TlMtbmFtZXNwYWNlLWVyci5o
dG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFRE
IEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvY3JlYXRlRWxlbWVudE5TLW5hbWVzcGFjZS1lcnIuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9kb20vRG9jdW1lbnQvcmVzb3VyY2VzL1RFTVBMQVRFLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9Eb2N1bWVudC9yZXNvdXJjZXMvVEVNUExBVEUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4xOTUxYzQzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vRG9jdW1lbnQvcmVzb3VyY2VzL1RFTVBMQVRFLmh0bWwKQEAgLTAsMCArMSwxMyBA
QAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+
Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRp
b24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9IllPVVJfSlNf
RklMRV9IRVJFIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L3Jlc291cmNlcy9jcmVhdGVBdHRyaWJ1dGVOUy1u
YW1lc3BhY2UtZXJyLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvcmVzb3VyY2Vz
L2NyZWF0ZUF0dHJpYnV0ZU5TLW5hbWVzcGFjZS1lcnIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uZjZlY2EyNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL0RvY3VtZW50L3Jlc291cmNlcy9jcmVhdGVBdHRyaWJ1dGVOUy1uYW1lc3BhY2UtZXJy
LmpzCkBAIC0wLDAgKzEsMTM1IEBACitkZXNjcmlwdGlvbigiY3JlYXRlQXR0aXJidXRlTlMgdGVz
dHMgYWRhcHRlZCBmcm9tIGNyZWF0ZUVsZW1lbnROUyB0ZXN0cyBhdHRhY2hlZCB0byB3ZWJraXQg
YnVnIDE2ODMzIik7CisKK2Z1bmN0aW9uIGFzc2VydChjLCBtKQoreworICAgIGlmICghYykKKyAg
ICAgICAgdGVzdEZhaWxlZChtKTsKKyAgICBlbHNlCisgICAgICAgIHRlc3RQYXNzZWQobSk7Cit9
CisKK2Z1bmN0aW9uIHN0cmluZ0ZvckV4Y2VwdGlvbkNvZGUoYykKK3sKKyAgICB2YXIgZXhjZXB0
aW9uTmFtZTsKKyAgICBzd2l0Y2goYykgeworICAgICAgICBjYXNlIERPTUV4Y2VwdGlvbi5JTlZB
TElEX0NIQVJBQ1RFUl9FUlI6CisgICAgICAgICAgICBleGNlcHRpb25OYW1lID0gIklOVkFMSURf
Q0hBUkFDVEVSX0VSUiI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBET01FeGNl
cHRpb24uTkFNRVNQQUNFX0VSUjoKKyAgICAgICAgICAgIGV4Y2VwdGlvbk5hbWUgPSAiTkFNRVNQ
QUNFX0VSUiI7CisgICAgfQorICAgIGlmIChleGNlcHRpb25OYW1lKQorICAgICAgICByZXR1cm4g
ZXhjZXB0aW9uTmFtZTsgLy8gKyAiKCIgKyBjICsgIikiOworICAgIHJldHVybiBjOworfQorCitm
dW5jdGlvbiBhc3NlcnRFcXVhbHMoYWN0dWFsLCBleHBlY3QsIG0pCit7CisgICAgaWYgKGFjdHVh
bCAhPT0gZXhwZWN0KSB7CisgICAgICAgIG0gKz0gIjsgZXhwZWN0ZWQgIiArIHN0cmluZ0ZvckV4
Y2VwdGlvbkNvZGUoZXhwZWN0KSArICIsIHRocmV3ICIgKyBzdHJpbmdGb3JFeGNlcHRpb25Db2Rl
KGFjdHVhbCk7CisgICAgICAgIHRlc3RGYWlsZWQobSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
bSArPSAiOyB0aHJldyAiICsgc3RyaW5nRm9yRXhjZXB0aW9uQ29kZShhY3R1YWwpOzsKKyAgICAg
ICAgdGVzdFBhc3NlZChtKTsKKyAgICB9Cit9CisKK3ZhciBhbGxOU1Rlc3RzID0gWworICAgeyBh
cmdzOiBbdW5kZWZpbmVkLCB1bmRlZmluZWRdIH0sCisgICB7IGFyZ3M6IFtudWxsLCB1bmRlZmlu
ZWRdIH0sCisgICB7IGFyZ3M6IFt1bmRlZmluZWQsIG51bGxdLCBjb2RlOiA1IH0sCisgICB7IGFy
Z3M6IFtudWxsLCBudWxsXSwgY29kZTogNSB9LAorICAgeyBhcmdzOiBbbnVsbCwgIiJdLCBjb2Rl
OiA1IH0sCisgICB7IGFyZ3M6IFsiIiwgbnVsbF0sIGNvZGU6IDUgfSwKKyAgIHsgYXJnczogWyIi
LCAiIl0sIGNvZGU6IDUgfSwKKyAgIHsgYXJnczogW251bGwsICI8ZGl2PiJdLCBjb2RlOiA1IH0s
CisgICB7IGFyZ3M6IFtudWxsLCAiMGRpdiJdLCBjb2RlOiA1IH0sCisgICB7IGFyZ3M6IFtudWxs
LCAiZGkgdiJdLCBjb2RlOiA1IH0sCisgICB7IGFyZ3M6IFtudWxsLCAiZGk8diJdLCBjb2RlOiA1
IH0sCisgICB7IGFyZ3M6IFtudWxsLCAiLWRpdiJdLCBjb2RlOiA1IH0sCisgICB7IGFyZ3M6IFtu
dWxsLCAiLmRpdiJdLCBjb2RlOiA1IH0sCisgICB7IGFyZ3M6IFsiaHR0cDovL2V4YW1wbGUuY29t
LyIsICI8ZGl2PiJdLCBjb2RlOiA1IH0sCisgICB7IGFyZ3M6IFsiaHR0cDovL2V4YW1wbGUuY29t
LyIsICIwZGl2Il0sIGNvZGU6IDUgfSwKKyAgIHsgYXJnczogWyJodHRwOi8vZXhhbXBsZS5jb20v
IiwgImRpPHYiXSwgY29kZTogNSB9LAorICAgeyBhcmdzOiBbImh0dHA6Ly9leGFtcGxlLmNvbS8i
LCAiLWRpdiJdLCBjb2RlOiA1IH0sCisgICB7IGFyZ3M6IFsiaHR0cDovL2V4YW1wbGUuY29tLyIs
ICIuZGl2Il0sIGNvZGU6IDUgfSwKKyAgIHsgYXJnczogW251bGwsICI6ZGl2Il0sIGNvZGU6IDE0
IH0sCisgICB7IGFyZ3M6IFtudWxsLCAiZGl2OiJdLCBjb2RlOiAxNCB9LAorICAgeyBhcmdzOiBb
Imh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiOmRpdiJdLCBjb2RlOiAxNCB9LAorICAgeyBhcmdzOiBb
Imh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiZGl2OiJdLCBjb2RlOiAxNCB9LAorICAgeyBhcmdzOiBb
bnVsbCwgImQ6aXYiXSwgY29kZTogMTQgfSwKKyAgIHsgYXJnczogW251bGwsICJhOmI6YyJdLCBj
b2RlOiAxNCwgbWVzc2FnZTogInZhbGlkIFhNTCBuYW1lLCBpbnZhbGlkIFFOYW1lIiB9LAorICAg
eyBhcmdzOiBbImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiYTpiOmMiXSwgY29kZTogMTQsIG1lc3Nh
Z2U6ICJ2YWxpZCBYTUwgbmFtZSwgaW52YWxpZCBRTmFtZSIgfSwKKyAgIHsgYXJnczogW251bGws
ICJhOjpjIl0sIGNvZGU6IDE0LCBtZXNzYWdlOiAidmFsaWQgWE1MIG5hbWUsIGludmFsaWQgUU5h
bWUiIH0sCisgICB7IGFyZ3M6IFsiaHR0cDovL2V4YW1wbGUuY29tLyIsICJhOjpjIl0sIGNvZGU6
IDE0LCBtZXNzYWdlOiAidmFsaWQgWE1MIG5hbWUsIGludmFsaWQgUU5hbWUiIH0sCisgICB7IGFy
Z3M6IFsiaHR0cDovL2V4YW1wbGUuY29tLyIsICJhOjAiXSwgY29kZTogNSwgbWVzc2FnZTogInZh
bGlkIFhNTCBuYW1lLCBub3QgYSB2YWxpZCBRTmFtZSIgfSwKKyAgIHsgYXJnczogWyJodHRwOi8v
ZXhhbXBsZS5jb20vIiwgIjA6YSJdLCBjb2RlOiA1LCBtZXNzYWdlOiAiMCBhdCBzdGFydCBtYWtl
cyBpdCBub3QgYSB2YWxpZCBYTUwgbmFtZSIgfSwKKyAgIHsgYXJnczogWyJodHRwOi8vZXhhbXBs
ZS5jb20vIiwgImE6XyJdIH0sCisgICB7IGFyZ3M6IFsiaHR0cDovL2V4YW1wbGUuY29tLyIsICJh
Olx1MEJDNiJdLCBjb2RlOiAxNCwKKyAgICAgbWVzc2FnZTogIm5vbi1BU0NJSSBjaGFyYWN0ZXIg
YWZ0ZXIgY29sb24gaXMgQ29tYmluaW5nQ2hhciwgd2hpY2ggaXMgIiArCisgICAgICAgICAgICAg
ICJOQ05hbWVDaGFyIGJ1dCBub3QgKExldHRlciB8IFwiX1wiKSBzbyBpbnZhbGlkIGF0IHN0YXJ0
IG9mICIgKworICAgICAgICAgICAgICAiTkNOYW1lIChidXQgc3RpbGwgYSB2YWxpZCBYTUwgbmFt
ZSwgaGVuY2Ugbm90IElOVkFMSURfQ0hBUkFDVEVSX0VSUikiIH0sCisgICB7IGFyZ3M6IFsiaHR0
cDovL2V4YW1wbGUuY29tLyIsICJcdTBCQzY6YSJdLCBjb2RlOiA1LAorICAgICBtZXNzYWdlOiAi
bm9uLUFTQ0lJIGNoYXJhY3RlciBhZnRlciBjb2xvbiBpcyBDb21iaW5pbmdDaGFyLCB3aGljaCBp
cyAiICsKKyAgICAgICAgICAgICAgIk5DTmFtZUNoYXIgYnV0IG5vdCAoTGV0dGVyIHwgXCJfXCIp
IHNvIGludmFsaWQgYXQgc3RhcnQgb2YgIiArCisgICAgICAgICAgICAgICJOQ05hbWUgKEdlY2tv
IGNob29zZXMgdG8gdGhyb3cgTkFNRVNQQUNFX0VSUiBoZXJlLCBidXQgZWl0aGVyIGlzIHZhbGlk
ICIgKworICAgICAgICAgICAgICAiYXMgdGhpcyBpcyBib3RoIGFuIGludmFsaWQgWE1MIG5hbWUg
YW5kIGFuIGludmFsaWQgUU5hbWUpIiB9LAorICAgeyBhcmdzOiBbImh0dHA6Ly9leGFtcGxlLmNv
bS8iLCAiYTphXHUwQkM2Il0gfSwKKyAgIHsgYXJnczogWyJodHRwOi8vZXhhbXBsZS5jb20vIiwg
ImFcdTBCQzY6YSJdIH0sCisgICB7IGFyZ3M6IFsiaHR0cDovL2V4YW1wbGUuY29tLyIsICJ4bWw6
dGVzdCJdLCBjb2RlOiAxNCwgbWVzc2FnZTogImJpbmRpbmcgeG1sIHByZWZpeCB3cm9uZyIgfSwK
KyAgIHsgYXJnczogWyJodHRwOi8vZXhhbXBsZS5jb20vIiwgInhtbG5zOnRlc3QiXSwgY29kZTog
MTQsIG1lc3NhZ2U6ICJiaW5kaW5nIHhtbG5zIHByZWZpeCB3cm9uZyIgfSwKKyAgIHsgYXJnczog
WyJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyIsICJ4OnRlc3QiXSwgY29kZTogMTQsIG1l
c3NhZ2U6ICJiaW5kaW5nIG5hbWVzcGFjZSBuYW1lc3BhY2UgdG8gd3JvbmcgcHJlZml4IiB9LAor
ICAgeyBhcmdzOiBbImh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIiwgInhtbG5zOnRlc3Qi
XSB9LAorICAgeyBhcmdzOiBbImh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIs
ICJ4bWw6dGVzdCJdIH0sCisgICB7IGFyZ3M6IFsiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgv
bmFtZXNwYWNlIiwgIng6dGVzdCJdIH0sCisgICB7IGFyZ3M6IFsiaHR0cDovL2V4YW1wbGUuY29t
LyIsICJ4bWxucyJdLCBjb2RlOiAxNCB9LCAvLyBmcm9tIHRoZSBjcmVhdGVBdHRyaWJ1dGVOUyBz
ZWN0aW9uCitdOworCitmdW5jdGlvbiBzb3VyY2VpZnkodikKK3sKKyAgICBzd2l0Y2ggKHR5cGVv
ZiB2KSB7CisgICAgY2FzZSAidW5kZWZpbmVkIjoKKyAgICAgICAgcmV0dXJuIHY7CisKKyAgICBj
YXNlICJzdHJpbmciOgorICAgICAgICByZXR1cm4gJyInICsgdi5yZXBsYWNlKCciJywgJ1xcIicp
ICsgJyInOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIFN0cmluZyh2KTsKKyAgICB9
Cit9CisKK2Z1bmN0aW9uIHJ1bk5TVGVzdHMoKQoreworICAgIHZhciBjcmVhdGVGdW5jdGlvbiA9
IGRvY3VtZW50LmNyZWF0ZUF0dHJpYnV0ZU5TOworICAgIHZhciBjcmVhdGVGdW5jdGlvbk5hbWUg
PSAiY3JlYXRlQXR0cmlidXRlTlMiOworICAgIHZhciBkb2MgPSBkb2N1bWVudDsKKworICAgIGZv
ciAodmFyIGkgPSAwLCBzeiA9IGFsbE5TVGVzdHMubGVuZ3RoOyBpIDwgc3o7IGkrKykgeworICAg
ICAgICB2YXIgdGVzdCA9IGFsbE5TVGVzdHNbaV07CisKKyAgICAgICAgdmFyIGNvZGUgPSAtMTsK
KyAgICAgICAgdmFyIGFyZ1N0ciA9IHNvdXJjZWlmeSh0ZXN0LmFyZ3NbMF0pICsgIiwgIiArIHNv
dXJjZWlmeSh0ZXN0LmFyZ3NbMV0pOworICAgICAgICB0cnkgeworICAgICAgICAgICAgY3JlYXRl
RnVuY3Rpb24uYXBwbHkoZG9jLCB0ZXN0LmFyZ3MpOworICAgICAgICAgICAgdmFyIG1zZyA9IGNy
ZWF0ZUZ1bmN0aW9uTmFtZSArICIoIiArIGFyZ1N0ciArICIpIjsKKyAgICAgICAgICAgIGlmICgi
bWVzc2FnZSIgaW4gdGVzdCkKKyAgICAgICAgICAgICAgICBtc2cgKz0gIjsgIiArIHRlc3QubWVz
c2FnZTsKKyAgICAgICAgICAgIGFzc2VydCghKGNvZGUgaW4gdGVzdCksIG1zZyk7CisgICAgICAg
IH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIHZhciBhcmdTdHIgPSBzb3VyY2VpZnkodGVzdC5h
cmdzWzBdKSArICIsICIgKyBzb3VyY2VpZnkodGVzdC5hcmdzWzFdKTsKKyAgICAgICAgICAgIG1z
ZyA9IGNyZWF0ZUZ1bmN0aW9uTmFtZSArICIoIiArIGFyZ1N0ciArICIpIjsKKyAgICAgICAgICAg
IGlmICgibWVzc2FnZSIgaW4gdGVzdCkKKyAgICAgICAgICAgICAgICBtc2cgKz0gIjsgIiArIHRl
c3QubWVzc2FnZTsKKyAgICAgICAgICAgIGFzc2VydEVxdWFscyhlLmNvZGUsIHRlc3QuY29kZSB8
fCAiZXhwZWN0ZWQgbm8gZXhjZXB0aW9uIiwgbXNnKTsKKyAgICAgICAgfQorICAgIH0KK30KKwor
Ly8gTW96IHRocm93cyBhICJOb3QgZW5vdWdoIGFyZ3VtZW50cyIgZXhjZXB0aW9uIGluIHRoZXNl
LCB3ZSBkb24ndDoKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZG9jdW1lbnQuY3JlYXRlQXR0cmli
dXRlTlMoKS50b1N0cmluZygpIiwgIltvYmplY3QgQXR0cl0iKTsKK3Nob3VsZEJlRXF1YWxUb1N0
cmluZygiZG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlTlMoXCJodHRwOi8vd3d3LmV4YW1wbGUuY29t
XCIpLnRvU3RyaW5nKCkiLCAiW29iamVjdCBBdHRyXSIpOworCitydW5OU1Rlc3RzKCk7CisKK3Zh
ciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9kb20vRG9jdW1lbnQvcmVzb3VyY2VzL2NyZWF0ZUVsZW1lbnROUy1uYW1lc3BhY2UtZXJyLmpz
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvcmVzb3VyY2VzL2NyZWF0ZUVsZW1lbnRO
Uy1uYW1lc3BhY2UtZXJyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNl
OTk5OWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9y
ZXNvdXJjZXMvY3JlYXRlRWxlbWVudE5TLW5hbWVzcGFjZS1lcnIuanMKQEAgLTAsMCArMSwxMzQg
QEAKK2Rlc2NyaXB0aW9uKCJjcmVhdGVFbGVtZW50TlMgdGVzdHMgZnJvbSBtb3ppbGxhLCBhdHRh
Y2hlZCB0byB3ZWJraXQgYnVnIDE2ODMzIik7CisKK2Z1bmN0aW9uIGFzc2VydChjLCBtKQorewor
ICAgIGlmICghYykKKyAgICAgICAgdGVzdEZhaWxlZChtKTsKKyAgICBlbHNlCisgICAgICAgIHRl
c3RQYXNzZWQobSk7Cit9CisKK2Z1bmN0aW9uIHN0cmluZ0ZvckV4Y2VwdGlvbkNvZGUoYykKK3sK
KyAgICB2YXIgZXhjZXB0aW9uTmFtZTsKKyAgICBzd2l0Y2goYykgeworICAgICAgICBjYXNlIERP
TUV4Y2VwdGlvbi5JTlZBTElEX0NIQVJBQ1RFUl9FUlI6CisgICAgICAgICAgICBleGNlcHRpb25O
YW1lID0gIklOVkFMSURfQ0hBUkFDVEVSX0VSUiI7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBET01FeGNlcHRpb24uTkFNRVNQQUNFX0VSUjoKKyAgICAgICAgICAgIGV4Y2VwdGlv
bk5hbWUgPSAiTkFNRVNQQUNFX0VSUiI7CisgICAgfQorICAgIGlmIChleGNlcHRpb25OYW1lKQor
ICAgICAgICByZXR1cm4gZXhjZXB0aW9uTmFtZTsgLy8gKyAiKCIgKyBjICsgIikiOworICAgIHJl
dHVybiBjOworfQorCitmdW5jdGlvbiBhc3NlcnRFcXVhbHMoYWN0dWFsLCBleHBlY3QsIG0pCit7
CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0KSB7CisgICAgICAgIG0gKz0gIjsgZXhwZWN0ZWQg
IiArIHN0cmluZ0ZvckV4Y2VwdGlvbkNvZGUoZXhwZWN0KSArICIsIHRocmV3ICIgKyBzdHJpbmdG
b3JFeGNlcHRpb25Db2RlKGFjdHVhbCk7CisgICAgICAgIHRlc3RGYWlsZWQobSk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgbSArPSAiOyB0aHJldyAiICsgc3RyaW5nRm9yRXhjZXB0aW9uQ29kZShh
Y3R1YWwpOzsKKyAgICAgICAgdGVzdFBhc3NlZChtKTsKKyAgICB9Cit9CisKK3ZhciBhbGxOU1Rl
c3RzID0gWworICAgeyBhcmdzOiBbdW5kZWZpbmVkLCB1bmRlZmluZWRdIH0sCisgICB7IGFyZ3M6
IFtudWxsLCB1bmRlZmluZWRdIH0sCisgICB7IGFyZ3M6IFt1bmRlZmluZWQsIG51bGxdLCBjb2Rl
OiA1IH0sCisgICB7IGFyZ3M6IFtudWxsLCBudWxsXSwgY29kZTogNSB9LAorICAgeyBhcmdzOiBb
bnVsbCwgIiJdLCBjb2RlOiA1IH0sCisgICB7IGFyZ3M6IFsiIiwgbnVsbF0sIGNvZGU6IDUgfSwK
KyAgIHsgYXJnczogWyIiLCAiIl0sIGNvZGU6IDUgfSwKKyAgIHsgYXJnczogW251bGwsICI8ZGl2
PiJdLCBjb2RlOiA1IH0sCisgICB7IGFyZ3M6IFtudWxsLCAiMGRpdiJdLCBjb2RlOiA1IH0sCisg
ICB7IGFyZ3M6IFtudWxsLCAiZGkgdiJdLCBjb2RlOiA1IH0sCisgICB7IGFyZ3M6IFtudWxsLCAi
ZGk8diJdLCBjb2RlOiA1IH0sCisgICB7IGFyZ3M6IFtudWxsLCAiLWRpdiJdLCBjb2RlOiA1IH0s
CisgICB7IGFyZ3M6IFtudWxsLCAiLmRpdiJdLCBjb2RlOiA1IH0sCisgICB7IGFyZ3M6IFsiaHR0
cDovL2V4YW1wbGUuY29tLyIsICI8ZGl2PiJdLCBjb2RlOiA1IH0sCisgICB7IGFyZ3M6IFsiaHR0
cDovL2V4YW1wbGUuY29tLyIsICIwZGl2Il0sIGNvZGU6IDUgfSwKKyAgIHsgYXJnczogWyJodHRw
Oi8vZXhhbXBsZS5jb20vIiwgImRpPHYiXSwgY29kZTogNSB9LAorICAgeyBhcmdzOiBbImh0dHA6
Ly9leGFtcGxlLmNvbS8iLCAiLWRpdiJdLCBjb2RlOiA1IH0sCisgICB7IGFyZ3M6IFsiaHR0cDov
L2V4YW1wbGUuY29tLyIsICIuZGl2Il0sIGNvZGU6IDUgfSwKKyAgIHsgYXJnczogW251bGwsICI6
ZGl2Il0sIGNvZGU6IDE0IH0sCisgICB7IGFyZ3M6IFtudWxsLCAiZGl2OiJdLCBjb2RlOiAxNCB9
LAorICAgeyBhcmdzOiBbImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiOmRpdiJdLCBjb2RlOiAxNCB9
LAorICAgeyBhcmdzOiBbImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiZGl2OiJdLCBjb2RlOiAxNCB9
LAorICAgeyBhcmdzOiBbbnVsbCwgImQ6aXYiXSwgY29kZTogMTQgfSwKKyAgIHsgYXJnczogW251
bGwsICJhOmI6YyJdLCBjb2RlOiAxNCwgbWVzc2FnZTogInZhbGlkIFhNTCBuYW1lLCBpbnZhbGlk
IFFOYW1lIiB9LAorICAgeyBhcmdzOiBbImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiYTpiOmMiXSwg
Y29kZTogMTQsIG1lc3NhZ2U6ICJ2YWxpZCBYTUwgbmFtZSwgaW52YWxpZCBRTmFtZSIgfSwKKyAg
IHsgYXJnczogW251bGwsICJhOjpjIl0sIGNvZGU6IDE0LCBtZXNzYWdlOiAidmFsaWQgWE1MIG5h
bWUsIGludmFsaWQgUU5hbWUiIH0sCisgICB7IGFyZ3M6IFsiaHR0cDovL2V4YW1wbGUuY29tLyIs
ICJhOjpjIl0sIGNvZGU6IDE0LCBtZXNzYWdlOiAidmFsaWQgWE1MIG5hbWUsIGludmFsaWQgUU5h
bWUiIH0sCisgICB7IGFyZ3M6IFsiaHR0cDovL2V4YW1wbGUuY29tLyIsICJhOjAiXSwgY29kZTog
NSwgbWVzc2FnZTogInZhbGlkIFhNTCBuYW1lLCBub3QgYSB2YWxpZCBRTmFtZSIgfSwKKyAgIHsg
YXJnczogWyJodHRwOi8vZXhhbXBsZS5jb20vIiwgIjA6YSJdLCBjb2RlOiA1LCBtZXNzYWdlOiAi
MCBhdCBzdGFydCBtYWtlcyBpdCBub3QgYSB2YWxpZCBYTUwgbmFtZSIgfSwKKyAgIHsgYXJnczog
WyJodHRwOi8vZXhhbXBsZS5jb20vIiwgImE6XyJdIH0sCisgICB7IGFyZ3M6IFsiaHR0cDovL2V4
YW1wbGUuY29tLyIsICJhOlx1MEJDNiJdLCBjb2RlOiAxNCwKKyAgICAgbWVzc2FnZTogIm5vbi1B
U0NJSSBjaGFyYWN0ZXIgYWZ0ZXIgY29sb24gaXMgQ29tYmluaW5nQ2hhciwgd2hpY2ggaXMgIiAr
CisgICAgICAgICAgICAgICJOQ05hbWVDaGFyIGJ1dCBub3QgKExldHRlciB8IFwiX1wiKSBzbyBp
bnZhbGlkIGF0IHN0YXJ0IG9mICIgKworICAgICAgICAgICAgICAiTkNOYW1lIChidXQgc3RpbGwg
YSB2YWxpZCBYTUwgbmFtZSwgaGVuY2Ugbm90IElOVkFMSURfQ0hBUkFDVEVSX0VSUikiIH0sCisg
ICB7IGFyZ3M6IFsiaHR0cDovL2V4YW1wbGUuY29tLyIsICJcdTBCQzY6YSJdLCBjb2RlOiA1LAor
ICAgICBtZXNzYWdlOiAibm9uLUFTQ0lJIGNoYXJhY3RlciBhZnRlciBjb2xvbiBpcyBDb21iaW5p
bmdDaGFyLCB3aGljaCBpcyAiICsKKyAgICAgICAgICAgICAgIk5DTmFtZUNoYXIgYnV0IG5vdCAo
TGV0dGVyIHwgXCJfXCIpIHNvIGludmFsaWQgYXQgc3RhcnQgb2YgIiArCisgICAgICAgICAgICAg
ICJOQ05hbWUgKEdlY2tvIGNob29zZXMgdG8gdGhyb3cgTkFNRVNQQUNFX0VSUiBoZXJlLCBidXQg
ZWl0aGVyIGlzIHZhbGlkICIgKworICAgICAgICAgICAgICAiYXMgdGhpcyBpcyBib3RoIGFuIGlu
dmFsaWQgWE1MIG5hbWUgYW5kIGFuIGludmFsaWQgUU5hbWUpIiB9LAorICAgeyBhcmdzOiBbImh0
dHA6Ly9leGFtcGxlLmNvbS8iLCAiYTphXHUwQkM2Il0gfSwKKyAgIHsgYXJnczogWyJodHRwOi8v
ZXhhbXBsZS5jb20vIiwgImFcdTBCQzY6YSJdIH0sCisgICB7IGFyZ3M6IFsiaHR0cDovL2V4YW1w
bGUuY29tLyIsICJ4bWw6dGVzdCJdLCBjb2RlOiAxNCwgbWVzc2FnZTogImJpbmRpbmcgeG1sIHBy
ZWZpeCB3cm9uZyIgfSwKKyAgIHsgYXJnczogWyJodHRwOi8vZXhhbXBsZS5jb20vIiwgInhtbG5z
OnRlc3QiXSwgY29kZTogMTQsIG1lc3NhZ2U6ICJiaW5kaW5nIHhtbG5zIHByZWZpeCB3cm9uZyIg
fSwKKyAgIHsgYXJnczogWyJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyIsICJ4OnRlc3Qi
XSwgY29kZTogMTQsIG1lc3NhZ2U6ICJiaW5kaW5nIG5hbWVzcGFjZSBuYW1lc3BhY2UgdG8gd3Jv
bmcgcHJlZml4IiB9LAorICAgeyBhcmdzOiBbImh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMv
IiwgInhtbG5zOnRlc3QiXSB9LAorICAgeyBhcmdzOiBbImh0dHA6Ly93d3cudzMub3JnL1hNTC8x
OTk4L25hbWVzcGFjZSIsICJ4bWw6dGVzdCJdIH0sCisgICB7IGFyZ3M6IFsiaHR0cDovL3d3dy53
My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIiwgIng6dGVzdCJdIH0sCitdOworCitmdW5jdGlvbiBz
b3VyY2VpZnkodikKK3sKKyAgICBzd2l0Y2ggKHR5cGVvZiB2KSB7CisgICAgY2FzZSAidW5kZWZp
bmVkIjoKKyAgICAgICAgcmV0dXJuIHY7CisKKyAgICBjYXNlICJzdHJpbmciOgorICAgICAgICBy
ZXR1cm4gJyInICsgdi5yZXBsYWNlKCciJywgJ1xcIicpICsgJyInOworCisgICAgZGVmYXVsdDoK
KyAgICAgICAgcmV0dXJuIFN0cmluZyh2KTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHJ1bk5TVGVz
dHMoKQoreworICAgIHZhciBjcmVhdGVGdW5jdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UzsKKyAgICB2YXIgY3JlYXRlRnVuY3Rpb25OYW1lID0gImNyZWF0ZUVsZW1lbnROUyI7CisgICAg
dmFyIGRvYyA9IGRvY3VtZW50OworCisgICAgZm9yICh2YXIgaSA9IDAsIHN6ID0gYWxsTlNUZXN0
cy5sZW5ndGg7IGkgPCBzejsgaSsrKSB7CisgICAgICAgIHZhciB0ZXN0ID0gYWxsTlNUZXN0c1tp
XTsKKworICAgICAgICB2YXIgY29kZSA9IC0xOworICAgICAgICB2YXIgYXJnU3RyID0gc291cmNl
aWZ5KHRlc3QuYXJnc1swXSkgKyAiLCAiICsgc291cmNlaWZ5KHRlc3QuYXJnc1sxXSk7CisgICAg
ICAgIHRyeSB7CisgICAgICAgICAgICBjcmVhdGVGdW5jdGlvbi5hcHBseShkb2MsIHRlc3QuYXJn
cyk7CisgICAgICAgICAgICB2YXIgbXNnID0gY3JlYXRlRnVuY3Rpb25OYW1lICsgIigiICsgYXJn
U3RyICsgIikiOworICAgICAgICAgICAgaWYgKCJtZXNzYWdlIiBpbiB0ZXN0KQorICAgICAgICAg
ICAgICAgIG1zZyArPSAiOyAiICsgdGVzdC5tZXNzYWdlOworICAgICAgICAgICAgYXNzZXJ0KCEo
Y29kZSBpbiB0ZXN0KSwgbXNnKTsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAg
dmFyIGFyZ1N0ciA9IHNvdXJjZWlmeSh0ZXN0LmFyZ3NbMF0pICsgIiwgIiArIHNvdXJjZWlmeSh0
ZXN0LmFyZ3NbMV0pOworICAgICAgICAgICAgbXNnID0gY3JlYXRlRnVuY3Rpb25OYW1lICsgIigi
ICsgYXJnU3RyICsgIikiOworICAgICAgICAgICAgaWYgKCJtZXNzYWdlIiBpbiB0ZXN0KQorICAg
ICAgICAgICAgICAgIG1zZyArPSAiOyAiICsgdGVzdC5tZXNzYWdlOworICAgICAgICAgICAgYXNz
ZXJ0RXF1YWxzKGUuY29kZSwgdGVzdC5jb2RlIHx8ICJleHBlY3RlZCBubyBleGNlcHRpb24iLCBt
c2cpOworICAgICAgICB9CisgICAgfQorfQorCisvLyBNb3ogdGhyb3dzIGEgIk5vdCBlbm91Z2gg
YXJndW1lbnRzIiBleGNlcHRpb24gaW4gdGhlc2UsIHdlIGRvbid0Ogorc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoKS50b1N0cmluZygpIiwgIltvYmplY3Qg
RWxlbWVudF0iKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKFwiaHR0cDovL3d3dy5leGFtcGxlLmNvbVwiKS50b1N0cmluZygpIiwgIltvYmplY3QgRWxl
bWVudF0iKTsKKworcnVuTlNUZXN0cygpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAppbmRleCBhMmUyNDVmLi41NzUxMDBlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKKysrIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0xMDIsNiAr
MTAyLDcgQEAKICNpbmNsdWRlICJVSUV2ZW50LmgiCiAjaW5jbHVkZSAiV2hlZWxFdmVudC5oIgog
I2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0LmgiCisjaW5jbHVkZSAiWE1MTmFtZXMuaCIKICNpbmNs
dWRlICJYTUxUb2tlbml6ZXIuaCIKICNpbmNsdWRlICJranNfYmluZGluZy5oIgogI2luY2x1ZGUg
Imtqc19wcm94eS5oIgpAQCAtNTA4LDcgKzUwOSw3IEBAIFBhc3NSZWZQdHI8RWxlbWVudD4gRG9j
dW1lbnQ6OmNyZWF0ZUVsZW1lbnQoY29uc3QgU3RyaW5nICZuYW1lLCBFeGNlcHRpb25Db2RlJiBl
CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiBIVE1M
RWxlbWVudEZhY3Rvcnk6OmNyZWF0ZUhUTUxFbGVtZW50KEF0b21pY1N0cmluZyhuYW1lKSwgdGhp
cywgMCwgZmFsc2UpOworICAgICAgICByZXR1cm4gSFRNTEVsZW1lbnRGYWN0b3J5OjpjcmVhdGVI
VE1MRWxlbWVudChuYW1lLCB0aGlzLCAwLCBmYWxzZSk7CiAgICAgfSBlbHNlCiAgICAgICAgIHJl
dHVybiBjcmVhdGVFbGVtZW50TlMobnVsbEF0b20sIG5hbWUsIGVjKTsKIH0KQEAgLTY5OSw2ICs3
MDAsMzIgQEAgUGFzc1JlZlB0cjxOb2RlPiBEb2N1bWVudDo6YWRvcHROb2RlKFBhc3NSZWZQdHI8
Tm9kZT4gc291cmNlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICByZXR1cm4gc291cmNlOwogfQog
CitzdGF0aWMgYm9vbCBoYXNOYW1lc3BhY2VFcnJvcihjb25zdCBRdWFsaWZpZWROYW1lJiBxTmFt
ZSkKK3sKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIHhtbG5zTmFtZXNwYWNlVVJJID0g
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIjsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWlj
U3RyaW5nIHhtbG5zID0gInhtbG5zIjsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIHht
bCA9ICJ4bWwiOworCisgICAgLy8gVGhlc2UgY2hlY2tzIGFyZSBmcm9tIERPTSBDb3JlIExldmVs
IDIsIGNyZWF0ZUVsZW1lbnROUworICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZl
bC0yLUNvcmUvY29yZS5odG1sI0lELURvY0NyRWxOUworICAgIGlmIChxTmFtZS5wcmVmaXgoKSA9
PSBlbXB0eUF0b20pIC8vIGNyZWF0ZUVsZW1lbnROUyhudWxsLCAiOmRpdiIpCisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIGlmIChxTmFtZS5sb2NhbE5hbWUoKS5pc0VtcHR5KCkpIC8vIGNyZWF0
ZUVsZW1lbnROUyhudWxsLCAiIiksIGNyZWF0ZUVsZW1lbnROUyhudWxsLCBudWxsKSwgY3JlYXRl
RWxlbWVudE5TKCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKCFxTmFtZS5wcmVmaXgo
KS5pc0VtcHR5KCkgJiYgcU5hbWUubmFtZXNwYWNlVVJJKCkuaXNOdWxsKCkpIC8vIGNyZWF0ZUVs
ZW1lbnROUyhudWxsLCAiaHRtbDpkaXYiKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAo
cU5hbWUucHJlZml4KCkgPT0geG1sICYmIHFOYW1lLm5hbWVzcGFjZVVSSSgpICE9IFhNTE5hbWVz
Ojp4bWxOYW1lc3BhY2VVUkkpIC8vIGNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy5leGFtcGxl
LmNvbSIsICJ4bWw6bGFuZyIpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gUmVxdWly
ZWQgYnkgRE9NIExldmVsIDMgQ29yZSBhbmQgdW5zcGVjaWZpZWQgYnkgRE9NIExldmVsIDIgQ29y
ZToKKyAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDA0L1JFQy1ET00tTGV2ZWwtMy1Db3Jl
LTIwMDQwNDA3L2NvcmUuaHRtbCNJRC1Eb2NDckVsTlMKKyAgICAvLyBjcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIiwgImZvbzpiYXIiKSwgY3JlYXRlRWxlbWVu
dE5TKG51bGwsICJ4bWxuczpiYXIiKQorICAgIGlmICgocU5hbWUucHJlZml4KCkgPT0geG1sbnMg
JiYgcU5hbWUubmFtZXNwYWNlVVJJKCkgIT0geG1sbnNOYW1lc3BhY2VVUkkpIHx8IChxTmFtZS5w
cmVmaXgoKSAhPSB4bWxucyAmJiBxTmFtZS5uYW1lc3BhY2VVUkkoKSA9PSB4bWxuc05hbWVzcGFj
ZVVSSSkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCiAv
LyBGSVhNRTogVGhpcyBzaG91bGQgcmVhbGx5IGJlIGluIGEgcG9zc2libGUgRWxlbWVudEZhY3Rv
cnkgY2xhc3MKIFBhc3NSZWZQdHI8RWxlbWVudD4gRG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgcU5hbWUsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyLCBFeGNlcHRpb25D
b2RlJiBlYykKIHsKQEAgLTcxNSwxNyArNzQyLDIyIEBAIFBhc3NSZWZQdHI8RWxlbWVudD4gRG9j
dW1lbnQ6OmNyZWF0ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgcU5hbWUsIGJvb2wgY3Jl
CiAgICAgaWYgKCFlKQogICAgICAgICBlID0gbmV3IEVsZW1lbnQocU5hbWUsIGRvY3VtZW50KCkp
OwogICAgIAorICAgIC8vIEZJWE1FOiBUaGUgZWxlbWVudCBmYWN0b3JpZXMgc2hvdWxkIGJlIGZp
eGVkIHRvIG5vdCBpZ25vcmUgcU5hbWUucHJlZml4KCkKKyAgICAvLyBJbnN0ZWFkIHRoZXkgc2hv
dWxkIHBhc3MgdGhlIGVudGlyZSBxTmFtZSBpbnRvIGVsZW1lbnQgY3JlYXRpb24gc28gd2UgZG9u
J3QKKyAgICAvLyBuZWVkIHRvIG1hbnVhbGx5IHNldCB0aGUgcHJlZml4IGFmdGVyIGNyZWF0aW9u
LgorICAgIC8vIFRoZW4gdGhpcyBjb2RlIGNhbiBiZWNvbWUgQVNTRVJUKHFOYW1lID09IGUucW5h
bWUoKSk7CisgICAgLy8gYW5kIERvY3VtZW50OjpjcmVhdGVFbGVtZW50IGNhbiBzdG9wIHRha2lu
ZyBFeGNlcHRpb25Db2RlJiBhcyB3ZWxsLgogICAgIGlmIChlICYmICFxTmFtZS5wcmVmaXgoKS5p
c051bGwoKSkgewogICAgICAgICBlYyA9IDA7CiAgICAgICAgIGUtPnNldFByZWZpeChxTmFtZS5w
cmVmaXgoKSwgZWMpOwogICAgICAgICBpZiAoZWMpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAg
ICB9ICAgIAorICAgIH0KICAgICAKICAgICByZXR1cm4gZS5yZWxlYXNlKCk7CiB9CiAKLVBhc3NS
ZWZQdHI8RWxlbWVudD4gRG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnROUyhjb25zdCBTdHJpbmcgJl9u
YW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyAmcXVhbGlmaWVkTmFtZSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCitQYXNzUmVmUHRyPEVsZW1lbnQ+IERvY3VtZW50OjpjcmVhdGVFbGVtZW50TlMoY29uc3Qg
U3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyYgcXVhbGlmaWVkTmFtZSwgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7CiAgICAgU3RyaW5nIHByZWZpeCwgbG9jYWxOYW1lOwogICAgIGlmICgh
cGFyc2VRdWFsaWZpZWROYW1lKHF1YWxpZmllZE5hbWUsIHByZWZpeCwgbG9jYWxOYW1lKSkgewpA
QCAtNzMzLDEzICs3NjUsMTYgQEAgUGFzc1JlZlB0cjxFbGVtZW50PiBEb2N1bWVudDo6Y3JlYXRl
RWxlbWVudE5TKGNvbnN0IFN0cmluZyAmX25hbWVzcGFjZVVSSSwgY29uc3QKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgfQogCi0gICAgUmVmUHRyPEVsZW1lbnQ+IGU7Ci0gICAgUXVhbGlmaWVkTmFt
ZSBxTmFtZSA9IFF1YWxpZmllZE5hbWUoQXRvbWljU3RyaW5nKHByZWZpeCksIEF0b21pY1N0cmlu
Zyhsb2NhbE5hbWUpLCBBdG9taWNTdHJpbmcoX25hbWVzcGFjZVVSSSkpOwotICAgIAorICAgIFF1
YWxpZmllZE5hbWUgcU5hbWUocHJlZml4LCBsb2NhbE5hbWUsIG5hbWVzcGFjZVVSSSk7CisgICAg
aWYgKGhhc05hbWVzcGFjZUVycm9yKHFOYW1lKSkgeworICAgICAgICBlYyA9IE5BTUVTUEFDRV9F
UlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKwogICAgIHJldHVybiBjcmVhdGVFbGVtZW50
KHFOYW1lLCBmYWxzZSwgZWMpOwogfQogCi1FbGVtZW50ICpEb2N1bWVudDo6Z2V0RWxlbWVudEJ5
SWQoY29uc3QgQXRvbWljU3RyaW5nJiBlbGVtZW50SWQpIGNvbnN0CitFbGVtZW50KiBEb2N1bWVu
dDo6Z2V0RWxlbWVudEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBlbGVtZW50SWQpIGNvbnN0CiB7
CiAgICAgaWYgKGVsZW1lbnRJZC5sZW5ndGgoKSA9PSAwKQogICAgICAgICByZXR1cm4gMDsKQEAg
LTI2NzcsNyArMjcxMiw3IEBAIGJvb2wgRG9jdW1lbnQ6OmlzVmFsaWROYW1lKGNvbnN0IFN0cmlu
ZyAmbmFtZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBEb2N1bWVudDo6cGFyc2VRdWFs
aWZpZWROYW1lKGNvbnN0IFN0cmluZyAmcXVhbGlmaWVkTmFtZSwgU3RyaW5nICZwcmVmaXgsIFN0
cmluZyAmbG9jYWxOYW1lKQorYm9vbCBEb2N1bWVudDo6cGFyc2VRdWFsaWZpZWROYW1lKGNvbnN0
IFN0cmluZyYgcXVhbGlmaWVkTmFtZSwgU3RyaW5nJiBwcmVmaXgsIFN0cmluZyYgbG9jYWxOYW1l
KQogewogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHF1YWxpZmllZE5hbWUubGVuZ3RoKCk7CiAKQEAg
LTMzOTAsMjkgKzM0MjUsMjkgQEAgRG9jdW1lbnQgKkRvY3VtZW50Ojp0b3BEb2N1bWVudCgpIGNv
bnN0CiAgICAgcmV0dXJuIGRvYzsKIH0KIAotUGFzc1JlZlB0cjxBdHRyPiBEb2N1bWVudDo6Y3Jl
YXRlQXR0cmlidXRlTlMoY29uc3QgU3RyaW5nICZuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyAm
cXVhbGlmaWVkTmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPEF0dHI+IERvY3Vt
ZW50OjpjcmVhdGVBdHRyaWJ1dGVOUyhjb25zdCBTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3Qg
U3RyaW5nJiBxdWFsaWZpZWROYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBpZiAocXVh
bGlmaWVkTmFtZS5pc051bGwoKSkgewotICAgICAgICBlYyA9IE5BTUVTUEFDRV9FUlI7CisgICAg
U3RyaW5nIHByZWZpeCwgbG9jYWxOYW1lOworICAgIGlmICghcGFyc2VRdWFsaWZpZWROYW1lKHF1
YWxpZmllZE5hbWUsIHByZWZpeCwgbG9jYWxOYW1lKSkgeworICAgICAgICBlYyA9IElOVkFMSURf
Q0hBUkFDVEVSX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgU3RyaW5nIGxv
Y2FsTmFtZSA9IHF1YWxpZmllZE5hbWU7Ci0gICAgU3RyaW5nIHByZWZpeDsKLSAgICBpbnQgY29s
b25wb3M7Ci0gICAgaWYgKChjb2xvbnBvcyA9IHF1YWxpZmllZE5hbWUuZmluZCgnOicpKSA+PSAw
KSB7Ci0gICAgICAgIHByZWZpeCA9IHF1YWxpZmllZE5hbWUuc3Vic3RyaW5nKDAsIGNvbG9ucG9z
KTsKLSAgICAgICAgbG9jYWxOYW1lID0gcXVhbGlmaWVkTmFtZS5zdWJzdHJpbmcoY29sb25wb3Mg
KyAxKTsKKyAgICBRdWFsaWZpZWROYW1lIHFOYW1lKHByZWZpeCwgbG9jYWxOYW1lLCBuYW1lc3Bh
Y2VVUkkpOworICAgIGlmIChoYXNOYW1lc3BhY2VFcnJvcihxTmFtZSkpIHsKKyAgICAgICAgZWMg
PSBOQU1FU1BBQ0VfRVJSOworICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBpZiAoIWlz
VmFsaWROYW1lKGxvY2FsTmFtZSkpIHsKLSAgICAgICAgZWMgPSBJTlZBTElEX0NIQVJBQ1RFUl9F
UlI7CisgICAgLy8gU3BlYzogRE9NIExldmVsIDIgQ29yZTogaHR0cDovL3d3dy53My5vcmcvVFIv
RE9NLUxldmVsLTItQ29yZS9jb3JlLmh0bWwjSUQtRG9jQ3JBdHRyTlMKKyAgICBpZiAocU5hbWUu
bG9jYWxOYW1lKCkgPT0gInhtbG5zIiAmJiBxTmFtZS5uYW1lc3BhY2VVUkkoKSAhPSAiaHR0cDov
L3d3dy53My5vcmcvMjAwMC94bWxucy8iKSB7CisgICAgICAgIGVjID0gTkFNRVNQQUNFX0VSUjsK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIAorCiAgICAgLy8gRklYTUU6IEFzc3VtZSB0
aGlzIGlzIGEgbWFwcGVkIGF0dHJpYnV0ZSwgc2luY2UgY3JlYXRlQXR0cmlidXRlIGlzbid0IG5h
bWVzcGFjZS1hd2FyZS4gIFRoZXJlJ3Mgbm8gaGFybSB0byBYTUwKICAgICAvLyBkb2N1bWVudHMg
aWYgd2UncmUgd3JvbmcuCi0gICAgcmV0dXJuIG5ldyBBdHRyKDAsIHRoaXMsIG5ldyBNYXBwZWRB
dHRyaWJ1dGUoUXVhbGlmaWVkTmFtZShwcmVmaXgsIGxvY2FsTmFtZSwgbmFtZXNwYWNlVVJJKSwg
U3RyaW5nSW1wbDo6ZW1wdHkoKSkpOworICAgIHJldHVybiBuZXcgQXR0cigwLCB0aGlzLCBuZXcg
TWFwcGVkQXR0cmlidXRlKHFOYW1lLCBTdHJpbmdJbXBsOjplbXB0eSgpKSk7CiB9CiAKICNpZiBF
TkFCTEUoU1ZHKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsIGIvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaWRsCmluZGV4IDZkZTUxZDcuLjkzOWYzMDQgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmlkbAorKysgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKQEAg
LTU1LDEwICs1NSwxMCBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbiBib29sZWFuIGRlZXApCiAgICAgICAgICAgICByYWlzZXMgKERPTUV4
Y2VwdGlvbik7CiAgICAgICAgIFtPbGRTdHlsZU9iakNdIEVsZW1lbnQgY3JlYXRlRWxlbWVudE5T
KGluIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIG5hbWVzcGFjZVVSSSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRE9NU3RyaW5n
IHF1YWxpZmllZE5hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIHF1YWxpZmllZE5h
bWUpCiAgICAgICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIFtPbGRTdHls
ZU9iakNdIEF0dHIgY3JlYXRlQXR0cmlidXRlTlMoaW4gW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5n
XSBET01TdHJpbmcgbmFtZXNwYWNlVVJJLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluIERPTVN0cmluZyBxdWFsaWZpZWROYW1lKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtDb252ZXJ0TnVsbFRvTnVsbFN0
cmluZ10gRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUpCiAgICAgICAgICAgICByYWlzZXMgKERPTUV4
Y2VwdGlvbik7CiAgICAgICAgIFtPbGRTdHlsZU9iakNdIE5vZGVMaXN0IGdldEVsZW1lbnRzQnlU
YWdOYW1lTlMoaW4gW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgbmFtZXNwYWNl
VVJJLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluIERPTVN0cmluZyBsb2NhbE5hbWUpOwo=
</data>
<flag name="review"
          id="8324"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19785</attachid>
            <date>2008-03-15 18:28:02 -0700</date>
            <delta_ts>2008-03-21 14:45:54 -0700</delta_ts>
            <desc>patch rebased with addition of more tests from Gecko tree</desc>
            <filename>QualifiedNamePatch.txt</filename>
            <type>text/plain</type>
            <size>34238</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDMxMDc4KQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsNiArMTA3LDcgQEAKICNpbmNsdWRlICJVSUV2ZW50
LmgiCiAjaW5jbHVkZSAiV2hlZWxFdmVudC5oIgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0Lmgi
CisjaW5jbHVkZSAiWE1MTmFtZXMuaCIKICNpbmNsdWRlICJYTUxUb2tlbml6ZXIuaCIKICNpbmNs
dWRlICJranNfYmluZGluZy5oIgogI2luY2x1ZGUgImtqc19wcm94eS5oIgpAQCAtNTE4LDcgKzUx
OSw3IEBAIFBhc3NSZWZQdHI8RWxlbWVudD4gRG9jdW1lbnQ6OmNyZWF0ZUVsZW0KICAgICAgICAg
ICAgIHJldHVybiAwOwogICAgICAgICB9CiAKLSAgICAgICAgcmV0dXJuIEhUTUxFbGVtZW50RmFj
dG9yeTo6Y3JlYXRlSFRNTEVsZW1lbnQoQXRvbWljU3RyaW5nKG5hbWUpLCB0aGlzLCAwLCBmYWxz
ZSk7CisgICAgICAgIHJldHVybiBIVE1MRWxlbWVudEZhY3Rvcnk6OmNyZWF0ZUhUTUxFbGVtZW50
KG5hbWUsIHRoaXMsIDAsIGZhbHNlKTsKICAgICB9IGVsc2UKICAgICAgICAgcmV0dXJuIGNyZWF0
ZUVsZW1lbnROUyhudWxsQXRvbSwgbmFtZSwgZWMpOwogfQpAQCAtNzE0LDYgKzcxNSwzMiBAQCBQ
YXNzUmVmUHRyPE5vZGU+IERvY3VtZW50OjphZG9wdE5vZGUoUGFzCiAgICAgcmV0dXJuIHNvdXJj
ZTsKIH0KIAorc3RhdGljIGJvb2wgaGFzTmFtZXNwYWNlRXJyb3IoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgcU5hbWUpCit7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyB4bWxuc05hbWVzcGFj
ZVVSSSA9ICJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyI7CisgICAgc3RhdGljIGNvbnN0
IEF0b21pY1N0cmluZyB4bWxucyA9ICJ4bWxucyI7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0
cmluZyB4bWwgPSAieG1sIjsKKworICAgIC8vIFRoZXNlIGNoZWNrcyBhcmUgZnJvbSBET00gQ29y
ZSBMZXZlbCAyLCBjcmVhdGVFbGVtZW50TlMKKyAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9E
T00tTGV2ZWwtMi1Db3JlL2NvcmUuaHRtbCNJRC1Eb2NDckVsTlMKKyAgICBpZiAocU5hbWUucHJl
Zml4KCkgPT0gZW1wdHlBdG9tKSAvLyBjcmVhdGVFbGVtZW50TlMobnVsbCwgIjpkaXYiKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAocU5hbWUubG9jYWxOYW1lKCkuaXNFbXB0eSgpKSAv
LyBjcmVhdGVFbGVtZW50TlMobnVsbCwgIiIpLCBjcmVhdGVFbGVtZW50TlMobnVsbCwgbnVsbCks
IGNyZWF0ZUVsZW1lbnROUygpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICghcU5hbWUu
cHJlZml4KCkuaXNFbXB0eSgpICYmIHFOYW1lLm5hbWVzcGFjZVVSSSgpLmlzTnVsbCgpKSAvLyBj
cmVhdGVFbGVtZW50TlMobnVsbCwgImh0bWw6ZGl2IikKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgaWYgKHFOYW1lLnByZWZpeCgpID09IHhtbCAmJiBxTmFtZS5uYW1lc3BhY2VVUkkoKSAhPSBY
TUxOYW1lczo6eG1sTmFtZXNwYWNlVVJJKSAvLyBjcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
ZXhhbXBsZS5jb20iLCAieG1sOmxhbmciKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8v
IFJlcXVpcmVkIGJ5IERPTSBMZXZlbCAzIENvcmUgYW5kIHVuc3BlY2lmaWVkIGJ5IERPTSBMZXZl
bCAyIENvcmU6CisgICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIvMjAwNC9SRUMtRE9NLUxldmVs
LTMtQ29yZS0yMDA0MDQwNy9jb3JlLmh0bWwjSUQtRG9jQ3JFbE5TCisgICAgLy8gY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyIsICJmb286YmFyIiksIGNyZWF0
ZUVsZW1lbnROUyhudWxsLCAieG1sbnM6YmFyIikKKyAgICBpZiAoKHFOYW1lLnByZWZpeCgpID09
IHhtbG5zICYmIHFOYW1lLm5hbWVzcGFjZVVSSSgpICE9IHhtbG5zTmFtZXNwYWNlVVJJKSB8fCAo
cU5hbWUucHJlZml4KCkgIT0geG1sbnMgJiYgcU5hbWUubmFtZXNwYWNlVVJJKCkgPT0geG1sbnNO
YW1lc3BhY2VVUkkpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsK
K30KKwogLy8gRklYTUU6IFRoaXMgc2hvdWxkIHJlYWxseSBiZSBpbiBhIHBvc3NpYmxlIEVsZW1l
bnRGYWN0b3J5IGNsYXNzCiBQYXNzUmVmUHRyPEVsZW1lbnQ+IERvY3VtZW50OjpjcmVhdGVFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHFOYW1lLCBib29sIGNyZWF0ZWRCeVBhcnNlciwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7CkBAIC03MzAsMTcgKzc1NywyMiBAQCBQYXNzUmVmUHRyPEVsZW1l
bnQ+IERvY3VtZW50OjpjcmVhdGVFbGVtCiAgICAgaWYgKCFlKQogICAgICAgICBlID0gbmV3IEVs
ZW1lbnQocU5hbWUsIGRvY3VtZW50KCkpOwogICAgIAorICAgIC8vIEZJWE1FOiBUaGUgZWxlbWVu
dCBmYWN0b3JpZXMgc2hvdWxkIGJlIGZpeGVkIHRvIG5vdCBpZ25vcmUgcU5hbWUucHJlZml4KCkK
KyAgICAvLyBJbnN0ZWFkIHRoZXkgc2hvdWxkIHBhc3MgdGhlIGVudGlyZSBxTmFtZSBpbnRvIGVs
ZW1lbnQgY3JlYXRpb24gc28gd2UgZG9uJ3QKKyAgICAvLyBuZWVkIHRvIG1hbnVhbGx5IHNldCB0
aGUgcHJlZml4IGFmdGVyIGNyZWF0aW9uLgorICAgIC8vIFRoZW4gdGhpcyBjb2RlIGNhbiBiZWNv
bWUgQVNTRVJUKHFOYW1lID09IGUucW5hbWUoKSk7CisgICAgLy8gYW5kIERvY3VtZW50OjpjcmVh
dGVFbGVtZW50IGNhbiBzdG9wIHRha2luZyBFeGNlcHRpb25Db2RlJiBhcyB3ZWxsLgogICAgIGlm
IChlICYmICFxTmFtZS5wcmVmaXgoKS5pc051bGwoKSkgewogICAgICAgICBlYyA9IDA7CiAgICAg
ICAgIGUtPnNldFByZWZpeChxTmFtZS5wcmVmaXgoKSwgZWMpOwogICAgICAgICBpZiAoZWMpCiAg
ICAgICAgICAgICByZXR1cm4gMDsKLSAgICB9ICAgIAorICAgIH0KICAgICAKICAgICByZXR1cm4g
ZS5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8RWxlbWVudD4gRG9jdW1lbnQ6OmNyZWF0ZUVs
ZW1lbnROUyhjb25zdCBTdHJpbmcgJl9uYW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyAmcXVhbGlm
aWVkTmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPEVsZW1lbnQ+IERvY3VtZW50
OjpjcmVhdGVFbGVtZW50TlMoY29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmlu
ZyYgcXVhbGlmaWVkTmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgU3RyaW5nIHByZWZp
eCwgbG9jYWxOYW1lOwogICAgIGlmICghcGFyc2VRdWFsaWZpZWROYW1lKHF1YWxpZmllZE5hbWUs
IHByZWZpeCwgbG9jYWxOYW1lKSkgewpAQCAtNzQ4LDEzICs3ODAsMTYgQEAgUGFzc1JlZlB0cjxF
bGVtZW50PiBEb2N1bWVudDo6Y3JlYXRlRWxlbQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAK
LSAgICBSZWZQdHI8RWxlbWVudD4gZTsKLSAgICBRdWFsaWZpZWROYW1lIHFOYW1lID0gUXVhbGlm
aWVkTmFtZShBdG9taWNTdHJpbmcocHJlZml4KSwgQXRvbWljU3RyaW5nKGxvY2FsTmFtZSksIEF0
b21pY1N0cmluZyhfbmFtZXNwYWNlVVJJKSk7Ci0gICAgCisgICAgUXVhbGlmaWVkTmFtZSBxTmFt
ZShwcmVmaXgsIGxvY2FsTmFtZSwgbmFtZXNwYWNlVVJJKTsKKyAgICBpZiAoaGFzTmFtZXNwYWNl
RXJyb3IocU5hbWUpKSB7CisgICAgICAgIGVjID0gTkFNRVNQQUNFX0VSUjsKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgfQorCiAgICAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQocU5hbWUsIGZhbHNlLCBl
Yyk7CiB9CiAKLUVsZW1lbnQgKkRvY3VtZW50OjpnZXRFbGVtZW50QnlJZChjb25zdCBBdG9taWNT
dHJpbmcmIGVsZW1lbnRJZCkgY29uc3QKK0VsZW1lbnQqIERvY3VtZW50OjpnZXRFbGVtZW50QnlJ
ZChjb25zdCBBdG9taWNTdHJpbmcmIGVsZW1lbnRJZCkgY29uc3QKIHsKICAgICBpZiAoZWxlbWVu
dElkLmxlbmd0aCgpID09IDApCiAgICAgICAgIHJldHVybiAwOwpAQCAtMjc5Niw3ICsyODMxLDcg
QEAgYm9vbCBEb2N1bWVudDo6aXNWYWxpZE5hbWUoY29uc3QgU3RyaW5nIAogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIERvY3VtZW50OjpwYXJzZVF1YWxpZmllZE5hbWUoY29uc3QgU3RyaW5n
ICZxdWFsaWZpZWROYW1lLCBTdHJpbmcgJnByZWZpeCwgU3RyaW5nICZsb2NhbE5hbWUpCitib29s
IERvY3VtZW50OjpwYXJzZVF1YWxpZmllZE5hbWUoY29uc3QgU3RyaW5nJiBxdWFsaWZpZWROYW1l
LCBTdHJpbmcmIHByZWZpeCwgU3RyaW5nJiBsb2NhbE5hbWUpCiB7CiAgICAgdW5zaWduZWQgbGVu
Z3RoID0gcXVhbGlmaWVkTmFtZS5sZW5ndGgoKTsKIApAQCAtMzUwMSwyOSArMzUzNiwyOSBAQCBE
b2N1bWVudCAqRG9jdW1lbnQ6OnRvcERvY3VtZW50KCkgY29uc3QKICAgICByZXR1cm4gZG9jOwog
fQogCi1QYXNzUmVmUHRyPEF0dHI+IERvY3VtZW50OjpjcmVhdGVBdHRyaWJ1dGVOUyhjb25zdCBT
dHJpbmcgJm5hbWVzcGFjZVVSSSwgY29uc3QgU3RyaW5nICZxdWFsaWZpZWROYW1lLCBFeGNlcHRp
b25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8QXR0cj4gRG9jdW1lbnQ6OmNyZWF0ZUF0dHJpYnV0ZU5T
KGNvbnN0IFN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcmIHF1YWxpZmllZE5hbWUs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIGlmIChxdWFsaWZpZWROYW1lLmlzTnVsbCgpKSB7
Ci0gICAgICAgIGVjID0gTkFNRVNQQUNFX0VSUjsKKyAgICBTdHJpbmcgcHJlZml4LCBsb2NhbE5h
bWU7CisgICAgaWYgKCFwYXJzZVF1YWxpZmllZE5hbWUocXVhbGlmaWVkTmFtZSwgcHJlZml4LCBs
b2NhbE5hbWUpKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9DSEFSQUNURVJfRVJSOwogICAgICAg
ICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBTdHJpbmcgbG9jYWxOYW1lID0gcXVhbGlmaWVkTmFt
ZTsKLSAgICBTdHJpbmcgcHJlZml4OwotICAgIGludCBjb2xvbnBvczsKLSAgICBpZiAoKGNvbG9u
cG9zID0gcXVhbGlmaWVkTmFtZS5maW5kKCc6JykpID49IDApIHsKLSAgICAgICAgcHJlZml4ID0g
cXVhbGlmaWVkTmFtZS5zdWJzdHJpbmcoMCwgY29sb25wb3MpOwotICAgICAgICBsb2NhbE5hbWUg
PSBxdWFsaWZpZWROYW1lLnN1YnN0cmluZyhjb2xvbnBvcyArIDEpOworICAgIFF1YWxpZmllZE5h
bWUgcU5hbWUocHJlZml4LCBsb2NhbE5hbWUsIG5hbWVzcGFjZVVSSSk7CisgICAgaWYgKGhhc05h
bWVzcGFjZUVycm9yKHFOYW1lKSkgeworICAgICAgICBlYyA9IE5BTUVTUEFDRV9FUlI7CisgICAg
ICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGlmICghaXNWYWxpZE5hbWUobG9jYWxOYW1lKSkg
ewotICAgICAgICBlYyA9IElOVkFMSURfQ0hBUkFDVEVSX0VSUjsKKyAgICAvLyBTcGVjOiBET00g
TGV2ZWwgMiBDb3JlOiBodHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwtMi1Db3JlL2NvcmUu
aHRtbCNJRC1Eb2NDckF0dHJOUworICAgIGlmIChxTmFtZS5sb2NhbE5hbWUoKSA9PSAieG1sbnMi
ICYmIHFOYW1lLm5hbWVzcGFjZVVSSSgpICE9ICJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5z
LyIpIHsKKyAgICAgICAgZWMgPSBOQU1FU1BBQ0VfRVJSOwogICAgICAgICByZXR1cm4gMDsKICAg
ICB9Ci0gICAgCisKICAgICAvLyBGSVhNRTogQXNzdW1lIHRoaXMgaXMgYSBtYXBwZWQgYXR0cmli
dXRlLCBzaW5jZSBjcmVhdGVBdHRyaWJ1dGUgaXNuJ3QgbmFtZXNwYWNlLWF3YXJlLiAgVGhlcmUn
cyBubyBoYXJtIHRvIFhNTAogICAgIC8vIGRvY3VtZW50cyBpZiB3ZSdyZSB3cm9uZy4KLSAgICBy
ZXR1cm4gbmV3IEF0dHIoMCwgdGhpcywgbmV3IE1hcHBlZEF0dHJpYnV0ZShRdWFsaWZpZWROYW1l
KHByZWZpeCwgbG9jYWxOYW1lLCBuYW1lc3BhY2VVUkkpLCBTdHJpbmdJbXBsOjplbXB0eSgpKSk7
CisgICAgcmV0dXJuIG5ldyBBdHRyKDAsIHRoaXMsIG5ldyBNYXBwZWRBdHRyaWJ1dGUocU5hbWUs
IFN0cmluZ0ltcGw6OmVtcHR5KCkpKTsKIH0KIAogI2lmIEVOQUJMRShTVkcpCkluZGV4OiBXZWJD
b3JlL2RvbS9Eb2N1bWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQu
aWRsCShyZXZpc2lvbiAzMTA3OCkKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtNTUsMTAgKzU1LDEwIEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGluIGJvb2xlYW4gZGVlcCkKICAgICAgICAgICAgIHJh
aXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgW09sZFN0eWxlT2JqQ10gRWxlbWVudCBjcmVh
dGVFbGVtZW50TlMoaW4gW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgbmFtZXNw
YWNlVVJJLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
biBET01TdHJpbmcgcXVhbGlmaWVkTmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW4gW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcg
cXVhbGlmaWVkTmFtZSkKICAgICAgICAgICAgIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICAg
ICAgW09sZFN0eWxlT2JqQ10gQXR0ciBjcmVhdGVBdHRyaWJ1dGVOUyhpbiBbQ29udmVydE51bGxU
b051bGxTdHJpbmddIERPTVN0cmluZyBuYW1lc3BhY2VVUkksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW0NvbnZlcnRO
dWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgcXVhbGlmaWVkTmFtZSkKICAgICAgICAgICAgIHJh
aXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgW09sZFN0eWxlT2JqQ10gTm9kZUxpc3QgZ2V0
RWxlbWVudHNCeVRhZ05hbWVOUyhpbiBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmlu
ZyBuYW1lc3BhY2VVUkksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW4gRE9NU3RyaW5nIGxvY2FsTmFtZSk7CkluZGV4OiBMYXlvdXRUZXN0
cy9kb20veGh0bWwvbGV2ZWwzL2NvcmUvZG9jdW1lbnRzZXRzdHJpY3RlcnJvcmNoZWNraW5nMDIt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDMv
Y29yZS9kb2N1bWVudHNldHN0cmljdGVycm9yY2hlY2tpbmcwMi1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDMxMDc4KQorKysgTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMy9jb3JlL2RvY3VtZW50
c2V0c3RyaWN0ZXJyb3JjaGVja2luZzAyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDIgQEAKIFRlc3QJaHR0cDovL3d3dy53My5vcmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9s
ZXZlbDMvY29yZS9kb2N1bWVudHNldHN0cmljdGVycm9yY2hlY2tpbmcwMgotU3RhdHVzCWZhaWx1
cmUKLU1lc3NhZ2UJTkFNRVNQQUNFX0VSUl9kb2N1bWVudHNldHN0cmljdGVycm9yY2hlY2tpbmcw
MjogYXNzZXJ0VHJ1ZSBmYWlsZWQKK1N0YXR1cwlTdWNjZXNzCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9Eb2N1bWVudC9jcmVhdGVBdHRyaWJ1dGVOUy1uYW1lc3BhY2UtZXJyLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9jcmVhdGVB
dHRyaWJ1dGVOUy1uYW1lc3BhY2UtZXJyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L2NyZWF0ZUF0dHJpYnV0ZU5TLW5hbWVzcGFjZS1l
cnItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUyIEBACitjcmVhdGVBdHRp
cmJ1dGVOUyB0ZXN0cyBhZGFwdGVkIGZyb20gY3JlYXRlRWxlbWVudE5TIHRlc3RzIGF0dGFjaGVk
IHRvIHdlYmtpdCBidWcgMTY4MzMKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BB
U1MgZG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlTlMoKS50b1N0cmluZygpIGlzICJbb2JqZWN0IEF0
dHJdIgorUEFTUyBkb2N1bWVudC5jcmVhdGVBdHRyaWJ1dGVOUygiaHR0cDovL3d3dy5leGFtcGxl
LmNvbSIpLnRvU3RyaW5nKCkgaXMgIltvYmplY3QgQXR0cl0iCitQQVNTIGNyZWF0ZUF0dHJpYnV0
ZU5TKHVuZGVmaW5lZCwgdW5kZWZpbmVkKQorUEFTUyBjcmVhdGVBdHRyaWJ1dGVOUyhudWxsLCB1
bmRlZmluZWQpCitQQVNTIGNyZWF0ZUF0dHJpYnV0ZU5TKHVuZGVmaW5lZCwgbnVsbCk7IHRocmV3
IElOVkFMSURfQ0hBUkFDVEVSX0VSUgorUEFTUyBjcmVhdGVBdHRyaWJ1dGVOUyhudWxsLCBudWxs
KTsgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUF0dHJpYnV0ZU5TKG51
bGwsICIiKTsgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUF0dHJpYnV0
ZU5TKCIiLCBudWxsKTsgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUF0
dHJpYnV0ZU5TKCIiLCAiIik7IHRocmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgorUEFTUyBjcmVh
dGVBdHRyaWJ1dGVOUyhudWxsLCAiPGRpdj4iKTsgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJS
CitQQVNTIGNyZWF0ZUF0dHJpYnV0ZU5TKG51bGwsICIwZGl2Iik7IHRocmV3IElOVkFMSURfQ0hB
UkFDVEVSX0VSUgorUEFTUyBjcmVhdGVBdHRyaWJ1dGVOUyhudWxsLCAiZGkgdiIpOyB0aHJldyBJ
TlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlQXR0cmlidXRlTlMobnVsbCwgImRpPHYi
KTsgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUF0dHJpYnV0ZU5TKG51
bGwsICItZGl2Iik7IHRocmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgorUEFTUyBjcmVhdGVBdHRy
aWJ1dGVOUyhudWxsLCAiLmRpdiIpOyB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1Mg
Y3JlYXRlQXR0cmlidXRlTlMoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiPGRpdj4iKTsgdGhyZXcg
SU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUF0dHJpYnV0ZU5TKCJodHRwOi8vZXhh
bXBsZS5jb20vIiwgIjBkaXYiKTsgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNy
ZWF0ZUF0dHJpYnV0ZU5TKCJodHRwOi8vZXhhbXBsZS5jb20vIiwgImRpPHYiKTsgdGhyZXcgSU5W
QUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUF0dHJpYnV0ZU5TKCJodHRwOi8vZXhhbXBs
ZS5jb20vIiwgIi1kaXYiKTsgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0
ZUF0dHJpYnV0ZU5TKCJodHRwOi8vZXhhbXBsZS5jb20vIiwgIi5kaXYiKTsgdGhyZXcgSU5WQUxJ
RF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUF0dHJpYnV0ZU5TKG51bGwsICI6ZGl2Iik7IHRo
cmV3IE5BTUVTUEFDRV9FUlIKK1BBU1MgY3JlYXRlQXR0cmlidXRlTlMobnVsbCwgImRpdjoiKTsg
dGhyZXcgTkFNRVNQQUNFX0VSUgorUEFTUyBjcmVhdGVBdHRyaWJ1dGVOUygiaHR0cDovL2V4YW1w
bGUuY29tLyIsICI6ZGl2Iik7IHRocmV3IE5BTUVTUEFDRV9FUlIKK1BBU1MgY3JlYXRlQXR0cmli
dXRlTlMoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiZGl2OiIpOyB0aHJldyBOQU1FU1BBQ0VfRVJS
CitQQVNTIGNyZWF0ZUF0dHJpYnV0ZU5TKG51bGwsICJkOml2Iik7IHRocmV3IE5BTUVTUEFDRV9F
UlIKK0ZBSUwgY3JlYXRlQXR0cmlidXRlTlMobnVsbCwgImE6YjpjIik7IHZhbGlkIFhNTCBuYW1l
LCBpbnZhbGlkIFFOYW1lOyBleHBlY3RlZCBOQU1FU1BBQ0VfRVJSLCB0aHJldyBJTlZBTElEX0NI
QVJBQ1RFUl9FUlIKK0ZBSUwgY3JlYXRlQXR0cmlidXRlTlMoImh0dHA6Ly9leGFtcGxlLmNvbS8i
LCAiYTpiOmMiKTsgdmFsaWQgWE1MIG5hbWUsIGludmFsaWQgUU5hbWU7IGV4cGVjdGVkIE5BTUVT
UEFDRV9FUlIsIHRocmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgorRkFJTCBjcmVhdGVBdHRyaWJ1
dGVOUyhudWxsLCAiYTo6YyIpOyB2YWxpZCBYTUwgbmFtZSwgaW52YWxpZCBRTmFtZTsgZXhwZWN0
ZWQgTkFNRVNQQUNFX0VSUiwgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitGQUlMIGNyZWF0
ZUF0dHJpYnV0ZU5TKCJodHRwOi8vZXhhbXBsZS5jb20vIiwgImE6OmMiKTsgdmFsaWQgWE1MIG5h
bWUsIGludmFsaWQgUU5hbWU7IGV4cGVjdGVkIE5BTUVTUEFDRV9FUlIsIHRocmV3IElOVkFMSURf
Q0hBUkFDVEVSX0VSUgorUEFTUyBjcmVhdGVBdHRyaWJ1dGVOUygiaHR0cDovL2V4YW1wbGUuY29t
LyIsICJhOjAiKTsgdmFsaWQgWE1MIG5hbWUsIG5vdCBhIHZhbGlkIFFOYW1lOyB0aHJldyBJTlZB
TElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlQXR0cmlidXRlTlMoImh0dHA6Ly9leGFtcGxl
LmNvbS8iLCAiMDphIik7IDAgYXQgc3RhcnQgbWFrZXMgaXQgbm90IGEgdmFsaWQgWE1MIG5hbWU7
IHRocmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgorUEFTUyBjcmVhdGVBdHRyaWJ1dGVOUygiaHR0
cDovL2V4YW1wbGUuY29tLyIsICJhOl8iKQorRkFJTCBjcmVhdGVBdHRyaWJ1dGVOUygiaHR0cDov
L2V4YW1wbGUuY29tLyIsICJhOuCvhiIpOyBub24tQVNDSUkgY2hhcmFjdGVyIGFmdGVyIGNvbG9u
IGlzIENvbWJpbmluZ0NoYXIsIHdoaWNoIGlzIE5DTmFtZUNoYXIgYnV0IG5vdCAoTGV0dGVyIHwg
Il8iKSBzbyBpbnZhbGlkIGF0IHN0YXJ0IG9mIE5DTmFtZSAoYnV0IHN0aWxsIGEgdmFsaWQgWE1M
IG5hbWUsIGhlbmNlIG5vdCBJTlZBTElEX0NIQVJBQ1RFUl9FUlIpOyBleHBlY3RlZCBOQU1FU1BB
Q0VfRVJSLCB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlQXR0cmlidXRl
TlMoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAi4K+GOmEiKTsgbm9uLUFTQ0lJIGNoYXJhY3RlciBh
ZnRlciBjb2xvbiBpcyBDb21iaW5pbmdDaGFyLCB3aGljaCBpcyBOQ05hbWVDaGFyIGJ1dCBub3Qg
KExldHRlciB8ICJfIikgc28gaW52YWxpZCBhdCBzdGFydCBvZiBOQ05hbWUgKEdlY2tvIGNob29z
ZXMgdG8gdGhyb3cgTkFNRVNQQUNFX0VSUiBoZXJlLCBidXQgZWl0aGVyIGlzIHZhbGlkIGFzIHRo
aXMgaXMgYm90aCBhbiBpbnZhbGlkIFhNTCBuYW1lIGFuZCBhbiBpbnZhbGlkIFFOYW1lKTsgdGhy
ZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUF0dHJpYnV0ZU5TKCJodHRwOi8v
ZXhhbXBsZS5jb20vIiwgImE6YeCvhiIpCitQQVNTIGNyZWF0ZUF0dHJpYnV0ZU5TKCJodHRwOi8v
ZXhhbXBsZS5jb20vIiwgImHgr4Y6YSIpCitQQVNTIGNyZWF0ZUF0dHJpYnV0ZU5TKCJodHRwOi8v
ZXhhbXBsZS5jb20vIiwgInhtbDp0ZXN0Iik7IGJpbmRpbmcgeG1sIHByZWZpeCB3cm9uZzsgdGhy
ZXcgTkFNRVNQQUNFX0VSUgorUEFTUyBjcmVhdGVBdHRyaWJ1dGVOUygiaHR0cDovL2V4YW1wbGUu
Y29tLyIsICJ4bWxuczp0ZXN0Iik7IGJpbmRpbmcgeG1sbnMgcHJlZml4IHdyb25nOyB0aHJldyBO
QU1FU1BBQ0VfRVJSCitQQVNTIGNyZWF0ZUF0dHJpYnV0ZU5TKCJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3htbG5zLyIsICJ4OnRlc3QiKTsgYmluZGluZyBuYW1lc3BhY2UgbmFtZXNwYWNlIHRvIHdy
b25nIHByZWZpeDsgdGhyZXcgTkFNRVNQQUNFX0VSUgorUEFTUyBjcmVhdGVBdHRyaWJ1dGVOUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8iLCAieG1sbnM6dGVzdCIpCitQQVNTIGNyZWF0
ZUF0dHJpYnV0ZU5TKCJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiLCAieG1s
OnRlc3QiKQorUEFTUyBjcmVhdGVBdHRyaWJ1dGVOUygiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5
OTgvbmFtZXNwYWNlIiwgIng6dGVzdCIpCitQQVNTIGNyZWF0ZUF0dHJpYnV0ZU5TKCJodHRwOi8v
ZXhhbXBsZS5jb20vIiwgInhtbG5zIik7IHRocmV3IE5BTUVTUEFDRV9FUlIKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCgpQcm9wZXJ0eSBjaGFuZ2Vz
IG9uOiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9jcmVhdGVBdHRyaWJ1dGVOUy1uYW1l
c3BhY2UtZXJyLWV4cGVjdGVkLnR4dApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjplb2wtc3R5bGUKICAg
KyBuYXRpdmUKCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9jcmVhdGVBdHRy
aWJ1dGVOUy1uYW1lc3BhY2UtZXJyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9kb20vRG9jdW1lbnQvY3JlYXRlQXR0cmlidXRlTlMtbmFtZXNwYWNlLWVyci5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvY3JlYXRlQXR0cmlidXRl
TlMtbmFtZXNwYWNlLWVyci5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzIEBACis8IURP
Q1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFk
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9w
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2NyZWF0
ZUF0dHJpYnV0ZU5TLW5hbWVzcGFjZS1lcnIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQv
Y3JlYXRlQXR0cmlidXRlTlMtbmFtZXNwYWNlLWVyci5odG1sCl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3Zu
Om1pbWUtdHlwZQogICArIHRleHQvaHRtbApOYW1lOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZl
CgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvY3JlYXRlRWxlbWVudE5TLW5h
bWVzcGFjZS1lcnItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0RvY3VtZW50L2NyZWF0ZUVsZW1lbnROUy1uYW1lc3BhY2UtZXJyLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L2NyZWF0ZUVsZW1l
bnROUy1uYW1lc3BhY2UtZXJyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3
OCBAQAorY3JlYXRlRWxlbWVudE5TIHRlc3RzIGZyb20gbW96aWxsYSwgYXR0YWNoZWQgdG8gd2Vi
a2l0IGJ1ZyAxNjgzMworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoKS50b1N0cmluZygpIGlzICJbb2JqZWN0IEVsZW1lbnRdIgor
UEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cuZXhhbXBsZS5jb20iKS50
b1N0cmluZygpIGlzICJbb2JqZWN0IEVsZW1lbnRdIgorUEFTUyBjcmVhdGVFbGVtZW50TlMoLCAp
CitQQVNTIGNyZWF0ZUVsZW1lbnROUyhudWxsLCApCitQQVNTIGNyZWF0ZUVsZW1lbnROUyh1bmRl
ZmluZWQsIG51bGwpOyB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlRWxl
bWVudE5TKG51bGwsIG51bGwpOyB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3Jl
YXRlRWxlbWVudE5TKG51bGwsICIiKTsgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNT
IGNyZWF0ZUVsZW1lbnROUygiIiwgbnVsbCk7IHRocmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgor
UEFTUyBjcmVhdGVFbGVtZW50TlMoIiIsICIiKTsgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJS
CitQQVNTIGNyZWF0ZUVsZW1lbnROUyhudWxsLCAiPGRpdj4iKTsgdGhyZXcgSU5WQUxJRF9DSEFS
QUNURVJfRVJSCitQQVNTIGNyZWF0ZUVsZW1lbnROUyhudWxsLCAiMGRpdiIpOyB0aHJldyBJTlZB
TElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlRWxlbWVudE5TKG51bGwsICJkaSB2Iik7IHRo
cmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgorUEFTUyBjcmVhdGVFbGVtZW50TlMobnVsbCwgImRp
PHYiKTsgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUVsZW1lbnROUyhu
dWxsLCAiLWRpdiIpOyB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlRWxl
bWVudE5TKG51bGwsICIuZGl2Iik7IHRocmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgorUEFTUyBj
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiPGRpdj4iKTsgdGhyZXcgSU5W
QUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUVsZW1lbnROUygiaHR0cDovL2V4YW1wbGUu
Y29tLyIsICIwZGl2Iik7IHRocmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgorUEFTUyBjcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiZGk8diIpOyB0aHJldyBJTlZBTElEX0NI
QVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vZXhhbXBsZS5jb20vIiwg
Ii1kaXYiKTsgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL2V4YW1wbGUuY29tLyIsICIuZGl2Iik7IHRocmV3IElOVkFMSURfQ0hBUkFDVEVS
X0VSUgorUEFTUyBjcmVhdGVFbGVtZW50TlMobnVsbCwgIjpkaXYiKTsgdGhyZXcgTkFNRVNQQUNF
X0VSUgorUEFTUyBjcmVhdGVFbGVtZW50TlMobnVsbCwgImRpdjoiKTsgdGhyZXcgTkFNRVNQQUNF
X0VSUgorUEFTUyBjcmVhdGVFbGVtZW50TlMoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiOmRpdiIp
OyB0aHJldyBOQU1FU1BBQ0VfRVJSCitQQVNTIGNyZWF0ZUVsZW1lbnROUygiaHR0cDovL2V4YW1w
bGUuY29tLyIsICJkaXY6Iik7IHRocmV3IE5BTUVTUEFDRV9FUlIKK1BBU1MgY3JlYXRlRWxlbWVu
dE5TKG51bGwsICJkOml2Iik7IHRocmV3IE5BTUVTUEFDRV9FUlIKK0ZBSUwgY3JlYXRlRWxlbWVu
dE5TKG51bGwsICJhOmI6YyIpOyB2YWxpZCBYTUwgbmFtZSwgaW52YWxpZCBRTmFtZTsgZXhwZWN0
ZWQgTkFNRVNQQUNFX0VSUiwgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitGQUlMIGNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL2V4YW1wbGUuY29tLyIsICJhOmI6YyIpOyB2YWxpZCBYTUwgbmFt
ZSwgaW52YWxpZCBRTmFtZTsgZXhwZWN0ZWQgTkFNRVNQQUNFX0VSUiwgdGhyZXcgSU5WQUxJRF9D
SEFSQUNURVJfRVJSCitGQUlMIGNyZWF0ZUVsZW1lbnROUyhudWxsLCAiYTo6YyIpOyB2YWxpZCBY
TUwgbmFtZSwgaW52YWxpZCBRTmFtZTsgZXhwZWN0ZWQgTkFNRVNQQUNFX0VSUiwgdGhyZXcgSU5W
QUxJRF9DSEFSQUNURVJfRVJSCitGQUlMIGNyZWF0ZUVsZW1lbnROUygiaHR0cDovL2V4YW1wbGUu
Y29tLyIsICJhOjpjIik7IHZhbGlkIFhNTCBuYW1lLCBpbnZhbGlkIFFOYW1lOyBleHBlY3RlZCBO
QU1FU1BBQ0VfRVJSLCB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vZXhhbXBsZS5jb20vIiwgImE6MCIpOyB2YWxpZCBYTUwgbmFtZSwgbm90
IGEgdmFsaWQgUU5hbWU7IHRocmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgorUEFTUyBjcmVhdGVF
bGVtZW50TlMoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiMDphIik7IDAgYXQgc3RhcnQgbWFrZXMg
aXQgbm90IGEgdmFsaWQgWE1MIG5hbWU7IHRocmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgorUEFT
UyBjcmVhdGVFbGVtZW50TlMoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiYTpfIikKK0ZBSUwgY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vZXhhbXBsZS5jb20vIiwgImE64K+GIik7IG5vbi1BU0NJSSBj
aGFyYWN0ZXIgYWZ0ZXIgY29sb24gaXMgQ29tYmluaW5nQ2hhciwgd2hpY2ggaXMgTkNOYW1lQ2hh
ciBidXQgbm90IChMZXR0ZXIgfCAiXyIpIHNvIGludmFsaWQgYXQgc3RhcnQgb2YgTkNOYW1lIChi
dXQgc3RpbGwgYSB2YWxpZCBYTUwgbmFtZSwgaGVuY2Ugbm90IElOVkFMSURfQ0hBUkFDVEVSX0VS
Uik7IGV4cGVjdGVkIE5BTUVTUEFDRV9FUlIsIHRocmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgor
UEFTUyBjcmVhdGVFbGVtZW50TlMoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAi4K+GOmEiKTsgbm9u
LUFTQ0lJIGNoYXJhY3RlciBhZnRlciBjb2xvbiBpcyBDb21iaW5pbmdDaGFyLCB3aGljaCBpcyBO
Q05hbWVDaGFyIGJ1dCBub3QgKExldHRlciB8ICJfIikgc28gaW52YWxpZCBhdCBzdGFydCBvZiBO
Q05hbWUgKEdlY2tvIGNob29zZXMgdG8gdGhyb3cgTkFNRVNQQUNFX0VSUiBoZXJlLCBidXQgZWl0
aGVyIGlzIHZhbGlkIGFzIHRoaXMgaXMgYm90aCBhbiBpbnZhbGlkIFhNTCBuYW1lIGFuZCBhbiBp
bnZhbGlkIFFOYW1lKTsgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUVs
ZW1lbnROUygiaHR0cDovL2V4YW1wbGUuY29tLyIsICJhOmHgr4YiKQorUEFTUyBjcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiYeCvhjphIikKK1BBU1MgY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vZXhhbXBsZS5jb20vIiwgInhtbDp0ZXN0Iik7IGJpbmRpbmcgeG1sIHByZWZp
eCB3cm9uZzsgdGhyZXcgTkFNRVNQQUNFX0VSUgorUEFTUyBjcmVhdGVFbGVtZW50TlMoImh0dHA6
Ly9leGFtcGxlLmNvbS8iLCAieG1sbnM6dGVzdCIpOyBiaW5kaW5nIHhtbG5zIHByZWZpeCB3cm9u
ZzsgdGhyZXcgTkFNRVNQQUNFX0VSUgorUEFTUyBjcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAveG1sbnMvIiwgIng6dGVzdCIpOyBiaW5kaW5nIG5hbWVzcGFjZSBuYW1lc3Bh
Y2UgdG8gd3JvbmcgcHJlZml4OyB0aHJldyBOQU1FU1BBQ0VfRVJSCitQQVNTIGNyZWF0ZUVsZW1l
bnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8iLCAieG1sbnM6dGVzdCIpCitQQVNT
IGNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIiwg
InhtbDp0ZXN0IikKK1BBU1MgY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy9YTUwv
MTk5OC9uYW1lc3BhY2UiLCAieDp0ZXN0IikKK1BBU1MgY3JlYXRlRWxlbWVudCgpCitQQVNTIGNy
ZWF0ZUVsZW1lbnQobnVsbCkKK1BBU1MgY3JlYXRlRWxlbWVudCgiIiwgdW5kZWZpbmVkKTsgdGhy
ZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUVsZW1lbnQoIjxkaXY+IiwgdW5k
ZWZpbmVkKTsgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUVsZW1lbnQo
IjBkaXYiLCB1bmRlZmluZWQpOyB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3Jl
YXRlRWxlbWVudCgiZGkgdiIsIHVuZGVmaW5lZCk7IHRocmV3IElOVkFMSURfQ0hBUkFDVEVSX0VS
UgorUEFTUyBjcmVhdGVFbGVtZW50KCJkaTx2IiwgdW5kZWZpbmVkKTsgdGhyZXcgSU5WQUxJRF9D
SEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUVsZW1lbnQoIi1kaXYiLCB1bmRlZmluZWQpOyB0aHJl
dyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlRWxlbWVudCgiLmRpdiIsIHVuZGVm
aW5lZCk7IHRocmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgorUEFTUyBjcmVhdGVFbGVtZW50KCI6
Iik7IHZhbGlkIFhNTCBuYW1lLCBpbnZhbGlkIFFOYW1lCitQQVNTIGNyZWF0ZUVsZW1lbnQoIjpk
aXYiKTsgdmFsaWQgWE1MIG5hbWUsIGludmFsaWQgUU5hbWUKK1BBU1MgY3JlYXRlRWxlbWVudCgi
ZGl2OiIpOyB2YWxpZCBYTUwgbmFtZSwgaW52YWxpZCBRTmFtZQorUEFTUyBjcmVhdGVFbGVtZW50
KCJkOml2IikKK1BBU1MgY3JlYXRlRWxlbWVudCgiYTpiOmMiKTsgdmFsaWQgWE1MIG5hbWUsIGlu
dmFsaWQgUU5hbWUKK1BBU1MgY3JlYXRlRWxlbWVudCgiYTo6YyIpOyB2YWxpZCBYTUwgbmFtZSwg
aW52YWxpZCBRTmFtZQorUEFTUyBjcmVhdGVFbGVtZW50KCJhOjpjOiIpOyB2YWxpZCBYTUwgbmFt
ZSwgaW52YWxpZCBRTmFtZQorUEFTUyBjcmVhdGVFbGVtZW50KCJhOjAiKTsgdmFsaWQgWE1MIG5h
bWUsIG5vdCBhIHZhbGlkIFFOYW1lCitQQVNTIGNyZWF0ZUVsZW1lbnQoIjA6YSIsIHVuZGVmaW5l
ZCk7IDAgYXQgc3RhcnQgbWFrZXMgaXQgbm90IGEgdmFsaWQgWE1MIG5hbWU7IHRocmV3IElOVkFM
SURfQ0hBUkFDVEVSX0VSUgorUEFTUyBjcmVhdGVFbGVtZW50KCJhOl8iKQorUEFTUyBjcmVhdGVF
bGVtZW50KCJhOuCvhiIpOyBub24tQVNDSUkgY2hhcmFjdGVyIGFmdGVyIGNvbG9uIGlzIENvbWJp
bmluZ0NoYXIsIHdoaWNoIGlzIHZhbGlkIGluIHByZS1uYW1lc3BhY2UgWE1MCitQQVNTIGNyZWF0
ZUVsZW1lbnQoIuCvhjphIiwgdW5kZWZpbmVkKTsgbm90IGEgdmFsaWQgc3RhcnQgY2hhcmFjdGVy
OyB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlRWxlbWVudCgiYTph4K+G
IikKK1BBU1MgY3JlYXRlRWxlbWVudCgiYeCvhjphIikKK1BBU1MgY3JlYXRlRWxlbWVudCgieG1s
OnRlc3QiKQorUEFTUyBjcmVhdGVFbGVtZW50KCJ4bWxuczp0ZXN0IikKK1BBU1MgY3JlYXRlRWxl
bWVudCgieDp0ZXN0IikKK1BBU1MgY3JlYXRlRWxlbWVudCgieG1sbnM6dGVzdCIpCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwoKUHJvcGVydHkgY2hh
bmdlcyBvbjogTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvY3JlYXRlRWxlbWVudE5TLW5h
bWVzcGFjZS1lcnItZXhwZWN0ZWQudHh0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOmVvbC1zdHlsZQog
ICArIG5hdGl2ZQoKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L2NyZWF0ZUVs
ZW1lbnROUy1uYW1lc3BhY2UtZXJyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9kb20vRG9jdW1lbnQvY3JlYXRlRWxlbWVudE5TLW5hbWVzcGFjZS1lcnIuaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L2NyZWF0ZUVsZW1lbnROUy1u
YW1lc3BhY2UtZXJyLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQ
RSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY3JlYXRlRWxl
bWVudE5TLW5hbWVzcGFjZS1lcnIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgoK
UHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvY3JlYXRl
RWxlbWVudE5TLW5hbWVzcGFjZS1lcnIuaHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjptaW1lLXR5
cGUKICAgKyB0ZXh0L2h0bWwKTmFtZTogc3ZuOmVvbC1zdHlsZQogICArIG5hdGl2ZQoKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L3Jlc291cmNlcy9URU1QTEFURS5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L3Jlc291cmNlcy9URU1Q
TEFURS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQv
cmVzb3VyY2VzL1RFTVBMQVRFLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKKzwh
RE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhl
YWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48
L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJZT1VSX0pTX0ZJTEVf
SEVSRSI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9u
OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9yZXNvdXJjZXMvVEVNUExBVEUuaHRtbApf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCk5hbWU6IHN2bjptaW1lLXR5cGUKICAgKyB0ZXh0L2h0bWwKTmFtZTogc3ZuOmVv
bC1zdHlsZQogICArIG5hdGl2ZQoKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50
L3Jlc291cmNlcy9jcmVhdGVBdHRyaWJ1dGVOUy1uYW1lc3BhY2UtZXJyLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L3Jlc291cmNlcy9jcmVhdGVBdHRyaWJ1
dGVOUy1uYW1lc3BhY2UtZXJyLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9k
b20vRG9jdW1lbnQvcmVzb3VyY2VzL2NyZWF0ZUF0dHJpYnV0ZU5TLW5hbWVzcGFjZS1lcnIuanMJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTM1IEBACitkZXNjcmlwdGlvbigiY3JlYXRlQXR0aXJi
dXRlTlMgdGVzdHMgYWRhcHRlZCBmcm9tIGNyZWF0ZUVsZW1lbnROUyB0ZXN0cyBhdHRhY2hlZCB0
byB3ZWJraXQgYnVnIDE2ODMzIik7CisKK2Z1bmN0aW9uIGFzc2VydChjLCBtKQoreworICAgIGlm
ICghYykKKyAgICAgICAgdGVzdEZhaWxlZChtKTsKKyAgICBlbHNlCisgICAgICAgIHRlc3RQYXNz
ZWQobSk7Cit9CisKK2Z1bmN0aW9uIHN0cmluZ0ZvckV4Y2VwdGlvbkNvZGUoYykKK3sKKyAgICB2
YXIgZXhjZXB0aW9uTmFtZTsKKyAgICBzd2l0Y2goYykgeworICAgICAgICBjYXNlIERPTUV4Y2Vw
dGlvbi5JTlZBTElEX0NIQVJBQ1RFUl9FUlI6CisgICAgICAgICAgICBleGNlcHRpb25OYW1lID0g
IklOVkFMSURfQ0hBUkFDVEVSX0VSUiI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBET01FeGNlcHRpb24uTkFNRVNQQUNFX0VSUjoKKyAgICAgICAgICAgIGV4Y2VwdGlvbk5hbWUg
PSAiTkFNRVNQQUNFX0VSUiI7CisgICAgfQorICAgIGlmIChleGNlcHRpb25OYW1lKQorICAgICAg
ICByZXR1cm4gZXhjZXB0aW9uTmFtZTsgLy8gKyAiKCIgKyBjICsgIikiOworICAgIHJldHVybiBj
OworfQorCitmdW5jdGlvbiBhc3NlcnRFcXVhbHMoYWN0dWFsLCBleHBlY3QsIG0pCit7CisgICAg
aWYgKGFjdHVhbCAhPT0gZXhwZWN0KSB7CisgICAgICAgIG0gKz0gIjsgZXhwZWN0ZWQgIiArIHN0
cmluZ0ZvckV4Y2VwdGlvbkNvZGUoZXhwZWN0KSArICIsIHRocmV3ICIgKyBzdHJpbmdGb3JFeGNl
cHRpb25Db2RlKGFjdHVhbCk7CisgICAgICAgIHRlc3RGYWlsZWQobSk7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgbSArPSAiOyB0aHJldyAiICsgc3RyaW5nRm9yRXhjZXB0aW9uQ29kZShhY3R1YWwp
OzsKKyAgICAgICAgdGVzdFBhc3NlZChtKTsKKyAgICB9Cit9CisKK3ZhciBhbGxOU1Rlc3RzID0g
WworICAgeyBhcmdzOiBbdW5kZWZpbmVkLCB1bmRlZmluZWRdIH0sCisgICB7IGFyZ3M6IFtudWxs
LCB1bmRlZmluZWRdIH0sCisgICB7IGFyZ3M6IFt1bmRlZmluZWQsIG51bGxdLCBjb2RlOiA1IH0s
CisgICB7IGFyZ3M6IFtudWxsLCBudWxsXSwgY29kZTogNSB9LAorICAgeyBhcmdzOiBbbnVsbCwg
IiJdLCBjb2RlOiA1IH0sCisgICB7IGFyZ3M6IFsiIiwgbnVsbF0sIGNvZGU6IDUgfSwKKyAgIHsg
YXJnczogWyIiLCAiIl0sIGNvZGU6IDUgfSwKKyAgIHsgYXJnczogW251bGwsICI8ZGl2PiJdLCBj
b2RlOiA1IH0sCisgICB7IGFyZ3M6IFtudWxsLCAiMGRpdiJdLCBjb2RlOiA1IH0sCisgICB7IGFy
Z3M6IFtudWxsLCAiZGkgdiJdLCBjb2RlOiA1IH0sCisgICB7IGFyZ3M6IFtudWxsLCAiZGk8diJd
LCBjb2RlOiA1IH0sCisgICB7IGFyZ3M6IFtudWxsLCAiLWRpdiJdLCBjb2RlOiA1IH0sCisgICB7
IGFyZ3M6IFtudWxsLCAiLmRpdiJdLCBjb2RlOiA1IH0sCisgICB7IGFyZ3M6IFsiaHR0cDovL2V4
YW1wbGUuY29tLyIsICI8ZGl2PiJdLCBjb2RlOiA1IH0sCisgICB7IGFyZ3M6IFsiaHR0cDovL2V4
YW1wbGUuY29tLyIsICIwZGl2Il0sIGNvZGU6IDUgfSwKKyAgIHsgYXJnczogWyJodHRwOi8vZXhh
bXBsZS5jb20vIiwgImRpPHYiXSwgY29kZTogNSB9LAorICAgeyBhcmdzOiBbImh0dHA6Ly9leGFt
cGxlLmNvbS8iLCAiLWRpdiJdLCBjb2RlOiA1IH0sCisgICB7IGFyZ3M6IFsiaHR0cDovL2V4YW1w
bGUuY29tLyIsICIuZGl2Il0sIGNvZGU6IDUgfSwKKyAgIHsgYXJnczogW251bGwsICI6ZGl2Il0s
IGNvZGU6IDE0IH0sCisgICB7IGFyZ3M6IFtudWxsLCAiZGl2OiJdLCBjb2RlOiAxNCB9LAorICAg
eyBhcmdzOiBbImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiOmRpdiJdLCBjb2RlOiAxNCB9LAorICAg
eyBhcmdzOiBbImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiZGl2OiJdLCBjb2RlOiAxNCB9LAorICAg
eyBhcmdzOiBbbnVsbCwgImQ6aXYiXSwgY29kZTogMTQgfSwKKyAgIHsgYXJnczogW251bGwsICJh
OmI6YyJdLCBjb2RlOiAxNCwgbWVzc2FnZTogInZhbGlkIFhNTCBuYW1lLCBpbnZhbGlkIFFOYW1l
IiB9LAorICAgeyBhcmdzOiBbImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiYTpiOmMiXSwgY29kZTog
MTQsIG1lc3NhZ2U6ICJ2YWxpZCBYTUwgbmFtZSwgaW52YWxpZCBRTmFtZSIgfSwKKyAgIHsgYXJn
czogW251bGwsICJhOjpjIl0sIGNvZGU6IDE0LCBtZXNzYWdlOiAidmFsaWQgWE1MIG5hbWUsIGlu
dmFsaWQgUU5hbWUiIH0sCisgICB7IGFyZ3M6IFsiaHR0cDovL2V4YW1wbGUuY29tLyIsICJhOjpj
Il0sIGNvZGU6IDE0LCBtZXNzYWdlOiAidmFsaWQgWE1MIG5hbWUsIGludmFsaWQgUU5hbWUiIH0s
CisgICB7IGFyZ3M6IFsiaHR0cDovL2V4YW1wbGUuY29tLyIsICJhOjAiXSwgY29kZTogNSwgbWVz
c2FnZTogInZhbGlkIFhNTCBuYW1lLCBub3QgYSB2YWxpZCBRTmFtZSIgfSwKKyAgIHsgYXJnczog
WyJodHRwOi8vZXhhbXBsZS5jb20vIiwgIjA6YSJdLCBjb2RlOiA1LCBtZXNzYWdlOiAiMCBhdCBz
dGFydCBtYWtlcyBpdCBub3QgYSB2YWxpZCBYTUwgbmFtZSIgfSwKKyAgIHsgYXJnczogWyJodHRw
Oi8vZXhhbXBsZS5jb20vIiwgImE6XyJdIH0sCisgICB7IGFyZ3M6IFsiaHR0cDovL2V4YW1wbGUu
Y29tLyIsICJhOlx1MEJDNiJdLCBjb2RlOiAxNCwKKyAgICAgbWVzc2FnZTogIm5vbi1BU0NJSSBj
aGFyYWN0ZXIgYWZ0ZXIgY29sb24gaXMgQ29tYmluaW5nQ2hhciwgd2hpY2ggaXMgIiArCisgICAg
ICAgICAgICAgICJOQ05hbWVDaGFyIGJ1dCBub3QgKExldHRlciB8IFwiX1wiKSBzbyBpbnZhbGlk
IGF0IHN0YXJ0IG9mICIgKworICAgICAgICAgICAgICAiTkNOYW1lIChidXQgc3RpbGwgYSB2YWxp
ZCBYTUwgbmFtZSwgaGVuY2Ugbm90IElOVkFMSURfQ0hBUkFDVEVSX0VSUikiIH0sCisgICB7IGFy
Z3M6IFsiaHR0cDovL2V4YW1wbGUuY29tLyIsICJcdTBCQzY6YSJdLCBjb2RlOiA1LAorICAgICBt
ZXNzYWdlOiAibm9uLUFTQ0lJIGNoYXJhY3RlciBhZnRlciBjb2xvbiBpcyBDb21iaW5pbmdDaGFy
LCB3aGljaCBpcyAiICsKKyAgICAgICAgICAgICAgIk5DTmFtZUNoYXIgYnV0IG5vdCAoTGV0dGVy
IHwgXCJfXCIpIHNvIGludmFsaWQgYXQgc3RhcnQgb2YgIiArCisgICAgICAgICAgICAgICJOQ05h
bWUgKEdlY2tvIGNob29zZXMgdG8gdGhyb3cgTkFNRVNQQUNFX0VSUiBoZXJlLCBidXQgZWl0aGVy
IGlzIHZhbGlkICIgKworICAgICAgICAgICAgICAiYXMgdGhpcyBpcyBib3RoIGFuIGludmFsaWQg
WE1MIG5hbWUgYW5kIGFuIGludmFsaWQgUU5hbWUpIiB9LAorICAgeyBhcmdzOiBbImh0dHA6Ly9l
eGFtcGxlLmNvbS8iLCAiYTphXHUwQkM2Il0gfSwKKyAgIHsgYXJnczogWyJodHRwOi8vZXhhbXBs
ZS5jb20vIiwgImFcdTBCQzY6YSJdIH0sCisgICB7IGFyZ3M6IFsiaHR0cDovL2V4YW1wbGUuY29t
LyIsICJ4bWw6dGVzdCJdLCBjb2RlOiAxNCwgbWVzc2FnZTogImJpbmRpbmcgeG1sIHByZWZpeCB3
cm9uZyIgfSwKKyAgIHsgYXJnczogWyJodHRwOi8vZXhhbXBsZS5jb20vIiwgInhtbG5zOnRlc3Qi
XSwgY29kZTogMTQsIG1lc3NhZ2U6ICJiaW5kaW5nIHhtbG5zIHByZWZpeCB3cm9uZyIgfSwKKyAg
IHsgYXJnczogWyJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyIsICJ4OnRlc3QiXSwgY29k
ZTogMTQsIG1lc3NhZ2U6ICJiaW5kaW5nIG5hbWVzcGFjZSBuYW1lc3BhY2UgdG8gd3JvbmcgcHJl
Zml4IiB9LAorICAgeyBhcmdzOiBbImh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIiwgInht
bG5zOnRlc3QiXSB9LAorICAgeyBhcmdzOiBbImh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25h
bWVzcGFjZSIsICJ4bWw6dGVzdCJdIH0sCisgICB7IGFyZ3M6IFsiaHR0cDovL3d3dy53My5vcmcv
WE1MLzE5OTgvbmFtZXNwYWNlIiwgIng6dGVzdCJdIH0sCisgICB7IGFyZ3M6IFsiaHR0cDovL2V4
YW1wbGUuY29tLyIsICJ4bWxucyJdLCBjb2RlOiAxNCB9LCAvLyBmcm9tIHRoZSBjcmVhdGVBdHRy
aWJ1dGVOUyBzZWN0aW9uCitdOworCitmdW5jdGlvbiBzb3VyY2VpZnkodikKK3sKKyAgICBzd2l0
Y2ggKHR5cGVvZiB2KSB7CisgICAgY2FzZSAidW5kZWZpbmVkIjoKKyAgICAgICAgcmV0dXJuIHY7
CisKKyAgICBjYXNlICJzdHJpbmciOgorICAgICAgICByZXR1cm4gJyInICsgdi5yZXBsYWNlKCci
JywgJ1xcIicpICsgJyInOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIFN0cmluZyh2
KTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHJ1bk5TVGVzdHMoKQoreworICAgIHZhciBjcmVhdGVG
dW5jdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUF0dHJpYnV0ZU5TOworICAgIHZhciBjcmVhdGVGdW5j
dGlvbk5hbWUgPSAiY3JlYXRlQXR0cmlidXRlTlMiOworICAgIHZhciBkb2MgPSBkb2N1bWVudDsK
KworICAgIGZvciAodmFyIGkgPSAwLCBzeiA9IGFsbE5TVGVzdHMubGVuZ3RoOyBpIDwgc3o7IGkr
KykgeworICAgICAgICB2YXIgdGVzdCA9IGFsbE5TVGVzdHNbaV07CisKKyAgICAgICAgdmFyIGNv
ZGUgPSAtMTsKKyAgICAgICAgdmFyIGFyZ1N0ciA9IHNvdXJjZWlmeSh0ZXN0LmFyZ3NbMF0pICsg
IiwgIiArIHNvdXJjZWlmeSh0ZXN0LmFyZ3NbMV0pOworICAgICAgICB0cnkgeworICAgICAgICAg
ICAgY3JlYXRlRnVuY3Rpb24uYXBwbHkoZG9jLCB0ZXN0LmFyZ3MpOworICAgICAgICAgICAgdmFy
IG1zZyA9IGNyZWF0ZUZ1bmN0aW9uTmFtZSArICIoIiArIGFyZ1N0ciArICIpIjsKKyAgICAgICAg
ICAgIGlmICgibWVzc2FnZSIgaW4gdGVzdCkKKyAgICAgICAgICAgICAgICBtc2cgKz0gIjsgIiAr
IHRlc3QubWVzc2FnZTsKKyAgICAgICAgICAgIGFzc2VydCghKGNvZGUgaW4gdGVzdCksIG1zZyk7
CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIHZhciBhcmdTdHIgPSBzb3VyY2Vp
ZnkodGVzdC5hcmdzWzBdKSArICIsICIgKyBzb3VyY2VpZnkodGVzdC5hcmdzWzFdKTsKKyAgICAg
ICAgICAgIG1zZyA9IGNyZWF0ZUZ1bmN0aW9uTmFtZSArICIoIiArIGFyZ1N0ciArICIpIjsKKyAg
ICAgICAgICAgIGlmICgibWVzc2FnZSIgaW4gdGVzdCkKKyAgICAgICAgICAgICAgICBtc2cgKz0g
IjsgIiArIHRlc3QubWVzc2FnZTsKKyAgICAgICAgICAgIGFzc2VydEVxdWFscyhlLmNvZGUsIHRl
c3QuY29kZSB8fCAiZXhwZWN0ZWQgbm8gZXhjZXB0aW9uIiwgbXNnKTsKKyAgICAgICAgfQorICAg
IH0KK30KKworLy8gTW96IHRocm93cyBhICJOb3QgZW5vdWdoIGFyZ3VtZW50cyIgZXhjZXB0aW9u
IGluIHRoZXNlLCB3ZSBkb24ndDoKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZG9jdW1lbnQuY3Jl
YXRlQXR0cmlidXRlTlMoKS50b1N0cmluZygpIiwgIltvYmplY3QgQXR0cl0iKTsKK3Nob3VsZEJl
RXF1YWxUb1N0cmluZygiZG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlTlMoXCJodHRwOi8vd3d3LmV4
YW1wbGUuY29tXCIpLnRvU3RyaW5nKCkiLCAiW29iamVjdCBBdHRyXSIpOworCitydW5OU1Rlc3Rz
KCk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9kb20vRG9jdW1lbnQvcmVzb3VyY2VzL2NyZWF0ZUVsZW1lbnROUy1uYW1lc3BhY2UtZXJy
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L3Jlc291cmNl
cy9jcmVhdGVFbGVtZW50TlMtbmFtZXNwYWNlLWVyci5qcwkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L3Jlc291cmNlcy9jcmVhdGVFbGVtZW50TlMtbmFtZXNw
YWNlLWVyci5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNzAgQEAKK2Rlc2NyaXB0aW9uKCJj
cmVhdGVFbGVtZW50TlMgdGVzdHMgZnJvbSBtb3ppbGxhLCBhdHRhY2hlZCB0byB3ZWJraXQgYnVn
IDE2ODMzIik7CisKK2Z1bmN0aW9uIGFzc2VydChjLCBtKQoreworICAgIGlmICghYykKKyAgICAg
ICAgdGVzdEZhaWxlZChtKTsKKyAgICBlbHNlCisgICAgICAgIHRlc3RQYXNzZWQobSk7Cit9CisK
K2Z1bmN0aW9uIHN0cmluZ0ZvckV4Y2VwdGlvbkNvZGUoYykKK3sKKyAgICB2YXIgZXhjZXB0aW9u
TmFtZTsKKyAgICBzd2l0Y2goYykgeworICAgICAgICBjYXNlIERPTUV4Y2VwdGlvbi5JTlZBTElE
X0NIQVJBQ1RFUl9FUlI6CisgICAgICAgICAgICBleGNlcHRpb25OYW1lID0gIklOVkFMSURfQ0hB
UkFDVEVSX0VSUiI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBET01FeGNlcHRp
b24uTkFNRVNQQUNFX0VSUjoKKyAgICAgICAgICAgIGV4Y2VwdGlvbk5hbWUgPSAiTkFNRVNQQUNF
X0VSUiI7CisgICAgfQorICAgIGlmIChleGNlcHRpb25OYW1lKQorICAgICAgICByZXR1cm4gZXhj
ZXB0aW9uTmFtZTsgLy8gKyAiKCIgKyBjICsgIikiOworICAgIHJldHVybiBjOworfQorCitmdW5j
dGlvbiBhc3NlcnRFcXVhbHMoYWN0dWFsLCBleHBlY3QsIG0pCit7CisgICAgaWYgKGFjdHVhbCAh
PT0gZXhwZWN0KSB7CisgICAgICAgIG0gKz0gIjsgZXhwZWN0ZWQgIiArIHN0cmluZ0ZvckV4Y2Vw
dGlvbkNvZGUoZXhwZWN0KSArICIsIHRocmV3ICIgKyBzdHJpbmdGb3JFeGNlcHRpb25Db2RlKGFj
dHVhbCk7CisgICAgICAgIHRlc3RGYWlsZWQobSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbSAr
PSAiOyB0aHJldyAiICsgc3RyaW5nRm9yRXhjZXB0aW9uQ29kZShhY3R1YWwpOzsKKyAgICAgICAg
dGVzdFBhc3NlZChtKTsKKyAgICB9Cit9CisKK3ZhciBhbGxOU1Rlc3RzID0gWworICAgeyBhcmdz
OiBbdW5kZWZpbmVkLCB1bmRlZmluZWRdIH0sCisgICB7IGFyZ3M6IFtudWxsLCB1bmRlZmluZWRd
IH0sCisgICB7IGFyZ3M6IFt1bmRlZmluZWQsIG51bGxdLCBjb2RlOiA1IH0sCisgICB7IGFyZ3M6
IFtudWxsLCBudWxsXSwgY29kZTogNSB9LAorICAgeyBhcmdzOiBbbnVsbCwgIiJdLCBjb2RlOiA1
IH0sCisgICB7IGFyZ3M6IFsiIiwgbnVsbF0sIGNvZGU6IDUgfSwKKyAgIHsgYXJnczogWyIiLCAi
Il0sIGNvZGU6IDUgfSwKKyAgIHsgYXJnczogW251bGwsICI8ZGl2PiJdLCBjb2RlOiA1IH0sCisg
ICB7IGFyZ3M6IFtudWxsLCAiMGRpdiJdLCBjb2RlOiA1IH0sCisgICB7IGFyZ3M6IFtudWxsLCAi
ZGkgdiJdLCBjb2RlOiA1IH0sCisgICB7IGFyZ3M6IFtudWxsLCAiZGk8diJdLCBjb2RlOiA1IH0s
CisgICB7IGFyZ3M6IFtudWxsLCAiLWRpdiJdLCBjb2RlOiA1IH0sCisgICB7IGFyZ3M6IFtudWxs
LCAiLmRpdiJdLCBjb2RlOiA1IH0sCisgICB7IGFyZ3M6IFsiaHR0cDovL2V4YW1wbGUuY29tLyIs
ICI8ZGl2PiJdLCBjb2RlOiA1IH0sCisgICB7IGFyZ3M6IFsiaHR0cDovL2V4YW1wbGUuY29tLyIs
ICIwZGl2Il0sIGNvZGU6IDUgfSwKKyAgIHsgYXJnczogWyJodHRwOi8vZXhhbXBsZS5jb20vIiwg
ImRpPHYiXSwgY29kZTogNSB9LAorICAgeyBhcmdzOiBbImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAi
LWRpdiJdLCBjb2RlOiA1IH0sCisgICB7IGFyZ3M6IFsiaHR0cDovL2V4YW1wbGUuY29tLyIsICIu
ZGl2Il0sIGNvZGU6IDUgfSwKKyAgIHsgYXJnczogW251bGwsICI6ZGl2Il0sIGNvZGU6IDE0IH0s
CisgICB7IGFyZ3M6IFtudWxsLCAiZGl2OiJdLCBjb2RlOiAxNCB9LAorICAgeyBhcmdzOiBbImh0
dHA6Ly9leGFtcGxlLmNvbS8iLCAiOmRpdiJdLCBjb2RlOiAxNCB9LAorICAgeyBhcmdzOiBbImh0
dHA6Ly9leGFtcGxlLmNvbS8iLCAiZGl2OiJdLCBjb2RlOiAxNCB9LAorICAgeyBhcmdzOiBbbnVs
bCwgImQ6aXYiXSwgY29kZTogMTQgfSwKKyAgIHsgYXJnczogW251bGwsICJhOmI6YyJdLCBjb2Rl
OiAxNCwgbWVzc2FnZTogInZhbGlkIFhNTCBuYW1lLCBpbnZhbGlkIFFOYW1lIiB9LAorICAgeyBh
cmdzOiBbImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiYTpiOmMiXSwgY29kZTogMTQsIG1lc3NhZ2U6
ICJ2YWxpZCBYTUwgbmFtZSwgaW52YWxpZCBRTmFtZSIgfSwKKyAgIHsgYXJnczogW251bGwsICJh
OjpjIl0sIGNvZGU6IDE0LCBtZXNzYWdlOiAidmFsaWQgWE1MIG5hbWUsIGludmFsaWQgUU5hbWUi
IH0sCisgICB7IGFyZ3M6IFsiaHR0cDovL2V4YW1wbGUuY29tLyIsICJhOjpjIl0sIGNvZGU6IDE0
LCBtZXNzYWdlOiAidmFsaWQgWE1MIG5hbWUsIGludmFsaWQgUU5hbWUiIH0sCisgICB7IGFyZ3M6
IFsiaHR0cDovL2V4YW1wbGUuY29tLyIsICJhOjAiXSwgY29kZTogNSwgbWVzc2FnZTogInZhbGlk
IFhNTCBuYW1lLCBub3QgYSB2YWxpZCBRTmFtZSIgfSwKKyAgIHsgYXJnczogWyJodHRwOi8vZXhh
bXBsZS5jb20vIiwgIjA6YSJdLCBjb2RlOiA1LCBtZXNzYWdlOiAiMCBhdCBzdGFydCBtYWtlcyBp
dCBub3QgYSB2YWxpZCBYTUwgbmFtZSIgfSwKKyAgIHsgYXJnczogWyJodHRwOi8vZXhhbXBsZS5j
b20vIiwgImE6XyJdIH0sCisgICB7IGFyZ3M6IFsiaHR0cDovL2V4YW1wbGUuY29tLyIsICJhOlx1
MEJDNiJdLCBjb2RlOiAxNCwKKyAgICAgbWVzc2FnZTogIm5vbi1BU0NJSSBjaGFyYWN0ZXIgYWZ0
ZXIgY29sb24gaXMgQ29tYmluaW5nQ2hhciwgd2hpY2ggaXMgIiArCisgICAgICAgICAgICAgICJO
Q05hbWVDaGFyIGJ1dCBub3QgKExldHRlciB8IFwiX1wiKSBzbyBpbnZhbGlkIGF0IHN0YXJ0IG9m
ICIgKworICAgICAgICAgICAgICAiTkNOYW1lIChidXQgc3RpbGwgYSB2YWxpZCBYTUwgbmFtZSwg
aGVuY2Ugbm90IElOVkFMSURfQ0hBUkFDVEVSX0VSUikiIH0sCisgICB7IGFyZ3M6IFsiaHR0cDov
L2V4YW1wbGUuY29tLyIsICJcdTBCQzY6YSJdLCBjb2RlOiA1LAorICAgICBtZXNzYWdlOiAibm9u
LUFTQ0lJIGNoYXJhY3RlciBhZnRlciBjb2xvbiBpcyBDb21iaW5pbmdDaGFyLCB3aGljaCBpcyAi
ICsKKyAgICAgICAgICAgICAgIk5DTmFtZUNoYXIgYnV0IG5vdCAoTGV0dGVyIHwgXCJfXCIpIHNv
IGludmFsaWQgYXQgc3RhcnQgb2YgIiArCisgICAgICAgICAgICAgICJOQ05hbWUgKEdlY2tvIGNo
b29zZXMgdG8gdGhyb3cgTkFNRVNQQUNFX0VSUiBoZXJlLCBidXQgZWl0aGVyIGlzIHZhbGlkICIg
KworICAgICAgICAgICAgICAiYXMgdGhpcyBpcyBib3RoIGFuIGludmFsaWQgWE1MIG5hbWUgYW5k
IGFuIGludmFsaWQgUU5hbWUpIiB9LAorICAgeyBhcmdzOiBbImh0dHA6Ly9leGFtcGxlLmNvbS8i
LCAiYTphXHUwQkM2Il0gfSwKKyAgIHsgYXJnczogWyJodHRwOi8vZXhhbXBsZS5jb20vIiwgImFc
dTBCQzY6YSJdIH0sCisgICB7IGFyZ3M6IFsiaHR0cDovL2V4YW1wbGUuY29tLyIsICJ4bWw6dGVz
dCJdLCBjb2RlOiAxNCwgbWVzc2FnZTogImJpbmRpbmcgeG1sIHByZWZpeCB3cm9uZyIgfSwKKyAg
IHsgYXJnczogWyJodHRwOi8vZXhhbXBsZS5jb20vIiwgInhtbG5zOnRlc3QiXSwgY29kZTogMTQs
IG1lc3NhZ2U6ICJiaW5kaW5nIHhtbG5zIHByZWZpeCB3cm9uZyIgfSwKKyAgIHsgYXJnczogWyJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyIsICJ4OnRlc3QiXSwgY29kZTogMTQsIG1lc3Nh
Z2U6ICJiaW5kaW5nIG5hbWVzcGFjZSBuYW1lc3BhY2UgdG8gd3JvbmcgcHJlZml4IiB9LAorICAg
eyBhcmdzOiBbImh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIiwgInhtbG5zOnRlc3QiXSB9
LAorICAgeyBhcmdzOiBbImh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIsICJ4
bWw6dGVzdCJdIH0sCisgICB7IGFyZ3M6IFsiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFt
ZXNwYWNlIiwgIng6dGVzdCJdIH0sCitdOworCit2YXIgYWxsTm9OU1Rlc3RzID0gWworICAgeyBh
cmdzOiBbdW5kZWZpbmVkXSB9LAorICAgeyBhcmdzOiBbbnVsbF0sIGNvZGU6IDUgfSwKKyAgIHsg
YXJnczogWyIiXSwgY29kZTogNSB9LAorICAgeyBhcmdzOiBbIjxkaXY+Il0sIGNvZGU6IDUgfSwK
KyAgIHsgYXJnczogWyIwZGl2Il0sIGNvZGU6IDUgfSwKKyAgIHsgYXJnczogWyJkaSB2Il0sIGNv
ZGU6IDUgfSwKKyAgIHsgYXJnczogWyJkaTx2Il0sIGNvZGU6IDUgfSwKKyAgIHsgYXJnczogWyIt
ZGl2Il0sIGNvZGU6IDUgfSwKKyAgIHsgYXJnczogWyIuZGl2Il0sIGNvZGU6IDUgfSwKKyAgIHsg
YXJnczogWyI6Il0sIG1lc3NhZ2U6ICJ2YWxpZCBYTUwgbmFtZSwgaW52YWxpZCBRTmFtZSIgfSwK
KyAgIHsgYXJnczogWyI6ZGl2Il0sIG1lc3NhZ2U6ICJ2YWxpZCBYTUwgbmFtZSwgaW52YWxpZCBR
TmFtZSIgfSwKKyAgIHsgYXJnczogWyJkaXY6Il0sIG1lc3NhZ2U6ICJ2YWxpZCBYTUwgbmFtZSwg
aW52YWxpZCBRTmFtZSIgfSwKKyAgIHsgYXJnczogWyJkOml2Il0gfSwKKyAgIHsgYXJnczogWyJh
OmI6YyJdLCBtZXNzYWdlOiAidmFsaWQgWE1MIG5hbWUsIGludmFsaWQgUU5hbWUiIH0sCisgICB7
IGFyZ3M6IFsiYTo6YyJdLCBtZXNzYWdlOiAidmFsaWQgWE1MIG5hbWUsIGludmFsaWQgUU5hbWUi
IH0sCisgICB7IGFyZ3M6IFsiYTo6YzoiXSwgbWVzc2FnZTogInZhbGlkIFhNTCBuYW1lLCBpbnZh
bGlkIFFOYW1lIiB9LAorICAgeyBhcmdzOiBbImE6MCJdLCBtZXNzYWdlOiAidmFsaWQgWE1MIG5h
bWUsIG5vdCBhIHZhbGlkIFFOYW1lIiB9LAorICAgeyBhcmdzOiBbIjA6YSJdLCBjb2RlOiA1LCBt
ZXNzYWdlOiAiMCBhdCBzdGFydCBtYWtlcyBpdCBub3QgYSB2YWxpZCBYTUwgbmFtZSIgfSwKKyAg
IHsgYXJnczogWyJhOl8iXSB9LAorICAgeyBhcmdzOiBbImE6XHUwQkM2Il0sCisgICAgIG1lc3Nh
Z2U6ICJub24tQVNDSUkgY2hhcmFjdGVyIGFmdGVyIGNvbG9uIGlzIENvbWJpbmluZ0NoYXIsIHdo
aWNoIGlzICIgKworICAgICAgICAgICAgICAidmFsaWQgaW4gcHJlLW5hbWVzcGFjZSBYTUwiIH0s
CisgICB7IGFyZ3M6IFsiXHUwQkM2OmEiXSwgY29kZTogNSwgbWVzc2FnZTogIm5vdCBhIHZhbGlk
IHN0YXJ0IGNoYXJhY3RlciIgfSwKKyAgIHsgYXJnczogWyJhOmFcdTBCQzYiXSB9LAorICAgeyBh
cmdzOiBbImFcdTBCQzY6YSJdIH0sCisgICB7IGFyZ3M6IFsieG1sOnRlc3QiXSB9LAorICAgeyBh
cmdzOiBbInhtbG5zOnRlc3QiXSB9LAorICAgeyBhcmdzOiBbIng6dGVzdCJdIH0sCisgICB7IGFy
Z3M6IFsieG1sbnM6dGVzdCJdIH0sCitdOworCitmdW5jdGlvbiBzb3VyY2VpZnkodikKK3sKKyAg
ICBzd2l0Y2ggKHR5cGVvZiB2KSB7CisgICAgICAgIGNhc2UgInVuZGVmaW5lZCI6CisgICAgICAg
ICAgICByZXR1cm4gdjsKKyAgICAgICAgY2FzZSAic3RyaW5nIjoKKyAgICAgICAgICAgIHJldHVy
biAnIicgKyB2LnJlcGxhY2UoJyInLCAnXFwiJykgKyAnIic7CisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICByZXR1cm4gU3RyaW5nKHYpOworICAgIH0KK30KKworZnVuY3Rpb24gc291cmNl
aWZ5QXJncyhhcmdzKQoreworICAgIHZhciBjb3B5ID0gbmV3IEFycmF5KGFyZ3MubGVuZ3RoKTsK
KyAgICBmb3IgKHZhciBpID0gMCwgc3ogPSBhcmdzLmxlbmd0aDsgaSA8IHN6OyBpKyspCisgICAg
ICAgIGNvcHlbaV0gPSBzb3VyY2VpZnkoYXJnc1tpXSk7CisKKyAgICByZXR1cm4gY29weS5qb2lu
KCIsICIpOworfQorCitmdW5jdGlvbiBydW5OU1Rlc3RzKHRlc3RzLCBjcmVhdGVGdW5jdGlvbk5h
bWUpCit7CisgICAgZm9yICh2YXIgaSA9IDAsIHN6ID0gdGVzdHMubGVuZ3RoOyBpIDwgc3o7IGkr
KykgeworICAgICAgICB2YXIgdGVzdCA9IHRlc3RzW2ldOworCisgICAgICAgIHZhciBjb2RlID0g
LTE7CisgICAgICAgIHZhciBhcmdTdHIgPSBzb3VyY2VpZnlBcmdzKHRlc3QuYXJncyk7CisgICAg
ICAgIHRyeSB7CisgICAgICAgICAgICBkb2N1bWVudFtjcmVhdGVGdW5jdGlvbk5hbWVdLmFwcGx5
KGRvY3VtZW50LCB0ZXN0LmFyZ3MpOworICAgICAgICAgICAgdmFyIG1zZyA9IGNyZWF0ZUZ1bmN0
aW9uTmFtZSArICIoIiArIGFyZ1N0ciArICIpIjsKKyAgICAgICAgICAgIGlmICgibWVzc2FnZSIg
aW4gdGVzdCkKKyAgICAgICAgICAgICAgICBtc2cgKz0gIjsgIiArIHRlc3QubWVzc2FnZTsKKyAg
ICAgICAgICAgIGFzc2VydCghKGNvZGUgaW4gdGVzdCksIG1zZyk7CisgICAgICAgIH0gY2F0Y2gg
KGUpIHsKKyAgICAgICAgICAgIHZhciBhcmdTdHIgPSBzb3VyY2VpZnkodGVzdC5hcmdzWzBdKSAr
ICIsICIgKyBzb3VyY2VpZnkodGVzdC5hcmdzWzFdKTsKKyAgICAgICAgICAgIG1zZyA9IGNyZWF0
ZUZ1bmN0aW9uTmFtZSArICIoIiArIGFyZ1N0ciArICIpIjsKKyAgICAgICAgICAgIGlmICgibWVz
c2FnZSIgaW4gdGVzdCkKKyAgICAgICAgICAgICAgICBtc2cgKz0gIjsgIiArIHRlc3QubWVzc2Fn
ZTsKKyAgICAgICAgICAgIGFzc2VydEVxdWFscyhlLmNvZGUsIHRlc3QuY29kZSB8fCAiZXhwZWN0
ZWQgbm8gZXhjZXB0aW9uIiwgbXNnKTsKKyAgICAgICAgfQorICAgIH0KK30KKworLy8gTW96IHRo
cm93cyBhICJOb3QgZW5vdWdoIGFyZ3VtZW50cyIgZXhjZXB0aW9uIGluIHRoZXNlLCB3ZSBkb24n
dDoKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCkudG9T
dHJpbmcoKSIsICJbb2JqZWN0IEVsZW1lbnRdIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUyhcImh0dHA6Ly93d3cuZXhhbXBsZS5jb21cIikudG9TdHJp
bmcoKSIsICJbb2JqZWN0IEVsZW1lbnRdIik7CisKK3J1bk5TVGVzdHMoYWxsTlNUZXN0cywgImNy
ZWF0ZUVsZW1lbnROUyIpOworcnVuTlNUZXN0cyhhbGxOb05TVGVzdHMsICJjcmVhdGVFbGVtZW50
Iik7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19938</attachid>
            <date>2008-03-21 14:45:43 -0700</date>
            <delta_ts>2008-03-21 15:37:48 -0700</delta_ts>
            <desc>Fix xml/xhtml handling of createElement and add tests</desc>
            <filename>Fix-xml-xhtml-handling-of-createElement-and-add-tests.patch</filename>
            <type>text/plain</type>
            <size>37015</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">MzI1OTY3NDI5MDc5N2VmMjk5OTQ3ZmZiYmUwYmQyN2FlODQzYzNjMApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMy9jb3JlL2RvY3VtZW50c2V0c3RyaWN0ZXJyb3JjaGVj
a2luZzAyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDMvY29yZS9k
b2N1bWVudHNldHN0cmljdGVycm9yY2hlY2tpbmcwMi1leHBlY3RlZC50eHQKaW5kZXggMmYyMzNl
MS4uOGI1YTc1ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMy9jb3Jl
L2RvY3VtZW50c2V0c3RyaWN0ZXJyb3JjaGVja2luZzAyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9kb20veGh0bWwvbGV2ZWwzL2NvcmUvZG9jdW1lbnRzZXRzdHJpY3RlcnJvcmNoZWNr
aW5nMDItZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsMiBAQAogVGVzdAlodHRwOi8vd3d3LnczLm9y
Zy8yMDAxL0RPTS1UZXN0LVN1aXRlL2xldmVsMy9jb3JlL2RvY3VtZW50c2V0c3RyaWN0ZXJyb3Jj
aGVja2luZzAyCi1TdGF0dXMJZmFpbHVyZQotTWVzc2FnZQlOQU1FU1BBQ0VfRVJSX2RvY3VtZW50
c2V0c3RyaWN0ZXJyb3JjaGVja2luZzAyOiBhc3NlcnRUcnVlIGZhaWxlZAorU3RhdHVzCVN1Y2Nl
c3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L2NyZWF0ZUF0dHJp
YnV0ZU5TLW5hbWVzcGFjZS1lcnItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
RG9jdW1lbnQvY3JlYXRlQXR0cmlidXRlTlMtbmFtZXNwYWNlLWVyci1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2NkZjI1NgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L2NyZWF0ZUF0dHJpYnV0ZU5TLW5hbWVz
cGFjZS1lcnItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNTIgQEAKK2NyZWF0ZUF0dGlyYnV0ZU5T
IHRlc3RzIGFkYXB0ZWQgZnJvbSBjcmVhdGVFbGVtZW50TlMgdGVzdHMgYXR0YWNoZWQgdG8gd2Vi
a2l0IGJ1ZyAxNjgzMworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBkb2N1
bWVudC5jcmVhdGVBdHRyaWJ1dGVOUygpLnRvU3RyaW5nKCkgaXMgIltvYmplY3QgQXR0cl0iCitQ
QVNTIGRvY3VtZW50LmNyZWF0ZUF0dHJpYnV0ZU5TKCJodHRwOi8vd3d3LmV4YW1wbGUuY29tIiku
dG9TdHJpbmcoKSBpcyAiW29iamVjdCBBdHRyXSIKK1BBU1MgY3JlYXRlQXR0cmlidXRlTlModW5k
ZWZpbmVkLCB1bmRlZmluZWQpCitQQVNTIGNyZWF0ZUF0dHJpYnV0ZU5TKG51bGwsIHVuZGVmaW5l
ZCkKK1BBU1MgY3JlYXRlQXR0cmlidXRlTlModW5kZWZpbmVkLCBudWxsKTsgdGhyZXcgSU5WQUxJ
RF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUF0dHJpYnV0ZU5TKG51bGwsIG51bGwpOyB0aHJl
dyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlQXR0cmlidXRlTlMobnVsbCwgIiIp
OyB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlQXR0cmlidXRlTlMoIiIs
IG51bGwpOyB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlQXR0cmlidXRl
TlMoIiIsICIiKTsgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUF0dHJp
YnV0ZU5TKG51bGwsICI8ZGl2PiIpOyB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1Mg
Y3JlYXRlQXR0cmlidXRlTlMobnVsbCwgIjBkaXYiKTsgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJf
RVJSCitQQVNTIGNyZWF0ZUF0dHJpYnV0ZU5TKG51bGwsICJkaSB2Iik7IHRocmV3IElOVkFMSURf
Q0hBUkFDVEVSX0VSUgorUEFTUyBjcmVhdGVBdHRyaWJ1dGVOUyhudWxsLCAiZGk8diIpOyB0aHJl
dyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlQXR0cmlidXRlTlMobnVsbCwgIi1k
aXYiKTsgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUF0dHJpYnV0ZU5T
KG51bGwsICIuZGl2Iik7IHRocmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgorUEFTUyBjcmVhdGVB
dHRyaWJ1dGVOUygiaHR0cDovL2V4YW1wbGUuY29tLyIsICI8ZGl2PiIpOyB0aHJldyBJTlZBTElE
X0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlQXR0cmlidXRlTlMoImh0dHA6Ly9leGFtcGxlLmNv
bS8iLCAiMGRpdiIpOyB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlQXR0
cmlidXRlTlMoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiZGk8diIpOyB0aHJldyBJTlZBTElEX0NI
QVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlQXR0cmlidXRlTlMoImh0dHA6Ly9leGFtcGxlLmNvbS8i
LCAiLWRpdiIpOyB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlQXR0cmli
dXRlTlMoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiLmRpdiIpOyB0aHJldyBJTlZBTElEX0NIQVJB
Q1RFUl9FUlIKK1BBU1MgY3JlYXRlQXR0cmlidXRlTlMobnVsbCwgIjpkaXYiKTsgdGhyZXcgTkFN
RVNQQUNFX0VSUgorUEFTUyBjcmVhdGVBdHRyaWJ1dGVOUyhudWxsLCAiZGl2OiIpOyB0aHJldyBO
QU1FU1BBQ0VfRVJSCitQQVNTIGNyZWF0ZUF0dHJpYnV0ZU5TKCJodHRwOi8vZXhhbXBsZS5jb20v
IiwgIjpkaXYiKTsgdGhyZXcgTkFNRVNQQUNFX0VSUgorUEFTUyBjcmVhdGVBdHRyaWJ1dGVOUygi
aHR0cDovL2V4YW1wbGUuY29tLyIsICJkaXY6Iik7IHRocmV3IE5BTUVTUEFDRV9FUlIKK1BBU1Mg
Y3JlYXRlQXR0cmlidXRlTlMobnVsbCwgImQ6aXYiKTsgdGhyZXcgTkFNRVNQQUNFX0VSUgorRkFJ
TCBjcmVhdGVBdHRyaWJ1dGVOUyhudWxsLCAiYTpiOmMiKTsgdmFsaWQgWE1MIG5hbWUsIGludmFs
aWQgUU5hbWU7IGV4cGVjdGVkIE5BTUVTUEFDRV9FUlIsIHRocmV3IElOVkFMSURfQ0hBUkFDVEVS
X0VSUgorRkFJTCBjcmVhdGVBdHRyaWJ1dGVOUygiaHR0cDovL2V4YW1wbGUuY29tLyIsICJhOmI6
YyIpOyB2YWxpZCBYTUwgbmFtZSwgaW52YWxpZCBRTmFtZTsgZXhwZWN0ZWQgTkFNRVNQQUNFX0VS
UiwgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitGQUlMIGNyZWF0ZUF0dHJpYnV0ZU5TKG51
bGwsICJhOjpjIik7IHZhbGlkIFhNTCBuYW1lLCBpbnZhbGlkIFFOYW1lOyBleHBlY3RlZCBOQU1F
U1BBQ0VfRVJSLCB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK0ZBSUwgY3JlYXRlQXR0cmli
dXRlTlMoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiYTo6YyIpOyB2YWxpZCBYTUwgbmFtZSwgaW52
YWxpZCBRTmFtZTsgZXhwZWN0ZWQgTkFNRVNQQUNFX0VSUiwgdGhyZXcgSU5WQUxJRF9DSEFSQUNU
RVJfRVJSCitQQVNTIGNyZWF0ZUF0dHJpYnV0ZU5TKCJodHRwOi8vZXhhbXBsZS5jb20vIiwgImE6
MCIpOyB2YWxpZCBYTUwgbmFtZSwgbm90IGEgdmFsaWQgUU5hbWU7IHRocmV3IElOVkFMSURfQ0hB
UkFDVEVSX0VSUgorUEFTUyBjcmVhdGVBdHRyaWJ1dGVOUygiaHR0cDovL2V4YW1wbGUuY29tLyIs
ICIwOmEiKTsgMCBhdCBzdGFydCBtYWtlcyBpdCBub3QgYSB2YWxpZCBYTUwgbmFtZTsgdGhyZXcg
SU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUF0dHJpYnV0ZU5TKCJodHRwOi8vZXhh
bXBsZS5jb20vIiwgImE6XyIpCitGQUlMIGNyZWF0ZUF0dHJpYnV0ZU5TKCJodHRwOi8vZXhhbXBs
ZS5jb20vIiwgImE64K+GIik7IG5vbi1BU0NJSSBjaGFyYWN0ZXIgYWZ0ZXIgY29sb24gaXMgQ29t
YmluaW5nQ2hhciwgd2hpY2ggaXMgTkNOYW1lQ2hhciBidXQgbm90IChMZXR0ZXIgfCAiXyIpIHNv
IGludmFsaWQgYXQgc3RhcnQgb2YgTkNOYW1lIChidXQgc3RpbGwgYSB2YWxpZCBYTUwgbmFtZSwg
aGVuY2Ugbm90IElOVkFMSURfQ0hBUkFDVEVSX0VSUik7IGV4cGVjdGVkIE5BTUVTUEFDRV9FUlIs
IHRocmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgorUEFTUyBjcmVhdGVBdHRyaWJ1dGVOUygiaHR0
cDovL2V4YW1wbGUuY29tLyIsICLgr4Y6YSIpOyBub24tQVNDSUkgY2hhcmFjdGVyIGFmdGVyIGNv
bG9uIGlzIENvbWJpbmluZ0NoYXIsIHdoaWNoIGlzIE5DTmFtZUNoYXIgYnV0IG5vdCAoTGV0dGVy
IHwgIl8iKSBzbyBpbnZhbGlkIGF0IHN0YXJ0IG9mIE5DTmFtZSAoR2Vja28gY2hvb3NlcyB0byB0
aHJvdyBOQU1FU1BBQ0VfRVJSIGhlcmUsIGJ1dCBlaXRoZXIgaXMgdmFsaWQgYXMgdGhpcyBpcyBi
b3RoIGFuIGludmFsaWQgWE1MIG5hbWUgYW5kIGFuIGludmFsaWQgUU5hbWUpOyB0aHJldyBJTlZB
TElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlQXR0cmlidXRlTlMoImh0dHA6Ly9leGFtcGxl
LmNvbS8iLCAiYTph4K+GIikKK1BBU1MgY3JlYXRlQXR0cmlidXRlTlMoImh0dHA6Ly9leGFtcGxl
LmNvbS8iLCAiYeCvhjphIikKK1BBU1MgY3JlYXRlQXR0cmlidXRlTlMoImh0dHA6Ly9leGFtcGxl
LmNvbS8iLCAieG1sOnRlc3QiKTsgYmluZGluZyB4bWwgcHJlZml4IHdyb25nOyB0aHJldyBOQU1F
U1BBQ0VfRVJSCitQQVNTIGNyZWF0ZUF0dHJpYnV0ZU5TKCJodHRwOi8vZXhhbXBsZS5jb20vIiwg
InhtbG5zOnRlc3QiKTsgYmluZGluZyB4bWxucyBwcmVmaXggd3Jvbmc7IHRocmV3IE5BTUVTUEFD
RV9FUlIKK1BBU1MgY3JlYXRlQXR0cmlidXRlTlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1s
bnMvIiwgIng6dGVzdCIpOyBiaW5kaW5nIG5hbWVzcGFjZSBuYW1lc3BhY2UgdG8gd3JvbmcgcHJl
Zml4OyB0aHJldyBOQU1FU1BBQ0VfRVJSCitQQVNTIGNyZWF0ZUF0dHJpYnV0ZU5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3htbG5zLyIsICJ4bWxuczp0ZXN0IikKK1BBU1MgY3JlYXRlQXR0cmli
dXRlTlMoImh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIsICJ4bWw6dGVzdCIp
CitQQVNTIGNyZWF0ZUF0dHJpYnV0ZU5TKCJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1l
c3BhY2UiLCAieDp0ZXN0IikKK1BBU1MgY3JlYXRlQXR0cmlidXRlTlMoImh0dHA6Ly9leGFtcGxl
LmNvbS8iLCAieG1sbnMiKTsgdGhyZXcgTkFNRVNQQUNFX0VSUgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL0RvY3VtZW50L2NyZWF0ZUF0dHJpYnV0ZU5TLW5hbWVzcGFjZS1lcnIuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L2NyZWF0ZUF0dHJpYnV0ZU5TLW5hbWVzcGFj
ZS1lcnIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMGNiMmJkCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvY3JlYXRlQXR0
cmlidXRlTlMtbmFtZXNwYWNlLWVyci5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBI
VE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY3JlYXRlQXR0cmli
dXRlTlMtbmFtZXNwYWNlLWVyci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9jcmVhdGVFbGVtZW50TlMt
bmFtZXNwYWNlLWVyci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVu
dC9jcmVhdGVFbGVtZW50TlMtbmFtZXNwYWNlLWVyci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWI5NmE2ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L2NyZWF0ZUVsZW1lbnROUy1uYW1lc3BhY2UtZXJyLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzOCBAQAorY3JlYXRlRWxlbWVudE5TIHRlc3RzIGZyb20g
bW96aWxsYSwgYXR0YWNoZWQgdG8gd2Via2l0IGJ1ZyAxNjgzMworCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoKS50b1N0cmluZygp
IGlzICJbb2JqZWN0IEVsZW1lbnRdIgorUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cuZXhhbXBsZS5jb20iKS50b1N0cmluZygpIGlzICJbb2JqZWN0IEVsZW1lbnRdIgor
SFRNTCB0ZXN0czoKK1BBU1MgY3JlYXRlRWxlbWVudE5TKCwgKQorUEFTUyBjcmVhdGVFbGVtZW50
TlMobnVsbCwgKQorUEFTUyBjcmVhdGVFbGVtZW50TlModW5kZWZpbmVkLCBudWxsKTsgdGhyZXcg
SU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUVsZW1lbnROUyhudWxsLCBudWxsKTsg
dGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUVsZW1lbnROUyhudWxsLCAi
Iik7IHRocmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgorUEFTUyBjcmVhdGVFbGVtZW50TlMoIiIs
IG51bGwpOyB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlRWxlbWVudE5T
KCIiLCAiIik7IHRocmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgorUEFTUyBjcmVhdGVFbGVtZW50
TlMobnVsbCwgIjxkaXY+Iik7IHRocmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgorUEFTUyBjcmVh
dGVFbGVtZW50TlMobnVsbCwgIjBkaXYiKTsgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitQ
QVNTIGNyZWF0ZUVsZW1lbnROUyhudWxsLCAiZGkgdiIpOyB0aHJldyBJTlZBTElEX0NIQVJBQ1RF
Ul9FUlIKK1BBU1MgY3JlYXRlRWxlbWVudE5TKG51bGwsICJkaTx2Iik7IHRocmV3IElOVkFMSURf
Q0hBUkFDVEVSX0VSUgorUEFTUyBjcmVhdGVFbGVtZW50TlMobnVsbCwgIi1kaXYiKTsgdGhyZXcg
SU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUVsZW1lbnROUyhudWxsLCAiLmRpdiIp
OyB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vZXhhbXBsZS5jb20vIiwgIjxkaXY+Iik7IHRocmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgor
UEFTUyBjcmVhdGVFbGVtZW50TlMoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiMGRpdiIpOyB0aHJl
dyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vZXhh
bXBsZS5jb20vIiwgImRpPHYiKTsgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL2V4YW1wbGUuY29tLyIsICItZGl2Iik7IHRocmV3IElOVkFM
SURfQ0hBUkFDVEVSX0VSUgorUEFTUyBjcmVhdGVFbGVtZW50TlMoImh0dHA6Ly9leGFtcGxlLmNv
bS8iLCAiLmRpdiIpOyB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlRWxl
bWVudE5TKG51bGwsICI6ZGl2Iik7IHRocmV3IE5BTUVTUEFDRV9FUlIKK1BBU1MgY3JlYXRlRWxl
bWVudE5TKG51bGwsICJkaXY6Iik7IHRocmV3IE5BTUVTUEFDRV9FUlIKK1BBU1MgY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vZXhhbXBsZS5jb20vIiwgIjpkaXYiKTsgdGhyZXcgTkFNRVNQQUNFX0VS
UgorUEFTUyBjcmVhdGVFbGVtZW50TlMoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiZGl2OiIpOyB0
aHJldyBOQU1FU1BBQ0VfRVJSCitQQVNTIGNyZWF0ZUVsZW1lbnROUyhudWxsLCAiZDppdiIpOyB0
aHJldyBOQU1FU1BBQ0VfRVJSCitGQUlMIGNyZWF0ZUVsZW1lbnROUyhudWxsLCAiYTpiOmMiKTsg
dmFsaWQgWE1MIG5hbWUsIGludmFsaWQgUU5hbWU7IGV4cGVjdGVkIE5BTUVTUEFDRV9FUlIsIHRo
cmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgorRkFJTCBjcmVhdGVFbGVtZW50TlMoImh0dHA6Ly9l
eGFtcGxlLmNvbS8iLCAiYTpiOmMiKTsgdmFsaWQgWE1MIG5hbWUsIGludmFsaWQgUU5hbWU7IGV4
cGVjdGVkIE5BTUVTUEFDRV9FUlIsIHRocmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgorRkFJTCBj
cmVhdGVFbGVtZW50TlMobnVsbCwgImE6OmMiKTsgdmFsaWQgWE1MIG5hbWUsIGludmFsaWQgUU5h
bWU7IGV4cGVjdGVkIE5BTUVTUEFDRV9FUlIsIHRocmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgor
RkFJTCBjcmVhdGVFbGVtZW50TlMoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiYTo6YyIpOyB2YWxp
ZCBYTUwgbmFtZSwgaW52YWxpZCBRTmFtZTsgZXhwZWN0ZWQgTkFNRVNQQUNFX0VSUiwgdGhyZXcg
SU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUVsZW1lbnROUygiaHR0cDovL2V4YW1w
bGUuY29tLyIsICJhOjAiKTsgdmFsaWQgWE1MIG5hbWUsIG5vdCBhIHZhbGlkIFFOYW1lOyB0aHJl
dyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vZXhh
bXBsZS5jb20vIiwgIjA6YSIpOyAwIGF0IHN0YXJ0IG1ha2VzIGl0IG5vdCBhIHZhbGlkIFhNTCBu
YW1lOyB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vZXhhbXBsZS5jb20vIiwgImE6XyIpCitGQUlMIGNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L2V4YW1wbGUuY29tLyIsICJhOuCvhiIpOyBub24tQVNDSUkgY2hhcmFjdGVyIGFmdGVyIGNvbG9u
IGlzIENvbWJpbmluZ0NoYXIsIHdoaWNoIGlzIE5DTmFtZUNoYXIgYnV0IG5vdCAoTGV0dGVyIHwg
Il8iKSBzbyBpbnZhbGlkIGF0IHN0YXJ0IG9mIE5DTmFtZSAoYnV0IHN0aWxsIGEgdmFsaWQgWE1M
IG5hbWUsIGhlbmNlIG5vdCBJTlZBTElEX0NIQVJBQ1RFUl9FUlIpOyBleHBlY3RlZCBOQU1FU1BB
Q0VfRVJSLCB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vZXhhbXBsZS5jb20vIiwgIuCvhjphIik7IG5vbi1BU0NJSSBjaGFyYWN0ZXIgYWZ0
ZXIgY29sb24gaXMgQ29tYmluaW5nQ2hhciwgd2hpY2ggaXMgTkNOYW1lQ2hhciBidXQgbm90IChM
ZXR0ZXIgfCAiXyIpIHNvIGludmFsaWQgYXQgc3RhcnQgb2YgTkNOYW1lIChHZWNrbyBjaG9vc2Vz
IHRvIHRocm93IE5BTUVTUEFDRV9FUlIgaGVyZSwgYnV0IGVpdGhlciBpcyB2YWxpZCBhcyB0aGlz
IGlzIGJvdGggYW4gaW52YWxpZCBYTUwgbmFtZSBhbmQgYW4gaW52YWxpZCBRTmFtZSk7IHRocmV3
IElOVkFMSURfQ0hBUkFDVEVSX0VSUgorUEFTUyBjcmVhdGVFbGVtZW50TlMoImh0dHA6Ly9leGFt
cGxlLmNvbS8iLCAiYTph4K+GIikKK1BBU1MgY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vZXhhbXBs
ZS5jb20vIiwgImHgr4Y6YSIpCitQQVNTIGNyZWF0ZUVsZW1lbnROUygiaHR0cDovL2V4YW1wbGUu
Y29tLyIsICJ4bWw6dGVzdCIpOyBiaW5kaW5nIHhtbCBwcmVmaXggd3Jvbmc7IHRocmV3IE5BTUVT
UEFDRV9FUlIKK1BBU1MgY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vZXhhbXBsZS5jb20vIiwgInht
bG5zOnRlc3QiKTsgYmluZGluZyB4bWxucyBwcmVmaXggd3Jvbmc7IHRocmV3IE5BTUVTUEFDRV9F
UlIKK1BBU1MgY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyIs
ICJ4OnRlc3QiKTsgYmluZGluZyBuYW1lc3BhY2UgbmFtZXNwYWNlIHRvIHdyb25nIHByZWZpeDsg
dGhyZXcgTkFNRVNQQUNFX0VSUgorUEFTUyBjcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAveG1sbnMvIiwgInhtbG5zOnRlc3QiKQorUEFTUyBjcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIsICJ4bWw6dGVzdCIpCitQQVNTIGNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIiwgIng6
dGVzdCIpCitQQVNTIGNyZWF0ZUVsZW1lbnQoKQorUEFTUyBjcmVhdGVFbGVtZW50KG51bGwpCitQ
QVNTIGNyZWF0ZUVsZW1lbnQoIiIsIHVuZGVmaW5lZCk7IHRocmV3IElOVkFMSURfQ0hBUkFDVEVS
X0VSUgorUEFTUyBjcmVhdGVFbGVtZW50KCI8ZGl2PiIsIHVuZGVmaW5lZCk7IHRocmV3IElOVkFM
SURfQ0hBUkFDVEVSX0VSUgorUEFTUyBjcmVhdGVFbGVtZW50KCIwZGl2IiwgdW5kZWZpbmVkKTsg
dGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUVsZW1lbnQoImRpIHYiLCB1
bmRlZmluZWQpOyB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlRWxlbWVu
dCgiZGk8diIsIHVuZGVmaW5lZCk7IHRocmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgorUEFTUyBj
cmVhdGVFbGVtZW50KCItZGl2IiwgdW5kZWZpbmVkKTsgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJf
RVJSCitQQVNTIGNyZWF0ZUVsZW1lbnQoIi5kaXYiLCB1bmRlZmluZWQpOyB0aHJldyBJTlZBTElE
X0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlRWxlbWVudCgiOiIpOyB2YWxpZCBYTUwgbmFtZSwg
aW52YWxpZCBRTmFtZQorUEFTUyBjcmVhdGVFbGVtZW50KCI6ZGl2Iik7IHZhbGlkIFhNTCBuYW1l
LCBpbnZhbGlkIFFOYW1lCitQQVNTIGNyZWF0ZUVsZW1lbnQoImRpdjoiKTsgdmFsaWQgWE1MIG5h
bWUsIGludmFsaWQgUU5hbWUKK1BBU1MgY3JlYXRlRWxlbWVudCgiZDppdiIpCitQQVNTIGNyZWF0
ZUVsZW1lbnQoImE6YjpjIik7IHZhbGlkIFhNTCBuYW1lLCBpbnZhbGlkIFFOYW1lCitQQVNTIGNy
ZWF0ZUVsZW1lbnQoImE6OmMiKTsgdmFsaWQgWE1MIG5hbWUsIGludmFsaWQgUU5hbWUKK1BBU1Mg
Y3JlYXRlRWxlbWVudCgiYTo6YzoiKTsgdmFsaWQgWE1MIG5hbWUsIGludmFsaWQgUU5hbWUKK1BB
U1MgY3JlYXRlRWxlbWVudCgiYTowIik7IHZhbGlkIFhNTCBuYW1lLCBub3QgYSB2YWxpZCBRTmFt
ZQorUEFTUyBjcmVhdGVFbGVtZW50KCIwOmEiLCB1bmRlZmluZWQpOyAwIGF0IHN0YXJ0IG1ha2Vz
IGl0IG5vdCBhIHZhbGlkIFhNTCBuYW1lOyB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BB
U1MgY3JlYXRlRWxlbWVudCgiYTpfIikKK1BBU1MgY3JlYXRlRWxlbWVudCgiYTrgr4YiKTsgbm9u
LUFTQ0lJIGNoYXJhY3RlciBhZnRlciBjb2xvbiBpcyBDb21iaW5pbmdDaGFyLCB3aGljaCBpcyB2
YWxpZCBpbiBwcmUtbmFtZXNwYWNlIFhNTAorUEFTUyBjcmVhdGVFbGVtZW50KCLgr4Y6YSIsIHVu
ZGVmaW5lZCk7IG5vdCBhIHZhbGlkIHN0YXJ0IGNoYXJhY3RlcjsgdGhyZXcgSU5WQUxJRF9DSEFS
QUNURVJfRVJSCitQQVNTIGNyZWF0ZUVsZW1lbnQoImE6YeCvhiIpCitQQVNTIGNyZWF0ZUVsZW1l
bnQoImHgr4Y6YSIpCitQQVNTIGNyZWF0ZUVsZW1lbnQoInhtbDp0ZXN0IikKK1BBU1MgY3JlYXRl
RWxlbWVudCgieG1sbnM6dGVzdCIpCitQQVNTIGNyZWF0ZUVsZW1lbnQoIng6dGVzdCIpCitQQVNT
IGNyZWF0ZUVsZW1lbnQoInhtbG5zOnRlc3QiKQorUEFTUyBjcmVhdGVFbGVtZW50KCJTT0FQLUVO
VjpCb2R5IikKK1hIVE1MIGNyZWF0ZUVsZW1lbnQgdGVzdHM6CitQQVNTIGNyZWF0ZUVsZW1lbnQo
KQorUEFTUyBjcmVhdGVFbGVtZW50KG51bGwpCitQQVNTIGNyZWF0ZUVsZW1lbnQoIiIsIHVuZGVm
aW5lZCk7IHRocmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgorUEFTUyBjcmVhdGVFbGVtZW50KCI8
ZGl2PiIsIHVuZGVmaW5lZCk7IHRocmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgorUEFTUyBjcmVh
dGVFbGVtZW50KCIwZGl2IiwgdW5kZWZpbmVkKTsgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJS
CitQQVNTIGNyZWF0ZUVsZW1lbnQoImRpIHYiLCB1bmRlZmluZWQpOyB0aHJldyBJTlZBTElEX0NI
QVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlRWxlbWVudCgiZGk8diIsIHVuZGVmaW5lZCk7IHRocmV3
IElOVkFMSURfQ0hBUkFDVEVSX0VSUgorUEFTUyBjcmVhdGVFbGVtZW50KCItZGl2IiwgdW5kZWZp
bmVkKTsgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUVsZW1lbnQoIi5k
aXYiLCB1bmRlZmluZWQpOyB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRl
RWxlbWVudCgiOiIpOyB2YWxpZCBYTUwgbmFtZSwgaW52YWxpZCBRTmFtZQorUEFTUyBjcmVhdGVF
bGVtZW50KCI6ZGl2Iik7IHZhbGlkIFhNTCBuYW1lLCBpbnZhbGlkIFFOYW1lCitQQVNTIGNyZWF0
ZUVsZW1lbnQoImRpdjoiKTsgdmFsaWQgWE1MIG5hbWUsIGludmFsaWQgUU5hbWUKK1BBU1MgY3Jl
YXRlRWxlbWVudCgiZDppdiIpCitQQVNTIGNyZWF0ZUVsZW1lbnQoImE6YjpjIik7IHZhbGlkIFhN
TCBuYW1lLCBpbnZhbGlkIFFOYW1lCitQQVNTIGNyZWF0ZUVsZW1lbnQoImE6OmMiKTsgdmFsaWQg
WE1MIG5hbWUsIGludmFsaWQgUU5hbWUKK1BBU1MgY3JlYXRlRWxlbWVudCgiYTo6YzoiKTsgdmFs
aWQgWE1MIG5hbWUsIGludmFsaWQgUU5hbWUKK1BBU1MgY3JlYXRlRWxlbWVudCgiYTowIik7IHZh
bGlkIFhNTCBuYW1lLCBub3QgYSB2YWxpZCBRTmFtZQorUEFTUyBjcmVhdGVFbGVtZW50KCIwOmEi
LCB1bmRlZmluZWQpOyAwIGF0IHN0YXJ0IG1ha2VzIGl0IG5vdCBhIHZhbGlkIFhNTCBuYW1lOyB0
aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlRWxlbWVudCgiYTpfIikKK1BB
U1MgY3JlYXRlRWxlbWVudCgiYTrgr4YiKTsgbm9uLUFTQ0lJIGNoYXJhY3RlciBhZnRlciBjb2xv
biBpcyBDb21iaW5pbmdDaGFyLCB3aGljaCBpcyB2YWxpZCBpbiBwcmUtbmFtZXNwYWNlIFhNTAor
UEFTUyBjcmVhdGVFbGVtZW50KCLgr4Y6YSIsIHVuZGVmaW5lZCk7IG5vdCBhIHZhbGlkIHN0YXJ0
IGNoYXJhY3RlcjsgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUVsZW1l
bnQoImE6YeCvhiIpCitQQVNTIGNyZWF0ZUVsZW1lbnQoImHgr4Y6YSIpCitQQVNTIGNyZWF0ZUVs
ZW1lbnQoInhtbDp0ZXN0IikKK1BBU1MgY3JlYXRlRWxlbWVudCgieG1sbnM6dGVzdCIpCitQQVNT
IGNyZWF0ZUVsZW1lbnQoIng6dGVzdCIpCitQQVNTIGNyZWF0ZUVsZW1lbnQoInhtbG5zOnRlc3Qi
KQorUEFTUyBjcmVhdGVFbGVtZW50KCJTT0FQLUVOVjpCb2R5IikKK1hNTCBjcmVhdGVFbGVtZW50
IHRlc3RzOgorUEFTUyBjcmVhdGVFbGVtZW50KCkKK1BBU1MgY3JlYXRlRWxlbWVudChudWxsKQor
UEFTUyBjcmVhdGVFbGVtZW50KCIiLCB1bmRlZmluZWQpOyB0aHJldyBJTlZBTElEX0NIQVJBQ1RF
Ul9FUlIKK1BBU1MgY3JlYXRlRWxlbWVudCgiPGRpdj4iLCB1bmRlZmluZWQpOyB0aHJldyBJTlZB
TElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlRWxlbWVudCgiMGRpdiIsIHVuZGVmaW5lZCk7
IHRocmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgorUEFTUyBjcmVhdGVFbGVtZW50KCJkaSB2Iiwg
dW5kZWZpbmVkKTsgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUVsZW1l
bnQoImRpPHYiLCB1bmRlZmluZWQpOyB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1Mg
Y3JlYXRlRWxlbWVudCgiLWRpdiIsIHVuZGVmaW5lZCk7IHRocmV3IElOVkFMSURfQ0hBUkFDVEVS
X0VSUgorUEFTUyBjcmVhdGVFbGVtZW50KCIuZGl2IiwgdW5kZWZpbmVkKTsgdGhyZXcgSU5WQUxJ
RF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUVsZW1lbnQoIjoiKTsgdmFsaWQgWE1MIG5hbWUs
IGludmFsaWQgUU5hbWUKK1BBU1MgY3JlYXRlRWxlbWVudCgiOmRpdiIpOyB2YWxpZCBYTUwgbmFt
ZSwgaW52YWxpZCBRTmFtZQorUEFTUyBjcmVhdGVFbGVtZW50KCJkaXY6Iik7IHZhbGlkIFhNTCBu
YW1lLCBpbnZhbGlkIFFOYW1lCitQQVNTIGNyZWF0ZUVsZW1lbnQoImQ6aXYiKQorUEFTUyBjcmVh
dGVFbGVtZW50KCJhOmI6YyIpOyB2YWxpZCBYTUwgbmFtZSwgaW52YWxpZCBRTmFtZQorUEFTUyBj
cmVhdGVFbGVtZW50KCJhOjpjIik7IHZhbGlkIFhNTCBuYW1lLCBpbnZhbGlkIFFOYW1lCitQQVNT
IGNyZWF0ZUVsZW1lbnQoImE6OmM6Iik7IHZhbGlkIFhNTCBuYW1lLCBpbnZhbGlkIFFOYW1lCitQ
QVNTIGNyZWF0ZUVsZW1lbnQoImE6MCIpOyB2YWxpZCBYTUwgbmFtZSwgbm90IGEgdmFsaWQgUU5h
bWUKK1BBU1MgY3JlYXRlRWxlbWVudCgiMDphIiwgdW5kZWZpbmVkKTsgMCBhdCBzdGFydCBtYWtl
cyBpdCBub3QgYSB2YWxpZCBYTUwgbmFtZTsgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitQ
QVNTIGNyZWF0ZUVsZW1lbnQoImE6XyIpCitQQVNTIGNyZWF0ZUVsZW1lbnQoImE64K+GIik7IG5v
bi1BU0NJSSBjaGFyYWN0ZXIgYWZ0ZXIgY29sb24gaXMgQ29tYmluaW5nQ2hhciwgd2hpY2ggaXMg
dmFsaWQgaW4gcHJlLW5hbWVzcGFjZSBYTUwKK1BBU1MgY3JlYXRlRWxlbWVudCgi4K+GOmEiLCB1
bmRlZmluZWQpOyBub3QgYSB2YWxpZCBzdGFydCBjaGFyYWN0ZXI7IHRocmV3IElOVkFMSURfQ0hB
UkFDVEVSX0VSUgorUEFTUyBjcmVhdGVFbGVtZW50KCJhOmHgr4YiKQorUEFTUyBjcmVhdGVFbGVt
ZW50KCJh4K+GOmEiKQorUEFTUyBjcmVhdGVFbGVtZW50KCJ4bWw6dGVzdCIpCitQQVNTIGNyZWF0
ZUVsZW1lbnQoInhtbG5zOnRlc3QiKQorUEFTUyBjcmVhdGVFbGVtZW50KCJ4OnRlc3QiKQorUEFT
UyBjcmVhdGVFbGVtZW50KCJ4bWxuczp0ZXN0IikKK1BBU1MgY3JlYXRlRWxlbWVudCgiU09BUC1F
TlY6Qm9keSIpCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvY3JlYXRlRWxl
bWVudE5TLW5hbWVzcGFjZS1lcnIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50
L2NyZWF0ZUVsZW1lbnROUy1uYW1lc3BhY2UtZXJyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uZTNlOTQ0ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL0RvY3VtZW50L2NyZWF0ZUVsZW1lbnROUy1uYW1lc3BhY2UtZXJyLmh0bWwKQEAgLTAs
MCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4i
PgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0i
ZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9jcmVhdGVFbGVtZW50TlMtbmFtZXNwYWNlLWVyci5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1
bWVudC9yZXNvdXJjZXMvVEVNUExBVEUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3Vt
ZW50L3Jlc291cmNlcy9URU1QTEFURS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjE5NTFjNDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9E
b2N1bWVudC9yZXNvdXJjZXMvVEVNUExBVEUuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZ
UEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0iWU9VUl9KU19GSUxFX0hFUkUi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vRG9jdW1lbnQvcmVzb3VyY2VzL2NyZWF0ZUF0dHJpYnV0ZU5TLW5hbWVzcGFjZS1l
cnIuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9yZXNvdXJjZXMvY3JlYXRlQXR0
cmlidXRlTlMtbmFtZXNwYWNlLWVyci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5mNmVjYTI3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9j
dW1lbnQvcmVzb3VyY2VzL2NyZWF0ZUF0dHJpYnV0ZU5TLW5hbWVzcGFjZS1lcnIuanMKQEAgLTAs
MCArMSwxMzUgQEAKK2Rlc2NyaXB0aW9uKCJjcmVhdGVBdHRpcmJ1dGVOUyB0ZXN0cyBhZGFwdGVk
IGZyb20gY3JlYXRlRWxlbWVudE5TIHRlc3RzIGF0dGFjaGVkIHRvIHdlYmtpdCBidWcgMTY4MzMi
KTsKKworZnVuY3Rpb24gYXNzZXJ0KGMsIG0pCit7CisgICAgaWYgKCFjKQorICAgICAgICB0ZXN0
RmFpbGVkKG0pOworICAgIGVsc2UKKyAgICAgICAgdGVzdFBhc3NlZChtKTsKK30KKworZnVuY3Rp
b24gc3RyaW5nRm9yRXhjZXB0aW9uQ29kZShjKQoreworICAgIHZhciBleGNlcHRpb25OYW1lOwor
ICAgIHN3aXRjaChjKSB7CisgICAgICAgIGNhc2UgRE9NRXhjZXB0aW9uLklOVkFMSURfQ0hBUkFD
VEVSX0VSUjoKKyAgICAgICAgICAgIGV4Y2VwdGlvbk5hbWUgPSAiSU5WQUxJRF9DSEFSQUNURVJf
RVJSIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERPTUV4Y2VwdGlvbi5OQU1F
U1BBQ0VfRVJSOgorICAgICAgICAgICAgZXhjZXB0aW9uTmFtZSA9ICJOQU1FU1BBQ0VfRVJSIjsK
KyAgICB9CisgICAgaWYgKGV4Y2VwdGlvbk5hbWUpCisgICAgICAgIHJldHVybiBleGNlcHRpb25O
YW1lOyAvLyArICIoIiArIGMgKyAiKSI7CisgICAgcmV0dXJuIGM7Cit9CisKK2Z1bmN0aW9uIGFz
c2VydEVxdWFscyhhY3R1YWwsIGV4cGVjdCwgbSkKK3sKKyAgICBpZiAoYWN0dWFsICE9PSBleHBl
Y3QpIHsKKyAgICAgICAgbSArPSAiOyBleHBlY3RlZCAiICsgc3RyaW5nRm9yRXhjZXB0aW9uQ29k
ZShleHBlY3QpICsgIiwgdGhyZXcgIiArIHN0cmluZ0ZvckV4Y2VwdGlvbkNvZGUoYWN0dWFsKTsK
KyAgICAgICAgdGVzdEZhaWxlZChtKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtICs9ICI7IHRo
cmV3ICIgKyBzdHJpbmdGb3JFeGNlcHRpb25Db2RlKGFjdHVhbCk7OworICAgICAgICB0ZXN0UGFz
c2VkKG0pOworICAgIH0KK30KKwordmFyIGFsbE5TVGVzdHMgPSBbCisgICB7IGFyZ3M6IFt1bmRl
ZmluZWQsIHVuZGVmaW5lZF0gfSwKKyAgIHsgYXJnczogW251bGwsIHVuZGVmaW5lZF0gfSwKKyAg
IHsgYXJnczogW3VuZGVmaW5lZCwgbnVsbF0sIGNvZGU6IDUgfSwKKyAgIHsgYXJnczogW251bGws
IG51bGxdLCBjb2RlOiA1IH0sCisgICB7IGFyZ3M6IFtudWxsLCAiIl0sIGNvZGU6IDUgfSwKKyAg
IHsgYXJnczogWyIiLCBudWxsXSwgY29kZTogNSB9LAorICAgeyBhcmdzOiBbIiIsICIiXSwgY29k
ZTogNSB9LAorICAgeyBhcmdzOiBbbnVsbCwgIjxkaXY+Il0sIGNvZGU6IDUgfSwKKyAgIHsgYXJn
czogW251bGwsICIwZGl2Il0sIGNvZGU6IDUgfSwKKyAgIHsgYXJnczogW251bGwsICJkaSB2Il0s
IGNvZGU6IDUgfSwKKyAgIHsgYXJnczogW251bGwsICJkaTx2Il0sIGNvZGU6IDUgfSwKKyAgIHsg
YXJnczogW251bGwsICItZGl2Il0sIGNvZGU6IDUgfSwKKyAgIHsgYXJnczogW251bGwsICIuZGl2
Il0sIGNvZGU6IDUgfSwKKyAgIHsgYXJnczogWyJodHRwOi8vZXhhbXBsZS5jb20vIiwgIjxkaXY+
Il0sIGNvZGU6IDUgfSwKKyAgIHsgYXJnczogWyJodHRwOi8vZXhhbXBsZS5jb20vIiwgIjBkaXYi
XSwgY29kZTogNSB9LAorICAgeyBhcmdzOiBbImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiZGk8diJd
LCBjb2RlOiA1IH0sCisgICB7IGFyZ3M6IFsiaHR0cDovL2V4YW1wbGUuY29tLyIsICItZGl2Il0s
IGNvZGU6IDUgfSwKKyAgIHsgYXJnczogWyJodHRwOi8vZXhhbXBsZS5jb20vIiwgIi5kaXYiXSwg
Y29kZTogNSB9LAorICAgeyBhcmdzOiBbbnVsbCwgIjpkaXYiXSwgY29kZTogMTQgfSwKKyAgIHsg
YXJnczogW251bGwsICJkaXY6Il0sIGNvZGU6IDE0IH0sCisgICB7IGFyZ3M6IFsiaHR0cDovL2V4
YW1wbGUuY29tLyIsICI6ZGl2Il0sIGNvZGU6IDE0IH0sCisgICB7IGFyZ3M6IFsiaHR0cDovL2V4
YW1wbGUuY29tLyIsICJkaXY6Il0sIGNvZGU6IDE0IH0sCisgICB7IGFyZ3M6IFtudWxsLCAiZDpp
diJdLCBjb2RlOiAxNCB9LAorICAgeyBhcmdzOiBbbnVsbCwgImE6YjpjIl0sIGNvZGU6IDE0LCBt
ZXNzYWdlOiAidmFsaWQgWE1MIG5hbWUsIGludmFsaWQgUU5hbWUiIH0sCisgICB7IGFyZ3M6IFsi
aHR0cDovL2V4YW1wbGUuY29tLyIsICJhOmI6YyJdLCBjb2RlOiAxNCwgbWVzc2FnZTogInZhbGlk
IFhNTCBuYW1lLCBpbnZhbGlkIFFOYW1lIiB9LAorICAgeyBhcmdzOiBbbnVsbCwgImE6OmMiXSwg
Y29kZTogMTQsIG1lc3NhZ2U6ICJ2YWxpZCBYTUwgbmFtZSwgaW52YWxpZCBRTmFtZSIgfSwKKyAg
IHsgYXJnczogWyJodHRwOi8vZXhhbXBsZS5jb20vIiwgImE6OmMiXSwgY29kZTogMTQsIG1lc3Nh
Z2U6ICJ2YWxpZCBYTUwgbmFtZSwgaW52YWxpZCBRTmFtZSIgfSwKKyAgIHsgYXJnczogWyJodHRw
Oi8vZXhhbXBsZS5jb20vIiwgImE6MCJdLCBjb2RlOiA1LCBtZXNzYWdlOiAidmFsaWQgWE1MIG5h
bWUsIG5vdCBhIHZhbGlkIFFOYW1lIiB9LAorICAgeyBhcmdzOiBbImh0dHA6Ly9leGFtcGxlLmNv
bS8iLCAiMDphIl0sIGNvZGU6IDUsIG1lc3NhZ2U6ICIwIGF0IHN0YXJ0IG1ha2VzIGl0IG5vdCBh
IHZhbGlkIFhNTCBuYW1lIiB9LAorICAgeyBhcmdzOiBbImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAi
YTpfIl0gfSwKKyAgIHsgYXJnczogWyJodHRwOi8vZXhhbXBsZS5jb20vIiwgImE6XHUwQkM2Il0s
IGNvZGU6IDE0LAorICAgICBtZXNzYWdlOiAibm9uLUFTQ0lJIGNoYXJhY3RlciBhZnRlciBjb2xv
biBpcyBDb21iaW5pbmdDaGFyLCB3aGljaCBpcyAiICsKKyAgICAgICAgICAgICAgIk5DTmFtZUNo
YXIgYnV0IG5vdCAoTGV0dGVyIHwgXCJfXCIpIHNvIGludmFsaWQgYXQgc3RhcnQgb2YgIiArCisg
ICAgICAgICAgICAgICJOQ05hbWUgKGJ1dCBzdGlsbCBhIHZhbGlkIFhNTCBuYW1lLCBoZW5jZSBu
b3QgSU5WQUxJRF9DSEFSQUNURVJfRVJSKSIgfSwKKyAgIHsgYXJnczogWyJodHRwOi8vZXhhbXBs
ZS5jb20vIiwgIlx1MEJDNjphIl0sIGNvZGU6IDUsCisgICAgIG1lc3NhZ2U6ICJub24tQVNDSUkg
Y2hhcmFjdGVyIGFmdGVyIGNvbG9uIGlzIENvbWJpbmluZ0NoYXIsIHdoaWNoIGlzICIgKworICAg
ICAgICAgICAgICAiTkNOYW1lQ2hhciBidXQgbm90IChMZXR0ZXIgfCBcIl9cIikgc28gaW52YWxp
ZCBhdCBzdGFydCBvZiAiICsKKyAgICAgICAgICAgICAgIk5DTmFtZSAoR2Vja28gY2hvb3NlcyB0
byB0aHJvdyBOQU1FU1BBQ0VfRVJSIGhlcmUsIGJ1dCBlaXRoZXIgaXMgdmFsaWQgIiArCisgICAg
ICAgICAgICAgICJhcyB0aGlzIGlzIGJvdGggYW4gaW52YWxpZCBYTUwgbmFtZSBhbmQgYW4gaW52
YWxpZCBRTmFtZSkiIH0sCisgICB7IGFyZ3M6IFsiaHR0cDovL2V4YW1wbGUuY29tLyIsICJhOmFc
dTBCQzYiXSB9LAorICAgeyBhcmdzOiBbImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiYVx1MEJDNjph
Il0gfSwKKyAgIHsgYXJnczogWyJodHRwOi8vZXhhbXBsZS5jb20vIiwgInhtbDp0ZXN0Il0sIGNv
ZGU6IDE0LCBtZXNzYWdlOiAiYmluZGluZyB4bWwgcHJlZml4IHdyb25nIiB9LAorICAgeyBhcmdz
OiBbImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAieG1sbnM6dGVzdCJdLCBjb2RlOiAxNCwgbWVzc2Fn
ZTogImJpbmRpbmcgeG1sbnMgcHJlZml4IHdyb25nIiB9LAorICAgeyBhcmdzOiBbImh0dHA6Ly93
d3cudzMub3JnLzIwMDAveG1sbnMvIiwgIng6dGVzdCJdLCBjb2RlOiAxNCwgbWVzc2FnZTogImJp
bmRpbmcgbmFtZXNwYWNlIG5hbWVzcGFjZSB0byB3cm9uZyBwcmVmaXgiIH0sCisgICB7IGFyZ3M6
IFsiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8iLCAieG1sbnM6dGVzdCJdIH0sCisgICB7
IGFyZ3M6IFsiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIiwgInhtbDp0ZXN0
Il0gfSwKKyAgIHsgYXJnczogWyJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2Ui
LCAieDp0ZXN0Il0gfSwKKyAgIHsgYXJnczogWyJodHRwOi8vZXhhbXBsZS5jb20vIiwgInhtbG5z
Il0sIGNvZGU6IDE0IH0sIC8vIGZyb20gdGhlIGNyZWF0ZUF0dHJpYnV0ZU5TIHNlY3Rpb24KK107
CisKK2Z1bmN0aW9uIHNvdXJjZWlmeSh2KQoreworICAgIHN3aXRjaCAodHlwZW9mIHYpIHsKKyAg
ICBjYXNlICJ1bmRlZmluZWQiOgorICAgICAgICByZXR1cm4gdjsKKworICAgIGNhc2UgInN0cmlu
ZyI6CisgICAgICAgIHJldHVybiAnIicgKyB2LnJlcGxhY2UoJyInLCAnXFwiJykgKyAnIic7CisK
KyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gU3RyaW5nKHYpOworICAgIH0KK30KKworZnVu
Y3Rpb24gcnVuTlNUZXN0cygpCit7CisgICAgdmFyIGNyZWF0ZUZ1bmN0aW9uID0gZG9jdW1lbnQu
Y3JlYXRlQXR0cmlidXRlTlM7CisgICAgdmFyIGNyZWF0ZUZ1bmN0aW9uTmFtZSA9ICJjcmVhdGVB
dHRyaWJ1dGVOUyI7CisgICAgdmFyIGRvYyA9IGRvY3VtZW50OworCisgICAgZm9yICh2YXIgaSA9
IDAsIHN6ID0gYWxsTlNUZXN0cy5sZW5ndGg7IGkgPCBzejsgaSsrKSB7CisgICAgICAgIHZhciB0
ZXN0ID0gYWxsTlNUZXN0c1tpXTsKKworICAgICAgICB2YXIgY29kZSA9IC0xOworICAgICAgICB2
YXIgYXJnU3RyID0gc291cmNlaWZ5KHRlc3QuYXJnc1swXSkgKyAiLCAiICsgc291cmNlaWZ5KHRl
c3QuYXJnc1sxXSk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBjcmVhdGVGdW5jdGlvbi5h
cHBseShkb2MsIHRlc3QuYXJncyk7CisgICAgICAgICAgICB2YXIgbXNnID0gY3JlYXRlRnVuY3Rp
b25OYW1lICsgIigiICsgYXJnU3RyICsgIikiOworICAgICAgICAgICAgaWYgKCJtZXNzYWdlIiBp
biB0ZXN0KQorICAgICAgICAgICAgICAgIG1zZyArPSAiOyAiICsgdGVzdC5tZXNzYWdlOworICAg
ICAgICAgICAgYXNzZXJ0KCEoY29kZSBpbiB0ZXN0KSwgbXNnKTsKKyAgICAgICAgfSBjYXRjaCAo
ZSkgeworICAgICAgICAgICAgdmFyIGFyZ1N0ciA9IHNvdXJjZWlmeSh0ZXN0LmFyZ3NbMF0pICsg
IiwgIiArIHNvdXJjZWlmeSh0ZXN0LmFyZ3NbMV0pOworICAgICAgICAgICAgbXNnID0gY3JlYXRl
RnVuY3Rpb25OYW1lICsgIigiICsgYXJnU3RyICsgIikiOworICAgICAgICAgICAgaWYgKCJtZXNz
YWdlIiBpbiB0ZXN0KQorICAgICAgICAgICAgICAgIG1zZyArPSAiOyAiICsgdGVzdC5tZXNzYWdl
OworICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKGUuY29kZSwgdGVzdC5jb2RlIHx8ICJleHBlY3Rl
ZCBubyBleGNlcHRpb24iLCBtc2cpOworICAgICAgICB9CisgICAgfQorfQorCisvLyBNb3ogdGhy
b3dzIGEgIk5vdCBlbm91Z2ggYXJndW1lbnRzIiBleGNlcHRpb24gaW4gdGhlc2UsIHdlIGRvbid0
Ogorc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkb2N1bWVudC5jcmVhdGVBdHRyaWJ1dGVOUygpLnRv
U3RyaW5nKCkiLCAiW29iamVjdCBBdHRyXSIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkb2N1
bWVudC5jcmVhdGVBdHRyaWJ1dGVOUyhcImh0dHA6Ly93d3cuZXhhbXBsZS5jb21cIikudG9TdHJp
bmcoKSIsICJbb2JqZWN0IEF0dHJdIik7CisKK3J1bk5TVGVzdHMoKTsKKwordmFyIHN1Y2Nlc3Nm
dWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1
bWVudC9yZXNvdXJjZXMvY3JlYXRlRWxlbWVudE5TLW5hbWVzcGFjZS1lcnIuanMgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9yZXNvdXJjZXMvY3JlYXRlRWxlbWVudE5TLW5hbWVzcGFj
ZS1lcnIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjZlOTQ5ZgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L3Jlc291cmNlcy9j
cmVhdGVFbGVtZW50TlMtbmFtZXNwYWNlLWVyci5qcwpAQCAtMCwwICsxLDE4MCBAQAorZGVzY3Jp
cHRpb24oImNyZWF0ZUVsZW1lbnROUyB0ZXN0cyBmcm9tIG1vemlsbGEsIGF0dGFjaGVkIHRvIHdl
YmtpdCBidWcgMTY4MzMiKTsKKworZnVuY3Rpb24gYXNzZXJ0KGMsIG0pCit7CisgICAgaWYgKCFj
KQorICAgICAgICB0ZXN0RmFpbGVkKG0pOworICAgIGVsc2UKKyAgICAgICAgdGVzdFBhc3NlZCht
KTsKK30KKworZnVuY3Rpb24gc3RyaW5nRm9yRXhjZXB0aW9uQ29kZShjKQoreworICAgIHZhciBl
eGNlcHRpb25OYW1lOworICAgIHN3aXRjaChjKSB7CisgICAgICAgIGNhc2UgRE9NRXhjZXB0aW9u
LklOVkFMSURfQ0hBUkFDVEVSX0VSUjoKKyAgICAgICAgICAgIGV4Y2VwdGlvbk5hbWUgPSAiSU5W
QUxJRF9DSEFSQUNURVJfRVJSIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERP
TUV4Y2VwdGlvbi5OQU1FU1BBQ0VfRVJSOgorICAgICAgICAgICAgZXhjZXB0aW9uTmFtZSA9ICJO
QU1FU1BBQ0VfRVJSIjsKKyAgICB9CisgICAgaWYgKGV4Y2VwdGlvbk5hbWUpCisgICAgICAgIHJl
dHVybiBleGNlcHRpb25OYW1lOyAvLyArICIoIiArIGMgKyAiKSI7CisgICAgcmV0dXJuIGM7Cit9
CisKK2Z1bmN0aW9uIGFzc2VydEVxdWFscyhhY3R1YWwsIGV4cGVjdCwgbSkKK3sKKyAgICBpZiAo
YWN0dWFsICE9PSBleHBlY3QpIHsKKyAgICAgICAgbSArPSAiOyBleHBlY3RlZCAiICsgc3RyaW5n
Rm9yRXhjZXB0aW9uQ29kZShleHBlY3QpICsgIiwgdGhyZXcgIiArIHN0cmluZ0ZvckV4Y2VwdGlv
bkNvZGUoYWN0dWFsKTsKKyAgICAgICAgdGVzdEZhaWxlZChtKTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBtICs9ICI7IHRocmV3ICIgKyBzdHJpbmdGb3JFeGNlcHRpb25Db2RlKGFjdHVhbCk7Owor
ICAgICAgICB0ZXN0UGFzc2VkKG0pOworICAgIH0KK30KKwordmFyIGFsbE5TVGVzdHMgPSBbCisg
ICB7IGFyZ3M6IFt1bmRlZmluZWQsIHVuZGVmaW5lZF0gfSwKKyAgIHsgYXJnczogW251bGwsIHVu
ZGVmaW5lZF0gfSwKKyAgIHsgYXJnczogW3VuZGVmaW5lZCwgbnVsbF0sIGNvZGU6IDUgfSwKKyAg
IHsgYXJnczogW251bGwsIG51bGxdLCBjb2RlOiA1IH0sCisgICB7IGFyZ3M6IFtudWxsLCAiIl0s
IGNvZGU6IDUgfSwKKyAgIHsgYXJnczogWyIiLCBudWxsXSwgY29kZTogNSB9LAorICAgeyBhcmdz
OiBbIiIsICIiXSwgY29kZTogNSB9LAorICAgeyBhcmdzOiBbbnVsbCwgIjxkaXY+Il0sIGNvZGU6
IDUgfSwKKyAgIHsgYXJnczogW251bGwsICIwZGl2Il0sIGNvZGU6IDUgfSwKKyAgIHsgYXJnczog
W251bGwsICJkaSB2Il0sIGNvZGU6IDUgfSwKKyAgIHsgYXJnczogW251bGwsICJkaTx2Il0sIGNv
ZGU6IDUgfSwKKyAgIHsgYXJnczogW251bGwsICItZGl2Il0sIGNvZGU6IDUgfSwKKyAgIHsgYXJn
czogW251bGwsICIuZGl2Il0sIGNvZGU6IDUgfSwKKyAgIHsgYXJnczogWyJodHRwOi8vZXhhbXBs
ZS5jb20vIiwgIjxkaXY+Il0sIGNvZGU6IDUgfSwKKyAgIHsgYXJnczogWyJodHRwOi8vZXhhbXBs
ZS5jb20vIiwgIjBkaXYiXSwgY29kZTogNSB9LAorICAgeyBhcmdzOiBbImh0dHA6Ly9leGFtcGxl
LmNvbS8iLCAiZGk8diJdLCBjb2RlOiA1IH0sCisgICB7IGFyZ3M6IFsiaHR0cDovL2V4YW1wbGUu
Y29tLyIsICItZGl2Il0sIGNvZGU6IDUgfSwKKyAgIHsgYXJnczogWyJodHRwOi8vZXhhbXBsZS5j
b20vIiwgIi5kaXYiXSwgY29kZTogNSB9LAorICAgeyBhcmdzOiBbbnVsbCwgIjpkaXYiXSwgY29k
ZTogMTQgfSwKKyAgIHsgYXJnczogW251bGwsICJkaXY6Il0sIGNvZGU6IDE0IH0sCisgICB7IGFy
Z3M6IFsiaHR0cDovL2V4YW1wbGUuY29tLyIsICI6ZGl2Il0sIGNvZGU6IDE0IH0sCisgICB7IGFy
Z3M6IFsiaHR0cDovL2V4YW1wbGUuY29tLyIsICJkaXY6Il0sIGNvZGU6IDE0IH0sCisgICB7IGFy
Z3M6IFtudWxsLCAiZDppdiJdLCBjb2RlOiAxNCB9LAorICAgeyBhcmdzOiBbbnVsbCwgImE6Yjpj
Il0sIGNvZGU6IDE0LCBtZXNzYWdlOiAidmFsaWQgWE1MIG5hbWUsIGludmFsaWQgUU5hbWUiIH0s
CisgICB7IGFyZ3M6IFsiaHR0cDovL2V4YW1wbGUuY29tLyIsICJhOmI6YyJdLCBjb2RlOiAxNCwg
bWVzc2FnZTogInZhbGlkIFhNTCBuYW1lLCBpbnZhbGlkIFFOYW1lIiB9LAorICAgeyBhcmdzOiBb
bnVsbCwgImE6OmMiXSwgY29kZTogMTQsIG1lc3NhZ2U6ICJ2YWxpZCBYTUwgbmFtZSwgaW52YWxp
ZCBRTmFtZSIgfSwKKyAgIHsgYXJnczogWyJodHRwOi8vZXhhbXBsZS5jb20vIiwgImE6OmMiXSwg
Y29kZTogMTQsIG1lc3NhZ2U6ICJ2YWxpZCBYTUwgbmFtZSwgaW52YWxpZCBRTmFtZSIgfSwKKyAg
IHsgYXJnczogWyJodHRwOi8vZXhhbXBsZS5jb20vIiwgImE6MCJdLCBjb2RlOiA1LCBtZXNzYWdl
OiAidmFsaWQgWE1MIG5hbWUsIG5vdCBhIHZhbGlkIFFOYW1lIiB9LAorICAgeyBhcmdzOiBbImh0
dHA6Ly9leGFtcGxlLmNvbS8iLCAiMDphIl0sIGNvZGU6IDUsIG1lc3NhZ2U6ICIwIGF0IHN0YXJ0
IG1ha2VzIGl0IG5vdCBhIHZhbGlkIFhNTCBuYW1lIiB9LAorICAgeyBhcmdzOiBbImh0dHA6Ly9l
eGFtcGxlLmNvbS8iLCAiYTpfIl0gfSwKKyAgIHsgYXJnczogWyJodHRwOi8vZXhhbXBsZS5jb20v
IiwgImE6XHUwQkM2Il0sIGNvZGU6IDE0LAorICAgICBtZXNzYWdlOiAibm9uLUFTQ0lJIGNoYXJh
Y3RlciBhZnRlciBjb2xvbiBpcyBDb21iaW5pbmdDaGFyLCB3aGljaCBpcyAiICsKKyAgICAgICAg
ICAgICAgIk5DTmFtZUNoYXIgYnV0IG5vdCAoTGV0dGVyIHwgXCJfXCIpIHNvIGludmFsaWQgYXQg
c3RhcnQgb2YgIiArCisgICAgICAgICAgICAgICJOQ05hbWUgKGJ1dCBzdGlsbCBhIHZhbGlkIFhN
TCBuYW1lLCBoZW5jZSBub3QgSU5WQUxJRF9DSEFSQUNURVJfRVJSKSIgfSwKKyAgIHsgYXJnczog
WyJodHRwOi8vZXhhbXBsZS5jb20vIiwgIlx1MEJDNjphIl0sIGNvZGU6IDUsCisgICAgIG1lc3Nh
Z2U6ICJub24tQVNDSUkgY2hhcmFjdGVyIGFmdGVyIGNvbG9uIGlzIENvbWJpbmluZ0NoYXIsIHdo
aWNoIGlzICIgKworICAgICAgICAgICAgICAiTkNOYW1lQ2hhciBidXQgbm90IChMZXR0ZXIgfCBc
Il9cIikgc28gaW52YWxpZCBhdCBzdGFydCBvZiAiICsKKyAgICAgICAgICAgICAgIk5DTmFtZSAo
R2Vja28gY2hvb3NlcyB0byB0aHJvdyBOQU1FU1BBQ0VfRVJSIGhlcmUsIGJ1dCBlaXRoZXIgaXMg
dmFsaWQgIiArCisgICAgICAgICAgICAgICJhcyB0aGlzIGlzIGJvdGggYW4gaW52YWxpZCBYTUwg
bmFtZSBhbmQgYW4gaW52YWxpZCBRTmFtZSkiIH0sCisgICB7IGFyZ3M6IFsiaHR0cDovL2V4YW1w
bGUuY29tLyIsICJhOmFcdTBCQzYiXSB9LAorICAgeyBhcmdzOiBbImh0dHA6Ly9leGFtcGxlLmNv
bS8iLCAiYVx1MEJDNjphIl0gfSwKKyAgIHsgYXJnczogWyJodHRwOi8vZXhhbXBsZS5jb20vIiwg
InhtbDp0ZXN0Il0sIGNvZGU6IDE0LCBtZXNzYWdlOiAiYmluZGluZyB4bWwgcHJlZml4IHdyb25n
IiB9LAorICAgeyBhcmdzOiBbImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAieG1sbnM6dGVzdCJdLCBj
b2RlOiAxNCwgbWVzc2FnZTogImJpbmRpbmcgeG1sbnMgcHJlZml4IHdyb25nIiB9LAorICAgeyBh
cmdzOiBbImh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIiwgIng6dGVzdCJdLCBjb2RlOiAx
NCwgbWVzc2FnZTogImJpbmRpbmcgbmFtZXNwYWNlIG5hbWVzcGFjZSB0byB3cm9uZyBwcmVmaXgi
IH0sCisgICB7IGFyZ3M6IFsiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8iLCAieG1sbnM6
dGVzdCJdIH0sCisgICB7IGFyZ3M6IFsiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNw
YWNlIiwgInhtbDp0ZXN0Il0gfSwKKyAgIHsgYXJnczogWyJodHRwOi8vd3d3LnczLm9yZy9YTUwv
MTk5OC9uYW1lc3BhY2UiLCAieDp0ZXN0Il0gfSwKK107CisKK3ZhciBhbGxOb05TVGVzdHMgPSBb
CisgICB7IGFyZ3M6IFt1bmRlZmluZWRdIH0sCisgICB7IGFyZ3M6IFtudWxsXSwgY29kZTogNSB9
LAorICAgeyBhcmdzOiBbIiJdLCBjb2RlOiA1IH0sCisgICB7IGFyZ3M6IFsiPGRpdj4iXSwgY29k
ZTogNSB9LAorICAgeyBhcmdzOiBbIjBkaXYiXSwgY29kZTogNSB9LAorICAgeyBhcmdzOiBbImRp
IHYiXSwgY29kZTogNSB9LAorICAgeyBhcmdzOiBbImRpPHYiXSwgY29kZTogNSB9LAorICAgeyBh
cmdzOiBbIi1kaXYiXSwgY29kZTogNSB9LAorICAgeyBhcmdzOiBbIi5kaXYiXSwgY29kZTogNSB9
LAorICAgeyBhcmdzOiBbIjoiXSwgbWVzc2FnZTogInZhbGlkIFhNTCBuYW1lLCBpbnZhbGlkIFFO
YW1lIiB9LAorICAgeyBhcmdzOiBbIjpkaXYiXSwgbWVzc2FnZTogInZhbGlkIFhNTCBuYW1lLCBp
bnZhbGlkIFFOYW1lIiB9LAorICAgeyBhcmdzOiBbImRpdjoiXSwgbWVzc2FnZTogInZhbGlkIFhN
TCBuYW1lLCBpbnZhbGlkIFFOYW1lIiB9LAorICAgeyBhcmdzOiBbImQ6aXYiXSB9LAorICAgeyBh
cmdzOiBbImE6YjpjIl0sIG1lc3NhZ2U6ICJ2YWxpZCBYTUwgbmFtZSwgaW52YWxpZCBRTmFtZSIg
fSwKKyAgIHsgYXJnczogWyJhOjpjIl0sIG1lc3NhZ2U6ICJ2YWxpZCBYTUwgbmFtZSwgaW52YWxp
ZCBRTmFtZSIgfSwKKyAgIHsgYXJnczogWyJhOjpjOiJdLCBtZXNzYWdlOiAidmFsaWQgWE1MIG5h
bWUsIGludmFsaWQgUU5hbWUiIH0sCisgICB7IGFyZ3M6IFsiYTowIl0sIG1lc3NhZ2U6ICJ2YWxp
ZCBYTUwgbmFtZSwgbm90IGEgdmFsaWQgUU5hbWUiIH0sCisgICB7IGFyZ3M6IFsiMDphIl0sIGNv
ZGU6IDUsIG1lc3NhZ2U6ICIwIGF0IHN0YXJ0IG1ha2VzIGl0IG5vdCBhIHZhbGlkIFhNTCBuYW1l
IiB9LAorICAgeyBhcmdzOiBbImE6XyJdIH0sCisgICB7IGFyZ3M6IFsiYTpcdTBCQzYiXSwKKyAg
ICAgbWVzc2FnZTogIm5vbi1BU0NJSSBjaGFyYWN0ZXIgYWZ0ZXIgY29sb24gaXMgQ29tYmluaW5n
Q2hhciwgd2hpY2ggaXMgIiArCisgICAgICAgICAgICAgICJ2YWxpZCBpbiBwcmUtbmFtZXNwYWNl
IFhNTCIgfSwKKyAgIHsgYXJnczogWyJcdTBCQzY6YSJdLCBjb2RlOiA1LCBtZXNzYWdlOiAibm90
IGEgdmFsaWQgc3RhcnQgY2hhcmFjdGVyIiB9LAorICAgeyBhcmdzOiBbImE6YVx1MEJDNiJdIH0s
CisgICB7IGFyZ3M6IFsiYVx1MEJDNjphIl0gfSwKKyAgIHsgYXJnczogWyJ4bWw6dGVzdCJdIH0s
CisgICB7IGFyZ3M6IFsieG1sbnM6dGVzdCJdIH0sCisgICB7IGFyZ3M6IFsieDp0ZXN0Il0gfSwK
KyAgIHsgYXJnczogWyJ4bWxuczp0ZXN0Il0gfSwKKyAgIHsgYXJnczogWyJTT0FQLUVOVjpCb2R5
Il0gfSwgLy8gRnJvbSBZYWhvbyBNYWlsIEJldGEKK107CisKK2Z1bmN0aW9uIHNvdXJjZWlmeSh2
KQoreworICAgIHN3aXRjaCAodHlwZW9mIHYpIHsKKyAgICAgICAgY2FzZSAidW5kZWZpbmVkIjoK
KyAgICAgICAgICAgIHJldHVybiB2OworICAgICAgICBjYXNlICJzdHJpbmciOgorICAgICAgICAg
ICAgcmV0dXJuICciJyArIHYucmVwbGFjZSgnIicsICdcXCInKSArICciJzsKKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIHJldHVybiBTdHJpbmcodik7CisgICAgfQorfQorCitmdW5jdGlv
biBzb3VyY2VpZnlBcmdzKGFyZ3MpCit7CisgICAgdmFyIGNvcHkgPSBuZXcgQXJyYXkoYXJncy5s
ZW5ndGgpOworICAgIGZvciAodmFyIGkgPSAwLCBzeiA9IGFyZ3MubGVuZ3RoOyBpIDwgc3o7IGkr
KykKKyAgICAgICAgY29weVtpXSA9IHNvdXJjZWlmeShhcmdzW2ldKTsKKworICAgIHJldHVybiBj
b3B5LmpvaW4oIiwgIik7Cit9CisKK2Z1bmN0aW9uIHJ1bk5TVGVzdHModGVzdHMsIGRvYywgY3Jl
YXRlRnVuY3Rpb25OYW1lKQoreworICAgIGZvciAodmFyIGkgPSAwLCBzeiA9IHRlc3RzLmxlbmd0
aDsgaSA8IHN6OyBpKyspIHsKKyAgICAgICAgdmFyIHRlc3QgPSB0ZXN0c1tpXTsKKworICAgICAg
ICB2YXIgY29kZSA9IC0xOworICAgICAgICB2YXIgYXJnU3RyID0gc291cmNlaWZ5QXJncyh0ZXN0
LmFyZ3MpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgZG9jW2NyZWF0ZUZ1bmN0aW9uTmFt
ZV0uYXBwbHkoZG9jLCB0ZXN0LmFyZ3MpOworICAgICAgICAgICAgdmFyIG1zZyA9IGNyZWF0ZUZ1
bmN0aW9uTmFtZSArICIoIiArIGFyZ1N0ciArICIpIjsKKyAgICAgICAgICAgIGlmICgibWVzc2Fn
ZSIgaW4gdGVzdCkKKyAgICAgICAgICAgICAgICBtc2cgKz0gIjsgIiArIHRlc3QubWVzc2FnZTsK
KyAgICAgICAgICAgIGFzc2VydCghKGNvZGUgaW4gdGVzdCksIG1zZyk7CisgICAgICAgIH0gY2F0
Y2ggKGUpIHsKKyAgICAgICAgICAgIHZhciBhcmdTdHIgPSBzb3VyY2VpZnkodGVzdC5hcmdzWzBd
KSArICIsICIgKyBzb3VyY2VpZnkodGVzdC5hcmdzWzFdKTsKKyAgICAgICAgICAgIG1zZyA9IGNy
ZWF0ZUZ1bmN0aW9uTmFtZSArICIoIiArIGFyZ1N0ciArICIpIjsKKyAgICAgICAgICAgIGlmICgi
bWVzc2FnZSIgaW4gdGVzdCkKKyAgICAgICAgICAgICAgICBtc2cgKz0gIjsgIiArIHRlc3QubWVz
c2FnZTsKKyAgICAgICAgICAgIGFzc2VydEVxdWFscyhlLmNvZGUsIHRlc3QuY29kZSB8fCAiZXhw
ZWN0ZWQgbm8gZXhjZXB0aW9uIiwgbXNnKTsKKyAgICAgICAgfQorICAgIH0KK30KKworLy8gTW96
IHRocm93cyBhICJOb3QgZW5vdWdoIGFyZ3VtZW50cyIgZXhjZXB0aW9uIGluIHRoZXNlLCB3ZSBk
b24ndDoKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCku
dG9TdHJpbmcoKSIsICJbb2JqZWN0IEVsZW1lbnRdIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmco
ImRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhcImh0dHA6Ly93d3cuZXhhbXBsZS5jb21cIikudG9T
dHJpbmcoKSIsICJbb2JqZWN0IEVsZW1lbnRdIik7CisKK2RlYnVnKCJIVE1MIHRlc3RzOiIpCity
dW5OU1Rlc3RzKGFsbE5TVGVzdHMsIGRvY3VtZW50LCAiY3JlYXRlRWxlbWVudE5TIik7CitydW5O
U1Rlc3RzKGFsbE5vTlNUZXN0cywgZG9jdW1lbnQsICJjcmVhdGVFbGVtZW50Iik7CisKK2RlYnVn
KCJYSFRNTCBjcmVhdGVFbGVtZW50IHRlc3RzOiIpCit2YXIgeGh0bWxEb2MgPSBkb2N1bWVudC5p
bXBsZW1lbnRhdGlvbi5jcmVhdGVEb2N1bWVudCgiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRt
bCIsICJodG1sIiwgbnVsbCk7CitydW5OU1Rlc3RzKGFsbE5vTlNUZXN0cywgeGh0bWxEb2MsICJj
cmVhdGVFbGVtZW50Iik7CisKK2RlYnVnKCJYTUwgY3JlYXRlRWxlbWVudCB0ZXN0czoiKQordmFy
IHhtbERvYyA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZURvY3VtZW50KCJodHRwOi8v
d3d3LmV4YW1wbGUuY29tL2ZvbyIsICJleGFtcGxlIiwgbnVsbCk7CitydW5OU1Rlc3RzKGFsbE5v
TlNUZXN0cywgeG1sRG9jLCAiY3JlYXRlRWxlbWVudCIpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAxYzc2NDYzLi5iODIxYjdkIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBA
IC0xMDcsNiArMTA3LDcgQEAKICNpbmNsdWRlICJVSUV2ZW50LmgiCiAjaW5jbHVkZSAiV2hlZWxF
dmVudC5oIgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0LmgiCisjaW5jbHVkZSAiWE1MTmFtZXMu
aCIKICNpbmNsdWRlICJYTUxUb2tlbml6ZXIuaCIKICNpbmNsdWRlICJranNfYmluZGluZy5oIgog
I2luY2x1ZGUgImtqc19wcm94eS5oIgpAQCAtNTE0LDE1ICs1MTUsMTUgQEAgRWxlbWVudCogRG9j
dW1lbnQ6OmRvY3VtZW50RWxlbWVudCgpIGNvbnN0CiAKIFBhc3NSZWZQdHI8RWxlbWVudD4gRG9j
dW1lbnQ6OmNyZWF0ZUVsZW1lbnQoY29uc3QgU3RyaW5nICZuYW1lLCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKLSAgICBpZiAobV9pc1hIVE1MKSB7Ci0gICAgICAgIGlmICghaXNWYWxpZE5hbWUobmFt
ZSkpIHsKLSAgICAgICAgICAgIGVjID0gSU5WQUxJRF9DSEFSQUNURVJfRVJSOwotICAgICAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KKyAgICBpZiAoIWlzVmFsaWROYW1lKG5hbWUpKSB7Cisg
ICAgICAgIGVjID0gSU5WQUxJRF9DSEFSQUNURVJfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAg
ICB9CisKKyAgICBpZiAobV9pc1hIVE1MKQorICAgICAgICByZXR1cm4gSFRNTEVsZW1lbnRGYWN0
b3J5OjpjcmVhdGVIVE1MRWxlbWVudChuYW1lLCB0aGlzLCAwLCBmYWxzZSk7CiAKLSAgICAgICAg
cmV0dXJuIEhUTUxFbGVtZW50RmFjdG9yeTo6Y3JlYXRlSFRNTEVsZW1lbnQoQXRvbWljU3RyaW5n
KG5hbWUpLCB0aGlzLCAwLCBmYWxzZSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHJldHVybiBjcmVh
dGVFbGVtZW50TlMobnVsbEF0b20sIG5hbWUsIGVjKTsKKyAgICByZXR1cm4gY3JlYXRlRWxlbWVu
dChRdWFsaWZpZWROYW1lKG51bGxBdG9tLCBuYW1lLCBudWxsQXRvbSksIGZhbHNlLCBlYyk7CiB9
CiAKIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gRG9jdW1lbnQ6OmNyZWF0ZURvY3VtZW50
RnJhZ21lbnQoKQpAQCAtNzE2LDYgKzcxNywzMiBAQCBQYXNzUmVmUHRyPE5vZGU+IERvY3VtZW50
OjphZG9wdE5vZGUoUGFzc1JlZlB0cjxOb2RlPiBzb3VyY2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ICAgIHJldHVybiBzb3VyY2U7CiB9CiAKK3N0YXRpYyBib29sIGhhc05hbWVzcGFjZUVycm9yKGNv
bnN0IFF1YWxpZmllZE5hbWUmIHFOYW1lKQoreworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJp
bmcgeG1sbnNOYW1lc3BhY2VVUkkgPSAiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8iOwor
ICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgeG1sbnMgPSAieG1sbnMiOworICAgIHN0YXRp
YyBjb25zdCBBdG9taWNTdHJpbmcgeG1sID0gInhtbCI7CisKKyAgICAvLyBUaGVzZSBjaGVja3Mg
YXJlIGZyb20gRE9NIENvcmUgTGV2ZWwgMiwgY3JlYXRlRWxlbWVudE5TCisgICAgLy8gaHR0cDov
L3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTItQ29yZS9jb3JlLmh0bWwjSUQtRG9jQ3JFbE5TCisg
ICAgaWYgKHFOYW1lLnByZWZpeCgpID09IGVtcHR5QXRvbSkgLy8gY3JlYXRlRWxlbWVudE5TKG51
bGwsICI6ZGl2IikKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHFOYW1lLmxvY2FsTmFt
ZSgpLmlzRW1wdHkoKSkgLy8gY3JlYXRlRWxlbWVudE5TKG51bGwsICIiKSwgY3JlYXRlRWxlbWVu
dE5TKG51bGwsIG51bGwpLCBjcmVhdGVFbGVtZW50TlMoKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICBpZiAoIXFOYW1lLnByZWZpeCgpLmlzRW1wdHkoKSAmJiBxTmFtZS5uYW1lc3BhY2VVUkko
KS5pc051bGwoKSkgLy8gY3JlYXRlRWxlbWVudE5TKG51bGwsICJodG1sOmRpdiIpCisgICAgICAg
IHJldHVybiB0cnVlOworICAgIGlmIChxTmFtZS5wcmVmaXgoKSA9PSB4bWwgJiYgcU5hbWUubmFt
ZXNwYWNlVVJJKCkgIT0gWE1MTmFtZXM6OnhtbE5hbWVzcGFjZVVSSSkgLy8gY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LmV4YW1wbGUuY29tIiwgInhtbDpsYW5nIikKKyAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICAvLyBSZXF1aXJlZCBieSBET00gTGV2ZWwgMyBDb3JlIGFuZCB1bnNwZWNp
ZmllZCBieSBET00gTGV2ZWwgMiBDb3JlOgorICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL1RSLzIw
MDQvUkVDLURPTS1MZXZlbC0zLUNvcmUtMjAwNDA0MDcvY29yZS5odG1sI0lELURvY0NyRWxOUwor
ICAgIC8vIGNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8iLCAi
Zm9vOmJhciIpLCBjcmVhdGVFbGVtZW50TlMobnVsbCwgInhtbG5zOmJhciIpCisgICAgaWYgKChx
TmFtZS5wcmVmaXgoKSA9PSB4bWxucyAmJiBxTmFtZS5uYW1lc3BhY2VVUkkoKSAhPSB4bWxuc05h
bWVzcGFjZVVSSSkgfHwgKHFOYW1lLnByZWZpeCgpICE9IHhtbG5zICYmIHFOYW1lLm5hbWVzcGFj
ZVVSSSgpID09IHhtbG5zTmFtZXNwYWNlVVJJKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKIC8vIEZJWE1FOiBUaGlzIHNob3VsZCByZWFsbHkgYmUgaW4g
YSBwb3NzaWJsZSBFbGVtZW50RmFjdG9yeSBjbGFzcwogUGFzc1JlZlB0cjxFbGVtZW50PiBEb2N1
bWVudDo6Y3JlYXRlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiBxTmFtZSwgYm9vbCBjcmVh
dGVkQnlQYXJzZXIsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewpAQCAtNzMyLDE3ICs3NTksMjIgQEAg
UGFzc1JlZlB0cjxFbGVtZW50PiBEb2N1bWVudDo6Y3JlYXRlRWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiBxTmFtZSwgYm9vbCBjcmUKICAgICBpZiAoIWUpCiAgICAgICAgIGUgPSBuZXcgRWxl
bWVudChxTmFtZSwgZG9jdW1lbnQoKSk7CiAgICAgCisgICAgLy8gRklYTUU6IFRoZSBlbGVtZW50
IGZhY3RvcmllcyBzaG91bGQgYmUgZml4ZWQgdG8gbm90IGlnbm9yZSBxTmFtZS5wcmVmaXgoKQor
ICAgIC8vIEluc3RlYWQgdGhleSBzaG91bGQgcGFzcyB0aGUgZW50aXJlIHFOYW1lIGludG8gZWxl
bWVudCBjcmVhdGlvbiBzbyB3ZSBkb24ndAorICAgIC8vIG5lZWQgdG8gbWFudWFsbHkgc2V0IHRo
ZSBwcmVmaXggYWZ0ZXIgY3JlYXRpb24uCisgICAgLy8gVGhlbiB0aGlzIGNvZGUgY2FuIGJlY29t
ZSBBU1NFUlQocU5hbWUgPT0gZS5xbmFtZSgpKTsKKyAgICAvLyBhbmQgRG9jdW1lbnQ6OmNyZWF0
ZUVsZW1lbnQgY2FuIHN0b3AgdGFraW5nIEV4Y2VwdGlvbkNvZGUmIGFzIHdlbGwuCiAgICAgaWYg
KGUgJiYgIXFOYW1lLnByZWZpeCgpLmlzTnVsbCgpKSB7CiAgICAgICAgIGVjID0gMDsKICAgICAg
ICAgZS0+c2V0UHJlZml4KHFOYW1lLnByZWZpeCgpLCBlYyk7CiAgICAgICAgIGlmIChlYykKICAg
ICAgICAgICAgIHJldHVybiAwOwotICAgIH0gICAgCisgICAgfQogICAgIAogICAgIHJldHVybiBl
LnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxFbGVtZW50PiBEb2N1bWVudDo6Y3JlYXRlRWxl
bWVudE5TKGNvbnN0IFN0cmluZyAmX25hbWVzcGFjZVVSSSwgY29uc3QgU3RyaW5nICZxdWFsaWZp
ZWROYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8RWxlbWVudD4gRG9jdW1lbnQ6
OmNyZWF0ZUVsZW1lbnROUyhjb25zdCBTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgU3RyaW5n
JiBxdWFsaWZpZWROYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBTdHJpbmcgcHJlZml4
LCBsb2NhbE5hbWU7CiAgICAgaWYgKCFwYXJzZVF1YWxpZmllZE5hbWUocXVhbGlmaWVkTmFtZSwg
cHJlZml4LCBsb2NhbE5hbWUpKSB7CkBAIC03NTAsOSArNzgyLDEyIEBAIFBhc3NSZWZQdHI8RWxl
bWVudD4gRG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnROUyhjb25zdCBTdHJpbmcgJl9uYW1lc3BhY2VV
UkksIGNvbnN0CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIFJlZlB0cjxFbGVtZW50
PiBlOwotICAgIFF1YWxpZmllZE5hbWUgcU5hbWUgPSBRdWFsaWZpZWROYW1lKEF0b21pY1N0cmlu
ZyhwcmVmaXgpLCBBdG9taWNTdHJpbmcobG9jYWxOYW1lKSwgQXRvbWljU3RyaW5nKF9uYW1lc3Bh
Y2VVUkkpKTsKLSAgICAKKyAgICBRdWFsaWZpZWROYW1lIHFOYW1lKHByZWZpeCwgbG9jYWxOYW1l
LCBuYW1lc3BhY2VVUkkpOworICAgIGlmIChoYXNOYW1lc3BhY2VFcnJvcihxTmFtZSkpIHsKKyAg
ICAgICAgZWMgPSBOQU1FU1BBQ0VfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKICAg
ICByZXR1cm4gY3JlYXRlRWxlbWVudChxTmFtZSwgZmFsc2UsIGVjKTsKIH0KIApAQCAtMjc4NCw3
ICsyODE5LDcgQEAgYm9vbCBEb2N1bWVudDo6aXNWYWxpZE5hbWUoY29uc3QgU3RyaW5nICZuYW1l
KQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIERvY3VtZW50OjpwYXJzZVF1YWxpZmllZE5h
bWUoY29uc3QgU3RyaW5nICZxdWFsaWZpZWROYW1lLCBTdHJpbmcgJnByZWZpeCwgU3RyaW5nICZs
b2NhbE5hbWUpCitib29sIERvY3VtZW50OjpwYXJzZVF1YWxpZmllZE5hbWUoY29uc3QgU3RyaW5n
JiBxdWFsaWZpZWROYW1lLCBTdHJpbmcmIHByZWZpeCwgU3RyaW5nJiBsb2NhbE5hbWUpCiB7CiAg
ICAgdW5zaWduZWQgbGVuZ3RoID0gcXVhbGlmaWVkTmFtZS5sZW5ndGgoKTsKIApAQCAtMzQ4OSwy
OSArMzUyNCwyOSBAQCBEb2N1bWVudCAqRG9jdW1lbnQ6OnRvcERvY3VtZW50KCkgY29uc3QKICAg
ICByZXR1cm4gZG9jOwogfQogCi1QYXNzUmVmUHRyPEF0dHI+IERvY3VtZW50OjpjcmVhdGVBdHRy
aWJ1dGVOUyhjb25zdCBTdHJpbmcgJm5hbWVzcGFjZVVSSSwgY29uc3QgU3RyaW5nICZxdWFsaWZp
ZWROYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8QXR0cj4gRG9jdW1lbnQ6OmNy
ZWF0ZUF0dHJpYnV0ZU5TKGNvbnN0IFN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcm
IHF1YWxpZmllZE5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIGlmIChxdWFsaWZpZWRO
YW1lLmlzTnVsbCgpKSB7Ci0gICAgICAgIGVjID0gTkFNRVNQQUNFX0VSUjsKKyAgICBTdHJpbmcg
cHJlZml4LCBsb2NhbE5hbWU7CisgICAgaWYgKCFwYXJzZVF1YWxpZmllZE5hbWUocXVhbGlmaWVk
TmFtZSwgcHJlZml4LCBsb2NhbE5hbWUpKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9DSEFSQUNU
RVJfRVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBTdHJpbmcgbG9jYWxOYW1l
ID0gcXVhbGlmaWVkTmFtZTsKLSAgICBTdHJpbmcgcHJlZml4OwotICAgIGludCBjb2xvbnBvczsK
LSAgICBpZiAoKGNvbG9ucG9zID0gcXVhbGlmaWVkTmFtZS5maW5kKCc6JykpID49IDApIHsKLSAg
ICAgICAgcHJlZml4ID0gcXVhbGlmaWVkTmFtZS5zdWJzdHJpbmcoMCwgY29sb25wb3MpOwotICAg
ICAgICBsb2NhbE5hbWUgPSBxdWFsaWZpZWROYW1lLnN1YnN0cmluZyhjb2xvbnBvcyArIDEpOwor
ICAgIFF1YWxpZmllZE5hbWUgcU5hbWUocHJlZml4LCBsb2NhbE5hbWUsIG5hbWVzcGFjZVVSSSk7
CisgICAgaWYgKGhhc05hbWVzcGFjZUVycm9yKHFOYW1lKSkgeworICAgICAgICBlYyA9IE5BTUVT
UEFDRV9FUlI7CisgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGlmICghaXNWYWxpZE5h
bWUobG9jYWxOYW1lKSkgewotICAgICAgICBlYyA9IElOVkFMSURfQ0hBUkFDVEVSX0VSUjsKKyAg
ICAvLyBTcGVjOiBET00gTGV2ZWwgMiBDb3JlOiBodHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2
ZWwtMi1Db3JlL2NvcmUuaHRtbCNJRC1Eb2NDckF0dHJOUworICAgIGlmIChxTmFtZS5sb2NhbE5h
bWUoKSA9PSAieG1sbnMiICYmIHFOYW1lLm5hbWVzcGFjZVVSSSgpICE9ICJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3htbG5zLyIpIHsKKyAgICAgICAgZWMgPSBOQU1FU1BBQ0VfRVJSOwogICAgICAg
ICByZXR1cm4gMDsKICAgICB9Ci0gICAgCisKICAgICAvLyBGSVhNRTogQXNzdW1lIHRoaXMgaXMg
YSBtYXBwZWQgYXR0cmlidXRlLCBzaW5jZSBjcmVhdGVBdHRyaWJ1dGUgaXNuJ3QgbmFtZXNwYWNl
LWF3YXJlLiAgVGhlcmUncyBubyBoYXJtIHRvIFhNTAogICAgIC8vIGRvY3VtZW50cyBpZiB3ZSdy
ZSB3cm9uZy4KLSAgICByZXR1cm4gbmV3IEF0dHIoMCwgdGhpcywgbmV3IE1hcHBlZEF0dHJpYnV0
ZShRdWFsaWZpZWROYW1lKHByZWZpeCwgbG9jYWxOYW1lLCBuYW1lc3BhY2VVUkkpLCBTdHJpbmdJ
bXBsOjplbXB0eSgpKSk7CisgICAgcmV0dXJuIG5ldyBBdHRyKDAsIHRoaXMsIG5ldyBNYXBwZWRB
dHRyaWJ1dGUocU5hbWUsIFN0cmluZ0ltcGw6OmVtcHR5KCkpKTsKIH0KIAogI2lmIEVOQUJMRShT
VkcpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwgYi9XZWJDb3JlL2RvbS9E
b2N1bWVudC5pZGwKaW5kZXggZGRjMjVmMy4uNzhlMTdmNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaWRsCisrKyBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbApAQCAtNTUsMTAg
KzU1LDEwIEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluIGJvb2xlYW4gZGVlcCkKICAgICAgICAgICAgIHJhaXNlcyAoRE9NRXhjZXB0aW9u
KTsKICAgICAgICAgW09sZFN0eWxlT2JqQ10gRWxlbWVudCBjcmVhdGVFbGVtZW50TlMoaW4gW0Nv
bnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgbmFtZXNwYWNlVVJJLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBET01TdHJpbmcgcXVhbGlm
aWVkTmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW4gW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgcXVhbGlmaWVkTmFtZSkKICAg
ICAgICAgICAgIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgW09sZFN0eWxlT2JqQ10g
QXR0ciBjcmVhdGVBdHRyaWJ1dGVOUyhpbiBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0
cmluZyBuYW1lc3BhY2VVUkksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW4gRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBE
T01TdHJpbmcgcXVhbGlmaWVkTmFtZSkKICAgICAgICAgICAgIHJhaXNlcyAoRE9NRXhjZXB0aW9u
KTsKICAgICAgICAgW09sZFN0eWxlT2JqQ10gTm9kZUxpc3QgZ2V0RWxlbWVudHNCeVRhZ05hbWVO
UyhpbiBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBuYW1lc3BhY2VVUkksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4g
RE9NU3RyaW5nIGxvY2FsTmFtZSk7Cg==
</data>
<flag name="review"
          id="8729"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19940</attachid>
            <date>2008-03-21 15:38:21 -0700</date>
            <delta_ts>2008-03-21 15:38:21 -0700</delta_ts>
            <desc>additional patch needed to fix the test and code</desc>
            <filename>fix.patch</filename>
            <type>text/plain</type>
            <size>3991</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L2NyZWF0ZUVsZW1lbnRO
Uy1uYW1lc3BhY2UtZXJyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3Vt
ZW50L2NyZWF0ZUVsZW1lbnROUy1uYW1lc3BhY2UtZXJyLWV4cGVjdGVkLnR4dAppbmRleCAxYjk2
YTZkLi5jNjM1OTE3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9j
cmVhdGVFbGVtZW50TlMtbmFtZXNwYWNlLWVyci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vRG9jdW1lbnQvY3JlYXRlRWxlbWVudE5TLW5hbWVzcGFjZS1lcnItZXhwZWN0
ZWQudHh0CkBAIC00Nyw3ICs0Nyw3IEBAIFBBU1MgY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3htbG5zLyIsICJ4bWxuczp0ZXN0IikKIFBBU1MgY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiLCAieG1sOnRlc3QiKQogUEFT
UyBjcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIs
ICJ4OnRlc3QiKQogUEFTUyBjcmVhdGVFbGVtZW50KCkKLVBBU1MgY3JlYXRlRWxlbWVudChudWxs
KQorUEFTUyBjcmVhdGVFbGVtZW50KG51bGwsIHVuZGVmaW5lZCk7IHRocmV3IElOVkFMSURfQ0hB
UkFDVEVSX0VSUgogUEFTUyBjcmVhdGVFbGVtZW50KCIiLCB1bmRlZmluZWQpOyB0aHJldyBJTlZB
TElEX0NIQVJBQ1RFUl9FUlIKIFBBU1MgY3JlYXRlRWxlbWVudCgiPGRpdj4iLCB1bmRlZmluZWQp
OyB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKIFBBU1MgY3JlYXRlRWxlbWVudCgiMGRpdiIs
IHVuZGVmaW5lZCk7IHRocmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgpAQCAtNzYsNyArNzYsNyBA
QCBQQVNTIGNyZWF0ZUVsZW1lbnQoInhtbG5zOnRlc3QiKQogUEFTUyBjcmVhdGVFbGVtZW50KCJT
T0FQLUVOVjpCb2R5IikKIFhIVE1MIGNyZWF0ZUVsZW1lbnQgdGVzdHM6CiBQQVNTIGNyZWF0ZUVs
ZW1lbnQoKQotUEFTUyBjcmVhdGVFbGVtZW50KG51bGwpCitQQVNTIGNyZWF0ZUVsZW1lbnQobnVs
bCwgdW5kZWZpbmVkKTsgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCiBQQVNTIGNyZWF0ZUVs
ZW1lbnQoIiIsIHVuZGVmaW5lZCk7IHRocmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgogUEFTUyBj
cmVhdGVFbGVtZW50KCI8ZGl2PiIsIHVuZGVmaW5lZCk7IHRocmV3IElOVkFMSURfQ0hBUkFDVEVS
X0VSUgogUEFTUyBjcmVhdGVFbGVtZW50KCIwZGl2IiwgdW5kZWZpbmVkKTsgdGhyZXcgSU5WQUxJ
RF9DSEFSQUNURVJfRVJSCkBAIC0xMDUsNyArMTA1LDcgQEAgUEFTUyBjcmVhdGVFbGVtZW50KCJ4
bWxuczp0ZXN0IikKIFBBU1MgY3JlYXRlRWxlbWVudCgiU09BUC1FTlY6Qm9keSIpCiBYTUwgY3Jl
YXRlRWxlbWVudCB0ZXN0czoKIFBBU1MgY3JlYXRlRWxlbWVudCgpCi1QQVNTIGNyZWF0ZUVsZW1l
bnQobnVsbCkKK1BBU1MgY3JlYXRlRWxlbWVudChudWxsLCB1bmRlZmluZWQpOyB0aHJldyBJTlZB
TElEX0NIQVJBQ1RFUl9FUlIKIFBBU1MgY3JlYXRlRWxlbWVudCgiIiwgdW5kZWZpbmVkKTsgdGhy
ZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCiBQQVNTIGNyZWF0ZUVsZW1lbnQoIjxkaXY+IiwgdW5k
ZWZpbmVkKTsgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCiBQQVNTIGNyZWF0ZUVsZW1lbnQo
IjBkaXYiLCB1bmRlZmluZWQpOyB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L3Jlc291cmNlcy9jcmVhdGVBdHRyaWJ1
dGVOUy1uYW1lc3BhY2UtZXJyLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvcmVz
b3VyY2VzL2NyZWF0ZUF0dHJpYnV0ZU5TLW5hbWVzcGFjZS1lcnIuanMKaW5kZXggZjZlY2EyNy4u
YmQyNTdjMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvcmVzb3Vy
Y2VzL2NyZWF0ZUF0dHJpYnV0ZU5TLW5hbWVzcGFjZS1lcnIuanMKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vRG9jdW1lbnQvcmVzb3VyY2VzL2NyZWF0ZUF0dHJpYnV0ZU5TLW5hbWVzcGFjZS1l
cnIuanMKQEAgLTExNSw3ICsxMTUsNyBAQCBmdW5jdGlvbiBydW5OU1Rlc3RzKCkKICAgICAgICAg
ICAgIHZhciBtc2cgPSBjcmVhdGVGdW5jdGlvbk5hbWUgKyAiKCIgKyBhcmdTdHIgKyAiKSI7CiAg
ICAgICAgICAgICBpZiAoIm1lc3NhZ2UiIGluIHRlc3QpCiAgICAgICAgICAgICAgICAgbXNnICs9
ICI7ICIgKyB0ZXN0Lm1lc3NhZ2U7Ci0gICAgICAgICAgICBhc3NlcnQoIShjb2RlIGluIHRlc3Qp
LCBtc2cpOworICAgICAgICAgICAgYXNzZXJ0KCEoImNvZGUiIGluIHRlc3QpLCBtc2cpOwogICAg
ICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICB2YXIgYXJnU3RyID0gc291cmNlaWZ5KHRl
c3QuYXJnc1swXSkgKyAiLCAiICsgc291cmNlaWZ5KHRlc3QuYXJnc1sxXSk7CiAgICAgICAgICAg
ICBtc2cgPSBjcmVhdGVGdW5jdGlvbk5hbWUgKyAiKCIgKyBhcmdTdHIgKyAiKSI7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9yZXNvdXJjZXMvY3JlYXRlRWxlbWVu
dE5TLW5hbWVzcGFjZS1lcnIuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9yZXNv
dXJjZXMvY3JlYXRlRWxlbWVudE5TLW5hbWVzcGFjZS1lcnIuanMKaW5kZXggMjZlOTQ5Zi4uOTli
NDFhYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvcmVzb3VyY2Vz
L2NyZWF0ZUVsZW1lbnROUy1uYW1lc3BhY2UtZXJyLmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL0RvY3VtZW50L3Jlc291cmNlcy9jcmVhdGVFbGVtZW50TlMtbmFtZXNwYWNlLWVyci5qcwpA
QCAtMTUwLDcgKzE1MCw3IEBAIGZ1bmN0aW9uIHJ1bk5TVGVzdHModGVzdHMsIGRvYywgY3JlYXRl
RnVuY3Rpb25OYW1lKQogICAgICAgICAgICAgdmFyIG1zZyA9IGNyZWF0ZUZ1bmN0aW9uTmFtZSAr
ICIoIiArIGFyZ1N0ciArICIpIjsKICAgICAgICAgICAgIGlmICgibWVzc2FnZSIgaW4gdGVzdCkK
ICAgICAgICAgICAgICAgICBtc2cgKz0gIjsgIiArIHRlc3QubWVzc2FnZTsKLSAgICAgICAgICAg
IGFzc2VydCghKGNvZGUgaW4gdGVzdCksIG1zZyk7CisgICAgICAgICAgICBhc3NlcnQoISgiY29k
ZSIgaW4gdGVzdCksIG1zZyk7CiAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgIHZh
ciBhcmdTdHIgPSBzb3VyY2VpZnkodGVzdC5hcmdzWzBdKSArICIsICIgKyBzb3VyY2VpZnkodGVz
dC5hcmdzWzFdKTsKICAgICAgICAgICAgIG1zZyA9IGNyZWF0ZUZ1bmN0aW9uTmFtZSArICIoIiAr
IGFyZ1N0ciArICIpIjsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbCBiL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmlkbAppbmRleCA3OGUxN2Y2Li5lYmE3MWVkIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKKysrIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRs
CkBAIC0zMyw3ICszMyw3IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIERPTUltcGxlbWVudGF0aW9uIGltcGxlbWVudGF0aW9uOwogICAgICAgICByZWFkb25seSBh
dHRyaWJ1dGUgRWxlbWVudCBkb2N1bWVudEVsZW1lbnQ7CiAKLSAgICAgICAgRWxlbWVudCAgICAg
ICAgICAgIGNyZWF0ZUVsZW1lbnQoaW4gRE9NU3RyaW5nIHRhZ05hbWUpCisgICAgICAgIEVsZW1l
bnQgICAgICAgICAgICBjcmVhdGVFbGVtZW50KGluIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10g
RE9NU3RyaW5nIHRhZ05hbWUpCiAgICAgICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAg
ICAgICAgIERvY3VtZW50RnJhZ21lbnQgICBjcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CiAgICAg
ICAgIFRleHQgICAgICAgICAgICAgICBjcmVhdGVUZXh0Tm9kZShpbiBET01TdHJpbmcgZGF0YSk7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19941</attachid>
            <date>2008-03-21 15:39:33 -0700</date>
            <delta_ts>2008-03-21 22:20:22 -0700</delta_ts>
            <desc>Fix xml/xhtml handling of createElement and add tests</desc>
            <filename>Fix-xml-xhtml-handling-of-createElement-and-add-tests.patch</filename>
            <type>text/plain</type>
            <size>37595</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">MGE5NDFmYTBlN2MzNjM2YzMyNDVkNjk5MTgzNWJiNjcwODFmNmU4ZgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMy9jb3JlL2RvY3VtZW50c2V0c3RyaWN0ZXJyb3JjaGVj
a2luZzAyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2RvbS94aHRtbC9sZXZlbDMvY29yZS9k
b2N1bWVudHNldHN0cmljdGVycm9yY2hlY2tpbmcwMi1leHBlY3RlZC50eHQKaW5kZXggMmYyMzNl
MS4uOGI1YTc1ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMy9jb3Jl
L2RvY3VtZW50c2V0c3RyaWN0ZXJyb3JjaGVja2luZzAyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9kb20veGh0bWwvbGV2ZWwzL2NvcmUvZG9jdW1lbnRzZXRzdHJpY3RlcnJvcmNoZWNr
aW5nMDItZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsMiBAQAogVGVzdAlodHRwOi8vd3d3LnczLm9y
Zy8yMDAxL0RPTS1UZXN0LVN1aXRlL2xldmVsMy9jb3JlL2RvY3VtZW50c2V0c3RyaWN0ZXJyb3Jj
aGVja2luZzAyCi1TdGF0dXMJZmFpbHVyZQotTWVzc2FnZQlOQU1FU1BBQ0VfRVJSX2RvY3VtZW50
c2V0c3RyaWN0ZXJyb3JjaGVja2luZzAyOiBhc3NlcnRUcnVlIGZhaWxlZAorU3RhdHVzCVN1Y2Nl
c3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L2NyZWF0ZUF0dHJp
YnV0ZU5TLW5hbWVzcGFjZS1lcnItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
RG9jdW1lbnQvY3JlYXRlQXR0cmlidXRlTlMtbmFtZXNwYWNlLWVyci1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2NkZjI1NgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L2NyZWF0ZUF0dHJpYnV0ZU5TLW5hbWVz
cGFjZS1lcnItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNTIgQEAKK2NyZWF0ZUF0dGlyYnV0ZU5T
IHRlc3RzIGFkYXB0ZWQgZnJvbSBjcmVhdGVFbGVtZW50TlMgdGVzdHMgYXR0YWNoZWQgdG8gd2Vi
a2l0IGJ1ZyAxNjgzMworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBkb2N1
bWVudC5jcmVhdGVBdHRyaWJ1dGVOUygpLnRvU3RyaW5nKCkgaXMgIltvYmplY3QgQXR0cl0iCitQ
QVNTIGRvY3VtZW50LmNyZWF0ZUF0dHJpYnV0ZU5TKCJodHRwOi8vd3d3LmV4YW1wbGUuY29tIiku
dG9TdHJpbmcoKSBpcyAiW29iamVjdCBBdHRyXSIKK1BBU1MgY3JlYXRlQXR0cmlidXRlTlModW5k
ZWZpbmVkLCB1bmRlZmluZWQpCitQQVNTIGNyZWF0ZUF0dHJpYnV0ZU5TKG51bGwsIHVuZGVmaW5l
ZCkKK1BBU1MgY3JlYXRlQXR0cmlidXRlTlModW5kZWZpbmVkLCBudWxsKTsgdGhyZXcgSU5WQUxJ
RF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUF0dHJpYnV0ZU5TKG51bGwsIG51bGwpOyB0aHJl
dyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlQXR0cmlidXRlTlMobnVsbCwgIiIp
OyB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlQXR0cmlidXRlTlMoIiIs
IG51bGwpOyB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlQXR0cmlidXRl
TlMoIiIsICIiKTsgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUF0dHJp
YnV0ZU5TKG51bGwsICI8ZGl2PiIpOyB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1Mg
Y3JlYXRlQXR0cmlidXRlTlMobnVsbCwgIjBkaXYiKTsgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJf
RVJSCitQQVNTIGNyZWF0ZUF0dHJpYnV0ZU5TKG51bGwsICJkaSB2Iik7IHRocmV3IElOVkFMSURf
Q0hBUkFDVEVSX0VSUgorUEFTUyBjcmVhdGVBdHRyaWJ1dGVOUyhudWxsLCAiZGk8diIpOyB0aHJl
dyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlQXR0cmlidXRlTlMobnVsbCwgIi1k
aXYiKTsgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUF0dHJpYnV0ZU5T
KG51bGwsICIuZGl2Iik7IHRocmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgorUEFTUyBjcmVhdGVB
dHRyaWJ1dGVOUygiaHR0cDovL2V4YW1wbGUuY29tLyIsICI8ZGl2PiIpOyB0aHJldyBJTlZBTElE
X0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlQXR0cmlidXRlTlMoImh0dHA6Ly9leGFtcGxlLmNv
bS8iLCAiMGRpdiIpOyB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlQXR0
cmlidXRlTlMoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiZGk8diIpOyB0aHJldyBJTlZBTElEX0NI
QVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlQXR0cmlidXRlTlMoImh0dHA6Ly9leGFtcGxlLmNvbS8i
LCAiLWRpdiIpOyB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlQXR0cmli
dXRlTlMoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiLmRpdiIpOyB0aHJldyBJTlZBTElEX0NIQVJB
Q1RFUl9FUlIKK1BBU1MgY3JlYXRlQXR0cmlidXRlTlMobnVsbCwgIjpkaXYiKTsgdGhyZXcgTkFN
RVNQQUNFX0VSUgorUEFTUyBjcmVhdGVBdHRyaWJ1dGVOUyhudWxsLCAiZGl2OiIpOyB0aHJldyBO
QU1FU1BBQ0VfRVJSCitQQVNTIGNyZWF0ZUF0dHJpYnV0ZU5TKCJodHRwOi8vZXhhbXBsZS5jb20v
IiwgIjpkaXYiKTsgdGhyZXcgTkFNRVNQQUNFX0VSUgorUEFTUyBjcmVhdGVBdHRyaWJ1dGVOUygi
aHR0cDovL2V4YW1wbGUuY29tLyIsICJkaXY6Iik7IHRocmV3IE5BTUVTUEFDRV9FUlIKK1BBU1Mg
Y3JlYXRlQXR0cmlidXRlTlMobnVsbCwgImQ6aXYiKTsgdGhyZXcgTkFNRVNQQUNFX0VSUgorRkFJ
TCBjcmVhdGVBdHRyaWJ1dGVOUyhudWxsLCAiYTpiOmMiKTsgdmFsaWQgWE1MIG5hbWUsIGludmFs
aWQgUU5hbWU7IGV4cGVjdGVkIE5BTUVTUEFDRV9FUlIsIHRocmV3IElOVkFMSURfQ0hBUkFDVEVS
X0VSUgorRkFJTCBjcmVhdGVBdHRyaWJ1dGVOUygiaHR0cDovL2V4YW1wbGUuY29tLyIsICJhOmI6
YyIpOyB2YWxpZCBYTUwgbmFtZSwgaW52YWxpZCBRTmFtZTsgZXhwZWN0ZWQgTkFNRVNQQUNFX0VS
UiwgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitGQUlMIGNyZWF0ZUF0dHJpYnV0ZU5TKG51
bGwsICJhOjpjIik7IHZhbGlkIFhNTCBuYW1lLCBpbnZhbGlkIFFOYW1lOyBleHBlY3RlZCBOQU1F
U1BBQ0VfRVJSLCB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK0ZBSUwgY3JlYXRlQXR0cmli
dXRlTlMoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiYTo6YyIpOyB2YWxpZCBYTUwgbmFtZSwgaW52
YWxpZCBRTmFtZTsgZXhwZWN0ZWQgTkFNRVNQQUNFX0VSUiwgdGhyZXcgSU5WQUxJRF9DSEFSQUNU
RVJfRVJSCitQQVNTIGNyZWF0ZUF0dHJpYnV0ZU5TKCJodHRwOi8vZXhhbXBsZS5jb20vIiwgImE6
MCIpOyB2YWxpZCBYTUwgbmFtZSwgbm90IGEgdmFsaWQgUU5hbWU7IHRocmV3IElOVkFMSURfQ0hB
UkFDVEVSX0VSUgorUEFTUyBjcmVhdGVBdHRyaWJ1dGVOUygiaHR0cDovL2V4YW1wbGUuY29tLyIs
ICIwOmEiKTsgMCBhdCBzdGFydCBtYWtlcyBpdCBub3QgYSB2YWxpZCBYTUwgbmFtZTsgdGhyZXcg
SU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUF0dHJpYnV0ZU5TKCJodHRwOi8vZXhh
bXBsZS5jb20vIiwgImE6XyIpCitGQUlMIGNyZWF0ZUF0dHJpYnV0ZU5TKCJodHRwOi8vZXhhbXBs
ZS5jb20vIiwgImE64K+GIik7IG5vbi1BU0NJSSBjaGFyYWN0ZXIgYWZ0ZXIgY29sb24gaXMgQ29t
YmluaW5nQ2hhciwgd2hpY2ggaXMgTkNOYW1lQ2hhciBidXQgbm90IChMZXR0ZXIgfCAiXyIpIHNv
IGludmFsaWQgYXQgc3RhcnQgb2YgTkNOYW1lIChidXQgc3RpbGwgYSB2YWxpZCBYTUwgbmFtZSwg
aGVuY2Ugbm90IElOVkFMSURfQ0hBUkFDVEVSX0VSUik7IGV4cGVjdGVkIE5BTUVTUEFDRV9FUlIs
IHRocmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgorUEFTUyBjcmVhdGVBdHRyaWJ1dGVOUygiaHR0
cDovL2V4YW1wbGUuY29tLyIsICLgr4Y6YSIpOyBub24tQVNDSUkgY2hhcmFjdGVyIGFmdGVyIGNv
bG9uIGlzIENvbWJpbmluZ0NoYXIsIHdoaWNoIGlzIE5DTmFtZUNoYXIgYnV0IG5vdCAoTGV0dGVy
IHwgIl8iKSBzbyBpbnZhbGlkIGF0IHN0YXJ0IG9mIE5DTmFtZSAoR2Vja28gY2hvb3NlcyB0byB0
aHJvdyBOQU1FU1BBQ0VfRVJSIGhlcmUsIGJ1dCBlaXRoZXIgaXMgdmFsaWQgYXMgdGhpcyBpcyBi
b3RoIGFuIGludmFsaWQgWE1MIG5hbWUgYW5kIGFuIGludmFsaWQgUU5hbWUpOyB0aHJldyBJTlZB
TElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlQXR0cmlidXRlTlMoImh0dHA6Ly9leGFtcGxl
LmNvbS8iLCAiYTph4K+GIikKK1BBU1MgY3JlYXRlQXR0cmlidXRlTlMoImh0dHA6Ly9leGFtcGxl
LmNvbS8iLCAiYeCvhjphIikKK1BBU1MgY3JlYXRlQXR0cmlidXRlTlMoImh0dHA6Ly9leGFtcGxl
LmNvbS8iLCAieG1sOnRlc3QiKTsgYmluZGluZyB4bWwgcHJlZml4IHdyb25nOyB0aHJldyBOQU1F
U1BBQ0VfRVJSCitQQVNTIGNyZWF0ZUF0dHJpYnV0ZU5TKCJodHRwOi8vZXhhbXBsZS5jb20vIiwg
InhtbG5zOnRlc3QiKTsgYmluZGluZyB4bWxucyBwcmVmaXggd3Jvbmc7IHRocmV3IE5BTUVTUEFD
RV9FUlIKK1BBU1MgY3JlYXRlQXR0cmlidXRlTlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1s
bnMvIiwgIng6dGVzdCIpOyBiaW5kaW5nIG5hbWVzcGFjZSBuYW1lc3BhY2UgdG8gd3JvbmcgcHJl
Zml4OyB0aHJldyBOQU1FU1BBQ0VfRVJSCitQQVNTIGNyZWF0ZUF0dHJpYnV0ZU5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3htbG5zLyIsICJ4bWxuczp0ZXN0IikKK1BBU1MgY3JlYXRlQXR0cmli
dXRlTlMoImh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIsICJ4bWw6dGVzdCIp
CitQQVNTIGNyZWF0ZUF0dHJpYnV0ZU5TKCJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1l
c3BhY2UiLCAieDp0ZXN0IikKK1BBU1MgY3JlYXRlQXR0cmlidXRlTlMoImh0dHA6Ly9leGFtcGxl
LmNvbS8iLCAieG1sbnMiKTsgdGhyZXcgTkFNRVNQQUNFX0VSUgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL0RvY3VtZW50L2NyZWF0ZUF0dHJpYnV0ZU5TLW5hbWVzcGFjZS1lcnIuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L2NyZWF0ZUF0dHJpYnV0ZU5TLW5hbWVzcGFj
ZS1lcnIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMGNiMmJkCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvY3JlYXRlQXR0
cmlidXRlTlMtbmFtZXNwYWNlLWVyci5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBI
VE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY3JlYXRlQXR0cmli
dXRlTlMtbmFtZXNwYWNlLWVyci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9jcmVhdGVFbGVtZW50TlMt
bmFtZXNwYWNlLWVyci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVu
dC9jcmVhdGVFbGVtZW50TlMtbmFtZXNwYWNlLWVyci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzYzNTkxNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L2NyZWF0ZUVsZW1lbnROUy1uYW1lc3BhY2UtZXJyLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzOCBAQAorY3JlYXRlRWxlbWVudE5TIHRlc3RzIGZyb20g
bW96aWxsYSwgYXR0YWNoZWQgdG8gd2Via2l0IGJ1ZyAxNjgzMworCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoKS50b1N0cmluZygp
IGlzICJbb2JqZWN0IEVsZW1lbnRdIgorUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cuZXhhbXBsZS5jb20iKS50b1N0cmluZygpIGlzICJbb2JqZWN0IEVsZW1lbnRdIgor
SFRNTCB0ZXN0czoKK1BBU1MgY3JlYXRlRWxlbWVudE5TKCwgKQorUEFTUyBjcmVhdGVFbGVtZW50
TlMobnVsbCwgKQorUEFTUyBjcmVhdGVFbGVtZW50TlModW5kZWZpbmVkLCBudWxsKTsgdGhyZXcg
SU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUVsZW1lbnROUyhudWxsLCBudWxsKTsg
dGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUVsZW1lbnROUyhudWxsLCAi
Iik7IHRocmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgorUEFTUyBjcmVhdGVFbGVtZW50TlMoIiIs
IG51bGwpOyB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlRWxlbWVudE5T
KCIiLCAiIik7IHRocmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgorUEFTUyBjcmVhdGVFbGVtZW50
TlMobnVsbCwgIjxkaXY+Iik7IHRocmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgorUEFTUyBjcmVh
dGVFbGVtZW50TlMobnVsbCwgIjBkaXYiKTsgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitQ
QVNTIGNyZWF0ZUVsZW1lbnROUyhudWxsLCAiZGkgdiIpOyB0aHJldyBJTlZBTElEX0NIQVJBQ1RF
Ul9FUlIKK1BBU1MgY3JlYXRlRWxlbWVudE5TKG51bGwsICJkaTx2Iik7IHRocmV3IElOVkFMSURf
Q0hBUkFDVEVSX0VSUgorUEFTUyBjcmVhdGVFbGVtZW50TlMobnVsbCwgIi1kaXYiKTsgdGhyZXcg
SU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUVsZW1lbnROUyhudWxsLCAiLmRpdiIp
OyB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlRWxlbWVudE5TKCJodHRw
Oi8vZXhhbXBsZS5jb20vIiwgIjxkaXY+Iik7IHRocmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgor
UEFTUyBjcmVhdGVFbGVtZW50TlMoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiMGRpdiIpOyB0aHJl
dyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vZXhh
bXBsZS5jb20vIiwgImRpPHYiKTsgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL2V4YW1wbGUuY29tLyIsICItZGl2Iik7IHRocmV3IElOVkFM
SURfQ0hBUkFDVEVSX0VSUgorUEFTUyBjcmVhdGVFbGVtZW50TlMoImh0dHA6Ly9leGFtcGxlLmNv
bS8iLCAiLmRpdiIpOyB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlRWxl
bWVudE5TKG51bGwsICI6ZGl2Iik7IHRocmV3IE5BTUVTUEFDRV9FUlIKK1BBU1MgY3JlYXRlRWxl
bWVudE5TKG51bGwsICJkaXY6Iik7IHRocmV3IE5BTUVTUEFDRV9FUlIKK1BBU1MgY3JlYXRlRWxl
bWVudE5TKCJodHRwOi8vZXhhbXBsZS5jb20vIiwgIjpkaXYiKTsgdGhyZXcgTkFNRVNQQUNFX0VS
UgorUEFTUyBjcmVhdGVFbGVtZW50TlMoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiZGl2OiIpOyB0
aHJldyBOQU1FU1BBQ0VfRVJSCitQQVNTIGNyZWF0ZUVsZW1lbnROUyhudWxsLCAiZDppdiIpOyB0
aHJldyBOQU1FU1BBQ0VfRVJSCitGQUlMIGNyZWF0ZUVsZW1lbnROUyhudWxsLCAiYTpiOmMiKTsg
dmFsaWQgWE1MIG5hbWUsIGludmFsaWQgUU5hbWU7IGV4cGVjdGVkIE5BTUVTUEFDRV9FUlIsIHRo
cmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgorRkFJTCBjcmVhdGVFbGVtZW50TlMoImh0dHA6Ly9l
eGFtcGxlLmNvbS8iLCAiYTpiOmMiKTsgdmFsaWQgWE1MIG5hbWUsIGludmFsaWQgUU5hbWU7IGV4
cGVjdGVkIE5BTUVTUEFDRV9FUlIsIHRocmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgorRkFJTCBj
cmVhdGVFbGVtZW50TlMobnVsbCwgImE6OmMiKTsgdmFsaWQgWE1MIG5hbWUsIGludmFsaWQgUU5h
bWU7IGV4cGVjdGVkIE5BTUVTUEFDRV9FUlIsIHRocmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgor
RkFJTCBjcmVhdGVFbGVtZW50TlMoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiYTo6YyIpOyB2YWxp
ZCBYTUwgbmFtZSwgaW52YWxpZCBRTmFtZTsgZXhwZWN0ZWQgTkFNRVNQQUNFX0VSUiwgdGhyZXcg
SU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUVsZW1lbnROUygiaHR0cDovL2V4YW1w
bGUuY29tLyIsICJhOjAiKTsgdmFsaWQgWE1MIG5hbWUsIG5vdCBhIHZhbGlkIFFOYW1lOyB0aHJl
dyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vZXhh
bXBsZS5jb20vIiwgIjA6YSIpOyAwIGF0IHN0YXJ0IG1ha2VzIGl0IG5vdCBhIHZhbGlkIFhNTCBu
YW1lOyB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vZXhhbXBsZS5jb20vIiwgImE6XyIpCitGQUlMIGNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L2V4YW1wbGUuY29tLyIsICJhOuCvhiIpOyBub24tQVNDSUkgY2hhcmFjdGVyIGFmdGVyIGNvbG9u
IGlzIENvbWJpbmluZ0NoYXIsIHdoaWNoIGlzIE5DTmFtZUNoYXIgYnV0IG5vdCAoTGV0dGVyIHwg
Il8iKSBzbyBpbnZhbGlkIGF0IHN0YXJ0IG9mIE5DTmFtZSAoYnV0IHN0aWxsIGEgdmFsaWQgWE1M
IG5hbWUsIGhlbmNlIG5vdCBJTlZBTElEX0NIQVJBQ1RFUl9FUlIpOyBleHBlY3RlZCBOQU1FU1BB
Q0VfRVJSLCB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vZXhhbXBsZS5jb20vIiwgIuCvhjphIik7IG5vbi1BU0NJSSBjaGFyYWN0ZXIgYWZ0
ZXIgY29sb24gaXMgQ29tYmluaW5nQ2hhciwgd2hpY2ggaXMgTkNOYW1lQ2hhciBidXQgbm90IChM
ZXR0ZXIgfCAiXyIpIHNvIGludmFsaWQgYXQgc3RhcnQgb2YgTkNOYW1lIChHZWNrbyBjaG9vc2Vz
IHRvIHRocm93IE5BTUVTUEFDRV9FUlIgaGVyZSwgYnV0IGVpdGhlciBpcyB2YWxpZCBhcyB0aGlz
IGlzIGJvdGggYW4gaW52YWxpZCBYTUwgbmFtZSBhbmQgYW4gaW52YWxpZCBRTmFtZSk7IHRocmV3
IElOVkFMSURfQ0hBUkFDVEVSX0VSUgorUEFTUyBjcmVhdGVFbGVtZW50TlMoImh0dHA6Ly9leGFt
cGxlLmNvbS8iLCAiYTph4K+GIikKK1BBU1MgY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vZXhhbXBs
ZS5jb20vIiwgImHgr4Y6YSIpCitQQVNTIGNyZWF0ZUVsZW1lbnROUygiaHR0cDovL2V4YW1wbGUu
Y29tLyIsICJ4bWw6dGVzdCIpOyBiaW5kaW5nIHhtbCBwcmVmaXggd3Jvbmc7IHRocmV3IE5BTUVT
UEFDRV9FUlIKK1BBU1MgY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vZXhhbXBsZS5jb20vIiwgInht
bG5zOnRlc3QiKTsgYmluZGluZyB4bWxucyBwcmVmaXggd3Jvbmc7IHRocmV3IE5BTUVTUEFDRV9F
UlIKK1BBU1MgY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyIs
ICJ4OnRlc3QiKTsgYmluZGluZyBuYW1lc3BhY2UgbmFtZXNwYWNlIHRvIHdyb25nIHByZWZpeDsg
dGhyZXcgTkFNRVNQQUNFX0VSUgorUEFTUyBjcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAveG1sbnMvIiwgInhtbG5zOnRlc3QiKQorUEFTUyBjcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIsICJ4bWw6dGVzdCIpCitQQVNTIGNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIiwgIng6
dGVzdCIpCitQQVNTIGNyZWF0ZUVsZW1lbnQoKQorUEFTUyBjcmVhdGVFbGVtZW50KG51bGwsIHVu
ZGVmaW5lZCk7IHRocmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgorUEFTUyBjcmVhdGVFbGVtZW50
KCIiLCB1bmRlZmluZWQpOyB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRl
RWxlbWVudCgiPGRpdj4iLCB1bmRlZmluZWQpOyB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIK
K1BBU1MgY3JlYXRlRWxlbWVudCgiMGRpdiIsIHVuZGVmaW5lZCk7IHRocmV3IElOVkFMSURfQ0hB
UkFDVEVSX0VSUgorUEFTUyBjcmVhdGVFbGVtZW50KCJkaSB2IiwgdW5kZWZpbmVkKTsgdGhyZXcg
SU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUVsZW1lbnQoImRpPHYiLCB1bmRlZmlu
ZWQpOyB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlRWxlbWVudCgiLWRp
diIsIHVuZGVmaW5lZCk7IHRocmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgorUEFTUyBjcmVhdGVF
bGVtZW50KCIuZGl2IiwgdW5kZWZpbmVkKTsgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitQ
QVNTIGNyZWF0ZUVsZW1lbnQoIjoiKTsgdmFsaWQgWE1MIG5hbWUsIGludmFsaWQgUU5hbWUKK1BB
U1MgY3JlYXRlRWxlbWVudCgiOmRpdiIpOyB2YWxpZCBYTUwgbmFtZSwgaW52YWxpZCBRTmFtZQor
UEFTUyBjcmVhdGVFbGVtZW50KCJkaXY6Iik7IHZhbGlkIFhNTCBuYW1lLCBpbnZhbGlkIFFOYW1l
CitQQVNTIGNyZWF0ZUVsZW1lbnQoImQ6aXYiKQorUEFTUyBjcmVhdGVFbGVtZW50KCJhOmI6YyIp
OyB2YWxpZCBYTUwgbmFtZSwgaW52YWxpZCBRTmFtZQorUEFTUyBjcmVhdGVFbGVtZW50KCJhOjpj
Iik7IHZhbGlkIFhNTCBuYW1lLCBpbnZhbGlkIFFOYW1lCitQQVNTIGNyZWF0ZUVsZW1lbnQoImE6
OmM6Iik7IHZhbGlkIFhNTCBuYW1lLCBpbnZhbGlkIFFOYW1lCitQQVNTIGNyZWF0ZUVsZW1lbnQo
ImE6MCIpOyB2YWxpZCBYTUwgbmFtZSwgbm90IGEgdmFsaWQgUU5hbWUKK1BBU1MgY3JlYXRlRWxl
bWVudCgiMDphIiwgdW5kZWZpbmVkKTsgMCBhdCBzdGFydCBtYWtlcyBpdCBub3QgYSB2YWxpZCBY
TUwgbmFtZTsgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUVsZW1lbnQo
ImE6XyIpCitQQVNTIGNyZWF0ZUVsZW1lbnQoImE64K+GIik7IG5vbi1BU0NJSSBjaGFyYWN0ZXIg
YWZ0ZXIgY29sb24gaXMgQ29tYmluaW5nQ2hhciwgd2hpY2ggaXMgdmFsaWQgaW4gcHJlLW5hbWVz
cGFjZSBYTUwKK1BBU1MgY3JlYXRlRWxlbWVudCgi4K+GOmEiLCB1bmRlZmluZWQpOyBub3QgYSB2
YWxpZCBzdGFydCBjaGFyYWN0ZXI7IHRocmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgorUEFTUyBj
cmVhdGVFbGVtZW50KCJhOmHgr4YiKQorUEFTUyBjcmVhdGVFbGVtZW50KCJh4K+GOmEiKQorUEFT
UyBjcmVhdGVFbGVtZW50KCJ4bWw6dGVzdCIpCitQQVNTIGNyZWF0ZUVsZW1lbnQoInhtbG5zOnRl
c3QiKQorUEFTUyBjcmVhdGVFbGVtZW50KCJ4OnRlc3QiKQorUEFTUyBjcmVhdGVFbGVtZW50KCJ4
bWxuczp0ZXN0IikKK1BBU1MgY3JlYXRlRWxlbWVudCgiU09BUC1FTlY6Qm9keSIpCitYSFRNTCBj
cmVhdGVFbGVtZW50IHRlc3RzOgorUEFTUyBjcmVhdGVFbGVtZW50KCkKK1BBU1MgY3JlYXRlRWxl
bWVudChudWxsLCB1bmRlZmluZWQpOyB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1Mg
Y3JlYXRlRWxlbWVudCgiIiwgdW5kZWZpbmVkKTsgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJS
CitQQVNTIGNyZWF0ZUVsZW1lbnQoIjxkaXY+IiwgdW5kZWZpbmVkKTsgdGhyZXcgSU5WQUxJRF9D
SEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUVsZW1lbnQoIjBkaXYiLCB1bmRlZmluZWQpOyB0aHJl
dyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlRWxlbWVudCgiZGkgdiIsIHVuZGVm
aW5lZCk7IHRocmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgorUEFTUyBjcmVhdGVFbGVtZW50KCJk
aTx2IiwgdW5kZWZpbmVkKTsgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0
ZUVsZW1lbnQoIi1kaXYiLCB1bmRlZmluZWQpOyB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIK
K1BBU1MgY3JlYXRlRWxlbWVudCgiLmRpdiIsIHVuZGVmaW5lZCk7IHRocmV3IElOVkFMSURfQ0hB
UkFDVEVSX0VSUgorUEFTUyBjcmVhdGVFbGVtZW50KCI6Iik7IHZhbGlkIFhNTCBuYW1lLCBpbnZh
bGlkIFFOYW1lCitQQVNTIGNyZWF0ZUVsZW1lbnQoIjpkaXYiKTsgdmFsaWQgWE1MIG5hbWUsIGlu
dmFsaWQgUU5hbWUKK1BBU1MgY3JlYXRlRWxlbWVudCgiZGl2OiIpOyB2YWxpZCBYTUwgbmFtZSwg
aW52YWxpZCBRTmFtZQorUEFTUyBjcmVhdGVFbGVtZW50KCJkOml2IikKK1BBU1MgY3JlYXRlRWxl
bWVudCgiYTpiOmMiKTsgdmFsaWQgWE1MIG5hbWUsIGludmFsaWQgUU5hbWUKK1BBU1MgY3JlYXRl
RWxlbWVudCgiYTo6YyIpOyB2YWxpZCBYTUwgbmFtZSwgaW52YWxpZCBRTmFtZQorUEFTUyBjcmVh
dGVFbGVtZW50KCJhOjpjOiIpOyB2YWxpZCBYTUwgbmFtZSwgaW52YWxpZCBRTmFtZQorUEFTUyBj
cmVhdGVFbGVtZW50KCJhOjAiKTsgdmFsaWQgWE1MIG5hbWUsIG5vdCBhIHZhbGlkIFFOYW1lCitQ
QVNTIGNyZWF0ZUVsZW1lbnQoIjA6YSIsIHVuZGVmaW5lZCk7IDAgYXQgc3RhcnQgbWFrZXMgaXQg
bm90IGEgdmFsaWQgWE1MIG5hbWU7IHRocmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgorUEFTUyBj
cmVhdGVFbGVtZW50KCJhOl8iKQorUEFTUyBjcmVhdGVFbGVtZW50KCJhOuCvhiIpOyBub24tQVND
SUkgY2hhcmFjdGVyIGFmdGVyIGNvbG9uIGlzIENvbWJpbmluZ0NoYXIsIHdoaWNoIGlzIHZhbGlk
IGluIHByZS1uYW1lc3BhY2UgWE1MCitQQVNTIGNyZWF0ZUVsZW1lbnQoIuCvhjphIiwgdW5kZWZp
bmVkKTsgbm90IGEgdmFsaWQgc3RhcnQgY2hhcmFjdGVyOyB0aHJldyBJTlZBTElEX0NIQVJBQ1RF
Ul9FUlIKK1BBU1MgY3JlYXRlRWxlbWVudCgiYTph4K+GIikKK1BBU1MgY3JlYXRlRWxlbWVudCgi
YeCvhjphIikKK1BBU1MgY3JlYXRlRWxlbWVudCgieG1sOnRlc3QiKQorUEFTUyBjcmVhdGVFbGVt
ZW50KCJ4bWxuczp0ZXN0IikKK1BBU1MgY3JlYXRlRWxlbWVudCgieDp0ZXN0IikKK1BBU1MgY3Jl
YXRlRWxlbWVudCgieG1sbnM6dGVzdCIpCitQQVNTIGNyZWF0ZUVsZW1lbnQoIlNPQVAtRU5WOkJv
ZHkiKQorWE1MIGNyZWF0ZUVsZW1lbnQgdGVzdHM6CitQQVNTIGNyZWF0ZUVsZW1lbnQoKQorUEFT
UyBjcmVhdGVFbGVtZW50KG51bGwsIHVuZGVmaW5lZCk7IHRocmV3IElOVkFMSURfQ0hBUkFDVEVS
X0VSUgorUEFTUyBjcmVhdGVFbGVtZW50KCIiLCB1bmRlZmluZWQpOyB0aHJldyBJTlZBTElEX0NI
QVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlRWxlbWVudCgiPGRpdj4iLCB1bmRlZmluZWQpOyB0aHJl
dyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIKK1BBU1MgY3JlYXRlRWxlbWVudCgiMGRpdiIsIHVuZGVm
aW5lZCk7IHRocmV3IElOVkFMSURfQ0hBUkFDVEVSX0VSUgorUEFTUyBjcmVhdGVFbGVtZW50KCJk
aSB2IiwgdW5kZWZpbmVkKTsgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0
ZUVsZW1lbnQoImRpPHYiLCB1bmRlZmluZWQpOyB0aHJldyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIK
K1BBU1MgY3JlYXRlRWxlbWVudCgiLWRpdiIsIHVuZGVmaW5lZCk7IHRocmV3IElOVkFMSURfQ0hB
UkFDVEVSX0VSUgorUEFTUyBjcmVhdGVFbGVtZW50KCIuZGl2IiwgdW5kZWZpbmVkKTsgdGhyZXcg
SU5WQUxJRF9DSEFSQUNURVJfRVJSCitQQVNTIGNyZWF0ZUVsZW1lbnQoIjoiKTsgdmFsaWQgWE1M
IG5hbWUsIGludmFsaWQgUU5hbWUKK1BBU1MgY3JlYXRlRWxlbWVudCgiOmRpdiIpOyB2YWxpZCBY
TUwgbmFtZSwgaW52YWxpZCBRTmFtZQorUEFTUyBjcmVhdGVFbGVtZW50KCJkaXY6Iik7IHZhbGlk
IFhNTCBuYW1lLCBpbnZhbGlkIFFOYW1lCitQQVNTIGNyZWF0ZUVsZW1lbnQoImQ6aXYiKQorUEFT
UyBjcmVhdGVFbGVtZW50KCJhOmI6YyIpOyB2YWxpZCBYTUwgbmFtZSwgaW52YWxpZCBRTmFtZQor
UEFTUyBjcmVhdGVFbGVtZW50KCJhOjpjIik7IHZhbGlkIFhNTCBuYW1lLCBpbnZhbGlkIFFOYW1l
CitQQVNTIGNyZWF0ZUVsZW1lbnQoImE6OmM6Iik7IHZhbGlkIFhNTCBuYW1lLCBpbnZhbGlkIFFO
YW1lCitQQVNTIGNyZWF0ZUVsZW1lbnQoImE6MCIpOyB2YWxpZCBYTUwgbmFtZSwgbm90IGEgdmFs
aWQgUU5hbWUKK1BBU1MgY3JlYXRlRWxlbWVudCgiMDphIiwgdW5kZWZpbmVkKTsgMCBhdCBzdGFy
dCBtYWtlcyBpdCBub3QgYSB2YWxpZCBYTUwgbmFtZTsgdGhyZXcgSU5WQUxJRF9DSEFSQUNURVJf
RVJSCitQQVNTIGNyZWF0ZUVsZW1lbnQoImE6XyIpCitQQVNTIGNyZWF0ZUVsZW1lbnQoImE64K+G
Iik7IG5vbi1BU0NJSSBjaGFyYWN0ZXIgYWZ0ZXIgY29sb24gaXMgQ29tYmluaW5nQ2hhciwgd2hp
Y2ggaXMgdmFsaWQgaW4gcHJlLW5hbWVzcGFjZSBYTUwKK1BBU1MgY3JlYXRlRWxlbWVudCgi4K+G
OmEiLCB1bmRlZmluZWQpOyBub3QgYSB2YWxpZCBzdGFydCBjaGFyYWN0ZXI7IHRocmV3IElOVkFM
SURfQ0hBUkFDVEVSX0VSUgorUEFTUyBjcmVhdGVFbGVtZW50KCJhOmHgr4YiKQorUEFTUyBjcmVh
dGVFbGVtZW50KCJh4K+GOmEiKQorUEFTUyBjcmVhdGVFbGVtZW50KCJ4bWw6dGVzdCIpCitQQVNT
IGNyZWF0ZUVsZW1lbnQoInhtbG5zOnRlc3QiKQorUEFTUyBjcmVhdGVFbGVtZW50KCJ4OnRlc3Qi
KQorUEFTUyBjcmVhdGVFbGVtZW50KCJ4bWxuczp0ZXN0IikKK1BBU1MgY3JlYXRlRWxlbWVudCgi
U09BUC1FTlY6Qm9keSIpCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvY3Jl
YXRlRWxlbWVudE5TLW5hbWVzcGFjZS1lcnIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0Rv
Y3VtZW50L2NyZWF0ZUVsZW1lbnROUy1uYW1lc3BhY2UtZXJyLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uZTNlOTQ0ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL0RvY3VtZW50L2NyZWF0ZUVsZW1lbnROUy1uYW1lc3BhY2UtZXJyLmh0bWwK
QEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRN
TC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9jcmVhdGVFbGVtZW50TlMtbmFtZXNwYWNlLWVyci5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9Eb2N1bWVudC9yZXNvdXJjZXMvVEVNUExBVEUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L0RvY3VtZW50L3Jlc291cmNlcy9URU1QTEFURS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjE5NTFjNDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9Eb2N1bWVudC9yZXNvdXJjZXMvVEVNUExBVEUuaHRtbApAQCAtMCwwICsxLDEzIEBACis8
IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxo
ZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+
PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0iWU9VUl9KU19GSUxF
X0hFUkUiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvcmVzb3VyY2VzL2NyZWF0ZUF0dHJpYnV0ZU5TLW5hbWVz
cGFjZS1lcnIuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9yZXNvdXJjZXMvY3Jl
YXRlQXR0cmlidXRlTlMtbmFtZXNwYWNlLWVyci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5iZDI1N2MyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vRG9jdW1lbnQvcmVzb3VyY2VzL2NyZWF0ZUF0dHJpYnV0ZU5TLW5hbWVzcGFjZS1lcnIuanMK
QEAgLTAsMCArMSwxMzUgQEAKK2Rlc2NyaXB0aW9uKCJjcmVhdGVBdHRpcmJ1dGVOUyB0ZXN0cyBh
ZGFwdGVkIGZyb20gY3JlYXRlRWxlbWVudE5TIHRlc3RzIGF0dGFjaGVkIHRvIHdlYmtpdCBidWcg
MTY4MzMiKTsKKworZnVuY3Rpb24gYXNzZXJ0KGMsIG0pCit7CisgICAgaWYgKCFjKQorICAgICAg
ICB0ZXN0RmFpbGVkKG0pOworICAgIGVsc2UKKyAgICAgICAgdGVzdFBhc3NlZChtKTsKK30KKwor
ZnVuY3Rpb24gc3RyaW5nRm9yRXhjZXB0aW9uQ29kZShjKQoreworICAgIHZhciBleGNlcHRpb25O
YW1lOworICAgIHN3aXRjaChjKSB7CisgICAgICAgIGNhc2UgRE9NRXhjZXB0aW9uLklOVkFMSURf
Q0hBUkFDVEVSX0VSUjoKKyAgICAgICAgICAgIGV4Y2VwdGlvbk5hbWUgPSAiSU5WQUxJRF9DSEFS
QUNURVJfRVJSIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERPTUV4Y2VwdGlv
bi5OQU1FU1BBQ0VfRVJSOgorICAgICAgICAgICAgZXhjZXB0aW9uTmFtZSA9ICJOQU1FU1BBQ0Vf
RVJSIjsKKyAgICB9CisgICAgaWYgKGV4Y2VwdGlvbk5hbWUpCisgICAgICAgIHJldHVybiBleGNl
cHRpb25OYW1lOyAvLyArICIoIiArIGMgKyAiKSI7CisgICAgcmV0dXJuIGM7Cit9CisKK2Z1bmN0
aW9uIGFzc2VydEVxdWFscyhhY3R1YWwsIGV4cGVjdCwgbSkKK3sKKyAgICBpZiAoYWN0dWFsICE9
PSBleHBlY3QpIHsKKyAgICAgICAgbSArPSAiOyBleHBlY3RlZCAiICsgc3RyaW5nRm9yRXhjZXB0
aW9uQ29kZShleHBlY3QpICsgIiwgdGhyZXcgIiArIHN0cmluZ0ZvckV4Y2VwdGlvbkNvZGUoYWN0
dWFsKTsKKyAgICAgICAgdGVzdEZhaWxlZChtKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtICs9
ICI7IHRocmV3ICIgKyBzdHJpbmdGb3JFeGNlcHRpb25Db2RlKGFjdHVhbCk7OworICAgICAgICB0
ZXN0UGFzc2VkKG0pOworICAgIH0KK30KKwordmFyIGFsbE5TVGVzdHMgPSBbCisgICB7IGFyZ3M6
IFt1bmRlZmluZWQsIHVuZGVmaW5lZF0gfSwKKyAgIHsgYXJnczogW251bGwsIHVuZGVmaW5lZF0g
fSwKKyAgIHsgYXJnczogW3VuZGVmaW5lZCwgbnVsbF0sIGNvZGU6IDUgfSwKKyAgIHsgYXJnczog
W251bGwsIG51bGxdLCBjb2RlOiA1IH0sCisgICB7IGFyZ3M6IFtudWxsLCAiIl0sIGNvZGU6IDUg
fSwKKyAgIHsgYXJnczogWyIiLCBudWxsXSwgY29kZTogNSB9LAorICAgeyBhcmdzOiBbIiIsICIi
XSwgY29kZTogNSB9LAorICAgeyBhcmdzOiBbbnVsbCwgIjxkaXY+Il0sIGNvZGU6IDUgfSwKKyAg
IHsgYXJnczogW251bGwsICIwZGl2Il0sIGNvZGU6IDUgfSwKKyAgIHsgYXJnczogW251bGwsICJk
aSB2Il0sIGNvZGU6IDUgfSwKKyAgIHsgYXJnczogW251bGwsICJkaTx2Il0sIGNvZGU6IDUgfSwK
KyAgIHsgYXJnczogW251bGwsICItZGl2Il0sIGNvZGU6IDUgfSwKKyAgIHsgYXJnczogW251bGws
ICIuZGl2Il0sIGNvZGU6IDUgfSwKKyAgIHsgYXJnczogWyJodHRwOi8vZXhhbXBsZS5jb20vIiwg
IjxkaXY+Il0sIGNvZGU6IDUgfSwKKyAgIHsgYXJnczogWyJodHRwOi8vZXhhbXBsZS5jb20vIiwg
IjBkaXYiXSwgY29kZTogNSB9LAorICAgeyBhcmdzOiBbImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAi
ZGk8diJdLCBjb2RlOiA1IH0sCisgICB7IGFyZ3M6IFsiaHR0cDovL2V4YW1wbGUuY29tLyIsICIt
ZGl2Il0sIGNvZGU6IDUgfSwKKyAgIHsgYXJnczogWyJodHRwOi8vZXhhbXBsZS5jb20vIiwgIi5k
aXYiXSwgY29kZTogNSB9LAorICAgeyBhcmdzOiBbbnVsbCwgIjpkaXYiXSwgY29kZTogMTQgfSwK
KyAgIHsgYXJnczogW251bGwsICJkaXY6Il0sIGNvZGU6IDE0IH0sCisgICB7IGFyZ3M6IFsiaHR0
cDovL2V4YW1wbGUuY29tLyIsICI6ZGl2Il0sIGNvZGU6IDE0IH0sCisgICB7IGFyZ3M6IFsiaHR0
cDovL2V4YW1wbGUuY29tLyIsICJkaXY6Il0sIGNvZGU6IDE0IH0sCisgICB7IGFyZ3M6IFtudWxs
LCAiZDppdiJdLCBjb2RlOiAxNCB9LAorICAgeyBhcmdzOiBbbnVsbCwgImE6YjpjIl0sIGNvZGU6
IDE0LCBtZXNzYWdlOiAidmFsaWQgWE1MIG5hbWUsIGludmFsaWQgUU5hbWUiIH0sCisgICB7IGFy
Z3M6IFsiaHR0cDovL2V4YW1wbGUuY29tLyIsICJhOmI6YyJdLCBjb2RlOiAxNCwgbWVzc2FnZTog
InZhbGlkIFhNTCBuYW1lLCBpbnZhbGlkIFFOYW1lIiB9LAorICAgeyBhcmdzOiBbbnVsbCwgImE6
OmMiXSwgY29kZTogMTQsIG1lc3NhZ2U6ICJ2YWxpZCBYTUwgbmFtZSwgaW52YWxpZCBRTmFtZSIg
fSwKKyAgIHsgYXJnczogWyJodHRwOi8vZXhhbXBsZS5jb20vIiwgImE6OmMiXSwgY29kZTogMTQs
IG1lc3NhZ2U6ICJ2YWxpZCBYTUwgbmFtZSwgaW52YWxpZCBRTmFtZSIgfSwKKyAgIHsgYXJnczog
WyJodHRwOi8vZXhhbXBsZS5jb20vIiwgImE6MCJdLCBjb2RlOiA1LCBtZXNzYWdlOiAidmFsaWQg
WE1MIG5hbWUsIG5vdCBhIHZhbGlkIFFOYW1lIiB9LAorICAgeyBhcmdzOiBbImh0dHA6Ly9leGFt
cGxlLmNvbS8iLCAiMDphIl0sIGNvZGU6IDUsIG1lc3NhZ2U6ICIwIGF0IHN0YXJ0IG1ha2VzIGl0
IG5vdCBhIHZhbGlkIFhNTCBuYW1lIiB9LAorICAgeyBhcmdzOiBbImh0dHA6Ly9leGFtcGxlLmNv
bS8iLCAiYTpfIl0gfSwKKyAgIHsgYXJnczogWyJodHRwOi8vZXhhbXBsZS5jb20vIiwgImE6XHUw
QkM2Il0sIGNvZGU6IDE0LAorICAgICBtZXNzYWdlOiAibm9uLUFTQ0lJIGNoYXJhY3RlciBhZnRl
ciBjb2xvbiBpcyBDb21iaW5pbmdDaGFyLCB3aGljaCBpcyAiICsKKyAgICAgICAgICAgICAgIk5D
TmFtZUNoYXIgYnV0IG5vdCAoTGV0dGVyIHwgXCJfXCIpIHNvIGludmFsaWQgYXQgc3RhcnQgb2Yg
IiArCisgICAgICAgICAgICAgICJOQ05hbWUgKGJ1dCBzdGlsbCBhIHZhbGlkIFhNTCBuYW1lLCBo
ZW5jZSBub3QgSU5WQUxJRF9DSEFSQUNURVJfRVJSKSIgfSwKKyAgIHsgYXJnczogWyJodHRwOi8v
ZXhhbXBsZS5jb20vIiwgIlx1MEJDNjphIl0sIGNvZGU6IDUsCisgICAgIG1lc3NhZ2U6ICJub24t
QVNDSUkgY2hhcmFjdGVyIGFmdGVyIGNvbG9uIGlzIENvbWJpbmluZ0NoYXIsIHdoaWNoIGlzICIg
KworICAgICAgICAgICAgICAiTkNOYW1lQ2hhciBidXQgbm90IChMZXR0ZXIgfCBcIl9cIikgc28g
aW52YWxpZCBhdCBzdGFydCBvZiAiICsKKyAgICAgICAgICAgICAgIk5DTmFtZSAoR2Vja28gY2hv
b3NlcyB0byB0aHJvdyBOQU1FU1BBQ0VfRVJSIGhlcmUsIGJ1dCBlaXRoZXIgaXMgdmFsaWQgIiAr
CisgICAgICAgICAgICAgICJhcyB0aGlzIGlzIGJvdGggYW4gaW52YWxpZCBYTUwgbmFtZSBhbmQg
YW4gaW52YWxpZCBRTmFtZSkiIH0sCisgICB7IGFyZ3M6IFsiaHR0cDovL2V4YW1wbGUuY29tLyIs
ICJhOmFcdTBCQzYiXSB9LAorICAgeyBhcmdzOiBbImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiYVx1
MEJDNjphIl0gfSwKKyAgIHsgYXJnczogWyJodHRwOi8vZXhhbXBsZS5jb20vIiwgInhtbDp0ZXN0
Il0sIGNvZGU6IDE0LCBtZXNzYWdlOiAiYmluZGluZyB4bWwgcHJlZml4IHdyb25nIiB9LAorICAg
eyBhcmdzOiBbImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAieG1sbnM6dGVzdCJdLCBjb2RlOiAxNCwg
bWVzc2FnZTogImJpbmRpbmcgeG1sbnMgcHJlZml4IHdyb25nIiB9LAorICAgeyBhcmdzOiBbImh0
dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIiwgIng6dGVzdCJdLCBjb2RlOiAxNCwgbWVzc2Fn
ZTogImJpbmRpbmcgbmFtZXNwYWNlIG5hbWVzcGFjZSB0byB3cm9uZyBwcmVmaXgiIH0sCisgICB7
IGFyZ3M6IFsiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8iLCAieG1sbnM6dGVzdCJdIH0s
CisgICB7IGFyZ3M6IFsiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIiwgInht
bDp0ZXN0Il0gfSwKKyAgIHsgYXJnczogWyJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1l
c3BhY2UiLCAieDp0ZXN0Il0gfSwKKyAgIHsgYXJnczogWyJodHRwOi8vZXhhbXBsZS5jb20vIiwg
InhtbG5zIl0sIGNvZGU6IDE0IH0sIC8vIGZyb20gdGhlIGNyZWF0ZUF0dHJpYnV0ZU5TIHNlY3Rp
b24KK107CisKK2Z1bmN0aW9uIHNvdXJjZWlmeSh2KQoreworICAgIHN3aXRjaCAodHlwZW9mIHYp
IHsKKyAgICBjYXNlICJ1bmRlZmluZWQiOgorICAgICAgICByZXR1cm4gdjsKKworICAgIGNhc2Ug
InN0cmluZyI6CisgICAgICAgIHJldHVybiAnIicgKyB2LnJlcGxhY2UoJyInLCAnXFwiJykgKyAn
Iic7CisKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gU3RyaW5nKHYpOworICAgIH0KK30K
KworZnVuY3Rpb24gcnVuTlNUZXN0cygpCit7CisgICAgdmFyIGNyZWF0ZUZ1bmN0aW9uID0gZG9j
dW1lbnQuY3JlYXRlQXR0cmlidXRlTlM7CisgICAgdmFyIGNyZWF0ZUZ1bmN0aW9uTmFtZSA9ICJj
cmVhdGVBdHRyaWJ1dGVOUyI7CisgICAgdmFyIGRvYyA9IGRvY3VtZW50OworCisgICAgZm9yICh2
YXIgaSA9IDAsIHN6ID0gYWxsTlNUZXN0cy5sZW5ndGg7IGkgPCBzejsgaSsrKSB7CisgICAgICAg
IHZhciB0ZXN0ID0gYWxsTlNUZXN0c1tpXTsKKworICAgICAgICB2YXIgY29kZSA9IC0xOworICAg
ICAgICB2YXIgYXJnU3RyID0gc291cmNlaWZ5KHRlc3QuYXJnc1swXSkgKyAiLCAiICsgc291cmNl
aWZ5KHRlc3QuYXJnc1sxXSk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBjcmVhdGVGdW5j
dGlvbi5hcHBseShkb2MsIHRlc3QuYXJncyk7CisgICAgICAgICAgICB2YXIgbXNnID0gY3JlYXRl
RnVuY3Rpb25OYW1lICsgIigiICsgYXJnU3RyICsgIikiOworICAgICAgICAgICAgaWYgKCJtZXNz
YWdlIiBpbiB0ZXN0KQorICAgICAgICAgICAgICAgIG1zZyArPSAiOyAiICsgdGVzdC5tZXNzYWdl
OworICAgICAgICAgICAgYXNzZXJ0KCEoImNvZGUiIGluIHRlc3QpLCBtc2cpOworICAgICAgICB9
IGNhdGNoIChlKSB7CisgICAgICAgICAgICB2YXIgYXJnU3RyID0gc291cmNlaWZ5KHRlc3QuYXJn
c1swXSkgKyAiLCAiICsgc291cmNlaWZ5KHRlc3QuYXJnc1sxXSk7CisgICAgICAgICAgICBtc2cg
PSBjcmVhdGVGdW5jdGlvbk5hbWUgKyAiKCIgKyBhcmdTdHIgKyAiKSI7CisgICAgICAgICAgICBp
ZiAoIm1lc3NhZ2UiIGluIHRlc3QpCisgICAgICAgICAgICAgICAgbXNnICs9ICI7ICIgKyB0ZXN0
Lm1lc3NhZ2U7CisgICAgICAgICAgICBhc3NlcnRFcXVhbHMoZS5jb2RlLCB0ZXN0LmNvZGUgfHwg
ImV4cGVjdGVkIG5vIGV4Y2VwdGlvbiIsIG1zZyk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8v
IE1veiB0aHJvd3MgYSAiTm90IGVub3VnaCBhcmd1bWVudHMiIGV4Y2VwdGlvbiBpbiB0aGVzZSwg
d2UgZG9uJ3Q6CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvY3VtZW50LmNyZWF0ZUF0dHJpYnV0
ZU5TKCkudG9TdHJpbmcoKSIsICJbb2JqZWN0IEF0dHJdIik7CitzaG91bGRCZUVxdWFsVG9TdHJp
bmcoImRvY3VtZW50LmNyZWF0ZUF0dHJpYnV0ZU5TKFwiaHR0cDovL3d3dy5leGFtcGxlLmNvbVwi
KS50b1N0cmluZygpIiwgIltvYmplY3QgQXR0cl0iKTsKKworcnVuTlNUZXN0cygpOworCit2YXIg
c3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL0RvY3VtZW50L3Jlc291cmNlcy9jcmVhdGVFbGVtZW50TlMtbmFtZXNwYWNlLWVyci5qcyBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L3Jlc291cmNlcy9jcmVhdGVFbGVtZW50TlMt
bmFtZXNwYWNlLWVyci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OWI0
MWFjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvcmVz
b3VyY2VzL2NyZWF0ZUVsZW1lbnROUy1uYW1lc3BhY2UtZXJyLmpzCkBAIC0wLDAgKzEsMTgwIEBA
CitkZXNjcmlwdGlvbigiY3JlYXRlRWxlbWVudE5TIHRlc3RzIGZyb20gbW96aWxsYSwgYXR0YWNo
ZWQgdG8gd2Via2l0IGJ1ZyAxNjgzMyIpOworCitmdW5jdGlvbiBhc3NlcnQoYywgbSkKK3sKKyAg
ICBpZiAoIWMpCisgICAgICAgIHRlc3RGYWlsZWQobSk7CisgICAgZWxzZQorICAgICAgICB0ZXN0
UGFzc2VkKG0pOworfQorCitmdW5jdGlvbiBzdHJpbmdGb3JFeGNlcHRpb25Db2RlKGMpCit7Cisg
ICAgdmFyIGV4Y2VwdGlvbk5hbWU7CisgICAgc3dpdGNoKGMpIHsKKyAgICAgICAgY2FzZSBET01F
eGNlcHRpb24uSU5WQUxJRF9DSEFSQUNURVJfRVJSOgorICAgICAgICAgICAgZXhjZXB0aW9uTmFt
ZSA9ICJJTlZBTElEX0NIQVJBQ1RFUl9FUlIiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgRE9NRXhjZXB0aW9uLk5BTUVTUEFDRV9FUlI6CisgICAgICAgICAgICBleGNlcHRpb25O
YW1lID0gIk5BTUVTUEFDRV9FUlIiOworICAgIH0KKyAgICBpZiAoZXhjZXB0aW9uTmFtZSkKKyAg
ICAgICAgcmV0dXJuIGV4Y2VwdGlvbk5hbWU7IC8vICsgIigiICsgYyArICIpIjsKKyAgICByZXR1
cm4gYzsKK30KKworZnVuY3Rpb24gYXNzZXJ0RXF1YWxzKGFjdHVhbCwgZXhwZWN0LCBtKQorewor
ICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdCkgeworICAgICAgICBtICs9ICI7IGV4cGVjdGVkICIg
KyBzdHJpbmdGb3JFeGNlcHRpb25Db2RlKGV4cGVjdCkgKyAiLCB0aHJldyAiICsgc3RyaW5nRm9y
RXhjZXB0aW9uQ29kZShhY3R1YWwpOworICAgICAgICB0ZXN0RmFpbGVkKG0pOworICAgIH0gZWxz
ZSB7CisgICAgICAgIG0gKz0gIjsgdGhyZXcgIiArIHN0cmluZ0ZvckV4Y2VwdGlvbkNvZGUoYWN0
dWFsKTs7CisgICAgICAgIHRlc3RQYXNzZWQobSk7CisgICAgfQorfQorCit2YXIgYWxsTlNUZXN0
cyA9IFsKKyAgIHsgYXJnczogW3VuZGVmaW5lZCwgdW5kZWZpbmVkXSB9LAorICAgeyBhcmdzOiBb
bnVsbCwgdW5kZWZpbmVkXSB9LAorICAgeyBhcmdzOiBbdW5kZWZpbmVkLCBudWxsXSwgY29kZTog
NSB9LAorICAgeyBhcmdzOiBbbnVsbCwgbnVsbF0sIGNvZGU6IDUgfSwKKyAgIHsgYXJnczogW251
bGwsICIiXSwgY29kZTogNSB9LAorICAgeyBhcmdzOiBbIiIsIG51bGxdLCBjb2RlOiA1IH0sCisg
ICB7IGFyZ3M6IFsiIiwgIiJdLCBjb2RlOiA1IH0sCisgICB7IGFyZ3M6IFtudWxsLCAiPGRpdj4i
XSwgY29kZTogNSB9LAorICAgeyBhcmdzOiBbbnVsbCwgIjBkaXYiXSwgY29kZTogNSB9LAorICAg
eyBhcmdzOiBbbnVsbCwgImRpIHYiXSwgY29kZTogNSB9LAorICAgeyBhcmdzOiBbbnVsbCwgImRp
PHYiXSwgY29kZTogNSB9LAorICAgeyBhcmdzOiBbbnVsbCwgIi1kaXYiXSwgY29kZTogNSB9LAor
ICAgeyBhcmdzOiBbbnVsbCwgIi5kaXYiXSwgY29kZTogNSB9LAorICAgeyBhcmdzOiBbImh0dHA6
Ly9leGFtcGxlLmNvbS8iLCAiPGRpdj4iXSwgY29kZTogNSB9LAorICAgeyBhcmdzOiBbImh0dHA6
Ly9leGFtcGxlLmNvbS8iLCAiMGRpdiJdLCBjb2RlOiA1IH0sCisgICB7IGFyZ3M6IFsiaHR0cDov
L2V4YW1wbGUuY29tLyIsICJkaTx2Il0sIGNvZGU6IDUgfSwKKyAgIHsgYXJnczogWyJodHRwOi8v
ZXhhbXBsZS5jb20vIiwgIi1kaXYiXSwgY29kZTogNSB9LAorICAgeyBhcmdzOiBbImh0dHA6Ly9l
eGFtcGxlLmNvbS8iLCAiLmRpdiJdLCBjb2RlOiA1IH0sCisgICB7IGFyZ3M6IFtudWxsLCAiOmRp
diJdLCBjb2RlOiAxNCB9LAorICAgeyBhcmdzOiBbbnVsbCwgImRpdjoiXSwgY29kZTogMTQgfSwK
KyAgIHsgYXJnczogWyJodHRwOi8vZXhhbXBsZS5jb20vIiwgIjpkaXYiXSwgY29kZTogMTQgfSwK
KyAgIHsgYXJnczogWyJodHRwOi8vZXhhbXBsZS5jb20vIiwgImRpdjoiXSwgY29kZTogMTQgfSwK
KyAgIHsgYXJnczogW251bGwsICJkOml2Il0sIGNvZGU6IDE0IH0sCisgICB7IGFyZ3M6IFtudWxs
LCAiYTpiOmMiXSwgY29kZTogMTQsIG1lc3NhZ2U6ICJ2YWxpZCBYTUwgbmFtZSwgaW52YWxpZCBR
TmFtZSIgfSwKKyAgIHsgYXJnczogWyJodHRwOi8vZXhhbXBsZS5jb20vIiwgImE6YjpjIl0sIGNv
ZGU6IDE0LCBtZXNzYWdlOiAidmFsaWQgWE1MIG5hbWUsIGludmFsaWQgUU5hbWUiIH0sCisgICB7
IGFyZ3M6IFtudWxsLCAiYTo6YyJdLCBjb2RlOiAxNCwgbWVzc2FnZTogInZhbGlkIFhNTCBuYW1l
LCBpbnZhbGlkIFFOYW1lIiB9LAorICAgeyBhcmdzOiBbImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAi
YTo6YyJdLCBjb2RlOiAxNCwgbWVzc2FnZTogInZhbGlkIFhNTCBuYW1lLCBpbnZhbGlkIFFOYW1l
IiB9LAorICAgeyBhcmdzOiBbImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiYTowIl0sIGNvZGU6IDUs
IG1lc3NhZ2U6ICJ2YWxpZCBYTUwgbmFtZSwgbm90IGEgdmFsaWQgUU5hbWUiIH0sCisgICB7IGFy
Z3M6IFsiaHR0cDovL2V4YW1wbGUuY29tLyIsICIwOmEiXSwgY29kZTogNSwgbWVzc2FnZTogIjAg
YXQgc3RhcnQgbWFrZXMgaXQgbm90IGEgdmFsaWQgWE1MIG5hbWUiIH0sCisgICB7IGFyZ3M6IFsi
aHR0cDovL2V4YW1wbGUuY29tLyIsICJhOl8iXSB9LAorICAgeyBhcmdzOiBbImh0dHA6Ly9leGFt
cGxlLmNvbS8iLCAiYTpcdTBCQzYiXSwgY29kZTogMTQsCisgICAgIG1lc3NhZ2U6ICJub24tQVND
SUkgY2hhcmFjdGVyIGFmdGVyIGNvbG9uIGlzIENvbWJpbmluZ0NoYXIsIHdoaWNoIGlzICIgKwor
ICAgICAgICAgICAgICAiTkNOYW1lQ2hhciBidXQgbm90IChMZXR0ZXIgfCBcIl9cIikgc28gaW52
YWxpZCBhdCBzdGFydCBvZiAiICsKKyAgICAgICAgICAgICAgIk5DTmFtZSAoYnV0IHN0aWxsIGEg
dmFsaWQgWE1MIG5hbWUsIGhlbmNlIG5vdCBJTlZBTElEX0NIQVJBQ1RFUl9FUlIpIiB9LAorICAg
eyBhcmdzOiBbImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiXHUwQkM2OmEiXSwgY29kZTogNSwKKyAg
ICAgbWVzc2FnZTogIm5vbi1BU0NJSSBjaGFyYWN0ZXIgYWZ0ZXIgY29sb24gaXMgQ29tYmluaW5n
Q2hhciwgd2hpY2ggaXMgIiArCisgICAgICAgICAgICAgICJOQ05hbWVDaGFyIGJ1dCBub3QgKExl
dHRlciB8IFwiX1wiKSBzbyBpbnZhbGlkIGF0IHN0YXJ0IG9mICIgKworICAgICAgICAgICAgICAi
TkNOYW1lIChHZWNrbyBjaG9vc2VzIHRvIHRocm93IE5BTUVTUEFDRV9FUlIgaGVyZSwgYnV0IGVp
dGhlciBpcyB2YWxpZCAiICsKKyAgICAgICAgICAgICAgImFzIHRoaXMgaXMgYm90aCBhbiBpbnZh
bGlkIFhNTCBuYW1lIGFuZCBhbiBpbnZhbGlkIFFOYW1lKSIgfSwKKyAgIHsgYXJnczogWyJodHRw
Oi8vZXhhbXBsZS5jb20vIiwgImE6YVx1MEJDNiJdIH0sCisgICB7IGFyZ3M6IFsiaHR0cDovL2V4
YW1wbGUuY29tLyIsICJhXHUwQkM2OmEiXSB9LAorICAgeyBhcmdzOiBbImh0dHA6Ly9leGFtcGxl
LmNvbS8iLCAieG1sOnRlc3QiXSwgY29kZTogMTQsIG1lc3NhZ2U6ICJiaW5kaW5nIHhtbCBwcmVm
aXggd3JvbmciIH0sCisgICB7IGFyZ3M6IFsiaHR0cDovL2V4YW1wbGUuY29tLyIsICJ4bWxuczp0
ZXN0Il0sIGNvZGU6IDE0LCBtZXNzYWdlOiAiYmluZGluZyB4bWxucyBwcmVmaXggd3JvbmciIH0s
CisgICB7IGFyZ3M6IFsiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8iLCAieDp0ZXN0Il0s
IGNvZGU6IDE0LCBtZXNzYWdlOiAiYmluZGluZyBuYW1lc3BhY2UgbmFtZXNwYWNlIHRvIHdyb25n
IHByZWZpeCIgfSwKKyAgIHsgYXJnczogWyJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyIs
ICJ4bWxuczp0ZXN0Il0gfSwKKyAgIHsgYXJnczogWyJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5
OC9uYW1lc3BhY2UiLCAieG1sOnRlc3QiXSB9LAorICAgeyBhcmdzOiBbImh0dHA6Ly93d3cudzMu
b3JnL1hNTC8xOTk4L25hbWVzcGFjZSIsICJ4OnRlc3QiXSB9LAorXTsKKwordmFyIGFsbE5vTlNU
ZXN0cyA9IFsKKyAgIHsgYXJnczogW3VuZGVmaW5lZF0gfSwKKyAgIHsgYXJnczogW251bGxdLCBj
b2RlOiA1IH0sCisgICB7IGFyZ3M6IFsiIl0sIGNvZGU6IDUgfSwKKyAgIHsgYXJnczogWyI8ZGl2
PiJdLCBjb2RlOiA1IH0sCisgICB7IGFyZ3M6IFsiMGRpdiJdLCBjb2RlOiA1IH0sCisgICB7IGFy
Z3M6IFsiZGkgdiJdLCBjb2RlOiA1IH0sCisgICB7IGFyZ3M6IFsiZGk8diJdLCBjb2RlOiA1IH0s
CisgICB7IGFyZ3M6IFsiLWRpdiJdLCBjb2RlOiA1IH0sCisgICB7IGFyZ3M6IFsiLmRpdiJdLCBj
b2RlOiA1IH0sCisgICB7IGFyZ3M6IFsiOiJdLCBtZXNzYWdlOiAidmFsaWQgWE1MIG5hbWUsIGlu
dmFsaWQgUU5hbWUiIH0sCisgICB7IGFyZ3M6IFsiOmRpdiJdLCBtZXNzYWdlOiAidmFsaWQgWE1M
IG5hbWUsIGludmFsaWQgUU5hbWUiIH0sCisgICB7IGFyZ3M6IFsiZGl2OiJdLCBtZXNzYWdlOiAi
dmFsaWQgWE1MIG5hbWUsIGludmFsaWQgUU5hbWUiIH0sCisgICB7IGFyZ3M6IFsiZDppdiJdIH0s
CisgICB7IGFyZ3M6IFsiYTpiOmMiXSwgbWVzc2FnZTogInZhbGlkIFhNTCBuYW1lLCBpbnZhbGlk
IFFOYW1lIiB9LAorICAgeyBhcmdzOiBbImE6OmMiXSwgbWVzc2FnZTogInZhbGlkIFhNTCBuYW1l
LCBpbnZhbGlkIFFOYW1lIiB9LAorICAgeyBhcmdzOiBbImE6OmM6Il0sIG1lc3NhZ2U6ICJ2YWxp
ZCBYTUwgbmFtZSwgaW52YWxpZCBRTmFtZSIgfSwKKyAgIHsgYXJnczogWyJhOjAiXSwgbWVzc2Fn
ZTogInZhbGlkIFhNTCBuYW1lLCBub3QgYSB2YWxpZCBRTmFtZSIgfSwKKyAgIHsgYXJnczogWyIw
OmEiXSwgY29kZTogNSwgbWVzc2FnZTogIjAgYXQgc3RhcnQgbWFrZXMgaXQgbm90IGEgdmFsaWQg
WE1MIG5hbWUiIH0sCisgICB7IGFyZ3M6IFsiYTpfIl0gfSwKKyAgIHsgYXJnczogWyJhOlx1MEJD
NiJdLAorICAgICBtZXNzYWdlOiAibm9uLUFTQ0lJIGNoYXJhY3RlciBhZnRlciBjb2xvbiBpcyBD
b21iaW5pbmdDaGFyLCB3aGljaCBpcyAiICsKKyAgICAgICAgICAgICAgInZhbGlkIGluIHByZS1u
YW1lc3BhY2UgWE1MIiB9LAorICAgeyBhcmdzOiBbIlx1MEJDNjphIl0sIGNvZGU6IDUsIG1lc3Nh
Z2U6ICJub3QgYSB2YWxpZCBzdGFydCBjaGFyYWN0ZXIiIH0sCisgICB7IGFyZ3M6IFsiYTphXHUw
QkM2Il0gfSwKKyAgIHsgYXJnczogWyJhXHUwQkM2OmEiXSB9LAorICAgeyBhcmdzOiBbInhtbDp0
ZXN0Il0gfSwKKyAgIHsgYXJnczogWyJ4bWxuczp0ZXN0Il0gfSwKKyAgIHsgYXJnczogWyJ4OnRl
c3QiXSB9LAorICAgeyBhcmdzOiBbInhtbG5zOnRlc3QiXSB9LAorICAgeyBhcmdzOiBbIlNPQVAt
RU5WOkJvZHkiXSB9LCAvLyBGcm9tIFlhaG9vIE1haWwgQmV0YQorXTsKKworZnVuY3Rpb24gc291
cmNlaWZ5KHYpCit7CisgICAgc3dpdGNoICh0eXBlb2YgdikgeworICAgICAgICBjYXNlICJ1bmRl
ZmluZWQiOgorICAgICAgICAgICAgcmV0dXJuIHY7CisgICAgICAgIGNhc2UgInN0cmluZyI6Cisg
ICAgICAgICAgICByZXR1cm4gJyInICsgdi5yZXBsYWNlKCciJywgJ1xcIicpICsgJyInOworICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIFN0cmluZyh2KTsKKyAgICB9Cit9CisK
K2Z1bmN0aW9uIHNvdXJjZWlmeUFyZ3MoYXJncykKK3sKKyAgICB2YXIgY29weSA9IG5ldyBBcnJh
eShhcmdzLmxlbmd0aCk7CisgICAgZm9yICh2YXIgaSA9IDAsIHN6ID0gYXJncy5sZW5ndGg7IGkg
PCBzejsgaSsrKQorICAgICAgICBjb3B5W2ldID0gc291cmNlaWZ5KGFyZ3NbaV0pOworCisgICAg
cmV0dXJuIGNvcHkuam9pbigiLCAiKTsKK30KKworZnVuY3Rpb24gcnVuTlNUZXN0cyh0ZXN0cywg
ZG9jLCBjcmVhdGVGdW5jdGlvbk5hbWUpCit7CisgICAgZm9yICh2YXIgaSA9IDAsIHN6ID0gdGVz
dHMubGVuZ3RoOyBpIDwgc3o7IGkrKykgeworICAgICAgICB2YXIgdGVzdCA9IHRlc3RzW2ldOwor
CisgICAgICAgIHZhciBjb2RlID0gLTE7CisgICAgICAgIHZhciBhcmdTdHIgPSBzb3VyY2VpZnlB
cmdzKHRlc3QuYXJncyk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBkb2NbY3JlYXRlRnVu
Y3Rpb25OYW1lXS5hcHBseShkb2MsIHRlc3QuYXJncyk7CisgICAgICAgICAgICB2YXIgbXNnID0g
Y3JlYXRlRnVuY3Rpb25OYW1lICsgIigiICsgYXJnU3RyICsgIikiOworICAgICAgICAgICAgaWYg
KCJtZXNzYWdlIiBpbiB0ZXN0KQorICAgICAgICAgICAgICAgIG1zZyArPSAiOyAiICsgdGVzdC5t
ZXNzYWdlOworICAgICAgICAgICAgYXNzZXJ0KCEoImNvZGUiIGluIHRlc3QpLCBtc2cpOworICAg
ICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICB2YXIgYXJnU3RyID0gc291cmNlaWZ5KHRl
c3QuYXJnc1swXSkgKyAiLCAiICsgc291cmNlaWZ5KHRlc3QuYXJnc1sxXSk7CisgICAgICAgICAg
ICBtc2cgPSBjcmVhdGVGdW5jdGlvbk5hbWUgKyAiKCIgKyBhcmdTdHIgKyAiKSI7CisgICAgICAg
ICAgICBpZiAoIm1lc3NhZ2UiIGluIHRlc3QpCisgICAgICAgICAgICAgICAgbXNnICs9ICI7ICIg
KyB0ZXN0Lm1lc3NhZ2U7CisgICAgICAgICAgICBhc3NlcnRFcXVhbHMoZS5jb2RlLCB0ZXN0LmNv
ZGUgfHwgImV4cGVjdGVkIG5vIGV4Y2VwdGlvbiIsIG1zZyk7CisgICAgICAgIH0KKyAgICB9Cit9
CisKKy8vIE1veiB0aHJvd3MgYSAiTm90IGVub3VnaCBhcmd1bWVudHMiIGV4Y2VwdGlvbiBpbiB0
aGVzZSwgd2UgZG9uJ3Q6CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUygpLnRvU3RyaW5nKCkiLCAiW29iamVjdCBFbGVtZW50XSIpOworc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoXCJodHRwOi8vd3d3LmV4YW1wbGUu
Y29tXCIpLnRvU3RyaW5nKCkiLCAiW29iamVjdCBFbGVtZW50XSIpOworCitkZWJ1ZygiSFRNTCB0
ZXN0czoiKQorcnVuTlNUZXN0cyhhbGxOU1Rlc3RzLCBkb2N1bWVudCwgImNyZWF0ZUVsZW1lbnRO
UyIpOworcnVuTlNUZXN0cyhhbGxOb05TVGVzdHMsIGRvY3VtZW50LCAiY3JlYXRlRWxlbWVudCIp
OworCitkZWJ1ZygiWEhUTUwgY3JlYXRlRWxlbWVudCB0ZXN0czoiKQordmFyIHhodG1sRG9jID0g
ZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlRG9jdW1lbnQoImh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGh0bWwiLCAiaHRtbCIsIG51bGwpOworcnVuTlNUZXN0cyhhbGxOb05TVGVzdHMsIHho
dG1sRG9jLCAiY3JlYXRlRWxlbWVudCIpOworCitkZWJ1ZygiWE1MIGNyZWF0ZUVsZW1lbnQgdGVz
dHM6IikKK3ZhciB4bWxEb2MgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVEb2N1bWVu
dCgiaHR0cDovL3d3dy5leGFtcGxlLmNvbS9mb28iLCAiZXhhbXBsZSIsIG51bGwpOworcnVuTlNU
ZXN0cyhhbGxOb05TVGVzdHMsIHhtbERvYywgImNyZWF0ZUVsZW1lbnQiKTsKKwordmFyIHN1Y2Nl
c3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggMWM3NjQ2My4uYjgyMWI3ZCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcApAQCAtMTA3LDYgKzEwNyw3IEBACiAjaW5jbHVkZSAiVUlFdmVudC5oIgogI2luY2x1
ZGUgIldoZWVsRXZlbnQuaCIKICNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdC5oIgorI2luY2x1ZGUg
IlhNTE5hbWVzLmgiCiAjaW5jbHVkZSAiWE1MVG9rZW5pemVyLmgiCiAjaW5jbHVkZSAia2pzX2Jp
bmRpbmcuaCIKICNpbmNsdWRlICJranNfcHJveHkuaCIKQEAgLTUxNCwxNSArNTE1LDE1IEBAIEVs
ZW1lbnQqIERvY3VtZW50Ojpkb2N1bWVudEVsZW1lbnQoKSBjb25zdAogCiBQYXNzUmVmUHRyPEVs
ZW1lbnQ+IERvY3VtZW50OjpjcmVhdGVFbGVtZW50KGNvbnN0IFN0cmluZyAmbmFtZSwgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7Ci0gICAgaWYgKG1faXNYSFRNTCkgewotICAgICAgICBpZiAoIWlzVmFs
aWROYW1lKG5hbWUpKSB7Ci0gICAgICAgICAgICBlYyA9IElOVkFMSURfQ0hBUkFDVEVSX0VSUjsK
LSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9CisgICAgaWYgKCFpc1ZhbGlkTmFtZShu
YW1lKSkgeworICAgICAgICBlYyA9IElOVkFMSURfQ0hBUkFDVEVSX0VSUjsKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgfQorCisgICAgaWYgKG1faXNYSFRNTCkKKyAgICAgICAgcmV0dXJuIEhUTUxF
bGVtZW50RmFjdG9yeTo6Y3JlYXRlSFRNTEVsZW1lbnQobmFtZSwgdGhpcywgMCwgZmFsc2UpOwog
Ci0gICAgICAgIHJldHVybiBIVE1MRWxlbWVudEZhY3Rvcnk6OmNyZWF0ZUhUTUxFbGVtZW50KEF0
b21pY1N0cmluZyhuYW1lKSwgdGhpcywgMCwgZmFsc2UpOwotICAgIH0gZWxzZQotICAgICAgICBy
ZXR1cm4gY3JlYXRlRWxlbWVudE5TKG51bGxBdG9tLCBuYW1lLCBlYyk7CisgICAgcmV0dXJuIGNy
ZWF0ZUVsZW1lbnQoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgbmFtZSwgbnVsbEF0b20pLCBmYWxz
ZSwgZWMpOwogfQogCiBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IERvY3VtZW50OjpjcmVh
dGVEb2N1bWVudEZyYWdtZW50KCkKQEAgLTcxNiw2ICs3MTcsMzIgQEAgUGFzc1JlZlB0cjxOb2Rl
PiBEb2N1bWVudDo6YWRvcHROb2RlKFBhc3NSZWZQdHI8Tm9kZT4gc291cmNlLCBFeGNlcHRpb25D
b2RlJiBlYykKICAgICByZXR1cm4gc291cmNlOwogfQogCitzdGF0aWMgYm9vbCBoYXNOYW1lc3Bh
Y2VFcnJvcihjb25zdCBRdWFsaWZpZWROYW1lJiBxTmFtZSkKK3sKKyAgICBzdGF0aWMgY29uc3Qg
QXRvbWljU3RyaW5nIHhtbG5zTmFtZXNwYWNlVVJJID0gImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
eG1sbnMvIjsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIHhtbG5zID0gInhtbG5zIjsK
KyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIHhtbCA9ICJ4bWwiOworCisgICAgLy8gVGhl
c2UgY2hlY2tzIGFyZSBmcm9tIERPTSBDb3JlIExldmVsIDIsIGNyZWF0ZUVsZW1lbnROUworICAg
IC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0yLUNvcmUvY29yZS5odG1sI0lELURv
Y0NyRWxOUworICAgIGlmIChxTmFtZS5wcmVmaXgoKSA9PSBlbXB0eUF0b20pIC8vIGNyZWF0ZUVs
ZW1lbnROUyhudWxsLCAiOmRpdiIpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChxTmFt
ZS5sb2NhbE5hbWUoKS5pc0VtcHR5KCkpIC8vIGNyZWF0ZUVsZW1lbnROUyhudWxsLCAiIiksIGNy
ZWF0ZUVsZW1lbnROUyhudWxsLCBudWxsKSwgY3JlYXRlRWxlbWVudE5TKCkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgaWYgKCFxTmFtZS5wcmVmaXgoKS5pc0VtcHR5KCkgJiYgcU5hbWUubmFt
ZXNwYWNlVVJJKCkuaXNOdWxsKCkpIC8vIGNyZWF0ZUVsZW1lbnROUyhudWxsLCAiaHRtbDpkaXYi
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAocU5hbWUucHJlZml4KCkgPT0geG1sICYm
IHFOYW1lLm5hbWVzcGFjZVVSSSgpICE9IFhNTE5hbWVzOjp4bWxOYW1lc3BhY2VVUkkpIC8vIGNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy5leGFtcGxlLmNvbSIsICJ4bWw6bGFuZyIpCisgICAg
ICAgIHJldHVybiB0cnVlOworCisgICAgLy8gUmVxdWlyZWQgYnkgRE9NIExldmVsIDMgQ29yZSBh
bmQgdW5zcGVjaWZpZWQgYnkgRE9NIExldmVsIDIgQ29yZToKKyAgICAvLyBodHRwOi8vd3d3Lncz
Lm9yZy9UUi8yMDA0L1JFQy1ET00tTGV2ZWwtMy1Db3JlLTIwMDQwNDA3L2NvcmUuaHRtbCNJRC1E
b2NDckVsTlMKKyAgICAvLyBjcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
eG1sbnMvIiwgImZvbzpiYXIiKSwgY3JlYXRlRWxlbWVudE5TKG51bGwsICJ4bWxuczpiYXIiKQor
ICAgIGlmICgocU5hbWUucHJlZml4KCkgPT0geG1sbnMgJiYgcU5hbWUubmFtZXNwYWNlVVJJKCkg
IT0geG1sbnNOYW1lc3BhY2VVUkkpIHx8IChxTmFtZS5wcmVmaXgoKSAhPSB4bWxucyAmJiBxTmFt
ZS5uYW1lc3BhY2VVUkkoKSA9PSB4bWxuc05hbWVzcGFjZVVSSSkpCisgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCiAvLyBGSVhNRTogVGhpcyBzaG91bGQgcmVh
bGx5IGJlIGluIGEgcG9zc2libGUgRWxlbWVudEZhY3RvcnkgY2xhc3MKIFBhc3NSZWZQdHI8RWxl
bWVudD4gRG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgcU5hbWUs
IGJvb2wgY3JlYXRlZEJ5UGFyc2VyLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKQEAgLTczMiwxNyAr
NzU5LDIyIEBAIFBhc3NSZWZQdHI8RWxlbWVudD4gRG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgcU5hbWUsIGJvb2wgY3JlCiAgICAgaWYgKCFlKQogICAgICAgICBl
ID0gbmV3IEVsZW1lbnQocU5hbWUsIGRvY3VtZW50KCkpOwogICAgIAorICAgIC8vIEZJWE1FOiBU
aGUgZWxlbWVudCBmYWN0b3JpZXMgc2hvdWxkIGJlIGZpeGVkIHRvIG5vdCBpZ25vcmUgcU5hbWUu
cHJlZml4KCkKKyAgICAvLyBJbnN0ZWFkIHRoZXkgc2hvdWxkIHBhc3MgdGhlIGVudGlyZSBxTmFt
ZSBpbnRvIGVsZW1lbnQgY3JlYXRpb24gc28gd2UgZG9uJ3QKKyAgICAvLyBuZWVkIHRvIG1hbnVh
bGx5IHNldCB0aGUgcHJlZml4IGFmdGVyIGNyZWF0aW9uLgorICAgIC8vIFRoZW4gdGhpcyBjb2Rl
IGNhbiBiZWNvbWUgQVNTRVJUKHFOYW1lID09IGUucW5hbWUoKSk7CisgICAgLy8gYW5kIERvY3Vt
ZW50OjpjcmVhdGVFbGVtZW50IGNhbiBzdG9wIHRha2luZyBFeGNlcHRpb25Db2RlJiBhcyB3ZWxs
LgogICAgIGlmIChlICYmICFxTmFtZS5wcmVmaXgoKS5pc051bGwoKSkgewogICAgICAgICBlYyA9
IDA7CiAgICAgICAgIGUtPnNldFByZWZpeChxTmFtZS5wcmVmaXgoKSwgZWMpOwogICAgICAgICBp
ZiAoZWMpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICB9ICAgIAorICAgIH0KICAgICAKICAg
ICByZXR1cm4gZS5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8RWxlbWVudD4gRG9jdW1lbnQ6
OmNyZWF0ZUVsZW1lbnROUyhjb25zdCBTdHJpbmcgJl9uYW1lc3BhY2VVUkksIGNvbnN0IFN0cmlu
ZyAmcXVhbGlmaWVkTmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPEVsZW1lbnQ+
IERvY3VtZW50OjpjcmVhdGVFbGVtZW50TlMoY29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNv
bnN0IFN0cmluZyYgcXVhbGlmaWVkTmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgU3Ry
aW5nIHByZWZpeCwgbG9jYWxOYW1lOwogICAgIGlmICghcGFyc2VRdWFsaWZpZWROYW1lKHF1YWxp
ZmllZE5hbWUsIHByZWZpeCwgbG9jYWxOYW1lKSkgewpAQCAtNzUwLDkgKzc4MiwxMiBAQCBQYXNz
UmVmUHRyPEVsZW1lbnQ+IERvY3VtZW50OjpjcmVhdGVFbGVtZW50TlMoY29uc3QgU3RyaW5nICZf
bmFtZXNwYWNlVVJJLCBjb25zdAogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBSZWZQ
dHI8RWxlbWVudD4gZTsKLSAgICBRdWFsaWZpZWROYW1lIHFOYW1lID0gUXVhbGlmaWVkTmFtZShB
dG9taWNTdHJpbmcocHJlZml4KSwgQXRvbWljU3RyaW5nKGxvY2FsTmFtZSksIEF0b21pY1N0cmlu
ZyhfbmFtZXNwYWNlVVJJKSk7Ci0gICAgCisgICAgUXVhbGlmaWVkTmFtZSBxTmFtZShwcmVmaXgs
IGxvY2FsTmFtZSwgbmFtZXNwYWNlVVJJKTsKKyAgICBpZiAoaGFzTmFtZXNwYWNlRXJyb3IocU5h
bWUpKSB7CisgICAgICAgIGVjID0gTkFNRVNQQUNFX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgfQorCiAgICAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQocU5hbWUsIGZhbHNlLCBlYyk7CiB9CiAK
QEAgLTI3ODQsNyArMjgxOSw3IEBAIGJvb2wgRG9jdW1lbnQ6OmlzVmFsaWROYW1lKGNvbnN0IFN0
cmluZyAmbmFtZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBEb2N1bWVudDo6cGFyc2VR
dWFsaWZpZWROYW1lKGNvbnN0IFN0cmluZyAmcXVhbGlmaWVkTmFtZSwgU3RyaW5nICZwcmVmaXgs
IFN0cmluZyAmbG9jYWxOYW1lKQorYm9vbCBEb2N1bWVudDo6cGFyc2VRdWFsaWZpZWROYW1lKGNv
bnN0IFN0cmluZyYgcXVhbGlmaWVkTmFtZSwgU3RyaW5nJiBwcmVmaXgsIFN0cmluZyYgbG9jYWxO
YW1lKQogewogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHF1YWxpZmllZE5hbWUubGVuZ3RoKCk7CiAK
QEAgLTM0ODksMjkgKzM1MjQsMjkgQEAgRG9jdW1lbnQgKkRvY3VtZW50Ojp0b3BEb2N1bWVudCgp
IGNvbnN0CiAgICAgcmV0dXJuIGRvYzsKIH0KIAotUGFzc1JlZlB0cjxBdHRyPiBEb2N1bWVudDo6
Y3JlYXRlQXR0cmlidXRlTlMoY29uc3QgU3RyaW5nICZuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmlu
ZyAmcXVhbGlmaWVkTmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPEF0dHI+IERv
Y3VtZW50OjpjcmVhdGVBdHRyaWJ1dGVOUyhjb25zdCBTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29u
c3QgU3RyaW5nJiBxdWFsaWZpZWROYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBpZiAo
cXVhbGlmaWVkTmFtZS5pc051bGwoKSkgewotICAgICAgICBlYyA9IE5BTUVTUEFDRV9FUlI7Cisg
ICAgU3RyaW5nIHByZWZpeCwgbG9jYWxOYW1lOworICAgIGlmICghcGFyc2VRdWFsaWZpZWROYW1l
KHF1YWxpZmllZE5hbWUsIHByZWZpeCwgbG9jYWxOYW1lKSkgeworICAgICAgICBlYyA9IElOVkFM
SURfQ0hBUkFDVEVSX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgU3RyaW5n
IGxvY2FsTmFtZSA9IHF1YWxpZmllZE5hbWU7Ci0gICAgU3RyaW5nIHByZWZpeDsKLSAgICBpbnQg
Y29sb25wb3M7Ci0gICAgaWYgKChjb2xvbnBvcyA9IHF1YWxpZmllZE5hbWUuZmluZCgnOicpKSA+
PSAwKSB7Ci0gICAgICAgIHByZWZpeCA9IHF1YWxpZmllZE5hbWUuc3Vic3RyaW5nKDAsIGNvbG9u
cG9zKTsKLSAgICAgICAgbG9jYWxOYW1lID0gcXVhbGlmaWVkTmFtZS5zdWJzdHJpbmcoY29sb25w
b3MgKyAxKTsKKyAgICBRdWFsaWZpZWROYW1lIHFOYW1lKHByZWZpeCwgbG9jYWxOYW1lLCBuYW1l
c3BhY2VVUkkpOworICAgIGlmIChoYXNOYW1lc3BhY2VFcnJvcihxTmFtZSkpIHsKKyAgICAgICAg
ZWMgPSBOQU1FU1BBQ0VfRVJSOworICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBpZiAo
IWlzVmFsaWROYW1lKGxvY2FsTmFtZSkpIHsKLSAgICAgICAgZWMgPSBJTlZBTElEX0NIQVJBQ1RF
Ul9FUlI7CisgICAgLy8gU3BlYzogRE9NIExldmVsIDIgQ29yZTogaHR0cDovL3d3dy53My5vcmcv
VFIvRE9NLUxldmVsLTItQ29yZS9jb3JlLmh0bWwjSUQtRG9jQ3JBdHRyTlMKKyAgICBpZiAocU5h
bWUubG9jYWxOYW1lKCkgPT0gInhtbG5zIiAmJiBxTmFtZS5uYW1lc3BhY2VVUkkoKSAhPSAiaHR0
cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8iKSB7CisgICAgICAgIGVjID0gTkFNRVNQQUNFX0VS
UjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIAorCiAgICAgLy8gRklYTUU6IEFzc3Vt
ZSB0aGlzIGlzIGEgbWFwcGVkIGF0dHJpYnV0ZSwgc2luY2UgY3JlYXRlQXR0cmlidXRlIGlzbid0
IG5hbWVzcGFjZS1hd2FyZS4gIFRoZXJlJ3Mgbm8gaGFybSB0byBYTUwKICAgICAvLyBkb2N1bWVu
dHMgaWYgd2UncmUgd3JvbmcuCi0gICAgcmV0dXJuIG5ldyBBdHRyKDAsIHRoaXMsIG5ldyBNYXBw
ZWRBdHRyaWJ1dGUoUXVhbGlmaWVkTmFtZShwcmVmaXgsIGxvY2FsTmFtZSwgbmFtZXNwYWNlVVJJ
KSwgU3RyaW5nSW1wbDo6ZW1wdHkoKSkpOworICAgIHJldHVybiBuZXcgQXR0cigwLCB0aGlzLCBu
ZXcgTWFwcGVkQXR0cmlidXRlKHFOYW1lLCBTdHJpbmdJbXBsOjplbXB0eSgpKSk7CiB9CiAKICNp
ZiBFTkFCTEUoU1ZHKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsIGIvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaWRsCmluZGV4IGRkYzI1ZjMuLmViYTcxZWQgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAorKysgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwK
QEAgLTMzLDcgKzMzLDcgQEAgbW9kdWxlIGNvcmUgewogICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgRE9NSW1wbGVtZW50YXRpb24gaW1wbGVtZW50YXRpb247CiAgICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBFbGVtZW50IGRvY3VtZW50RWxlbWVudDsKIAotICAgICAgICBFbGVtZW50ICAgICAg
ICAgICAgY3JlYXRlRWxlbWVudChpbiBET01TdHJpbmcgdGFnTmFtZSkKKyAgICAgICAgRWxlbWVu
dCAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQoaW4gW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBE
T01TdHJpbmcgdGFnTmFtZSkKICAgICAgICAgICAgIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICAg
ICAgICAgRG9jdW1lbnRGcmFnbWVudCAgIGNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKICAgICAg
ICAgVGV4dCAgICAgICAgICAgICAgIGNyZWF0ZVRleHROb2RlKGluIERPTVN0cmluZyBkYXRhKTsK
QEAgLTU1LDEwICs1NSwxMCBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbiBib29sZWFuIGRlZXApCiAgICAgICAgICAgICByYWlzZXMgKERP
TUV4Y2VwdGlvbik7CiAgICAgICAgIFtPbGRTdHlsZU9iakNdIEVsZW1lbnQgY3JlYXRlRWxlbWVu
dE5TKGluIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIG5hbWVzcGFjZVVSSSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRE9NU3Ry
aW5nIHF1YWxpZmllZE5hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIHF1YWxpZmll
ZE5hbWUpCiAgICAgICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIFtPbGRT
dHlsZU9iakNdIEF0dHIgY3JlYXRlQXR0cmlidXRlTlMoaW4gW0NvbnZlcnROdWxsVG9OdWxsU3Ry
aW5nXSBET01TdHJpbmcgbmFtZXNwYWNlVVJJLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGluIERPTVN0cmluZyBxdWFsaWZpZWROYW1lKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtDb252ZXJ0TnVsbFRvTnVs
bFN0cmluZ10gRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUpCiAgICAgICAgICAgICByYWlzZXMgKERP
TUV4Y2VwdGlvbik7CiAgICAgICAgIFtPbGRTdHlsZU9iakNdIE5vZGVMaXN0IGdldEVsZW1lbnRz
QnlUYWdOYW1lTlMoaW4gW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgbmFtZXNw
YWNlVVJJLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluIERPTVN0cmluZyBsb2NhbE5hbWUpOwo=
</data>
<flag name="review"
          id="8730"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>