<?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>181757</bug_id>
          
          <creation_ts>2018-01-17 11:47:12 -0800</creation_ts>
          <short_desc>[WPE][GTK] Content disappearing when using CSS transforms</short_desc>
          <delta_ts>2019-07-01 01:01:27 -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>WPE WebKit</component>
          <version>WebKit Local Build</version>
          <rep_platform>Other</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Steffen Deusch">steffen</reporter>
          <assigned_to name="Miguel Gomez">magomez</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>cadubentzen</cc>
    
    <cc>cgarcia</cc>
    
    <cc>clopez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>magomez</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>nikola.veljkovic</cc>
    
    <cc>sylvain</cc>
    
    <cc>wouter</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1390141</commentid>
    <comment_count>0</comment_count>
    <who name="Steffen Deusch">steffen</who>
    <bug_when>2018-01-17 11:47:12 -0800</bug_when>
    <thetext>Hello everyone,
I noticed a rather critical bug using the WPE WebKit port. I already opened an issue in the WPEWebKit repo on GitHub, but Wouter van Boessschoten (w.van.boesschoten@metrological.com) told me to file a report here too.
The original issue is located here: https://github.com/WebPlatformForEmbedded/WPEWebKit/issues/434#issue-286382861

Summary: When using CSS transforms to create a scrolling element animation, the animated content simply disappears after a while:
https://s3.eu-central-1.amazonaws.com/steffend/public/wpe-test-rpi3/rss-scroller/vid.mp4
Notice, that as soon as another element changes, the content appears again (keep an eye on the &apos;random&apos; value), until it abruptly stops again.
Repro: https://s3.eu-central-1.amazonaws.com/steffend/public/wpe-test-rpi3/rss-scroller/rss.html

Another example with the same issue: https://s3.eu-central-1.amazonaws.com/steffend/public/webkitbug/WPEScrollBug.mp4 (this should be an endlessly scrolling table)
Repro: https://s3.eu-central-1.amazonaws.com/steffend/public/webkitbug/scrolling.html

