<?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>209370</bug_id>
          
          <creation_ts>2020-03-20 18:21:26 -0700</creation_ts>
          <short_desc>REGRESSION: CSS animations inside an embedded SVG image do not animate</short_desc>
          <delta_ts>2020-05-18 20:12:09 -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>Animations</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>BrowserCompat, InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>tym46383</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>graouts</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>josh</cc>
    
    <cc>kangil.han</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1632411</commentid>
    <comment_count>0</comment_count>
    <who name="">tym46383</who>
    <bug_when>2020-03-20 18:21:26 -0700</bug_when>
    <thetext>On this site, https://css-tricks.com/having-fun-with-link-hover-effects/, the wavy line a:hover effect is supposed to animate but it doesn&apos;t. The rest of the examples provided all seem to animate correctly otherwise.

This page mentions its inspiration as coming from https://theoutline.com/post/5970/unconventional-wisdom-emotional-readiness-is-bullshit. The hover effects here don&apos;t work, either. I thought that this issue might only apply to link states, but none of the decorative lines animate either. They do in Firefox.

This happens in the WebKit Nightly as well as on iPadOS 13.4 beta 6. I tried adding the -webkit prefix but the results are the same.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632412</commentid>
    <comment_count>1</comment_count>
    <who name="">tym46383</who>
    <bug_when>2020-03-20 18:35:56 -0700</bug_when>
    <thetext>(In reply to tym46383 from comment #0)
&gt; On this site, https://css-tricks.com/having-fun-with-link-hover-effects/,
&gt; the wavy line a:hover effect is supposed to animate but it doesn&apos;t. The rest
&gt; of the examples provided all seem to animate correctly otherwise.
&gt; 
&gt; This page mentions its inspiration as coming from
&gt; https://theoutline.com/post/5970/unconventional-wisdom-emotional-readiness-
&gt; is-bullshit. The hover effects here don&apos;t work, either. I thought that this
&gt; issue might only apply to link states, but none of the decorative lines
&gt; animate either. They do in Firefox.
&gt; 
&gt; This happens in the WebKit Nightly as well as on iPadOS 13.4 beta 6. I tried
&gt; adding the -webkit prefix but the results are the same.

Actually, I just noticed that the horizontal &quot;Border to Background Effect&quot; (https://codepen.io/geoffgraham/pen/qMbVGv) fades from orange to bluish-gray in WebKit before fading to white. In Firefox it goes from orange to white. But this and the rest of the examples aren&apos;t SVG animations so it&apos;s not especially relevant to this bug I suppose.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632562</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-03-21 18:51:38 -0700</bug_when>
    <thetext>&lt;rdar://problem/60733068&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632913</commentid>
    <comment_count>3</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-03-23 10:21:17 -0700</bug_when>
    <thetext>https://theoutline.com/post/5970/unconventional-wisdom-emotional-readiness-is-bullshit shows the issue without hovering links right at the top of the page where I can see the dividing wavy line animate in Firefox but not in STP 102. This is not new with the Web Animations implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632917</commentid>
    <comment_count>4</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-03-23 10:28:28 -0700</bug_when>
    <thetext>The animation is performed by a CSS animation in an SVG document, https://theoutline.com/svg/sq/v?c=ffffff&amp;a=4&amp;f=5&amp;sw=1&amp;anim=true. You can change the store color by modifying the URL to https://theoutline.com/svg/sq/v?c=000000&amp;a=4&amp;f=5&amp;sw=1&amp;anim=true, and this shows the animation working as expected. This is probably an issue where SVG images in background-image don&apos;t run animations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635374</commentid>
    <comment_count>5</comment_count>
    <who name="TG">mumblecrust</who>
    <bug_when>2020-03-29 13:58:12 -0700</bug_when>
    <thetext>Confirming this bug in Safari 13.1 (15609.1.20.111.8) and STP Release 103. SVG keyframe animations on CSS background-image attributes aren&apos;t rendering properly, but the animations will render if the SVG is opened/displayed directly in a browser window.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637284</commentid>
    <comment_count>6</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-04-03 02:12:09 -0700</bug_when>
    <thetext>This is a regression due to Web Animations introduced in Safari 13.1. Looking for a fix now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637319</commentid>
    <comment_count>7</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-04-03 05:48:04 -0700</bug_when>
    <thetext>The DocumentTimeline schedules an initial update but its current time never advances.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637321</commentid>
    <comment_count>8</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-04-03 06:01:26 -0700</bug_when>
    <thetext>In DisplayRefreshMonitorMac::requestRefreshCallback():

        CVReturn error = CVDisplayLinkCreateWithCGDisplay(displayID(), &amp;m_displayLink);
        if (error)
            return false;

We get an error and bail early, never registering for an actual callback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637322</commentid>
    <comment_count>9</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-04-03 06:02:29 -0700</bug_when>
    <thetext>The legacy animation engine uses a different codepath presumably, since DisplayRefreshMonitorMac::requestRefreshCallback() is never called.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637325</commentid>
    <comment_count>10</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-04-03 06:15:46 -0700</bug_when>
    <thetext>The displayID passed to CVDisplayLinkCreateWithCGDisplay is 0, presumably that&apos;s an invalid value. Maybe this is because this is the Page for an SVGDocument?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637339</commentid>
    <comment_count>11</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-04-03 07:13:01 -0700</bug_when>
    <thetext>When I open the SVG file by itself, the code never goes through DisplayRefreshMonitorMac::requestRefreshCallback() in Source/WebCore/platform/graphics/mac/DisplayRefreshMonitorMac.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637361</commentid>
    <comment_count>12</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-04-03 08:24:31 -0700</bug_when>
    <thetext>This also affects &lt;img&gt; elements pointing to SVG documents.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637367</commentid>
    <comment_count>13</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-04-03 08:36:00 -0700</bug_when>
    <thetext>A simple reduction:

&lt;img src=&apos;data:image/svg+xml;utf8,&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;&lt;style&gt;@keyframes animate { to { opacity: 0 } } rect { animation: animate 0.5s infinite alternate }&lt;/style&gt;&lt;rect width=&quot;100%&quot; height=&quot;100%&quot;&gt;&lt;/rect&gt;&lt;/svg&gt;&apos;&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637368</commentid>
    <comment_count>14</comment_count>
      <attachid>395379</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-04-03 08:36:33 -0700</bug_when>
    <thetext>Created attachment 395379
Test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637446</commentid>
    <comment_count>15</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-04-03 10:59:48 -0700</bug_when>
    <thetext>The CSS animation DocumentTimeline is added to the SVGDocument of the embedded SVGImage. This SVGDocument is not enumerate-able by Page::forEachDocument(), so we never call updateAnimationsAndSendEvents() for it.

I am not sure what the right solution is: 
1. Should we add the DocumentTimeline to the topDocument?
2. Should we make Page::forEachDocument() enumerate through the SVGDocuments of the embedded SVGImages also?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637461</commentid>
    <comment_count>16</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-04-03 11:21:31 -0700</bug_when>
    <thetext>(In reply to Said Abou-Hallawa from comment #15)
&gt; The CSS animation DocumentTimeline is added to the SVGDocument of the
&gt; embedded SVGImage. This SVGDocument is not enumerate-able by
&gt; Page::forEachDocument(), so we never call updateAnimationsAndSendEvents()
&gt; for it.
&gt; 
&gt; I am not sure what the right solution is: 
&gt; 1. Should we add the DocumentTimeline to the topDocument?
&gt; 2. Should we make Page::forEachDocument() enumerate through the SVGDocuments
&gt; of the embedded SVGImages also?

I&apos;ve been talking about this with Simon and he reckons what we need to do is to make Chrome::displayID() return the hosting page&apos;s displayID such that the call to CVDisplayLinkCreateWithCGDisplay doesn&apos;t fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637489</commentid>
    <comment_count>17</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-04-03 12:33:07 -0700</bug_when>
    <thetext>I think SVGImageChromeClient should implement something that allows the ImageObserver to implement schduleRenderingUpdate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637499</commentid>
    <comment_count>18</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-04-03 13:02:00 -0700</bug_when>
    <thetext>(In reply to Antoine Quint from comment #16)
&gt; (In reply to Said Abou-Hallawa from comment #15)
&gt; &gt; The CSS animation DocumentTimeline is added to the SVGDocument of the
&gt; &gt; embedded SVGImage. This SVGDocument is not enumerate-able by
&gt; &gt; Page::forEachDocument(), so we never call updateAnimationsAndSendEvents()
&gt; &gt; for it.
&gt; &gt; 
&gt; &gt; I am not sure what the right solution is: 
&gt; &gt; 1. Should we add the DocumentTimeline to the topDocument?
&gt; &gt; 2. Should we make Page::forEachDocument() enumerate through the SVGDocuments
&gt; &gt; of the embedded SVGImages also?
&gt; 
&gt; I&apos;ve been talking about this with Simon and he reckons what we need to do is
&gt; to make Chrome::displayID() return the hosting page&apos;s displayID such that
&gt; the call to CVDisplayLinkCreateWithCGDisplay doesn&apos;t fail.

DisplayRefreshMonitorMac is only used by WK1 and the bug is happening in WK2 as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637580</commentid>
    <comment_count>19</comment_count>
      <attachid>395420</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-04-03 17:22:41 -0700</bug_when>
    <thetext>Created attachment 395420
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637583</commentid>
    <comment_count>20</comment_count>
      <attachid>395420</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-04-03 17:32:46 -0700</bug_when>
    <thetext>Comment on attachment 395420
Patch

Something is still missing in this patch. WebAnimation should be enabled for top-level SVGDocument but not for the embedded ones.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637597</commentid>
    <comment_count>21</comment_count>
      <attachid>395420</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-04-03 18:07:29 -0700</bug_when>
    <thetext>Comment on attachment 395420
Patch

This doesn&apos;t seem like the right approach (and we also want to eliminate the old animation code eventually).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637620</commentid>
    <comment_count>22</comment_count>
      <attachid>395432</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-04-03 21:43:37 -0700</bug_when>
    <thetext>Created attachment 395432
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637621</commentid>
    <comment_count>23</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-04-03 21:45:35 -0700</bug_when>
    <thetext>(In reply to Said Abou-Hallawa from comment #22)
&gt; Created attachment 395432 [details]
&gt; Patch

This patch is not the right approach. But it is fixes bug and it does not break the top-level case. Besides it has layout tests. Just ignore it for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638479</commentid>
    <comment_count>24</comment_count>
      <attachid>395659</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-04-07 01:16:30 -0700</bug_when>
    <thetext>Created attachment 395659
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638483</commentid>
    <comment_count>25</comment_count>
      <attachid>395662</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-04-07 01:29:08 -0700</bug_when>
    <thetext>Created attachment 395662
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638624</commentid>
    <comment_count>26</comment_count>
      <attachid>395662</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-04-07 10:26:55 -0700</bug_when>
    <thetext>Comment on attachment 395662
Patch

Two problems with this patch:
1. It fixes the case where the SVG image is embedded in an &lt;img&gt; element. But it does not fix the case where the SVG image is the background of an element.
2. It has to enumerate the RendererImages of every document in each Page::updateRendering() regardless they have SVG images or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638721</commentid>
    <comment_count>27</comment_count>
      <attachid>395723</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-04-07 12:25:15 -0700</bug_when>
    <thetext>Created attachment 395723
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638723</commentid>
    <comment_count>28</comment_count>
      <attachid>395723</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-04-07 12:30:13 -0700</bug_when>
    <thetext>Comment on attachment 395723
Patch

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

&gt; Source/WebCore/page/Page.cpp:1312
&gt; +    if (chrome().client().isSVGImageChromeClient())
&gt; +        chrome().client().scheduleRenderingUpdate();

This is weird, because ChromeClient is a virtual interface. Maybe Chrome::scheduleRenderingUpdate() could just return a bool  - true if it handled it.

&gt; Source/WebCore/page/Page.cpp:1374
&gt; +        for (auto&amp; renderer : descendantsOfType&lt;RenderElement&gt;(*renderView))
&gt; +            renderer.updateRendering();

This is a massive tree walk! I think we need to avoid this by storing a list of SVGImages somewhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638847</commentid>
    <comment_count>29</comment_count>
      <attachid>395750</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-04-07 15:31:21 -0700</bug_when>
    <thetext>Created attachment 395750
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638924</commentid>
    <comment_count>30</comment_count>
      <attachid>395750</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-04-07 20:33:28 -0700</bug_when>
    <thetext>Comment on attachment 395750
Patch

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

&gt; Source/WebCore/dom/Document.cpp:6401
&gt; +    for (auto&amp; cachedResourceHandle : m_cachedResourceLoader-&gt;allCachedResources().values()) {
&gt; +        auto* cachedResource = cachedResourceHandle.get();
&gt; +        if (!cachedResource || !cachedResource-&gt;isImage())
&gt; +            continue;
&gt; +        
&gt; +        auto* image = downcast&lt;CachedImage&gt;(cachedResource)-&gt;image();
&gt; +        if (!image || !is&lt;SVGImage&gt;(image))
&gt; +            continue;
&gt; +
&gt; +        if (auto* page = downcast&lt;SVGImage&gt;(image)-&gt;page())
&gt; +            page-&gt;updateRendering();
&gt; +    }

Please measure how long this takes on some resource-heavy pages (throw in a TimingScope in your local release build). It might be too expensive to do every frame.

&gt; Source/WebCore/page/Page.cpp:1311
&gt; +    if (chrome().client().isSVGImageChromeClient())
&gt; +        chrome().client().scheduleRenderingUpdate();

Can we do this through virtual functions, as I suggested before?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639256</commentid>
    <comment_count>31</comment_count>
      <attachid>395859</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-04-08 13:07:40 -0700</bug_when>
    <thetext>Created attachment 395859
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639257</commentid>
    <comment_count>32</comment_count>
      <attachid>395750</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-04-08 13:13:39 -0700</bug_when>
    <thetext>Comment on attachment 395750
Patch

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

&gt;&gt; Source/WebCore/dom/Document.cpp:6401
&gt;&gt; +    }
&gt; 
&gt; Please measure how long this takes on some resource-heavy pages (throw in a TimingScope in your local release build). It might be too expensive to do every frame.

I changed that by building a HashSet&lt;String&gt; which contains the URLs of the cached SVGImages when the documentDidFinishLoadEvent fires. This HashSet&lt;&gt; will be used to get the list of the SVGImages in a document instead. So building HashSet&lt;String&gt; happens only once and enumerating this HashSet is cheap. If the HashSet is empty, which is the common case, there should not be any noticeable overhead in the Page::updateRendering().

&gt;&gt; Source/WebCore/page/Page.cpp:1311
&gt;&gt; +        chrome().client().scheduleRenderingUpdate();
&gt; 
&gt; Can we do this through virtual functions, as I suggested before?

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639265</commentid>
    <comment_count>33</comment_count>
      <attachid>395860</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-04-08 13:30:26 -0700</bug_when>
    <thetext>Created attachment 395860
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639269</commentid>
    <comment_count>34</comment_count>
      <attachid>395860</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-04-08 13:42:37 -0700</bug_when>
    <thetext>Comment on attachment 395860
Patch

This patch does not fix the animation in https://css-tricks.com/having-fun-with-link-hover-effects/.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639464</commentid>
    <comment_count>35</comment_count>
      <attachid>395907</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-04-08 21:10:31 -0700</bug_when>
    <thetext>Created attachment 395907
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639710</commentid>
    <comment_count>36</comment_count>
      <attachid>395907</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-04-09 10:33:50 -0700</bug_when>
    <thetext>Comment on attachment 395907
Patch

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

&gt; Source/WebCore/loader/cache/CachedResourceLoader.h:121
&gt; +    Vector&lt;SVGImage*&gt; allCachedSVGImages() const;

I think this should return Vector&lt;Ref&lt;SVGImage&gt;&gt;

&gt; Source/WebCore/page/ChromeClient.h:319
&gt; +    virtual bool scheduleTimedRenderingUpdate() { return false; }

Why do we need to expose the &quot;timed&quot; version here?

&gt; Source/WebCore/page/Page.cpp:1370
&gt; +        for (auto* image : document.cachedResourceLoader().allCachedSVGImages()) {

This becomes for (auto image : ...

&gt; Source/WebCore/svg/graphics/SVGImage.h:72
&gt; +    Page* page() { return m_page.get(); }

Because this is so special, I would call it internalPage() or something. It&apos;s not the Page that the image lives in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639764</commentid>
    <comment_count>37</comment_count>
      <attachid>395986</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-04-09 12:03:43 -0700</bug_when>
    <thetext>Created attachment 395986
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639770</commentid>
    <comment_count>38</comment_count>
      <attachid>395907</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-04-09 12:10:17 -0700</bug_when>
    <thetext>Comment on attachment 395907
Patch

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

&gt;&gt; Source/WebCore/loader/cache/CachedResourceLoader.h:121
&gt;&gt; +    Vector&lt;SVGImage*&gt; allCachedSVGImages() const;
&gt; 
&gt; I think this should return Vector&lt;Ref&lt;SVGImage&gt;&gt;

Done.

&gt;&gt; Source/WebCore/page/ChromeClient.h:319
&gt;&gt; +    virtual bool scheduleTimedRenderingUpdate() { return false; }
&gt; 
&gt; Why do we need to expose the &quot;timed&quot; version here?

Because the immediate scheduleRenderingUpdate() is used by RenderLayerCompositor. All the callers including the WebAnimation use scheduleTimedRenderingUpdate(). The immediate scheduling was implemented to fix many layout test flakiness where waiting for the next frame was producing incorrect results.

&gt;&gt; Source/WebCore/page/Page.cpp:1370
&gt;&gt; +        for (auto* image : document.cachedResourceLoader().allCachedSVGImages()) {
&gt; 
&gt; This becomes for (auto image : ...

But I had to make it for (auto&amp; image : ... because Ref&lt;SVGImage&gt; can&apos;t be copied.

&gt;&gt; Source/WebCore/svg/graphics/SVGImage.h:72
&gt;&gt; +    Page* page() { return m_page.get(); }
&gt; 
&gt; Because this is so special, I would call it internalPage() or something. It&apos;s not the Page that the image lives in.

Done: page() =&gt; internalPage().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639776</commentid>
    <comment_count>39</comment_count>
      <attachid>395988</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-04-09 12:22:51 -0700</bug_when>
    <thetext>Created attachment 395988
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639887</commentid>
    <comment_count>40</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-09 14:46:02 -0700</bug_when>
    <thetext>Committed r259830: &lt;https://trac.webkit.org/changeset/259830&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 395988.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653880</commentid>
    <comment_count>41</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-05-18 20:12:09 -0700</bug_when>
    <thetext>*** Bug 211922 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>395379</attachid>
            <date>2020-04-03 08:36:33 -0700</date>
            <delta_ts>2020-04-03 08:36:33 -0700</delta_ts>
            <desc>Test</desc>
            <filename>reduction.html</filename>
            <type>text/html</type>
            <size>229</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">PGltZyBzcmM9J2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIj48c3R5bGU+QGtleWZyYW1lcyBhbmltYXRlIHsgdG8geyBvcGFjaXR5
OiAwIH0gfSByZWN0IHsgYW5pbWF0aW9uOiBhbmltYXRlIDAuNXMgaW5maW5pdGUgYWx0ZXJuYXRl
IH08L3N0eWxlPjxyZWN0IHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiPjwvcmVjdD48L3N2Zz4n
Pg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395420</attachid>
            <date>2020-04-03 17:22:41 -0700</date>
            <delta_ts>2020-04-03 21:43:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209370-20200403172240.patch</filename>
            <type>text/plain</type>
            <size>5011</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1OTUyMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDIwLTA0LTAzICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lP
TjogQ1NTIGFuaW1hdGlvbnMgaW5zaWRlIGFuIGVtYmVkZGVkIFNWRyBpbWFnZSBkbyBub3QgYW5p
bWF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5
MzcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSWYg
V2ViQW5pbWF0aW9uIGlzIGVuYWJsZWQgYW5kIHRoZSBTVkdJbWFnZSBpbmNsdWRlcyBDU1MgYW5p
bWF0aW9ucywgdGhlCisgICAgICAgIERvY3VtZW50VGltZWxpbmUgaXMgYWRkZWQgdG8gdGhlIFNW
R0RvY3VtZW50IG9mIHRoZSBlbWJlZGRlZCBTVkdJbWFnZS4KKyAgICAgICAgVGhpcyBTVkdEb2N1
bWVudCBpcyBub3QgZW51bWVyYXRlLWFibGUgYnkgUGFnZTo6Zm9yRWFjaERvY3VtZW50KCksIHNv
IHdlCisgICAgICAgIG5ldmVyIGNhbGwgdXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHMoKSBm
b3IgaXQuCisKKyAgICAgICAgVGhlIFNWR0ltYWdlIGhhcyBpdHMgb3duIFBhZ2UgYW5kIERvY3Vt
ZW50LiBCdXQgaXQgZG9lcyBub3QgbmVlZCB0byBydW4KKyAgICAgICAgYW55IG9mIHRoZSBSZW5k
ZXJpbmdVcGRhdGUgc3RlcHMgZXhjZXB0IHRoZSBDU1MgYW5pbWF0aW9uLiBTbyBJIGRvIG5vdAor
ICAgICAgICB0aGluayB0aGlzIGhhcyB0byBnbyB0aHJvdWdoIHRoZSBXZWJBbWltYXRpb24gY29k
ZSBwYXRoLgorCisgICAgICAgIFNvIHRoZSBmaXggaXMgdG8gZGlzYWJsZSB0aGUgV2ViQW5pbWF0
aW9ucyBmb3IgZW1iZWRkZWQgU1ZHSW1hZ2VzLgorCisgICAgICAgIFRlc3Q6IHN2Zy9hbmltYXRp
b25zL2Nzcy1hbmltYXRpb24tZW1iZWRkZWQtc3ZnLmh0bWwKKworICAgICAgICAqIHN0eWxlL1N0
eWxlVHJlZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2
ZXI6OmNyZWF0ZUFuaW1hdGVkRWxlbWVudFVwZGF0ZSk6CisKIDIwMjAtMDQtMDMgIFNpaHVpIExp
dSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CiAKICAgICAgICAgQVNTRVJUSU9OIEZBSUxFRDogb2Jq
ZWN0U3RvcmVJbmZvIGluIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwCShyZXZpc2lvbiAyNTkz
NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgogI2lu
Y2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgi
CisjaW5jbHVkZSAiU1ZHRG9jdW1lbnQuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1
ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJTdHlsZUFkanVzdGVyLmgiCkBAIC0zMTAsNyAr
MzExLDcgQEAgRWxlbWVudFVwZGF0ZSBUcmVlUmVzb2x2ZXI6OmNyZWF0ZUFuaW1hdAogICAgIE9w
dGlvblNldDxBbmltYXRpb25JbXBhY3Q+IGFuaW1hdGlvbkltcGFjdDsKIAogICAgIC8vIE5ldyBj
b2RlIHBhdGggZm9yIENTUyBBbmltYXRpb25zIGFuZCBDU1MgVHJhbnNpdGlvbnMuCi0gICAgaWYg
KFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViQW5pbWF0aW9uc0NT
U0ludGVncmF0aW9uRW5hYmxlZCgpKSB7CisgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OnNoYXJlZEZlYXR1cmVzKCkud2ViQW5pbWF0aW9uc0NTU0ludGVncmF0aW9uRW5hYmxlZCgpICYm
ICFpczxTVkdEb2N1bWVudD4obV9kb2N1bWVudCkpIHsKICAgICAgICAgLy8gRmlyc3QsIHdlIG5l
ZWQgdG8gbWFrZSBzdXJlIHRoYXQgYW55IG5ldyBDU1MgYW5pbWF0aW9uIG9jY3VyaW5nIG9uIHRo
aXMgZWxlbWVudCBoYXMgYSBtYXRjaGluZyBXZWJBbmltYXRpb24KICAgICAgICAgLy8gb24gdGhl
IGRvY3VtZW50IHRpbWVsaW5lLiBOb3RlIHRoYXQgd2UgZ2V0IHRpbWVsaW5lKCkgb24gdGhlIERv
Y3VtZW50IGhlcmUgYmVjYXVzZSB3ZSBuZWVkIGEgdGltZWxpbmUgY3JlYXRlZAogICAgICAgICAv
LyBpbiBjYXNlIG5vIFdlYiBBbmltYXRpb25zIGhhdmUgYmVlbiBjcmVhdGVkIHRocm91Z2ggdGhl
IEpTIEFQSS4KSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1OTQzNCkKKysrIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDIwLTA0LTAzICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lP
TjogQ1NTIGFuaW1hdGlvbnMgaW5zaWRlIGFuIGVtYmVkZGVkIFNWRyBpbWFnZSBkbyBub3QgYW5p
bWF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5
MzcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBz
dmcvYW5pbWF0aW9ucy9jc3MtYW5pbWF0aW9uLWVtYmVkZGVkLXN2Zy1leHBlY3RlZC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBzdmcvYW5pbWF0aW9ucy9jc3MtYW5pbWF0aW9uLWVtYmVkZGVkLXN2
Zy5odG1sOiBBZGRlZC4KKwogMjAyMC0wNC0wMiAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhh
bGxhd2FAYXBwbGUuY29tPgogCiAgICAgICAgIFsgaU9TIHdrMiBdIGZhc3QvaW1hZ2VzL2V4aWYt
b3JpZW50YXRpb24tYmFja2dyb3VuZC1pbWFnZS1yZXBlYXQuaHRtbCBpcyBmbGFreSBmYWlsaW5n
LgpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvY3NzLWFuaW1hdGlvbi1lbWJlZGRl
ZC1zdmctZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0
aW9ucy9jc3MtYW5pbWF0aW9uLWVtYmVkZGVkLXN2Zy1leHBlY3RlZC5odG1sCShub25leGlzdGVu
dCkKKysrIExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL2Nzcy1hbmltYXRpb24tZW1iZWRkZWQt
c3ZnLWV4cGVjdGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMiBAQAorPHN0eWxl
PgorICAgIGltZyB7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBw
eDsKKyAgICB9Cis8L3N0eWxlPgorPGJvZHk+CisgICAgPGltZyBzcmM9J2RhdGE6aW1hZ2Uvc3Zn
K3htbDt1dGY4LAorICAgICAgICA8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyI+CisgICAgICAgICAgICA8cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJn
cmVlbiIvPgorICAgICAgICA8L3N2Zz4nPgorPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvc3Zn
L2FuaW1hdGlvbnMvY3NzLWFuaW1hdGlvbi1lbWJlZGRlZC1zdmcuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9jc3MtYW5pbWF0aW9uLWVtYmVkZGVkLXN2Zy5o
dG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL2Nzcy1hbmlt
YXRpb24tZW1iZWRkZWQtc3ZnLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMSBAQAor
PHN0eWxlPgorICAgIGltZyB7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0
OiAxMDBweDsKKyAgICB9Cis8L3N0eWxlPgorPGJvZHk+CisgICAgPGltZyBzcmM9J2RhdGE6aW1h
Z2Uvc3ZnK3htbDt1dGY4LAorICAgICAgICA8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyI+CisgICAgICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAgICAgQGtleWZyYW1l
cyBmYWRlaW4geworICAgICAgICAgICAgICAgICAgICBmcm9tIHsgb3BhY2l0eTowOyB9CisgICAg
ICAgICAgICAgICAgICAgIHRvIHsgb3BhY2l0eToxOyB9CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIHJlY3QgeyAKKyAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uOiBmYWRl
aW4gMTZtczsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICA8L3N0eWxlPgorICAgICAg
ICAgICAgPHJlY3Qgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0iZ3JlZW4iLz4KKyAg
ICAgICAgPC9zdmc+Jz4KKyAgICA8c2NyaXB0PgorICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAg
ICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
ICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395432</attachid>
            <date>2020-04-03 21:43:37 -0700</date>
            <delta_ts>2020-04-07 01:16:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209370-20200403214336.patch</filename>
            <type>text/plain</type>
            <size>10066</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1OTUyNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDIwLTA0LTAzICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lP
TjogQ1NTIGFuaW1hdGlvbnMgaW5zaWRlIGFuIGVtYmVkZGVkIFNWRyBpbWFnZSBkbyBub3QgYW5p
bWF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5
MzcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSWYg
V2ViQW5pbWF0aW9uIGlzIGVuYWJsZWQgYW5kIHRoZSBTVkdJbWFnZSBpbmNsdWRlcyBDU1MgYW5p
bWF0aW9ucywgdGhlCisgICAgICAgIERvY3VtZW50VGltZWxpbmUgaXMgYWRkZWQgdG8gdGhlIFNW
R0RvY3VtZW50IG9mIHRoZSBlbWJlZGRlZCBTVkdJbWFnZS4KKyAgICAgICAgVGhpcyBTVkdEb2N1
bWVudCBpcyBub3QgZW51bWVyYXRlLWFibGUgYnkgUGFnZTo6Zm9yRWFjaERvY3VtZW50KCksIHNv
IHdlCisgICAgICAgIG5ldmVyIGNhbGwgdXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHMoKSBm
b3IgaXQuCisKKyAgICAgICAgVGhlIFNWR0ltYWdlIGhhcyBpdHMgb3duIFBhZ2UgYW5kIERvY3Vt
ZW50LiBCdXQgaXQgZG9lcyBub3QgbmVlZCB0byBydW4KKyAgICAgICAgYW55IG9mIHRoZSBSZW5k
ZXJpbmdVcGRhdGUgc3RlcHMgZXhjZXB0IHRoZSBDU1MgYW5pbWF0aW9uLiBTbyBJIGRvIG5vdAor
ICAgICAgICB0aGluayB0aGlzIGhhcyB0byBnbyB0aHJvdWdoIHRoZSBXZWJBbWltYXRpb24gY29k
ZSBwYXRoLgorCisgICAgICAgIFNvIHRoZSBmaXggaXMgdG8gZGlzYWJsZSB0aGUgV2ViQW5pbWF0
aW9ucyBmb3IgZW1iZWRkZWQgU1ZHSW1hZ2VzLgorCisgICAgICAgIFRlc3RzOiBzdmcvYW5pbWF0
aW9ucy9jc3MtYW5pbWF0aW9uLWVtYmVkZGVkLXN2Zy5odG1sCisgICAgICAgICAgICAgICBzdmcv
YW5pbWF0aW9ucy9jc3MtYW5pbWF0aW9uLWlubGluZS1zdmcuaHRtbAorICAgICAgICAgICAgICAg
c3ZnL2FuaW1hdGlvbnMvY3NzLWFuaW1hdGlvbi10b3AtZG9jdW1lbnQtc3ZnLmh0bWwKKworICAg
ICAgICAqIHN0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjppc0luU1ZHSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlRyZWVSZXNvbHZl
cjo6Y3JlYXRlQW5pbWF0ZWRFbGVtZW50VXBkYXRlKToKKwogMjAyMC0wNC0wMyAgSmFjayBMZWUg
IDxzaGloY2hpZWhfbGVlQGFwcGxlLmNvbT4KIAogICAgICAgICBQcm90ZWN0IGNvbnRlbnRGcmFt
ZSBpbiBTdWJmcmFtZUxvYWRlcjo6bG9hZE9yUmVkaXJlY3RTdWJmcmFtZSB3aXRoIFJlZlB0ci4K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAJKHJldmlz
aW9uIDI1OTM3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsOCBAQAogCiAjaW5jbHVkZSAiQ1NTQW5pbWF0
aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkNTU0ZvbnRTZWxlY3Rvci5oIgorI2luY2x1ZGUg
IkNocm9tZS5oIgorI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIkNvbXBvc2Vk
VHJlZUFuY2VzdG9ySXRlcmF0b3IuaCIKICNpbmNsdWRlICJDb21wb3NlZFRyZWVJdGVyYXRvci5o
IgogI2luY2x1ZGUgIkRvY3VtZW50VGltZWxpbmUuaCIKQEAgLTMwMyw2ICszMDUsMTMgQEAgY29u
c3QgUmVuZGVyU3R5bGUqIFRyZWVSZXNvbHZlcjo6cGFyZW50QgogICAgIH0KIH0KIAorc3RhdGlj
IGlubGluZSBib29sIGlzSW5TVkdJbWFnZShjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCit7Cisg
ICAgaWYgKGF1dG8qIHBhZ2UgPSBkb2N1bWVudC5wYWdlKCkpCisgICAgICAgIHJldHVybiBwYWdl
LT5jaHJvbWUoKS5jbGllbnQoKS5pc1NWR0ltYWdlQ2hyb21lQ2xpZW50KCk7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCiBFbGVtZW50VXBkYXRlIFRyZWVSZXNvbHZlcjo6Y3JlYXRlQW5pbWF0ZWRF
bGVtZW50VXBkYXRlKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gbmV3U3R5bGUsIEVsZW1l
bnQmIGVsZW1lbnQsIENoYW5nZSBwYXJlbnRDaGFuZ2UpCiB7CiAgICAgYXV0byogb2xkU3R5bGUg
PSBlbGVtZW50LnJlbmRlck9yRGlzcGxheUNvbnRlbnRzU3R5bGUoKTsKQEAgLTMxMCw3ICszMTks
NyBAQCBFbGVtZW50VXBkYXRlIFRyZWVSZXNvbHZlcjo6Y3JlYXRlQW5pbWF0CiAgICAgT3B0aW9u
U2V0PEFuaW1hdGlvbkltcGFjdD4gYW5pbWF0aW9uSW1wYWN0OwogCiAgICAgLy8gTmV3IGNvZGUg
cGF0aCBmb3IgQ1NTIEFuaW1hdGlvbnMgYW5kIENTUyBUcmFuc2l0aW9ucy4KLSAgICBpZiAoUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJBbmltYXRpb25zQ1NTSW50
ZWdyYXRpb25FbmFibGVkKCkpIHsKKyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hh
cmVkRmVhdHVyZXMoKS53ZWJBbmltYXRpb25zQ1NTSW50ZWdyYXRpb25FbmFibGVkKCkgJiYgIWlz
SW5TVkdJbWFnZShtX2RvY3VtZW50KSkgewogICAgICAgICAvLyBGaXJzdCwgd2UgbmVlZCB0byBt
YWtlIHN1cmUgdGhhdCBhbnkgbmV3IENTUyBhbmltYXRpb24gb2NjdXJpbmcgb24gdGhpcyBlbGVt
ZW50IGhhcyBhIG1hdGNoaW5nIFdlYkFuaW1hdGlvbgogICAgICAgICAvLyBvbiB0aGUgZG9jdW1l
bnQgdGltZWxpbmUuIE5vdGUgdGhhdCB3ZSBnZXQgdGltZWxpbmUoKSBvbiB0aGUgRG9jdW1lbnQg
aGVyZSBiZWNhdXNlIHdlIG5lZWQgYSB0aW1lbGluZSBjcmVhdGVkCiAgICAgICAgIC8vIGluIGNh
c2Ugbm8gV2ViIEFuaW1hdGlvbnMgaGF2ZSBiZWVuIGNyZWF0ZWQgdGhyb3VnaCB0aGUgSlMgQVBJ
LgpAQCAtMzMyLDcgKzM0MSw3IEBAIEVsZW1lbnRVcGRhdGUgVHJlZVJlc29sdmVyOjpjcmVhdGVB
bmltYXQKICAgICB9CiAKICAgICAvLyBPbGQgY29kZSBwYXRoIGZvciBDU1MgQW5pbWF0aW9ucyBh
bmQgQ1NTIFRyYW5zaXRpb25zLgotICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hh
cmVkRmVhdHVyZXMoKS53ZWJBbmltYXRpb25zQ1NTSW50ZWdyYXRpb25FbmFibGVkKCkpIHsKKyAg
ICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViQW5pbWF0
aW9uc0NTU0ludGVncmF0aW9uRW5hYmxlZCgpIHx8IGlzSW5TVkdJbWFnZShtX2RvY3VtZW50KSkg
ewogICAgICAgICBhdXRvJiBhbmltYXRpb25Db250cm9sbGVyID0gbV9kb2N1bWVudC5mcmFtZSgp
LT5hbmltYXRpb24oKTsKIAogICAgICAgICBhdXRvIGFuaW1hdGlvblVwZGF0ZSA9IGFuaW1hdGlv
bkNvbnRyb2xsZXIudXBkYXRlQW5pbWF0aW9ucyhlbGVtZW50LCAqbmV3U3R5bGUsIG9sZFN0eWxl
KTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1OTQzNCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDIwLTA0LTAzICBTYWlkIEFib3UtSGFs
bGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTjogQ1NT
IGFuaW1hdGlvbnMgaW5zaWRlIGFuIGVtYmVkZGVkIFNWRyBpbWFnZSBkbyBub3QgYW5pbWF0ZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5MzcwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdmcvYW5p
bWF0aW9ucy9jc3MtYW5pbWF0aW9uLWVtYmVkZGVkLXN2Zy1leHBlY3RlZC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBzdmcvYW5pbWF0aW9ucy9jc3MtYW5pbWF0aW9uLWVtYmVkZGVkLXN2Zy5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvYW5pbWF0aW9ucy9jc3MtYW5pbWF0aW9uLWlubGluZS1z
dmctZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogc3ZnL2FuaW1hdGlvbnMvY3NzLWFu
aW1hdGlvbi1pbmxpbmUtc3ZnLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN2Zy9hbmltYXRpb25z
L2Nzcy1hbmltYXRpb24tdG9wLWRvY3VtZW50LXN2Zy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBzdmcvYW5pbWF0aW9ucy9jc3MtYW5pbWF0aW9uLXRvcC1kb2N1bWVudC1zdmcuaHRt
bDogQWRkZWQuCisKIDIwMjAtMDQtMDIgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdh
QGFwcGxlLmNvbT4KIAogICAgICAgICBbIGlPUyB3azIgXSBmYXN0L2ltYWdlcy9leGlmLW9yaWVu
dGF0aW9uLWJhY2tncm91bmQtaW1hZ2UtcmVwZWF0Lmh0bWwgaXMgZmxha3kgZmFpbGluZy4KSW5k
ZXg6IExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL2Nzcy1hbmltYXRpb24tZW1iZWRkZWQtc3Zn
LWV4cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMv
Y3NzLWFuaW1hdGlvbi1lbWJlZGRlZC1zdmctZXhwZWN0ZWQuaHRtbAkobm9uZXhpc3RlbnQpCisr
KyBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9jc3MtYW5pbWF0aW9uLWVtYmVkZGVkLXN2Zy1l
eHBlY3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKKzxzdHlsZT4KKyAg
ICBpbWcgeworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7Cisg
ICAgfQorPC9zdHlsZT4KKzxib2R5PgorICAgIDxpbWcgc3JjPSdkYXRhOmltYWdlL3N2Zyt4bWw7
dXRmOCwKKyAgICAgICAgPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgor
ICAgICAgICAgICAgPHJlY3Qgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0iZ3JlZW4i
Lz4KKyAgICAgICAgPC9zdmc+Jz4KKzwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL3N2Zy9hbmlt
YXRpb25zL2Nzcy1hbmltYXRpb24tZW1iZWRkZWQtc3ZnLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvY3NzLWFuaW1hdGlvbi1lbWJlZGRlZC1zdmcuaHRtbAko
bm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9jc3MtYW5pbWF0aW9u
LWVtYmVkZGVkLXN2Zy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzYgQEAKKzxzdHls
ZT4KKyAgICBpbWcgeworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAw
cHg7CisgICAgfQorPC9zdHlsZT4KKzxib2R5PgorICAgIDxpbWcgc3JjPSdkYXRhOmltYWdlL3N2
Zyt4bWw7dXRmOCwKKyAgICAgICAgPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciPgorICAgICAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgICAgIEBrZXlmcmFtZXMgZmFk
ZWluIHsKKyAgICAgICAgICAgICAgICAgICAgZnJvbSB7IG9wYWNpdHk6MDsgfQorICAgICAgICAg
ICAgICAgICAgICB0byB7IG9wYWNpdHk6MTsgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAjZ3JlZW4geyAKKyAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uOiBmYWRlaW4g
MTZtczsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICA8L3N0eWxlPgorICAgICAgICAg
ICAgPHJlY3Qgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0icmVkIi8+CisgICAgICAg
ICAgICA8cmVjdCBpZD0iZ3JlZW4iIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9Imdy
ZWVuIi8+CisgICAgICAgIDwvc3ZnPic+CisgICAgPHNjcmlwdD4KKyAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisK
KyAgICAgICAgdmFyIHJBRkNvdW50ID0gMDsKKyAgICAgICAgZnVuY3Rpb24gYW5pbWF0ZSh0aW1l
c3RhbXApIHsKKyAgICAgICAgICAgIGlmICgrK3JBRkNvdW50IDwgMTApCisgICAgICAgICAgICAg
ICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShhbmltYXRlKTsKKyAgICAgICAgICAgIGVs
c2UgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOworICAgICAgICB9CisKKyAgICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25G
cmFtZShhbmltYXRlKTsKKyAgICA8L3NjcmlwdD4KKzwvYm9keT4KSW5kZXg6IExheW91dFRlc3Rz
L3N2Zy9hbmltYXRpb25zL2Nzcy1hbmltYXRpb24taW5saW5lLXN2Zy1leHBlY3RlZC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL2Nzcy1hbmltYXRpb24taW5s
aW5lLXN2Zy1leHBlY3RlZC5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL3N2Zy9h
bmltYXRpb25zL2Nzcy1hbmltYXRpb24taW5saW5lLXN2Zy1leHBlY3RlZC5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTEgQEAKKzxzdHlsZT4KKyAgICBzdmcgeworICAgICAgICB3aWR0
aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgfQorPC9zdHlsZT4KKzxib2R5
PgorICAgIDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KKyAgICAgICAg
PHJlY3QgaWQ9ImdyZWVuIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJncmVlbiIv
PgorICAgIDwvc3ZnPgorPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMv
Y3NzLWFuaW1hdGlvbi1pbmxpbmUtc3ZnLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
c3ZnL2FuaW1hdGlvbnMvY3NzLWFuaW1hdGlvbi1pbmxpbmUtc3ZnLmh0bWwJKG5vbmV4aXN0ZW50
KQorKysgTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvY3NzLWFuaW1hdGlvbi1pbmxpbmUtc3Zn
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMyBAQAorPHN0eWxlPgorICAgIHN2ZyB7
CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICB9Cisg
ICAgQGtleWZyYW1lcyBmYWRlaW4geworICAgICAgICBmcm9tIHsgb3BhY2l0eTowOyB9CisgICAg
ICAgIHRvIHsgb3BhY2l0eToxOyB9CisgICAgfQorICAgICNncmVlbiB7IAorICAgICAgICBhbmlt
YXRpb246IGZhZGVpbiAxNm1zOworICAgIH0KKzwvc3R5bGU+Cis8Ym9keT4KKyAgICA8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CisgICAgICAgIDxyZWN0IHdpZHRoPSIx
MDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InJlZCIvPgorICAgICAgICA8cmVjdCBpZD0iZ3JlZW4i
IHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9ImdyZWVuIi8+CisgICAgPC9zdmc+Cisg
ICAgPHNjcmlwdD4KKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAg
dGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKKyAgICAgICAgdmFyIHJBRkNvdW50ID0gMDsK
KyAgICAgICAgZnVuY3Rpb24gYW5pbWF0ZSh0aW1lc3RhbXApIHsKKyAgICAgICAgICAgIGlmICgr
K3JBRkNvdW50IDwgMTApCisgICAgICAgICAgICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25G
cmFtZShhbmltYXRlKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICB9CisKKyAg
ICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShhbmltYXRlKTsKKyAgICA8L3Njcmlw
dD4KKzwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL2Nzcy1hbmltYXRp
b24tdG9wLWRvY3VtZW50LXN2Zy1leHBlY3RlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3N2Zy9hbmltYXRpb25zL2Nzcy1hbmltYXRpb24tdG9wLWRvY3VtZW50LXN2Zy1leHBlY3Rl
ZC5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL2Nzcy1h
bmltYXRpb24tdG9wLWRvY3VtZW50LXN2Zy1leHBlY3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsOSBAQAorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgor
ICAgIDxzdHlsZT4KKyAgICAgICAgc3ZnIHsKKyAgICAgICAgICAgIHdpZHRoOiAxMDBweDsKKyAg
ICAgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgIH0KKyAgICA8L3N0eWxlPgorICAgIDxy
ZWN0IGlkPSJncmVlbiIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0iZ3JlZW4iLz4K
Kzwvc3ZnPgpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvY3NzLWFuaW1hdGlvbi10
b3AtZG9jdW1lbnQtc3ZnLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2FuaW1h
dGlvbnMvY3NzLWFuaW1hdGlvbi10b3AtZG9jdW1lbnQtc3ZnLmh0bWwJKG5vbmV4aXN0ZW50KQor
KysgTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvY3NzLWFuaW1hdGlvbi10b3AtZG9jdW1lbnQt
c3ZnLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMSBAQAorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgorICAgIDxzdHlsZT4KKyAgICAgICAgc3ZnIHsKKyAg
ICAgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAg
ICAgIH0KKyAgICAgICAgQGtleWZyYW1lcyBmYWRlaW4geworICAgICAgICAgICAgZnJvbSB7IG9w
YWNpdHk6MDsgfQorICAgICAgICAgICAgdG8geyBvcGFjaXR5OjE7IH0KKyAgICAgICAgfQorICAg
ICAgICAjZ3JlZW4geyAKKyAgICAgICAgICAgIGFuaW1hdGlvbjogZmFkZWluIDE2bXM7CisgICAg
ICAgIH0KKyAgICA8L3N0eWxlPgorICAgIDxyZWN0IHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUi
IGZpbGw9InJlZCIvPgorICAgIDxyZWN0IGlkPSJncmVlbiIgd2lkdGg9IjEwMCUiIGhlaWdodD0i
MTAwJSIgZmlsbD0iZ3JlZW4iLz4KKyAgICA8c2NyaXB0PgorICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworICAg
ICAgICB2YXIgckFGQ291bnQgPSAwOworICAgICAgICBmdW5jdGlvbiBhbmltYXRlKHRpbWVzdGFt
cCkgeworICAgICAgICAgICAgaWYgKCsrckFGQ291bnQgPCAxMCkKKyAgICAgICAgICAgICAgICB3
aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGFuaW1hdGUpOworICAgICAgICAgICAgZWxzZSBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7CisgICAgICAgIH0KKworICAgICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1l
KGFuaW1hdGUpOworICAgIDwvc2NyaXB0PgorPC9zdmc+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395659</attachid>
            <date>2020-04-07 01:16:30 -0700</date>
            <delta_ts>2020-04-07 01:29:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209370-20200407011629.patch</filename>
            <type>text/plain</type>
            <size>15636</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1OTYyOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDIwLTA0LTA3ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lP
TjogQ1NTIGFuaW1hdGlvbnMgaW5zaWRlIGFuIGVtYmVkZGVkIFNWRyBpbWFnZSBkbyBub3QgYW5p
bWF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5
MzcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSWYg
V2ViQW5pbWF0aW9uIGlzIGVuYWJsZWQgYW5kIHRoZSBTVkdJbWFnZSBpbmNsdWRlcyBDU1MgYW5p
bWF0aW9ucywgdGhlCisgICAgICAgIERvY3VtZW50VGltZWxpbmUgaXMgYWRkZWQgdG8gdGhlIFNW
R0RvY3VtZW50IG9mIHRoZSBlbWJlZGRlZCBTVkdJbWFnZS4KKyAgICAgICAgQmVjYXVzZSB0aGUg
U1ZHSW1hZ2UgaGFzIGl0cyBvd24gUGFnZSwgdGhlIFJlbmRlcmluZ1VwZGF0ZSBpcyBzY2hlZHVs
ZWQKKyAgICAgICAgYW5kIHRoZSB1cGRhdGVSZW5kZXJpbmcgc3RlcHMgcnVuIGluIHRoaXMgUGFn
ZS4gVGhlIFBhZ2Ugb2YgdGhlIFNWR0ltYWdlCisgICAgICAgIGlzIHNwZWNpYWwgc28gc2NoZWR1
bGluZyB0aGUgUmVuZGVyaW5nVXBkYXRlIGZhaWxzOyB0aGVyZWZvcmUgdGhlCisgICAgICAgIHVw
ZGF0ZVJlbmRlcmluZyBzdGVwcyBuZXZlciBydW4gYW5kIHRoZSBDU1MgYW5pbWF0aW9uIG5ldmVy
IGFkdmFuY2VzLgorCisgICAgICAgIFRoZSBmaXggaXMgdG8gc2NoZWR1bGUgdGhlIFJlbmRlcmlu
Z1VwZGF0ZSBpbiB0aGUgUGFnZSB3aGljaCBjb250YWlucyB0aGUKKyAgICAgICAgcmVuZGVyZXIg
b2YgdGhlIFNWR0ltYWdlLiBXaGVuIHJ1bm5pbmcgdGhlIHVwZGF0ZVJlbmRlcmluZyBzdGVwcywg
dGhpcworICAgICAgICBQYWdlIGhhcyB0byBlbnVtZXJhdGUgdGhlIHJlbmRlcmVycyBvZiBTVkdJ
bWFnZXMgYW5kIHJ1biB0aGUgdXBkYXRlUmVuZGVyaW5nCisgICAgICAgIHN0ZXBzIGluIHRoZSBQ
YWdlcyBvZiB0aGUgU1ZHSW1hZ2VzIGFzIHdlbGwuCisKKyAgICAgICAgVGVzdDogc3ZnL2FuaW1h
dGlvbnMvY3NzLWFuaW1hdGlvbi1lbWJlZGRlZC1zdmcuaHRtbAorCisgICAgICAgICogYW5pbWF0
aW9uL0RvY3VtZW50VGltZWxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaW1l
bGluZTo6c2NoZWR1bGVBbmltYXRpb25SZXNvbHV0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50VGltZWxpbmU6OnVwZGF0ZUFuaW1hdGlvbnNBbmRTZW5kRXZlbnRzKToKKyAgICAgICAg
KiBodG1sL0ltYWdlQml0bWFwLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZEltYWdlOjpDYWNoZWRJbWFnZU9ic2VydmVyOjpzY2hlZHVsZVJlbmRlcmluZ1Vw
ZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6c2NoZWR1bGVSZW5kZXJpbmdV
cGRhdGUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZUNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkSW1hZ2VDbGllbnQ6OnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKToKKyAgICAgICAgKiBwYWdl
L1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2NoZWR1bGVUaW1lZFJlbmRlcmlu
Z1VwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp1cGRhdGVSZW5kZXJpbmcpOgorICAg
ICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT2Jz
ZXJ2ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVySW1hZ2U6OnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckltYWdlOjp1cGRhdGVSZW5kZXJpbmcpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJJbWFnZS5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5oOgor
ICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUNsaWVudHMuaDoKKwogMjAyMC0wNC0wNiAg
SmFjayBMZWUgIDxzaGloY2hpZWhfbGVlQGFwcGxlLmNvbT4KIAogICAgICAgICBOdWxscHRyIGNy
YXNoIGluIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpzcGxpdFRyZWVUb05vZGUgd2hlbiBpbnNlcnRp
bmcgaW1hZ2UgaW4gYW5jaG9yIGVsZW1lbnQgdGhhdCBoYXMgdW5lZGl0YWJsZSBwYXJlbnQKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHAJKHJl
dmlzaW9uIDI1OTU2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVs
aW5lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzM5LDcgKzMzOSw3IEBAIHZvaWQgRG9jdW1lbnRU
aW1lbGluZTo6c2NoZWR1bGVBbmltYXRpb24KICAgICBpZiAoIXNob3VsZFJ1blVwZGF0ZUFuaW1h
dGlvbnNBbmRTZW5kRXZlbnRzSWdub3JpbmdTdXNwZW5zaW9uU3RhdGUoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgbV9kb2N1bWVudC0+cGFnZSgpLT5yZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIo
KS5zY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCk7CisgICAgbV9kb2N1bWVudC0+cGFnZSgp
LT5zY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCk7CiAgICAgbV9hbmltYXRpb25SZXNvbHV0
aW9uU2NoZWR1bGVkID0gdHJ1ZTsKIH0KIApAQCAtMzY0LDcgKzM2NCw2IEBAIHZvaWQgRG9jdW1l
bnRUaW1lbGluZTo6dXBkYXRlQ3VycmVudFRpbWUKIAogdm9pZCBEb2N1bWVudFRpbWVsaW5lOjp1
cGRhdGVBbmltYXRpb25zQW5kU2VuZEV2ZW50cygpCiB7Ci0KICAgICAvLyBVcGRhdGluZyBhbmlt
YXRpb25zIGFuZCBzZW5kaW5nIGV2ZW50cyBtYXkgaW52YWxpZGF0ZSB0aGUgdGltaW5nIG9mIHNv
bWUgYW5pbWF0aW9ucywgc28gd2UgbXVzdCBzZXQgdGhlIG1fYW5pbWF0aW9uUmVzb2x1dGlvblNj
aGVkdWxlZAogICAgIC8vIGZsYWcgdG8gZmFsc2UgcHJpb3IgdG8gcnVubmluZyB0aGF0IHByb2Nl
ZHVyZSB0byBhbGxvdyBhbmltYXRpb24gd2l0aCB0aW1pbmcgbW9kZWwgdXBkYXRlcyB0byBzY2hl
ZHVsZSB1cGRhdGVzLgogICAgIG1fYW5pbWF0aW9uUmVzb2x1dGlvblNjaGVkdWxlZCA9IGZhbHNl
OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAJKHJldmlzaW9uIDI1OTU2MCkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01MjgsNiArNTI4LDcgQEAgcHVibGljOgogICAgIGJvb2wgY2FuRGVzdHJveURlY29kZWREYXRh
KGNvbnN0IEltYWdlJikgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgaW1hZ2VG
cmFtZUF2YWlsYWJsZShjb25zdCBJbWFnZSYsIEltYWdlQW5pbWF0aW5nU3RhdGUsIGNvbnN0IElu
dFJlY3QqID0gbnVsbHB0ciwgRGVjb2RpbmdTdGF0dXMgPSBEZWNvZGluZ1N0YXR1czo6SW52YWxp
ZCkgb3ZlcnJpZGUgeyB9CiAgICAgdm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiwgY29u
c3QgSW50UmVjdCogPSBudWxscHRyKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHNjaGVkdWxlUmVu
ZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJikgb3ZlcnJpZGUgeyB9CiAKIHByaXZhdGU6CiAgICAg
SW1hZ2VCaXRtYXBJbWFnZU9ic2VydmVyKFN0cmluZyBtaW1lVHlwZSwgbG9uZyBsb25nIGV4cGVj
dGVkQ29udGVudExlbmd0aCwgY29uc3QgVVJMJiBzb3VyY2VVcmwpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL0VtcHR5Q2xpZW50cy5oCShyZXZpc2lvbiAyNTk1NjApCisrKyBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1MSw3ICsxNTEsNyBA
QCBjbGFzcyBFbXB0eUNocm9tZUNsaWVudCA6IHB1YmxpYyBDaHJvbWVDCiAgICAgdm9pZCBhdHRh
Y2hSb290R3JhcGhpY3NMYXllcihGcmFtZSYsIEdyYXBoaWNzTGF5ZXIqKSBmaW5hbCB7IH0KICAg
ICB2b2lkIGF0dGFjaFZpZXdPdmVybGF5R3JhcGhpY3NMYXllcihHcmFwaGljc0xheWVyKikgZmlu
YWwgeyB9CiAgICAgdm9pZCBzZXROZWVkc09uZVNob3REcmF3aW5nU3luY2hyb25pemF0aW9uKCkg
ZmluYWwgeyB9Ci0gICAgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpIGZpbmFsIHsgfQor
ICAgIHZvaWQgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKSBvdmVycmlkZSB7IH0KIAogI2lmIFBM
QVRGT1JNKFdJTikKICAgICB2b2lkIHNldExhc3RTZXRDdXJzb3JUb0N1cnJlbnRDdXJzb3IoKSBm
aW5hbCB7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
LmNwcAkocmV2aXNpb24gMjU5NTYwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDM0LDYgKzQzNCwxMiBAQCB2b2lkIENh
Y2hlZEltYWdlOjpDYWNoZWRJbWFnZU9ic2VydmVyOjpjCiAgICAgICAgIGNhY2hlZEltYWdlLT5j
aGFuZ2VkSW5SZWN0KGltYWdlLCByZWN0KTsKIH0KIAordm9pZCBDYWNoZWRJbWFnZTo6Q2FjaGVk
SW1hZ2VPYnNlcnZlcjo6c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoY29uc3QgSW1hZ2UmIGltYWdl
KQoreworICAgIGZvciAoYXV0byBjYWNoZWRJbWFnZSA6IG1fY2FjaGVkSW1hZ2VzKQorICAgICAg
ICBjYWNoZWRJbWFnZS0+c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoaW1hZ2UpOworfQorCiBpbmxp
bmUgdm9pZCBDYWNoZWRJbWFnZTo6Y2xlYXJJbWFnZSgpCiB7CiAgICAgaWYgKCFtX2ltYWdlKQpA
QCAtNjg0LDYgKzY5MCwxNiBAQCB2b2lkIENhY2hlZEltYWdlOjpjaGFuZ2VkSW5SZWN0KGNvbnN0
IEltCiAgICAgbm90aWZ5T2JzZXJ2ZXJzKHJlY3QpOwogfQogCit2b2lkIENhY2hlZEltYWdlOjpz
Y2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShjb25zdCBJbWFnZSYgaW1hZ2UpCit7CisgICAgaWYgKCZp
bWFnZSAhPSBtX2ltYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBDYWNoZWRSZXNvdXJjZUNs
aWVudFdhbGtlcjxDYWNoZWRJbWFnZUNsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7CisgICAgd2hp
bGUgKGF1dG8qIGNsaWVudCA9IHdhbGtlci5uZXh0KCkpCisgICAgICAgIGNsaWVudC0+c2NoZWR1
bGVSZW5kZXJpbmdVcGRhdGUoKTsKK30KKwogYm9vbCBDYWNoZWRJbWFnZTo6Y3VycmVudEZyYW1l
S25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyKQogewogICAgIElt
YWdlKiBpbWFnZSA9IGltYWdlRm9yUmVuZGVyZXIocmVuZGVyZXIpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgJKHJldmlzaW9uIDI1OTU2MCkKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTIsNiArMTUyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBjYW5EZXN0cm95RGVjb2Rl
ZERhdGEoY29uc3QgSW1hZ2UmKSBmaW5hbDsKICAgICAgICAgdm9pZCBpbWFnZUZyYW1lQXZhaWxh
YmxlKGNvbnN0IEltYWdlJiwgSW1hZ2VBbmltYXRpbmdTdGF0ZSwgY29uc3QgSW50UmVjdCogY2hh
bmdlUmVjdCA9IG51bGxwdHIsIERlY29kaW5nU3RhdHVzID0gRGVjb2RpbmdTdGF0dXM6OkludmFs
aWQpIGZpbmFsOwogICAgICAgICB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2UmLCBjb25z
dCBJbnRSZWN0KikgZmluYWw7CisgICAgICAgIHZvaWQgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUo
Y29uc3QgSW1hZ2UmKSBmaW5hbDsKIAogICAgICAgICBIYXNoU2V0PENhY2hlZEltYWdlKj4gbV9j
YWNoZWRJbWFnZXM7CiAgICAgfTsKQEAgLTE2Miw2ICsxNjMsNyBAQCBwcml2YXRlOgogICAgIGJv
b2wgY2FuRGVzdHJveURlY29kZWREYXRhKGNvbnN0IEltYWdlJik7CiAgICAgdm9pZCBpbWFnZUZy
YW1lQXZhaWxhYmxlKGNvbnN0IEltYWdlJiwgSW1hZ2VBbmltYXRpbmdTdGF0ZSwgY29uc3QgSW50
UmVjdCogY2hhbmdlUmVjdCA9IG51bGxwdHIsIERlY29kaW5nU3RhdHVzID0gRGVjb2RpbmdTdGF0
dXM6OkludmFsaWQpOwogICAgIHZvaWQgY2hhbmdlZEluUmVjdChjb25zdCBJbWFnZSYsIGNvbnN0
IEludFJlY3QqKTsKKyAgICB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdl
Jik7CiAKICAgICB2b2lkIHVwZGF0ZUJ1ZmZlckludGVybmFsKFNoYXJlZEJ1ZmZlciYpOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2VDbGllbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2VDbGllbnQu
aAkocmV2aXNpb24gMjU5NTYwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEltYWdlQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDggQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgVmlzaWJsZUluVmlld3BvcnRTdGF0ZSBpbWFnZUZyYW1lQXZhaWxhYmxlKENh
Y2hlZEltYWdlJiBpbWFnZSwgSW1hZ2VBbmltYXRpbmdTdGF0ZSwgY29uc3QgSW50UmVjdCogY2hh
bmdlUmVjdCkgeyBpbWFnZUNoYW5nZWQoJmltYWdlLCBjaGFuZ2VSZWN0KTsgcmV0dXJuIFZpc2li
bGVJblZpZXdwb3J0U3RhdGU6Ok5vOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlQ2Fj
aGVkSW1hZ2VDbGllbnQoQ2FjaGVkSW1hZ2UmKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBzY2hl
ZHVsZVJlbmRlcmluZ1VwZGF0ZSgpIHsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lvbiAyNTk1NjApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Niw2ICs5Niw3IEBACiAjaW5jbHVk
ZSAiUG9pbnRlckxvY2tDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgi
CiAjaW5jbHVkZSAiUmVuZGVyRGVzY2VuZGFudEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiUmVuZGVy
SW1hZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllckNvbXBvc2l0b3IuaCIKICNpbmNsdWRlICJS
ZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKQEAgLTEzMDUsNiArMTMwNiwx
NCBAQCB2b2lkIFBhZ2U6OnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCkKICAgICByZW5kZXJpbmdV
cGRhdGVTY2hlZHVsZXIoKS5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOwogfQogCit2b2lkIFBh
Z2U6OnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKQoreworICAgIGlmIChjaHJvbWUoKS5j
bGllbnQoKS5pc1NWR0ltYWdlQ2hyb21lQ2xpZW50KCkpCisgICAgICAgIGNocm9tZSgpLmNsaWVu
dCgpLnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCk7CisgICAgZWxzZQorICAgICAgICByZW5kZXJp
bmdVcGRhdGVTY2hlZHVsZXIoKS5zY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCk7Cit9CisK
IC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3dlYmFwcGFwaXMuaHRt
bCN1cGRhdGUtdGhlLXJlbmRlcmluZwogdm9pZCBQYWdlOjp1cGRhdGVSZW5kZXJpbmcoKQogewpA
QCAtMTM1Nyw2ICsxMzY2LDE0IEBAIHZvaWQgUGFnZTo6dXBkYXRlUmVuZGVyaW5nKCkKICAgICB9
KTsKICNlbmRpZgogCisgICAgZm9yRWFjaERvY3VtZW50KFsmXSAoRG9jdW1lbnQmIGRvY3VtZW50
KSB7CisgICAgICAgIGF1dG8qIHJlbmRlclZpZXcgPSBkb2N1bWVudC5yZW5kZXJWaWV3KCk7Cisg
ICAgICAgIGlmICghcmVuZGVyVmlldykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZm9y
IChhdXRvJiByZW5kZXJlciA6IGRlc2NlbmRhbnRzT2ZUeXBlPFJlbmRlckltYWdlPigqcmVuZGVy
VmlldykpCisgICAgICAgICAgICByZW5kZXJlci51cGRhdGVSZW5kZXJpbmcoKTsKKyAgICB9KTsK
KwogICAgIGxheW91dElmTmVlZGVkKCk7CiAgICAgZG9BZnRlclVwZGF0ZVJlbmRlcmluZygpOwog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmgJKHJldmlzaW9uIDI1OTU2MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NzcsNyArNDc3LDggQEAgcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbGF5b3V0SWZOZWVkZWQoKTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHVwZGF0ZVJlbmRlcmluZygpOwogICAgIAotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICB2b2lkIHNjaGVkdWxlUmVuZGVyaW5n
VXBkYXRlKCk7CisgICAgdm9pZCBzY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCk7CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN1c3BlbmRTY3JpcHRlZEFuaW1hdGlvbnMoKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHJlc3VtZVNjcmlwdGVkQW5pbWF0aW9ucygpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPYnNlcnZlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT2JzZXJ2ZXIuaAkocmV2
aXNpb24gMjU5NTYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VP
YnNlcnZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGJvb2wgY2FuRGVzdHJveURlY29kZWREYXRhKGNvbnN0IEltYWdlJikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBpbWFnZUZyYW1lQXZhaWxhYmxlKGNvbnN0IEltYWdlJiwgSW1hZ2VBbmlt
YXRpbmdTdGF0ZSwgY29uc3QgSW50UmVjdCogY2hhbmdlUmVjdCA9IG51bGxwdHIsIERlY29kaW5n
U3RhdHVzID0gRGVjb2RpbmdTdGF0dXM6OkludmFsaWQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
Y2hhbmdlZEluUmVjdChjb25zdCBJbWFnZSYsIGNvbnN0IEludFJlY3QqIGNoYW5nZVJlY3QgPSBu
dWxscHRyKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKGNv
bnN0IEltYWdlJikgPSAwOwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW1hZ2UuY3BwCShyZXZpc2lvbiAyNTk1NjApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzIsNiArMzMyLDIyIEBA
IHZvaWQgUmVuZGVySW1hZ2U6OmltYWdlQ2hhbmdlZChXcmFwcGVkSW0KICNlbmRpZgogfQogCit2
b2lkIFJlbmRlckltYWdlOjpzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpCit7CisgICAgaWYgKGF1
dG8qIHBhZ2UgPSBkb2N1bWVudCgpLnBhZ2UoKSkKKyAgICAgICAgcGFnZS0+c2NoZWR1bGVSZW5k
ZXJpbmdVcGRhdGUoKTsKK30KKwordm9pZCBSZW5kZXJJbWFnZTo6dXBkYXRlUmVuZGVyaW5nKCkK
K3sKKyAgICBhdXRvKiBjYWNoZWRJbWFnZSA9IHRoaXMtPmNhY2hlZEltYWdlKCk7CisgICAgaWYg
KGNhY2hlZEltYWdlICYmIGlzPFNWR0ltYWdlPihjYWNoZWRJbWFnZS0+aW1hZ2UoKSkpIHsKKyAg
ICAgICAgYXV0byogaW1hZ2UgPSBkb3duY2FzdDxTVkdJbWFnZT4oY2FjaGVkSW1hZ2UtPmltYWdl
KCkpOworICAgICAgICBpZiAoYXV0byogcGFnZSA9IGltYWdlLT5wYWdlKCkpCisgICAgICAgICAg
ICBwYWdlLT51cGRhdGVSZW5kZXJpbmcoKTsKKyAgICB9Cit9CisKIHZvaWQgUmVuZGVySW1hZ2U6
OnVwZGF0ZUludHJpbnNpY1NpemVJZk5lZWRlZChjb25zdCBMYXlvdXRTaXplJiBuZXdTaXplKQog
ewogICAgIGlmIChpbWFnZVJlc291cmNlKCkuZXJyb3JPY2N1cnJlZCgpIHx8ICFtX2ltYWdlUmVz
b3VyY2UtPmNhY2hlZEltYWdlKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW1hZ2UuaAkocmV2aXNpb24gMjU5NTYwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDYgKzgwLDggQEAgcHVibGljOgogCiAg
ICAgYm9vbCBpc0VkaXRhYmxlSW1hZ2UoKSBjb25zdDsKIAorICAgIHZvaWQgdXBkYXRlUmVuZGVy
aW5nKCk7CisgICAgCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKSBvdmVy
cmlkZTsKIApAQCAtOTIsNiArOTQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzdHlsZURpZENo
YW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKikgb3ZlcnJpZGU7CiAKICAg
ICB2b2lkIGltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IEludFJlY3QqID0gbnVs
bHB0cikgb3ZlcnJpZGU7CisgICAgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpIG92ZXJy
aWRlOwogCiAgICAgSW1hZ2VEcmF3UmVzdWx0IHBhaW50SW50b1JlY3QoUGFpbnRJbmZvJiwgY29u
c3QgRmxvYXRSZWN0Jik7CiAgICAgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQ
b2ludCYpIGZpbmFsOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgJ
KHJldmlzaW9uIDI1OTU2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw2ICs2OCw4IEBAIHB1YmxpYzoKICNpZiBVU0UoRElS
RUNUMkQpCiAgICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhpY3NDb250
ZXh0KiA9IG51bGxwdHIpIGZpbmFsOwogI2VuZGlmCisgICAgCisgICAgUGFnZSogcGFnZSgpIHsg
cmV0dXJuIG1fcGFnZS5nZXQoKTsgfQogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBTVkdJ
bWFnZUNocm9tZUNsaWVudDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJ
bWFnZUNsaWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2VDbGllbnRzLmgJKHJldmlzaW9uIDI1OTU2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZUNsaWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIs
MTQgQEAgcHJpdmF0ZToKIAogICAgICAgICBpbWFnZU9ic2VydmVyLT5pbWFnZUZyYW1lQXZhaWxh
YmxlKCptX2ltYWdlLCBtX2ltYWdlLT5pc0FuaW1hdGluZygpID8gSW1hZ2VBbmltYXRpbmdTdGF0
ZTo6WWVzIDogSW1hZ2VBbmltYXRpbmdTdGF0ZTo6Tm8sICZyKTsKICAgICB9Ci0gICAgCisKKyAg
ICB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCkgZmluYWwKKyAgICB7CisgICAgICAgIGlm
ICghbV9pbWFnZSB8fCAhbV9pbWFnZS0+aW1hZ2VPYnNlcnZlcigpKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBtX2ltYWdlLT5pbWFnZU9ic2VydmVyKCktPnNjaGVkdWxlUmVuZGVyaW5n
VXBkYXRlKCptX2ltYWdlKTsKKyAgICB9CisKICAgICBTVkdJbWFnZSogbV9pbWFnZTsKIH07CiAK
SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDI1OTU2MCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDIwLTA0LTA3ICBTYWlkIEFib3UtSGFsbGF3
YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTjogQ1NTIGFu
aW1hdGlvbnMgaW5zaWRlIGFuIGVtYmVkZGVkIFNWRyBpbWFnZSBkbyBub3QgYW5pbWF0ZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5MzcwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdmcvYW5pbWF0
aW9ucy9jc3MtYW5pbWF0aW9uLWVtYmVkZGVkLXN2Zy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBzdmcvYW5pbWF0aW9ucy9jc3MtYW5pbWF0aW9uLWVtYmVkZGVkLXN2Zy5odG1sOiBB
ZGRlZC4KKwogMjAyMC0wNC0wNSAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5j
b20+CiAKICAgICAgICAgT2N0YWwgZXNjYXBlcyBzaG91bGQgYmUgbWF4IDMgZGlnaXRzIGFuZCBz
eW50YXggZXJyb3JzIGluIFVuaWNvZGUgcGF0dGVybnMKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9h
bmltYXRpb25zL2Nzcy1hbmltYXRpb24tZW1iZWRkZWQtc3ZnLWV4cGVjdGVkLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvY3NzLWFuaW1hdGlvbi1lbWJlZGRl
ZC1zdmctZXhwZWN0ZWQuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9zdmcvYW5p
bWF0aW9ucy9jc3MtYW5pbWF0aW9uLWVtYmVkZGVkLXN2Zy1leHBlY3RlZC5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKKzxzdHlsZT4KKyAgICBpbWcgeworICAgICAgICB3aWR0
aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgfQorPC9zdHlsZT4KKzxib2R5
PgorICAgIDxpbWcgc3JjPSdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCwKKyAgICAgICAgPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgorICAgICAgICAgICAgPHJlY3Qgd2lk
dGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0iZ3JlZW4iLz4KKyAgICAgICAgPC9zdmc+Jz4K
KzwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL2Nzcy1hbmltYXRpb24t
ZW1iZWRkZWQtc3ZnLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlv
bnMvY3NzLWFuaW1hdGlvbi1lbWJlZGRlZC1zdmcuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlv
dXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9jc3MtYW5pbWF0aW9uLWVtYmVkZGVkLXN2Zy5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzYgQEAKKzxzdHlsZT4KKyAgICBpbWcgeworICAgICAg
ICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgfQorPC9zdHlsZT4K
Kzxib2R5PgorICAgIDxpbWcgc3JjPSdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCwKKyAgICAgICAg
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgorICAgICAgICAgICAgPHN0
eWxlPgorICAgICAgICAgICAgICAgIEBrZXlmcmFtZXMgZmFkZWluIHsKKyAgICAgICAgICAgICAg
ICAgICAgZnJvbSB7IG9wYWNpdHk6MDsgfQorICAgICAgICAgICAgICAgICAgICB0byB7IG9wYWNp
dHk6MTsgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAjZ3JlZW4geyAKKyAg
ICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uOiBmYWRlaW4gMTZtczsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICA8L3N0eWxlPgorICAgICAgICAgICAgPHJlY3Qgd2lkdGg9IjEwMCUi
IGhlaWdodD0iMTAwJSIgZmlsbD0icmVkIi8+CisgICAgICAgICAgICA8cmVjdCBpZD0iZ3JlZW4i
IHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9ImdyZWVuIi8+CisgICAgICAgIDwvc3Zn
Pic+CisgICAgPHNjcmlwdD4KKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKKyAgICAgICAgdmFyIHJBRkNvdW50
ID0gMDsKKyAgICAgICAgZnVuY3Rpb24gYW5pbWF0ZSh0aW1lc3RhbXApIHsKKyAgICAgICAgICAg
IGlmICgrK3JBRkNvdW50IDwgMTApCisgICAgICAgICAgICAgICAgd2luZG93LnJlcXVlc3RBbmlt
YXRpb25GcmFtZShhbmltYXRlKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICB9
CisKKyAgICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShhbmltYXRlKTsKKyAgICA8
L3NjcmlwdD4KKzwvYm9keT4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395662</attachid>
            <date>2020-04-07 01:29:08 -0700</date>
            <delta_ts>2020-04-07 12:25:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209370-20200407012907.patch</filename>
            <type>text/plain</type>
            <size>15556</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1OTYyOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDIwLTA0LTA3ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lP
TjogQ1NTIGFuaW1hdGlvbnMgaW5zaWRlIGFuIGVtYmVkZGVkIFNWRyBpbWFnZSBkbyBub3QgYW5p
bWF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5
MzcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSWYg
V2ViQW5pbWF0aW9uIGlzIGVuYWJsZWQgYW5kIHRoZSBTVkdJbWFnZSBpbmNsdWRlcyBDU1MgYW5p
bWF0aW9ucywgdGhlCisgICAgICAgIERvY3VtZW50VGltZWxpbmUgaXMgYWRkZWQgdG8gdGhlIFNW
R0RvY3VtZW50IG9mIHRoZSBlbWJlZGRlZCBTVkdJbWFnZS4KKyAgICAgICAgQmVjYXVzZSB0aGUg
U1ZHSW1hZ2UgaGFzIGl0cyBvd24gUGFnZSwgdGhlIFJlbmRlcmluZ1VwZGF0ZSBpcyBzY2hlZHVs
ZWQKKyAgICAgICAgYW5kIHRoZSB1cGRhdGVSZW5kZXJpbmcgc3RlcHMgcnVuIGluIHRoaXMgUGFn
ZS4gVGhlIFBhZ2Ugb2YgdGhlIFNWR0ltYWdlCisgICAgICAgIGlzIHNwZWNpYWwgc28gc2NoZWR1
bGluZyB0aGUgUmVuZGVyaW5nVXBkYXRlIGZhaWxzOyB0aGVyZWZvcmUgdGhlCisgICAgICAgIHVw
ZGF0ZVJlbmRlcmluZyBzdGVwcyBuZXZlciBydW4gYW5kIHRoZSBDU1MgYW5pbWF0aW9uIG5ldmVy
IGFkdmFuY2VzLgorCisgICAgICAgIFRoZSBmaXggaXMgdG8gc2NoZWR1bGUgdGhlIFJlbmRlcmlu
Z1VwZGF0ZSBpbiB0aGUgUGFnZSB3aGljaCBjb250YWlucyB0aGUKKyAgICAgICAgcmVuZGVyZXIg
b2YgdGhlIFNWR0ltYWdlLiBXaGVuIHJ1bm5pbmcgdGhlIHVwZGF0ZVJlbmRlcmluZyBzdGVwcywg
dGhpcworICAgICAgICBQYWdlIGhhcyB0byBlbnVtZXJhdGUgdGhlIHJlbmRlcmVycyBvZiBTVkdJ
bWFnZXMgYW5kIHJ1biB0aGUgdXBkYXRlUmVuZGVyaW5nCisgICAgICAgIHN0ZXBzIGluIHRoZSBQ
YWdlcyBvZiB0aGUgU1ZHSW1hZ2VzIGFzIHdlbGwuCisKKyAgICAgICAgVGVzdDogc3ZnL2FuaW1h
dGlvbnMvY3NzLWFuaW1hdGlvbi1lbWJlZGRlZC1zdmcuaHRtbAorCisgICAgICAgICogYW5pbWF0
aW9uL0RvY3VtZW50VGltZWxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaW1l
bGluZTo6c2NoZWR1bGVBbmltYXRpb25SZXNvbHV0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50VGltZWxpbmU6OnVwZGF0ZUFuaW1hdGlvbnNBbmRTZW5kRXZlbnRzKToKKyAgICAgICAg
KiBodG1sL0ltYWdlQml0bWFwLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZEltYWdlOjpDYWNoZWRJbWFnZU9ic2VydmVyOjpzY2hlZHVsZVJlbmRlcmluZ1Vw
ZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6c2NoZWR1bGVSZW5kZXJpbmdV
cGRhdGUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZUNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkSW1hZ2VDbGllbnQ6OnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKToKKyAgICAgICAgKiBwYWdl
L1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2NoZWR1bGVUaW1lZFJlbmRlcmlu
Z1VwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp1cGRhdGVSZW5kZXJpbmcpOgorICAg
ICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT2Jz
ZXJ2ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVySW1hZ2U6OnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckltYWdlOjp1cGRhdGVSZW5kZXJpbmcpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJJbWFnZS5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5oOgor
ICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUNsaWVudHMuaDoKKwogMjAyMC0wNC0wNiAg
SmFjayBMZWUgIDxzaGloY2hpZWhfbGVlQGFwcGxlLmNvbT4KIAogICAgICAgICBOdWxscHRyIGNy
YXNoIGluIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpzcGxpdFRyZWVUb05vZGUgd2hlbiBpbnNlcnRp
bmcgaW1hZ2UgaW4gYW5jaG9yIGVsZW1lbnQgdGhhdCBoYXMgdW5lZGl0YWJsZSBwYXJlbnQKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHAJKHJl
dmlzaW9uIDI1OTU2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVs
aW5lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzM5LDcgKzMzOSw3IEBAIHZvaWQgRG9jdW1lbnRU
aW1lbGluZTo6c2NoZWR1bGVBbmltYXRpb24KICAgICBpZiAoIXNob3VsZFJ1blVwZGF0ZUFuaW1h
dGlvbnNBbmRTZW5kRXZlbnRzSWdub3JpbmdTdXNwZW5zaW9uU3RhdGUoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgbV9kb2N1bWVudC0+cGFnZSgpLT5yZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIo
KS5zY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCk7CisgICAgbV9kb2N1bWVudC0+cGFnZSgp
LT5zY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCk7CiAgICAgbV9hbmltYXRpb25SZXNvbHV0
aW9uU2NoZWR1bGVkID0gdHJ1ZTsKIH0KIApAQCAtMzY0LDcgKzM2NCw2IEBAIHZvaWQgRG9jdW1l
bnRUaW1lbGluZTo6dXBkYXRlQ3VycmVudFRpbWUKIAogdm9pZCBEb2N1bWVudFRpbWVsaW5lOjp1
cGRhdGVBbmltYXRpb25zQW5kU2VuZEV2ZW50cygpCiB7Ci0KICAgICAvLyBVcGRhdGluZyBhbmlt
YXRpb25zIGFuZCBzZW5kaW5nIGV2ZW50cyBtYXkgaW52YWxpZGF0ZSB0aGUgdGltaW5nIG9mIHNv
bWUgYW5pbWF0aW9ucywgc28gd2UgbXVzdCBzZXQgdGhlIG1fYW5pbWF0aW9uUmVzb2x1dGlvblNj
aGVkdWxlZAogICAgIC8vIGZsYWcgdG8gZmFsc2UgcHJpb3IgdG8gcnVubmluZyB0aGF0IHByb2Nl
ZHVyZSB0byBhbGxvdyBhbmltYXRpb24gd2l0aCB0aW1pbmcgbW9kZWwgdXBkYXRlcyB0byBzY2hl
ZHVsZSB1cGRhdGVzLgogICAgIG1fYW5pbWF0aW9uUmVzb2x1dGlvblNjaGVkdWxlZCA9IGZhbHNl
OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAJKHJldmlzaW9uIDI1OTU2MCkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01MjgsNiArNTI4LDcgQEAgcHVibGljOgogICAgIGJvb2wgY2FuRGVzdHJveURlY29kZWREYXRh
KGNvbnN0IEltYWdlJikgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgaW1hZ2VG
cmFtZUF2YWlsYWJsZShjb25zdCBJbWFnZSYsIEltYWdlQW5pbWF0aW5nU3RhdGUsIGNvbnN0IElu
dFJlY3QqID0gbnVsbHB0ciwgRGVjb2RpbmdTdGF0dXMgPSBEZWNvZGluZ1N0YXR1czo6SW52YWxp
ZCkgb3ZlcnJpZGUgeyB9CiAgICAgdm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiwgY29u
c3QgSW50UmVjdCogPSBudWxscHRyKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHNjaGVkdWxlUmVu
ZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJikgb3ZlcnJpZGUgeyB9CiAKIHByaXZhdGU6CiAgICAg
SW1hZ2VCaXRtYXBJbWFnZU9ic2VydmVyKFN0cmluZyBtaW1lVHlwZSwgbG9uZyBsb25nIGV4cGVj
dGVkQ29udGVudExlbmd0aCwgY29uc3QgVVJMJiBzb3VyY2VVcmwpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL0VtcHR5Q2xpZW50cy5oCShyZXZpc2lvbiAyNTk1NjApCisrKyBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1MSw3ICsxNTEsNyBA
QCBjbGFzcyBFbXB0eUNocm9tZUNsaWVudCA6IHB1YmxpYyBDaHJvbWVDCiAgICAgdm9pZCBhdHRh
Y2hSb290R3JhcGhpY3NMYXllcihGcmFtZSYsIEdyYXBoaWNzTGF5ZXIqKSBmaW5hbCB7IH0KICAg
ICB2b2lkIGF0dGFjaFZpZXdPdmVybGF5R3JhcGhpY3NMYXllcihHcmFwaGljc0xheWVyKikgZmlu
YWwgeyB9CiAgICAgdm9pZCBzZXROZWVkc09uZVNob3REcmF3aW5nU3luY2hyb25pemF0aW9uKCkg
ZmluYWwgeyB9Ci0gICAgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpIGZpbmFsIHsgfQor
ICAgIHZvaWQgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKSBvdmVycmlkZSB7IH0KIAogI2lmIFBM
QVRGT1JNKFdJTikKICAgICB2b2lkIHNldExhc3RTZXRDdXJzb3JUb0N1cnJlbnRDdXJzb3IoKSBm
aW5hbCB7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
LmNwcAkocmV2aXNpb24gMjU5NTYwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDM0LDYgKzQzNCwxMiBAQCB2b2lkIENh
Y2hlZEltYWdlOjpDYWNoZWRJbWFnZU9ic2VydmVyOjpjCiAgICAgICAgIGNhY2hlZEltYWdlLT5j
aGFuZ2VkSW5SZWN0KGltYWdlLCByZWN0KTsKIH0KIAordm9pZCBDYWNoZWRJbWFnZTo6Q2FjaGVk
SW1hZ2VPYnNlcnZlcjo6c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoY29uc3QgSW1hZ2UmIGltYWdl
KQoreworICAgIGZvciAoYXV0byBjYWNoZWRJbWFnZSA6IG1fY2FjaGVkSW1hZ2VzKQorICAgICAg
ICBjYWNoZWRJbWFnZS0+c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoaW1hZ2UpOworfQorCiBpbmxp
bmUgdm9pZCBDYWNoZWRJbWFnZTo6Y2xlYXJJbWFnZSgpCiB7CiAgICAgaWYgKCFtX2ltYWdlKQpA
QCAtNjg0LDYgKzY5MCwxNiBAQCB2b2lkIENhY2hlZEltYWdlOjpjaGFuZ2VkSW5SZWN0KGNvbnN0
IEltCiAgICAgbm90aWZ5T2JzZXJ2ZXJzKHJlY3QpOwogfQogCit2b2lkIENhY2hlZEltYWdlOjpz
Y2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShjb25zdCBJbWFnZSYgaW1hZ2UpCit7CisgICAgaWYgKCZp
bWFnZSAhPSBtX2ltYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBDYWNoZWRSZXNvdXJjZUNs
aWVudFdhbGtlcjxDYWNoZWRJbWFnZUNsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7CisgICAgd2hp
bGUgKGF1dG8qIGNsaWVudCA9IHdhbGtlci5uZXh0KCkpCisgICAgICAgIGNsaWVudC0+c2NoZWR1
bGVSZW5kZXJpbmdVcGRhdGUoKTsKK30KKwogYm9vbCBDYWNoZWRJbWFnZTo6Y3VycmVudEZyYW1l
S25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyKQogewogICAgIElt
YWdlKiBpbWFnZSA9IGltYWdlRm9yUmVuZGVyZXIocmVuZGVyZXIpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgJKHJldmlzaW9uIDI1OTU2MCkKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTIsNiArMTUyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBjYW5EZXN0cm95RGVjb2Rl
ZERhdGEoY29uc3QgSW1hZ2UmKSBmaW5hbDsKICAgICAgICAgdm9pZCBpbWFnZUZyYW1lQXZhaWxh
YmxlKGNvbnN0IEltYWdlJiwgSW1hZ2VBbmltYXRpbmdTdGF0ZSwgY29uc3QgSW50UmVjdCogY2hh
bmdlUmVjdCA9IG51bGxwdHIsIERlY29kaW5nU3RhdHVzID0gRGVjb2RpbmdTdGF0dXM6OkludmFs
aWQpIGZpbmFsOwogICAgICAgICB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2UmLCBjb25z
dCBJbnRSZWN0KikgZmluYWw7CisgICAgICAgIHZvaWQgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUo
Y29uc3QgSW1hZ2UmKSBmaW5hbDsKIAogICAgICAgICBIYXNoU2V0PENhY2hlZEltYWdlKj4gbV9j
YWNoZWRJbWFnZXM7CiAgICAgfTsKQEAgLTE2Miw2ICsxNjMsNyBAQCBwcml2YXRlOgogICAgIGJv
b2wgY2FuRGVzdHJveURlY29kZWREYXRhKGNvbnN0IEltYWdlJik7CiAgICAgdm9pZCBpbWFnZUZy
YW1lQXZhaWxhYmxlKGNvbnN0IEltYWdlJiwgSW1hZ2VBbmltYXRpbmdTdGF0ZSwgY29uc3QgSW50
UmVjdCogY2hhbmdlUmVjdCA9IG51bGxwdHIsIERlY29kaW5nU3RhdHVzID0gRGVjb2RpbmdTdGF0
dXM6OkludmFsaWQpOwogICAgIHZvaWQgY2hhbmdlZEluUmVjdChjb25zdCBJbWFnZSYsIGNvbnN0
IEludFJlY3QqKTsKKyAgICB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdl
Jik7CiAKICAgICB2b2lkIHVwZGF0ZUJ1ZmZlckludGVybmFsKFNoYXJlZEJ1ZmZlciYpOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2VDbGllbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2VDbGllbnQu
aAkocmV2aXNpb24gMjU5NTYwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEltYWdlQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDggQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgVmlzaWJsZUluVmlld3BvcnRTdGF0ZSBpbWFnZUZyYW1lQXZhaWxhYmxlKENh
Y2hlZEltYWdlJiBpbWFnZSwgSW1hZ2VBbmltYXRpbmdTdGF0ZSwgY29uc3QgSW50UmVjdCogY2hh
bmdlUmVjdCkgeyBpbWFnZUNoYW5nZWQoJmltYWdlLCBjaGFuZ2VSZWN0KTsgcmV0dXJuIFZpc2li
bGVJblZpZXdwb3J0U3RhdGU6Ok5vOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlQ2Fj
aGVkSW1hZ2VDbGllbnQoQ2FjaGVkSW1hZ2UmKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBzY2hl
ZHVsZVJlbmRlcmluZ1VwZGF0ZSgpIHsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lvbiAyNTk1NjApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Niw2ICs5Niw3IEBACiAjaW5jbHVk
ZSAiUG9pbnRlckxvY2tDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgi
CiAjaW5jbHVkZSAiUmVuZGVyRGVzY2VuZGFudEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiUmVuZGVy
SW1hZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllckNvbXBvc2l0b3IuaCIKICNpbmNsdWRlICJS
ZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKQEAgLTEzMDUsNiArMTMwNiwx
NCBAQCB2b2lkIFBhZ2U6OnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCkKICAgICByZW5kZXJpbmdV
cGRhdGVTY2hlZHVsZXIoKS5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOwogfQogCit2b2lkIFBh
Z2U6OnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKQoreworICAgIGlmIChjaHJvbWUoKS5j
bGllbnQoKS5pc1NWR0ltYWdlQ2hyb21lQ2xpZW50KCkpCisgICAgICAgIGNocm9tZSgpLmNsaWVu
dCgpLnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCk7CisgICAgZWxzZQorICAgICAgICByZW5kZXJp
bmdVcGRhdGVTY2hlZHVsZXIoKS5zY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCk7Cit9CisK
IC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3dlYmFwcGFwaXMuaHRt
bCN1cGRhdGUtdGhlLXJlbmRlcmluZwogdm9pZCBQYWdlOjp1cGRhdGVSZW5kZXJpbmcoKQogewpA
QCAtMTM1Nyw2ICsxMzY2LDE0IEBAIHZvaWQgUGFnZTo6dXBkYXRlUmVuZGVyaW5nKCkKICAgICB9
KTsKICNlbmRpZgogCisgICAgZm9yRWFjaERvY3VtZW50KFsmXSAoRG9jdW1lbnQmIGRvY3VtZW50
KSB7CisgICAgICAgIGF1dG8qIHJlbmRlclZpZXcgPSBkb2N1bWVudC5yZW5kZXJWaWV3KCk7Cisg
ICAgICAgIGlmICghcmVuZGVyVmlldykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZm9y
IChhdXRvJiByZW5kZXJlciA6IGRlc2NlbmRhbnRzT2ZUeXBlPFJlbmRlckltYWdlPigqcmVuZGVy
VmlldykpCisgICAgICAgICAgICByZW5kZXJlci51cGRhdGVSZW5kZXJpbmcoKTsKKyAgICB9KTsK
KwogICAgIGxheW91dElmTmVlZGVkKCk7CiAgICAgZG9BZnRlclVwZGF0ZVJlbmRlcmluZygpOwog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmgJKHJldmlzaW9uIDI1OTU2MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NzgsNiArNDc4LDcgQEAgcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlUmVuZGVyaW5nKCk7CiAgICAgCiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOworICAgIHZvaWQgc2No
ZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
dXNwZW5kU2NyaXB0ZWRBbmltYXRpb25zKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXN1
bWVTY3JpcHRlZEFuaW1hdGlvbnMoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlT2JzZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZU9ic2VydmVyLmgJKHJldmlzaW9uIDI1OTU2MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT2JzZXJ2ZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtNTAsNiArNTAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGNhbkRlc3Ryb3lE
ZWNvZGVkRGF0YShjb25zdCBJbWFnZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VGcmFt
ZUF2YWlsYWJsZShjb25zdCBJbWFnZSYsIEltYWdlQW5pbWF0aW5nU3RhdGUsIGNvbnN0IEludFJl
Y3QqIGNoYW5nZVJlY3QgPSBudWxscHRyLCBEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVz
OjpJbnZhbGlkKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3QgSW1h
Z2UmLCBjb25zdCBJbnRSZWN0KiBjaGFuZ2VSZWN0ID0gbnVsbHB0cikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShjb25zdCBJbWFnZSYpID0gMDsKIH07CiAK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAkocmV2aXNp
b24gMjU5NTYwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzMyLDYgKzMzMiwyMiBAQCB2b2lkIFJlbmRlckltYWdlOjppbWFn
ZUNoYW5nZWQoV3JhcHBlZEltCiAjZW5kaWYKIH0KIAordm9pZCBSZW5kZXJJbWFnZTo6c2NoZWR1
bGVSZW5kZXJpbmdVcGRhdGUoKQoreworICAgIGlmIChhdXRvKiBwYWdlID0gZG9jdW1lbnQoKS5w
YWdlKCkpCisgICAgICAgIHBhZ2UtPnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCk7Cit9CisKK3Zv
aWQgUmVuZGVySW1hZ2U6OnVwZGF0ZVJlbmRlcmluZygpCit7CisgICAgYXV0byogY2FjaGVkSW1h
Z2UgPSB0aGlzLT5jYWNoZWRJbWFnZSgpOworICAgIGlmIChjYWNoZWRJbWFnZSAmJiBpczxTVkdJ
bWFnZT4oY2FjaGVkSW1hZ2UtPmltYWdlKCkpKSB7CisgICAgICAgIGF1dG8qIGltYWdlID0gZG93
bmNhc3Q8U1ZHSW1hZ2U+KGNhY2hlZEltYWdlLT5pbWFnZSgpKTsKKyAgICAgICAgaWYgKGF1dG8q
IHBhZ2UgPSBpbWFnZS0+cGFnZSgpKQorICAgICAgICAgICAgcGFnZS0+dXBkYXRlUmVuZGVyaW5n
KCk7CisgICAgfQorfQorCiB2b2lkIFJlbmRlckltYWdlOjp1cGRhdGVJbnRyaW5zaWNTaXplSWZO
ZWVkZWQoY29uc3QgTGF5b3V0U2l6ZSYgbmV3U2l6ZSkKIHsKICAgICBpZiAoaW1hZ2VSZXNvdXJj
ZSgpLmVycm9yT2NjdXJyZWQoKSB8fCAhbV9pbWFnZVJlc291cmNlLT5jYWNoZWRJbWFnZSgpKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgJKHJldmlzaW9uIDI1OTU2
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC04MCw2ICs4MCw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNFZGl0YWJsZUltYWdl
KCkgY29uc3Q7CiAKKyAgICB2b2lkIHVwZGF0ZVJlbmRlcmluZygpOworICAgIAogcHJvdGVjdGVk
OgogICAgIHZvaWQgd2lsbEJlRGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAKQEAgLTkyLDYgKzk0LDcg
QEAgcHJvdGVjdGVkOgogICAgIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBj
b25zdCBSZW5kZXJTdHlsZSopIG92ZXJyaWRlOwogCiAgICAgdm9pZCBpbWFnZUNoYW5nZWQoV3Jh
cHBlZEltYWdlUHRyLCBjb25zdCBJbnRSZWN0KiA9IG51bGxwdHIpIG92ZXJyaWRlOworICAgIHZv
aWQgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKSBvdmVycmlkZTsKIAogICAgIEltYWdlRHJhd1Jl
c3VsdCBwYWludEludG9SZWN0KFBhaW50SW5mbyYsIGNvbnN0IEZsb2F0UmVjdCYpOwogICAgIHZv
aWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBmaW5hbDsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCShyZXZpc2lvbiAyNTk1NjApCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAt
NjgsNiArNjgsOCBAQCBwdWJsaWM6CiAjaWYgVVNFKERJUkVDVDJEKQogICAgIE5hdGl2ZUltYWdl
UHRyIG5hdGl2ZUltYWdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBmaW5hbDsK
ICNlbmRpZgorICAgIAorICAgIFBhZ2UqIHBhZ2UoKSB7IHJldHVybiBtX3BhZ2UuZ2V0KCk7IH0K
IAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgU1ZHSW1hZ2VDaHJvbWVDbGllbnQ7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDbGllbnRzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2xpZW50cy5oCShyZXZp
c2lvbiAyNTk1NjApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDbGll
bnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDE0IEBAIHByaXZhdGU6CiAKICAgICAg
ICAgaW1hZ2VPYnNlcnZlci0+aW1hZ2VGcmFtZUF2YWlsYWJsZSgqbV9pbWFnZSwgbV9pbWFnZS0+
aXNBbmltYXRpbmcoKSA/IEltYWdlQW5pbWF0aW5nU3RhdGU6OlllcyA6IEltYWdlQW5pbWF0aW5n
U3RhdGU6Ok5vLCAmcik7CiAgICAgfQotICAgIAorCisgICAgdm9pZCBzY2hlZHVsZVJlbmRlcmlu
Z1VwZGF0ZSgpIGZpbmFsCisgICAgeworICAgICAgICBpZiAoIW1faW1hZ2UgfHwgIW1faW1hZ2Ut
PmltYWdlT2JzZXJ2ZXIoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9pbWFnZS0+
aW1hZ2VPYnNlcnZlcigpLT5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgqbV9pbWFnZSk7CisgICAg
fQorCiAgICAgU1ZHSW1hZ2UqIG1faW1hZ2U7CiB9OwogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTk1
NjApCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
MyBAQAorMjAyMC0wNC0wNyAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUu
Y29tPgorCisgICAgICAgIFJFR1JFU1NJT046IENTUyBhbmltYXRpb25zIGluc2lkZSBhbiBlbWJl
ZGRlZCBTVkcgaW1hZ2UgZG8gbm90IGFuaW1hdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTM3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogc3ZnL2FuaW1hdGlvbnMvY3NzLWFuaW1hdGlvbi1lbWJl
ZGRlZC1zdmctZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogc3ZnL2FuaW1hdGlvbnMv
Y3NzLWFuaW1hdGlvbi1lbWJlZGRlZC1zdmcuaHRtbDogQWRkZWQuCisKIDIwMjAtMDQtMDUgIEFs
ZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIE9jdGFsIGVz
Y2FwZXMgc2hvdWxkIGJlIG1heCAzIGRpZ2l0cyBhbmQgc3ludGF4IGVycm9ycyBpbiBVbmljb2Rl
IHBhdHRlcm5zCkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9jc3MtYW5pbWF0aW9u
LWVtYmVkZGVkLXN2Zy1leHBlY3RlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2
Zy9hbmltYXRpb25zL2Nzcy1hbmltYXRpb24tZW1iZWRkZWQtc3ZnLWV4cGVjdGVkLmh0bWwJKG5v
bmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvY3NzLWFuaW1hdGlvbi1l
bWJlZGRlZC1zdmctZXhwZWN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyIEBA
Cis8c3R5bGU+CisgICAgaW1nIHsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWln
aHQ6IDEwMHB4OworICAgIH0KKzwvc3R5bGU+Cis8Ym9keT4KKyAgICA8aW1nIHNyYz0nZGF0YTpp
bWFnZS9zdmcreG1sO3V0ZjgsCisgICAgICAgIDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIj4KKyAgICAgICAgICAgIDxyZWN0IHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUi
IGZpbGw9ImdyZWVuIi8+CisgICAgICAgIDwvc3ZnPic+Cis8L2JvZHk+CkluZGV4OiBMYXlvdXRU
ZXN0cy9zdmcvYW5pbWF0aW9ucy9jc3MtYW5pbWF0aW9uLWVtYmVkZGVkLXN2Zy5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL2Nzcy1hbmltYXRpb24tZW1iZWRk
ZWQtc3ZnLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMv
Y3NzLWFuaW1hdGlvbi1lbWJlZGRlZC1zdmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDM2IEBACis8c3R5bGU+CisgICAgaW1nIHsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAg
ICBoZWlnaHQ6IDEwMHB4OworICAgIH0KKzwvc3R5bGU+Cis8Ym9keT4KKyAgICA8aW1nIHNyYz0n
ZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsCisgICAgICAgIDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIj4KKyAgICAgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgICAgICBA
a2V5ZnJhbWVzIGZhZGVpbiB7CisgICAgICAgICAgICAgICAgICAgIGZyb20geyBvcGFjaXR5OjA7
IH0KKyAgICAgICAgICAgICAgICAgICAgdG8geyBvcGFjaXR5OjE7IH0KKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgI2dyZWVuIHsgCisgICAgICAgICAgICAgICAgICAgIGFuaW1h
dGlvbjogZmFkZWluIDE2bXM7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgPC9zdHls
ZT4KKyAgICAgICAgICAgIDxyZWN0IHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InJl
ZCIvPgorICAgICAgICAgICAgPHJlY3QgaWQ9ImdyZWVuIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIx
MDAlIiBmaWxsPSJncmVlbiIvPgorICAgICAgICA8L3N2Zz4nPgorICAgIDxzY3JpcHQ+CisgICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVu
dGlsRG9uZSgpOworCisgICAgICAgIHZhciByQUZDb3VudCA9IDA7CisgICAgICAgIGZ1bmN0aW9u
IGFuaW1hdGUodGltZXN0YW1wKSB7CisgICAgICAgICAgICBpZiAoKytyQUZDb3VudCA8IDEwKQor
ICAgICAgICAgICAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0ZSk7Cisg
ICAgICAgICAgICBlbHNlIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIHdpbmRvdy5yZXF1
ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0ZSk7CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395723</attachid>
            <date>2020-04-07 12:25:15 -0700</date>
            <delta_ts>2020-04-07 15:31:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209370-20200407122514.patch</filename>
            <type>text/plain</type>
            <size>21659</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1OTY1NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcxIEBACisyMDIwLTA0LTA3ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lP
TjogQ1NTIGFuaW1hdGlvbnMgaW5zaWRlIGFuIGVtYmVkZGVkIFNWRyBpbWFnZSBkbyBub3QgYW5p
bWF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5
MzcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSWYg
V2ViQW5pbWF0aW9uIGlzIGVuYWJsZWQgYW5kIHRoZSBTVkdJbWFnZSBpbmNsdWRlcyBDU1MgYW5p
bWF0aW9ucywgdGhlCisgICAgICAgIERvY3VtZW50VGltZWxpbmUgaXMgYWRkZWQgdG8gdGhlIFNW
R0RvY3VtZW50IG9mIHRoZSBlbWJlZGRlZCBTVkdJbWFnZS4KKyAgICAgICAgQmVjYXVzZSB0aGUg
U1ZHSW1hZ2UgaGFzIGl0cyBvd24gUGFnZSB0aGUgUmVuZGVyaW5nVXBkYXRlIGlzIHNjaGVkdWxl
ZAorICAgICAgICBhbmQgdGhlIHVwZGF0ZVJlbmRlcmluZyBzdGVwcyBydW4gaW4gdGhpcyBQYWdl
LgorCisgICAgICAgIFRoZSBQYWdlIG9mIHRoZSBTVkdJbWFnZSBpcyBuZXV0ZXJlZCBzbyBzY2hl
ZHVsaW5nIHRoZSBSZW5kZXJpbmdVcGRhdGUKKyAgICAgICAgZmFpbHM7IHRoZXJlZm9yZSB0aGUg
dXBkYXRlUmVuZGVyaW5nIHN0ZXBzIG5ldmVyIHJ1biBhbmQgdGhlIENTUyBhbmltYXRpb24KKyAg
ICAgICAgbmV2ZXIgYWR2YW5jZXMuCisKKyAgICAgICAgVGhlIGZpeCBpczoKKworICAgICAgICAx
KSBTY2hlZHVsaW5nIHRoZSBSZW5kZXJpbmdVcGRhdGU6IFRoaXMgaGFzIHRvIGhhcHBlbiBpbiB0
aGUgUGFnZSB3aGljaAorICAgICAgICAgICBjb250YWlucyB0aGUgcmVuZGVyZXIgb2YgdGhlIFNW
R0ltYWdlLiBCZWNhdXNlIERvY3VtZW50TGluZSBpcyBhZGRlZAorICAgICAgICAgICB0byBTVkdE
b2N1bWVudCwgdGhpcyBzY2hlZHVsaW5nIHdpbGwgZ28gdGhyb3VnaCB0aGVzZSBodWJzOgorICAg
ICAgICAgICAgICAgIC0gRG9jdW1lbnRMaW5lCisgICAgICAgICAgICAgICAgLSBQYWdlCisgICAg
ICAgICAgICAgICAgLSBDaHJvbWVDbGllbnQgLT4gU1ZHSW1hZ2VDaHJvbWVDbGllbnQgCisgICAg
ICAgICAgICAgICAgLSBTVkdJbWFnZQorICAgICAgICAgICAgICAgIC0gSW1hZ2VPYnNlcnZlciAt
PiBDYWNoZWRJbWFnZU9ic2VydmVyCisgICAgICAgICAgICAgICAgLSBDYWNoZWRJbWFnZQorICAg
ICAgICAgICAgICAgIC0gQ2FjaGVkSW1hZ2VDbGllbnQgLT4gUmVuZGVyRWxlbWVudAorICAgICAg
ICAgICAgICAgIC0gUGFnZQorCisgICAgICAgIDIpIFJ1bm5pbmcgdGhlIHVwZGF0ZVJlbmRlcmlu
ZyBzdGVwczogUGFnZSB3aWxsIGVudW1lcmF0ZSB0aHJvdWdoIGl0cworICAgICAgICAgICByZW5k
ZXJlcnMuIFJlbmRlckltYWdlIGNoZWNrcyB3aGV0aGVyIGl0cyBpbWFnZSBpcyBhbiBTVkdJbWFn
ZSBvciBub3QKKyAgICAgICAgICAgYW5kIGlmIGl0J3MsIGl0IGNhbGxzIHVwZGF0ZVJlbmRlcmlu
ZyBvZiB0aGUgUGFnZSBvZiB0aGUgU1ZHSW1hZ2UuCisgICAgICAgICAgIFJlbmRlckJveE1vZGVs
T2JqZWN0IHdpbGwgZG8gc29tZXRoaW5nIHNpbWlsYXIgaWYgaXQgaGFzIGEgYmFja2dyb3VuZAor
ICAgICAgICAgICBTVkdJbWFnZS4KKworICAgICAgICBUZXN0czogc3ZnL2FuaW1hdGlvbnMvY3Nz
LWFuaW1hdGlvbi1iYWNrZ3JvdW5kLXN2Zy5odG1sCisgICAgICAgICAgICAgICBzdmcvYW5pbWF0
aW9ucy9jc3MtYW5pbWF0aW9uLWVtYmVkZGVkLXN2Zy5odG1sCisKKyAgICAgICAgKiBhbmltYXRp
b24vRG9jdW1lbnRUaW1lbGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRpbWVs
aW5lOjpzY2hlZHVsZUFuaW1hdGlvblJlc29sdXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRUaW1lbGluZTo6dXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHMpOgorICAgICAgICAq
IGh0bWwvSW1hZ2VCaXRtYXAuY3BwOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkSW1hZ2U6OkNhY2hlZEltYWdlT2JzZXJ2ZXI6OnNjaGVkdWxlUmVuZGVyaW5nVXBk
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpzY2hlZHVsZVJlbmRlcmluZ1Vw
ZGF0ZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRJbWFnZUNsaWVudDo6c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkSW1hZ2VDbGllbnQ6OnVwZGF0ZVJlbmRlcmluZyk6CisgICAgICAgICogcGFnZS9Q
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNjaGVkdWxlVGltZWRSZW5kZXJpbmdV
cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXBkYXRlUmVuZGVyaW5nKToKKyAgICAg
ICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9ic2Vy
dmVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0Ojp1cGRhdGVSZW5kZXJpbmcpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1l
bnQ6OnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
RWxlbWVudC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6dXBkYXRlUmVuZGVyaW5nKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVySW1hZ2UuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaDoK
KyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDbGllbnRzLmg6CisKIDIwMjAtMDQtMDcg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBkb2N1bWVudEZyYWdt
ZW50LmdldEVsZW1lbnRCeUlkKCkgc2hvdWxkIG5vdCB3b3JrIGZvciBlbXB0eS1zdHJpbmcgSURz
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuY3Bw
CShyZXZpc2lvbiAyNTk1NjApCisrKyBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRU
aW1lbGluZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzOSw3ICszMzksNyBAQCB2b2lkIERvY3Vt
ZW50VGltZWxpbmU6OnNjaGVkdWxlQW5pbWF0aW9uCiAgICAgaWYgKCFzaG91bGRSdW5VcGRhdGVB
bmltYXRpb25zQW5kU2VuZEV2ZW50c0lnbm9yaW5nU3VzcGVuc2lvblN0YXRlKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIG1fZG9jdW1lbnQtPnBhZ2UoKS0+cmVuZGVyaW5nVXBkYXRlU2NoZWR1
bGVyKCkuc2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSgpOworICAgIG1fZG9jdW1lbnQtPnBh
Z2UoKS0+c2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSgpOwogICAgIG1fYW5pbWF0aW9uUmVz
b2x1dGlvblNjaGVkdWxlZCA9IHRydWU7CiB9CiAKQEAgLTM2NCw3ICszNjQsNiBAQCB2b2lkIERv
Y3VtZW50VGltZWxpbmU6OnVwZGF0ZUN1cnJlbnRUaW1lCiAKIHZvaWQgRG9jdW1lbnRUaW1lbGlu
ZTo6dXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHMoKQogewotCiAgICAgLy8gVXBkYXRpbmcg
YW5pbWF0aW9ucyBhbmQgc2VuZGluZyBldmVudHMgbWF5IGludmFsaWRhdGUgdGhlIHRpbWluZyBv
ZiBzb21lIGFuaW1hdGlvbnMsIHNvIHdlIG11c3Qgc2V0IHRoZSBtX2FuaW1hdGlvblJlc29sdXRp
b25TY2hlZHVsZWQKICAgICAvLyBmbGFnIHRvIGZhbHNlIHByaW9yIHRvIHJ1bm5pbmcgdGhhdCBw
cm9jZWR1cmUgdG8gYWxsb3cgYW5pbWF0aW9uIHdpdGggdGltaW5nIG1vZGVsIHVwZGF0ZXMgdG8g
c2NoZWR1bGUgdXBkYXRlcy4KICAgICBtX2FuaW1hdGlvblJlc29sdXRpb25TY2hlZHVsZWQgPSBm
YWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCShyZXZpc2lvbiAyNTk1
NjApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTI4LDYgKzUyOCw3IEBAIHB1YmxpYzoKICAgICBib29sIGNhbkRlc3Ryb3lEZWNvZGVk
RGF0YShjb25zdCBJbWFnZSYpIG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIGlt
YWdlRnJhbWVBdmFpbGFibGUoY29uc3QgSW1hZ2UmLCBJbWFnZUFuaW1hdGluZ1N0YXRlLCBjb25z
dCBJbnRSZWN0KiA9IG51bGxwdHIsIERlY29kaW5nU3RhdHVzID0gRGVjb2RpbmdTdGF0dXM6Oklu
dmFsaWQpIG92ZXJyaWRlIHsgfQogICAgIHZvaWQgY2hhbmdlZEluUmVjdChjb25zdCBJbWFnZSYs
IGNvbnN0IEludFJlY3QqID0gbnVsbHB0cikgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBzY2hlZHVs
ZVJlbmRlcmluZ1VwZGF0ZShjb25zdCBJbWFnZSYpIG92ZXJyaWRlIHsgfQogCiBwcml2YXRlOgog
ICAgIEltYWdlQml0bWFwSW1hZ2VPYnNlcnZlcihTdHJpbmcgbWltZVR5cGUsIGxvbmcgbG9uZyBl
eHBlY3RlZENvbnRlbnRMZW5ndGgsIGNvbnN0IFVSTCYgc291cmNlVXJsKQpJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkocmV2aXNpb24gMjU5NTYwKQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTEsNyArMTUx
LDcgQEAgY2xhc3MgRW1wdHlDaHJvbWVDbGllbnQgOiBwdWJsaWMgQ2hyb21lQwogICAgIHZvaWQg
YXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoRnJhbWUmLCBHcmFwaGljc0xheWVyKikgZmluYWwgeyB9
CiAgICAgdm9pZCBhdHRhY2hWaWV3T3ZlcmxheUdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllciop
IGZpbmFsIHsgfQogICAgIHZvaWQgc2V0TmVlZHNPbmVTaG90RHJhd2luZ1N5bmNocm9uaXphdGlv
bigpIGZpbmFsIHsgfQotICAgIHZvaWQgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKSBmaW5hbCB7
IH0KKyAgICB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCkgb3ZlcnJpZGUgeyB9CiAKICNp
ZiBQTEFURk9STShXSU4pCiAgICAgdm9pZCBzZXRMYXN0U2V0Q3Vyc29yVG9DdXJyZW50Q3Vyc29y
KCkgZmluYWwgeyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJ
bWFnZS5jcHAJKHJldmlzaW9uIDI1OTU2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzNCw2ICs0MzQsMTIgQEAgdm9p
ZCBDYWNoZWRJbWFnZTo6Q2FjaGVkSW1hZ2VPYnNlcnZlcjo6YwogICAgICAgICBjYWNoZWRJbWFn
ZS0+Y2hhbmdlZEluUmVjdChpbWFnZSwgcmVjdCk7CiB9CiAKK3ZvaWQgQ2FjaGVkSW1hZ2U6OkNh
Y2hlZEltYWdlT2JzZXJ2ZXI6OnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJiBp
bWFnZSkKK3sKKyAgICBmb3IgKGF1dG8gY2FjaGVkSW1hZ2UgOiBtX2NhY2hlZEltYWdlcykKKyAg
ICAgICAgY2FjaGVkSW1hZ2UtPnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKGltYWdlKTsKK30KKwog
aW5saW5lIHZvaWQgQ2FjaGVkSW1hZ2U6OmNsZWFySW1hZ2UoKQogewogICAgIGlmICghbV9pbWFn
ZSkKQEAgLTY4NCw2ICs2OTAsMTYgQEAgdm9pZCBDYWNoZWRJbWFnZTo6Y2hhbmdlZEluUmVjdChj
b25zdCBJbQogICAgIG5vdGlmeU9ic2VydmVycyhyZWN0KTsKIH0KIAordm9pZCBDYWNoZWRJbWFn
ZTo6c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoY29uc3QgSW1hZ2UmIGltYWdlKQoreworICAgIGlm
ICgmaW1hZ2UgIT0gbV9pbWFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQ2FjaGVkUmVzb3Vy
Y2VDbGllbnRXYWxrZXI8Q2FjaGVkSW1hZ2VDbGllbnQ+IHdhbGtlcihtX2NsaWVudHMpOworICAg
IHdoaWxlIChhdXRvKiBjbGllbnQgPSB3YWxrZXIubmV4dCgpKQorICAgICAgICBjbGllbnQtPnNj
aGVkdWxlUmVuZGVyaW5nVXBkYXRlKCk7Cit9CisKIGJvb2wgQ2FjaGVkSW1hZ2U6OmN1cnJlbnRG
cmFtZUtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJFbGVtZW50KiByZW5kZXJlcikKIHsKICAg
ICBJbWFnZSogaW1hZ2UgPSBpbWFnZUZvclJlbmRlcmVyKHJlbmRlcmVyKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCShyZXZpc2lvbiAyNTk1NjApCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAkod29ya2luZyBjb3B5
KQpAQCAtMTUyLDYgKzE1Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgY2FuRGVzdHJveURl
Y29kZWREYXRhKGNvbnN0IEltYWdlJikgZmluYWw7CiAgICAgICAgIHZvaWQgaW1hZ2VGcmFtZUF2
YWlsYWJsZShjb25zdCBJbWFnZSYsIEltYWdlQW5pbWF0aW5nU3RhdGUsIGNvbnN0IEludFJlY3Qq
IGNoYW5nZVJlY3QgPSBudWxscHRyLCBEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJ
bnZhbGlkKSBmaW5hbDsKICAgICAgICAgdm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiwg
Y29uc3QgSW50UmVjdCopIGZpbmFsOworICAgICAgICB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBk
YXRlKGNvbnN0IEltYWdlJikgZmluYWw7CiAKICAgICAgICAgSGFzaFNldDxDYWNoZWRJbWFnZSo+
IG1fY2FjaGVkSW1hZ2VzOwogICAgIH07CkBAIC0xNjIsNiArMTYzLDcgQEAgcHJpdmF0ZToKICAg
ICBib29sIGNhbkRlc3Ryb3lEZWNvZGVkRGF0YShjb25zdCBJbWFnZSYpOwogICAgIHZvaWQgaW1h
Z2VGcmFtZUF2YWlsYWJsZShjb25zdCBJbWFnZSYsIEltYWdlQW5pbWF0aW5nU3RhdGUsIGNvbnN0
IEludFJlY3QqIGNoYW5nZVJlY3QgPSBudWxscHRyLCBEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5n
U3RhdHVzOjpJbnZhbGlkKTsKICAgICB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2UmLCBj
b25zdCBJbnRSZWN0Kik7CisgICAgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShjb25zdCBJ
bWFnZSYpOwogCiAgICAgdm9pZCB1cGRhdGVCdWZmZXJJbnRlcm5hbChTaGFyZWRCdWZmZXImKTsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlQ2xpZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlQ2xp
ZW50LmgJKHJldmlzaW9uIDI1OTU2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw5IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIFZpc2libGVJblZpZXdwb3J0U3RhdGUgaW1hZ2VGcmFtZUF2YWlsYWJs
ZShDYWNoZWRJbWFnZSYgaW1hZ2UsIEltYWdlQW5pbWF0aW5nU3RhdGUsIGNvbnN0IEludFJlY3Qq
IGNoYW5nZVJlY3QpIHsgaW1hZ2VDaGFuZ2VkKCZpbWFnZSwgY2hhbmdlUmVjdCk7IHJldHVybiBW
aXNpYmxlSW5WaWV3cG9ydFN0YXRlOjpObzsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlbW92
ZUNhY2hlZEltYWdlQ2xpZW50KENhY2hlZEltYWdlJikgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQg
c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVu
ZGVyaW5nKCkgeyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAJKHJldmlzaW9uIDI1OTU2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTk2LDYgKzk2LDcgQEAKICNpbmNsdWRlICJQb2ludGVyTG9j
a0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXIuaCIKICNpbmNsdWRlICJS
ZW5kZXJEZXNjZW5kYW50SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgogI2lu
Y2x1ZGUgIlJlbmRlckxheWVyQ29tcG9zaXRvci5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgi
CiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgpAQCAtMTMwNSw2ICsxMzA2LDE0IEBAIHZvaWQgUGFn
ZTo6c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKQogICAgIHJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxl
cigpLnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCk7CiB9CiAKK3ZvaWQgUGFnZTo6c2NoZWR1bGVU
aW1lZFJlbmRlcmluZ1VwZGF0ZSgpCit7CisgICAgaWYgKGNocm9tZSgpLmNsaWVudCgpLmlzU1ZH
SW1hZ2VDaHJvbWVDbGllbnQoKSkKKyAgICAgICAgY2hyb21lKCkuY2xpZW50KCkuc2NoZWR1bGVS
ZW5kZXJpbmdVcGRhdGUoKTsKKyAgICBlbHNlCisgICAgICAgIHJlbmRlcmluZ1VwZGF0ZVNjaGVk
dWxlcigpLnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKTsKK30KKwogLy8gaHR0cHM6Ly9o
dG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvd2ViYXBwYXBpcy5odG1sI3VwZGF0ZS10aGUt
cmVuZGVyaW5nCiB2b2lkIFBhZ2U6OnVwZGF0ZVJlbmRlcmluZygpCiB7CkBAIC0xMzU3LDYgKzEz
NjYsMTQgQEAgdm9pZCBQYWdlOjp1cGRhdGVSZW5kZXJpbmcoKQogICAgIH0pOwogI2VuZGlmCiAK
KyAgICBmb3JFYWNoRG9jdW1lbnQoWyZdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsKKyAgICAgICAg
YXV0byogcmVuZGVyVmlldyA9IGRvY3VtZW50LnJlbmRlclZpZXcoKTsKKyAgICAgICAgaWYgKCFy
ZW5kZXJWaWV3KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBmb3IgKGF1dG8mIHJlbmRl
cmVyIDogZGVzY2VuZGFudHNPZlR5cGU8UmVuZGVyRWxlbWVudD4oKnJlbmRlclZpZXcpKQorICAg
ICAgICAgICAgcmVuZGVyZXIudXBkYXRlUmVuZGVyaW5nKCk7CisgICAgfSk7CisKICAgICBsYXlv
dXRJZk5lZWRlZCgpOwogICAgIGRvQWZ0ZXJVcGRhdGVSZW5kZXJpbmcoKTsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5oCShyZXZpc2lvbiAyNTk1NjApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtNDc4LDYgKzQ3OCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHVwZGF0ZVJlbmRlcmluZygpOwogICAgIAogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICB2b2lkIHNjaGVkdWxlVGltZWRS
ZW5kZXJpbmdVcGRhdGUoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3VzcGVuZFNjcmlw
dGVkQW5pbWF0aW9ucygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzdW1lU2NyaXB0ZWRB
bmltYXRpb25zKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZU9ic2VydmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VPYnNlcnZlci5oCShyZXZpc2lvbiAyNTk1NjApCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9ic2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYg
KzUwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBjYW5EZXN0cm95RGVjb2RlZERhdGEo
Y29uc3QgSW1hZ2UmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGltYWdlRnJhbWVBdmFpbGFibGUo
Y29uc3QgSW1hZ2UmLCBJbWFnZUFuaW1hdGluZ1N0YXRlLCBjb25zdCBJbnRSZWN0KiBjaGFuZ2VS
ZWN0ID0gbnVsbHB0ciwgRGVjb2RpbmdTdGF0dXMgPSBEZWNvZGluZ1N0YXR1czo6SW52YWxpZCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiwgY29uc3Qg
SW50UmVjdCogY2hhbmdlUmVjdCA9IG51bGxwdHIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2No
ZWR1bGVSZW5kZXJpbmdVcGRhdGUoY29uc3QgSW1hZ2UmKSA9IDA7CiB9OwogCiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAJ
KHJldmlzaW9uIDI1OTU2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hN
b2RlbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDcgQEAKICNpbmNsdWRl
ICJSZW5kZXJUZXh0RnJhZ21lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJUcmVlQnVpbGRlci5oIgog
I2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKKyNpbmNsdWRlICJTVkdJbWFnZS5oIgogI2luY2x1ZGUg
IlNjcm9sbGluZ0NvbnN0cmFpbnRzLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRl
ICJUcmFuc2Zvcm1TdGF0ZS5oIgpAQCAtMjExLDYgKzIxMiwyMyBAQCB2b2lkIFJlbmRlckJveE1v
ZGVsT2JqZWN0Ojp1cGRhdGVGcm9tU3R5CiAgICAgICAgIHZpZXcoKS5mcmFtZVZpZXcoKS5zZXRI
YXNGbGlwcGVkQmxvY2tSZW5kZXJlcnModHJ1ZSk7CiB9CiAKK3ZvaWQgUmVuZGVyQm94TW9kZWxP
YmplY3Q6OnVwZGF0ZVJlbmRlcmluZygpCit7CisgICAgaWYgKCFzdHlsZSgpLmhhc0JhY2tncm91
bmRJbWFnZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBiYWNrZ3JvdW5kTGF5ZXIg
PSBzdHlsZSgpLmJhY2tncm91bmRMYXllcnMoKTsKKyAgICBpZiAoIWJhY2tncm91bmRMYXllci5p
bWFnZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvKiBjYWNoZWRJbWFnZSA9IGJhY2tn
cm91bmRMYXllci5pbWFnZSgpLT5jYWNoZWRJbWFnZSgpOworICAgIGlmIChjYWNoZWRJbWFnZSAm
JiBpczxTVkdJbWFnZT4oY2FjaGVkSW1hZ2UtPmltYWdlKCkpKSB7CisgICAgICAgIGF1dG8qIGlt
YWdlID0gZG93bmNhc3Q8U1ZHSW1hZ2U+KGNhY2hlZEltYWdlLT5pbWFnZSgpKTsKKyAgICAgICAg
aWYgKGF1dG8qIHBhZ2UgPSBpbWFnZS0+cGFnZSgpKQorICAgICAgICAgICAgcGFnZS0+dXBkYXRl
UmVuZGVyaW5nKCk7CisgICAgfQorfQorCiBzdGF0aWMgTGF5b3V0U2l6ZSBhY2N1bXVsYXRlSW5G
bG93UG9zaXRpb25PZmZzZXRzKGNvbnN0IFJlbmRlck9iamVjdCogY2hpbGQpCiB7CiAgICAgaWYg
KCFjaGlsZC0+aXNBbm9ueW1vdXNCbG9jaygpIHx8ICFjaGlsZC0+aXNJbkZsb3dQb3NpdGlvbmVk
KCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxP
YmplY3QuaAkocmV2aXNpb24gMjU5NTYwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveE1vZGVsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0Myw2ICsyNDMsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QoRG9jdW1lbnQmLCBSZW5kZXJTdHls
ZSYmLCBCYXNlVHlwZUZsYWdzKTsKIAogICAgIHZvaWQgd2lsbEJlRGVzdHJveWVkKCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCB1cGRhdGVSZW5kZXJpbmcoKSBvdmVycmlkZTsKIAogICAgIExheW91dFBv
aW50IGFkanVzdGVkUG9zaXRpb25SZWxhdGl2ZVRvT2Zmc2V0UGFyZW50KGNvbnN0IExheW91dFBv
aW50JikgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxl
bWVudC5jcHAJKHJldmlzaW9uIDI1OTU2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMyNCw2ICsxMzI0LDEyIEBAIHZv
aWQgUmVuZGVyRWxlbWVudDo6ZGlkUmVtb3ZlQ2FjaGVkSW1hZ2UKICAgICAgICAgdmlldygpLnJl
bW92ZVJlbmRlcmVyV2l0aFBhdXNlZEltYWdlQW5pbWF0aW9ucygqdGhpcywgY2FjaGVkSW1hZ2Up
OwogfQogCit2b2lkIFJlbmRlckVsZW1lbnQ6OnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCkKK3sK
KyAgICBpZiAoYXV0byogcGFnZSA9IGRvY3VtZW50KCkucGFnZSgpKQorICAgICAgICBwYWdlLT5z
Y2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOworfQorCiBib29sIFJlbmRlckVsZW1lbnQ6OnJlcGFp
bnRGb3JQYXVzZWRJbWFnZUFuaW1hdGlvbnNJZk5lZWRlZChjb25zdCBJbnRSZWN0JiB2aXNpYmxl
UmVjdCwgQ2FjaGVkSW1hZ2UmIGNhY2hlZEltYWdlKQogewogICAgIEFTU0VSVChtX2hhc1BhdXNl
ZEltYWdlQW5pbWF0aW9ucyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJF
bGVtZW50LmgJKHJldmlzaW9uIDI1OTU2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxOSw2ICszMTksNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgY2FuRGVzdHJveURlY29kZWREYXRhKCkgZmluYWwgeyByZXR1cm4gIWlzVmlz
aWJsZUluVmlld3BvcnQoKTsgfQogICAgIFZpc2libGVJblZpZXdwb3J0U3RhdGUgaW1hZ2VGcmFt
ZUF2YWlsYWJsZShDYWNoZWRJbWFnZSYsIEltYWdlQW5pbWF0aW5nU3RhdGUsIGNvbnN0IEludFJl
Y3QqIGNoYW5nZVJlY3QpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVtb3ZlQ2FjaGVkSW1hZ2VDbGll
bnQoQ2FjaGVkSW1hZ2UmKSBmaW5hbDsKKyAgICB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRl
KCkgZmluYWw7CiAKICAgICBib29sIGdldExlYWRpbmdDb3JuZXIoRmxvYXRQb2ludCYgb3V0cHV0
LCBib29sJiBpbnNpZGVGaXhlZCkgY29uc3Q7CiAgICAgYm9vbCBnZXRUcmFpbGluZ0Nvcm5lcihG
bG9hdFBvaW50JiBvdXRwdXQsIGJvb2wmIGluc2lkZUZpeGVkKSBjb25zdDsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAkocmV2aXNpb24gMjU5NTYwKQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzMyLDYgKzMzMiwxNiBAQCB2b2lkIFJlbmRlckltYWdlOjppbWFnZUNoYW5nZWQoV3JhcHBl
ZEltCiAjZW5kaWYKIH0KIAordm9pZCBSZW5kZXJJbWFnZTo6dXBkYXRlUmVuZGVyaW5nKCkKK3sK
KyAgICBhdXRvKiBjYWNoZWRJbWFnZSA9IHRoaXMtPmNhY2hlZEltYWdlKCk7CisgICAgaWYgKGNh
Y2hlZEltYWdlICYmIGlzPFNWR0ltYWdlPihjYWNoZWRJbWFnZS0+aW1hZ2UoKSkpIHsKKyAgICAg
ICAgYXV0byogaW1hZ2UgPSBkb3duY2FzdDxTVkdJbWFnZT4oY2FjaGVkSW1hZ2UtPmltYWdlKCkp
OworICAgICAgICBpZiAoYXV0byogcGFnZSA9IGltYWdlLT5wYWdlKCkpCisgICAgICAgICAgICBw
YWdlLT51cGRhdGVSZW5kZXJpbmcoKTsKKyAgICB9Cit9CisKIHZvaWQgUmVuZGVySW1hZ2U6OnVw
ZGF0ZUludHJpbnNpY1NpemVJZk5lZWRlZChjb25zdCBMYXlvdXRTaXplJiBuZXdTaXplKQogewog
ICAgIGlmIChpbWFnZVJlc291cmNlKCkuZXJyb3JPY2N1cnJlZCgpIHx8ICFtX2ltYWdlUmVzb3Vy
Y2UtPmNhY2hlZEltYWdlKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1h
Z2UuaAkocmV2aXNpb24gMjU5NTYwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTkyLDYgKzkyLDcgQEAgcHJvdGVjdGVkOgogICAg
IHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSop
IG92ZXJyaWRlOwogCiAgICAgdm9pZCBpbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyLCBjb25z
dCBJbnRSZWN0KiA9IG51bGxwdHIpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlUmVuZGVyaW5n
KCkgb3ZlcnJpZGU7CiAKICAgICBJbWFnZURyYXdSZXN1bHQgcGFpbnRJbnRvUmVjdChQYWludElu
Zm8mLCBjb25zdCBGbG9hdFJlY3QmKTsKICAgICB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0
IExheW91dFBvaW50JikgZmluYWw7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2UuaAkocmV2aXNpb24gMjU5NTYwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L1NWR0ltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDYgKzY4LDggQEAgcHVibGljOgogI2lm
IFVTRShESVJFQ1QyRCkKICAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZShjb25zdCBHcmFw
aGljc0NvbnRleHQqID0gbnVsbHB0cikgZmluYWw7CiAjZW5kaWYKKyAgICAKKyAgICBQYWdlKiBw
YWdlKCkgeyByZXR1cm4gbV9wYWdlLmdldCgpOyB9CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNs
YXNzIFNWR0ltYWdlQ2hyb21lQ2xpZW50OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlQ2xpZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZUNsaWVudHMuaAkocmV2aXNpb24gMjU5NTYwKQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2xpZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC02
Miw3ICs2MiwxNCBAQCBwcml2YXRlOgogCiAgICAgICAgIGltYWdlT2JzZXJ2ZXItPmltYWdlRnJh
bWVBdmFpbGFibGUoKm1faW1hZ2UsIG1faW1hZ2UtPmlzQW5pbWF0aW5nKCkgPyBJbWFnZUFuaW1h
dGluZ1N0YXRlOjpZZXMgOiBJbWFnZUFuaW1hdGluZ1N0YXRlOjpObywgJnIpOwogICAgIH0KLSAg
ICAKKworICAgIHZvaWQgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKSBmaW5hbAorICAgIHsKKyAg
ICAgICAgaWYgKCFtX2ltYWdlIHx8ICFtX2ltYWdlLT5pbWFnZU9ic2VydmVyKCkpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIG1faW1hZ2UtPmltYWdlT2JzZXJ2ZXIoKS0+c2NoZWR1bGVS
ZW5kZXJpbmdVcGRhdGUoKm1faW1hZ2UpOworICAgIH0KKwogICAgIFNWR0ltYWdlKiBtX2ltYWdl
OwogfTsKIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjU5NTYwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDQtMDcgIFNhaWQgQWJv
dS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9O
OiBDU1MgYW5pbWF0aW9ucyBpbnNpZGUgYW4gZW1iZWRkZWQgU1ZHIGltYWdlIGRvIG5vdCBhbmlt
YXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDkz
NzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN2
Zy9hbmltYXRpb25zL2Nzcy1hbmltYXRpb24tYmFja2dyb3VuZC1zdmctZXhwZWN0ZWQuaHRtbDog
QWRkZWQuCisgICAgICAgICogc3ZnL2FuaW1hdGlvbnMvY3NzLWFuaW1hdGlvbi1iYWNrZ3JvdW5k
LXN2Zy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvYW5pbWF0aW9ucy9jc3MtYW5pbWF0aW9u
LWVtYmVkZGVkLXN2Zy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvYW5pbWF0
aW9ucy9jc3MtYW5pbWF0aW9uLWVtYmVkZGVkLXN2Zy5odG1sOiBBZGRlZC4KKwogMjAyMC0wNC0w
NSAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CiAKICAgICAgICAgT2N0
YWwgZXNjYXBlcyBzaG91bGQgYmUgbWF4IDMgZGlnaXRzIGFuZCBzeW50YXggZXJyb3JzIGluIFVu
aWNvZGUgcGF0dGVybnMKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL2Nzcy1hbmlt
YXRpb24tYmFja2dyb3VuZC1zdmctZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9zdmcvYW5pbWF0aW9ucy9jc3MtYW5pbWF0aW9uLWJhY2tncm91bmQtc3ZnLWV4cGVjdGVk
Lmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvY3NzLWFu
aW1hdGlvbi1iYWNrZ3JvdW5kLXN2Zy1leHBlY3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMTIgQEAKKzxzdHlsZT4KKyAgIAlpbWcgeworICAgICAgICB3aWR0aDogMTAwcHg7Cisg
ICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgfQorPC9zdHlsZT4KKzxib2R5PgorICAgIDxpbWcg
c3JjPSdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCwKKyAgICAgICAgPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciPgorICAgICAgICAgICAgPHJlY3Qgd2lkdGg9IjEwMCUiIGhl
aWdodD0iMTAwJSIgZmlsbD0iZ3JlZW4iLz4KKyAgICAgICAgPC9zdmc+Jz4KKzwvYm9keT4KSW5k
ZXg6IExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL2Nzcy1hbmltYXRpb24tYmFja2dyb3VuZC1z
dmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9jc3MtYW5p
bWF0aW9uLWJhY2tncm91bmQtc3ZnLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMv
c3ZnL2FuaW1hdGlvbnMvY3NzLWFuaW1hdGlvbi1iYWNrZ3JvdW5kLXN2Zy5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMjQgQEAKKzxzdHlsZT4KKyAgICAuYm94IHsKKyAgICAgICAgYmFj
a2dyb3VuZDogdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUI0Yld4dWN6MGlh
SFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZNakF3TUM5emRtY2lQZ29nSUNBZ0lDQWdJQ0FnSUNBOGMz
UjViR1UrQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JBYTJWNVpuSmhiV1Z6SUdaaFpHVnBiaUI3Q2lB
Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1puSnZiU0I3SUc5d1lXTnBkSGs2TURzZ2ZRb2dJQ0Fn
SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSFJ2SUhzZ2IzQmhZMmwwZVRveE95QjlDaUFnSUNBZ0lDQWdJ
Q0FnSUNBZ0lDQjlDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWpaM0psWlc0Z2V5QUtJQ0FnSUNBZ0lD
QWdJQ0FnSUNBZ0lDQWdJQ0JoYm1sdFlYUnBiMjQ2SUdaaFpHVnBiaUF4Tm0xek93b2dJQ0FnSUNB
Z0lDQWdJQ0FnSUNBZ2ZRb2dJQ0FnSUNBZ0lDQWdJQ0E4TDNOMGVXeGxQZ29nSUNBZ0lDQWdJQ0Fn
SUNBOGNtVmpkQ0IzYVdSMGFEMGlNVEF3SlNJZ2FHVnBaMmgwUFNJeE1EQWxJaUJtYVd4c1BTSnla
V1FpTHo0S0lDQWdJQ0FnSUNBZ0lDQWdQSEpsWTNRZ2FXUTlJbWR5WldWdUlpQjNhV1IwYUQwaU1U
QXdKU0lnYUdWcFoyaDBQU0l4TURBbElpQm1hV3hzUFNKbmNtVmxiaUl2UGdvZ0lDQWdJQ0FnSUR3
dmMzWm5QZz09Iik7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBw
eDsKKyAgICB9Cis8L3N0eWxlPgorPGJvZHk+CisgICAgPGRpdiBjbGFzcz0iYm94Ij48L2Rpdj4K
KyAgICA8c2NyaXB0PgorICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworICAgICAgICB2YXIgckFGQ291bnQgPSAw
OworICAgICAgICBmdW5jdGlvbiBhbmltYXRlKHRpbWVzdGFtcCkgeworICAgICAgICAgICAgaWYg
KCsrckFGQ291bnQgPCAxMCkKKyAgICAgICAgICAgICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlv
bkZyYW1lKGFuaW1hdGUpOworICAgICAgICAgICAgZWxzZSBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgIH0KKwor
ICAgICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGFuaW1hdGUpOworICAgIDwvc2Ny
aXB0PgorPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvY3NzLWFuaW1h
dGlvbi1lbWJlZGRlZC1zdmctZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9zdmcvYW5pbWF0aW9ucy9jc3MtYW5pbWF0aW9uLWVtYmVkZGVkLXN2Zy1leHBlY3RlZC5odG1s
CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL2Nzcy1hbmltYXRp
b24tZW1iZWRkZWQtc3ZnLWV4cGVjdGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
MiBAQAorPHN0eWxlPgorICAgCWltZyB7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAg
aGVpZ2h0OiAxMDBweDsKKyAgICB9Cis8L3N0eWxlPgorPGJvZHk+CisgICAgPGltZyBzcmM9J2Rh
dGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LAorICAgICAgICA8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyI+CisgICAgICAgICAgICA8cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIx
MDAlIiBmaWxsPSJncmVlbiIvPgorICAgICAgICA8L3N2Zz4nPgorPC9ib2R5PgpJbmRleDogTGF5
b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvY3NzLWFuaW1hdGlvbi1lbWJlZGRlZC1zdmcuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9jc3MtYW5pbWF0aW9uLWVt
YmVkZGVkLXN2Zy5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL3N2Zy9hbmltYXRp
b25zL2Nzcy1hbmltYXRpb24tZW1iZWRkZWQtc3ZnLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwzNiBAQAorPHN0eWxlPgorICAgIGltZyB7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAg
ICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICB9Cis8L3N0eWxlPgorPGJvZHk+CisgICAgPGltZyBz
cmM9J2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LAorICAgICAgICA8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyI+CisgICAgICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAg
ICAgQGtleWZyYW1lcyBmYWRlaW4geworICAgICAgICAgICAgICAgICAgICBmcm9tIHsgb3BhY2l0
eTowOyB9CisgICAgICAgICAgICAgICAgICAgIHRvIHsgb3BhY2l0eToxOyB9CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICNncmVlbiB7IAorICAgICAgICAgICAgICAgICAgICBh
bmltYXRpb246IGZhZGVpbiAxNm1zOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIDwv
c3R5bGU+CisgICAgICAgICAgICA8cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxs
PSJyZWQiLz4KKyAgICAgICAgICAgIDxyZWN0IGlkPSJncmVlbiIgd2lkdGg9IjEwMCUiIGhlaWdo
dD0iMTAwJSIgZmlsbD0iZ3JlZW4iLz4KKyAgICAgICAgPC9zdmc+Jz4KKyAgICA8c2NyaXB0Pgor
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKKworICAgICAgICB2YXIgckFGQ291bnQgPSAwOworICAgICAgICBmdW5j
dGlvbiBhbmltYXRlKHRpbWVzdGFtcCkgeworICAgICAgICAgICAgaWYgKCsrckFGQ291bnQgPCAx
MCkKKyAgICAgICAgICAgICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGFuaW1hdGUp
OworICAgICAgICAgICAgZWxzZSBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgIH0KKworICAgICAgICB3aW5kb3cu
cmVxdWVzdEFuaW1hdGlvbkZyYW1lKGFuaW1hdGUpOworICAgIDwvc2NyaXB0PgorPC9ib2R5Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395750</attachid>
            <date>2020-04-07 15:31:21 -0700</date>
            <delta_ts>2020-04-08 13:07:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209370-20200407153120.patch</filename>
            <type>text/plain</type>
            <size>20407</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1OTY3NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY3IEBACisyMDIwLTA0LTA3ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lP
TjogQ1NTIGFuaW1hdGlvbnMgaW5zaWRlIGFuIGVtYmVkZGVkIFNWRyBpbWFnZSBkbyBub3QgYW5p
bWF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5
MzcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSWYg
V2ViQW5pbWF0aW9uIGlzIGVuYWJsZWQgYW5kIHRoZSBTVkdJbWFnZSBpbmNsdWRlcyBDU1MgYW5p
bWF0aW9ucywgdGhlCisgICAgICAgIERvY3VtZW50VGltZWxpbmUgaXMgYWRkZWQgdG8gdGhlIFNW
R0RvY3VtZW50IG9mIHRoZSBlbWJlZGRlZCBTVkdJbWFnZS4KKyAgICAgICAgQmVjYXVzZSB0aGUg
U1ZHSW1hZ2UgaGFzIGl0cyBvd24gUGFnZSB0aGUgUmVuZGVyaW5nVXBkYXRlIGlzIHNjaGVkdWxl
ZAorICAgICAgICBhbmQgdGhlIHVwZGF0ZVJlbmRlcmluZyBzdGVwcyBydW4gaW4gdGhpcyBQYWdl
LgorCisgICAgICAgIFRoZSBQYWdlIG9mIHRoZSBTVkdJbWFnZSBpcyBpbmFjdGl2ZSBzdWNoIHRo
YXQgc2NoZWR1bGluZyBSZW5kZXJpbmdVcGRhdGUKKyAgICAgICAgZmFpbHM7IHRoZXJlZm9yZSB0
aGUgdXBkYXRlUmVuZGVyaW5nIHN0ZXBzIG5ldmVyIHJ1biBhbmQgdGhlIENTUyBhbmltYXRpb24K
KyAgICAgICAgbmV2ZXIgYWR2YW5jZXMuCisKKyAgICAgICAgVGhlIGZpeCBpczoKKworICAgICAg
ICAxKSBTY2hlZHVsaW5nIHRoZSBSZW5kZXJpbmdVcGRhdGU6IFRoaXMgaGFzIHRvIGhhcHBlbiBp
biB0aGUgUGFnZSB3aGljaAorICAgICAgICAgICBjb250YWlucyB0aGUgcmVuZGVyZXIgb2YgdGhl
IFNWR0ltYWdlLiBCZWNhdXNlIERvY3VtZW50VGltZWxpbmUgaXMKKyAgICAgICAgICAgYWRkZWQg
dG8gU1ZHRG9jdW1lbnQsIHRoaXMgc2NoZWR1bGluZyB3aWxsIGdvIHRocm91Z2ggdGhlc2UgaHVi
czoKKyAgICAgICAgICAgICAgICAtIERvY3VtZW50VGltZWxpbmUKKyAgICAgICAgICAgICAgICAt
IFBhZ2UKKyAgICAgICAgICAgICAgICAtIENocm9tZUNsaWVudCAtPiBTVkdJbWFnZUNocm9tZUNs
aWVudCAKKyAgICAgICAgICAgICAgICAtIFNWR0ltYWdlCisgICAgICAgICAgICAgICAgLSBJbWFn
ZU9ic2VydmVyIC0+IENhY2hlZEltYWdlT2JzZXJ2ZXIKKyAgICAgICAgICAgICAgICAtIENhY2hl
ZEltYWdlCisgICAgICAgICAgICAgICAgLSBDYWNoZWRJbWFnZUNsaWVudCAtPiBSZW5kZXJFbGVt
ZW50CisgICAgICAgICAgICAgICAgLSBQYWdlCisKKyAgICAgICAgMikgUnVubmluZyB0aGUgdXBk
YXRlUmVuZGVyaW5nIHN0ZXBzOiBFYWNoIGRvY3VtZW50IGluIHRoZSBQYWdlIHdpbGwKKyAgICAg
ICAgICAgZW51bWVyYXRlIGl0cyBjYWNoZWQgU1ZHSW1hZ2VzLiBUaGUgdXBkYXRlUmVuZGVyaW5n
IG9mIHRoZSBQYWdlIG9mCisgICAgICAgICAgIGVhY2ggU1ZHSW1hZ2Ugd2lsbCBiZSBjYWxsZWQu
CisKKyAgICAgICAgVGVzdHM6IHN2Zy9hbmltYXRpb25zL2Nzcy1hbmltYXRpb24tYmFja2dyb3Vu
ZC1zdmcuaHRtbAorICAgICAgICAgICAgICAgc3ZnL2FuaW1hdGlvbnMvY3NzLWFuaW1hdGlvbi1l
bWJlZGRlZC1zdmcuaHRtbAorCisgICAgICAgICogYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZTo6c2NoZWR1bGVBbmltYXRp
b25SZXNvbHV0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGltZWxpbmU6OnVwZGF0
ZUFuaW1hdGlvbnNBbmRTZW5kRXZlbnRzKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnVwZGF0ZVNWR0ltYWdlc1JlbmRlcmluZyk6Cisg
ICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogaHRtbC9JbWFnZUJpdG1hcC5jcHA6
CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Q2FjaGVk
SW1hZ2VPYnNlcnZlcjo6c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkSW1hZ2U6OnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2VDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlQ2xpZW50OjpzY2hlZHVs
ZVJlbmRlcmluZ1VwZGF0ZSk6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUpOgorICAg
ICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzY2hlZHVsZVRp
bWVkUmVuZGVyaW5nVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVwZGF0ZVJlbmRl
cmluZyk6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VPYnNlcnZlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OnNjaGVkdWxlUmVuZGVyaW5nVXBk
YXRlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9ncmFwaGljcy9TVkdJbWFnZS5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUNs
aWVudHMuaDoKKwogMjAyMC0wNC0wNyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxl
LmNvbT4KIAogICAgICAgICBVc2UgUmVjdEVkZ2VzPD4gaW4gc29tZSBzY3JvbGxpbmcgdHJlZSBj
b2RlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUu
Y3BwCShyZXZpc2lvbiAyNTk1NjApCisrKyBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1l
bnRUaW1lbGluZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzOSw3ICszMzksNyBAQCB2b2lkIERv
Y3VtZW50VGltZWxpbmU6OnNjaGVkdWxlQW5pbWF0aW9uCiAgICAgaWYgKCFzaG91bGRSdW5VcGRh
dGVBbmltYXRpb25zQW5kU2VuZEV2ZW50c0lnbm9yaW5nU3VzcGVuc2lvblN0YXRlKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIG1fZG9jdW1lbnQtPnBhZ2UoKS0+cmVuZGVyaW5nVXBkYXRlU2No
ZWR1bGVyKCkuc2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSgpOworICAgIG1fZG9jdW1lbnQt
PnBhZ2UoKS0+c2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSgpOwogICAgIG1fYW5pbWF0aW9u
UmVzb2x1dGlvblNjaGVkdWxlZCA9IHRydWU7CiB9CiAKQEAgLTM2NCw3ICszNjQsNiBAQCB2b2lk
IERvY3VtZW50VGltZWxpbmU6OnVwZGF0ZUN1cnJlbnRUaW1lCiAKIHZvaWQgRG9jdW1lbnRUaW1l
bGluZTo6dXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHMoKQogewotCiAgICAgLy8gVXBkYXRp
bmcgYW5pbWF0aW9ucyBhbmQgc2VuZGluZyBldmVudHMgbWF5IGludmFsaWRhdGUgdGhlIHRpbWlu
ZyBvZiBzb21lIGFuaW1hdGlvbnMsIHNvIHdlIG11c3Qgc2V0IHRoZSBtX2FuaW1hdGlvblJlc29s
dXRpb25TY2hlZHVsZWQKICAgICAvLyBmbGFnIHRvIGZhbHNlIHByaW9yIHRvIHJ1bm5pbmcgdGhh
dCBwcm9jZWR1cmUgdG8gYWxsb3cgYW5pbWF0aW9uIHdpdGggdGltaW5nIG1vZGVsIHVwZGF0ZXMg
dG8gc2NoZWR1bGUgdXBkYXRlcy4KICAgICBtX2FuaW1hdGlvblJlc29sdXRpb25TY2hlZHVsZWQg
PSBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMjU5NTYwKQor
KysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgs
NiArMzgsNyBAQAogI2luY2x1ZGUgIkNTU1N0eWxlU2hlZXQuaCIKICNpbmNsdWRlICJDYWNoZWRD
U1NTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSAiQ2FjaGVkRnJhbWUuaCIKKyNpbmNsdWRlICJDYWNo
ZWRJbWFnZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAi
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCkBAIC0xNzcs
NiArMTc4LDcgQEAKICNpbmNsdWRlICJTVkdEb2N1bWVudEV4dGVuc2lvbnMuaCIKICNpbmNsdWRl
ICJTVkdFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudEZhY3RvcnkuaCIKKyNpbmNsdWRl
ICJTVkdJbWFnZS5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHU1ZHRWxl
bWVudC5oIgogI2luY2x1ZGUgIlNWR1RpdGxlRWxlbWVudC5oIgpAQCAtNjM4Myw2ICs2Mzg1LDIy
IEBAIHZvaWQgRG9jdW1lbnQ6OnNlcnZpY2VSZXF1ZXN0QW5pbWF0aW9uRnIKICAgICAgICAgbV9z
Y3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXItPnNlcnZpY2VSZXF1ZXN0QW5pbWF0aW9uRnJhbWVD
YWxsYmFja3ModGltZXN0YW1wKTsKIH0KIAordm9pZCBEb2N1bWVudDo6dXBkYXRlU1ZHSW1hZ2Vz
UmVuZGVyaW5nKCkKK3sKKyAgICBmb3IgKGF1dG8mIGNhY2hlZFJlc291cmNlSGFuZGxlIDogbV9j
YWNoZWRSZXNvdXJjZUxvYWRlci0+YWxsQ2FjaGVkUmVzb3VyY2VzKCkudmFsdWVzKCkpIHsKKyAg
ICAgICAgYXV0byogY2FjaGVkUmVzb3VyY2UgPSBjYWNoZWRSZXNvdXJjZUhhbmRsZS5nZXQoKTsK
KyAgICAgICAgaWYgKCFjYWNoZWRSZXNvdXJjZSB8fCAhY2FjaGVkUmVzb3VyY2UtPmlzSW1hZ2Uo
KSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAKKyAgICAgICAgYXV0byogaW1hZ2Ug
PSBkb3duY2FzdDxDYWNoZWRJbWFnZT4oY2FjaGVkUmVzb3VyY2UpLT5pbWFnZSgpOworICAgICAg
ICBpZiAoIWltYWdlIHx8ICFpczxTVkdJbWFnZT4oaW1hZ2UpKQorICAgICAgICAgICAgY29udGlu
dWU7CisKKyAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBkb3duY2FzdDxTVkdJbWFnZT4oaW1hZ2Up
LT5wYWdlKCkpCisgICAgICAgICAgICBwYWdlLT51cGRhdGVSZW5kZXJpbmcoKTsKKyAgICB9Cit9
CisKIHZvaWQgRG9jdW1lbnQ6OndpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJ
RCBkaXNwbGF5SUQpCiB7CiAgICAgaWYgKFJlbmRlclZpZXcqIHZpZXcgPSByZW5kZXJWaWV3KCkp
IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiAyNTk1NjApCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTA3OSw2ICsxMDc5LDcg
QEAgcHVibGljOgogCiAgICAgdm9pZCB1cGRhdGVBbmltYXRpb25zQW5kU2VuZEV2ZW50cyhET01I
aWdoUmVzVGltZVN0YW1wKTsKICAgICB2b2lkIHNlcnZpY2VSZXF1ZXN0QW5pbWF0aW9uRnJhbWVD
YWxsYmFja3MoRE9NSGlnaFJlc1RpbWVTdGFtcCk7CisgICAgdm9pZCB1cGRhdGVTVkdJbWFnZXNS
ZW5kZXJpbmcoKTsKIAogICAgIHZvaWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlz
cGxheUlEKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAJKHJldmlzaW9u
IDI1OTU2MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01MjgsNiArNTI4LDcgQEAgcHVibGljOgogICAgIGJvb2wgY2FuRGVzdHJveURl
Y29kZWREYXRhKGNvbnN0IEltYWdlJikgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZv
aWQgaW1hZ2VGcmFtZUF2YWlsYWJsZShjb25zdCBJbWFnZSYsIEltYWdlQW5pbWF0aW5nU3RhdGUs
IGNvbnN0IEludFJlY3QqID0gbnVsbHB0ciwgRGVjb2RpbmdTdGF0dXMgPSBEZWNvZGluZ1N0YXR1
czo6SW52YWxpZCkgb3ZlcnJpZGUgeyB9CiAgICAgdm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IElt
YWdlJiwgY29uc3QgSW50UmVjdCogPSBudWxscHRyKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHNj
aGVkdWxlUmVuZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJikgb3ZlcnJpZGUgeyB9CiAKIHByaXZh
dGU6CiAgICAgSW1hZ2VCaXRtYXBJbWFnZU9ic2VydmVyKFN0cmluZyBtaW1lVHlwZSwgbG9uZyBs
b25nIGV4cGVjdGVkQ29udGVudExlbmd0aCwgY29uc3QgVVJMJiBzb3VyY2VVcmwpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCShyZXZpc2lvbiAyNTk1NjApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1MSw3
ICsxNTEsNiBAQCBjbGFzcyBFbXB0eUNocm9tZUNsaWVudCA6IHB1YmxpYyBDaHJvbWVDCiAgICAg
dm9pZCBhdHRhY2hSb290R3JhcGhpY3NMYXllcihGcmFtZSYsIEdyYXBoaWNzTGF5ZXIqKSBmaW5h
bCB7IH0KICAgICB2b2lkIGF0dGFjaFZpZXdPdmVybGF5R3JhcGhpY3NMYXllcihHcmFwaGljc0xh
eWVyKikgZmluYWwgeyB9CiAgICAgdm9pZCBzZXROZWVkc09uZVNob3REcmF3aW5nU3luY2hyb25p
emF0aW9uKCkgZmluYWwgeyB9Ci0gICAgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpIGZp
bmFsIHsgfQogCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHZvaWQgc2V0TGFzdFNldEN1cnNvclRv
Q3VycmVudEN1cnNvcigpIGZpbmFsIHsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCShyZXZpc2lvbiAyNTk1NjApCisrKyBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MzQsNiAr
NDM0LDEyIEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OkNhY2hlZEltYWdlT2JzZXJ2ZXI6OmMKICAgICAg
ICAgY2FjaGVkSW1hZ2UtPmNoYW5nZWRJblJlY3QoaW1hZ2UsIHJlY3QpOwogfQogCit2b2lkIENh
Y2hlZEltYWdlOjpDYWNoZWRJbWFnZU9ic2VydmVyOjpzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShj
b25zdCBJbWFnZSYgaW1hZ2UpCit7CisgICAgZm9yIChhdXRvIGNhY2hlZEltYWdlIDogbV9jYWNo
ZWRJbWFnZXMpCisgICAgICAgIGNhY2hlZEltYWdlLT5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShp
bWFnZSk7Cit9CisKIGlubGluZSB2b2lkIENhY2hlZEltYWdlOjpjbGVhckltYWdlKCkKIHsKICAg
ICBpZiAoIW1faW1hZ2UpCkBAIC02ODQsNiArNjkwLDE2IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OmNo
YW5nZWRJblJlY3QoY29uc3QgSW0KICAgICBub3RpZnlPYnNlcnZlcnMocmVjdCk7CiB9CiAKK3Zv
aWQgQ2FjaGVkSW1hZ2U6OnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJiBpbWFn
ZSkKK3sKKyAgICBpZiAoJmltYWdlICE9IG1faW1hZ2UpCisgICAgICAgIHJldHVybjsKKworICAg
IENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZEltYWdlQ2xpZW50PiB3YWxrZXIobV9j
bGllbnRzKTsKKyAgICB3aGlsZSAoYXV0byogY2xpZW50ID0gd2Fsa2VyLm5leHQoKSkKKyAgICAg
ICAgY2xpZW50LT5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOworfQorCiBib29sIENhY2hlZElt
YWdlOjpjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoY29uc3QgUmVuZGVyRWxlbWVudCogcmVu
ZGVyZXIpCiB7CiAgICAgSW1hZ2UqIGltYWdlID0gaW1hZ2VGb3JSZW5kZXJlcihyZW5kZXJlcik7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAkocmV2aXNp
b24gMjU5NTYwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE1Miw2ICsxNTIsNyBAQCBwcml2YXRlOgogICAgICAgICBib29s
IGNhbkRlc3Ryb3lEZWNvZGVkRGF0YShjb25zdCBJbWFnZSYpIGZpbmFsOwogICAgICAgICB2b2lk
IGltYWdlRnJhbWVBdmFpbGFibGUoY29uc3QgSW1hZ2UmLCBJbWFnZUFuaW1hdGluZ1N0YXRlLCBj
b25zdCBJbnRSZWN0KiBjaGFuZ2VSZWN0ID0gbnVsbHB0ciwgRGVjb2RpbmdTdGF0dXMgPSBEZWNv
ZGluZ1N0YXR1czo6SW52YWxpZCkgZmluYWw7CiAgICAgICAgIHZvaWQgY2hhbmdlZEluUmVjdChj
b25zdCBJbWFnZSYsIGNvbnN0IEludFJlY3QqKSBmaW5hbDsKKyAgICAgICAgdm9pZCBzY2hlZHVs
ZVJlbmRlcmluZ1VwZGF0ZShjb25zdCBJbWFnZSYpIGZpbmFsOwogCiAgICAgICAgIEhhc2hTZXQ8
Q2FjaGVkSW1hZ2UqPiBtX2NhY2hlZEltYWdlczsKICAgICB9OwpAQCAtMTYyLDYgKzE2Myw3IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBjYW5EZXN0cm95RGVjb2RlZERhdGEoY29uc3QgSW1hZ2UmKTsK
ICAgICB2b2lkIGltYWdlRnJhbWVBdmFpbGFibGUoY29uc3QgSW1hZ2UmLCBJbWFnZUFuaW1hdGlu
Z1N0YXRlLCBjb25zdCBJbnRSZWN0KiBjaGFuZ2VSZWN0ID0gbnVsbHB0ciwgRGVjb2RpbmdTdGF0
dXMgPSBEZWNvZGluZ1N0YXR1czo6SW52YWxpZCk7CiAgICAgdm9pZCBjaGFuZ2VkSW5SZWN0KGNv
bnN0IEltYWdlJiwgY29uc3QgSW50UmVjdCopOworICAgIHZvaWQgc2NoZWR1bGVSZW5kZXJpbmdV
cGRhdGUoY29uc3QgSW1hZ2UmKTsKIAogICAgIHZvaWQgdXBkYXRlQnVmZmVySW50ZXJuYWwoU2hh
cmVkQnVmZmVyJik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJ
bWFnZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZUNsaWVudC5oCShyZXZpc2lvbiAyNTk1NjApCisrKyBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2VDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiAr
NDgsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBWaXNpYmxlSW5WaWV3cG9ydFN0YXRlIGltYWdl
RnJhbWVBdmFpbGFibGUoQ2FjaGVkSW1hZ2UmIGltYWdlLCBJbWFnZUFuaW1hdGluZ1N0YXRlLCBj
b25zdCBJbnRSZWN0KiBjaGFuZ2VSZWN0KSB7IGltYWdlQ2hhbmdlZCgmaW1hZ2UsIGNoYW5nZVJl
Y3QpOyByZXR1cm4gVmlzaWJsZUluVmlld3BvcnRTdGF0ZTo6Tm87IH0KIAogICAgIHZpcnR1YWwg
dm9pZCBkaWRSZW1vdmVDYWNoZWRJbWFnZUNsaWVudChDYWNoZWRJbWFnZSYpIHsgfQorCisgICAg
dmlydHVhbCB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCkgeyB9CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHJldmlz
aW9uIDI1OTU2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTMxNSw3ICszMTUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNl
dE5lZWRzT25lU2hvdERyYXdpbmdTeW5jaHJvbml6YXRpb24oKSA9IDA7CiAgICAgLy8gU2V0cyBh
IGZsYWcgdG8gc3BlY2lmeSB0aGF0IHRoZSB2aWV3IG5lZWRzIHRvIGJlIHVwZGF0ZWQsIHNvIHdl
IG5lZWQKICAgICAvLyB0byBkbyBhbiBlYWdlciBsYXlvdXQgYmVmb3JlIHRoZSBkcmF3aW5nLgot
ICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wg
bmVlZHNJbW1lZGlhdGVSZW5kZXJpbmdVcGRhdGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
ICAgIC8vIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIGNsaWVudCBjYW4gcmVuZGVyIHRoZSBj
b21wb3NpdGVkIGxheWVyLAogICAgIC8vIHJlZ2FyZGxlc3Mgb2YgdGhlIHNldHRpbmdzLgpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lvbiAyNTk1NjApCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzA1LDYgKzEzMDUsMTQgQEAgdm9pZCBQ
YWdlOjpzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpCiAgICAgcmVuZGVyaW5nVXBkYXRlU2NoZWR1
bGVyKCkuc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKTsKIH0KIAordm9pZCBQYWdlOjpzY2hlZHVs
ZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCkKK3sKKyAgICBpZiAoY2hyb21lKCkuY2xpZW50KCkuaXNT
VkdJbWFnZUNocm9tZUNsaWVudCgpKQorICAgICAgICBjaHJvbWUoKS5jbGllbnQoKS5zY2hlZHVs
ZVJlbmRlcmluZ1VwZGF0ZSgpOworICAgIGVsc2UKKyAgICAgICAgcmVuZGVyaW5nVXBkYXRlU2No
ZWR1bGVyKCkuc2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSgpOworfQorCiAvLyBodHRwczov
L2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS93ZWJhcHBhcGlzLmh0bWwjdXBkYXRlLXRo
ZS1yZW5kZXJpbmcKIHZvaWQgUGFnZTo6dXBkYXRlUmVuZGVyaW5nKCkKIHsKQEAgLTEzNTcsNiAr
MTM2NSwxMCBAQCB2b2lkIFBhZ2U6OnVwZGF0ZVJlbmRlcmluZygpCiAgICAgfSk7CiAjZW5kaWYK
IAorICAgIGZvckVhY2hEb2N1bWVudChbJl0gKERvY3VtZW50JiBkb2N1bWVudCkgeworICAgICAg
ICBkb2N1bWVudC51cGRhdGVTVkdJbWFnZXNSZW5kZXJpbmcoKTsKKyAgICB9KTsKKwogICAgIGxh
eW91dElmTmVlZGVkKCk7CiAgICAgZG9BZnRlclVwZGF0ZVJlbmRlcmluZygpOwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmgJKHJldmlzaW9uIDI1OTU2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NzgsNiArNDc4LDcgQEAgcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgdXBkYXRlUmVuZGVyaW5nKCk7CiAgICAgCiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOworICAgIHZvaWQgc2NoZWR1bGVUaW1l
ZFJlbmRlcmluZ1VwZGF0ZSgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdXNwZW5kU2Ny
aXB0ZWRBbmltYXRpb25zKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXN1bWVTY3JpcHRl
ZEFuaW1hdGlvbnMoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlT2JzZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZU9ic2VydmVyLmgJKHJldmlzaW9uIDI1OTU2MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT2JzZXJ2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTAs
NiArNTAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGNhbkRlc3Ryb3lEZWNvZGVkRGF0
YShjb25zdCBJbWFnZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VGcmFtZUF2YWlsYWJs
ZShjb25zdCBJbWFnZSYsIEltYWdlQW5pbWF0aW5nU3RhdGUsIGNvbnN0IEludFJlY3QqIGNoYW5n
ZVJlY3QgPSBudWxscHRyLCBEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZhbGlk
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2UmLCBjb25z
dCBJbnRSZWN0KiBjaGFuZ2VSZWN0ID0gbnVsbHB0cikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBz
Y2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShjb25zdCBJbWFnZSYpID0gMDsKIH07CiAKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAJKHJldmlzaW9uIDI1
OTU2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTMyNCw2ICsxMzI0LDEyIEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6ZGlk
UmVtb3ZlQ2FjaGVkSW1hZ2UKICAgICAgICAgdmlldygpLnJlbW92ZVJlbmRlcmVyV2l0aFBhdXNl
ZEltYWdlQW5pbWF0aW9ucygqdGhpcywgY2FjaGVkSW1hZ2UpOwogfQogCit2b2lkIFJlbmRlckVs
ZW1lbnQ6OnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCkKK3sKKyAgICBpZiAoYXV0byogcGFnZSA9
IGRvY3VtZW50KCkucGFnZSgpKQorICAgICAgICBwYWdlLT5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0
ZSgpOworfQorCiBib29sIFJlbmRlckVsZW1lbnQ6OnJlcGFpbnRGb3JQYXVzZWRJbWFnZUFuaW1h
dGlvbnNJZk5lZWRlZChjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCwgQ2FjaGVkSW1hZ2UmIGNh
Y2hlZEltYWdlKQogewogICAgIEFTU0VSVChtX2hhc1BhdXNlZEltYWdlQW5pbWF0aW9ucyk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgJKHJldmlzaW9uIDI1
OTU2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTMxOSw2ICszMTksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgY2FuRGVzdHJv
eURlY29kZWREYXRhKCkgZmluYWwgeyByZXR1cm4gIWlzVmlzaWJsZUluVmlld3BvcnQoKTsgfQog
ICAgIFZpc2libGVJblZpZXdwb3J0U3RhdGUgaW1hZ2VGcmFtZUF2YWlsYWJsZShDYWNoZWRJbWFn
ZSYsIEltYWdlQW5pbWF0aW5nU3RhdGUsIGNvbnN0IEludFJlY3QqIGNoYW5nZVJlY3QpIGZpbmFs
OwogICAgIHZvaWQgZGlkUmVtb3ZlQ2FjaGVkSW1hZ2VDbGllbnQoQ2FjaGVkSW1hZ2UmKSBmaW5h
bDsKKyAgICB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCkgZmluYWw7CiAKICAgICBib29s
IGdldExlYWRpbmdDb3JuZXIoRmxvYXRQb2ludCYgb3V0cHV0LCBib29sJiBpbnNpZGVGaXhlZCkg
Y29uc3Q7CiAgICAgYm9vbCBnZXRUcmFpbGluZ0Nvcm5lcihGbG9hdFBvaW50JiBvdXRwdXQsIGJv
b2wmIGluc2lkZUZpeGVkKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9TVkdJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZS5oCShyZXZpc2lvbiAyNTk1NjApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNjgsNiArNjgsOCBAQCBwdWJsaWM6CiAj
aWYgVVNFKERJUkVDVDJEKQogICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlKGNvbnN0IEdy
YXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBmaW5hbDsKICNlbmRpZgorICAgIAorICAgIFBhZ2Uq
IHBhZ2UoKSB7IHJldHVybiBtX3BhZ2UuZ2V0KCk7IH0KIAogcHJpdmF0ZToKICAgICBmcmllbmQg
Y2xhc3MgU1ZHSW1hZ2VDaHJvbWVDbGllbnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2VDbGllbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlQ2xpZW50cy5oCShyZXZpc2lvbiAyNTk1NjApCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDbGllbnRzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTYyLDcgKzYyLDE0IEBAIHByaXZhdGU6CiAKICAgICAgICAgaW1hZ2VPYnNlcnZlci0+aW1hZ2VG
cmFtZUF2YWlsYWJsZSgqbV9pbWFnZSwgbV9pbWFnZS0+aXNBbmltYXRpbmcoKSA/IEltYWdlQW5p
bWF0aW5nU3RhdGU6OlllcyA6IEltYWdlQW5pbWF0aW5nU3RhdGU6Ok5vLCAmcik7CiAgICAgfQot
ICAgIAorCisgICAgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpIGZpbmFsCisgICAgewor
ICAgICAgICBpZiAoIW1faW1hZ2UgfHwgIW1faW1hZ2UtPmltYWdlT2JzZXJ2ZXIoKSkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgbV9pbWFnZS0+aW1hZ2VPYnNlcnZlcigpLT5zY2hlZHVs
ZVJlbmRlcmluZ1VwZGF0ZSgqbV9pbWFnZSk7CisgICAgfQorCiAgICAgU1ZHSW1hZ2UqIG1faW1h
Z2U7CiB9OwogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTk1NjApCisrKyBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0wNC0wNyAgU2FpZCBB
Ym91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJ
T046IENTUyBhbmltYXRpb25zIGluc2lkZSBhbiBlbWJlZGRlZCBTVkcgaW1hZ2UgZG8gbm90IGFu
aW1hdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
OTM3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
c3ZnL2FuaW1hdGlvbnMvY3NzLWFuaW1hdGlvbi1iYWNrZ3JvdW5kLXN2Zy1leHBlY3RlZC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvYW5pbWF0aW9ucy9jc3MtYW5pbWF0aW9uLWJhY2tncm91
bmQtc3ZnLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN2Zy9hbmltYXRpb25zL2Nzcy1hbmltYXRp
b24tZW1iZWRkZWQtc3ZnLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN2Zy9hbmlt
YXRpb25zL2Nzcy1hbmltYXRpb24tZW1iZWRkZWQtc3ZnLmh0bWw6IEFkZGVkLgorCiAyMDIwLTA0
LTA1ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KIAogICAgICAgICBP
Y3RhbCBlc2NhcGVzIHNob3VsZCBiZSBtYXggMyBkaWdpdHMgYW5kIHN5bnRheCBlcnJvcnMgaW4g
VW5pY29kZSBwYXR0ZXJucwpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvY3NzLWFu
aW1hdGlvbi1iYWNrZ3JvdW5kLXN2Zy1leHBlY3RlZC5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3N2Zy9hbmltYXRpb25zL2Nzcy1hbmltYXRpb24tYmFja2dyb3VuZC1zdmctZXhwZWN0
ZWQuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9jc3Mt
YW5pbWF0aW9uLWJhY2tncm91bmQtc3ZnLWV4cGVjdGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxMiBAQAorPHN0eWxlPgorICAgCWltZyB7CisgICAgICAgIHdpZHRoOiAxMDBweDsK
KyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICB9Cis8L3N0eWxlPgorPGJvZHk+CisgICAgPGlt
ZyBzcmM9J2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LAorICAgICAgICA8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CisgICAgICAgICAgICA8cmVjdCB3aWR0aD0iMTAwJSIg
aGVpZ2h0PSIxMDAlIiBmaWxsPSJncmVlbiIvPgorICAgICAgICA8L3N2Zz4nPgorPC9ib2R5PgpJ
bmRleDogTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvY3NzLWFuaW1hdGlvbi1iYWNrZ3JvdW5k
LXN2Zy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL2Nzcy1h
bmltYXRpb24tYmFja2dyb3VuZC1zdmcuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0
cy9zdmcvYW5pbWF0aW9ucy9jc3MtYW5pbWF0aW9uLWJhY2tncm91bmQtc3ZnLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwyNCBAQAorPHN0eWxlPgorICAgIC5ib3ggeworICAgICAgICBi
YWNrZ3JvdW5kOiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QjRiV3h1Y3ow
aWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1qQXdNQzl6ZG1jaVBnb2dJQ0FnSUNBZ0lDQWdJQ0E4
YzNSNWJHVStDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQkFhMlY1Wm5KaGJXVnpJR1poWkdWcGJpQjdD
aUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWm5KdmJTQjdJRzl3WVdOcGRIazZNRHNnZlFvZ0lD
QWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIUnZJSHNnYjNCaFkybDBlVG94T3lCOUNpQWdJQ0FnSUNB
Z0lDQWdJQ0FnSUNCOUNpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBalozSmxaVzRnZXlBS0lDQWdJQ0Fn
SUNBZ0lDQWdJQ0FnSUNBZ0lDQmhibWx0WVhScGIyNDZJR1poWkdWcGJpQXhObTF6T3dvZ0lDQWdJ
Q0FnSUNBZ0lDQWdJQ0FnZlFvZ0lDQWdJQ0FnSUNBZ0lDQThMM04wZVd4bFBnb2dJQ0FnSUNBZ0lD
QWdJQ0E4Y21WamRDQjNhV1IwYUQwaU1UQXdKU0lnYUdWcFoyaDBQU0l4TURBbElpQm1hV3hzUFNK
eVpXUWlMejRLSUNBZ0lDQWdJQ0FnSUNBZ1BISmxZM1FnYVdROUltZHlaV1Z1SWlCM2FXUjBhRDBp
TVRBd0pTSWdhR1ZwWjJoMFBTSXhNREFsSWlCbWFXeHNQU0puY21WbGJpSXZQZ29nSUNBZ0lDQWdJ
RHd2YzNablBnPT0iKTsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEw
MHB4OworICAgIH0KKzwvc3R5bGU+Cis8Ym9keT4KKyAgICA8ZGl2IGNsYXNzPSJib3giPjwvZGl2
PgorICAgIDxzY3JpcHQ+CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCisgICAgICAgIHZhciByQUZDb3VudCA9
IDA7CisgICAgICAgIGZ1bmN0aW9uIGFuaW1hdGUodGltZXN0YW1wKSB7CisgICAgICAgICAgICBp
ZiAoKytyQUZDb3VudCA8IDEwKQorICAgICAgICAgICAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0
aW9uRnJhbWUoYW5pbWF0ZSk7CisgICAgICAgICAgICBlbHNlIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfQor
CisgICAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0ZSk7CisgICAgPC9z
Y3JpcHQ+Cis8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9jc3MtYW5p
bWF0aW9uLWVtYmVkZGVkLXN2Zy1leHBlY3RlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3N2Zy9hbmltYXRpb25zL2Nzcy1hbmltYXRpb24tZW1iZWRkZWQtc3ZnLWV4cGVjdGVkLmh0
bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvY3NzLWFuaW1h
dGlvbi1lbWJlZGRlZC1zdmctZXhwZWN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDEyIEBACis8c3R5bGU+CisgICAJaW1nIHsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAg
ICBoZWlnaHQ6IDEwMHB4OworICAgIH0KKzwvc3R5bGU+Cis8Ym9keT4KKyAgICA8aW1nIHNyYz0n
ZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsCisgICAgICAgIDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIj4KKyAgICAgICAgICAgIDxyZWN0IHdpZHRoPSIxMDAlIiBoZWlnaHQ9
IjEwMCUiIGZpbGw9ImdyZWVuIi8+CisgICAgICAgIDwvc3ZnPic+Cis8L2JvZHk+CkluZGV4OiBM
YXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9jc3MtYW5pbWF0aW9uLWVtYmVkZGVkLXN2Zy5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL2Nzcy1hbmltYXRpb24t
ZW1iZWRkZWQtc3ZnLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvc3ZnL2FuaW1h
dGlvbnMvY3NzLWFuaW1hdGlvbi1lbWJlZGRlZC1zdmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDM2IEBACis8c3R5bGU+CisgICAgaW1nIHsKKyAgICAgICAgd2lkdGg6IDEwMHB4Owor
ICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgIH0KKzwvc3R5bGU+Cis8Ym9keT4KKyAgICA8aW1n
IHNyYz0nZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsCisgICAgICAgIDxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KKyAgICAgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAg
ICAgICBAa2V5ZnJhbWVzIGZhZGVpbiB7CisgICAgICAgICAgICAgICAgICAgIGZyb20geyBvcGFj
aXR5OjA7IH0KKyAgICAgICAgICAgICAgICAgICAgdG8geyBvcGFjaXR5OjE7IH0KKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgI2dyZWVuIHsgCisgICAgICAgICAgICAgICAgICAg
IGFuaW1hdGlvbjogZmFkZWluIDE2bXM7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
PC9zdHlsZT4KKyAgICAgICAgICAgIDxyZWN0IHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZp
bGw9InJlZCIvPgorICAgICAgICAgICAgPHJlY3QgaWQ9ImdyZWVuIiB3aWR0aD0iMTAwJSIgaGVp
Z2h0PSIxMDAlIiBmaWxsPSJncmVlbiIvPgorICAgICAgICA8L3N2Zz4nPgorICAgIDxzY3JpcHQ+
CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOworCisgICAgICAgIHZhciByQUZDb3VudCA9IDA7CisgICAgICAgIGZ1
bmN0aW9uIGFuaW1hdGUodGltZXN0YW1wKSB7CisgICAgICAgICAgICBpZiAoKytyQUZDb3VudCA8
IDEwKQorICAgICAgICAgICAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0
ZSk7CisgICAgICAgICAgICBlbHNlIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIHdpbmRv
dy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0ZSk7CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395859</attachid>
            <date>2020-04-08 13:07:40 -0700</date>
            <delta_ts>2020-04-08 13:30:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209370-20200408130739.patch</filename>
            <type>text/plain</type>
            <size>23329</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1OTc0NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc1IEBACisyMDIwLTA0LTA4ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lP
TjogQ1NTIGFuaW1hdGlvbnMgaW5zaWRlIGFuIGVtYmVkZGVkIFNWRyBpbWFnZSBkbyBub3QgYW5p
bWF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5
MzcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSWYg
V2ViQW5pbWF0aW9uIGlzIGVuYWJsZWQgYW5kIHRoZSBTVkdJbWFnZSBpbmNsdWRlcyBDU1MgYW5p
bWF0aW9ucywgdGhlCisgICAgICAgIERvY3VtZW50VGltZWxpbmUgaXMgYWRkZWQgdG8gdGhlIFNW
R0RvY3VtZW50IG9mIHRoZSBlbWJlZGRlZCBTVkdJbWFnZS4KKyAgICAgICAgQmVjYXVzZSB0aGUg
U1ZHSW1hZ2UgaGFzIGl0cyBvd24gUGFnZSB0aGUgUmVuZGVyaW5nVXBkYXRlIGlzIHNjaGVkdWxl
ZAorICAgICAgICBhbmQgdGhlIHVwZGF0ZVJlbmRlcmluZyBzdGVwcyBydW4gaW4gdGhpcyBQYWdl
LgorCisgICAgICAgIFRoZSBQYWdlIG9mIHRoZSBTVkdJbWFnZSBpcyBpbmFjdGl2ZSBzdWNoIHRo
YXQgc2NoZWR1bGluZyBSZW5kZXJpbmdVcGRhdGUKKyAgICAgICAgZmFpbHM7IHRoZXJlZm9yZSB0
aGUgdXBkYXRlUmVuZGVyaW5nIHN0ZXBzIG5ldmVyIHJ1biBhbmQgdGhlIENTUyBhbmltYXRpb24K
KyAgICAgICAgbmV2ZXIgYWR2YW5jZXMuCisKKyAgICAgICAgVGhlIGZpeCBpczoKKworICAgICAg
ICAxKSBTY2hlZHVsaW5nIHRoZSBSZW5kZXJpbmdVcGRhdGU6IFRoaXMgaGFzIHRvIGhhcHBlbiBp
biB0aGUgUGFnZSB3aGljaAorICAgICAgICAgICBjb250YWlucyB0aGUgcmVuZGVyZXIgb2YgdGhl
IFNWR0ltYWdlLiBCZWNhdXNlIERvY3VtZW50VGltZWxpbmUgaXMKKyAgICAgICAgICAgYWRkZWQg
dG8gU1ZHRG9jdW1lbnQsIHRoaXMgc2NoZWR1bGluZyB3aWxsIGdvIHRocm91Z2ggdGhlc2UgaHVi
czoKKyAgICAgICAgICAgICAgICAtIERvY3VtZW50VGltZWxpbmUKKyAgICAgICAgICAgICAgICAt
IFBhZ2UKKyAgICAgICAgICAgICAgICAtIENocm9tZUNsaWVudCAtPiBTVkdJbWFnZUNocm9tZUNs
aWVudCAKKyAgICAgICAgICAgICAgICAtIFNWR0ltYWdlCisgICAgICAgICAgICAgICAgLSBJbWFn
ZU9ic2VydmVyIC0+IENhY2hlZEltYWdlT2JzZXJ2ZXIKKyAgICAgICAgICAgICAgICAtIENhY2hl
ZEltYWdlCisgICAgICAgICAgICAgICAgLSBDYWNoZWRJbWFnZUNsaWVudCAtPiBSZW5kZXJFbGVt
ZW50CisgICAgICAgICAgICAgICAgLSBQYWdlCisKKyAgICAgICAgMikgUnVubmluZyB0aGUgdXBk
YXRlUmVuZGVyaW5nIHN0ZXBzOiBFYWNoIGRvY3VtZW50IGluIHRoZSBQYWdlIHdpbGwKKyAgICAg
ICAgICAgZW51bWVyYXRlIGl0cyBjYWNoZWQgU1ZHSW1hZ2VzLiBUaGUgdXBkYXRlUmVuZGVyaW5n
IG9mIHRoZSBQYWdlIG9mCisgICAgICAgICAgIGVhY2ggU1ZHSW1hZ2Ugd2lsbCBiZSBjYWxsZWQu
CisKKyAgICAgICAgVG8gbWFrZSBlbnVtZXJhdGluZyB0aGUgY2FjaGVkIFNWR0ltYWdlcyBvZiBh
IERvY3VtZW50IGZhc3RlciwgdGhlIFVSTHMKKyAgICAgICAgb2YgdGhlIGNhY2hlZCBTVkdJbWFn
ZXMgd2lsbCBiZSBzdG9yZWQgYnkgQ2FjaGVkUmVzb3VyY2VMb2FkZXIgd2hlbgorICAgICAgICBk
b2N1bWVudERpZEZpbmlzaExvYWRFdmVudCBmaXJlcy4KKworICAgICAgICBUZXN0czogc3ZnL2Fu
aW1hdGlvbnMvY3NzLWFuaW1hdGlvbi1iYWNrZ3JvdW5kLXN2Zy5odG1sCisgICAgICAgICAgICAg
ICBzdmcvYW5pbWF0aW9ucy9jc3MtYW5pbWF0aW9uLWVtYmVkZGVkLXN2Zy5odG1sCisKKyAgICAg
ICAgKiBhbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudFRpbWVsaW5lOjpzY2hlZHVsZUFuaW1hdGlvblJlc29sdXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZTo6dXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHMp
OgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6dXBkYXRlU1ZHSW1hZ2VzUmVuZGVyaW5nKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoK
KyAgICAgICAgKiBodG1sL0ltYWdlQml0bWFwLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OkNhY2hlZElt
YWdlT2JzZXJ2ZXI6OnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkSW1hZ2U6OnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZUNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2VDbGllbnQ6
OnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWNoZWRSZXNvdXJj
ZVNWR0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpkb2N1
bWVudERpZEZpbmlzaExvYWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6YnVpbGRDYWNoZWRTVkdJbWFnZXNVUkxzKToKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5o
OgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpzY2hlZHVsZVRpbWVkUmVuZGVyaW5n
VXBkYXRlKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZTo6c2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
Ojp1cGRhdGVSZW5kZXJpbmcpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpzY2hlZHVs
ZVRpbWVkUmVuZGVyaW5nVXBkYXRlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVu
dC5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5oOgorICAgICAgICAqIHN2Zy9n
cmFwaGljcy9TVkdJbWFnZUNsaWVudHMuaDoKKwogMjAyMC0wNC0wOCAgRGV2aW4gUm91c3NvICA8
ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogU3RvcmFnZTogY2Fu
bm90IGNsZWFyIG91dCBtdWx0aXBsZSBvciBhbGwgbG9jYWwgc3RvcmFnZSBlbnRyaWVzCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuY3BwCShyZXZp
c2lvbiAyNTk3MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGlu
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzOSw3ICszMzksNyBAQCB2b2lkIERvY3VtZW50VGlt
ZWxpbmU6OnNjaGVkdWxlQW5pbWF0aW9uCiAgICAgaWYgKCFzaG91bGRSdW5VcGRhdGVBbmltYXRp
b25zQW5kU2VuZEV2ZW50c0lnbm9yaW5nU3VzcGVuc2lvblN0YXRlKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIG1fZG9jdW1lbnQtPnBhZ2UoKS0+cmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyKCku
c2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSgpOworICAgIG1fZG9jdW1lbnQtPnBhZ2UoKS0+
c2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSgpOwogICAgIG1fYW5pbWF0aW9uUmVzb2x1dGlv
blNjaGVkdWxlZCA9IHRydWU7CiB9CiAKQEAgLTM2NCw3ICszNjQsNiBAQCB2b2lkIERvY3VtZW50
VGltZWxpbmU6OnVwZGF0ZUN1cnJlbnRUaW1lCiAKIHZvaWQgRG9jdW1lbnRUaW1lbGluZTo6dXBk
YXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHMoKQogewotCiAgICAgLy8gVXBkYXRpbmcgYW5pbWF0
aW9ucyBhbmQgc2VuZGluZyBldmVudHMgbWF5IGludmFsaWRhdGUgdGhlIHRpbWluZyBvZiBzb21l
IGFuaW1hdGlvbnMsIHNvIHdlIG11c3Qgc2V0IHRoZSBtX2FuaW1hdGlvblJlc29sdXRpb25TY2hl
ZHVsZWQKICAgICAvLyBmbGFnIHRvIGZhbHNlIHByaW9yIHRvIHJ1bm5pbmcgdGhhdCBwcm9jZWR1
cmUgdG8gYWxsb3cgYW5pbWF0aW9uIHdpdGggdGltaW5nIG1vZGVsIHVwZGF0ZXMgdG8gc2NoZWR1
bGUgdXBkYXRlcy4KICAgICBtX2FuaW1hdGlvblJlc29sdXRpb25TY2hlZHVsZWQgPSBmYWxzZTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMjU5NzAzKQorKysgU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc3LDYgKzE3Nyw3
IEBACiAjaW5jbHVkZSAiU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmgiCiAjaW5jbHVkZSAiU1ZHRWxl
bWVudC5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnRGYWN0b3J5LmgiCisjaW5jbHVkZSAiU1ZHSW1h
Z2UuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1NWR0VsZW1lbnQuaCIK
ICNpbmNsdWRlICJTVkdUaXRsZUVsZW1lbnQuaCIKQEAgLTYzODMsNiArNjM4NCwxNCBAQCB2b2lk
IERvY3VtZW50OjpzZXJ2aWNlUmVxdWVzdEFuaW1hdGlvbkZyCiAgICAgICAgIG1fc2NyaXB0ZWRB
bmltYXRpb25Db250cm9sbGVyLT5zZXJ2aWNlUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2tz
KHRpbWVzdGFtcCk7CiB9CiAKK3ZvaWQgRG9jdW1lbnQ6OnVwZGF0ZVNWR0ltYWdlc1JlbmRlcmlu
ZygpCit7CisgICAgZm9yIChhdXRvKiBpbWFnZSA6IG1fY2FjaGVkUmVzb3VyY2VMb2FkZXItPmFs
bENhY2hlZFNWR0ltYWdlcygpKSB7CisgICAgICAgIGlmIChhdXRvKiBwYWdlID0gaW1hZ2UtPnBh
Z2UoKSkKKyAgICAgICAgICAgIHBhZ2UtPnVwZGF0ZVJlbmRlcmluZygpOworICAgIH0KK30KKwog
dm9pZCBEb2N1bWVudDo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEIGRp
c3BsYXlJRCkKIHsKICAgICBpZiAoUmVuZGVyVmlldyogdmlldyA9IHJlbmRlclZpZXcoKSkgewpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDI1OTcwMykKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDc5LDYgKzEwNzksNyBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIHVwZGF0ZUFuaW1hdGlvbnNBbmRTZW5kRXZlbnRzKERPTUhpZ2hS
ZXNUaW1lU3RhbXApOwogICAgIHZvaWQgc2VydmljZVJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxi
YWNrcyhET01IaWdoUmVzVGltZVN0YW1wKTsKKyAgICB2b2lkIHVwZGF0ZVNWR0ltYWdlc1JlbmRl
cmluZygpOwogCiAgICAgdm9pZCB3aW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5
SUQpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcAkocmV2aXNpb24gMjU5
NzAzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTUyOCw2ICs1MjgsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBjYW5EZXN0cm95RGVjb2Rl
ZERhdGEoY29uc3QgSW1hZ2UmKSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBp
bWFnZUZyYW1lQXZhaWxhYmxlKGNvbnN0IEltYWdlJiwgSW1hZ2VBbmltYXRpbmdTdGF0ZSwgY29u
c3QgSW50UmVjdCogPSBudWxscHRyLCBEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJ
bnZhbGlkKSBvdmVycmlkZSB7IH0KICAgICB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2Um
LCBjb25zdCBJbnRSZWN0KiA9IG51bGxwdHIpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgc2NoZWR1
bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZShjb25zdCBJbWFnZSYpIG92ZXJyaWRlIHsgfQogCiBwcml2
YXRlOgogICAgIEltYWdlQml0bWFwSW1hZ2VPYnNlcnZlcihTdHJpbmcgbWltZVR5cGUsIGxvbmcg
bG9uZyBleHBlY3RlZENvbnRlbnRMZW5ndGgsIGNvbnN0IFVSTCYgc291cmNlVXJsKQpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCShyZXZpc2lvbiAy
NTk3MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MzQsNiArNDM0LDEyIEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OkNhY2hl
ZEltYWdlT2JzZXJ2ZXI6OmMKICAgICAgICAgY2FjaGVkSW1hZ2UtPmNoYW5nZWRJblJlY3QoaW1h
Z2UsIHJlY3QpOwogfQogCit2b2lkIENhY2hlZEltYWdlOjpDYWNoZWRJbWFnZU9ic2VydmVyOjpz
Y2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJiBpbWFnZSkKK3sKKyAgICBm
b3IgKGF1dG8gY2FjaGVkSW1hZ2UgOiBtX2NhY2hlZEltYWdlcykKKyAgICAgICAgY2FjaGVkSW1h
Z2UtPnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoaW1hZ2UpOworfQorCiBpbmxpbmUgdm9p
ZCBDYWNoZWRJbWFnZTo6Y2xlYXJJbWFnZSgpCiB7CiAgICAgaWYgKCFtX2ltYWdlKQpAQCAtNjg0
LDYgKzY5MCwxNiBAQCB2b2lkIENhY2hlZEltYWdlOjpjaGFuZ2VkSW5SZWN0KGNvbnN0IEltCiAg
ICAgbm90aWZ5T2JzZXJ2ZXJzKHJlY3QpOwogfQogCit2b2lkIENhY2hlZEltYWdlOjpzY2hlZHVs
ZVRpbWVkUmVuZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJiBpbWFnZSkKK3sKKyAgICBpZiAoJmlt
YWdlICE9IG1faW1hZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIENhY2hlZFJlc291cmNlQ2xp
ZW50V2Fsa2VyPENhY2hlZEltYWdlQ2xpZW50PiB3YWxrZXIobV9jbGllbnRzKTsKKyAgICB3aGls
ZSAoYXV0byogY2xpZW50ID0gd2Fsa2VyLm5leHQoKSkKKyAgICAgICAgY2xpZW50LT5zY2hlZHVs
ZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCk7Cit9CisKIGJvb2wgQ2FjaGVkSW1hZ2U6OmN1cnJlbnRG
cmFtZUtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJFbGVtZW50KiByZW5kZXJlcikKIHsKICAg
ICBJbWFnZSogaW1hZ2UgPSBpbWFnZUZvclJlbmRlcmVyKHJlbmRlcmVyKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCShyZXZpc2lvbiAyNTk3MDMpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAkod29ya2luZyBjb3B5
KQpAQCAtMTUyLDYgKzE1Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgY2FuRGVzdHJveURl
Y29kZWREYXRhKGNvbnN0IEltYWdlJikgZmluYWw7CiAgICAgICAgIHZvaWQgaW1hZ2VGcmFtZUF2
YWlsYWJsZShjb25zdCBJbWFnZSYsIEltYWdlQW5pbWF0aW5nU3RhdGUsIGNvbnN0IEludFJlY3Qq
IGNoYW5nZVJlY3QgPSBudWxscHRyLCBEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJ
bnZhbGlkKSBmaW5hbDsKICAgICAgICAgdm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiwg
Y29uc3QgSW50UmVjdCopIGZpbmFsOworICAgICAgICB2b2lkIHNjaGVkdWxlVGltZWRSZW5kZXJp
bmdVcGRhdGUoY29uc3QgSW1hZ2UmKSBmaW5hbDsKIAogICAgICAgICBIYXNoU2V0PENhY2hlZElt
YWdlKj4gbV9jYWNoZWRJbWFnZXM7CiAgICAgfTsKQEAgLTE2Miw2ICsxNjMsNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgY2FuRGVzdHJveURlY29kZWREYXRhKGNvbnN0IEltYWdlJik7CiAgICAgdm9p
ZCBpbWFnZUZyYW1lQXZhaWxhYmxlKGNvbnN0IEltYWdlJiwgSW1hZ2VBbmltYXRpbmdTdGF0ZSwg
Y29uc3QgSW50UmVjdCogY2hhbmdlUmVjdCA9IG51bGxwdHIsIERlY29kaW5nU3RhdHVzID0gRGVj
b2RpbmdTdGF0dXM6OkludmFsaWQpOwogICAgIHZvaWQgY2hhbmdlZEluUmVjdChjb25zdCBJbWFn
ZSYsIGNvbnN0IEludFJlY3QqKTsKKyAgICB2b2lkIHNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRh
dGUoY29uc3QgSW1hZ2UmKTsKIAogICAgIHZvaWQgdXBkYXRlQnVmZmVySW50ZXJuYWwoU2hhcmVk
QnVmZmVyJik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFn
ZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRJbWFnZUNsaWVudC5oCShyZXZpc2lvbiAyNTk3MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2VDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgs
OCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBWaXNpYmxlSW5WaWV3cG9ydFN0YXRlIGltYWdlRnJh
bWVBdmFpbGFibGUoQ2FjaGVkSW1hZ2UmIGltYWdlLCBJbWFnZUFuaW1hdGluZ1N0YXRlLCBjb25z
dCBJbnRSZWN0KiBjaGFuZ2VSZWN0KSB7IGltYWdlQ2hhbmdlZCgmaW1hZ2UsIGNoYW5nZVJlY3Qp
OyByZXR1cm4gVmlzaWJsZUluVmlld3BvcnRTdGF0ZTo6Tm87IH0KIAogICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZW1vdmVDYWNoZWRJbWFnZUNsaWVudChDYWNoZWRJbWFnZSYpIHsgfQorCisgICAgdmly
dHVhbCB2b2lkIHNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKSB7IH0KIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMjU5NzAzKQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzg4LDYgKzc4OCwxOCBAQCBzdGF0aWMgRmV0Y2hPcHRpb25zOjpEZXN0aW5h
dGlvbiBkZXN0aW5hCiAgICAgcmV0dXJuIEZldGNoT3B0aW9uczo6RGVzdGluYXRpb246OkVtcHR5
U3RyaW5nOwogfQogCitzdGF0aWMgaW5saW5lIFNWR0ltYWdlKiBjYWNoZWRSZXNvdXJjZVNWR0lt
YWdlKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKK3sKKyAgICBpZiAoIXJlc291cmNlIHx8ICFy
ZXNvdXJjZS0+aXNJbWFnZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8q
IGltYWdlID0gZG93bmNhc3Q8Q2FjaGVkSW1hZ2U+KHJlc291cmNlKS0+aW1hZ2UoKTsKKyAgICBp
ZiAoIWltYWdlIHx8ICFpczxTVkdJbWFnZT4oaW1hZ2UpKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIHJldHVybiBkb3duY2FzdDxTVkdJbWFnZT4oaW1hZ2UpOworfQorCiBSZXNvdXJj
ZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+PiBDYWNoZWRSZXNv
dXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIENh
Y2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZvclByZWxvYWQgZm9yUHJlbG9hZCwgSW1h
Z2VMb2FkaW5nIGltYWdlTG9hZGluZykKIHsKICAgICBpZiAoIWZyYW1lKCkgfHwgIWZyYW1lKCkt
PnBhZ2UoKSkgewpAQCAtMTAwNCw2ICsxMDE2LDcgQEAgUmVzb3VyY2VFcnJvck9yPENhY2hlZFJl
c291cmNlSGFuZGxlPENhYwogdm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6ZG9jdW1lbnREaWRG
aW5pc2hMb2FkRXZlbnQoKQogewogICAgIG1fdmFsaWRhdGVkVVJMcy5jbGVhcigpOworICAgIGJ1
aWxkQ2FjaGVkU1ZHSW1hZ2VzVVJMcygpOwogCiAgICAgLy8gSWYgbV9wcmVsb2FkcyBpcyBub3Qg
ZW1wdHkgaGVyZSwgaXQncyBmdWxsIG9mIGxpbmsgcHJlbG9hZHMsCiAgICAgLy8gYXMgc3BlY3Vs
YXRpdmUgcHJlbG9hZHMgd2VyZSBjbGVhcmVkIGF0IERDTC4KQEAgLTE0MDEsNiArMTQxNCwyNyBA
QCB2b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpkZWNyZW1lbnRSZXF1CiAgICAgQVNTRVJUKG1f
cmVxdWVzdENvdW50ID4gLTEpOwogfQogCit2b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpidWls
ZENhY2hlZFNWR0ltYWdlc1VSTHMoKQoreworICAgIGZvciAoYXV0byYgcmVzb3VyY2UgOiBtX2Rv
Y3VtZW50UmVzb3VyY2VzKSB7CisgICAgICAgIGlmIChjYWNoZWRSZXNvdXJjZVNWR0ltYWdlKHJl
c291cmNlLnZhbHVlLmdldCgpKSkKKyAgICAgICAgICAgIG1fY2FjaGVkU1ZHSW1hZ2VzVVJMcy5h
ZGQocmVzb3VyY2Uua2V5KTsKKyAgICB9Cit9CisKK1ZlY3RvcjxTVkdJbWFnZSo+IENhY2hlZFJl
c291cmNlTG9hZGVyOjphbGxDYWNoZWRTVkdJbWFnZXMoKQoreworICAgIFZlY3RvcjxTVkdJbWFn
ZSo+IGFsbENhY2hlZFNWR0ltYWdlczsKKworICAgIGZvciAoYXV0byYgY2FjaGVkU1ZHSW1hZ2VV
UkwgOiBtX2NhY2hlZFNWR0ltYWdlc1VSTHMpIHsKKyAgICAgICAgYXV0byogcmVzb3VyY2UgPSBj
YWNoZWRSZXNvdXJjZShjYWNoZWRTVkdJbWFnZVVSTCk7CisgICAgICAgIGlmIChhdXRvKiBpbWFn
ZSA9IGNhY2hlZFJlc291cmNlU1ZHSW1hZ2UocmVzb3VyY2UpKQorICAgICAgICAgICAgYWxsQ2Fj
aGVkU1ZHSW1hZ2VzLmFwcGVuZChpbWFnZSk7CisgICAgfQorICAgICAgICAKKyAgICByZXR1cm4g
YWxsQ2FjaGVkU1ZHSW1hZ2VzOworfQorCiBSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VI
YW5kbGU8Q2FjaGVkUmVzb3VyY2U+PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cHJlbG9hZChDYWNo
ZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQog
ewogICAgIGlmIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNlcHRSZXF1ZXN0
KGZyYW1lKCksIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkpKQpJbmRleDogU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgJKHJldmlzaW9u
IDI1OTcwMykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxv
YWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw2ICs1Nyw3IEBAIGNsYXNzIERvY3VtZW50TG9h
ZGVyOwogY2xhc3MgRnJhbWU7CiBjbGFzcyBJbWFnZUxvYWRlcjsKIGNsYXNzIFBhZ2U7CitjbGFz
cyBTVkdJbWFnZTsKIGNsYXNzIFNldHRpbmdzOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KQEAg
LTExNSw2ICsxMTYsNyBAQCBwdWJsaWM6CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBD
YWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4+IERvY3VtZW50UmVzb3VyY2VNYXA7
CiAgICAgY29uc3QgRG9jdW1lbnRSZXNvdXJjZU1hcCYgYWxsQ2FjaGVkUmVzb3VyY2VzKCkgY29u
c3QgeyByZXR1cm4gbV9kb2N1bWVudFJlc291cmNlczsgfQorICAgIFZlY3RvcjxTVkdJbWFnZSo+
IGFsbENhY2hlZFNWR0ltYWdlcygpOwogCiAgICAgYm9vbCBhdXRvTG9hZEltYWdlcygpIGNvbnN0
IHsgcmV0dXJuIG1fYXV0b0xvYWRJbWFnZXM7IH0KICAgICB2b2lkIHNldEF1dG9Mb2FkSW1hZ2Vz
KGJvb2wpOwpAQCAtMTg1LDYgKzE4Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBjaGVja0luc2Vj
dXJlQ29udGVudChDYWNoZWRSZXNvdXJjZTo6VHlwZSwgY29uc3QgVVJMJikgY29uc3Q7CiAKICAg
ICB2b2lkIHBlcmZvcm1Qb3N0TG9hZEFjdGlvbnMoKTsKKyAgICB2b2lkIGJ1aWxkQ2FjaGVkU1ZH
SW1hZ2VzVVJMcygpOwogCiAgICAgSW1hZ2VMb2FkaW5nIGNsaWVudERlZmVyc0ltYWdlKGNvbnN0
IFVSTCYpIGNvbnN0OwogICAgIHZvaWQgcmVsb2FkSW1hZ2VzSWZOb3REZWZlcnJlZCgpOwpAQCAt
MTkzLDYgKzE5Niw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBjYW5SZXF1ZXN0SW5Db250ZW50RGlz
cG9zaXRpb25BdHRhY2htZW50U2FuZGJveChDYWNoZWRSZXNvdXJjZTo6VHlwZSwgY29uc3QgVVJM
JikgY29uc3Q7CiAKICAgICBIYXNoU2V0PFN0cmluZz4gbV92YWxpZGF0ZWRVUkxzOworICAgIEhh
c2hTZXQ8U3RyaW5nPiBtX2NhY2hlZFNWR0ltYWdlc1VSTHM7CiAgICAgbXV0YWJsZSBEb2N1bWVu
dFJlc291cmNlTWFwIG1fZG9jdW1lbnRSZXNvdXJjZXM7CiAgICAgV2Vha1B0cjxEb2N1bWVudD4g
bV9kb2N1bWVudDsKICAgICBEb2N1bWVudExvYWRlciogbV9kb2N1bWVudExvYWRlcjsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkocmV2aXNpb24gMjU5NzAzKQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzE2LDYgKzMx
Niw3IEBAIHB1YmxpYzoKICAgICAvLyBTZXRzIGEgZmxhZyB0byBzcGVjaWZ5IHRoYXQgdGhlIHZp
ZXcgbmVlZHMgdG8gYmUgdXBkYXRlZCwgc28gd2UgbmVlZAogICAgIC8vIHRvIGRvIGFuIGVhZ2Vy
IGxheW91dCBiZWZvcmUgdGhlIGRyYXdpbmcuCiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlUmVu
ZGVyaW5nVXBkYXRlKCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzY2hlZHVsZVRpbWVkUmVuZGVy
aW5nVXBkYXRlKCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgbmVlZHNJbW1l
ZGlhdGVSZW5kZXJpbmdVcGRhdGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIC8vIFJl
dHVybnMgd2hldGhlciBvciBub3QgdGhlIGNsaWVudCBjYW4gcmVuZGVyIHRoZSBjb21wb3NpdGVk
IGxheWVyLAogICAgIC8vIHJlZ2FyZGxlc3Mgb2YgdGhlIHNldHRpbmdzLgpJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCShyZXZpc2lvbiAyNTk3MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzA1LDYgKzEzMDUsMTMgQEAgdm9pZCBQYWdlOjpzY2hl
ZHVsZVJlbmRlcmluZ1VwZGF0ZSgpCiAgICAgcmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyKCkuc2No
ZWR1bGVSZW5kZXJpbmdVcGRhdGUoKTsKIH0KIAordm9pZCBQYWdlOjpzY2hlZHVsZVRpbWVkUmVu
ZGVyaW5nVXBkYXRlKCkKK3sKKyAgICBpZiAoY2hyb21lKCkuY2xpZW50KCkuc2NoZWR1bGVUaW1l
ZFJlbmRlcmluZ1VwZGF0ZSgpKQorICAgICAgICByZXR1cm47CisgICAgcmVuZGVyaW5nVXBkYXRl
U2NoZWR1bGVyKCkuc2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSgpOworfQorCiAvLyBodHRw
czovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS93ZWJhcHBhcGlzLmh0bWwjdXBkYXRl
LXRoZS1yZW5kZXJpbmcKIHZvaWQgUGFnZTo6dXBkYXRlUmVuZGVyaW5nKCkKIHsKQEAgLTEzNTcs
NiArMTM2NCwxMCBAQCB2b2lkIFBhZ2U6OnVwZGF0ZVJlbmRlcmluZygpCiAgICAgfSk7CiAjZW5k
aWYKIAorICAgIGZvckVhY2hEb2N1bWVudChbJl0gKERvY3VtZW50JiBkb2N1bWVudCkgeworICAg
ICAgICBkb2N1bWVudC51cGRhdGVTVkdJbWFnZXNSZW5kZXJpbmcoKTsKKyAgICB9KTsKKwogICAg
IGxheW91dElmTmVlZGVkKCk7CiAgICAgZG9BZnRlclVwZGF0ZVJlbmRlcmluZygpOwogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmgJKHJldmlzaW9uIDI1OTcwMykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NzgsNiArNDc4LDcgQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlUmVuZGVyaW5nKCk7CiAgICAgCiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOworICAgIHZvaWQgc2NoZWR1bGVU
aW1lZFJlbmRlcmluZ1VwZGF0ZSgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdXNwZW5k
U2NyaXB0ZWRBbmltYXRpb25zKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXN1bWVTY3Jp
cHRlZEFuaW1hdGlvbnMoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlT2JzZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZU9ic2VydmVyLmgJKHJldmlzaW9uIDI1OTcwMykKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT2JzZXJ2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
NTAsNiArNTAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGNhbkRlc3Ryb3lEZWNvZGVk
RGF0YShjb25zdCBJbWFnZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VGcmFtZUF2YWls
YWJsZShjb25zdCBJbWFnZSYsIEltYWdlQW5pbWF0aW5nU3RhdGUsIGNvbnN0IEludFJlY3QqIGNo
YW5nZVJlY3QgPSBudWxscHRyLCBEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZh
bGlkKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2UmLCBj
b25zdCBJbnRSZWN0KiBjaGFuZ2VSZWN0ID0gbnVsbHB0cikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJikgPSAwOwogfTsKIAog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAkocmV2
aXNpb24gMjU5NzAzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzI0LDYgKzEzMjQsMTIgQEAgdm9pZCBSZW5kZXJFbGVt
ZW50OjpkaWRSZW1vdmVDYWNoZWRJbWFnZQogICAgICAgICB2aWV3KCkucmVtb3ZlUmVuZGVyZXJX
aXRoUGF1c2VkSW1hZ2VBbmltYXRpb25zKCp0aGlzLCBjYWNoZWRJbWFnZSk7CiB9CiAKK3ZvaWQg
UmVuZGVyRWxlbWVudDo6c2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSgpCit7CisgICAgaWYg
KGF1dG8qIHBhZ2UgPSBkb2N1bWVudCgpLnBhZ2UoKSkKKyAgICAgICAgcGFnZS0+c2NoZWR1bGVU
aW1lZFJlbmRlcmluZ1VwZGF0ZSgpOworfQorCiBib29sIFJlbmRlckVsZW1lbnQ6OnJlcGFpbnRG
b3JQYXVzZWRJbWFnZUFuaW1hdGlvbnNJZk5lZWRlZChjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVj
dCwgQ2FjaGVkSW1hZ2UmIGNhY2hlZEltYWdlKQogewogICAgIEFTU0VSVChtX2hhc1BhdXNlZElt
YWdlQW5pbWF0aW9ucyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVt
ZW50LmgJKHJldmlzaW9uIDI1OTcwMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyMCw2ICszMjAsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgY2FuRGVzdHJveURlY29kZWREYXRhKCkgZmluYWwgeyByZXR1cm4gIWlzVmlzaWJs
ZUluVmlld3BvcnQoKTsgfQogICAgIFZpc2libGVJblZpZXdwb3J0U3RhdGUgaW1hZ2VGcmFtZUF2
YWlsYWJsZShDYWNoZWRJbWFnZSYsIEltYWdlQW5pbWF0aW5nU3RhdGUsIGNvbnN0IEludFJlY3Qq
IGNoYW5nZVJlY3QpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVtb3ZlQ2FjaGVkSW1hZ2VDbGllbnQo
Q2FjaGVkSW1hZ2UmKSBmaW5hbDsKKyAgICB2b2lkIHNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRh
dGUoKSBmaW5hbDsKIAogICAgIGJvb2wgZ2V0TGVhZGluZ0Nvcm5lcihGbG9hdFBvaW50JiBvdXRw
dXQsIGJvb2wmIGluc2lkZUZpeGVkKSBjb25zdDsKICAgICBib29sIGdldFRyYWlsaW5nQ29ybmVy
KEZsb2F0UG9pbnQmIG91dHB1dCwgYm9vbCYgaW5zaWRlRml4ZWQpIGNvbnN0OwpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgJKHJldmlzaW9uIDI1OTcwMykKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02
OCw2ICs2OCw4IEBAIHB1YmxpYzoKICNpZiBVU0UoRElSRUNUMkQpCiAgICAgTmF0aXZlSW1hZ2VQ
dHIgbmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIGZpbmFsOwog
I2VuZGlmCisgICAgCisgICAgUGFnZSogcGFnZSgpIHsgcmV0dXJuIG1fcGFnZS5nZXQoKTsgfQog
CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBTVkdJbWFnZUNocm9tZUNsaWVudDsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNsaWVudHMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDbGllbnRzLmgJKHJldmlz
aW9uIDI1OTcwMykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNsaWVu
dHMuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsMTQgQEAgcHJpdmF0ZToKIAogICAgICAg
ICBpbWFnZU9ic2VydmVyLT5pbWFnZUZyYW1lQXZhaWxhYmxlKCptX2ltYWdlLCBtX2ltYWdlLT5p
c0FuaW1hdGluZygpID8gSW1hZ2VBbmltYXRpbmdTdGF0ZTo6WWVzIDogSW1hZ2VBbmltYXRpbmdT
dGF0ZTo6Tm8sICZyKTsKICAgICB9Ci0gICAgCisKKyAgICBib29sIHNjaGVkdWxlVGltZWRSZW5k
ZXJpbmdVcGRhdGUoKSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKG1faW1hZ2UgJiYgbV9pbWFn
ZS0+aW1hZ2VPYnNlcnZlcigpKQorICAgICAgICAgICAgbV9pbWFnZS0+aW1hZ2VPYnNlcnZlcigp
LT5zY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCptX2ltYWdlKTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorCiAgICAgU1ZHSW1hZ2UqIG1faW1hZ2U7CiB9OwogCkluZGV4OiBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyNTk3MDMpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNSBAQAorMjAyMC0wNC0wOCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhh
bGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT046IENTUyBhbmltYXRpb25zIGlu
c2lkZSBhbiBlbWJlZGRlZCBTVkcgaW1hZ2UgZG8gbm90IGFuaW1hdGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTM3MAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3ZnL2FuaW1hdGlvbnMvY3NzLWFu
aW1hdGlvbi1iYWNrZ3JvdW5kLXN2Zy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBz
dmcvYW5pbWF0aW9ucy9jc3MtYW5pbWF0aW9uLWJhY2tncm91bmQtc3ZnLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIHN2Zy9hbmltYXRpb25zL2Nzcy1hbmltYXRpb24tZW1iZWRkZWQtc3ZnLWV4cGVj
dGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN2Zy9hbmltYXRpb25zL2Nzcy1hbmltYXRpb24t
ZW1iZWRkZWQtc3ZnLmh0bWw6IEFkZGVkLgorCiAyMDIwLTA0LTA3ICBUeWxlciBXaWxjb2NrICA8
dHdpbGNvLm9AcHJvdG9ubWFpbC5jb20+CiAKICAgICAgICAgW2Nzcy12YWx1ZXMtNF0gU3VwcG9y
dCBmb250LXJlbGF0aXZlIGxoIGFuZCBybGggdW5pdApJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2Fu
aW1hdGlvbnMvY3NzLWFuaW1hdGlvbi1iYWNrZ3JvdW5kLXN2Zy1leHBlY3RlZC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL2Nzcy1hbmltYXRpb24tYmFja2dy
b3VuZC1zdmctZXhwZWN0ZWQuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9zdmcv
YW5pbWF0aW9ucy9jc3MtYW5pbWF0aW9uLWJhY2tncm91bmQtc3ZnLWV4cGVjdGVkLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxMiBAQAorPHN0eWxlPgorICAgCWltZyB7CisgICAgICAg
IHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICB9Cis8L3N0eWxlPgor
PGJvZHk+CisgICAgPGltZyBzcmM9J2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LAorICAgICAgICA8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CisgICAgICAgICAgICA8cmVj
dCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJncmVlbiIvPgorICAgICAgICA8L3N2
Zz4nPgorPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvY3NzLWFuaW1h
dGlvbi1iYWNrZ3JvdW5kLXN2Zy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9h
bmltYXRpb25zL2Nzcy1hbmltYXRpb24tYmFja2dyb3VuZC1zdmcuaHRtbAkobm9uZXhpc3RlbnQp
CisrKyBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9jc3MtYW5pbWF0aW9uLWJhY2tncm91bmQt
c3ZnLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNCBAQAorPHN0eWxlPgorICAgIC5i
b3ggeworICAgICAgICBiYWNrZ3JvdW5kOiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQs
UEhOMlp5QjRiV3h1Y3owaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1qQXdNQzl6ZG1jaVBnb2dJ
Q0FnSUNBZ0lDQWdJQ0E4YzNSNWJHVStDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQkFhMlY1Wm5KaGJX
VnpJR1poWkdWcGJpQjdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWm5KdmJTQjdJRzl3WVdO
cGRIazZNRHNnZlFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIUnZJSHNnYjNCaFkybDBlVG94
T3lCOUNpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOUNpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBalozSmxa
VzRnZXlBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmhibWx0WVhScGIyNDZJR1poWkdWcGJp
QXhObTF6T3dvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlFvZ0lDQWdJQ0FnSUNBZ0lDQThMM04wZVd4
bFBnb2dJQ0FnSUNBZ0lDQWdJQ0E4Y21WamRDQjNhV1IwYUQwaU1UQXdKU0lnYUdWcFoyaDBQU0l4
TURBbElpQm1hV3hzUFNKeVpXUWlMejRLSUNBZ0lDQWdJQ0FnSUNBZ1BISmxZM1FnYVdROUltZHla
V1Z1SWlCM2FXUjBhRDBpTVRBd0pTSWdhR1ZwWjJoMFBTSXhNREFsSWlCbWFXeHNQU0puY21WbGJp
SXZQZ29nSUNBZ0lDQWdJRHd2YzNablBnPT0iKTsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAg
ICAgICBoZWlnaHQ6IDEwMHB4OworICAgIH0KKzwvc3R5bGU+Cis8Ym9keT4KKyAgICA8ZGl2IGNs
YXNzPSJib3giPjwvZGl2PgorICAgIDxzY3JpcHQ+CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCisgICAgICAg
IHZhciByQUZDb3VudCA9IDA7CisgICAgICAgIGZ1bmN0aW9uIGFuaW1hdGUodGltZXN0YW1wKSB7
CisgICAgICAgICAgICBpZiAoKytyQUZDb3VudCA8IDEwKQorICAgICAgICAgICAgICAgIHdpbmRv
dy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0ZSk7CisgICAgICAgICAgICBlbHNlIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKKyAgICAgICAgfQorCisgICAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYW5p
bWF0ZSk7CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvYW5p
bWF0aW9ucy9jc3MtYW5pbWF0aW9uLWVtYmVkZGVkLXN2Zy1leHBlY3RlZC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL2Nzcy1hbmltYXRpb24tZW1iZWRkZWQt
c3ZnLWV4cGVjdGVkLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvc3ZnL2FuaW1h
dGlvbnMvY3NzLWFuaW1hdGlvbi1lbWJlZGRlZC1zdmctZXhwZWN0ZWQuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDEyIEBACis8c3R5bGU+CisgICAJaW1nIHsKKyAgICAgICAgd2lkdGg6
IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgIH0KKzwvc3R5bGU+Cis8Ym9keT4K
KyAgICA8aW1nIHNyYz0nZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsCisgICAgICAgIDxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KKyAgICAgICAgICAgIDxyZWN0IHdpZHRo
PSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9ImdyZWVuIi8+CisgICAgICAgIDwvc3ZnPic+Cis8
L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9jc3MtYW5pbWF0aW9uLWVt
YmVkZGVkLXN2Zy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25z
L2Nzcy1hbmltYXRpb24tZW1iZWRkZWQtc3ZnLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0
VGVzdHMvc3ZnL2FuaW1hdGlvbnMvY3NzLWFuaW1hdGlvbi1lbWJlZGRlZC1zdmcuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDM2IEBACis8c3R5bGU+CisgICAgaW1nIHsKKyAgICAgICAg
d2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgIH0KKzwvc3R5bGU+Cis8
Ym9keT4KKyAgICA8aW1nIHNyYz0nZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsCisgICAgICAgIDxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KKyAgICAgICAgICAgIDxzdHls
ZT4KKyAgICAgICAgICAgICAgICBAa2V5ZnJhbWVzIGZhZGVpbiB7CisgICAgICAgICAgICAgICAg
ICAgIGZyb20geyBvcGFjaXR5OjA7IH0KKyAgICAgICAgICAgICAgICAgICAgdG8geyBvcGFjaXR5
OjE7IH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgI2dyZWVuIHsgCisgICAg
ICAgICAgICAgICAgICAgIGFuaW1hdGlvbjogZmFkZWluIDE2bXM7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgICAgIDxyZWN0IHdpZHRoPSIxMDAlIiBo
ZWlnaHQ9IjEwMCUiIGZpbGw9InJlZCIvPgorICAgICAgICAgICAgPHJlY3QgaWQ9ImdyZWVuIiB3
aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJncmVlbiIvPgorICAgICAgICA8L3N2Zz4n
PgorICAgIDxzY3JpcHQ+CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCisgICAgICAgIHZhciByQUZDb3VudCA9
IDA7CisgICAgICAgIGZ1bmN0aW9uIGFuaW1hdGUodGltZXN0YW1wKSB7CisgICAgICAgICAgICBp
ZiAoKytyQUZDb3VudCA8IDEwKQorICAgICAgICAgICAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0
aW9uRnJhbWUoYW5pbWF0ZSk7CisgICAgICAgICAgICBlbHNlIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfQor
CisgICAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0ZSk7CisgICAgPC9z
Y3JpcHQ+Cis8L2JvZHk+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395860</attachid>
            <date>2020-04-08 13:30:26 -0700</date>
            <delta_ts>2020-04-08 21:10:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209370-20200408133025.patch</filename>
            <type>text/plain</type>
            <size>23564</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1OTc0NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc1IEBACisyMDIwLTA0LTA4ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lP
TjogQ1NTIGFuaW1hdGlvbnMgaW5zaWRlIGFuIGVtYmVkZGVkIFNWRyBpbWFnZSBkbyBub3QgYW5p
bWF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5
MzcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSWYg
V2ViQW5pbWF0aW9uIGlzIGVuYWJsZWQgYW5kIHRoZSBTVkdJbWFnZSBpbmNsdWRlcyBDU1MgYW5p
bWF0aW9ucywgdGhlCisgICAgICAgIERvY3VtZW50VGltZWxpbmUgaXMgYWRkZWQgdG8gdGhlIFNW
R0RvY3VtZW50IG9mIHRoZSBlbWJlZGRlZCBTVkdJbWFnZS4KKyAgICAgICAgQmVjYXVzZSB0aGUg
U1ZHSW1hZ2UgaGFzIGl0cyBvd24gUGFnZSB0aGUgUmVuZGVyaW5nVXBkYXRlIGlzIHNjaGVkdWxl
ZAorICAgICAgICBhbmQgdGhlIHVwZGF0ZVJlbmRlcmluZyBzdGVwcyBydW4gaW4gdGhpcyBQYWdl
LgorCisgICAgICAgIFRoZSBQYWdlIG9mIHRoZSBTVkdJbWFnZSBpcyBpbmFjdGl2ZSBzdWNoIHRo
YXQgc2NoZWR1bGluZyBSZW5kZXJpbmdVcGRhdGUKKyAgICAgICAgZmFpbHM7IHRoZXJlZm9yZSB0
aGUgdXBkYXRlUmVuZGVyaW5nIHN0ZXBzIG5ldmVyIHJ1biBhbmQgdGhlIENTUyBhbmltYXRpb24K
KyAgICAgICAgbmV2ZXIgYWR2YW5jZXMuCisKKyAgICAgICAgVGhlIGZpeCBpczoKKworICAgICAg
ICAxKSBTY2hlZHVsaW5nIHRoZSBSZW5kZXJpbmdVcGRhdGU6IFRoaXMgaGFzIHRvIGhhcHBlbiBp
biB0aGUgUGFnZSB3aGljaAorICAgICAgICAgICBjb250YWlucyB0aGUgcmVuZGVyZXIgb2YgdGhl
IFNWR0ltYWdlLiBCZWNhdXNlIERvY3VtZW50VGltZWxpbmUgaXMKKyAgICAgICAgICAgYWRkZWQg
dG8gU1ZHRG9jdW1lbnQsIHRoaXMgc2NoZWR1bGluZyB3aWxsIGdvIHRocm91Z2ggdGhlc2UgaHVi
czoKKyAgICAgICAgICAgICAgICAtIERvY3VtZW50VGltZWxpbmUKKyAgICAgICAgICAgICAgICAt
IFBhZ2UKKyAgICAgICAgICAgICAgICAtIENocm9tZUNsaWVudCAtPiBTVkdJbWFnZUNocm9tZUNs
aWVudCAKKyAgICAgICAgICAgICAgICAtIFNWR0ltYWdlCisgICAgICAgICAgICAgICAgLSBJbWFn
ZU9ic2VydmVyIC0+IENhY2hlZEltYWdlT2JzZXJ2ZXIKKyAgICAgICAgICAgICAgICAtIENhY2hl
ZEltYWdlCisgICAgICAgICAgICAgICAgLSBDYWNoZWRJbWFnZUNsaWVudCAtPiBSZW5kZXJFbGVt
ZW50CisgICAgICAgICAgICAgICAgLSBQYWdlCisKKyAgICAgICAgMikgUnVubmluZyB0aGUgdXBk
YXRlUmVuZGVyaW5nIHN0ZXBzOiBFYWNoIGRvY3VtZW50IGluIHRoZSBQYWdlIHdpbGwKKyAgICAg
ICAgICAgZW51bWVyYXRlIGl0cyBjYWNoZWQgU1ZHSW1hZ2VzLiBUaGUgdXBkYXRlUmVuZGVyaW5n
IG9mIHRoZSBQYWdlIG9mCisgICAgICAgICAgIGVhY2ggU1ZHSW1hZ2Ugd2lsbCBiZSBjYWxsZWQu
CisKKyAgICAgICAgVG8gbWFrZSBlbnVtZXJhdGluZyB0aGUgY2FjaGVkIFNWR0ltYWdlcyBvZiBh
IERvY3VtZW50IGZhc3RlciwgdGhlIFVSTHMKKyAgICAgICAgb2YgdGhlIGNhY2hlZCBTVkdJbWFn
ZXMgd2lsbCBiZSBzdG9yZWQgYnkgQ2FjaGVkUmVzb3VyY2VMb2FkZXIgd2hlbgorICAgICAgICBk
b2N1bWVudERpZEZpbmlzaExvYWRFdmVudCBmaXJlcy4KKworICAgICAgICBUZXN0czogc3ZnL2Fu
aW1hdGlvbnMvY3NzLWFuaW1hdGlvbi1iYWNrZ3JvdW5kLXN2Zy5odG1sCisgICAgICAgICAgICAg
ICBzdmcvYW5pbWF0aW9ucy9jc3MtYW5pbWF0aW9uLWVtYmVkZGVkLXN2Zy5odG1sCisKKyAgICAg
ICAgKiBhbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudFRpbWVsaW5lOjpzY2hlZHVsZUFuaW1hdGlvblJlc29sdXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZTo6dXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHMp
OgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6dXBkYXRlU1ZHSW1hZ2VzUmVuZGVyaW5nKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoK
KyAgICAgICAgKiBodG1sL0ltYWdlQml0bWFwLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OkNhY2hlZElt
YWdlT2JzZXJ2ZXI6OnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkSW1hZ2U6OnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZUNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2VDbGllbnQ6
OnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWNoZWRSZXNvdXJj
ZVNWR0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpkb2N1
bWVudERpZEZpbmlzaExvYWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6YnVpbGRDYWNoZWRTVkdJbWFnZXNVUkxzKToKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5o
OgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpzY2hlZHVsZVRpbWVkUmVuZGVyaW5n
VXBkYXRlKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZTo6c2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
Ojp1cGRhdGVSZW5kZXJpbmcpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpzY2hlZHVs
ZVRpbWVkUmVuZGVyaW5nVXBkYXRlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVu
dC5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5oOgorICAgICAgICAqIHN2Zy9n
cmFwaGljcy9TVkdJbWFnZUNsaWVudHMuaDoKKwogMjAyMC0wNC0wOCAgRGV2aW4gUm91c3NvICA8
ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogU3RvcmFnZTogY2Fu
bm90IGNsZWFyIG91dCBtdWx0aXBsZSBvciBhbGwgbG9jYWwgc3RvcmFnZSBlbnRyaWVzCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuY3BwCShyZXZp
c2lvbiAyNTk3MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGlu
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzOSw3ICszMzksNyBAQCB2b2lkIERvY3VtZW50VGlt
ZWxpbmU6OnNjaGVkdWxlQW5pbWF0aW9uCiAgICAgaWYgKCFzaG91bGRSdW5VcGRhdGVBbmltYXRp
b25zQW5kU2VuZEV2ZW50c0lnbm9yaW5nU3VzcGVuc2lvblN0YXRlKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIG1fZG9jdW1lbnQtPnBhZ2UoKS0+cmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyKCku
c2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSgpOworICAgIG1fZG9jdW1lbnQtPnBhZ2UoKS0+
c2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSgpOwogICAgIG1fYW5pbWF0aW9uUmVzb2x1dGlv
blNjaGVkdWxlZCA9IHRydWU7CiB9CiAKQEAgLTM2NCw3ICszNjQsNiBAQCB2b2lkIERvY3VtZW50
VGltZWxpbmU6OnVwZGF0ZUN1cnJlbnRUaW1lCiAKIHZvaWQgRG9jdW1lbnRUaW1lbGluZTo6dXBk
YXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHMoKQogewotCiAgICAgLy8gVXBkYXRpbmcgYW5pbWF0
aW9ucyBhbmQgc2VuZGluZyBldmVudHMgbWF5IGludmFsaWRhdGUgdGhlIHRpbWluZyBvZiBzb21l
IGFuaW1hdGlvbnMsIHNvIHdlIG11c3Qgc2V0IHRoZSBtX2FuaW1hdGlvblJlc29sdXRpb25TY2hl
ZHVsZWQKICAgICAvLyBmbGFnIHRvIGZhbHNlIHByaW9yIHRvIHJ1bm5pbmcgdGhhdCBwcm9jZWR1
cmUgdG8gYWxsb3cgYW5pbWF0aW9uIHdpdGggdGltaW5nIG1vZGVsIHVwZGF0ZXMgdG8gc2NoZWR1
bGUgdXBkYXRlcy4KICAgICBtX2FuaW1hdGlvblJlc29sdXRpb25TY2hlZHVsZWQgPSBmYWxzZTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMjU5NzAzKQorKysgU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc3LDYgKzE3Nyw3
IEBACiAjaW5jbHVkZSAiU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmgiCiAjaW5jbHVkZSAiU1ZHRWxl
bWVudC5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnRGYWN0b3J5LmgiCisjaW5jbHVkZSAiU1ZHSW1h
Z2UuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1NWR0VsZW1lbnQuaCIK
ICNpbmNsdWRlICJTVkdUaXRsZUVsZW1lbnQuaCIKQEAgLTYzODMsNiArNjM4NCwxNCBAQCB2b2lk
IERvY3VtZW50OjpzZXJ2aWNlUmVxdWVzdEFuaW1hdGlvbkZyCiAgICAgICAgIG1fc2NyaXB0ZWRB
bmltYXRpb25Db250cm9sbGVyLT5zZXJ2aWNlUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2tz
KHRpbWVzdGFtcCk7CiB9CiAKK3ZvaWQgRG9jdW1lbnQ6OnVwZGF0ZVNWR0ltYWdlc1JlbmRlcmlu
ZygpCit7CisgICAgZm9yIChhdXRvKiBpbWFnZSA6IG1fY2FjaGVkUmVzb3VyY2VMb2FkZXItPmFs
bENhY2hlZFNWR0ltYWdlcygpKSB7CisgICAgICAgIGlmIChhdXRvKiBwYWdlID0gaW1hZ2UtPnBh
Z2UoKSkKKyAgICAgICAgICAgIHBhZ2UtPnVwZGF0ZVJlbmRlcmluZygpOworICAgIH0KK30KKwog
dm9pZCBEb2N1bWVudDo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEIGRp
c3BsYXlJRCkKIHsKICAgICBpZiAoUmVuZGVyVmlldyogdmlldyA9IHJlbmRlclZpZXcoKSkgewpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDI1OTcwMykKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDc5LDYgKzEwNzksNyBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIHVwZGF0ZUFuaW1hdGlvbnNBbmRTZW5kRXZlbnRzKERPTUhpZ2hS
ZXNUaW1lU3RhbXApOwogICAgIHZvaWQgc2VydmljZVJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxi
YWNrcyhET01IaWdoUmVzVGltZVN0YW1wKTsKKyAgICB2b2lkIHVwZGF0ZVNWR0ltYWdlc1JlbmRl
cmluZygpOwogCiAgICAgdm9pZCB3aW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5
SUQpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcAkocmV2aXNpb24gMjU5
NzAzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTUyOCw2ICs1MjgsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBjYW5EZXN0cm95RGVjb2Rl
ZERhdGEoY29uc3QgSW1hZ2UmKSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBp
bWFnZUZyYW1lQXZhaWxhYmxlKGNvbnN0IEltYWdlJiwgSW1hZ2VBbmltYXRpbmdTdGF0ZSwgY29u
c3QgSW50UmVjdCogPSBudWxscHRyLCBEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJ
bnZhbGlkKSBvdmVycmlkZSB7IH0KICAgICB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2Um
LCBjb25zdCBJbnRSZWN0KiA9IG51bGxwdHIpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgc2NoZWR1
bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZShjb25zdCBJbWFnZSYpIG92ZXJyaWRlIHsgfQogCiBwcml2
YXRlOgogICAgIEltYWdlQml0bWFwSW1hZ2VPYnNlcnZlcihTdHJpbmcgbWltZVR5cGUsIGxvbmcg
bG9uZyBleHBlY3RlZENvbnRlbnRMZW5ndGgsIGNvbnN0IFVSTCYgc291cmNlVXJsKQpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCShyZXZpc2lvbiAy
NTk3MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MzQsNiArNDM0LDEyIEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OkNhY2hl
ZEltYWdlT2JzZXJ2ZXI6OmMKICAgICAgICAgY2FjaGVkSW1hZ2UtPmNoYW5nZWRJblJlY3QoaW1h
Z2UsIHJlY3QpOwogfQogCit2b2lkIENhY2hlZEltYWdlOjpDYWNoZWRJbWFnZU9ic2VydmVyOjpz
Y2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJiBpbWFnZSkKK3sKKyAgICBm
b3IgKGF1dG8gY2FjaGVkSW1hZ2UgOiBtX2NhY2hlZEltYWdlcykKKyAgICAgICAgY2FjaGVkSW1h
Z2UtPnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoaW1hZ2UpOworfQorCiBpbmxpbmUgdm9p
ZCBDYWNoZWRJbWFnZTo6Y2xlYXJJbWFnZSgpCiB7CiAgICAgaWYgKCFtX2ltYWdlKQpAQCAtNjg0
LDYgKzY5MCwxNiBAQCB2b2lkIENhY2hlZEltYWdlOjpjaGFuZ2VkSW5SZWN0KGNvbnN0IEltCiAg
ICAgbm90aWZ5T2JzZXJ2ZXJzKHJlY3QpOwogfQogCit2b2lkIENhY2hlZEltYWdlOjpzY2hlZHVs
ZVRpbWVkUmVuZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJiBpbWFnZSkKK3sKKyAgICBpZiAoJmlt
YWdlICE9IG1faW1hZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIENhY2hlZFJlc291cmNlQ2xp
ZW50V2Fsa2VyPENhY2hlZEltYWdlQ2xpZW50PiB3YWxrZXIobV9jbGllbnRzKTsKKyAgICB3aGls
ZSAoYXV0byogY2xpZW50ID0gd2Fsa2VyLm5leHQoKSkKKyAgICAgICAgY2xpZW50LT5zY2hlZHVs
ZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCk7Cit9CisKIGJvb2wgQ2FjaGVkSW1hZ2U6OmN1cnJlbnRG
cmFtZUtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJFbGVtZW50KiByZW5kZXJlcikKIHsKICAg
ICBJbWFnZSogaW1hZ2UgPSBpbWFnZUZvclJlbmRlcmVyKHJlbmRlcmVyKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCShyZXZpc2lvbiAyNTk3MDMpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAkod29ya2luZyBjb3B5
KQpAQCAtMTUyLDYgKzE1Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgY2FuRGVzdHJveURl
Y29kZWREYXRhKGNvbnN0IEltYWdlJikgZmluYWw7CiAgICAgICAgIHZvaWQgaW1hZ2VGcmFtZUF2
YWlsYWJsZShjb25zdCBJbWFnZSYsIEltYWdlQW5pbWF0aW5nU3RhdGUsIGNvbnN0IEludFJlY3Qq
IGNoYW5nZVJlY3QgPSBudWxscHRyLCBEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJ
bnZhbGlkKSBmaW5hbDsKICAgICAgICAgdm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiwg
Y29uc3QgSW50UmVjdCopIGZpbmFsOworICAgICAgICB2b2lkIHNjaGVkdWxlVGltZWRSZW5kZXJp
bmdVcGRhdGUoY29uc3QgSW1hZ2UmKSBmaW5hbDsKIAogICAgICAgICBIYXNoU2V0PENhY2hlZElt
YWdlKj4gbV9jYWNoZWRJbWFnZXM7CiAgICAgfTsKQEAgLTE2Miw2ICsxNjMsNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgY2FuRGVzdHJveURlY29kZWREYXRhKGNvbnN0IEltYWdlJik7CiAgICAgdm9p
ZCBpbWFnZUZyYW1lQXZhaWxhYmxlKGNvbnN0IEltYWdlJiwgSW1hZ2VBbmltYXRpbmdTdGF0ZSwg
Y29uc3QgSW50UmVjdCogY2hhbmdlUmVjdCA9IG51bGxwdHIsIERlY29kaW5nU3RhdHVzID0gRGVj
b2RpbmdTdGF0dXM6OkludmFsaWQpOwogICAgIHZvaWQgY2hhbmdlZEluUmVjdChjb25zdCBJbWFn
ZSYsIGNvbnN0IEludFJlY3QqKTsKKyAgICB2b2lkIHNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRh
dGUoY29uc3QgSW1hZ2UmKTsKIAogICAgIHZvaWQgdXBkYXRlQnVmZmVySW50ZXJuYWwoU2hhcmVk
QnVmZmVyJik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFn
ZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRJbWFnZUNsaWVudC5oCShyZXZpc2lvbiAyNTk3MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2VDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgs
OCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBWaXNpYmxlSW5WaWV3cG9ydFN0YXRlIGltYWdlRnJh
bWVBdmFpbGFibGUoQ2FjaGVkSW1hZ2UmIGltYWdlLCBJbWFnZUFuaW1hdGluZ1N0YXRlLCBjb25z
dCBJbnRSZWN0KiBjaGFuZ2VSZWN0KSB7IGltYWdlQ2hhbmdlZCgmaW1hZ2UsIGNoYW5nZVJlY3Qp
OyByZXR1cm4gVmlzaWJsZUluVmlld3BvcnRTdGF0ZTo6Tm87IH0KIAogICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZW1vdmVDYWNoZWRJbWFnZUNsaWVudChDYWNoZWRJbWFnZSYpIHsgfQorCisgICAgdmly
dHVhbCB2b2lkIHNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKSB7IH0KIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMjU5NzAzKQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjksNiArNjksNyBAQAogI2luY2x1ZGUgIlJlc291cmNlVGltaW5nLmgiCiAj
aW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW5jbHVkZSAiUnVudGltZUVu
YWJsZWRGZWF0dXJlcy5oIgorI2luY2x1ZGUgIlNWR0ltYWdlLmgiCiAjaW5jbHVkZSAiU2NyaXB0
Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2Vj
dXJpdHlQb2xpY3kuaCIKQEAgLTc4OCw2ICs3ODksMTggQEAgc3RhdGljIEZldGNoT3B0aW9uczo6
RGVzdGluYXRpb24gZGVzdGluYQogICAgIHJldHVybiBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9u
OjpFbXB0eVN0cmluZzsKIH0KIAorc3RhdGljIGlubGluZSBTVkdJbWFnZSogY2FjaGVkUmVzb3Vy
Y2VTVkdJbWFnZShDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCit7CisgICAgaWYgKCFyZXNvdXJj
ZSB8fCAhcmVzb3VyY2UtPmlzSW1hZ2UoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICBhdXRvKiBpbWFnZSA9IGRvd25jYXN0PENhY2hlZEltYWdlPihyZXNvdXJjZSktPmltYWdlKCk7
CisgICAgaWYgKCFpbWFnZSB8fCAhaXM8U1ZHSW1hZ2U+KGltYWdlKSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICByZXR1cm4gZG93bmNhc3Q8U1ZHSW1hZ2U+KGltYWdlKTsKK30KKwog
UmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPj4gQ2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VHlwZSB0
eXBlLCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGb3JQcmVsb2FkIGZvclByZWxv
YWQsIEltYWdlTG9hZGluZyBpbWFnZUxvYWRpbmcpCiB7CiAgICAgaWYgKCFmcmFtZSgpIHx8ICFm
cmFtZSgpLT5wYWdlKCkpIHsKQEAgLTEwMDQsNiArMTAxNyw3IEBAIFJlc291cmNlRXJyb3JPcjxD
YWNoZWRSZXNvdXJjZUhhbmRsZTxDYWMKIHZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRvY3Vt
ZW50RGlkRmluaXNoTG9hZEV2ZW50KCkKIHsKICAgICBtX3ZhbGlkYXRlZFVSTHMuY2xlYXIoKTsK
KyAgICBidWlsZENhY2hlZFNWR0ltYWdlc1VSTHMoKTsKIAogICAgIC8vIElmIG1fcHJlbG9hZHMg
aXMgbm90IGVtcHR5IGhlcmUsIGl0J3MgZnVsbCBvZiBsaW5rIHByZWxvYWRzLAogICAgIC8vIGFz
IHNwZWN1bGF0aXZlIHByZWxvYWRzIHdlcmUgY2xlYXJlZCBhdCBEQ0wuCkBAIC0xNDAxLDYgKzE0
MTUsMjcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6ZGVjcmVtZW50UmVxdQogICAgIEFT
U0VSVChtX3JlcXVlc3RDb3VudCA+IC0xKTsKIH0KIAordm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6YnVpbGRDYWNoZWRTVkdJbWFnZXNVUkxzKCkKK3sKKyAgICBmb3IgKGF1dG8mIHJlc291cmNl
IDogbV9kb2N1bWVudFJlc291cmNlcykgeworICAgICAgICBpZiAoY2FjaGVkUmVzb3VyY2VTVkdJ
bWFnZShyZXNvdXJjZS52YWx1ZS5nZXQoKSkpCisgICAgICAgICAgICBtX2NhY2hlZFNWR0ltYWdl
c1VSTHMuYWRkKHJlc291cmNlLmtleSk7CisgICAgfQorfQorCitWZWN0b3I8U1ZHSW1hZ2UqPiBD
YWNoZWRSZXNvdXJjZUxvYWRlcjo6YWxsQ2FjaGVkU1ZHSW1hZ2VzKCkKK3sKKyAgICBWZWN0b3I8
U1ZHSW1hZ2UqPiBhbGxDYWNoZWRTVkdJbWFnZXM7CisKKyAgICBmb3IgKGF1dG8mIGNhY2hlZFNW
R0ltYWdlVVJMIDogbV9jYWNoZWRTVkdJbWFnZXNVUkxzKSB7CisgICAgICAgIGF1dG8qIHJlc291
cmNlID0gY2FjaGVkUmVzb3VyY2UoY2FjaGVkU1ZHSW1hZ2VVUkwpOworICAgICAgICBpZiAoYXV0
byogaW1hZ2UgPSBjYWNoZWRSZXNvdXJjZVNWR0ltYWdlKHJlc291cmNlKSkKKyAgICAgICAgICAg
IGFsbENhY2hlZFNWR0ltYWdlcy5hcHBlbmQoaW1hZ2UpOworICAgIH0KKyAgICAgICAgCisgICAg
cmV0dXJuIGFsbENhY2hlZFNWR0ltYWdlczsKK30KKwogUmVzb3VyY2VFcnJvck9yPENhY2hlZFJl
c291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPj4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnByZWxv
YWQoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCkKIHsKICAgICBpZiAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW50ZXJjZXB0
UmVxdWVzdChmcmFtZSgpLCByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpKSkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCShy
ZXZpc2lvbiAyNTk3MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsNiArNTcsNyBAQCBjbGFzcyBEb2N1
bWVudExvYWRlcjsKIGNsYXNzIEZyYW1lOwogY2xhc3MgSW1hZ2VMb2FkZXI7CiBjbGFzcyBQYWdl
OworY2xhc3MgU1ZHSW1hZ2U7CiBjbGFzcyBTZXR0aW5nczsKIAogdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CkBAIC0xMTUsNiArMTE2LDcgQEAgcHVibGljOgogCiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0
cmluZywgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+PiBEb2N1bWVudFJlc291
cmNlTWFwOwogICAgIGNvbnN0IERvY3VtZW50UmVzb3VyY2VNYXAmIGFsbENhY2hlZFJlc291cmNl
cygpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnRSZXNvdXJjZXM7IH0KKyAgICBWZWN0b3I8U1ZH
SW1hZ2UqPiBhbGxDYWNoZWRTVkdJbWFnZXMoKTsKIAogICAgIGJvb2wgYXV0b0xvYWRJbWFnZXMo
KSBjb25zdCB7IHJldHVybiBtX2F1dG9Mb2FkSW1hZ2VzOyB9CiAgICAgdm9pZCBzZXRBdXRvTG9h
ZEltYWdlcyhib29sKTsKQEAgLTE4NSw2ICsxODcsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgY2hl
Y2tJbnNlY3VyZUNvbnRlbnQoQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIGNvbnN0IFVSTCYpIGNvbnN0
OwogCiAgICAgdm9pZCBwZXJmb3JtUG9zdExvYWRBY3Rpb25zKCk7CisgICAgdm9pZCBidWlsZENh
Y2hlZFNWR0ltYWdlc1VSTHMoKTsKIAogICAgIEltYWdlTG9hZGluZyBjbGllbnREZWZlcnNJbWFn
ZShjb25zdCBVUkwmKSBjb25zdDsKICAgICB2b2lkIHJlbG9hZEltYWdlc0lmTm90RGVmZXJyZWQo
KTsKQEAgLTE5Myw2ICsxOTYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgY2FuUmVxdWVzdEluQ29u
dGVudERpc3Bvc2l0aW9uQXR0YWNobWVudFNhbmRib3goQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIGNv
bnN0IFVSTCYpIGNvbnN0OwogCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fdmFsaWRhdGVkVVJMczsK
KyAgICBIYXNoU2V0PFN0cmluZz4gbV9jYWNoZWRTVkdJbWFnZXNVUkxzOwogICAgIG11dGFibGUg
RG9jdW1lbnRSZXNvdXJjZU1hcCBtX2RvY3VtZW50UmVzb3VyY2VzOwogICAgIFdlYWtQdHI8RG9j
dW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgRG9jdW1lbnRMb2FkZXIqIG1fZG9jdW1lbnRMb2FkZXI7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDI1OTcwMykKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMx
Niw2ICszMTYsNyBAQCBwdWJsaWM6CiAgICAgLy8gU2V0cyBhIGZsYWcgdG8gc3BlY2lmeSB0aGF0
IHRoZSB2aWV3IG5lZWRzIHRvIGJlIHVwZGF0ZWQsIHNvIHdlIG5lZWQKICAgICAvLyB0byBkbyBh
biBlYWdlciBsYXlvdXQgYmVmb3JlIHRoZSBkcmF3aW5nLgogICAgIHZpcnR1YWwgdm9pZCBzY2hl
ZHVsZVJlbmRlcmluZ1VwZGF0ZSgpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc2NoZWR1bGVUaW1l
ZFJlbmRlcmluZ1VwZGF0ZSgpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIG5l
ZWRzSW1tZWRpYXRlUmVuZGVyaW5nVXBkYXRlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICAvLyBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBjbGllbnQgY2FuIHJlbmRlciB0aGUgY29t
cG9zaXRlZCBsYXllciwKICAgICAvLyByZWdhcmRsZXNzIG9mIHRoZSBzZXR0aW5ncy4KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcAkocmV2aXNpb24gMjU5NzAzKQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMwNSw2ICsxMzA1LDEzIEBAIHZvaWQgUGFn
ZTo6c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKQogICAgIHJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxl
cigpLnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCk7CiB9CiAKK3ZvaWQgUGFnZTo6c2NoZWR1bGVU
aW1lZFJlbmRlcmluZ1VwZGF0ZSgpCit7CisgICAgaWYgKGNocm9tZSgpLmNsaWVudCgpLnNjaGVk
dWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKSkKKyAgICAgICAgcmV0dXJuOworICAgIHJlbmRlcmlu
Z1VwZGF0ZVNjaGVkdWxlcigpLnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKTsKK30KKwog
Ly8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvd2ViYXBwYXBpcy5odG1s
I3VwZGF0ZS10aGUtcmVuZGVyaW5nCiB2b2lkIFBhZ2U6OnVwZGF0ZVJlbmRlcmluZygpCiB7CkBA
IC0xMzU3LDYgKzEzNjQsMTAgQEAgdm9pZCBQYWdlOjp1cGRhdGVSZW5kZXJpbmcoKQogICAgIH0p
OwogI2VuZGlmCiAKKyAgICBmb3JFYWNoRG9jdW1lbnQoWyZdIChEb2N1bWVudCYgZG9jdW1lbnQp
IHsKKyAgICAgICAgZG9jdW1lbnQudXBkYXRlU1ZHSW1hZ2VzUmVuZGVyaW5nKCk7CisgICAgfSk7
CisKICAgICBsYXlvdXRJZk5lZWRlZCgpOwogICAgIGRvQWZ0ZXJVcGRhdGVSZW5kZXJpbmcoKTsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCShyZXZpc2lvbiAyNTk3MDMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDc4LDYgKzQ3OCw3IEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVJlbmRlcmluZygpOwogICAgIAogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICB2b2lkIHNj
aGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c3VzcGVuZFNjcmlwdGVkQW5pbWF0aW9ucygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVz
dW1lU2NyaXB0ZWRBbmltYXRpb25zKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZU9ic2VydmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VPYnNlcnZlci5oCShyZXZpc2lvbiAyNTk3MDMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9ic2VydmVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTUwLDYgKzUwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBjYW5EZXN0cm95
RGVjb2RlZERhdGEoY29uc3QgSW1hZ2UmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGltYWdlRnJh
bWVBdmFpbGFibGUoY29uc3QgSW1hZ2UmLCBJbWFnZUFuaW1hdGluZ1N0YXRlLCBjb25zdCBJbnRS
ZWN0KiBjaGFuZ2VSZWN0ID0gbnVsbHB0ciwgRGVjb2RpbmdTdGF0dXMgPSBEZWNvZGluZ1N0YXR1
czo6SW52YWxpZCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IElt
YWdlJiwgY29uc3QgSW50UmVjdCogY2hhbmdlUmVjdCA9IG51bGxwdHIpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgc2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZShjb25zdCBJbWFnZSYpID0gMDsK
IH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5j
cHAJKHJldmlzaW9uIDI1OTcwMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMyNCw2ICsxMzI0LDEyIEBAIHZvaWQgUmVu
ZGVyRWxlbWVudDo6ZGlkUmVtb3ZlQ2FjaGVkSW1hZ2UKICAgICAgICAgdmlldygpLnJlbW92ZVJl
bmRlcmVyV2l0aFBhdXNlZEltYWdlQW5pbWF0aW9ucygqdGhpcywgY2FjaGVkSW1hZ2UpOwogfQog
Cit2b2lkIFJlbmRlckVsZW1lbnQ6OnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKQorewor
ICAgIGlmIChhdXRvKiBwYWdlID0gZG9jdW1lbnQoKS5wYWdlKCkpCisgICAgICAgIHBhZ2UtPnNj
aGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKTsKK30KKwogYm9vbCBSZW5kZXJFbGVtZW50Ojpy
ZXBhaW50Rm9yUGF1c2VkSW1hZ2VBbmltYXRpb25zSWZOZWVkZWQoY29uc3QgSW50UmVjdCYgdmlz
aWJsZVJlY3QsIENhY2hlZEltYWdlJiBjYWNoZWRJbWFnZSkKIHsKICAgICBBU1NFUlQobV9oYXNQ
YXVzZWRJbWFnZUFuaW1hdGlvbnMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRWxlbWVudC5oCShyZXZpc2lvbiAyNTk3MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMjAsNiArMzIwLDcgQEAgcHJp
dmF0ZToKICAgICBib29sIGNhbkRlc3Ryb3lEZWNvZGVkRGF0YSgpIGZpbmFsIHsgcmV0dXJuICFp
c1Zpc2libGVJblZpZXdwb3J0KCk7IH0KICAgICBWaXNpYmxlSW5WaWV3cG9ydFN0YXRlIGltYWdl
RnJhbWVBdmFpbGFibGUoQ2FjaGVkSW1hZ2UmLCBJbWFnZUFuaW1hdGluZ1N0YXRlLCBjb25zdCBJ
bnRSZWN0KiBjaGFuZ2VSZWN0KSBmaW5hbDsKICAgICB2b2lkIGRpZFJlbW92ZUNhY2hlZEltYWdl
Q2xpZW50KENhY2hlZEltYWdlJikgZmluYWw7CisgICAgdm9pZCBzY2hlZHVsZVRpbWVkUmVuZGVy
aW5nVXBkYXRlKCkgZmluYWw7CiAKICAgICBib29sIGdldExlYWRpbmdDb3JuZXIoRmxvYXRQb2lu
dCYgb3V0cHV0LCBib29sJiBpbnNpZGVGaXhlZCkgY29uc3Q7CiAgICAgYm9vbCBnZXRUcmFpbGlu
Z0Nvcm5lcihGbG9hdFBvaW50JiBvdXRwdXQsIGJvb2wmIGluc2lkZUZpeGVkKSBjb25zdDsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCShyZXZpc2lvbiAyNTk3MDMp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAkod29ya2luZyBjb3B5
KQpAQCAtNjgsNiArNjgsOCBAQCBwdWJsaWM6CiAjaWYgVVNFKERJUkVDVDJEKQogICAgIE5hdGl2
ZUltYWdlUHRyIG5hdGl2ZUltYWdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBm
aW5hbDsKICNlbmRpZgorICAgIAorICAgIFBhZ2UqIHBhZ2UoKSB7IHJldHVybiBtX3BhZ2UuZ2V0
KCk7IH0KIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgU1ZHSW1hZ2VDaHJvbWVDbGllbnQ7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDbGllbnRzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2xpZW50cy5o
CShyZXZpc2lvbiAyNTk3MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2VDbGllbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDE0IEBAIHByaXZhdGU6CiAK
ICAgICAgICAgaW1hZ2VPYnNlcnZlci0+aW1hZ2VGcmFtZUF2YWlsYWJsZSgqbV9pbWFnZSwgbV9p
bWFnZS0+aXNBbmltYXRpbmcoKSA/IEltYWdlQW5pbWF0aW5nU3RhdGU6OlllcyA6IEltYWdlQW5p
bWF0aW5nU3RhdGU6Ok5vLCAmcik7CiAgICAgfQotICAgIAorCisgICAgYm9vbCBzY2hlZHVsZVRp
bWVkUmVuZGVyaW5nVXBkYXRlKCkgZmluYWwKKyAgICB7CisgICAgICAgIGlmIChtX2ltYWdlICYm
IG1faW1hZ2UtPmltYWdlT2JzZXJ2ZXIoKSkKKyAgICAgICAgICAgIG1faW1hZ2UtPmltYWdlT2Jz
ZXJ2ZXIoKS0+c2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSgqbV9pbWFnZSk7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKwogICAgIFNWR0ltYWdlKiBtX2ltYWdlOwogfTsKIApJbmRl
eDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjU5NzAzKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDQtMDggIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OOiBDU1MgYW5pbWF0
aW9ucyBpbnNpZGUgYW4gZW1iZWRkZWQgU1ZHIGltYWdlIGRvIG5vdCBhbmltYXRlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDkzNzAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN2Zy9hbmltYXRpb25z
L2Nzcy1hbmltYXRpb24tYmFja2dyb3VuZC1zdmctZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAg
ICAgICogc3ZnL2FuaW1hdGlvbnMvY3NzLWFuaW1hdGlvbi1iYWNrZ3JvdW5kLXN2Zy5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBzdmcvYW5pbWF0aW9ucy9jc3MtYW5pbWF0aW9uLWVtYmVkZGVkLXN2
Zy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvYW5pbWF0aW9ucy9jc3MtYW5p
bWF0aW9uLWVtYmVkZGVkLXN2Zy5odG1sOiBBZGRlZC4KKwogMjAyMC0wNC0wNyAgVHlsZXIgV2ls
Y29jayAgPHR3aWxjby5vQHByb3Rvbm1haWwuY29tPgogCiAgICAgICAgIFtjc3MtdmFsdWVzLTRd
IFN1cHBvcnQgZm9udC1yZWxhdGl2ZSBsaCBhbmQgcmxoIHVuaXQKSW5kZXg6IExheW91dFRlc3Rz
L3N2Zy9hbmltYXRpb25zL2Nzcy1hbmltYXRpb24tYmFja2dyb3VuZC1zdmctZXhwZWN0ZWQuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9jc3MtYW5pbWF0aW9u
LWJhY2tncm91bmQtc3ZnLWV4cGVjdGVkLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVz
dHMvc3ZnL2FuaW1hdGlvbnMvY3NzLWFuaW1hdGlvbi1iYWNrZ3JvdW5kLXN2Zy1leHBlY3RlZC5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKKzxzdHlsZT4KKyAgIAlpbWcgewor
ICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgfQorPC9z
dHlsZT4KKzxib2R5PgorICAgIDxpbWcgc3JjPSdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCwKKyAg
ICAgICAgPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgorICAgICAgICAg
ICAgPHJlY3Qgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0iZ3JlZW4iLz4KKyAgICAg
ICAgPC9zdmc+Jz4KKzwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL2Nz
cy1hbmltYXRpb24tYmFja2dyb3VuZC1zdmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9zdmcvYW5pbWF0aW9ucy9jc3MtYW5pbWF0aW9uLWJhY2tncm91bmQtc3ZnLmh0bWwJKG5vbmV4
aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvY3NzLWFuaW1hdGlvbi1iYWNr
Z3JvdW5kLXN2Zy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjQgQEAKKzxzdHlsZT4K
KyAgICAuYm94IHsKKyAgICAgICAgYmFja2dyb3VuZDogdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7
YmFzZTY0LFBITjJaeUI0Yld4dWN6MGlhSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZNakF3TUM5emRt
Y2lQZ29nSUNBZ0lDQWdJQ0FnSUNBOGMzUjViR1UrQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JBYTJW
NVpuSmhiV1Z6SUdaaFpHVnBiaUI3Q2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1puSnZiU0I3
SUc5d1lXTnBkSGs2TURzZ2ZRb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSFJ2SUhzZ2IzQmhZ
MmwwZVRveE95QjlDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lD
QWpaM0psWlc0Z2V5QUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JoYm1sdFlYUnBiMjQ2SUda
aFpHVnBiaUF4Tm0xek93b2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZRb2dJQ0FnSUNBZ0lDQWdJQ0E4
TDNOMGVXeGxQZ29nSUNBZ0lDQWdJQ0FnSUNBOGNtVmpkQ0IzYVdSMGFEMGlNVEF3SlNJZ2FHVnBa
MmgwUFNJeE1EQWxJaUJtYVd4c1BTSnlaV1FpTHo0S0lDQWdJQ0FnSUNBZ0lDQWdQSEpsWTNRZ2FX
UTlJbWR5WldWdUlpQjNhV1IwYUQwaU1UQXdKU0lnYUdWcFoyaDBQU0l4TURBbElpQm1hV3hzUFNK
bmNtVmxiaUl2UGdvZ0lDQWdJQ0FnSUR3dmMzWm5QZz09Iik7CisgICAgICAgIHdpZHRoOiAxMDBw
eDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICB9Cis8L3N0eWxlPgorPGJvZHk+CisgICAg
PGRpdiBjbGFzcz0iYm94Ij48L2Rpdj4KKyAgICA8c2NyaXB0PgorICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKwor
ICAgICAgICB2YXIgckFGQ291bnQgPSAwOworICAgICAgICBmdW5jdGlvbiBhbmltYXRlKHRpbWVz
dGFtcCkgeworICAgICAgICAgICAgaWYgKCsrckFGQ291bnQgPCAxMCkKKyAgICAgICAgICAgICAg
ICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGFuaW1hdGUpOworICAgICAgICAgICAgZWxz
ZSBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7CisgICAgICAgIH0KKworICAgICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZy
YW1lKGFuaW1hdGUpOworICAgIDwvc2NyaXB0PgorPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMv
c3ZnL2FuaW1hdGlvbnMvY3NzLWFuaW1hdGlvbi1lbWJlZGRlZC1zdmctZXhwZWN0ZWQuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9jc3MtYW5pbWF0aW9uLWVt
YmVkZGVkLXN2Zy1leHBlY3RlZC5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL3N2
Zy9hbmltYXRpb25zL2Nzcy1hbmltYXRpb24tZW1iZWRkZWQtc3ZnLWV4cGVjdGVkLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxMiBAQAorPHN0eWxlPgorICAgCWltZyB7CisgICAgICAg
IHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICB9Cis8L3N0eWxlPgor
PGJvZHk+CisgICAgPGltZyBzcmM9J2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LAorICAgICAgICA8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CisgICAgICAgICAgICA8cmVj
dCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJncmVlbiIvPgorICAgICAgICA8L3N2
Zz4nPgorPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvY3NzLWFuaW1h
dGlvbi1lbWJlZGRlZC1zdmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvYW5p
bWF0aW9ucy9jc3MtYW5pbWF0aW9uLWVtYmVkZGVkLXN2Zy5odG1sCShub25leGlzdGVudCkKKysr
IExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL2Nzcy1hbmltYXRpb24tZW1iZWRkZWQtc3ZnLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNiBAQAorPHN0eWxlPgorICAgIGltZyB7Cisg
ICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICB9Cis8L3N0
eWxlPgorPGJvZHk+CisgICAgPGltZyBzcmM9J2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LAorICAg
ICAgICA8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CisgICAgICAgICAg
ICA8c3R5bGU+CisgICAgICAgICAgICAgICAgQGtleWZyYW1lcyBmYWRlaW4geworICAgICAgICAg
ICAgICAgICAgICBmcm9tIHsgb3BhY2l0eTowOyB9CisgICAgICAgICAgICAgICAgICAgIHRvIHsg
b3BhY2l0eToxOyB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICNncmVlbiB7
IAorICAgICAgICAgICAgICAgICAgICBhbmltYXRpb246IGZhZGVpbiAxNm1zOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIDwvc3R5bGU+CisgICAgICAgICAgICA8cmVjdCB3aWR0aD0i
MTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJyZWQiLz4KKyAgICAgICAgICAgIDxyZWN0IGlkPSJn
cmVlbiIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0iZ3JlZW4iLz4KKyAgICAgICAg
PC9zdmc+Jz4KKyAgICA8c2NyaXB0PgorICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworICAgICAgICB2YXIgckFG
Q291bnQgPSAwOworICAgICAgICBmdW5jdGlvbiBhbmltYXRlKHRpbWVzdGFtcCkgeworICAgICAg
ICAgICAgaWYgKCsrckFGQ291bnQgPCAxMCkKKyAgICAgICAgICAgICAgICB3aW5kb3cucmVxdWVz
dEFuaW1hdGlvbkZyYW1lKGFuaW1hdGUpOworICAgICAgICAgICAgZWxzZSBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAg
ICAgIH0KKworICAgICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGFuaW1hdGUpOwor
ICAgIDwvc2NyaXB0PgorPC9ib2R5Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395907</attachid>
            <date>2020-04-08 21:10:31 -0700</date>
            <delta_ts>2020-04-09 12:03:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209370-20200408211031.patch</filename>
            <type>text/plain</type>
            <size>27300</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1OTc3OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc5IEBACisyMDIwLTA0LTA4ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lP
TjogQ1NTIGFuaW1hdGlvbnMgaW5zaWRlIGFuIGVtYmVkZGVkIFNWRyBpbWFnZSBkbyBub3QgYW5p
bWF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5
MzcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSWYg
V2ViQW5pbWF0aW9uIGlzIGVuYWJsZWQgYW5kIHRoZSBTVkdJbWFnZSBpbmNsdWRlcyBDU1MgYW5p
bWF0aW9ucywgdGhlCisgICAgICAgIERvY3VtZW50VGltZWxpbmUgaXMgYWRkZWQgdG8gdGhlIFNW
R0RvY3VtZW50IG9mIHRoZSBlbWJlZGRlZCBTVkdJbWFnZS4KKyAgICAgICAgQmVjYXVzZSB0aGUg
U1ZHSW1hZ2UgaGFzIGl0cyBvd24gUGFnZSB0aGUgUmVuZGVyaW5nVXBkYXRlIGlzIHNjaGVkdWxl
ZAorICAgICAgICBhbmQgdGhlIHVwZGF0ZVJlbmRlcmluZyBzdGVwcyBydW4gaW4gdGhpcyBQYWdl
LgorCisgICAgICAgIFRoZSBQYWdlIG9mIHRoZSBTVkdJbWFnZSBpcyBpbmFjdGl2ZSBzdWNoIHRo
YXQgc2NoZWR1bGluZyBSZW5kZXJpbmdVcGRhdGUKKyAgICAgICAgZmFpbHM7IHRoZXJlZm9yZSB0
aGUgdXBkYXRlUmVuZGVyaW5nIHN0ZXBzIG5ldmVyIHJ1biBhbmQgdGhlIENTUyBhbmltYXRpb24K
KyAgICAgICAgbmV2ZXIgYWR2YW5jZXMuCisKKyAgICAgICAgVGhlIGZpeCBpczoKKworICAgICAg
ICAxKSBTY2hlZHVsaW5nIHRoZSBSZW5kZXJpbmdVcGRhdGU6IFRoaXMgaGFzIHRvIGhhcHBlbiBp
biB0aGUgUGFnZSB3aGljaAorICAgICAgICAgICBjb250YWlucyB0aGUgcmVuZGVyZXIgb2YgdGhl
IFNWR0ltYWdlLiBCZWNhdXNlIERvY3VtZW50VGltZWxpbmUgaXMKKyAgICAgICAgICAgYWRkZWQg
dG8gU1ZHRG9jdW1lbnQsIHRoaXMgc2NoZWR1bGluZyB3aWxsIGdvIHRocm91Z2ggdGhlc2UgaHVi
czoKKyAgICAgICAgICAgICAgICAtIERvY3VtZW50VGltZWxpbmUKKyAgICAgICAgICAgICAgICAt
IFBhZ2UKKyAgICAgICAgICAgICAgICAtIENocm9tZUNsaWVudCAtPiBTVkdJbWFnZUNocm9tZUNs
aWVudCAKKyAgICAgICAgICAgICAgICAtIFNWR0ltYWdlCisgICAgICAgICAgICAgICAgLSBJbWFn
ZU9ic2VydmVyIC0+IENhY2hlZEltYWdlT2JzZXJ2ZXIKKyAgICAgICAgICAgICAgICAtIENhY2hl
ZEltYWdlCisgICAgICAgICAgICAgICAgLSBDYWNoZWRJbWFnZUNsaWVudCAtPiBSZW5kZXJFbGVt
ZW50CisgICAgICAgICAgICAgICAgLSBQYWdlCisKKyAgICAgICAgMikgUnVubmluZyB0aGUgdXBk
YXRlUmVuZGVyaW5nIHN0ZXBzOiBFYWNoIGRvY3VtZW50IGluIHRoZSBQYWdlIHdpbGwKKyAgICAg
ICAgICAgZW51bWVyYXRlIGl0cyBjYWNoZWQgU1ZHSW1hZ2VzLiBUaGUgdXBkYXRlUmVuZGVyaW5n
IG9mIHRoZSBQYWdlIG9mCisgICAgICAgICAgIGVhY2ggU1ZHSW1hZ2Ugd2lsbCBiZSBjYWxsZWQu
CisKKyAgICAgICAgVG8gbWFrZSBlbnVtZXJhdGluZyB0aGUgY2FjaGVkIFNWR0ltYWdlcyBvZiBh
IERvY3VtZW50IGZhc3RlciwgdGhlIFVSTAorICAgICAgICBvZiB0aGUgY2FjaGVkIFNWR0ltYWdl
IHdpbGwgYmUgYWRkZWQgdG8gdGhlIGNhY2hlZFNWR0ltYWdlc1VSTHMgb2YKKyAgICAgICAgQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIgd2hlbiBub3RpZnlGaW5pc2hlZCgpIGlzIGNhbGxlZCBmb3IgYXNz
b2NpYXRlZAorICAgICAgICBDYWNoZWRJbWFnZS4KKworICAgICAgICBUZXN0czogc3ZnL2FuaW1h
dGlvbnMvY3NzLWFuaW1hdGlvbi1iYWNrZ3JvdW5kLXN2Zy5odG1sCisgICAgICAgICAgICAgICBz
dmcvYW5pbWF0aW9ucy9jc3MtYW5pbWF0aW9uLWVtYmVkZGVkLXN2Zy5odG1sCisgICAgICAgICAg
ICAgICBzdmcvYW5pbWF0aW9ucy9jc3MtYW5pbWF0aW9uLWhvdmVyLXN2Zy5odG1sCisKKyAgICAg
ICAgKiBhbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudFRpbWVsaW5lOjpzY2hlZHVsZUFuaW1hdGlvblJlc29sdXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZTo6dXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHMp
OgorICAgICAgICAqIGh0bWwvSW1hZ2VCaXRtYXAuY3BwOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6aGFzU1ZH
SW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OkNhY2hlZEltYWdl
T2JzZXJ2ZXI6OnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkSW1hZ2U6OnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRJbWFnZUNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2VDbGllbnQ6OnNj
aGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1NWR0ltYWdlQ2FjaGVk
UmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Y2FjaGVkUmVzb3VyY2VTVkdJbWFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6IGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpzY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKToK
KyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2NoZWR1
bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp1cGRhdGVS
ZW5kZXJpbmcpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpzY2hlZHVsZVRpbWVkUmVuZGVyaW5n
VXBkYXRlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFn
ZTo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5oOgor
ICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUNsaWVudHMuaDoKKwogMjAyMC0wNC0wOCAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIHF1ZXJ5U2VsZWN0b3Io
IiNcdTAwMDAiKSBzaG91bGQgbWF0Y2ggYW4gZWxlbWVudCB3aXRoIElEIFUrRkZGRApJbmRleDog
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmNwcAkocmV2aXNp
b24gMjU5NzAzKQorKysgU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzksNyArMzM5LDcgQEAgdm9pZCBEb2N1bWVudFRpbWVs
aW5lOjpzY2hlZHVsZUFuaW1hdGlvbgogICAgIGlmICghc2hvdWxkUnVuVXBkYXRlQW5pbWF0aW9u
c0FuZFNlbmRFdmVudHNJZ25vcmluZ1N1c3BlbnNpb25TdGF0ZSgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBtX2RvY3VtZW50LT5wYWdlKCktPnJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcigpLnNj
aGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICBtX2RvY3VtZW50LT5wYWdlKCktPnNj
aGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKTsKICAgICBtX2FuaW1hdGlvblJlc29sdXRpb25T
Y2hlZHVsZWQgPSB0cnVlOwogfQogCkBAIC0zNjQsNyArMzY0LDYgQEAgdm9pZCBEb2N1bWVudFRp
bWVsaW5lOjp1cGRhdGVDdXJyZW50VGltZQogCiB2b2lkIERvY3VtZW50VGltZWxpbmU6OnVwZGF0
ZUFuaW1hdGlvbnNBbmRTZW5kRXZlbnRzKCkKIHsKLQogICAgIC8vIFVwZGF0aW5nIGFuaW1hdGlv
bnMgYW5kIHNlbmRpbmcgZXZlbnRzIG1heSBpbnZhbGlkYXRlIHRoZSB0aW1pbmcgb2Ygc29tZSBh
bmltYXRpb25zLCBzbyB3ZSBtdXN0IHNldCB0aGUgbV9hbmltYXRpb25SZXNvbHV0aW9uU2NoZWR1
bGVkCiAgICAgLy8gZmxhZyB0byBmYWxzZSBwcmlvciB0byBydW5uaW5nIHRoYXQgcHJvY2VkdXJl
IHRvIGFsbG93IGFuaW1hdGlvbiB3aXRoIHRpbWluZyBtb2RlbCB1cGRhdGVzIHRvIHNjaGVkdWxl
IHVwZGF0ZXMuCiAgICAgbV9hbmltYXRpb25SZXNvbHV0aW9uU2NoZWR1bGVkID0gZmFsc2U7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcAkocmV2aXNpb24gMjU5NzAzKQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUy
OCw2ICs1MjgsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBjYW5EZXN0cm95RGVjb2RlZERhdGEoY29u
c3QgSW1hZ2UmKSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBpbWFnZUZyYW1l
QXZhaWxhYmxlKGNvbnN0IEltYWdlJiwgSW1hZ2VBbmltYXRpbmdTdGF0ZSwgY29uc3QgSW50UmVj
dCogPSBudWxscHRyLCBEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkKSBv
dmVycmlkZSB7IH0KICAgICB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2UmLCBjb25zdCBJ
bnRSZWN0KiA9IG51bGxwdHIpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgc2NoZWR1bGVUaW1lZFJl
bmRlcmluZ1VwZGF0ZShjb25zdCBJbWFnZSYpIG92ZXJyaWRlIHsgfQogCiBwcml2YXRlOgogICAg
IEltYWdlQml0bWFwSW1hZ2VPYnNlcnZlcihTdHJpbmcgbWltZVR5cGUsIGxvbmcgbG9uZyBleHBl
Y3RlZENvbnRlbnRMZW5ndGgsIGNvbnN0IFVSTCYgc291cmNlVXJsKQpJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCShyZXZpc2lvbiAyNTk3MDMpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNjgsNiArMjY4LDExIEBAIEltYWdlKiBDYWNoZWRJbWFnZTo6aW1hZ2VGb3JSZW5k
ZXJlcihjb24KICAgICByZXR1cm4gbV9pbWFnZS5nZXQoKTsKIH0KIAorYm9vbCBDYWNoZWRJbWFn
ZTo6aGFzU1ZHSW1hZ2UoKSBjb25zdAoreworICAgIHJldHVybiBtX2ltYWdlICYmIG1faW1hZ2Ut
PmlzU1ZHSW1hZ2UoKTsKK30KKwogdm9pZCBDYWNoZWRJbWFnZTo6c2V0Q29udGFpbmVyQ29udGV4
dEZvckNsaWVudChjb25zdCBDYWNoZWRJbWFnZUNsaWVudCYgY2xpZW50LCBjb25zdCBMYXlvdXRT
aXplJiBjb250YWluZXJTaXplLCBmbG9hdCBjb250YWluZXJab29tLCBjb25zdCBVUkwmIGltYWdl
VVJMKQogewogICAgIGlmIChjb250YWluZXJTaXplLmlzRW1wdHkoKSkKQEAgLTQzNCw2ICs0Mzks
MTIgQEAgdm9pZCBDYWNoZWRJbWFnZTo6Q2FjaGVkSW1hZ2VPYnNlcnZlcjo6YwogICAgICAgICBj
YWNoZWRJbWFnZS0+Y2hhbmdlZEluUmVjdChpbWFnZSwgcmVjdCk7CiB9CiAKK3ZvaWQgQ2FjaGVk
SW1hZ2U6OkNhY2hlZEltYWdlT2JzZXJ2ZXI6OnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUo
Y29uc3QgSW1hZ2UmIGltYWdlKQoreworICAgIGZvciAoYXV0byBjYWNoZWRJbWFnZSA6IG1fY2Fj
aGVkSW1hZ2VzKQorICAgICAgICBjYWNoZWRJbWFnZS0+c2NoZWR1bGVUaW1lZFJlbmRlcmluZ1Vw
ZGF0ZShpbWFnZSk7Cit9CisKIGlubGluZSB2b2lkIENhY2hlZEltYWdlOjpjbGVhckltYWdlKCkK
IHsKICAgICBpZiAoIW1faW1hZ2UpCkBAIC02ODQsNiArNjk1LDE2IEBAIHZvaWQgQ2FjaGVkSW1h
Z2U6OmNoYW5nZWRJblJlY3QoY29uc3QgSW0KICAgICBub3RpZnlPYnNlcnZlcnMocmVjdCk7CiB9
CiAKK3ZvaWQgQ2FjaGVkSW1hZ2U6OnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoY29uc3Qg
SW1hZ2UmIGltYWdlKQoreworICAgIGlmICgmaW1hZ2UgIT0gbV9pbWFnZSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkSW1hZ2VDbGllbnQ+
IHdhbGtlcihtX2NsaWVudHMpOworICAgIHdoaWxlIChhdXRvKiBjbGllbnQgPSB3YWxrZXIubmV4
dCgpKQorICAgICAgICBjbGllbnQtPnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKTsKK30K
KwogYm9vbCBDYWNoZWRJbWFnZTo6Y3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKGNvbnN0IFJl
bmRlckVsZW1lbnQqIHJlbmRlcmVyKQogewogICAgIEltYWdlKiBpbWFnZSA9IGltYWdlRm9yUmVu
ZGVyZXIocmVuZGVyZXIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEltYWdlLmgJKHJldmlzaW9uIDI1OTcwMykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1Niw3IEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZSogaW1hZ2UoKTsgLy8gUmV0dXJucyB0aGUgbnVsbElt
YWdlKCkgaWYgdGhlIGltYWdlIGlzIG5vdCBhdmFpbGFibGUgeWV0LgogICAgIFdFQkNPUkVfRVhQ
T1JUIEltYWdlKiBpbWFnZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCopOyAvLyBSZXR1
cm5zIHRoZSBudWxsSW1hZ2UoKSBpZiB0aGUgaW1hZ2UgaXMgbm90IGF2YWlsYWJsZSB5ZXQuCiAg
ICAgYm9vbCBoYXNJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UuZ2V0KCk7IH0KKyAgICBi
b29sIGhhc1NWR0ltYWdlKCkgY29uc3Q7CiAgICAgYm9vbCBjdXJyZW50RnJhbWVLbm93blRvQmVP
cGFxdWUoY29uc3QgUmVuZGVyRWxlbWVudCopOwogCiAgICAgc3RkOjpwYWlyPEltYWdlKiwgZmxv
YXQ+IGJyb2tlbkltYWdlKGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKSBjb25zdDsgLy8gUmV0dXJu
cyBhbiBpbWFnZSBhbmQgdGhlIGltYWdlJ3MgcmVzb2x1dGlvbiBzY2FsZSBmYWN0b3IuCkBAIC0x
NTIsNiArMTUzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBjYW5EZXN0cm95RGVjb2RlZERh
dGEoY29uc3QgSW1hZ2UmKSBmaW5hbDsKICAgICAgICAgdm9pZCBpbWFnZUZyYW1lQXZhaWxhYmxl
KGNvbnN0IEltYWdlJiwgSW1hZ2VBbmltYXRpbmdTdGF0ZSwgY29uc3QgSW50UmVjdCogY2hhbmdl
UmVjdCA9IG51bGxwdHIsIERlY29kaW5nU3RhdHVzID0gRGVjb2RpbmdTdGF0dXM6OkludmFsaWQp
IGZpbmFsOwogICAgICAgICB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2UmLCBjb25zdCBJ
bnRSZWN0KikgZmluYWw7CisgICAgICAgIHZvaWQgc2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0
ZShjb25zdCBJbWFnZSYpIGZpbmFsOwogCiAgICAgICAgIEhhc2hTZXQ8Q2FjaGVkSW1hZ2UqPiBt
X2NhY2hlZEltYWdlczsKICAgICB9OwpAQCAtMTYyLDYgKzE2NCw3IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBjYW5EZXN0cm95RGVjb2RlZERhdGEoY29uc3QgSW1hZ2UmKTsKICAgICB2b2lkIGltYWdl
RnJhbWVBdmFpbGFibGUoY29uc3QgSW1hZ2UmLCBJbWFnZUFuaW1hdGluZ1N0YXRlLCBjb25zdCBJ
bnRSZWN0KiBjaGFuZ2VSZWN0ID0gbnVsbHB0ciwgRGVjb2RpbmdTdGF0dXMgPSBEZWNvZGluZ1N0
YXR1czo6SW52YWxpZCk7CiAgICAgdm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiwgY29u
c3QgSW50UmVjdCopOworICAgIHZvaWQgc2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZShjb25z
dCBJbWFnZSYpOwogCiAgICAgdm9pZCB1cGRhdGVCdWZmZXJJbnRlcm5hbChTaGFyZWRCdWZmZXIm
KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlQ2xpZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
Q2xpZW50LmgJKHJldmlzaW9uIDI1OTcwMykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw4IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIFZpc2libGVJblZpZXdwb3J0U3RhdGUgaW1hZ2VGcmFtZUF2YWls
YWJsZShDYWNoZWRJbWFnZSYgaW1hZ2UsIEltYWdlQW5pbWF0aW5nU3RhdGUsIGNvbnN0IEludFJl
Y3QqIGNoYW5nZVJlY3QpIHsgaW1hZ2VDaGFuZ2VkKCZpbWFnZSwgY2hhbmdlUmVjdCk7IHJldHVy
biBWaXNpYmxlSW5WaWV3cG9ydFN0YXRlOjpObzsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRpZFJl
bW92ZUNhY2hlZEltYWdlQ2xpZW50KENhY2hlZEltYWdlJikgeyB9CisKKyAgICB2aXJ0dWFsIHZv
aWQgc2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSgpIHsgfQogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyNTk3MDMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02OSw2ICs2OSw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VUaW1pbmcuaCIKICNpbmNsdWRl
ICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZl
YXR1cmVzLmgiCisjaW5jbHVkZSAiU1ZHSW1hZ2UuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9s
bGVyLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZWN1cml0eVBv
bGljeS5oIgpAQCAtNzg4LDYgKzc4OSwyMCBAQCBzdGF0aWMgRmV0Y2hPcHRpb25zOjpEZXN0aW5h
dGlvbiBkZXN0aW5hCiAgICAgcmV0dXJuIEZldGNoT3B0aW9uczo6RGVzdGluYXRpb246OkVtcHR5
U3RyaW5nOwogfQogCitzdGF0aWMgaW5saW5lIGJvb2wgaXNTVkdJbWFnZUNhY2hlZFJlc291cmNl
KGNvbnN0IENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKK3sKKyAgICBpZiAoIXJlc291cmNlIHx8
ICFpczxDYWNoZWRJbWFnZT4oKnJlc291cmNlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IHJldHVybiBkb3duY2FzdDxDYWNoZWRJbWFnZT4oKnJlc291cmNlKS5oYXNTVkdJbWFnZSgpOwor
fQorCitzdGF0aWMgaW5saW5lIFNWR0ltYWdlKiBjYWNoZWRSZXNvdXJjZVNWR0ltYWdlKENhY2hl
ZFJlc291cmNlKiByZXNvdXJjZSkKK3sKKyAgICBpZiAoIWlzU1ZHSW1hZ2VDYWNoZWRSZXNvdXJj
ZShyZXNvdXJjZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBkb3duY2Fz
dDxTVkdJbWFnZT4oZG93bmNhc3Q8Q2FjaGVkSW1hZ2U+KCpyZXNvdXJjZSkuaW1hZ2UoKSk7Cit9
CisKIFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4+
IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5
cGUgdHlwZSwgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgRm9yUHJlbG9hZCBmb3JQ
cmVsb2FkLCBJbWFnZUxvYWRpbmcgaW1hZ2VMb2FkaW5nKQogewogICAgIGlmICghZnJhbWUoKSB8
fCAhZnJhbWUoKS0+cGFnZSgpKSB7CkBAIC0xNDAxLDYgKzE0MTYsMjUgQEAgdm9pZCBDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6ZGVjcmVtZW50UmVxdQogICAgIEFTU0VSVChtX3JlcXVlc3RDb3VudCA+
IC0xKTsKIH0KIAordm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoY29u
c3QgQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQoreworICAgIGlmIChpc1NWR0ltYWdlQ2FjaGVk
UmVzb3VyY2UoJnJlc291cmNlKSkKKyAgICAgICAgbV9jYWNoZWRTVkdJbWFnZXNVUkxzLmFkZChy
ZXNvdXJjZS51cmwoKSk7Cit9CisKK1ZlY3RvcjxTVkdJbWFnZSo+IENhY2hlZFJlc291cmNlTG9h
ZGVyOjphbGxDYWNoZWRTVkdJbWFnZXMoKSBjb25zdAoreworICAgIFZlY3RvcjxTVkdJbWFnZSo+
IGFsbENhY2hlZFNWR0ltYWdlczsKKworICAgIGZvciAoYXV0byYgY2FjaGVkU1ZHSW1hZ2VVUkwg
OiBtX2NhY2hlZFNWR0ltYWdlc1VSTHMpIHsKKyAgICAgICAgYXV0byogcmVzb3VyY2UgPSBjYWNo
ZWRSZXNvdXJjZShjYWNoZWRTVkdJbWFnZVVSTCk7CisgICAgICAgIGlmIChhdXRvKiBpbWFnZSA9
IGNhY2hlZFJlc291cmNlU1ZHSW1hZ2UocmVzb3VyY2UpKQorICAgICAgICAgICAgYWxsQ2FjaGVk
U1ZHSW1hZ2VzLmFwcGVuZChpbWFnZSk7CisgICAgfQorICAgICAgICAKKyAgICByZXR1cm4gYWxs
Q2FjaGVkU1ZHSW1hZ2VzOworfQorCiBSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5k
bGU8Q2FjaGVkUmVzb3VyY2U+PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cHJlbG9hZChDYWNoZWRS
ZXNvdXJjZTo6VHlwZSB0eXBlLCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQogewog
ICAgIGlmIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnRlcmNlcHRSZXF1ZXN0KGZy
YW1lKCksIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkpKQpJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDI1
OTcwMykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw2ICs1Nyw3IEBAIGNsYXNzIERvY3VtZW50TG9hZGVy
OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBJbWFnZUxvYWRlcjsKIGNsYXNzIFBhZ2U7CitjbGFzcyBT
VkdJbWFnZTsKIGNsYXNzIFNldHRpbmdzOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KQEAgLTEx
Niw2ICsxMTcsOSBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgQ2FjaGVk
UmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+PiBEb2N1bWVudFJlc291cmNlTWFwOwogICAg
IGNvbnN0IERvY3VtZW50UmVzb3VyY2VNYXAmIGFsbENhY2hlZFJlc291cmNlcygpIGNvbnN0IHsg
cmV0dXJuIG1fZG9jdW1lbnRSZXNvdXJjZXM7IH0KIAorICAgIHZvaWQgbm90aWZ5RmluaXNoZWQo
Y29uc3QgQ2FjaGVkUmVzb3VyY2UmKTsKKyAgICBWZWN0b3I8U1ZHSW1hZ2UqPiBhbGxDYWNoZWRT
VkdJbWFnZXMoKSBjb25zdDsKKwogICAgIGJvb2wgYXV0b0xvYWRJbWFnZXMoKSBjb25zdCB7IHJl
dHVybiBtX2F1dG9Mb2FkSW1hZ2VzOyB9CiAgICAgdm9pZCBzZXRBdXRvTG9hZEltYWdlcyhib29s
KTsKIApAQCAtMTkzLDYgKzE5Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBjYW5SZXF1ZXN0SW5D
b250ZW50RGlzcG9zaXRpb25BdHRhY2htZW50U2FuZGJveChDYWNoZWRSZXNvdXJjZTo6VHlwZSwg
Y29uc3QgVVJMJikgY29uc3Q7CiAKICAgICBIYXNoU2V0PFN0cmluZz4gbV92YWxpZGF0ZWRVUkxz
OworICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2NhY2hlZFNWR0ltYWdlc1VSTHM7CiAgICAgbXV0YWJs
ZSBEb2N1bWVudFJlc291cmNlTWFwIG1fZG9jdW1lbnRSZXNvdXJjZXM7CiAgICAgV2Vha1B0cjxE
b2N1bWVudD4gbV9kb2N1bWVudDsKICAgICBEb2N1bWVudExvYWRlciogbV9kb2N1bWVudExvYWRl
cjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkocmV2aXNpb24gMjU5NzAzKQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MzE2LDYgKzMxNiw3IEBAIHB1YmxpYzoKICAgICAvLyBTZXRzIGEgZmxhZyB0byBzcGVjaWZ5IHRo
YXQgdGhlIHZpZXcgbmVlZHMgdG8gYmUgdXBkYXRlZCwgc28gd2UgbmVlZAogICAgIC8vIHRvIGRv
IGFuIGVhZ2VyIGxheW91dCBiZWZvcmUgdGhlIGRyYXdpbmcuCiAgICAgdmlydHVhbCB2b2lkIHNj
aGVkdWxlUmVuZGVyaW5nVXBkYXRlKCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzY2hlZHVsZVRp
bWVkUmVuZGVyaW5nVXBkYXRlKCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wg
bmVlZHNJbW1lZGlhdGVSZW5kZXJpbmdVcGRhdGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
ICAgIC8vIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIGNsaWVudCBjYW4gcmVuZGVyIHRoZSBj
b21wb3NpdGVkIGxheWVyLAogICAgIC8vIHJlZ2FyZGxlc3Mgb2YgdGhlIHNldHRpbmdzLgpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lvbiAyNTk3MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAi
QmFja0ZvcndhcmRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiQ1NTQW5pbWF0aW9uQ29udHJvbGxl
ci5oIgogI2luY2x1ZGUgIkNhY2hlU3RvcmFnZVByb3ZpZGVyLmgiCisjaW5jbHVkZSAiQ2FjaGVk
UmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJDaHJvbWVD
bGllbnQuaCIKICNpbmNsdWRlICJDb25zdGFudFByb3BlcnR5TWFwLmgiCkBAIC0xMDQsNiArMTA1
LDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZVVzYWdlT3ZlcmxheS5oIgogI2luY2x1ZGUgIlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTVkdEb2N1bWVudEV4dGVuc2lvbnMuaCIK
KyNpbmNsdWRlICJTVkdJbWFnZS5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNp
bmNsdWRlICJTY3JpcHREaXNhbGxvd2VkU2NvcGUuaCIKICNpbmNsdWRlICJTY3JpcHRlZEFuaW1h
dGlvbkNvbnRyb2xsZXIuaCIKQEAgLTEzMDUsNiArMTMwNywxMyBAQCB2b2lkIFBhZ2U6OnNjaGVk
dWxlUmVuZGVyaW5nVXBkYXRlKCkKICAgICByZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIoKS5zY2hl
ZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOwogfQogCit2b2lkIFBhZ2U6OnNjaGVkdWxlVGltZWRSZW5k
ZXJpbmdVcGRhdGUoKQoreworICAgIGlmIChjaHJvbWUoKS5jbGllbnQoKS5zY2hlZHVsZVRpbWVk
UmVuZGVyaW5nVXBkYXRlKCkpCisgICAgICAgIHJldHVybjsKKyAgICByZW5kZXJpbmdVcGRhdGVT
Y2hlZHVsZXIoKS5zY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCk7Cit9CisKIC8vIGh0dHBz
Oi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3dlYmFwcGFwaXMuaHRtbCN1cGRhdGUt
dGhlLXJlbmRlcmluZwogdm9pZCBQYWdlOjp1cGRhdGVSZW5kZXJpbmcoKQogewpAQCAtMTM1Nyw2
ICsxMzY2LDEzIEBAIHZvaWQgUGFnZTo6dXBkYXRlUmVuZGVyaW5nKCkKICAgICB9KTsKICNlbmRp
ZgogCisgICAgZm9yRWFjaERvY3VtZW50KFtdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsKKyAgICAg
ICAgZm9yIChhdXRvKiBpbWFnZSA6IGRvY3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCkuYWxs
Q2FjaGVkU1ZHSW1hZ2VzKCkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBwYWdlID0gaW1hZ2Ut
PnBhZ2UoKSkKKyAgICAgICAgICAgICAgICBwYWdlLT51cGRhdGVSZW5kZXJpbmcoKTsKKyAgICAg
ICAgfQorICAgIH0pOworCiAgICAgbGF5b3V0SWZOZWVkZWQoKTsKICAgICBkb0FmdGVyVXBkYXRl
UmVuZGVyaW5nKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkocmV2aXNpb24gMjU5NzAzKQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3OCw2ICs0Nzgs
NyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVSZW5kZXJpbmcoKTsK
ICAgICAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCk7
CisgICAgdm9pZCBzY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCk7CiAKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHN1c3BlbmRTY3JpcHRlZEFuaW1hdGlvbnMoKTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHJlc3VtZVNjcmlwdGVkQW5pbWF0aW9ucygpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPYnNlcnZlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT2JzZXJ2ZXIuaAkocmV2aXNpb24gMjU5
NzAzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPYnNlcnZlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJv
b2wgY2FuRGVzdHJveURlY29kZWREYXRhKGNvbnN0IEltYWdlJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBpbWFnZUZyYW1lQXZhaWxhYmxlKGNvbnN0IEltYWdlJiwgSW1hZ2VBbmltYXRpbmdTdGF0
ZSwgY29uc3QgSW50UmVjdCogY2hhbmdlUmVjdCA9IG51bGxwdHIsIERlY29kaW5nU3RhdHVzID0g
RGVjb2RpbmdTdGF0dXM6OkludmFsaWQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2hhbmdlZElu
UmVjdChjb25zdCBJbWFnZSYsIGNvbnN0IEludFJlY3QqIGNoYW5nZVJlY3QgPSBudWxscHRyKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoY29uc3Qg
SW1hZ2UmKSA9IDA7CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNTk3MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAK
ICNpbmNsdWRlICJSZW5kZXJFbGVtZW50LmgiCiAKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgi
CisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogI2luY2x1ZGUgIkNvbnRlbnRDaGFuZ2VPYnNlcnZlci5oIgogI2VuZGlmCkBAIC0xMzE4
LDEyICsxMzE5LDIzIEBAIFZpc2libGVJblZpZXdwb3J0U3RhdGUgUmVuZGVyRWxlbWVudDo6aW0K
ICAgICByZXR1cm4gaXNWaXNpYmxlID8gVmlzaWJsZUluVmlld3BvcnRTdGF0ZTo6WWVzIDogVmlz
aWJsZUluVmlld3BvcnRTdGF0ZTo6Tm87CiB9CiAKK3ZvaWQgUmVuZGVyRWxlbWVudDo6bm90aWZ5
RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQoreworICAgIGRvY3VtZW50KCkuY2Fj
aGVkUmVzb3VyY2VMb2FkZXIoKS5ub3RpZnlGaW5pc2hlZChyZXNvdXJjZSk7Cit9CisKIHZvaWQg
UmVuZGVyRWxlbWVudDo6ZGlkUmVtb3ZlQ2FjaGVkSW1hZ2VDbGllbnQoQ2FjaGVkSW1hZ2UmIGNh
Y2hlZEltYWdlKQogewogICAgIGlmIChoYXNQYXVzZWRJbWFnZUFuaW1hdGlvbnMoKSkKICAgICAg
ICAgdmlldygpLnJlbW92ZVJlbmRlcmVyV2l0aFBhdXNlZEltYWdlQW5pbWF0aW9ucygqdGhpcywg
Y2FjaGVkSW1hZ2UpOwogfQogCit2b2lkIFJlbmRlckVsZW1lbnQ6OnNjaGVkdWxlVGltZWRSZW5k
ZXJpbmdVcGRhdGUoKQoreworICAgIGlmIChhdXRvKiBwYWdlID0gZG9jdW1lbnQoKS5wYWdlKCkp
CisgICAgICAgIHBhZ2UtPnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKTsKK30KKwogYm9v
bCBSZW5kZXJFbGVtZW50OjpyZXBhaW50Rm9yUGF1c2VkSW1hZ2VBbmltYXRpb25zSWZOZWVkZWQo
Y29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QsIENhY2hlZEltYWdlJiBjYWNoZWRJbWFnZSkKIHsK
ICAgICBBU1NFUlQobV9oYXNQYXVzZWRJbWFnZUFuaW1hdGlvbnMpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCShyZXZpc2lvbiAyNTk3MDMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NjMsNiArMjYzLDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgaW5zZXJ0ZWRJbnRvVHJlZSgpIG92
ZXJyaWRlOwogICAgIHZvaWQgd2lsbEJlUmVtb3ZlZEZyb21UcmVlKCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCB3aWxsQmVEZXN0cm95ZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIG5vdGlmeUZpbmlzaGVk
KENhY2hlZFJlc291cmNlJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHNldFJlbmRlcklubGluZUFs
d2F5c0NyZWF0ZXNMaW5lQm94ZXMoYm9vbCBiKSB7IG1fcmVuZGVySW5saW5lQWx3YXlzQ3JlYXRl
c0xpbmVCb3hlcyA9IGI7IH0KICAgICBib29sIHJlbmRlcklubGluZUFsd2F5c0NyZWF0ZXNMaW5l
Qm94ZXMoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcklubGluZUFsd2F5c0NyZWF0ZXNMaW5lQm94
ZXM7IH0KQEAgLTMyMCw2ICszMjEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgY2FuRGVzdHJveURl
Y29kZWREYXRhKCkgZmluYWwgeyByZXR1cm4gIWlzVmlzaWJsZUluVmlld3BvcnQoKTsgfQogICAg
IFZpc2libGVJblZpZXdwb3J0U3RhdGUgaW1hZ2VGcmFtZUF2YWlsYWJsZShDYWNoZWRJbWFnZSYs
IEltYWdlQW5pbWF0aW5nU3RhdGUsIGNvbnN0IEludFJlY3QqIGNoYW5nZVJlY3QpIGZpbmFsOwog
ICAgIHZvaWQgZGlkUmVtb3ZlQ2FjaGVkSW1hZ2VDbGllbnQoQ2FjaGVkSW1hZ2UmKSBmaW5hbDsK
KyAgICB2b2lkIHNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKSBmaW5hbDsKIAogICAgIGJv
b2wgZ2V0TGVhZGluZ0Nvcm5lcihGbG9hdFBvaW50JiBvdXRwdXQsIGJvb2wmIGluc2lkZUZpeGVk
KSBjb25zdDsKICAgICBib29sIGdldFRyYWlsaW5nQ29ybmVyKEZsb2F0UG9pbnQmIG91dHB1dCwg
Ym9vbCYgaW5zaWRlRml4ZWQpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW1hZ2UuY3BwCShyZXZpc2lvbiAyNTk3MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTgsNiArNDE4LDggQEAg
dm9pZCBSZW5kZXJJbWFnZTo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUgogCiAgICAgaWYgKGlzPEhU
TUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQoKSkpCiAgICAgICAgIHBhZ2UoKS5kaWRGaW5pc2hMb2Fk
aW5nSW1hZ2VGb3JFbGVtZW50KGRvd25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+KCplbGVtZW50KCkp
KTsKKworICAgIFJlbmRlclJlcGxhY2VkOjpub3RpZnlGaW5pc2hlZChuZXdJbWFnZSk7CiB9CiAK
IHZvaWQgUmVuZGVySW1hZ2U6OnNldEltYWdlRGV2aWNlUGl4ZWxSYXRpbyhmbG9hdCBmYWN0b3Ip
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAkocmV2aXNpb24gMjU5
NzAzKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY4LDYgKzY4LDggQEAgcHVibGljOgogI2lmIFVTRShESVJFQ1QyRCkKICAgICBO
YXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0
cikgZmluYWw7CiAjZW5kaWYKKyAgICAKKyAgICBQYWdlKiBwYWdlKCkgeyByZXR1cm4gbV9wYWdl
LmdldCgpOyB9CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFNWR0ltYWdlQ2hyb21lQ2xp
ZW50OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2xpZW50cy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNsaWVu
dHMuaAkocmV2aXNpb24gMjU5NzAzKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlQ2xpZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2MiwxNCBAQCBwcml2YXRl
OgogCiAgICAgICAgIGltYWdlT2JzZXJ2ZXItPmltYWdlRnJhbWVBdmFpbGFibGUoKm1faW1hZ2Us
IG1faW1hZ2UtPmlzQW5pbWF0aW5nKCkgPyBJbWFnZUFuaW1hdGluZ1N0YXRlOjpZZXMgOiBJbWFn
ZUFuaW1hdGluZ1N0YXRlOjpObywgJnIpOwogICAgIH0KLSAgICAKKworICAgIGJvb2wgc2NoZWR1
bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSgpIGZpbmFsCisgICAgeworICAgICAgICBpZiAobV9pbWFn
ZSAmJiBtX2ltYWdlLT5pbWFnZU9ic2VydmVyKCkpCisgICAgICAgICAgICBtX2ltYWdlLT5pbWFn
ZU9ic2VydmVyKCktPnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKm1faW1hZ2UpOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICBTVkdJbWFnZSogbV9pbWFnZTsKIH07CiAK
SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDI1OTcwMykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDIwLTA0LTA4ICBTYWlkIEFib3UtSGFsbGF3
YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTjogQ1NTIGFu
aW1hdGlvbnMgaW5zaWRlIGFuIGVtYmVkZGVkIFNWRyBpbWFnZSBkbyBub3QgYW5pbWF0ZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5MzcwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdmcvYW5pbWF0
aW9ucy9jc3MtYW5pbWF0aW9uLWJhY2tncm91bmQtc3ZnLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIHN2Zy9hbmltYXRpb25zL2Nzcy1hbmltYXRpb24tYmFja2dyb3VuZC1zdmcuaHRt
bDogQWRkZWQuCisgICAgICAgICogc3ZnL2FuaW1hdGlvbnMvY3NzLWFuaW1hdGlvbi1lbWJlZGRl
ZC1zdmctZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogc3ZnL2FuaW1hdGlvbnMvY3Nz
LWFuaW1hdGlvbi1lbWJlZGRlZC1zdmcuaHRtbDogQWRkZWQuCisgICAgICAgICogc3ZnL2FuaW1h
dGlvbnMvY3NzLWFuaW1hdGlvbi1ob3Zlci1zdmctZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAg
ICAgICogc3ZnL2FuaW1hdGlvbnMvY3NzLWFuaW1hdGlvbi1ob3Zlci1zdmcuaHRtbDogQWRkZWQu
CisKIDIwMjAtMDQtMDcgIFR5bGVyIFdpbGNvY2sgIDx0d2lsY28ub0Bwcm90b25tYWlsLmNvbT4K
IAogICAgICAgICBbY3NzLXZhbHVlcy00XSBTdXBwb3J0IGZvbnQtcmVsYXRpdmUgbGggYW5kIHJs
aCB1bml0CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9jc3MtYW5pbWF0aW9uLWJh
Y2tncm91bmQtc3ZnLWV4cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3Zn
L2FuaW1hdGlvbnMvY3NzLWFuaW1hdGlvbi1iYWNrZ3JvdW5kLXN2Zy1leHBlY3RlZC5odG1sCShu
b25leGlzdGVudCkKKysrIExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL2Nzcy1hbmltYXRpb24t
YmFja2dyb3VuZC1zdmctZXhwZWN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEx
IEBACis8c3R5bGU+CisgICAJZGl2IHsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBo
ZWlnaHQ6IDEwMHB4OworICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgIGJh
Y2tncm91bmQtY29sb3I6IGdyZWVuOworICAgIH0KKzwvc3R5bGU+Cis8Ym9keT4KKwk8ZGl2Pjwv
ZGl2PgorPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvY3NzLWFuaW1h
dGlvbi1iYWNrZ3JvdW5kLXN2Zy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9h
bmltYXRpb25zL2Nzcy1hbmltYXRpb24tYmFja2dyb3VuZC1zdmcuaHRtbAkobm9uZXhpc3RlbnQp
CisrKyBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9jc3MtYW5pbWF0aW9uLWJhY2tncm91bmQt
c3ZnLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOSBAQAorPHN0eWxlPgorICAgIC5i
b3ggeworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAg
ICAgIGJhY2tncm91bmQ6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsIFwKKyAgICAgICAg
ICAgICUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTNFIFwKKyAgICAg
ICAgICAgICAgICAlM0NzdHlsZSUzRSBcCisgICAgICAgICAgICAgICAgICAgIEBrZXlmcmFtZXMg
ZmFkZWluIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB7IG9wYWNpdHk6MDsgfSBc
CisgICAgICAgICAgICAgICAgICAgICAgICB0byB7IG9wYWNpdHk6MTsgfSBcCisgICAgICAgICAg
ICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICAjZ3JlZW4geyBcCisgICAgICAgICAg
ICAgICAgICAgICAgICBhbmltYXRpb246IGZhZGVpbiAxNm1zOyBcCisgICAgICAgICAgICAgICAg
ICAgIH0gXAorICAgICAgICAgICAgICAgICUzQy9zdHlsZSUzRSBcCisgICAgICAgICAgICAgICAg
JTNDcmVjdCB3aWR0aD0nMTAwJScgaGVpZ2h0PScxMDAlJyBmaWxsPSdyZWQnLyUzRSBcCisgICAg
ICAgICAgICAgICAgJTNDcmVjdCBpZD0nZ3JlZW4nIHdpZHRoPScxMDAlJyBoZWlnaHQ9JzEwMCUn
IGZpbGw9J2dyZWVuJy8lM0UgXAorICAgICAgICAgICAgJTNDL3N2ZyUzRSIpOworICAgIH0KKzwv
c3R5bGU+Cis8Ym9keT4KKyAgICA8ZGl2IGNsYXNzPSJib3giPjwvZGl2PgorICAgIDxzY3JpcHQ+
CisgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgKGV2ZW50KSA9PiB7Cisg
ICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1
bm5lci53YWl0VW50aWxEb25lKCk7CisKKyAgICAgICAgICAgIHZhciByQUZDb3VudCA9IDA7Cisg
ICAgICAgICAgICBmdW5jdGlvbiBhbmltYXRlKHRpbWVzdGFtcCkgeworICAgICAgICAgICAgICAg
IGlmICgrK3JBRkNvdW50IDwgMTApCisgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5yZXF1ZXN0
QW5pbWF0aW9uRnJhbWUoYW5pbWF0ZSk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZy
YW1lKGFuaW1hdGUpOworICAgICAgICB9KTsKKyAgICA8L3NjcmlwdD4KKzwvYm9keT4KSW5kZXg6
IExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL2Nzcy1hbmltYXRpb24tZW1iZWRkZWQtc3ZnLWV4
cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvY3Nz
LWFuaW1hdGlvbi1lbWJlZGRlZC1zdmctZXhwZWN0ZWQuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBM
YXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9jc3MtYW5pbWF0aW9uLWVtYmVkZGVkLXN2Zy1leHBl
Y3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEgQEAKKzxzdHlsZT4KKyAgIAlk
aXYgeworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAg
ICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZ3Jl
ZW47CisgICAgfQorPC9zdHlsZT4KKzxib2R5PgorCTxkaXY+PC9kaXY+Cis8L2JvZHk+CkluZGV4
OiBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9jc3MtYW5pbWF0aW9uLWVtYmVkZGVkLXN2Zy5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL2Nzcy1hbmltYXRp
b24tZW1iZWRkZWQtc3ZnLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvc3ZnL2Fu
aW1hdGlvbnMvY3NzLWFuaW1hdGlvbi1lbWJlZGRlZC1zdmcuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDM4IEBACis8c3R5bGU+CisgICAgaW1nIHsKKyAgICAgICAgd2lkdGg6IDEwMHB4
OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgIH0KKzwvc3R5bGU+Cis8Ym9keT4KKyAgICA8
aW1nIHNyYz0nZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsCisgICAgICAgIDxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KKyAgICAgICAgICAgIDxzdHlsZT4KKyAgICAgICAg
ICAgICAgICBAa2V5ZnJhbWVzIGZhZGVpbiB7CisgICAgICAgICAgICAgICAgICAgIGZyb20geyBv
cGFjaXR5OjA7IH0KKyAgICAgICAgICAgICAgICAgICAgdG8geyBvcGFjaXR5OjE7IH0KKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgI2dyZWVuIHsgCisgICAgICAgICAgICAgICAg
ICAgIGFuaW1hdGlvbjogZmFkZWluIDE2bXM7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgPC9zdHlsZT4KKyAgICAgICAgICAgIDxyZWN0IHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUi
IGZpbGw9InJlZCIvPgorICAgICAgICAgICAgPHJlY3QgaWQ9ImdyZWVuIiB3aWR0aD0iMTAwJSIg
aGVpZ2h0PSIxMDAlIiBmaWxsPSJncmVlbiIvPgorICAgICAgICA8L3N2Zz4nPgorICAgIDxzY3Jp
cHQ+CisgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgKGV2ZW50KSA9PiB7
CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKKyAgICAgICAgICAgIHZhciByQUZDb3VudCA9IDA7
CisgICAgICAgICAgICBmdW5jdGlvbiBhbmltYXRlKHRpbWVzdGFtcCkgeworICAgICAgICAgICAg
ICAgIGlmICgrK3JBRkNvdW50IDwgMTApCisgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5yZXF1
ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0ZSk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlv
bkZyYW1lKGFuaW1hdGUpOworICAgICAgICB9KTsKKyAgICA8L3NjcmlwdD4KKzwvYm9keT4KSW5k
ZXg6IExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL2Nzcy1hbmltYXRpb24taG92ZXItc3ZnLWV4
cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvY3Nz
LWFuaW1hdGlvbi1ob3Zlci1zdmctZXhwZWN0ZWQuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlv
dXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9jc3MtYW5pbWF0aW9uLWhvdmVyLXN2Zy1leHBlY3RlZC5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEgQEAKKzxzdHlsZT4KKyAgIAlkaXYgewor
ICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgIGRp
c3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47Cisg
ICAgfQorPC9zdHlsZT4KKzxib2R5PgorCTxkaXY+PC9kaXY+Cis8L2JvZHk+CkluZGV4OiBMYXlv
dXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9jc3MtYW5pbWF0aW9uLWhvdmVyLXN2Zy5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL2Nzcy1hbmltYXRpb24taG92ZXIt
c3ZnLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvY3Nz
LWFuaW1hdGlvbi1ob3Zlci1zdmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ0IEBA
Cis8c3R5bGU+CisgICAgLmJveCB7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVp
Z2h0OiAxMDBweDsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmVkOworICAgIH0KKyAgICAu
aG92ZXIgeworICAgICAgICBiYWNrZ3JvdW5kOiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFy
c2V0PXV0ZjgsIFwKKyAgICAgICAgICAgICUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmcnJTNFIFwKKyAgICAgICAgICAgICAgICAlM0NzdHlsZSUzRSBcCisgICAgICAgICAg
ICAgICAgICAgIEBrZXlmcmFtZXMgZmFkZWluIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAg
ZnJvbSB7IG9wYWNpdHk6MDsgfSBcCisgICAgICAgICAgICAgICAgICAgICAgICB0byB7IG9wYWNp
dHk6MTsgfSBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICAj
Z3JlZW4geyBcCisgICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb246IGZhZGVpbiAxNm1z
OyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICUzQy9zdHlsZSUz
RSBcCisgICAgICAgICAgICAgICAgJTNDcmVjdCB3aWR0aD0nMTAwJScgaGVpZ2h0PScxMDAlJyBm
aWxsPSdyZWQnLyUzRSBcCisgICAgICAgICAgICAgICAgJTNDcmVjdCBpZD0nZ3JlZW4nIHdpZHRo
PScxMDAlJyBoZWlnaHQ9JzEwMCUnIGZpbGw9J2dyZWVuJy8lM0UgXAorICAgICAgICAgICAgJTND
L3N2ZyUzRSIpOworICAgIH0KKzwvc3R5bGU+Cis8Ym9keT4KKyAgICA8ZGl2IGNsYXNzPSJib3gi
PjwvZGl2PgorICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCds
b2FkJywgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKKyAgICAgICAgICAg
IHZhciByQUZDb3VudCA9IDA7CisgICAgICAgICAgICBmdW5jdGlvbiBhbmltYXRlKHRpbWVzdGFt
cCkgeworICAgICAgICAgICAgICAgIGlmICgrK3JBRkNvdW50IDwgMTApCisgICAgICAgICAgICAg
ICAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0ZSk7CisgICAgICAgICAg
ICAgICAgZWxzZSBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIg
Ym94ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLmJveCIpOworICAgICAgICAgICAgYm94LmNs
YXNzTGlzdC5hZGQoJ2hvdmVyJyk7CisgICAgICAgICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlv
bkZyYW1lKGFuaW1hdGUpOworICAgICAgICB9KTsKKyAgICA8L3NjcmlwdD4KKzwvYm9keT4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395986</attachid>
            <date>2020-04-09 12:03:43 -0700</date>
            <delta_ts>2020-04-09 12:22:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209370-20200409120342.patch</filename>
            <type>text/plain</type>
            <size>27160</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1OTgxMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc5IEBACisyMDIwLTA0LTA4ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lP
TjogQ1NTIGFuaW1hdGlvbnMgaW5zaWRlIGFuIGVtYmVkZGVkIFNWRyBpbWFnZSBkbyBub3QgYW5p
bWF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5
MzcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgIElmIFdl
YkFuaW1hdGlvbiBpcyBlbmFibGVkIGFuZCB0aGUgU1ZHSW1hZ2UgaW5jbHVkZXMgQ1NTIGFuaW1h
dGlvbnMsIHRoZQorICAgICAgICBEb2N1bWVudFRpbWVsaW5lIGlzIGFkZGVkIHRvIHRoZSBTVkdE
b2N1bWVudCBvZiB0aGUgZW1iZWRkZWQgU1ZHSW1hZ2UuCisgICAgICAgIEJlY2F1c2UgdGhlIFNW
R0ltYWdlIGhhcyBpdHMgb3duIFBhZ2UgdGhlIFJlbmRlcmluZ1VwZGF0ZSBpcyBzY2hlZHVsZWQK
KyAgICAgICAgYW5kIHRoZSB1cGRhdGVSZW5kZXJpbmcgc3RlcHMgcnVuIGluIHRoaXMgUGFnZS4K
KworICAgICAgICBUaGUgUGFnZSBvZiB0aGUgU1ZHSW1hZ2UgaXMgaW5hY3RpdmUgc3VjaCB0aGF0
IHNjaGVkdWxpbmcgUmVuZGVyaW5nVXBkYXRlCisgICAgICAgIGZhaWxzOyB0aGVyZWZvcmUgdGhl
IHVwZGF0ZVJlbmRlcmluZyBzdGVwcyBuZXZlciBydW4gYW5kIHRoZSBDU1MgYW5pbWF0aW9uCisg
ICAgICAgIG5ldmVyIGFkdmFuY2VzLgorCisgICAgICAgIFRoZSBmaXggaXM6CisKKyAgICAgICAg
MSkgU2NoZWR1bGluZyB0aGUgUmVuZGVyaW5nVXBkYXRlOiBUaGlzIGhhcyB0byBoYXBwZW4gaW4g
dGhlIFBhZ2Ugd2hpY2gKKyAgICAgICAgICAgY29udGFpbnMgdGhlIHJlbmRlcmVyIG9mIHRoZSBT
VkdJbWFnZS4gQmVjYXVzZSBEb2N1bWVudFRpbWVsaW5lIGlzCisgICAgICAgICAgIGFkZGVkIHRv
IFNWR0RvY3VtZW50LCB0aGlzIHNjaGVkdWxpbmcgd2lsbCBnbyB0aHJvdWdoIHRoZXNlIGh1YnM6
CisgICAgICAgICAgICAgICAgLSBEb2N1bWVudFRpbWVsaW5lCisgICAgICAgICAgICAgICAgLSBQ
YWdlCisgICAgICAgICAgICAgICAgLSBDaHJvbWVDbGllbnQgLT4gU1ZHSW1hZ2VDaHJvbWVDbGll
bnQgCisgICAgICAgICAgICAgICAgLSBTVkdJbWFnZQorICAgICAgICAgICAgICAgIC0gSW1hZ2VP
YnNlcnZlciAtPiBDYWNoZWRJbWFnZU9ic2VydmVyCisgICAgICAgICAgICAgICAgLSBDYWNoZWRJ
bWFnZQorICAgICAgICAgICAgICAgIC0gQ2FjaGVkSW1hZ2VDbGllbnQgLT4gUmVuZGVyRWxlbWVu
dAorICAgICAgICAgICAgICAgIC0gUGFnZQorCisgICAgICAgIDIpIFJ1bm5pbmcgdGhlIHVwZGF0
ZVJlbmRlcmluZyBzdGVwczogRWFjaCBkb2N1bWVudCBpbiB0aGUgUGFnZSB3aWxsCisgICAgICAg
ICAgIGVudW1lcmF0ZSBpdHMgY2FjaGVkIFNWR0ltYWdlcy4gVGhlIHVwZGF0ZVJlbmRlcmluZyBv
ZiB0aGUgUGFnZSBvZgorICAgICAgICAgICBlYWNoIFNWR0ltYWdlIHdpbGwgYmUgY2FsbGVkLgor
CisgICAgICAgIFRvIG1ha2UgZW51bWVyYXRpbmcgdGhlIGNhY2hlZCBTVkdJbWFnZXMgb2YgYSBE
b2N1bWVudCBmYXN0ZXIsIHRoZSBVUkwKKyAgICAgICAgb2YgdGhlIGNhY2hlZCBTVkdJbWFnZSB3
aWxsIGJlIGFkZGVkIHRvIHRoZSBjYWNoZWRTVkdJbWFnZXNVUkxzIG9mCisgICAgICAgIENhY2hl
ZFJlc291cmNlTG9hZGVyIHdoZW4gbm90aWZ5RmluaXNoZWQoKSBpcyBjYWxsZWQgZm9yIGFzc29j
aWF0ZWQKKyAgICAgICAgQ2FjaGVkSW1hZ2UuCisKKyAgICAgICAgVGVzdHM6IHN2Zy9hbmltYXRp
b25zL2Nzcy1hbmltYXRpb24tYmFja2dyb3VuZC1zdmcuaHRtbAorICAgICAgICAgICAgICAgc3Zn
L2FuaW1hdGlvbnMvY3NzLWFuaW1hdGlvbi1lbWJlZGRlZC1zdmcuaHRtbAorICAgICAgICAgICAg
ICAgc3ZnL2FuaW1hdGlvbnMvY3NzLWFuaW1hdGlvbi1ob3Zlci1zdmcuaHRtbAorCisgICAgICAg
ICogYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRUaW1lbGluZTo6c2NoZWR1bGVBbmltYXRpb25SZXNvbHV0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50VGltZWxpbmU6OnVwZGF0ZUFuaW1hdGlvbnNBbmRTZW5kRXZlbnRzKToK
KyAgICAgICAgKiBodG1sL0ltYWdlQml0bWFwLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6Omhhc1NWR0lt
YWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpDYWNoZWRJbWFnZU9i
c2VydmVyOjpzY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZEltYWdlOjpzY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2VDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlQ2xpZW50OjpzY2hl
ZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNTVkdJbWFnZUNhY2hlZFJl
c291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OmNhY2hlZFJlc291cmNlU1ZHSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OiBjb25zdCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlTG9hZGVyLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkNocm9tZUNsaWVudDo6c2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSk6Cisg
ICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNjaGVkdWxl
VGltZWRSZW5kZXJpbmdVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXBkYXRlUmVu
ZGVyaW5nKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZU9ic2VydmVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6c2NoZWR1bGVUaW1lZFJlbmRlcmluZ1Vw
ZGF0ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6
Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaDoKKyAg
ICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDbGllbnRzLmg6CisKIDIwMjAtMDQtMDggIFNp
bW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgW0FzeW5jIG92
ZXJmbG93IHNjcm9sbF0gSG9yaXpvbnRhbCBzY3JvbGxzIGNhbiB0cmlnZ2VyIHVud2FudGVkIGJh
Y2sgc3dpcGVzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGlu
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGlt
ZWxpbmUuY3BwCShyZXZpc2lvbiAyNTk4MTApCisrKyBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24v
RG9jdW1lbnRUaW1lbGluZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzOSw3ICszMzksNyBAQCB2
b2lkIERvY3VtZW50VGltZWxpbmU6OnNjaGVkdWxlQW5pbWF0aW9uCiAgICAgaWYgKCFzaG91bGRS
dW5VcGRhdGVBbmltYXRpb25zQW5kU2VuZEV2ZW50c0lnbm9yaW5nU3VzcGVuc2lvblN0YXRlKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZG9jdW1lbnQtPnBhZ2UoKS0+cmVuZGVyaW5nVXBk
YXRlU2NoZWR1bGVyKCkuc2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSgpOworICAgIG1fZG9j
dW1lbnQtPnBhZ2UoKS0+c2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSgpOwogICAgIG1fYW5p
bWF0aW9uUmVzb2x1dGlvblNjaGVkdWxlZCA9IHRydWU7CiB9CiAKQEAgLTM2NCw3ICszNjQsNiBA
QCB2b2lkIERvY3VtZW50VGltZWxpbmU6OnVwZGF0ZUN1cnJlbnRUaW1lCiAKIHZvaWQgRG9jdW1l
bnRUaW1lbGluZTo6dXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHMoKQogewotCiAgICAgLy8g
VXBkYXRpbmcgYW5pbWF0aW9ucyBhbmQgc2VuZGluZyBldmVudHMgbWF5IGludmFsaWRhdGUgdGhl
IHRpbWluZyBvZiBzb21lIGFuaW1hdGlvbnMsIHNvIHdlIG11c3Qgc2V0IHRoZSBtX2FuaW1hdGlv
blJlc29sdXRpb25TY2hlZHVsZWQKICAgICAvLyBmbGFnIHRvIGZhbHNlIHByaW9yIHRvIHJ1bm5p
bmcgdGhhdCBwcm9jZWR1cmUgdG8gYWxsb3cgYW5pbWF0aW9uIHdpdGggdGltaW5nIG1vZGVsIHVw
ZGF0ZXMgdG8gc2NoZWR1bGUgdXBkYXRlcy4KICAgICBtX2FuaW1hdGlvblJlc29sdXRpb25TY2hl
ZHVsZWQgPSBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCShyZXZp
c2lvbiAyNTk4MTApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTI4LDYgKzUyOCw3IEBAIHB1YmxpYzoKICAgICBib29sIGNhbkRlc3Ry
b3lEZWNvZGVkRGF0YShjb25zdCBJbWFnZSYpIG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAg
ICB2b2lkIGltYWdlRnJhbWVBdmFpbGFibGUoY29uc3QgSW1hZ2UmLCBJbWFnZUFuaW1hdGluZ1N0
YXRlLCBjb25zdCBJbnRSZWN0KiA9IG51bGxwdHIsIERlY29kaW5nU3RhdHVzID0gRGVjb2RpbmdT
dGF0dXM6OkludmFsaWQpIG92ZXJyaWRlIHsgfQogICAgIHZvaWQgY2hhbmdlZEluUmVjdChjb25z
dCBJbWFnZSYsIGNvbnN0IEludFJlY3QqID0gbnVsbHB0cikgb3ZlcnJpZGUgeyB9CisgICAgdm9p
ZCBzY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJikgb3ZlcnJpZGUgeyB9
CiAKIHByaXZhdGU6CiAgICAgSW1hZ2VCaXRtYXBJbWFnZU9ic2VydmVyKFN0cmluZyBtaW1lVHlw
ZSwgbG9uZyBsb25nIGV4cGVjdGVkQ29udGVudExlbmd0aCwgY29uc3QgVVJMJiBzb3VyY2VVcmwp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAJKHJl
dmlzaW9uIDI1OTgxMCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFn
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2OCw2ICsyNjgsMTEgQEAgSW1hZ2UqIENhY2hlZElt
YWdlOjppbWFnZUZvclJlbmRlcmVyKGNvbgogICAgIHJldHVybiBtX2ltYWdlLmdldCgpOwogfQog
Citib29sIENhY2hlZEltYWdlOjpoYXNTVkdJbWFnZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
aW1hZ2UgJiYgbV9pbWFnZS0+aXNTVkdJbWFnZSgpOworfQorCiB2b2lkIENhY2hlZEltYWdlOjpz
ZXRDb250YWluZXJDb250ZXh0Rm9yQ2xpZW50KGNvbnN0IENhY2hlZEltYWdlQ2xpZW50JiBjbGll
bnQsIGNvbnN0IExheW91dFNpemUmIGNvbnRhaW5lclNpemUsIGZsb2F0IGNvbnRhaW5lclpvb20s
IGNvbnN0IFVSTCYgaW1hZ2VVUkwpCiB7CiAgICAgaWYgKGNvbnRhaW5lclNpemUuaXNFbXB0eSgp
KQpAQCAtNDM0LDYgKzQzOSwxMiBAQCB2b2lkIENhY2hlZEltYWdlOjpDYWNoZWRJbWFnZU9ic2Vy
dmVyOjpjCiAgICAgICAgIGNhY2hlZEltYWdlLT5jaGFuZ2VkSW5SZWN0KGltYWdlLCByZWN0KTsK
IH0KIAordm9pZCBDYWNoZWRJbWFnZTo6Q2FjaGVkSW1hZ2VPYnNlcnZlcjo6c2NoZWR1bGVUaW1l
ZFJlbmRlcmluZ1VwZGF0ZShjb25zdCBJbWFnZSYgaW1hZ2UpCit7CisgICAgZm9yIChhdXRvIGNh
Y2hlZEltYWdlIDogbV9jYWNoZWRJbWFnZXMpCisgICAgICAgIGNhY2hlZEltYWdlLT5zY2hlZHVs
ZVRpbWVkUmVuZGVyaW5nVXBkYXRlKGltYWdlKTsKK30KKwogaW5saW5lIHZvaWQgQ2FjaGVkSW1h
Z2U6OmNsZWFySW1hZ2UoKQogewogICAgIGlmICghbV9pbWFnZSkKQEAgLTY4NCw2ICs2OTUsMTYg
QEAgdm9pZCBDYWNoZWRJbWFnZTo6Y2hhbmdlZEluUmVjdChjb25zdCBJbQogICAgIG5vdGlmeU9i
c2VydmVycyhyZWN0KTsKIH0KIAordm9pZCBDYWNoZWRJbWFnZTo6c2NoZWR1bGVUaW1lZFJlbmRl
cmluZ1VwZGF0ZShjb25zdCBJbWFnZSYgaW1hZ2UpCit7CisgICAgaWYgKCZpbWFnZSAhPSBtX2lt
YWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxD
YWNoZWRJbWFnZUNsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7CisgICAgd2hpbGUgKGF1dG8qIGNs
aWVudCA9IHdhbGtlci5uZXh0KCkpCisgICAgICAgIGNsaWVudC0+c2NoZWR1bGVUaW1lZFJlbmRl
cmluZ1VwZGF0ZSgpOworfQorCiBib29sIENhY2hlZEltYWdlOjpjdXJyZW50RnJhbWVLbm93blRv
QmVPcGFxdWUoY29uc3QgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIpCiB7CiAgICAgSW1hZ2UqIGlt
YWdlID0gaW1hZ2VGb3JSZW5kZXJlcihyZW5kZXJlcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAkocmV2aXNpb24gMjU5ODEwKQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDYg
KzU2LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlKiBpbWFnZSgpOyAvLyBS
ZXR1cm5zIHRoZSBudWxsSW1hZ2UoKSBpZiB0aGUgaW1hZ2UgaXMgbm90IGF2YWlsYWJsZSB5ZXQu
CiAgICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2UqIGltYWdlRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVy
T2JqZWN0Kik7IC8vIFJldHVybnMgdGhlIG51bGxJbWFnZSgpIGlmIHRoZSBpbWFnZSBpcyBub3Qg
YXZhaWxhYmxlIHlldC4KICAgICBib29sIGhhc0ltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pbWFn
ZS5nZXQoKTsgfQorICAgIGJvb2wgaGFzU1ZHSW1hZ2UoKSBjb25zdDsKICAgICBib29sIGN1cnJl
bnRGcmFtZUtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJFbGVtZW50Kik7CiAKICAgICBzdGQ6
OnBhaXI8SW1hZ2UqLCBmbG9hdD4gYnJva2VuSW1hZ2UoZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3Ip
IGNvbnN0OyAvLyBSZXR1cm5zIGFuIGltYWdlIGFuZCB0aGUgaW1hZ2UncyByZXNvbHV0aW9uIHNj
YWxlIGZhY3Rvci4KQEAgLTE1Miw2ICsxNTMsNyBAQCBwcml2YXRlOgogICAgICAgICBib29sIGNh
bkRlc3Ryb3lEZWNvZGVkRGF0YShjb25zdCBJbWFnZSYpIGZpbmFsOwogICAgICAgICB2b2lkIGlt
YWdlRnJhbWVBdmFpbGFibGUoY29uc3QgSW1hZ2UmLCBJbWFnZUFuaW1hdGluZ1N0YXRlLCBjb25z
dCBJbnRSZWN0KiBjaGFuZ2VSZWN0ID0gbnVsbHB0ciwgRGVjb2RpbmdTdGF0dXMgPSBEZWNvZGlu
Z1N0YXR1czo6SW52YWxpZCkgZmluYWw7CiAgICAgICAgIHZvaWQgY2hhbmdlZEluUmVjdChjb25z
dCBJbWFnZSYsIGNvbnN0IEludFJlY3QqKSBmaW5hbDsKKyAgICAgICAgdm9pZCBzY2hlZHVsZVRp
bWVkUmVuZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJikgZmluYWw7CiAKICAgICAgICAgSGFzaFNl
dDxDYWNoZWRJbWFnZSo+IG1fY2FjaGVkSW1hZ2VzOwogICAgIH07CkBAIC0xNjIsNiArMTY0LDcg
QEAgcHJpdmF0ZToKICAgICBib29sIGNhbkRlc3Ryb3lEZWNvZGVkRGF0YShjb25zdCBJbWFnZSYp
OwogICAgIHZvaWQgaW1hZ2VGcmFtZUF2YWlsYWJsZShjb25zdCBJbWFnZSYsIEltYWdlQW5pbWF0
aW5nU3RhdGUsIGNvbnN0IEludFJlY3QqIGNoYW5nZVJlY3QgPSBudWxscHRyLCBEZWNvZGluZ1N0
YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkKTsKICAgICB2b2lkIGNoYW5nZWRJblJlY3Qo
Y29uc3QgSW1hZ2UmLCBjb25zdCBJbnRSZWN0Kik7CisgICAgdm9pZCBzY2hlZHVsZVRpbWVkUmVu
ZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJik7CiAKICAgICB2b2lkIHVwZGF0ZUJ1ZmZlckludGVy
bmFsKFNoYXJlZEJ1ZmZlciYpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2VDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2VDbGllbnQuaAkocmV2aXNpb24gMjU5ODEwKQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ4LDYgKzQ4LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgVmlzaWJsZUluVmlld3BvcnRTdGF0
ZSBpbWFnZUZyYW1lQXZhaWxhYmxlKENhY2hlZEltYWdlJiBpbWFnZSwgSW1hZ2VBbmltYXRpbmdT
dGF0ZSwgY29uc3QgSW50UmVjdCogY2hhbmdlUmVjdCkgeyBpbWFnZUNoYW5nZWQoJmltYWdlLCBj
aGFuZ2VSZWN0KTsgcmV0dXJuIFZpc2libGVJblZpZXdwb3J0U3RhdGU6Ok5vOyB9CiAKICAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlQ2FjaGVkSW1hZ2VDbGllbnQoQ2FjaGVkSW1hZ2UmKSB7IH0K
KworICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCkgeyB9CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDI1OTgx
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTc4OCw2ICs3ODgsMjAgQEAgc3RhdGljIEZldGNoT3B0aW9u
czo6RGVzdGluYXRpb24gZGVzdGluYQogICAgIHJldHVybiBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0
aW9uOjpFbXB0eVN0cmluZzsKIH0KIAorc3RhdGljIGlubGluZSBib29sIGlzU1ZHSW1hZ2VDYWNo
ZWRSZXNvdXJjZShjb25zdCBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCit7CisgICAgaWYgKCFy
ZXNvdXJjZSB8fCAhaXM8Q2FjaGVkSW1hZ2U+KCpyZXNvdXJjZSkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICByZXR1cm4gZG93bmNhc3Q8Q2FjaGVkSW1hZ2U+KCpyZXNvdXJjZSkuaGFzU1ZH
SW1hZ2UoKTsKK30KKworc3RhdGljIGlubGluZSBTVkdJbWFnZSogY2FjaGVkUmVzb3VyY2VTVkdJ
bWFnZShDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCit7CisgICAgaWYgKCFpc1NWR0ltYWdlQ2Fj
aGVkUmVzb3VyY2UocmVzb3VyY2UpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1
cm4gZG93bmNhc3Q8U1ZHSW1hZ2U+KGRvd25jYXN0PENhY2hlZEltYWdlPigqcmVzb3VyY2UpLmlt
YWdlKCkpOworfQorCiBSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVk
UmVzb3VyY2U+PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKENhY2hlZFJl
c291cmNlOjpUeXBlIHR5cGUsIENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZvclBy
ZWxvYWQgZm9yUHJlbG9hZCwgSW1hZ2VMb2FkaW5nIGltYWdlTG9hZGluZykKIHsKICAgICBpZiAo
IWZyYW1lKCkgfHwgIWZyYW1lKCktPnBhZ2UoKSkgewpAQCAtMTQwMSw2ICsxNDE1LDI1IEBAIHZv
aWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRlY3JlbWVudFJlcXUKICAgICBBU1NFUlQobV9yZXF1
ZXN0Q291bnQgPiAtMSk7CiB9CiAKK3ZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6Om5vdGlmeUZp
bmlzaGVkKGNvbnN0IENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKK3sKKyAgICBpZiAoaXNTVkdJ
bWFnZUNhY2hlZFJlc291cmNlKCZyZXNvdXJjZSkpCisgICAgICAgIG1fY2FjaGVkU1ZHSW1hZ2Vz
VVJMcy5hZGQocmVzb3VyY2UudXJsKCkpOworfQorCitWZWN0b3I8UmVmPFNWR0ltYWdlPj4gQ2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OmFsbENhY2hlZFNWR0ltYWdlcygpIGNvbnN0Cit7CisgICAgVmVj
dG9yPFJlZjxTVkdJbWFnZT4+IGFsbENhY2hlZFNWR0ltYWdlczsKKworICAgIGZvciAoYXV0byYg
Y2FjaGVkU1ZHSW1hZ2VVUkwgOiBtX2NhY2hlZFNWR0ltYWdlc1VSTHMpIHsKKyAgICAgICAgYXV0
byogcmVzb3VyY2UgPSBjYWNoZWRSZXNvdXJjZShjYWNoZWRTVkdJbWFnZVVSTCk7CisgICAgICAg
IGlmIChhdXRvKiBpbWFnZSA9IGNhY2hlZFJlc291cmNlU1ZHSW1hZ2UocmVzb3VyY2UpKQorICAg
ICAgICAgICAgYWxsQ2FjaGVkU1ZHSW1hZ2VzLmFwcGVuZCgqaW1hZ2UpOworICAgIH0KKyAgICAg
ICAgCisgICAgcmV0dXJuIGFsbENhY2hlZFNWR0ltYWdlczsKK30KKwogUmVzb3VyY2VFcnJvck9y
PENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPj4gQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OnByZWxvYWQoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgQ2FjaGVkUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCkKIHsKICAgICBpZiAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
SW50ZXJjZXB0UmVxdWVzdChmcmFtZSgpLCByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpKSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxv
YWRlci5oCShyZXZpc2lvbiAyNTk4MTApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsNiArNTcsNyBAQCBj
bGFzcyBEb2N1bWVudExvYWRlcjsKIGNsYXNzIEZyYW1lOwogY2xhc3MgSW1hZ2VMb2FkZXI7CiBj
bGFzcyBQYWdlOworY2xhc3MgU1ZHSW1hZ2U7CiBjbGFzcyBTZXR0aW5nczsKIAogdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CkBAIC0xMTYsNiArMTE3LDkgQEAgcHVibGljOgogICAgIHR5cGVkZWYgSGFz
aE1hcDxTdHJpbmcsIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPj4gRG9jdW1l
bnRSZXNvdXJjZU1hcDsKICAgICBjb25zdCBEb2N1bWVudFJlc291cmNlTWFwJiBhbGxDYWNoZWRS
ZXNvdXJjZXMoKSBjb25zdCB7IHJldHVybiBtX2RvY3VtZW50UmVzb3VyY2VzOyB9CiAKKyAgICB2
b2lkIG5vdGlmeUZpbmlzaGVkKGNvbnN0IENhY2hlZFJlc291cmNlJik7CisgICAgVmVjdG9yPFJl
ZjxTVkdJbWFnZT4+IGFsbENhY2hlZFNWR0ltYWdlcygpIGNvbnN0OworCiAgICAgYm9vbCBhdXRv
TG9hZEltYWdlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXV0b0xvYWRJbWFnZXM7IH0KICAgICB2b2lk
IHNldEF1dG9Mb2FkSW1hZ2VzKGJvb2wpOwogCkBAIC0xOTMsNiArMTk3LDcgQEAgcHJpdmF0ZToK
ICAgICBib29sIGNhblJlcXVlc3RJbkNvbnRlbnREaXNwb3NpdGlvbkF0dGFjaG1lbnRTYW5kYm94
KENhY2hlZFJlc291cmNlOjpUeXBlLCBjb25zdCBVUkwmKSBjb25zdDsKIAogICAgIEhhc2hTZXQ8
U3RyaW5nPiBtX3ZhbGlkYXRlZFVSTHM7CisgICAgSGFzaFNldDxTdHJpbmc+IG1fY2FjaGVkU1ZH
SW1hZ2VzVVJMczsKICAgICBtdXRhYmxlIERvY3VtZW50UmVzb3VyY2VNYXAgbV9kb2N1bWVudFJl
c291cmNlczsKICAgICBXZWFrUHRyPERvY3VtZW50PiBtX2RvY3VtZW50OwogICAgIERvY3VtZW50
TG9hZGVyKiBtX2RvY3VtZW50TG9hZGVyOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DaHJv
bWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVu
dC5oCShyZXZpc2lvbiAyNTk4MTApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTYsNiArMzE2LDcgQEAgcHVibGljOgogICAgIC8vIFNl
dHMgYSBmbGFnIHRvIHNwZWNpZnkgdGhhdCB0aGUgdmlldyBuZWVkcyB0byBiZSB1cGRhdGVkLCBz
byB3ZSBuZWVkCiAgICAgLy8gdG8gZG8gYW4gZWFnZXIgbGF5b3V0IGJlZm9yZSB0aGUgZHJhd2lu
Zy4KICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKSA9IDA7CisgICAg
dmlydHVhbCBib29sIHNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKSB7IHJldHVybiBmYWxz
ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBuZWVkc0ltbWVkaWF0ZVJlbmRlcmluZ1VwZGF0ZSgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgLy8gUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUg
Y2xpZW50IGNhbiByZW5kZXIgdGhlIGNvbXBvc2l0ZWQgbGF5ZXIsCiAgICAgLy8gcmVnYXJkbGVz
cyBvZiB0aGUgc2V0dGluZ3MuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHJldmlzaW9uIDI1OTgx
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5
LDYgKzI5LDcgQEAKICNpbmNsdWRlICJCYWNrRm9yd2FyZENvbnRyb2xsZXIuaCIKICNpbmNsdWRl
ICJDU1NBbmltYXRpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlUHJvdmlk
ZXIuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkNocm9t
ZS5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIkNvbnN0YW50UHJvcGVy
dHlNYXAuaCIKQEAgLTEwNCw2ICsxMDUsNyBAQAogI2luY2x1ZGUgIlJlc291cmNlVXNhZ2VPdmVy
bGF5LmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlNW
R0RvY3VtZW50RXh0ZW5zaW9ucy5oIgorI2luY2x1ZGUgIlNWR0ltYWdlLmgiCiAjaW5jbHVkZSAi
U2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcmlwdERpc2FsbG93ZWRTY29wZS5oIgog
I2luY2x1ZGUgIlNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5oIgpAQCAtMTI5OCw2ICsxMzAw
LDEzIEBAIHZvaWQgUGFnZTo6c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKQogICAgIHJlbmRlcmlu
Z1VwZGF0ZVNjaGVkdWxlcigpLnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCk7CiB9CiAKK3ZvaWQg
UGFnZTo6c2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSgpCit7CisgICAgaWYgKGNocm9tZSgp
LmNsaWVudCgpLnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKSkKKyAgICAgICAgcmV0dXJu
OworICAgIHJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcigpLnNjaGVkdWxlVGltZWRSZW5kZXJpbmdV
cGRhdGUoKTsKK30KKwogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uv
d2ViYXBwYXBpcy5odG1sI3VwZGF0ZS10aGUtcmVuZGVyaW5nCiB2b2lkIFBhZ2U6OnVwZGF0ZVJl
bmRlcmluZygpCiB7CkBAIC0xMzUwLDYgKzEzNTksMTMgQEAgdm9pZCBQYWdlOjp1cGRhdGVSZW5k
ZXJpbmcoKQogICAgIH0pOwogI2VuZGlmCiAKKyAgICBmb3JFYWNoRG9jdW1lbnQoW10gKERvY3Vt
ZW50JiBkb2N1bWVudCkgeworICAgICAgICBmb3IgKGF1dG8mIGltYWdlIDogZG9jdW1lbnQuY2Fj
aGVkUmVzb3VyY2VMb2FkZXIoKS5hbGxDYWNoZWRTVkdJbWFnZXMoKSkgeworICAgICAgICAgICAg
aWYgKGF1dG8qIHBhZ2UgPSBpbWFnZS0+aW50ZXJuYWxQYWdlKCkpCisgICAgICAgICAgICAgICAg
cGFnZS0+dXBkYXRlUmVuZGVyaW5nKCk7CisgICAgICAgIH0KKyAgICB9KTsKKwogICAgIGxheW91
dElmTmVlZGVkKCk7CiAgICAgZG9BZnRlclVwZGF0ZVJlbmRlcmluZygpOwogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmgJKHJldmlzaW9uIDI1OTgxMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC00NzgsNiArNDc4LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgdXBkYXRlUmVuZGVyaW5nKCk7CiAgICAgCiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOworICAgIHZvaWQgc2NoZWR1bGVUaW1lZFJl
bmRlcmluZ1VwZGF0ZSgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdXNwZW5kU2NyaXB0
ZWRBbmltYXRpb25zKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXN1bWVTY3JpcHRlZEFu
aW1hdGlvbnMoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
T2JzZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZU9ic2VydmVyLmgJKHJldmlzaW9uIDI1OTgxMCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlT2JzZXJ2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiAr
NTAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGNhbkRlc3Ryb3lEZWNvZGVkRGF0YShj
b25zdCBJbWFnZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VGcmFtZUF2YWlsYWJsZShj
b25zdCBJbWFnZSYsIEltYWdlQW5pbWF0aW5nU3RhdGUsIGNvbnN0IEludFJlY3QqIGNoYW5nZVJl
Y3QgPSBudWxscHRyLCBEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2UmLCBjb25zdCBJ
bnRSZWN0KiBjaGFuZ2VSZWN0ID0gbnVsbHB0cikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzY2hl
ZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJikgPSAwOwogfTsKIAogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAkocmV2aXNpb24g
MjU5ODEwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiUmVuZGVyRWxlbWVudC5o
IgogCiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgorI2luY2x1ZGUgIkNhY2hlZFJlc291cmNl
TG9hZGVyLmgiCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlICJDb250ZW50Q2hh
bmdlT2JzZXJ2ZXIuaCIKICNlbmRpZgpAQCAtMTMyNCwxMiArMTMyNSwyMyBAQCBWaXNpYmxlSW5W
aWV3cG9ydFN0YXRlIFJlbmRlckVsZW1lbnQ6OmltCiAgICAgcmV0dXJuIGlzVmlzaWJsZSA/IFZp
c2libGVJblZpZXdwb3J0U3RhdGU6OlllcyA6IFZpc2libGVJblZpZXdwb3J0U3RhdGU6Ok5vOwog
fQogCit2b2lkIFJlbmRlckVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiBy
ZXNvdXJjZSkKK3sKKyAgICBkb2N1bWVudCgpLmNhY2hlZFJlc291cmNlTG9hZGVyKCkubm90aWZ5
RmluaXNoZWQocmVzb3VyY2UpOworfQorCiB2b2lkIFJlbmRlckVsZW1lbnQ6OmRpZFJlbW92ZUNh
Y2hlZEltYWdlQ2xpZW50KENhY2hlZEltYWdlJiBjYWNoZWRJbWFnZSkKIHsKICAgICBpZiAoaGFz
UGF1c2VkSW1hZ2VBbmltYXRpb25zKCkpCiAgICAgICAgIHZpZXcoKS5yZW1vdmVSZW5kZXJlcldp
dGhQYXVzZWRJbWFnZUFuaW1hdGlvbnMoKnRoaXMsIGNhY2hlZEltYWdlKTsKIH0KIAordm9pZCBS
ZW5kZXJFbGVtZW50OjpzY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCkKK3sKKyAgICBpZiAo
YXV0byogcGFnZSA9IGRvY3VtZW50KCkucGFnZSgpKQorICAgICAgICBwYWdlLT5zY2hlZHVsZVRp
bWVkUmVuZGVyaW5nVXBkYXRlKCk7Cit9CisKIGJvb2wgUmVuZGVyRWxlbWVudDo6cmVwYWludEZv
clBhdXNlZEltYWdlQW5pbWF0aW9uc0lmTmVlZGVkKGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0
LCBDYWNoZWRJbWFnZSYgY2FjaGVkSW1hZ2UpCiB7CiAgICAgQVNTRVJUKG1faGFzUGF1c2VkSW1h
Z2VBbmltYXRpb25zKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1l
bnQuaAkocmV2aXNpb24gMjU5ODEwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjYzLDYgKzI2Myw3IEBAIHByb3RlY3RlZDoK
ICAgICB2b2lkIGluc2VydGVkSW50b1RyZWUoKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxCZVJl
bW92ZWRGcm9tVHJlZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgd2lsbEJlRGVzdHJveWVkKCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpIG92ZXJyaWRl
OwogCiAgICAgdm9pZCBzZXRSZW5kZXJJbmxpbmVBbHdheXNDcmVhdGVzTGluZUJveGVzKGJvb2wg
YikgeyBtX3JlbmRlcklubGluZUFsd2F5c0NyZWF0ZXNMaW5lQm94ZXMgPSBiOyB9CiAgICAgYm9v
bCByZW5kZXJJbmxpbmVBbHdheXNDcmVhdGVzTGluZUJveGVzKCkgY29uc3QgeyByZXR1cm4gbV9y
ZW5kZXJJbmxpbmVBbHdheXNDcmVhdGVzTGluZUJveGVzOyB9CkBAIC0zMjAsNiArMzIxLDcgQEAg
cHJpdmF0ZToKICAgICBib29sIGNhbkRlc3Ryb3lEZWNvZGVkRGF0YSgpIGZpbmFsIHsgcmV0dXJu
ICFpc1Zpc2libGVJblZpZXdwb3J0KCk7IH0KICAgICBWaXNpYmxlSW5WaWV3cG9ydFN0YXRlIGlt
YWdlRnJhbWVBdmFpbGFibGUoQ2FjaGVkSW1hZ2UmLCBJbWFnZUFuaW1hdGluZ1N0YXRlLCBjb25z
dCBJbnRSZWN0KiBjaGFuZ2VSZWN0KSBmaW5hbDsKICAgICB2b2lkIGRpZFJlbW92ZUNhY2hlZElt
YWdlQ2xpZW50KENhY2hlZEltYWdlJikgZmluYWw7CisgICAgdm9pZCBzY2hlZHVsZVRpbWVkUmVu
ZGVyaW5nVXBkYXRlKCkgZmluYWw7CiAKICAgICBib29sIGdldExlYWRpbmdDb3JuZXIoRmxvYXRQ
b2ludCYgb3V0cHV0LCBib29sJiBpbnNpZGVGaXhlZCkgY29uc3Q7CiAgICAgYm9vbCBnZXRUcmFp
bGluZ0Nvcm5lcihGbG9hdFBvaW50JiBvdXRwdXQsIGJvb2wmIGluc2lkZUZpeGVkKSBjb25zdDsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAkocmV2aXNpb24g
MjU5ODEwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDE4LDYgKzQxOCw4IEBAIHZvaWQgUmVuZGVySW1hZ2U6Om5vdGlmeUZp
bmlzaGVkKENhY2hlZFIKIAogICAgIGlmIChpczxIVE1MSW1hZ2VFbGVtZW50PihlbGVtZW50KCkp
KQogICAgICAgICBwYWdlKCkuZGlkRmluaXNoTG9hZGluZ0ltYWdlRm9yRWxlbWVudChkb3duY2Fz
dDxIVE1MSW1hZ2VFbGVtZW50PigqZWxlbWVudCgpKSk7CisKKyAgICBSZW5kZXJSZXBsYWNlZDo6
bm90aWZ5RmluaXNoZWQobmV3SW1hZ2UpOwogfQogCiB2b2lkIFJlbmRlckltYWdlOjpzZXRJbWFn
ZURldmljZVBpeGVsUmF0aW8oZmxvYXQgZmFjdG9yKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlLmgJKHJldmlzaW9uIDI1OTgxMCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw2ICs2OCw4IEBAIHB1
YmxpYzoKICNpZiBVU0UoRElSRUNUMkQpCiAgICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2Uo
Y29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIGZpbmFsOwogI2VuZGlmCisgICAgCisg
ICAgUGFnZSogaW50ZXJuYWxQYWdlKCkgeyByZXR1cm4gbV9wYWdlLmdldCgpOyB9CiAKIHByaXZh
dGU6CiAgICAgZnJpZW5kIGNsYXNzIFNWR0ltYWdlQ2hyb21lQ2xpZW50OwpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2xpZW50cy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNsaWVudHMuaAkocmV2aXNpb24gMjU5
ODEwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2xpZW50cy5oCSh3
b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2MiwxNCBAQCBwcml2YXRlOgogCiAgICAgICAgIGltYWdl
T2JzZXJ2ZXItPmltYWdlRnJhbWVBdmFpbGFibGUoKm1faW1hZ2UsIG1faW1hZ2UtPmlzQW5pbWF0
aW5nKCkgPyBJbWFnZUFuaW1hdGluZ1N0YXRlOjpZZXMgOiBJbWFnZUFuaW1hdGluZ1N0YXRlOjpO
bywgJnIpOwogICAgIH0KLSAgICAKKworICAgIGJvb2wgc2NoZWR1bGVUaW1lZFJlbmRlcmluZ1Vw
ZGF0ZSgpIGZpbmFsCisgICAgeworICAgICAgICBpZiAobV9pbWFnZSAmJiBtX2ltYWdlLT5pbWFn
ZU9ic2VydmVyKCkpCisgICAgICAgICAgICBtX2ltYWdlLT5pbWFnZU9ic2VydmVyKCktPnNjaGVk
dWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKm1faW1hZ2UpOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKICAgICBTVkdJbWFnZSogbV9pbWFnZTsKIH07CiAKSW5kZXg6IExheW91dFRlc3Rz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDI1OTgxMCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE3IEBACisyMDIwLTA0LTA4ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBh
cHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTjogQ1NTIGFuaW1hdGlvbnMgaW5zaWRlIGFu
IGVtYmVkZGVkIFNWRyBpbWFnZSBkbyBub3QgYW5pbWF0ZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5MzcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
U2ltb24gRnJhc2VyLgorCisgICAgICAgICogc3ZnL2FuaW1hdGlvbnMvY3NzLWFuaW1hdGlvbi1i
YWNrZ3JvdW5kLXN2Zy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvYW5pbWF0
aW9ucy9jc3MtYW5pbWF0aW9uLWJhY2tncm91bmQtc3ZnLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHN2Zy9hbmltYXRpb25zL2Nzcy1hbmltYXRpb24tZW1iZWRkZWQtc3ZnLWV4cGVjdGVkLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHN2Zy9hbmltYXRpb25zL2Nzcy1hbmltYXRpb24tZW1iZWRkZWQt
c3ZnLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN2Zy9hbmltYXRpb25zL2Nzcy1hbmltYXRpb24t
aG92ZXItc3ZnLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN2Zy9hbmltYXRpb25z
L2Nzcy1hbmltYXRpb24taG92ZXItc3ZnLmh0bWw6IEFkZGVkLgorCiAyMDIwLTA0LTA5ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBE
ZWJ1Z2dlcjogZGVidWcgaG9va3Mgc2hvdWxkIGFsc28gYmUgZW1pdHRlZCBmb3IgdGhlIGZpcnN0
IHN1Yi1leHByZXNzaW9uIGluIGEgY29tbWEgZXhwcmVzc2lvbgpJbmRleDogTGF5b3V0VGVzdHMv
c3ZnL2FuaW1hdGlvbnMvY3NzLWFuaW1hdGlvbi1iYWNrZ3JvdW5kLXN2Zy1leHBlY3RlZC5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL2Nzcy1hbmltYXRpb24t
YmFja2dyb3VuZC1zdmctZXhwZWN0ZWQuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0
cy9zdmcvYW5pbWF0aW9ucy9jc3MtYW5pbWF0aW9uLWJhY2tncm91bmQtc3ZnLWV4cGVjdGVkLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMSBAQAorPHN0eWxlPgorICAgCWRpdiB7Cisg
ICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgZGlz
cGxheTogaW5saW5lLWJsb2NrOworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKyAg
ICB9Cis8L3N0eWxlPgorPGJvZHk+CisJPGRpdj48L2Rpdj4KKzwvYm9keT4KSW5kZXg6IExheW91
dFRlc3RzL3N2Zy9hbmltYXRpb25zL2Nzcy1hbmltYXRpb24tYmFja2dyb3VuZC1zdmcuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9jc3MtYW5pbWF0aW9uLWJh
Y2tncm91bmQtc3ZnLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvc3ZnL2FuaW1h
dGlvbnMvY3NzLWFuaW1hdGlvbi1iYWNrZ3JvdW5kLXN2Zy5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMzkgQEAKKzxzdHlsZT4KKyAgICAuYm94IHsKKyAgICAgICAgd2lkdGg6IDEwMHB4
OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICBiYWNrZ3JvdW5kOiB1cmwoImRhdGE6
aW1hZ2Uvc3ZnK3htbDt1dGY4LCBcCisgICAgICAgICAgICAlM0NzdmcgeG1sbnM9J2h0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnJyUzRSBcCisgICAgICAgICAgICAgICAgJTNDc3R5bGUlM0UgXAor
ICAgICAgICAgICAgICAgICAgICBAa2V5ZnJhbWVzIGZhZGVpbiB7IFwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGZyb20geyBvcGFjaXR5OjA7IH0gXAorICAgICAgICAgICAgICAgICAgICAgICAg
dG8geyBvcGFjaXR5OjE7IH0gXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAg
ICAgICAgICAgI2dyZWVuIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uOiBm
YWRlaW4gMTZtczsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAl
M0Mvc3R5bGUlM0UgXAorICAgICAgICAgICAgICAgICUzQ3JlY3Qgd2lkdGg9JzEwMCUnIGhlaWdo
dD0nMTAwJScgZmlsbD0ncmVkJy8lM0UgXAorICAgICAgICAgICAgICAgICUzQ3JlY3QgaWQ9J2dy
ZWVuJyB3aWR0aD0nMTAwJScgaGVpZ2h0PScxMDAlJyBmaWxsPSdncmVlbicvJTNFIFwKKyAgICAg
ICAgICAgICUzQy9zdmclM0UiKTsKKyAgICB9Cis8L3N0eWxlPgorPGJvZHk+CisgICAgPGRpdiBj
bGFzcz0iYm94Ij48L2Rpdj4KKyAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuYWRkRXZlbnRM
aXN0ZW5lcignbG9hZCcsIChldmVudCkgPT4geworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCisg
ICAgICAgICAgICB2YXIgckFGQ291bnQgPSAwOworICAgICAgICAgICAgZnVuY3Rpb24gYW5pbWF0
ZSh0aW1lc3RhbXApIHsKKyAgICAgICAgICAgICAgICBpZiAoKytyQUZDb3VudCA8IDEwKQorICAg
ICAgICAgICAgICAgICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGFuaW1hdGUpOwor
ICAgICAgICAgICAgICAgIGVsc2UgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAg
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShhbmltYXRlKTsKKyAgICAgICAgfSk7
CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9u
cy9jc3MtYW5pbWF0aW9uLWVtYmVkZGVkLXN2Zy1leHBlY3RlZC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL2Nzcy1hbmltYXRpb24tZW1iZWRkZWQtc3ZnLWV4
cGVjdGVkLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMv
Y3NzLWFuaW1hdGlvbi1lbWJlZGRlZC1zdmctZXhwZWN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDExIEBACis8c3R5bGU+CisgICAJZGl2IHsKKyAgICAgICAgd2lkdGg6IDEwMHB4
OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7
CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworICAgIH0KKzwvc3R5bGU+Cis8Ym9k
eT4KKwk8ZGl2PjwvZGl2PgorPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlv
bnMvY3NzLWFuaW1hdGlvbi1lbWJlZGRlZC1zdmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9zdmcvYW5pbWF0aW9ucy9jc3MtYW5pbWF0aW9uLWVtYmVkZGVkLXN2Zy5odG1sCShub25l
eGlzdGVudCkKKysrIExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL2Nzcy1hbmltYXRpb24tZW1i
ZWRkZWQtc3ZnLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOCBAQAorPHN0eWxlPgor
ICAgIGltZyB7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsK
KyAgICB9Cis8L3N0eWxlPgorPGJvZHk+CisgICAgPGltZyBzcmM9J2RhdGE6aW1hZ2Uvc3ZnK3ht
bDt1dGY4LAorICAgICAgICA8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+
CisgICAgICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAgICAgQGtleWZyYW1lcyBmYWRlaW4g
eworICAgICAgICAgICAgICAgICAgICBmcm9tIHsgb3BhY2l0eTowOyB9CisgICAgICAgICAgICAg
ICAgICAgIHRvIHsgb3BhY2l0eToxOyB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICNncmVlbiB7IAorICAgICAgICAgICAgICAgICAgICBhbmltYXRpb246IGZhZGVpbiAxNm1z
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIDwvc3R5bGU+CisgICAgICAgICAgICA8
cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJyZWQiLz4KKyAgICAgICAgICAg
IDxyZWN0IGlkPSJncmVlbiIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0iZ3JlZW4i
Lz4KKyAgICAgICAgPC9zdmc+Jz4KKyAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuYWRkRXZl
bnRMaXN0ZW5lcignbG9hZCcsIChldmVudCkgPT4geworICAgICAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwor
CisgICAgICAgICAgICB2YXIgckFGQ291bnQgPSAwOworICAgICAgICAgICAgZnVuY3Rpb24gYW5p
bWF0ZSh0aW1lc3RhbXApIHsKKyAgICAgICAgICAgICAgICBpZiAoKytyQUZDb3VudCA8IDEwKQor
ICAgICAgICAgICAgICAgICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGFuaW1hdGUp
OworICAgICAgICAgICAgICAgIGVsc2UgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAg
ICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShhbmltYXRlKTsKKyAgICAgICAg
fSk7CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0
aW9ucy9jc3MtYW5pbWF0aW9uLWhvdmVyLXN2Zy1leHBlY3RlZC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL2Nzcy1hbmltYXRpb24taG92ZXItc3ZnLWV4cGVj
dGVkLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvY3Nz
LWFuaW1hdGlvbi1ob3Zlci1zdmctZXhwZWN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDExIEBACis8c3R5bGU+CisgICAJZGl2IHsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAg
ICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAg
ICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworICAgIH0KKzwvc3R5bGU+Cis8Ym9keT4KKwk8
ZGl2PjwvZGl2PgorPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvY3Nz
LWFuaW1hdGlvbi1ob3Zlci1zdmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcv
YW5pbWF0aW9ucy9jc3MtYW5pbWF0aW9uLWhvdmVyLXN2Zy5odG1sCShub25leGlzdGVudCkKKysr
IExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL2Nzcy1hbmltYXRpb24taG92ZXItc3ZnLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NCBAQAorPHN0eWxlPgorICAgIC5ib3ggeworICAg
ICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgIGJhY2tn
cm91bmQtY29sb3I6IHJlZDsKKyAgICB9CisgICAgLmhvdmVyIHsKKyAgICAgICAgYmFja2dyb3Vu
ZDogdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCBcCisgICAgICAgICAgICAl
M0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSBcCisgICAgICAgICAg
ICAgICAgJTNDc3R5bGUlM0UgXAorICAgICAgICAgICAgICAgICAgICBAa2V5ZnJhbWVzIGZhZGVp
biB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZyb20geyBvcGFjaXR5OjA7IH0gXAorICAg
ICAgICAgICAgICAgICAgICAgICAgdG8geyBvcGFjaXR5OjE7IH0gXAorICAgICAgICAgICAgICAg
ICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgI2dyZWVuIHsgXAorICAgICAgICAgICAgICAg
ICAgICAgICAgYW5pbWF0aW9uOiBmYWRlaW4gMTZtczsgXAorICAgICAgICAgICAgICAgICAgICB9
IFwKKyAgICAgICAgICAgICAgICAlM0Mvc3R5bGUlM0UgXAorICAgICAgICAgICAgICAgICUzQ3Jl
Y3Qgd2lkdGg9JzEwMCUnIGhlaWdodD0nMTAwJScgZmlsbD0ncmVkJy8lM0UgXAorICAgICAgICAg
ICAgICAgICUzQ3JlY3QgaWQ9J2dyZWVuJyB3aWR0aD0nMTAwJScgaGVpZ2h0PScxMDAlJyBmaWxs
PSdncmVlbicvJTNFIFwKKyAgICAgICAgICAgICUzQy9zdmclM0UiKTsKKyAgICB9Cis8L3N0eWxl
PgorPGJvZHk+CisgICAgPGRpdiBjbGFzcz0iYm94Ij48L2Rpdj4KKyAgICA8c2NyaXB0PgorICAg
ICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIChldmVudCkgPT4geworICAgICAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOworCisgICAgICAgICAgICB2YXIgckFGQ291bnQgPSAwOworICAgICAg
ICAgICAgZnVuY3Rpb24gYW5pbWF0ZSh0aW1lc3RhbXApIHsKKyAgICAgICAgICAgICAgICBpZiAo
KytyQUZDb3VudCA8IDEwKQorICAgICAgICAgICAgICAgICAgICB3aW5kb3cucmVxdWVzdEFuaW1h
dGlvbkZyYW1lKGFuaW1hdGUpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIGJveCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0
b3IoIi5ib3giKTsKKyAgICAgICAgICAgIGJveC5jbGFzc0xpc3QuYWRkKCdob3ZlcicpOworICAg
ICAgICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShhbmltYXRlKTsKKyAgICAgICAg
fSk7CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395988</attachid>
            <date>2020-04-09 12:22:51 -0700</date>
            <delta_ts>2020-04-09 14:46:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209370-20200409122250.patch</filename>
            <type>text/plain</type>
            <size>27395</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1OTgxMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc5IEBACisyMDIwLTA0LTA4ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lP
TjogQ1NTIGFuaW1hdGlvbnMgaW5zaWRlIGFuIGVtYmVkZGVkIFNWRyBpbWFnZSBkbyBub3QgYW5p
bWF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5
MzcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgIElmIFdl
YkFuaW1hdGlvbiBpcyBlbmFibGVkIGFuZCB0aGUgU1ZHSW1hZ2UgaW5jbHVkZXMgQ1NTIGFuaW1h
dGlvbnMsIHRoZQorICAgICAgICBEb2N1bWVudFRpbWVsaW5lIGlzIGFkZGVkIHRvIHRoZSBTVkdE
b2N1bWVudCBvZiB0aGUgZW1iZWRkZWQgU1ZHSW1hZ2UuCisgICAgICAgIEJlY2F1c2UgdGhlIFNW
R0ltYWdlIGhhcyBpdHMgb3duIFBhZ2UgdGhlIFJlbmRlcmluZ1VwZGF0ZSBpcyBzY2hlZHVsZWQK
KyAgICAgICAgYW5kIHRoZSB1cGRhdGVSZW5kZXJpbmcgc3RlcHMgcnVuIGluIHRoaXMgUGFnZS4K
KworICAgICAgICBUaGUgUGFnZSBvZiB0aGUgU1ZHSW1hZ2UgaXMgaW5hY3RpdmUgc3VjaCB0aGF0
IHNjaGVkdWxpbmcgUmVuZGVyaW5nVXBkYXRlCisgICAgICAgIGZhaWxzOyB0aGVyZWZvcmUgdGhl
IHVwZGF0ZVJlbmRlcmluZyBzdGVwcyBuZXZlciBydW4gYW5kIHRoZSBDU1MgYW5pbWF0aW9uCisg
ICAgICAgIG5ldmVyIGFkdmFuY2VzLgorCisgICAgICAgIFRoZSBmaXggaXM6CisKKyAgICAgICAg
MSkgU2NoZWR1bGluZyB0aGUgUmVuZGVyaW5nVXBkYXRlOiBUaGlzIGhhcyB0byBoYXBwZW4gaW4g
dGhlIFBhZ2Ugd2hpY2gKKyAgICAgICAgICAgY29udGFpbnMgdGhlIHJlbmRlcmVyIG9mIHRoZSBT
VkdJbWFnZS4gQmVjYXVzZSBEb2N1bWVudFRpbWVsaW5lIGlzCisgICAgICAgICAgIGFkZGVkIHRv
IFNWR0RvY3VtZW50LCB0aGlzIHNjaGVkdWxpbmcgd2lsbCBnbyB0aHJvdWdoIHRoZXNlIGh1YnM6
CisgICAgICAgICAgICAgICAgLSBEb2N1bWVudFRpbWVsaW5lCisgICAgICAgICAgICAgICAgLSBQ
YWdlCisgICAgICAgICAgICAgICAgLSBDaHJvbWVDbGllbnQgLT4gU1ZHSW1hZ2VDaHJvbWVDbGll
bnQgCisgICAgICAgICAgICAgICAgLSBTVkdJbWFnZQorICAgICAgICAgICAgICAgIC0gSW1hZ2VP
YnNlcnZlciAtPiBDYWNoZWRJbWFnZU9ic2VydmVyCisgICAgICAgICAgICAgICAgLSBDYWNoZWRJ
bWFnZQorICAgICAgICAgICAgICAgIC0gQ2FjaGVkSW1hZ2VDbGllbnQgLT4gUmVuZGVyRWxlbWVu
dAorICAgICAgICAgICAgICAgIC0gUGFnZQorCisgICAgICAgIDIpIFJ1bm5pbmcgdGhlIHVwZGF0
ZVJlbmRlcmluZyBzdGVwczogRWFjaCBkb2N1bWVudCBpbiB0aGUgUGFnZSB3aWxsCisgICAgICAg
ICAgIGVudW1lcmF0ZSBpdHMgY2FjaGVkIFNWR0ltYWdlcy4gVGhlIHVwZGF0ZVJlbmRlcmluZyBv
ZiB0aGUgUGFnZSBvZgorICAgICAgICAgICBlYWNoIFNWR0ltYWdlIHdpbGwgYmUgY2FsbGVkLgor
CisgICAgICAgIFRvIG1ha2UgZW51bWVyYXRpbmcgdGhlIGNhY2hlZCBTVkdJbWFnZXMgb2YgYSBE
b2N1bWVudCBmYXN0ZXIsIHRoZSBVUkwKKyAgICAgICAgb2YgdGhlIGNhY2hlZCBTVkdJbWFnZSB3
aWxsIGJlIGFkZGVkIHRvIHRoZSBjYWNoZWRTVkdJbWFnZXNVUkxzIG9mCisgICAgICAgIENhY2hl
ZFJlc291cmNlTG9hZGVyIHdoZW4gbm90aWZ5RmluaXNoZWQoKSBpcyBjYWxsZWQgZm9yIGFzc29j
aWF0ZWQKKyAgICAgICAgQ2FjaGVkSW1hZ2UuCisKKyAgICAgICAgVGVzdHM6IHN2Zy9hbmltYXRp
b25zL2Nzcy1hbmltYXRpb24tYmFja2dyb3VuZC1zdmcuaHRtbAorICAgICAgICAgICAgICAgc3Zn
L2FuaW1hdGlvbnMvY3NzLWFuaW1hdGlvbi1lbWJlZGRlZC1zdmcuaHRtbAorICAgICAgICAgICAg
ICAgc3ZnL2FuaW1hdGlvbnMvY3NzLWFuaW1hdGlvbi1ob3Zlci1zdmcuaHRtbAorCisgICAgICAg
ICogYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRUaW1lbGluZTo6c2NoZWR1bGVBbmltYXRpb25SZXNvbHV0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50VGltZWxpbmU6OnVwZGF0ZUFuaW1hdGlvbnNBbmRTZW5kRXZlbnRzKToK
KyAgICAgICAgKiBodG1sL0ltYWdlQml0bWFwLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6Omhhc1NWR0lt
YWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpDYWNoZWRJbWFnZU9i
c2VydmVyOjpzY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZEltYWdlOjpzY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2VDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlQ2xpZW50OjpzY2hl
ZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNTVkdJbWFnZUNhY2hlZFJl
c291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OmNhY2hlZFJlc291cmNlU1ZHSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OiBjb25zdCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlTG9hZGVyLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkNocm9tZUNsaWVudDo6c2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSk6Cisg
ICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNjaGVkdWxl
VGltZWRSZW5kZXJpbmdVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXBkYXRlUmVu
ZGVyaW5nKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZU9ic2VydmVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6c2NoZWR1bGVUaW1lZFJlbmRlcmluZ1Vw
ZGF0ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6
Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaDoKKyAg
ICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDbGllbnRzLmg6CisKIDIwMjAtMDQtMDggIFNp
bW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgW0FzeW5jIG92
ZXJmbG93IHNjcm9sbF0gSG9yaXpvbnRhbCBzY3JvbGxzIGNhbiB0cmlnZ2VyIHVud2FudGVkIGJh
Y2sgc3dpcGVzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGlu
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGlt
ZWxpbmUuY3BwCShyZXZpc2lvbiAyNTk4MTApCisrKyBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24v
RG9jdW1lbnRUaW1lbGluZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzOSw3ICszMzksNyBAQCB2
b2lkIERvY3VtZW50VGltZWxpbmU6OnNjaGVkdWxlQW5pbWF0aW9uCiAgICAgaWYgKCFzaG91bGRS
dW5VcGRhdGVBbmltYXRpb25zQW5kU2VuZEV2ZW50c0lnbm9yaW5nU3VzcGVuc2lvblN0YXRlKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZG9jdW1lbnQtPnBhZ2UoKS0+cmVuZGVyaW5nVXBk
YXRlU2NoZWR1bGVyKCkuc2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSgpOworICAgIG1fZG9j
dW1lbnQtPnBhZ2UoKS0+c2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSgpOwogICAgIG1fYW5p
bWF0aW9uUmVzb2x1dGlvblNjaGVkdWxlZCA9IHRydWU7CiB9CiAKQEAgLTM2NCw3ICszNjQsNiBA
QCB2b2lkIERvY3VtZW50VGltZWxpbmU6OnVwZGF0ZUN1cnJlbnRUaW1lCiAKIHZvaWQgRG9jdW1l
bnRUaW1lbGluZTo6dXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHMoKQogewotCiAgICAgLy8g
VXBkYXRpbmcgYW5pbWF0aW9ucyBhbmQgc2VuZGluZyBldmVudHMgbWF5IGludmFsaWRhdGUgdGhl
IHRpbWluZyBvZiBzb21lIGFuaW1hdGlvbnMsIHNvIHdlIG11c3Qgc2V0IHRoZSBtX2FuaW1hdGlv
blJlc29sdXRpb25TY2hlZHVsZWQKICAgICAvLyBmbGFnIHRvIGZhbHNlIHByaW9yIHRvIHJ1bm5p
bmcgdGhhdCBwcm9jZWR1cmUgdG8gYWxsb3cgYW5pbWF0aW9uIHdpdGggdGltaW5nIG1vZGVsIHVw
ZGF0ZXMgdG8gc2NoZWR1bGUgdXBkYXRlcy4KICAgICBtX2FuaW1hdGlvblJlc29sdXRpb25TY2hl
ZHVsZWQgPSBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCShyZXZp
c2lvbiAyNTk4MTApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTI4LDYgKzUyOCw3IEBAIHB1YmxpYzoKICAgICBib29sIGNhbkRlc3Ry
b3lEZWNvZGVkRGF0YShjb25zdCBJbWFnZSYpIG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAg
ICB2b2lkIGltYWdlRnJhbWVBdmFpbGFibGUoY29uc3QgSW1hZ2UmLCBJbWFnZUFuaW1hdGluZ1N0
YXRlLCBjb25zdCBJbnRSZWN0KiA9IG51bGxwdHIsIERlY29kaW5nU3RhdHVzID0gRGVjb2RpbmdT
dGF0dXM6OkludmFsaWQpIG92ZXJyaWRlIHsgfQogICAgIHZvaWQgY2hhbmdlZEluUmVjdChjb25z
dCBJbWFnZSYsIGNvbnN0IEludFJlY3QqID0gbnVsbHB0cikgb3ZlcnJpZGUgeyB9CisgICAgdm9p
ZCBzY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJikgb3ZlcnJpZGUgeyB9
CiAKIHByaXZhdGU6CiAgICAgSW1hZ2VCaXRtYXBJbWFnZU9ic2VydmVyKFN0cmluZyBtaW1lVHlw
ZSwgbG9uZyBsb25nIGV4cGVjdGVkQ29udGVudExlbmd0aCwgY29uc3QgVVJMJiBzb3VyY2VVcmwp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAJKHJl
dmlzaW9uIDI1OTgxMCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFn
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2OCw2ICsyNjgsMTEgQEAgSW1hZ2UqIENhY2hlZElt
YWdlOjppbWFnZUZvclJlbmRlcmVyKGNvbgogICAgIHJldHVybiBtX2ltYWdlLmdldCgpOwogfQog
Citib29sIENhY2hlZEltYWdlOjpoYXNTVkdJbWFnZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
aW1hZ2UgJiYgbV9pbWFnZS0+aXNTVkdJbWFnZSgpOworfQorCiB2b2lkIENhY2hlZEltYWdlOjpz
ZXRDb250YWluZXJDb250ZXh0Rm9yQ2xpZW50KGNvbnN0IENhY2hlZEltYWdlQ2xpZW50JiBjbGll
bnQsIGNvbnN0IExheW91dFNpemUmIGNvbnRhaW5lclNpemUsIGZsb2F0IGNvbnRhaW5lclpvb20s
IGNvbnN0IFVSTCYgaW1hZ2VVUkwpCiB7CiAgICAgaWYgKGNvbnRhaW5lclNpemUuaXNFbXB0eSgp
KQpAQCAtNDM0LDYgKzQzOSwxMiBAQCB2b2lkIENhY2hlZEltYWdlOjpDYWNoZWRJbWFnZU9ic2Vy
dmVyOjpjCiAgICAgICAgIGNhY2hlZEltYWdlLT5jaGFuZ2VkSW5SZWN0KGltYWdlLCByZWN0KTsK
IH0KIAordm9pZCBDYWNoZWRJbWFnZTo6Q2FjaGVkSW1hZ2VPYnNlcnZlcjo6c2NoZWR1bGVUaW1l
ZFJlbmRlcmluZ1VwZGF0ZShjb25zdCBJbWFnZSYgaW1hZ2UpCit7CisgICAgZm9yIChhdXRvIGNh
Y2hlZEltYWdlIDogbV9jYWNoZWRJbWFnZXMpCisgICAgICAgIGNhY2hlZEltYWdlLT5zY2hlZHVs
ZVRpbWVkUmVuZGVyaW5nVXBkYXRlKGltYWdlKTsKK30KKwogaW5saW5lIHZvaWQgQ2FjaGVkSW1h
Z2U6OmNsZWFySW1hZ2UoKQogewogICAgIGlmICghbV9pbWFnZSkKQEAgLTY4NCw2ICs2OTUsMTYg
QEAgdm9pZCBDYWNoZWRJbWFnZTo6Y2hhbmdlZEluUmVjdChjb25zdCBJbQogICAgIG5vdGlmeU9i
c2VydmVycyhyZWN0KTsKIH0KIAordm9pZCBDYWNoZWRJbWFnZTo6c2NoZWR1bGVUaW1lZFJlbmRl
cmluZ1VwZGF0ZShjb25zdCBJbWFnZSYgaW1hZ2UpCit7CisgICAgaWYgKCZpbWFnZSAhPSBtX2lt
YWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxD
YWNoZWRJbWFnZUNsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7CisgICAgd2hpbGUgKGF1dG8qIGNs
aWVudCA9IHdhbGtlci5uZXh0KCkpCisgICAgICAgIGNsaWVudC0+c2NoZWR1bGVUaW1lZFJlbmRl
cmluZ1VwZGF0ZSgpOworfQorCiBib29sIENhY2hlZEltYWdlOjpjdXJyZW50RnJhbWVLbm93blRv
QmVPcGFxdWUoY29uc3QgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIpCiB7CiAgICAgSW1hZ2UqIGlt
YWdlID0gaW1hZ2VGb3JSZW5kZXJlcihyZW5kZXJlcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAkocmV2aXNpb24gMjU5ODEwKQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDYg
KzU2LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlKiBpbWFnZSgpOyAvLyBS
ZXR1cm5zIHRoZSBudWxsSW1hZ2UoKSBpZiB0aGUgaW1hZ2UgaXMgbm90IGF2YWlsYWJsZSB5ZXQu
CiAgICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2UqIGltYWdlRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVy
T2JqZWN0Kik7IC8vIFJldHVybnMgdGhlIG51bGxJbWFnZSgpIGlmIHRoZSBpbWFnZSBpcyBub3Qg
YXZhaWxhYmxlIHlldC4KICAgICBib29sIGhhc0ltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pbWFn
ZS5nZXQoKTsgfQorICAgIGJvb2wgaGFzU1ZHSW1hZ2UoKSBjb25zdDsKICAgICBib29sIGN1cnJl
bnRGcmFtZUtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJFbGVtZW50Kik7CiAKICAgICBzdGQ6
OnBhaXI8SW1hZ2UqLCBmbG9hdD4gYnJva2VuSW1hZ2UoZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3Ip
IGNvbnN0OyAvLyBSZXR1cm5zIGFuIGltYWdlIGFuZCB0aGUgaW1hZ2UncyByZXNvbHV0aW9uIHNj
YWxlIGZhY3Rvci4KQEAgLTE1Miw2ICsxNTMsNyBAQCBwcml2YXRlOgogICAgICAgICBib29sIGNh
bkRlc3Ryb3lEZWNvZGVkRGF0YShjb25zdCBJbWFnZSYpIGZpbmFsOwogICAgICAgICB2b2lkIGlt
YWdlRnJhbWVBdmFpbGFibGUoY29uc3QgSW1hZ2UmLCBJbWFnZUFuaW1hdGluZ1N0YXRlLCBjb25z
dCBJbnRSZWN0KiBjaGFuZ2VSZWN0ID0gbnVsbHB0ciwgRGVjb2RpbmdTdGF0dXMgPSBEZWNvZGlu
Z1N0YXR1czo6SW52YWxpZCkgZmluYWw7CiAgICAgICAgIHZvaWQgY2hhbmdlZEluUmVjdChjb25z
dCBJbWFnZSYsIGNvbnN0IEludFJlY3QqKSBmaW5hbDsKKyAgICAgICAgdm9pZCBzY2hlZHVsZVRp
bWVkUmVuZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJikgZmluYWw7CiAKICAgICAgICAgSGFzaFNl
dDxDYWNoZWRJbWFnZSo+IG1fY2FjaGVkSW1hZ2VzOwogICAgIH07CkBAIC0xNjIsNiArMTY0LDcg
QEAgcHJpdmF0ZToKICAgICBib29sIGNhbkRlc3Ryb3lEZWNvZGVkRGF0YShjb25zdCBJbWFnZSYp
OwogICAgIHZvaWQgaW1hZ2VGcmFtZUF2YWlsYWJsZShjb25zdCBJbWFnZSYsIEltYWdlQW5pbWF0
aW5nU3RhdGUsIGNvbnN0IEludFJlY3QqIGNoYW5nZVJlY3QgPSBudWxscHRyLCBEZWNvZGluZ1N0
YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkKTsKICAgICB2b2lkIGNoYW5nZWRJblJlY3Qo
Y29uc3QgSW1hZ2UmLCBjb25zdCBJbnRSZWN0Kik7CisgICAgdm9pZCBzY2hlZHVsZVRpbWVkUmVu
ZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJik7CiAKICAgICB2b2lkIHVwZGF0ZUJ1ZmZlckludGVy
bmFsKFNoYXJlZEJ1ZmZlciYpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2VDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2VDbGllbnQuaAkocmV2aXNpb24gMjU5ODEwKQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ4LDYgKzQ4LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgVmlzaWJsZUluVmlld3BvcnRTdGF0
ZSBpbWFnZUZyYW1lQXZhaWxhYmxlKENhY2hlZEltYWdlJiBpbWFnZSwgSW1hZ2VBbmltYXRpbmdT
dGF0ZSwgY29uc3QgSW50UmVjdCogY2hhbmdlUmVjdCkgeyBpbWFnZUNoYW5nZWQoJmltYWdlLCBj
aGFuZ2VSZWN0KTsgcmV0dXJuIFZpc2libGVJblZpZXdwb3J0U3RhdGU6Ok5vOyB9CiAKICAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlQ2FjaGVkSW1hZ2VDbGllbnQoQ2FjaGVkSW1hZ2UmKSB7IH0K
KworICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCkgeyB9CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDI1OTgx
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZVRp
bWluZy5oIgogI2luY2x1ZGUgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgogI2luY2x1ZGUg
IlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKKyNpbmNsdWRlICJTVkdJbWFnZS5oIgogI2luY2x1
ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2lu
Y2x1ZGUgIlNlY3VyaXR5UG9saWN5LmgiCkBAIC03ODgsNiArNzg5LDIwIEBAIHN0YXRpYyBGZXRj
aE9wdGlvbnM6OkRlc3RpbmF0aW9uIGRlc3RpbmEKICAgICByZXR1cm4gRmV0Y2hPcHRpb25zOjpE
ZXN0aW5hdGlvbjo6RW1wdHlTdHJpbmc7CiB9CiAKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc1NWR0lt
YWdlQ2FjaGVkUmVzb3VyY2UoY29uc3QgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQoreworICAg
IGlmICghcmVzb3VyY2UgfHwgIWlzPENhY2hlZEltYWdlPigqcmVzb3VyY2UpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGRvd25jYXN0PENhY2hlZEltYWdlPigqcmVzb3VyY2Up
Lmhhc1NWR0ltYWdlKCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgU1ZHSW1hZ2UqIGNhY2hlZFJlc291
cmNlU1ZHSW1hZ2UoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQoreworICAgIGlmICghaXNTVkdJ
bWFnZUNhY2hlZFJlc291cmNlKHJlc291cmNlKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgcmV0dXJuIGRvd25jYXN0PFNWR0ltYWdlPihkb3duY2FzdDxDYWNoZWRJbWFnZT4oKnJlc291
cmNlKS5pbWFnZSgpKTsKK30KKwogUmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxl
PENhY2hlZFJlc291cmNlPj4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZShD
YWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBGb3JQcmVsb2FkIGZvclByZWxvYWQsIEltYWdlTG9hZGluZyBpbWFnZUxvYWRpbmcpCiB7CiAg
ICAgaWYgKCFmcmFtZSgpIHx8ICFmcmFtZSgpLT5wYWdlKCkpIHsKQEAgLTE0MDEsNiArMTQxNiwy
NSBAQCB2b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpkZWNyZW1lbnRSZXF1CiAgICAgQVNTRVJU
KG1fcmVxdWVzdENvdW50ID4gLTEpOwogfQogCit2b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpu
b3RpZnlGaW5pc2hlZChjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCit7CisgICAgaWYg
KGlzU1ZHSW1hZ2VDYWNoZWRSZXNvdXJjZSgmcmVzb3VyY2UpKQorICAgICAgICBtX2NhY2hlZFNW
R0ltYWdlc1VSTHMuYWRkKHJlc291cmNlLnVybCgpKTsKK30KKworVmVjdG9yPFJlZjxTVkdJbWFn
ZT4+IENhY2hlZFJlc291cmNlTG9hZGVyOjphbGxDYWNoZWRTVkdJbWFnZXMoKSBjb25zdAorewor
ICAgIFZlY3RvcjxSZWY8U1ZHSW1hZ2U+PiBhbGxDYWNoZWRTVkdJbWFnZXM7CisKKyAgICBmb3Ig
KGF1dG8mIGNhY2hlZFNWR0ltYWdlVVJMIDogbV9jYWNoZWRTVkdJbWFnZXNVUkxzKSB7CisgICAg
ICAgIGF1dG8qIHJlc291cmNlID0gY2FjaGVkUmVzb3VyY2UoY2FjaGVkU1ZHSW1hZ2VVUkwpOwor
ICAgICAgICBpZiAoYXV0byogaW1hZ2UgPSBjYWNoZWRSZXNvdXJjZVNWR0ltYWdlKHJlc291cmNl
KSkKKyAgICAgICAgICAgIGFsbENhY2hlZFNWR0ltYWdlcy5hcHBlbmQoKmltYWdlKTsKKyAgICB9
CisgICAgICAgIAorICAgIHJldHVybiBhbGxDYWNoZWRTVkdJbWFnZXM7Cit9CisKIFJlc291cmNl
RXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4+IENhY2hlZFJlc291
cmNlTG9hZGVyOjpwcmVsb2FkKENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIENhY2hlZFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiB7CiAgICAgaWYgKEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6d2lsbEludGVyY2VwdFJlcXVlc3QoZnJhbWUoKSwgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3Qo
KSkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMjU5ODEwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3
LDcgQEAgY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEltYWdlTG9h
ZGVyOwogY2xhc3MgUGFnZTsKK2NsYXNzIFNWR0ltYWdlOwogY2xhc3MgU2V0dGluZ3M7CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgpAQCAtMTE2LDYgKzExNyw5IEBAIHB1YmxpYzoKICAgICB0eXBl
ZGVmIEhhc2hNYXA8U3RyaW5nLCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4+
IERvY3VtZW50UmVzb3VyY2VNYXA7CiAgICAgY29uc3QgRG9jdW1lbnRSZXNvdXJjZU1hcCYgYWxs
Q2FjaGVkUmVzb3VyY2VzKCkgY29uc3QgeyByZXR1cm4gbV9kb2N1bWVudFJlc291cmNlczsgfQog
CisgICAgdm9pZCBub3RpZnlGaW5pc2hlZChjb25zdCBDYWNoZWRSZXNvdXJjZSYpOworICAgIFZl
Y3RvcjxSZWY8U1ZHSW1hZ2U+PiBhbGxDYWNoZWRTVkdJbWFnZXMoKSBjb25zdDsKKwogICAgIGJv
b2wgYXV0b0xvYWRJbWFnZXMoKSBjb25zdCB7IHJldHVybiBtX2F1dG9Mb2FkSW1hZ2VzOyB9CiAg
ICAgdm9pZCBzZXRBdXRvTG9hZEltYWdlcyhib29sKTsKIApAQCAtMTkzLDYgKzE5Nyw3IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBjYW5SZXF1ZXN0SW5Db250ZW50RGlzcG9zaXRpb25BdHRhY2htZW50
U2FuZGJveChDYWNoZWRSZXNvdXJjZTo6VHlwZSwgY29uc3QgVVJMJikgY29uc3Q7CiAKICAgICBI
YXNoU2V0PFN0cmluZz4gbV92YWxpZGF0ZWRVUkxzOworICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2Nh
Y2hlZFNWR0ltYWdlc1VSTHM7CiAgICAgbXV0YWJsZSBEb2N1bWVudFJlc291cmNlTWFwIG1fZG9j
dW1lbnRSZXNvdXJjZXM7CiAgICAgV2Vha1B0cjxEb2N1bWVudD4gbV9kb2N1bWVudDsKICAgICBE
b2N1bWVudExvYWRlciogbV9kb2N1bWVudExvYWRlcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DaHJv
bWVDbGllbnQuaAkocmV2aXNpb24gMjU5ODEwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DaHJv
bWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzE2LDYgKzMxNiw3IEBAIHB1YmxpYzoKICAg
ICAvLyBTZXRzIGEgZmxhZyB0byBzcGVjaWZ5IHRoYXQgdGhlIHZpZXcgbmVlZHMgdG8gYmUgdXBk
YXRlZCwgc28gd2UgbmVlZAogICAgIC8vIHRvIGRvIGFuIGVhZ2VyIGxheW91dCBiZWZvcmUgdGhl
IGRyYXdpbmcuCiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCkgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBzY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCkgeyByZXR1
cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgbmVlZHNJbW1lZGlhdGVSZW5kZXJpbmdVcGRh
dGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIC8vIFJldHVybnMgd2hldGhlciBvciBu
b3QgdGhlIGNsaWVudCBjYW4gcmVuZGVyIHRoZSBjb21wb3NpdGVkIGxheWVyLAogICAgIC8vIHJl
Z2FyZGxlc3Mgb2YgdGhlIHNldHRpbmdzLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lv
biAyNTk4MTApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQmFja0ZvcndhcmRDb250cm9sbGVyLmgiCiAj
aW5jbHVkZSAiQ1NTQW5pbWF0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkNhY2hlU3RvcmFn
ZVByb3ZpZGVyLmgiCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRl
ICJDaHJvbWUuaCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJDb25zdGFu
dFByb3BlcnR5TWFwLmgiCkBAIC0xMDQsNiArMTA1LDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZVVz
YWdlT3ZlcmxheS5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNs
dWRlICJTVkdEb2N1bWVudEV4dGVuc2lvbnMuaCIKKyNpbmNsdWRlICJTVkdJbWFnZS5oIgogI2lu
Y2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3JpcHREaXNhbGxvd2VkU2Nv
cGUuaCIKICNpbmNsdWRlICJTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuaCIKQEAgLTEyOTgs
NiArMTMwMCwxMyBAQCB2b2lkIFBhZ2U6OnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCkKICAgICBy
ZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIoKS5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOwogfQog
Cit2b2lkIFBhZ2U6OnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKQoreworICAgIGlmIChj
aHJvbWUoKS5jbGllbnQoKS5zY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCkpCisgICAgICAg
IHJldHVybjsKKyAgICByZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIoKS5zY2hlZHVsZVRpbWVkUmVu
ZGVyaW5nVXBkYXRlKCk7Cit9CisKIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVs
dGlwYWdlL3dlYmFwcGFwaXMuaHRtbCN1cGRhdGUtdGhlLXJlbmRlcmluZwogdm9pZCBQYWdlOjp1
cGRhdGVSZW5kZXJpbmcoKQogewpAQCAtMTM1MCw2ICsxMzU5LDEzIEBAIHZvaWQgUGFnZTo6dXBk
YXRlUmVuZGVyaW5nKCkKICAgICB9KTsKICNlbmRpZgogCisgICAgZm9yRWFjaERvY3VtZW50KFtd
IChEb2N1bWVudCYgZG9jdW1lbnQpIHsKKyAgICAgICAgZm9yIChhdXRvJiBpbWFnZSA6IGRvY3Vt
ZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCkuYWxsQ2FjaGVkU1ZHSW1hZ2VzKCkpIHsKKyAgICAg
ICAgICAgIGlmIChhdXRvKiBwYWdlID0gaW1hZ2UtPmludGVybmFsUGFnZSgpKQorICAgICAgICAg
ICAgICAgIHBhZ2UtPnVwZGF0ZVJlbmRlcmluZygpOworICAgICAgICB9CisgICAgfSk7CisKICAg
ICBsYXlvdXRJZk5lZWRlZCgpOwogICAgIGRvQWZ0ZXJVcGRhdGVSZW5kZXJpbmcoKTsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5oCShyZXZpc2lvbiAyNTk4MTApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDc4LDYgKzQ3OCw3IEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVJlbmRlcmluZygpOwogICAgIAogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICB2b2lkIHNjaGVkdWxl
VGltZWRSZW5kZXJpbmdVcGRhdGUoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3VzcGVu
ZFNjcmlwdGVkQW5pbWF0aW9ucygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzdW1lU2Ny
aXB0ZWRBbmltYXRpb25zKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZU9ic2VydmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VPYnNlcnZlci5oCShyZXZpc2lvbiAyNTk4MTApCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9ic2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTUwLDYgKzUwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBjYW5EZXN0cm95RGVjb2Rl
ZERhdGEoY29uc3QgSW1hZ2UmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGltYWdlRnJhbWVBdmFp
bGFibGUoY29uc3QgSW1hZ2UmLCBJbWFnZUFuaW1hdGluZ1N0YXRlLCBjb25zdCBJbnRSZWN0KiBj
aGFuZ2VSZWN0ID0gbnVsbHB0ciwgRGVjb2RpbmdTdGF0dXMgPSBEZWNvZGluZ1N0YXR1czo6SW52
YWxpZCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiwg
Y29uc3QgSW50UmVjdCogY2hhbmdlUmVjdCA9IG51bGxwdHIpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgc2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZShjb25zdCBJbWFnZSYpID0gMDsKIH07CiAK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDI1OTgxMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIlJlbmRlckVs
ZW1lbnQuaCIKIAogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKKyNpbmNsdWRlICJDYWNoZWRS
ZXNvdXJjZUxvYWRlci5oIgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5jbHVkZSAiQ29u
dGVudENoYW5nZU9ic2VydmVyLmgiCiAjZW5kaWYKQEAgLTEzMjQsMTIgKzEzMjUsMjMgQEAgVmlz
aWJsZUluVmlld3BvcnRTdGF0ZSBSZW5kZXJFbGVtZW50OjppbQogICAgIHJldHVybiBpc1Zpc2li
bGUgPyBWaXNpYmxlSW5WaWV3cG9ydFN0YXRlOjpZZXMgOiBWaXNpYmxlSW5WaWV3cG9ydFN0YXRl
OjpObzsKIH0KIAordm9pZCBSZW5kZXJFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNv
dXJjZSYgcmVzb3VyY2UpCit7CisgICAgZG9jdW1lbnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigp
Lm5vdGlmeUZpbmlzaGVkKHJlc291cmNlKTsKK30KKwogdm9pZCBSZW5kZXJFbGVtZW50OjpkaWRS
ZW1vdmVDYWNoZWRJbWFnZUNsaWVudChDYWNoZWRJbWFnZSYgY2FjaGVkSW1hZ2UpCiB7CiAgICAg
aWYgKGhhc1BhdXNlZEltYWdlQW5pbWF0aW9ucygpKQogICAgICAgICB2aWV3KCkucmVtb3ZlUmVu
ZGVyZXJXaXRoUGF1c2VkSW1hZ2VBbmltYXRpb25zKCp0aGlzLCBjYWNoZWRJbWFnZSk7CiB9CiAK
K3ZvaWQgUmVuZGVyRWxlbWVudDo6c2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSgpCit7Cisg
ICAgaWYgKGF1dG8qIHBhZ2UgPSBkb2N1bWVudCgpLnBhZ2UoKSkKKyAgICAgICAgcGFnZS0+c2No
ZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSgpOworfQorCiBib29sIFJlbmRlckVsZW1lbnQ6OnJl
cGFpbnRGb3JQYXVzZWRJbWFnZUFuaW1hdGlvbnNJZk5lZWRlZChjb25zdCBJbnRSZWN0JiB2aXNp
YmxlUmVjdCwgQ2FjaGVkSW1hZ2UmIGNhY2hlZEltYWdlKQogewogICAgIEFTU0VSVChtX2hhc1Bh
dXNlZEltYWdlQW5pbWF0aW9ucyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJFbGVtZW50LmgJKHJldmlzaW9uIDI1OTgxMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2Myw2ICsyNjMsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgdm9pZCBpbnNlcnRlZEludG9UcmVlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB3
aWxsQmVSZW1vdmVkRnJvbVRyZWUoKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxCZURlc3Ryb3ll
ZCgpIG92ZXJyaWRlOworICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKSBv
dmVycmlkZTsKIAogICAgIHZvaWQgc2V0UmVuZGVySW5saW5lQWx3YXlzQ3JlYXRlc0xpbmVCb3hl
cyhib29sIGIpIHsgbV9yZW5kZXJJbmxpbmVBbHdheXNDcmVhdGVzTGluZUJveGVzID0gYjsgfQog
ICAgIGJvb2wgcmVuZGVySW5saW5lQWx3YXlzQ3JlYXRlc0xpbmVCb3hlcygpIGNvbnN0IHsgcmV0
dXJuIG1fcmVuZGVySW5saW5lQWx3YXlzQ3JlYXRlc0xpbmVCb3hlczsgfQpAQCAtMzIwLDYgKzMy
MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBjYW5EZXN0cm95RGVjb2RlZERhdGEoKSBmaW5hbCB7
IHJldHVybiAhaXNWaXNpYmxlSW5WaWV3cG9ydCgpOyB9CiAgICAgVmlzaWJsZUluVmlld3BvcnRT
dGF0ZSBpbWFnZUZyYW1lQXZhaWxhYmxlKENhY2hlZEltYWdlJiwgSW1hZ2VBbmltYXRpbmdTdGF0
ZSwgY29uc3QgSW50UmVjdCogY2hhbmdlUmVjdCkgZmluYWw7CiAgICAgdm9pZCBkaWRSZW1vdmVD
YWNoZWRJbWFnZUNsaWVudChDYWNoZWRJbWFnZSYpIGZpbmFsOworICAgIHZvaWQgc2NoZWR1bGVU
aW1lZFJlbmRlcmluZ1VwZGF0ZSgpIGZpbmFsOwogCiAgICAgYm9vbCBnZXRMZWFkaW5nQ29ybmVy
KEZsb2F0UG9pbnQmIG91dHB1dCwgYm9vbCYgaW5zaWRlRml4ZWQpIGNvbnN0OwogICAgIGJvb2wg
Z2V0VHJhaWxpbmdDb3JuZXIoRmxvYXRQb2ludCYgb3V0cHV0LCBib29sJiBpbnNpZGVGaXhlZCkg
Y29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAJKHJl
dmlzaW9uIDI1OTgxMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQxOCw2ICs0MTgsOCBAQCB2b2lkIFJlbmRlckltYWdlOjpu
b3RpZnlGaW5pc2hlZChDYWNoZWRSCiAKICAgICBpZiAoaXM8SFRNTEltYWdlRWxlbWVudD4oZWxl
bWVudCgpKSkKICAgICAgICAgcGFnZSgpLmRpZEZpbmlzaExvYWRpbmdJbWFnZUZvckVsZW1lbnQo
ZG93bmNhc3Q8SFRNTEltYWdlRWxlbWVudD4oKmVsZW1lbnQoKSkpOworCisgICAgUmVuZGVyUmVw
bGFjZWQ6Om5vdGlmeUZpbmlzaGVkKG5ld0ltYWdlKTsKIH0KIAogdm9pZCBSZW5kZXJJbWFnZTo6
c2V0SW1hZ2VEZXZpY2VQaXhlbFJhdGlvKGZsb2F0IGZhY3RvcikKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCShyZXZpc2lvbiAyNTk4MTApCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNjgsNiArNjgs
OCBAQCBwdWJsaWM6CiAjaWYgVVNFKERJUkVDVDJEKQogICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2
ZUltYWdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBmaW5hbDsKICNlbmRpZgor
ICAgIAorICAgIFBhZ2UqIGludGVybmFsUGFnZSgpIHsgcmV0dXJuIG1fcGFnZS5nZXQoKTsgfQog
CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBTVkdJbWFnZUNocm9tZUNsaWVudDsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNsaWVudHMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDbGllbnRzLmgJKHJldmlz
aW9uIDI1OTgxMCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNsaWVu
dHMuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsMTQgQEAgcHJpdmF0ZToKIAogICAgICAg
ICBpbWFnZU9ic2VydmVyLT5pbWFnZUZyYW1lQXZhaWxhYmxlKCptX2ltYWdlLCBtX2ltYWdlLT5p
c0FuaW1hdGluZygpID8gSW1hZ2VBbmltYXRpbmdTdGF0ZTo6WWVzIDogSW1hZ2VBbmltYXRpbmdT
dGF0ZTo6Tm8sICZyKTsKICAgICB9Ci0gICAgCisKKyAgICBib29sIHNjaGVkdWxlVGltZWRSZW5k
ZXJpbmdVcGRhdGUoKSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKG1faW1hZ2UgJiYgbV9pbWFn
ZS0+aW1hZ2VPYnNlcnZlcigpKQorICAgICAgICAgICAgbV9pbWFnZS0+aW1hZ2VPYnNlcnZlcigp
LT5zY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCptX2ltYWdlKTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorCiAgICAgU1ZHSW1hZ2UqIG1faW1hZ2U7CiB9OwogCkluZGV4OiBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyNTk4MTApCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNyBAQAorMjAyMC0wNC0wOCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhh
bGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT046IENTUyBhbmltYXRpb25zIGlu
c2lkZSBhbiBlbWJlZGRlZCBTVkcgaW1hZ2UgZG8gbm90IGFuaW1hdGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTM3MAorCisgICAgICAgIFJldmll
d2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICAqIHN2Zy9hbmltYXRpb25zL2Nzcy1hbmlt
YXRpb24tYmFja2dyb3VuZC1zdmctZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogc3Zn
L2FuaW1hdGlvbnMvY3NzLWFuaW1hdGlvbi1iYWNrZ3JvdW5kLXN2Zy5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBzdmcvYW5pbWF0aW9ucy9jc3MtYW5pbWF0aW9uLWVtYmVkZGVkLXN2Zy1leHBlY3Rl
ZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvYW5pbWF0aW9ucy9jc3MtYW5pbWF0aW9uLWVt
YmVkZGVkLXN2Zy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvYW5pbWF0aW9ucy9jc3MtYW5p
bWF0aW9uLWhvdmVyLXN2Zy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvYW5p
bWF0aW9ucy9jc3MtYW5pbWF0aW9uLWhvdmVyLXN2Zy5odG1sOiBBZGRlZC4KKwogMjAyMC0wNC0w
OSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3Bl
Y3RvcjogRGVidWdnZXI6IGRlYnVnIGhvb2tzIHNob3VsZCBhbHNvIGJlIGVtaXR0ZWQgZm9yIHRo
ZSBmaXJzdCBzdWItZXhwcmVzc2lvbiBpbiBhIGNvbW1hIGV4cHJlc3Npb24KSW5kZXg6IExheW91
dFRlc3RzL3N2Zy9hbmltYXRpb25zL2Nzcy1hbmltYXRpb24tYmFja2dyb3VuZC1zdmctZXhwZWN0
ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9jc3MtYW5p
bWF0aW9uLWJhY2tncm91bmQtc3ZnLWV4cGVjdGVkLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5
b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvY3NzLWFuaW1hdGlvbi1iYWNrZ3JvdW5kLXN2Zy1leHBl
Y3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEgQEAKKzxzdHlsZT4KKyAgIAlk
aXYgeworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAg
ICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZ3Jl
ZW47CisgICAgfQorPC9zdHlsZT4KKzxib2R5PgorCTxkaXY+PC9kaXY+Cis8L2JvZHk+CkluZGV4
OiBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9jc3MtYW5pbWF0aW9uLWJhY2tncm91bmQtc3Zn
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvY3NzLWFuaW1h
dGlvbi1iYWNrZ3JvdW5kLXN2Zy5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL3N2
Zy9hbmltYXRpb25zL2Nzcy1hbmltYXRpb24tYmFja2dyb3VuZC1zdmcuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDM5IEBACis8c3R5bGU+CisgICAgLmJveCB7CisgICAgICAgIHdpZHRo
OiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgYmFja2dyb3VuZDogdXJs
KCJkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCwgXAorICAgICAgICAgICAgJTNDc3ZnIHhtbG5zPSdo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UgXAorICAgICAgICAgICAgICAgICUzQ3N0eWxl
JTNFIFwKKyAgICAgICAgICAgICAgICAgICAgQGtleWZyYW1lcyBmYWRlaW4geyBcCisgICAgICAg
ICAgICAgICAgICAgICAgICBmcm9tIHsgb3BhY2l0eTowOyB9IFwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHRvIHsgb3BhY2l0eToxOyB9IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAg
ICAgICAgICAgICAgICAgICNncmVlbiB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1h
dGlvbjogZmFkZWluIDE2bXM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAg
ICAgICAgJTNDL3N0eWxlJTNFIFwKKyAgICAgICAgICAgICAgICAlM0NyZWN0IHdpZHRoPScxMDAl
JyBoZWlnaHQ9JzEwMCUnIGZpbGw9J3JlZCcvJTNFIFwKKyAgICAgICAgICAgICAgICAlM0NyZWN0
IGlkPSdncmVlbicgd2lkdGg9JzEwMCUnIGhlaWdodD0nMTAwJScgZmlsbD0nZ3JlZW4nLyUzRSBc
CisgICAgICAgICAgICAlM0Mvc3ZnJTNFIik7CisgICAgfQorPC9zdHlsZT4KKzxib2R5PgorICAg
IDxkaXYgY2xhc3M9ImJveCI+PC9kaXY+CisgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmFk
ZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsKKworICAgICAgICAgICAgdmFyIHJBRkNvdW50ID0gMDsKKyAgICAgICAgICAgIGZ1bmN0aW9u
IGFuaW1hdGUodGltZXN0YW1wKSB7CisgICAgICAgICAgICAgICAgaWYgKCsrckFGQ291bnQgPCAx
MCkKKyAgICAgICAgICAgICAgICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShhbmlt
YXRlKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
ICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0ZSk7CisgICAg
ICAgIH0pOworICAgIDwvc2NyaXB0PgorPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2Fu
aW1hdGlvbnMvY3NzLWFuaW1hdGlvbi1lbWJlZGRlZC1zdmctZXhwZWN0ZWQuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9jc3MtYW5pbWF0aW9uLWVtYmVkZGVk
LXN2Zy1leHBlY3RlZC5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL3N2Zy9hbmlt
YXRpb25zL2Nzcy1hbmltYXRpb24tZW1iZWRkZWQtc3ZnLWV4cGVjdGVkLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxMSBAQAorPHN0eWxlPgorICAgCWRpdiB7CisgICAgICAgIHdpZHRo
OiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgZGlzcGxheTogaW5saW5l
LWJsb2NrOworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgICB9Cis8L3N0eWxl
PgorPGJvZHk+CisJPGRpdj48L2Rpdj4KKzwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL3N2Zy9h
bmltYXRpb25zL2Nzcy1hbmltYXRpb24tZW1iZWRkZWQtc3ZnLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvY3NzLWFuaW1hdGlvbi1lbWJlZGRlZC1zdmcuaHRt
bAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9jc3MtYW5pbWF0
aW9uLWVtYmVkZGVkLXN2Zy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzggQEAKKzxz
dHlsZT4KKyAgICBpbWcgeworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDog
MTAwcHg7CisgICAgfQorPC9zdHlsZT4KKzxib2R5PgorICAgIDxpbWcgc3JjPSdkYXRhOmltYWdl
L3N2Zyt4bWw7dXRmOCwKKyAgICAgICAgPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciPgorICAgICAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgICAgIEBrZXlmcmFtZXMg
ZmFkZWluIHsKKyAgICAgICAgICAgICAgICAgICAgZnJvbSB7IG9wYWNpdHk6MDsgfQorICAgICAg
ICAgICAgICAgICAgICB0byB7IG9wYWNpdHk6MTsgfQorICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAjZ3JlZW4geyAKKyAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uOiBmYWRl
aW4gMTZtczsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICA8L3N0eWxlPgorICAgICAg
ICAgICAgPHJlY3Qgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0icmVkIi8+CisgICAg
ICAgICAgICA8cmVjdCBpZD0iZ3JlZW4iIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9
ImdyZWVuIi8+CisgICAgICAgIDwvc3ZnPic+CisgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93
LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsKKworICAgICAgICAgICAgdmFyIHJBRkNvdW50ID0gMDsKKyAgICAgICAgICAgIGZ1bmN0
aW9uIGFuaW1hdGUodGltZXN0YW1wKSB7CisgICAgICAgICAgICAgICAgaWYgKCsrckFGQ291bnQg
PCAxMCkKKyAgICAgICAgICAgICAgICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShh
bmltYXRlKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0ZSk7Cisg
ICAgICAgIH0pOworICAgIDwvc2NyaXB0PgorPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvc3Zn
L2FuaW1hdGlvbnMvY3NzLWFuaW1hdGlvbi1ob3Zlci1zdmctZXhwZWN0ZWQuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9jc3MtYW5pbWF0aW9uLWhvdmVyLXN2
Zy1leHBlY3RlZC5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL3N2Zy9hbmltYXRp
b25zL2Nzcy1hbmltYXRpb24taG92ZXItc3ZnLWV4cGVjdGVkLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxMSBAQAorPHN0eWxlPgorICAgCWRpdiB7CisgICAgICAgIHdpZHRoOiAxMDBw
eDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2Nr
OworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgICB9Cis8L3N0eWxlPgorPGJv
ZHk+CisJPGRpdj48L2Rpdj4KKzwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL3N2Zy9hbmltYXRp
b25zL2Nzcy1hbmltYXRpb24taG92ZXItc3ZnLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvc3ZnL2FuaW1hdGlvbnMvY3NzLWFuaW1hdGlvbi1ob3Zlci1zdmcuaHRtbAkobm9uZXhpc3Rl
bnQpCisrKyBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9jc3MtYW5pbWF0aW9uLWhvdmVyLXN2
Zy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDQgQEAKKzxzdHlsZT4KKyAgICAuYm94
IHsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7CisgICAgfQorICAgIC5ob3ZlciB7CisgICAgICAgIGJh
Y2tncm91bmQ6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwgXAorICAgICAg
ICAgICAgJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UgXAorICAg
ICAgICAgICAgICAgICUzQ3N0eWxlJTNFIFwKKyAgICAgICAgICAgICAgICAgICAgQGtleWZyYW1l
cyBmYWRlaW4geyBcCisgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHsgb3BhY2l0eTowOyB9
IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIHsgb3BhY2l0eToxOyB9IFwKKyAgICAgICAg
ICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgICNncmVlbiB7IFwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGFuaW1hdGlvbjogZmFkZWluIDE2bXM7IFwKKyAgICAgICAgICAgICAg
ICAgICAgfSBcCisgICAgICAgICAgICAgICAgJTNDL3N0eWxlJTNFIFwKKyAgICAgICAgICAgICAg
ICAlM0NyZWN0IHdpZHRoPScxMDAlJyBoZWlnaHQ9JzEwMCUnIGZpbGw9J3JlZCcvJTNFIFwKKyAg
ICAgICAgICAgICAgICAlM0NyZWN0IGlkPSdncmVlbicgd2lkdGg9JzEwMCUnIGhlaWdodD0nMTAw
JScgZmlsbD0nZ3JlZW4nLyUzRSBcCisgICAgICAgICAgICAlM0Mvc3ZnJTNFIik7CisgICAgfQor
PC9zdHlsZT4KKzxib2R5PgorICAgIDxkaXYgY2xhc3M9ImJveCI+PC9kaXY+CisgICAgPHNjcmlw
dD4KKyAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCAoZXZlbnQpID0+IHsK
KyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworICAgICAgICAgICAgdmFyIHJBRkNvdW50ID0gMDsK
KyAgICAgICAgICAgIGZ1bmN0aW9uIGFuaW1hdGUodGltZXN0YW1wKSB7CisgICAgICAgICAgICAg
ICAgaWYgKCsrckFGQ291bnQgPCAxMCkKKyAgICAgICAgICAgICAgICAgICAgd2luZG93LnJlcXVl
c3RBbmltYXRpb25GcmFtZShhbmltYXRlKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciBib3ggPSBkb2N1bWVudC5xdWVy
eVNlbGVjdG9yKCIuYm94Iik7CisgICAgICAgICAgICBib3guY2xhc3NMaXN0LmFkZCgnaG92ZXIn
KTsKKyAgICAgICAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0ZSk7Cisg
ICAgICAgIH0pOworICAgIDwvc2NyaXB0PgorPC9ib2R5Pgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>