<?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>126553</bug_id>
          
          <creation_ts>2014-01-06 17:07:52 -0800</creation_ts>
          <short_desc>createElementNS does not handle &apos;xmlns&apos; name correctly</short_desc>
          <delta_ts>2014-01-07 16:15:02 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Victor Costan">costan</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kangil.han</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>964820</commentid>
    <comment_count>0</comment_count>
    <who name="Victor Costan">costan</who>
    <bug_when>2014-01-06 17:07:52 -0800</bug_when>
    <thetext>== What steps will reproduce the problem?

1. document.createElementNS(&apos;http://www.w3.org/XML/1998/namespace&apos;, &apos;xml:abc&apos;, &apos;foo&apos;)
2. document.createElementNS(&apos;http://www.w3.org/not-XML/1998/namespace&apos;, &apos;xml:abc&apos;, &apos;foo&apos;)

== What is the expected result?

The first line should create an element, the second one should throw a NamespaceError.

== What happens instead?

The first line throws NamespaceError, the second line creates an element.

== Please provide any additional information below.


DOM3 spec: http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/core.html#ID-DocCrElNS

NAMESPACE_ERR: Raised if [[irrelevant part removed]] , or if the qualifiedName or its prefix is &quot;xmlns&quot; and the namespaceURI is different from &quot;http://www.w3.org/2000/xmlns/&quot;, or if the namespaceURI is &quot;http://www.w3.org/2000/xmlns/&quot; and neither the qualifiedName nor its prefix is &quot;xmlns&quot;.

DOM4 spec: http://www.w3.org/TR/dom/#dom-document-createelementns
7. If qualifiedName or prefix is &quot;xmlns&quot; and namespace is not the XMLNS namespace, throw a &quot;NamespaceError&quot; exception.
8. If namespace is the XMLNS namespace and neither qualifiedName nor prefix is &quot;xmlns&quot;, throw a &quot;NamespaceError&quot; exception.

Internet Explorer, Firefox and Chrome match the specification.

I will submit a patch that fixes this bug soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>964830</commentid>
    <comment_count>1</comment_count>
      <attachid>220476</attachid>
    <who name="Victor Costan">costan</who>
    <bug_when>2014-01-06 17:47:13 -0800</bug_when>
    <thetext>Created attachment 220476
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>964834</commentid>
    <comment_count>2</comment_count>
    <who name="Victor Costan">costan</who>
    <bug_when>2014-01-06 17:58:34 -0800</bug_when>
    <thetext>Adam, can you please take a look?

This is ported from a Blink CL that you recently reviewed.
https://codereview.chromium.org/122083002/

Is it OK to remove the whitespace from Document.cpp, or should I use a text editor that doesn&apos;t do that?

Thank you!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>964873</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-01-06 21:18:37 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Adam, can you please take a look?
&gt; 
&gt; This is ported from a Blink CL that you recently reviewed.
&gt; https://codereview.chromium.org/122083002/
&gt; 
&gt; Is it OK to remove the whitespace from Document.cpp, or should I use a text editor that doesn&apos;t do that?
&gt; 
&gt; Thank you!

Please use a text editor that doesn&apos;t do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>964874</commentid>
    <comment_count>4</comment_count>
      <attachid>220476</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-01-06 21:18:59 -0800</bug_when>
    <thetext>Comment on attachment 220476
Patch

Marking r- for the extraneous whitespace changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>964895</commentid>
    <comment_count>5</comment_count>
      <attachid>220494</attachid>
    <who name="Victor Costan">costan</who>
    <bug_when>2014-01-06 22:44:02 -0800</bug_when>
    <thetext>Created attachment 220494
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>964896</commentid>
    <comment_count>6</comment_count>
    <who name="Victor Costan">costan</who>
    <bug_when>2014-01-06 22:44:45 -0800</bug_when>
    <thetext>Thank you for your guidance, Sam!

Can you please take another look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965057</commentid>
    <comment_count>7</comment_count>
      <attachid>220494</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-01-07 10:06:32 -0800</bug_when>
    <thetext>Comment on attachment 220494
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=220494&amp;action=review

&gt; LayoutTests/ChangeLog:16
&gt; +        * fast/dom/createElementNS-namespace-errors-expected.txt: Added.
&gt; +        * fast/dom/createElementNS-namespace-errors.html: Added. Covers all the corner cases in the DOM4 spec.
&gt; +        * fast/dom/script-tests/setAttributeNS-prefix-and-null-namespace.js: Removed.
&gt; +        * fast/dom/setAttributeNS-expected.txt: Updated to match cleaned up test.
&gt; +        * fast/dom/setAttributeNS-namespace-errors-expected.txt: Added.
&gt; +        * fast/dom/setAttributeNS-namespace-errors.html: Added. Covers all the corner cases in the DOM4 spec.
&gt; +        * fast/dom/setAttributeNS-prefix-and-null-namespace-expected.txt: Removed.
&gt; +        * fast/dom/setAttributeNS-prefix-and-null-namespace.html: Removed. Subsumed by setAttributeNS-namespace-errors.
&gt; +        * fast/dom/setAttributeNS.html: Cleaned up.

Do all these tests fully pass in Firefox now?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965060</commentid>
    <comment_count>8</comment_count>
    <who name="Victor Costan">costan</who>
    <bug_when>2014-01-07 10:19:28 -0800</bug_when>
    <thetext>Alexey, the tests &quot;almost&quot; pass in Firefox. Some assertions check for specific error messages, and those fail in Firefox. In all the cases, Firefox also throws an error with code 14, but its message looks different.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965075</commentid>
    <comment_count>9</comment_count>
      <attachid>220494</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-01-07 10:56:18 -0800</bug_when>
    <thetext>Comment on attachment 220494
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=220494&amp;action=review

&gt; LayoutTests/fast/dom/createElementNS-namespace-errors.html:10
&gt; +shouldThrow(&quot;document.createElementNS(null, &apos;foo:bar&apos;, &apos;baz&apos;)&quot;, &apos;&quot;Error: NamespaceError: DOM Exception 14&quot;&apos;);

Might be a stupid question... What is the third argument in all the tests?

&gt; LayoutTests/fast/dom/createElementNS-namespace-errors.html:18
&gt; +shouldNotThrow(&quot;document.createElementNS(&apos;http://www.w3.org/2000/xmlns/&apos;, &apos;xmlns&apos;, &apos;http://wwww.example.org&apos;)&quot;);
&gt; +shouldThrow(&quot;document.createElementNS(&apos;http://www.w3.org/2000/not-xmlns/&apos;, &apos;xmlns&apos;, &apos;http://wwww.example.org&apos;)&quot;, &apos;&quot;Error: NamespaceError: DOM Exception 14&quot;&apos;);

Might be nice to test for what elements these actually create, not just whether they raise exceptions or not. That&apos;s far from obvious, I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965123</commentid>
    <comment_count>10</comment_count>
      <attachid>220541</attachid>
    <who name="Victor Costan">costan</who>
    <bug_when>2014-01-07 12:51:00 -0800</bug_when>
    <thetext>Created attachment 220541
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965124</commentid>
    <comment_count>11</comment_count>
    <who name="Victor Costan">costan</who>
    <bug_when>2014-01-07 12:53:20 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 220494 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=220494&amp;action=review
&gt; 
&gt; &gt; LayoutTests/fast/dom/createElementNS-namespace-errors.html:10
&gt; &gt; +shouldThrow(&quot;document.createElementNS(null, &apos;foo:bar&apos;, &apos;baz&apos;)&quot;, &apos;&quot;Error: NamespaceError: DOM Exception 14&quot;&apos;);
&gt; 
&gt; Might be a stupid question... What is the third argument in all the tests?

It&apos;s just a proof that I copy-pasted the tests I used in setAttributeNS. Sorry and thank you for catching that!

&gt; 
&gt; &gt; LayoutTests/fast/dom/createElementNS-namespace-errors.html:18
&gt; &gt; +shouldNotThrow(&quot;document.createElementNS(&apos;http://www.w3.org/2000/xmlns/&apos;, &apos;xmlns&apos;, &apos;http://wwww.example.org&apos;)&quot;);
&gt; &gt; +shouldThrow(&quot;document.createElementNS(&apos;http://www.w3.org/2000/not-xmlns/&apos;, &apos;xmlns&apos;, &apos;http://wwww.example.org&apos;)&quot;, &apos;&quot;Error: NamespaceError: DOM Exception 14&quot;&apos;);
&gt; 
&gt; Might be nice to test for what elements these actually create, not just whether they raise exceptions or not. That&apos;s far from obvious, I think.

Done. Can you please take a look and tell me if this is what you had in mind?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965231</commentid>
    <comment_count>12</comment_count>
      <attachid>220541</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-07 16:08:07 -0800</bug_when>
    <thetext>Comment on attachment 220541
Patch

Clearing flags on attachment: 220541

Committed r161464: &lt;http://trac.webkit.org/changeset/161464&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965232</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-07 16:08:10 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965235</commentid>
    <comment_count>14</comment_count>
    <who name="Victor Costan">costan</who>
    <bug_when>2014-01-07 16:15:02 -0800</bug_when>
    <thetext>Thank you very much for the quick turnaround time, Alexey!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220476</attachid>
            <date>2014-01-06 17:47:13 -0800</date>
            <delta_ts>2014-01-06 22:43:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-126553-20140106204717.patch</filename>
            <type>text/plain</type>
            <size>40921</size>
            <attacher name="Victor Costan">costan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MTM4NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBACisyMDE0LTAxLTA2ICBWaWN0b3Ig
Q29zdGFuICA8Y29zdGFuQGdtYWlsLmNvbT4KKworICAgICAgICBjcmVhdGVFbGVtZW50TlMgaGFu
ZGxlcyBlbGVtZW50IG5hbWUgJ3htbG5zJyBjb3JyZWN0bHkuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjY1NTMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogZmFzdC9kb20vY3JlYXRlRWxlbWVu
dE5TLW5hbWVzcGFjZS1lcnJvcnMuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vc2V0QXR0
cmlidXRlTlMtbmFtZXNwYWNlLWVycm9ycy5odG1sCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQu
Y3BwOiBsb3RzIG9mIGF1dG9tYXRlZCB3aGl0ZXNwYWNlIHJlbW92YWwKKyAgICAgICAgKFdlYkNv
cmU6OmNhbkFjY2Vzc0FuY2VzdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp+RG9j
dW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlc2V0VmlzaXRlZExpbmtDb2xv
cik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW1wb3J0Tm9kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6YWRvcHROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
OjpoYXNWYWxpZE5hbWVzcGFjZUZvckVsZW1lbnRzKTogdXBkYXRlZCB0byBtYXRjaCBET00zL0RP
TTQgc3BlYy4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpoYXNWYWxpZE5hbWVzcGFjZUZv
ckF0dHJpYnV0ZXMpOiB1cGRhdGVkIHRvIG1hdGNoIERPTTMvRE9NNCBzcGVjLgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OnJlZ2lvbkJhc2VkQ29sdW1uc0VuYWJsZWQpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OmNzc1N0aWNreVBvc2l0aW9uRW5hYmxlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6Y3NzUmVnaW9uc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OnNldFJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Y2Fub25pY2FsaXpl
ZFRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjcmVhdGVOb2RlSXRlcmF0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNyZWF0ZVRyZWVXYWxrZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNjaGVkdWxlU3R5bGVSZWNhbGMpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OnJlY2FsY1N0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
Ojp1cGRhdGVMYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnVwZGF0ZUxheW91
dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
YXhPYmplY3RDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0Qm9keSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW1wbGljaXRDbG9zZSk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6bWluaW11bUxheW91dERlbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50Ojp3cml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cHJvY2Vzc0h0dHBF
cXVpdik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y2FuUmVwbGFjZUNoaWxkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpyZW1vdmVGb2N1c2VkTm9kZU9mU3VidHJlZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0Rm9jdXNlZEVsZW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6Omxhc3RNb2RpZmllZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6ZG9jdW1lbnREaWRSZXN1bWVGcm9tUGFnZUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjptZWRpYVZvbHVtZURpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6cHJpdmF0ZUJyb3dzaW5nU3RhdGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OnN0YXRlUG9wcGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojppbml0
RE5TUHJlZmV0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlc3VtZVNjaGVkdWxl
ZFRhc2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpyZXF1ZXN0RnVsbFNjcmVlbkZv
ckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndlYmtpdENhbmNlbEZ1bGxT
Y3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndlYmtpdEV4aXRGdWxsc2NyZWVu
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3ZWJraXRXaWxsRW50ZXJGdWxsU2NyZWVu
Rm9yRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0RGlkRXhpdEZ1
bGxTY3JlZW5Gb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRGdWxs
U2NyZWVuUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlbW92ZUZ1bGxT
Y3JlZW5FbGVtZW50T2ZTdWJ0cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpsb2Fk
ZXIpOgorCiAyMDE0LTAxLTA2ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29t
PgogCiAgICAgICAgIEhvb2sgdXAgdGhlIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDE2MTM4NykKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1NSw3ICszNTUsNyBAQCBz
dGF0aWMgYm9vbCBjYW5BY2Nlc3NBbmNlc3Rvcihjb25zdCBTZWN1CiAgICAgICAgIGNvbnN0IFNl
Y3VyaXR5T3JpZ2luKiBhbmNlc3RvclNlY3VyaXR5T3JpZ2luID0gYW5jZXN0b3JEb2N1bWVudC0+
c2VjdXJpdHlPcmlnaW4oKTsKICAgICAgICAgaWYgKGFjdGl2ZVNlY3VyaXR5T3JpZ2luLT5jYW5B
Y2Nlc3MoYW5jZXN0b3JTZWN1cml0eU9yaWdpbikpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgCisKICAgICAgICAgLy8gQWxsb3cgZmlsZSBVUkwgZGVzY2VuZGFudCBuYXZpZ2F0
aW9uIGV2ZW4gd2hlbiBhbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMgaXMgZmFsc2UuCiAgICAg
ICAgIC8vIEZJWE1FOiBJdCdzIGEgYml0IHN0cmFuZ2UgdG8gc3BlY2lhbC1jYXNlIGxvY2FsIG9y
aWdpbnMgaGVyZS4gU2hvdWxkIHdlIGJlIGRvaW5nCiAgICAgICAgIC8vIHNvbWV0aGluZyBtb3Jl
IGdlbmVyYWwgaW5zdGVhZD8KQEAgLTU2NSw3ICs1NjUsNyBAQCBEb2N1bWVudDo6fkRvY3VtZW50
KCkKICAgICBtX2RldmljZU1vdGlvbkNsaWVudC0+ZGV2aWNlTW90aW9uQ29udHJvbGxlckRlc3Ry
b3llZCgpOwogICAgIG1fZGV2aWNlT3JpZW50YXRpb25DbGllbnQtPmRldmljZU9yaWVudGF0aW9u
Q29udHJvbGxlckRlc3Ryb3llZCgpOwogI2VuZGlmCi0gICAgCisKICNpZiBFTkFCTEUoVEVNUExB
VEVfRUxFTUVOVCkKICAgICBpZiAobV90ZW1wbGF0ZURvY3VtZW50KQogICAgICAgICBtX3RlbXBs
YXRlRG9jdW1lbnQtPnNldFRlbXBsYXRlRG9jdW1lbnRIb3N0KG51bGxwdHIpOyAvLyBiYWxhbmNl
ZCBpbiB0ZW1wbGF0ZURvY3VtZW50KCkuCkBAIC03NjEsNyArNzYxLDcgQEAgdm9pZCBEb2N1bWVu
dDo6cmVzZXRMaW5rQ29sb3IoKQogCiB2b2lkIERvY3VtZW50OjpyZXNldFZpc2l0ZWRMaW5rQ29s
b3IoKQogewotICAgIG1fdmlzaXRlZExpbmtDb2xvciA9IENvbG9yKDg1LCAyNiwgMTM5KTsgICAg
CisgICAgbV92aXNpdGVkTGlua0NvbG9yID0gQ29sb3IoODUsIDI2LCAxMzkpOwogfQogCiB2b2lk
IERvY3VtZW50OjpyZXNldEFjdGl2ZUxpbmtDb2xvcigpCkBAIC04OTMsNyArODkzLDcgQEAgUGFz
c1JlZlB0cjxDU1NTdHlsZURlY2xhcmF0aW9uPiBEb2N1bWVudAogUGFzc1JlZlB0cjxOb2RlPiBE
b2N1bWVudDo6aW1wb3J0Tm9kZShOb2RlKiBpbXBvcnRlZE5vZGUsIGJvb2wgZGVlcCwgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7CiAgICAgZWMgPSAwOwotICAgIAorCiAgICAgaWYgKCFpbXBvcnRlZE5v
ZGUpIHsKICAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CkBAIC05NTUsNyArOTU1LDcgQEAgUGFzc1JlZlB0cjxOb2RlPiBEb2N1bWVudDo6aW1w
b3J0Tm9kZShObwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICByZXR1cm4gbmV3RnJhZ21lbnQu
cmVsZWFzZSgpOwogICAgIH0KICAgICBjYXNlIEVOVElUWV9OT0RFOgpAQCAtOTk0LDEyICs5OTQs
MTIgQEAgUGFzc1JlZlB0cjxOb2RlPiBEb2N1bWVudDo6YWRvcHROb2RlKFBhcwogICAgIGNhc2Ug
WFBBVEhfTkFNRVNQQUNFX05PREU6CiAgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CiAg
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGNhc2UgQVRUUklCVVRFX05PREU6IHsgICAgICAg
ICAgICAgICAgICAgCisgICAgY2FzZSBBVFRSSUJVVEVfTk9ERTogewogICAgICAgICBBdHRyJiBh
dHRyID0gdG9BdHRyKCpzb3VyY2UpOwogICAgICAgICBpZiAoYXR0ci5vd25lckVsZW1lbnQoKSkK
ICAgICAgICAgICAgIGF0dHIub3duZXJFbGVtZW50KCktPnJlbW92ZUF0dHJpYnV0ZU5vZGUoJmF0
dHIsIGVjKTsKICAgICAgICAgYnJlYWs7Ci0gICAgfSAgICAgICAKKyAgICB9CiAgICAgZGVmYXVs
dDoKICAgICAgICAgaWYgKHNvdXJjZS0+aXNTaGFkb3dSb290KCkpIHsKICAgICAgICAgICAgIC8v
IFNoYWRvd1Jvb3QgY2Fubm90IGRpc2Nvbm5lY3QgaXRzZWxmIGZyb20gdGhlIGhvc3Qgbm9kZS4K
QEAgLTEwMzYsMjEgKzEwMzYsMTQgQEAgYm9vbCBEb2N1bWVudDo6aGFzVmFsaWROYW1lc3BhY2VG
b3JFbGVtZQogCiAgICAgLy8gUmVxdWlyZWQgYnkgRE9NIExldmVsIDMgQ29yZSBhbmQgdW5zcGVj
aWZpZWQgYnkgRE9NIExldmVsIDIgQ29yZToKICAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi8y
MDA0L1JFQy1ET00tTGV2ZWwtMy1Db3JlLTIwMDQwNDA3L2NvcmUuaHRtbCNJRC1Eb2NDckVsTlMK
LSAgICAvLyBjcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIiwg
ImZvbzpiYXIiKSwgY3JlYXRlRWxlbWVudE5TKG51bGwsICJ4bWxuczpiYXIiKQotICAgIGlmICgo
cU5hbWUucHJlZml4KCkgPT0geG1sbnNBdG9tICYmIHFOYW1lLm5hbWVzcGFjZVVSSSgpICE9IFhN
TE5TTmFtZXM6OnhtbG5zTmFtZXNwYWNlVVJJKSB8fCAocU5hbWUucHJlZml4KCkgIT0geG1sbnNB
dG9tICYmIHFOYW1lLm5hbWVzcGFjZVVSSSgpID09IFhNTE5TTmFtZXM6OnhtbG5zTmFtZXNwYWNl
VVJJKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7CisgICAgLy8g
Y3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyIsICJmb286YmFy
IiksIGNyZWF0ZUVsZW1lbnROUyhudWxsLCAieG1sbnM6YmFyIiksIGNyZWF0ZUVsZW1lbnROUyhu
dWxsLCAieG1sbnMiKQorICAgIGlmIChxTmFtZS5wcmVmaXgoKSA9PSB4bWxuc0F0b20gfHwgKHFO
YW1lLnByZWZpeCgpLmlzRW1wdHkoKSAmJiBxTmFtZS5sb2NhbE5hbWUoKSA9PSB4bWxuc0F0b20p
KQorICAgICAgICByZXR1cm4gcU5hbWUubmFtZXNwYWNlVVJJKCkgPT0gWE1MTlNOYW1lczo6eG1s
bnNOYW1lc3BhY2VVUkk7CisgICAgcmV0dXJuIHFOYW1lLm5hbWVzcGFjZVVSSSgpICE9IFhNTE5T
TmFtZXM6OnhtbG5zTmFtZXNwYWNlVVJJOwogfQogCiBib29sIERvY3VtZW50OjpoYXNWYWxpZE5h
bWVzcGFjZUZvckF0dHJpYnV0ZXMoY29uc3QgUXVhbGlmaWVkTmFtZSYgcU5hbWUpCiB7Ci0gICAg
Ly8gU3BlYzogRE9NIExldmVsIDIgQ29yZTogaHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVs
LTItQ29yZS9jb3JlLmh0bWwjSUQtRWxTZXRBdHRyTlMKLSAgICBpZiAocU5hbWUucHJlZml4KCku
aXNFbXB0eSgpICYmIHFOYW1lLmxvY2FsTmFtZSgpID09IHhtbG5zQXRvbSkgewotICAgICAgICAv
LyBOb3RlOiBUaGUgY2FzZSBvZiBhbiAieG1sbnMiIHF1YWxpZmllZCBuYW1lIHdpdGggYSBuYW1l
c3BhY2Ugb2YKLSAgICAgICAgLy8geG1sbnNOYW1lc3BhY2VVUkkgaXMgc3BlY2lmaWNhbGx5IGFs
bG93ZWQgKFNlZSA8aHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8+KS4KLSAgICAgICAgcmV0
dXJuIHFOYW1lLm5hbWVzcGFjZVVSSSgpID09IFhNTE5TTmFtZXM6OnhtbG5zTmFtZXNwYWNlVVJJ
OwotICAgIH0KICAgICByZXR1cm4gaGFzVmFsaWROYW1lc3BhY2VGb3JFbGVtZW50cyhxTmFtZSk7
CiB9CiAKQEAgLTEwODQsMTcgKzEwNzcsMTcgQEAgUGFzc1JlZlB0cjxFbGVtZW50PiBEb2N1bWVu
dDo6Y3JlYXRlRWxlbQogCiBib29sIERvY3VtZW50OjpyZWdpb25CYXNlZENvbHVtbnNFbmFibGVk
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gc2V0dGluZ3MoKSAmJiBzZXR0aW5ncygpLT5yZWdpb25C
YXNlZENvbHVtbnNFbmFibGVkKCk7IAorICAgIHJldHVybiBzZXR0aW5ncygpICYmIHNldHRpbmdz
KCktPnJlZ2lvbkJhc2VkQ29sdW1uc0VuYWJsZWQoKTsKIH0KIAogYm9vbCBEb2N1bWVudDo6Y3Nz
U3RpY2t5UG9zaXRpb25FbmFibGVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gc2V0dGluZ3MoKSAm
JiBzZXR0aW5ncygpLT5jc3NTdGlja3lQb3NpdGlvbkVuYWJsZWQoKTsgCisgICAgcmV0dXJuIHNl
dHRpbmdzKCkgJiYgc2V0dGluZ3MoKS0+Y3NzU3RpY2t5UG9zaXRpb25FbmFibGVkKCk7CiB9CiAK
IGJvb2wgRG9jdW1lbnQ6OmNzc1JlZ2lvbnNFbmFibGVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5jc3NSZWdpb25zRW5hYmxl
ZCgpOyAKKyAgICByZXR1cm4gUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMo
KS5jc3NSZWdpb25zRW5hYmxlZCgpOwogfQogCiBib29sIERvY3VtZW50Ojpjc3NDb21wb3NpdGlu
Z0VuYWJsZWQoKSBjb25zdApAQCAtMTE4Nyw3ICsxMTgwLDcgQEAgdm9pZCBEb2N1bWVudDo6c2V0
UmVhZHlTdGF0ZShSZWFkeVN0YXRlIAogCiAgICAgbV9yZWFkeVN0YXRlID0gcmVhZHlTdGF0ZTsK
ICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnJlYWR5c3RhdGVj
aGFuZ2VFdmVudCwgZmFsc2UsIGZhbHNlKSk7Ci0gICAgCisKICAgICBpZiAoc2V0dGluZ3MoKSAm
JiBzZXR0aW5ncygpLT5zdXBwcmVzc2VzSW5jcmVtZW50YWxSZW5kZXJpbmcoKSkKICAgICAgICAg
c2V0VmlzdWFsVXBkYXRlc0FsbG93ZWQocmVhZHlTdGF0ZSk7CiB9CkBAIC0xMjE3LDcgKzEyMTAs
NyBAQCB2b2lkIERvY3VtZW50OjpzZXRWaXN1YWxVcGRhdGVzQWxsb3dlZChSCiAgICAgICAgIGJy
ZWFrOwogICAgIH0KIH0KLSAgICAKKwogdm9pZCBEb2N1bWVudDo6c2V0VmlzdWFsVXBkYXRlc0Fs
bG93ZWQoYm9vbCB2aXN1YWxVcGRhdGVzQWxsb3dlZCkKIHsKICAgICBpZiAobV92aXN1YWxVcGRh
dGVzQWxsb3dlZCA9PSB2aXN1YWxVcGRhdGVzQWxsb3dlZCkKQEAgLTE0NjUsNyArMTQ1OCw3IEBA
IHN0YXRpYyBpbmxpbmUgU3RyaW5nV2l0aERpcmVjdGlvbiBjYW5vbmkKIAogICAgIC8vIFJlcGxh
Y2UgdGhlIGJhY2tzbGFzaGVzIHdpdGggY3VycmVuY3kgc3ltYm9scyBpZiB0aGUgZW5jb2Rpbmcg
cmVxdWlyZXMgaXQuCiAgICAgZG9jdW1lbnQtPmRpc3BsYXlCdWZmZXJNb2RpZmllZEJ5RW5jb2Rp
bmcoYnVmZmVyLmNoYXJhY3RlcnMoKSwgYnVmZmVyLmxlbmd0aCgpKTsKLSAgICAKKwogICAgIHJl
dHVybiBTdHJpbmdXaXRoRGlyZWN0aW9uKFN0cmluZzo6YWRvcHQoYnVmZmVyKSwgdGl0bGVXaXRo
RGlyZWN0aW9uLmRpcmVjdGlvbigpKTsKIH0KIApAQCAtMTYzOSw3ICsxNjMyLDcgQEAgUGFzc1Jl
ZlB0cjxSYW5nZT4gRG9jdW1lbnQ6OmNyZWF0ZVJhbmdlKAogICAgIHJldHVybiBSYW5nZTo6Y3Jl
YXRlKCp0aGlzKTsKIH0KIAotUGFzc1JlZlB0cjxOb2RlSXRlcmF0b3I+IERvY3VtZW50OjpjcmVh
dGVOb2RlSXRlcmF0b3IoTm9kZSogcm9vdCwgdW5zaWduZWQgd2hhdFRvU2hvdywgCitQYXNzUmVm
UHRyPE5vZGVJdGVyYXRvcj4gRG9jdW1lbnQ6OmNyZWF0ZU5vZGVJdGVyYXRvcihOb2RlKiByb290
LCB1bnNpZ25lZCB3aGF0VG9TaG93LAogICAgIFBhc3NSZWZQdHI8Tm9kZUZpbHRlcj4gZmlsdGVy
LCBib29sIGV4cGFuZEVudGl0eVJlZmVyZW5jZXMsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAg
IGlmICghcm9vdCkgewpAQCAtMTY0OSw3ICsxNjQyLDcgQEAgUGFzc1JlZlB0cjxOb2RlSXRlcmF0
b3I+IERvY3VtZW50OjpjcmVhdAogICAgIHJldHVybiBOb2RlSXRlcmF0b3I6OmNyZWF0ZShyb290
LCB3aGF0VG9TaG93LCBmaWx0ZXIsIGV4cGFuZEVudGl0eVJlZmVyZW5jZXMpOwogfQogCi1QYXNz
UmVmUHRyPFRyZWVXYWxrZXI+IERvY3VtZW50OjpjcmVhdGVUcmVlV2Fsa2VyKE5vZGUqIHJvb3Qs
IHVuc2lnbmVkIHdoYXRUb1Nob3csIAorUGFzc1JlZlB0cjxUcmVlV2Fsa2VyPiBEb2N1bWVudDo6
Y3JlYXRlVHJlZVdhbGtlcihOb2RlKiByb290LCB1bnNpZ25lZCB3aGF0VG9TaG93LAogICAgIFBh
c3NSZWZQdHI8Tm9kZUZpbHRlcj4gZmlsdGVyLCBib29sIGV4cGFuZEVudGl0eVJlZmVyZW5jZXMs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmICghcm9vdCkgewpAQCAtMTY4MSw3ICsxNjc0
LDcgQEAgdm9pZCBEb2N1bWVudDo6c2NoZWR1bGVTdHlsZVJlY2FsYygpCiAKICAgICAvLyBGSVhN
RTogV2h5IG9uIGVhcnRoIGlzIHRoaXMgaGVyZT8gVGhpcyBpcyBjbGVhcmx5IG1pc3BsYWNlZC4K
ICAgICBpbnZhbGlkYXRlQWNjZXNzS2V5TWFwKCk7Ci0gICAgCisKICAgICBtX3N0eWxlUmVjYWxj
VGltZXIuc3RhcnRPbmVTaG90KDApOwogCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRTY2hlZHVsZVN0eWxlUmVjYWxjdWxhdGlvbih0aGlzKTsKQEAgLTE3MjEsNyArMTcxNCw3IEBA
IHZvaWQgRG9jdW1lbnQ6OnJlY2FsY1N0eWxlKFN0eWxlOjpDaGFuZ2UKICAgICBGcmFtZVZpZXcm
IGZyYW1lVmlldyA9IG1fcmVuZGVyVmlldy0+ZnJhbWVWaWV3KCk7CiAgICAgaWYgKGZyYW1lVmll
dy5pc1BhaW50aW5nKCkpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIGlmIChtX2luU3R5
bGVSZWNhbGMpCiAgICAgICAgIHJldHVybjsgLy8gR3VhcmQgYWdhaW5zdCByZS1lbnRyYW5jeS4g
LWR3aAogCkBAIC0xODI3LDcgKzE4MjAsNyBAQCB2b2lkIERvY3VtZW50Ojp1cGRhdGVMYXlvdXQo
KQogCiAgICAgU3RhY2tTdGF0czo6TGF5b3V0Q2hlY2tQb2ludCBsYXlvdXRDaGVja1BvaW50Owog
Ci0gICAgLy8gT25seSBkbyBhIGxheW91dCBpZiBjaGFuZ2VzIGhhdmUgb2NjdXJyZWQgdGhhdCBt
YWtlIGl0IG5lY2Vzc2FyeS4gICAgICAKKyAgICAvLyBPbmx5IGRvIGEgbGF5b3V0IGlmIGNoYW5n
ZXMgaGF2ZSBvY2N1cnJlZCB0aGF0IG1ha2UgaXQgbmVjZXNzYXJ5LgogICAgIGlmIChmcmFtZVZp
ZXcgJiYgcmVuZGVyVmlldygpICYmIChmcmFtZVZpZXctPmxheW91dFBlbmRpbmcoKSB8fCByZW5k
ZXJWaWV3KCktPm5lZWRzTGF5b3V0KCkpKQogICAgICAgICBmcmFtZVZpZXctPmxheW91dCgpOwog
CkBAIC0xODQ0LDcgKzE4MzcsNyBAQCB2b2lkIERvY3VtZW50Ojp1cGRhdGVMYXlvdXQoKQogdm9p
ZCBEb2N1bWVudDo6dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCkKIHsKICAg
ICBib29sIG9sZElnbm9yZSA9IG1faWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzOwotICAgIAorCiAg
ICAgaWYgKCFoYXZlU3R5bGVzaGVldHNMb2FkZWQoKSkgewogICAgICAgICBtX2lnbm9yZVBlbmRp
bmdTdHlsZXNoZWV0cyA9IHRydWU7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBhcmUgd2lsbGluZyB0
byBhdHRlbXB0IHRvIHN1cHByZXNzIHBhaW50aW5nIHdpdGggb3V0ZGF0ZWQgc3R5bGUgaW5mbyBv
bmx5IG9uY2UuICBPdXIgYXNzdW1wdGlvbiBpcyB0aGF0IGl0IHdvdWxkIGJlCkBAIC0xODU4LDgg
KzE4NTEsOCBAQCB2b2lkIERvY3VtZW50Ojp1cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nCiAgICAg
ICAgICAgICBtX3BlbmRpbmdTaGVldExheW91dCA9IERpZExheW91dFdpdGhQZW5kaW5nU2hlZXRz
OwogICAgICAgICAgICAgc3R5bGVSZXNvbHZlckNoYW5nZWQoUmVjYWxjU3R5bGVJbW1lZGlhdGVs
eSk7CiAgICAgICAgIH0gZWxzZSBpZiAobV9oYXNOb2Rlc1dpdGhQbGFjZWhvbGRlclN0eWxlKQot
ICAgICAgICAgICAgLy8gSWYgbmV3IG5vZGVzIGhhdmUgYmVlbiBhZGRlZCBvciBzdHlsZSByZWNh
bGMgaGFzIGJlZW4gZG9uZSB3aXRoIHN0eWxlIHNoZWV0cyBzdGlsbCBwZW5kaW5nLCBzb21lIG5v
ZGVzIAotICAgICAgICAgICAgLy8gbWF5IG5vdCBoYXZlIGhhZCB0aGVpciByZWFsIHN0eWxlIGNh
bGN1bGF0ZWQgeWV0LiBOb3JtYWxseSB0aGlzIGdldHMgY2xlYW5lZCB3aGVuIHN0eWxlIHNoZWV0
cyBhcnJpdmUgCisgICAgICAgICAgICAvLyBJZiBuZXcgbm9kZXMgaGF2ZSBiZWVuIGFkZGVkIG9y
IHN0eWxlIHJlY2FsYyBoYXMgYmVlbiBkb25lIHdpdGggc3R5bGUgc2hlZXRzIHN0aWxsIHBlbmRp
bmcsIHNvbWUgbm9kZXMKKyAgICAgICAgICAgIC8vIG1heSBub3QgaGF2ZSBoYWQgdGhlaXIgcmVh
bCBzdHlsZSBjYWxjdWxhdGVkIHlldC4gTm9ybWFsbHkgdGhpcyBnZXRzIGNsZWFuZWQgd2hlbiBz
dHlsZSBzaGVldHMgYXJyaXZlCiAgICAgICAgICAgICAvLyBidXQgaGVyZSB3ZSBuZWVkIHVwLXRv
LWRhdGUgc3R5bGUgaW1tZWRpYXRlbHkuCiAgICAgICAgICAgICByZWNhbGNTdHlsZShTdHlsZTo6
Rm9yY2UpOwogICAgIH0KQEAgLTIxOTAsNyArMjE4Myw3IEBAIEFYT2JqZWN0Q2FjaGUqIERvY3Vt
ZW50OjpheE9iamVjdENhY2hlKCkKIHsKICAgICBpZiAoIUFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2li
aWxpdHlFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIAorCiAgICAgLy8g
VGhlIG9ubHkgZG9jdW1lbnQgdGhhdCBhY3R1YWxseSBoYXMgYSBBWE9iamVjdENhY2hlIGlzIHRo
ZSB0b3AtbGV2ZWwKICAgICAvLyBkb2N1bWVudC4gIFRoaXMgaXMgYmVjYXVzZSB3ZSBuZWVkIHRv
IGJlIGFibGUgdG8gZ2V0IGZyb20gYW55IFdlYkNvcmVBWE9iamVjdAogICAgIC8vIHRvIGFueSBv
dGhlciBXZWJDb3JlQVhPYmplY3Qgb24gdGhlIHNhbWUgcGFnZS4gIFVzaW5nIGEgc2luZ2xlIGNh
Y2hlIGFsbG93cwpAQCAtMjMxMyw3ICsyMzA2LDcgQEAgdm9pZCBEb2N1bWVudDo6c2V0Qm9keShQ
YXNzUmVmUHRyPEhUTUxFbAogewogICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gbmV3Qm9keSA9IHBy
cE5ld0JvZHk7CiAKLSAgICBpZiAoIW5ld0JvZHkgfHwgIWRvY3VtZW50RWxlbWVudCgpIHx8ICFu
ZXdCb2R5LT5oYXNUYWdOYW1lKGJvZHlUYWcpKSB7IAorICAgIGlmICghbmV3Qm9keSB8fCAhZG9j
dW1lbnRFbGVtZW50KCkgfHwgIW5ld0JvZHktPmhhc1RhZ05hbWUoYm9keVRhZykpIHsKICAgICAg
ICAgZWMgPSBISUVSQVJDSFlfUkVRVUVTVF9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBA
IC0yMzIzLDcgKzIzMTYsNyBAQCB2b2lkIERvY3VtZW50OjpzZXRCb2R5KFBhc3NSZWZQdHI8SFRN
TEVsCiAgICAgICAgIFJlZlB0cjxOb2RlPiBub2RlID0gaW1wb3J0Tm9kZShuZXdCb2R5LmdldCgp
LCB0cnVlLCBlYyk7CiAgICAgICAgIGlmIChlYykKICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgCisKICAgICAgICAgbmV3Qm9keSA9IHRvSFRNTEVsZW1lbnQobm9kZS5nZXQoKSk7CiAgICAg
fQogCkBAIC0yMzc4LDcgKzIzNzEsNyBAQCB2b2lkIERvY3VtZW50OjppbXBsaWNpdENsb3NlKCkK
IAogICAgIGJvb2wgd2FzTG9jYXRpb25DaGFuZ2VQZW5kaW5nID0gZnJhbWUoKSAmJiBmcmFtZSgp
LT5uYXZpZ2F0aW9uU2NoZWR1bGVyKCkubG9jYXRpb25DaGFuZ2VQZW5kaW5nKCk7CiAgICAgYm9v
bCBkb2xvYWQgPSAhcGFyc2luZygpICYmIG1fcGFyc2VyICYmICFtX3Byb2Nlc3NpbmdMb2FkRXZl
bnQgJiYgIXdhc0xvY2F0aW9uQ2hhbmdlUGVuZGluZzsKLSAgICAKKwogICAgIGlmICghZG9sb2Fk
KQogICAgICAgICByZXR1cm47CiAKQEAgLTIzOTgsNyArMjM5MSw3IEBAIHZvaWQgRG9jdW1lbnQ6
OmltcGxpY2l0Q2xvc2UoKQogICAgIC8vIFRoZXJlIGFyZSBlYXJsaWVyIG9wcG9ydHVuaXRpZXMg
d2UgY291bGQgc3RhcnQgaXQ6CiAgICAgLy8gIC1XaGVuIHRoZSA8aGVhZD4gZmluaXNoZXMgcGFy
c2luZwogICAgIC8vICAtV2hlbiBhbnkgbmV3IEhUTUxMaW5rRWxlbWVudCBpcyBpbnNlcnRlZCBp
bnRvIHRoZSBkb2N1bWVudAotICAgIC8vIEJ1dCB0aG9zZSBhZGQgYSBkeW5hbWljIGNvbXBvbmVu
dCB0byB0aGUgZmF2aWNvbiB0aGF0IGhhcyBVSSAKKyAgICAvLyBCdXQgdGhvc2UgYWRkIGEgZHlu
YW1pYyBjb21wb25lbnQgdG8gdGhlIGZhdmljb24gdGhhdCBoYXMgVUkKICAgICAvLyByYW1pZmlj
YXRpb25zLCBhbmQgd2UgbmVlZCB0byBkZWNpZGUgd2hhdCBpcyB0aGUgUmlnaHQgVGhpbmcgVG8g
RG8odG0pCiAgICAgRnJhbWUqIGYgPSBmcmFtZSgpOwogICAgIGlmIChmKSB7CkBAIC0yNDI0LDcg
KzI0MTcsNyBAQCB2b2lkIERvY3VtZW50OjppbXBsaWNpdENsb3NlKCkKICAgICBkaXNwYXRjaFdp
bmRvd0xvYWRFdmVudCgpOwogICAgIGVucXVldWVQYWdlc2hvd0V2ZW50KFBhZ2VzaG93RXZlbnRO
b3RQZXJzaXN0ZWQpOwogICAgIGVucXVldWVQb3BzdGF0ZUV2ZW50KG1fcGVuZGluZ1N0YXRlT2Jq
ZWN0ID8gbV9wZW5kaW5nU3RhdGVPYmplY3QucmVsZWFzZSgpIDogU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpudWxsVmFsdWUoKSk7Ci0gICAgCisKICAgICBpZiAoZikKICAgICAgICAgZi0+bG9hZGVy
KCkuaGFuZGxlZE9ubG9hZEV2ZW50cygpOwogI2lmZGVmIElOU1RSVU1FTlRfTEFZT1VUX1NDSEVE
VUxJTkcKQEAgLTI0NDQsMjEgKzI0MzcsMjEgQEAgdm9pZCBEb2N1bWVudDo6aW1wbGljaXRDbG9z
ZSgpCiAKICAgICBpZiAoZnJhbWUoKS0+bmF2aWdhdGlvblNjaGVkdWxlcigpLmxvY2F0aW9uQ2hh
bmdlUGVuZGluZygpICYmIGVsYXBzZWRUaW1lKCkgPCBzZXR0aW5ncygpLT5sYXlvdXRJbnRlcnZh
bCgpKSB7CiAgICAgICAgIC8vIEp1c3QgYmFpbCBvdXQuIEJlZm9yZSBvciBkdXJpbmcgdGhlIG9u
bG9hZCB3ZSB3ZXJlIHNoaWZ0ZWQgdG8gYW5vdGhlciBwYWdlLgotICAgICAgICAvLyBUaGUgb2xk
IGktQmVuY2ggc3VpdGUgZG9lcyB0aGlzLiBXaGVuIHRoaXMgaGFwcGVucyBkb24ndCBib3RoZXIg
cGFpbnRpbmcgb3IgbGF5aW5nIG91dC4gICAgICAgIAorICAgICAgICAvLyBUaGUgb2xkIGktQmVu
Y2ggc3VpdGUgZG9lcyB0aGlzLiBXaGVuIHRoaXMgaGFwcGVucyBkb24ndCBib3RoZXIgcGFpbnRp
bmcgb3IgbGF5aW5nIG91dC4KICAgICAgICAgbV9wcm9jZXNzaW5nTG9hZEV2ZW50ID0gZmFsc2U7
CiAgICAgICAgIHZpZXcoKS0+dW5zY2hlZHVsZVJlbGF5b3V0KCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKICAgICBmcmFtZSgpLT5sb2FkZXIoKS5jaGVja0NhbGxJbXBsaWNpdENsb3NlKCk7
Ci0gICAgCisKICAgICAvLyBXZSB1c2VkIHRvIGZvcmNlIGEgc3luY2hyb25vdXMgZGlzcGxheSBh
bmQgZmx1c2ggaGVyZS4gIFRoaXMgcmVhbGx5IGlzbid0CiAgICAgLy8gbmVjZXNzYXJ5IGFuZCBj
YW4gaW4gZmFjdCBiZSBhY3RpdmVseSBoYXJtZnVsIGlmIHBhZ2VzIGFyZSBsb2FkaW5nIGF0IGEg
cmF0ZSBvZiA+IDYwZnBzCiAgICAgLy8gKGlmIHlvdXIgcGxhdGZvcm0gaXMgc3luY2luZyBmbHVz
aGVzIGFuZCBsaW1pdGluZyB0aGVtIHRvIDYwZnBzKS4KICAgICBtX292ZXJNaW5pbXVtTGF5b3V0
VGhyZXNob2xkID0gdHJ1ZTsKICAgICBpZiAoIW93bmVyRWxlbWVudCgpIHx8IChvd25lckVsZW1l
bnQoKS0+cmVuZGVyZXIoKSAmJiAhb3duZXJFbGVtZW50KCktPnJlbmRlcmVyKCktPm5lZWRzTGF5
b3V0KCkpKSB7CiAgICAgICAgIHVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKLSAgICAgICAgCisKICAg
ICAgICAgLy8gQWx3YXlzIGRvIGEgbGF5b3V0IGFmdGVyIGxvYWRpbmcgaWYgbmVlZGVkLgogICAg
ICAgICBpZiAodmlldygpICYmIHJlbmRlclZpZXcoKSAmJiAoIXJlbmRlclZpZXcoKS0+Zmlyc3RD
aGlsZCgpIHx8IHJlbmRlclZpZXcoKS0+bmVlZHNMYXlvdXQoKSkpCiAgICAgICAgICAgICB2aWV3
KCktPmxheW91dCgpOwpAQCAtMjQ3MCw4ICsyNDYzLDggQEAgdm9pZCBEb2N1bWVudDo6aW1wbGlj
aXRDbG9zZSgpCiAgICAgaWYgKGYgJiYgaGFzTGl2aW5nUmVuZGVyVHJlZSgpICYmIEFYT2JqZWN0
Q2FjaGU6OmFjY2Vzc2liaWxpdHlFbmFibGVkKCkpIHsKICAgICAgICAgLy8gVGhlIEFYIGNhY2hl
IG1heSBoYXZlIGJlZW4gY2xlYXJlZCBhdCB0aGlzIHBvaW50LCBidXQgd2UgbmVlZCB0byBtYWtl
IHN1cmUgaXQgY29udGFpbnMgYW4KICAgICAgICAgLy8gQVggb2JqZWN0IHRvIHNlbmQgdGhlIG5v
dGlmaWNhdGlvbiB0by4gZ2V0T3JDcmVhdGUgd2lsbCBtYWtlIHN1cmUgdGhhdCBhbiB2YWxpZCBB
WCBvYmplY3QKLSAgICAgICAgLy8gZXhpc3RzIGluIHRoZSBjYWNoZSAod2UgaWdub3JlIHRoZSBy
ZXR1cm4gdmFsdWUgYmVjYXVzZSB3ZSBkb24ndCBuZWVkIGl0IGhlcmUpLiBUaGlzIGlzIAotICAg
ICAgICAvLyBvbmx5IHNhZmUgdG8gY2FsbCB3aGVuIGEgbGF5b3V0IGlzIG5vdCBpbiBwcm9ncmVz
cywgc28gaXQgY2FuIG5vdCBiZSB1c2VkIGluIHBvc3ROb3RpZmljYXRpb24uICAgIAorICAgICAg
ICAvLyBleGlzdHMgaW4gdGhlIGNhY2hlICh3ZSBpZ25vcmUgdGhlIHJldHVybiB2YWx1ZSBiZWNh
dXNlIHdlIGRvbid0IG5lZWQgaXQgaGVyZSkuIFRoaXMgaXMKKyAgICAgICAgLy8gb25seSBzYWZl
IHRvIGNhbGwgd2hlbiBhIGxheW91dCBpcyBub3QgaW4gcHJvZ3Jlc3MsIHNvIGl0IGNhbiBub3Qg
YmUgdXNlZCBpbiBwb3N0Tm90aWZpY2F0aW9uLgogICAgICAgICBheE9iamVjdENhY2hlKCktPmdl
dE9yQ3JlYXRlKHJlbmRlclZpZXcoKSk7CiAgICAgICAgIGlmICh0aGlzID09IHRvcERvY3VtZW50
KCkpCiAgICAgICAgICAgICBheE9iamVjdENhY2hlKCktPnBvc3ROb3RpZmljYXRpb24ocmVuZGVy
VmlldygpLCBBWE9iamVjdENhY2hlOjpBWExvYWRDb21wbGV0ZSk7CkBAIC0yNTE2LDcgKzI1MDks
NyBAQCBib29sIERvY3VtZW50OjpzaG91bGRTY2hlZHVsZUxheW91dCgpCiAgICAgcmV0dXJuICho
YXZlU3R5bGVzaGVldHNMb2FkZWQoKSAmJiBib2R5KCkpCiAgICAgICAgIHx8IChkb2N1bWVudEVs
ZW1lbnQoKSAmJiAhZG9jdW1lbnRFbGVtZW50KCktPmhhc1RhZ05hbWUoaHRtbFRhZykpOwogfQot
ICAgIAorCiBib29sIERvY3VtZW50Ojppc0xheW91dFRpbWVyQWN0aXZlKCkKIHsKICAgICByZXR1
cm4gdmlldygpICYmIHZpZXcoKS0+bGF5b3V0UGVuZGluZygpICYmICFtaW5pbXVtTGF5b3V0RGVs
YXkoKTsKQEAgLTI1MjYsNyArMjUxOSw3IEBAIGludCBEb2N1bWVudDo6bWluaW11bUxheW91dERl
bGF5KCkKIHsKICAgICBpZiAobV9vdmVyTWluaW11bUxheW91dFRocmVzaG9sZCkKICAgICAgICAg
cmV0dXJuIDA7Ci0gICAgCisKICAgICBpbnQgZWxhcHNlZCA9IGVsYXBzZWRUaW1lKCk7CiAgICAg
bV9vdmVyTWluaW11bUxheW91dFRocmVzaG9sZCA9IGVsYXBzZWQgPiBzZXR0aW5ncygpLT5sYXlv
dXRJbnRlcnZhbCgpOwogCkBAIC0yNTY3LDcgKzI1NjAsNyBAQCB2b2lkIERvY3VtZW50Ojp3cml0
ZShjb25zdCBTZWdtZW50ZWRTdHJpCiAjaWZkZWYgSU5TVFJVTUVOVF9MQVlPVVRfU0NIRURVTElO
RwogICAgIGlmICghb3duZXJFbGVtZW50KCkpCiAgICAgICAgIHByaW50ZigiRW5kaW5nIGEgZG9j
dW1lbnQud3JpdGUgYXQgJWRcbiIsIGVsYXBzZWRUaW1lKCkpOwotI2VuZGlmICAgIAorI2VuZGlm
CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OndyaXRlKGNvbnN0IFN0cmluZyYgdGV4dCwgRG9jdW1lbnQq
IG93bmVyRG9jdW1lbnQpCkBAIC0yODIxLDkgKzI4MTQsOSBAQCB2b2lkIERvY3VtZW50Ojpwcm9j
ZXNzSHR0cEVxdWl2KGNvbnN0IFN0CiAgICAgRnJhbWUqIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsK
IAogICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShlcXVpdiwgImRlZmF1bHQtc3R5bGUiKSkgewot
ICAgICAgICAvLyBUaGUgcHJlZmVycmVkIHN0eWxlIHNldCBoYXMgYmVlbiBvdmVycmlkZGVuIGFz
IHBlciBzZWN0aW9uIAorICAgICAgICAvLyBUaGUgcHJlZmVycmVkIHN0eWxlIHNldCBoYXMgYmVl
biBvdmVycmlkZGVuIGFzIHBlciBzZWN0aW9uCiAgICAgICAgIC8vIDE0LjMuMiBvZiB0aGUgSFRN
TDQuMCBzcGVjaWZpY2F0aW9uLiAgV2UgbmVlZCB0byB1cGRhdGUgdGhlCi0gICAgICAgIC8vIHNo
ZWV0IHVzZWQgdmFyaWFibGUgYW5kIHRoZW4gdXBkYXRlIG91ciBzdHlsZSBzZWxlY3Rvci4gCisg
ICAgICAgIC8vIHNoZWV0IHVzZWQgdmFyaWFibGUgYW5kIHRoZW4gdXBkYXRlIG91ciBzdHlsZSBz
ZWxlY3Rvci4KICAgICAgICAgLy8gRm9yIG1vcmUgaW5mbywgc2VlIHRoZSB0ZXN0IGF0OgogICAg
ICAgICAvLyBodHRwOi8vd3d3LmhpeGllLmNoL3Rlc3RzL2V2aWwvY3NzL2ltcG9ydC9tYWluL3By
ZWZlcnJlZC5odG1sCiAgICAgICAgIC8vIC1kd2gKQEAgLTMwNjIsNyArMzA1NSw3IEBAIGJvb2wg
RG9jdW1lbnQ6OmNhblJlcGxhY2VDaGlsZChOb2RlKiBuZXcKICAgICBmb3IgKE5vZGUqIGMgPSBm
aXJzdENoaWxkKCk7IGM7IGMgPSBjLT5uZXh0U2libGluZygpKSB7CiAgICAgICAgIGlmIChjID09
IG9sZENoaWxkKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIAorCiAgICAgICAgIHN3
aXRjaCAoYy0+bm9kZVR5cGUoKSkgewogICAgICAgICBjYXNlIERPQ1VNRU5UX1RZUEVfTk9ERToK
ICAgICAgICAgICAgIG51bURvY3R5cGVzKys7CkBAIC0zMDc0LDcgKzMwNjcsNyBAQCBib29sIERv
Y3VtZW50OjpjYW5SZXBsYWNlQ2hpbGQoTm9kZSogbmV3CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIC8vIFRoZW4sIHNlZSBob3cgbWFueSBkb2N0eXBl
cyBhbmQgZWxlbWVudHMgbWlnaHQgYmUgYWRkZWQgYnkgdGhlIG5ldyBjaGlsZC4KICAgICBpZiAo
bmV3Q2hpbGQtPmlzRG9jdW1lbnRGcmFnbWVudCgpKSB7CiAgICAgICAgIGZvciAoTm9kZSogYyA9
IG5ld0NoaWxkLT5maXJzdENoaWxkKCk7IGM7IGMgPSBjLT5uZXh0U2libGluZygpKSB7CkBAIC0z
MTIxLDEyICszMTE0LDEyIEBAIGJvb2wgRG9jdW1lbnQ6OmNhblJlcGxhY2VDaGlsZChOb2RlKiBu
ZXcKICAgICAgICAgY2FzZSBFTEVNRU5UX05PREU6CiAgICAgICAgICAgICBudW1FbGVtZW50cysr
OwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0gICAgICAgICAgICAgICAgCisgICAgICAg
IH0KICAgICB9Ci0gICAgICAgIAorCiAgICAgaWYgKG51bUVsZW1lbnRzID4gMSB8fCBudW1Eb2N0
eXBlcyA+IDEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKKwogICAgIHJldHVybiB0cnVl
OwogfQogCkBAIC0zMjkyLDcgKzMyODUsNyBAQCB2b2lkIERvY3VtZW50OjpyZW1vdmVGb2N1c2Vk
Tm9kZU9mU3VidHJlCiAgICAgICAgIG5vZGVJblN1YnRyZWUgPSBmb2N1c2VkRWxlbWVudC0+aXNE
ZXNjZW5kYW50T2Yobm9kZSk7CiAgICAgZWxzZQogICAgICAgICBub2RlSW5TdWJ0cmVlID0gKGZv
Y3VzZWRFbGVtZW50ID09IG5vZGUpIHx8IGZvY3VzZWRFbGVtZW50LT5pc0Rlc2NlbmRhbnRPZihu
b2RlKTsKLSAgICAKKwogICAgIGlmIChub2RlSW5TdWJ0cmVlKQogICAgICAgICBzZXRGb2N1c2Vk
RWxlbWVudChudWxscHRyKTsKIH0KQEAgLTMzNzEsNyArMzM2NCw3IEBAIGJvb2wgRG9jdW1lbnQ6
OnNldEZvY3VzZWRFbGVtZW50KFBhc3NSZWYKICAgICAgICAgICAgIGZvY3VzQ2hhbmdlQmxvY2tl
ZCA9IHRydWU7CiAgICAgICAgICAgICBuZXdGb2N1c2VkRWxlbWVudCA9IG51bGxwdHI7CiAgICAg
ICAgIH0KLSAgICAgICAgCisKICAgICAgICAgb2xkRm9jdXNlZEVsZW1lbnQtPmRpc3BhdGNoRm9j
dXNPdXRFdmVudChldmVudE5hbWVzKCkuZm9jdXNvdXRFdmVudCwgbmV3Rm9jdXNlZEVsZW1lbnQp
OyAvLyBET00gbGV2ZWwgMyBuYW1lIGZvciB0aGUgYnViYmxpbmcgYmx1ciBldmVudC4KICAgICAg
ICAgLy8gRklYTUU6IFdlIHNob3VsZCByZW1vdmUgZmlyaW5nIERPTUZvY3VzT3V0RXZlbnQgZXZl
bnQgd2hlbiB3ZSBhcmUgc3VyZSBubyBjb250ZW50IGRlcGVuZHMKICAgICAgICAgLy8gb24gaXQs
IHByb2JhYmx5IHdoZW4gPHJkYXI6Ly9wcm9ibGVtLzg1MDM5NTg+IGlzIHJlc29sdmVkLgpAQCAt
MzM4Miw3ICszMzc1LDcgQEAgYm9vbCBEb2N1bWVudDo6c2V0Rm9jdXNlZEVsZW1lbnQoUGFzc1Jl
ZgogICAgICAgICAgICAgZm9jdXNDaGFuZ2VCbG9ja2VkID0gdHJ1ZTsKICAgICAgICAgICAgIG5l
d0ZvY3VzZWRFbGVtZW50ID0gbnVsbHB0cjsKICAgICAgICAgfQotICAgICAgICAgICAgCisKICAg
ICAgICAgaWYgKG9sZEZvY3VzZWRFbGVtZW50LT5pc1Jvb3RFZGl0YWJsZUVsZW1lbnQoKSkKICAg
ICAgICAgICAgIGZyYW1lKCktPmVkaXRvcigpLmRpZEVuZEVkaXRpbmcoKTsKIApAQCAtMzg3NCw3
ICszODY3LDcgQEAgU3RyaW5nIERvY3VtZW50OjpsYXN0TW9kaWZpZWQoKSBjb25zdAogICAgIGJv
b2wgZm91bmREYXRlID0gZmFsc2U7CiAgICAgaWYgKG1fZnJhbWUpIHsKICAgICAgICAgU3RyaW5n
IGh0dHBMYXN0TW9kaWZpZWQ7Ci0gICAgICAgIGlmIChEb2N1bWVudExvYWRlciogZG9jdW1lbnRM
b2FkZXIgPSBsb2FkZXIoKSkgCisgICAgICAgIGlmIChEb2N1bWVudExvYWRlciogZG9jdW1lbnRM
b2FkZXIgPSBsb2FkZXIoKSkKICAgICAgICAgICAgIGh0dHBMYXN0TW9kaWZpZWQgPSBkb2N1bWVu
dExvYWRlci0+cmVzcG9uc2UoKS5odHRwSGVhZGVyRmllbGQoIkxhc3QtTW9kaWZpZWQiKTsKICAg
ICAgICAgaWYgKCFodHRwTGFzdE1vZGlmaWVkLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgZGF0
ZS5zZXRNaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yRGF0ZVRpbWUocGFyc2VEYXRlKGh0dHBMYXN0
TW9kaWZpZWQpKTsKQEAgLTQxMDEsNyArNDA5NCw3IEBAIHZvaWQgRG9jdW1lbnQ6OmRvY3VtZW50
V2lsbFN1c3BlbmRGb3JQYWcKICNlbmRpZgogfQogCi12b2lkIERvY3VtZW50Ojpkb2N1bWVudERp
ZFJlc3VtZUZyb21QYWdlQ2FjaGUoKSAKK3ZvaWQgRG9jdW1lbnQ6OmRvY3VtZW50RGlkUmVzdW1l
RnJvbVBhZ2VDYWNoZSgpCiB7CiAgICAgVmVjdG9yPEVsZW1lbnQqPiBlbGVtZW50czsKICAgICBj
b3B5VG9WZWN0b3IobV9kb2N1bWVudFN1c3BlbnNpb25DYWxsYmFja0VsZW1lbnRzLCBlbGVtZW50
cyk7CkBAIC00MTMxLDcgKzQxMjQsNyBAQCB2b2lkIERvY3VtZW50Ojp1bnJlZ2lzdGVyRm9yUGFn
ZUNhY2hlU3VzCiAgICAgbV9kb2N1bWVudFN1c3BlbnNpb25DYWxsYmFja0VsZW1lbnRzLnJlbW92
ZShlKTsKIH0KIAotdm9pZCBEb2N1bWVudDo6bWVkaWFWb2x1bWVEaWRDaGFuZ2UoKSAKK3ZvaWQg
RG9jdW1lbnQ6Om1lZGlhVm9sdW1lRGlkQ2hhbmdlKCkKIHsKICAgICBIYXNoU2V0PEVsZW1lbnQq
Pjo6aXRlcmF0b3IgZW5kID0gbV9tZWRpYVZvbHVtZUNhbGxiYWNrRWxlbWVudHMuZW5kKCk7CiAg
ICAgZm9yIChIYXNoU2V0PEVsZW1lbnQqPjo6aXRlcmF0b3IgaSA9IG1fbWVkaWFWb2x1bWVDYWxs
YmFja0VsZW1lbnRzLmJlZ2luKCk7IGkgIT0gZW5kOyArK2kpCkBAIC00MTU0LDcgKzQxNDcsNyBA
QCB2b2lkIERvY3VtZW50OjpzdG9yYWdlQmxvY2tpbmdTdGF0ZURpZENoCiAgICAgICAgIHNlY3Vy
aXR5T3JpZ2luKCktPnNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShzZXR0aW5ncy0+c3RvcmFnZUJs
b2NraW5nUG9saWN5KCkpOwogfQogCi12b2lkIERvY3VtZW50Ojpwcml2YXRlQnJvd3NpbmdTdGF0
ZURpZENoYW5nZSgpIAordm9pZCBEb2N1bWVudDo6cHJpdmF0ZUJyb3dzaW5nU3RhdGVEaWRDaGFu
Z2UoKQogewogICAgIEhhc2hTZXQ8RWxlbWVudCo+OjppdGVyYXRvciBlbmQgPSBtX3ByaXZhdGVC
cm93c2luZ1N0YXRlQ2hhbmdlZEVsZW1lbnRzLmVuZCgpOwogICAgIGZvciAoSGFzaFNldDxFbGVt
ZW50Kj46Oml0ZXJhdG9yIGl0ID0gbV9wcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWRFbGVtZW50
cy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCkBAIC00NzE2LDggKzQ3MDksOCBAQCB2b2lkIERv
Y3VtZW50OjpzdGF0ZVBvcHBlZChQYXNzUmVmUHRyPFNlCiB7CiAgICAgaWYgKCFmcmFtZSgpKQog
ICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgLy8gUGVyIHN0ZXAgMTEgb2Ygc2VjdGlvbiA2LjUu
OSAoaGlzdG9yeSB0cmF2ZXJzYWwpIG9mIHRoZSBIVE1MNSBzcGVjLCB3ZSAKKworICAgIC8vIFBl
ciBzdGVwIDExIG9mIHNlY3Rpb24gNi41LjkgKGhpc3RvcnkgdHJhdmVyc2FsKSBvZiB0aGUgSFRN
TDUgc3BlYywgd2UKICAgICAvLyBkZWZlciBmaXJpbmcgb2YgcG9wc3RhdGUgdW50aWwgd2UncmUg
aW4gdGhlIGNvbXBsZXRlIHN0YXRlLgogICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gQ29tcGxldGUp
CiAgICAgICAgIGVucXVldWVQb3BzdGF0ZUV2ZW50KHN0YXRlT2JqZWN0KTsKQEAgLTQ4MjEsNyAr
NDgxNCw3IEBAIHZvaWQgRG9jdW1lbnQ6OnZhbGlkYXRlQXV0b1NpemluZ05vZGVzKCkKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY291bnQ7IGkrKykKICAgICAgICAgbV90ZXh0QXV0b1Np
emVkTm9kZXMucmVtb3ZlKG5vZGVzRm9yUmVtb3ZhbFtpXSk7CiB9Ci0gICAgCisKIHZvaWQgRG9j
dW1lbnQ6OnJlc2V0QXV0b1NpemluZ05vZGVzKCkKIHsKICAgICBmb3IgKGF1dG8gaXQgPSBtX3Rl
eHRBdXRvU2l6ZWROb2Rlcy5iZWdpbigpLCBlbmQgPSBtX3RleHRBdXRvU2l6ZWROb2Rlcy5lbmQo
KTsgaXQgIT0gZW5kOyArK2l0KSB7CkBAIC00ODQxLDcgKzQ4MzQsNyBAQCB2b2lkIERvY3VtZW50
Ojppbml0RE5TUHJlZmV0Y2goKQogICAgIG1faGF2ZUV4cGxpY2l0bHlEaXNhYmxlZEROU1ByZWZl
dGNoID0gZmFsc2U7CiAgICAgbV9pc0ROU1ByZWZldGNoRW5hYmxlZCA9IHNldHRpbmdzICYmIHNl
dHRpbmdzLT5kbnNQcmVmZXRjaGluZ0VuYWJsZWQoKSAmJiBzZWN1cml0eU9yaWdpbigpLT5wcm90
b2NvbCgpID09ICJodHRwIjsKIAotICAgIC8vIEluaGVyaXQgRE5TIHByZWZldGNoIG9wdC1vdXQg
ZnJvbSBwYXJlbnQgZnJhbWUgICAgCisgICAgLy8gSW5oZXJpdCBETlMgcHJlZmV0Y2ggb3B0LW91
dCBmcm9tIHBhcmVudCBmcmFtZQogICAgIGlmIChEb2N1bWVudCogcGFyZW50ID0gcGFyZW50RG9j
dW1lbnQoKSkgewogICAgICAgICBpZiAoIXBhcmVudC0+aXNETlNQcmVmZXRjaEVuYWJsZWQoKSkK
ICAgICAgICAgICAgIG1faXNETlNQcmVmZXRjaEVuYWJsZWQgPSBmYWxzZTsKQEAgLTQ5NzMsNyAr
NDk2Niw3IEBAIHZvaWQgRG9jdW1lbnQ6OnJlc3VtZVNjaGVkdWxlZFRhc2tzKEFjdGkKICAgICBz
Y3JpcHRSdW5uZXIoKS0+cmVzdW1lKCk7CiAgICAgcmVzdW1lQWN0aXZlRE9NT2JqZWN0cyhyZWFz
b24pOwogICAgIHJlc3VtZVNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOwot
ICAgIAorCiAgICAgbV9zY2hlZHVsZWRUYXNrc0FyZVN1c3BlbmRlZCA9IGZhbHNlOwogfQogCkBA
IC01MTEyLDkgKzUxMDUsOSBAQCB2b2lkIERvY3VtZW50OjpyZXF1ZXN0RnVsbFNjcmVlbkZvckVs
ZW1lCiAgICAgZG8gewogICAgICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgICAgICBlbGVtZW50
ID0gZG9jdW1lbnRFbGVtZW50KCk7Ci0gCisKICAgICAgICAgLy8gMS4gSWYgYW55IG9mIHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdHJ1ZSwgdGVybWluYXRlIHRoZXNlIHN0ZXBzIGFuZCBx
dWV1ZSBhIHRhc2sgdG8gZmlyZQotICAgICAgICAvLyBhbiBldmVudCBuYW1lZCBmdWxsc2NyZWVu
ZXJyb3Igd2l0aCBpdHMgYnViYmxlcyBhdHRyaWJ1dGUgc2V0IHRvIHRydWUgb24gdGhlIGNvbnRl
eHQgb2JqZWN0J3MgCisgICAgICAgIC8vIGFuIGV2ZW50IG5hbWVkIGZ1bGxzY3JlZW5lcnJvciB3
aXRoIGl0cyBidWJibGVzIGF0dHJpYnV0ZSBzZXQgdG8gdHJ1ZSBvbiB0aGUgY29udGV4dCBvYmpl
Y3QncwogICAgICAgICAvLyBub2RlIGRvY3VtZW50OgogCiAgICAgICAgIC8vIFRoZSBjb250ZXh0
IG9iamVjdCBpcyBub3QgaW4gYSBkb2N1bWVudC4KQEAgLTUyMjcsNyArNTIyMCw3IEBAIHZvaWQg
RG9jdW1lbnQ6OnJlcXVlc3RGdWxsU2NyZWVuRm9yRWxlbWUKIHZvaWQgRG9jdW1lbnQ6OndlYmtp
dENhbmNlbEZ1bGxTY3JlZW4oKQogewogICAgIC8vIFRoZSBNb3ppbGxhICJjYW5jZWxGdWxsU2Ny
ZWVuKCkiIEFQSSBiZWhhdmVzIGxpa2UgdGhlIFczQyAiZnVsbHkgZXhpdCBmdWxsc2NyZWVuIiBi
ZWhhdmlvciwgd2hpY2gKLSAgICAvLyBpcyBkZWZpbmVkIGFzOiAKKyAgICAvLyBpcyBkZWZpbmVk
IGFzOgogICAgIC8vICJUbyBmdWxseSBleGl0IGZ1bGxzY3JlZW4gYWN0IGFzIGlmIHRoZSBleGl0
RnVsbHNjcmVlbigpIG1ldGhvZCB3YXMgaW52b2tlZCBvbiB0aGUgdG9wLWxldmVsIGJyb3dzaW5n
CiAgICAgLy8gY29udGV4dCdzIGRvY3VtZW50IGFuZCBzdWJzZXF1ZW50bHkgZW1wdHkgdGhhdCBk
b2N1bWVudCdzIGZ1bGxzY3JlZW4gZWxlbWVudCBzdGFjay4iCiAgICAgaWYgKCF0b3BEb2N1bWVu
dCgpLT53ZWJraXRGdWxsc2NyZWVuRWxlbWVudCgpKQpAQCAtNTI0NSwxNCArNTIzOCwxNCBAQCB2
b2lkIERvY3VtZW50Ojp3ZWJraXRDYW5jZWxGdWxsU2NyZWVuKCkKIHZvaWQgRG9jdW1lbnQ6Ondl
YmtpdEV4aXRGdWxsc2NyZWVuKCkKIHsKICAgICAvLyBUaGUgZXhpdEZ1bGxzY3JlZW4oKSBtZXRo
b2QgbXVzdCBydW4gdGhlc2Ugc3RlcHM6Ci0gICAgCisKICAgICAvLyAxLiBMZXQgZG9jIGJlIHRo
ZSBjb250ZXh0IG9iamVjdC4gKGkuZS4gInRoaXMiKQogICAgIERvY3VtZW50KiBjdXJyZW50RG9j
ID0gdGhpczsKIAogICAgIC8vIDIuIElmIGRvYydzIGZ1bGxzY3JlZW4gZWxlbWVudCBzdGFjayBp
cyBlbXB0eSwgdGVybWluYXRlIHRoZXNlIHN0ZXBzLgogICAgIGlmIChtX2Z1bGxTY3JlZW5FbGVt
ZW50U3RhY2suaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICAvLyAzLiBM
ZXQgZGVzY2VuZGFudHMgYmUgYWxsIHRoZSBkb2MncyBkZXNjZW5kYW50IGJyb3dzaW5nIGNvbnRl
eHQncyBkb2N1bWVudHMgd2l0aCBhIG5vbi1lbXB0eSBmdWxsc2NyZWVuCiAgICAgLy8gZWxlbWVu
dCBzdGFjayAoaWYgYW55KSwgb3JkZXJlZCBzbyB0aGF0IHRoZSBjaGlsZCBvZiB0aGUgZG9jIGlz
IGxhc3QgYW5kIHRoZSBkb2N1bWVudCBmdXJ0aGVzdAogICAgIC8vIGF3YXkgZnJvbSB0aGUgZG9j
IGlzIGZpcnN0LgpAQCAtNTI2MSw3ICs1MjU0LDcgQEAgdm9pZCBEb2N1bWVudDo6d2Via2l0RXhp
dEZ1bGxzY3JlZW4oKQogICAgICAgICBpZiAoZGVzY2VuZGFudC0+ZG9jdW1lbnQoKS0+d2Via2l0
RnVsbHNjcmVlbkVsZW1lbnQoKSkKICAgICAgICAgICAgIGRlc2NlbmRhbnRzLnByZXBlbmQoZGVz
Y2VuZGFudC0+ZG9jdW1lbnQoKSk7CiAgICAgfQotICAgICAgICAKKwogICAgIC8vIDQuIEZvciBl
YWNoIGRlc2NlbmRhbnQgaW4gZGVzY2VuZGFudHMsIGVtcHR5IGRlc2NlbmRhbnQncyBmdWxsc2Ny
ZWVuIGVsZW1lbnQgc3RhY2ssIGFuZCBxdWV1ZSBhCiAgICAgLy8gdGFzayB0byBmaXJlIGFuIGV2
ZW50IG5hbWVkIGZ1bGxzY3JlZW5jaGFuZ2Ugd2l0aCBpdHMgYnViYmxlcyBhdHRyaWJ1dGUgc2V0
IHRvIHRydWUgb24gZGVzY2VuZGFudC4KICAgICBmb3IgKERlcXVlPFJlZlB0cjxEb2N1bWVudD4+
OjppdGVyYXRvciBpID0gZGVzY2VuZGFudHMuYmVnaW4oKTsgaSAhPSBkZXNjZW5kYW50cy5lbmQo
KTsgKytpKSB7CkBAIC01MzAyLDcgKzUyOTUsNyBAQCB2b2lkIERvY3VtZW50Ojp3ZWJraXRFeGl0
RnVsbHNjcmVlbigpCiAgICAgaWYgKCFwYWdlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8v
IE9ubHkgZXhpdCBvdXQgb2YgZnVsbCBzY3JlZW4gd2luZG93IG1vZGUgaWYgdGhlcmUgYXJlIG5v
IHJlbWFpbmluZyBlbGVtZW50cyBpbiB0aGUgCisgICAgLy8gT25seSBleGl0IG91dCBvZiBmdWxs
IHNjcmVlbiB3aW5kb3cgbW9kZSBpZiB0aGVyZSBhcmUgbm8gcmVtYWluaW5nIGVsZW1lbnRzIGlu
IHRoZQogICAgIC8vIGZ1bGwgc2NyZWVuIHN0YWNrLgogICAgIGlmICghbmV3VG9wKSB7CiAgICAg
ICAgIHBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KG1f
ZnVsbFNjcmVlbkVsZW1lbnQuZ2V0KCkpOwpAQCAtNTM0Niw3ICs1MzM5LDcgQEAgdm9pZCBEb2N1
bWVudDo6d2Via2l0V2lsbEVudGVyRnVsbFNjcmVlbgogI2VuZGlmCiAKICAgICAvLyBDcmVhdGUg
YSBwbGFjZWhvbGRlciBibG9jayBmb3IgYSB0aGUgZnVsbC1zY3JlZW4gZWxlbWVudCwgdG8ga2Vl
cCB0aGUgcGFnZSBmcm9tIHJlZmxvd2luZwotICAgIC8vIHdoZW4gdGhlIGVsZW1lbnQgaXMgcmVt
b3ZlZCBmcm9tIHRoZSBub3JtYWwgZmxvdy4gIE9ubHkgZG8gdGhpcyBmb3IgYSBSZW5kZXJCb3gs
IGFzIG9ubHkgCisgICAgLy8gd2hlbiB0aGUgZWxlbWVudCBpcyByZW1vdmVkIGZyb20gdGhlIG5v
cm1hbCBmbG93LiBPbmx5IGRvIHRoaXMgZm9yIGEgUmVuZGVyQm94LCBhcyBvbmx5CiAgICAgLy8g
YSBib3ggd2lsbCBoYXZlIGEgZnJhbWVSZWN0LiAgVGhlIHBsYWNlaG9sZGVyIHdpbGwgYmUgY3Jl
YXRlZCBpbiBzZXRGdWxsU2NyZWVuUmVuZGVyZXIoKQogICAgIC8vIGR1cmluZyBsYXlvdXQuCiAg
ICAgYXV0byByZW5kZXJlciA9IG1fZnVsbFNjcmVlbkVsZW1lbnQtPnJlbmRlcmVyKCk7CkBAIC01
MzYwLDcgKzUzNTMsNyBAQCB2b2lkIERvY3VtZW50Ojp3ZWJraXRXaWxsRW50ZXJGdWxsU2NyZWVu
CiAgICAgICAgIFJlbmRlckZ1bGxTY3JlZW46OndyYXBSZW5kZXJlcihyZW5kZXJlciwgcmVuZGVy
ZXIgPyByZW5kZXJlci0+cGFyZW50KCkgOiBudWxscHRyLCAqdGhpcyk7CiAKICAgICBtX2Z1bGxT
Y3JlZW5FbGVtZW50LT5zZXRDb250YWluc0Z1bGxTY3JlZW5FbGVtZW50T25BbmNlc3RvcnNDcm9z
c2luZ0ZyYW1lQm91bmRhcmllcyh0cnVlKTsKLSAgICAKKwogICAgIHJlY2FsY1N0eWxlKFN0eWxl
OjpGb3JjZSk7CiB9CiAKQEAgLTUzOTksNyArNTM5Miw3IEBAIHZvaWQgRG9jdW1lbnQ6OndlYmtp
dERpZEV4aXRGdWxsU2NyZWVuRm8KICAgICBtX2Z1bGxTY3JlZW5FbGVtZW50LT5zZXRDb250YWlu
c0Z1bGxTY3JlZW5FbGVtZW50T25BbmNlc3RvcnNDcm9zc2luZ0ZyYW1lQm91bmRhcmllcyhmYWxz
ZSk7CiAKICAgICBtX2FyZUtleXNFbmFibGVkSW5GdWxsU2NyZWVuID0gZmFsc2U7Ci0gICAgCisK
ICAgICBpZiAobV9mdWxsU2NyZWVuUmVuZGVyZXIpCiAgICAgICAgIG1fZnVsbFNjcmVlblJlbmRl
cmVyLT51bndyYXBSZW5kZXJlcigpOwogCkBAIC01NDA4LDcgKzU0MDEsNyBAQCB2b2lkIERvY3Vt
ZW50Ojp3ZWJraXREaWRFeGl0RnVsbFNjcmVlbkZvCiAKICAgICBtX2Z1bGxTY3JlZW5FbGVtZW50
ID0gbnVsbHB0cjsKICAgICBzY2hlZHVsZUZvcmNlZFN0eWxlUmVjYWxjKCk7Ci0gICAgCisKICAg
ICAvLyBXaGVuIHdlYmtpdENhbmNlbEZ1bGxTY3JlZW4gaXMgY2FsbGVkLCB3ZSBjYWxsIHdlYmtp
dEV4aXRGdWxsU2NyZWVuIG9uIHRoZSB0b3BEb2N1bWVudCgpLiBUaGF0CiAgICAgLy8gbWVhbnMg
dGhhdCB0aGUgZXZlbnRzIHdpbGwgYmUgcXVldWVkIHRoZXJlLiBTbyBpZiB3ZSBoYXZlIG5vIGV2
ZW50cyBoZXJlLCBzdGFydCB0aGUgdGltZXIgb24KICAgICAvLyB0aGUgZXhpdGluZyBkb2N1bWVu
dC4KQEAgLTU0MTcsMTMgKzU0MTAsMTMgQEAgdm9pZCBEb2N1bWVudDo6d2Via2l0RGlkRXhpdEZ1
bGxTY3JlZW5GbwogICAgICAgICBleGl0aW5nRG9jdW1lbnQgPSB0b3BEb2N1bWVudCgpOwogICAg
IGV4aXRpbmdEb2N1bWVudC0+bV9mdWxsU2NyZWVuQ2hhbmdlRGVsYXlUaW1lci5zdGFydE9uZVNo
b3QoMCk7CiB9Ci0gICAgCisKIHZvaWQgRG9jdW1lbnQ6OnNldEZ1bGxTY3JlZW5SZW5kZXJlcihS
ZW5kZXJGdWxsU2NyZWVuKiByZW5kZXJlcikKIHsKICAgICBpZiAocmVuZGVyZXIgPT0gbV9mdWxs
U2NyZWVuUmVuZGVyZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChyZW5kZXJlciAmJiBt
X3NhdmVkUGxhY2Vob2xkZXJSZW5kZXJTdHlsZSkgCisgICAgaWYgKHJlbmRlcmVyICYmIG1fc2F2
ZWRQbGFjZWhvbGRlclJlbmRlclN0eWxlKQogICAgICAgICByZW5kZXJlci0+Y3JlYXRlUGxhY2Vo
b2xkZXIobV9zYXZlZFBsYWNlaG9sZGVyUmVuZGVyU3R5bGUucmVsZWFzZU5vbk51bGwoKSwgbV9z
YXZlZFBsYWNlaG9sZGVyRnJhbWVSZWN0KTsKICAgICBlbHNlIGlmIChyZW5kZXJlciAmJiBtX2Z1
bGxTY3JlZW5SZW5kZXJlciAmJiBtX2Z1bGxTY3JlZW5SZW5kZXJlci0+cGxhY2Vob2xkZXIoKSkg
ewogICAgICAgICBSZW5kZXJCbG9jayogcGxhY2Vob2xkZXIgPSBtX2Z1bGxTY3JlZW5SZW5kZXJl
ci0+cGxhY2Vob2xkZXIoKTsKQEAgLTU0ODksMTMgKzU0ODIsMTMgQEAgdm9pZCBEb2N1bWVudDo6
cmVtb3ZlRnVsbFNjcmVlbkVsZW1lbnRPZgogewogICAgIGlmICghbV9mdWxsU2NyZWVuRWxlbWVu
dCkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgYm9vbCBlbGVtZW50SW5TdWJ0cmVlID0g
ZmFsc2U7CiAgICAgaWYgKGFtb25nQ2hpbGRyZW5Pbmx5KQogICAgICAgICBlbGVtZW50SW5TdWJ0
cmVlID0gbV9mdWxsU2NyZWVuRWxlbWVudC0+aXNEZXNjZW5kYW50T2Yobm9kZSk7CiAgICAgZWxz
ZQogICAgICAgICBlbGVtZW50SW5TdWJ0cmVlID0gKG1fZnVsbFNjcmVlbkVsZW1lbnQgPT0gbm9k
ZSkgfHwgbV9mdWxsU2NyZWVuRWxlbWVudC0+aXNEZXNjZW5kYW50T2Yobm9kZSk7Ci0gICAgCisK
ICAgICBpZiAoZWxlbWVudEluU3VidHJlZSkKICAgICAgICAgZnVsbFNjcmVlbkVsZW1lbnRSZW1v
dmVkKCk7CiB9CkBAIC01NzYzLDE0ICs1NzU2LDE0IEBAIERvY3VtZW50TG9hZGVyKiBEb2N1bWVu
dDo6bG9hZGVyKCkgY29uc3QKIHsKICAgICBpZiAoIW1fZnJhbWUpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIAorCiAgICAgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciA9IG1fZnJhbWUtPmxv
YWRlcigpLmRvY3VtZW50TG9hZGVyKCk7CiAgICAgaWYgKCFsb2FkZXIpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIAorCiAgICAgaWYgKG1fZnJhbWUtPmRvY3VtZW50KCkgIT0gdGhpcykK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCisKICAgICByZXR1cm4gbG9hZGVyOwogfQog
CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiAxNjEzODcpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAxNC0wMS0wNiAgVmljdG9yIENvc3RhbiAg
PGNvc3RhbkBnbWFpbC5jb20+CisKKyAgICAgICAgY3JlYXRlRWxlbWVudE5TIGhhbmRsZXMgZWxl
bWVudCBuYW1lICd4bWxucycgY29ycmVjdGx5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2NTUzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2RvbS9jcmVhdGVFbGVtZW50TlMtbmFtZXNwYWNl
LWVycm9ycy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2NyZWF0ZUVs
ZW1lbnROUy1uYW1lc3BhY2UtZXJyb3JzLmh0bWw6IEFkZGVkLiBDb3ZlcnMgYWxsIHRoZSBjb3Ju
ZXIgY2FzZXMgaW4gdGhlIERPTTQgc3BlYy4KKyAgICAgICAgKiBmYXN0L2RvbS9zY3JpcHQtdGVz
dHMvc2V0QXR0cmlidXRlTlMtcHJlZml4LWFuZC1udWxsLW5hbWVzcGFjZS5qczogUmVtb3ZlZC4K
KyAgICAgICAgKiBmYXN0L2RvbS9zZXRBdHRyaWJ1dGVOUy1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogZmFzdC9kb20vc2V0QXR0cmlidXRlTlMtbmFtZXNwYWNlLWVycm9ycy1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NldEF0dHJpYnV0ZU5TLW5hbWVzcGFjZS1lcnJv
cnMuaHRtbDogQWRkZWQuIENvdmVycyBhbGwgdGhlIGNvcm5lciBjYXNlcyBpbiB0aGUgRE9NNCBz
cGVjLgorICAgICAgICAqIGZhc3QvZG9tL3NldEF0dHJpYnV0ZU5TLXByZWZpeC1hbmQtbnVsbC1u
YW1lc3BhY2UtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvZG9tL3NldEF0
dHJpYnV0ZU5TLXByZWZpeC1hbmQtbnVsbC1uYW1lc3BhY2UuaHRtbDogUmVtb3ZlZCwgc3Vic3Vt
ZWQgYnkgc2V0QXR0cmlidXRlTlMtbmFtZXNwYWNlLWVycm9ycy4KKyAgICAgICAgKiBmYXN0L2Rv
bS9zZXRBdHRyaWJ1dGVOUy5odG1sOiBDbGVhbmVkIHVwLgorCiAyMDE0LTAxLTA2ICBab2x0YW4g
SG9ydmF0aCAgPHpvbHRhbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFtDU1MgUmVnaW9uc11bQ1NT
IFNoYXBlc10gQVNTRVJUSU9OIEZBSUxFRDogbV9zZWdtZW50UmFuZ2VzLnNpemUoKSA8IG1fc2Vn
bWVudHMuc2l6ZSgpCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jcmVhdGVFbGVtZW50TlMt
bmFtZXNwYWNlLWVycm9ycy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9kb20vY3JlYXRlRWxlbWVudE5TLW5hbWVzcGFjZS1lcnJvcnMtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vY3JlYXRlRWxlbWVudE5TLW5hbWVz
cGFjZS1lcnJvcnMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTggQEAK
K1Rlc3QgdGhhdCBjYWxsaW5nIGNyZWF0ZUVsZW1lbnROUygpIHRocm93cyBhbiBlcnJvciB3aGVu
IGh0dHA6Ly93d3cudzMub3JnL1RSL2RvbS8jZG9tLWRvY3VtZW50LWNyZWF0ZWVsZW1lbnRucyBz
YXlzIGl0IHNob3VsZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKG51bGwsICdmb286YmFyJywgJ2JheicpIHRocmV3IGV4Y2Vw
dGlvbiBFcnJvcjogTmFtZXNwYWNlRXJyb3I6IERPTSBFeGNlcHRpb24gMTQuCitQQVNTIGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNl
JywgJ3htbDphYmMnLCAnZm9vJykgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvbm90LVhNTC8xOTk4L25hbWVz
cGFjZScsICd4bWw6YWJjJywgJ2ZvbycpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTmFtZXNwYWNl
RXJyb3I6IERPTSBFeGNlcHRpb24gMTQuCitQQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygn
aHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8nLCAneG1sbnMnLCAnaHR0cDovL3d3d3cuZXhh
bXBsZS5vcmcnKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL25vdC14bWxucy8nLCAneG1sbnMnLCAn
aHR0cDovL3d3d3cuZXhhbXBsZS5vcmcnKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5hbWVzcGFj
ZUVycm9yOiBET00gRXhjZXB0aW9uIDE0LgorUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
J2h0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvJywgJ3htbG5zOmFiYycsICdodHRwOi8vd3d3
dy5leGFtcGxlLm9yZycpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvbm90LXhtbG5zLycsICd4bWxu
czphYmMnLCAnaHR0cDovL3d3d3cuZXhhbXBsZS5vcmcnKSB0aHJldyBleGNlcHRpb24gRXJyb3I6
IE5hbWVzcGFjZUVycm9yOiBET00gRXhjZXB0aW9uIDE0LgorUEFTUyBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvJywgJ2JhZHByZWZpeDp4bWxu
cycsICdodHRwOi8vd3d3dy5leGFtcGxlLm9yZycpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTmFt
ZXNwYWNlRXJyb3I6IERPTSBFeGNlcHRpb24gMTQuCitQQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUygnaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8nLCAnbm90eG1sbnMnLCAnaHR0cDov
L3d3d3cuZXhhbXBsZS5vcmcnKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5hbWVzcGFjZUVycm9y
OiBET00gRXhjZXB0aW9uIDE0LgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2NyZWF0ZUVsZW1lbnRO
Uy1uYW1lc3BhY2UtZXJyb3JzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9k
b20vY3JlYXRlRWxlbWVudE5TLW5hbWVzcGFjZS1lcnJvcnMuaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvZG9tL2NyZWF0ZUVsZW1lbnROUy1uYW1lc3BhY2UtZXJyb3JzLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKworPHNj
cmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0IHRoYXQgY2FsbGluZyBjcmVhdGVFbGVtZW50TlMoKSB0
aHJvd3MgYW4gZXJyb3Igd2hlbiBodHRwOi8vd3d3LnczLm9yZy9UUi9kb20vI2RvbS1kb2N1bWVu
dC1jcmVhdGVlbGVtZW50bnMgc2F5cyBpdCBzaG91bGQuIik7CisKKy8vIFNwZWM6IGh0dHA6Ly93
d3cudzMub3JnL1RSL2RvbS8jZG9tLWRvY3VtZW50LWNyZWF0ZWVsZW1lbnRucworCisvLyBTdGVw
IDUuCitzaG91bGRUaHJvdygiZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG51bGwsICdmb286YmFy
JywgJ2JheicpIiwgJyJFcnJvcjogTmFtZXNwYWNlRXJyb3I6IERPTSBFeGNlcHRpb24gMTQiJyk7
CisKKy8vIFN0ZXAgNi4KK3Nob3VsZE5vdFRocm93KCJkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
J2h0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZScsICd4bWw6YWJjJywgJ2Zvbycp
Iik7CitzaG91bGRUaHJvdygiZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3Lncz
Lm9yZy9ub3QtWE1MLzE5OTgvbmFtZXNwYWNlJywgJ3htbDphYmMnLCAnZm9vJykiLCAnIkVycm9y
OiBOYW1lc3BhY2VFcnJvcjogRE9NIEV4Y2VwdGlvbiAxNCInKTsKKworLy8gU3RlcCA3Lgorc2hv
dWxkTm90VGhyb3coImRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcv
MjAwMC94bWxucy8nLCAneG1sbnMnLCAnaHR0cDovL3d3d3cuZXhhbXBsZS5vcmcnKSIpOworc2hv
dWxkVGhyb3coImRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvMjAw
MC9ub3QteG1sbnMvJywgJ3htbG5zJywgJ2h0dHA6Ly93d3d3LmV4YW1wbGUub3JnJykiLCAnIkVy
cm9yOiBOYW1lc3BhY2VFcnJvcjogRE9NIEV4Y2VwdGlvbiAxNCInKTsKK3Nob3VsZE5vdFRocm93
KCJkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMv
JywgJ3htbG5zOmFiYycsICdodHRwOi8vd3d3dy5leGFtcGxlLm9yZycpIik7CitzaG91bGRUaHJv
dygiZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL25vdC14
bWxucy8nLCAneG1sbnM6YWJjJywgJ2h0dHA6Ly93d3d3LmV4YW1wbGUub3JnJykiLCAnIkVycm9y
OiBOYW1lc3BhY2VFcnJvcjogRE9NIEV4Y2VwdGlvbiAxNCInKTsKKworLy8gU3RlcCA4Lgorc2hv
dWxkVGhyb3coImRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvMjAw
MC94bWxucy8nLCAnYmFkcHJlZml4OnhtbG5zJywgJ2h0dHA6Ly93d3d3LmV4YW1wbGUub3JnJyki
LCAnIkVycm9yOiBOYW1lc3BhY2VFcnJvcjogRE9NIEV4Y2VwdGlvbiAxNCInKTsKKworc2hvdWxk
VGhyb3coImRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvMjAwMC94
bWxucy8nLCAnbm90eG1sbnMnLCAnaHR0cDovL3d3d3cuZXhhbXBsZS5vcmcnKSIsICciRXJyb3I6
IE5hbWVzcGFjZUVycm9yOiBET00gRXhjZXB0aW9uIDE0IicpOworPC9zY3JpcHQ+CisKKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZG9tL3NldEF0dHJpYnV0ZU5TLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9zZXRBdHRyaWJ1dGVOUy1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDE2MTM4NykKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3NldEF0dHJpYnV0ZU5T
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwIEBACi1UaGlzIHRlc3Rz
IHRoYXQgc2V0QXR0cmlidXRlTlMgd2l0aCBhIG51bGwgbmFtZXNwYWNlVVJJIGFjdHVhbGx5IHNl
dHMgaXQgdG8gdGhlIHZhbHVlIG51bGwgYW5kIG5vdCBhIHN0cmluZyB3aXRoIHRoZSBjb250ZW50
cyAnbnVsbCcuIElmIHRoZSB0ZXN0IGlzIHN1Y2Vzc2Z1bCwgdGhlIHRleHQgYmVsb3cgc2hvdWxk
IHNheSAiU1VDQ0VTUyIuCi1TVUNDRVNTCitUZXN0IHRoYXQgc2V0QXR0cmlidXRlTlMgd2l0aCBh
IG51bGwgbmFtZXNwYWNlVVJJIGFjdHVhbGx5IHNldHMgaXQgdG8gdGhlIHZhbHVlIG51bGwgYW5k
IG5vdCBhIHN0cmluZyB3aXRoIHRoZSBjb250ZW50cyAnbnVsbCcuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitQQVNTIGVsZW0uYXR0cmlidXRlc1swXS5uYW1lc3BhY2VVUkkgaXMg
bnVsbAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCiAK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3NldEF0dHJpYnV0ZU5TLW5hbWVzcGFjZS1lcnJv
cnMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3NldEF0
dHJpYnV0ZU5TLW5hbWVzcGFjZS1lcnJvcnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9kb20vc2V0QXR0cmlidXRlTlMtbmFtZXNwYWNlLWVycm9ycy1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOCBAQAorVGVzdCB0aGF0IGNhbGxp
bmcgc2V0QXR0cmlidXRlTlMoKSB0aHJvd3MgYW4gZXJyb3Igd2hlbiBodHRwOi8vd3d3LnczLm9y
Zy9UUi9kb20vI2RvbS1lbGVtZW50LXNldGF0dHJpYnV0ZW5zIHNheXMgaXQgc2hvdWxkLgorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBlbGVtLnNldEF0dHJpYnV0ZU5TKG51
bGwsICdmb286YmFyJywgJ2JheicpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTmFtZXNwYWNlRXJy
b3I6IERPTSBFeGNlcHRpb24gMTQuCitQQVNTIGVsZW0uc2V0QXR0cmlidXRlTlMoJ2h0dHA6Ly93
d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZScsICd4bWw6YWJjJywgJ2ZvbycpIGRpZCBub3Qg
dGhyb3cgZXhjZXB0aW9uLgorUEFTUyBlbGVtLnNldEF0dHJpYnV0ZU5TKCdodHRwOi8vd3d3Lncz
Lm9yZy9ub3QtWE1MLzE5OTgvbmFtZXNwYWNlJywgJ3htbDphYmMnLCAnZm9vJykgdGhyZXcgZXhj
ZXB0aW9uIEVycm9yOiBOYW1lc3BhY2VFcnJvcjogRE9NIEV4Y2VwdGlvbiAxNC4KK1BBU1MgZWxl
bS5zZXRBdHRyaWJ1dGVOUygnaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8nLCAneG1sbnMn
LCAnaHR0cDovL3d3d3cuZXhhbXBsZS5vcmcnKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BB
U1MgZWxlbS5zZXRBdHRyaWJ1dGVOUygnaHR0cDovL3d3dy53My5vcmcvMjAwMC9ub3QteG1sbnMv
JywgJ3htbG5zJywgJ2h0dHA6Ly93d3d3LmV4YW1wbGUub3JnJykgdGhyZXcgZXhjZXB0aW9uIEVy
cm9yOiBOYW1lc3BhY2VFcnJvcjogRE9NIEV4Y2VwdGlvbiAxNC4KK1BBU1MgZWxlbS5zZXRBdHRy
aWJ1dGVOUygnaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8nLCAneG1sbnM6YWJjJywgJ2h0
dHA6Ly93d3d3LmV4YW1wbGUub3JnJykgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIGVs
ZW0uc2V0QXR0cmlidXRlTlMoJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvbm90LXhtbG5zLycsICd4
bWxuczphYmMnLCAnaHR0cDovL3d3d3cuZXhhbXBsZS5vcmcnKSB0aHJldyBleGNlcHRpb24gRXJy
b3I6IE5hbWVzcGFjZUVycm9yOiBET00gRXhjZXB0aW9uIDE0LgorUEFTUyBlbGVtLnNldEF0dHJp
YnV0ZU5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLycsICdiYWRwcmVmaXg6eG1sbnMn
LCAnaHR0cDovL3d3d3cuZXhhbXBsZS5vcmcnKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5hbWVz
cGFjZUVycm9yOiBET00gRXhjZXB0aW9uIDE0LgorUEFTUyBlbGVtLnNldEF0dHJpYnV0ZU5TKCdo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLycsICdub3R4bWxucycsICdodHRwOi8vd3d3dy5l
eGFtcGxlLm9yZycpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTmFtZXNwYWNlRXJyb3I6IERPTSBF
eGNlcHRpb24gMTQuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vc2V0QXR0cmlidXRlTlMtbmFtZXNw
YWNlLWVycm9ycy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3NldEF0
dHJpYnV0ZU5TLW5hbWVzcGFjZS1lcnJvcnMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvZG9tL3NldEF0dHJpYnV0ZU5TLW5hbWVzcGFjZS1lcnJvcnMuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDI5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0PgorZGVz
Y3JpcHRpb24oIlRlc3QgdGhhdCBjYWxsaW5nIHNldEF0dHJpYnV0ZU5TKCkgdGhyb3dzIGFuIGVy
cm9yIHdoZW4gaHR0cDovL3d3dy53My5vcmcvVFIvZG9tLyNkb20tZWxlbWVudC1zZXRhdHRyaWJ1
dGVucyBzYXlzIGl0IHNob3VsZC4iKTsKKword2luZG93LmVsZW0gPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCd0ZXN0Jyk7CisKKy8vIFNwZWM6IGh0dHA6Ly93d3cudzMub3JnL1RSL2RvbS8jZG9t
LWVsZW1lbnQtc2V0YXR0cmlidXRlbnMKKworLy8gU3RlcCA1Lgorc2hvdWxkVGhyb3coImVsZW0u
c2V0QXR0cmlidXRlTlMobnVsbCwgJ2ZvbzpiYXInLCAnYmF6JykiLCAnIkVycm9yOiBOYW1lc3Bh
Y2VFcnJvcjogRE9NIEV4Y2VwdGlvbiAxNCInKTsKKworLy8gU3RlcCA2Lgorc2hvdWxkTm90VGhy
b3coImVsZW0uc2V0QXR0cmlidXRlTlMoJ2h0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVz
cGFjZScsICd4bWw6YWJjJywgJ2ZvbycpIik7CitzaG91bGRUaHJvdygiZWxlbS5zZXRBdHRyaWJ1
dGVOUygnaHR0cDovL3d3dy53My5vcmcvbm90LVhNTC8xOTk4L25hbWVzcGFjZScsICd4bWw6YWJj
JywgJ2ZvbycpIiwgJyJFcnJvcjogTmFtZXNwYWNlRXJyb3I6IERPTSBFeGNlcHRpb24gMTQiJyk7
CisKKy8vIFN0ZXAgNy4KK3Nob3VsZE5vdFRocm93KCJlbGVtLnNldEF0dHJpYnV0ZU5TKCdodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLycsICd4bWxucycsICdodHRwOi8vd3d3dy5leGFtcGxl
Lm9yZycpIik7CitzaG91bGRUaHJvdygiZWxlbS5zZXRBdHRyaWJ1dGVOUygnaHR0cDovL3d3dy53
My5vcmcvMjAwMC9ub3QteG1sbnMvJywgJ3htbG5zJywgJ2h0dHA6Ly93d3d3LmV4YW1wbGUub3Jn
JykiLCAnIkVycm9yOiBOYW1lc3BhY2VFcnJvcjogRE9NIEV4Y2VwdGlvbiAxNCInKTsKK3Nob3Vs
ZE5vdFRocm93KCJlbGVtLnNldEF0dHJpYnV0ZU5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3ht
bG5zLycsICd4bWxuczphYmMnLCAnaHR0cDovL3d3d3cuZXhhbXBsZS5vcmcnKSIpOworc2hvdWxk
VGhyb3coImVsZW0uc2V0QXR0cmlidXRlTlMoJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvbm90LXht
bG5zLycsICd4bWxuczphYmMnLCAnaHR0cDovL3d3d3cuZXhhbXBsZS5vcmcnKSIsICciRXJyb3I6
IE5hbWVzcGFjZUVycm9yOiBET00gRXhjZXB0aW9uIDE0IicpOworCisvLyBTdGVwIDguCitzaG91
bGRUaHJvdygiZWxlbS5zZXRBdHRyaWJ1dGVOUygnaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxu
cy8nLCAnYmFkcHJlZml4OnhtbG5zJywgJ2h0dHA6Ly93d3d3LmV4YW1wbGUub3JnJykiLCAnIkVy
cm9yOiBOYW1lc3BhY2VFcnJvcjogRE9NIEV4Y2VwdGlvbiAxNCInKTsKK3Nob3VsZFRocm93KCJl
bGVtLnNldEF0dHJpYnV0ZU5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLycsICdub3R4
bWxucycsICdodHRwOi8vd3d3dy5leGFtcGxlLm9yZycpIiwgJyJFcnJvcjogTmFtZXNwYWNlRXJy
b3I6IERPTSBFeGNlcHRpb24gMTQiJyk7Cis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9kb20vc2V0QXR0cmlidXRlTlMtcHJlZml4LWFuZC1udWxsLW5hbWVzcGFjZS1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vc2V0QXR0cmlidXRlTlMt
cHJlZml4LWFuZC1udWxsLW5hbWVzcGFjZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE2MTM4NykK
KysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3NldEF0dHJpYnV0ZU5TLXByZWZpeC1hbmQtbnVsbC1u
YW1lc3BhY2UtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwICswLDAgQEAKLVRl
c3QgdGhhdCBjYWxsaW5nIHNldEF0dHJpYnV0ZU5TKCkgd2l0aCBhIHByZWZpeGVkIHF1YWxpZmll
ZE5hbWUgYW5kIG51bGwgTlMgdGhyb3dzIE5BTUVTUEFDRV9FUlIuCi0KLU9uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KLQotCi1QQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3Rlc3QnKS5zZXRB
dHRyaWJ1dGVOUyhudWxsLCAnZm9vOmJhcicsICdiYXonKSB0aHJldyBleGNlcHRpb24gRXJyb3I6
IE5hbWVzcGFjZUVycm9yOiBET00gRXhjZXB0aW9uIDE0LgotUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9t
L3NldEF0dHJpYnV0ZU5TLXByZWZpeC1hbmQtbnVsbC1uYW1lc3BhY2UuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9zZXRBdHRyaWJ1dGVOUy1wcmVmaXgtYW5kLW51bGwt
bmFtZXNwYWNlLmh0bWwJKHJldmlzaW9uIDE2MTM4NykKKysrIExheW91dFRlc3RzL2Zhc3QvZG9t
L3NldEF0dHJpYnV0ZU5TLXByZWZpeC1hbmQtbnVsbC1uYW1lc3BhY2UuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMSwxMCArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RU
RCBIVE1MLy9FTiI+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQgc3Jj
PSJzY3JpcHQtdGVzdHMvc2V0QXR0cmlidXRlTlMtcHJlZml4LWFuZC1udWxsLW5hbWVzcGFjZS5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9zZXRBdHRyaWJ1dGVOUy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9t
L3NldEF0dHJpYnV0ZU5TLmh0bWwJKHJldmlzaW9uIDE2MTM4NykKKysrIExheW91dFRlc3RzL2Zh
c3QvZG9tL3NldEF0dHJpYnV0ZU5TLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMzIgKzEsMTAg
QEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRp
b25hbC8vRU4iCi0gICAgICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQi
PgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQ+Ci1mdW5jdGlvbiBkZWJ1ZyhzdHIpIHsKLSAgICBw
cmUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpOwotICAgIHRleHQgPSBkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZShzdHIgKyAnXG4nKTsKLSAgICBwcmUuYXBwZW5kQ2hpbGQodGV4
dCk7Ci19Ci0KLWZ1bmN0aW9uIHJ1blRlc3RzKCkgewotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKLSAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cis8IURPQ1RZUEUgaHRtbD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CiAKLSAgICBl
bGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LmV4YW1wbGUub3JnJywg
J3Rlc3QnKQotICAgIGF0dHIgPSBlbGVtLnNldEF0dHJpYnV0ZU5TKG51bGwsICduYW1lJywgJ3Zh
bHVlJykKLSAgICAKLSAgICBpZiAoZWxlbS5hdHRyaWJ1dGVzWzBdLm5hbWVzcGFjZVVSSSA9PSBu
dWxsKQotICAgICAgICBkZWJ1ZygnU1VDQ0VTUycpCi0gICAgZWxzZQotICAgICAgICBkZWJ1Zygn
RkFJTFVSRScpCi19Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3QgdGhhdCBzZXRBdHRyaWJ1
dGVOUyB3aXRoIGEgbnVsbCBuYW1lc3BhY2VVUkkgYWN0dWFsbHkgc2V0cyBpdCB0byB0aGUgdmFs
dWUgbnVsbCBhbmQgbm90IGEgc3RyaW5nIHdpdGggdGhlIGNvbnRlbnRzICdudWxsJy4iKTsKIAor
d2luZG93LmVsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cuZXhhbXBs
ZS5vcmcnLCAndGVzdCcpOworZWxlbS5zZXRBdHRyaWJ1dGVOUyhudWxsLCAnbmFtZScsICd2YWx1
ZScpOworc2hvdWxkQmVOdWxsKCdlbGVtLmF0dHJpYnV0ZXNbMF0ubmFtZXNwYWNlVVJJJyk7CiA8
L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0icnVuVGVzdHMoKTsiPgotVGhpcyB0ZXN0
cyB0aGF0IHNldEF0dHJpYnV0ZU5TIHdpdGggYSBudWxsIG5hbWVzcGFjZVVSSSBhY3R1YWxseSBz
ZXRzIGl0IHRvIHRoZSB2YWx1ZSBudWxsIGFuZCBub3QgYSBzdHJpbmcgd2l0aCB0aGUgY29udGVu
dHMgJ251bGwnLiBJZiB0aGUgdGVzdCBpcyBzdWNlc3NmdWwsIHRoZSB0ZXh0IGJlbG93IHNob3Vs
ZCBzYXkgIlNVQ0NFU1MiLgotPHByZSBpZD0iY29uc29sZSI+Ci08L3ByZT4KLTwvYm9keT4KLTwv
aHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3NjcmlwdC10ZXN0cy9zZXRBdHRyaWJ1
dGVOUy1wcmVmaXgtYW5kLW51bGwtbmFtZXNwYWNlLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZG9tL3NjcmlwdC10ZXN0cy9zZXRBdHRyaWJ1dGVOUy1wcmVmaXgtYW5kLW51bGwt
bmFtZXNwYWNlLmpzCShyZXZpc2lvbiAxNjEzODcpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9z
Y3JpcHQtdGVzdHMvc2V0QXR0cmlidXRlTlMtcHJlZml4LWFuZC1udWxsLW5hbWVzcGFjZS5qcwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICswLDAgQEAKLWRlc2NyaXB0aW9uKCJUZXN0IHRoYXQgY2Fs
bGluZyBzZXRBdHRyaWJ1dGVOUygpIHdpdGggYSBwcmVmaXhlZCBxdWFsaWZpZWROYW1lIGFuZCBu
dWxsIE5TIHRocm93cyBOQU1FU1BBQ0VfRVJSLiIpOwotCi1zaG91bGRUaHJvdygiZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgndGVzdCcpLnNldEF0dHJpYnV0ZU5TKG51bGwsICdmb286YmFyJywgJ2Jh
eicpIiwgIidFcnJvcjogTmFtZXNwYWNlRXJyb3I6IERPTSBFeGNlcHRpb24gMTQnIik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220494</attachid>
            <date>2014-01-06 22:44:02 -0800</date>
            <delta_ts>2014-01-07 12:50:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-126553-20140107014400.patch</filename>
            <type>text/plain</type>
            <size>16047</size>
            <attacher name="Victor Costan">costan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MTQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE0LTAxLTA2ICBWaWN0b3Ig
Q29zdGFuICA8Y29zdGFuQGdtYWlsLmNvbT4KKworICAgICAgICBjcmVhdGVFbGVtZW50TlMgaGFu
ZGxlcyBlbGVtZW50IG5hbWUgJ3htbG5zJyBjb3JyZWN0bHkuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjY1NTMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogZmFzdC9kb20vY3JlYXRlRWxlbWVu
dE5TLW5hbWVzcGFjZS1lcnJvcnMuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vc2V0QXR0
cmlidXRlTlMtbmFtZXNwYWNlLWVycm9ycy5odG1sCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Omhhc1ZhbGlkTmFtZXNwYWNlRm9yRWxl
bWVudHMpOiB1cGRhdGVkIHRvIG1hdGNoIERPTTMvRE9NNCBzcGVjLgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6Omhhc1ZhbGlkTmFtZXNwYWNlRm9yQXR0cmlidXRlcyk6IHVwZGF0ZWQgdG8g
bWF0Y2ggRE9NMy9ET000IHNwZWMuCisKIDIwMTQtMDEtMDYgIFJ5b3N1a2UgTml3YSAgPHJuaXdh
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMTU3ODUxKTogdHJhaWxpbmcgc3Bh
Y2UgaW5zaWRlIGFuIGVkaXRhYmxlIHJlZ2lvbiBjb3VsZCBiZSBlcnJvbmVvdXNseSBjb2xsYXBz
ZWQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMTYxMzg3KQorKysgU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAzNiwyMSAr
MTAzNiwxNCBAQCBib29sIERvY3VtZW50OjpoYXNWYWxpZE5hbWVzcGFjZUZvckVsZW1lCiAKICAg
ICAvLyBSZXF1aXJlZCBieSBET00gTGV2ZWwgMyBDb3JlIGFuZCB1bnNwZWNpZmllZCBieSBET00g
TGV2ZWwgMiBDb3JlOgogICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDQvUkVDLURPTS1M
ZXZlbC0zLUNvcmUtMjAwNDA0MDcvY29yZS5odG1sI0lELURvY0NyRWxOUwotICAgIC8vIGNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8iLCAiZm9vOmJhciIpLCBj
cmVhdGVFbGVtZW50TlMobnVsbCwgInhtbG5zOmJhciIpCi0gICAgaWYgKChxTmFtZS5wcmVmaXgo
KSA9PSB4bWxuc0F0b20gJiYgcU5hbWUubmFtZXNwYWNlVVJJKCkgIT0gWE1MTlNOYW1lczo6eG1s
bnNOYW1lc3BhY2VVUkkpIHx8IChxTmFtZS5wcmVmaXgoKSAhPSB4bWxuc0F0b20gJiYgcU5hbWUu
bmFtZXNwYWNlVVJJKCkgPT0gWE1MTlNOYW1lczo6eG1sbnNOYW1lc3BhY2VVUkkpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKKyAgICAvLyBjcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIiwgImZvbzpiYXIiKSwgY3JlYXRlRWxl
bWVudE5TKG51bGwsICJ4bWxuczpiYXIiKSwgY3JlYXRlRWxlbWVudE5TKG51bGwsICJ4bWxucyIp
CisgICAgaWYgKHFOYW1lLnByZWZpeCgpID09IHhtbG5zQXRvbSB8fCAocU5hbWUucHJlZml4KCku
aXNFbXB0eSgpICYmIHFOYW1lLmxvY2FsTmFtZSgpID09IHhtbG5zQXRvbSkpCisgICAgICAgIHJl
dHVybiBxTmFtZS5uYW1lc3BhY2VVUkkoKSA9PSBYTUxOU05hbWVzOjp4bWxuc05hbWVzcGFjZVVS
STsKKyAgICByZXR1cm4gcU5hbWUubmFtZXNwYWNlVVJJKCkgIT0gWE1MTlNOYW1lczo6eG1sbnNO
YW1lc3BhY2VVUkk7CiB9CiAKIGJvb2wgRG9jdW1lbnQ6Omhhc1ZhbGlkTmFtZXNwYWNlRm9yQXR0
cmlidXRlcyhjb25zdCBRdWFsaWZpZWROYW1lJiBxTmFtZSkKIHsKLSAgICAvLyBTcGVjOiBET00g
TGV2ZWwgMiBDb3JlOiBodHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwtMi1Db3JlL2NvcmUu
aHRtbCNJRC1FbFNldEF0dHJOUwotICAgIGlmIChxTmFtZS5wcmVmaXgoKS5pc0VtcHR5KCkgJiYg
cU5hbWUubG9jYWxOYW1lKCkgPT0geG1sbnNBdG9tKSB7Ci0gICAgICAgIC8vIE5vdGU6IFRoZSBj
YXNlIG9mIGFuICJ4bWxucyIgcXVhbGlmaWVkIG5hbWUgd2l0aCBhIG5hbWVzcGFjZSBvZgotICAg
ICAgICAvLyB4bWxuc05hbWVzcGFjZVVSSSBpcyBzcGVjaWZpY2FsbHkgYWxsb3dlZCAoU2VlIDxo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLz4pLgotICAgICAgICByZXR1cm4gcU5hbWUubmFt
ZXNwYWNlVVJJKCkgPT0gWE1MTlNOYW1lczo6eG1sbnNOYW1lc3BhY2VVUkk7Ci0gICAgfQogICAg
IHJldHVybiBoYXNWYWxpZE5hbWVzcGFjZUZvckVsZW1lbnRzKHFOYW1lKTsKIH0KIApJbmRleDog
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxv
ZwkocmV2aXNpb24gMTYxNDA0KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTQtMDEtMDYgIFZpY3RvciBDb3N0YW4gIDxjb3N0YW5A
Z21haWwuY29tPgorCisgICAgICAgIGNyZWF0ZUVsZW1lbnROUyBoYW5kbGVzIGVsZW1lbnQgbmFt
ZSAneG1sbnMnIGNvcnJlY3RseS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyNjU1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogZmFzdC9kb20vY3JlYXRlRWxlbWVudE5TLW5hbWVzcGFjZS1lcnJvcnMt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9jcmVhdGVFbGVtZW50TlMt
bmFtZXNwYWNlLWVycm9ycy5odG1sOiBBZGRlZC4gQ292ZXJzIGFsbCB0aGUgY29ybmVyIGNhc2Vz
IGluIHRoZSBET000IHNwZWMuCisgICAgICAgICogZmFzdC9kb20vc2NyaXB0LXRlc3RzL3NldEF0
dHJpYnV0ZU5TLXByZWZpeC1hbmQtbnVsbC1uYW1lc3BhY2UuanM6IFJlbW92ZWQuCisgICAgICAg
ICogZmFzdC9kb20vc2V0QXR0cmlidXRlTlMtZXhwZWN0ZWQudHh0OiBVcGRhdGVkIHRvIG1hdGNo
IGNsZWFuZWQgdXAgdGVzdC4KKyAgICAgICAgKiBmYXN0L2RvbS9zZXRBdHRyaWJ1dGVOUy1uYW1l
c3BhY2UtZXJyb3JzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2V0
QXR0cmlidXRlTlMtbmFtZXNwYWNlLWVycm9ycy5odG1sOiBBZGRlZC4gQ292ZXJzIGFsbCB0aGUg
Y29ybmVyIGNhc2VzIGluIHRoZSBET000IHNwZWMuCisgICAgICAgICogZmFzdC9kb20vc2V0QXR0
cmlidXRlTlMtcHJlZml4LWFuZC1udWxsLW5hbWVzcGFjZS1leHBlY3RlZC50eHQ6IFJlbW92ZWQu
CisgICAgICAgICogZmFzdC9kb20vc2V0QXR0cmlidXRlTlMtcHJlZml4LWFuZC1udWxsLW5hbWVz
cGFjZS5odG1sOiBSZW1vdmVkLiBTdWJzdW1lZCBieSBzZXRBdHRyaWJ1dGVOUy1uYW1lc3BhY2Ut
ZXJyb3JzLgorICAgICAgICAqIGZhc3QvZG9tL3NldEF0dHJpYnV0ZU5TLmh0bWw6IENsZWFuZWQg
dXAuCisKIDIwMTQtMDEtMDYgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgUkVHUkVTU0lPTihyMTU3ODUxKTogdHJhaWxpbmcgc3BhY2UgaW5zaWRlIGFuIGVkaXRh
YmxlIHJlZ2lvbiBjb3VsZCBiZSBlcnJvbmVvdXNseSBjb2xsYXBzZWQKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZG9tL2NyZWF0ZUVsZW1lbnROUy1uYW1lc3BhY2UtZXJyb3JzLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jcmVhdGVFbGVtZW50TlMtbmFt
ZXNwYWNlLWVycm9ycy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9jcmVhdGVFbGVtZW50TlMtbmFtZXNwYWNlLWVycm9ycy1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxOCBAQAorVGVzdCB0aGF0IGNhbGxpbmcgY3JlYXRlRWxl
bWVudE5TKCkgdGhyb3dzIGFuIGVycm9yIHdoZW4gaHR0cDovL3d3dy53My5vcmcvVFIvZG9tLyNk
b20tZG9jdW1lbnQtY3JlYXRlZWxlbWVudG5zIHNheXMgaXQgc2hvdWxkLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMobnVsbCwg
J2ZvbzpiYXInLCAnYmF6JykgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBOYW1lc3BhY2VFcnJvcjog
RE9NIEV4Y2VwdGlvbiAxNC4KK1BBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8v
d3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UnLCAneG1sOmFiYycsICdmb28nKSBkaWQgbm90
IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8v
d3d3LnczLm9yZy9ub3QtWE1MLzE5OTgvbmFtZXNwYWNlJywgJ3htbDphYmMnLCAnZm9vJykgdGhy
ZXcgZXhjZXB0aW9uIEVycm9yOiBOYW1lc3BhY2VFcnJvcjogRE9NIEV4Y2VwdGlvbiAxNC4KK1BB
U1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5z
LycsICd4bWxucycsICdodHRwOi8vd3d3dy5leGFtcGxlLm9yZycpIGRpZCBub3QgdGhyb3cgZXhj
ZXB0aW9uLgorUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMub3Jn
LzIwMDAvbm90LXhtbG5zLycsICd4bWxucycsICdodHRwOi8vd3d3dy5leGFtcGxlLm9yZycpIHRo
cmV3IGV4Y2VwdGlvbiBFcnJvcjogTmFtZXNwYWNlRXJyb3I6IERPTSBFeGNlcHRpb24gMTQuCitQ
QVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxu
cy8nLCAneG1sbnM6YWJjJywgJ2h0dHA6Ly93d3d3LmV4YW1wbGUub3JnJykgZGlkIG5vdCB0aHJv
dyBleGNlcHRpb24uCitQQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53
My5vcmcvMjAwMC9ub3QteG1sbnMvJywgJ3htbG5zOmFiYycsICdodHRwOi8vd3d3dy5leGFtcGxl
Lm9yZycpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTmFtZXNwYWNlRXJyb3I6IERPTSBFeGNlcHRp
b24gMTQuCitQQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcv
MjAwMC94bWxucy8nLCAnYmFkcHJlZml4OnhtbG5zJywgJ2h0dHA6Ly93d3d3LmV4YW1wbGUub3Jn
JykgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBOYW1lc3BhY2VFcnJvcjogRE9NIEV4Y2VwdGlvbiAx
NC4KK1BBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3htbG5zLycsICdub3R4bWxucycsICdodHRwOi8vd3d3dy5leGFtcGxlLm9yZycpIHRocmV3IGV4
Y2VwdGlvbiBFcnJvcjogTmFtZXNwYWNlRXJyb3I6IERPTSBFeGNlcHRpb24gMTQuCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9kb20vY3JlYXRlRWxlbWVudE5TLW5hbWVzcGFjZS1lcnJvcnMuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jcmVhdGVFbGVtZW50TlMtbmFtZXNwYWNl
LWVycm9ycy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vY3JlYXRl
RWxlbWVudE5TLW5hbWVzcGFjZS1lcnJvcnMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDI4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3QgdGhh
dCBjYWxsaW5nIGNyZWF0ZUVsZW1lbnROUygpIHRocm93cyBhbiBlcnJvciB3aGVuIGh0dHA6Ly93
d3cudzMub3JnL1RSL2RvbS8jZG9tLWRvY3VtZW50LWNyZWF0ZWVsZW1lbnRucyBzYXlzIGl0IHNo
b3VsZC4iKTsKKworLy8gU3BlYzogaHR0cDovL3d3dy53My5vcmcvVFIvZG9tLyNkb20tZG9jdW1l
bnQtY3JlYXRlZWxlbWVudG5zCisKKy8vIFN0ZXAgNS4KK3Nob3VsZFRocm93KCJkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMobnVsbCwgJ2ZvbzpiYXInLCAnYmF6JykiLCAnIkVycm9yOiBOYW1lc3Bh
Y2VFcnJvcjogRE9NIEV4Y2VwdGlvbiAxNCInKTsKKworLy8gU3RlcCA2Lgorc2hvdWxkTm90VGhy
b3coImRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgv
bmFtZXNwYWNlJywgJ3htbDphYmMnLCAnZm9vJykiKTsKK3Nob3VsZFRocm93KCJkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnL25vdC1YTUwvMTk5OC9uYW1lc3BhY2Un
LCAneG1sOmFiYycsICdmb28nKSIsICciRXJyb3I6IE5hbWVzcGFjZUVycm9yOiBET00gRXhjZXB0
aW9uIDE0IicpOworCisvLyBTdGVwIDcuCitzaG91bGROb3RUaHJvdygiZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLycsICd4bWxucycsICdodHRw
Oi8vd3d3dy5leGFtcGxlLm9yZycpIik7CitzaG91bGRUaHJvdygiZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL25vdC14bWxucy8nLCAneG1sbnMnLCAnaHR0
cDovL3d3d3cuZXhhbXBsZS5vcmcnKSIsICciRXJyb3I6IE5hbWVzcGFjZUVycm9yOiBET00gRXhj
ZXB0aW9uIDE0IicpOworc2hvdWxkTm90VGhyb3coImRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygn
aHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8nLCAneG1sbnM6YWJjJywgJ2h0dHA6Ly93d3d3
LmV4YW1wbGUub3JnJykiKTsKK3Nob3VsZFRocm93KCJkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvbm90LXhtbG5zLycsICd4bWxuczphYmMnLCAnaHR0cDov
L3d3d3cuZXhhbXBsZS5vcmcnKSIsICciRXJyb3I6IE5hbWVzcGFjZUVycm9yOiBET00gRXhjZXB0
aW9uIDE0IicpOworCisvLyBTdGVwIDguCitzaG91bGRUaHJvdygiZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLycsICdiYWRwcmVmaXg6eG1sbnMn
LCAnaHR0cDovL3d3d3cuZXhhbXBsZS5vcmcnKSIsICciRXJyb3I6IE5hbWVzcGFjZUVycm9yOiBE
T00gRXhjZXB0aW9uIDE0IicpOworCitzaG91bGRUaHJvdygiZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLycsICdub3R4bWxucycsICdodHRwOi8v
d3d3dy5leGFtcGxlLm9yZycpIiwgJyJFcnJvcjogTmFtZXNwYWNlRXJyb3I6IERPTSBFeGNlcHRp
b24gMTQiJyk7Cis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vc2V0QXR0
cmlidXRlTlMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9t
L3NldEF0dHJpYnV0ZU5TLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTYxMzg3KQorKysgTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2V0QXR0cmlidXRlTlMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTAgQEAKLVRoaXMgdGVzdHMgdGhhdCBzZXRBdHRyaWJ1dGVOUyB3aXRoIGEg
bnVsbCBuYW1lc3BhY2VVUkkgYWN0dWFsbHkgc2V0cyBpdCB0byB0aGUgdmFsdWUgbnVsbCBhbmQg
bm90IGEgc3RyaW5nIHdpdGggdGhlIGNvbnRlbnRzICdudWxsJy4gSWYgdGhlIHRlc3QgaXMgc3Vj
ZXNzZnVsLCB0aGUgdGV4dCBiZWxvdyBzaG91bGQgc2F5ICJTVUNDRVNTIi4KLVNVQ0NFU1MKK1Rl
c3QgdGhhdCBzZXRBdHRyaWJ1dGVOUyB3aXRoIGEgbnVsbCBuYW1lc3BhY2VVUkkgYWN0dWFsbHkg
c2V0cyBpdCB0byB0aGUgdmFsdWUgbnVsbCBhbmQgbm90IGEgc3RyaW5nIHdpdGggdGhlIGNvbnRl
bnRzICdudWxsJy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZWxlbS5h
dHRyaWJ1dGVzWzBdLm5hbWVzcGFjZVVSSSBpcyBudWxsCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2V0QXR0cmlidXRlTlMtbmFtZXNwYWNlLWVycm9ycy1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vc2V0QXR0cmlidXRlTlMtbmFtZXNwYWNlLWVycm9ycy1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9zZXRBdHRy
aWJ1dGVOUy1uYW1lc3BhY2UtZXJyb3JzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDE4IEBACitUZXN0IHRoYXQgY2FsbGluZyBzZXRBdHRyaWJ1dGVOUygpIHRocm93cyBh
biBlcnJvciB3aGVuIGh0dHA6Ly93d3cudzMub3JnL1RSL2RvbS8jZG9tLWVsZW1lbnQtc2V0YXR0
cmlidXRlbnMgc2F5cyBpdCBzaG91bGQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitQQVNTIGVsZW0uc2V0QXR0cmlidXRlTlMobnVsbCwgJ2ZvbzpiYXInLCAnYmF6JykgdGhyZXcg
ZXhjZXB0aW9uIEVycm9yOiBOYW1lc3BhY2VFcnJvcjogRE9NIEV4Y2VwdGlvbiAxNC4KK1BBU1Mg
ZWxlbS5zZXRBdHRyaWJ1dGVOUygnaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNl
JywgJ3htbDphYmMnLCAnZm9vJykgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIGVsZW0u
c2V0QXR0cmlidXRlTlMoJ2h0dHA6Ly93d3cudzMub3JnL25vdC1YTUwvMTk5OC9uYW1lc3BhY2Un
LCAneG1sOmFiYycsICdmb28nKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5hbWVzcGFjZUVycm9y
OiBET00gRXhjZXB0aW9uIDE0LgorUEFTUyBlbGVtLnNldEF0dHJpYnV0ZU5TKCdodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3htbG5zLycsICd4bWxucycsICdodHRwOi8vd3d3dy5leGFtcGxlLm9yZycp
IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBlbGVtLnNldEF0dHJpYnV0ZU5TKCdodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL25vdC14bWxucy8nLCAneG1sbnMnLCAnaHR0cDovL3d3d3cuZXhh
bXBsZS5vcmcnKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5hbWVzcGFjZUVycm9yOiBET00gRXhj
ZXB0aW9uIDE0LgorUEFTUyBlbGVtLnNldEF0dHJpYnV0ZU5TKCdodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3htbG5zLycsICd4bWxuczphYmMnLCAnaHR0cDovL3d3d3cuZXhhbXBsZS5vcmcnKSBkaWQg
bm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgZWxlbS5zZXRBdHRyaWJ1dGVOUygnaHR0cDovL3d3
dy53My5vcmcvMjAwMC9ub3QteG1sbnMvJywgJ3htbG5zOmFiYycsICdodHRwOi8vd3d3dy5leGFt
cGxlLm9yZycpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTmFtZXNwYWNlRXJyb3I6IERPTSBFeGNl
cHRpb24gMTQuCitQQVNTIGVsZW0uc2V0QXR0cmlidXRlTlMoJ2h0dHA6Ly93d3cudzMub3JnLzIw
MDAveG1sbnMvJywgJ2JhZHByZWZpeDp4bWxucycsICdodHRwOi8vd3d3dy5leGFtcGxlLm9yZycp
IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTmFtZXNwYWNlRXJyb3I6IERPTSBFeGNlcHRpb24gMTQu
CitQQVNTIGVsZW0uc2V0QXR0cmlidXRlTlMoJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMv
JywgJ25vdHhtbG5zJywgJ2h0dHA6Ly93d3d3LmV4YW1wbGUub3JnJykgdGhyZXcgZXhjZXB0aW9u
IEVycm9yOiBOYW1lc3BhY2VFcnJvcjogRE9NIEV4Y2VwdGlvbiAxNC4KK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9zZXRBdHRyaWJ1dGVOUy1uYW1lc3BhY2UtZXJyb3JzLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vc2V0QXR0cmlidXRlTlMtbmFtZXNwYWNlLWVycm9ycy5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vc2V0QXR0cmlidXRlTlMt
bmFtZXNwYWNlLWVycm9ycy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjkgQEAKKzwh
RE9DVFlQRSBodG1sPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdCB0aGF0IGNhbGxpbmcg
c2V0QXR0cmlidXRlTlMoKSB0aHJvd3MgYW4gZXJyb3Igd2hlbiBodHRwOi8vd3d3LnczLm9yZy9U
Ui9kb20vI2RvbS1lbGVtZW50LXNldGF0dHJpYnV0ZW5zIHNheXMgaXQgc2hvdWxkLiIpOworCit3
aW5kb3cuZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3Rlc3QnKTsKKworLy8gU3BlYzog
aHR0cDovL3d3dy53My5vcmcvVFIvZG9tLyNkb20tZWxlbWVudC1zZXRhdHRyaWJ1dGVucworCisv
LyBTdGVwIDUuCitzaG91bGRUaHJvdygiZWxlbS5zZXRBdHRyaWJ1dGVOUyhudWxsLCAnZm9vOmJh
cicsICdiYXonKSIsICciRXJyb3I6IE5hbWVzcGFjZUVycm9yOiBET00gRXhjZXB0aW9uIDE0Iicp
OworCisvLyBTdGVwIDYuCitzaG91bGROb3RUaHJvdygiZWxlbS5zZXRBdHRyaWJ1dGVOUygnaHR0
cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlJywgJ3htbDphYmMnLCAnZm9vJykiKTsK
K3Nob3VsZFRocm93KCJlbGVtLnNldEF0dHJpYnV0ZU5TKCdodHRwOi8vd3d3LnczLm9yZy9ub3Qt
WE1MLzE5OTgvbmFtZXNwYWNlJywgJ3htbDphYmMnLCAnZm9vJykiLCAnIkVycm9yOiBOYW1lc3Bh
Y2VFcnJvcjogRE9NIEV4Y2VwdGlvbiAxNCInKTsKKworLy8gU3RlcCA3Lgorc2hvdWxkTm90VGhy
b3coImVsZW0uc2V0QXR0cmlidXRlTlMoJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvJywg
J3htbG5zJywgJ2h0dHA6Ly93d3d3LmV4YW1wbGUub3JnJykiKTsKK3Nob3VsZFRocm93KCJlbGVt
LnNldEF0dHJpYnV0ZU5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL25vdC14bWxucy8nLCAneG1s
bnMnLCAnaHR0cDovL3d3d3cuZXhhbXBsZS5vcmcnKSIsICciRXJyb3I6IE5hbWVzcGFjZUVycm9y
OiBET00gRXhjZXB0aW9uIDE0IicpOworc2hvdWxkTm90VGhyb3coImVsZW0uc2V0QXR0cmlidXRl
TlMoJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvJywgJ3htbG5zOmFiYycsICdodHRwOi8v
d3d3dy5leGFtcGxlLm9yZycpIik7CitzaG91bGRUaHJvdygiZWxlbS5zZXRBdHRyaWJ1dGVOUygn
aHR0cDovL3d3dy53My5vcmcvMjAwMC9ub3QteG1sbnMvJywgJ3htbG5zOmFiYycsICdodHRwOi8v
d3d3dy5leGFtcGxlLm9yZycpIiwgJyJFcnJvcjogTmFtZXNwYWNlRXJyb3I6IERPTSBFeGNlcHRp
b24gMTQiJyk7CisKKy8vIFN0ZXAgOC4KK3Nob3VsZFRocm93KCJlbGVtLnNldEF0dHJpYnV0ZU5T
KCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLycsICdiYWRwcmVmaXg6eG1sbnMnLCAnaHR0
cDovL3d3d3cuZXhhbXBsZS5vcmcnKSIsICciRXJyb3I6IE5hbWVzcGFjZUVycm9yOiBET00gRXhj
ZXB0aW9uIDE0IicpOworc2hvdWxkVGhyb3coImVsZW0uc2V0QXR0cmlidXRlTlMoJ2h0dHA6Ly93
d3cudzMub3JnLzIwMDAveG1sbnMvJywgJ25vdHhtbG5zJywgJ2h0dHA6Ly93d3d3LmV4YW1wbGUu
b3JnJykiLCAnIkVycm9yOiBOYW1lc3BhY2VFcnJvcjogRE9NIEV4Y2VwdGlvbiAxNCInKTsKKzwv
c2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9zZXRBdHRyaWJ1dGVOUy1wcmVm
aXgtYW5kLW51bGwtbmFtZXNwYWNlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9zZXRBdHRyaWJ1dGVOUy1wcmVmaXgtYW5kLW51bGwtbmFtZXNwYWNlLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMTYxMzg3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vc2V0
QXR0cmlidXRlTlMtcHJlZml4LWFuZC1udWxsLW5hbWVzcGFjZS1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTEsMTAgKzAsMCBAQAotVGVzdCB0aGF0IGNhbGxpbmcgc2V0QXR0cmlidXRl
TlMoKSB3aXRoIGEgcHJlZml4ZWQgcXVhbGlmaWVkTmFtZSBhbmQgbnVsbCBOUyB0aHJvd3MgTkFN
RVNQQUNFX0VSUi4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLVBBU1MgZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgndGVzdCcpLnNldEF0dHJpYnV0ZU5TKG51bGwsICdmb286YmFyJywg
J2JheicpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTmFtZXNwYWNlRXJyb3I6IERPTSBFeGNlcHRp
b24gMTQuCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUK
LQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vc2V0QXR0cmlidXRlTlMtcHJlZml4LWFuZC1u
dWxsLW5hbWVzcGFjZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3Nl
dEF0dHJpYnV0ZU5TLXByZWZpeC1hbmQtbnVsbC1uYW1lc3BhY2UuaHRtbAkocmV2aXNpb24gMTYx
Mzg3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vc2V0QXR0cmlidXRlTlMtcHJlZml4LWFuZC1u
dWxsLW5hbWVzcGFjZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwICswLDAgQEAKLTwhRE9D
VFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KLTxodG1sPgotPGhlYWQ+
Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
LTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zZXRBdHRyaWJ1dGVO
Uy1wcmVmaXgtYW5kLW51bGwtbmFtZXNwYWNlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3NldEF0dHJpYnV0ZU5TLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vc2V0QXR0cmlidXRlTlMuaHRtbAkocmV2aXNp
b24gMTYxMzg3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vc2V0QXR0cmlidXRlTlMuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMSwzMiArMSwxMiBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICIt
Ly9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIKLSAgICAgICAgImh0dHA6Ly93
d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdD4K
LWZ1bmN0aW9uIGRlYnVnKHN0cikgewotICAgIHByZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdjb25zb2xlJyk7Ci0gICAgdGV4dCA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHN0ciArICdc
bicpOwotICAgIHByZS5hcHBlbmRDaGlsZCh0ZXh0KTsKLX0KLQotZnVuY3Rpb24gcnVuVGVzdHMo
KSB7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKKzwhRE9DVFlQRSBodG1sPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiAKLSAgICBlbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCdodHRwOi8vd3d3LmV4YW1wbGUub3JnJywgJ3Rlc3QnKQotICAgIGF0dHIgPSBlbGVt
LnNldEF0dHJpYnV0ZU5TKG51bGwsICduYW1lJywgJ3ZhbHVlJykKLSAgICAKLSAgICBpZiAoZWxl
bS5hdHRyaWJ1dGVzWzBdLm5hbWVzcGFjZVVSSSA9PSBudWxsKQotICAgICAgICBkZWJ1ZygnU1VD
Q0VTUycpCi0gICAgZWxzZQotICAgICAgICBkZWJ1ZygnRkFJTFVSRScpCi19Cis8c2NyaXB0Pgor
ZGVzY3JpcHRpb24oIlRlc3QgdGhhdCBzZXRBdHRyaWJ1dGVOUyB3aXRoIGEgbnVsbCBuYW1lc3Bh
Y2VVUkkgYWN0dWFsbHkgc2V0cyBpdCB0byB0aGUgdmFsdWUgbnVsbCBhbmQgbm90IGEgc3RyaW5n
IHdpdGggdGhlIGNvbnRlbnRzICdudWxsJy4iKTsKIAord2luZG93LmVsZW0gPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cuZXhhbXBsZS5vcmcnLCAndGVzdCcpOworZWxlbS5z
ZXRBdHRyaWJ1dGVOUyhudWxsLCAnbmFtZScsICd2YWx1ZScpOworc2hvdWxkQmVOdWxsKCdlbGVt
LmF0dHJpYnV0ZXNbMF0ubmFtZXNwYWNlVVJJJyk7CiA8L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5
IG9ubG9hZD0icnVuVGVzdHMoKTsiPgotVGhpcyB0ZXN0cyB0aGF0IHNldEF0dHJpYnV0ZU5TIHdp
dGggYSBudWxsIG5hbWVzcGFjZVVSSSBhY3R1YWxseSBzZXRzIGl0IHRvIHRoZSB2YWx1ZSBudWxs
IGFuZCBub3QgYSBzdHJpbmcgd2l0aCB0aGUgY29udGVudHMgJ251bGwnLiBJZiB0aGUgdGVzdCBp
cyBzdWNlc3NmdWwsIHRoZSB0ZXh0IGJlbG93IHNob3VsZCBzYXkgIlNVQ0NFU1MiLgotPHByZSBp
ZD0iY29uc29sZSI+Ci08L3ByZT4KLTwvYm9keT4KLTwvaHRtbD4KKworPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2NyaXB0LXRlc3RzL3NldEF0dHJpYnV0ZU5TLXByZWZpeC1hbmQtbnVsbC1u
YW1lc3BhY2UuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vc2NyaXB0LXRl
c3RzL3NldEF0dHJpYnV0ZU5TLXByZWZpeC1hbmQtbnVsbC1uYW1lc3BhY2UuanMJKHJldmlzaW9u
IDE2MTM4NykKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3NjcmlwdC10ZXN0cy9zZXRBdHRyaWJ1
dGVOUy1wcmVmaXgtYW5kLW51bGwtbmFtZXNwYWNlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzAsMCBAQAotZGVzY3JpcHRpb24oIlRlc3QgdGhhdCBjYWxsaW5nIHNldEF0dHJpYnV0ZU5TKCkg
d2l0aCBhIHByZWZpeGVkIHF1YWxpZmllZE5hbWUgYW5kIG51bGwgTlMgdGhyb3dzIE5BTUVTUEFD
RV9FUlIuIik7Ci0KLXNob3VsZFRocm93KCJkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZXN0Jyku
c2V0QXR0cmlidXRlTlMobnVsbCwgJ2ZvbzpiYXInLCAnYmF6JykiLCAiJ0Vycm9yOiBOYW1lc3Bh
Y2VFcnJvcjogRE9NIEV4Y2VwdGlvbiAxNCciKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220541</attachid>
            <date>2014-01-07 12:51:00 -0800</date>
            <delta_ts>2014-01-07 16:08:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-126553-20140107155059.patch</filename>
            <type>text/plain</type>
            <size>18270</size>
            <attacher name="Victor Costan">costan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MTQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE0LTAxLTA2ICBWaWN0b3Ig
Q29zdGFuICA8Y29zdGFuQGdtYWlsLmNvbT4KKworICAgICAgICBjcmVhdGVFbGVtZW50TlMgaGFu
ZGxlcyBlbGVtZW50IG5hbWUgJ3htbG5zJyBjb3JyZWN0bHkuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjY1NTMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogZmFzdC9kb20vY3JlYXRlRWxlbWVu
dE5TLW5hbWVzcGFjZS1lcnJvcnMuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vc2V0QXR0
cmlidXRlTlMtbmFtZXNwYWNlLWVycm9ycy5odG1sCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Omhhc1ZhbGlkTmFtZXNwYWNlRm9yRWxl
bWVudHMpOiB1cGRhdGVkIHRvIG1hdGNoIERPTTMvRE9NNCBzcGVjLgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6Omhhc1ZhbGlkTmFtZXNwYWNlRm9yQXR0cmlidXRlcyk6IHVwZGF0ZWQgdG8g
bWF0Y2ggRE9NMy9ET000IHNwZWMuCisKIDIwMTQtMDEtMDYgIFJ5b3N1a2UgTml3YSAgPHJuaXdh
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMTU3ODUxKTogdHJhaWxpbmcgc3Bh
Y2UgaW5zaWRlIGFuIGVkaXRhYmxlIHJlZ2lvbiBjb3VsZCBiZSBlcnJvbmVvdXNseSBjb2xsYXBz
ZWQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMTYxMzg3KQorKysgU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAzNiwyMSAr
MTAzNiwxNCBAQCBib29sIERvY3VtZW50OjpoYXNWYWxpZE5hbWVzcGFjZUZvckVsZW1lCiAKICAg
ICAvLyBSZXF1aXJlZCBieSBET00gTGV2ZWwgMyBDb3JlIGFuZCB1bnNwZWNpZmllZCBieSBET00g
TGV2ZWwgMiBDb3JlOgogICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDQvUkVDLURPTS1M
ZXZlbC0zLUNvcmUtMjAwNDA0MDcvY29yZS5odG1sI0lELURvY0NyRWxOUwotICAgIC8vIGNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8iLCAiZm9vOmJhciIpLCBj
cmVhdGVFbGVtZW50TlMobnVsbCwgInhtbG5zOmJhciIpCi0gICAgaWYgKChxTmFtZS5wcmVmaXgo
KSA9PSB4bWxuc0F0b20gJiYgcU5hbWUubmFtZXNwYWNlVVJJKCkgIT0gWE1MTlNOYW1lczo6eG1s
bnNOYW1lc3BhY2VVUkkpIHx8IChxTmFtZS5wcmVmaXgoKSAhPSB4bWxuc0F0b20gJiYgcU5hbWUu
bmFtZXNwYWNlVVJJKCkgPT0gWE1MTlNOYW1lczo6eG1sbnNOYW1lc3BhY2VVUkkpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKKyAgICAvLyBjcmVhdGVFbGVtZW50
TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIiwgImZvbzpiYXIiKSwgY3JlYXRlRWxl
bWVudE5TKG51bGwsICJ4bWxuczpiYXIiKSwgY3JlYXRlRWxlbWVudE5TKG51bGwsICJ4bWxucyIp
CisgICAgaWYgKHFOYW1lLnByZWZpeCgpID09IHhtbG5zQXRvbSB8fCAocU5hbWUucHJlZml4KCku
aXNFbXB0eSgpICYmIHFOYW1lLmxvY2FsTmFtZSgpID09IHhtbG5zQXRvbSkpCisgICAgICAgIHJl
dHVybiBxTmFtZS5uYW1lc3BhY2VVUkkoKSA9PSBYTUxOU05hbWVzOjp4bWxuc05hbWVzcGFjZVVS
STsKKyAgICByZXR1cm4gcU5hbWUubmFtZXNwYWNlVVJJKCkgIT0gWE1MTlNOYW1lczo6eG1sbnNO
YW1lc3BhY2VVUkk7CiB9CiAKIGJvb2wgRG9jdW1lbnQ6Omhhc1ZhbGlkTmFtZXNwYWNlRm9yQXR0
cmlidXRlcyhjb25zdCBRdWFsaWZpZWROYW1lJiBxTmFtZSkKIHsKLSAgICAvLyBTcGVjOiBET00g
TGV2ZWwgMiBDb3JlOiBodHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwtMi1Db3JlL2NvcmUu
aHRtbCNJRC1FbFNldEF0dHJOUwotICAgIGlmIChxTmFtZS5wcmVmaXgoKS5pc0VtcHR5KCkgJiYg
cU5hbWUubG9jYWxOYW1lKCkgPT0geG1sbnNBdG9tKSB7Ci0gICAgICAgIC8vIE5vdGU6IFRoZSBj
YXNlIG9mIGFuICJ4bWxucyIgcXVhbGlmaWVkIG5hbWUgd2l0aCBhIG5hbWVzcGFjZSBvZgotICAg
ICAgICAvLyB4bWxuc05hbWVzcGFjZVVSSSBpcyBzcGVjaWZpY2FsbHkgYWxsb3dlZCAoU2VlIDxo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLz4pLgotICAgICAgICByZXR1cm4gcU5hbWUubmFt
ZXNwYWNlVVJJKCkgPT0gWE1MTlNOYW1lczo6eG1sbnNOYW1lc3BhY2VVUkk7Ci0gICAgfQogICAg
IHJldHVybiBoYXNWYWxpZE5hbWVzcGFjZUZvckVsZW1lbnRzKHFOYW1lKTsKIH0KIApJbmRleDog
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxv
ZwkocmV2aXNpb24gMTYxNDA0KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTQtMDEtMDYgIFZpY3RvciBDb3N0YW4gIDxjb3N0YW5A
Z21haWwuY29tPgorCisgICAgICAgIGNyZWF0ZUVsZW1lbnROUyBoYW5kbGVzIGVsZW1lbnQgbmFt
ZSAneG1sbnMnIGNvcnJlY3RseS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyNjU1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogZmFzdC9kb20vY3JlYXRlRWxlbWVudE5TLW5hbWVzcGFjZS1lcnJvcnMt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9jcmVhdGVFbGVtZW50TlMt
bmFtZXNwYWNlLWVycm9ycy5odG1sOiBBZGRlZC4gQ292ZXJzIGFsbCB0aGUgY29ybmVyIGNhc2Vz
IGluIHRoZSBET000IHNwZWMuCisgICAgICAgICogZmFzdC9kb20vc2NyaXB0LXRlc3RzL3NldEF0
dHJpYnV0ZU5TLXByZWZpeC1hbmQtbnVsbC1uYW1lc3BhY2UuanM6IFJlbW92ZWQuCisgICAgICAg
ICogZmFzdC9kb20vc2V0QXR0cmlidXRlTlMtZXhwZWN0ZWQudHh0OiBVcGRhdGVkIHRvIG1hdGNo
IGNsZWFuZWQgdXAgdGVzdC4KKyAgICAgICAgKiBmYXN0L2RvbS9zZXRBdHRyaWJ1dGVOUy1uYW1l
c3BhY2UtZXJyb3JzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2V0
QXR0cmlidXRlTlMtbmFtZXNwYWNlLWVycm9ycy5odG1sOiBBZGRlZC4gQ292ZXJzIGFsbCB0aGUg
Y29ybmVyIGNhc2VzIGluIHRoZSBET000IHNwZWMuCisgICAgICAgICogZmFzdC9kb20vc2V0QXR0
cmlidXRlTlMtcHJlZml4LWFuZC1udWxsLW5hbWVzcGFjZS1leHBlY3RlZC50eHQ6IFJlbW92ZWQu
CisgICAgICAgICogZmFzdC9kb20vc2V0QXR0cmlidXRlTlMtcHJlZml4LWFuZC1udWxsLW5hbWVz
cGFjZS5odG1sOiBSZW1vdmVkLiBTdWJzdW1lZCBieSBzZXRBdHRyaWJ1dGVOUy1uYW1lc3BhY2Ut
ZXJyb3JzLgorICAgICAgICAqIGZhc3QvZG9tL3NldEF0dHJpYnV0ZU5TLmh0bWw6IENsZWFuZWQg
dXAuCisKIDIwMTQtMDEtMDYgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgUkVHUkVTU0lPTihyMTU3ODUxKTogdHJhaWxpbmcgc3BhY2UgaW5zaWRlIGFuIGVkaXRh
YmxlIHJlZ2lvbiBjb3VsZCBiZSBlcnJvbmVvdXNseSBjb2xsYXBzZWQKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZG9tL2NyZWF0ZUVsZW1lbnROUy1uYW1lc3BhY2UtZXJyb3JzLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jcmVhdGVFbGVtZW50TlMtbmFt
ZXNwYWNlLWVycm9ycy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9jcmVhdGVFbGVtZW50TlMtbmFtZXNwYWNlLWVycm9ycy1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwzMCBAQAorVGVzdCB0aGF0IGNhbGxpbmcgY3JlYXRlRWxl
bWVudE5TKCkgdGhyb3dzIGFuIGVycm9yIHdoZW4gdGhlIERPTSBzcGVjIHNheXMgaXQgc2hvdWxk
LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMobnVsbCwgJ2ZvbzpiYXInKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5hbWVzcGFj
ZUVycm9yOiBET00gRXhjZXB0aW9uIDE0LgorUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
J2h0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZScsICd4bWw6YWJjJykgZGlkIG5v
dCB0aHJvdyBleGNlcHRpb24uCitQQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDov
L3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlJywgJ3htbDphYmMnKS5uYW1lc3BhY2VVUkkg
aXMgImh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIKK1BBU1MgZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UnLCAn
eG1sOmFiYycpLm5vZGVOYW1lIGlzICJ4bWw6YWJjIgorUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZScsICd4bWw6YWJjJyku
cHJlZml4IGlzICJ4bWwiCitQQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3
dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlJywgJ3htbDphYmMnKS5sb2NhbE5hbWUgaXMgImFi
YyIKK1BBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy9ub3Qt
WE1MLzE5OTgvbmFtZXNwYWNlJywgJ3htbDphYmMnKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5h
bWVzcGFjZUVycm9yOiBET00gRXhjZXB0aW9uIDE0LgorUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvJywgJ3htbG5zJykgZGlkIG5vdCB0
aHJvdyBleGNlcHRpb24uCitQQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3
dy53My5vcmcvMjAwMC94bWxucy8nLCAneG1sbnMnKS5uYW1lc3BhY2VVUkkgaXMgImh0dHA6Ly93
d3cudzMub3JnLzIwMDAveG1sbnMvIgorUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0
dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvJywgJ3htbG5zJykubm9kZU5hbWUgaXMgInhtbG5z
IgorUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAv
eG1sbnMvJywgJ3htbG5zJykucHJlZml4IGlzIG51bGwKK1BBU1MgZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLycsICd4bWxucycpLmxvY2FsTmFt
ZSBpcyAieG1sbnMiCitQQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53
My5vcmcvMjAwMC9ub3QteG1sbnMvJywgJ3htbG5zJykgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBO
YW1lc3BhY2VFcnJvcjogRE9NIEV4Y2VwdGlvbiAxNC4KK1BBU1MgZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLycsICd4bWxuczphYmMnKSBkaWQg
bm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLycsICd4bWxuczphYmMnKS5uYW1lc3BhY2VVUkkgaXMg
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIgorUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvJywgJ3htbG5zOmFiYycpLm5vZGVO
YW1lIGlzICJ4bWxuczphYmMiCitQQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDov
L3d3dy53My5vcmcvMjAwMC94bWxucy8nLCAneG1sbnM6YWJjJykucHJlZml4IGlzICJ4bWxucyIK
K1BBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3ht
bG5zLycsICd4bWxuczphYmMnKS5sb2NhbE5hbWUgaXMgImFiYyIKK1BBU1MgZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL25vdC14bWxucy8nLCAneG1sbnM6
YWJjJykgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBOYW1lc3BhY2VFcnJvcjogRE9NIEV4Y2VwdGlv
biAxNC4KK1BBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3htbG5zLycsICdiYWRwcmVmaXg6eG1sbnMnKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5h
bWVzcGFjZUVycm9yOiBET00gRXhjZXB0aW9uIDE0LgorUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvJywgJ25vdHhtbG5zJykgdGhyZXcg
ZXhjZXB0aW9uIEVycm9yOiBOYW1lc3BhY2VFcnJvcjogRE9NIEV4Y2VwdGlvbiAxNC4KK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9jcmVhdGVFbGVtZW50TlMtbmFtZXNwYWNlLWVycm9ycy5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2NyZWF0ZUVsZW1lbnROUy1uYW1lc3Bh
Y2UtZXJyb3JzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jcmVh
dGVFbGVtZW50TlMtbmFtZXNwYWNlLWVycm9ycy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNDEgQEAKKzwhRE9DVFlQRSBodG1sPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCB0
aGF0IGNhbGxpbmcgY3JlYXRlRWxlbWVudE5TKCkgdGhyb3dzIGFuIGVycm9yIHdoZW4gPGEgaHJl
Zj0iaHR0cDovL3d3dy53My5vcmcvVFIvZG9tLyNkb20tZG9jdW1lbnQtY3JlYXRlZWxlbWVudG5z
Ij50aGUgRE9NIHNwZWM8L2E+IHNheXMgaXQgc2hvdWxkLicpOworCisvLyBTcGVjOiBodHRwOi8v
d3d3LnczLm9yZy9UUi9kb20vI2RvbS1kb2N1bWVudC1jcmVhdGVlbGVtZW50bnMKKworLy8gU3Rl
cCA1Lgorc2hvdWxkVGhyb3coImRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhudWxsLCAnZm9vOmJh
cicpIiwgJyJFcnJvcjogTmFtZXNwYWNlRXJyb3I6IERPTSBFeGNlcHRpb24gMTQiJyk7CisKKy8v
IFN0ZXAgNi4KK3Nob3VsZE5vdFRocm93KCJkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6
Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZScsICd4bWw6YWJjJykiKTsKK3Nob3VsZEJl
KCJkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25h
bWVzcGFjZScsICd4bWw6YWJjJykubmFtZXNwYWNlVVJJIiwgJyJodHRwOi8vd3d3LnczLm9yZy9Y
TUwvMTk5OC9uYW1lc3BhY2UiJyk7CitzaG91bGRCZSgiZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCdodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UnLCAneG1sOmFiYycpLm5vZGVO
YW1lIiwgJyJ4bWw6YWJjIicpOworc2hvdWxkQmUoImRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygn
aHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlJywgJ3htbDphYmMnKS5wcmVmaXgi
LCAnInhtbCInKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93
d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZScsICd4bWw6YWJjJykubG9jYWxOYW1lIiwgJyJh
YmMiJyk7CitzaG91bGRUaHJvdygiZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3
LnczLm9yZy9ub3QtWE1MLzE5OTgvbmFtZXNwYWNlJywgJ3htbDphYmMnKSIsICciRXJyb3I6IE5h
bWVzcGFjZUVycm9yOiBET00gRXhjZXB0aW9uIDE0IicpOworCisvLyBTdGVwIDcuCitzaG91bGRO
b3RUaHJvdygiZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3htbG5zLycsICd4bWxucycpIik7CitzaG91bGRCZSgiZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLycsICd4bWxucycpLm5hbWVzcGFjZVVSSSIs
ICciaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8iJyk7CitzaG91bGRCZSgiZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLycsICd4bWxucycp
Lm5vZGVOYW1lIiwgJyJ4bWxucyInKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvJywgJ3htbG5zJykucHJlZml4IiwgJ251
bGwnKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMu
b3JnLzIwMDAveG1sbnMvJywgJ3htbG5zJykubG9jYWxOYW1lIiwgJyJ4bWxucyInKTsKK3Nob3Vs
ZFRocm93KCJkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAv
bm90LXhtbG5zLycsICd4bWxucycpIiwgJyJFcnJvcjogTmFtZXNwYWNlRXJyb3I6IERPTSBFeGNl
cHRpb24gMTQiJyk7CisKK3Nob3VsZE5vdFRocm93KCJkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
J2h0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvJywgJ3htbG5zOmFiYycpIik7CitzaG91bGRC
ZSgiZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5z
LycsICd4bWxuczphYmMnKS5uYW1lc3BhY2VVUkkiLCAnImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
eG1sbnMvIicpOworc2hvdWxkQmUoImRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3
dy53My5vcmcvMjAwMC94bWxucy8nLCAneG1sbnM6YWJjJykubm9kZU5hbWUiLCAnInhtbG5zOmFi
YyInKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMu
b3JnLzIwMDAveG1sbnMvJywgJ3htbG5zOmFiYycpLnByZWZpeCIsICcieG1sbnMiJyk7CitzaG91
bGRCZSgiZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3ht
bG5zLycsICd4bWxuczphYmMnKS5sb2NhbE5hbWUiLCAnImFiYyInKTsKK3Nob3VsZFRocm93KCJk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvbm90LXhtbG5z
LycsICd4bWxuczphYmMnKSIsICciRXJyb3I6IE5hbWVzcGFjZUVycm9yOiBET00gRXhjZXB0aW9u
IDE0IicpOworCisvLyBTdGVwIDguCitzaG91bGRUaHJvdygiZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLycsICdiYWRwcmVmaXg6eG1sbnMnKSIs
ICciRXJyb3I6IE5hbWVzcGFjZUVycm9yOiBET00gRXhjZXB0aW9uIDE0IicpOworCitzaG91bGRU
aHJvdygiZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3ht
bG5zLycsICdub3R4bWxucycpIiwgJyJFcnJvcjogTmFtZXNwYWNlRXJyb3I6IERPTSBFeGNlcHRp
b24gMTQiJyk7Cis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vc2V0QXR0
cmlidXRlTlMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9t
L3NldEF0dHJpYnV0ZU5TLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTYxMzg3KQorKysgTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2V0QXR0cmlidXRlTlMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTAgQEAKLVRoaXMgdGVzdHMgdGhhdCBzZXRBdHRyaWJ1dGVOUyB3aXRoIGEg
bnVsbCBuYW1lc3BhY2VVUkkgYWN0dWFsbHkgc2V0cyBpdCB0byB0aGUgdmFsdWUgbnVsbCBhbmQg
bm90IGEgc3RyaW5nIHdpdGggdGhlIGNvbnRlbnRzICdudWxsJy4gSWYgdGhlIHRlc3QgaXMgc3Vj
ZXNzZnVsLCB0aGUgdGV4dCBiZWxvdyBzaG91bGQgc2F5ICJTVUNDRVNTIi4KLVNVQ0NFU1MKK1Rl
c3QgdGhhdCBzZXRBdHRyaWJ1dGVOUyB3aXRoIGEgbnVsbCBuYW1lc3BhY2VVUkkgYWN0dWFsbHkg
c2V0cyBpdCB0byB0aGUgdmFsdWUgbnVsbCBhbmQgbm90IGEgc3RyaW5nIHdpdGggdGhlIGNvbnRl
bnRzICdudWxsJy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZWxlbS5h
dHRyaWJ1dGVzWzBdLm5hbWVzcGFjZVVSSSBpcyBudWxsCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2V0QXR0cmlidXRlTlMtbmFtZXNwYWNlLWVycm9ycy1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vc2V0QXR0cmlidXRlTlMtbmFtZXNwYWNlLWVycm9ycy1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9zZXRBdHRy
aWJ1dGVOUy1uYW1lc3BhY2UtZXJyb3JzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDE4IEBACitUZXN0IHRoYXQgY2FsbGluZyBzZXRBdHRyaWJ1dGVOUygpIHRocm93cyBh
biBlcnJvciB3aGVuIGh0dHA6Ly93d3cudzMub3JnL1RSL2RvbS8jZG9tLWVsZW1lbnQtc2V0YXR0
cmlidXRlbnMgc2F5cyBpdCBzaG91bGQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitQQVNTIGVsZW0uc2V0QXR0cmlidXRlTlMobnVsbCwgJ2ZvbzpiYXInLCAnYmF6JykgdGhyZXcg
ZXhjZXB0aW9uIEVycm9yOiBOYW1lc3BhY2VFcnJvcjogRE9NIEV4Y2VwdGlvbiAxNC4KK1BBU1Mg
ZWxlbS5zZXRBdHRyaWJ1dGVOUygnaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNl
JywgJ3htbDphYmMnLCAnZm9vJykgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIGVsZW0u
c2V0QXR0cmlidXRlTlMoJ2h0dHA6Ly93d3cudzMub3JnL25vdC1YTUwvMTk5OC9uYW1lc3BhY2Un
LCAneG1sOmFiYycsICdmb28nKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5hbWVzcGFjZUVycm9y
OiBET00gRXhjZXB0aW9uIDE0LgorUEFTUyBlbGVtLnNldEF0dHJpYnV0ZU5TKCdodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3htbG5zLycsICd4bWxucycsICdodHRwOi8vd3d3dy5leGFtcGxlLm9yZycp
IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBlbGVtLnNldEF0dHJpYnV0ZU5TKCdodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL25vdC14bWxucy8nLCAneG1sbnMnLCAnaHR0cDovL3d3d3cuZXhh
bXBsZS5vcmcnKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5hbWVzcGFjZUVycm9yOiBET00gRXhj
ZXB0aW9uIDE0LgorUEFTUyBlbGVtLnNldEF0dHJpYnV0ZU5TKCdodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3htbG5zLycsICd4bWxuczphYmMnLCAnaHR0cDovL3d3d3cuZXhhbXBsZS5vcmcnKSBkaWQg
bm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgZWxlbS5zZXRBdHRyaWJ1dGVOUygnaHR0cDovL3d3
dy53My5vcmcvMjAwMC9ub3QteG1sbnMvJywgJ3htbG5zOmFiYycsICdodHRwOi8vd3d3dy5leGFt
cGxlLm9yZycpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTmFtZXNwYWNlRXJyb3I6IERPTSBFeGNl
cHRpb24gMTQuCitQQVNTIGVsZW0uc2V0QXR0cmlidXRlTlMoJ2h0dHA6Ly93d3cudzMub3JnLzIw
MDAveG1sbnMvJywgJ2JhZHByZWZpeDp4bWxucycsICdodHRwOi8vd3d3dy5leGFtcGxlLm9yZycp
IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTmFtZXNwYWNlRXJyb3I6IERPTSBFeGNlcHRpb24gMTQu
CitQQVNTIGVsZW0uc2V0QXR0cmlidXRlTlMoJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMv
JywgJ25vdHhtbG5zJywgJ2h0dHA6Ly93d3d3LmV4YW1wbGUub3JnJykgdGhyZXcgZXhjZXB0aW9u
IEVycm9yOiBOYW1lc3BhY2VFcnJvcjogRE9NIEV4Y2VwdGlvbiAxNC4KK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9zZXRBdHRyaWJ1dGVOUy1uYW1lc3BhY2UtZXJyb3JzLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vc2V0QXR0cmlidXRlTlMtbmFtZXNwYWNlLWVycm9ycy5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vc2V0QXR0cmlidXRlTlMt
bmFtZXNwYWNlLWVycm9ycy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjkgQEAKKzwh
RE9DVFlQRSBodG1sPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdCB0aGF0IGNhbGxpbmcg
c2V0QXR0cmlidXRlTlMoKSB0aHJvd3MgYW4gZXJyb3Igd2hlbiBodHRwOi8vd3d3LnczLm9yZy9U
Ui9kb20vI2RvbS1lbGVtZW50LXNldGF0dHJpYnV0ZW5zIHNheXMgaXQgc2hvdWxkLiIpOworCit3
aW5kb3cuZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3Rlc3QnKTsKKworLy8gU3BlYzog
aHR0cDovL3d3dy53My5vcmcvVFIvZG9tLyNkb20tZWxlbWVudC1zZXRhdHRyaWJ1dGVucworCisv
LyBTdGVwIDUuCitzaG91bGRUaHJvdygiZWxlbS5zZXRBdHRyaWJ1dGVOUyhudWxsLCAnZm9vOmJh
cicsICdiYXonKSIsICciRXJyb3I6IE5hbWVzcGFjZUVycm9yOiBET00gRXhjZXB0aW9uIDE0Iicp
OworCisvLyBTdGVwIDYuCitzaG91bGROb3RUaHJvdygiZWxlbS5zZXRBdHRyaWJ1dGVOUygnaHR0
cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlJywgJ3htbDphYmMnLCAnZm9vJykiKTsK
K3Nob3VsZFRocm93KCJlbGVtLnNldEF0dHJpYnV0ZU5TKCdodHRwOi8vd3d3LnczLm9yZy9ub3Qt
WE1MLzE5OTgvbmFtZXNwYWNlJywgJ3htbDphYmMnLCAnZm9vJykiLCAnIkVycm9yOiBOYW1lc3Bh
Y2VFcnJvcjogRE9NIEV4Y2VwdGlvbiAxNCInKTsKKworLy8gU3RlcCA3Lgorc2hvdWxkTm90VGhy
b3coImVsZW0uc2V0QXR0cmlidXRlTlMoJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvJywg
J3htbG5zJywgJ2h0dHA6Ly93d3d3LmV4YW1wbGUub3JnJykiKTsKK3Nob3VsZFRocm93KCJlbGVt
LnNldEF0dHJpYnV0ZU5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL25vdC14bWxucy8nLCAneG1s
bnMnLCAnaHR0cDovL3d3d3cuZXhhbXBsZS5vcmcnKSIsICciRXJyb3I6IE5hbWVzcGFjZUVycm9y
OiBET00gRXhjZXB0aW9uIDE0IicpOworc2hvdWxkTm90VGhyb3coImVsZW0uc2V0QXR0cmlidXRl
TlMoJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvJywgJ3htbG5zOmFiYycsICdodHRwOi8v
d3d3dy5leGFtcGxlLm9yZycpIik7CitzaG91bGRUaHJvdygiZWxlbS5zZXRBdHRyaWJ1dGVOUygn
aHR0cDovL3d3dy53My5vcmcvMjAwMC9ub3QteG1sbnMvJywgJ3htbG5zOmFiYycsICdodHRwOi8v
d3d3dy5leGFtcGxlLm9yZycpIiwgJyJFcnJvcjogTmFtZXNwYWNlRXJyb3I6IERPTSBFeGNlcHRp
b24gMTQiJyk7CisKKy8vIFN0ZXAgOC4KK3Nob3VsZFRocm93KCJlbGVtLnNldEF0dHJpYnV0ZU5T
KCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLycsICdiYWRwcmVmaXg6eG1sbnMnLCAnaHR0
cDovL3d3d3cuZXhhbXBsZS5vcmcnKSIsICciRXJyb3I6IE5hbWVzcGFjZUVycm9yOiBET00gRXhj
ZXB0aW9uIDE0IicpOworc2hvdWxkVGhyb3coImVsZW0uc2V0QXR0cmlidXRlTlMoJ2h0dHA6Ly93
d3cudzMub3JnLzIwMDAveG1sbnMvJywgJ25vdHhtbG5zJywgJ2h0dHA6Ly93d3d3LmV4YW1wbGUu
b3JnJykiLCAnIkVycm9yOiBOYW1lc3BhY2VFcnJvcjogRE9NIEV4Y2VwdGlvbiAxNCInKTsKKzwv
c2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9zZXRBdHRyaWJ1dGVOUy1wcmVm
aXgtYW5kLW51bGwtbmFtZXNwYWNlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9zZXRBdHRyaWJ1dGVOUy1wcmVmaXgtYW5kLW51bGwtbmFtZXNwYWNlLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMTYxMzg3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vc2V0
QXR0cmlidXRlTlMtcHJlZml4LWFuZC1udWxsLW5hbWVzcGFjZS1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTEsMTAgKzAsMCBAQAotVGVzdCB0aGF0IGNhbGxpbmcgc2V0QXR0cmlidXRl
TlMoKSB3aXRoIGEgcHJlZml4ZWQgcXVhbGlmaWVkTmFtZSBhbmQgbnVsbCBOUyB0aHJvd3MgTkFN
RVNQQUNFX0VSUi4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLVBBU1MgZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgndGVzdCcpLnNldEF0dHJpYnV0ZU5TKG51bGwsICdmb286YmFyJywg
J2JheicpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTmFtZXNwYWNlRXJyb3I6IERPTSBFeGNlcHRp
b24gMTQuCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUK
LQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vc2V0QXR0cmlidXRlTlMtcHJlZml4LWFuZC1u
dWxsLW5hbWVzcGFjZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3Nl
dEF0dHJpYnV0ZU5TLXByZWZpeC1hbmQtbnVsbC1uYW1lc3BhY2UuaHRtbAkocmV2aXNpb24gMTYx
Mzg3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vc2V0QXR0cmlidXRlTlMtcHJlZml4LWFuZC1u
dWxsLW5hbWVzcGFjZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwICswLDAgQEAKLTwhRE9D
VFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KLTxodG1sPgotPGhlYWQ+
Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
LTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zZXRBdHRyaWJ1dGVO
Uy1wcmVmaXgtYW5kLW51bGwtbmFtZXNwYWNlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3NldEF0dHJpYnV0ZU5TLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vc2V0QXR0cmlidXRlTlMuaHRtbAkocmV2aXNp
b24gMTYxMzg3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vc2V0QXR0cmlidXRlTlMuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMSwzMiArMSwxMiBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICIt
Ly9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIKLSAgICAgICAgImh0dHA6Ly93
d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdD4K
LWZ1bmN0aW9uIGRlYnVnKHN0cikgewotICAgIHByZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdjb25zb2xlJyk7Ci0gICAgdGV4dCA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHN0ciArICdc
bicpOwotICAgIHByZS5hcHBlbmRDaGlsZCh0ZXh0KTsKLX0KLQotZnVuY3Rpb24gcnVuVGVzdHMo
KSB7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKKzwhRE9DVFlQRSBodG1sPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiAKLSAgICBlbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKCdodHRwOi8vd3d3LmV4YW1wbGUub3JnJywgJ3Rlc3QnKQotICAgIGF0dHIgPSBlbGVt
LnNldEF0dHJpYnV0ZU5TKG51bGwsICduYW1lJywgJ3ZhbHVlJykKLSAgICAKLSAgICBpZiAoZWxl
bS5hdHRyaWJ1dGVzWzBdLm5hbWVzcGFjZVVSSSA9PSBudWxsKQotICAgICAgICBkZWJ1ZygnU1VD
Q0VTUycpCi0gICAgZWxzZQotICAgICAgICBkZWJ1ZygnRkFJTFVSRScpCi19Cis8c2NyaXB0Pgor
ZGVzY3JpcHRpb24oIlRlc3QgdGhhdCBzZXRBdHRyaWJ1dGVOUyB3aXRoIGEgbnVsbCBuYW1lc3Bh
Y2VVUkkgYWN0dWFsbHkgc2V0cyBpdCB0byB0aGUgdmFsdWUgbnVsbCBhbmQgbm90IGEgc3RyaW5n
IHdpdGggdGhlIGNvbnRlbnRzICdudWxsJy4iKTsKIAord2luZG93LmVsZW0gPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cuZXhhbXBsZS5vcmcnLCAndGVzdCcpOworZWxlbS5z
ZXRBdHRyaWJ1dGVOUyhudWxsLCAnbmFtZScsICd2YWx1ZScpOworc2hvdWxkQmVOdWxsKCdlbGVt
LmF0dHJpYnV0ZXNbMF0ubmFtZXNwYWNlVVJJJyk7CiA8L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5
IG9ubG9hZD0icnVuVGVzdHMoKTsiPgotVGhpcyB0ZXN0cyB0aGF0IHNldEF0dHJpYnV0ZU5TIHdp
dGggYSBudWxsIG5hbWVzcGFjZVVSSSBhY3R1YWxseSBzZXRzIGl0IHRvIHRoZSB2YWx1ZSBudWxs
IGFuZCBub3QgYSBzdHJpbmcgd2l0aCB0aGUgY29udGVudHMgJ251bGwnLiBJZiB0aGUgdGVzdCBp
cyBzdWNlc3NmdWwsIHRoZSB0ZXh0IGJlbG93IHNob3VsZCBzYXkgIlNVQ0NFU1MiLgotPHByZSBp
ZD0iY29uc29sZSI+Ci08L3ByZT4KLTwvYm9keT4KLTwvaHRtbD4KKworPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2NyaXB0LXRlc3RzL3NldEF0dHJpYnV0ZU5TLXByZWZpeC1hbmQtbnVsbC1u
YW1lc3BhY2UuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vc2NyaXB0LXRl
c3RzL3NldEF0dHJpYnV0ZU5TLXByZWZpeC1hbmQtbnVsbC1uYW1lc3BhY2UuanMJKHJldmlzaW9u
IDE2MTM4NykKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3NjcmlwdC10ZXN0cy9zZXRBdHRyaWJ1
dGVOUy1wcmVmaXgtYW5kLW51bGwtbmFtZXNwYWNlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzAsMCBAQAotZGVzY3JpcHRpb24oIlRlc3QgdGhhdCBjYWxsaW5nIHNldEF0dHJpYnV0ZU5TKCkg
d2l0aCBhIHByZWZpeGVkIHF1YWxpZmllZE5hbWUgYW5kIG51bGwgTlMgdGhyb3dzIE5BTUVTUEFD
RV9FUlIuIik7Ci0KLXNob3VsZFRocm93KCJkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZXN0Jyku
c2V0QXR0cmlidXRlTlMobnVsbCwgJ2ZvbzpiYXInLCAnYmF6JykiLCAiJ0Vycm9yOiBOYW1lc3Bh
Y2VFcnJvcjogRE9NIEV4Y2VwdGlvbiAxNCciKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>