Opening these pages in Safari/Firefox/Chromium works as expected (apart from https://bugs.webkit.org/show_bug.cgi?id=181709).

Hardware: Raspberry Pi 3
Build method: WPE Buildroot (https://github.com/WebPlatformForEmbedded/buildroot), same using Yocto (https://github.com/WebPlatformForEmbedded/meta-wpe) + Westeros.
WPE commit id: 959d9b1d2555da0ce65bd0198bc509dd08e9f910 (doesn&apos;t matter, same problem in every version I tested, master and stable)

As I am using these animation techniques in production, I am currently forced to use Chromium-based boxes, but I&apos;d appreciate using a custom-built RPi image much more.

Thanks for any help!
Steffen Deusch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1390153</commentid>
    <comment_count>1</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-01-17 12:15:34 -0800</bug_when>
    <thetext>I can reproduce with WebKitGTK+, with both trunk and 2.18.5. Looks like the problem is caused by accelerated compositing mode, so if you need a workaround you can set the environment variable WEBKIT_DISABLE_COMPOSITING_MODE=1.

(In reply to Steffen Deusch from comment #0)
&gt; https://s3.eu-central-1.amazonaws.com/steffend/public/wpe-test-rpi3/rss-
&gt; scroller/vid.mp4

If you need to post videos in the future, please use .webm so we can all watch them. Doesn&apos;t matter this time, since you have a nice test page that shows the issue clearly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1390159</commentid>
    <comment_count>2</comment_count>
    <who name="Steffen Deusch">steffen</who>
    <bug_when>2018-01-17 12:27:09 -0800</bug_when>
    <thetext>&gt; if you need a workaround you can set the environment variable WEBKIT_DISABLE_COMPOSITING_MODE=1
I tried adding export WEBKIT_DISABLE_COMPOSITING_MODE=1 to /usr/bin/wpe, but this didn&apos;t work. Manually exporting it and using WPELauncher didn&apos;t work either. Setting other env vars in /usr/bin/wpe does work as I can enable and disable WEBKIT_SHOW_FPS.

Disabling HW Compositing would make performance much worse, wouldn&apos;t it? I guess I&apos;ll have to wait until someone finds the root cause of this issue.

&gt; please use .webm so we can all watch them
This is actually a problem, since Safari users cannot play .webm files :/
Quite sad that video codecs are still such an issue on the web. Uploading them to Google Drive or YouTube should work, so maybe I&apos;ll do this the next time!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1390166</commentid>
    <comment_count>3</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-01-17 12:44:07 -0800</bug_when>
    <thetext>(In reply to Steffen Deusch from comment #2)
&gt; &gt; if you need a workaround you can set the environment variable WEBKIT_DISABLE_COMPOSITING_MODE=1
&gt; I tried adding export WEBKIT_DISABLE_COMPOSITING_MODE=1 to /usr/bin/wpe, but
&gt; this didn&apos;t work. Manually exporting it and using WPELauncher didn&apos;t work
&gt; either. Setting other env vars in /usr/bin/wpe does work as I can enable and
&gt; disable WEBKIT_SHOW_FPS.

Apparently this is a GTK-specific environment variable. Come to think of it, I think it&apos;s not actually possible to disable AC mode in WPE: I notice our hardware acceleration API does not exist there, so likely not. Possibly for the better.

But at least we now know that the problem lies somewhere in that part of the code.

&gt; Disabling HW Compositing would make performance much worse, wouldn&apos;t it?

On a Raspberry Pi, probably yes. I&apos;m afraid users are starting to think of it as a magic environment variable that makes WebKit work properly. Even some applications have started using it, which is sad....

&gt; This is actually a problem, since Safari users cannot play .webm files :/
&gt; Quite sad that video codecs are still such an issue on the web. Uploading
&gt; them to Google Drive or YouTube should work, so maybe I&apos;ll do this the next
&gt; time!

:(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1390254</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2018-01-17 15:56:21 -0800</bug_when>
    <thetext>WPE doesn&apos;t support running without accelerated composing mode (AFAIK).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1390438</commentid>
    <comment_count>5</comment_count>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2018-01-18 00:16:51 -0800</bug_when>
    <thetext>(In reply to Carlos Alberto Lopez Perez from comment #4)
&gt; WPE doesn&apos;t support running without accelerated composing mode (AFAIK).

It doesn&apos;t. AC is always enabled and cannot be disabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394057</commentid>
    <comment_count>6</comment_count>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2018-01-29 05:41:17 -0800</bug_when>
    <thetext>This is reproducible in wkgtk as well, and doesn&apos;t happen disabling AC there. At first look, it seems that there is a problem updating the tiles of the backingStore where the scrolling text is shown. Maybe the tiles are not properly drawn by cairo or maybe they are not properly uploaded for the composition.

Seems to happen every now and then, but only the first time a tile is shown. If something causes a redraw (like the random number changing), they are refreshed and the content is properly shown. I&apos;ll dig into it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1395382</commentid>
    <comment_count>7</comment_count>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2018-02-01 01:22:06 -0800</bug_when>
    <thetext>I found the cause of the problem. It happens when animating a layer that has a backingStore and an animation that causes the visible rect of the backingStore to change.

In a normal case, a layer is animated by the compositing thread, recalculating its transformation matrix as needed in its TextureMapperLayer, and no layer flushes are required for this.

But when using a backingStore whose visible rect can change due to the animation, we need to perform a layer flush because that&apos;s what recalculates the visible rect and creates the needed tiles in the backingStore. As we are not doing so, once the animation advances and the visible rect goes out of the initially created tiles nothing gets rendered inside the layer.

When the random number in the page changes, that causes a layer flush and updates the tiles in the animated layer, that&apos;s why it becomes visible at that point. Eventually the visible rect moves out of the current tiles again and the content disappears again.

We need to force a layer flush in the case of animations where the visible rect changes and require creating new tiles.

I&apos;m lacking time to prepare a fix for this now, but I&apos;ll keep working on it as soon as I have time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397136</commentid>
    <comment_count>8</comment_count>
      <attachid>333278</attachid>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2018-02-07 03:38:27 -0800</bug_when>
    <thetext>Created attachment 333278
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397143</commentid>
    <comment_count>9</comment_count>
      <attachid>333278</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-02-07 05:52:08 -0800</bug_when>
    <thetext>Comment on attachment 333278
Patch

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

&gt; Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:48
&gt; +// tiles, and to use layer flushes on layers bigget than that so we don&apos;t waste too much memory.

bigger</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1404319</commentid>
    <comment_count>10</comment_count>
      <attachid>333278</attachid>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2018-03-07 05:09:40 -0800</bug_when>
    <thetext>Comment on attachment 333278
Patch

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

&gt; Source/WebCore/ChangeLog:20
&gt; +
&gt; +        No new tests, no behavior change.
&gt; +

I think &quot;no behaviour change&quot; is not accurate.
Either this is covered by existing tests (and this patch makes failing tests to start passing) or some new test should be added.
Hopefully is relatively easy to convert the test case added here as repro to a layout test one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405574</commentid>
    <comment_count>11</comment_count>
      <attachid>333278</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-03-11 12:56:31 -0700</bug_when>
    <thetext>Comment on attachment 333278
Patch

I don&apos;t like this approach too much because of the extra timer, continuous flushing, continuous updating originating from the compositor thread, extra layer tree traversal via descendantsAndSelfAnimationsCanBeRunOnCompositor(). I don&apos;t have an alternative to offer, but I want to understand the backing store management in CoordinatedGraphicsLayer before proceeding here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405681</commentid>
    <comment_count>12</comment_count>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2018-03-12 01:50:23 -0700</bug_when>
    <thetext>(In reply to Zan Dobersek from comment #11)
&gt; Comment on attachment 333278 [details]
&gt; Patch
&gt; 
&gt; I don&apos;t like this approach too much because of the extra timer, continuous
&gt; flushing, continuous updating originating from the compositor thread, extra
&gt; layer tree traversal via descendantsAndSelfAnimationsCanBeRunOnCompositor().
&gt; I don&apos;t have an alternative to offer, but I want to understand the backing
&gt; store management in CoordinatedGraphicsLayer before proceeding here.

Another option could be having a timer in CoordinatedGraphicsLayer that checked whether the rendered rectangle is covered by the backingStore tiles, and caused a layer flush when needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444671</commentid>
    <comment_count>13</comment_count>
    <who name="Sylvain Garrigues">sylvain</who>
    <bug_when>2018-07-24 07:40:37 -0700</bug_when>
    <thetext>I confirm the attached patch solves this problem, although it seems to introduce a slightly visible performance penalty.

I filmed the bug as it appeared:
https://www.sylvaingarrigues.com/tv.mp4

And now with this patch:
https://www.sylvaingarrigues.com/tv-patched.mp4
You can see some performance problems in the ease-out part of the transition.

The test website is:
https://www.sylvaingarrigues.com/CladBox/index.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444674</commentid>
    <comment_count>14</comment_count>
    <who name="Sylvain Garrigues">sylvain</who>
    <bug_when>2018-07-24 07:43:22 -0700</bug_when>
    <thetext>(my issue originally reported here: https://github.com/WebPlatformForEmbedded/WPEWebKit/issues/511)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520848</commentid>
    <comment_count>15</comment_count>
    <who name="Nikola Veljkovic">nikola.veljkovic</who>
    <bug_when>2019-03-25 06:50:49 -0700</bug_when>
    <thetext>Hi, 
We are still hitting this issue on WPE 2.22.

@Zan, @Miguel: Is there a plan to fix this issue in a better way?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522879</commentid>
    <comment_count>16</comment_count>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2019-04-01 01:09:19 -0700</bug_when>
    <thetext>(In reply to Nikola Veljkovic from comment #15)
&gt; Hi, 
&gt; We are still hitting this issue on WPE 2.22.
&gt; 
&gt; @Zan, @Miguel: Is there a plan to fix this issue in a better way?

I&apos;m working on a fix, but I don&apos;t have a lot of time for it. Give me some days more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1526687</commentid>
    <comment_count>17</comment_count>
      <attachid>367306</attachid>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2019-04-12 02:26:45 -0700</bug_when>
    <thetext>Created attachment 367306
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1526690</commentid>
    <comment_count>18</comment_count>
      <attachid>367307</attachid>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2019-04-12 02:45:40 -0700</bug_when>
    <thetext>Created attachment 367307
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1526706</commentid>
    <comment_count>19</comment_count>
      <attachid>367307</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-04-12 04:20:25 -0700</bug_when>
    <thetext>Comment on attachment 367307
Patch

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

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:691
&gt; +    m_animations.apply(futureApplicationResults, time + Seconds::fromMilliseconds(50));

50_ms

&gt; Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:650
&gt; +class CoordinatedAnimatedBackingStoreClient : public AnimatedBackingStoreClient {

final

&gt; Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:652
&gt; +    CoordinatedAnimatedBackingStoreClient(RefPtr&lt;CoordinatedGraphicsLayer::AnimatedBackingStoreHost&gt;&amp;&amp; host, FloatRect visibleRect, FloatRect coverRect, FloatSize size, float contentsScale)

use const FloatRect&amp; for the FloatRect parameters, or &amp;&amp; if they are transferred, but I don&apos;t think that&apos;s the case.

&gt; Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:658
&gt; +    { }

Since it&apos;s refcounted, I would provide a create() rerturning a Ref&lt;&gt; and make the constructor private.

&gt; Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:661
&gt; +    void setCoverRect(IntRect rect) { m_coverRect = rect; }

const IntRect&amp;

&gt; Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:662
&gt; +    void requestBackingStoreUpdateIfNeeded(TransformationMatrix&amp; transform) final

is transform expected to be changed here, or should it be const?

&gt; Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:754
&gt; +        m_nicosia.animatedBackingStoreClient = adoptRef(new CoordinatedAnimatedBackingStoreClient(m_animatedBackingStoreHost.copyRef(), m_coordinator-&gt;visibleContentsRect(), IntRect(0, 0, 0, 0), m_size, effectiveContentsScale()));

I think you can use { } instead of IntRect(0, 0, 0, 0)

&gt; Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h:130
&gt; +        AnimatedBackingStoreHost(CoordinatedGraphicsLayer* layer)

explicit. I think it should receive a reference, even when we store the pointer because it&apos;s made nullptr later, but the constructor is always expected to receive a non null layer, right?

&gt; Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h:132
&gt; +        { }

I would add a create() here too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1526722</commentid>
    <comment_count>20</comment_count>
      <attachid>367319</attachid>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2019-04-12 06:04:40 -0700</bug_when>
    <thetext>Created attachment 367319
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1528067</commentid>
    <comment_count>21</comment_count>
      <attachid>367319</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2019-04-17 03:47:40 -0700</bug_when>
    <thetext>Comment on attachment 367319
Patch

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

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:691
&gt; +    m_animations.apply(futureApplicationResults, time + 50_ms);

This second call into TextureMapperAnimation::apply() can still change the state of m_animations. I think that&apos;s possibly problematic.

&gt; Source/WebCore/platform/graphics/texmap/coordinated/AnimatedBackingStoreClient.h:35
&gt; +namespace WebCore {

This interface should be in the Nicosia namespace, and under platform/graphics/nicosia/. This way it won&apos;t cause problems in non-CoordinatedGraphics configurations.

&gt; Source/WebCore/platform/graphics/texmap/coordinated/AnimatedBackingStoreClient.h:39
&gt; +class AnimatedBackingStoreClient : public RefCounted&lt;AnimatedBackingStoreClient&gt; {

ThreadSafeRefCounted

&gt; Source/WebCore/platform/graphics/texmap/coordinated/AnimatedBackingStoreClient.h:41
&gt; +    virtual ~AnimatedBackingStoreClient() { };

= default;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1544723</commentid>
    <comment_count>22</comment_count>
      <attachid>372118</attachid>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2019-06-14 02:20:49 -0700</bug_when>
    <thetext>Created attachment 372118
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1549152</commentid>
    <comment_count>23</comment_count>
      <attachid>372118</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-07-01 01:01:25 -0700</bug_when>
    <thetext>Comment on attachment 372118
Patch

Clearing flags on attachment: 372118

Committed r246963: &lt;https://trac.webkit.org/changeset/246963&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1549153</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-07-01 01:01:27 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333278</attachid>
            <date>2018-02-07 03:38:27 -0800</date>
            <delta_ts>2019-04-12 02:26:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181757-20180207123826.patch</filename>
            <type>text/plain</type>
            <size>13854</size>
            <attacher name="Miguel Gomez">magomez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4MjE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmUwMjBlOGUyN2QyNGMw
YzM3YjNkMWQ5NGYwMDM4NjUxNzQ4ZmUyMS4uYzUzZTVjMTFmZWFhNzU1MGY4NmMwMzQ1MWZlZTlm
MmFkN2JkN2Q4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE4LTAyLTA3ICBNaWd1
ZWwgR29tZXogIDxtYWdvbWV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW1dQRV1bR1RLXSBDb250
ZW50IGRpc2FwcGVhcmluZyB3aGVuIHVzaW5nIENTUyB0cmFuc2Zvcm1zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODE3NTcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggdGhlIHNpdHVhdGlvbiB3aGVu
IGEgbGF5ZXIgd2l0aCBhIGJhY2tpbmdTdG9yZSBpcyBhbmltYXRlZC4gQmVmb3JlIHRoaXMgcGF0
Y2gsIHRoZSBsYXllciB3b3VsZCBjcmVhdGUKKyAgICAgICAgdGhlIHRpbGVzIHJlcXVpcmVkIGZv
ciB0aGUgdmlzaWJsZSByZWN0IG9uY2UsIGFuZCBsZXQgdGhlIGFuaW1hdGlvbiBoYXBwZW4gaW4g
dGhlIGNvbXBpc2l0b3IgdGhyZWFkLCBidXQKKyAgICAgICAgYXMgdGhlIHRpbGVzIHdvdWxkbid0
IGJlIHVwZGF0ZSBhbnltb3JlLCB0aGUgYW5pbWF0aW9uIHdvdWxkIHN0b3Agc2hvd2luZyBjb250
ZW50IG9uY2UgdGhlIHZpc2libGUgcmVjdAorICAgICAgICBtb3ZlZCBvdXQgb2YgdGhlIHJlY3Qg
Y292ZXJlZCBieSB0aGUgdGlsZXMuCisKKyAgICAgICAgV2l0aCB0aGlzIHBhdGNoLCB0aGVyZSBh
cmUgMiBvcHRpb25zOiBpZiB0aGUgbGF5ZXIgaXMgbm90IHRvbyBiaWcsIGFsbCB0aGUgdGlsZXMg
YXJlIGNyZWF0ZWQgZm9yIGl0cworICAgICAgICBiYWNraW5nU3RvcmUgYW5kIHRoZSBhbmltYXRp
b24gaXMgaGFuZGxlZCBvbiB0aGUgY29tcG9zaXRvciB0aHJlYWQuIElmIHRoZSBsYXllciBpcyB0
b28gYmlnLCB0aGVuIG9ubHkKKyAgICAgICAgdGhlIHRpbGVzIHJlcXVpcmVkIGJ5IHRoZSB2aXNp
YmxlIHJlY3QgYXJlIGNyZWF0ZWQsIGFuZCB0aGV5IGFyZSB1cGRhdGVkIGVhY2ggZnJhbWUuIElu
IHRoaXMgc2l0dWF0aW9uCisgICAgICAgIHRoZXJlIGFyZSBsYXllciBmbHVzaGVzIGhhcHBlbmlu
ZyBlYWNoIGZyYW1lIHRvIHVwZGF0ZSB0aGUgdGlsZXMsIGFuZCB3ZSB0ZWxsIHRoZSBjb21wb3Np
dG9yIHRocmVhZCBub3QKKyAgICAgICAgdG8gaGFuZGxlIGFueSBhbmltYXRpb24uCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLCBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0Q2FuQW5pbWF0ZU9uQ29tcG9zaXRvcik6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OmRlc2NlbmRhbnRzQW5kU2VsZkFuaW1h
dGlvbnNDYW5CZVJ1bk9uQ29tcG9zaXRvciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
Ojp1cGRhdGVDb250ZW50QnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXI6OmxheWVyRmx1c2hBbmltYXRpb25UaW1lckZpcmVkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3NTdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyU3RhdGU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlKToKKwogMjAx
OC0wMi0wNiAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAg
IFJlbW92ZSBXZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzIGRpcmVjdG9yeQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBh
NzVkNmY3M2QyY2I2ZDUyZTU4M2EyMDQ3NzM0NzA3NGQxZTIxMmQ5Li4zZGIzNjI1YWQ1MDMwMmEw
YTExMTJjYzgyZDlhZmFiOTdiZTI4YTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE4
LTAyLTA3ICBNaWd1ZWwgR29tZXogIDxtYWdvbWV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW1dQ
RV1bR1RLXSBDb250ZW50IGRpc2FwcGVhcmluZyB3aGVuIHVzaW5nIENTUyB0cmFuc2Zvcm1zCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODE3NTcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXNzIHRoZSBj
YW5BbmltYXRlT25Db21wb3NpdG9yIGZsYWcgdG8gdGhlIFRleHR1cmVNYXBwZXJMYXllcnMgYW5k
IHRha2UgaXQgaW50byBhY2NvdW50CisgICAgICAgIGluIHRoZSBHcmFwaGljc1NjZW5lLCBzbyB0
aGUgY29tcG9zaXRpbmcgdGhyZWFkIHdpbGwgb25seSBoYW5kbGUgYW5pbWF0aW9ucyBpZiBub25l
IG9mIHRoZW0KKyAgICAgICAgcmVxdWlyZSBsYXllciBmbHVzaGVzLgorCisgICAgICAgICogU2hh
cmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpwYWludFRvQ3VycmVudEdM
Q29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6c2V0
TGF5ZXJTdGF0ZSk6CisKIDIwMTgtMDItMDYgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBz
b255LmNvbT4KIAogICAgICAgICBSZW1vdmUgV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycyBkaXJl
Y3RvcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKaW5kZXggNWVlMDYwOTllYmE4NTI2MTA5
YzE1YWUxZDI0OWFlZTIwZTUwM2MzNS4uOWNlZmYwZDhmMGI4NzljODQ1YTA0YjU2ZWRhNDYxZjgw
YTY1OWMyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKQEAgLTYwMiw2ICs2MDIsMTEg
QEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEJhY2tmYWNlVmlzaWJpbGl0eShib29sIGJh
Y2tmYWNlVmlzaWJpbGl0eSkKICAgICBtX3N0YXRlLmJhY2tmYWNlVmlzaWJpbGl0eSA9IGJhY2tm
YWNlVmlzaWJpbGl0eTsKIH0KIAordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldENhbkFuaW1h
dGVPbkNvbXBvc2l0b3IoYm9vbCBjYW5BbmltYXRlT25Db21wb3NpdG9yKQoreworICAgIG1fc3Rh
dGUuY2FuQW5pbWF0ZU9uQ29tcG9zaXRvciA9IGNhbkFuaW1hdGVPbkNvbXBvc2l0b3I7Cit9CisK
IHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXRPcGFjaXR5KGZsb2F0IG9wYWNpdHkpCiB7CiAg
ICAgbV9zdGF0ZS5vcGFjaXR5ID0gb3BhY2l0eTsKQEAgLTY2MSw2ICs2NjYsMTcgQEAgYm9vbCBU
ZXh0dXJlTWFwcGVyTGF5ZXI6OmRlc2NlbmRhbnRzT3JTZWxmSGF2ZVJ1bm5pbmdBbmltYXRpb25z
KCkgY29uc3QKICAgICAgICAgfSk7CiB9CiAKK2Jvb2wgVGV4dHVyZU1hcHBlckxheWVyOjpkZXNj
ZW5kYW50c0FuZFNlbGZBbmltYXRpb25zQ2FuQmVSdW5PbkNvbXBvc2l0b3IoKSBjb25zdAorewor
ICAgIGlmICghbV9zdGF0ZS5jYW5BbmltYXRlT25Db21wb3NpdG9yKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICByZXR1cm4gc3RkOjphbGxfb2YobV9jaGlsZHJlbi5iZWdpbigpLCBtX2No
aWxkcmVuLmVuZCgpLAorICAgICAgICBbXShUZXh0dXJlTWFwcGVyTGF5ZXIqIGNoaWxkKSB7Cisg
ICAgICAgICAgICByZXR1cm4gY2hpbGQtPmRlc2NlbmRhbnRzQW5kU2VsZkFuaW1hdGlvbnNDYW5C
ZVJ1bk9uQ29tcG9zaXRvcigpOworICAgICAgICB9KTsKK30KKwogdm9pZCBUZXh0dXJlTWFwcGVy
TGF5ZXI6OmFwcGx5QW5pbWF0aW9uc1JlY3Vyc2l2ZWx5KCkKIHsKICAgICBzeW5jQW5pbWF0aW9u
cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCmluZGV4IDg5OWE1NjEyMTQ5NTU5MGU0YTlkMTRl
NGU2NGE3ZDAwYzQzN2FmMGUuLjM0MjQwYzc3MTU3MDY4MTUyZjFmZmYwMWMxYTQzOTBjMDIzZGU1
YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKQEAgLTEwNCw2ICsxMDQsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRDb250ZW50c1RpbGVTaXplKGNvbnN0IEZsb2F0U2l6ZSYpOwogICAgIHZv
aWQgc2V0Q29udGVudHNUaWxlUGhhc2UoY29uc3QgRmxvYXRTaXplJik7CiAgICAgdm9pZCBzZXRG
aWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKTsKKyAgICB2b2lkIHNldENhbkFuaW1hdGVP
bkNvbXBvc2l0b3IoYm9vbCk7CiAKICAgICBib29sIGhhc0ZpbHRlcnMoKSBjb25zdAogICAgIHsK
QEAgLTEyMSw2ICsxMjIsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN5bmNBbmltYXRpb25zKCk7
CiAgICAgYm9vbCBkZXNjZW5kYW50c09yU2VsZkhhdmVSdW5uaW5nQW5pbWF0aW9ucygpIGNvbnN0
OworICAgIGJvb2wgZGVzY2VuZGFudHNBbmRTZWxmQW5pbWF0aW9uc0NhbkJlUnVuT25Db21wb3Np
dG9yKCkgY29uc3Q7CiAKICAgICB2b2lkIHBhaW50KCk7CiAKQEAgLTIyNSw2ICsyMjcsNyBAQCBw
cml2YXRlOgogICAgICAgICBib29sIGNvbnRlbnRzT3BhcXVlIDogMTsKICAgICAgICAgYm9vbCBi
YWNrZmFjZVZpc2liaWxpdHkgOiAxOwogICAgICAgICBib29sIHZpc2libGUgOiAxOworICAgICAg
ICBib29sIGNhbkFuaW1hdGVPbkNvbXBvc2l0b3I6IDE7CiAgICAgICAgIGJvb2wgc2hvd0RlYnVn
Qm9yZGVycyA6IDE7CiAgICAgICAgIGJvb2wgc2hvd1JlcGFpbnRDb3VudGVyIDogMTsKIApAQCAt
MjQxLDYgKzI0NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAsIGNvbnRlbnRzT3BhcXVlKGZh
bHNlKQogICAgICAgICAgICAgLCBiYWNrZmFjZVZpc2liaWxpdHkodHJ1ZSkKICAgICAgICAgICAg
ICwgdmlzaWJsZSh0cnVlKQorICAgICAgICAgICAgLCBjYW5BbmltYXRlT25Db21wb3NpdG9yKHRy
dWUpCiAgICAgICAgICAgICAsIHNob3dEZWJ1Z0JvcmRlcnMoZmFsc2UpCiAgICAgICAgICAgICAs
IHNob3dSZXBhaW50Q291bnRlcihmYWxzZSkKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAppbmRleCBjZGM3MGYx
ZGUzYmIwODA4MWIyMGQwY2Y2YTVlZTAzYzEzNzVlZDI3Li43Yjk1MGEyMmZmYWViOTM5YWRjNDNh
YWZkMTg0YzFiMmQ0MDI2MjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApAQCAtNDEsNiArNDEsMTMgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCisvLyBBbmltYXRpbmcgbGF5ZXJzIHdpdGggYmFja2luZ1N0b3JlcyBj
YW4gYmUgZG9uZSBpbiB0aGUgY29tcG9zaXRvciB0aHJlYWQgb3IgdXNpbmcgbGF5ZXIgZmx1c2hl
cy4gVGhlIGZpcnN0IG9wdGlvbgorLy8gaXMgbW9yZSBlZmZpY2llbnQgYnV0IGNvbnN1bWVzIG1v
cmUgbWVtb3J5IGFzIGFsbCB0aGUgdGlsZXMgbmVlZCB0byBiZSByZW5kZXJlZCBiZWZvcmUgc2Vu
ZGluZyB0aGUgbGF5ZXIgdG8gdGhlCisvLyBjb21wb3NpdG9yLiBUaGUgc2Vjb25kIG9wdGlvbiBk
b2Vzbid0IHJlcXVpcmUgYWxsIHRoZSB0aWxlcyByZW5kZXJlZCB1cCBmcm9udCwgc28gc2F2ZXMg
bWVtb3J5LCBidXQgaXQgaGFzIHRvIHVwZGF0ZQorLy8gdGhlIHZpc2libGUgdGlsZXMgZXZlcnkg
ZnJhbWUuIFRoaXMgdmFsdWUgc2V0cyBhIHRocmVzaG9sZCB0byB1c2UgdGhlIGNvbXBvc2l0b3Ig
Zm9yIGFuaW1hdGlvbnMgc21hbGxlciB0aGFuIGZvdXIKKy8vIHRpbGVzLCBhbmQgdG8gdXNlIGxh
eWVyIGZsdXNoZXMgb24gbGF5ZXJzIGJpZ2dldCB0aGFuIHRoYXQgc28gd2UgZG9uJ3Qgd2FzdGUg
dG9vIG11Y2ggbWVtb3J5Lgorc3RhdGljIGNvbnN0IGludCBtYXhMYXllclNpemVUb0FuaW1hdGVJ
bkNvbXBvc2l0b3IgPSA1MTIgKiA1MTIgKiA0OworCiBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NM
YXllcj4gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKEdyYXBoaWNzTGF5ZXJGYWN0b3J5KiBmYWN0b3J5
LCBHcmFwaGljc0xheWVyQ2xpZW50JiBjbGllbnQsIFR5cGUgbGF5ZXJUeXBlKQogewogICAgIGlm
ICghZmFjdG9yeSkKQEAgLTE0Miw2ICsxNDksNyBAQCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6
OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcihUeXBlIGxheWVyVHlwZSwgR3JhcGhpY3NMYXllcgog
ICAgICwgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHIoMCkKICAgICAsIG1fcGxhdGZvcm1MYXll
cigwKQogICAgICwgbV9hbmltYXRpb25TdGFydGVkVGltZXIoKnRoaXMsICZDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXI6OmFuaW1hdGlvblN0YXJ0ZWRUaW1lckZpcmVkKQorICAgICwgbV9sYXllckZs
dXNoQW5pbWF0aW9uVGltZXIoKnRoaXMsICZDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmxheWVy
Rmx1c2hBbmltYXRpb25UaW1lckZpcmVkKQogICAgICwgbV9zY3JvbGxhYmxlQXJlYSgwKQogewog
ICAgIHN0YXRpYyBDb29yZGluYXRlZExheWVySUQgbmV4dExheWVySUQgPSAxOwpAQCAtOTUyLDcg
Kzk2MCwzMiBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dXBkYXRlQ29udGVudEJ1
ZmZlcnMoKQogCiAgICAgaWYgKG1fcGVuZGluZ1Zpc2libGVSZWN0QWRqdXN0bWVudCkgewogICAg
ICAgICBtX3BlbmRpbmdWaXNpYmxlUmVjdEFkanVzdG1lbnQgPSBmYWxzZTsKLSAgICAgICAgbV9t
YWluQmFja2luZ1N0b3JlLT5jcmVhdGVUaWxlc0lmTmVlZGVkKHRyYW5zZm9ybWVkVmlzaWJsZVJl
Y3QoKSwgSW50UmVjdCgwLCAwLCBzaXplKCkud2lkdGgoKSwgc2l6ZSgpLmhlaWdodCgpKSk7CisK
KyAgICAgICAgLy8gSWYgdGhlcmUgYXJlIGFuaW1hdGlvbnMgcnVubmluZywgY2hlY2sgd2hldGhl
ciB3ZSB3aWxsIHJ1biB0aGVtIG9uIHRoZSBjb21wb3NpdG9yIG9yIG5vdC4KKyAgICAgICAgaWYg
KHNlbGZPckFuY2VzdG9ySGFzQWN0aXZlVHJhbnNmb3JtQW5pbWF0aW9uKCkpIHsKKyAgICAgICAg
ICAgIGlmIChzaXplKCkud2lkdGgoKSAqIHNpemUoKS5oZWlnaHQoKSA+IG1heExheWVyU2l6ZVRv
QW5pbWF0ZUluQ29tcG9zaXRvcikgeworICAgICAgICAgICAgICAgIC8vIExheWVyIGJpZ2dlciB0
aGFuIHRoZSB0aHJlc2hvbGQsIGhhbmRsZSB0aGUgYW5pbWF0aW9uIHRocm91Z2ggbGF5ZXIgZmx1
c2hlcy4gQ3JlYXRlIHRoZSB0aWxlcyBmb3IgdGhlIHZpc2libGUgcmVjdAorICAgICAgICAgICAg
ICAgIC8vIG9ubHkuIER1cmluZyBlYWNoIGZyYW1lIHRoZSB0aWxlcyB3aWxsIGJlIGFkanVzdGVk
IGFjY29yZGluZyB0byB0aGUgdmlzaWJsZSByZWN0IGNoYW5nZXMuCisgICAgICAgICAgICAgICAg
bV9tYWluQmFja2luZ1N0b3JlLT5jcmVhdGVUaWxlc0lmTmVlZGVkKHRyYW5zZm9ybWVkVmlzaWJs
ZVJlY3QoKSwgSW50UmVjdCgwLCAwLCBzaXplKCkud2lkdGgoKSwgc2l6ZSgpLmhlaWdodCgpKSk7
CisgICAgICAgICAgICAgICAgLy8gU2V0IGNhbkFuaW1hdGVPbkNvbXBvc2l0b3IgdG8gZmFsc2Ug
c28gdGhlIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSBrbm93cyB0aGF0IGl0IHNob3VsZG4ndCBo
YW5kbGUgdGhlIGFuaW1hdGlvbnMsCisgICAgICAgICAgICAgICAgLy8gYW5kIHN0YXJ0IGEgdGlt
ZXIgdG8gcmVxdWVzdCBhIGxheWVyIGZsdXNoLiBXZSBuZWVkIHRvIHVzZSB0aGUgdGltZXIgY2F1
c2Ugd2UncmUgYWxyZWFkeSBpbnNpZGUgYSBsYXllciBmbHVzaCwgYW5kIHJlcXVlc3RpbmcKKyAg
ICAgICAgICAgICAgICAvLyBhIG5ldyBvbmUgZnJvbSBoZXJlIHdvbid0IGRvIGFueXRoaW5nLgor
ICAgICAgICAgICAgICAgIG1fbGF5ZXJTdGF0ZS5jYW5BbmltYXRlT25Db21wb3NpdG9yID0gZmFs
c2U7CisgICAgICAgICAgICAgICAgbV9sYXllclN0YXRlLmZsYWdzQ2hhbmdlZCA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgbV9sYXllckZsdXNoQW5pbWF0aW9uVGltZXIuc3RhcnRPbmVTaG90KDBf
cyk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIExheWVyIHNtYWxs
ZXIgdGhhbiB0aGUgdGhyZXNob2xkLCBzbyBhbmltYXRlZCB1c2luZyB0aGUgY29tcG9zaXRvci4g
Q3JlYXRlIGFsbCB0aGUgdGlsZXMgcmVxdWlyZWQgYnkgdGhlIGxheWVyLgorICAgICAgICAgICAg
ICAgIG1fbWFpbkJhY2tpbmdTdG9yZS0+Y3JlYXRlVGlsZXNJZk5lZWRlZChJbnRSZWN0KDAsIDAs
IHNpemUoKS53aWR0aCgpLCBzaXplKCkuaGVpZ2h0KCkpLCBJbnRSZWN0KDAsIDAsIHNpemUoKS53
aWR0aCgpLCBzaXplKCkuaGVpZ2h0KCkpKTsKKyAgICAgICAgICAgICAgICAvLyBTZXQgY2FuQW5p
bWF0ZU9uQ29tcG9zaXRvciB0byB0cnVlIGluIGNhc2UgYSBmb3JtZXIgYW5pbWF0aW9uIG1heSBo
YXZlIHNldCBpdCB0byBmYWxzZS4KKyAgICAgICAgICAgICAgICBtX2xheWVyU3RhdGUuY2FuQW5p
bWF0ZU9uQ29tcG9zaXRvciA9IHRydWU7CisgICAgICAgICAgICAgICAgbV9sYXllclN0YXRlLmZs
YWdzQ2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBtX21haW5CYWNraW5nU3RvcmUtPmNyZWF0ZVRpbGVzSWZOZWVkZWQodHJhbnNmb3Jt
ZWRWaXNpYmxlUmVjdCgpLCBJbnRSZWN0KDAsIDAsIHNpemUoKS53aWR0aCgpLCBzaXplKCkuaGVp
Z2h0KCkpKTsKKyAgICAgICAgICAgIC8vIFNldCBjYW5BbmltYXRlT25Db21wb3NpdG9yIHRvIHRy
dWUgaW4gY2FzZSBhIGZvcm1lciBhbmltYXRpb24gbWF5IGhhdmUgc2V0IGl0IHRvIGZhbHNlLgor
ICAgICAgICAgICAgbV9sYXllclN0YXRlLmNhbkFuaW1hdGVPbkNvbXBvc2l0b3IgPSB0cnVlOwor
ICAgICAgICAgICAgbV9sYXllclN0YXRlLmZsYWdzQ2hhbmdlZCA9IHRydWU7CisgICAgICAgIH0K
ICAgICB9CiAKICAgICBBU1NFUlQobV9jb29yZGluYXRvciAmJiBtX2Nvb3JkaW5hdG9yLT5pc0Zs
dXNoaW5nTGF5ZXJDaGFuZ2VzKCkpOwpAQCAtMTE5NSw2ICsxMjI4LDExIEBAIHZvaWQgQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyOjphbmltYXRpb25TdGFydGVkVGltZXJGaXJlZCgpCiAgICAgY2xp
ZW50KCkubm90aWZ5QW5pbWF0aW9uU3RhcnRlZCh0aGlzLCAiIiwgbV9sYXN0QW5pbWF0aW9uU3Rh
cnRUaW1lKTsKIH0KIAordm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmxheWVyRmx1c2hB
bmltYXRpb25UaW1lckZpcmVkKCkKK3sKKyAgICBub3RpZnlGbHVzaFJlcXVpcmVkKCk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFVTRShDT09SRElOQVRFRF9HUkFQ
SElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIuaAppbmRleCAzM2RiZGQxNzAwMzU2OTQ3OWMyNzQzNGZlNDNlZDUxODMyNjQzZWFhLi4y
YjUwZjgxODg2OTUxNzAxMzU2OWE3NDdkMDBmZmViODBkMDRhZmVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCkBAIC0xODcsNiAr
MTg3LDcgQEAgcHJpdmF0ZToKICAgICBmbG9hdCBlZmZlY3RpdmVDb250ZW50c1NjYWxlKCk7CiAK
ICAgICB2b2lkIGFuaW1hdGlvblN0YXJ0ZWRUaW1lckZpcmVkKCk7CisgICAgdm9pZCBsYXllckZs
dXNoQW5pbWF0aW9uVGltZXJGaXJlZCgpOwogCiAgICAgYm9vbCBmaWx0ZXJzQ2FuQmVDb21wb3Np
dGVkKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKSBjb25zdDsKIApAQCAtMjI3LDYgKzIyOCw3IEBA
IHByaXZhdGU6CiAKICAgICBQbGF0Zm9ybUxheWVyKiBtX3BsYXRmb3JtTGF5ZXI7CiAgICAgVGlt
ZXIgbV9hbmltYXRpb25TdGFydGVkVGltZXI7CisgICAgVGltZXIgbV9sYXllckZsdXNoQW5pbWF0
aW9uVGltZXI7CiAgICAgVGV4dHVyZU1hcHBlckFuaW1hdGlvbnMgbV9hbmltYXRpb25zOwogICAg
IGRvdWJsZSBtX2xhc3RBbmltYXRpb25TdGFydFRpbWUgeyAwLjAgfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZS5oCmluZGV4IGFiNTBh
MTFmZDFkMDIzY2JkZTg3Y2RiYzcwYjkzZWYzMmI0ZDJjMzYuLjAyOTA2MzAxYzgzYjBjMThiMmJh
NWQwYWI4ODcyODNkYTE4ZmE4MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU3RhdGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlLmgKQEAgLTExOCw2ICsxMTgsNyBAQCBzdHJ1Y3QgQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUgewogICAgICAgICAgICAgYm9vbCBwcmVzZXJ2ZXMz
RCA6IDE7CiAgICAgICAgICAgICBib29sIGZpeGVkVG9WaWV3cG9ydCA6IDE7CiAgICAgICAgICAg
ICBib29sIGlzU2Nyb2xsYWJsZTogMTsKKyAgICAgICAgICAgIGJvb2wgY2FuQW5pbWF0ZU9uQ29t
cG9zaXRvcjogMTsKICAgICAgICAgfTsKICAgICAgICAgdW5zaWduZWQgZmxhZ3M7CiAgICAgfTsK
QEAgLTEzMiw2ICsxMzMsNyBAQCBzdHJ1Y3QgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUg
ewogICAgICAgICAsIHByZXNlcnZlczNEKGZhbHNlKQogICAgICAgICAsIGZpeGVkVG9WaWV3cG9y
dChmYWxzZSkKICAgICAgICAgLCBpc1Njcm9sbGFibGUoZmFsc2UpCisgICAgICAgICwgY2FuQW5p
bWF0ZU9uQ29tcG9zaXRvcih0cnVlKQogICAgICAgICAsIG9wYWNpdHkoMCkKICAgICAgICAgLCBy
ZXBsaWNhKEludmFsaWRDb29yZGluYXRlZExheWVySUQpCiAgICAgICAgICwgbWFzayhJbnZhbGlk
Q29vcmRpbmF0ZWRMYXllcklEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUu
Y3BwCmluZGV4IDIyNWE5ZGRmOTgxZmNhMjBlM2RlMGY3MmQxNmIwOTM2OTc5MGIxMWEuLjk5Mzll
ODEzZTg1NjgzMjQ4YWMxZThhNThkZTgwMmUwZDNlYWIwYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5l
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKQEAgLTEyNiw3ICsxMjYsOSBAQCB2b2lkIENvb3JkaW5h
dGVkR3JhcGhpY3NTY2VuZTo6cGFpbnRUb0N1cnJlbnRHTENvbnRleHQoY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaQogICAgIG1fdGV4dHVyZU1hcHBlci0+ZW5kQ2xpcCgpOwogICAgIG1fdGV4dHVy
ZU1hcHBlci0+ZW5kUGFpbnRpbmcoKTsKIAotICAgIGlmIChjdXJyZW50Um9vdExheWVyLT5kZXNj
ZW5kYW50c09yU2VsZkhhdmVSdW5uaW5nQW5pbWF0aW9ucygpKQorICAgIC8vIFJlcXVlc3QgYSB2
aWV3cG9ydCB1cGRhdGUgaWYgdGhlcmUgYXJlIGFuaW1hdGlvbnMgcnVubmluZywgYnV0IG9ubHkg
aWYgYWxsIG9mIHRoZW0gY2FuIGJlIHJ1biBieSB0aGUgY29tcG9zaXRvci4gSWYKKyAgICAvLyBh
bnkgb2YgdGhlbSBjYW4ndCwgYWxsIHRoZSBhbmltYXRpb25zIGFyZSBoYW5kbGVkIHRocm91Z2gg
bGF5ZXIgZmx1c2hlcy4KKyAgICBpZiAoY3VycmVudFJvb3RMYXllci0+ZGVzY2VuZGFudHNPclNl
bGZIYXZlUnVubmluZ0FuaW1hdGlvbnMoKSAmJiBjdXJyZW50Um9vdExheWVyLT5kZXNjZW5kYW50
c0FuZFNlbGZBbmltYXRpb25zQ2FuQmVSdW5PbkNvbXBvc2l0b3IoKSkKICAgICAgICAgdXBkYXRl
Vmlld3BvcnQoKTsKIH0KIApAQCAtMjYyLDYgKzI2NCw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lOjpzZXRMYXllclN0YXRlKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCwgY29uc3QgQ29v
cmRpCiAgICAgICAgIGxheWVyLT5zZXREcmF3c0NvbnRlbnQobGF5ZXJTdGF0ZS5kcmF3c0NvbnRl
bnQpOwogICAgICAgICBsYXllci0+c2V0Q29udGVudHNWaXNpYmxlKGxheWVyU3RhdGUuY29udGVu
dHNWaXNpYmxlKTsKICAgICAgICAgbGF5ZXItPnNldEJhY2tmYWNlVmlzaWJpbGl0eShsYXllclN0
YXRlLmJhY2tmYWNlVmlzaWJsZSk7CisgICAgICAgIGxheWVyLT5zZXRDYW5BbmltYXRlT25Db21w
b3NpdG9yKGxheWVyU3RhdGUuY2FuQW5pbWF0ZU9uQ29tcG9zaXRvcik7CiAKICAgICAgICAgLy8g
TmV2ZXIgY2xpcCB0aGUgcm9vdCBsYXllci4KICAgICAgICAgbGF5ZXItPnNldE1hc2tzVG9Cb3Vu
ZHMoaWQgPT0gbV9yb290TGF5ZXJJRCA/IGZhbHNlIDogbGF5ZXJTdGF0ZS5tYXNrc1RvQm91bmRz
KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>367306</attachid>
            <date>2019-04-12 02:26:45 -0700</date>
            <delta_ts>2019-04-12 02:45:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181757-20190412112643.patch</filename>
            <type>text/plain</type>
            <size>23063</size>
            <attacher name="Miguel Gomez">magomez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ0MjEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTJkYTNkZDFmMjMxZmY2
OTQ4NGUwNWUxZWI4Mzg5MjhkMzFmNzkxNC4uZWY0YTk0OWUyYWVjYmQ0MDFlNDk0NjNjMmZjY2Zk
YWI4ODQyYjczNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE5LTA0LTEyICBNaWd1
ZWwgR29tZXogIDxtYWdvbWV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW1dQRV1bR1RLXSBDb250
ZW50IGRpc2FwcGVhcmluZyB3aGVuIHVzaW5nIENTUyB0cmFuc2Zvcm1zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODE3NTcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEdXJpbmcgZWFjaCBsYXllciBmbHVz
aCwgY3JlYXRlIGFuIEFuaW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50IGluc3RhbmNlIGZvciBlYWNo
IGxheWVyIHRoYXQKKyAgICAgICAgaGFzIGEgYmFja2luZ1N0b3JlIGFuZCBpcyB0byBiZSBhbmlt
YXRlZCwgYW5kIHNlbmQgdGhhdCBjbGllbnQgdG8gdGhlIGFwcHJvcHJpYXRlCisgICAgICAgIFRl
eHR1cmVNYXBwZXJMYXllciBvbiB0aGUgY29tcG9zaXRvciB0aHJlYWQuIER1cmluZyBlYWNoIGZy
YW1lIHJlbmRlcmluZywgdGhlIGNsaWVudCB3aWxsCisgICAgICAgIHVzZSB0aGUgZnV0dXJlIGxh
eWVyIHBvc2l0aW9uIChjdXJyZW50bHkgNTBtcyBpbiB0aGUgZnV0dXJlKSB0byBjaGVjayB3aGV0
aGVyIG5ldyB0aWxlcyBhcmUKKyAgICAgICAgcmVxdWlyZWQgdG8ga2VlcCB0aGUgYW5pbWF0aW9u
IG9uZ29pbmcsIGFuZCBub3RpZnkgdGhlIGFwcHJvcHJpYXRlIENvb3JkaW5hdGVkR3JhcGhpY3NM
YXllciBzbworICAgICAgICBpdCBjYW4gcGVyZm9ybSBhIGxheWVyIGZsdXNoIGFuZCBwcm92aWRl
IG5ldyB0aWxlcy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3Np
YVBsYXRmb3JtTGF5ZXIuaDoKKyAgICAgICAgKE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI6OmZs
dXNoU3RhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpjb21w
dXRlVHJhbnNmb3Jtc1JlY3Vyc2l2ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVy
TGF5ZXI6OnN5bmNBbmltYXRpb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckxheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0FuaW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50Lmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QW5pbWF0ZWRCYWNraW5nU3RvcmVDbGllbnQ6On5BbmltYXRlZEJhY2tp
bmdTdG9yZUNsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3Jk
aW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6On5Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Y2xhbXBUb0NvbnRlbnRzUmVjdElmUmVjdElzSW5maW5pdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRBbmltYXRlZEJhY2tpbmdTdG9yZUNsaWVudDo6Q29v
cmRpbmF0ZWRBbmltYXRlZEJhY2tpbmdTdG9yZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpD
b29yZGluYXRlZEFuaW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50OjpzZXRDb3ZlclJlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpmbHVzaENvbXBvc2l0aW5n
U3RhdGVGb3JUaGlzTGF5ZXJPbmx5KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllcjo6cmVxdWVzdEJhY2tpbmdTdG9yZVVwZGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnVwZGF0ZUNvbnRlbnRCdWZmZXJzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyLmg6CisKIDIwMTktMDQtMTEgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBh
cHBsZS5jb20+CiAKICAgICAgICAgQXZvaWQgZG9pbmcgcG9zaXRpb25lZCBzY3JvbGxpbmcgdHJl
ZSBub2RlIHdvcmsgZm9yIGxheWVycyBub3QgaW5zaWRlIG92ZXJmbG93OnNjcm9sbApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCAyYmYzNGFiMTBhMGZlYWM5Y2QwNTMzYzAwMDQxOGQ5YzQ1YTFjNDBkLi4zNDhhNzg2OGNh
YzQ2OTQyNGQwNDgwOWUyMWM3ZDg5ZDlmNzY3MDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBA
CisyMDE5LTA0LTEyICBNaWd1ZWwgR29tZXogIDxtYWdvbWV6QGlnYWxpYS5jb20+CisKKyAgICAg
ICAgW1dQRV1bR1RLXSBDb250ZW50IGRpc2FwcGVhcmluZyB3aGVuIHVzaW5nIENTUyB0cmFuc2Zv
cm1zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODE3
NTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTZXQg
dGhlIGFwcHJvcHJpYXRlIEFuaW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50IHRvIHRoZSBUZXh0dXJl
TWFwcGVyTGF5ZXJzIHdoZW4gcmVxdWlyZWQuCisKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwOgorICAgICAgICAoV2ViS2l0
OjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnVwZGF0ZVNjZW5lU3RhdGUpOgorCiAyMDE5LTA0
LTExICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBbR1RLXSBSRUdSRVNTSU9OKHIyNDM4NjApOiBNYW55IHRlc3RzIGZhaWxpbmcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBsYXRm
b3JtTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmlj
b3NpYVBsYXRmb3JtTGF5ZXIuaAppbmRleCBiZTNhNTI1N2E0YjI1YWVhNTIxY2M1OGI0ODAzMDRm
ODAyYmQ4MDQwLi4zM2E4NjIyMGFjY2FkZTA4Njg0YWJmNWZmMDQ0OTU1OTgyMGVjNmYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFQ
bGF0Zm9ybUxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS9OaWNvc2lhUGxhdGZvcm1MYXllci5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNwcmFnbWEg
b25jZQogCisjaW5jbHVkZSAiQW5pbWF0ZWRCYWNraW5nU3RvcmVDbGllbnQuaCIKICNpbmNsdWRl
ICJDb2xvci5oIgogI2luY2x1ZGUgIkZpbHRlck9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJGbG9h
dFBvaW50LmgiCkBAIC0xMTAsNiArMTExLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAg
ICBib29sIGNvbnRlbnRMYXllckNoYW5nZWQgOiAxOwogICAgICAgICAgICAgICAgICAgICBib29s
IGJhY2tpbmdTdG9yZUNoYW5nZWQgOiAxOwogICAgICAgICAgICAgICAgICAgICBib29sIGltYWdl
QmFja2luZ0NoYW5nZWQgOiAxOworICAgICAgICAgICAgICAgICAgICBib29sIGFuaW1hdGVkQmFj
a2luZ1N0b3JlQ2xpZW50Q2hhbmdlZCA6IDE7CiAgICAgICAgICAgICAgICAgICAgIGJvb2wgcmVw
YWludENvdW50ZXJDaGFuZ2VkIDogMTsKICAgICAgICAgICAgICAgICAgICAgYm9vbCBkZWJ1Z0Jv
cmRlckNoYW5nZWQgOiAxOwogICAgICAgICAgICAgICAgIH07CkBAIC0xNjIsNiArMTY0LDcgQEAg
cHVibGljOgogICAgICAgICBSZWZQdHI8Q29udGVudExheWVyPiBjb250ZW50TGF5ZXI7CiAgICAg
ICAgIFJlZlB0cjxCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZTsKICAgICAgICAgUmVmUHRyPElt
YWdlQmFja2luZz4gaW1hZ2VCYWNraW5nOworICAgICAgICBSZWZQdHI8V2ViQ29yZTo6QW5pbWF0
ZWRCYWNraW5nU3RvcmVDbGllbnQ+IGFuaW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50OwogCiAgICAg
ICAgIHN0cnVjdCBSZXBhaW50Q291bnRlciB7CiAgICAgICAgICAgICB1bnNpZ25lZCBjb3VudCB7
IDAgfTsKQEAgLTI0MCw2ICsyNDMsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBzdGFnaW5nLmNv
bnRlbnRMYXllciA9IHBlbmRpbmcuY29udGVudExheWVyOwogICAgICAgICBpZiAocGVuZGluZy5k
ZWx0YS5pbWFnZUJhY2tpbmdDaGFuZ2VkKQogICAgICAgICAgICAgc3RhZ2luZy5pbWFnZUJhY2tp
bmcgPSBwZW5kaW5nLmltYWdlQmFja2luZzsKKyAgICAgICAgaWYgKHBlbmRpbmcuZGVsdGEuYW5p
bWF0ZWRCYWNraW5nU3RvcmVDbGllbnRDaGFuZ2VkKQorICAgICAgICAgICAgc3RhZ2luZy5hbmlt
YXRlZEJhY2tpbmdTdG9yZUNsaWVudCA9IHBlbmRpbmcuYW5pbWF0ZWRCYWNraW5nU3RvcmVDbGll
bnQ7CiAKICAgICAgICAgcGVuZGluZy5kZWx0YSA9IHsgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxh
eWVyLmNwcAppbmRleCA1ZTljNTZiNWYzMGYwMjI4YmI4NzA1OGZiZjMwYjIwOWZjOTM5YmQxLi5j
YmUyMWY5OGQwZmFkY2Q3ZjA0OGQzMmE4YTgwOWY1MjcyYTU5NzkyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckxheWVyLmNwcApAQCAtNzgsNiArNzgsMjggQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6
OmNvbXB1dGVUcmFuc2Zvcm1zUmVjdXJzaXZlKCkKICAgICAgICAgICAgIG1fbGF5ZXJUcmFuc2Zv
cm1zLmNvbWJpbmVkRm9yQ2hpbGRyZW4gPSBtX2xheWVyVHJhbnNmb3Jtcy5jb21iaW5lZEZvckNo
aWxkcmVuLnRvMmRUcmFuc2Zvcm0oKTsKICAgICAgICAgbV9sYXllclRyYW5zZm9ybXMuY29tYmlu
ZWRGb3JDaGlsZHJlbi5tdWx0aXBseShtX3N0YXRlLmNoaWxkcmVuVHJhbnNmb3JtKTsKICAgICAg
ICAgbV9sYXllclRyYW5zZm9ybXMuY29tYmluZWRGb3JDaGlsZHJlbi50cmFuc2xhdGUzZCgtb3Jp
Z2luWCwgLW9yaWdpblksIC1tX3N0YXRlLmFuY2hvclBvaW50LnooKSk7CisKKyNpZiBVU0UoQ09P
UkRJTkFURURfR1JBUEhJQ1MpCisgICAgICAgIC8vIENvbXB1dGUgdHJhbnNmb3JtcyBmb3IgdGhl
IGZ1dHVyZSBhcyB3ZWxsLgorICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBmdXR1cmVQYXJl
bnRUcmFuc2Zvcm07CisgICAgICAgIGlmIChtX3BhcmVudCkKKyAgICAgICAgICAgIGZ1dHVyZVBh
cmVudFRyYW5zZm9ybSA9IG1fcGFyZW50LT5tX2xheWVyVHJhbnNmb3Jtcy5mdXR1cmVDb21iaW5l
ZEZvckNoaWxkcmVuOworICAgICAgICBlbHNlIGlmIChtX2VmZmVjdFRhcmdldCkKKyAgICAgICAg
ICAgIGZ1dHVyZVBhcmVudFRyYW5zZm9ybSA9IG1fZWZmZWN0VGFyZ2V0LT5tX2xheWVyVHJhbnNm
b3Jtcy5mdXR1cmVDb21iaW5lZDsKKworICAgICAgICBtX2xheWVyVHJhbnNmb3Jtcy5mdXR1cmVD
b21iaW5lZCA9IGZ1dHVyZVBhcmVudFRyYW5zZm9ybTsKKyAgICAgICAgbV9sYXllclRyYW5zZm9y
bXMuZnV0dXJlQ29tYmluZWQKKyAgICAgICAgICAgIC50cmFuc2xhdGUzZChvcmlnaW5YICsgbV9z
dGF0ZS5wb3MueCgpLCBvcmlnaW5ZICsgbV9zdGF0ZS5wb3MueSgpLCBtX3N0YXRlLmFuY2hvclBv
aW50LnooKSkKKyAgICAgICAgICAgIC5tdWx0aXBseShtX2xheWVyVHJhbnNmb3Jtcy5mdXR1cmVM
b2NhbFRyYW5zZm9ybSk7CisKKyAgICAgICAgbV9sYXllclRyYW5zZm9ybXMuZnV0dXJlQ29tYmlu
ZWRGb3JDaGlsZHJlbiA9IG1fbGF5ZXJUcmFuc2Zvcm1zLmZ1dHVyZUNvbWJpbmVkOworICAgICAg
ICBtX2xheWVyVHJhbnNmb3Jtcy5mdXR1cmVDb21iaW5lZC50cmFuc2xhdGUzZCgtb3JpZ2luWCwg
LW9yaWdpblksIC1tX3N0YXRlLmFuY2hvclBvaW50LnooKSk7CisKKyAgICAgICAgaWYgKCFtX3N0
YXRlLnByZXNlcnZlczNEKQorICAgICAgICAgICAgbV9sYXllclRyYW5zZm9ybXMuZnV0dXJlQ29t
YmluZWRGb3JDaGlsZHJlbiA9IG1fbGF5ZXJUcmFuc2Zvcm1zLmZ1dHVyZUNvbWJpbmVkRm9yQ2hp
bGRyZW4udG8yZFRyYW5zZm9ybSgpOworICAgICAgICBtX2xheWVyVHJhbnNmb3Jtcy5mdXR1cmVD
b21iaW5lZEZvckNoaWxkcmVuLm11bHRpcGx5KG1fc3RhdGUuY2hpbGRyZW5UcmFuc2Zvcm0pOwor
ICAgICAgICBtX2xheWVyVHJhbnNmb3Jtcy5mdXR1cmVDb21iaW5lZEZvckNoaWxkcmVuLnRyYW5z
bGF0ZTNkKC1vcmlnaW5YLCAtb3JpZ2luWSwgLW1fc3RhdGUuYW5jaG9yUG9pbnQueigpKTsKKyNl
bmRpZgogICAgIH0KIAogICAgIG1fc3RhdGUudmlzaWJsZSA9IG1fc3RhdGUuYmFja2ZhY2VWaXNp
YmlsaXR5IHx8ICFtX2xheWVyVHJhbnNmb3Jtcy5jb21iaW5lZC5pc0JhY2tGYWNlVmlzaWJsZSgp
OwpAQCAtOTcsNiArMTE5LDExIEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpjb21wdXRlVHJh
bnNmb3Jtc1JlY3Vyc2l2ZSgpCiAgICAgLy8gUmVvcmRlciBjaGlsZHJlbiBpZiBuZWVkZWQgb24g
dGhlIHdheSBiYWNrIHVwLgogICAgIGlmIChtX3N0YXRlLnByZXNlcnZlczNEKQogICAgICAgICBz
b3J0QnlaT3JkZXIobV9jaGlsZHJlbik7CisKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1Mp
CisgICAgaWYgKG1fYmFja2luZ1N0b3JlICYmIG1fYW5pbWF0ZWRCYWNraW5nU3RvcmVDbGllbnQp
CisgICAgICAgIG1fYW5pbWF0ZWRCYWNraW5nU3RvcmVDbGllbnQtPnJlcXVlc3RCYWNraW5nU3Rv
cmVVcGRhdGVJZk5lZWRlZChtX2xheWVyVHJhbnNmb3Jtcy5mdXR1cmVDb21iaW5lZCk7CisjZW5k
aWYKIH0KIAogdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50KCkKQEAgLTYyMyw2ICs2NTAs
MTEgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEJhY2tpbmdTdG9yZShUZXh0dXJlTWFw
cGVyQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUKICAgICBtX2JhY2tpbmdTdG9yZSA9IGJhY2tp
bmdTdG9yZTsKIH0KIAordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEFuaW1hdGVkQmFja2lu
Z1N0b3JlQ2xpZW50KEFuaW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50KiBjbGllbnQpCit7CisgICAg
bV9hbmltYXRlZEJhY2tpbmdTdG9yZUNsaWVudCA9IGNsaWVudDsKK30KKwogYm9vbCBUZXh0dXJl
TWFwcGVyTGF5ZXI6OmRlc2NlbmRhbnRzT3JTZWxmSGF2ZVJ1bm5pbmdBbmltYXRpb25zKCkgY29u
c3QKIHsKICAgICBpZiAobV9hbmltYXRpb25zLmhhc1J1bm5pbmdBbmltYXRpb25zKCkpCkBAIC02
NTEsNiArNjgzLDEzIEBAIGJvb2wgVGV4dHVyZU1hcHBlckxheWVyOjpzeW5jQW5pbWF0aW9ucyhN
b25vdG9uaWNUaW1lIHRpbWUpCiAgICAgbV9jdXJyZW50T3BhY2l0eSA9IGFwcGxpY2F0aW9uUmVz
dWx0cy5vcGFjaXR5LnZhbHVlT3IobV9zdGF0ZS5vcGFjaXR5KTsKICAgICBtX2N1cnJlbnRGaWx0
ZXJzID0gYXBwbGljYXRpb25SZXN1bHRzLmZpbHRlcnMudmFsdWVPcihtX3N0YXRlLmZpbHRlcnMp
OwogCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorICAgIC8vIENhbGN1bGF0ZSBsb2Nh
bFRyYW5zZm9ybSA1MG1zIGluIHRoZSBmdXR1cmUuCisgICAgVGV4dHVyZU1hcHBlckFuaW1hdGlv
bjo6QXBwbGljYXRpb25SZXN1bHQgZnV0dXJlQXBwbGljYXRpb25SZXN1bHRzOworICAgIG1fYW5p
bWF0aW9ucy5hcHBseShmdXR1cmVBcHBsaWNhdGlvblJlc3VsdHMsIHRpbWUgKyBTZWNvbmRzOjpm
cm9tTWlsbGlzZWNvbmRzKDUwKSk7CisgICAgbV9sYXllclRyYW5zZm9ybXMuZnV0dXJlTG9jYWxU
cmFuc2Zvcm0gPSBmdXR1cmVBcHBsaWNhdGlvblJlc3VsdHMudHJhbnNmb3JtLnZhbHVlT3IobV9s
YXllclRyYW5zZm9ybXMubG9jYWxUcmFuc2Zvcm0pOworI2VuZGlmCisKICAgICByZXR1cm4gYXBw
bGljYXRpb25SZXN1bHRzLmhhc1J1bm5pbmdBbmltYXRpb25zOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckxheWVyLmgKaW5kZXggZWEyNTliYTEwMDZiMjU2ZWIxYWY4ZjY5OWFlZTkzMjJiMWNjNWViMi4u
MmE2NTI5OTFmYTg1YjE0YzdmMjIzM2M5YWFhMzg4Zjk4NmM0MmNiYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyTGF5ZXIuaApAQCAtMjAsNiArMjAsNyBAQAogI2lmbmRlZiBUZXh0dXJlTWFwcGVyTGF5ZXJf
aAogI2RlZmluZSBUZXh0dXJlTWFwcGVyTGF5ZXJfaAogCisjaW5jbHVkZSAiQW5pbWF0ZWRCYWNr
aW5nU3RvcmVDbGllbnQuaCIKICNpbmNsdWRlICJGaWx0ZXJPcGVyYXRpb25zLmgiCiAjaW5jbHVk
ZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlci5oIgpAQCAtODgsNiArODks
OSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDb250ZW50c0xheWVyKFRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyKik7CiAgICAgdm9pZCBzZXRBbmltYXRpb25zKGNvbnN0IFRleHR1cmVNYXBwZXJB
bmltYXRpb25zJik7CiAgICAgdm9pZCBzZXRCYWNraW5nU3RvcmUoVGV4dHVyZU1hcHBlckJhY2tp
bmdTdG9yZSopOworI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKyAgICB2b2lkIHNldEFu
aW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50KEFuaW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50Kik7Cisj
ZW5kaWYKIAogICAgIGJvb2wgYXBwbHlBbmltYXRpb25zUmVjdXJzaXZlbHkoTW9ub3RvbmljVGlt
ZSk7CiAgICAgYm9vbCBzeW5jQW5pbWF0aW9ucyhNb25vdG9uaWNUaW1lKTsKQEAgLTE5NywxMiAr
MjAxLDE5IEBAIHByaXZhdGU6CiAgICAgVGV4dHVyZU1hcHBlciogbV90ZXh0dXJlTWFwcGVyIHsg
bnVsbHB0ciB9OwogICAgIFRleHR1cmVNYXBwZXJBbmltYXRpb25zIG1fYW5pbWF0aW9uczsKICAg
ICB1aW50MzJfdCBtX2lkIHsgMCB9OworI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKyAg
ICBSZWZQdHI8QW5pbWF0ZWRCYWNraW5nU3RvcmVDbGllbnQ+IG1fYW5pbWF0ZWRCYWNraW5nU3Rv
cmVDbGllbnQ7CisjZW5kaWYKIAogICAgIHN0cnVjdCB7CiAgICAgICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4IGxvY2FsVHJhbnNmb3JtOwotCiAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNv
bWJpbmVkOwogICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjb21iaW5lZEZvckNoaWxkcmVu
OworI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKyAgICAgICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggZnV0dXJlTG9jYWxUcmFuc2Zvcm07CisgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IGZ1dHVyZUNvbWJpbmVkOworICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBmdXR1cmVDb21i
aW5lZEZvckNoaWxkcmVuOworI2VuZGlmCiAgICAgfSBtX2xheWVyVHJhbnNmb3JtczsKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9BbmltYXRlZEJhY2tpbmdTdG9yZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0FuaW1hdGVkQmFja2luZ1N0b3JlQ2xp
ZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNWIyYzk4ZWI0YjVkMzVlOTNhZTgwYjhjZGYyMDAyMmQ5OTE3MjY1
ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9jb29yZGluYXRlZC9BbmltYXRlZEJhY2tpbmdTdG9yZUNsaWVudC5oCkBAIC0wLDAgKzEs
NDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgTWV0cm9sb2dpY2FsIEdyb3VwIEIuVi4K
KyAqIENvcHlyaWdodCAoQykgMjAxOSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisgKiAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1Mp
CisKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4OworCitjbGFzcyBBbmltYXRlZEJhY2tpbmdTdG9y
ZUNsaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPEFuaW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50PiB7
CitwdWJsaWM6CisgICAgdmlydHVhbCB+QW5pbWF0ZWRCYWNraW5nU3RvcmVDbGllbnQoKSB7IH07
CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RCYWNraW5nU3RvcmVVcGRhdGVJZk5lZWRlZChUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYmNvcmUKKwor
I2VuZGlmIC8vIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdy
YXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKaW5kZXggYTk1MzgyYzlk
NzQ3OTU5Y2IwZGUyNGJiZDliMjYxYTFjMWZjMGU3ZC4uNjI4OWYzNTE0YzdjZTIwYTNhZTNlNjM5
ZmJkOTI4NzJkOWQ1NjViZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKIAogI2lmIFVTRShD
T09SRElOQVRFRF9HUkFQSElDUykKIAorI2luY2x1ZGUgIkFuaW1hdGVkQmFja2luZ1N0b3JlQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiRmxvYXRRdWFkLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgpAQCAtMTQ5LDYgKzE1MCw4IEBAIENvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllcjo6fkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcigpCiAgICAgfQog
ICAgIEFTU0VSVCghbV9uaWNvc2lhLmltYWdlQmFja2luZyk7CiAgICAgQVNTRVJUKCFtX25pY29z
aWEuYmFja2luZ1N0b3JlKTsKKyAgICBpZiAobV9hbmltYXRlZEJhY2tpbmdTdG9yZUhvc3QpCisg
ICAgICAgIG1fYW5pbWF0ZWRCYWNraW5nU3RvcmVIb3N0LT5sYXllcldpbGxCZURlc3Ryb3llZCgp
OwogICAgIHdpbGxCZURlc3Ryb3llZCgpOwogfQogCkBAIC02MzEsNiArNjM0LDgwIEBAIHZvaWQg
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp1cGRhdGVQbGF0Zm9ybUxheWVyKCkKICNlbmRpZgog
fQogCitzdGF0aWMgdm9pZCBjbGFtcFRvQ29udGVudHNSZWN0SWZSZWN0SXNJbmZpbml0ZShGbG9h
dFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudHNTaXplKQoreworICAgIGlmIChy
ZWN0LndpZHRoKCkgPj0gTGF5b3V0VW5pdDo6bmVhcmx5TWF4KCkgfHwgcmVjdC53aWR0aCgpIDw9
IExheW91dFVuaXQ6Om5lYXJseU1pbigpKSB7CisgICAgICAgIHJlY3Quc2V0WCgwKTsKKyAgICAg
ICAgcmVjdC5zZXRXaWR0aChjb250ZW50c1NpemUud2lkdGgoKSk7CisgICAgfQorCisgICAgaWYg
KHJlY3QuaGVpZ2h0KCkgPj0gTGF5b3V0VW5pdDo6bmVhcmx5TWF4KCkgfHwgcmVjdC5oZWlnaHQo
KSA8PSBMYXlvdXRVbml0OjpuZWFybHlNaW4oKSkgeworICAgICAgICByZWN0LnNldFkoMCk7Cisg
ICAgICAgIHJlY3Quc2V0SGVpZ2h0KGNvbnRlbnRzU2l6ZS5oZWlnaHQoKSk7CisgICAgfQorfQor
CitjbGFzcyBDb29yZGluYXRlZEFuaW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50IDogcHVibGljIEFu
aW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBDb29yZGluYXRlZEFuaW1h
dGVkQmFja2luZ1N0b3JlQ2xpZW50KFJlZlB0cjxDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OkFu
aW1hdGVkQmFja2luZ1N0b3JlSG9zdD4mJiBob3N0LCBGbG9hdFJlY3QgdmlzaWJsZVJlY3QsIEZs
b2F0UmVjdCBjb3ZlclJlY3QsIEZsb2F0U2l6ZSBzaXplLCBmbG9hdCBjb250ZW50c1NjYWxlKQor
ICAgICAgICA6IG1faG9zdChXVEZNb3ZlKGhvc3QpKQorICAgICAgICAsIG1fdmlzaWJsZVJlY3Qo
dmlzaWJsZVJlY3QpCisgICAgICAgICwgbV9jb3ZlclJlY3QoY292ZXJSZWN0KQorICAgICAgICAs
IG1fc2l6ZShzaXplKQorICAgICAgICAsIG1fY29udGVudHNTY2FsZShjb250ZW50c1NjYWxlKQor
ICAgIHsgfQorICAgIH5Db29yZGluYXRlZEFuaW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50KCkgPSBk
ZWZhdWx0OworCisgICAgdm9pZCBzZXRDb3ZlclJlY3QoSW50UmVjdCByZWN0KSB7IG1fY292ZXJS
ZWN0ID0gcmVjdDsgfQorICAgIHZvaWQgcmVxdWVzdEJhY2tpbmdTdG9yZVVwZGF0ZUlmTmVlZGVk
KFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0pIGZpbmFsCisgICAgeworICAgICAgICBB
U1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKworICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIGNvbnRl
bnRzIHJlY3RhbmdsZSBvZiB0aGUgbGF5ZXIgaW4gYmFja2luZ1N0b3JlIGNvb3JkaW5hdGVzLgor
ICAgICAgICBGbG9hdFJlY3QgY29udGVudHNSZWN0ID0geyB7IDAsIDAgfSwgbV9zaXplIH07Cisg
ICAgICAgIGNvbnRlbnRzUmVjdC5zY2FsZShtX2NvbnRlbnRzU2NhbGUpOworCisgICAgICAgIC8v
IElmIHRoZSBhcmVhIGNvdmVyZWQgYnkgdGlsZXMgKHRoZSBjb3ZlclJlY3QsIGFscmVhZHkgaW4g
YmFja2luZ1N0b3JlIGNvb3JkaW5hdGVzKSBjb3ZlcnMgdGhlIHdob2xlCisgICAgICAgIC8vIGxh
eWVyIGNvbnRlbnRzIHRoZW4gd2UgZG9uJ3QgbmVlZCB0byBkbyBhbnl0aGluZy4KKyAgICAgICAg
aWYgKG1fY292ZXJSZWN0LmNvbnRhaW5zKGNvbnRlbnRzUmVjdCkpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgLy8gTm9uLWludmVydGlibGUgbGF5ZXJzIGFyZSBub3QgdmlzaWJsZS4K
KyAgICAgICAgaWYgKCF0cmFuc2Zvcm0uaXNJbnZlcnRpYmxlKCkpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBpbnZlcnNlIG9mIHRoZSBsYXllciB0cmFu
c2Zvcm1hdGlvbi4gVGhlIGludmVyc2UgdHJhbnNmb3JtIHdpbGwgaGF2ZSB0aGUgaW52ZXJzZSBv
ZiB0aGUKKyAgICAgICAgLy8gc2NhbGVGYWN0b3IgYXBwbGllZCwgc28gd2UgbmVlZCB0byBzY2Fs
ZSBpdCBiYWNrLgorICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpbnZlcnNlID0gdHJhbnNm
b3JtLmludmVyc2UoKS52YWx1ZU9yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpLnNjYWxlKG1fY29u
dGVudHNTY2FsZSk7CisKKyAgICAgICAgLy8gQXBwbHkgdGhlIGludmVyc2UgdHJhbnNmb3JtIHRv
IHRoZSB2aXNpYmxlIHJlY3RhbmdsZSwgc28gd2UgaGF2ZSB0aGUgdmlzaWJsZSByZWN0YW5nbGUg
aW4gbGF5ZXIgY29vcmRpbmF0ZXMuCisgICAgICAgIEZsb2F0UmVjdCByZWN0ID0gaW52ZXJzZS5j
bGFtcGVkQm91bmRzT2ZQcm9qZWN0ZWRRdWFkKEZsb2F0UXVhZChtX3Zpc2libGVSZWN0KSk7Cisg
ICAgICAgIGNsYW1wVG9Db250ZW50c1JlY3RJZlJlY3RJc0luZmluaXRlKHJlY3QsIG1fc2l6ZSk7
CisgICAgICAgIEZsb2F0UmVjdCB0cmFuc2Zvcm1lZFZpc2libGVSZWN0ID0gZW5jbG9zaW5nSW50
UmVjdChyZWN0KTsKKworICAgICAgICAvLyBDb252ZXJ0IHRoZSBjYWxjdWxhdGVkIHZpc2libGUg
cmVjdGFuZ2xlIHRvIGJhY2tpbmdTdG9yZSBjb29yZGluYXRlcy4KKyAgICAgICAgdHJhbnNmb3Jt
ZWRWaXNpYmxlUmVjdC5zY2FsZShtX2NvbnRlbnRzU2NhbGUpOworCisgICAgICAgIC8vIFJlc3Ry
aWN0IHRoZSBjYWxjdWxhdGVkIHZpc2libGUgcmVjdCB0byB0aGUgY29udGVudHMgcmVjdGFuZ2xl
IG9mIHRoZSBsYXllci4KKyAgICAgICAgdHJhbnNmb3JtZWRWaXNpYmxlUmVjdC5pbnRlcnNlY3Qo
Y29udGVudHNSZWN0KTsKKworICAgICAgICAvLyBJZiB0aGUgY292ZXJSZWN0IGRvZXNuJ3QgY29u
dGFpbiB0aGUgY2FsY3VsYXRlZCB2aXNpYmxlIHJlY3RhbmdsZSB3ZSBuZWVkIHRvIHJlcXVlc3Qg
YSBiYWNraW5nU3RvcmUKKyAgICAgICAgLy8gdXBkYXRlIHRvIHJlbmRlciBtb3JlIHRpbGVzLgor
ICAgICAgICBpZiAoIW1fY292ZXJSZWN0LmNvbnRhaW5zKHRyYW5zZm9ybWVkVmlzaWJsZVJlY3Qp
KSB7CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRIb3N0ID0gbV9ob3N0
LmNvcHlSZWYoKV0oKSB7CisgICAgICAgICAgICAgICAgcHJvdGVjdGVkSG9zdC0+cmVxdWVzdEJh
Y2tpbmdTdG9yZVVwZGF0ZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9CisK
K3ByaXZhdGU6CisgICAgUmVmUHRyPENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6QW5pbWF0ZWRC
YWNraW5nU3RvcmVIb3N0PiBtX2hvc3Q7CisgICAgRmxvYXRSZWN0IG1fdmlzaWJsZVJlY3Q7Cisg
ICAgRmxvYXRSZWN0IG1fY292ZXJSZWN0OworICAgIEZsb2F0U2l6ZSBtX3NpemU7CisgICAgZmxv
YXQgbV9jb250ZW50c1NjYWxlOworfTsKKwogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6
OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKQogewogICAgIC8vIFdoZXRo
ZXIgaXQga2lja2VkIG9yIG5vdCwgd2UgZG9uJ3QgbmVlZCB0aGlzIHRpbWVyIHJ1bm5pbmcgYW55
bW9yZS4KQEAgLTY2Niw2ICs3NDMsMTkgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6
OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKQogICAgICAgICBtX25pY29z
aWEuZGVsdGEuYmFja2luZ1N0b3JlQ2hhbmdlZCA9IHRydWU7CiAgICAgfQogCisgICAgaWYgKGhh
c0FjdGl2ZVRyYW5zZm9ybUFuaW1hdGlvbiAmJiBtX25pY29zaWEuYmFja2luZ1N0b3JlKSB7Cisg
ICAgICAgIC8vIFRoZSBsYXllciBoYXMgYSBiYWNraW5nU3RvcmUgYW5kIGEgdHJhbnNmb3JtYXRp
b24gYW5pbWF0aW9uLiBUaGlzIG1lYW5zIHRoYXQgd2UgbmVlZCB0byBhZGQgYW4KKyAgICAgICAg
Ly8gQW5pbWF0ZWRCYWNraW5nU3RvcmVDbGllbnQgdG8gY2hlY2sgd2hldGhlciB3ZSBuZWVkIHRv
IHVwZGF0ZSB0aGUgYmFja2luZ1N0b3JlIGR1ZSB0byB0aGUgYW5pbWF0aW9uLgorICAgICAgICAv
LyBBdCB0aGlzIHBvaW50IHdlIGRvbid0IGtub3cgdGhlIGFyZWEgY292ZXJlZCBieSB0aWxlcyBh
dmFpbGFibGUsIHNvIHdlIGp1c3QgcGFzcyBhbiBlbXB0eSByZWN0YW5nbGUKKyAgICAgICAgLy8g
Zm9yIHRoYXQuIFRoZSBjYWxsIHRvIHVwZGF0ZUNvbnRlbnRCdWZmZXJzIHdpbGwgY2FsY3VsYXRl
IHRoZSB0aWxlIGNvdmVyYWdlIGFuZCBzZXQgdGhlIGFwcHJvcHJpYXRlCisgICAgICAgIC8vIHJl
Y3RhbmdsZSB0byB0aGUgY2xpZW50LgorICAgICAgICBpZiAoIW1fYW5pbWF0ZWRCYWNraW5nU3Rv
cmVIb3N0KQorICAgICAgICAgICAgbV9hbmltYXRlZEJhY2tpbmdTdG9yZUhvc3QgPSBhZG9wdFJl
ZihuZXcgQW5pbWF0ZWRCYWNraW5nU3RvcmVIb3N0KHRoaXMpKTsKKyAgICAgICAgbV9uaWNvc2lh
LmFuaW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50ID0gYWRvcHRSZWYobmV3IENvb3JkaW5hdGVkQW5p
bWF0ZWRCYWNraW5nU3RvcmVDbGllbnQobV9hbmltYXRlZEJhY2tpbmdTdG9yZUhvc3QuY29weVJl
ZigpLCBtX2Nvb3JkaW5hdG9yLT52aXNpYmxlQ29udGVudHNSZWN0KCksIEludFJlY3QoMCwgMCwg
MCwgMCksIG1fc2l6ZSwgZWZmZWN0aXZlQ29udGVudHNTY2FsZSgpKSk7CisgICAgfQorICAgIC8v
IEVhY2ggbGF5ZXIgZmx1c2ggY2hhbmdlcyB0aGUgQW5pbWF0ZWRCYWNraW5nU3RvcmVDbGllbnQs
IGJlaW5nIGl0IG51bGwgb3IgYSByZWFsIG9uZS4KKyAgICBtX25pY29zaWEuZGVsdGEuYW5pbWF0
ZWRCYWNraW5nU3RvcmVDbGllbnRDaGFuZ2VkID0gdHJ1ZTsKKwogICAgIC8vIERldGVybWluZSBp
bWFnZSBiYWNraW5nIHByZXNlbmNlIGFjY29yZGluZyB0byB0aGUgY29tcG9zaXRlZCBpbWFnZSBz
b3VyY2UuCiAgICAgaWYgKG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyKSB7CiAgICAgICAgIEFT
U0VSVChtX2NvbXBvc2l0ZWRJbWFnZSk7CkBAIC03ODcsNiArODc3LDggQEAgdm9pZCBDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHko
KQogICAgICAgICAgICAgICAgICAgICBzdGF0ZS5jb250ZW50TGF5ZXIgPSBtX25pY29zaWEuY29u
dGVudExheWVyOwogICAgICAgICAgICAgICAgIGlmIChsb2NhbERlbHRhLmltYWdlQmFja2luZ0No
YW5nZWQpCiAgICAgICAgICAgICAgICAgICAgIHN0YXRlLmltYWdlQmFja2luZyA9IG1fbmljb3Np
YS5pbWFnZUJhY2tpbmc7CisgICAgICAgICAgICAgICAgaWYgKGxvY2FsRGVsdGEuYW5pbWF0ZWRC
YWNraW5nU3RvcmVDbGllbnRDaGFuZ2VkKQorICAgICAgICAgICAgICAgICAgICBzdGF0ZS5hbmlt
YXRlZEJhY2tpbmdTdG9yZUNsaWVudCA9IG1fbmljb3NpYS5hbmltYXRlZEJhY2tpbmdTdG9yZUNs
aWVudDsKICAgICAgICAgICAgIH0pOwogICAgICAgICBtX25pY29zaWEucGVyZm9ybUxheWVyU3lu
YyA9ICEhbV9uaWNvc2lhLmRlbHRhLnZhbHVlOwogICAgICAgICBtX25pY29zaWEuZGVsdGEgPSB7
IH07CkBAIC04MTcsMTkgKzkwOSw2IEBAIGZsb2F0IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6
ZWZmZWN0aXZlQ29udGVudHNTY2FsZSgpCiAgICAgcmV0dXJuIHNlbGZPckFuY2VzdG9ySGF2ZU5v
bkFmZmluZVRyYW5zZm9ybXMoKSA/IDEgOiBkZXZpY2VTY2FsZUZhY3RvcigpICogcGFnZVNjYWxl
RmFjdG9yKCk7CiB9CiAKLXN0YXRpYyB2b2lkIGNsYW1wVG9Db250ZW50c1JlY3RJZlJlY3RJc0lu
ZmluaXRlKEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRTaXplJiBjb250ZW50c1NpemUpCi17
Ci0gICAgaWYgKHJlY3Qud2lkdGgoKSA+PSBMYXlvdXRVbml0OjpuZWFybHlNYXgoKSB8fCByZWN0
LndpZHRoKCkgPD0gTGF5b3V0VW5pdDo6bmVhcmx5TWluKCkpIHsKLSAgICAgICAgcmVjdC5zZXRY
KDApOwotICAgICAgICByZWN0LnNldFdpZHRoKGNvbnRlbnRzU2l6ZS53aWR0aCgpKTsKLSAgICB9
Ci0KLSAgICBpZiAocmVjdC5oZWlnaHQoKSA+PSBMYXlvdXRVbml0OjpuZWFybHlNYXgoKSB8fCBy
ZWN0LmhlaWdodCgpIDw9IExheW91dFVuaXQ6Om5lYXJseU1pbigpKSB7Ci0gICAgICAgIHJlY3Qu
c2V0WSgwKTsKLSAgICAgICAgcmVjdC5zZXRIZWlnaHQoY29udGVudHNTaXplLmhlaWdodCgpKTsK
LSAgICB9Ci19Ci0KIEludFJlY3QgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp0cmFuc2Zvcm1l
ZFZpc2libGVSZWN0KCkKIHsKICAgICAvLyBOb24taW52ZXJ0aWJsZSBsYXllcnMgYXJlIG5vdCB2
aXNpYmxlLgpAQCAtODQ1LDYgKzkyNCwxMiBAQCBJbnRSZWN0IENvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcjo6dHJhbnNmb3JtZWRWaXNpYmxlUmVjdCgpCiAgICAgcmV0dXJuIGVuY2xvc2luZ0ludFJl
Y3QocmVjdCk7CiB9CiAKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpyZXF1ZXN0QmFj
a2luZ1N0b3JlVXBkYXRlKCkKK3sKKyAgICBzZXROZWVkc1Zpc2libGVSZWN0QWRqdXN0bWVudCgp
OworICAgIG5vdGlmeUZsdXNoUmVxdWlyZWQoKTsKK30KKwogdm9pZCBDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXI6OnVwZGF0ZUNvbnRlbnRCdWZmZXJzSW5jbHVkaW5nU3ViTGF5ZXJzKCkKIHsKICAg
ICBpZiAoQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKiBtYXNrID0gZG93bmNhc3Q8Q29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyPihtYXNrTGF5ZXIoKSkpCkBAIC05MTQsNiArOTk5LDExIEBAIHZvaWQg
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp1cGRhdGVDb250ZW50QnVmZmVycygpCiAgICAgICAg
IGxheWVyU3RhdGUubWFpbkJhY2tpbmdTdG9yZS0+Y3JlYXRlVGlsZXNJZk5lZWRlZCh0cmFuc2Zv
cm1lZFZpc2libGVSZWN0KCksIEludFJlY3QoMCwgMCwgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5o
ZWlnaHQoKSkpOwogICAgIH0KIAorICAgIGlmIChtX25pY29zaWEuYW5pbWF0ZWRCYWNraW5nU3Rv
cmVDbGllbnQpIHsKKyAgICAgICAgLy8gRGV0ZXJtaW5lIHRoZSBjb3ZlclJlY3QgYW5kIHNldCBp
dCB0byB0aGUgY2xpZW50LgorICAgICAgICBkb3duY2FzdDxDb29yZGluYXRlZEFuaW1hdGVkQmFj
a2luZ1N0b3JlQ2xpZW50PihtX25pY29zaWEuYW5pbWF0ZWRCYWNraW5nU3RvcmVDbGllbnQuZ2V0
KCkpLT5zZXRDb3ZlclJlY3QobGF5ZXJTdGF0ZS5tYWluQmFja2luZ1N0b3JlLT5jb3ZlclJlY3Qo
KSk7CisgICAgfQorCiAgICAgQVNTRVJUKG1fY29vcmRpbmF0b3IgJiYgbV9jb29yZGluYXRvci0+
aXNGbHVzaGluZ0xheWVyQ2hhbmdlcygpKTsKIAogICAgIC8vIFdpdGggYWxsIHRoZSBhZmZlY3Rl
ZCB0aWxlcyBjcmVhdGVkIGFuZC9vciBpbnZhbGlkYXRlZCwgd2UgY2FuIGZpbmFsbHkgcGFpbnQg
dGhlbS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIuaAppbmRleCBiNTE3N2RlOGNlYzUyODg2NmExYzgwYThmNjliNWNhNzJkZDJiMmVjLi43
OGZjZDBiNzFkZGY3MWI0NjIwOTY2YzEzYTc5MGZlMzg1YjM3ODhlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCkBAIC0yMyw2ICsy
Myw3IEBACiAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAKKyNpbmNsdWRlICJBbmlt
YXRlZEJhY2tpbmdTdG9yZUNsaWVudC5oIgogI2luY2x1ZGUgIkNvb3JkaW5hdGVkR3JhcGhpY3NT
dGF0ZS5oIgogI2luY2x1ZGUgIkZsb2F0UG9pbnQzRC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5
ZXIuaCIKQEAgLTEyNCw2ICsxMjUsMjUgQEAgcHVibGljOgogCiAgICAgY29uc3QgUmVmUHRyPE5p
Y29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+JiBjb21wb3NpdGlvbkxheWVyKCkgY29uc3Q7CiAKKyAg
ICBjbGFzcyBBbmltYXRlZEJhY2tpbmdTdG9yZUhvc3QgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8QW5pbWF0ZWRCYWNraW5nU3RvcmVIb3N0PiB7CisgICAgcHVibGljOgorICAgICAgICBB
bmltYXRlZEJhY2tpbmdTdG9yZUhvc3QoQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKiBsYXllcikK
KyAgICAgICAgICAgIDogbV9sYXllcihsYXllcikKKyAgICAgICAgeyB9CisKKyAgICAgICAgdm9p
ZCByZXF1ZXN0QmFja2luZ1N0b3JlVXBkYXRlKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYg
KG1fbGF5ZXIpCisgICAgICAgICAgICAgICAgbV9sYXllci0+cmVxdWVzdEJhY2tpbmdTdG9yZVVw
ZGF0ZSgpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBsYXllcldpbGxCZURlc3Ryb3llZCgp
IHsgbV9sYXllciA9IG51bGxwdHI7IH0KKyAgICBwcml2YXRlOgorICAgICAgICBDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXIqIG1fbGF5ZXI7CisgICAgfTsKKworICAgIHZvaWQgcmVxdWVzdEJhY2tp
bmdTdG9yZVVwZGF0ZSgpOworCiBwcml2YXRlOgogICAgIGJvb2wgaXNDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKIApAQCAtMTk4LDcgKzIxOCwxMCBAQCBwcml2YXRl
OgogICAgICAgICBSZWZQdHI8Tmljb3NpYTo6QmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmU7CiAg
ICAgICAgIFJlZlB0cjxOaWNvc2lhOjpDb250ZW50TGF5ZXI+IGNvbnRlbnRMYXllcjsKICAgICAg
ICAgUmVmUHRyPE5pY29zaWE6OkltYWdlQmFja2luZz4gaW1hZ2VCYWNraW5nOworICAgICAgICBS
ZWZQdHI8QW5pbWF0ZWRCYWNraW5nU3RvcmVDbGllbnQ+IGFuaW1hdGVkQmFja2luZ1N0b3JlQ2xp
ZW50OwogICAgIH0gbV9uaWNvc2lhOworCisgICAgUmVmUHRyPEFuaW1hdGVkQmFja2luZ1N0b3Jl
SG9zdD4gbV9hbmltYXRlZEJhY2tpbmdTdG9yZUhvc3Q7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKaW5kZXggZWI2
YWY5ODA2MjQ0ODk5ZTg2YzdjNTc4OTk4N2Y0YjJhNTlhMWJjMC4uMThkYzJmYjhlZDEzZDE1MzQx
MmVhMzBlMjkxMTE3OGVhY2VmYzVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGlj
c1NjZW5lLmNwcApAQCAtMzU2LDYgKzM1NiwxMSBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NT
Y2VuZTo6dXBkYXRlU2NlbmVTdGF0ZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHsgc3RkOjpyZWYobGF5ZXIpLCBzdGQ6OnJlZihpbXBsKSwgaW1wbC50YWtlVXBkYXRlKCkgfSk7
CiAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBsYXllci5zZXRDb250ZW50c0xheWVyKG51bGxwdHIpOworCisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAobGF5ZXJTdGF0ZS5hbmltYXRlZEJhY2tpbmdTdG9yZUNsaWVudCkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsYXllci5zZXRBbmltYXRlZEJhY2tpbmdTdG9yZUNsaWVu
dChsYXllclN0YXRlLmFuaW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50LmdldCgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllci5z
ZXRBbmltYXRlZEJhY2tpbmdTdG9yZUNsaWVudChudWxscHRyKTsKICAgICAgICAgICAgICAgICAg
ICAgfSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>367307</attachid>
            <date>2019-04-12 02:45:40 -0700</date>
            <delta_ts>2019-04-12 06:04:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181757-20190412114539.patch</filename>
            <type>text/plain</type>
            <size>23112</size>
            <attacher name="Miguel Gomez">magomez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ0MjEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTJkYTNkZDFmMjMxZmY2
OTQ4NGUwNWUxZWI4Mzg5MjhkMzFmNzkxNC4uZWY0YTk0OWUyYWVjYmQ0MDFlNDk0NjNjMmZjY2Zk
YWI4ODQyYjczNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE5LTA0LTEyICBNaWd1
ZWwgR29tZXogIDxtYWdvbWV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW1dQRV1bR1RLXSBDb250
ZW50IGRpc2FwcGVhcmluZyB3aGVuIHVzaW5nIENTUyB0cmFuc2Zvcm1zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODE3NTcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEdXJpbmcgZWFjaCBsYXllciBmbHVz
aCwgY3JlYXRlIGFuIEFuaW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50IGluc3RhbmNlIGZvciBlYWNo
IGxheWVyIHRoYXQKKyAgICAgICAgaGFzIGEgYmFja2luZ1N0b3JlIGFuZCBpcyB0byBiZSBhbmlt
YXRlZCwgYW5kIHNlbmQgdGhhdCBjbGllbnQgdG8gdGhlIGFwcHJvcHJpYXRlCisgICAgICAgIFRl
eHR1cmVNYXBwZXJMYXllciBvbiB0aGUgY29tcG9zaXRvciB0aHJlYWQuIER1cmluZyBlYWNoIGZy
YW1lIHJlbmRlcmluZywgdGhlIGNsaWVudCB3aWxsCisgICAgICAgIHVzZSB0aGUgZnV0dXJlIGxh
eWVyIHBvc2l0aW9uIChjdXJyZW50bHkgNTBtcyBpbiB0aGUgZnV0dXJlKSB0byBjaGVjayB3aGV0
aGVyIG5ldyB0aWxlcyBhcmUKKyAgICAgICAgcmVxdWlyZWQgdG8ga2VlcCB0aGUgYW5pbWF0aW9u
IG9uZ29pbmcsIGFuZCBub3RpZnkgdGhlIGFwcHJvcHJpYXRlIENvb3JkaW5hdGVkR3JhcGhpY3NM
YXllciBzbworICAgICAgICBpdCBjYW4gcGVyZm9ybSBhIGxheWVyIGZsdXNoIGFuZCBwcm92aWRl
IG5ldyB0aWxlcy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3Np
YVBsYXRmb3JtTGF5ZXIuaDoKKyAgICAgICAgKE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI6OmZs
dXNoU3RhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpjb21w
dXRlVHJhbnNmb3Jtc1JlY3Vyc2l2ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVy
TGF5ZXI6OnN5bmNBbmltYXRpb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckxheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0FuaW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50Lmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QW5pbWF0ZWRCYWNraW5nU3RvcmVDbGllbnQ6On5BbmltYXRlZEJhY2tp
bmdTdG9yZUNsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3Jk
aW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6On5Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Y2xhbXBUb0NvbnRlbnRzUmVjdElmUmVjdElzSW5maW5pdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRBbmltYXRlZEJhY2tpbmdTdG9yZUNsaWVudDo6Q29v
cmRpbmF0ZWRBbmltYXRlZEJhY2tpbmdTdG9yZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpD
b29yZGluYXRlZEFuaW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50OjpzZXRDb3ZlclJlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpmbHVzaENvbXBvc2l0aW5n
U3RhdGVGb3JUaGlzTGF5ZXJPbmx5KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllcjo6cmVxdWVzdEJhY2tpbmdTdG9yZVVwZGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnVwZGF0ZUNvbnRlbnRCdWZmZXJzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyLmg6CisKIDIwMTktMDQtMTEgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBh
cHBsZS5jb20+CiAKICAgICAgICAgQXZvaWQgZG9pbmcgcG9zaXRpb25lZCBzY3JvbGxpbmcgdHJl
ZSBub2RlIHdvcmsgZm9yIGxheWVycyBub3QgaW5zaWRlIG92ZXJmbG93OnNjcm9sbApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCAyYmYzNGFiMTBhMGZlYWM5Y2QwNTMzYzAwMDQxOGQ5YzQ1YTFjNDBkLi4zNDhhNzg2OGNh
YzQ2OTQyNGQwNDgwOWUyMWM3ZDg5ZDlmNzY3MDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBA
CisyMDE5LTA0LTEyICBNaWd1ZWwgR29tZXogIDxtYWdvbWV6QGlnYWxpYS5jb20+CisKKyAgICAg
ICAgW1dQRV1bR1RLXSBDb250ZW50IGRpc2FwcGVhcmluZyB3aGVuIHVzaW5nIENTUyB0cmFuc2Zv
cm1zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODE3
NTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTZXQg
dGhlIGFwcHJvcHJpYXRlIEFuaW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50IHRvIHRoZSBUZXh0dXJl
TWFwcGVyTGF5ZXJzIHdoZW4gcmVxdWlyZWQuCisKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwOgorICAgICAgICAoV2ViS2l0
OjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnVwZGF0ZVNjZW5lU3RhdGUpOgorCiAyMDE5LTA0
LTExICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBbR1RLXSBSRUdSRVNTSU9OKHIyNDM4NjApOiBNYW55IHRlc3RzIGZhaWxpbmcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBsYXRm
b3JtTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmlj
b3NpYVBsYXRmb3JtTGF5ZXIuaAppbmRleCBiZTNhNTI1N2E0YjI1YWVhNTIxY2M1OGI0ODAzMDRm
ODAyYmQ4MDQwLi4zM2E4NjIyMGFjY2FkZTA4Njg0YWJmNWZmMDQ0OTU1OTgyMGVjNmYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFQ
bGF0Zm9ybUxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS9OaWNvc2lhUGxhdGZvcm1MYXllci5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNwcmFnbWEg
b25jZQogCisjaW5jbHVkZSAiQW5pbWF0ZWRCYWNraW5nU3RvcmVDbGllbnQuaCIKICNpbmNsdWRl
ICJDb2xvci5oIgogI2luY2x1ZGUgIkZpbHRlck9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJGbG9h
dFBvaW50LmgiCkBAIC0xMTAsNiArMTExLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAg
ICBib29sIGNvbnRlbnRMYXllckNoYW5nZWQgOiAxOwogICAgICAgICAgICAgICAgICAgICBib29s
IGJhY2tpbmdTdG9yZUNoYW5nZWQgOiAxOwogICAgICAgICAgICAgICAgICAgICBib29sIGltYWdl
QmFja2luZ0NoYW5nZWQgOiAxOworICAgICAgICAgICAgICAgICAgICBib29sIGFuaW1hdGVkQmFj
a2luZ1N0b3JlQ2xpZW50Q2hhbmdlZCA6IDE7CiAgICAgICAgICAgICAgICAgICAgIGJvb2wgcmVw
YWludENvdW50ZXJDaGFuZ2VkIDogMTsKICAgICAgICAgICAgICAgICAgICAgYm9vbCBkZWJ1Z0Jv
cmRlckNoYW5nZWQgOiAxOwogICAgICAgICAgICAgICAgIH07CkBAIC0xNjIsNiArMTY0LDcgQEAg
cHVibGljOgogICAgICAgICBSZWZQdHI8Q29udGVudExheWVyPiBjb250ZW50TGF5ZXI7CiAgICAg
ICAgIFJlZlB0cjxCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZTsKICAgICAgICAgUmVmUHRyPElt
YWdlQmFja2luZz4gaW1hZ2VCYWNraW5nOworICAgICAgICBSZWZQdHI8V2ViQ29yZTo6QW5pbWF0
ZWRCYWNraW5nU3RvcmVDbGllbnQ+IGFuaW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50OwogCiAgICAg
ICAgIHN0cnVjdCBSZXBhaW50Q291bnRlciB7CiAgICAgICAgICAgICB1bnNpZ25lZCBjb3VudCB7
IDAgfTsKQEAgLTI0MCw2ICsyNDMsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBzdGFnaW5nLmNv
bnRlbnRMYXllciA9IHBlbmRpbmcuY29udGVudExheWVyOwogICAgICAgICBpZiAocGVuZGluZy5k
ZWx0YS5pbWFnZUJhY2tpbmdDaGFuZ2VkKQogICAgICAgICAgICAgc3RhZ2luZy5pbWFnZUJhY2tp
bmcgPSBwZW5kaW5nLmltYWdlQmFja2luZzsKKyAgICAgICAgaWYgKHBlbmRpbmcuZGVsdGEuYW5p
bWF0ZWRCYWNraW5nU3RvcmVDbGllbnRDaGFuZ2VkKQorICAgICAgICAgICAgc3RhZ2luZy5hbmlt
YXRlZEJhY2tpbmdTdG9yZUNsaWVudCA9IHBlbmRpbmcuYW5pbWF0ZWRCYWNraW5nU3RvcmVDbGll
bnQ7CiAKICAgICAgICAgcGVuZGluZy5kZWx0YSA9IHsgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxh
eWVyLmNwcAppbmRleCA1ZTljNTZiNWYzMGYwMjI4YmI4NzA1OGZiZjMwYjIwOWZjOTM5YmQxLi5m
ZjU0ZDg2NjdjNGYzMTIyMGZiYzYyMGVlYmVhYjYzYmRjNzkwMTkyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckxheWVyLmNwcApAQCAtNzgsNiArNzgsMjggQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6
OmNvbXB1dGVUcmFuc2Zvcm1zUmVjdXJzaXZlKCkKICAgICAgICAgICAgIG1fbGF5ZXJUcmFuc2Zv
cm1zLmNvbWJpbmVkRm9yQ2hpbGRyZW4gPSBtX2xheWVyVHJhbnNmb3Jtcy5jb21iaW5lZEZvckNo
aWxkcmVuLnRvMmRUcmFuc2Zvcm0oKTsKICAgICAgICAgbV9sYXllclRyYW5zZm9ybXMuY29tYmlu
ZWRGb3JDaGlsZHJlbi5tdWx0aXBseShtX3N0YXRlLmNoaWxkcmVuVHJhbnNmb3JtKTsKICAgICAg
ICAgbV9sYXllclRyYW5zZm9ybXMuY29tYmluZWRGb3JDaGlsZHJlbi50cmFuc2xhdGUzZCgtb3Jp
Z2luWCwgLW9yaWdpblksIC1tX3N0YXRlLmFuY2hvclBvaW50LnooKSk7CisKKyNpZiBVU0UoQ09P
UkRJTkFURURfR1JBUEhJQ1MpCisgICAgICAgIC8vIENvbXB1dGUgdHJhbnNmb3JtcyBmb3IgdGhl
IGZ1dHVyZSBhcyB3ZWxsLgorICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBmdXR1cmVQYXJl
bnRUcmFuc2Zvcm07CisgICAgICAgIGlmIChtX3BhcmVudCkKKyAgICAgICAgICAgIGZ1dHVyZVBh
cmVudFRyYW5zZm9ybSA9IG1fcGFyZW50LT5tX2xheWVyVHJhbnNmb3Jtcy5mdXR1cmVDb21iaW5l
ZEZvckNoaWxkcmVuOworICAgICAgICBlbHNlIGlmIChtX2VmZmVjdFRhcmdldCkKKyAgICAgICAg
ICAgIGZ1dHVyZVBhcmVudFRyYW5zZm9ybSA9IG1fZWZmZWN0VGFyZ2V0LT5tX2xheWVyVHJhbnNm
b3Jtcy5mdXR1cmVDb21iaW5lZDsKKworICAgICAgICBtX2xheWVyVHJhbnNmb3Jtcy5mdXR1cmVD
b21iaW5lZCA9IGZ1dHVyZVBhcmVudFRyYW5zZm9ybTsKKyAgICAgICAgbV9sYXllclRyYW5zZm9y
bXMuZnV0dXJlQ29tYmluZWQKKyAgICAgICAgICAgIC50cmFuc2xhdGUzZChvcmlnaW5YICsgbV9z
dGF0ZS5wb3MueCgpLCBvcmlnaW5ZICsgbV9zdGF0ZS5wb3MueSgpLCBtX3N0YXRlLmFuY2hvclBv
aW50LnooKSkKKyAgICAgICAgICAgIC5tdWx0aXBseShtX2xheWVyVHJhbnNmb3Jtcy5mdXR1cmVM
b2NhbFRyYW5zZm9ybSk7CisKKyAgICAgICAgbV9sYXllclRyYW5zZm9ybXMuZnV0dXJlQ29tYmlu
ZWRGb3JDaGlsZHJlbiA9IG1fbGF5ZXJUcmFuc2Zvcm1zLmZ1dHVyZUNvbWJpbmVkOworICAgICAg
ICBtX2xheWVyVHJhbnNmb3Jtcy5mdXR1cmVDb21iaW5lZC50cmFuc2xhdGUzZCgtb3JpZ2luWCwg
LW9yaWdpblksIC1tX3N0YXRlLmFuY2hvclBvaW50LnooKSk7CisKKyAgICAgICAgaWYgKCFtX3N0
YXRlLnByZXNlcnZlczNEKQorICAgICAgICAgICAgbV9sYXllclRyYW5zZm9ybXMuZnV0dXJlQ29t
YmluZWRGb3JDaGlsZHJlbiA9IG1fbGF5ZXJUcmFuc2Zvcm1zLmZ1dHVyZUNvbWJpbmVkRm9yQ2hp
bGRyZW4udG8yZFRyYW5zZm9ybSgpOworICAgICAgICBtX2xheWVyVHJhbnNmb3Jtcy5mdXR1cmVD
b21iaW5lZEZvckNoaWxkcmVuLm11bHRpcGx5KG1fc3RhdGUuY2hpbGRyZW5UcmFuc2Zvcm0pOwor
ICAgICAgICBtX2xheWVyVHJhbnNmb3Jtcy5mdXR1cmVDb21iaW5lZEZvckNoaWxkcmVuLnRyYW5z
bGF0ZTNkKC1vcmlnaW5YLCAtb3JpZ2luWSwgLW1fc3RhdGUuYW5jaG9yUG9pbnQueigpKTsKKyNl
bmRpZgogICAgIH0KIAogICAgIG1fc3RhdGUudmlzaWJsZSA9IG1fc3RhdGUuYmFja2ZhY2VWaXNp
YmlsaXR5IHx8ICFtX2xheWVyVHJhbnNmb3Jtcy5jb21iaW5lZC5pc0JhY2tGYWNlVmlzaWJsZSgp
OwpAQCAtOTcsNiArMTE5LDExIEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpjb21wdXRlVHJh
bnNmb3Jtc1JlY3Vyc2l2ZSgpCiAgICAgLy8gUmVvcmRlciBjaGlsZHJlbiBpZiBuZWVkZWQgb24g
dGhlIHdheSBiYWNrIHVwLgogICAgIGlmIChtX3N0YXRlLnByZXNlcnZlczNEKQogICAgICAgICBz
b3J0QnlaT3JkZXIobV9jaGlsZHJlbik7CisKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1Mp
CisgICAgaWYgKG1fYmFja2luZ1N0b3JlICYmIG1fYW5pbWF0ZWRCYWNraW5nU3RvcmVDbGllbnQp
CisgICAgICAgIG1fYW5pbWF0ZWRCYWNraW5nU3RvcmVDbGllbnQtPnJlcXVlc3RCYWNraW5nU3Rv
cmVVcGRhdGVJZk5lZWRlZChtX2xheWVyVHJhbnNmb3Jtcy5mdXR1cmVDb21iaW5lZCk7CisjZW5k
aWYKIH0KIAogdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50KCkKQEAgLTYyMyw2ICs2NTAs
MTMgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEJhY2tpbmdTdG9yZShUZXh0dXJlTWFw
cGVyQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUKICAgICBtX2JhY2tpbmdTdG9yZSA9IGJhY2tp
bmdTdG9yZTsKIH0KIAorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKK3ZvaWQgVGV4dHVy
ZU1hcHBlckxheWVyOjpzZXRBbmltYXRlZEJhY2tpbmdTdG9yZUNsaWVudChBbmltYXRlZEJhY2tp
bmdTdG9yZUNsaWVudCogY2xpZW50KQoreworICAgIG1fYW5pbWF0ZWRCYWNraW5nU3RvcmVDbGll
bnQgPSBjbGllbnQ7Cit9CisjZW5kaWYKKwogYm9vbCBUZXh0dXJlTWFwcGVyTGF5ZXI6OmRlc2Nl
bmRhbnRzT3JTZWxmSGF2ZVJ1bm5pbmdBbmltYXRpb25zKCkgY29uc3QKIHsKICAgICBpZiAobV9h
bmltYXRpb25zLmhhc1J1bm5pbmdBbmltYXRpb25zKCkpCkBAIC02NTEsNiArNjg1LDEzIEBAIGJv
b2wgVGV4dHVyZU1hcHBlckxheWVyOjpzeW5jQW5pbWF0aW9ucyhNb25vdG9uaWNUaW1lIHRpbWUp
CiAgICAgbV9jdXJyZW50T3BhY2l0eSA9IGFwcGxpY2F0aW9uUmVzdWx0cy5vcGFjaXR5LnZhbHVl
T3IobV9zdGF0ZS5vcGFjaXR5KTsKICAgICBtX2N1cnJlbnRGaWx0ZXJzID0gYXBwbGljYXRpb25S
ZXN1bHRzLmZpbHRlcnMudmFsdWVPcihtX3N0YXRlLmZpbHRlcnMpOwogCisjaWYgVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTKQorICAgIC8vIENhbGN1bGF0ZSBsb2NhbFRyYW5zZm9ybSA1MG1zIGlu
IHRoZSBmdXR1cmUuCisgICAgVGV4dHVyZU1hcHBlckFuaW1hdGlvbjo6QXBwbGljYXRpb25SZXN1
bHQgZnV0dXJlQXBwbGljYXRpb25SZXN1bHRzOworICAgIG1fYW5pbWF0aW9ucy5hcHBseShmdXR1
cmVBcHBsaWNhdGlvblJlc3VsdHMsIHRpbWUgKyBTZWNvbmRzOjpmcm9tTWlsbGlzZWNvbmRzKDUw
KSk7CisgICAgbV9sYXllclRyYW5zZm9ybXMuZnV0dXJlTG9jYWxUcmFuc2Zvcm0gPSBmdXR1cmVB
cHBsaWNhdGlvblJlc3VsdHMudHJhbnNmb3JtLnZhbHVlT3IobV9sYXllclRyYW5zZm9ybXMubG9j
YWxUcmFuc2Zvcm0pOworI2VuZGlmCisKICAgICByZXR1cm4gYXBwbGljYXRpb25SZXN1bHRzLmhh
c1J1bm5pbmdBbmltYXRpb25zOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKaW5kZXggZWEy
NTliYTEwMDZiMjU2ZWIxYWY4ZjY5OWFlZTkzMjJiMWNjNWViMi4uYTY4ZTRhYjQ1NzE4MDcyNmU2
YTUwNDk3ZTJhNDQ0NGRlMThkMDQ2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaApAQCAtMjcs
NiArMjcsMTAgQEAKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmgiCiAjaW5j
bHVkZSA8d3RmL1dlYWtQdHIuaD4KIAorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKyNp
bmNsdWRlICJBbmltYXRlZEJhY2tpbmdTdG9yZUNsaWVudC5oIgorI2VuZGlmCisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgR3JhcGhpY3NMYXllcjsKQEAgLTg4LDYgKzkyLDkgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0Q29udGVudHNMYXllcihUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
ciopOwogICAgIHZvaWQgc2V0QW5pbWF0aW9ucyhjb25zdCBUZXh0dXJlTWFwcGVyQW5pbWF0aW9u
cyYpOwogICAgIHZvaWQgc2V0QmFja2luZ1N0b3JlKFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUq
KTsKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisgICAgdm9pZCBzZXRBbmltYXRlZEJh
Y2tpbmdTdG9yZUNsaWVudChBbmltYXRlZEJhY2tpbmdTdG9yZUNsaWVudCopOworI2VuZGlmCiAK
ICAgICBib29sIGFwcGx5QW5pbWF0aW9uc1JlY3Vyc2l2ZWx5KE1vbm90b25pY1RpbWUpOwogICAg
IGJvb2wgc3luY0FuaW1hdGlvbnMoTW9ub3RvbmljVGltZSk7CkBAIC0xOTcsMTIgKzIwNCwxOSBA
QCBwcml2YXRlOgogICAgIFRleHR1cmVNYXBwZXIqIG1fdGV4dHVyZU1hcHBlciB7IG51bGxwdHIg
fTsKICAgICBUZXh0dXJlTWFwcGVyQW5pbWF0aW9ucyBtX2FuaW1hdGlvbnM7CiAgICAgdWludDMy
X3QgbV9pZCB7IDAgfTsKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisgICAgUmVmUHRy
PEFuaW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50PiBtX2FuaW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50
OworI2VuZGlmCiAKICAgICBzdHJ1Y3QgewogICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBs
b2NhbFRyYW5zZm9ybTsKLQogICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjb21iaW5lZDsK
ICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY29tYmluZWRGb3JDaGlsZHJlbjsKKyNpZiBV
U0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGZ1
dHVyZUxvY2FsVHJhbnNmb3JtOworICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBmdXR1cmVD
b21iaW5lZDsKKyAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggZnV0dXJlQ29tYmluZWRGb3JD
aGlsZHJlbjsKKyNlbmRpZgogICAgIH0gbV9sYXllclRyYW5zZm9ybXM7CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
QW5pbWF0ZWRCYWNraW5nU3RvcmVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9BbmltYXRlZEJhY2tpbmdTdG9yZUNsaWVudC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjViMmM5OGViNGI1ZDM1ZTkzYWU4MGI4Y2RmMjAwMjJkOTkxNzI2NWYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29v
cmRpbmF0ZWQvQW5pbWF0ZWRCYWNraW5nU3RvcmVDbGllbnQuaApAQCAtMCwwICsxLDQ3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE5IE1ldHJvbG9naWNhbCBHcm91cCBCLlYuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTkgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZAorICogICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorCisjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBU
cmFuc2Zvcm1hdGlvbk1hdHJpeDsKKworY2xhc3MgQW5pbWF0ZWRCYWNraW5nU3RvcmVDbGllbnQg
OiBwdWJsaWMgUmVmQ291bnRlZDxBbmltYXRlZEJhY2tpbmdTdG9yZUNsaWVudD4geworcHVibGlj
OgorICAgIHZpcnR1YWwgfkFuaW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50KCkgeyB9OworICAgIHZp
cnR1YWwgdm9pZCByZXF1ZXN0QmFja2luZ1N0b3JlVXBkYXRlSWZOZWVkZWQoVHJhbnNmb3JtYXRp
b25NYXRyaXgmKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJjb3JlCisKKyNlbmRpZiAv
LyBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGlu
YXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IGE5NTM4MmM5ZDc0Nzk1OWNi
MGRlMjRiYmQ5YjI2MWExYzFmYzBlN2QuLjYyODlmMzUxNGM3Y2UyMGEzYWUzZTYzOWZiZDkyODcy
ZDlkNTY1YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXIuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAKICNpZiBVU0UoQ09PUkRJTkFU
RURfR1JBUEhJQ1MpCiAKKyNpbmNsdWRlICJBbmltYXRlZEJhY2tpbmdTdG9yZUNsaWVudC5oIgog
I2luY2x1ZGUgIkZsb2F0UXVhZC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKQEAgLTE0OSw2ICsxNTAsOCBAQCBDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXI6On5Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIoKQogICAgIH0KICAgICBBU1NF
UlQoIW1fbmljb3NpYS5pbWFnZUJhY2tpbmcpOwogICAgIEFTU0VSVCghbV9uaWNvc2lhLmJhY2tp
bmdTdG9yZSk7CisgICAgaWYgKG1fYW5pbWF0ZWRCYWNraW5nU3RvcmVIb3N0KQorICAgICAgICBt
X2FuaW1hdGVkQmFja2luZ1N0b3JlSG9zdC0+bGF5ZXJXaWxsQmVEZXN0cm95ZWQoKTsKICAgICB3
aWxsQmVEZXN0cm95ZWQoKTsKIH0KIApAQCAtNjMxLDYgKzYzNCw4MCBAQCB2b2lkIENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllcjo6dXBkYXRlUGxhdGZvcm1MYXllcigpCiAjZW5kaWYKIH0KIAorc3Rh
dGljIHZvaWQgY2xhbXBUb0NvbnRlbnRzUmVjdElmUmVjdElzSW5maW5pdGUoRmxvYXRSZWN0JiBy
ZWN0LCBjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRzU2l6ZSkKK3sKKyAgICBpZiAocmVjdC53aWR0
aCgpID49IExheW91dFVuaXQ6Om5lYXJseU1heCgpIHx8IHJlY3Qud2lkdGgoKSA8PSBMYXlvdXRV
bml0OjpuZWFybHlNaW4oKSkgeworICAgICAgICByZWN0LnNldFgoMCk7CisgICAgICAgIHJlY3Qu
c2V0V2lkdGgoY29udGVudHNTaXplLndpZHRoKCkpOworICAgIH0KKworICAgIGlmIChyZWN0Lmhl
aWdodCgpID49IExheW91dFVuaXQ6Om5lYXJseU1heCgpIHx8IHJlY3QuaGVpZ2h0KCkgPD0gTGF5
b3V0VW5pdDo6bmVhcmx5TWluKCkpIHsKKyAgICAgICAgcmVjdC5zZXRZKDApOworICAgICAgICBy
ZWN0LnNldEhlaWdodChjb250ZW50c1NpemUuaGVpZ2h0KCkpOworICAgIH0KK30KKworY2xhc3Mg
Q29vcmRpbmF0ZWRBbmltYXRlZEJhY2tpbmdTdG9yZUNsaWVudCA6IHB1YmxpYyBBbmltYXRlZEJh
Y2tpbmdTdG9yZUNsaWVudCB7CitwdWJsaWM6CisgICAgQ29vcmRpbmF0ZWRBbmltYXRlZEJhY2tp
bmdTdG9yZUNsaWVudChSZWZQdHI8Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpBbmltYXRlZEJh
Y2tpbmdTdG9yZUhvc3Q+JiYgaG9zdCwgRmxvYXRSZWN0IHZpc2libGVSZWN0LCBGbG9hdFJlY3Qg
Y292ZXJSZWN0LCBGbG9hdFNpemUgc2l6ZSwgZmxvYXQgY29udGVudHNTY2FsZSkKKyAgICAgICAg
OiBtX2hvc3QoV1RGTW92ZShob3N0KSkKKyAgICAgICAgLCBtX3Zpc2libGVSZWN0KHZpc2libGVS
ZWN0KQorICAgICAgICAsIG1fY292ZXJSZWN0KGNvdmVyUmVjdCkKKyAgICAgICAgLCBtX3NpemUo
c2l6ZSkKKyAgICAgICAgLCBtX2NvbnRlbnRzU2NhbGUoY29udGVudHNTY2FsZSkKKyAgICB7IH0K
KyAgICB+Q29vcmRpbmF0ZWRBbmltYXRlZEJhY2tpbmdTdG9yZUNsaWVudCgpID0gZGVmYXVsdDsK
KworICAgIHZvaWQgc2V0Q292ZXJSZWN0KEludFJlY3QgcmVjdCkgeyBtX2NvdmVyUmVjdCA9IHJl
Y3Q7IH0KKyAgICB2b2lkIHJlcXVlc3RCYWNraW5nU3RvcmVVcGRhdGVJZk5lZWRlZChUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKSBmaW5hbAorICAgIHsKKyAgICAgICAgQVNTRVJUKCFp
c01haW5UaHJlYWQoKSk7CisKKyAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBjb250ZW50cyByZWN0
YW5nbGUgb2YgdGhlIGxheWVyIGluIGJhY2tpbmdTdG9yZSBjb29yZGluYXRlcy4KKyAgICAgICAg
RmxvYXRSZWN0IGNvbnRlbnRzUmVjdCA9IHsgeyAwLCAwIH0sIG1fc2l6ZSB9OworICAgICAgICBj
b250ZW50c1JlY3Quc2NhbGUobV9jb250ZW50c1NjYWxlKTsKKworICAgICAgICAvLyBJZiB0aGUg
YXJlYSBjb3ZlcmVkIGJ5IHRpbGVzICh0aGUgY292ZXJSZWN0LCBhbHJlYWR5IGluIGJhY2tpbmdT
dG9yZSBjb29yZGluYXRlcykgY292ZXJzIHRoZSB3aG9sZQorICAgICAgICAvLyBsYXllciBjb250
ZW50cyB0aGVuIHdlIGRvbid0IG5lZWQgdG8gZG8gYW55dGhpbmcuCisgICAgICAgIGlmIChtX2Nv
dmVyUmVjdC5jb250YWlucyhjb250ZW50c1JlY3QpKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIC8vIE5vbi1pbnZlcnRpYmxlIGxheWVycyBhcmUgbm90IHZpc2libGUuCisgICAgICAg
IGlmICghdHJhbnNmb3JtLmlzSW52ZXJ0aWJsZSgpKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgaW52ZXJzZSBvZiB0aGUgbGF5ZXIgdHJhbnNmb3JtYXRp
b24uIFRoZSBpbnZlcnNlIHRyYW5zZm9ybSB3aWxsIGhhdmUgdGhlIGludmVyc2Ugb2YgdGhlCisg
ICAgICAgIC8vIHNjYWxlRmFjdG9yIGFwcGxpZWQsIHNvIHdlIG5lZWQgdG8gc2NhbGUgaXQgYmFj
ay4KKyAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggaW52ZXJzZSA9IHRyYW5zZm9ybS5pbnZl
cnNlKCkudmFsdWVPcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKS5zY2FsZShtX2NvbnRlbnRzU2Nh
bGUpOworCisgICAgICAgIC8vIEFwcGx5IHRoZSBpbnZlcnNlIHRyYW5zZm9ybSB0byB0aGUgdmlz
aWJsZSByZWN0YW5nbGUsIHNvIHdlIGhhdmUgdGhlIHZpc2libGUgcmVjdGFuZ2xlIGluIGxheWVy
IGNvb3JkaW5hdGVzLgorICAgICAgICBGbG9hdFJlY3QgcmVjdCA9IGludmVyc2UuY2xhbXBlZEJv
dW5kc09mUHJvamVjdGVkUXVhZChGbG9hdFF1YWQobV92aXNpYmxlUmVjdCkpOworICAgICAgICBj
bGFtcFRvQ29udGVudHNSZWN0SWZSZWN0SXNJbmZpbml0ZShyZWN0LCBtX3NpemUpOworICAgICAg
ICBGbG9hdFJlY3QgdHJhbnNmb3JtZWRWaXNpYmxlUmVjdCA9IGVuY2xvc2luZ0ludFJlY3QocmVj
dCk7CisKKyAgICAgICAgLy8gQ29udmVydCB0aGUgY2FsY3VsYXRlZCB2aXNpYmxlIHJlY3Rhbmds
ZSB0byBiYWNraW5nU3RvcmUgY29vcmRpbmF0ZXMuCisgICAgICAgIHRyYW5zZm9ybWVkVmlzaWJs
ZVJlY3Quc2NhbGUobV9jb250ZW50c1NjYWxlKTsKKworICAgICAgICAvLyBSZXN0cmljdCB0aGUg
Y2FsY3VsYXRlZCB2aXNpYmxlIHJlY3QgdG8gdGhlIGNvbnRlbnRzIHJlY3RhbmdsZSBvZiB0aGUg
bGF5ZXIuCisgICAgICAgIHRyYW5zZm9ybWVkVmlzaWJsZVJlY3QuaW50ZXJzZWN0KGNvbnRlbnRz
UmVjdCk7CisKKyAgICAgICAgLy8gSWYgdGhlIGNvdmVyUmVjdCBkb2Vzbid0IGNvbnRhaW4gdGhl
IGNhbGN1bGF0ZWQgdmlzaWJsZSByZWN0YW5nbGUgd2UgbmVlZCB0byByZXF1ZXN0IGEgYmFja2lu
Z1N0b3JlCisgICAgICAgIC8vIHVwZGF0ZSB0byByZW5kZXIgbW9yZSB0aWxlcy4KKyAgICAgICAg
aWYgKCFtX2NvdmVyUmVjdC5jb250YWlucyh0cmFuc2Zvcm1lZFZpc2libGVSZWN0KSkgeworICAg
ICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkSG9zdCA9IG1faG9zdC5jb3B5UmVm
KCldKCkgeworICAgICAgICAgICAgICAgIHByb3RlY3RlZEhvc3QtPnJlcXVlc3RCYWNraW5nU3Rv
cmVVcGRhdGUoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgfQorCitwcml2YXRl
OgorICAgIFJlZlB0cjxDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OkFuaW1hdGVkQmFja2luZ1N0
b3JlSG9zdD4gbV9ob3N0OworICAgIEZsb2F0UmVjdCBtX3Zpc2libGVSZWN0OworICAgIEZsb2F0
UmVjdCBtX2NvdmVyUmVjdDsKKyAgICBGbG9hdFNpemUgbV9zaXplOworICAgIGZsb2F0IG1fY29u
dGVudHNTY2FsZTsKK307CisKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpmbHVzaENv
bXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCkKIHsKICAgICAvLyBXaGV0aGVyIGl0IGtp
Y2tlZCBvciBub3QsIHdlIGRvbid0IG5lZWQgdGhpcyB0aW1lciBydW5uaW5nIGFueW1vcmUuCkBA
IC02NjYsNiArNzQzLDE5IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpmbHVzaENv
bXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCkKICAgICAgICAgbV9uaWNvc2lhLmRlbHRh
LmJhY2tpbmdTdG9yZUNoYW5nZWQgPSB0cnVlOwogICAgIH0KIAorICAgIGlmIChoYXNBY3RpdmVU
cmFuc2Zvcm1BbmltYXRpb24gJiYgbV9uaWNvc2lhLmJhY2tpbmdTdG9yZSkgeworICAgICAgICAv
LyBUaGUgbGF5ZXIgaGFzIGEgYmFja2luZ1N0b3JlIGFuZCBhIHRyYW5zZm9ybWF0aW9uIGFuaW1h
dGlvbi4gVGhpcyBtZWFucyB0aGF0IHdlIG5lZWQgdG8gYWRkIGFuCisgICAgICAgIC8vIEFuaW1h
dGVkQmFja2luZ1N0b3JlQ2xpZW50IHRvIGNoZWNrIHdoZXRoZXIgd2UgbmVlZCB0byB1cGRhdGUg
dGhlIGJhY2tpbmdTdG9yZSBkdWUgdG8gdGhlIGFuaW1hdGlvbi4KKyAgICAgICAgLy8gQXQgdGhp
cyBwb2ludCB3ZSBkb24ndCBrbm93IHRoZSBhcmVhIGNvdmVyZWQgYnkgdGlsZXMgYXZhaWxhYmxl
LCBzbyB3ZSBqdXN0IHBhc3MgYW4gZW1wdHkgcmVjdGFuZ2xlCisgICAgICAgIC8vIGZvciB0aGF0
LiBUaGUgY2FsbCB0byB1cGRhdGVDb250ZW50QnVmZmVycyB3aWxsIGNhbGN1bGF0ZSB0aGUgdGls
ZSBjb3ZlcmFnZSBhbmQgc2V0IHRoZSBhcHByb3ByaWF0ZQorICAgICAgICAvLyByZWN0YW5nbGUg
dG8gdGhlIGNsaWVudC4KKyAgICAgICAgaWYgKCFtX2FuaW1hdGVkQmFja2luZ1N0b3JlSG9zdCkK
KyAgICAgICAgICAgIG1fYW5pbWF0ZWRCYWNraW5nU3RvcmVIb3N0ID0gYWRvcHRSZWYobmV3IEFu
aW1hdGVkQmFja2luZ1N0b3JlSG9zdCh0aGlzKSk7CisgICAgICAgIG1fbmljb3NpYS5hbmltYXRl
ZEJhY2tpbmdTdG9yZUNsaWVudCA9IGFkb3B0UmVmKG5ldyBDb29yZGluYXRlZEFuaW1hdGVkQmFj
a2luZ1N0b3JlQ2xpZW50KG1fYW5pbWF0ZWRCYWNraW5nU3RvcmVIb3N0LmNvcHlSZWYoKSwgbV9j
b29yZGluYXRvci0+dmlzaWJsZUNvbnRlbnRzUmVjdCgpLCBJbnRSZWN0KDAsIDAsIDAsIDApLCBt
X3NpemUsIGVmZmVjdGl2ZUNvbnRlbnRzU2NhbGUoKSkpOworICAgIH0KKyAgICAvLyBFYWNoIGxh
eWVyIGZsdXNoIGNoYW5nZXMgdGhlIEFuaW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50LCBiZWluZyBp
dCBudWxsIG9yIGEgcmVhbCBvbmUuCisgICAgbV9uaWNvc2lhLmRlbHRhLmFuaW1hdGVkQmFja2lu
Z1N0b3JlQ2xpZW50Q2hhbmdlZCA9IHRydWU7CisKICAgICAvLyBEZXRlcm1pbmUgaW1hZ2UgYmFj
a2luZyBwcmVzZW5jZSBhY2NvcmRpbmcgdG8gdGhlIGNvbXBvc2l0ZWQgaW1hZ2Ugc291cmNlLgog
ICAgIGlmIChtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZVB0cikgewogICAgICAgICBBU1NFUlQobV9j
b21wb3NpdGVkSW1hZ2UpOwpAQCAtNzg3LDYgKzg3Nyw4IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCkKICAgICAg
ICAgICAgICAgICAgICAgc3RhdGUuY29udGVudExheWVyID0gbV9uaWNvc2lhLmNvbnRlbnRMYXll
cjsKICAgICAgICAgICAgICAgICBpZiAobG9jYWxEZWx0YS5pbWFnZUJhY2tpbmdDaGFuZ2VkKQog
ICAgICAgICAgICAgICAgICAgICBzdGF0ZS5pbWFnZUJhY2tpbmcgPSBtX25pY29zaWEuaW1hZ2VC
YWNraW5nOworICAgICAgICAgICAgICAgIGlmIChsb2NhbERlbHRhLmFuaW1hdGVkQmFja2luZ1N0
b3JlQ2xpZW50Q2hhbmdlZCkKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUuYW5pbWF0ZWRCYWNr
aW5nU3RvcmVDbGllbnQgPSBtX25pY29zaWEuYW5pbWF0ZWRCYWNraW5nU3RvcmVDbGllbnQ7CiAg
ICAgICAgICAgICB9KTsKICAgICAgICAgbV9uaWNvc2lhLnBlcmZvcm1MYXllclN5bmMgPSAhIW1f
bmljb3NpYS5kZWx0YS52YWx1ZTsKICAgICAgICAgbV9uaWNvc2lhLmRlbHRhID0geyB9OwpAQCAt
ODE3LDE5ICs5MDksNiBAQCBmbG9hdCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmVmZmVjdGl2
ZUNvbnRlbnRzU2NhbGUoKQogICAgIHJldHVybiBzZWxmT3JBbmNlc3RvckhhdmVOb25BZmZpbmVU
cmFuc2Zvcm1zKCkgPyAxIDogZGV2aWNlU2NhbGVGYWN0b3IoKSAqIHBhZ2VTY2FsZUZhY3Rvcigp
OwogfQogCi1zdGF0aWMgdm9pZCBjbGFtcFRvQ29udGVudHNSZWN0SWZSZWN0SXNJbmZpbml0ZShG
bG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudHNTaXplKQotewotICAgIGlm
IChyZWN0LndpZHRoKCkgPj0gTGF5b3V0VW5pdDo6bmVhcmx5TWF4KCkgfHwgcmVjdC53aWR0aCgp
IDw9IExheW91dFVuaXQ6Om5lYXJseU1pbigpKSB7Ci0gICAgICAgIHJlY3Quc2V0WCgwKTsKLSAg
ICAgICAgcmVjdC5zZXRXaWR0aChjb250ZW50c1NpemUud2lkdGgoKSk7Ci0gICAgfQotCi0gICAg
aWYgKHJlY3QuaGVpZ2h0KCkgPj0gTGF5b3V0VW5pdDo6bmVhcmx5TWF4KCkgfHwgcmVjdC5oZWln
aHQoKSA8PSBMYXlvdXRVbml0OjpuZWFybHlNaW4oKSkgewotICAgICAgICByZWN0LnNldFkoMCk7
Ci0gICAgICAgIHJlY3Quc2V0SGVpZ2h0KGNvbnRlbnRzU2l6ZS5oZWlnaHQoKSk7Ci0gICAgfQot
fQotCiBJbnRSZWN0IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dHJhbnNmb3JtZWRWaXNpYmxl
UmVjdCgpCiB7CiAgICAgLy8gTm9uLWludmVydGlibGUgbGF5ZXJzIGFyZSBub3QgdmlzaWJsZS4K
QEAgLTg0NSw2ICs5MjQsMTIgQEAgSW50UmVjdCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnRy
YW5zZm9ybWVkVmlzaWJsZVJlY3QoKQogICAgIHJldHVybiBlbmNsb3NpbmdJbnRSZWN0KHJlY3Qp
OwogfQogCit2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6cmVxdWVzdEJhY2tpbmdTdG9y
ZVVwZGF0ZSgpCit7CisgICAgc2V0TmVlZHNWaXNpYmxlUmVjdEFkanVzdG1lbnQoKTsKKyAgICBu
b3RpZnlGbHVzaFJlcXVpcmVkKCk7Cit9CisKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
Ojp1cGRhdGVDb250ZW50QnVmZmVyc0luY2x1ZGluZ1N1YkxheWVycygpCiB7CiAgICAgaWYgKENv
b3JkaW5hdGVkR3JhcGhpY3NMYXllciogbWFzayA9IGRvd25jYXN0PENvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcj4obWFza0xheWVyKCkpKQpAQCAtOTE0LDYgKzk5OSwxMSBAQCB2b2lkIENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllcjo6dXBkYXRlQ29udGVudEJ1ZmZlcnMoKQogICAgICAgICBsYXllclN0
YXRlLm1haW5CYWNraW5nU3RvcmUtPmNyZWF0ZVRpbGVzSWZOZWVkZWQodHJhbnNmb3JtZWRWaXNp
YmxlUmVjdCgpLCBJbnRSZWN0KDAsIDAsIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCkp
KTsKICAgICB9CiAKKyAgICBpZiAobV9uaWNvc2lhLmFuaW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50
KSB7CisgICAgICAgIC8vIERldGVybWluZSB0aGUgY292ZXJSZWN0IGFuZCBzZXQgaXQgdG8gdGhl
IGNsaWVudC4KKyAgICAgICAgZG93bmNhc3Q8Q29vcmRpbmF0ZWRBbmltYXRlZEJhY2tpbmdTdG9y
ZUNsaWVudD4obV9uaWNvc2lhLmFuaW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50LmdldCgpKS0+c2V0
Q292ZXJSZWN0KGxheWVyU3RhdGUubWFpbkJhY2tpbmdTdG9yZS0+Y292ZXJSZWN0KCkpOworICAg
IH0KKwogICAgIEFTU0VSVChtX2Nvb3JkaW5hdG9yICYmIG1fY29vcmRpbmF0b3ItPmlzRmx1c2hp
bmdMYXllckNoYW5nZXMoKSk7CiAKICAgICAvLyBXaXRoIGFsbCB0aGUgYWZmZWN0ZWQgdGlsZXMg
Y3JlYXRlZCBhbmQvb3IgaW52YWxpZGF0ZWQsIHdlIGNhbiBmaW5hbGx5IHBhaW50IHRoZW0uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRp
bmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgK
aW5kZXggYjUxNzdkZThjZWM1Mjg4NjZhMWM4MGE4ZjY5YjVjYTcyZGQyYjJlYy4uNzhmY2QwYjcx
ZGRmNzFiNDYyMDk2NmMxM2E3OTBmZTM4NWIzNzg4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9j
b29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaApAQCAtMjMsNiArMjMsNyBAQAog
CiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogCisjaW5jbHVkZSAiQW5pbWF0ZWRCYWNr
aW5nU3RvcmVDbGllbnQuaCIKICNpbmNsdWRlICJDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUuaCIK
ICNpbmNsdWRlICJGbG9hdFBvaW50M0QuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCkBA
IC0xMjQsNiArMTI1LDI1IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFJlZlB0cjxOaWNvc2lhOjpD
b21wb3NpdGlvbkxheWVyPiYgY29tcG9zaXRpb25MYXllcigpIGNvbnN0OwogCisgICAgY2xhc3Mg
QW5pbWF0ZWRCYWNraW5nU3RvcmVIb3N0IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEFu
aW1hdGVkQmFja2luZ1N0b3JlSG9zdD4geworICAgIHB1YmxpYzoKKyAgICAgICAgQW5pbWF0ZWRC
YWNraW5nU3RvcmVIb3N0KENvb3JkaW5hdGVkR3JhcGhpY3NMYXllciogbGF5ZXIpCisgICAgICAg
ICAgICA6IG1fbGF5ZXIobGF5ZXIpCisgICAgICAgIHsgfQorCisgICAgICAgIHZvaWQgcmVxdWVz
dEJhY2tpbmdTdG9yZVVwZGF0ZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChtX2xheWVy
KQorICAgICAgICAgICAgICAgIG1fbGF5ZXItPnJlcXVlc3RCYWNraW5nU3RvcmVVcGRhdGUoKTsK
KyAgICAgICAgfQorCisgICAgICAgIHZvaWQgbGF5ZXJXaWxsQmVEZXN0cm95ZWQoKSB7IG1fbGF5
ZXIgPSBudWxscHRyOyB9CisgICAgcHJpdmF0ZToKKyAgICAgICAgQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyKiBtX2xheWVyOworICAgIH07CisKKyAgICB2b2lkIHJlcXVlc3RCYWNraW5nU3RvcmVV
cGRhdGUoKTsKKwogcHJpdmF0ZToKICAgICBib29sIGlzQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
KCkgY29uc3Qgb3ZlcnJpZGU7CiAKQEAgLTE5OCw3ICsyMTgsMTAgQEAgcHJpdmF0ZToKICAgICAg
ICAgUmVmUHRyPE5pY29zaWE6OkJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlOwogICAgICAgICBS
ZWZQdHI8Tmljb3NpYTo6Q29udGVudExheWVyPiBjb250ZW50TGF5ZXI7CiAgICAgICAgIFJlZlB0
cjxOaWNvc2lhOjpJbWFnZUJhY2tpbmc+IGltYWdlQmFja2luZzsKKyAgICAgICAgUmVmUHRyPEFu
aW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50PiBhbmltYXRlZEJhY2tpbmdTdG9yZUNsaWVudDsKICAg
ICB9IG1fbmljb3NpYTsKKworICAgIFJlZlB0cjxBbmltYXRlZEJhY2tpbmdTdG9yZUhvc3Q+IG1f
YW5pbWF0ZWRCYWNraW5nU3RvcmVIb3N0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCmluZGV4IGViNmFmOTgwNjI0
NDg5OWU4NmM3YzU3ODk5ODdmNGIyYTU5YTFiYzAuLjE4ZGMyZmI4ZWQxM2QxNTM0MTJlYTMwZTI5
MTExNzhlYWNlZmM1YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5j
cHAKQEAgLTM1Niw2ICszNTYsMTEgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnVw
ZGF0ZVNjZW5lU3RhdGUoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHN0ZDo6
cmVmKGxheWVyKSwgc3RkOjpyZWYoaW1wbCksIGltcGwudGFrZVVwZGF0ZSgpIH0pOwogICAgICAg
ICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5
ZXIuc2V0Q29udGVudHNMYXllcihudWxscHRyKTsKKworICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGxheWVyU3RhdGUuYW5pbWF0ZWRCYWNraW5nU3RvcmVDbGllbnQpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbGF5ZXIuc2V0QW5pbWF0ZWRCYWNraW5nU3RvcmVDbGllbnQobGF5ZXJT
dGF0ZS5hbmltYXRlZEJhY2tpbmdTdG9yZUNsaWVudC5nZXQoKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXIuc2V0QW5pbWF0
ZWRCYWNraW5nU3RvcmVDbGllbnQobnVsbHB0cik7CiAgICAgICAgICAgICAgICAgICAgIH0pOwog
ICAgICAgICAgICAgfQogICAgICAgICB9KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>367319</attachid>
            <date>2019-04-12 06:04:40 -0700</date>
            <delta_ts>2019-06-14 02:20:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181757-20190412150438.patch</filename>
            <type>text/plain</type>
            <size>23538</size>
            <attacher name="Miguel Gomez">magomez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ0MjEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTYyZTY2NjA0NDhmMjIy
ZThiNzEzM2YzMDMxNTMwMzAzZDcxODRiZS4uMjM1NmQ3MWEzYzVkMjQwNzdlZjg3MDM1MWVjNzFk
MmM4Njk5YzBiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE5LTA0LTEyICBNaWd1
ZWwgR29tZXogIDxtYWdvbWV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW1dQRV1bR1RLXSBDb250
ZW50IGRpc2FwcGVhcmluZyB3aGVuIHVzaW5nIENTUyB0cmFuc2Zvcm1zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODE3NTcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEdXJpbmcgZWFjaCBsYXllciBmbHVz
aCwgY3JlYXRlIGFuIEFuaW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50IGluc3RhbmNlIGZvciBlYWNo
IGxheWVyIHRoYXQKKyAgICAgICAgaGFzIGEgYmFja2luZ1N0b3JlIGFuZCBpcyB0byBiZSBhbmlt
YXRlZCwgYW5kIHNlbmQgdGhhdCBjbGllbnQgdG8gdGhlIGFwcHJvcHJpYXRlCisgICAgICAgIFRl
eHR1cmVNYXBwZXJMYXllciBvbiB0aGUgY29tcG9zaXRvciB0aHJlYWQuIER1cmluZyBlYWNoIGZy
YW1lIHJlbmRlcmluZywgdGhlIGNsaWVudCB3aWxsCisgICAgICAgIHVzZSB0aGUgZnV0dXJlIGxh
eWVyIHBvc2l0aW9uIChjdXJyZW50bHkgNTBtcyBpbiB0aGUgZnV0dXJlKSB0byBjaGVjayB3aGV0
aGVyIG5ldyB0aWxlcyBhcmUKKyAgICAgICAgcmVxdWlyZWQgdG8ga2VlcCB0aGUgYW5pbWF0aW9u
IG9uZ29pbmcsIGFuZCBub3RpZnkgdGhlIGFwcHJvcHJpYXRlIENvb3JkaW5hdGVkR3JhcGhpY3NM
YXllciBzbworICAgICAgICBpdCBjYW4gcGVyZm9ybSBhIGxheWVyIGZsdXNoIGFuZCBwcm92aWRl
IG5ldyB0aWxlcy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3Np
YVBsYXRmb3JtTGF5ZXIuaDoKKyAgICAgICAgKE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI6OmZs
dXNoU3RhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpjb21w
dXRlVHJhbnNmb3Jtc1JlY3Vyc2l2ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVy
TGF5ZXI6OnNldEFuaW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHR1cmVNYXBwZXJMYXllcjo6c3luY0FuaW1hdGlvbnMpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQW5pbWF0ZWRCYWNraW5nU3RvcmVDbGllbnQu
aDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBbmltYXRlZEJhY2tpbmdTdG9yZUNsaWVudDo6
fkFuaW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6fkNvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpjbGFtcFRvQ29udGVudHNSZWN0SWZSZWN0SXNJ
bmZpbml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmZs
dXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkpOgorICAgICAgICAoV2ViQ29yZTo6
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpyZXF1ZXN0QmFja2luZ1N0b3JlVXBkYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dXBkYXRlQ29udGVudEJ1
ZmZlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9D
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaDoKKwogMjAxOS0wNC0xMiAgTWFudWVsIFJlZ28gQ2Fz
YXNub3ZhcyAgPHJlZ29AaWdhbGlhLmNvbT4KIAogICAgICAgICBbY3NzLWZsZXhdW2Nzcy1ncmlk
XSBGaXggc3ludGhlc2l6ZWQgYmFzZWxpbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMmJmMzRhYjEwYTBmZWFjOWNk
MDUzM2MwMDA0MThkOWM0NWExYzQwZC4uMzQ4YTc4NjhjYWM0Njk0MjRkMDQ4MDllMjFjN2Q4OWQ5
Zjc2NzA1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOS0wNC0xMiAgTWlndWVsIEdv
bWV6ICA8bWFnb21lekBpZ2FsaWEuY29tPgorCisgICAgICAgIFtXUEVdW0dUS10gQ29udGVudCBk
aXNhcHBlYXJpbmcgd2hlbiB1c2luZyBDU1MgdHJhbnNmb3JtcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgxNzU3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2V0IHRoZSBhcHByb3ByaWF0ZSBBbmltYXRl
ZEJhY2tpbmdTdG9yZUNsaWVudCB0byB0aGUgVGV4dHVyZU1hcHBlckxheWVycyB3aGVuIHJlcXVp
cmVkLgorCisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lOjp1cGRhdGVTY2VuZVN0YXRlKToKKwogMjAxOS0wNC0xMSAgQ2FybG9zIEdhcmNpYSBDYW1w
b3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gUkVHUkVTU0lPTihyMjQz
ODYwKTogTWFueSB0ZXN0cyBmYWlsaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFQbGF0Zm9ybUxheWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFQbGF0Zm9ybUxheWVyLmgKaW5k
ZXggYmUzYTUyNTdhNGIyNWFlYTUyMWNjNThiNDgwMzA0ZjgwMmJkODA0MC4uMzNhODYyMjBhY2Nh
ZGUwODY4NGFiZjVmZjA0NDk1NTk4MjBlYzZmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGxhdGZvcm1MYXllci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBsYXRmb3JtTGF5
ZXIuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkFuaW1h
dGVkQmFja2luZ1N0b3JlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJG
aWx0ZXJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgpAQCAtMTEwLDYgKzEx
MSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgYm9vbCBjb250ZW50TGF5ZXJDaGFu
Z2VkIDogMTsKICAgICAgICAgICAgICAgICAgICAgYm9vbCBiYWNraW5nU3RvcmVDaGFuZ2VkIDog
MTsKICAgICAgICAgICAgICAgICAgICAgYm9vbCBpbWFnZUJhY2tpbmdDaGFuZ2VkIDogMTsKKyAg
ICAgICAgICAgICAgICAgICAgYm9vbCBhbmltYXRlZEJhY2tpbmdTdG9yZUNsaWVudENoYW5nZWQg
OiAxOwogICAgICAgICAgICAgICAgICAgICBib29sIHJlcGFpbnRDb3VudGVyQ2hhbmdlZCA6IDE7
CiAgICAgICAgICAgICAgICAgICAgIGJvb2wgZGVidWdCb3JkZXJDaGFuZ2VkIDogMTsKICAgICAg
ICAgICAgICAgICB9OwpAQCAtMTYyLDYgKzE2NCw3IEBAIHB1YmxpYzoKICAgICAgICAgUmVmUHRy
PENvbnRlbnRMYXllcj4gY29udGVudExheWVyOwogICAgICAgICBSZWZQdHI8QmFja2luZ1N0b3Jl
PiBiYWNraW5nU3RvcmU7CiAgICAgICAgIFJlZlB0cjxJbWFnZUJhY2tpbmc+IGltYWdlQmFja2lu
ZzsKKyAgICAgICAgUmVmUHRyPFdlYkNvcmU6OkFuaW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50PiBh
bmltYXRlZEJhY2tpbmdTdG9yZUNsaWVudDsKIAogICAgICAgICBzdHJ1Y3QgUmVwYWludENvdW50
ZXIgewogICAgICAgICAgICAgdW5zaWduZWQgY291bnQgeyAwIH07CkBAIC0yNDAsNiArMjQzLDgg
QEAgcHVibGljOgogICAgICAgICAgICAgc3RhZ2luZy5jb250ZW50TGF5ZXIgPSBwZW5kaW5nLmNv
bnRlbnRMYXllcjsKICAgICAgICAgaWYgKHBlbmRpbmcuZGVsdGEuaW1hZ2VCYWNraW5nQ2hhbmdl
ZCkKICAgICAgICAgICAgIHN0YWdpbmcuaW1hZ2VCYWNraW5nID0gcGVuZGluZy5pbWFnZUJhY2tp
bmc7CisgICAgICAgIGlmIChwZW5kaW5nLmRlbHRhLmFuaW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50
Q2hhbmdlZCkKKyAgICAgICAgICAgIHN0YWdpbmcuYW5pbWF0ZWRCYWNraW5nU3RvcmVDbGllbnQg
PSBwZW5kaW5nLmFuaW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50OwogCiAgICAgICAgIHBlbmRpbmcu
ZGVsdGEgPSB7IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKaW5kZXggNWU5YzU2YjVm
MzBmMDIyOGJiODcwNThmYmYzMGIyMDlmYzkzOWJkMS4uOTAzYTNmNDdmZGM1MjBiY2FhYTMwY2M5
YWM5ZjU4ZDJjNTIzZDUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKQEAgLTc4LDYg
Kzc4LDI4IEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpjb21wdXRlVHJhbnNmb3Jtc1JlY3Vy
c2l2ZSgpCiAgICAgICAgICAgICBtX2xheWVyVHJhbnNmb3Jtcy5jb21iaW5lZEZvckNoaWxkcmVu
ID0gbV9sYXllclRyYW5zZm9ybXMuY29tYmluZWRGb3JDaGlsZHJlbi50bzJkVHJhbnNmb3JtKCk7
CiAgICAgICAgIG1fbGF5ZXJUcmFuc2Zvcm1zLmNvbWJpbmVkRm9yQ2hpbGRyZW4ubXVsdGlwbHko
bV9zdGF0ZS5jaGlsZHJlblRyYW5zZm9ybSk7CiAgICAgICAgIG1fbGF5ZXJUcmFuc2Zvcm1zLmNv
bWJpbmVkRm9yQ2hpbGRyZW4udHJhbnNsYXRlM2QoLW9yaWdpblgsIC1vcmlnaW5ZLCAtbV9zdGF0
ZS5hbmNob3JQb2ludC56KCkpOworCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorICAg
ICAgICAvLyBDb21wdXRlIHRyYW5zZm9ybXMgZm9yIHRoZSBmdXR1cmUgYXMgd2VsbC4KKyAgICAg
ICAgVHJhbnNmb3JtYXRpb25NYXRyaXggZnV0dXJlUGFyZW50VHJhbnNmb3JtOworICAgICAgICBp
ZiAobV9wYXJlbnQpCisgICAgICAgICAgICBmdXR1cmVQYXJlbnRUcmFuc2Zvcm0gPSBtX3BhcmVu
dC0+bV9sYXllclRyYW5zZm9ybXMuZnV0dXJlQ29tYmluZWRGb3JDaGlsZHJlbjsKKyAgICAgICAg
ZWxzZSBpZiAobV9lZmZlY3RUYXJnZXQpCisgICAgICAgICAgICBmdXR1cmVQYXJlbnRUcmFuc2Zv
cm0gPSBtX2VmZmVjdFRhcmdldC0+bV9sYXllclRyYW5zZm9ybXMuZnV0dXJlQ29tYmluZWQ7CisK
KyAgICAgICAgbV9sYXllclRyYW5zZm9ybXMuZnV0dXJlQ29tYmluZWQgPSBmdXR1cmVQYXJlbnRU
cmFuc2Zvcm07CisgICAgICAgIG1fbGF5ZXJUcmFuc2Zvcm1zLmZ1dHVyZUNvbWJpbmVkCisgICAg
ICAgICAgICAudHJhbnNsYXRlM2Qob3JpZ2luWCArIG1fc3RhdGUucG9zLngoKSwgb3JpZ2luWSAr
IG1fc3RhdGUucG9zLnkoKSwgbV9zdGF0ZS5hbmNob3JQb2ludC56KCkpCisgICAgICAgICAgICAu
bXVsdGlwbHkobV9sYXllclRyYW5zZm9ybXMuZnV0dXJlTG9jYWxUcmFuc2Zvcm0pOworCisgICAg
ICAgIG1fbGF5ZXJUcmFuc2Zvcm1zLmZ1dHVyZUNvbWJpbmVkRm9yQ2hpbGRyZW4gPSBtX2xheWVy
VHJhbnNmb3Jtcy5mdXR1cmVDb21iaW5lZDsKKyAgICAgICAgbV9sYXllclRyYW5zZm9ybXMuZnV0
dXJlQ29tYmluZWQudHJhbnNsYXRlM2QoLW9yaWdpblgsIC1vcmlnaW5ZLCAtbV9zdGF0ZS5hbmNo
b3JQb2ludC56KCkpOworCisgICAgICAgIGlmICghbV9zdGF0ZS5wcmVzZXJ2ZXMzRCkKKyAgICAg
ICAgICAgIG1fbGF5ZXJUcmFuc2Zvcm1zLmZ1dHVyZUNvbWJpbmVkRm9yQ2hpbGRyZW4gPSBtX2xh
eWVyVHJhbnNmb3Jtcy5mdXR1cmVDb21iaW5lZEZvckNoaWxkcmVuLnRvMmRUcmFuc2Zvcm0oKTsK
KyAgICAgICAgbV9sYXllclRyYW5zZm9ybXMuZnV0dXJlQ29tYmluZWRGb3JDaGlsZHJlbi5tdWx0
aXBseShtX3N0YXRlLmNoaWxkcmVuVHJhbnNmb3JtKTsKKyAgICAgICAgbV9sYXllclRyYW5zZm9y
bXMuZnV0dXJlQ29tYmluZWRGb3JDaGlsZHJlbi50cmFuc2xhdGUzZCgtb3JpZ2luWCwgLW9yaWdp
blksIC1tX3N0YXRlLmFuY2hvclBvaW50LnooKSk7CisjZW5kaWYKICAgICB9CiAKICAgICBtX3N0
YXRlLnZpc2libGUgPSBtX3N0YXRlLmJhY2tmYWNlVmlzaWJpbGl0eSB8fCAhbV9sYXllclRyYW5z
Zm9ybXMuY29tYmluZWQuaXNCYWNrRmFjZVZpc2libGUoKTsKQEAgLTk3LDYgKzExOSwxMSBAQCB2
b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6Y29tcHV0ZVRyYW5zZm9ybXNSZWN1cnNpdmUoKQogICAg
IC8vIFJlb3JkZXIgY2hpbGRyZW4gaWYgbmVlZGVkIG9uIHRoZSB3YXkgYmFjayB1cC4KICAgICBp
ZiAobV9zdGF0ZS5wcmVzZXJ2ZXMzRCkKICAgICAgICAgc29ydEJ5Wk9yZGVyKG1fY2hpbGRyZW4p
OworCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorICAgIGlmIChtX2JhY2tpbmdTdG9y
ZSAmJiBtX2FuaW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50KQorICAgICAgICBtX2FuaW1hdGVkQmFj
a2luZ1N0b3JlQ2xpZW50LT5yZXF1ZXN0QmFja2luZ1N0b3JlVXBkYXRlSWZOZWVkZWQobV9sYXll
clRyYW5zZm9ybXMuZnV0dXJlQ29tYmluZWQpOworI2VuZGlmCiB9CiAKIHZvaWQgVGV4dHVyZU1h
cHBlckxheWVyOjpwYWludCgpCkBAIC02MjMsNiArNjUwLDEzIEBAIHZvaWQgVGV4dHVyZU1hcHBl
ckxheWVyOjpzZXRCYWNraW5nU3RvcmUoVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZSogYmFja2lu
Z1N0b3JlCiAgICAgbV9iYWNraW5nU3RvcmUgPSBiYWNraW5nU3RvcmU7CiB9CiAKKyNpZiBVU0Uo
Q09PUkRJTkFURURfR1JBUEhJQ1MpCit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0QW5pbWF0
ZWRCYWNraW5nU3RvcmVDbGllbnQoQW5pbWF0ZWRCYWNraW5nU3RvcmVDbGllbnQqIGNsaWVudCkK
K3sKKyAgICBtX2FuaW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50ID0gY2xpZW50OworfQorI2VuZGlm
CisKIGJvb2wgVGV4dHVyZU1hcHBlckxheWVyOjpkZXNjZW5kYW50c09yU2VsZkhhdmVSdW5uaW5n
QW5pbWF0aW9ucygpIGNvbnN0CiB7CiAgICAgaWYgKG1fYW5pbWF0aW9ucy5oYXNSdW5uaW5nQW5p
bWF0aW9ucygpKQpAQCAtNjUxLDYgKzY4NSwxMyBAQCBib29sIFRleHR1cmVNYXBwZXJMYXllcjo6
c3luY0FuaW1hdGlvbnMoTW9ub3RvbmljVGltZSB0aW1lKQogICAgIG1fY3VycmVudE9wYWNpdHkg
PSBhcHBsaWNhdGlvblJlc3VsdHMub3BhY2l0eS52YWx1ZU9yKG1fc3RhdGUub3BhY2l0eSk7CiAg
ICAgbV9jdXJyZW50RmlsdGVycyA9IGFwcGxpY2F0aW9uUmVzdWx0cy5maWx0ZXJzLnZhbHVlT3Io
bV9zdGF0ZS5maWx0ZXJzKTsKIAorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKyAgICAv
LyBDYWxjdWxhdGUgbG9jYWxUcmFuc2Zvcm0gNTBtcyBpbiB0aGUgZnV0dXJlLgorICAgIFRleHR1
cmVNYXBwZXJBbmltYXRpb246OkFwcGxpY2F0aW9uUmVzdWx0IGZ1dHVyZUFwcGxpY2F0aW9uUmVz
dWx0czsKKyAgICBtX2FuaW1hdGlvbnMuYXBwbHkoZnV0dXJlQXBwbGljYXRpb25SZXN1bHRzLCB0
aW1lICsgNTBfbXMpOworICAgIG1fbGF5ZXJUcmFuc2Zvcm1zLmZ1dHVyZUxvY2FsVHJhbnNmb3Jt
ID0gZnV0dXJlQXBwbGljYXRpb25SZXN1bHRzLnRyYW5zZm9ybS52YWx1ZU9yKG1fbGF5ZXJUcmFu
c2Zvcm1zLmxvY2FsVHJhbnNmb3JtKTsKKyNlbmRpZgorCiAgICAgcmV0dXJuIGFwcGxpY2F0aW9u
UmVzdWx0cy5oYXNSdW5uaW5nQW5pbWF0aW9uczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5o
CmluZGV4IGVhMjU5YmExMDA2YjI1NmViMWFmOGY2OTlhZWU5MzIyYjFjYzVlYjIuLmE2OGU0YWI0
NTcxODA3MjZlNmE1MDQ5N2UyYTQ0NDRkZTE4ZDA0NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVy
LmgKQEAgLTI3LDYgKzI3LDEwIEBACiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9y
ZS5oIgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JB
UEhJQ1MpCisjaW5jbHVkZSAiQW5pbWF0ZWRCYWNraW5nU3RvcmVDbGllbnQuaCIKKyNlbmRpZgor
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdyYXBoaWNzTGF5ZXI7CkBAIC04OCw2ICs5
Miw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENvbnRlbnRzTGF5ZXIoVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXIqKTsKICAgICB2b2lkIHNldEFuaW1hdGlvbnMoY29uc3QgVGV4dHVyZU1hcHBl
ckFuaW1hdGlvbnMmKTsKICAgICB2b2lkIHNldEJhY2tpbmdTdG9yZShUZXh0dXJlTWFwcGVyQmFj
a2luZ1N0b3JlKik7CisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorICAgIHZvaWQgc2V0
QW5pbWF0ZWRCYWNraW5nU3RvcmVDbGllbnQoQW5pbWF0ZWRCYWNraW5nU3RvcmVDbGllbnQqKTsK
KyNlbmRpZgogCiAgICAgYm9vbCBhcHBseUFuaW1hdGlvbnNSZWN1cnNpdmVseShNb25vdG9uaWNU
aW1lKTsKICAgICBib29sIHN5bmNBbmltYXRpb25zKE1vbm90b25pY1RpbWUpOwpAQCAtMTk3LDEy
ICsyMDQsMTkgQEAgcHJpdmF0ZToKICAgICBUZXh0dXJlTWFwcGVyKiBtX3RleHR1cmVNYXBwZXIg
eyBudWxscHRyIH07CiAgICAgVGV4dHVyZU1hcHBlckFuaW1hdGlvbnMgbV9hbmltYXRpb25zOwog
ICAgIHVpbnQzMl90IG1faWQgeyAwIH07CisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQor
ICAgIFJlZlB0cjxBbmltYXRlZEJhY2tpbmdTdG9yZUNsaWVudD4gbV9hbmltYXRlZEJhY2tpbmdT
dG9yZUNsaWVudDsKKyNlbmRpZgogCiAgICAgc3RydWN0IHsKICAgICAgICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggbG9jYWxUcmFuc2Zvcm07Ci0KICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgg
Y29tYmluZWQ7CiAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNvbWJpbmVkRm9yQ2hpbGRy
ZW47CisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorICAgICAgICBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBmdXR1cmVMb2NhbFRyYW5zZm9ybTsKKyAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRy
aXggZnV0dXJlQ29tYmluZWQ7CisgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGZ1dHVyZUNv
bWJpbmVkRm9yQ2hpbGRyZW47CisjZW5kaWYKICAgICB9IG1fbGF5ZXJUcmFuc2Zvcm1zOwogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL0FuaW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQW5pbWF0ZWRCYWNraW5nU3RvcmVD
bGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zMWY2Y2VjMTYzNzM3MzU5MDRjNzFjZTY3OGQwOTFkODlhZmE2
MWViCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL0FuaW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50LmgKQEAgLTAsMCAr
MSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBNZXRyb2xvZ2ljYWwgR3JvdXAgQi5W
LgorICogQ29weXJpZ2h0IChDKSAyMDE5IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKyAqICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElD
UykKKworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgVHJhbnNmb3JtYXRpb25NYXRyaXg7CisKK2NsYXNzIEFuaW1hdGVkQmFja2luZ1N0
b3JlQ2xpZW50IDogcHVibGljIFJlZkNvdW50ZWQ8QW5pbWF0ZWRCYWNraW5nU3RvcmVDbGllbnQ+
IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5BbmltYXRlZEJhY2tpbmdTdG9yZUNsaWVudCgpIHsg
fTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEJhY2tpbmdTdG9yZVVwZGF0ZUlmTmVlZGVkKGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JikgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Y29yZQorCisjZW5kaWYgLy8gVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAppbmRleCBh
OTUzODJjOWQ3NDc5NTljYjBkZTI0YmJkOWIyNjFhMWMxZmMwZTdkLi5iODE2MDA5Njg5OTJiYWY5
YzUzZjQ5OWVkNDBjY2JmNjM4NzllODU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRp
bmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApAQCAtMjYsNiArMjYsNyBAQAogCiAj
aWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogCisjaW5jbHVkZSAiQW5pbWF0ZWRCYWNraW5n
U3RvcmVDbGllbnQuaCIKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKICNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCkBAIC0xNDksNiArMTUwLDgg
QEAgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp+Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKCkK
ICAgICB9CiAgICAgQVNTRVJUKCFtX25pY29zaWEuaW1hZ2VCYWNraW5nKTsKICAgICBBU1NFUlQo
IW1fbmljb3NpYS5iYWNraW5nU3RvcmUpOworICAgIGlmIChtX2FuaW1hdGVkQmFja2luZ1N0b3Jl
SG9zdCkKKyAgICAgICAgbV9hbmltYXRlZEJhY2tpbmdTdG9yZUhvc3QtPmxheWVyV2lsbEJlRGVz
dHJveWVkKCk7CiAgICAgd2lsbEJlRGVzdHJveWVkKCk7CiB9CiAKQEAgLTYzMSw2ICs2MzQsODYg
QEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnVwZGF0ZVBsYXRmb3JtTGF5ZXIoKQog
I2VuZGlmCiB9CiAKK3N0YXRpYyB2b2lkIGNsYW1wVG9Db250ZW50c1JlY3RJZlJlY3RJc0luZmlu
aXRlKEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRTaXplJiBjb250ZW50c1NpemUpCit7Cisg
ICAgaWYgKHJlY3Qud2lkdGgoKSA+PSBMYXlvdXRVbml0OjpuZWFybHlNYXgoKSB8fCByZWN0Lndp
ZHRoKCkgPD0gTGF5b3V0VW5pdDo6bmVhcmx5TWluKCkpIHsKKyAgICAgICAgcmVjdC5zZXRYKDAp
OworICAgICAgICByZWN0LnNldFdpZHRoKGNvbnRlbnRzU2l6ZS53aWR0aCgpKTsKKyAgICB9CisK
KyAgICBpZiAocmVjdC5oZWlnaHQoKSA+PSBMYXlvdXRVbml0OjpuZWFybHlNYXgoKSB8fCByZWN0
LmhlaWdodCgpIDw9IExheW91dFVuaXQ6Om5lYXJseU1pbigpKSB7CisgICAgICAgIHJlY3Quc2V0
WSgwKTsKKyAgICAgICAgcmVjdC5zZXRIZWlnaHQoY29udGVudHNTaXplLmhlaWdodCgpKTsKKyAg
ICB9Cit9CisKK2NsYXNzIENvb3JkaW5hdGVkQW5pbWF0ZWRCYWNraW5nU3RvcmVDbGllbnQgZmlu
YWwgOiBwdWJsaWMgQW5pbWF0ZWRCYWNraW5nU3RvcmVDbGllbnQgeworcHVibGljOgorICAgIHN0
YXRpYyBSZWY8Q29vcmRpbmF0ZWRBbmltYXRlZEJhY2tpbmdTdG9yZUNsaWVudD4gY3JlYXRlKFJl
ZlB0cjxDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OkFuaW1hdGVkQmFja2luZ1N0b3JlSG9zdD4m
JiBob3N0LCBjb25zdCBGbG9hdFJlY3QmIHZpc2libGVSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGNv
dmVyUmVjdCwgY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCBjb250ZW50c1NjYWxlKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29vcmRpbmF0ZWRBbmltYXRlZEJhY2tp
bmdTdG9yZUNsaWVudChXVEZNb3ZlKGhvc3QpLCB2aXNpYmxlUmVjdCwgY292ZXJSZWN0LCBzaXpl
LCBjb250ZW50c1NjYWxlKSk7CisgICAgfQorCisgICAgfkNvb3JkaW5hdGVkQW5pbWF0ZWRCYWNr
aW5nU3RvcmVDbGllbnQoKSA9IGRlZmF1bHQ7CisKKyAgICB2b2lkIHNldENvdmVyUmVjdChjb25z
dCBJbnRSZWN0JiByZWN0KSB7IG1fY292ZXJSZWN0ID0gcmVjdDsgfQorICAgIHZvaWQgcmVxdWVz
dEJhY2tpbmdTdG9yZVVwZGF0ZUlmTmVlZGVkKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0
cmFuc2Zvcm0pIGZpbmFsCisgICAgeworICAgICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsK
KworICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIGNvbnRlbnRzIHJlY3RhbmdsZSBvZiB0aGUgbGF5
ZXIgaW4gYmFja2luZ1N0b3JlIGNvb3JkaW5hdGVzLgorICAgICAgICBGbG9hdFJlY3QgY29udGVu
dHNSZWN0ID0geyB7IDAsIDAgfSwgbV9zaXplIH07CisgICAgICAgIGNvbnRlbnRzUmVjdC5zY2Fs
ZShtX2NvbnRlbnRzU2NhbGUpOworCisgICAgICAgIC8vIElmIHRoZSBhcmVhIGNvdmVyZWQgYnkg
dGlsZXMgKHRoZSBjb3ZlclJlY3QsIGFscmVhZHkgaW4gYmFja2luZ1N0b3JlIGNvb3JkaW5hdGVz
KSBjb3ZlcnMgdGhlIHdob2xlCisgICAgICAgIC8vIGxheWVyIGNvbnRlbnRzIHRoZW4gd2UgZG9u
J3QgbmVlZCB0byBkbyBhbnl0aGluZy4KKyAgICAgICAgaWYgKG1fY292ZXJSZWN0LmNvbnRhaW5z
KGNvbnRlbnRzUmVjdCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgLy8gTm9uLWlu
dmVydGlibGUgbGF5ZXJzIGFyZSBub3QgdmlzaWJsZS4KKyAgICAgICAgaWYgKCF0cmFuc2Zvcm0u
aXNJbnZlcnRpYmxlKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgLy8gQ2FsY3Vs
YXRlIHRoZSBpbnZlcnNlIG9mIHRoZSBsYXllciB0cmFuc2Zvcm1hdGlvbi4gVGhlIGludmVyc2Ug
dHJhbnNmb3JtIHdpbGwgaGF2ZSB0aGUgaW52ZXJzZSBvZiB0aGUKKyAgICAgICAgLy8gc2NhbGVG
YWN0b3IgYXBwbGllZCwgc28gd2UgbmVlZCB0byBzY2FsZSBpdCBiYWNrLgorICAgICAgICBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBpbnZlcnNlID0gdHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKFRy
YW5zZm9ybWF0aW9uTWF0cml4KCkpLnNjYWxlKG1fY29udGVudHNTY2FsZSk7CisKKyAgICAgICAg
Ly8gQXBwbHkgdGhlIGludmVyc2UgdHJhbnNmb3JtIHRvIHRoZSB2aXNpYmxlIHJlY3RhbmdsZSwg
c28gd2UgaGF2ZSB0aGUgdmlzaWJsZSByZWN0YW5nbGUgaW4gbGF5ZXIgY29vcmRpbmF0ZXMuCisg
ICAgICAgIEZsb2F0UmVjdCByZWN0ID0gaW52ZXJzZS5jbGFtcGVkQm91bmRzT2ZQcm9qZWN0ZWRR
dWFkKEZsb2F0UXVhZChtX3Zpc2libGVSZWN0KSk7CisgICAgICAgIGNsYW1wVG9Db250ZW50c1Jl
Y3RJZlJlY3RJc0luZmluaXRlKHJlY3QsIG1fc2l6ZSk7CisgICAgICAgIEZsb2F0UmVjdCB0cmFu
c2Zvcm1lZFZpc2libGVSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChyZWN0KTsKKworICAgICAgICAv
LyBDb252ZXJ0IHRoZSBjYWxjdWxhdGVkIHZpc2libGUgcmVjdGFuZ2xlIHRvIGJhY2tpbmdTdG9y
ZSBjb29yZGluYXRlcy4KKyAgICAgICAgdHJhbnNmb3JtZWRWaXNpYmxlUmVjdC5zY2FsZShtX2Nv
bnRlbnRzU2NhbGUpOworCisgICAgICAgIC8vIFJlc3RyaWN0IHRoZSBjYWxjdWxhdGVkIHZpc2li
bGUgcmVjdCB0byB0aGUgY29udGVudHMgcmVjdGFuZ2xlIG9mIHRoZSBsYXllci4KKyAgICAgICAg
dHJhbnNmb3JtZWRWaXNpYmxlUmVjdC5pbnRlcnNlY3QoY29udGVudHNSZWN0KTsKKworICAgICAg
ICAvLyBJZiB0aGUgY292ZXJSZWN0IGRvZXNuJ3QgY29udGFpbiB0aGUgY2FsY3VsYXRlZCB2aXNp
YmxlIHJlY3RhbmdsZSB3ZSBuZWVkIHRvIHJlcXVlc3QgYSBiYWNraW5nU3RvcmUKKyAgICAgICAg
Ly8gdXBkYXRlIHRvIHJlbmRlciBtb3JlIHRpbGVzLgorICAgICAgICBpZiAoIW1fY292ZXJSZWN0
LmNvbnRhaW5zKHRyYW5zZm9ybWVkVmlzaWJsZVJlY3QpKSB7CisgICAgICAgICAgICBjYWxsT25N
YWluVGhyZWFkKFtwcm90ZWN0ZWRIb3N0ID0gbV9ob3N0LmNvcHlSZWYoKV0oKSB7CisgICAgICAg
ICAgICAgICAgcHJvdGVjdGVkSG9zdC0+cmVxdWVzdEJhY2tpbmdTdG9yZVVwZGF0ZSgpOworICAg
ICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9CisKK3ByaXZhdGU6CisgICAgQ29vcmRpbmF0
ZWRBbmltYXRlZEJhY2tpbmdTdG9yZUNsaWVudChSZWZQdHI8Q29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyOjpBbmltYXRlZEJhY2tpbmdTdG9yZUhvc3Q+JiYgaG9zdCwgY29uc3QgRmxvYXRSZWN0JiB2
aXNpYmxlUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBjb3ZlclJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSwgZmxvYXQgY29udGVudHNTY2FsZSkKKyAgICAgICAgOiBtX2hvc3QoV1RGTW92ZShob3N0
KSkKKyAgICAgICAgLCBtX3Zpc2libGVSZWN0KHZpc2libGVSZWN0KQorICAgICAgICAsIG1fY292
ZXJSZWN0KGNvdmVyUmVjdCkKKyAgICAgICAgLCBtX3NpemUoc2l6ZSkKKyAgICAgICAgLCBtX2Nv
bnRlbnRzU2NhbGUoY29udGVudHNTY2FsZSkKKyAgICB7IH0KKworICAgIFJlZlB0cjxDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OkFuaW1hdGVkQmFja2luZ1N0b3JlSG9zdD4gbV9ob3N0OworICAg
IEZsb2F0UmVjdCBtX3Zpc2libGVSZWN0OworICAgIEZsb2F0UmVjdCBtX2NvdmVyUmVjdDsKKyAg
ICBGbG9hdFNpemUgbV9zaXplOworICAgIGZsb2F0IG1fY29udGVudHNTY2FsZTsKK307CisKIHZv
aWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlz
TGF5ZXJPbmx5KCkKIHsKICAgICAvLyBXaGV0aGVyIGl0IGtpY2tlZCBvciBub3QsIHdlIGRvbid0
IG5lZWQgdGhpcyB0aW1lciBydW5uaW5nIGFueW1vcmUuCkBAIC02NjYsNiArNzQ5LDE5IEBAIHZv
aWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlz
TGF5ZXJPbmx5KCkKICAgICAgICAgbV9uaWNvc2lhLmRlbHRhLmJhY2tpbmdTdG9yZUNoYW5nZWQg
PSB0cnVlOwogICAgIH0KIAorICAgIGlmIChoYXNBY3RpdmVUcmFuc2Zvcm1BbmltYXRpb24gJiYg
bV9uaWNvc2lhLmJhY2tpbmdTdG9yZSkgeworICAgICAgICAvLyBUaGUgbGF5ZXIgaGFzIGEgYmFj
a2luZ1N0b3JlIGFuZCBhIHRyYW5zZm9ybWF0aW9uIGFuaW1hdGlvbi4gVGhpcyBtZWFucyB0aGF0
IHdlIG5lZWQgdG8gYWRkIGFuCisgICAgICAgIC8vIEFuaW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50
IHRvIGNoZWNrIHdoZXRoZXIgd2UgbmVlZCB0byB1cGRhdGUgdGhlIGJhY2tpbmdTdG9yZSBkdWUg
dG8gdGhlIGFuaW1hdGlvbi4KKyAgICAgICAgLy8gQXQgdGhpcyBwb2ludCB3ZSBkb24ndCBrbm93
IHRoZSBhcmVhIGNvdmVyZWQgYnkgdGlsZXMgYXZhaWxhYmxlLCBzbyB3ZSBqdXN0IHBhc3MgYW4g
ZW1wdHkgcmVjdGFuZ2xlCisgICAgICAgIC8vIGZvciB0aGF0LiBUaGUgY2FsbCB0byB1cGRhdGVD
b250ZW50QnVmZmVycyB3aWxsIGNhbGN1bGF0ZSB0aGUgdGlsZSBjb3ZlcmFnZSBhbmQgc2V0IHRo
ZSBhcHByb3ByaWF0ZQorICAgICAgICAvLyByZWN0YW5nbGUgdG8gdGhlIGNsaWVudC4KKyAgICAg
ICAgaWYgKCFtX2FuaW1hdGVkQmFja2luZ1N0b3JlSG9zdCkKKyAgICAgICAgICAgIG1fYW5pbWF0
ZWRCYWNraW5nU3RvcmVIb3N0ID0gQW5pbWF0ZWRCYWNraW5nU3RvcmVIb3N0OjpjcmVhdGUoKnRo
aXMpOworICAgICAgICBtX25pY29zaWEuYW5pbWF0ZWRCYWNraW5nU3RvcmVDbGllbnQgPSBDb29y
ZGluYXRlZEFuaW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50OjpjcmVhdGUobV9hbmltYXRlZEJhY2tp
bmdTdG9yZUhvc3QuY29weVJlZigpLCBtX2Nvb3JkaW5hdG9yLT52aXNpYmxlQ29udGVudHNSZWN0
KCksIHsgfSwgbV9zaXplLCBlZmZlY3RpdmVDb250ZW50c1NjYWxlKCkpOworICAgIH0KKyAgICAv
LyBFYWNoIGxheWVyIGZsdXNoIGNoYW5nZXMgdGhlIEFuaW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50
LCBiZWluZyBpdCBudWxsIG9yIGEgcmVhbCBvbmUuCisgICAgbV9uaWNvc2lhLmRlbHRhLmFuaW1h
dGVkQmFja2luZ1N0b3JlQ2xpZW50Q2hhbmdlZCA9IHRydWU7CisKICAgICAvLyBEZXRlcm1pbmUg
aW1hZ2UgYmFja2luZyBwcmVzZW5jZSBhY2NvcmRpbmcgdG8gdGhlIGNvbXBvc2l0ZWQgaW1hZ2Ug
c291cmNlLgogICAgIGlmIChtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZVB0cikgewogICAgICAgICBB
U1NFUlQobV9jb21wb3NpdGVkSW1hZ2UpOwpAQCAtNzg3LDYgKzg4Myw4IEBAIHZvaWQgQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5
KCkKICAgICAgICAgICAgICAgICAgICAgc3RhdGUuY29udGVudExheWVyID0gbV9uaWNvc2lhLmNv
bnRlbnRMYXllcjsKICAgICAgICAgICAgICAgICBpZiAobG9jYWxEZWx0YS5pbWFnZUJhY2tpbmdD
aGFuZ2VkKQogICAgICAgICAgICAgICAgICAgICBzdGF0ZS5pbWFnZUJhY2tpbmcgPSBtX25pY29z
aWEuaW1hZ2VCYWNraW5nOworICAgICAgICAgICAgICAgIGlmIChsb2NhbERlbHRhLmFuaW1hdGVk
QmFja2luZ1N0b3JlQ2xpZW50Q2hhbmdlZCkKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUuYW5p
bWF0ZWRCYWNraW5nU3RvcmVDbGllbnQgPSBtX25pY29zaWEuYW5pbWF0ZWRCYWNraW5nU3RvcmVD
bGllbnQ7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgbV9uaWNvc2lhLnBlcmZvcm1MYXllclN5
bmMgPSAhIW1fbmljb3NpYS5kZWx0YS52YWx1ZTsKICAgICAgICAgbV9uaWNvc2lhLmRlbHRhID0g
eyB9OwpAQCAtODE3LDE5ICs5MTUsNiBAQCBmbG9hdCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6
OmVmZmVjdGl2ZUNvbnRlbnRzU2NhbGUoKQogICAgIHJldHVybiBzZWxmT3JBbmNlc3RvckhhdmVO
b25BZmZpbmVUcmFuc2Zvcm1zKCkgPyAxIDogZGV2aWNlU2NhbGVGYWN0b3IoKSAqIHBhZ2VTY2Fs
ZUZhY3RvcigpOwogfQogCi1zdGF0aWMgdm9pZCBjbGFtcFRvQ29udGVudHNSZWN0SWZSZWN0SXNJ
bmZpbml0ZShGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudHNTaXplKQot
ewotICAgIGlmIChyZWN0LndpZHRoKCkgPj0gTGF5b3V0VW5pdDo6bmVhcmx5TWF4KCkgfHwgcmVj
dC53aWR0aCgpIDw9IExheW91dFVuaXQ6Om5lYXJseU1pbigpKSB7Ci0gICAgICAgIHJlY3Quc2V0
WCgwKTsKLSAgICAgICAgcmVjdC5zZXRXaWR0aChjb250ZW50c1NpemUud2lkdGgoKSk7Ci0gICAg
fQotCi0gICAgaWYgKHJlY3QuaGVpZ2h0KCkgPj0gTGF5b3V0VW5pdDo6bmVhcmx5TWF4KCkgfHwg
cmVjdC5oZWlnaHQoKSA8PSBMYXlvdXRVbml0OjpuZWFybHlNaW4oKSkgewotICAgICAgICByZWN0
LnNldFkoMCk7Ci0gICAgICAgIHJlY3Quc2V0SGVpZ2h0KGNvbnRlbnRzU2l6ZS5oZWlnaHQoKSk7
Ci0gICAgfQotfQotCiBJbnRSZWN0IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dHJhbnNmb3Jt
ZWRWaXNpYmxlUmVjdCgpCiB7CiAgICAgLy8gTm9uLWludmVydGlibGUgbGF5ZXJzIGFyZSBub3Qg
dmlzaWJsZS4KQEAgLTg0NSw2ICs5MzAsMTIgQEAgSW50UmVjdCBDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXI6OnRyYW5zZm9ybWVkVmlzaWJsZVJlY3QoKQogICAgIHJldHVybiBlbmNsb3NpbmdJbnRS
ZWN0KHJlY3QpOwogfQogCit2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6cmVxdWVzdEJh
Y2tpbmdTdG9yZVVwZGF0ZSgpCit7CisgICAgc2V0TmVlZHNWaXNpYmxlUmVjdEFkanVzdG1lbnQo
KTsKKyAgICBub3RpZnlGbHVzaFJlcXVpcmVkKCk7Cit9CisKIHZvaWQgQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyOjp1cGRhdGVDb250ZW50QnVmZmVyc0luY2x1ZGluZ1N1YkxheWVycygpCiB7CiAg
ICAgaWYgKENvb3JkaW5hdGVkR3JhcGhpY3NMYXllciogbWFzayA9IGRvd25jYXN0PENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllcj4obWFza0xheWVyKCkpKQpAQCAtOTE0LDYgKzEwMDUsMTEgQEAgdm9p
ZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnVwZGF0ZUNvbnRlbnRCdWZmZXJzKCkKICAgICAg
ICAgbGF5ZXJTdGF0ZS5tYWluQmFja2luZ1N0b3JlLT5jcmVhdGVUaWxlc0lmTmVlZGVkKHRyYW5z
Zm9ybWVkVmlzaWJsZVJlY3QoKSwgSW50UmVjdCgwLCAwLCBtX3NpemUud2lkdGgoKSwgbV9zaXpl
LmhlaWdodCgpKSk7CiAgICAgfQogCisgICAgaWYgKG1fbmljb3NpYS5hbmltYXRlZEJhY2tpbmdT
dG9yZUNsaWVudCkgeworICAgICAgICAvLyBEZXRlcm1pbmUgdGhlIGNvdmVyUmVjdCBhbmQgc2V0
IGl0IHRvIHRoZSBjbGllbnQuCisgICAgICAgIGRvd25jYXN0PENvb3JkaW5hdGVkQW5pbWF0ZWRC
YWNraW5nU3RvcmVDbGllbnQ+KG1fbmljb3NpYS5hbmltYXRlZEJhY2tpbmdTdG9yZUNsaWVudC5n
ZXQoKSktPnNldENvdmVyUmVjdChsYXllclN0YXRlLm1haW5CYWNraW5nU3RvcmUtPmNvdmVyUmVj
dCgpKTsKKyAgICB9CisKICAgICBBU1NFUlQobV9jb29yZGluYXRvciAmJiBtX2Nvb3JkaW5hdG9y
LT5pc0ZsdXNoaW5nTGF5ZXJDaGFuZ2VzKCkpOwogCiAgICAgLy8gV2l0aCBhbGwgdGhlIGFmZmVj
dGVkIHRpbGVzIGNyZWF0ZWQgYW5kL29yIGludmFsaWRhdGVkLCB3ZSBjYW4gZmluYWxseSBwYWlu
dCB0aGVtLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllci5oCmluZGV4IGI1MTc3ZGU4Y2VjNTI4ODY2YTFjODBhOGY2OWI1Y2E3MmRkMmIyZWMu
LjJhNjRiMGRjOTgxZDIwMTAwZmEyYmUyZTBlNWYwMzY1MDhhMzcyMDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKQEAgLTIzLDYg
KzIzLDcgQEAKIAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKIAorI2luY2x1ZGUgIkFu
aW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ29vcmRpbmF0ZWRHcmFwaGlj
c1N0YXRlLmgiCiAjaW5jbHVkZSAiRmxvYXRQb2ludDNELmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NM
YXllci5oIgpAQCAtMTI0LDYgKzEyNSwzMCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBSZWZQdHI8
Tmljb3NpYTo6Q29tcG9zaXRpb25MYXllcj4mIGNvbXBvc2l0aW9uTGF5ZXIoKSBjb25zdDsKIAor
ICAgIGNsYXNzIEFuaW1hdGVkQmFja2luZ1N0b3JlSG9zdCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxBbmltYXRlZEJhY2tpbmdTdG9yZUhvc3Q+IHsKKyAgICBwdWJsaWM6CisgICAgICAg
IHN0YXRpYyBSZWY8QW5pbWF0ZWRCYWNraW5nU3RvcmVIb3N0PiBjcmVhdGUoQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyJiBsYXllcikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgQW5pbWF0ZWRCYWNraW5nU3RvcmVIb3N0KGxheWVyKSk7CisgICAgICAgIH0KKwor
ICAgICAgICB2b2lkIHJlcXVlc3RCYWNraW5nU3RvcmVVcGRhdGUoKQorICAgICAgICB7CisgICAg
ICAgICAgICBpZiAobV9sYXllcikKKyAgICAgICAgICAgICAgICBtX2xheWVyLT5yZXF1ZXN0QmFj
a2luZ1N0b3JlVXBkYXRlKCk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGxheWVyV2lsbEJl
RGVzdHJveWVkKCkgeyBtX2xheWVyID0gbnVsbHB0cjsgfQorICAgIHByaXZhdGU6CisgICAgICAg
IGV4cGxpY2l0IEFuaW1hdGVkQmFja2luZ1N0b3JlSG9zdChDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXImIGxheWVyKQorICAgICAgICAgICAgOiBtX2xheWVyKCZsYXllcikKKyAgICAgICAgeyB9CisK
KyAgICAgICAgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKiBtX2xheWVyOworICAgIH07CisKKyAg
ICB2b2lkIHJlcXVlc3RCYWNraW5nU3RvcmVVcGRhdGUoKTsKKwogcHJpdmF0ZToKICAgICBib29s
IGlzQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAKQEAgLTE5OCw3
ICsyMjMsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgUmVmUHRyPE5pY29zaWE6OkJhY2tpbmdTdG9y
ZT4gYmFja2luZ1N0b3JlOwogICAgICAgICBSZWZQdHI8Tmljb3NpYTo6Q29udGVudExheWVyPiBj
b250ZW50TGF5ZXI7CiAgICAgICAgIFJlZlB0cjxOaWNvc2lhOjpJbWFnZUJhY2tpbmc+IGltYWdl
QmFja2luZzsKKyAgICAgICAgUmVmUHRyPEFuaW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50PiBhbmlt
YXRlZEJhY2tpbmdTdG9yZUNsaWVudDsKICAgICB9IG1fbmljb3NpYTsKKworICAgIFJlZlB0cjxB
bmltYXRlZEJhY2tpbmdTdG9yZUhvc3Q+IG1fYW5pbWF0ZWRCYWNraW5nU3RvcmVIb3N0OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNz
U2NlbmUuY3BwCmluZGV4IGViNmFmOTgwNjI0NDg5OWU4NmM3YzU3ODk5ODdmNGIyYTU5YTFiYzAu
LjE4ZGMyZmI4ZWQxM2QxNTM0MTJlYTMwZTI5MTExNzhlYWNlZmM1YWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGlj
c1NjZW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKQEAgLTM1Niw2ICszNTYsMTEgQEAgdm9pZCBD
b29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnVwZGF0ZVNjZW5lU3RhdGUoKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB7IHN0ZDo6cmVmKGxheWVyKSwgc3RkOjpyZWYoaW1wbCksIGlt
cGwudGFrZVVwZGF0ZSgpIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXIuc2V0Q29udGVudHNMYXllcihudWxscHRyKTsK
KworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxheWVyU3RhdGUuYW5pbWF0ZWRCYWNraW5n
U3RvcmVDbGllbnQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXIuc2V0QW5pbWF0
ZWRCYWNraW5nU3RvcmVDbGllbnQobGF5ZXJTdGF0ZS5hbmltYXRlZEJhY2tpbmdTdG9yZUNsaWVu
dC5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbGF5ZXIuc2V0QW5pbWF0ZWRCYWNraW5nU3RvcmVDbGllbnQobnVsbHB0cik7
CiAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfQogICAgICAgICB9KTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>372118</attachid>
            <date>2019-06-14 02:20:49 -0700</date>
            <delta_ts>2019-07-01 01:01:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181757-20190614112047.patch</filename>
            <type>text/plain</type>
            <size>27212</size>
            <attacher name="Miguel Gomez">magomez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2NDMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzI5YTUxNjVhYTQ0ZGY4
ZGM4MGU3ZGFlOTk4MWM4YjA2OTU5YTlhNS4uZDA5YmFiNjI1Zjk4OGE2NTNhNGNlM2Q0MjcyYjU2
MWU2NzRiYzI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE5LTA2LTE0ICBNaWd1
ZWwgR29tZXogIDxtYWdvbWV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW1dQRV1bR1RLXSBDb250
ZW50IGRpc2FwcGVhcmluZyB3aGVuIHVzaW5nIENTUyB0cmFuc2Zvcm1zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODE3NTcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEdXJpbmcgZWFjaCBsYXllciBmbHVz
aCwgY3JlYXRlIGFuIEFuaW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50IGluc3RhbmNlIGZvciBlYWNo
IGxheWVyIHRoYXQKKyAgICAgICAgaGFzIGEgYmFja2luZ1N0b3JlIGFuZCBpcyB0byBiZSBhbmlt
YXRlZCwgYW5kIHNlbmQgdGhhdCBjbGllbnQgdG8gdGhlIGFwcHJvcHJpYXRlCisgICAgICAgIFRl
eHR1cmVNYXBwZXJMYXllciBvbiB0aGUgY29tcG9zaXRvciB0aHJlYWQuIER1cmluZyBlYWNoIGZy
YW1lIHJlbmRlcmluZywgdGhlIGNsaWVudCB3aWxsCisgICAgICAgIHVzZSB0aGUgZnV0dXJlIGxh
eWVyIHBvc2l0aW9uIChjdXJyZW50bHkgNTBtcyBpbiB0aGUgZnV0dXJlKSB0byBjaGVjayB3aGV0
aGVyIG5ldyB0aWxlcyBhcmUKKyAgICAgICAgcmVxdWlyZWQgdG8ga2VlcCB0aGUgYW5pbWF0aW9u
IG9uZ29pbmcsIGFuZCBub3RpZnkgdGhlIGFwcHJvcHJpYXRlIENvb3JkaW5hdGVkR3JhcGhpY3NM
YXllciBzbworICAgICAgICBpdCBjYW4gcGVyZm9ybSBhIGxheWVyIGZsdXNoIGFuZCBwcm92aWRl
IG5ldyB0aWxlcy4KKworICAgICAgICAqIHBsYXRmb3JtL1RleHR1cmVNYXBwZXIuY21ha2U6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhQW5pbWF0ZWRCYWNraW5n
U3RvcmVDbGllbnQuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS9OaWNvc2lhUGxhdGZvcm1MYXllci5oOgorICAgICAgICAoTmljb3NpYTo6Q29tcG9zaXRpb25M
YXllcjo6Zmx1c2hTdGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBl
ckFuaW1hdGlvbjo6YXBwbHlLZWVwaW5nSW50ZXJuYWxTdGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0dXJlTWFwcGVyQW5pbWF0aW9uczo6YXBwbHlLZWVwaW5nSW50ZXJuYWxTdGF0ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJBbmltYXRpb24u
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6Y29tcHV0ZVRyYW5z
Zm9ybXNSZWN1cnNpdmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpz
ZXRBbmltYXRlZEJhY2tpbmdTdG9yZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJl
TWFwcGVyTGF5ZXI6OnN5bmNBbmltYXRpb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6On5Db29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Y2xhbXBUb0NvbnRlbnRzUmVjdElmUmVjdElz
SW5maW5pdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpm
bHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KToKKyAgICAgICAgKFdlYkNvcmU6
OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6cmVxdWVzdEJhY2tpbmdTdG9yZVVwZGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnVwZGF0ZUNvbnRlbnRC
dWZmZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmg6CisKIDIwMTktMDYtMTQgIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtjYWlyb10gRW50ZXJpbmcg
dGV4dCBpbnRvIGZvcm1zIG9uIGdpdGh1Yi5jb20gY3JlYXRlcyBhIHRyYXBlem9pZCBhcnRpZmFj
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCBiZTEwMmZkNmY1MjdjODk3ZmVlNmI0ZWU0ZjZkYTFhMTYxODdlNzEyLi4x
NzkyYzg0NzhhYTk4NDU3ZjM2YjE0NjNhNzMzNzE4ZDk5Y2ZjZGE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE1IEBACisyMDE5LTA2LTE0ICBNaWd1ZWwgR29tZXogIDxtYWdvbWV6QGlnYWxpYS5jb20+
CisKKyAgICAgICAgW1dQRV1bR1RLXSBDb250ZW50IGRpc2FwcGVhcmluZyB3aGVuIHVzaW5nIENT
UyB0cmFuc2Zvcm1zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODE3NTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBTZXQgdGhlIGFwcHJvcHJpYXRlIEFuaW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50IHRvIHRo
ZSBUZXh0dXJlTWFwcGVyTGF5ZXJzIHdoZW4gcmVxdWlyZWQuCisKKyAgICAgICAgKiBTaGFyZWQv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnVwZGF0ZVNjZW5lU3RhdGUpOgor
CiAyMDE5LTA2LTEzICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CiAK
ICAgICAgICAgRml4IHNlbGVjdGlvbiBoYW5nIGluIE1haWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1RleHR1cmVNYXBwZXIuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9UZXh0dXJlTWFwcGVyLmNtYWtlCmluZGV4IDkxOThlMjBhMTRmNmRiMTM1OWMzOGI4Y2I5
MTMzMmM2YjIwMjA5YzMuLmNlOWFiOTZmNTJiODk2OWM5MTEwOWVmMDY4NTVjNTA4MzlhNTIzMjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RleHR1cmVNYXBwZXIuY21ha2UK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGV4dHVyZU1hcHBlci5jbWFrZQpAQCAtOTcs
NiArOTcsNyBAQCBpZiAoVVNFX0NPT1JESU5BVEVEX0dSQVBISUNTKQogICAgICAgICBwYWdlL3Nj
cm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUuaAogICAgICAgICBwYWdlL3Nj
cm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmgKIAorICAgICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFBbmltYXRlZEJhY2tpbmdTdG9yZUNsaWVudC5o
CiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUJ1ZmZlci5oCiAgICAg
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBhaW50aW5nRW5naW5lLmgKICAg
ICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGxhdGZvcm1MYXllci5oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29z
aWFBbmltYXRlZEJhY2tpbmdTdG9yZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhQW5pbWF0ZWRCYWNraW5nU3RvcmVDbGllbnQuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yMWRlMTVlY2Q1NDE1MWMwNjc5NTUzN2JlOTU0Y2ZhOWU4MTYwYmZlCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNv
c2lhQW5pbWF0ZWRCYWNraW5nU3RvcmVDbGllbnQuaApAQCAtMCwwICsxLDQ5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE5IE1ldHJvbG9naWNhbCBHcm91cCBCLlYuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTkgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAq
ICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZAorICogICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBIT0xE
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorCisjaW5jbHVkZSA8
d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNz
IFRyYW5zZm9ybWF0aW9uTWF0cml4OworfQorCituYW1lc3BhY2UgTmljb3NpYSB7CisKK2NsYXNz
IEFuaW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PEFuaW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50PiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+QW5p
bWF0ZWRCYWNraW5nU3RvcmVDbGllbnQoKSA9IGRlZmF1bHQ7CisgICAgdmlydHVhbCB2b2lkIHJl
cXVlc3RCYWNraW5nU3RvcmVVcGRhdGVJZk5lZWRlZChjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIE5pY29zaWEKKworI2VuZGlm
IC8vIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBsYXRmb3JtTGF5ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBsYXRmb3JtTGF5ZXIu
aAppbmRleCBhM2JmMjg3ZWI4ZDc1MmM5Y2M3MTA0ZjQ3ZTIxZTJjMDZmZjM1YTE3Li4xMWM2MDU5
ODY2NzMzZTdkYzc1Zjg5MmJiZjM4ZmQyY2IwZTIzM2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFQbGF0Zm9ybUxheWVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGxhdGZv
cm1MYXllci5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiRmxvYXRQb2ludDNELmgiCiAj
aW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiRmxvYXRTaXplLmgiCisjaW5jbHVkZSAi
Tmljb3NpYUFuaW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50LmgiCiAjaW5jbHVkZSAiTmljb3NpYVNj
ZW5lSW50ZWdyYXRpb24uaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyQW5pbWF0aW9uLmgiCiAj
aW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKQEAgLTEyNiw2ICsxMjcsNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICAgICAgICAgIGJvb2wgY29udGVudExheWVyQ2hhbmdlZCA6IDE7CiAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgYmFja2luZ1N0b3JlQ2hhbmdlZCA6IDE7CiAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgaW1hZ2VCYWNraW5nQ2hhbmdlZCA6IDE7CisgICAgICAgICAgICAg
ICAgICAgIGJvb2wgYW5pbWF0ZWRCYWNraW5nU3RvcmVDbGllbnRDaGFuZ2VkIDogMTsKICAgICAg
ICAgICAgICAgICAgICAgYm9vbCByZXBhaW50Q291bnRlckNoYW5nZWQgOiAxOwogICAgICAgICAg
ICAgICAgICAgICBib29sIGRlYnVnQm9yZGVyQ2hhbmdlZCA6IDE7CiAgICAgICAgICAgICAgICAg
fTsKQEAgLTE3OCw2ICsxODAsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJlZlB0cjxDb250ZW50TGF5
ZXI+IGNvbnRlbnRMYXllcjsKICAgICAgICAgUmVmUHRyPEJhY2tpbmdTdG9yZT4gYmFja2luZ1N0
b3JlOwogICAgICAgICBSZWZQdHI8SW1hZ2VCYWNraW5nPiBpbWFnZUJhY2tpbmc7CisgICAgICAg
IFJlZlB0cjxBbmltYXRlZEJhY2tpbmdTdG9yZUNsaWVudD4gYW5pbWF0ZWRCYWNraW5nU3RvcmVD
bGllbnQ7CiAKICAgICAgICAgc3RydWN0IFJlcGFpbnRDb3VudGVyIHsKICAgICAgICAgICAgIHVu
c2lnbmVkIGNvdW50IHsgMCB9OwpAQCAtMjU2LDYgKzI1OSw4IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIHN0YWdpbmcuY29udGVudExheWVyID0gcGVuZGluZy5jb250ZW50TGF5ZXI7CiAgICAgICAg
IGlmIChwZW5kaW5nLmRlbHRhLmltYWdlQmFja2luZ0NoYW5nZWQpCiAgICAgICAgICAgICBzdGFn
aW5nLmltYWdlQmFja2luZyA9IHBlbmRpbmcuaW1hZ2VCYWNraW5nOworICAgICAgICBpZiAocGVu
ZGluZy5kZWx0YS5hbmltYXRlZEJhY2tpbmdTdG9yZUNsaWVudENoYW5nZWQpCisgICAgICAgICAg
ICBzdGFnaW5nLmFuaW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50ID0gcGVuZGluZy5hbmltYXRlZEJh
Y2tpbmdTdG9yZUNsaWVudDsKIAogICAgICAgICBwZW5kaW5nLmRlbHRhID0geyB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckFuaW1hdGlvbi5jcHAKaW5kZXggMDFhMjc0MjQzOWMyMjdmMjIyYjhj
ZWIyY2E2MGEzMWZjOTRmZjlmNC4uZGQwYjhkZmY3NTJkNzg0MGFhY2MwMmZlZWJjZjZmODQzYTg1
NzllOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQW5pbWF0aW9uLmNwcApAQCAtMjM5LDYgKzIz
OSwxOSBAQCB2b2lkIFRleHR1cmVNYXBwZXJBbmltYXRpb246OmFwcGx5KEFwcGxpY2F0aW9uUmVz
dWx0JiBhcHBsaWNhdGlvblJlc3VsdHMsIE1vbm90bwogICAgIH0KIH0KIAordm9pZCBUZXh0dXJl
TWFwcGVyQW5pbWF0aW9uOjphcHBseUtlZXBpbmdJbnRlcm5hbFN0YXRlKEFwcGxpY2F0aW9uUmVz
dWx0JiBhcHBsaWNhdGlvblJlc3VsdHMsIE1vbm90b25pY1RpbWUgdGltZSkKK3sKKyAgICBNb25v
dG9uaWNUaW1lIG9sZExhc3RSZWZyZXNoZWRUaW1lID0gbV9sYXN0UmVmcmVzaGVkVGltZTsKKyAg
ICBTZWNvbmRzIG9sZFRvdGFsUnVubmluZ1RpbWUgPSBtX3RvdGFsUnVubmluZ1RpbWU7CisgICAg
QW5pbWF0aW9uU3RhdGUgb2xkU3RhdGUgPSBtX3N0YXRlOworCisgICAgYXBwbHkoYXBwbGljYXRp
b25SZXN1bHRzLCB0aW1lKTsKKworICAgIG1fbGFzdFJlZnJlc2hlZFRpbWUgPSBvbGRMYXN0UmVm
cmVzaGVkVGltZTsKKyAgICBtX3RvdGFsUnVubmluZ1RpbWUgPSBvbGRUb3RhbFJ1bm5pbmdUaW1l
OworICAgIG1fc3RhdGUgPSBvbGRTdGF0ZTsKK30KKwogdm9pZCBUZXh0dXJlTWFwcGVyQW5pbWF0
aW9uOjpwYXVzZShTZWNvbmRzIHRpbWUpCiB7CiAgICAgbV9zdGF0ZSA9IEFuaW1hdGlvblN0YXRl
OjpQYXVzZWQ7CkBAIC0zMzgsNiArMzUxLDEyIEBAIHZvaWQgVGV4dHVyZU1hcHBlckFuaW1hdGlv
bnM6OmFwcGx5KFRleHR1cmVNYXBwZXJBbmltYXRpb246OkFwcGxpY2F0aW9uUmVzdWx0JiBhCiAg
ICAgICAgIGFuaW1hdGlvbi5hcHBseShhcHBsaWNhdGlvblJlc3VsdHMsIHRpbWUpOwogfQogCit2
b2lkIFRleHR1cmVNYXBwZXJBbmltYXRpb25zOjphcHBseUtlZXBpbmdJbnRlcm5hbFN0YXRlKFRl
eHR1cmVNYXBwZXJBbmltYXRpb246OkFwcGxpY2F0aW9uUmVzdWx0JiBhcHBsaWNhdGlvblJlc3Vs
dHMsIE1vbm90b25pY1RpbWUgdGltZSkKK3sKKyAgICBmb3IgKGF1dG8mIGFuaW1hdGlvbiA6IG1f
YW5pbWF0aW9ucykKKyAgICAgICAgYW5pbWF0aW9uLmFwcGx5S2VlcGluZ0ludGVybmFsU3RhdGUo
YXBwbGljYXRpb25SZXN1bHRzLCB0aW1lKTsKK30KKwogYm9vbCBUZXh0dXJlTWFwcGVyQW5pbWF0
aW9uczo6aGFzQWN0aXZlQW5pbWF0aW9uc09mVHlwZShBbmltYXRlZFByb3BlcnR5SUQgdHlwZSkg
Y29uc3QKIHsKICAgICByZXR1cm4gc3RkOjphbnlfb2YobV9hbmltYXRpb25zLmJlZ2luKCksIG1f
YW5pbWF0aW9ucy5lbmQoKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQW5pbWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckFuaW1hdGlvbi5oCmluZGV4IDNm
YTkxM2QyZmJiMzhjOWRhZmM0NjRlOWQzMWIyNjhjZmNhOTcxNmQuLjJmYTg2YTQxOTgxMWExNWFm
NGI5ODMyMjAzNjhlMDZiMjgwZmUzYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQW5pbWF0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJBbmltYXRpb24u
aApAQCAtNDQsNiArNDQsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgVGV4dHVyZU1h
cHBlckFuaW1hdGlvbihjb25zdCBUZXh0dXJlTWFwcGVyQW5pbWF0aW9uJik7CiAKICAgICB2b2lk
IGFwcGx5KEFwcGxpY2F0aW9uUmVzdWx0JiwgTW9ub3RvbmljVGltZSk7CisgICAgdm9pZCBhcHBs
eUtlZXBpbmdJbnRlcm5hbFN0YXRlKEFwcGxpY2F0aW9uUmVzdWx0JiwgTW9ub3RvbmljVGltZSk7
CiAgICAgdm9pZCBwYXVzZShTZWNvbmRzKTsKICAgICB2b2lkIHJlc3VtZSgpOwogICAgIGJvb2wg
aXNBY3RpdmUoKSBjb25zdDsKQEAgLTgxLDYgKzgyLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVz
dW1lKCk7CiAKICAgICB2b2lkIGFwcGx5KFRleHR1cmVNYXBwZXJBbmltYXRpb246OkFwcGxpY2F0
aW9uUmVzdWx0JiwgTW9ub3RvbmljVGltZSk7CisgICAgdm9pZCBhcHBseUtlZXBpbmdJbnRlcm5h
bFN0YXRlKFRleHR1cmVNYXBwZXJBbmltYXRpb246OkFwcGxpY2F0aW9uUmVzdWx0JiwgTW9ub3Rv
bmljVGltZSk7CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2FuaW1hdGlv
bnMuaXNFbXB0eSgpOyB9CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2FuaW1h
dGlvbnMuc2l6ZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCmluZGV4IDVlOWM1NmI1
ZjMwZjAyMjhiYjg3MDU4ZmJmMzBiMjA5ZmM5MzliZDEuLjM0MjhjNjc0ZmMyNjY4YzQzODViNGQ5
Mzc0MzlkMzBhY2Y3MTkxZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCkBAIC03OCw2
ICs3OCwyOCBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6Y29tcHV0ZVRyYW5zZm9ybXNSZWN1
cnNpdmUoKQogICAgICAgICAgICAgbV9sYXllclRyYW5zZm9ybXMuY29tYmluZWRGb3JDaGlsZHJl
biA9IG1fbGF5ZXJUcmFuc2Zvcm1zLmNvbWJpbmVkRm9yQ2hpbGRyZW4udG8yZFRyYW5zZm9ybSgp
OwogICAgICAgICBtX2xheWVyVHJhbnNmb3Jtcy5jb21iaW5lZEZvckNoaWxkcmVuLm11bHRpcGx5
KG1fc3RhdGUuY2hpbGRyZW5UcmFuc2Zvcm0pOwogICAgICAgICBtX2xheWVyVHJhbnNmb3Jtcy5j
b21iaW5lZEZvckNoaWxkcmVuLnRyYW5zbGF0ZTNkKC1vcmlnaW5YLCAtb3JpZ2luWSwgLW1fc3Rh
dGUuYW5jaG9yUG9pbnQueigpKTsKKworI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKyAg
ICAgICAgLy8gQ29tcHV0ZSB0cmFuc2Zvcm1zIGZvciB0aGUgZnV0dXJlIGFzIHdlbGwuCisgICAg
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGZ1dHVyZVBhcmVudFRyYW5zZm9ybTsKKyAgICAgICAg
aWYgKG1fcGFyZW50KQorICAgICAgICAgICAgZnV0dXJlUGFyZW50VHJhbnNmb3JtID0gbV9wYXJl
bnQtPm1fbGF5ZXJUcmFuc2Zvcm1zLmZ1dHVyZUNvbWJpbmVkRm9yQ2hpbGRyZW47CisgICAgICAg
IGVsc2UgaWYgKG1fZWZmZWN0VGFyZ2V0KQorICAgICAgICAgICAgZnV0dXJlUGFyZW50VHJhbnNm
b3JtID0gbV9lZmZlY3RUYXJnZXQtPm1fbGF5ZXJUcmFuc2Zvcm1zLmZ1dHVyZUNvbWJpbmVkOwor
CisgICAgICAgIG1fbGF5ZXJUcmFuc2Zvcm1zLmZ1dHVyZUNvbWJpbmVkID0gZnV0dXJlUGFyZW50
VHJhbnNmb3JtOworICAgICAgICBtX2xheWVyVHJhbnNmb3Jtcy5mdXR1cmVDb21iaW5lZAorICAg
ICAgICAgICAgLnRyYW5zbGF0ZTNkKG9yaWdpblggKyBtX3N0YXRlLnBvcy54KCksIG9yaWdpblkg
KyBtX3N0YXRlLnBvcy55KCksIG1fc3RhdGUuYW5jaG9yUG9pbnQueigpKQorICAgICAgICAgICAg
Lm11bHRpcGx5KG1fbGF5ZXJUcmFuc2Zvcm1zLmZ1dHVyZUxvY2FsVHJhbnNmb3JtKTsKKworICAg
ICAgICBtX2xheWVyVHJhbnNmb3Jtcy5mdXR1cmVDb21iaW5lZEZvckNoaWxkcmVuID0gbV9sYXll
clRyYW5zZm9ybXMuZnV0dXJlQ29tYmluZWQ7CisgICAgICAgIG1fbGF5ZXJUcmFuc2Zvcm1zLmZ1
dHVyZUNvbWJpbmVkLnRyYW5zbGF0ZTNkKC1vcmlnaW5YLCAtb3JpZ2luWSwgLW1fc3RhdGUuYW5j
aG9yUG9pbnQueigpKTsKKworICAgICAgICBpZiAoIW1fc3RhdGUucHJlc2VydmVzM0QpCisgICAg
ICAgICAgICBtX2xheWVyVHJhbnNmb3Jtcy5mdXR1cmVDb21iaW5lZEZvckNoaWxkcmVuID0gbV9s
YXllclRyYW5zZm9ybXMuZnV0dXJlQ29tYmluZWRGb3JDaGlsZHJlbi50bzJkVHJhbnNmb3JtKCk7
CisgICAgICAgIG1fbGF5ZXJUcmFuc2Zvcm1zLmZ1dHVyZUNvbWJpbmVkRm9yQ2hpbGRyZW4ubXVs
dGlwbHkobV9zdGF0ZS5jaGlsZHJlblRyYW5zZm9ybSk7CisgICAgICAgIG1fbGF5ZXJUcmFuc2Zv
cm1zLmZ1dHVyZUNvbWJpbmVkRm9yQ2hpbGRyZW4udHJhbnNsYXRlM2QoLW9yaWdpblgsIC1vcmln
aW5ZLCAtbV9zdGF0ZS5hbmNob3JQb2ludC56KCkpOworI2VuZGlmCiAgICAgfQogCiAgICAgbV9z
dGF0ZS52aXNpYmxlID0gbV9zdGF0ZS5iYWNrZmFjZVZpc2liaWxpdHkgfHwgIW1fbGF5ZXJUcmFu
c2Zvcm1zLmNvbWJpbmVkLmlzQmFja0ZhY2VWaXNpYmxlKCk7CkBAIC05Nyw2ICsxMTksMTEgQEAg
dm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OmNvbXB1dGVUcmFuc2Zvcm1zUmVjdXJzaXZlKCkKICAg
ICAvLyBSZW9yZGVyIGNoaWxkcmVuIGlmIG5lZWRlZCBvbiB0aGUgd2F5IGJhY2sgdXAuCiAgICAg
aWYgKG1fc3RhdGUucHJlc2VydmVzM0QpCiAgICAgICAgIHNvcnRCeVpPcmRlcihtX2NoaWxkcmVu
KTsKKworI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKyAgICBpZiAobV9iYWNraW5nU3Rv
cmUgJiYgbV9hbmltYXRlZEJhY2tpbmdTdG9yZUNsaWVudCkKKyAgICAgICAgbV9hbmltYXRlZEJh
Y2tpbmdTdG9yZUNsaWVudC0+cmVxdWVzdEJhY2tpbmdTdG9yZVVwZGF0ZUlmTmVlZGVkKG1fbGF5
ZXJUcmFuc2Zvcm1zLmZ1dHVyZUNvbWJpbmVkKTsKKyNlbmRpZgogfQogCiB2b2lkIFRleHR1cmVN
YXBwZXJMYXllcjo6cGFpbnQoKQpAQCAtNjIzLDYgKzY1MCwxMyBAQCB2b2lkIFRleHR1cmVNYXBw
ZXJMYXllcjo6c2V0QmFja2luZ1N0b3JlKFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUqIGJhY2tp
bmdTdG9yZQogICAgIG1fYmFja2luZ1N0b3JlID0gYmFja2luZ1N0b3JlOwogfQogCisjaWYgVVNF
KENPT1JESU5BVEVEX0dSQVBISUNTKQordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEFuaW1h
dGVkQmFja2luZ1N0b3JlQ2xpZW50KE5pY29zaWE6OkFuaW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50
KiBjbGllbnQpCit7CisgICAgbV9hbmltYXRlZEJhY2tpbmdTdG9yZUNsaWVudCA9IGNsaWVudDsK
K30KKyNlbmRpZgorCiBib29sIFRleHR1cmVNYXBwZXJMYXllcjo6ZGVzY2VuZGFudHNPclNlbGZI
YXZlUnVubmluZ0FuaW1hdGlvbnMoKSBjb25zdAogewogICAgIGlmIChtX2FuaW1hdGlvbnMuaGFz
UnVubmluZ0FuaW1hdGlvbnMoKSkKQEAgLTY1MSw2ICs2ODUsMTMgQEAgYm9vbCBUZXh0dXJlTWFw
cGVyTGF5ZXI6OnN5bmNBbmltYXRpb25zKE1vbm90b25pY1RpbWUgdGltZSkKICAgICBtX2N1cnJl
bnRPcGFjaXR5ID0gYXBwbGljYXRpb25SZXN1bHRzLm9wYWNpdHkudmFsdWVPcihtX3N0YXRlLm9w
YWNpdHkpOwogICAgIG1fY3VycmVudEZpbHRlcnMgPSBhcHBsaWNhdGlvblJlc3VsdHMuZmlsdGVy
cy52YWx1ZU9yKG1fc3RhdGUuZmlsdGVycyk7CiAKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJ
Q1MpCisgICAgLy8gQ2FsY3VsYXRlIGxvY2FsVHJhbnNmb3JtIDUwbXMgaW4gdGhlIGZ1dHVyZS4K
KyAgICBUZXh0dXJlTWFwcGVyQW5pbWF0aW9uOjpBcHBsaWNhdGlvblJlc3VsdCBmdXR1cmVBcHBs
aWNhdGlvblJlc3VsdHM7CisgICAgbV9hbmltYXRpb25zLmFwcGx5S2VlcGluZ0ludGVybmFsU3Rh
dGUoZnV0dXJlQXBwbGljYXRpb25SZXN1bHRzLCB0aW1lICsgNTBfbXMpOworICAgIG1fbGF5ZXJU
cmFuc2Zvcm1zLmZ1dHVyZUxvY2FsVHJhbnNmb3JtID0gZnV0dXJlQXBwbGljYXRpb25SZXN1bHRz
LnRyYW5zZm9ybS52YWx1ZU9yKG1fbGF5ZXJUcmFuc2Zvcm1zLmxvY2FsVHJhbnNmb3JtKTsKKyNl
bmRpZgorCiAgICAgcmV0dXJuIGFwcGxpY2F0aW9uUmVzdWx0cy5oYXNSdW5uaW5nQW5pbWF0aW9u
czsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCmluZGV4IGVhMjU5YmExMDA2YjI1NmViMWFm
OGY2OTlhZWU5MzIyYjFjYzVlYjIuLjUwYjI0YWE3MWUyZGNhZTgwMTYyM2YwZWIyZGUxYjkzMDRh
MTRkODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKQEAgLTI3LDYgKzI3LDEwIEBACiAjaW5j
bHVkZSAiVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oIgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRy
Lmg+CiAKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisjaW5jbHVkZSAiTmljb3NpYUFu
aW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBHcmFwaGljc0xheWVyOwpAQCAtODgsNiArOTIsOSBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRDb250ZW50c0xheWVyKFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyKik7CiAgICAg
dm9pZCBzZXRBbmltYXRpb25zKGNvbnN0IFRleHR1cmVNYXBwZXJBbmltYXRpb25zJik7CiAgICAg
dm9pZCBzZXRCYWNraW5nU3RvcmUoVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZSopOworI2lmIFVT
RShDT09SRElOQVRFRF9HUkFQSElDUykKKyAgICB2b2lkIHNldEFuaW1hdGVkQmFja2luZ1N0b3Jl
Q2xpZW50KE5pY29zaWE6OkFuaW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50Kik7CisjZW5kaWYKIAog
ICAgIGJvb2wgYXBwbHlBbmltYXRpb25zUmVjdXJzaXZlbHkoTW9ub3RvbmljVGltZSk7CiAgICAg
Ym9vbCBzeW5jQW5pbWF0aW9ucyhNb25vdG9uaWNUaW1lKTsKQEAgLTE5NywxMiArMjA0LDE5IEBA
IHByaXZhdGU6CiAgICAgVGV4dHVyZU1hcHBlciogbV90ZXh0dXJlTWFwcGVyIHsgbnVsbHB0ciB9
OwogICAgIFRleHR1cmVNYXBwZXJBbmltYXRpb25zIG1fYW5pbWF0aW9uczsKICAgICB1aW50MzJf
dCBtX2lkIHsgMCB9OworI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKyAgICBSZWZQdHI8
Tmljb3NpYTo6QW5pbWF0ZWRCYWNraW5nU3RvcmVDbGllbnQ+IG1fYW5pbWF0ZWRCYWNraW5nU3Rv
cmVDbGllbnQ7CisjZW5kaWYKIAogICAgIHN0cnVjdCB7CiAgICAgICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4IGxvY2FsVHJhbnNmb3JtOwotCiAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNv
bWJpbmVkOwogICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjb21iaW5lZEZvckNoaWxkcmVu
OworI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKyAgICAgICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggZnV0dXJlTG9jYWxUcmFuc2Zvcm07CisgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IGZ1dHVyZUNvbWJpbmVkOworICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBmdXR1cmVDb21i
aW5lZEZvckNoaWxkcmVuOworI2VuZGlmCiAgICAgfSBtX2xheWVyVHJhbnNmb3JtczsKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ci5jcHAKaW5kZXggYTk1MzgyYzlkNzQ3OTU5Y2IwZGUyNGJiZDliMjYxYTFjMWZjMGU3ZC4uMGIw
NTFhOWJlNThmOWIwMTQzNDUzNWY2OTFkZjliZjA4MDA0NzNlOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKQEAgLTE0OSw2
ICsxNDksOCBAQCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6On5Db29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIoKQogICAgIH0KICAgICBBU1NFUlQoIW1fbmljb3NpYS5pbWFnZUJhY2tpbmcpOwogICAg
IEFTU0VSVCghbV9uaWNvc2lhLmJhY2tpbmdTdG9yZSk7CisgICAgaWYgKG1fYW5pbWF0ZWRCYWNr
aW5nU3RvcmVIb3N0KQorICAgICAgICBtX2FuaW1hdGVkQmFja2luZ1N0b3JlSG9zdC0+bGF5ZXJX
aWxsQmVEZXN0cm95ZWQoKTsKICAgICB3aWxsQmVEZXN0cm95ZWQoKTsKIH0KIApAQCAtNjMxLDYg
KzYzMyw4NiBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dXBkYXRlUGxhdGZvcm1M
YXllcigpCiAjZW5kaWYKIH0KIAorc3RhdGljIHZvaWQgY2xhbXBUb0NvbnRlbnRzUmVjdElmUmVj
dElzSW5maW5pdGUoRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRzU2l6
ZSkKK3sKKyAgICBpZiAocmVjdC53aWR0aCgpID49IExheW91dFVuaXQ6Om5lYXJseU1heCgpIHx8
IHJlY3Qud2lkdGgoKSA8PSBMYXlvdXRVbml0OjpuZWFybHlNaW4oKSkgeworICAgICAgICByZWN0
LnNldFgoMCk7CisgICAgICAgIHJlY3Quc2V0V2lkdGgoY29udGVudHNTaXplLndpZHRoKCkpOwor
ICAgIH0KKworICAgIGlmIChyZWN0LmhlaWdodCgpID49IExheW91dFVuaXQ6Om5lYXJseU1heCgp
IHx8IHJlY3QuaGVpZ2h0KCkgPD0gTGF5b3V0VW5pdDo6bmVhcmx5TWluKCkpIHsKKyAgICAgICAg
cmVjdC5zZXRZKDApOworICAgICAgICByZWN0LnNldEhlaWdodChjb250ZW50c1NpemUuaGVpZ2h0
KCkpOworICAgIH0KK30KKworY2xhc3MgQ29vcmRpbmF0ZWRBbmltYXRlZEJhY2tpbmdTdG9yZUNs
aWVudCBmaW5hbCA6IHB1YmxpYyBOaWNvc2lhOjpBbmltYXRlZEJhY2tpbmdTdG9yZUNsaWVudCB7
CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxDb29yZGluYXRlZEFuaW1hdGVkQmFja2luZ1N0b3Jl
Q2xpZW50PiBjcmVhdGUoUmVmUHRyPENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6QW5pbWF0ZWRC
YWNraW5nU3RvcmVIb3N0PiYmIGhvc3QsIGNvbnN0IEZsb2F0UmVjdCYgdmlzaWJsZVJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgY292ZXJSZWN0LCBjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IGNv
bnRlbnRzU2NhbGUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb29yZGlu
YXRlZEFuaW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50KFdURk1vdmUoaG9zdCksIHZpc2libGVSZWN0
LCBjb3ZlclJlY3QsIHNpemUsIGNvbnRlbnRzU2NhbGUpKTsKKyAgICB9CisKKyAgICB+Q29vcmRp
bmF0ZWRBbmltYXRlZEJhY2tpbmdTdG9yZUNsaWVudCgpID0gZGVmYXVsdDsKKworICAgIHZvaWQg
c2V0Q292ZXJSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpIHsgbV9jb3ZlclJlY3QgPSByZWN0OyB9
CisgICAgdm9pZCByZXF1ZXN0QmFja2luZ1N0b3JlVXBkYXRlSWZOZWVkZWQoY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSkgZmluYWwKKyAgICB7CisgICAgICAgIEFTU0VSVCgh
aXNNYWluVGhyZWFkKCkpOworCisgICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgY29udGVudHMgcmVj
dGFuZ2xlIG9mIHRoZSBsYXllciBpbiBiYWNraW5nU3RvcmUgY29vcmRpbmF0ZXMuCisgICAgICAg
IEZsb2F0UmVjdCBjb250ZW50c1JlY3QgPSB7IHsgMCwgMCB9LCBtX3NpemUgfTsKKyAgICAgICAg
Y29udGVudHNSZWN0LnNjYWxlKG1fY29udGVudHNTY2FsZSk7CisKKyAgICAgICAgLy8gSWYgdGhl
IGFyZWEgY292ZXJlZCBieSB0aWxlcyAodGhlIGNvdmVyUmVjdCwgYWxyZWFkeSBpbiBiYWNraW5n
U3RvcmUgY29vcmRpbmF0ZXMpIGNvdmVycyB0aGUgd2hvbGUKKyAgICAgICAgLy8gbGF5ZXIgY29u
dGVudHMgdGhlbiB3ZSBkb24ndCBuZWVkIHRvIGRvIGFueXRoaW5nLgorICAgICAgICBpZiAobV9j
b3ZlclJlY3QuY29udGFpbnMoY29udGVudHNSZWN0KSkKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICAvLyBOb24taW52ZXJ0aWJsZSBsYXllcnMgYXJlIG5vdCB2aXNpYmxlLgorICAgICAg
ICBpZiAoIXRyYW5zZm9ybS5pc0ludmVydGlibGUoKSkKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIGludmVyc2Ugb2YgdGhlIGxheWVyIHRyYW5zZm9ybWF0
aW9uLiBUaGUgaW52ZXJzZSB0cmFuc2Zvcm0gd2lsbCBoYXZlIHRoZSBpbnZlcnNlIG9mIHRoZQor
ICAgICAgICAvLyBzY2FsZUZhY3RvciBhcHBsaWVkLCBzbyB3ZSBuZWVkIHRvIHNjYWxlIGl0IGJh
Y2suCisgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGludmVyc2UgPSB0cmFuc2Zvcm0uaW52
ZXJzZSgpLnZhbHVlT3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkuc2NhbGUobV9jb250ZW50c1Nj
YWxlKTsKKworICAgICAgICAvLyBBcHBseSB0aGUgaW52ZXJzZSB0cmFuc2Zvcm0gdG8gdGhlIHZp
c2libGUgcmVjdGFuZ2xlLCBzbyB3ZSBoYXZlIHRoZSB2aXNpYmxlIHJlY3RhbmdsZSBpbiBsYXll
ciBjb29yZGluYXRlcy4KKyAgICAgICAgRmxvYXRSZWN0IHJlY3QgPSBpbnZlcnNlLmNsYW1wZWRC
b3VuZHNPZlByb2plY3RlZFF1YWQoRmxvYXRRdWFkKG1fdmlzaWJsZVJlY3QpKTsKKyAgICAgICAg
Y2xhbXBUb0NvbnRlbnRzUmVjdElmUmVjdElzSW5maW5pdGUocmVjdCwgbV9zaXplKTsKKyAgICAg
ICAgRmxvYXRSZWN0IHRyYW5zZm9ybWVkVmlzaWJsZVJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KHJl
Y3QpOworCisgICAgICAgIC8vIENvbnZlcnQgdGhlIGNhbGN1bGF0ZWQgdmlzaWJsZSByZWN0YW5n
bGUgdG8gYmFja2luZ1N0b3JlIGNvb3JkaW5hdGVzLgorICAgICAgICB0cmFuc2Zvcm1lZFZpc2li
bGVSZWN0LnNjYWxlKG1fY29udGVudHNTY2FsZSk7CisKKyAgICAgICAgLy8gUmVzdHJpY3QgdGhl
IGNhbGN1bGF0ZWQgdmlzaWJsZSByZWN0IHRvIHRoZSBjb250ZW50cyByZWN0YW5nbGUgb2YgdGhl
IGxheWVyLgorICAgICAgICB0cmFuc2Zvcm1lZFZpc2libGVSZWN0LmludGVyc2VjdChjb250ZW50
c1JlY3QpOworCisgICAgICAgIC8vIElmIHRoZSBjb3ZlclJlY3QgZG9lc24ndCBjb250YWluIHRo
ZSBjYWxjdWxhdGVkIHZpc2libGUgcmVjdGFuZ2xlIHdlIG5lZWQgdG8gcmVxdWVzdCBhIGJhY2tp
bmdTdG9yZQorICAgICAgICAvLyB1cGRhdGUgdG8gcmVuZGVyIG1vcmUgdGlsZXMuCisgICAgICAg
IGlmICghbV9jb3ZlclJlY3QuY29udGFpbnModHJhbnNmb3JtZWRWaXNpYmxlUmVjdCkpIHsKKyAg
ICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZEhvc3QgPSBtX2hvc3QuY29weVJl
ZigpXSgpIHsKKyAgICAgICAgICAgICAgICBwcm90ZWN0ZWRIb3N0LT5yZXF1ZXN0QmFja2luZ1N0
b3JlVXBkYXRlKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0KKworcHJpdmF0
ZToKKyAgICBDb29yZGluYXRlZEFuaW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50KFJlZlB0cjxDb29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXI6OkFuaW1hdGVkQmFja2luZ1N0b3JlSG9zdD4mJiBob3N0LCBj
b25zdCBGbG9hdFJlY3QmIHZpc2libGVSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGNvdmVyUmVjdCwg
Y29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCBjb250ZW50c1NjYWxlKQorICAgICAgICA6IG1f
aG9zdChXVEZNb3ZlKGhvc3QpKQorICAgICAgICAsIG1fdmlzaWJsZVJlY3QodmlzaWJsZVJlY3Qp
CisgICAgICAgICwgbV9jb3ZlclJlY3QoY292ZXJSZWN0KQorICAgICAgICAsIG1fc2l6ZShzaXpl
KQorICAgICAgICAsIG1fY29udGVudHNTY2FsZShjb250ZW50c1NjYWxlKQorICAgIHsgfQorCisg
ICAgUmVmUHRyPENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6QW5pbWF0ZWRCYWNraW5nU3RvcmVI
b3N0PiBtX2hvc3Q7CisgICAgRmxvYXRSZWN0IG1fdmlzaWJsZVJlY3Q7CisgICAgRmxvYXRSZWN0
IG1fY292ZXJSZWN0OworICAgIEZsb2F0U2l6ZSBtX3NpemU7CisgICAgZmxvYXQgbV9jb250ZW50
c1NjYWxlOworfTsKKwogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmZsdXNoQ29tcG9z
aXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKQogewogICAgIC8vIFdoZXRoZXIgaXQga2lja2Vk
IG9yIG5vdCwgd2UgZG9uJ3QgbmVlZCB0aGlzIHRpbWVyIHJ1bm5pbmcgYW55bW9yZS4KQEAgLTY2
Niw2ICs3NDgsMTkgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmZsdXNoQ29tcG9z
aXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKQogICAgICAgICBtX25pY29zaWEuZGVsdGEuYmFj
a2luZ1N0b3JlQ2hhbmdlZCA9IHRydWU7CiAgICAgfQogCisgICAgaWYgKGhhc0FjdGl2ZVRyYW5z
Zm9ybUFuaW1hdGlvbiAmJiBtX25pY29zaWEuYmFja2luZ1N0b3JlKSB7CisgICAgICAgIC8vIFRo
ZSBsYXllciBoYXMgYSBiYWNraW5nU3RvcmUgYW5kIGEgdHJhbnNmb3JtYXRpb24gYW5pbWF0aW9u
LiBUaGlzIG1lYW5zIHRoYXQgd2UgbmVlZCB0byBhZGQgYW4KKyAgICAgICAgLy8gQW5pbWF0ZWRC
YWNraW5nU3RvcmVDbGllbnQgdG8gY2hlY2sgd2hldGhlciB3ZSBuZWVkIHRvIHVwZGF0ZSB0aGUg
YmFja2luZ1N0b3JlIGR1ZSB0byB0aGUgYW5pbWF0aW9uLgorICAgICAgICAvLyBBdCB0aGlzIHBv
aW50IHdlIGRvbid0IGtub3cgdGhlIGFyZWEgY292ZXJlZCBieSB0aWxlcyBhdmFpbGFibGUsIHNv
IHdlIGp1c3QgcGFzcyBhbiBlbXB0eSByZWN0YW5nbGUKKyAgICAgICAgLy8gZm9yIHRoYXQuIFRo
ZSBjYWxsIHRvIHVwZGF0ZUNvbnRlbnRCdWZmZXJzIHdpbGwgY2FsY3VsYXRlIHRoZSB0aWxlIGNv
dmVyYWdlIGFuZCBzZXQgdGhlIGFwcHJvcHJpYXRlCisgICAgICAgIC8vIHJlY3RhbmdsZSB0byB0
aGUgY2xpZW50LgorICAgICAgICBpZiAoIW1fYW5pbWF0ZWRCYWNraW5nU3RvcmVIb3N0KQorICAg
ICAgICAgICAgbV9hbmltYXRlZEJhY2tpbmdTdG9yZUhvc3QgPSBBbmltYXRlZEJhY2tpbmdTdG9y
ZUhvc3Q6OmNyZWF0ZSgqdGhpcyk7CisgICAgICAgIG1fbmljb3NpYS5hbmltYXRlZEJhY2tpbmdT
dG9yZUNsaWVudCA9IENvb3JkaW5hdGVkQW5pbWF0ZWRCYWNraW5nU3RvcmVDbGllbnQ6OmNyZWF0
ZShtX2FuaW1hdGVkQmFja2luZ1N0b3JlSG9zdC5jb3B5UmVmKCksIG1fY29vcmRpbmF0b3ItPnZp
c2libGVDb250ZW50c1JlY3QoKSwgeyB9LCBtX3NpemUsIGVmZmVjdGl2ZUNvbnRlbnRzU2NhbGUo
KSk7CisgICAgfQorICAgIC8vIEVhY2ggbGF5ZXIgZmx1c2ggY2hhbmdlcyB0aGUgQW5pbWF0ZWRC
YWNraW5nU3RvcmVDbGllbnQsIGJlaW5nIGl0IG51bGwgb3IgYSByZWFsIG9uZS4KKyAgICBtX25p
Y29zaWEuZGVsdGEuYW5pbWF0ZWRCYWNraW5nU3RvcmVDbGllbnRDaGFuZ2VkID0gdHJ1ZTsKKwog
ICAgIC8vIERldGVybWluZSBpbWFnZSBiYWNraW5nIHByZXNlbmNlIGFjY29yZGluZyB0byB0aGUg
Y29tcG9zaXRlZCBpbWFnZSBzb3VyY2UuCiAgICAgaWYgKG1fY29tcG9zaXRlZE5hdGl2ZUltYWdl
UHRyKSB7CiAgICAgICAgIEFTU0VSVChtX2NvbXBvc2l0ZWRJbWFnZSk7CkBAIC03ODcsNiArODgy
LDggQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0
ZUZvclRoaXNMYXllck9ubHkoKQogICAgICAgICAgICAgICAgICAgICBzdGF0ZS5jb250ZW50TGF5
ZXIgPSBtX25pY29zaWEuY29udGVudExheWVyOwogICAgICAgICAgICAgICAgIGlmIChsb2NhbERl
bHRhLmltYWdlQmFja2luZ0NoYW5nZWQpCiAgICAgICAgICAgICAgICAgICAgIHN0YXRlLmltYWdl
QmFja2luZyA9IG1fbmljb3NpYS5pbWFnZUJhY2tpbmc7CisgICAgICAgICAgICAgICAgaWYgKGxv
Y2FsRGVsdGEuYW5pbWF0ZWRCYWNraW5nU3RvcmVDbGllbnRDaGFuZ2VkKQorICAgICAgICAgICAg
ICAgICAgICBzdGF0ZS5hbmltYXRlZEJhY2tpbmdTdG9yZUNsaWVudCA9IG1fbmljb3NpYS5hbmlt
YXRlZEJhY2tpbmdTdG9yZUNsaWVudDsKICAgICAgICAgICAgIH0pOwogICAgICAgICBtX25pY29z
aWEucGVyZm9ybUxheWVyU3luYyA9ICEhbV9uaWNvc2lhLmRlbHRhLnZhbHVlOwogICAgICAgICBt
X25pY29zaWEuZGVsdGEgPSB7IH07CkBAIC04MTcsMTkgKzkxNCw2IEBAIGZsb2F0IENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllcjo6ZWZmZWN0aXZlQ29udGVudHNTY2FsZSgpCiAgICAgcmV0dXJuIHNl
bGZPckFuY2VzdG9ySGF2ZU5vbkFmZmluZVRyYW5zZm9ybXMoKSA/IDEgOiBkZXZpY2VTY2FsZUZh
Y3RvcigpICogcGFnZVNjYWxlRmFjdG9yKCk7CiB9CiAKLXN0YXRpYyB2b2lkIGNsYW1wVG9Db250
ZW50c1JlY3RJZlJlY3RJc0luZmluaXRlKEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRTaXpl
JiBjb250ZW50c1NpemUpCi17Ci0gICAgaWYgKHJlY3Qud2lkdGgoKSA+PSBMYXlvdXRVbml0Ojpu
ZWFybHlNYXgoKSB8fCByZWN0LndpZHRoKCkgPD0gTGF5b3V0VW5pdDo6bmVhcmx5TWluKCkpIHsK
LSAgICAgICAgcmVjdC5zZXRYKDApOwotICAgICAgICByZWN0LnNldFdpZHRoKGNvbnRlbnRzU2l6
ZS53aWR0aCgpKTsKLSAgICB9Ci0KLSAgICBpZiAocmVjdC5oZWlnaHQoKSA+PSBMYXlvdXRVbml0
OjpuZWFybHlNYXgoKSB8fCByZWN0LmhlaWdodCgpIDw9IExheW91dFVuaXQ6Om5lYXJseU1pbigp
KSB7Ci0gICAgICAgIHJlY3Quc2V0WSgwKTsKLSAgICAgICAgcmVjdC5zZXRIZWlnaHQoY29udGVu
dHNTaXplLmhlaWdodCgpKTsKLSAgICB9Ci19Ci0KIEludFJlY3QgQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyOjp0cmFuc2Zvcm1lZFZpc2libGVSZWN0KCkKIHsKICAgICAvLyBOb24taW52ZXJ0aWJs
ZSBsYXllcnMgYXJlIG5vdCB2aXNpYmxlLgpAQCAtODQ1LDYgKzkyOSwxMiBAQCBJbnRSZWN0IENv
b3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dHJhbnNmb3JtZWRWaXNpYmxlUmVjdCgpCiAgICAgcmV0
dXJuIGVuY2xvc2luZ0ludFJlY3QocmVjdCk7CiB9CiAKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyOjpyZXF1ZXN0QmFja2luZ1N0b3JlVXBkYXRlKCkKK3sKKyAgICBzZXROZWVkc1Zpc2li
bGVSZWN0QWRqdXN0bWVudCgpOworICAgIG5vdGlmeUZsdXNoUmVxdWlyZWQoKTsKK30KKwogdm9p
ZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnVwZGF0ZUNvbnRlbnRCdWZmZXJzSW5jbHVkaW5n
U3ViTGF5ZXJzKCkKIHsKICAgICBpZiAoQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKiBtYXNrID0g
ZG93bmNhc3Q8Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyPihtYXNrTGF5ZXIoKSkpCkBAIC05MTQs
NiArMTAwNCwxMSBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dXBkYXRlQ29udGVu
dEJ1ZmZlcnMoKQogICAgICAgICBsYXllclN0YXRlLm1haW5CYWNraW5nU3RvcmUtPmNyZWF0ZVRp
bGVzSWZOZWVkZWQodHJhbnNmb3JtZWRWaXNpYmxlUmVjdCgpLCBJbnRSZWN0KDAsIDAsIG1fc2l6
ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCkpKTsKICAgICB9CiAKKyAgICBpZiAobV9uaWNvc2lh
LmFuaW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50KSB7CisgICAgICAgIC8vIERldGVybWluZSB0aGUg
Y292ZXJSZWN0IGFuZCBzZXQgaXQgdG8gdGhlIGNsaWVudC4KKyAgICAgICAgZG93bmNhc3Q8Q29v
cmRpbmF0ZWRBbmltYXRlZEJhY2tpbmdTdG9yZUNsaWVudD4obV9uaWNvc2lhLmFuaW1hdGVkQmFj
a2luZ1N0b3JlQ2xpZW50LmdldCgpKS0+c2V0Q292ZXJSZWN0KGxheWVyU3RhdGUubWFpbkJhY2tp
bmdTdG9yZS0+Y292ZXJSZWN0KCkpOworICAgIH0KKwogICAgIEFTU0VSVChtX2Nvb3JkaW5hdG9y
ICYmIG1fY29vcmRpbmF0b3ItPmlzRmx1c2hpbmdMYXllckNoYW5nZXMoKSk7CiAKICAgICAvLyBX
aXRoIGFsbCB0aGUgYWZmZWN0ZWQgdGlsZXMgY3JlYXRlZCBhbmQvb3IgaW52YWxpZGF0ZWQsIHdl
IGNhbiBmaW5hbGx5IHBhaW50IHRoZW0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKaW5kZXggYjUxNzdkZThjZWM1Mjg4NjZhMWM4MGE4
ZjY5YjVjYTcyZGQyYjJlYy4uZTZjNTg2NjczN2RhYTMxYjdmZDJhMTYxYmViY2MxYTRhOGJiOTY4
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJUcmFuc2Zv
cm0uaCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRl
ICJOaWNvc2lhQW5pbWF0ZWRCYWNraW5nU3RvcmVDbGllbnQuaCIKICNpbmNsdWRlICJOaWNvc2lh
QnVmZmVyLmgiCiAjaW5jbHVkZSAiTmljb3NpYVBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlICJU
ZXh0dXJlTWFwcGVyQW5pbWF0aW9uLmgiCkBAIC0xMjQsNiArMTI1LDMwIEBAIHB1YmxpYzoKIAog
ICAgIGNvbnN0IFJlZlB0cjxOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyPiYgY29tcG9zaXRpb25M
YXllcigpIGNvbnN0OwogCisgICAgY2xhc3MgQW5pbWF0ZWRCYWNraW5nU3RvcmVIb3N0IDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEFuaW1hdGVkQmFja2luZ1N0b3JlSG9zdD4geworICAg
IHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFJlZjxBbmltYXRlZEJhY2tpbmdTdG9yZUhvc3Q+IGNy
ZWF0ZShDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXImIGxheWVyKQorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBbmltYXRlZEJhY2tpbmdTdG9yZUhvc3QobGF5ZXIp
KTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgcmVxdWVzdEJhY2tpbmdTdG9yZVVwZGF0ZSgp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChtX2xheWVyKQorICAgICAgICAgICAgICAgIG1f
bGF5ZXItPnJlcXVlc3RCYWNraW5nU3RvcmVVcGRhdGUoKTsKKyAgICAgICAgfQorCisgICAgICAg
IHZvaWQgbGF5ZXJXaWxsQmVEZXN0cm95ZWQoKSB7IG1fbGF5ZXIgPSBudWxscHRyOyB9CisgICAg
cHJpdmF0ZToKKyAgICAgICAgZXhwbGljaXQgQW5pbWF0ZWRCYWNraW5nU3RvcmVIb3N0KENvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllciYgbGF5ZXIpCisgICAgICAgICAgICA6IG1fbGF5ZXIoJmxheWVy
KQorICAgICAgICB7IH0KKworICAgICAgICBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqIG1fbGF5
ZXI7CisgICAgfTsKKworICAgIHZvaWQgcmVxdWVzdEJhY2tpbmdTdG9yZVVwZGF0ZSgpOworCiBw
cml2YXRlOgogICAgIGJvb2wgaXNDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIoKSBjb25zdCBvdmVy
cmlkZTsKIApAQCAtMTk4LDcgKzIyMywxMCBAQCBwcml2YXRlOgogICAgICAgICBSZWZQdHI8Tmlj
b3NpYTo6QmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmU7CiAgICAgICAgIFJlZlB0cjxOaWNvc2lh
OjpDb250ZW50TGF5ZXI+IGNvbnRlbnRMYXllcjsKICAgICAgICAgUmVmUHRyPE5pY29zaWE6Oklt
YWdlQmFja2luZz4gaW1hZ2VCYWNraW5nOworICAgICAgICBSZWZQdHI8Tmljb3NpYTo6QW5pbWF0
ZWRCYWNraW5nU3RvcmVDbGllbnQ+IGFuaW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50OwogICAgIH0g
bV9uaWNvc2lhOworCisgICAgUmVmUHRyPEFuaW1hdGVkQmFja2luZ1N0b3JlSG9zdD4gbV9hbmlt
YXRlZEJhY2tpbmdTdG9yZUhvc3Q7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkR3JhcGhpY3NTY2VuZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKaW5kZXggZWI2YWY5ODA2MjQ0ODk5
ZTg2YzdjNTc4OTk4N2Y0YjJhNTlhMWJjMC4uMThkYzJmYjhlZDEzZDE1MzQxMmVhMzBlMjkxMTE3
OGVhY2VmYzVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcApA
QCAtMzU2LDYgKzM1NiwxMSBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6dXBkYXRl
U2NlbmVTdGF0ZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc3RkOjpyZWYo
bGF5ZXIpLCBzdGQ6OnJlZihpbXBsKSwgaW1wbC50YWtlVXBkYXRlKCkgfSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllci5z
ZXRDb250ZW50c0xheWVyKG51bGxwdHIpOworCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
bGF5ZXJTdGF0ZS5hbmltYXRlZEJhY2tpbmdTdG9yZUNsaWVudCkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBsYXllci5zZXRBbmltYXRlZEJhY2tpbmdTdG9yZUNsaWVudChsYXllclN0YXRl
LmFuaW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50LmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllci5zZXRBbmltYXRlZEJh
Y2tpbmdTdG9yZUNsaWVudChudWxscHRyKTsKICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0pOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>