<?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>94469</bug_id>
          
          <creation_ts>2012-08-20 05:21:19 -0700</creation_ts>
          <short_desc>enable &lt;animate&gt; of viewBox attribute in &lt;view&gt; element</short_desc>
          <delta_ts>2019-09-13 11:22:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=196554</see_also>
          <bug_file_loc>https://bugzilla.mozilla.org/attachment.cgi?id=653342#w</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>bugmenot</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>dino</cc>
    
    <cc>ews-feeder</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>pdr</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>sam</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>699415</commentid>
    <comment_count>0</comment_count>
    <who name="">bugmenot</who>
    <bug_when>2012-08-20 05:21:19 -0700</bug_when>
    <thetext>testcase in URL field: zoom out on click when at #w

Testing revealed &lt;animate&gt; either as a child element of &lt;view&gt; like in the testcase, or outside it with xlink:href=&quot;#w&quot; (at http://imgh.us/twZoomOutTest.svg#w ) fails to zoom the viewBox out to show the whole SVG.
The begin=&quot;click&quot; is only in the testcase for easier manual testing.
Testcase works in Opera, not in Firefox.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715982</commentid>
    <comment_count>1</comment_count>
    <who name="">bugmenot</who>
    <bug_when>2012-09-10 05:54:16 -0700</bug_when>
    <thetext>Mozilla has just fixed this in Firefox nightly builds:
https://bugzilla.mozilla.org/show_bug.cgi?id=783995</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567330</commentid>
    <comment_count>2</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2019-09-03 03:43:08 -0700</bug_when>
    <thetext>I have a patch for this, will upload it soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567347</commentid>
    <comment_count>3</comment_count>
      <attachid>377887</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2019-09-03 04:21:37 -0700</bug_when>
    <thetext>Created attachment 377887
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567348</commentid>
    <comment_count>4</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2019-09-03 04:23:16 -0700</bug_when>
    <thetext>My first patch after 7 years :-) Feels like home.
NOTE: I plan to add more test coverage, especially dynamic updates for all the properties that we care about in SVGViewElement, just wanted to test the whole toolchain: webkit-patch, prepare-ChangeLog in combination with Git. Works like a charme!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567375</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-09-03 07:11:13 -0700</bug_when>
    <thetext>(In reply to Nikolas Zimmermann from comment #4)
&gt; My first patch after 7 years :-) Feels like home.
&gt; NOTE: I plan to add more test coverage, especially dynamic updates for all
&gt; the properties that we care about in SVGViewElement, just wanted to test the
&gt; whole toolchain: webkit-patch, prepare-ChangeLog in combination with Git.
&gt; Works like a charme!

!!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567429</commentid>
    <comment_count>6</comment_count>
      <attachid>377887</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-09-03 10:48:01 -0700</bug_when>
    <thetext>Comment on attachment 377887
Patch

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

Welcome back Niko.

&gt; Source/WebCore/ChangeLog:10
&gt; +        visual effect. If a SVGSVGElement references a SVGViewElement, e.g. by loading an URL like
&gt; +        &quot;test.svg#customView&quot;, the custom view if parsed once in SVGSVGElement::scrollToFragment().

This statement is a little bit hard to read.

&gt; Source/WebCore/svg/SVGSVGElement.cpp:669
&gt; +            if (rootElement-&gt;m_currentViewElement)

Should we check if (rootElement-&gt;m_currentViewElement != viewElement) before connecting the rootElement to the same viewElement?

&gt; Source/WebCore/svg/SVGSVGElement.cpp:670
&gt; +                rootElement-&gt;m_currentViewElement-&gt;resetTargetElement();

Should we ASSERT(rootElement-&gt;m_currentViewElement-&gt;targetElement() == rootElement);?

&gt; Source/WebCore/svg/SVGSVGElement.h:164
&gt; +    WeakPtr&lt;SVGViewElement&gt; m_currentViewElement { nullptr };

Is there a SVGViewElement per SVGSVGElement? What happens if an HTML page references the same SVG but with different views, e.g. &quot;test.svg#customView1&quot;, &quot;test.svg#customView2&quot;? We may not optimize this case now and treat these URLs as different URLs. But this may change in the future.

&gt; LayoutTests/ChangeLog:8
&gt; +        Add a new reftest demonstrating that animations of SVG &lt;view&gt; elements now behave as expected.

Should we include a test case for referencing the same SVG from the same HTML but with different view elements?

&gt; LayoutTests/svg/custom/animation-on-view-element-expected.html:15
&gt; +  &lt;iframe style=&quot;border: none&quot; onload=&quot;loaded()&quot; width=&apos;200&apos; height=&apos;200&apos; src=&apos;resources/animation-on-view-element-final.svg&apos;&gt;&lt;/iframe&gt;

Why do we have to have two SVGs: one for the test page and one for the expected page? Can&apos;t we use one SVG with two different views: one covers the whole SVG and the other one animates till it cover the whole SVG?

&gt; LayoutTests/svg/custom/animation-on-view-element.html:17
&gt; +  &lt;iframe id=&quot;svgFrame&quot; style=&quot;border: none&quot; onload=&quot;loaded()&quot; width=&apos;200&apos; height=&apos;200&apos; src=&apos;resources/animation-on-view-element.svg#customView&apos;&gt;&lt;/iframe&gt;

Should not &lt;img src=&apos;resources/animation-on-view-element.svg#customView&apos;&gt; work the same way?

&gt; LayoutTests/svg/custom/resources/animation-on-view-element.svg:1
&gt; +&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;200&quot; height=&quot;200&quot; id=&quot;outermostSVG&quot;&gt;

What is the use of id=&quot;outermostSVG&quot;?

&gt; LayoutTests/svg/custom/resources/animation-on-view-element.svg:14
&gt; +    &lt;animate attributeName=&quot;viewBox&quot; dur=&quot;2s&quot; begin=&quot;1s&quot; to=&quot;0 0 200 200&quot; fill=&quot;freeze&quot;/&gt;

Another way to do this or maybe it can be used in another test is 

    &lt;set attributeName=&quot;viewBox&quot; to=&quot;0 0 200 200&quot;/&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567470</commentid>
    <comment_count>7</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-09-03 12:43:44 -0700</bug_when>
    <thetext>Should https://bugs.webkit.org/show_bug.cgi?id=196554 be duped to this one?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567484</commentid>
    <comment_count>8</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2019-09-03 13:30:35 -0700</bug_when>
    <thetext>(In reply to Said Abou-Hallawa from comment #6)
&gt; Welcome back Niko.
Thanks Said!

&gt; 
&gt; &gt; Source/WebCore/ChangeLog:10
&gt; &gt; +        visual effect. If a SVGSVGElement references a SVGViewElement, e.g. by loading an URL like
&gt; &gt; +        &quot;test.svg#customView&quot;, the custom view if parsed once in SVGSVGElement::scrollToFragment().
&gt; 
&gt; This statement is a little bit hard to read.
Indeed, and wrong as well, I will revisit this.

&gt; 
&gt; &gt; Source/WebCore/svg/SVGSVGElement.cpp:669
&gt; &gt; +            if (rootElement-&gt;m_currentViewElement)
&gt; 
&gt; Should we check if (rootElement-&gt;m_currentViewElement != viewElement) before
&gt; connecting the rootElement to the same viewElement?
To my current understanding, this should not be possible, as the scrollToFragment() path should only be executed once per page load.

I am currently preparing a few more tests to clarify all the corner cases and document the intended behavior. Let us rediscuss this, once I am confident, if it is possible to trigger this condition or not.

&gt; 
&gt; &gt; Source/WebCore/svg/SVGSVGElement.cpp:670
&gt; &gt; +                rootElement-&gt;m_currentViewElement-&gt;resetTargetElement();
&gt; 
&gt; Should we ASSERT(rootElement-&gt;m_currentViewElement-&gt;targetElement() ==
&gt; rootElement);?
Good idea.

 
&gt; &gt; Source/WebCore/svg/SVGSVGElement.h:164
&gt; &gt; +    WeakPtr&lt;SVGViewElement&gt; m_currentViewElement { nullptr };
&gt; 
&gt; Is there a SVGViewElement per SVGSVGElement?
The outermost SVG element of a document, could reference max. one SVGViewElement.

&gt; What happens if an HTML page
&gt; references the same SVG but with different views, e.g.
&gt; &quot;test.svg#customView1&quot;, &quot;test.svg#customView2&quot;?
These are separated documents, I see no issue?

&gt; We may not optimize this
&gt; case now and treat these URLs as different URLs. But this may change in the
&gt; future.
I see - you are worried that the same &lt;view&gt; element is referenced by multiple &quot;outermost SVG elements&quot;, steming from different documents.

This would affect a lot more places throughout the SVG codebase.

&gt; 
&gt; &gt; LayoutTests/ChangeLog:8
&gt; &gt; +        Add a new reftest demonstrating that animations of SVG &lt;view&gt; elements now behave as expected.
&gt; 
&gt; Should we include a test case for referencing the same SVG from the same
&gt; HTML but with different view elements?
Sure, I plan to add exactly a test like this. Also we should check the SVGViewSpec is correct, also in cases when the view element is animated.

&gt; 
&gt; &gt; LayoutTests/svg/custom/animation-on-view-element-expected.html:15
&gt; &gt; +  &lt;iframe style=&quot;border: none&quot; onload=&quot;loaded()&quot; width=&apos;200&apos; height=&apos;200&apos; src=&apos;resources/animation-on-view-element-final.svg&apos;&gt;&lt;/iframe&gt;
&gt; 
&gt; Why do we have to have two SVGs: one for the test page and one for the
&gt; expected page? Can&apos;t we use one SVG with two different views: one covers the
&gt; whole SVG and the other one animates till it cover the whole SVG?
Ahh, just stupidity :-) I uploaded the patch early, and did not carefully check the test yet - you are right, I will fix this.

&gt; 
&gt; &gt; LayoutTests/svg/custom/animation-on-view-element.html:17
&gt; &gt; +  &lt;iframe id=&quot;svgFrame&quot; style=&quot;border: none&quot; onload=&quot;loaded()&quot; width=&apos;200&apos; height=&apos;200&apos; src=&apos;resources/animation-on-view-element.svg#customView&apos;&gt;&lt;/iframe&gt;
&gt; 
&gt; Should not &lt;img src=&apos;resources/animation-on-view-element.svg#customView&apos;&gt;
&gt; work the same way?
From the visual point of view yes, but I have no access to the content document in that case, this only works using &lt;embed&gt; / &lt;object&gt; / &lt;iframe&gt;.
In this particular test, I am modifying the SVG currentTime attribute and thus need access to the content document from the host document.

&gt; 
&gt; &gt; LayoutTests/svg/custom/resources/animation-on-view-element.svg:1
&gt; &gt; +&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;200&quot; height=&quot;200&quot; id=&quot;outermostSVG&quot;&gt;
&gt; 
&gt; What is the use of id=&quot;outermostSVG&quot;?
This is a relict from the original test case which used begin=&quot;outermostSVG.click&quot; (just with a different naming convention for the id).

&gt; 
&gt; &gt; LayoutTests/svg/custom/resources/animation-on-view-element.svg:14
&gt; &gt; +    &lt;animate attributeName=&quot;viewBox&quot; dur=&quot;2s&quot; begin=&quot;1s&quot; to=&quot;0 0 200 200&quot; fill=&quot;freeze&quot;/&gt;
&gt; 
&gt; Another way to do this or maybe it can be used in another test is 
&gt; 
&gt;     &lt;set attributeName=&quot;viewBox&quot; to=&quot;0 0 200 200&quot;/&gt;
Sure, we should check this as well. I tried to stay as close as possible to the original test case referenced in this bug report.

Thanks Said for the review! More tests and checks will follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567488</commentid>
    <comment_count>9</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2019-09-03 13:39:17 -0700</bug_when>
    <thetext>*** Bug 196554 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567489</commentid>
    <comment_count>10</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2019-09-03 13:39:33 -0700</bug_when>
    <thetext>(In reply to Said Abou-Hallawa from comment #7)
&gt; Should https://bugs.webkit.org/show_bug.cgi?id=196554 be duped to this one?

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567913</commentid>
    <comment_count>11</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-09-04 16:47:53 -0700</bug_when>
    <thetext>Welcome back!!!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568085</commentid>
    <comment_count>12</comment_count>
      <attachid>378072</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2019-09-05 03:20:55 -0700</bug_when>
    <thetext>Created attachment 378072
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568086</commentid>
    <comment_count>13</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2019-09-05 03:21:46 -0700</bug_when>
    <thetext>(In reply to Daniel Bates from comment #11)
&gt; Welcome back!!!

Thanks, nice to hear from you again Daniel :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568087</commentid>
    <comment_count>14</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2019-09-05 03:22:53 -0700</bug_when>
    <thetext>Said, please check again. I&apos;ve added more assertions, incorporated your comments and added two more layout tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568091</commentid>
    <comment_count>15</comment_count>
      <attachid>378072</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-09-05 03:42:13 -0700</bug_when>
    <thetext>Comment on attachment 378072
Patch

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

&gt; Source/WebCore/svg/SVGSVGElement.cpp:670
&gt; +                ASSERT(rootElement-&gt;m_currentViewElement-&gt;targetElement());

Can this assert be removed given the one below?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568099</commentid>
    <comment_count>16</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2019-09-05 04:34:47 -0700</bug_when>
    <thetext>(In reply to Daniel Bates from comment #15)
&gt; Comment on attachment 378072 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=378072&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/svg/SVGSVGElement.cpp:670
&gt; &gt; +                ASSERT(rootElement-&gt;m_currentViewElement-&gt;targetElement());
&gt; 
&gt; Can this assert be removed given the one below?

In principle yes, I split them up to to differentiate between the &quot;targetElement is null&quot; and &quot;the targetElement differs from the rootElement&quot; (rootElement is already non-null).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568180</commentid>
    <comment_count>17</comment_count>
      <attachid>378072</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-09-05 11:05:53 -0700</bug_when>
    <thetext>Comment on attachment 378072
Patch

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

&gt; Source/WebCore/ChangeLog:12
&gt; +        The settings from the SVGViewElement are only pasrsed onco in SVGSVGElement::scrollToFragment(). Dynamic updates

onco -&gt; once

&gt; Source/WebCore/ChangeLog:14
&gt; +        the SVGSVGElement does not re-evaluates its viewBox. Fix that by introducing a link between SVGSVGElement

does not re-evaluates -&gt; does not re-evaluate

&gt; LayoutTests/ChangeLog:22
&gt; +        Verify that dynamic updates to the &lt;view&gt; element in the external SVG, are reflect in the SVGViewSpec API as well (SVGSVGElement::currentView).

This test is great but I think it deserves a separate patch because most of it is not related to this patch and can pass without it.

&gt; LayoutTests/svg/dom/SVGViewSpec-multiple-views.html:124
&gt; +    iframeElement.contentDocument.documentElement.getElementById(&quot;view2&quot;).setAttribute(&quot;viewBox&quot;, &quot;10 10 30 30&quot;);
&gt; +
&gt; +    debug(&quot;&quot;);
&gt; +    debug(&quot;Check viewBox value after modification&quot;);
&gt; +    shouldBe(&quot;currentView.viewBox.baseVal.x&quot;, &quot;10&quot;);
&gt; +    shouldBe(&quot;currentView.viewBox.baseVal.y&quot;, &quot;10&quot;);
&gt; +    shouldBe(&quot;currentView.viewBox.baseVal.width&quot;, &quot;30&quot;);
&gt; +    shouldBe(&quot;currentView.viewBox.baseVal.height&quot;, &quot;30&quot;);
&gt; +    shouldBeEqualToString(&quot;currentView.viewBoxString&quot;, &quot;10 10 30 30&quot;);

This section is the only one that calls setAttribute(&quot;viewBox&quot;). So I think the rest of this test can pass without this patch. I guess this is because of the missing SVGViewElement::svgAttributeChanged().

So I would suggest submitting this test in a separate patch before this one after removing this section. Then add this section the test in this patch or make a new test for setAttribute(&quot;viewBox&quot;).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568272</commentid>
    <comment_count>18</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2019-09-05 14:53:31 -0700</bug_when>
    <thetext>(In reply to Said Abou-Hallawa from comment #17)
&gt; Comment on attachment 378072 [details]
&gt; Patch
&gt; 
&gt; onco -&gt; once
&gt; does not re-evaluates -&gt; does not re-evaluate
Sorry for the typos, I will make sure to re-read the ChangeLog next time before submitting.
 
&gt; &gt; LayoutTests/ChangeLog:22
&gt; &gt; +        Verify that dynamic updates to the &lt;view&gt; element in the external SVG, are reflect in the SVGViewSpec API as well (SVGSVGElement::currentView).
&gt; 
&gt; This test is great but I think it deserves a separate patch because most of
&gt; it is not related to this patch and can pass without it.
Fair enough, I will split it into a separated ticket.
 
&gt; 
&gt; &gt; LayoutTests/svg/dom/SVGViewSpec-multiple-views.html:124
&gt; &gt; +    iframeElement.contentDocument.documentElement.getElementById(&quot;view2&quot;).setAttribute(&quot;viewBox&quot;, &quot;10 10 30 30&quot;);
&gt; &gt; +
&gt; &gt; +    debug(&quot;&quot;);
&gt; &gt; +    debug(&quot;Check viewBox value after modification&quot;);
&gt; &gt; +    shouldBe(&quot;currentView.viewBox.baseVal.x&quot;, &quot;10&quot;);
&gt; &gt; +    shouldBe(&quot;currentView.viewBox.baseVal.y&quot;, &quot;10&quot;);
&gt; &gt; +    shouldBe(&quot;currentView.viewBox.baseVal.width&quot;, &quot;30&quot;);
&gt; &gt; +    shouldBe(&quot;currentView.viewBox.baseVal.height&quot;, &quot;30&quot;);
&gt; &gt; +    shouldBeEqualToString(&quot;currentView.viewBoxString&quot;, &quot;10 10 30 30&quot;);
&gt; 
&gt; This section is the only one that calls setAttribute(&quot;viewBox&quot;). So I think
&gt; the rest of this test can pass without this patch. I guess this is because
&gt; of the missing SVGViewElement::svgAttributeChanged().
Sure! The intention of the test was to convince myself, that the loading of external SVGs with fragment identifiers works as intended (no reloads, only scrollToAnchor() calls).

&gt; So I would suggest submitting this test in a separate patch before this one
&gt; after removing this section. Then add this section the test in this patch or
&gt; make a new test for setAttribute(&quot;viewBox&quot;).

Okay, will take care of this tomorrow. Thanks for the quick review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568422</commentid>
    <comment_count>19</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2019-09-06 00:57:47 -0700</bug_when>
    <thetext>(In reply to Nikolas Zimmermann from comment #18)
&gt; &gt; This test is great but I think it deserves a separate patch because most of
&gt; &gt; it is not related to this patch and can pass without it.
&gt; Fair enough, I will split it into a separated ticket.

Filed https://bugs.webkit.org/show_bug.cgi?id=201536.
Will update this patch once the ticket is done.

P.S. Whom shall I mail to regain commiter rights? My Subversion account is disabled for sure. For reviewer status it is too early, still need to fix a few more issues and do unofficial reviews :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568516</commentid>
    <comment_count>20</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2019-09-06 08:23:36 -0700</bug_when>
    <thetext>(In reply to Nikolas Zimmermann from comment #19)
&gt; P.S. Whom shall I mail to regain commiter rights? My Subversion account is
&gt; disabled for sure. For reviewer status it is too early, still need to fix a
&gt; few more issues and do unofficial reviews :-)
Never mind, I found all information on https://webkit.org/commit-and-review-policy/.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569641</commentid>
    <comment_count>21</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2019-09-10 13:35:49 -0700</bug_when>
    <thetext>Will upload a new patch tomorrow morning, now that the SVGViewSpec test landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569663</commentid>
    <comment_count>22</comment_count>
      <attachid>378490</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2019-09-10 14:16:55 -0700</bug_when>
    <thetext>Created attachment 378490
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570284</commentid>
    <comment_count>23</comment_count>
      <attachid>378490</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-09-12 10:00:25 -0700</bug_when>
    <thetext>Comment on attachment 378490
Patch

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

&gt; Source/WebCore/svg/SVGSVGElement.cpp:671
&gt; +                ASSERT(rootElement-&gt;m_currentViewElement-&gt;targetElement());
&gt; +                ASSERT(rootElement-&gt;m_currentViewElement-&gt;targetElement() == rootElement);

I think the second assertion is sufficient since at this point we are sure rootElement != nullptr.

&gt; Source/WebCore/svg/SVGSVGElement.cpp:678
&gt; +            if (!rootElement-&gt;m_currentViewElement || rootElement-&gt;m_currentViewElement != viewElement)

The first clause is not needed. We know that viewElement != nullptr so if rootElement-&gt;m_currentViewElement == nullptr, rootElement-&gt;m_currentViewElement != viewElement will be true.

&gt; Source/WebCore/svg/SVGSVGElement.cpp:680
&gt; +            rootElement-&gt;m_currentViewElement-&gt;setTargetElement(*rootElement);

I think this statement should be moved under the previous if-statement. If we are not setting rootElement-&gt;m_currentViewElement to a new value, then the target element of the rootElement-&gt;m_currentViewElement should be equal to rootElement. In fact this what we assert a few lines above.

&gt; Source/WebCore/svg/SVGSVGElement.h:164
&gt; +    WeakPtr&lt;SVGViewElement&gt; m_currentViewElement { nullptr };

Why is this a WeakPtr? My understanding is SVGSVGElement should own its current view so there should an ownership relation from SVGSVGElement to SVGViewElement. Even in the new code, SVGSVGElement is the one that controls the life cycle of both SVGSVGElement::m_currentViewElement and SVGViewElement::m_targetElement.

SVGSVGElement::m_currentViewElement is changed here:

    rootElement-&gt;m_currentViewElement = makeWeakPtr(viewElement); 

SVGViewElement::m_targetElement is changed here:

    rootElement-&gt;m_currentViewElement-&gt;resetTargetElement();

and

    rootElement-&gt;m_currentViewElement-&gt;setTargetElement(*rootElement);

On contrary to this SVGViewElement does not change any of these pointers. So I think this should be RefPtr while SVGViewElement::m_targetElement should stay WeakPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570545</commentid>
    <comment_count>24</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2019-09-13 03:38:05 -0700</bug_when>
    <thetext>(In reply to Said Abou-Hallawa from comment #23)
&gt; Comment on attachment 378490 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=378490&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/svg/SVGSVGElement.cpp:671
&gt; &gt; +                ASSERT(rootElement-&gt;m_currentViewElement-&gt;targetElement());
&gt; &gt; +                ASSERT(rootElement-&gt;m_currentViewElement-&gt;targetElement() == rootElement);
&gt; 
&gt; I think the second assertion is sufficient since at this point we are sure
&gt; rootElement != nullptr.
Agreed, that alone is enough to be sure that targetElement() was null if the assertion fires.

&gt; &gt; Source/WebCore/svg/SVGSVGElement.cpp:678
&gt; &gt; +            if (!rootElement-&gt;m_currentViewElement || rootElement-&gt;m_currentViewElement != viewElement)
&gt; 
&gt; The first clause is not needed. We know that viewElement != nullptr so if
&gt; rootElement-&gt;m_currentViewElement == nullptr,
&gt; rootElement-&gt;m_currentViewElement != viewElement will be true.
Sure, I just found it easier to read, but I can change it you like, I do not have a strong opinion.
 
&gt; &gt; Source/WebCore/svg/SVGSVGElement.cpp:680
&gt; &gt; +            rootElement-&gt;m_currentViewElement-&gt;setTargetElement(*rootElement);
&gt; 
&gt; I think this statement should be moved under the previous if-statement. If
&gt; we are not setting rootElement-&gt;m_currentViewElement to a new value, then
&gt; the target element of the rootElement-&gt;m_currentViewElement should be equal
&gt; to rootElement. In fact this what we assert a few lines above.
Good catch, that was the initial intention and got lost in refactoring.
 
&gt; &gt; Source/WebCore/svg/SVGSVGElement.h:164
&gt; &gt; +    WeakPtr&lt;SVGViewElement&gt; m_currentViewElement { nullptr };
&gt; 
&gt; Why is this a WeakPtr? My understanding is SVGSVGElement should own its
&gt; current view so there should an ownership relation from SVGSVGElement to
&gt; SVGViewElement. Even in the new code, SVGSVGElement is the one that controls
&gt; the life cycle of both SVGSVGElement::m_currentViewElement and
&gt; SVGViewElement::m_targetElement.
&gt; 
&gt; SVGSVGElement::m_currentViewElement is changed here:
&gt; 
&gt;     rootElement-&gt;m_currentViewElement = makeWeakPtr(viewElement); 
&gt; 
&gt; SVGViewElement::m_targetElement is changed here:
&gt; 
&gt;     rootElement-&gt;m_currentViewElement-&gt;resetTargetElement();
&gt; 
&gt; and
&gt; 
&gt;     rootElement-&gt;m_currentViewElement-&gt;setTargetElement(*rootElement);
&gt; 
&gt; On contrary to this SVGViewElement does not change any of these pointers. So
&gt; I think this should be RefPtr while SVGViewElement::m_targetElement should
&gt; stay WeakPtr.
I initially chose WeakPtr for both to a) avoid dangling pointers and b) do not potentially introduce refcounting cycles. But I agree there is no risk in changing to RefPtr and it clarifies the ownership situation.

I will make the changes and upload a new patch, thanks Said!
Feels good to receive valuable comments! :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570549</commentid>
    <comment_count>25</comment_count>
      <attachid>378722</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2019-09-13 04:21:01 -0700</bug_when>
    <thetext>Created attachment 378722
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570624</commentid>
    <comment_count>26</comment_count>
      <attachid>378722</attachid>
    <who name="EWS">ews-feeder</who>
    <bug_when>2019-09-13 10:36:39 -0700</bug_when>
    <thetext>Comment on attachment 378722
Patch

Rejecting attachment 378722 from commit-queue.

zimmermann@kde.org does not have committer permissions according to https://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/config/contributors.json.

- If you do not have committer rights please read http://webkit.org/coding/contributing.html for instructions on how to use bugzilla flags.

- If you have committer rights please correct the error in Tools/Scripts/webkitpy/common/config/contributors.json by adding yourself to the file (no review needed).  The commit-queue restarts itself every 2 hours.  After restart the commit-queue will correctly respect your committer rights.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570625</commentid>
    <comment_count>27</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2019-09-13 10:38:44 -0700</bug_when>
    <thetext>Thanks a lot Said.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570639</commentid>
    <comment_count>28</comment_count>
      <attachid>378722</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-13 11:21:20 -0700</bug_when>
    <thetext>Comment on attachment 378722
Patch

Clearing flags on attachment: 378722

Committed r249843: &lt;https://trac.webkit.org/changeset/249843&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570640</commentid>
    <comment_count>29</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-13 11:21:22 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570641</commentid>
    <comment_count>30</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-13 11:22:38 -0700</bug_when>
    <thetext>&lt;rdar://problem/55346015&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377887</attachid>
            <date>2019-09-03 04:21:37 -0700</date>
            <delta_ts>2019-09-05 03:20:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94469-20190903132136.patch</filename>
            <type>text/plain</type>
            <size>12891</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5Mzc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTllYmQ5YTFjM2JhMGQw
ZWQ2NDc5M2Q0MjBkNzlkN2NlYjdiODhjNC4uNWEwNjZhOWU2ODIzMzA1NjQ2ZjliNzI4OGE2ZjBj
MWQ0MDVmY2ZiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE5LTA5LTAzICBOaWtv
bGFzIFppbW1lcm1hbm4gIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisKKyAgICAgICAgU01JTCBhbmlt
YXRpb25zIG9mIFNWRyA8dmlldz4gZWxlbWVudCBoYXZlIG5vIGVmZmVjdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ0NjkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTTUlMIGFuaW1hdGlvbnMgb2YgdGhl
IGF0dHJpYnV0ZXMgYXNzb2NpYXRlZCB3aXRoIFNWR1ZpZXdFbGVtZW50IHdvcmtzIGZpbmUsIGJ1
dCB3aXRob3V0IGFueQorICAgICAgICB2aXN1YWwgZWZmZWN0LiBJZiBhIFNWR1NWR0VsZW1lbnQg
cmVmZXJlbmNlcyBhIFNWR1ZpZXdFbGVtZW50LCBlLmcuIGJ5IGxvYWRpbmcgYW4gVVJMIGxpa2UK
KyAgICAgICAgInRlc3Quc3ZnI2N1c3RvbVZpZXciLCB0aGUgY3VzdG9tIHZpZXcgaWYgcGFyc2Vk
IG9uY2UgaW4gU1ZHU1ZHRWxlbWVudDo6c2Nyb2xsVG9GcmFnbWVudCgpLgorICAgICAgICBJZiBh
bnkgYXR0cmlidXRlcyBvZiB0aGUgU1ZHVmlld0VsZW1lbnQgY2hhbmdlIGR1cmluZyB0aGUgbGlm
ZXRpbWUgb2YgdGhlIGRvY3VtZW50LCB0aGVzZQorICAgICAgICBjaGFuZ2VzIGFyZSBub3QgcHJv
cGFnYXRlZC4gRml4IHRoYXQsIGJ5IGludHJvZHVjaW5nIGEgZG91YmxlIGxpbmsgYmV0d2VlbiBT
VkdTVkdFbGVtZW50CisgICAgICAgIGFuZCBTVkdWaWV3RWxlbWVudCBieSB1dGlsaXppbmcgV2Vh
a1B0cnMuIFRoZSBTVkdTVkdFbGVtZW50IG5vdyByZW1lbWJlcnMgdGhlIFNWR1ZpZXdFbGVtZW50
CisgICAgICAgIHRoYXQgaXMgdXNlZCwgYW5kIHRoZSBTVkdWaWV3RWxlbWVudCBrbm93cyBhYm91
dCB0aGUgU1ZHU1ZHRWxlbWVudCB0aGF0IHJlZmVyZW5jZXMgaXQuIFByb3BlcnR5CisgICAgICAg
IGNoYW5nZXMgZnJvbSBTVkdWaWV3RWxlbWVudCBhcmUgbm93IGNvcnJlY3RseSBkaXNwYXRjaGVk
IHRvIHRoZSBTVkdTVkdFbGVtZW50OiB0aGUgY3VzdG9tIHZpZXdCb3gKKyAgICAgICAgLSBzdG9y
ZWQgaW4gU1ZHU1ZHRWxlbWVudCAtIGlzIHVwZGF0ZWQsIGFuZCBhIHZpc3VhbCB1cGRhdGUgaXMg
dHJpZ2dlcmVkLgorCisgICAgICAgIE5PVEU6IFRoaXMgaXMgbm90IGludGVuZGVkIGZvciBmaW5h
bCBsYW5kaW5nLCBtb3JlIHRlc3QgY292ZXJhZ2UgaXMgbmVlZGVkLiBXb3JraW5nIG9uIGl0IQor
CisgICAgICAgIFRlc3Q6IHN2Zy9jdXN0b20vYW5pbWF0aW9uLW9uLXZpZXctZWxlbWVudC5odG1s
CisKKyAgICAgICAgKiBzdmcvU1ZHU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdTVkdFbGVtZW50OjpzY3JvbGxUb0ZyYWdtZW50KTogTGluayB0YXJnZXQgU1ZHVmlld0VsZW1l
bnQgd2l0aCB0aGUgU1ZHU1ZHRWxlbWVudCBieSB3ZWFrIHBvaW50ZXJzLgorICAgICAgICAqIHN2
Zy9TVkdTVkdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1ZpZXdFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1ZpZXdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKTogQWRk
IG1pc3NpbmcgaW1wbGVtZW50YXRpb24sIHRyYWNrZWQgYnkgd2Via2l0Lm9yZy9iLzE5NjU1NC4K
KyAgICAgICAgQ29ycmVjdGx5IGhhbmRsZSBTVkdGaXRUb1ZpZXdCb3ggcHJvcGVydHkgY2hhbmdl
cy4gVXBkYXRlIHRoZSB2aWV3Qm94IHN0b3JlZCBpbiB0aGUgU1ZHU1ZHRWxlbWVudCwgdGhhdAor
ICAgICAgICByZWZlcmVuY2VzIHRoZSBTVkdWaWV3RWxlbWVudC4gQWZ0ZXJ3YXJkcyBpbnZhbGlk
YXRlIHRoZSByZW5kZXJlciBhc3NvY2lhdGVkIHdpdGggdGhlIFNWR1NWR0VsZW1lbnQsIHdoaWNo
CisgICAgICAgIHByb3Blcmx5IHRyaWdnZXJzIHZpc3VhbCB1cGRhdGVzLgorICAgICAgICAqIHN2
Zy9TVkdWaWV3RWxlbWVudC5oOgorCiAyMDE5LTA5LTAxICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1t
YXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW1dITFNMXSBSZXNvdXJjZXMgZG9uJ3Qgd29y
ayB3aGVuIG9ubHkgYSBzdWJzZXQgb2YgYSBiaW5kIGdyb3VwIGlzIHJlZmVyZW5jZWQgYnkgYSBz
aGFkZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAppbmRleCBjNTdjZmZjNTkxYWE4
N2QwNGE4NmQ1OTBlM2U2NTcwNDIwZGViOTJjLi41MDY2NmVjZDgxMGZiMTNiMmE5YjUzMmYxOWE2
M2U0MDRmNjg1OThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFpp
bW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAw
NSwgMjAwNiwgMjAxOSBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAq
IENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAxMCBSb2IgQnVp
cyA8YnVpc0BrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDE0IEFkb2JlIFN5c3RlbXMg
SW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtNjY2LDYgKzY2NiwxMiBAQCBi
b29sIFNWR1NWR0VsZW1lbnQ6OnNjcm9sbFRvRnJhZ21lbnQoY29uc3QgU3RyaW5nJiBmcmFnbWVu
dElkZW50aWZpZXIpCiAgICAgLy8gYXR0cmlidXRlcyBvbiB0aGUgY2xvc2VzdCBhbmNlc3RvciAi
c3ZnIiBlbGVtZW50LgogICAgIGlmIChhdXRvKiB2aWV3RWxlbWVudCA9IGZpbmRWaWV3QW5jaG9y
KGZyYWdtZW50SWRlbnRpZmllcikpIHsKICAgICAgICAgaWYgKGF1dG8qIHJvb3RFbGVtZW50ID0g
ZmluZFJvb3RBbmNob3Iodmlld0VsZW1lbnQpKSB7CisgICAgICAgICAgICBpZiAocm9vdEVsZW1l
bnQtPm1fY3VycmVudFZpZXdFbGVtZW50KQorICAgICAgICAgICAgICAgIHJvb3RFbGVtZW50LT5t
X2N1cnJlbnRWaWV3RWxlbWVudC0+cmVzZXRUYXJnZXRFbGVtZW50KCk7CisKKyAgICAgICAgICAg
IHJvb3RFbGVtZW50LT5tX2N1cnJlbnRWaWV3RWxlbWVudCA9IG1ha2VXZWFrUHRyKHZpZXdFbGVt
ZW50KTsKKyAgICAgICAgICAgIHJvb3RFbGVtZW50LT5tX2N1cnJlbnRWaWV3RWxlbWVudC0+c2V0
VGFyZ2V0RWxlbWVudCgqcm9vdEVsZW1lbnQpOworCiAgICAgICAgICAgICByb290RWxlbWVudC0+
aW5oZXJpdFZpZXdBdHRyaWJ1dGVzKCp2aWV3RWxlbWVudCk7CiAgICAgICAgICAgICBpZiAoYXV0
byogcmVuZGVyZXIgPSByb290RWxlbWVudC0+cmVuZGVyZXIoKSkKICAgICAgICAgICAgICAgICBS
ZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0
aW9uKCpyZW5kZXJlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaAppbmRleCA5ZWFjZDgw
OTFkYzExOTYxYTk2OTAxOTk3NjNmYzIwMjVkMjU3OGMwLi4yMDdkOWE0NTU2NmY4ODc3OGQwMDVh
ZjkyMGRkMDRlNTQ1ODcxZmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZH
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmgKQEAgLTM2
LDYgKzM2LDcgQEAgY2xhc3MgU1ZHTWF0cml4OwogY2xhc3MgU1ZHTnVtYmVyOwogY2xhc3MgU1ZH
UmVjdDsKIGNsYXNzIFNWR1RyYW5zZm9ybTsKK2NsYXNzIFNWR1ZpZXdFbGVtZW50OwogY2xhc3Mg
U1ZHVmlld1NwZWM7CiAKIGNsYXNzIFNWR1NWR0VsZW1lbnQgZmluYWwgOiBwdWJsaWMgU1ZHR3Jh
cGhpY3NFbGVtZW50LCBwdWJsaWMgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgcHVibGlj
IFNWR0ZpdFRvVmlld0JveCwgcHVibGljIFNWR1pvb21BbmRQYW4gewpAQCAtMTI3LDYgKzEyOCw4
IEBAIHB1YmxpYzoKICAgICBTVkdBbmltYXRlZExlbmd0aCYgd2lkdGhBbmltYXRlZCgpIHsgcmV0
dXJuIG1fd2lkdGg7IH0KICAgICBTVkdBbmltYXRlZExlbmd0aCYgaGVpZ2h0QW5pbWF0ZWQoKSB7
IHJldHVybiBtX2hlaWdodDsgfQogCisgICAgdm9pZCBpbmhlcml0Vmlld0F0dHJpYnV0ZXMoY29u
c3QgU1ZHVmlld0VsZW1lbnQmKTsKKwogcHJpdmF0ZToKICAgICBTVkdTVkdFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogICAgIHZpcnR1YWwgflNWR1NWR0VsZW1lbnQo
KTsKQEAgLTE0OSw3ICsxNTIsNiBAQCBwcml2YXRlOgogCiAgICAgQWZmaW5lVHJhbnNmb3JtIGxv
Y2FsQ29vcmRpbmF0ZVNwYWNlVHJhbnNmb3JtKFNWR0xvY2F0YWJsZTo6Q1RNU2NvcGUpIGNvbnN0
IG92ZXJyaWRlOwogICAgIFJlZlB0cjxGcmFtZT4gZnJhbWVGb3JDdXJyZW50U2NhbGUoKSBjb25z
dDsKLSAgICB2b2lkIGluaGVyaXRWaWV3QXR0cmlidXRlcyhjb25zdCBTVkdWaWV3RWxlbWVudCYp
OwogICAgIFJlZjxOb2RlTGlzdD4gY29sbGVjdEludGVyc2VjdGlvbk9yRW5jbG9zdXJlTGlzdChT
VkdSZWN0JiwgU1ZHRWxlbWVudCosIGJvb2wgKCpjaGVja0Z1bmN0aW9uKShTVkdFbGVtZW50Jiwg
U1ZHUmVjdCYpKTsKIAogICAgIFNWR1ZpZXdFbGVtZW50KiBmaW5kVmlld0FuY2hvcihjb25zdCBT
dHJpbmcmIGZyYWdtZW50SWRlbnRpZmllcikgY29uc3Q7CkBAIC0xNTksNiArMTYxLDcgQEAgcHJp
dmF0ZToKICAgICBib29sIG1fdXNlQ3VycmVudFZpZXcgeyBmYWxzZSB9OwogICAgIFJlZjxTTUlM
VGltZUNvbnRhaW5lcj4gbV90aW1lQ29udGFpbmVyOwogICAgIFJlZlB0cjxTVkdWaWV3U3BlYz4g
bV92aWV3U3BlYzsKKyAgICBXZWFrUHRyPFNWR1ZpZXdFbGVtZW50PiBtX2N1cnJlbnRWaWV3RWxl
bWVudCB7IG51bGxwdHIgfTsKICAgICBTdHJpbmcgbV9jdXJyZW50Vmlld0ZyYWdtZW50SWRlbnRp
ZmllcjsKIAogICAgIFJlZjxTVkdQb2ludD4gbV9jdXJyZW50VHJhbnNsYXRlIHsgU1ZHUG9pbnQ6
OmNyZWF0ZSgpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmNwcAppbmRleCAyNzMz
ODJjZTQwZjY4NmI4MGUzNmU5MzVhYmU2NTRiMmYyOWFjODcyLi42NjJmMDY1MjJlZWYxNzI3YjVj
ZjQ0MTA4OGFkYmY5YWI2YzIwZjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Vmlld0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5j
cHAKQEAgLTIyLDcgKzIyLDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTVkdW
aWV3RWxlbWVudC5oIgogCisjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2UuaCIKICNpbmNsdWRl
ICJTVkdOYW1lcy5oIgorI2luY2x1ZGUgIlNWR1NWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdT
dHJpbmdMaXN0LmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIApAQCAtNjEs
NCArNjMsMjQgQEAgdm9pZCBTVkdWaWV3RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYKICAgICBTVkdab29tQW5kUGFuOjpw
YXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiB9CiAKK3ZvaWQgU1ZHVmlld0VsZW1lbnQ6OnN2
Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCit7CisgICAg
Ly8gV2UgaWdub3JlIGNoYW5nZXMgdG8gU1ZHTmFtZXM6OnZpZXdUYXJnZXRBdHRyLCB3aGljaCBp
cyBkZXByZWNhdGVkIGFuZCB1bnVzZWQgaW4gV2ViQ29yZS4KKyAgICBpZiAoUHJvcGVydHlSZWdp
c3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpCisgICAgICAgIHJldHVybjsKKworICAg
IGlmIChTVkdGaXRUb1ZpZXdCb3g6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CisgICAg
ICAgIGlmIChtX3RhcmdldEVsZW1lbnQpIHsKKyAgICAgICAgICAgIG1fdGFyZ2V0RWxlbWVudC0+
aW5oZXJpdFZpZXdBdHRyaWJ1dGVzKCp0aGlzKTsKKyAgICAgICAgICAgIGlmIChhdXRvKiByZW5k
ZXJlciA9IG1fdGFyZ2V0RWxlbWVudC0+cmVuZGVyZXIoKSkKKyAgICAgICAgICAgICAgICBSZW5k
ZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9u
KCpyZW5kZXJlcik7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
U1ZHRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CisgICAgU1ZHRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7Cit9CisK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmgKaW5kZXggNTM4Zjg2NDQyNDM1OTFhMDQ1
NzdjMTU0OTQ0MTZmNjBiZTA3Yzc2Mi4uZGVhNWY1ZDMxMzY0NWI5NmJlZmE0MTU3ZGJhODkwNDA3
OThlMDNhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmgKQEAgLTI0LDYgKzI0LDcg
QEAKICNpbmNsdWRlICJTVkdFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZC5oIgogI2luY2x1ZGUgIlNWR0ZpdFRvVmlld0JveC5oIgorI2luY2x1ZGUgIlNW
R1NWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdTdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiU1ZH
Wm9vbUFuZFBhbi5oIgogCkBAIC0zOCw2ICszOSw4IEBAIHB1YmxpYzoKICAgICB1c2luZyBTVkdF
bGVtZW50OjpkZXJlZjsKIAogICAgIFJlZjxTVkdTdHJpbmdMaXN0PiB2aWV3VGFyZ2V0KCkgeyBy
ZXR1cm4gbV92aWV3VGFyZ2V0LmNvcHlSZWYoKTsgfQorICAgIHZvaWQgcmVzZXRUYXJnZXRFbGVt
ZW50KCkgeyBtX3RhcmdldEVsZW1lbnQgPSBudWxscHRyOyB9CisgICAgdm9pZCBzZXRUYXJnZXRF
bGVtZW50KGNvbnN0IFNWR1NWR0VsZW1lbnQmIHRhcmdldEVsZW1lbnQpIHsgbV90YXJnZXRFbGVt
ZW50ID0gbWFrZVdlYWtQdHIodGFyZ2V0RWxlbWVudCk7IH0KIAogcHJpdmF0ZToKICAgICBTVkdW
aWV3RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKQEAgLTQ1LDEzICs0
OCwxNCBAQCBwcml2YXRlOgogICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0
eU93bmVyUmVnaXN0cnk8U1ZHVmlld0VsZW1lbnQsIFNWR0VsZW1lbnQsIFNWR0V4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQsIFNWR0ZpdFRvVmlld0JveD47CiAgICAgY29uc3QgU1ZHUHJvcGVydHlS
ZWdpc3RyeSYgcHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVy
dHlSZWdpc3RyeTsgfQogCi0gICAgLy8gRklYTUUod2Via2l0Lm9yZy9iLzE5NjU1NCk6IHN2Z0F0
dHJpYnV0ZUNoYW5nZWQgbWlzc2luZy4KICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAogICAgIGJvb2wg
cmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIGZpbmFsIHsgcmV0dXJuIGZhbHNl
OyB9CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07
CiAgICAgUmVmPFNWR1N0cmluZ0xpc3Q+IG1fdmlld1RhcmdldCB7IFNWR1N0cmluZ0xpc3Q6OmNy
ZWF0ZSh0aGlzKSB9OworICAgIFdlYWtQdHI8U1ZHU1ZHRWxlbWVudD4gbV90YXJnZXRFbGVtZW50
IHsgbnVsbHB0ciB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDc2ZTQ5
ZmVhNmE3MzJlNzIyYTdhZWQxZjU0YmQ4YmJmYjliMmNhM2QuLjcyZWZhZmQwODY5ZjVlYWJhMTM2
ZGY3NjJlZGU0ZWVlNDQzYWQ4YTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxOS0wOS0wMyAg
Tmlrb2xhcyBaaW1tZXJtYW5uICA8emltbWVybWFubkBrZGUub3JnPgorCisgICAgICAgIFNNSUwg
YW5pbWF0aW9ucyBvZiBTVkcgPHZpZXc+IGVsZW1lbnQgaGF2ZSBubyBlZmZlY3QKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0NDY5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgbmV3IHJlZnRlc3Qg
ZGVtb25zdHJhdGluZyB0aGF0IGFuaW1hdGlvbnMgb2YgU1ZHIDx2aWV3PiBlbGVtZW50cyBub3cg
YmVoYXZlIGFzIGV4cGVjdGVkLgorCisgICAgICAgICogc3ZnL2N1c3RvbS9hbmltYXRpb24tb24t
dmlldy1lbGVtZW50LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN2Zy9jdXN0b20v
YW5pbWF0aW9uLW9uLXZpZXctZWxlbWVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvY3Vz
dG9tL3Jlc291cmNlcy9hbmltYXRpb24tb24tdmlldy1lbGVtZW50LWZpbmFsLnN2ZzogQWRkZWQu
CisgICAgICAgICogc3ZnL2N1c3RvbS9yZXNvdXJjZXMvYW5pbWF0aW9uLW9uLXZpZXctZWxlbWVu
dC5zdmc6IEFkZGVkLgorCiAyMDE5LTA5LTAxICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVs
ZEBhcHBsZS5jb20+CiAKICAgICAgICAgW1dITFNMXSBSZXNvdXJjZXMgZG9uJ3Qgd29yayB3aGVu
IG9ubHkgYSBzdWJzZXQgb2YgYSBiaW5kIGdyb3VwIGlzIHJlZmVyZW5jZWQgYnkgYSBzaGFkZXIK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vYW5pbWF0aW9uLW9uLXZpZXctZWxl
bWVudC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9hbmltYXRpb24tb24t
dmlldy1lbGVtZW50LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTYyYjZlMTUzOWU5YzFlYTZm
ZWQzMmRkNjczYjNhZjIxYjNiZjgwYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N2
Zy9jdXN0b20vYW5pbWF0aW9uLW9uLXZpZXctZWxlbWVudC1leHBlY3RlZC5odG1sCkBAIC0wLDAg
KzEsMTcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0Pgor
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKKworICAgICAgICBmdW5jdGlvbiBsb2FkZWQoKSB7CisgICAgICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICA8
aWZyYW1lIHN0eWxlPSJib3JkZXI6IG5vbmUiIG9ubG9hZD0ibG9hZGVkKCkiIHdpZHRoPScyMDAn
IGhlaWdodD0nMjAwJyBzcmM9J3Jlc291cmNlcy9hbmltYXRpb24tb24tdmlldy1lbGVtZW50LWZp
bmFsLnN2Zyc+PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdmcvY3VzdG9tL2FuaW1hdGlvbi1vbi12aWV3LWVsZW1lbnQuaHRtbCBiL0xheW91dFRl
c3RzL3N2Zy9jdXN0b20vYW5pbWF0aW9uLW9uLXZpZXctZWxlbWVudC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjNkZDRkYWExNTI4ZWQyOGYxNTc0NzkyNTJkMjFkY2M5NWQ2MzViNTUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL2FuaW1hdGlvbi1vbi12aWV3LWVsZW1lbnQuaHRt
bApAQCAtMCwwICsxLDE5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAg
PHNjcmlwdD4KKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKKyAgICAgICAgZnVuY3Rpb24gbG9hZGVkKCkgewor
ICAgICAgICAgICAgdmFyIHN2ZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdmdGcmFtZSIp
LmdldFNWR0RvY3VtZW50KCkuZG9jdW1lbnRFbGVtZW50OworICAgICAgICAgICAgc3ZnLnNldEN1
cnJlbnRUaW1lKDQpOyAvLyBQYXN0IGVuZCBvZiB0aGUgYW5pbWF0aW9uIGluIHRoZSBlbWJlZGRl
ZCBTVkcuCisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorICA8aWZyYW1lIGlkPSJzdmdGcmFtZSIgc3R5bGU9ImJvcmRlcjogbm9u
ZSIgb25sb2FkPSJsb2FkZWQoKSIgd2lkdGg9JzIwMCcgaGVpZ2h0PScyMDAnIHNyYz0ncmVzb3Vy
Y2VzL2FuaW1hdGlvbi1vbi12aWV3LWVsZW1lbnQuc3ZnI2N1c3RvbVZpZXcnPjwvaWZyYW1lPgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9yZXNv
dXJjZXMvYW5pbWF0aW9uLW9uLXZpZXctZWxlbWVudC1maW5hbC5zdmcgYi9MYXlvdXRUZXN0cy9z
dmcvY3VzdG9tL3Jlc291cmNlcy9hbmltYXRpb24tb24tdmlldy1lbGVtZW50LWZpbmFsLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kOWJjZjY0NjI4MWI2ZWQ1YzFkYjAzOGI2ZTE3ZDhiMTc2YzRmMzI3Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9yZXNvdXJjZXMvYW5pbWF0aW9u
LW9uLXZpZXctZWxlbWVudC1maW5hbC5zdmcKQEAgLTAsMCArMSwxMiBAQAorPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMDAiIGhlaWdodD0iMjAwIiB2aWV3
Qm94PSIwIDAgMjAwIDIwMCI+CisgIDxnIHN0eWxlPSJmaWxsOiBub25lOyBzdHJva2Utd2lkdGg6
IDI0OyBzdHJva2UtbGluZWNhcDogcm91bmQiPgorICAgIDxnIHN0eWxlPSJzdHJva2U6ICNjOWVj
YmEiPgorICAgICAgPGxpbmUgeDE9IjIwIiB5MT0iMjAiIHgyPSI3NSIgeTI9IjIwIi8+CisgICAg
ICA8bGluZSB4MT0iNDciIHkxPSIyMCIgeDI9IjQ3IiB5Mj0iOTQiLz4KKyAgICA8L2c+CisgICAg
PGcgc3R5bGU9InN0cm9rZTogI2IwZjJmNCI+CisgICAgICA8cGF0aCBzdHlsZT0ic3Ryb2tlLWxp
bmVqb2luOiByb3VuZCIgZD0ibSAxNjcuNSw3NiAxLDc0IC00NiwwIC0wLjUsLTc0Ii8+CisgICAg
ICA8cGF0aCBzdHlsZT0ic3Ryb2tlLWxpbmVqb2luOiBzcXVhcmUiIGQ9Im0gNzUsNzYsMCw3NCw0
NSwwIi8+CisgICAgPC9nPgorICA8L2c+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N2Zy9jdXN0b20vcmVzb3VyY2VzL2FuaW1hdGlvbi1vbi12aWV3LWVsZW1lbnQuc3ZnIGIvTGF5
b3V0VGVzdHMvc3ZnL2N1c3RvbS9yZXNvdXJjZXMvYW5pbWF0aW9uLW9uLXZpZXctZWxlbWVudC5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uM2U0MDhhMGU3NTg0OTQyYzI2MTI4NmMyMjdkODkxMjUxMGIwNGM1OAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vcmVzb3VyY2VzL2FuaW1h
dGlvbi1vbi12aWV3LWVsZW1lbnQuc3ZnCkBAIC0wLDAgKzEsMTYgQEAKKzxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCIgaWQ9Im91
dGVybW9zdFNWRyI+CisgIDxnIHN0eWxlPSJmaWxsOiBub25lOyBzdHJva2Utd2lkdGg6IDI0OyBz
dHJva2UtbGluZWNhcDogcm91bmQiPgorICAgIDxnIHN0eWxlPSJzdHJva2U6ICNjOWVjYmEiPgor
ICAgICAgPGxpbmUgeDE9IjIwIiB5MT0iMjAiIHgyPSI3NSIgeTI9IjIwIi8+CisgICAgICA8bGlu
ZSB4MT0iNDciIHkxPSIyMCIgeDI9IjQ3IiB5Mj0iOTQiLz4KKyAgICA8L2c+CisgICAgPGcgc3R5
bGU9InN0cm9rZTogI2IwZjJmNCI+CisgICAgICA8cGF0aCBzdHlsZT0ic3Ryb2tlLWxpbmVqb2lu
OiByb3VuZCIgZD0ibSAxNjcuNSw3NiAxLDc0IC00NiwwIC0wLjUsLTc0Ii8+CisgICAgICA8cGF0
aCBzdHlsZT0ic3Ryb2tlLWxpbmVqb2luOiBzcXVhcmUiIGQ9Im0gNzUsNzYsMCw3NCw0NSwwIi8+
CisgICAgPC9nPgorICA8L2c+CisKKyAgPHZpZXcgaWQ9ImN1c3RvbVZpZXciIHZpZXdCb3g9IjYw
IDg1IDEyMSA3NCI+CisgICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0idmlld0JveCIgZHVyPSIy
cyIgYmVnaW49IjFzIiB0bz0iMCAwIDIwMCAyMDAiIGZpbGw9ImZyZWV6ZSIvPgorICA8L3ZpZXc+
Cis8L3N2Zz4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378072</attachid>
            <date>2019-09-05 03:20:55 -0700</date>
            <delta_ts>2019-09-10 14:16:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94469-20190905122054.patch</filename>
            <type>text/plain</type>
            <size>29734</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5Mzc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTllYmQ5YTFjM2JhMGQw
ZWQ2NDc5M2Q0MjBkNzlkN2NlYjdiODhjNC4uYmEwZWFjNmQxZThiZDdkMzhiMjE4ZWM4ZTA2MGQ0
YzM5YTRiYzgwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE5LTA5LTA1ICBOaWtv
bGFzIFppbW1lcm1hbm4gIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisKKyAgICAgICAgU01JTCBhbmlt
YXRpb25zIG9mIFNWRyA8dmlldz4gZWxlbWVudCBoYXZlIG5vIGVmZmVjdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ0NjkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTTUlMIGFuaW1hdGlvbnMgb2YgdGhl
IGF0dHJpYnV0ZXMgYXNzb2NpYXRlZCB3aXRoIFNWR1ZpZXdFbGVtZW50IHdvcmsgZmluZSwgYnV0
IHdpdGhvdXQgYW55CisgICAgICAgIHZpc3VhbCBlZmZlY3QuIFdoZW4gbG9hZGluZyBhbiBTVkcg
ZG9jdW1lbnQgd2l0aCBhIGdpdmVuIGZyYWdtZW50IGlkZW50aWZpZXIgKGUuZy4gdGVzdC5zdmcj
Y3VzdG9tVmlldykKKyAgICAgICAgd2hlcmUgJ2N1c3RvbVZpZXcnIHJlZmVyZW5jZXMgdG8gYW4g
ZW1iZWRkZWQgU1ZHVmlld0VsZW1lbnQsIHRoZSB2aWV3Qm94L3ByZXNlcnZlQXNwZWN0UmF0aW8g
c2V0dGluZ3Mgc2hvdWxkCisgICAgICAgIGJlIHRha2VuIGZyb20gdGhlIFNWR1ZpZXdFbGVtZW50
LiBDdXJyZW50bHkgdGhlcmUgaXMgbm8gbGluayBiZXR3ZWVuIHRoZSBTVkdWaWV3RWxlbWVudCBh
bmQgdGhlIFNWR1NWR0VsZW1lbnQuCisgICAgICAgIFRoZSBzZXR0aW5ncyBmcm9tIHRoZSBTVkdW
aWV3RWxlbWVudCBhcmUgb25seSBwYXNyc2VkIG9uY28gaW4gU1ZHU1ZHRWxlbWVudDo6c2Nyb2xs
VG9GcmFnbWVudCgpLiBEeW5hbWljIHVwZGF0ZXMKKyAgICAgICAgb2YgdGhlICd2aWV3Qm94JyBh
bmQgJ3ByZXNlcnZlQXNwZWN0UmF0aW8nIGF0dHJpYnV0ZXMgb2YgdGhlIFNWR1ZpZXdFbGVtZW50
IHRodXMgaGF2ZSBubyB2aXN1YWwgZWZmZWN0LCBzaW5jZQorICAgICAgICB0aGUgU1ZHU1ZHRWxl
bWVudCBkb2VzIG5vdCByZS1ldmFsdWF0ZXMgaXRzIHZpZXdCb3guIEZpeCB0aGF0IGJ5IGludHJv
ZHVjaW5nIGEgbGluayBiZXR3ZWVuIFNWR1NWR0VsZW1lbnQKKyAgICAgICAgYW5kIFNWR1ZpZXdF
bGVtZW50LCB1dGlsaXppbmcgd2VhayBwb2ludGVycy4gUHJvcGVydHkgY2hhbmdlcyBmcm9tIFNW
R1ZpZXdFbGVtZW50IGFyZSBub3cgY29ycmVjdGx5IGRpc3BhdGNoZWQKKyAgICAgICAgdG8gdGhl
IFNWR1NWR0VsZW1lbnQ6IHRoZSBjdXN0b20gdmlld0JveCAtIHN0b3JlZCBpbiBTVkdTVkdFbGVt
ZW50IC0gaXMgdXBkYXRlZCBhbmQgYSB2aXN1YWwgdXBkYXRlIGlzIHRyaWdnZXJlZC4KKworICAg
ICAgICBUZXN0czogc3ZnL2N1c3RvbS9hbmltYXRpb24tb24tdmlldy1lbGVtZW50Lmh0bWwKKyAg
ICAgICAgICAgICAgIHN2Zy9jdXN0b20vbXVsdGlwbGUtdmlldy1lbGVtZW50cy5odG1sCisgICAg
ICAgICAgICAgICBzdmcvZG9tL1NWR1ZpZXdTcGVjLW11bHRpcGxlLXZpZXdzLmh0bWwKKworICAg
ICAgICAqIHN2Zy9TVkdTVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0Vs
ZW1lbnQ6OnNjcm9sbFRvRnJhZ21lbnQpOiBMaW5rIHRhcmdldCBTVkdWaWV3RWxlbWVudCB3aXRo
IHRoZSBTVkdTVkdFbGVtZW50IGJ5IHdlYWsgcG9pbnRlcnMuCisgICAgICAgICogc3ZnL1NWR1NW
R0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVmlld0VsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHVmlld0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOiBBZGQgbWlzc2lu
ZyBpbXBsZW1lbnRhdGlvbiwgdHJhY2tlZCBieSB3ZWJraXQub3JnL2IvMTk2NTU0LgorICAgICAg
ICBDb3JyZWN0bHkgaGFuZGxlIFNWR0ZpdFRvVmlld0JveCBwcm9wZXJ0eSBjaGFuZ2VzLiBVcGRh
dGUgdGhlIHZpZXdCb3ggc3RvcmVkIGluIHRoZSBTVkdTVkdFbGVtZW50LCB0aGF0CisgICAgICAg
IHJlZmVyZW5jZXMgdGhlIFNWR1ZpZXdFbGVtZW50LiBBZnRlcndhcmRzIGludmFsaWRhdGUgdGhl
IHJlbmRlcmVyIGFzc29jaWF0ZWQgd2l0aCB0aGUgU1ZHU1ZHRWxlbWVudCwgd2hpY2gKKyAgICAg
ICAgcHJvcGVybHkgdHJpZ2dlcnMgdmlzdWFsIHVwZGF0ZXMuCisgICAgICAgICogc3ZnL1NWR1Zp
ZXdFbGVtZW50Lmg6CisKIDIwMTktMDktMDEgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxk
QGFwcGxlLmNvbT4KIAogICAgICAgICBbV0hMU0xdIFJlc291cmNlcyBkb24ndCB3b3JrIHdoZW4g
b25seSBhIHN1YnNldCBvZiBhIGJpbmQgZ3JvdXAgaXMgcmVmZXJlbmNlZCBieSBhIHNoYWRlcgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCmluZGV4IGM1N2NmZmM1OTFhYTg3ZDA0YTg2
ZDU5MGUzZTY1NzA0MjBkZWI5MmMuLjgyZWI5ZmYzMDcyZGRmODcyNWU3ZTI3N2E1MDkzYTM3YTgx
YjczYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFu
biA8emltbWVybWFubkBrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2
LCAyMDE5IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDEwIFJvYiBCdWlzIDxidWlz
QGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQWRvYmUgU3lzdGVtcyBJbmNvcnBv
cmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC02NjYsNiArNjY2LDE5IEBAIGJvb2wgU1ZH
U1ZHRWxlbWVudDo6c2Nyb2xsVG9GcmFnbWVudChjb25zdCBTdHJpbmcmIGZyYWdtZW50SWRlbnRp
ZmllcikKICAgICAvLyBhdHRyaWJ1dGVzIG9uIHRoZSBjbG9zZXN0IGFuY2VzdG9yICJzdmciIGVs
ZW1lbnQuCiAgICAgaWYgKGF1dG8qIHZpZXdFbGVtZW50ID0gZmluZFZpZXdBbmNob3IoZnJhZ21l
bnRJZGVudGlmaWVyKSkgewogICAgICAgICBpZiAoYXV0byogcm9vdEVsZW1lbnQgPSBmaW5kUm9v
dEFuY2hvcih2aWV3RWxlbWVudCkpIHsKKyAgICAgICAgICAgIGlmIChyb290RWxlbWVudC0+bV9j
dXJyZW50Vmlld0VsZW1lbnQpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQocm9vdEVsZW1lbnQt
Pm1fY3VycmVudFZpZXdFbGVtZW50LT50YXJnZXRFbGVtZW50KCkpOworICAgICAgICAgICAgICAg
IEFTU0VSVChyb290RWxlbWVudC0+bV9jdXJyZW50Vmlld0VsZW1lbnQtPnRhcmdldEVsZW1lbnQo
KSA9PSByb290RWxlbWVudCk7CisKKyAgICAgICAgICAgICAgICAvLyBJZiB0aGUgdmlld0VsZW1l
bnQgaGFzIGNoYW5nZWQsIHJlbW92ZSB0aGUgbGluayBmcm9tIHRoZSBTVkdWaWV3RWxlbWVudCB0
byB0aGUgcHJldmlvdXNseSBzZWxlY3RlZCBTVkdTVkdFbGVtZW50LgorICAgICAgICAgICAgICAg
IGlmIChyb290RWxlbWVudC0+bV9jdXJyZW50Vmlld0VsZW1lbnQgIT0gdmlld0VsZW1lbnQpCisg
ICAgICAgICAgICAgICAgICAgIHJvb3RFbGVtZW50LT5tX2N1cnJlbnRWaWV3RWxlbWVudC0+cmVz
ZXRUYXJnZXRFbGVtZW50KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghcm9v
dEVsZW1lbnQtPm1fY3VycmVudFZpZXdFbGVtZW50IHx8IHJvb3RFbGVtZW50LT5tX2N1cnJlbnRW
aWV3RWxlbWVudCAhPSB2aWV3RWxlbWVudCkKKyAgICAgICAgICAgICAgICByb290RWxlbWVudC0+
bV9jdXJyZW50Vmlld0VsZW1lbnQgPSBtYWtlV2Vha1B0cih2aWV3RWxlbWVudCk7CisgICAgICAg
ICAgICByb290RWxlbWVudC0+bV9jdXJyZW50Vmlld0VsZW1lbnQtPnNldFRhcmdldEVsZW1lbnQo
KnJvb3RFbGVtZW50KTsKKwogICAgICAgICAgICAgcm9vdEVsZW1lbnQtPmluaGVyaXRWaWV3QXR0
cmlidXRlcygqdmlld0VsZW1lbnQpOwogICAgICAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0g
cm9vdEVsZW1lbnQtPnJlbmRlcmVyKCkpCiAgICAgICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3Vy
Y2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmgKaW5kZXggOWVhY2Q4MDkxZGMxMTk2MWE5Njkw
MTk5NzYzZmMyMDI1ZDI1NzhjMC4uMjA3ZDlhNDU1NjZmODg3NzhkMDA1YWY5MjBkZDA0ZTU0NTg3
MWZiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCkBAIC0zNiw2ICszNiw3IEBAIGNs
YXNzIFNWR01hdHJpeDsKIGNsYXNzIFNWR051bWJlcjsKIGNsYXNzIFNWR1JlY3Q7CiBjbGFzcyBT
VkdUcmFuc2Zvcm07CitjbGFzcyBTVkdWaWV3RWxlbWVudDsKIGNsYXNzIFNWR1ZpZXdTcGVjOwog
CiBjbGFzcyBTVkdTVkdFbGVtZW50IGZpbmFsIDogcHVibGljIFNWR0dyYXBoaWNzRWxlbWVudCwg
cHVibGljIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIHB1YmxpYyBTVkdGaXRUb1ZpZXdC
b3gsIHB1YmxpYyBTVkdab29tQW5kUGFuIHsKQEAgLTEyNyw2ICsxMjgsOCBAQCBwdWJsaWM6CiAg
ICAgU1ZHQW5pbWF0ZWRMZW5ndGgmIHdpZHRoQW5pbWF0ZWQoKSB7IHJldHVybiBtX3dpZHRoOyB9
CiAgICAgU1ZHQW5pbWF0ZWRMZW5ndGgmIGhlaWdodEFuaW1hdGVkKCkgeyByZXR1cm4gbV9oZWln
aHQ7IH0KIAorICAgIHZvaWQgaW5oZXJpdFZpZXdBdHRyaWJ1dGVzKGNvbnN0IFNWR1ZpZXdFbGVt
ZW50Jik7CisKIHByaXZhdGU6CiAgICAgU1ZHU1ZHRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiwgRG9jdW1lbnQmKTsKICAgICB2aXJ0dWFsIH5TVkdTVkdFbGVtZW50KCk7CkBAIC0xNDksNyAr
MTUyLDYgQEAgcHJpdmF0ZToKIAogICAgIEFmZmluZVRyYW5zZm9ybSBsb2NhbENvb3JkaW5hdGVT
cGFjZVRyYW5zZm9ybShTVkdMb2NhdGFibGU6OkNUTVNjb3BlKSBjb25zdCBvdmVycmlkZTsKICAg
ICBSZWZQdHI8RnJhbWU+IGZyYW1lRm9yQ3VycmVudFNjYWxlKCkgY29uc3Q7Ci0gICAgdm9pZCBp
bmhlcml0Vmlld0F0dHJpYnV0ZXMoY29uc3QgU1ZHVmlld0VsZW1lbnQmKTsKICAgICBSZWY8Tm9k
ZUxpc3Q+IGNvbGxlY3RJbnRlcnNlY3Rpb25PckVuY2xvc3VyZUxpc3QoU1ZHUmVjdCYsIFNWR0Vs
ZW1lbnQqLCBib29sICgqY2hlY2tGdW5jdGlvbikoU1ZHRWxlbWVudCYsIFNWR1JlY3QmKSk7CiAK
ICAgICBTVkdWaWV3RWxlbWVudCogZmluZFZpZXdBbmNob3IoY29uc3QgU3RyaW5nJiBmcmFnbWVu
dElkZW50aWZpZXIpIGNvbnN0OwpAQCAtMTU5LDYgKzE2MSw3IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtX3VzZUN1cnJlbnRWaWV3IHsgZmFsc2UgfTsKICAgICBSZWY8U01JTFRpbWVDb250YWluZXI+
IG1fdGltZUNvbnRhaW5lcjsKICAgICBSZWZQdHI8U1ZHVmlld1NwZWM+IG1fdmlld1NwZWM7Cisg
ICAgV2Vha1B0cjxTVkdWaWV3RWxlbWVudD4gbV9jdXJyZW50Vmlld0VsZW1lbnQgeyBudWxscHRy
IH07CiAgICAgU3RyaW5nIG1fY3VycmVudFZpZXdGcmFnbWVudElkZW50aWZpZXI7CiAKICAgICBS
ZWY8U1ZHUG9pbnQ+IG1fY3VycmVudFRyYW5zbGF0ZSB7IFNWR1BvaW50OjpjcmVhdGUoKSB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5jcHAKaW5kZXggMjczMzgyY2U0MGY2ODZiODBl
MzZlOTM1YWJlNjU0YjJmMjlhYzg3Mi4uNjYyZjA2NTIyZWVmMTcyN2I1Y2Y0NDEwODhhZGJmOWFi
NmMyMGYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuY3BwCkBAIC0yMiw3ICsy
Miw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU1ZHVmlld0VsZW1lbnQuaCIK
IAorI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlLmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIK
KyNpbmNsdWRlICJTVkdTVkdFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHU3RyaW5nTGlzdC5oIgog
I2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKQEAgLTYxLDQgKzYzLDI0IEBAIHZv
aWQgU1ZHVmlld0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUsIGNvbnN0IEF0b21TdHJpbmcmCiAgICAgU1ZHWm9vbUFuZFBhbjo6cGFyc2VBdHRyaWJ1dGUo
bmFtZSwgdmFsdWUpOwogfQogCit2b2lkIFNWR1ZpZXdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQoreworICAgIC8vIFdlIGlnbm9yZSBj
aGFuZ2VzIHRvIFNWR05hbWVzOjp2aWV3VGFyZ2V0QXR0ciwgd2hpY2ggaXMgZGVwcmVjYXRlZCBh
bmQgdW51c2VkIGluIFdlYkNvcmUuCisgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25B
dHRyaWJ1dGUoYXR0ck5hbWUpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoU1ZHRml0VG9W
aWV3Qm94Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgeworICAgICAgICBpZiAobV90YXJn
ZXRFbGVtZW50KSB7CisgICAgICAgICAgICBtX3RhcmdldEVsZW1lbnQtPmluaGVyaXRWaWV3QXR0
cmlidXRlcygqdGhpcyk7CisgICAgICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBtX3Rhcmdl
dEVsZW1lbnQtPnJlbmRlcmVyKCkpCisgICAgICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6
Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwor
ICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFNWR0VsZW1lbnQ6OnN2
Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOworICAgIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOworfQorCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdWaWV3RWxlbWVudC5oCmluZGV4IDUzOGY4NjQ0MjQzNTkxYTA0NTc3YzE1NDk0NDE2ZjYw
YmUwN2M3NjIuLmZlMzdlOTE3ODE1OTdiZDM3Y2M1MmUzZGQ1ZDhjMTYwYTRiYWJlYzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5oCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAi
U1ZHRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaCIK
ICNpbmNsdWRlICJTVkdGaXRUb1ZpZXdCb3guaCIKKyNpbmNsdWRlICJTVkdTVkdFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiU1ZHU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIlNWR1pvb21BbmRQYW4uaCIK
IApAQCAtMzksMTkgKzQwLDI0IEBAIHB1YmxpYzoKIAogICAgIFJlZjxTVkdTdHJpbmdMaXN0PiB2
aWV3VGFyZ2V0KCkgeyByZXR1cm4gbV92aWV3VGFyZ2V0LmNvcHlSZWYoKTsgfQogCisgICAgY29u
c3QgU1ZHU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0
RWxlbWVudC5nZXQoKTsgfQorICAgIHZvaWQgc2V0VGFyZ2V0RWxlbWVudChjb25zdCBTVkdTVkdF
bGVtZW50JiB0YXJnZXRFbGVtZW50KSB7IG1fdGFyZ2V0RWxlbWVudCA9IG1ha2VXZWFrUHRyKHRh
cmdldEVsZW1lbnQpOyB9CisgICAgdm9pZCByZXNldFRhcmdldEVsZW1lbnQoKSB7IG1fdGFyZ2V0
RWxlbWVudCA9IG51bGxwdHI7IH0KKwogcHJpdmF0ZToKICAgICBTVkdWaWV3RWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAogICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0
cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHVmlld0VsZW1lbnQsIFNWR0VsZW1lbnQs
IFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIFNWR0ZpdFRvVmlld0JveD47CiAgICAgY29u
c3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQogCi0gICAgLy8gRklYTUUod2Via2l0Lm9yZy9i
LzE5NjU1NCk6IHN2Z0F0dHJpYnV0ZUNoYW5nZWQgbWlzc2luZy4KICAgICB2b2lkIHBhcnNlQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJikgZmluYWw7Cisg
ICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlk
ZTsKIAogICAgIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIGZpbmFs
IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdp
c3RyeSB7ICp0aGlzIH07CiAgICAgUmVmPFNWR1N0cmluZ0xpc3Q+IG1fdmlld1RhcmdldCB7IFNW
R1N0cmluZ0xpc3Q6OmNyZWF0ZSh0aGlzKSB9OworICAgIFdlYWtQdHI8U1ZHU1ZHRWxlbWVudD4g
bV90YXJnZXRFbGVtZW50IHsgbnVsbHB0ciB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDc2ZTQ5ZmVhNmE3MzJlNzIyYTdhZWQxZjU0YmQ4YmJmYjliMmNhM2QuLjViYjM5
ZjVjNDA3NDk2YzVmODdhZTQ3NzZlMzY0ZDNjNjMwN2Y5MzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBA
QAorMjAxOS0wOS0wNSAgTmlrb2xhcyBaaW1tZXJtYW5uICA8emltbWVybWFubkBrZGUub3JnPgor
CisgICAgICAgIFNNSUwgYW5pbWF0aW9ucyBvZiBTVkcgPHZpZXc+IGVsZW1lbnQgaGF2ZSBubyBl
ZmZlY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0
NDY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
IG5ldyBsYXlvdXQgdGVzdHMgY292ZXJpbmcgdGhlIFNWRyA8dmlldz4gZWxlbWVudCwgdGhlIFNW
R1ZpZXdTcGVjIEFQSS4gRHluYW1pYyBtb2RpZmljYXRpb25zIG9mIHRoZSA8dmlldz4gZWxlbWVu
dAorICAgICAgICBhcmUgbm93IGNhdXNpbmcgdmlzdWFsIHVwZGF0ZXMsIGFzIGV4cGVjdGVkLiBC
ZWZvcmUgYW55IG1vZGlmaWNhdGlvbnMgZGlkIG5vIGNhdXNlIGFueSB2aXNpYmxlIGVmZmVjdCwg
YXMgdGhlIFNWR1NWR0VsZW1lbnQKKyAgICAgICAgd2FzIG5ldmVyIGluZm9ybWVkIGFib3V0IHRo
ZSBjaGFuZ2VzIG9mIHRoZSB2aWV3Qm94LgorCisgICAgICAgICogc3ZnL2N1c3RvbS9hbmltYXRp
b24tb24tdmlldy1lbGVtZW50LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN2Zy9j
dXN0b20vYW5pbWF0aW9uLW9uLXZpZXctZWxlbWVudC5odG1sOiBBZGRlZC4gVGhpcyBpcyBhIG5l
dyByZWZ0ZXN0IGRlbW9uc3RyYXRpbmcgdGhhdCBhbmltYXRpb25zIG9mIFNWRyA8dmlldz4gZWxl
bWVudHMgbm93IGJlaGF2ZSBhcyBleHBlY3RlZC4KKyAgICAgICAgKiBzdmcvY3VzdG9tL211bHRp
cGxlLXZpZXctZWxlbWVudHMtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogc3ZnL2N1
c3RvbS9tdWx0aXBsZS12aWV3LWVsZW1lbnRzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN2Zy9j
dXN0b20vcmVzb3VyY2VzL2FuaW1hdGlvbi1vbi12aWV3LWVsZW1lbnQuc3ZnOiBBZGRlZC4KKyAg
ICAgICAgKiBzdmcvY3VzdG9tL3Jlc291cmNlcy9tdWx0aXBsZS12aWV3LWVsZW1lbnRzLnN2Zzog
QWRkZWQuCisgICAgICAgICogc3ZnL2RvbS9TVkdWaWV3U3BlYy1tdWx0aXBsZS12aWV3cy1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN2Zy9kb20vU1ZHVmlld1NwZWMtbXVsdGlwbGUt
dmlld3MuaHRtbDogQWRkZWQuIFZlcmlmaWVzIHRoYXQgbmF2aWdhdGluZyB0byBkaWZmZXJlbnQg
YW5jaG9ycyB3aXRoaW4gdGhlIHNhbWUgZXh0ZXJuYWwgU1ZHIGRvZXMgbm90IGNhdXNlIHJlbG9h
ZHMgLQorICAgICAgICBpbnN0ZWFkIHNjcm9sbFRvQW5jaG9yKCkgaXMgdXNlZCB3aGljaCBjYXVz
ZXMgYW4gaW4tcGxhY2UgbmF2aWdhdGlvbiBpbiB0aGUgc2FtZSBkb2N1bWVudCAodGhlIHRlc3Qg
dmVyaWZpZXMgdGhhdCB0aGUgU1ZHU1ZHRWxlbWVudCBpcyBwcmVzZXJ2ZWQgd2hlbgorICAgICAg
ICBuYXZpZ2F0aW5nIGJldHdlZW4gYW5jaG9ycywgd2hpY2ggaW5kaWNhdGVzIHRoYXQgbm8gbmV3
IGRvY3VtZW50IHdhcyBjcmVhdGVkKS4gVmVyaWZ5IHRoYXQgdGhlIFNWR1ZpZXdTcGVjIEFQSSB3
b3JrcyBhcyBpbnRlbmRlZCwgYWNyb3NzIG5hdmlnYXRpb25zLgorICAgICAgICBWZXJpZnkgdGhh
dCBkeW5hbWljIHVwZGF0ZXMgdG8gdGhlIDx2aWV3PiBlbGVtZW50IGluIHRoZSBleHRlcm5hbCBT
VkcsIGFyZSByZWZsZWN0IGluIHRoZSBTVkdWaWV3U3BlYyBBUEkgYXMgd2VsbCAoU1ZHU1ZHRWxl
bWVudDo6Y3VycmVudFZpZXcpLgorCiAyMDE5LTA5LTAxICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1t
YXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW1dITFNMXSBSZXNvdXJjZXMgZG9uJ3Qgd29y
ayB3aGVuIG9ubHkgYSBzdWJzZXQgb2YgYSBiaW5kIGdyb3VwIGlzIHJlZmVyZW5jZWQgYnkgYSBz
aGFkZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vYW5pbWF0aW9uLW9uLXZp
ZXctZWxlbWVudC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9hbmltYXRp
b24tb24tdmlldy1lbGVtZW50LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM2MGE4Y2M0N2Y0
YjU1NGRjZjc4ODMzMjk5NmQ3YWU2ZmMxODQ1OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3N2Zy9jdXN0b20vYW5pbWF0aW9uLW9uLXZpZXctZWxlbWVudC1leHBlY3RlZC5odG1sCkBA
IC0wLDAgKzEsMTcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2Ny
aXB0PgorICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKKworICAgICAgICBmdW5jdGlvbiBsb2FkZWQoKSB7CisgICAg
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorICA8aWZyYW1lIHN0eWxlPSJib3JkZXI6IG5vbmUiIG9ubG9hZD0ibG9hZGVkKCkiIHdpZHRo
PScyMDAnIGhlaWdodD0nMjAwJyBzcmM9J3Jlc291cmNlcy9hbmltYXRpb24tb24tdmlldy1lbGVt
ZW50LnN2Zyc+PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdmcvY3VzdG9tL2FuaW1hdGlvbi1vbi12aWV3LWVsZW1lbnQuaHRtbCBiL0xheW91dFRl
c3RzL3N2Zy9jdXN0b20vYW5pbWF0aW9uLW9uLXZpZXctZWxlbWVudC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjNkZDRkYWExNTI4ZWQyOGYxNTc0NzkyNTJkMjFkY2M5NWQ2MzViNTUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL2FuaW1hdGlvbi1vbi12aWV3LWVsZW1lbnQuaHRt
bApAQCAtMCwwICsxLDE5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAg
PHNjcmlwdD4KKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKKyAgICAgICAgZnVuY3Rpb24gbG9hZGVkKCkgewor
ICAgICAgICAgICAgdmFyIHN2ZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdmdGcmFtZSIp
LmdldFNWR0RvY3VtZW50KCkuZG9jdW1lbnRFbGVtZW50OworICAgICAgICAgICAgc3ZnLnNldEN1
cnJlbnRUaW1lKDQpOyAvLyBQYXN0IGVuZCBvZiB0aGUgYW5pbWF0aW9uIGluIHRoZSBlbWJlZGRl
ZCBTVkcuCisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorICA8aWZyYW1lIGlkPSJzdmdGcmFtZSIgc3R5bGU9ImJvcmRlcjogbm9u
ZSIgb25sb2FkPSJsb2FkZWQoKSIgd2lkdGg9JzIwMCcgaGVpZ2h0PScyMDAnIHNyYz0ncmVzb3Vy
Y2VzL2FuaW1hdGlvbi1vbi12aWV3LWVsZW1lbnQuc3ZnI2N1c3RvbVZpZXcnPjwvaWZyYW1lPgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9tdWx0
aXBsZS12aWV3LWVsZW1lbnRzLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9zdmcvY3VzdG9t
L211bHRpcGxlLXZpZXctZWxlbWVudHMtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yY2IzOTRh
NWRmMDNiYmI0MGZiYmYwZGMzMGNhMGVhY2IxYjI2ODljCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvc3ZnL2N1c3RvbS9tdWx0aXBsZS12aWV3LWVsZW1lbnRzLWV4cGVjdGVkLmh0bWwK
QEAgLTAsMCArMSwzNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxz
Y3JpcHQ+CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOworCisgICAgICAgIGZ1bmN0aW9uIGxvYWRlZCgpIHsKKyAg
ICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfQorICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHkgb25sb2FkPSJsb2FkZWQoKSI+CisgIDxkaXYgc3R5bGU9ImRpc3BsYXk6IGlubGluZSI+Cisg
ICAgPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMDAiIGhl
aWdodD0iMjAwIj4KKyAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIyMDAiIGhlaWdodD0i
MjAwIiBmaWxsPSJncmVlbiIvPgorICAgIDwvc3ZnPgorICA8L2Rpdj4KKyAgPGRpdiBzdHlsZT0i
ZGlzcGxheTogaW5saW5lIj4KKyAgICA8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiPgorICAgICAgPHJlY3QgeD0iMCIgeT0iMCIg
d2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIGZpbGw9ImdyZWVuIi8+CisgICAgPC9zdmc+CisgIDwv
ZGl2PgorICA8YnIvPgorICA8ZGl2IHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUiPgorICAgIDxzdmcg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIw
MCI+CisgICAgICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCIgZmls
bD0iZ3JlZW4iLz4KKyAgICA8L3N2Zz4KKyAgPC9kaXY+CisgIDxkaXYgc3R5bGU9ImRpc3BsYXk6
IGlubGluZSI+CisgICAgPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdp
ZHRoPSIyMDAiIGhlaWdodD0iMjAwIj4KKyAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIy
MDAiIGhlaWdodD0iMjAwIiBmaWxsPSJncmVlbiIvPgorICAgIDwvc3ZnPgorICA8L2Rpdj4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vbXVsdGlw
bGUtdmlldy1lbGVtZW50cy5odG1sIGIvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9tdWx0aXBsZS12
aWV3LWVsZW1lbnRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWM0ZGViODc2MjhkODViODRjMDc0MTczN2Jl
NmEwN2E3OGU2MGY1MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N2Zy9jdXN0b20v
bXVsdGlwbGUtdmlldy1lbGVtZW50cy5odG1sCkBAIC0wLDAgKzEsMjIgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0PgorICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworICAg
ICAgICB2YXIgZWxlbWVudHNMb2FkZWQgPSAwOworICAgICAgICBmdW5jdGlvbiBsb2FkZWQoKSB7
CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIgJiYgKytlbGVtZW50c0xvYWRlZCA9
PSA0KQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICB9
CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPGlmcmFtZSBpZD0ic3ZnRnJhbWUx
IiBzdHlsZT0iYm9yZGVyOiBub25lIiBvbmxvYWQ9ImxvYWRlZCgpIiB3aWR0aD0nMjAwJyBoZWln
aHQ9JzIwMCcgc3JjPSdyZXNvdXJjZXMvbXVsdGlwbGUtdmlldy1lbGVtZW50cy5zdmcjdmlldzEn
PjwvaWZyYW1lPgorICA8aWZyYW1lIGlkPSJzdmdGcmFtZTIiIHN0eWxlPSJib3JkZXI6IG5vbmUi
IG9ubG9hZD0ibG9hZGVkKCkiIHdpZHRoPScyMDAnIGhlaWdodD0nMjAwJyBzcmM9J3Jlc291cmNl
cy9tdWx0aXBsZS12aWV3LWVsZW1lbnRzLnN2ZyN2aWV3Mic+PC9pZnJhbWU+CisgIDxici8+Cisg
IDxpZnJhbWUgaWQ9InN2Z0ZyYW1lMyIgc3R5bGU9ImJvcmRlcjogbm9uZSIgb25sb2FkPSJsb2Fk
ZWQoKSIgd2lkdGg9JzIwMCcgaGVpZ2h0PScyMDAnIHNyYz0ncmVzb3VyY2VzL211bHRpcGxlLXZp
ZXctZWxlbWVudHMuc3ZnI3N2Z1ZpZXcodmlld0JveCg1IDAgMTAgMTUpO3RyYW5zZm9ybShzY2Fs
ZSgyIDIpKSknPjwvaWZyYW1lPgorICA8aWZyYW1lIGlkPSJzdmdGcmFtZTQiIHN0eWxlPSJib3Jk
ZXI6IG5vbmUiIG9ubG9hZD0ibG9hZGVkKCkiIHdpZHRoPScyMDAnIGhlaWdodD0nMjAwJyBzcmM9
J3Jlc291cmNlcy9tdWx0aXBsZS12aWV3LWVsZW1lbnRzLnN2ZyNzdmdWaWV3KHZpZXdCb3goMCAw
IDEwIDE1KTt0cmFuc2Zvcm0oc2NhbGUoMiAyKSk7cHJlc2VydmVBc3BlY3RSYXRpbyh4TWluWU1h
eCBtZWV0KSknPjwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3ZnL2N1c3RvbS9yZXNvdXJjZXMvYW5pbWF0aW9uLW9uLXZpZXctZWxlbWVudC5zdmcg
Yi9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3Jlc291cmNlcy9hbmltYXRpb24tb24tdmlldy1lbGVt
ZW50LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZGE5YTgwNmJhNWRkNjU3ZDBkNzM5NTg3NDdiZjg3M2E0Mzkz
MzYxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9yZXNvdXJjZXMv
YW5pbWF0aW9uLW9uLXZpZXctZWxlbWVudC5zdmcKQEAgLTAsMCArMSwxNiBAQAorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMDAiIGhlaWdodD0iMjAwIj4K
KyAgPGcgc3R5bGU9ImZpbGw6IG5vbmU7IHN0cm9rZS13aWR0aDogMjQ7IHN0cm9rZS1saW5lY2Fw
OiByb3VuZCI+CisgICAgPGcgc3R5bGU9InN0cm9rZTogI2M5ZWNiYSI+CisgICAgICA8bGluZSB4
MT0iMjAiIHkxPSIyMCIgeDI9Ijc1IiB5Mj0iMjAiLz4KKyAgICAgIDxsaW5lIHgxPSI0NyIgeTE9
IjIwIiB4Mj0iNDciIHkyPSI5NCIvPgorICAgIDwvZz4KKyAgICA8ZyBzdHlsZT0ic3Ryb2tlOiAj
YjBmMmY0Ij4KKyAgICAgIDxwYXRoIHN0eWxlPSJzdHJva2UtbGluZWpvaW46IHJvdW5kIiBkPSJt
IDE2Ny41LDc2IDEsNzQgLTQ2LDAgLTAuNSwtNzQiLz4KKyAgICAgIDxwYXRoIHN0eWxlPSJzdHJv
a2UtbGluZWpvaW46IHNxdWFyZSIgZD0ibSA3NSw3NiwwLDc0LDQ1LDAiLz4KKyAgICA8L2c+Cisg
IDwvZz4KKworICA8dmlldyBpZD0iY3VzdG9tVmlldyIgdmlld0JveD0iNjAgODUgMTIxIDc0Ij4K
KyAgICA8YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJ2aWV3Qm94IiBkdXI9IjJzIiBiZWdpbj0iMXMi
IHRvPSIwIDAgMjAwIDIwMCIgZmlsbD0iZnJlZXplIi8+CisgIDwvdmlldz4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9yZXNvdXJjZXMvbXVsdGlwbGUtdmlldy1l
bGVtZW50cy5zdmcgYi9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3Jlc291cmNlcy9tdWx0aXBsZS12
aWV3LWVsZW1lbnRzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMWJjODYxOGY0Y2ZjNDkwZmE3MjNlZjIwMmE1
MjY0NTg5MTMyNjY4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9y
ZXNvdXJjZXMvbXVsdGlwbGUtdmlldy1lbGVtZW50cy5zdmcKQEAgLTAsMCArMSw5IEBACis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIy
MDAiPgorICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTAiIGhlaWdodD0iMTAiIGZpbGw9Imdy
ZWVuIi8+CisgIDxyZWN0IHg9IjE1IiB5PSIwIiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIGZpbGw9
InJlZCIvPgorICA8cmVjdCB4PSI0MCIgeT0iMCIgd2lkdGg9IjIwIiBoZWlnaHQ9IjEwIiBmaWxs
PSJncmVlbiIvPgorICA8cmVjdCB4PSI2NSIgeT0iMCIgd2lkdGg9IjIwIiBoZWlnaHQ9IjE1IiBm
aWxsPSJyZWQiLz4KKworICA8dmlldyBpZD0idmlldzEiIHZpZXdCb3g9IjAgMCAxMCAxMCIvPgor
ICA8dmlldyBpZD0idmlldzIiIHZpZXdCb3g9IjQwIDAgMjAgMTAiIHByZXNlcnZlQXNwZWN0UmF0
aW89InhNaWRZTWF4IHNsaWNlIi8+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2
Zy9kb20vU1ZHVmlld1NwZWMtbXVsdGlwbGUtdmlld3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvc3ZnL2RvbS9TVkdWaWV3U3BlYy1tdWx0aXBsZS12aWV3cy1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYzcwMTkxNzA4NGNjODE4YThhODg1NjMxNzJiNjdiYWFkOGMxMmQ2YQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3N2Zy9kb20vU1ZHVmlld1NwZWMtbXVsdGlwbGUtdmlld3Mt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAzIEBACitUaGlzIHRlc3QgY2hlY2tzIHRoZSBTVkdW
aWV3U3BlYyBBUEkgdXNpbmcgbXVsdGlwbGUgZWxlbWVudHMKKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKKworTG9hZGluZyBleHRlcm5hbCBTVkcgLi4vY3VzdG9tL3Jlc291cmNlcy9t
dWx0aXBsZS12aWV3LWVsZW1lbnRzLnN2ZyN2aWV3MS4uLgorCisKK0NoZWNrIHRyYW5zZm9ybSB2
YWx1ZQorUEFTUyBjdXJyZW50Vmlldy50cmFuc2Zvcm1TdHJpbmcgaXMgIiIKK1BBU1MgY3VycmVu
dFZpZXcudHJhbnNmb3JtLm51bWJlck9mSXRlbXMgaXMgMAorCitDaGVjayB2aWV3VGFyZ2V0IHZh
bHVlCitQQVNTIGN1cnJlbnRWaWV3LnZpZXdUYXJnZXRTdHJpbmcgaXMgIiIKK1BBU1MgY3VycmVu
dFZpZXcudmlld1RhcmdldCBpcyBudWxsCisKK0NoZWNrIHpvb21BbmRQYW4gdmFsdWUKK1BBU1Mg
Y3VycmVudFZpZXcuem9vbUFuZFBhbiBpcyBTVkdWaWV3RWxlbWVudC5TVkdfWk9PTUFORFBBTl9N
QUdOSUZZCisKK0NoZWNrIHZpZXdCb3ggdmFsdWUKK1BBU1MgY3VycmVudFZpZXcudmlld0JveC5i
YXNlVmFsLnggaXMgMAorUEFTUyBjdXJyZW50Vmlldy52aWV3Qm94LmJhc2VWYWwueSBpcyAwCitQ
QVNTIGN1cnJlbnRWaWV3LnZpZXdCb3guYmFzZVZhbC53aWR0aCBpcyAxMAorUEFTUyBjdXJyZW50
Vmlldy52aWV3Qm94LmJhc2VWYWwuaGVpZ2h0IGlzIDEwCitQQVNTIGN1cnJlbnRWaWV3LnZpZXdC
b3hTdHJpbmcgaXMgIjAgMCAxMCAxMCIKKworQ2hlY2sgcHJlc2VydmVBc3BlY3RSYXRpbyB2YWx1
ZQorUEFTUyBjdXJyZW50Vmlldy5wcmVzZXJ2ZUFzcGVjdFJhdGlvU3RyaW5nIGlzICJ4TWlkWU1p
ZCBtZWV0IgorUEFTUyBjdXJyZW50Vmlldy5wcmVzZXJ2ZUFzcGVjdFJhdGlvLmJhc2VWYWwuYWxp
Z24gaXMgU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5TVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlE
WU1JRAorUEFTUyBjdXJyZW50Vmlldy5wcmVzZXJ2ZUFzcGVjdFJhdGlvLmJhc2VWYWwubWVldE9y
U2xpY2UgaXMgU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5TVkdfTUVFVE9SU0xJQ0VfTUVFVAorCitM
b2FkaW5nIGV4dGVybmFsIFNWRyAuLi9jdXN0b20vcmVzb3VyY2VzL211bHRpcGxlLXZpZXctZWxl
bWVudHMuc3ZnI3ZpZXcyLi4uCisKK1ZlcmlmeSB0aGF0IG5vIGxvYWQgd2FzIHBlZm9ybWVkLCBi
dXQgb25seSBhIGRpZmZlcmVudCB2aWV3IHdhcyBzZXQgb24gdGhlIHNhbWUgZG9jdW1lbnQKK1BB
U1MgaWZyYW1lRWxlbWVudC5jb250ZW50RG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50IGlzIGZpcnN0
RG9jdW1lbnRFbGVtZW50CisKK0NoZWNrIHRyYW5zZm9ybSB2YWx1ZQorUEFTUyBjdXJyZW50Vmll
dy50cmFuc2Zvcm1TdHJpbmcgaXMgIiIKK1BBU1MgY3VycmVudFZpZXcudHJhbnNmb3JtLm51bWJl
ck9mSXRlbXMgaXMgMAorCitDaGVjayB2aWV3VGFyZ2V0IHZhbHVlCitQQVNTIGN1cnJlbnRWaWV3
LnZpZXdUYXJnZXRTdHJpbmcgaXMgIiIKK1BBU1MgY3VycmVudFZpZXcudmlld1RhcmdldCBpcyBu
dWxsCisKK0NoZWNrIHpvb21BbmRQYW4gdmFsdWUKK1BBU1MgY3VycmVudFZpZXcuem9vbUFuZFBh
biBpcyBTVkdWaWV3RWxlbWVudC5TVkdfWk9PTUFORFBBTl9NQUdOSUZZCisKK0NoZWNrIHZpZXdC
b3ggdmFsdWUKK1BBU1MgY3VycmVudFZpZXcudmlld0JveC5iYXNlVmFsLnggaXMgNDAKK1BBU1Mg
Y3VycmVudFZpZXcudmlld0JveC5iYXNlVmFsLnkgaXMgMAorUEFTUyBjdXJyZW50Vmlldy52aWV3
Qm94LmJhc2VWYWwud2lkdGggaXMgMjAKK1BBU1MgY3VycmVudFZpZXcudmlld0JveC5iYXNlVmFs
LmhlaWdodCBpcyAxMAorUEFTUyBjdXJyZW50Vmlldy52aWV3Qm94U3RyaW5nIGlzICI0MCAwIDIw
IDEwIgorCitDaGVjayBwcmVzZXJ2ZUFzcGVjdFJhdGlvIHZhbHVlCitQQVNTIGN1cnJlbnRWaWV3
LnByZXNlcnZlQXNwZWN0UmF0aW9TdHJpbmcgaXMgInhNaWRZTWF4IHNsaWNlIgorUEFTUyBjdXJy
ZW50Vmlldy5wcmVzZXJ2ZUFzcGVjdFJhdGlvLmJhc2VWYWwuYWxpZ24gaXMgU1ZHUHJlc2VydmVB
c3BlY3RSYXRpby5TVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1BWAorUEFTUyBjdXJyZW50
Vmlldy5wcmVzZXJ2ZUFzcGVjdFJhdGlvLmJhc2VWYWwubWVldE9yU2xpY2UgaXMgU1ZHUHJlc2Vy
dmVBc3BlY3RSYXRpby5TVkdfTUVFVE9SU0xJQ0VfU0xJQ0UKKworVGVzdCBkeW5hbWljIG1vZGlm
aWNhdGlvbnMgb2YgdGhlICd2aWV3MicgZWxlbWVudAorCitDaGVjayB2aWV3Qm94IHZhbHVlIGFm
dGVyIG1vZGlmaWNhdGlvbgorUEFTUyBjdXJyZW50Vmlldy52aWV3Qm94LmJhc2VWYWwueCBpcyAx
MAorUEFTUyBjdXJyZW50Vmlldy52aWV3Qm94LmJhc2VWYWwueSBpcyAxMAorUEFTUyBjdXJyZW50
Vmlldy52aWV3Qm94LmJhc2VWYWwud2lkdGggaXMgMzAKK1BBU1MgY3VycmVudFZpZXcudmlld0Jv
eC5iYXNlVmFsLmhlaWdodCBpcyAzMAorUEFTUyBjdXJyZW50Vmlldy52aWV3Qm94U3RyaW5nIGlz
ICIxMCAxMCAzMCAzMCIKKworTG9hZGluZyBleHRlcm5hbCBTVkcgLi4vY3VzdG9tL3Jlc291cmNl
cy9tdWx0aXBsZS12aWV3LWVsZW1lbnRzLnN2ZyNzdmdWaWV3KHZpZXdCb3goMCAwIDEwIDE1KTt0
cmFuc2Zvcm0oc2NhbGUoMiAyKSk7cHJlc2VydmVBc3BlY3RSYXRpbyh4TWluWU1heCBtZWV0KSku
Li4KKworVmVyaWZ5IHRoYXQgbm8gbG9hZCB3YXMgcGVmb3JtZWQsIGJ1dCBvbmx5IGEgZGlmZmVy
ZW50IHZpZXcgd2FzIHNldCBvbiB0aGUgc2FtZSBkb2N1bWVudAorUEFTUyBpZnJhbWVFbGVtZW50
LmNvbnRlbnREb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgaXMgZmlyc3REb2N1bWVudEVsZW1lbnQK
KworQ2hlY2sgdHJhbnNmb3JtIHZhbHVlCitQQVNTIGN1cnJlbnRWaWV3LnRyYW5zZm9ybVN0cmlu
ZyBpcyAic2NhbGUoMiAyKSIKK1BBU1MgY3VycmVudFZpZXcudHJhbnNmb3JtLm51bWJlck9mSXRl
bXMgaXMgMQorUEFTUyBjdXJyZW50Vmlldy50cmFuc2Zvcm0uZ2V0SXRlbSgwKS50eXBlIGlzIFNW
R1RyYW5zZm9ybS5TVkdfVFJBTlNGT1JNX1NDQUxFCitQQVNTIGN1cnJlbnRWaWV3LnRyYW5zZm9y
bS5nZXRJdGVtKDApLmFuZ2xlIGlzIDAKK1BBU1MgbWF0cml4VG9TdHJpbmcoY3VycmVudFZpZXcu
dHJhbnNmb3JtLmdldEl0ZW0oMCkubWF0cml4KSBpcyAiWzIuMDAgMC4wMCAwLjAwIDIuMDAgMC4w
MCAwLjAwXSIKKworQ2hlY2sgdmlld1RhcmdldCB2YWx1ZQorUEFTUyBjdXJyZW50Vmlldy52aWV3
VGFyZ2V0U3RyaW5nIGlzICIiCitQQVNTIGN1cnJlbnRWaWV3LnZpZXdUYXJnZXQgaXMgbnVsbAor
CitDaGVjayB6b29tQW5kUGFuIHZhbHVlCitQQVNTIGN1cnJlbnRWaWV3Lnpvb21BbmRQYW4gaXMg
U1ZHVmlld0VsZW1lbnQuU1ZHX1pPT01BTkRQQU5fTUFHTklGWQorCitDaGVjayB2aWV3Qm94IHZh
bHVlCitQQVNTIGN1cnJlbnRWaWV3LnZpZXdCb3guYmFzZVZhbC54IGlzIDAKK1BBU1MgY3VycmVu
dFZpZXcudmlld0JveC5iYXNlVmFsLnkgaXMgMAorUEFTUyBjdXJyZW50Vmlldy52aWV3Qm94LmJh
c2VWYWwud2lkdGggaXMgMTAKK1BBU1MgY3VycmVudFZpZXcudmlld0JveC5iYXNlVmFsLmhlaWdo
dCBpcyAxNQorUEFTUyBjdXJyZW50Vmlldy52aWV3Qm94U3RyaW5nIGlzICIwIDAgMTAgMTUiCisK
K0NoZWNrIHByZXNlcnZlQXNwZWN0UmF0aW8gdmFsdWUKK1BBU1MgY3VycmVudFZpZXcucHJlc2Vy
dmVBc3BlY3RSYXRpb1N0cmluZyBpcyAieE1pbllNYXggbWVldCIKK1BBU1MgY3VycmVudFZpZXcu
cHJlc2VydmVBc3BlY3RSYXRpby5iYXNlVmFsLmFsaWduIGlzIFNWR1ByZXNlcnZlQXNwZWN0UmF0
aW8uU1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1JTllNQVgKK1BBU1MgY3VycmVudFZpZXcucHJl
c2VydmVBc3BlY3RSYXRpby5iYXNlVmFsLm1lZXRPclNsaWNlIGlzIFNWR1ByZXNlcnZlQXNwZWN0
UmF0aW8uU1ZHX01FRVRPUlNMSUNFX01FRVQKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvZG9tL1NW
R1ZpZXdTcGVjLW11bHRpcGxlLXZpZXdzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdmcvZG9tL1NWR1Zp
ZXdTcGVjLW11bHRpcGxlLXZpZXdzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmNiMTE2MzM5NWUwYjk5MmRl
M2JhZTcwYTNiZTRlNjgyYTJhMTBiYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N2
Zy9kb20vU1ZHVmlld1NwZWMtbXVsdGlwbGUtdmlld3MuaHRtbApAQCAtMCwwICsxLDE5NSBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJk
ZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVz
Y3JpcHRpb24oIlRoaXMgdGVzdCBjaGVja3MgdGhlIFNWR1ZpZXdTcGVjIEFQSSB1c2luZyBtdWx0
aXBsZSA8dmlldz4gZWxlbWVudHMiKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworZnVuY3Rpb24gY29tcGxldGVUZXN0KCkgeworICAg
IHZhciBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTsKKworICAgIHNj
cmlwdC5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfTsKKworICAgIHNj
cmlwdC5zcmMgPSAiLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI7CisgICAgZG9jdW1l
bnQuYm9keS5hcHBlbmRDaGlsZChzY3JpcHQpOworfQorCit2YXIgZXh0ZXJuYWxTVkdGaWxlTmFt
ZSA9ICIuLi9jdXN0b20vcmVzb3VyY2VzL211bHRpcGxlLXZpZXctZWxlbWVudHMuc3ZnIjsKKwor
ZnVuY3Rpb24gbWF0cml4VG9TdHJpbmcobWF0cml4KSB7CisgICAgcmV0dXJuICJbIiArIG1hdHJp
eC5hLnRvRml4ZWQoMikgKyAiICIgKyBtYXRyaXguYi50b0ZpeGVkKDIpICsgIiAiICsgbWF0cml4
LmMudG9GaXhlZCgyKSArICIgIiArIG1hdHJpeC5kLnRvRml4ZWQoMikgKyAiICIgKyBtYXRyaXgu
ZS50b0ZpeGVkKDIpICsgIiAiICsgbWF0cml4LmYudG9GaXhlZCgyKSArICJdIjsKK30KKwordmFy
IGZpcnN0RG9jdW1lbnRFbGVtZW50OworCitmdW5jdGlvbiB0ZXN0Rmlyc3RWaWV3RWxlbWVudCgp
IHsKKworICAgIGlmcmFtZUVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaWZyYW1l
Iik7CisgICAgY3VycmVudERvY3VtZW50RWxlbWVudCA9IGlmcmFtZUVsZW1lbnQuY29udGVudERv
Y3VtZW50LmRvY3VtZW50RWxlbWVudDsKKyAgICBmaXJzdERvY3VtZW50RWxlbWVudCA9IGN1cnJl
bnREb2N1bWVudEVsZW1lbnQ7CisgICAgY3VycmVudFZpZXcgPSBjdXJyZW50RG9jdW1lbnRFbGVt
ZW50LmN1cnJlbnRWaWV3OworCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJDaGVjayB0cmFu
c2Zvcm0gdmFsdWUiKTsKKyAgICBzaG91bGRCZUVtcHR5U3RyaW5nKCJjdXJyZW50Vmlldy50cmFu
c2Zvcm1TdHJpbmciKTsKKyAgICBzaG91bGRCZSgiY3VycmVudFZpZXcudHJhbnNmb3JtLm51bWJl
ck9mSXRlbXMiLCAiMCIpOworCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJDaGVjayB2aWV3
VGFyZ2V0IHZhbHVlIik7CisgICAgc2hvdWxkQmVFbXB0eVN0cmluZygiY3VycmVudFZpZXcudmll
d1RhcmdldFN0cmluZyIpOworICAgIHNob3VsZEJlTnVsbCgiY3VycmVudFZpZXcudmlld1Rhcmdl
dCIpOworCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJDaGVjayB6b29tQW5kUGFuIHZhbHVl
Iik7CisgICAgc2hvdWxkQmUoImN1cnJlbnRWaWV3Lnpvb21BbmRQYW4iLCAiU1ZHVmlld0VsZW1l
bnQuU1ZHX1pPT01BTkRQQU5fTUFHTklGWSIpOworCisgICAgZGVidWcoIiIpOworICAgIGRlYnVn
KCJDaGVjayB2aWV3Qm94IHZhbHVlIik7CisgICAgc2hvdWxkQmUoImN1cnJlbnRWaWV3LnZpZXdC
b3guYmFzZVZhbC54IiwgIjAiKTsKKyAgICBzaG91bGRCZSgiY3VycmVudFZpZXcudmlld0JveC5i
YXNlVmFsLnkiLCAiMCIpOworICAgIHNob3VsZEJlKCJjdXJyZW50Vmlldy52aWV3Qm94LmJhc2VW
YWwud2lkdGgiLCAiMTAiKTsKKyAgICBzaG91bGRCZSgiY3VycmVudFZpZXcudmlld0JveC5iYXNl
VmFsLmhlaWdodCIsICIxMCIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY3VycmVudFZp
ZXcudmlld0JveFN0cmluZyIsICIwIDAgMTAgMTAiKTsKKworICAgIGRlYnVnKCIiKTsKKyAgICBk
ZWJ1ZygiQ2hlY2sgcHJlc2VydmVBc3BlY3RSYXRpbyB2YWx1ZSIpOworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygiY3VycmVudFZpZXcucHJlc2VydmVBc3BlY3RSYXRpb1N0cmluZyIsICJ4TWlk
WU1pZCBtZWV0Iik7CisgICAgc2hvdWxkQmUoImN1cnJlbnRWaWV3LnByZXNlcnZlQXNwZWN0UmF0
aW8uYmFzZVZhbC5hbGlnbiIsICJTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLlNWR19QUkVTRVJWRUFT
UEVDVFJBVElPX1hNSURZTUlEIik7CisgICAgc2hvdWxkQmUoImN1cnJlbnRWaWV3LnByZXNlcnZl
QXNwZWN0UmF0aW8uYmFzZVZhbC5tZWV0T3JTbGljZSIsICJTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlv
LlNWR19NRUVUT1JTTElDRV9NRUVUIik7CisKKyAgICBuZXh0VmlldyA9ICIjdmlldzIiOworICAg
IGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiTG9hZGluZyBleHRlcm5hbCBTVkcgIiArIGV4dGVybmFs
U1ZHRmlsZU5hbWUgKyBuZXh0VmlldyArICIuLi4iKTsKKyAgICBkZWJ1ZygiIik7CisKKyAgICBp
ZnJhbWVFbGVtZW50LnNyYyA9IGV4dGVybmFsU1ZHRmlsZU5hbWUgKyBuZXh0VmlldzsKKyAgICB0
ZXN0U2Vjb25kVmlld0VsZW1lbnQoKTsKK30KKworZnVuY3Rpb24gdGVzdFNlY29uZFZpZXdFbGVt
ZW50KCkgeworCisgICAgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJp
ZnJhbWUiKTsKKyAgICBjdXJyZW50VmlldyA9IGlmcmFtZUVsZW1lbnQuY29udGVudERvY3VtZW50
LmRvY3VtZW50RWxlbWVudC5jdXJyZW50VmlldzsKKworICAgIGRlYnVnKCJWZXJpZnkgdGhhdCBu
byBsb2FkIHdhcyBwZWZvcm1lZCwgYnV0IG9ubHkgYSBkaWZmZXJlbnQgdmlldyB3YXMgc2V0IG9u
IHRoZSBzYW1lIGRvY3VtZW50Iik7CisgICAgc2hvdWxkQmUoImlmcmFtZUVsZW1lbnQuY29udGVu
dERvY3VtZW50LmRvY3VtZW50RWxlbWVudCIsICJmaXJzdERvY3VtZW50RWxlbWVudCIpOworCisg
ICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJDaGVjayB0cmFuc2Zvcm0gdmFsdWUiKTsKKyAgICBz
aG91bGRCZUVtcHR5U3RyaW5nKCJjdXJyZW50Vmlldy50cmFuc2Zvcm1TdHJpbmciKTsKKyAgICBz
aG91bGRCZSgiY3VycmVudFZpZXcudHJhbnNmb3JtLm51bWJlck9mSXRlbXMiLCAiMCIpOworCisg
ICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJDaGVjayB2aWV3VGFyZ2V0IHZhbHVlIik7CisgICAg
c2hvdWxkQmVFbXB0eVN0cmluZygiY3VycmVudFZpZXcudmlld1RhcmdldFN0cmluZyIpOworICAg
IHNob3VsZEJlTnVsbCgiY3VycmVudFZpZXcudmlld1RhcmdldCIpOworCisgICAgZGVidWcoIiIp
OworICAgIGRlYnVnKCJDaGVjayB6b29tQW5kUGFuIHZhbHVlIik7CisgICAgc2hvdWxkQmUoImN1
cnJlbnRWaWV3Lnpvb21BbmRQYW4iLCAiU1ZHVmlld0VsZW1lbnQuU1ZHX1pPT01BTkRQQU5fTUFH
TklGWSIpOworCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJDaGVjayB2aWV3Qm94IHZhbHVl
Iik7CisgICAgc2hvdWxkQmUoImN1cnJlbnRWaWV3LnZpZXdCb3guYmFzZVZhbC54IiwgIjQwIik7
CisgICAgc2hvdWxkQmUoImN1cnJlbnRWaWV3LnZpZXdCb3guYmFzZVZhbC55IiwgIjAiKTsKKyAg
ICBzaG91bGRCZSgiY3VycmVudFZpZXcudmlld0JveC5iYXNlVmFsLndpZHRoIiwgIjIwIik7Cisg
ICAgc2hvdWxkQmUoImN1cnJlbnRWaWV3LnZpZXdCb3guYmFzZVZhbC5oZWlnaHQiLCAiMTAiKTsK
KyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImN1cnJlbnRWaWV3LnZpZXdCb3hTdHJpbmciLCAi
NDAgMCAyMCAxMCIpOworCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJDaGVjayBwcmVzZXJ2
ZUFzcGVjdFJhdGlvIHZhbHVlIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjdXJyZW50
Vmlldy5wcmVzZXJ2ZUFzcGVjdFJhdGlvU3RyaW5nIiwgInhNaWRZTWF4IHNsaWNlIik7CisgICAg
c2hvdWxkQmUoImN1cnJlbnRWaWV3LnByZXNlcnZlQXNwZWN0UmF0aW8uYmFzZVZhbC5hbGlnbiIs
ICJTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLlNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUFY
Iik7CisgICAgc2hvdWxkQmUoImN1cnJlbnRWaWV3LnByZXNlcnZlQXNwZWN0UmF0aW8uYmFzZVZh
bC5tZWV0T3JTbGljZSIsICJTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLlNWR19NRUVUT1JTTElDRV9T
TElDRSIpOworCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJUZXN0IGR5bmFtaWMgbW9kaWZp
Y2F0aW9ucyBvZiB0aGUgJ3ZpZXcyJyBlbGVtZW50Iik7CisgICAgaWZyYW1lRWxlbWVudC5jb250
ZW50RG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEVsZW1lbnRCeUlkKCJ2aWV3MiIpLnNldEF0
dHJpYnV0ZSgidmlld0JveCIsICIxMCAxMCAzMCAzMCIpOworCisgICAgZGVidWcoIiIpOworICAg
IGRlYnVnKCJDaGVjayB2aWV3Qm94IHZhbHVlIGFmdGVyIG1vZGlmaWNhdGlvbiIpOworICAgIHNo
b3VsZEJlKCJjdXJyZW50Vmlldy52aWV3Qm94LmJhc2VWYWwueCIsICIxMCIpOworICAgIHNob3Vs
ZEJlKCJjdXJyZW50Vmlldy52aWV3Qm94LmJhc2VWYWwueSIsICIxMCIpOworICAgIHNob3VsZEJl
KCJjdXJyZW50Vmlldy52aWV3Qm94LmJhc2VWYWwud2lkdGgiLCAiMzAiKTsKKyAgICBzaG91bGRC
ZSgiY3VycmVudFZpZXcudmlld0JveC5iYXNlVmFsLmhlaWdodCIsICIzMCIpOworICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygiY3VycmVudFZpZXcudmlld0JveFN0cmluZyIsICIxMCAxMCAzMCAz
MCIpOworCisgICAgbmV4dFZpZXcgPSAiI3N2Z1ZpZXcodmlld0JveCgwIDAgMTAgMTUpO3RyYW5z
Zm9ybShzY2FsZSgyIDIpKTtwcmVzZXJ2ZUFzcGVjdFJhdGlvKHhNaW5ZTWF4IG1lZXQpKSI7Cisg
ICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJMb2FkaW5nIGV4dGVybmFsIFNWRyAiICsgZXh0ZXJu
YWxTVkdGaWxlTmFtZSArIG5leHRWaWV3ICsgIi4uLiIpOworICAgIGRlYnVnKCIiKTsKKworICAg
IGlmcmFtZUVsZW1lbnQuc3JjID0gZXh0ZXJuYWxTVkdGaWxlTmFtZSArIG5leHRWaWV3OworICAg
IHRlc3RDdXN0b21WaWV3U3BlYygpOworfQorCitmdW5jdGlvbiB0ZXN0Q3VzdG9tVmlld1NwZWMo
KSB7CisKKyAgICBpZnJhbWVFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlmcmFt
ZSIpOworICAgIGN1cnJlbnRWaWV3ID0gaWZyYW1lRWxlbWVudC5jb250ZW50RG9jdW1lbnQuZG9j
dW1lbnRFbGVtZW50LmN1cnJlbnRWaWV3OworCisgICAgZGVidWcoIlZlcmlmeSB0aGF0IG5vIGxv
YWQgd2FzIHBlZm9ybWVkLCBidXQgb25seSBhIGRpZmZlcmVudCB2aWV3IHdhcyBzZXQgb24gdGhl
IHNhbWUgZG9jdW1lbnQiKTsKKyAgICBzaG91bGRCZSgiaWZyYW1lRWxlbWVudC5jb250ZW50RG9j
dW1lbnQuZG9jdW1lbnRFbGVtZW50IiwgImZpcnN0RG9jdW1lbnRFbGVtZW50Iik7CisKKyAgICBk
ZWJ1ZygiIik7CisgICAgZGVidWcoIkNoZWNrIHRyYW5zZm9ybSB2YWx1ZSIpOworICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygiY3VycmVudFZpZXcudHJhbnNmb3JtU3RyaW5nIiwgInNjYWxlKDIg
MikiKTsKKyAgICBzaG91bGRCZSgiY3VycmVudFZpZXcudHJhbnNmb3JtLm51bWJlck9mSXRlbXMi
LCAiMSIpOworCisgICAgc2hvdWxkQmUoImN1cnJlbnRWaWV3LnRyYW5zZm9ybS5nZXRJdGVtKDAp
LnR5cGUiLCAiU1ZHVHJhbnNmb3JtLlNWR19UUkFOU0ZPUk1fU0NBTEUiKTsKKyAgICBzaG91bGRC
ZSgiY3VycmVudFZpZXcudHJhbnNmb3JtLmdldEl0ZW0oMCkuYW5nbGUiLCAiMCIpOworICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygibWF0cml4VG9TdHJpbmcoY3VycmVudFZpZXcudHJhbnNmb3Jt
LmdldEl0ZW0oMCkubWF0cml4KSIsICJbMi4wMCAwLjAwIDAuMDAgMi4wMCAwLjAwIDAuMDBdIik7
CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIkNoZWNrIHZpZXdUYXJnZXQgdmFsdWUiKTsK
KyAgICBzaG91bGRCZUVtcHR5U3RyaW5nKCJjdXJyZW50Vmlldy52aWV3VGFyZ2V0U3RyaW5nIik7
CisgICAgc2hvdWxkQmVOdWxsKCJjdXJyZW50Vmlldy52aWV3VGFyZ2V0Iik7CisKKyAgICBkZWJ1
ZygiIik7CisgICAgZGVidWcoIkNoZWNrIHpvb21BbmRQYW4gdmFsdWUiKTsKKyAgICBzaG91bGRC
ZSgiY3VycmVudFZpZXcuem9vbUFuZFBhbiIsICJTVkdWaWV3RWxlbWVudC5TVkdfWk9PTUFORFBB
Tl9NQUdOSUZZIik7CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIkNoZWNrIHZpZXdCb3gg
dmFsdWUiKTsKKyAgICBzaG91bGRCZSgiY3VycmVudFZpZXcudmlld0JveC5iYXNlVmFsLngiLCAi
MCIpOworICAgIHNob3VsZEJlKCJjdXJyZW50Vmlldy52aWV3Qm94LmJhc2VWYWwueSIsICIwIik7
CisgICAgc2hvdWxkQmUoImN1cnJlbnRWaWV3LnZpZXdCb3guYmFzZVZhbC53aWR0aCIsICIxMCIp
OworICAgIHNob3VsZEJlKCJjdXJyZW50Vmlldy52aWV3Qm94LmJhc2VWYWwuaGVpZ2h0IiwgIjE1
Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjdXJyZW50Vmlldy52aWV3Qm94U3RyaW5n
IiwgIjAgMCAxMCAxNSIpOworCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJDaGVjayBwcmVz
ZXJ2ZUFzcGVjdFJhdGlvIHZhbHVlIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjdXJy
ZW50Vmlldy5wcmVzZXJ2ZUFzcGVjdFJhdGlvU3RyaW5nIiwgInhNaW5ZTWF4IG1lZXQiKTsKKyAg
ICBzaG91bGRCZSgiY3VycmVudFZpZXcucHJlc2VydmVBc3BlY3RSYXRpby5iYXNlVmFsLmFsaWdu
IiwgIlNWR1ByZXNlcnZlQXNwZWN0UmF0aW8uU1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1JTllN
QVgiKTsKKyAgICBzaG91bGRCZSgiY3VycmVudFZpZXcucHJlc2VydmVBc3BlY3RSYXRpby5iYXNl
VmFsLm1lZXRPclNsaWNlIiwgIlNWR1ByZXNlcnZlQXNwZWN0UmF0aW8uU1ZHX01FRVRPUlNMSUNF
X01FRVQiKTsKKworICAgIGNvbXBsZXRlVGVzdCgpOworfQorCituZXh0VmlldyA9ICIjdmlldzEi
OworZGVidWcoIiIpOworZGVidWcoIkxvYWRpbmcgZXh0ZXJuYWwgU1ZHICIgKyBleHRlcm5hbFNW
R0ZpbGVOYW1lICsgbmV4dFZpZXcgKyAiLi4uIik7CitkZWJ1ZygiIik7CisKK3ZhciBpZnJhbWVF
bGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CitpZnJhbWVFbGVtZW50
LnNldEF0dHJpYnV0ZSgiaWQiLCAiaWZyYW1lIik7CitpZnJhbWVFbGVtZW50LnNldEF0dHJpYnV0
ZSgic3R5bGUiLCAiZGlzcGxheTogYmxvY2siKTsKK2lmcmFtZUVsZW1lbnQuc2V0QXR0cmlidXRl
KCJ3aWR0aCIsICIxMjBweCIpOworaWZyYW1lRWxlbWVudC5zZXRBdHRyaWJ1dGUoImhlaWdodCIs
ICIxMjBweCIpOworaWZyYW1lRWxlbWVudC5zZXRBdHRyaWJ1dGUoIm9ubG9hZCIsICJzZXRUaW1l
b3V0KHRlc3RGaXJzdFZpZXdFbGVtZW50LCAwKSIpOworaWZyYW1lRWxlbWVudC5zcmMgPSBleHRl
cm5hbFNWR0ZpbGVOYW1lICsgIiN2aWV3MSI7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29u
c29sZSIpLmFwcGVuZENoaWxkKGlmcmFtZUVsZW1lbnQpOworCitzdWNjZXNzZnVsbHlQYXJzZWQg
PSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378490</attachid>
            <date>2019-09-10 14:16:55 -0700</date>
            <delta_ts>2019-09-13 04:20:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94469-20190910231653.patch</filename>
            <type>text/plain</type>
            <size>18440</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NzMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQzYzAwODk3NDU3ZGM1
NTliNWU0MmVhZDg4YjJmZDc1MDMzYjZmMy4uN2FiYzYxZmFjYjRiZGY2NGJkNjY4NzZkODllM2Ez
YTgzNzg1MWY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE5LTA5LTEwICBOaWtv
bGFzIFppbW1lcm1hbm4gIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisKKyAgICAgICAgU01JTCBhbmlt
YXRpb25zIG9mIFNWRyA8dmlldz4gZWxlbWVudCBoYXZlIG5vIGVmZmVjdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ0NjkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTTUlMIGFuaW1hdGlvbnMgb2YgdGhl
IGF0dHJpYnV0ZXMgYXNzb2NpYXRlZCB3aXRoIFNWR1ZpZXdFbGVtZW50IHdvcmsgZmluZSwgYnV0
IHdpdGhvdXQgYW55CisgICAgICAgIHZpc3VhbCBlZmZlY3QuIFdoZW4gbG9hZGluZyBhbiBTVkcg
ZG9jdW1lbnQgd2l0aCBhIGdpdmVuIGZyYWdtZW50IGlkZW50aWZpZXIKKyAgICAgICAgKGUuZy4g
dGVzdC5zdmcjY3VzdG9tVmlldykgd2hlcmUgJ2N1c3RvbVZpZXcnIHJlZmVyZW5jZXMgdG8gYW4g
ZW1iZWRkZWQgU1ZHVmlld0VsZW1lbnQsIHRoZQorICAgICAgICB2aWV3Qm94L3ByZXNlcnZlQXNw
ZWN0UmF0aW8gc2V0dGluZ3Mgc2hvdWxkIGJlIHRha2VuIGZyb20gdGhlIFNWR1ZpZXdFbGVtZW50
LiBDdXJyZW50bHkKKyAgICAgICAgdGhlcmUgaXMgbm8gbGluayBiZXR3ZWVuIHRoZSBTVkdWaWV3
RWxlbWVudCBhbmQgdGhlIFNWR1NWR0VsZW1lbnQuIFRoZSBzZXR0aW5ncyBmcm9tIHRoZQorICAg
ICAgICBTVkdWaWV3RWxlbWVudCBhcmUgb25seSBwYXNyc2VkIG9uY28gaW4gU1ZHU1ZHRWxlbWVu
dDo6c2Nyb2xsVG9GcmFnbWVudCgpLiBEeW5hbWljIHVwZGF0ZXMKKyAgICAgICAgb2YgdGhlICd2
aWV3Qm94JyBhbmQgJ3ByZXNlcnZlQXNwZWN0UmF0aW8nIGF0dHJpYnV0ZXMgb2YgdGhlIFNWR1Zp
ZXdFbGVtZW50IHRodXMgaGF2ZSBubworICAgICAgICB2aXN1YWwgZWZmZWN0LCBzaW5jZSB0aGUg
U1ZHU1ZHRWxlbWVudCBkb2VzIG5vdCByZS1ldmFsdWF0ZXMgaXRzIHZpZXdCb3guIEZpeCB0aGF0
IGJ5CisgICAgICAgIGludHJvZHVjaW5nIGEgbGluayBiZXR3ZWVuIFNWR1NWR0VsZW1lbnQgYW5k
IFNWR1ZpZXdFbGVtZW50LCB1dGlsaXppbmcgd2VhayBwb2ludGVycy4KKyAgICAgICAgUHJvcGVy
dHkgY2hhbmdlcyBmcm9tIFNWR1ZpZXdFbGVtZW50IGFyZSBub3cgY29ycmVjdGx5IGRpc3BhdGNo
ZWQgdG8gdGhlIFNWR1NWR0VsZW1lbnQ6CisgICAgICAgIHRoZSBjdXN0b20gdmlld0JveCAtIHN0
b3JlZCBpbiBTVkdTVkdFbGVtZW50IC0gaXMgdXBkYXRlZCBhbmQgYSB2aXN1YWwgdXBkYXRlIGlz
IHRyaWdnZXJlZC4KKworICAgICAgICBUZXN0czogc3ZnL2N1c3RvbS9hbmltYXRpb24tb24tdmll
dy1lbGVtZW50Lmh0bWwKKyAgICAgICAgICAgICAgIHN2Zy9jdXN0b20vbXVsdGlwbGUtdmlldy1l
bGVtZW50cy5odG1sCisKKyAgICAgICAgKiBzdmcvU1ZHU1ZHRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpzY3JvbGxUb0ZyYWdtZW50KTogTGluayB0YXJnZXQg
U1ZHVmlld0VsZW1lbnQgd2l0aCB0aGUKKyAgICAgICAgU1ZHU1ZHRWxlbWVudCBieSB3ZWFrIHBv
aW50ZXJzLgorICAgICAgICAqIHN2Zy9TVkdTVkdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NW
R1ZpZXdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1ZpZXdFbGVtZW50OjpzdmdB
dHRyaWJ1dGVDaGFuZ2VkKTogQWRkIG1pc3NpbmcgaW1wbGVtZW50YXRpb24sIHRyYWNrZWQgYnkK
KyAgICAgICAgd2Via2l0Lm9yZy9iLzE5NjU1NC4gQ29ycmVjdGx5IGhhbmRsZSBTVkdGaXRUb1Zp
ZXdCb3ggcHJvcGVydHkgY2hhbmdlcy4gVXBkYXRlIHRoZSB2aWV3Qm94CisgICAgICAgIHN0b3Jl
ZCBpbiB0aGUgU1ZHU1ZHRWxlbWVudCwgdGhhdCByZWZlcmVuY2VzIHRoZSBTVkdWaWV3RWxlbWVu
dC4gQWZ0ZXJ3YXJkcyBpbnZhbGlkYXRlIHRoZQorICAgICAgICByZW5kZXJlciBhc3NvY2lhdGVk
IHdpdGggdGhlIFNWR1NWR0VsZW1lbnQsIHdoaWNoIHByb3Blcmx5IHRyaWdnZXJzIHZpc3VhbCB1
cGRhdGVzLgorICAgICAgICAqIHN2Zy9TVkdWaWV3RWxlbWVudC5oOgorCiAyMDE5LTA5LTEwICBT
aWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAgICAgICAgIEluZGV4ZWREQjogY2Fj
aGUgcHJlcGFyZWQgU1FMaXRlU3RhdGVtZW50IGluIFNRTGl0ZUlEQkN1cnNvcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1NWR0VsZW1lbnQuY3BwCmluZGV4IGM1N2NmZmM1OTFhYTg3ZDA0YTg2ZDU5MGUzZTY1
NzA0MjBkZWI5MmMuLjgyZWI5ZmYzMDcyZGRmODcyNWU3ZTI3N2E1MDkzYTM3YTgxYjczYjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVy
bWFubkBrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDE5IE5p
a29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDEwIFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCkBAIC02NjYsNiArNjY2LDE5IEBAIGJvb2wgU1ZHU1ZHRWxlbWVu
dDo6c2Nyb2xsVG9GcmFnbWVudChjb25zdCBTdHJpbmcmIGZyYWdtZW50SWRlbnRpZmllcikKICAg
ICAvLyBhdHRyaWJ1dGVzIG9uIHRoZSBjbG9zZXN0IGFuY2VzdG9yICJzdmciIGVsZW1lbnQuCiAg
ICAgaWYgKGF1dG8qIHZpZXdFbGVtZW50ID0gZmluZFZpZXdBbmNob3IoZnJhZ21lbnRJZGVudGlm
aWVyKSkgewogICAgICAgICBpZiAoYXV0byogcm9vdEVsZW1lbnQgPSBmaW5kUm9vdEFuY2hvcih2
aWV3RWxlbWVudCkpIHsKKyAgICAgICAgICAgIGlmIChyb290RWxlbWVudC0+bV9jdXJyZW50Vmll
d0VsZW1lbnQpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQocm9vdEVsZW1lbnQtPm1fY3VycmVu
dFZpZXdFbGVtZW50LT50YXJnZXRFbGVtZW50KCkpOworICAgICAgICAgICAgICAgIEFTU0VSVChy
b290RWxlbWVudC0+bV9jdXJyZW50Vmlld0VsZW1lbnQtPnRhcmdldEVsZW1lbnQoKSA9PSByb290
RWxlbWVudCk7CisKKyAgICAgICAgICAgICAgICAvLyBJZiB0aGUgdmlld0VsZW1lbnQgaGFzIGNo
YW5nZWQsIHJlbW92ZSB0aGUgbGluayBmcm9tIHRoZSBTVkdWaWV3RWxlbWVudCB0byB0aGUgcHJl
dmlvdXNseSBzZWxlY3RlZCBTVkdTVkdFbGVtZW50LgorICAgICAgICAgICAgICAgIGlmIChyb290
RWxlbWVudC0+bV9jdXJyZW50Vmlld0VsZW1lbnQgIT0gdmlld0VsZW1lbnQpCisgICAgICAgICAg
ICAgICAgICAgIHJvb3RFbGVtZW50LT5tX2N1cnJlbnRWaWV3RWxlbWVudC0+cmVzZXRUYXJnZXRF
bGVtZW50KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghcm9vdEVsZW1lbnQt
Pm1fY3VycmVudFZpZXdFbGVtZW50IHx8IHJvb3RFbGVtZW50LT5tX2N1cnJlbnRWaWV3RWxlbWVu
dCAhPSB2aWV3RWxlbWVudCkKKyAgICAgICAgICAgICAgICByb290RWxlbWVudC0+bV9jdXJyZW50
Vmlld0VsZW1lbnQgPSBtYWtlV2Vha1B0cih2aWV3RWxlbWVudCk7CisgICAgICAgICAgICByb290
RWxlbWVudC0+bV9jdXJyZW50Vmlld0VsZW1lbnQtPnNldFRhcmdldEVsZW1lbnQoKnJvb3RFbGVt
ZW50KTsKKwogICAgICAgICAgICAgcm9vdEVsZW1lbnQtPmluaGVyaXRWaWV3QXR0cmlidXRlcygq
dmlld0VsZW1lbnQpOwogICAgICAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gcm9vdEVsZW1l
bnQtPnJlbmRlcmVyKCkpCiAgICAgICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtG
b3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdTVkdFbGVtZW50LmgKaW5kZXggOWVhY2Q4MDkxZGMxMTk2MWE5NjkwMTk5NzYzZmMy
MDI1ZDI1NzhjMC4uMjA3ZDlhNDU1NjZmODg3NzhkMDA1YWY5MjBkZDA0ZTU0NTg3MWZiNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCkBAIC0zNiw2ICszNiw3IEBAIGNsYXNzIFNWR01h
dHJpeDsKIGNsYXNzIFNWR051bWJlcjsKIGNsYXNzIFNWR1JlY3Q7CiBjbGFzcyBTVkdUcmFuc2Zv
cm07CitjbGFzcyBTVkdWaWV3RWxlbWVudDsKIGNsYXNzIFNWR1ZpZXdTcGVjOwogCiBjbGFzcyBT
VkdTVkdFbGVtZW50IGZpbmFsIDogcHVibGljIFNWR0dyYXBoaWNzRWxlbWVudCwgcHVibGljIFNW
R0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIHB1YmxpYyBTVkdGaXRUb1ZpZXdCb3gsIHB1Ymxp
YyBTVkdab29tQW5kUGFuIHsKQEAgLTEyNyw2ICsxMjgsOCBAQCBwdWJsaWM6CiAgICAgU1ZHQW5p
bWF0ZWRMZW5ndGgmIHdpZHRoQW5pbWF0ZWQoKSB7IHJldHVybiBtX3dpZHRoOyB9CiAgICAgU1ZH
QW5pbWF0ZWRMZW5ndGgmIGhlaWdodEFuaW1hdGVkKCkgeyByZXR1cm4gbV9oZWlnaHQ7IH0KIAor
ICAgIHZvaWQgaW5oZXJpdFZpZXdBdHRyaWJ1dGVzKGNvbnN0IFNWR1ZpZXdFbGVtZW50Jik7CisK
IHByaXZhdGU6CiAgICAgU1ZHU1ZHRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1l
bnQmKTsKICAgICB2aXJ0dWFsIH5TVkdTVkdFbGVtZW50KCk7CkBAIC0xNDksNyArMTUyLDYgQEAg
cHJpdmF0ZToKIAogICAgIEFmZmluZVRyYW5zZm9ybSBsb2NhbENvb3JkaW5hdGVTcGFjZVRyYW5z
Zm9ybShTVkdMb2NhdGFibGU6OkNUTVNjb3BlKSBjb25zdCBvdmVycmlkZTsKICAgICBSZWZQdHI8
RnJhbWU+IGZyYW1lRm9yQ3VycmVudFNjYWxlKCkgY29uc3Q7Ci0gICAgdm9pZCBpbmhlcml0Vmll
d0F0dHJpYnV0ZXMoY29uc3QgU1ZHVmlld0VsZW1lbnQmKTsKICAgICBSZWY8Tm9kZUxpc3Q+IGNv
bGxlY3RJbnRlcnNlY3Rpb25PckVuY2xvc3VyZUxpc3QoU1ZHUmVjdCYsIFNWR0VsZW1lbnQqLCBi
b29sICgqY2hlY2tGdW5jdGlvbikoU1ZHRWxlbWVudCYsIFNWR1JlY3QmKSk7CiAKICAgICBTVkdW
aWV3RWxlbWVudCogZmluZFZpZXdBbmNob3IoY29uc3QgU3RyaW5nJiBmcmFnbWVudElkZW50aWZp
ZXIpIGNvbnN0OwpAQCAtMTU5LDYgKzE2MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3VzZUN1
cnJlbnRWaWV3IHsgZmFsc2UgfTsKICAgICBSZWY8U01JTFRpbWVDb250YWluZXI+IG1fdGltZUNv
bnRhaW5lcjsKICAgICBSZWZQdHI8U1ZHVmlld1NwZWM+IG1fdmlld1NwZWM7CisgICAgV2Vha1B0
cjxTVkdWaWV3RWxlbWVudD4gbV9jdXJyZW50Vmlld0VsZW1lbnQgeyBudWxscHRyIH07CiAgICAg
U3RyaW5nIG1fY3VycmVudFZpZXdGcmFnbWVudElkZW50aWZpZXI7CiAKICAgICBSZWY8U1ZHUG9p
bnQ+IG1fY3VycmVudFRyYW5zbGF0ZSB7IFNWR1BvaW50OjpjcmVhdGUoKSB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdWaWV3RWxlbWVudC5jcHAKaW5kZXggMjczMzgyY2U0MGY2ODZiODBlMzZlOTM1YWJl
NjU0YjJmMjlhYzg3Mi4uNjYyZjA2NTIyZWVmMTcyN2I1Y2Y0NDEwODhhZGJmOWFiNmMyMGYwZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuY3BwCkBAIC0yMiw3ICsyMiw5IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU1ZHVmlld0VsZW1lbnQuaCIKIAorI2luY2x1
ZGUgIlJlbmRlclNWR1Jlc291cmNlLmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKKyNpbmNsdWRl
ICJTVkdTVkdFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUg
PHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKQEAgLTYxLDQgKzYzLDI0IEBAIHZvaWQgU1ZHVmll
d0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0
IEF0b21TdHJpbmcmCiAgICAgU1ZHWm9vbUFuZFBhbjo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFs
dWUpOwogfQogCit2b2lkIFNWR1ZpZXdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQoreworICAgIC8vIFdlIGlnbm9yZSBjaGFuZ2VzIHRv
IFNWR05hbWVzOjp2aWV3VGFyZ2V0QXR0ciwgd2hpY2ggaXMgZGVwcmVjYXRlZCBhbmQgdW51c2Vk
IGluIFdlYkNvcmUuCisgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUo
YXR0ck5hbWUpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoU1ZHRml0VG9WaWV3Qm94Ojpp
c0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgeworICAgICAgICBpZiAobV90YXJnZXRFbGVtZW50
KSB7CisgICAgICAgICAgICBtX3RhcmdldEVsZW1lbnQtPmluaGVyaXRWaWV3QXR0cmlidXRlcygq
dGhpcyk7CisgICAgICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBtX3RhcmdldEVsZW1lbnQt
PnJlbmRlcmVyKCkpCisgICAgICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JM
YXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOworICAgICAgICB9
CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFNWR0VsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQoYXR0ck5hbWUpOworICAgIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnN2
Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3
RWxlbWVudC5oCmluZGV4IDUzOGY4NjQ0MjQzNTkxYTA0NTc3YzE1NDk0NDE2ZjYwYmUwN2M3NjIu
LmZlMzdlOTE3ODE1OTdiZDM3Y2M1MmUzZGQ1ZDhjMTYwYTRiYWJlYzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdWaWV3RWxlbWVudC5oCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAiU1ZHRWxlbWVu
dC5oIgogI2luY2x1ZGUgIlNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaCIKICNpbmNsdWRl
ICJTVkdGaXRUb1ZpZXdCb3guaCIKKyNpbmNsdWRlICJTVkdTVkdFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiU1ZHU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIlNWR1pvb21BbmRQYW4uaCIKIApAQCAtMzks
MTkgKzQwLDI0IEBAIHB1YmxpYzoKIAogICAgIFJlZjxTVkdTdHJpbmdMaXN0PiB2aWV3VGFyZ2V0
KCkgeyByZXR1cm4gbV92aWV3VGFyZ2V0LmNvcHlSZWYoKTsgfQogCisgICAgY29uc3QgU1ZHU1ZH
RWxlbWVudCogdGFyZ2V0RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0RWxlbWVudC5n
ZXQoKTsgfQorICAgIHZvaWQgc2V0VGFyZ2V0RWxlbWVudChjb25zdCBTVkdTVkdFbGVtZW50JiB0
YXJnZXRFbGVtZW50KSB7IG1fdGFyZ2V0RWxlbWVudCA9IG1ha2VXZWFrUHRyKHRhcmdldEVsZW1l
bnQpOyB9CisgICAgdm9pZCByZXNldFRhcmdldEVsZW1lbnQoKSB7IG1fdGFyZ2V0RWxlbWVudCA9
IG51bGxwdHI7IH0KKwogcHJpdmF0ZToKICAgICBTVkdWaWV3RWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQmKTsKIAogICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQ
cm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHVmlld0VsZW1lbnQsIFNWR0VsZW1lbnQsIFNWR0V4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQsIFNWR0ZpdFRvVmlld0JveD47CiAgICAgY29uc3QgU1ZHUHJv
cGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
cHJvcGVydHlSZWdpc3RyeTsgfQogCi0gICAgLy8gRklYTUUod2Via2l0Lm9yZy9iLzE5NjU1NCk6
IHN2Z0F0dHJpYnV0ZUNoYW5nZWQgbWlzc2luZy4KICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAogICAg
IGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIGZpbmFsIHsgcmV0dXJu
IGZhbHNlOyB9CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0
aGlzIH07CiAgICAgUmVmPFNWR1N0cmluZ0xpc3Q+IG1fdmlld1RhcmdldCB7IFNWR1N0cmluZ0xp
c3Q6OmNyZWF0ZSh0aGlzKSB9OworICAgIFdlYWtQdHI8U1ZHU1ZHRWxlbWVudD4gbV90YXJnZXRF
bGVtZW50IHsgbnVsbHB0ciB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDMzYjg4ZGY1YzI5ZmFhN2U3MWNmYzE4MmY1YWRiYzczZTI2MGE3OGUuLmNiNTIwZWYyMzAwMDZm
ZTRiYjAxMjAwNWJkOTc2ODJlNzk3NGUwODEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxOS0w
OS0xMCAgTmlrb2xhcyBaaW1tZXJtYW5uICA8emltbWVybWFubkBrZGUub3JnPgorCisgICAgICAg
IFNNSUwgYW5pbWF0aW9ucyBvZiBTVkcgPHZpZXc+IGVsZW1lbnQgaGF2ZSBubyBlZmZlY3QKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0NDY5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG5ldyBsYXlv
dXQgdGVzdHMgdG8gdmVyaWZ5IHRoYXQgZHluYW1pYyBtb2RpZmljYXRpb25zIG9mIHRoZSA8dmll
dz4gZWxlbWVudCBjYXVzZQorICAgICAgICB2aXN1YWwgdXBkYXRlcy4gUHJldmlvdXNseSBTVkdT
VkdFbGVtZW50IHdhcyBuZXZlciBub3RpZmllZCBhYm91dCBjaGFuZ2VzIG9mIHRoZQorICAgICAg
ICBTVkdWaWV3RWxlbWVudCBhbmQgdGh1cyBkaWQgbm90IHVwZGF0ZSB0aGUgc3RvcmVkIHZpZXdC
b3guCisKKyAgICAgICAgKiBzdmcvY3VzdG9tL2FuaW1hdGlvbi1vbi12aWV3LWVsZW1lbnQtZXhw
ZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogc3ZnL2N1c3RvbS9hbmltYXRpb24tb24tdmll
dy1lbGVtZW50Lmh0bWw6IEFkZGVkLiBUaGlzIGlzIGEgbmV3IHJlZnRlc3QKKyAgICAgICAgZGVt
b25zdHJhdGluZyB0aGF0IGFuaW1hdGlvbnMgb2YgU1ZHIDx2aWV3PiBlbGVtZW50cyBub3cgYmVo
YXZlIGFzIGV4cGVjdGVkLgorICAgICAgICAqIHN2Zy9jdXN0b20vbXVsdGlwbGUtdmlldy1lbGVt
ZW50cy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvY3VzdG9tL211bHRpcGxl
LXZpZXctZWxlbWVudHMuaHRtbDogQWRkZWQuCisgICAgICAgICogc3ZnL2RvbS9TVkdWaWV3U3Bl
Yy1tdWx0aXBsZS12aWV3cy1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3ZnL2RvbS9TVkdWaWV3
U3BlYy1tdWx0aXBsZS12aWV3cy5odG1sOiBFeHRlbmQgdG8gY292ZXIgZHluYW1pYyBtb2RpZmlj
YXRpb25zLgorCiAyMDE5LTA5LTEwICBOaWtvbGFzIFppbW1lcm1hbm4gIDx6aW1tZXJtYW5uQGtk
ZS5vcmc+CiAKICAgICAgICAgU01JTCBhbmltYXRpb25zIG9mIFNWRyA8dmlldz4gZWxlbWVudCBo
YXZlIG5vIGVmZmVjdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9hbmltYXRp
b24tb24tdmlldy1lbGVtZW50LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9zdmcvY3VzdG9t
L2FuaW1hdGlvbi1vbi12aWV3LWVsZW1lbnQtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzYw
YThjYzQ3ZjRiNTU0ZGNmNzg4MzMyOTk2ZDdhZTZmYzE4NDU5Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9hbmltYXRpb24tb24tdmlldy1lbGVtZW50LWV4cGVjdGVk
Lmh0bWwKQEAgLTAsMCArMSwxNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
ICAgIDxzY3JpcHQ+CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCisgICAgICAgIGZ1bmN0aW9uIGxvYWRlZCgp
IHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfQorICAgIDwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+CisgIDxpZnJhbWUgc3R5bGU9ImJvcmRlcjogbm9uZSIgb25sb2FkPSJsb2FkZWQo
KSIgd2lkdGg9JzIwMCcgaGVpZ2h0PScyMDAnIHNyYz0ncmVzb3VyY2VzL2FuaW1hdGlvbi1vbi12
aWV3LWVsZW1lbnQuc3ZnJz48L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N2Zy9jdXN0b20vYW5pbWF0aW9uLW9uLXZpZXctZWxlbWVudC5odG1sIGIv
TGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9hbmltYXRpb24tb24tdmlldy1lbGVtZW50Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uM2RkNGRhYTE1MjhlZDI4ZjE1NzQ3OTI1MmQyMWRjYzk1ZDYzNWI1NQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vYW5pbWF0aW9uLW9uLXZpZXctZWxl
bWVudC5odG1sCkBAIC0wLDAgKzEsMTkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKyAgICA8c2NyaXB0PgorICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAg
ICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworICAgICAgICBmdW5jdGlvbiBsb2Fk
ZWQoKSB7CisgICAgICAgICAgICB2YXIgc3ZnID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN2
Z0ZyYW1lIikuZ2V0U1ZHRG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQ7CisgICAgICAgICAgICBz
dmcuc2V0Q3VycmVudFRpbWUoNCk7IC8vIFBhc3QgZW5kIG9mIHRoZSBhbmltYXRpb24gaW4gdGhl
IGVtYmVkZGVkIFNWRy4KKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
ICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfQorICAgIDwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+CisgIDxpZnJhbWUgaWQ9InN2Z0ZyYW1lIiBzdHlsZT0iYm9y
ZGVyOiBub25lIiBvbmxvYWQ9ImxvYWRlZCgpIiB3aWR0aD0nMjAwJyBoZWlnaHQ9JzIwMCcgc3Jj
PSdyZXNvdXJjZXMvYW5pbWF0aW9uLW9uLXZpZXctZWxlbWVudC5zdmcjY3VzdG9tVmlldyc+PC9p
ZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvY3Vz
dG9tL211bHRpcGxlLXZpZXctZWxlbWVudHMtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3N2
Zy9jdXN0b20vbXVsdGlwbGUtdmlldy1lbGVtZW50cy1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjJjYjM5NGE1ZGYwM2JiYjQwZmJiZjBkYzMwY2EwZWFjYjFiMjY4OWMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL211bHRpcGxlLXZpZXctZWxlbWVudHMtZXhwZWN0
ZWQuaHRtbApAQCAtMCwwICsxLDM3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
CisgICAgPHNjcmlwdD4KKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAg
ICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKKyAgICAgICAgZnVuY3Rpb24gbG9hZGVk
KCkgeworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICB9CisgICAgPC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keSBvbmxvYWQ9ImxvYWRlZCgpIj4KKyAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5s
aW5lIj4KKyAgICA8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9
IjIwMCIgaGVpZ2h0PSIyMDAiPgorICAgICAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjIwMCIg
aGVpZ2h0PSIyMDAiIGZpbGw9ImdyZWVuIi8+CisgICAgPC9zdmc+CisgIDwvZGl2PgorICA8ZGl2
IHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUiPgorICAgIDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+CisgICAgICA8cmVjdCB4PSIw
IiB5PSIwIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCIgZmlsbD0iZ3JlZW4iLz4KKyAgICA8L3N2
Zz4KKyAgPC9kaXY+CisgIDxici8+CisgIDxkaXYgc3R5bGU9ImRpc3BsYXk6IGlubGluZSI+Cisg
ICAgPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMDAiIGhl
aWdodD0iMjAwIj4KKyAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIyMDAiIGhlaWdodD0i
MjAwIiBmaWxsPSJncmVlbiIvPgorICAgIDwvc3ZnPgorICA8L2Rpdj4KKyAgPGRpdiBzdHlsZT0i
ZGlzcGxheTogaW5saW5lIj4KKyAgICA8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiPgorICAgICAgPHJlY3QgeD0iMCIgeT0iMCIg
d2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIGZpbGw9ImdyZWVuIi8+CisgICAgPC9zdmc+CisgIDwv
ZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2N1c3Rv
bS9tdWx0aXBsZS12aWV3LWVsZW1lbnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL211
bHRpcGxlLXZpZXctZWxlbWVudHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YmEzMzk5NDU5YjcyYzhjMTkw
OGFiNTc2NTk1NzNlNjhkODU3MjUxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3Zn
L2N1c3RvbS9tdWx0aXBsZS12aWV3LWVsZW1lbnRzLmh0bWwKQEAgLTAsMCArMSwyMiBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQ+CisgICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OworCisgICAgICAgIHZhciBlbGVtZW50c0xvYWRlZCA9IDA7CisgICAgICAgIGZ1bmN0aW9uIGxv
YWRlZCgpIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lciAmJiArK2VsZW1lbnRz
TG9hZGVkID09IDQpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cisg
ICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICA8aWZyYW1lIGlkPSJz
dmdGcmFtZTEiIHN0eWxlPSJib3JkZXI6IG5vbmUiIG9ubG9hZD0ibG9hZGVkKCkiIHdpZHRoPScy
MDAnIGhlaWdodD0nMjAwJyBzcmM9Jy4uL2RvbS9yZXNvdXJjZXMvbXVsdGlwbGUtdmlldy1lbGVt
ZW50cy5zdmcjdmlldzEnPjwvaWZyYW1lPgorICA8aWZyYW1lIGlkPSJzdmdGcmFtZTIiIHN0eWxl
PSJib3JkZXI6IG5vbmUiIG9ubG9hZD0ibG9hZGVkKCkiIHdpZHRoPScyMDAnIGhlaWdodD0nMjAw
JyBzcmM9Jy4uL2RvbS9yZXNvdXJjZXMvbXVsdGlwbGUtdmlldy1lbGVtZW50cy5zdmcjdmlldzIn
PjwvaWZyYW1lPgorICA8YnIvPgorICA8aWZyYW1lIGlkPSJzdmdGcmFtZTMiIHN0eWxlPSJib3Jk
ZXI6IG5vbmUiIG9ubG9hZD0ibG9hZGVkKCkiIHdpZHRoPScyMDAnIGhlaWdodD0nMjAwJyBzcmM9
Jy4uL2RvbS9yZXNvdXJjZXMvbXVsdGlwbGUtdmlldy1lbGVtZW50cy5zdmcjc3ZnVmlldyh2aWV3
Qm94KDUgMCAxMCAxNSk7dHJhbnNmb3JtKHNjYWxlKDIgMikpKSc+PC9pZnJhbWU+CisgIDxpZnJh
bWUgaWQ9InN2Z0ZyYW1lNCIgc3R5bGU9ImJvcmRlcjogbm9uZSIgb25sb2FkPSJsb2FkZWQoKSIg
d2lkdGg9JzIwMCcgaGVpZ2h0PScyMDAnIHNyYz0nLi4vZG9tL3Jlc291cmNlcy9tdWx0aXBsZS12
aWV3LWVsZW1lbnRzLnN2ZyNzdmdWaWV3KHZpZXdCb3goMCAwIDEwIDE1KTt0cmFuc2Zvcm0oc2Nh
bGUoMiAyKSk7cHJlc2VydmVBc3BlY3RSYXRpbyh4TWluWU1heCBtZWV0KSknPjwvaWZyYW1lPgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9yZXNv
dXJjZXMvYW5pbWF0aW9uLW9uLXZpZXctZWxlbWVudC5zdmcgYi9MYXlvdXRUZXN0cy9zdmcvY3Vz
dG9tL3Jlc291cmNlcy9hbmltYXRpb24tb24tdmlldy1lbGVtZW50LnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZGE5YTgwNmJhNWRkNjU3ZDBkNzM5NTg3NDdiZjg3M2E0MzkzMzYxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9yZXNvdXJjZXMvYW5pbWF0aW9uLW9uLXZpZXctZWxl
bWVudC5zdmcKQEAgLTAsMCArMSwxNiBAQAorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHdpZHRoPSIyMDAiIGhlaWdodD0iMjAwIj4KKyAgPGcgc3R5bGU9ImZpbGw6IG5v
bmU7IHN0cm9rZS13aWR0aDogMjQ7IHN0cm9rZS1saW5lY2FwOiByb3VuZCI+CisgICAgPGcgc3R5
bGU9InN0cm9rZTogI2M5ZWNiYSI+CisgICAgICA8bGluZSB4MT0iMjAiIHkxPSIyMCIgeDI9Ijc1
IiB5Mj0iMjAiLz4KKyAgICAgIDxsaW5lIHgxPSI0NyIgeTE9IjIwIiB4Mj0iNDciIHkyPSI5NCIv
PgorICAgIDwvZz4KKyAgICA8ZyBzdHlsZT0ic3Ryb2tlOiAjYjBmMmY0Ij4KKyAgICAgIDxwYXRo
IHN0eWxlPSJzdHJva2UtbGluZWpvaW46IHJvdW5kIiBkPSJtIDE2Ny41LDc2IDEsNzQgLTQ2LDAg
LTAuNSwtNzQiLz4KKyAgICAgIDxwYXRoIHN0eWxlPSJzdHJva2UtbGluZWpvaW46IHNxdWFyZSIg
ZD0ibSA3NSw3NiwwLDc0LDQ1LDAiLz4KKyAgICA8L2c+CisgIDwvZz4KKworICA8dmlldyBpZD0i
Y3VzdG9tVmlldyIgdmlld0JveD0iNjAgODUgMTIxIDc0Ij4KKyAgICA8YW5pbWF0ZSBhdHRyaWJ1
dGVOYW1lPSJ2aWV3Qm94IiBkdXI9IjJzIiBiZWdpbj0iMXMiIHRvPSIwIDAgMjAwIDIwMCIgZmls
bD0iZnJlZXplIi8+CisgIDwvdmlldz4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3ZnL2RvbS9TVkdWaWV3U3BlYy1tdWx0aXBsZS12aWV3cy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9zdmcvZG9tL1NWR1ZpZXdTcGVjLW11bHRpcGxlLXZpZXdzLWV4cGVjdGVkLnR4dAppbmRl
eCBiZmZiZDk3OGI0YWJkNTRmYmE1ZDBmNmRmMDFjNjJlNjc3YjIzYzAwLi40OWQ1MmRhMTIyYWJh
ZTY4MmRiYTQ4ZjE3Y2E2ZjA1MjEwYzc4ZTQ4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdmcv
ZG9tL1NWR1ZpZXdTcGVjLW11bHRpcGxlLXZpZXdzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9zdmcvZG9tL1NWR1ZpZXdTcGVjLW11bHRpcGxlLXZpZXdzLWV4cGVjdGVkLnR4dApAQCAt
NTgsNiArNTgsMTUgQEAgUEFTUyBjdXJyZW50Vmlldy5wcmVzZXJ2ZUFzcGVjdFJhdGlvU3RyaW5n
IGlzICJ4TWlkWU1heCBzbGljZSIKIFBBU1MgY3VycmVudFZpZXcucHJlc2VydmVBc3BlY3RSYXRp
by5iYXNlVmFsLmFsaWduIGlzIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8uU1ZHX1BSRVNFUlZFQVNQ
RUNUUkFUSU9fWE1JRFlNQVgKIFBBU1MgY3VycmVudFZpZXcucHJlc2VydmVBc3BlY3RSYXRpby5i
YXNlVmFsLm1lZXRPclNsaWNlIGlzIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8uU1ZHX01FRVRPUlNM
SUNFX1NMSUNFCiAKK1Rlc3QgZHluYW1pYyBtb2RpZmljYXRpb25zIG9mIHRoZSAndmlldzInIGVs
ZW1lbnQKKworQ2hlY2sgdmlld0JveCB2YWx1ZSBhZnRlciBtb2RpZmljYXRpb24KK1BBU1MgY3Vy
cmVudFZpZXcudmlld0JveC5iYXNlVmFsLnggaXMgMTAKK1BBU1MgY3VycmVudFZpZXcudmlld0Jv
eC5iYXNlVmFsLnkgaXMgMTAKK1BBU1MgY3VycmVudFZpZXcudmlld0JveC5iYXNlVmFsLndpZHRo
IGlzIDMwCitQQVNTIGN1cnJlbnRWaWV3LnZpZXdCb3guYmFzZVZhbC5oZWlnaHQgaXMgMzAKK1BB
U1MgY3VycmVudFZpZXcudmlld0JveFN0cmluZyBpcyAiMTAgMTAgMzAgMzAiCisKIExvYWRpbmcg
ZXh0ZXJuYWwgU1ZHIHJlc291cmNlcy9tdWx0aXBsZS12aWV3LWVsZW1lbnRzLnN2ZyNzdmdWaWV3
KHZpZXdCb3goMCAwIDEwIDE1KTt0cmFuc2Zvcm0oc2NhbGUoMiAyKSk7cHJlc2VydmVBc3BlY3RS
YXRpbyh4TWluWU1heCBtZWV0KSkuLi4KIAogVmVyaWZ5IHRoYXQgbm8gbG9hZCB3YXMgcGVyZm9y
bWVkLCBidXQgb25seSBhIGRpZmZlcmVudCB2aWV3IHdhcyBzZXQgb24gdGhlIHNhbWUgZG9jdW1l
bnQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9kb20vU1ZHVmlld1NwZWMtbXVsdGlwbGUt
dmlld3MuaHRtbCBiL0xheW91dFRlc3RzL3N2Zy9kb20vU1ZHVmlld1NwZWMtbXVsdGlwbGUtdmll
d3MuaHRtbAppbmRleCA2MmEzMzQ5YTJlZmIxMWVhOWIyZGViMGYyNzY5N2ViOTg3NTI0NjQwLi5j
YzU0Yjk4YzdkM2MwNzkyNDJkYWJiNDg3Yzk0ZWViZjUxMDJkY2E2IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9zdmcvZG9tL1NWR1ZpZXdTcGVjLW11bHRpcGxlLXZpZXdzLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvc3ZnL2RvbS9TVkdWaWV3U3BlYy1tdWx0aXBsZS12aWV3cy5odG1sCkBAIC05OCw2
ICs5OCwxOCBAQCBmdW5jdGlvbiB0ZXN0U2Vjb25kVmlld0VsZW1lbnQoKSB7CiAgICAgc2hvdWxk
QmUoImN1cnJlbnRWaWV3LnByZXNlcnZlQXNwZWN0UmF0aW8uYmFzZVZhbC5hbGlnbiIsICJTVkdQ
cmVzZXJ2ZUFzcGVjdFJhdGlvLlNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUFYIik7CiAg
ICAgc2hvdWxkQmUoImN1cnJlbnRWaWV3LnByZXNlcnZlQXNwZWN0UmF0aW8uYmFzZVZhbC5tZWV0
T3JTbGljZSIsICJTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLlNWR19NRUVUT1JTTElDRV9TTElDRSIp
OwogCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJUZXN0IGR5bmFtaWMgbW9kaWZpY2F0aW9u
cyBvZiB0aGUgJ3ZpZXcyJyBlbGVtZW50Iik7CisgICAgaWZyYW1lRWxlbWVudC5jb250ZW50RG9j
dW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEVsZW1lbnRCeUlkKCJ2aWV3MiIpLnNldEF0dHJpYnV0
ZSgidmlld0JveCIsICIxMCAxMCAzMCAzMCIpOworCisgICAgZGVidWcoIiIpOworICAgIGRlYnVn
KCJDaGVjayB2aWV3Qm94IHZhbHVlIGFmdGVyIG1vZGlmaWNhdGlvbiIpOworICAgIHNob3VsZEJl
KCJjdXJyZW50Vmlldy52aWV3Qm94LmJhc2VWYWwueCIsICIxMCIpOworICAgIHNob3VsZEJlKCJj
dXJyZW50Vmlldy52aWV3Qm94LmJhc2VWYWwueSIsICIxMCIpOworICAgIHNob3VsZEJlKCJjdXJy
ZW50Vmlldy52aWV3Qm94LmJhc2VWYWwud2lkdGgiLCAiMzAiKTsKKyAgICBzaG91bGRCZSgiY3Vy
cmVudFZpZXcudmlld0JveC5iYXNlVmFsLmhlaWdodCIsICIzMCIpOworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygiY3VycmVudFZpZXcudmlld0JveFN0cmluZyIsICIxMCAxMCAzMCAzMCIpOwor
CiAgICAgbmV4dFZpZXcgPSAiI3N2Z1ZpZXcodmlld0JveCgwIDAgMTAgMTUpO3RyYW5zZm9ybShz
Y2FsZSgyIDIpKTtwcmVzZXJ2ZUFzcGVjdFJhdGlvKHhNaW5ZTWF4IG1lZXQpKSI7CiAgICAgZGVi
dWcoIiIpOwogICAgIGRlYnVnKCJMb2FkaW5nIGV4dGVybmFsIFNWRyAiICsgZXh0ZXJuYWxTVkdG
aWxlTmFtZSArIG5leHRWaWV3ICsgIi4uLiIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378722</attachid>
            <date>2019-09-13 04:21:01 -0700</date>
            <delta_ts>2019-09-13 11:21:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94469-20190913132100.patch</filename>
            <type>text/plain</type>
            <size>18281</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NzYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmZiNWRkOGRkNWY2ODU2
ZmQ2N2ZjYmVkYjA1Y2I5ZTUyYTBhMThiYy4uYjNhOGY5YjA5Mjg1OTU0MzVhNDIyNDJmZGE2MzBl
NTM2NjQ5NmJiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE5LTA5LTEzICBOaWtv
bGFzIFppbW1lcm1hbm4gIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisKKyAgICAgICAgU01JTCBhbmlt
YXRpb25zIG9mIFNWRyA8dmlldz4gZWxlbWVudCBoYXZlIG5vIGVmZmVjdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ0NjkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTTUlMIGFuaW1hdGlvbnMgb2YgdGhl
IGF0dHJpYnV0ZXMgYXNzb2NpYXRlZCB3aXRoIFNWR1ZpZXdFbGVtZW50IHdvcmsgZmluZSwgYnV0
IHdpdGhvdXQgYW55CisgICAgICAgIHZpc3VhbCBlZmZlY3QuIFdoZW4gbG9hZGluZyBhbiBTVkcg
ZG9jdW1lbnQgd2l0aCBhIGdpdmVuIGZyYWdtZW50IGlkZW50aWZpZXIKKyAgICAgICAgKGUuZy4g
dGVzdC5zdmcjY3VzdG9tVmlldykgd2hlcmUgJ2N1c3RvbVZpZXcnIHJlZmVyZW5jZXMgdG8gYW4g
ZW1iZWRkZWQgU1ZHVmlld0VsZW1lbnQsIHRoZQorICAgICAgICB2aWV3Qm94L3ByZXNlcnZlQXNw
ZWN0UmF0aW8gc2V0dGluZ3Mgc2hvdWxkIGJlIHRha2VuIGZyb20gdGhlIFNWR1ZpZXdFbGVtZW50
LiBDdXJyZW50bHkKKyAgICAgICAgdGhlcmUgaXMgbm8gbGluayBiZXR3ZWVuIHRoZSBTVkdWaWV3
RWxlbWVudCBhbmQgdGhlIFNWR1NWR0VsZW1lbnQuIFRoZSBzZXR0aW5ncyBmcm9tIHRoZQorICAg
ICAgICBTVkdWaWV3RWxlbWVudCBhcmUgb25seSBwYXNyc2VkIG9uY28gaW4gU1ZHU1ZHRWxlbWVu
dDo6c2Nyb2xsVG9GcmFnbWVudCgpLiBEeW5hbWljIHVwZGF0ZXMKKyAgICAgICAgb2YgdGhlICd2
aWV3Qm94JyBhbmQgJ3ByZXNlcnZlQXNwZWN0UmF0aW8nIGF0dHJpYnV0ZXMgb2YgdGhlIFNWR1Zp
ZXdFbGVtZW50IHRodXMgaGF2ZSBubworICAgICAgICB2aXN1YWwgZWZmZWN0LCBzaW5jZSB0aGUg
U1ZHU1ZHRWxlbWVudCBkb2VzIG5vdCByZS1ldmFsdWF0ZXMgaXRzIHZpZXdCb3guCisKKyAgICAg
ICAgU3RvcmUgYSBSZWZQdHIgdG8gdGhlIGN1cnJlbnRseSB1c2VkIFNWR1ZpZXdFbGVtZW50IGlu
IFNWR1NWR0VsZW1lbnQsIGFuZCBhIFdlYWtQdHIgYmFjaworICAgICAgICB0byB0aGUgU1ZHU1ZH
RWxlbWVudCB0aGF0IGN1cnJlbnRseSByZWZlcmVuY2VzIHRoZSBTVkdWaWV3RWxlbWVudC4gVGhp
cyBhbGxvd3MgdXMgdG8KKyAgICAgICAgcHJvcGFnYXRlIFNWR1ZpZXdFbGVtZW50IGF0dHJpYnV0
ZSBjaGFuZ2VzIHRvIFNWR1NWR0VsZW1lbnQgYW5kIHJlLWV2YWx1YXRlIHRoZSB2aWV3Qm94Cisg
ICAgICAgIHN0b3JlZCBpbiBTVkdTVkdFbGVtZW50IGFuZCB0cmlnZ2VyIHZpc3VhbCB1cGRhdGVz
LgorCisgICAgICAgIFRlc3RzOiBzdmcvY3VzdG9tL2FuaW1hdGlvbi1vbi12aWV3LWVsZW1lbnQu
aHRtbAorICAgICAgICAgICAgICAgc3ZnL2N1c3RvbS9tdWx0aXBsZS12aWV3LWVsZW1lbnRzLmh0
bWwKKworICAgICAgICAqIHN2Zy9TVkdTVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1NWR0VsZW1lbnQ6OnNjcm9sbFRvRnJhZ21lbnQpOgorICAgICAgICAqIHN2Zy9TVkdTVkdF
bGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1ZpZXdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1ZpZXdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKTogQWRkIG1pc3Npbmcg
aW1wbGVtZW50YXRpb24sIHRyYWNrZWQgYnkKKyAgICAgICAgd2Via2l0Lm9yZy9iLzE5NjU1NC4g
Q29ycmVjdGx5IGhhbmRsZSBTVkdGaXRUb1ZpZXdCb3ggcHJvcGVydHkgY2hhbmdlcy4gVXBkYXRl
IHRoZSB2aWV3Qm94CisgICAgICAgIHN0b3JlZCBpbiB0aGUgU1ZHU1ZHRWxlbWVudCwgdGhhdCBy
ZWZlcmVuY2VzIHRoZSBTVkdWaWV3RWxlbWVudC4gQWZ0ZXJ3YXJkcyBpbnZhbGlkYXRlIHRoZQor
ICAgICAgICByZW5kZXJlciBhc3NvY2lhdGVkIHdpdGggdGhlIFNWR1NWR0VsZW1lbnQsIHdoaWNo
IHByb3Blcmx5IHRyaWdnZXJzIHZpc3VhbCB1cGRhdGVzLgorICAgICAgICAqIHN2Zy9TVkdWaWV3
RWxlbWVudC5oOgorCiAyMDE5LTA5LTExICBBbGkgSnVtYSAgPGFqdW1hQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBQcmV2ZW50IHJlZW50cmFuY3kgRnJhbWVMb2FkZXI6OmRpc3BhdGNoVW5sb2Fk
RXZlbnRzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAppbmRleCBjNTdjZmZjNTkx
YWE4N2QwNGE4NmQ1OTBlM2U2NTcwNDIwZGViOTJjLi4yNzQwZjQ4MGVjZTllOWEzOGExMDlhMGMy
ZjhiYjczMTRhNGNmN2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFz
IFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSwgMjAwNiwgMjAxOSBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4K
ICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAxMCBSb2Ig
QnVpcyA8YnVpc0BrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDE0IEFkb2JlIFN5c3Rl
bXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtNjY2LDYgKzY2NiwxOSBA
QCBib29sIFNWR1NWR0VsZW1lbnQ6OnNjcm9sbFRvRnJhZ21lbnQoY29uc3QgU3RyaW5nJiBmcmFn
bWVudElkZW50aWZpZXIpCiAgICAgLy8gYXR0cmlidXRlcyBvbiB0aGUgY2xvc2VzdCBhbmNlc3Rv
ciAic3ZnIiBlbGVtZW50LgogICAgIGlmIChhdXRvKiB2aWV3RWxlbWVudCA9IGZpbmRWaWV3QW5j
aG9yKGZyYWdtZW50SWRlbnRpZmllcikpIHsKICAgICAgICAgaWYgKGF1dG8qIHJvb3RFbGVtZW50
ID0gZmluZFJvb3RBbmNob3Iodmlld0VsZW1lbnQpKSB7CisgICAgICAgICAgICBpZiAocm9vdEVs
ZW1lbnQtPm1fY3VycmVudFZpZXdFbGVtZW50KSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKHJv
b3RFbGVtZW50LT5tX2N1cnJlbnRWaWV3RWxlbWVudC0+dGFyZ2V0RWxlbWVudCgpID09IHJvb3RF
bGVtZW50KTsKKworICAgICAgICAgICAgICAgIC8vIElmIHRoZSB2aWV3RWxlbWVudCBoYXMgY2hh
bmdlZCwgcmVtb3ZlIHRoZSBsaW5rIGZyb20gdGhlIFNWR1ZpZXdFbGVtZW50IHRvIHRoZSBwcmV2
aW91c2x5IHNlbGVjdGVkIFNWR1NWR0VsZW1lbnQuCisgICAgICAgICAgICAgICAgaWYgKHJvb3RF
bGVtZW50LT5tX2N1cnJlbnRWaWV3RWxlbWVudCAhPSB2aWV3RWxlbWVudCkKKyAgICAgICAgICAg
ICAgICAgICAgcm9vdEVsZW1lbnQtPm1fY3VycmVudFZpZXdFbGVtZW50LT5yZXNldFRhcmdldEVs
ZW1lbnQoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHJvb3RFbGVtZW50LT5t
X2N1cnJlbnRWaWV3RWxlbWVudCAhPSB2aWV3RWxlbWVudCkgeworICAgICAgICAgICAgICAgIHJv
b3RFbGVtZW50LT5tX2N1cnJlbnRWaWV3RWxlbWVudCA9IHZpZXdFbGVtZW50OworICAgICAgICAg
ICAgICAgIHJvb3RFbGVtZW50LT5tX2N1cnJlbnRWaWV3RWxlbWVudC0+c2V0VGFyZ2V0RWxlbWVu
dCgqcm9vdEVsZW1lbnQpOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICByb290RWxlbWVu
dC0+aW5oZXJpdFZpZXdBdHRyaWJ1dGVzKCp2aWV3RWxlbWVudCk7CiAgICAgICAgICAgICBpZiAo
YXV0byogcmVuZGVyZXIgPSByb290RWxlbWVudC0+cmVuZGVyZXIoKSkKICAgICAgICAgICAgICAg
ICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxp
ZGF0aW9uKCpyZW5kZXJlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZH
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaAppbmRleCA5ZWFj
ZDgwOTFkYzExOTYxYTk2OTAxOTk3NjNmYzIwMjVkMjU3OGMwLi5jMTJjODRkM2JlODllNmE2N2Fi
MGM5NjY3MGI1YjIzNmRjY2E0MTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
U1ZHRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmgKQEAg
LTM2LDYgKzM2LDcgQEAgY2xhc3MgU1ZHTWF0cml4OwogY2xhc3MgU1ZHTnVtYmVyOwogY2xhc3Mg
U1ZHUmVjdDsKIGNsYXNzIFNWR1RyYW5zZm9ybTsKK2NsYXNzIFNWR1ZpZXdFbGVtZW50OwogY2xh
c3MgU1ZHVmlld1NwZWM7CiAKIGNsYXNzIFNWR1NWR0VsZW1lbnQgZmluYWwgOiBwdWJsaWMgU1ZH
R3JhcGhpY3NFbGVtZW50LCBwdWJsaWMgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgcHVi
bGljIFNWR0ZpdFRvVmlld0JveCwgcHVibGljIFNWR1pvb21BbmRQYW4gewpAQCAtMTI3LDYgKzEy
OCw4IEBAIHB1YmxpYzoKICAgICBTVkdBbmltYXRlZExlbmd0aCYgd2lkdGhBbmltYXRlZCgpIHsg
cmV0dXJuIG1fd2lkdGg7IH0KICAgICBTVkdBbmltYXRlZExlbmd0aCYgaGVpZ2h0QW5pbWF0ZWQo
KSB7IHJldHVybiBtX2hlaWdodDsgfQogCisgICAgdm9pZCBpbmhlcml0Vmlld0F0dHJpYnV0ZXMo
Y29uc3QgU1ZHVmlld0VsZW1lbnQmKTsKKwogcHJpdmF0ZToKICAgICBTVkdTVkdFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogICAgIHZpcnR1YWwgflNWR1NWR0VsZW1l
bnQoKTsKQEAgLTE0OSw3ICsxNTIsNiBAQCBwcml2YXRlOgogCiAgICAgQWZmaW5lVHJhbnNmb3Jt
IGxvY2FsQ29vcmRpbmF0ZVNwYWNlVHJhbnNmb3JtKFNWR0xvY2F0YWJsZTo6Q1RNU2NvcGUpIGNv
bnN0IG92ZXJyaWRlOwogICAgIFJlZlB0cjxGcmFtZT4gZnJhbWVGb3JDdXJyZW50U2NhbGUoKSBj
b25zdDsKLSAgICB2b2lkIGluaGVyaXRWaWV3QXR0cmlidXRlcyhjb25zdCBTVkdWaWV3RWxlbWVu
dCYpOwogICAgIFJlZjxOb2RlTGlzdD4gY29sbGVjdEludGVyc2VjdGlvbk9yRW5jbG9zdXJlTGlz
dChTVkdSZWN0JiwgU1ZHRWxlbWVudCosIGJvb2wgKCpjaGVja0Z1bmN0aW9uKShTVkdFbGVtZW50
JiwgU1ZHUmVjdCYpKTsKIAogICAgIFNWR1ZpZXdFbGVtZW50KiBmaW5kVmlld0FuY2hvcihjb25z
dCBTdHJpbmcmIGZyYWdtZW50SWRlbnRpZmllcikgY29uc3Q7CkBAIC0xNTksNiArMTYxLDcgQEAg
cHJpdmF0ZToKICAgICBib29sIG1fdXNlQ3VycmVudFZpZXcgeyBmYWxzZSB9OwogICAgIFJlZjxT
TUlMVGltZUNvbnRhaW5lcj4gbV90aW1lQ29udGFpbmVyOwogICAgIFJlZlB0cjxTVkdWaWV3U3Bl
Yz4gbV92aWV3U3BlYzsKKyAgICBSZWZQdHI8U1ZHVmlld0VsZW1lbnQ+IG1fY3VycmVudFZpZXdF
bGVtZW50OwogICAgIFN0cmluZyBtX2N1cnJlbnRWaWV3RnJhZ21lbnRJZGVudGlmaWVyOwogCiAg
ICAgUmVmPFNWR1BvaW50PiBtX2N1cnJlbnRUcmFuc2xhdGUgeyBTVkdQb2ludDo6Y3JlYXRlKCkg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuY3BwCmluZGV4IDI3MzM4MmNlNDBmNjg2
YjgwZTM2ZTkzNWFiZTY1NGIyZjI5YWM4NzIuLjY2MmYwNjUyMmVlZjE3MjdiNWNmNDQxMDg4YWRi
ZjlhYjZjMjBmMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmNwcApAQCAtMjIs
NyArMjIsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNWR1ZpZXdFbGVtZW50
LmgiCiAKKyNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZS5oIgogI2luY2x1ZGUgIlNWR05hbWVz
LmgiCisjaW5jbHVkZSAiU1ZHU1ZHRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1N0cmluZ0xpc3Qu
aCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCkBAIC02MSw0ICs2MywyNCBA
QCB2b2lkIFNWR1ZpZXdFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJgogICAgIFNWR1pvb21BbmRQYW46OnBhcnNlQXR0cmli
dXRlKG5hbWUsIHZhbHVlKTsKIH0KIAordm9pZCBTVkdWaWV3RWxlbWVudDo6c3ZnQXR0cmlidXRl
Q2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKK3sKKyAgICAvLyBXZSBpZ25v
cmUgY2hhbmdlcyB0byBTVkdOYW1lczo6dmlld1RhcmdldEF0dHIsIHdoaWNoIGlzIGRlcHJlY2F0
ZWQgYW5kIHVudXNlZCBpbiBXZWJDb3JlLgorICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tu
b3duQXR0cmlidXRlKGF0dHJOYW1lKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKFNWR0Zp
dFRvVmlld0JveDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKKyAgICAgICAgaWYgKG1f
dGFyZ2V0RWxlbWVudCkgeworICAgICAgICAgICAgbV90YXJnZXRFbGVtZW50LT5pbmhlcml0Vmll
d0F0dHJpYnV0ZXMoKnRoaXMpOworICAgICAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gbV90
YXJnZXRFbGVtZW50LT5yZW5kZXJlcigpKQorICAgICAgICAgICAgICAgIFJlbmRlclNWR1Jlc291
cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVy
KTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBTVkdFbGVtZW50
OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKKyAgICBTVkdFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkOjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKK30KKwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVmlld0VsZW1lbnQuaAppbmRleCA1MzhmODY0NDI0MzU5MWEwNDU3N2MxNTQ5NDQx
NmY2MGJlMDdjNzYyLi5mZTM3ZTkxNzgxNTk3YmQzN2NjNTJlM2RkNWQ4YzE2MGE0YmFiZWM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuaApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1
ZGUgIlNWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
LmgiCiAjaW5jbHVkZSAiU1ZHRml0VG9WaWV3Qm94LmgiCisjaW5jbHVkZSAiU1ZHU1ZHRWxlbWVu
dC5oIgogI2luY2x1ZGUgIlNWR1N0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJTVkdab29tQW5kUGFu
LmgiCiAKQEAgLTM5LDE5ICs0MCwyNCBAQCBwdWJsaWM6CiAKICAgICBSZWY8U1ZHU3RyaW5nTGlz
dD4gdmlld1RhcmdldCgpIHsgcmV0dXJuIG1fdmlld1RhcmdldC5jb3B5UmVmKCk7IH0KIAorICAg
IGNvbnN0IFNWR1NWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX3Rh
cmdldEVsZW1lbnQuZ2V0KCk7IH0KKyAgICB2b2lkIHNldFRhcmdldEVsZW1lbnQoY29uc3QgU1ZH
U1ZHRWxlbWVudCYgdGFyZ2V0RWxlbWVudCkgeyBtX3RhcmdldEVsZW1lbnQgPSBtYWtlV2Vha1B0
cih0YXJnZXRFbGVtZW50KTsgfQorICAgIHZvaWQgcmVzZXRUYXJnZXRFbGVtZW50KCkgeyBtX3Rh
cmdldEVsZW1lbnQgPSBudWxscHRyOyB9CisKIHByaXZhdGU6CiAgICAgU1ZHVmlld0VsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKICAgICB1c2luZyBQcm9wZXJ0eVJl
Z2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR1ZpZXdFbGVtZW50LCBTVkdFbGVt
ZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBTVkdGaXRUb1ZpZXdCb3g+OwogICAg
IGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KIAotICAgIC8vIEZJWE1FKHdlYmtpdC5v
cmcvYi8xOTY1NTQpOiBzdmdBdHRyaWJ1dGVDaGFuZ2VkIG1pc3NpbmcuCiAgICAgdm9pZCBwYXJz
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYpIGZpbmFs
OworICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3Zl
cnJpZGU7CiAKICAgICBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBm
aW5hbCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5
UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFJlZjxTVkdTdHJpbmdMaXN0PiBtX3ZpZXdUYXJnZXQg
eyBTVkdTdHJpbmdMaXN0OjpjcmVhdGUodGhpcykgfTsKKyAgICBXZWFrUHRyPFNWR1NWR0VsZW1l
bnQ+IG1fdGFyZ2V0RWxlbWVudCB7IG51bGxwdHIgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCBhM2UwZjhkNDVlNTE3M2U0NmIzN2ExMmVhMGVjNGYzN2Y1NzA1MTg3Li5h
YTUwZmQ3OTZmYjQwMzk5ODVmYmUzYTFkZTQ0MzFmNzI2MDljOTJhIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjIgQEAKKzIwMTktMDktMTMgIE5pa29sYXMgWmltbWVybWFubiAgPHppbW1lcm1hbm5Aa2RlLm9y
Zz4KKworICAgICAgICBTTUlMIGFuaW1hdGlvbnMgb2YgU1ZHIDx2aWV3PiBlbGVtZW50IGhhdmUg
bm8gZWZmZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05NDQ2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBuZXcgbGF5b3V0IHRlc3RzIHRvIHZlcmlmeSB0aGF0IGR5bmFtaWMgbW9kaWZpY2F0aW9u
cyBvZiB0aGUgPHZpZXc+IGVsZW1lbnQgY2F1c2UKKyAgICAgICAgdmlzdWFsIHVwZGF0ZXMuIFBy
ZXZpb3VzbHkgU1ZHU1ZHRWxlbWVudCB3YXMgbmV2ZXIgbm90aWZpZWQgYWJvdXQgY2hhbmdlcyBv
ZiB0aGUKKyAgICAgICAgU1ZHVmlld0VsZW1lbnQgYW5kIHRodXMgZGlkIG5vdCB1cGRhdGUgdGhl
IHN0b3JlZCB2aWV3Qm94LgorCisgICAgICAgICogc3ZnL2N1c3RvbS9hbmltYXRpb24tb24tdmll
dy1lbGVtZW50LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN2Zy9jdXN0b20vYW5p
bWF0aW9uLW9uLXZpZXctZWxlbWVudC5odG1sOiBBZGRlZC4gVGhpcyBpcyBhIG5ldyByZWZ0ZXN0
CisgICAgICAgIGRlbW9uc3RyYXRpbmcgdGhhdCBhbmltYXRpb25zIG9mIFNWRyA8dmlldz4gZWxl
bWVudHMgbm93IGJlaGF2ZSBhcyBleHBlY3RlZC4KKyAgICAgICAgKiBzdmcvY3VzdG9tL211bHRp
cGxlLXZpZXctZWxlbWVudHMtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogc3ZnL2N1
c3RvbS9tdWx0aXBsZS12aWV3LWVsZW1lbnRzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN2Zy9k
b20vU1ZHVmlld1NwZWMtbXVsdGlwbGUtdmlld3MtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN2
Zy9kb20vU1ZHVmlld1NwZWMtbXVsdGlwbGUtdmlld3MuaHRtbDogRXh0ZW5kIHRvIGNvdmVyIGR5
bmFtaWMgbW9kaWZpY2F0aW9ucy4KKwogMjAxOS0wOS0xMSAgRnJlZGVyaWMgV2FuZyAgPGZ3YW5n
QGlnYWxpYS5jb20+CiAKICAgICAgICAgQnVnIDIwMTYwMyAtIFN5bmNocm9uaXplIE1hdGhNTCBX
UFQgdGVzdHMgYWdhaW5zdCB1cHN0cmVhbQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2N1
c3RvbS9hbmltYXRpb24tb24tdmlldy1lbGVtZW50LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0
cy9zdmcvY3VzdG9tL2FuaW1hdGlvbi1vbi12aWV3LWVsZW1lbnQtZXhwZWN0ZWQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yMzYwYThjYzQ3ZjRiNTU0ZGNmNzg4MzMyOTk2ZDdhZTZmYzE4NDU5Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9hbmltYXRpb24tb24tdmlldy1lbGVt
ZW50LWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorICAgIDxzY3JpcHQ+CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCisgICAgICAgIGZ1bmN0
aW9uIGxvYWRlZCgpIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
ICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfQorICAgIDwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+CisgIDxpZnJhbWUgc3R5bGU9ImJvcmRlcjogbm9uZSIgb25s
b2FkPSJsb2FkZWQoKSIgd2lkdGg9JzIwMCcgaGVpZ2h0PScyMDAnIHNyYz0ncmVzb3VyY2VzL2Fu
aW1hdGlvbi1vbi12aWV3LWVsZW1lbnQuc3ZnJz48L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vYW5pbWF0aW9uLW9uLXZpZXctZWxl
bWVudC5odG1sIGIvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9hbmltYXRpb24tb24tdmlldy1lbGVt
ZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uM2RkNGRhYTE1MjhlZDI4ZjE1NzQ3OTI1MmQyMWRjYzk1ZDYz
NWI1NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vYW5pbWF0aW9u
LW9uLXZpZXctZWxlbWVudC5odG1sCkBAIC0wLDAgKzEsMTkgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0PgorICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworICAgICAgICBm
dW5jdGlvbiBsb2FkZWQoKSB7CisgICAgICAgICAgICB2YXIgc3ZnID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInN2Z0ZyYW1lIikuZ2V0U1ZHRG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQ7Cisg
ICAgICAgICAgICBzdmcuc2V0Q3VycmVudFRpbWUoNCk7IC8vIFBhc3QgZW5kIG9mIHRoZSBhbmlt
YXRpb24gaW4gdGhlIGVtYmVkZGVkIFNWRy4KKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAg
fQorICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgIDxpZnJhbWUgaWQ9InN2Z0ZyYW1l
IiBzdHlsZT0iYm9yZGVyOiBub25lIiBvbmxvYWQ9ImxvYWRlZCgpIiB3aWR0aD0nMjAwJyBoZWln
aHQ9JzIwMCcgc3JjPSdyZXNvdXJjZXMvYW5pbWF0aW9uLW9uLXZpZXctZWxlbWVudC5zdmcjY3Vz
dG9tVmlldyc+PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdmcvY3VzdG9tL211bHRpcGxlLXZpZXctZWxlbWVudHMtZXhwZWN0ZWQuaHRtbCBiL0xh
eW91dFRlc3RzL3N2Zy9jdXN0b20vbXVsdGlwbGUtdmlldy1lbGVtZW50cy1leHBlY3RlZC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjJjYjM5NGE1ZGYwM2JiYjQwZmJiZjBkYzMwY2EwZWFjYjFiMjY4OWMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL211bHRpcGxlLXZpZXctZWxl
bWVudHMtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDM3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdD4KKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKKyAgICAgICAgZnVu
Y3Rpb24gbG9hZGVkKCkgeworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
ICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICB9CisgICAgPC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9ImxvYWRlZCgpIj4KKyAgPGRpdiBzdHlsZT0i
ZGlzcGxheTogaW5saW5lIj4KKyAgICA8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiPgorICAgICAgPHJlY3QgeD0iMCIgeT0iMCIg
d2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIGZpbGw9ImdyZWVuIi8+CisgICAgPC9zdmc+CisgIDwv
ZGl2PgorICA8ZGl2IHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUiPgorICAgIDxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+CisgICAg
ICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCIgZmlsbD0iZ3JlZW4i
Lz4KKyAgICA8L3N2Zz4KKyAgPC9kaXY+CisgIDxici8+CisgIDxkaXYgc3R5bGU9ImRpc3BsYXk6
IGlubGluZSI+CisgICAgPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdp
ZHRoPSIyMDAiIGhlaWdodD0iMjAwIj4KKyAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIy
MDAiIGhlaWdodD0iMjAwIiBmaWxsPSJncmVlbiIvPgorICAgIDwvc3ZnPgorICA8L2Rpdj4KKyAg
PGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lIj4KKyAgICA8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiPgorICAgICAgPHJlY3Qg
eD0iMCIgeT0iMCIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIGZpbGw9ImdyZWVuIi8+CisgICAg
PC9zdmc+CisgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3ZnL2N1c3RvbS9tdWx0aXBsZS12aWV3LWVsZW1lbnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9z
dmcvY3VzdG9tL211bHRpcGxlLXZpZXctZWxlbWVudHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YmEzMzk5
NDU5YjcyYzhjMTkwOGFiNTc2NTk1NzNlNjhkODU3MjUxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvc3ZnL2N1c3RvbS9tdWx0aXBsZS12aWV3LWVsZW1lbnRzLmh0bWwKQEAgLTAsMCAr
MSwyMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQ+Cisg
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOworCisgICAgICAgIHZhciBlbGVtZW50c0xvYWRlZCA9IDA7CisgICAgICAg
IGZ1bmN0aW9uIGxvYWRlZCgpIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lciAm
JiArK2VsZW1lbnRzTG9hZGVkID09IDQpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICA8
aWZyYW1lIGlkPSJzdmdGcmFtZTEiIHN0eWxlPSJib3JkZXI6IG5vbmUiIG9ubG9hZD0ibG9hZGVk
KCkiIHdpZHRoPScyMDAnIGhlaWdodD0nMjAwJyBzcmM9Jy4uL2RvbS9yZXNvdXJjZXMvbXVsdGlw
bGUtdmlldy1lbGVtZW50cy5zdmcjdmlldzEnPjwvaWZyYW1lPgorICA8aWZyYW1lIGlkPSJzdmdG
cmFtZTIiIHN0eWxlPSJib3JkZXI6IG5vbmUiIG9ubG9hZD0ibG9hZGVkKCkiIHdpZHRoPScyMDAn
IGhlaWdodD0nMjAwJyBzcmM9Jy4uL2RvbS9yZXNvdXJjZXMvbXVsdGlwbGUtdmlldy1lbGVtZW50
cy5zdmcjdmlldzInPjwvaWZyYW1lPgorICA8YnIvPgorICA8aWZyYW1lIGlkPSJzdmdGcmFtZTMi
IHN0eWxlPSJib3JkZXI6IG5vbmUiIG9ubG9hZD0ibG9hZGVkKCkiIHdpZHRoPScyMDAnIGhlaWdo
dD0nMjAwJyBzcmM9Jy4uL2RvbS9yZXNvdXJjZXMvbXVsdGlwbGUtdmlldy1lbGVtZW50cy5zdmcj
c3ZnVmlldyh2aWV3Qm94KDUgMCAxMCAxNSk7dHJhbnNmb3JtKHNjYWxlKDIgMikpKSc+PC9pZnJh
bWU+CisgIDxpZnJhbWUgaWQ9InN2Z0ZyYW1lNCIgc3R5bGU9ImJvcmRlcjogbm9uZSIgb25sb2Fk
PSJsb2FkZWQoKSIgd2lkdGg9JzIwMCcgaGVpZ2h0PScyMDAnIHNyYz0nLi4vZG9tL3Jlc291cmNl
cy9tdWx0aXBsZS12aWV3LWVsZW1lbnRzLnN2ZyNzdmdWaWV3KHZpZXdCb3goMCAwIDEwIDE1KTt0
cmFuc2Zvcm0oc2NhbGUoMiAyKSk7cHJlc2VydmVBc3BlY3RSYXRpbyh4TWluWU1heCBtZWV0KSkn
PjwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Zn
L2N1c3RvbS9yZXNvdXJjZXMvYW5pbWF0aW9uLW9uLXZpZXctZWxlbWVudC5zdmcgYi9MYXlvdXRU
ZXN0cy9zdmcvY3VzdG9tL3Jlc291cmNlcy9hbmltYXRpb24tb24tdmlldy1lbGVtZW50LnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZGE5YTgwNmJhNWRkNjU3ZDBkNzM5NTg3NDdiZjg3M2E0MzkzMzYxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9yZXNvdXJjZXMvYW5pbWF0aW9u
LW9uLXZpZXctZWxlbWVudC5zdmcKQEAgLTAsMCArMSwxNiBAQAorPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMDAiIGhlaWdodD0iMjAwIj4KKyAgPGcgc3R5
bGU9ImZpbGw6IG5vbmU7IHN0cm9rZS13aWR0aDogMjQ7IHN0cm9rZS1saW5lY2FwOiByb3VuZCI+
CisgICAgPGcgc3R5bGU9InN0cm9rZTogI2M5ZWNiYSI+CisgICAgICA8bGluZSB4MT0iMjAiIHkx
PSIyMCIgeDI9Ijc1IiB5Mj0iMjAiLz4KKyAgICAgIDxsaW5lIHgxPSI0NyIgeTE9IjIwIiB4Mj0i
NDciIHkyPSI5NCIvPgorICAgIDwvZz4KKyAgICA8ZyBzdHlsZT0ic3Ryb2tlOiAjYjBmMmY0Ij4K
KyAgICAgIDxwYXRoIHN0eWxlPSJzdHJva2UtbGluZWpvaW46IHJvdW5kIiBkPSJtIDE2Ny41LDc2
IDEsNzQgLTQ2LDAgLTAuNSwtNzQiLz4KKyAgICAgIDxwYXRoIHN0eWxlPSJzdHJva2UtbGluZWpv
aW46IHNxdWFyZSIgZD0ibSA3NSw3NiwwLDc0LDQ1LDAiLz4KKyAgICA8L2c+CisgIDwvZz4KKwor
ICA8dmlldyBpZD0iY3VzdG9tVmlldyIgdmlld0JveD0iNjAgODUgMTIxIDc0Ij4KKyAgICA8YW5p
bWF0ZSBhdHRyaWJ1dGVOYW1lPSJ2aWV3Qm94IiBkdXI9IjJzIiBiZWdpbj0iMXMiIHRvPSIwIDAg
MjAwIDIwMCIgZmlsbD0iZnJlZXplIi8+CisgIDwvdmlldz4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdWaWV3U3BlYy1tdWx0aXBsZS12aWV3cy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9zdmcvZG9tL1NWR1ZpZXdTcGVjLW11bHRpcGxlLXZpZXdzLWV4cGVj
dGVkLnR4dAppbmRleCBiZmZiZDk3OGI0YWJkNTRmYmE1ZDBmNmRmMDFjNjJlNjc3YjIzYzAwLi40
OWQ1MmRhMTIyYWJhZTY4MmRiYTQ4ZjE3Y2E2ZjA1MjEwYzc4ZTQ4IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9zdmcvZG9tL1NWR1ZpZXdTcGVjLW11bHRpcGxlLXZpZXdzLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9zdmcvZG9tL1NWR1ZpZXdTcGVjLW11bHRpcGxlLXZpZXdzLWV4cGVj
dGVkLnR4dApAQCAtNTgsNiArNTgsMTUgQEAgUEFTUyBjdXJyZW50Vmlldy5wcmVzZXJ2ZUFzcGVj
dFJhdGlvU3RyaW5nIGlzICJ4TWlkWU1heCBzbGljZSIKIFBBU1MgY3VycmVudFZpZXcucHJlc2Vy
dmVBc3BlY3RSYXRpby5iYXNlVmFsLmFsaWduIGlzIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8uU1ZH
X1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1JRFlNQVgKIFBBU1MgY3VycmVudFZpZXcucHJlc2VydmVB
c3BlY3RSYXRpby5iYXNlVmFsLm1lZXRPclNsaWNlIGlzIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8u
U1ZHX01FRVRPUlNMSUNFX1NMSUNFCiAKK1Rlc3QgZHluYW1pYyBtb2RpZmljYXRpb25zIG9mIHRo
ZSAndmlldzInIGVsZW1lbnQKKworQ2hlY2sgdmlld0JveCB2YWx1ZSBhZnRlciBtb2RpZmljYXRp
b24KK1BBU1MgY3VycmVudFZpZXcudmlld0JveC5iYXNlVmFsLnggaXMgMTAKK1BBU1MgY3VycmVu
dFZpZXcudmlld0JveC5iYXNlVmFsLnkgaXMgMTAKK1BBU1MgY3VycmVudFZpZXcudmlld0JveC5i
YXNlVmFsLndpZHRoIGlzIDMwCitQQVNTIGN1cnJlbnRWaWV3LnZpZXdCb3guYmFzZVZhbC5oZWln
aHQgaXMgMzAKK1BBU1MgY3VycmVudFZpZXcudmlld0JveFN0cmluZyBpcyAiMTAgMTAgMzAgMzAi
CisKIExvYWRpbmcgZXh0ZXJuYWwgU1ZHIHJlc291cmNlcy9tdWx0aXBsZS12aWV3LWVsZW1lbnRz
LnN2ZyNzdmdWaWV3KHZpZXdCb3goMCAwIDEwIDE1KTt0cmFuc2Zvcm0oc2NhbGUoMiAyKSk7cHJl
c2VydmVBc3BlY3RSYXRpbyh4TWluWU1heCBtZWV0KSkuLi4KIAogVmVyaWZ5IHRoYXQgbm8gbG9h
ZCB3YXMgcGVyZm9ybWVkLCBidXQgb25seSBhIGRpZmZlcmVudCB2aWV3IHdhcyBzZXQgb24gdGhl
IHNhbWUgZG9jdW1lbnQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9kb20vU1ZHVmlld1Nw
ZWMtbXVsdGlwbGUtdmlld3MuaHRtbCBiL0xheW91dFRlc3RzL3N2Zy9kb20vU1ZHVmlld1NwZWMt
bXVsdGlwbGUtdmlld3MuaHRtbAppbmRleCA2MmEzMzQ5YTJlZmIxMWVhOWIyZGViMGYyNzY5N2Vi
OTg3NTI0NjQwLi5jYzU0Yjk4YzdkM2MwNzkyNDJkYWJiNDg3Yzk0ZWViZjUxMDJkY2E2IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9zdmcvZG9tL1NWR1ZpZXdTcGVjLW11bHRpcGxlLXZpZXdzLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdWaWV3U3BlYy1tdWx0aXBsZS12aWV3cy5o
dG1sCkBAIC05OCw2ICs5OCwxOCBAQCBmdW5jdGlvbiB0ZXN0U2Vjb25kVmlld0VsZW1lbnQoKSB7
CiAgICAgc2hvdWxkQmUoImN1cnJlbnRWaWV3LnByZXNlcnZlQXNwZWN0UmF0aW8uYmFzZVZhbC5h
bGlnbiIsICJTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLlNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hN
SURZTUFYIik7CiAgICAgc2hvdWxkQmUoImN1cnJlbnRWaWV3LnByZXNlcnZlQXNwZWN0UmF0aW8u
YmFzZVZhbC5tZWV0T3JTbGljZSIsICJTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLlNWR19NRUVUT1JT
TElDRV9TTElDRSIpOwogCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJUZXN0IGR5bmFtaWMg
bW9kaWZpY2F0aW9ucyBvZiB0aGUgJ3ZpZXcyJyBlbGVtZW50Iik7CisgICAgaWZyYW1lRWxlbWVu
dC5jb250ZW50RG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEVsZW1lbnRCeUlkKCJ2aWV3MiIp
LnNldEF0dHJpYnV0ZSgidmlld0JveCIsICIxMCAxMCAzMCAzMCIpOworCisgICAgZGVidWcoIiIp
OworICAgIGRlYnVnKCJDaGVjayB2aWV3Qm94IHZhbHVlIGFmdGVyIG1vZGlmaWNhdGlvbiIpOwor
ICAgIHNob3VsZEJlKCJjdXJyZW50Vmlldy52aWV3Qm94LmJhc2VWYWwueCIsICIxMCIpOworICAg
IHNob3VsZEJlKCJjdXJyZW50Vmlldy52aWV3Qm94LmJhc2VWYWwueSIsICIxMCIpOworICAgIHNo
b3VsZEJlKCJjdXJyZW50Vmlldy52aWV3Qm94LmJhc2VWYWwud2lkdGgiLCAiMzAiKTsKKyAgICBz
aG91bGRCZSgiY3VycmVudFZpZXcudmlld0JveC5iYXNlVmFsLmhlaWdodCIsICIzMCIpOworICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygiY3VycmVudFZpZXcudmlld0JveFN0cmluZyIsICIxMCAx
MCAzMCAzMCIpOworCiAgICAgbmV4dFZpZXcgPSAiI3N2Z1ZpZXcodmlld0JveCgwIDAgMTAgMTUp
O3RyYW5zZm9ybShzY2FsZSgyIDIpKTtwcmVzZXJ2ZUFzcGVjdFJhdGlvKHhNaW5ZTWF4IG1lZXQp
KSI7CiAgICAgZGVidWcoIiIpOwogICAgIGRlYnVnKCJMb2FkaW5nIGV4dGVybmFsIFNWRyAiICsg
ZXh0ZXJuYWxTVkdGaWxlTmFtZSArIG5leHRWaWV3ICsgIi4uLiIpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>