<?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>210382</bug_id>
          
          <creation_ts>2020-04-11 08:11:40 -0700</creation_ts>
          <short_desc>[GTK][WPE] Add support for smooth scrolling animation with async scrolling</short_desc>
          <delta_ts>2020-10-15 06:47:01 -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>WebKitGTK</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=211325</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Guilaume Ayoub">guillaume.webkit</reporter>
          <assigned_to name="Chris Lord">clord</assigned_to>
          <cc>alicem</cc>
    
    <cc>aperez</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>clord</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>jamesr</cc>
    
    <cc>luiz</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>wenson_hsieh</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1640538</commentid>
    <comment_count>0</comment_count>
    <who name="Guilaume Ayoub">guillaume.webkit</who>
    <bug_when>2020-04-11 08:11:40 -0700</bug_when>
    <thetext>When hardware acceleration is set to &quot;always&quot;, page scrolling is broken when using the mouse wheel and then the keyboard.

Steps to reproduce:

- Set hardware acceleration to &quot;always&quot;.
- Open a web page that needs scrolling.
- Go to the middle of the page using the mouse wheel.
- Hit the page-down key of the keyboard.

What’s expected: the page keeps scrolling from the place it was.

What I get: the page scrolls from the top.

I use:

- Epiphany 3.36.0
- WebKitGTK 2.28.0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640664</commentid>
    <comment_count>1</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-04-12 04:38:16 -0700</bug_when>
    <thetext>I can&apos;t reproduce this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640665</commentid>
    <comment_count>2</comment_count>
    <who name="Guilaume Ayoub">guillaume.webkit</who>
    <bug_when>2020-04-12 04:45:28 -0700</bug_when>
    <thetext>Here is my configuration (if it can help):

-- Enabled features:
--  ENABLE_ACCELERATED_2D_CANVAS .................. OFF
--  ENABLE_BUBBLEWRAP_SANDBOX                       OFF
--  ENABLE_DRAG_SUPPORT ........................... ON
--  ENABLE_GLES2                                    yes
--  ENABLE_GTKDOC ................................. no
--  ENABLE_INTROSPECTION                            yes
--  ENABLE_MEDIA_SOURCE ........................... ON
--  ENABLE_MINIBROWSER                              OFF
--  ENABLE_OPENGL ................................. ON
--  ENABLE_QUARTZ_TARGET                            no
--  ENABLE_SHAREABLE_RESOURCE ..................... ON
--  ENABLE_SPELLCHECK                               yes
--  ENABLE_TOUCH_EVENTS ........................... ON
--  ENABLE_VIDEO                                    yes
--  ENABLE_WAYLAND_TARGET ......................... yes
--  ENABLE_WEBDRIVER                                ON
--  ENABLE_WEB_AUDIO .............................. yes
--  ENABLE_WEB_CRYPTO                               ON
--  ENABLE_X11_TARGET ............................. yes
--  USE_LIBHYPHEN                                   ON
--  USE_LIBNOTIFY ................................. yes
--  USE_LIBSECRET                                   yes
--  USE_OPENJPEG .................................. no
--  USE_WOFF2                                       ON
--  USE_WPE_RENDERER .............................. OFF

I use Epiphany on Wayland.

I’ve had this problem with previous versions of WebKitGTK too, but I had to disable hardware accelerations because of other blocking bugs.

I can try to change some configuration flags if it can help to find the source of the bug, you can tell me which ones are different from your configuration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640666</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-04-12 04:52:15 -0700</bug_when>
    <thetext>Does it happen when hw acceleration policy is ondemand (on a page that uses accelerated compositing)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640670</commentid>
    <comment_count>4</comment_count>
    <who name="Guilaume Ayoub">guillaume.webkit</who>
    <bug_when>2020-04-12 05:38:30 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #3)
&gt; Does it happen when hw acceleration policy is ondemand (on a page that uses
&gt; accelerated compositing)?

It doesn’t.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640672</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-04-12 06:18:55 -0700</bug_when>
    <thetext>It must be async scrolling issue then, but I can&apos;t reproduce it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675962</commentid>
    <comment_count>6</comment_count>
    <who name="Guilaume Ayoub">guillaume.webkit</who>
    <bug_when>2020-07-29 05:21:32 -0700</bug_when>
    <thetext>I’ve found that it only happens when I use the &quot;smooth scrolling&quot; option in Epiphany. Could it be a bug in Epiphany?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675988</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-07-29 06:58:51 -0700</bug_when>
    <thetext>This is because smooth scrolling animation is not supported by async scrolling. In r259112 kinetic scrolling was implemented for async scrolling, we need something similar for smooth scrolling.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681363</commentid>
    <comment_count>8</comment_count>
      <attachid>406846</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2020-08-19 09:15:22 -0700</bug_when>
    <thetext>Created attachment 406846
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681366</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2020-08-19 09:17:17 -0700</bug_when>
    <thetext>I&apos;ve only tested this on WPE, though the result should be the same in GTK - I&apos;ll test it now, if there are any issues I&apos;ll report back (but assume it&apos;s ok if I don&apos;t).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681655</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2020-08-20 02:03:18 -0700</bug_when>
    <thetext>I&apos;ve only tested this on WPE, though the result should be the same in GTK - I&apos;ll test it now, if there are any issues I&apos;ll report back (but assume it&apos;s ok if I don&apos;t).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681656</commentid>
    <comment_count>11</comment_count>
      <attachid>406846</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-08-20 02:12:57 -0700</bug_when>
    <thetext>Comment on attachment 406846
Patch

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

&gt; Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.cpp:-261
&gt; -    if (scrollType == ScrollType::Programmatic)
&gt; -        stopScrollAnimations();
&gt; -

Why? This is cross-platform code.

&gt; Source/WebCore/page/scrolling/nicosia/ScrollingTreeFrameScrollingNodeNicosia.cpp:155
&gt;          m_kineticAnimation-&gt;start(currentScrollPosition(), m_kineticAnimation-&gt;computeVelocity(), canHaveHorizontalScrollbar(), canHaveVerticalScrollbar());
&gt;          m_kineticAnimation-&gt;clearScrollHistory();
&gt; +        return WheelEventHandlingResult::handled();

Is this an existing bug?

&gt; Source/WebCore/page/scrolling/nicosia/ScrollingTreeFrameScrollingNodeNicosia.cpp:160
&gt;          m_kineticAnimation-&gt;start(currentScrollPosition(), wheelEvent.swipeVelocity(), canHaveHorizontalScrollbar(), canHaveVerticalScrollbar());
&gt;          m_kineticAnimation-&gt;clearScrollHistory();
&gt; +        return WheelEventHandlingResult::handled();

Ditto.

&gt; Source/WebCore/page/scrolling/nicosia/ScrollingTreeFrameScrollingNodeNicosia.cpp:-148
&gt; -    // FIXME: This needs to return whether the event was handled.

I think this FIXME still applies. It&apos;s not just whether there&apos;s a delta to scroll, but also whether we actually scrolled anything. When not using async scrolling, if you reach the end of frame for example, the next scroll down event is not considered handled and it&apos;s forwarded to the parent scrollable, normally the main frame view. This doesn&apos;t happen with async scrolling.

&gt; Source/WebCore/page/scrolling/nicosia/ScrollingTreeFrameScrollingNodeNicosia.cpp:166
&gt; +    if (deltaX || deltaY) {

I think we could return early if !deltaX &amp;&amp; !deltaY and reduce the indentation of the code below.

&gt; Source/WebCore/platform/ScrollAnimationSmooth.cpp:51
&gt; +#if USE(GLIB)

#if USE(GLIB_EVENT_LOOP)

&gt; Source/WebCore/platform/ScrollAnimationSmooth.cpp:52
&gt; +    m_animationTimer.setPriority(WTF::RunLoopSourcePriority::DisplayRefreshMonitorTimer);

I would be good to give this a name too for debugging.

&gt; Source/WebCore/platform/ScrollAnimationSmooth.h:63
&gt; -        PerAxisData() = delete;
&gt; +        PerAxisData() { }

= default? or just remove it. Why is now used, btw?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681658</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2020-08-20 02:29:09 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #11)
&gt; Comment on attachment 406846 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=406846&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.cpp:-261
&gt; &gt; -    if (scrollType == ScrollType::Programmatic)
&gt; &gt; -        stopScrollAnimations();
&gt; &gt; -
&gt; 
&gt; Why? This is cross-platform code.

I added this in the previous kinetic scrolling patch, but I realise the logic isn&apos;t correct and there are non-programmatic cases where you want to stop the scroll animations (paging with the space-bar or using the scrollbar, for example). I looked at all the callers of this function and found the correct place to put it was actually in the requestScroll blocks in the nicosia scroll nodes.

&gt; &gt; Source/WebCore/page/scrolling/nicosia/ScrollingTreeFrameScrollingNodeNicosia.cpp:155
&gt; &gt;          m_kineticAnimation-&gt;start(currentScrollPosition(), m_kineticAnimation-&gt;computeVelocity(), canHaveHorizontalScrollbar(), canHaveVerticalScrollbar());
&gt; &gt;          m_kineticAnimation-&gt;clearScrollHistory();
&gt; &gt; +        return WheelEventHandlingResult::handled();
&gt; 
&gt; Is this an existing bug?
&gt; 
&gt; &gt; Source/WebCore/page/scrolling/nicosia/ScrollingTreeFrameScrollingNodeNicosia.cpp:160
&gt; &gt;          m_kineticAnimation-&gt;start(currentScrollPosition(), wheelEvent.swipeVelocity(), canHaveHorizontalScrollbar(), canHaveVerticalScrollbar());
&gt; &gt;          m_kineticAnimation-&gt;clearScrollHistory();
&gt; &gt; +        return WheelEventHandlingResult::handled();
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebCore/page/scrolling/nicosia/ScrollingTreeFrameScrollingNodeNicosia.cpp:-148
&gt; &gt; -    // FIXME: This needs to return whether the event was handled.
&gt; 
&gt; I think this FIXME still applies. It&apos;s not just whether there&apos;s a delta to
&gt; scroll, but also whether we actually scrolled anything. When not using async
&gt; scrolling, if you reach the end of frame for example, the next scroll down
&gt; event is not considered handled and it&apos;s forwarded to the parent scrollable,
&gt; normally the main frame view. This doesn&apos;t happen with async scrolling.

Ah, I thought I was fixing this, but I&apos;m obviously not unless I actually check the extents - that seems like an easy thing to do though, so I&apos;ll add that code and leave it as is.

&gt; &gt; Source/WebCore/page/scrolling/nicosia/ScrollingTreeFrameScrollingNodeNicosia.cpp:166
&gt; &gt; +    if (deltaX || deltaY) {
&gt; 
&gt; I think we could return early if !deltaX &amp;&amp; !deltaY and reduce the
&gt; indentation of the code below.

Good call.

&gt; &gt; Source/WebCore/platform/ScrollAnimationSmooth.cpp:51
&gt; &gt; +#if USE(GLIB)
&gt; 
&gt; #if USE(GLIB_EVENT_LOOP)

Thanks, I&apos;ll fix this in ScrollAnimationKinetic too.

&gt; &gt; Source/WebCore/platform/ScrollAnimationSmooth.cpp:52
&gt; &gt; +    m_animationTimer.setPriority(WTF::RunLoopSourcePriority::DisplayRefreshMonitorTimer);
&gt; 
&gt; I would be good to give this a name too for debugging.

I&apos;ll have a look (and do the same for Kinetic).

&gt; &gt; Source/WebCore/platform/ScrollAnimationSmooth.h:63
&gt; &gt; -        PerAxisData() = delete;
&gt; &gt; +        PerAxisData() { }
&gt; 
&gt; = default? or just remove it. Why is now used, btw?

The initialisation values rely on a function call now, so can&apos;t be initialised on object creation (at least not without a bunch of redundant calls).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681661</commentid>
    <comment_count>13</comment_count>
      <attachid>406846</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-08-20 03:07:23 -0700</bug_when>
    <thetext>Comment on attachment 406846
Patch

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

&gt;&gt;&gt; Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.cpp:-261
&gt;&gt;&gt; -
&gt;&gt; 
&gt;&gt; Why? This is cross-platform code.
&gt; 
&gt; I added this in the previous kinetic scrolling patch, but I realise the logic isn&apos;t correct and there are non-programmatic cases where you want to stop the scroll animations (paging with the space-bar or using the scrollbar, for example). I looked at all the callers of this function and found the correct place to put it was actually in the requestScroll blocks in the nicosia scroll nodes.

Ok, this explanation should be included in the ChangeLog. Maybe it would be better to split this patch and move to a new bug the bug fixes, and then add the smooth scrolling on top.

&gt;&gt;&gt; Source/WebCore/page/scrolling/nicosia/ScrollingTreeFrameScrollingNodeNicosia.cpp:155
&gt;&gt;&gt; +        return WheelEventHandlingResult::handled();
&gt;&gt; 
&gt;&gt; Is this an existing bug?
&gt; 
&gt; Ah, I thought I was fixing this, but I&apos;m obviously not unless I actually check the extents - that seems like an easy thing to do though, so I&apos;ll add that code and leave it as is.

I mean that in current code currentScrollPosition() is the position after the previous scrollBy(), the updated one. Now we are returning before even calling scrollBy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682296</commentid>
    <comment_count>14</comment_count>
      <attachid>407095</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2020-08-24 05:02:03 -0700</bug_when>
    <thetext>Created attachment 407095
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682297</commentid>
    <comment_count>15</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2020-08-24 05:03:34 -0700</bug_when>
    <thetext>Addressed comments, for the most part. I didn&apos;t make the GLIB-&gt;GLIB_EVENT_LOOP change as inspecting the relevant header, that code isn&apos;t guarded by GLIB_EVENT_LOOP, so it seems like a reasonable assumption that those priorities might be used regardless of whether the GLib event loop is used. (if that&apos;s incorrect, I&apos;m happy to make the change though)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682305</commentid>
    <comment_count>16</comment_count>
      <attachid>407096</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2020-08-24 06:28:20 -0700</bug_when>
    <thetext>Created attachment 407096
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682306</commentid>
    <comment_count>17</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2020-08-24 06:28:56 -0700</bug_when>
    <thetext>(In reply to Chris Lord from comment #15)
&gt; Addressed comments, for the most part. I didn&apos;t make the
&gt; GLIB-&gt;GLIB_EVENT_LOOP change as inspecting the relevant header, that code
&gt; isn&apos;t guarded by GLIB_EVENT_LOOP, so it seems like a reasonable assumption
&gt; that those priorities might be used regardless of whether the GLib event
&gt; loop is used. (if that&apos;s incorrect, I&apos;m happy to make the change though)

Scratch that, Carlos clarified that the priority setting function is only defined with GLIB_EVENT_LOOP, so I&apos;ve made that change also.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684401</commentid>
    <comment_count>18</comment_count>
      <attachid>407096</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2020-09-01 01:37:44 -0700</bug_when>
    <thetext>Comment on attachment 407096
Patch

I *think* that this is now ready to land, but I am not well
acquainted with these parts of the code, if somebody else could
also take a quick look that would be great =)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684408</commentid>
    <comment_count>19</comment_count>
      <attachid>407665</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2020-09-01 02:00:09 -0700</bug_when>
    <thetext>Created attachment 407665
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684416</commentid>
    <comment_count>20</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-09-01 02:51:31 -0700</bug_when>
    <thetext>Committed r266390: &lt;https://trac.webkit.org/changeset/266390&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 407665.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685577</commentid>
    <comment_count>21</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-09-04 00:45:38 -0700</bug_when>
    <thetext>I&apos;m re-opening since the problem explained in the description is not fixed yet. I see a different scrolling behavior, but it still jumps when scrolling with he keyboard after using wheel events.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695486</commentid>
    <comment_count>22</comment_count>
    <who name="Alice Mikhaylenko">alicem</who>
    <bug_when>2020-10-07 02:32:59 -0700</bug_when>
    <thetext>Looks like the patch introduced 2 regressions:

* When async scrolling is enabled, smooth scrolling is always used for touchpad and touch scrolling regardless of the setting
* It makes scrolling reaaaaaally slow, it doesn&apos;t follow finger on touch anymore and instead seems to move at a constant speed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695487</commentid>
    <comment_count>23</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2020-10-07 02:36:21 -0700</bug_when>
    <thetext>(In reply to Alexander Mikhaylenko from comment #22)
&gt; Looks like the patch introduced 2 regressions:
&gt; 
&gt; * When async scrolling is enabled, smooth scrolling is always used for
&gt; touchpad and touch scrolling regardless of the setting
&gt; * It makes scrolling reaaaaaally slow, it doesn&apos;t follow finger on touch
&gt; anymore and instead seems to move at a constant speed.

This is bad, I&apos;ll take a look at this this week.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695523</commentid>
    <comment_count>24</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-10-07 06:57:33 -0700</bug_when>
    <thetext>(In reply to Chris Lord from comment #23)
&gt; &gt; * When async scrolling is enabled, smooth scrolling is always used for
&gt; &gt; touchpad and touch scrolling regardless of the setting

Question: that&apos;s the opposite of what we want, right? We want smooth scrolling for mouse always, but never for touchpad or touch... right? So we can drop the GUI setting to enable/disable smooth scrolling?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695524</commentid>
    <comment_count>25</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2020-10-07 07:02:35 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #24)
&gt; (In reply to Chris Lord from comment #23)
&gt; &gt; &gt; * When async scrolling is enabled, smooth scrolling is always used for
&gt; &gt; &gt; touchpad and touch scrolling regardless of the setting
&gt; 
&gt; Question: that&apos;s the opposite of what we want, right? We want smooth
&gt; scrolling for mouse always, but never for touchpad or touch... right? So we
&gt; can drop the GUI setting to enable/disable smooth scrolling?

Smooth scrolling should be also used for keyboard-initiated
scroll (arrows, PageDown, PageUp), but only when
“WebKitSettings.enable-smooth-scrolling” is enabled.

I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695525</commentid>
    <comment_count>26</comment_count>
    <who name="Alice Mikhaylenko">alicem</who>
    <bug_when>2020-10-07 07:05:20 -0700</bug_when>
    <thetext>Right, it should be used for mouse scrolling and keynav, i.e. discrete scrolling.

I consider that to be a separate issue though, right now it probably also always uses smooth scrolling with mouse, I just haven&apos;t tested that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696160</commentid>
    <comment_count>27</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2020-10-09 01:55:58 -0700</bug_when>
    <thetext>I have a patch that fixes the worst of this regression, I&apos;m now looking at keyboard events and respecting the setting. Progress may be a little slow due to meetings over the next few days, but I should have a patch up for review soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696809</commentid>
    <comment_count>28</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2020-10-12 02:52:57 -0700</bug_when>
    <thetext>Short update, I&apos;ve reconciled the different scrolling behaviour between async/non-async, still have keyboard initiated scroll to investigate and settings to respect.

I&apos;m seeing the occasional hang with async scrolling, not sure if that&apos;s related to this or not, need to check on that too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697209</commentid>
    <comment_count>29</comment_count>
      <attachid>411205</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2020-10-13 02:35:40 -0700</bug_when>
    <thetext>Created attachment 411205
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697210</commentid>
    <comment_count>30</comment_count>
      <attachid>411206</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2020-10-13 02:41:25 -0700</bug_when>
    <thetext>Created attachment 411206
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697213</commentid>
    <comment_count>31</comment_count>
      <attachid>411207</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2020-10-13 03:23:04 -0700</bug_when>
    <thetext>Created attachment 411207
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698042</commentid>
    <comment_count>32</comment_count>
      <attachid>411207</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-10-15 02:42:23 -0700</bug_when>
    <thetext>Comment on attachment 411207
Patch

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

&gt; Source/WebCore/page/scrolling/ThreadedScrollingTree.h:61
&gt; +    bool scrollAnimatorEnabled() { return m_scrollAnimatorEnabled; }

const

&gt; Source/WebCore/page/scrolling/nicosia/ScrollingTreeFrameScrollingNodeNicosia.cpp:211
&gt; +    ensureScrollAnimationSmooth();
&gt; +    if (m_smoothAnimation &amp;&amp; !wheelEvent.hasPreciseScrollingDeltas()) {

I think it would be clearer to either rename ensureScrollAnimationSmooth() as tryEnsureScrollAnimationSmooth() and return a bool or move the m_scrollAnimatorEnabled check here and only call ensure when it&apos;s true.

&gt; Source/WebKit/Shared/gtk/WebEventFactory.cpp:291
&gt; +        false,

Why is it always false for GTK port?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698057</commentid>
    <comment_count>33</comment_count>
      <attachid>411425</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2020-10-15 04:10:05 -0700</bug_when>
    <thetext>Created attachment 411425
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698065</commentid>
    <comment_count>34</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2020-10-15 04:33:26 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #32)
&gt; Comment on attachment 411207 [details]
&gt; Patch
&gt; 
&gt; &gt; Source/WebKit/Shared/gtk/WebEventFactory.cpp:291
&gt; &gt; +        false,
&gt; 
&gt; Why is it always false for GTK port?

Just realised, I haven&apos;t addressed this - this API I think is only currently used when synthesising mouse-wheel events and has public-facing API (which I assume shouldn&apos;t be changed unless for good reason). Making this false maintains the previous behaviour (events are treated as wheel events and not as touchpad scroll events), as I understand it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698084</commentid>
    <comment_count>35</comment_count>
      <attachid>411434</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2020-10-15 06:11:46 -0700</bug_when>
    <thetext>Created attachment 411434
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698087</commentid>
    <comment_count>36</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-10-15 06:46:59 -0700</bug_when>
    <thetext>Committed r268522: &lt;https://trac.webkit.org/changeset/268522&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 411434.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406846</attachid>
            <date>2020-08-19 09:15:22 -0700</date>
            <delta_ts>2020-08-24 05:01:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210382-20200819171520.patch</filename>
            <type>text/plain</type>
            <size>32065</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1ODQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDIyZGExZTFiZDk2NGIx
MmNhYjhiMGUxNDEwNTZhZTNmOTcyOWI1OS4uN2E2Y2M2NzhmZjI3ODAwNWYzZmI3OTVmMzgxMGFh
YWY5NzZhYTIyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIwLTA4LTE5ICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIEFkZCBzdXBw
b3J0IGZvciBzbW9vdGggc2Nyb2xsaW5nIGFuaW1hdGlvbiB3aXRoIGFzeW5jIHNjcm9sbGluZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMzgyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVnIDIxMDM4
MiAtIFtHVEtdW1dQRV0gQWRkIHN1cHBvcnQgZm9yIHNtb290aCBzY3JvbGxpbmcgYW5pbWF0aW9u
IHdpdGggYXN5bmMgc2Nyb2xsaW5nCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBlbmFibGluZyBl
eGlzdGluZyBmdW5jdGlvbmFsaXR5IGluIG1vcmUgc2l0dWF0aW9ucy4KKworICAgICAgICAqIHBh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpzY3JvbGxUbyk6CisgICAgICAgICog
cGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmlj
b3NpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdO
b2RlTmljb3NpYTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWE6OmNv
bW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVl
RnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYTo6aGFuZGxlV2hlZWxFdmVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYTo6c3RvcFNjcm9s
bEFuaW1hdGlvbnMpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5n
VHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGlu
Zy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNv
c2lhOjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYSk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYTo6Y29t
bWl0U3RhdGVBZnRlckNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVP
dmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhOjpoYW5kbGVXaGVlbEV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhOjpzdG9w
U2Nyb2xsQW5pbWF0aW9ucyk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3Jv
bGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYS5oOgorICAgICAgICAqIHBsYXRm
b3JtL1Njcm9sbEFuaW1hdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9u
OjpzZXJ2aWNlQW5pbWF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25L
aW5ldGljLmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblNtb290aDo6U2Nyb2xsQW5pbWF0aW9u
U21vb3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblNtb290aDo6c2Nyb2xs
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblNtb290aDo6c3RvcCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25TbW9vdGg6OnVwZGF0ZVZpc2libGVMZW5ndGhz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblNtb290aDo6YW5pbWF0aW9uVGlt
ZXJGaXJlZCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsQW5pbWF0b3I6OlNjcm9sbEFuaW1hdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5l
cmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxB
bmltYXRvckdlbmVyaWM6OlNjcm9sbEFuaW1hdG9yR2VuZXJpYyk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxBbmltYXRvckdlbmVyaWM6OmVuc3VyZVNtb290aFNjcm9sbGluZ0FuaW1hdGlvbik6
CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuaDoKKwog
MjAyMC0wOC0xOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEF1
ZGlvQnVmZmVyLmR1cmF0aW9uIHNob3VsZCB1c2UgZG91YmxlIHByZWNpc2lvbgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGUuY3BwCmluZGV4IDIzMDFjOTY1ODc1OGUxNWQyMjViYTRkOTEzZjZhY2FiNWE4ZjQz
ZGMuLjcxM2I5OTI3MDFkYmFlYzZjMmUyMjNiZjdkNDcwMzA5OTc2OThhMTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZS5jcHAKQEAgLTI1Niw5ICsyNTYsNiBAQCB2b2lkIFNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlOjpzY3JvbGxUbyhjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbiwgU2Nyb2xsVHlw
ZQogICAgIGlmIChwb3NpdGlvbiA9PSBtX2N1cnJlbnRTY3JvbGxQb3NpdGlvbikKICAgICAgICAg
cmV0dXJuOwogCi0gICAgaWYgKHNjcm9sbFR5cGUgPT0gU2Nyb2xsVHlwZTo6UHJvZ3JhbW1hdGlj
KQotICAgICAgICBzdG9wU2Nyb2xsQW5pbWF0aW9ucygpOwotCiAgICAgc2Nyb2xsaW5nVHJlZSgp
LnNldElzSGFuZGxpbmdQcm9ncmFtbWF0aWNTY3JvbGwoc2Nyb2xsVHlwZSA9PSBTY3JvbGxUeXBl
OjpQcm9ncmFtbWF0aWMpOwogICAgIAogICAgIG1fY3VycmVudFNjcm9sbFBvc2l0aW9uID0gYWRq
dXN0ZWRTY3JvbGxQb3NpdGlvbihwb3NpdGlvbiwgY2xhbXApOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxp
bmdOb2RlTmljb3NpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lh
L1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhLmNwcAppbmRleCBjYjUyZWQ4
MDViYTNiNGY1ZjM4MDFhMjQzZjdkNmQ4ZmEwODc2MWRjLi45MTNjN2Q3OGRiNmEyMGFiYjc2NjY5
ZDUyNzc0MmExMmIwYWE4NjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhLmNwcApAQCAtNDAsNiArNDAsOSBAQAogI2lmIEVOQUJM
RShLSU5FVElDX1NDUk9MTElORykKICNpbmNsdWRlICJTY3JvbGxBbmltYXRpb25LaW5ldGljLmgi
CiAjZW5kaWYKKyNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKKyNpbmNsdWRlICJTY3JvbGxB
bmltYXRpb25TbW9vdGguaCIKKyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTUz
LDEwICs1NiwxNCBAQCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYTo6U2Ny
b2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEoUwogewogI2lmIEVOQUJMRShLSU5F
VElDX1NDUk9MTElORykKICAgICBtX2tpbmV0aWNBbmltYXRpb24gPSBtYWtlVW5pcXVlPFNjcm9s
bEFuaW1hdGlvbktpbmV0aWM+KAotICAgICAgICBbdGhpc10oKSAtPiBTY3JvbGxBbmltYXRpb25L
aW5ldGljOjpTY3JvbGxFeHRlbnRzIHsKLSAgICAgICAgICAgIHJldHVybiB7IEludFBvaW50KG1p
bmltdW1TY3JvbGxQb3NpdGlvbigpKSwgSW50UG9pbnQobWF4aW11bVNjcm9sbFBvc2l0aW9uKCkp
IH07CisgICAgICAgIFt0aGlzXSgpIC0+IFNjcm9sbEV4dGVudHMgeworICAgICAgICAgICAgcmV0
dXJuIHsgSW50UG9pbnQobWluaW11bVNjcm9sbFBvc2l0aW9uKCkpLCBJbnRQb2ludChtYXhpbXVt
U2Nyb2xsUG9zaXRpb24oKSksIEludFNpemUoc2Nyb2xsYWJsZUFyZWFTaXplKCkpIH07CiAgICAg
ICAgIH0sCiAgICAgICAgIFt0aGlzXShGbG9hdFBvaW50JiYgcG9zaXRpb24pIHsKKyNpZiBFTkFC
TEUoU01PT1RIX1NDUk9MTElORykKKyAgICAgICAgICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zZXRD
dXJyZW50UG9zaXRpb24ocG9zaXRpb24pOworI2VuZGlmCisKICAgICAgICAgICAgIGF1dG8qIHNj
cm9sbExheWVyID0gc3RhdGljX2Nhc3Q8Tmljb3NpYTo6UGxhdGZvcm1MYXllcio+KHNjcm9sbGVk
Q29udGVudHNMYXllcigpKTsKICAgICAgICAgICAgIEFTU0VSVChzY3JvbGxMYXllcik7CiAgICAg
ICAgICAgICBhdXRvJiBjb21wb3NpdGlvbkxheWVyID0gZG93bmNhc3Q8Tmljb3NpYTo6Q29tcG9z
aXRpb25MYXllcj4oKnNjcm9sbExheWVyKTsKQEAgLTY1LDYgKzcyLDIyIEBAIFNjcm9sbGluZ1Ry
ZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdO
b2RlTmljb3NpYShTCiAgICAgICAgICAgICBzY3JvbGxUbyhwb3NpdGlvbik7CiAgICAgICAgIH0p
OwogI2VuZGlmCisjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCisgICAgbV9zbW9vdGhBbmlt
YXRpb24gPSBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlvblNtb290aD4oCisgICAgICAgIFt0aGlz
XSgpIC0+IFNjcm9sbEV4dGVudHMgeworICAgICAgICAgICAgcmV0dXJuIHsgSW50UG9pbnQobWlu
aW11bVNjcm9sbFBvc2l0aW9uKCkpLCBJbnRQb2ludChtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSks
IEludFNpemUoc2Nyb2xsYWJsZUFyZWFTaXplKCkpIH07CisgICAgICAgIH0sCisgICAgICAgIGN1
cnJlbnRTY3JvbGxQb3NpdGlvbigpLAorICAgICAgICBbdGhpc10oRmxvYXRQb2ludCYmIHBvc2l0
aW9uKSB7CisgICAgICAgICAgICBhdXRvKiBzY3JvbGxMYXllciA9IHN0YXRpY19jYXN0PE5pY29z
aWE6OlBsYXRmb3JtTGF5ZXIqPihzY3JvbGxlZENvbnRlbnRzTGF5ZXIoKSk7CisgICAgICAgICAg
ICBBU1NFUlQoc2Nyb2xsTGF5ZXIpOworICAgICAgICAgICAgYXV0byYgY29tcG9zaXRpb25MYXll
ciA9IGRvd25jYXN0PE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+KCpzY3JvbGxMYXllcik7CisK
KyAgICAgICAgICAgIGF1dG8gdXBkYXRlU2NvcGUgPSBjb21wb3NpdGlvbkxheWVyLmNyZWF0ZVVw
ZGF0ZVNjb3BlKCk7CisgICAgICAgICAgICBzY3JvbGxUbyhwb3NpdGlvbik7CisgICAgICAgIH0s
CisgICAgICAgIFtdIHsgfSk7CisjZW5kaWYKIH0KIAogU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xs
aW5nTm9kZU5pY29zaWE6On5TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYSgp
ID0gZGVmYXVsdDsKQEAgLTEwOSw4ICsxMzIsMTIgQEAgdm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlTmljb3NpYTo6Y29tbWl0U3RhdGVBZnRlckNoaWxkcmVuKGNvbnN0IFNjcm8K
IAogICAgIC8vIFVwZGF0ZSB0aGUgc2Nyb2xsIHBvc2l0aW9uIGFmdGVyIGNoaWxkIG5vZGVzIGhh
dmUgYmVlbiB1cGRhdGVkLCBiZWNhdXNlIHRoZXkgbmVlZCB0byBoYXZlIHVwZGF0ZWQgdGhlaXIg
Y29uc3RyYWludHMgYmVmb3JlIGFueSBzY3JvbGxpbmcgaGFwcGVucy4KICAgICBpZiAoc2Nyb2xs
aW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05v
ZGU6OlJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uKSkgeworICAgICAgICBzdG9wU2Nyb2xsQW5pbWF0
aW9ucygpOwogICAgICAgICBjb25zdCBhdXRvJiByZXF1ZXN0ZWRTY3JvbGxEYXRhID0gc2Nyb2xs
aW5nU3RhdGVOb2RlLnJlcXVlc3RlZFNjcm9sbERhdGEoKTsKICAgICAgICAgc2Nyb2xsVG8ocmVx
dWVzdGVkU2Nyb2xsRGF0YS5zY3JvbGxQb3NpdGlvbiwgcmVxdWVzdGVkU2Nyb2xsRGF0YS5zY3Jv
bGxUeXBlLCByZXF1ZXN0ZWRTY3JvbGxEYXRhLmNsYW1waW5nKTsKKyNpZiBFTkFCTEUoU01PT1RI
X1NDUk9MTElORykKKyAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnNldEN1cnJlbnRQb3NpdGlv
bihjdXJyZW50U2Nyb2xsUG9zaXRpb24oKSk7CisjZW5kaWYKICAgICB9CiB9CiAKQEAgLTExOSwz
NCArMTQ2LDU1IEBAIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdCBTY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlTmljb3NpYTo6aGFuZGxlV2hlZWxFdmVuCiAgICAgaWYgKCFjYW5IYW5kbGVX
aGVlbEV2ZW50KHdoZWVsRXZlbnQpKQogICAgICAgICByZXR1cm4gV2hlZWxFdmVudEhhbmRsaW5n
UmVzdWx0Ojp1bmhhbmRsZWQoKTsKIAotICAgIGlmICh3aGVlbEV2ZW50LmRlbHRhWCgpIHx8IHdo
ZWVsRXZlbnQuZGVsdGFZKCkpIHsKLSAgICAgICAgYXV0byogc2Nyb2xsTGF5ZXIgPSBzdGF0aWNf
Y2FzdDxOaWNvc2lhOjpQbGF0Zm9ybUxheWVyKj4oc2Nyb2xsZWRDb250ZW50c0xheWVyKCkpOwot
ICAgICAgICBBU1NFUlQoc2Nyb2xsTGF5ZXIpOwotICAgICAgICBhdXRvJiBjb21wb3NpdGlvbkxh
eWVyID0gZG93bmNhc3Q8Tmljb3NpYTo6Q29tcG9zaXRpb25MYXllcj4oKnNjcm9sbExheWVyKTsK
LQotICAgICAgICBhdXRvIHVwZGF0ZVNjb3BlID0gY29tcG9zaXRpb25MYXllci5jcmVhdGVVcGRh
dGVTY29wZSgpOwotICAgICAgICBzY3JvbGxCeSh7IC13aGVlbEV2ZW50LmRlbHRhWCgpLCAtd2hl
ZWxFdmVudC5kZWx0YVkoKSB9KTsKLQotICAgIH0KLQogI2lmIEVOQUJMRShLSU5FVElDX1NDUk9M
TElORykKICAgICBtX2tpbmV0aWNBbmltYXRpb24tPmFwcGVuZFRvU2Nyb2xsSGlzdG9yeSh3aGVl
bEV2ZW50KTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKQogICAgIG1f
a2luZXRpY0FuaW1hdGlvbi0+c3RvcCgpOwogICAgIGlmICh3aGVlbEV2ZW50LmlzRW5kT2ZOb25N
b21lbnR1bVNjcm9sbCgpKSB7CiAgICAgICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+c3RhcnQoY3Vy
cmVudFNjcm9sbFBvc2l0aW9uKCksIG1fa2luZXRpY0FuaW1hdGlvbi0+Y29tcHV0ZVZlbG9jaXR5
KCksIGNhbkhhdmVIb3Jpem9udGFsU2Nyb2xsYmFyKCksIGNhbkhhdmVWZXJ0aWNhbFNjcm9sbGJh
cigpKTsKICAgICAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5jbGVhclNjcm9sbEhpc3RvcnkoKTsK
KyAgICAgICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6aGFuZGxlZCgpOwogICAg
IH0KICAgICBpZiAod2hlZWxFdmVudC5pc1RyYW5zaXRpb25pbmdUb01vbWVudHVtU2Nyb2xsKCkp
IHsKICAgICAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5zdGFydChjdXJyZW50U2Nyb2xsUG9zaXRp
b24oKSwgd2hlZWxFdmVudC5zd2lwZVZlbG9jaXR5KCksIGNhbkhhdmVIb3Jpem9udGFsU2Nyb2xs
YmFyKCksIGNhbkhhdmVWZXJ0aWNhbFNjcm9sbGJhcigpKTsKICAgICAgICAgbV9raW5ldGljQW5p
bWF0aW9uLT5jbGVhclNjcm9sbEhpc3RvcnkoKTsKKyAgICAgICAgcmV0dXJuIFdoZWVsRXZlbnRI
YW5kbGluZ1Jlc3VsdDo6aGFuZGxlZCgpOwogICAgIH0KICNlbmRpZgogCi0gICAgLy8gRklYTUU6
IFRoaXMgbmVlZHMgdG8gcmV0dXJuIHdoZXRoZXIgdGhlIGV2ZW50IHdhcyBoYW5kbGVkLgotICAg
IHJldHVybiBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQ6OmhhbmRsZWQoKTsKKyAgICBmbG9hdCBk
ZWx0YVggPSBjYW5IYXZlSG9yaXpvbnRhbFNjcm9sbGJhcigpID8gd2hlZWxFdmVudC5kZWx0YVgo
KSA6IDA7CisgICAgZmxvYXQgZGVsdGFZID0gY2FuSGF2ZVZlcnRpY2FsU2Nyb2xsYmFyKCkgPyB3
aGVlbEV2ZW50LmRlbHRhWSgpIDogMDsKKyAgICBpZiAoZGVsdGFYIHx8IGRlbHRhWSkgeworICAg
ICAgICBpZiAod2hlZWxFdmVudC5ncmFudWxhcml0eSgpID09IFNjcm9sbEJ5UGFnZVdoZWVsRXZl
bnQpIHsKKyAgICAgICAgICAgIGlmIChkZWx0YVgpIHsKKyAgICAgICAgICAgICAgICBib29sIG5l
Z2F0aXZlID0gZGVsdGFYIDwgMDsKKyAgICAgICAgICAgICAgICBkZWx0YVggPSBTY3JvbGxiYXI6
OnBhZ2VTdGVwRGVsdGEoc2Nyb2xsYWJsZUFyZWFTaXplKCkud2lkdGgoKSk7CisgICAgICAgICAg
ICAgICAgaWYgKG5lZ2F0aXZlKQorICAgICAgICAgICAgICAgICAgICBkZWx0YVggPSAtZGVsdGFY
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGRlbHRhWSkgeworICAgICAgICAgICAg
ICAgIGJvb2wgbmVnYXRpdmUgPSBkZWx0YVkgPCAwOworICAgICAgICAgICAgICAgIGRlbHRhWSA9
IFNjcm9sbGJhcjo6cGFnZVN0ZXBEZWx0YShzY3JvbGxhYmxlQXJlYVNpemUoKS5oZWlnaHQoKSk7
CisgICAgICAgICAgICAgICAgaWYgKG5lZ2F0aXZlKQorICAgICAgICAgICAgICAgICAgICBkZWx0
YVkgPSAtZGVsdGFZOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyNpZiBFTkFCTEUoU01P
T1RIX1NDUk9MTElORykKKyAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnNjcm9sbChIb3Jpem9u
dGFsU2Nyb2xsYmFyLCBTY3JvbGxCeVBpeGVsLCAxLCAtZGVsdGFYKTsKKyAgICAgICAgbV9zbW9v
dGhBbmltYXRpb24tPnNjcm9sbChWZXJ0aWNhbFNjcm9sbGJhciwgU2Nyb2xsQnlQaXhlbCwgMSwg
LWRlbHRhWSk7CisjZWxzZQorICAgICAgICBhdXRvKiBzY3JvbGxMYXllciA9IHN0YXRpY19jYXN0
PE5pY29zaWE6OlBsYXRmb3JtTGF5ZXIqPihzY3JvbGxlZENvbnRlbnRzTGF5ZXIoKSk7CisgICAg
ICAgIEFTU0VSVChzY3JvbGxMYXllcik7CisgICAgICAgIGF1dG8mIGNvbXBvc2l0aW9uTGF5ZXIg
PSBkb3duY2FzdDxOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyPigqc2Nyb2xsTGF5ZXIpOworCisg
ICAgICAgIGF1dG8gdXBkYXRlU2NvcGUgPSBjb21wb3NpdGlvbkxheWVyLmNyZWF0ZVVwZGF0ZVNj
b3BlKCk7CisgICAgICAgIHNjcm9sbEJ5KHsgLWRlbHRhWCwgLWRlbHRhWSB9KTsKKyNlbmRpZgor
CisgICAgICAgIHJldHVybiBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQ6OmhhbmRsZWQoKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0Ojp1bmhhbmRsZWQoKTsK
IH0KIAogdm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYTo6c3RvcFNj
cm9sbEFuaW1hdGlvbnMoKQpAQCAtMTU1LDYgKzIwMyw5IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZU5pY29zaWE6OnN0b3BTY3JvbGxBbmltYXRpb25zKCkKICAgICBtX2tp
bmV0aWNBbmltYXRpb24tPnN0b3AoKTsKICAgICBtX2tpbmV0aWNBbmltYXRpb24tPmNsZWFyU2Ny
b2xsSGlzdG9yeSgpOwogI2VuZGlmCisjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCisgICAg
bV9zbW9vdGhBbmltYXRpb24tPnN0b3AoKTsKKyNlbmRpZgogfQogCiBGbG9hdFBvaW50IFNjcm9s
bGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjphZGp1c3RlZFNjcm9sbFBvc2l0aW9u
KGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBTY3JvbGxDbGFtcGluZyBjbGFtcGluZykgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Ny
b2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29z
aWEuaAppbmRleCA2NDczYTRiNTZlMTAzMWI3Mzc5OGFjZTM4N2ZhZWM4YTg0ZGM0OWNmLi41MDU0
YmViZmVjZmRiNmY5YjgxN2YzY2VkM2JiZDNhOTkxYzM4ZjkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGlu
Z05vZGVOaWNvc2lhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3Np
YS9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYS5oCkBAIC0zOSw2ICszOSw3
IEBAIGNsYXNzIENvbXBvc2l0aW9uTGF5ZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2Ns
YXNzIFNjcm9sbEFuaW1hdGlvbjsKIGNsYXNzIFNjcm9sbEFuaW1hdGlvbktpbmV0aWM7CiAKIGNs
YXNzIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhIGZpbmFsIDogcHVibGlj
IFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUgewpAQCAtNzMsNiArNzQsOSBAQCBwcml2
YXRlOgogI2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
U2Nyb2xsQW5pbWF0aW9uS2luZXRpYz4gbV9raW5ldGljQW5pbWF0aW9uOwogI2VuZGlmCisjaWYg
RU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCisgICAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbEFuaW1h
dGlvbj4gbV9zbW9vdGhBbmltYXRpb247CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEv
U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWEuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxp
bmdOb2RlTmljb3NpYS5jcHAKaW5kZXggYjQ1YjZlMWY3NjMxOGIyNTU5ZWE3ZTA3ZmU2ZGIxMTZj
ZGQ1MzU4NS4uMDE1YTE2OTcxNGZkMmIzM2Q2MzljNWJiMDk1MzBlYmZiMWY2NWRmMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmlj
b3NpYS5jcHAKQEAgLTM1LDYgKzM1LDkgQEAKICNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcp
CiAjaW5jbHVkZSAiU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5oIgogI2VuZGlmCisjaWYgRU5BQkxF
KFNNT09USF9TQ1JPTExJTkcpCisjaW5jbHVkZSAiU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmgiCisj
ZW5kaWYKICNpbmNsdWRlICJTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5oIgog
I2luY2x1ZGUgIlNjcm9sbGluZ1RyZWUuaCIKIApAQCAtNTAsMTEgKzUzLDE1IEBAIFNjcm9sbGlu
Z1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhOjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dT
Y3JvbGxpbmdOb2RlTmljCiB7CiAjaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKQogICAgIG1f
a2luZXRpY0FuaW1hdGlvbiA9IG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0aW9uS2luZXRpYz4oCi0g
ICAgICAgIFt0aGlzXSgpIC0+IFNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OlNjcm9sbEV4dGVudHMg
ewotICAgICAgICAgICAgcmV0dXJuIHsgSW50UG9pbnQobWluaW11bVNjcm9sbFBvc2l0aW9uKCkp
LCBJbnRQb2ludChtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSkgfTsKKyAgICAgICAgW3RoaXNdKCkg
LT4gU2Nyb2xsRXh0ZW50cyB7CisgICAgICAgICAgICByZXR1cm4geyBJbnRQb2ludChtaW5pbXVt
U2Nyb2xsUG9zaXRpb24oKSksIEludFBvaW50KG1heGltdW1TY3JvbGxQb3NpdGlvbigpKSwgSW50
U2l6ZShzY3JvbGxhYmxlQXJlYVNpemUoKSkgfTsKICAgICAgICAgfSwKICAgICAgICAgW3RoaXNd
KEZsb2F0UG9pbnQmJiBwb3NpdGlvbikgewotICAgICAgICAgICAgYXV0byogc2Nyb2xsTGF5ZXIg
PSBzdGF0aWNfY2FzdDxOaWNvc2lhOjpQbGF0Zm9ybUxheWVyKj4oc2Nyb2xsZWRDb250ZW50c0xh
eWVyKCkpOworI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQorICAgICAgICAgICAgbV9zbW9v
dGhBbmltYXRpb24tPnNldEN1cnJlbnRQb3NpdGlvbihwb3NpdGlvbik7CisjZW5kaWYKKworICAg
ICAgICAgICAgYXV0byogc2Nyb2xsTGF5ZXIgPSBzdGF0aWNfY2FzdDxOaWNvc2lhOjpQbGF0Zm9y
bUxheWVyKj4oc2Nyb2xsQ29udGFpbmVyTGF5ZXIoKSk7CiAgICAgICAgICAgICBBU1NFUlQoc2Ny
b2xsTGF5ZXIpOwogICAgICAgICAgICAgYXV0byYgY29tcG9zaXRpb25MYXllciA9IGRvd25jYXN0
PE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+KCpzY3JvbGxMYXllcik7CiAKQEAgLTYyLDYgKzY5
LDIyIEBAIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhOjpTY3JvbGxp
bmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljCiAgICAgICAgICAgICBzY3JvbGxUbyhwb3Np
dGlvbik7CiAgICAgICAgIH0pOwogI2VuZGlmCisjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcp
CisgICAgbV9zbW9vdGhBbmltYXRpb24gPSBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlvblNtb290
aD4oCisgICAgICAgIFt0aGlzXSgpIC0+IFNjcm9sbEV4dGVudHMgeworICAgICAgICAgICAgcmV0
dXJuIHsgSW50UG9pbnQobWluaW11bVNjcm9sbFBvc2l0aW9uKCkpLCBJbnRQb2ludChtYXhpbXVt
U2Nyb2xsUG9zaXRpb24oKSksIEludFNpemUoc2Nyb2xsYWJsZUFyZWFTaXplKCkpIH07CisgICAg
ICAgIH0sCisgICAgICAgIGN1cnJlbnRTY3JvbGxQb3NpdGlvbigpLAorICAgICAgICBbdGhpc10o
RmxvYXRQb2ludCYmIHBvc2l0aW9uKSB7CisgICAgICAgICAgICBhdXRvKiBzY3JvbGxMYXllciA9
IHN0YXRpY19jYXN0PE5pY29zaWE6OlBsYXRmb3JtTGF5ZXIqPihzY3JvbGxDb250YWluZXJMYXll
cigpKTsKKyAgICAgICAgICAgIEFTU0VSVChzY3JvbGxMYXllcik7CisgICAgICAgICAgICBhdXRv
JiBjb21wb3NpdGlvbkxheWVyID0gZG93bmNhc3Q8Tmljb3NpYTo6Q29tcG9zaXRpb25MYXllcj4o
KnNjcm9sbExheWVyKTsKKworICAgICAgICAgICAgYXV0byB1cGRhdGVTY29wZSA9IGNvbXBvc2l0
aW9uTGF5ZXIuY3JlYXRlVXBkYXRlU2NvcGUoKTsKKyAgICAgICAgICAgIHNjcm9sbFRvKHBvc2l0
aW9uKTsKKyAgICAgICAgfSwKKyAgICAgICAgW10geyB9KTsKKyNlbmRpZgogfQogCiBTY3JvbGxp
bmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYTo6flNjcm9sbGluZ1RyZWVPdmVyZmxv
d1Njcm9sbGluZ05vZGVOaWNvc2lhKCkgPSBkZWZhdWx0OwpAQCAtNzIsOCArOTUsMTIgQEAgdm9p
ZCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYTo6Y29tbWl0U3RhdGVB
ZnRlckNoaWxkcmVuKGNvbnN0IFMKIAogICAgIGNvbnN0IGF1dG8mIG92ZXJmbG93U3RhdGVOb2Rl
ID0gZG93bmNhc3Q8U2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGU+KHN0YXRlTm9k
ZSk7CiAgICAgaWYgKG92ZXJmbG93U3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxp
bmdTdGF0ZVNjcm9sbGluZ05vZGU6OlJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uKSkgeworICAgICAg
ICBzdG9wU2Nyb2xsQW5pbWF0aW9ucygpOwogICAgICAgICBjb25zdCBhdXRvJiByZXF1ZXN0ZWRT
Y3JvbGxEYXRhID0gb3ZlcmZsb3dTdGF0ZU5vZGUucmVxdWVzdGVkU2Nyb2xsRGF0YSgpOwogICAg
ICAgICBzY3JvbGxUbyhyZXF1ZXN0ZWRTY3JvbGxEYXRhLnNjcm9sbFBvc2l0aW9uLCByZXF1ZXN0
ZWRTY3JvbGxEYXRhLnNjcm9sbFR5cGUsIHJlcXVlc3RlZFNjcm9sbERhdGEuY2xhbXBpbmcpOwor
I2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQorICAgICAgICBtX3Ntb290aEFuaW1hdGlvbi0+
c2V0Q3VycmVudFBvc2l0aW9uKGN1cnJlbnRTY3JvbGxQb3NpdGlvbigpKTsKKyNlbmRpZgogICAg
IH0KIH0KIApAQCAtMTA0LDMyICsxMzEsNTUgQEAgV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0IFNj
cm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhOjpoYW5kbGVXaGVlbEUKICAg
ICBpZiAoIWNhbkhhbmRsZVdoZWVsRXZlbnQod2hlZWxFdmVudCkpCiAgICAgICAgIHJldHVybiBX
aGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQ6OnVuaGFuZGxlZCgpOwogCi0gICAgaWYgKHdoZWVsRXZl
bnQuZGVsdGFYKCkgfHwgd2hlZWxFdmVudC5kZWx0YVkoKSkgewotICAgICAgICBhdXRvKiBzY3Jv
bGxMYXllciA9IHN0YXRpY19jYXN0PE5pY29zaWE6OlBsYXRmb3JtTGF5ZXIqPihzY3JvbGxDb250
YWluZXJMYXllcigpKTsKLSAgICAgICAgQVNTRVJUKHNjcm9sbExheWVyKTsKLSAgICAgICAgYXV0
byYgY29tcG9zaXRpb25MYXllciA9IGRvd25jYXN0PE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+
KCpzY3JvbGxMYXllcik7Ci0KLSAgICAgICAgYXV0byB1cGRhdGVTY29wZSA9IGNvbXBvc2l0aW9u
TGF5ZXIuY3JlYXRlVXBkYXRlU2NvcGUoKTsKLSAgICAgICAgc2Nyb2xsQnkoeyAtd2hlZWxFdmVu
dC5kZWx0YVgoKSwgLXdoZWVsRXZlbnQuZGVsdGFZKCkgfSk7Ci0gICAgfQotCiAjaWYgRU5BQkxF
KEtJTkVUSUNfU0NST0xMSU5HKQogICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+YXBwZW5kVG9TY3Jv
bGxIaXN0b3J5KHdoZWVsRXZlbnQpOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoS0lORVRJQ19TQ1JP
TExJTkcpCiAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5zdG9wKCk7CiAgICAgaWYgKHdoZWVsRXZl
bnQuaXNFbmRPZk5vbk1vbWVudHVtU2Nyb2xsKCkpIHsKICAgICAgICAgbV9raW5ldGljQW5pbWF0
aW9uLT5zdGFydChjdXJyZW50U2Nyb2xsUG9zaXRpb24oKSwgbV9raW5ldGljQW5pbWF0aW9uLT5j
b21wdXRlVmVsb2NpdHkoKSwgY2FuSGF2ZUhvcml6b250YWxTY3JvbGxiYXIoKSwgY2FuSGF2ZVZl
cnRpY2FsU2Nyb2xsYmFyKCkpOwogICAgICAgICBtX2tpbmV0aWNBbmltYXRpb24tPmNsZWFyU2Ny
b2xsSGlzdG9yeSgpOworICAgICAgICByZXR1cm4gV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0Ojpo
YW5kbGVkKCk7CiAgICAgfQogICAgIGlmICh3aGVlbEV2ZW50LmlzVHJhbnNpdGlvbmluZ1RvTW9t
ZW50dW1TY3JvbGwoKSkgewogICAgICAgICBtX2tpbmV0aWNBbmltYXRpb24tPnN0YXJ0KGN1cnJl
bnRTY3JvbGxQb3NpdGlvbigpLCB3aGVlbEV2ZW50LnN3aXBlVmVsb2NpdHkoKSwgY2FuSGF2ZUhv
cml6b250YWxTY3JvbGxiYXIoKSwgY2FuSGF2ZVZlcnRpY2FsU2Nyb2xsYmFyKCkpOwogICAgICAg
ICBtX2tpbmV0aWNBbmltYXRpb24tPmNsZWFyU2Nyb2xsSGlzdG9yeSgpOworICAgICAgICByZXR1
cm4gV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0OjpoYW5kbGVkKCk7CiAgICAgfQogI2VuZGlmCiAK
LSAgICByZXR1cm4gV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0OjpoYW5kbGVkKCk7CisgICAgZmxv
YXQgZGVsdGFYID0gY2FuSGF2ZUhvcml6b250YWxTY3JvbGxiYXIoKSA/IHdoZWVsRXZlbnQuZGVs
dGFYKCkgOiAwOworICAgIGZsb2F0IGRlbHRhWSA9IGNhbkhhdmVWZXJ0aWNhbFNjcm9sbGJhcigp
ID8gd2hlZWxFdmVudC5kZWx0YVkoKSA6IDA7CisgICAgaWYgKGRlbHRhWCB8fCBkZWx0YVkpIHsK
KyAgICAgICAgaWYgKHdoZWVsRXZlbnQuZ3JhbnVsYXJpdHkoKSA9PSBTY3JvbGxCeVBhZ2VXaGVl
bEV2ZW50KSB7CisgICAgICAgICAgICBpZiAoZGVsdGFYKSB7CisgICAgICAgICAgICAgICAgYm9v
bCBuZWdhdGl2ZSA9IGRlbHRhWCA8IDA7CisgICAgICAgICAgICAgICAgZGVsdGFYID0gU2Nyb2xs
YmFyOjpwYWdlU3RlcERlbHRhKHNjcm9sbGFibGVBcmVhU2l6ZSgpLndpZHRoKCkpOworICAgICAg
ICAgICAgICAgIGlmIChuZWdhdGl2ZSkKKyAgICAgICAgICAgICAgICAgICAgZGVsdGFYID0gLWRl
bHRhWDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChkZWx0YVkpIHsKKyAgICAgICAg
ICAgICAgICBib29sIG5lZ2F0aXZlID0gZGVsdGFZIDwgMDsKKyAgICAgICAgICAgICAgICBkZWx0
YVkgPSBTY3JvbGxiYXI6OnBhZ2VTdGVwRGVsdGEoc2Nyb2xsYWJsZUFyZWFTaXplKCkuaGVpZ2h0
KCkpOworICAgICAgICAgICAgICAgIGlmIChuZWdhdGl2ZSkKKyAgICAgICAgICAgICAgICAgICAg
ZGVsdGFZID0gLWRlbHRhWTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisjaWYgRU5BQkxF
KFNNT09USF9TQ1JPTExJTkcpCisgICAgICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zY3JvbGwoSG9y
aXpvbnRhbFNjcm9sbGJhciwgU2Nyb2xsQnlQaXhlbCwgMSwgLWRlbHRhWCk7CisgICAgICAgIG1f
c21vb3RoQW5pbWF0aW9uLT5zY3JvbGwoVmVydGljYWxTY3JvbGxiYXIsIFNjcm9sbEJ5UGl4ZWws
IDEsIC1kZWx0YVkpOworI2Vsc2UKKyAgICAgICAgYXV0byogc2Nyb2xsTGF5ZXIgPSBzdGF0aWNf
Y2FzdDxOaWNvc2lhOjpQbGF0Zm9ybUxheWVyKj4oc2Nyb2xsQ29udGFpbmVyTGF5ZXIoKSk7Cisg
ICAgICAgIEFTU0VSVChzY3JvbGxMYXllcik7CisgICAgICAgIGF1dG8mIGNvbXBvc2l0aW9uTGF5
ZXIgPSBkb3duY2FzdDxOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyPigqc2Nyb2xsTGF5ZXIpOwor
CisgICAgICAgIGF1dG8gdXBkYXRlU2NvcGUgPSBjb21wb3NpdGlvbkxheWVyLmNyZWF0ZVVwZGF0
ZVNjb3BlKCk7CisgICAgICAgIHNjcm9sbEJ5KHsgLWRlbHRhWCwgLWRlbHRhWSB9KTsKKyNlbmRp
ZgorCisgICAgICAgIHJldHVybiBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQ6OmhhbmRsZWQoKTsK
KyAgICB9CisKKyAgICByZXR1cm4gV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0Ojp1bmhhbmRsZWQo
KTsKIH0KIAogdm9pZCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYTo6
c3RvcFNjcm9sbEFuaW1hdGlvbnMoKQpAQCAtMTM4LDYgKzE4OCw5IEBAIHZvaWQgU2Nyb2xsaW5n
VHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWE6OnN0b3BTY3JvbGxBbmltYXRpb25zKCkK
ICAgICBtX2tpbmV0aWNBbmltYXRpb24tPnN0b3AoKTsKICAgICBtX2tpbmV0aWNBbmltYXRpb24t
PmNsZWFyU2Nyb2xsSGlzdG9yeSgpOwogI2VuZGlmCisjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJ
TkcpCisgICAgbV9zbW9vdGhBbmltYXRpb24tPnN0b3AoKTsKKyNlbmRpZgogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVPdmVyZmxv
d1Njcm9sbGluZ05vZGVOaWNvc2lhLmgKaW5kZXggYWNkYzgyYWMxNTZjYzc2NzAzY2U0Y2Q0OTll
ZWNhZGZhZmQ0OTVkYi4uMTMyYjQ4ODcxZDZjZGI2NzQ1YzRhYzM2MTdhNGJjMWRkZWY0YjkwMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxp
bmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9k
ZU5pY29zaWEuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVPdmVy
Zmxvd1Njcm9sbGluZ05vZGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU2Nyb2xs
QW5pbWF0aW9uOwogY2xhc3MgU2Nyb2xsQW5pbWF0aW9uS2luZXRpYzsKIAogY2xhc3MgU2Nyb2xs
aW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWEgZmluYWwgOiBwdWJsaWMgU2Nyb2xs
aW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZSB7CkBAIC01Niw2ICs1Nyw5IEBAIHByaXZhdGU6
CiAjaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3Jv
bGxBbmltYXRpb25LaW5ldGljPiBtX2tpbmV0aWNBbmltYXRpb247CiAjZW5kaWYKKyNpZiBFTkFC
TEUoU01PT1RIX1NDUk9MTElORykKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsQW5pbWF0aW9u
PiBtX3Ntb290aEFuaW1hdGlvbjsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb24uaAppbmRleCBmMDY3YjNj
YzJkZGU2YjI2M2RkMmMwZTBjY2NlMDNhZDBmNjcxODkzLi45OWQ4NjFiZjM1MTNkMDM3NjY0NzBh
MTA3MmI5OGZkMDM3MGNjODA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxBbmltYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmlt
YXRpb24uaApAQCAtMzQsNiArMzQsMTIgQEAgY2xhc3MgRmxvYXRQb2ludDsKIGNsYXNzIFNjcm9s
bGFibGVBcmVhOwogZW51bSBjbGFzcyBTY3JvbGxDbGFtcGluZyA6IGJvb2w7CiAKK3N0cnVjdCBT
Y3JvbGxFeHRlbnRzIHsKKyAgICBTY3JvbGxQb3NpdGlvbiBtaW5pbXVtU2Nyb2xsUG9zaXRpb247
CisgICAgU2Nyb2xsUG9zaXRpb24gbWF4aW11bVNjcm9sbFBvc2l0aW9uOworICAgIEludFNpemUg
dmlzaWJsZVNpemU7Cit9OworCiBjbGFzcyBTY3JvbGxBbmltYXRpb24gewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtNDQsMTQgKzUwLDYgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVWaXNpYmxlTGVuZ3RocygpIHsgfTsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0Q3VycmVudFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmKSB7IH07CiAgICAgdmlydHVh
bCB2b2lkIHNlcnZpY2VBbmltYXRpb24oKSB7IH07Ci0KLXByb3RlY3RlZDoKLSAgICBTY3JvbGxB
bmltYXRpb24oU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhKQotICAgICAgICA6IG1fc2Ny
b2xsYWJsZUFyZWEoc2Nyb2xsYWJsZUFyZWEpCi0gICAgewotICAgIH0KLQotICAgIFNjcm9sbGFi
bGVBcmVhJiBtX3Njcm9sbGFibGVBcmVhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRp
Yy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5oCmlu
ZGV4IGNmMjVlNzk4Y2Q1YjA2YjM5NTFiMDJhNjczMDFhMDI1MTk2NTEzMTUuLjNlODljYjQ4YzA1
YzRjMmJlNzVlMzc2NWNjOWVmODE1MzNkY2I3YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmgKQEAgLTM1LDggKzM1LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBQbGF0Zm9ybVdoZWVsRXZlbnQ7CiAKLWNsYXNzIFNjcm9s
bEFuaW1hdGlvbktpbmV0aWMgZmluYWwgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwor
Y2xhc3MgU2Nyb2xsQW5pbWF0aW9uS2luZXRpYyBmaW5hbCA6IHB1YmxpYyBTY3JvbGxBbmltYXRp
b24gewogcHJpdmF0ZToKICAgICBjbGFzcyBQZXJBeGlzRGF0YSB7CiAgICAgcHVibGljOgpAQCAt
NTksMTEgKzU4LDYgQEAgcHJpdmF0ZToKICAgICB9OwogCiBwdWJsaWM6Ci0gICAgc3RydWN0IFNj
cm9sbEV4dGVudHMgewotICAgICAgICBJbnRQb2ludCBtaW5pbXVtU2Nyb2xsUG9zaXRpb247Ci0g
ICAgICAgIEludFBvaW50IG1heGltdW1TY3JvbGxQb3NpdGlvbjsKLSAgICB9OwotCiAgICAgdXNp
bmcgU2Nyb2xsRXh0ZW50c0NhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjxTY3JvbGxFeHRlbnRzKHZv
aWQpPjsKICAgICB1c2luZyBOb3RpZnlQb3NpdGlvbkNoYW5nZWRDYWxsYmFjayA9IFdURjo6RnVu
Y3Rpb248dm9pZChGbG9hdFBvaW50JiYpPjsKIApAQCAtNzUsNyArNjksNyBAQCBwdWJsaWM6CiAg
ICAgRmxvYXRQb2ludCBjb21wdXRlVmVsb2NpdHkoKTsKIAogICAgIHZvaWQgc3RhcnQoY29uc3Qg
RmxvYXRQb2ludCYgaW5pdGlhbFBvc2l0aW9uLCBjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSwg
Ym9vbCBtYXlIU2Nyb2xsLCBib29sIG1heVZTY3JvbGwpOwotICAgIHZvaWQgc3RvcCgpOworICAg
IHZvaWQgc3RvcCgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIHZvaWQgYW5pbWF0aW9uVGlt
ZXJGaXJlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5p
bWF0aW9uU21vb3RoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlv
blNtb290aC5jcHAKaW5kZXggMmNhNTc4YTMwZjFiMzFhMjk3ZGM5ODFkZmU1MmNhMzA2NzJlN2E3
Yi4uNDRmODUzMzNhOTBkZjQ1N2JmYTJlOGIwNjNiNjc5MGM0NmMzODE5MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguY3BwCkBAIC0zMSw2
ICszMSwxMCBAQAogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJTY3JvbGxhYmxl
QXJlYS5oIgogCisjaWYgVVNFKEdMSUIpCisjaW5jbHVkZSA8d3RmL2dsaWIvUnVuTG9vcFNvdXJj
ZVByaW9yaXR5Lmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29u
c3QgZG91YmxlIGZyYW1lUmF0ZSA9IDYwOwpAQCAtMzgsMjUgKzQyLDMxIEBAIHN0YXRpYyBjb25z
dCBTZWNvbmRzIHRpY2tUaW1lID0gMV9zIC8gZnJhbWVSYXRlOwogc3RhdGljIGNvbnN0IFNlY29u
ZHMgbWluaW11bVRpbWVySW50ZXJ2YWwgeyAxX21zIH07CiBzdGF0aWMgY29uc3QgZG91YmxlIHNt
b290aEZhY3RvckZvclByb2dyYW1tYXRpY1Njcm9sbCA9IDU7CiAKLVNjcm9sbEFuaW1hdGlvblNt
b290aDo6U2Nyb2xsQW5pbWF0aW9uU21vb3RoKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJl
YSwgY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIFdURjo6RnVuY3Rpb248dm9pZCAoRmxvYXRQ
b2ludCYmKT4mJiBub3RpZnlQb3NpdGlvbkNoYW5nZWRGdW5jdGlvbikKLSAgICA6IFNjcm9sbEFu
aW1hdGlvbihzY3JvbGxhYmxlQXJlYSkKK1Njcm9sbEFuaW1hdGlvblNtb290aDo6U2Nyb2xsQW5p
bWF0aW9uU21vb3RoKFNjcm9sbEV4dGVudHNDYWxsYmFjayYmIHNjcm9sbEV4dGVudHNGdW5jdGlv
biwgY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIE5vdGlmeVBvc2l0aW9uQ2hhbmdlZENhbGxi
YWNrJiYgbm90aWZ5UG9zaXRpb25DaGFuZ2VkRnVuY3Rpb24sIE5vdGlmeUFuaW1hdGlvblN0b3Bw
ZWRDYWxsYmFjayYmIG5vdGlmeUFuaW1hdGlvblN0b3BwZWRGdW5jdGlvbikKKyAgICA6IG1fc2Ny
b2xsRXh0ZW50c0Z1bmN0aW9uKFdURk1vdmUoc2Nyb2xsRXh0ZW50c0Z1bmN0aW9uKSkKICAgICAs
IG1fbm90aWZ5UG9zaXRpb25DaGFuZ2VkRnVuY3Rpb24oV1RGTW92ZShub3RpZnlQb3NpdGlvbkNo
YW5nZWRGdW5jdGlvbikpCi0gICAgLCBtX2hvcml6b250YWxEYXRhKHBvc2l0aW9uLngoKSwgc2Ny
b2xsYWJsZUFyZWEudmlzaWJsZVdpZHRoKCkpCi0gICAgLCBtX3ZlcnRpY2FsRGF0YShwb3NpdGlv
bi55KCksIHNjcm9sbGFibGVBcmVhLnZpc2libGVIZWlnaHQoKSkKLSAgICAsIG1fYW5pbWF0aW9u
VGltZXIoKnRoaXMsICZTY3JvbGxBbmltYXRpb25TbW9vdGg6OmFuaW1hdGlvblRpbWVyRmlyZWQp
CisgICAgLCBtX25vdGlmeUFuaW1hdGlvblN0b3BwZWRGdW5jdGlvbihXVEZNb3ZlKG5vdGlmeUFu
aW1hdGlvblN0b3BwZWRGdW5jdGlvbikpCisgICAgLCBtX2FuaW1hdGlvblRpbWVyKFJ1bkxvb3A6
OmN1cnJlbnQoKSwgdGhpcywgJlNjcm9sbEFuaW1hdGlvblNtb290aDo6YW5pbWF0aW9uVGltZXJG
aXJlZCkKIHsKKyNpZiBVU0UoR0xJQikKKyAgICBtX2FuaW1hdGlvblRpbWVyLnNldFByaW9yaXR5
KFdURjo6UnVuTG9vcFNvdXJjZVByaW9yaXR5OjpEaXNwbGF5UmVmcmVzaE1vbml0b3JUaW1lcik7
CisjZW5kaWYKKyAgICBhdXRvIGV4dGVudHMgPSBtX3Njcm9sbEV4dGVudHNGdW5jdGlvbigpOwor
ICAgIG1faG9yaXpvbnRhbERhdGEgPSBQZXJBeGlzRGF0YShwb3NpdGlvbi54KCksIGV4dGVudHMu
dmlzaWJsZVNpemUud2lkdGgoKSk7CisgICAgbV92ZXJ0aWNhbERhdGEgPSBQZXJBeGlzRGF0YShw
b3NpdGlvbi55KCksIGV4dGVudHMudmlzaWJsZVNpemUuaGVpZ2h0KCkpOwogfQogCiBib29sIFNj
cm9sbEFuaW1hdGlvblNtb290aDo6c2Nyb2xsKFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0
aW9uLCBTY3JvbGxHcmFudWxhcml0eSBncmFudWxhcml0eSwgZmxvYXQgc3RlcCwgZmxvYXQgbXVs
dGlwbGllcikKIHsKICAgICBmbG9hdCBtaW5TY3JvbGxQb3NpdGlvbjsKICAgICBmbG9hdCBtYXhT
Y3JvbGxQb3NpdGlvbjsKKyAgICBhdXRvIGV4dGVudHMgPSBtX3Njcm9sbEV4dGVudHNGdW5jdGlv
bigpOwogICAgIGlmIChvcmllbnRhdGlvbiA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKSB7Ci0gICAg
ICAgIG1pblNjcm9sbFBvc2l0aW9uID0gbV9zY3JvbGxhYmxlQXJlYS5taW5pbXVtU2Nyb2xsUG9z
aXRpb24oKS54KCk7Ci0gICAgICAgIG1heFNjcm9sbFBvc2l0aW9uID0gbV9zY3JvbGxhYmxlQXJl
YS5tYXhpbXVtU2Nyb2xsUG9zaXRpb24oKS54KCk7CisgICAgICAgIG1pblNjcm9sbFBvc2l0aW9u
ID0gZXh0ZW50cy5taW5pbXVtU2Nyb2xsUG9zaXRpb24ueCgpOworICAgICAgICBtYXhTY3JvbGxQ
b3NpdGlvbiA9IGV4dGVudHMubWF4aW11bVNjcm9sbFBvc2l0aW9uLngoKTsKICAgICB9IGVsc2Ug
ewotICAgICAgICBtaW5TY3JvbGxQb3NpdGlvbiA9IG1fc2Nyb2xsYWJsZUFyZWEubWluaW11bVNj
cm9sbFBvc2l0aW9uKCkueSgpOwotICAgICAgICBtYXhTY3JvbGxQb3NpdGlvbiA9IG1fc2Nyb2xs
YWJsZUFyZWEubWF4aW11bVNjcm9sbFBvc2l0aW9uKCkueSgpOworICAgICAgICBtaW5TY3JvbGxQ
b3NpdGlvbiA9IGV4dGVudHMubWluaW11bVNjcm9sbFBvc2l0aW9uLnkoKTsKKyAgICAgICAgbWF4
U2Nyb2xsUG9zaXRpb24gPSBleHRlbnRzLm1heGltdW1TY3JvbGxQb3NpdGlvbi55KCk7CiAgICAg
fQogICAgIGJvb2wgbmVlZFRvU2Nyb2xsID0gdXBkYXRlUGVyQXhpc0RhdGEob3JpZW50YXRpb24g
PT0gSG9yaXpvbnRhbFNjcm9sbGJhciA/IG1faG9yaXpvbnRhbERhdGEgOiBtX3ZlcnRpY2FsRGF0
YSwgZ3JhbnVsYXJpdHksIHN0ZXAgKiBtdWx0aXBsaWVyLCBtaW5TY3JvbGxQb3NpdGlvbiwgbWF4
U2Nyb2xsUG9zaXRpb24pOwogICAgIGlmIChuZWVkVG9TY3JvbGwgJiYgIWFuaW1hdGlvblRpbWVy
QWN0aXZlKCkpIHsKQEAgLTY5LDkgKzc5LDEwIEBAIGJvb2wgU2Nyb2xsQW5pbWF0aW9uU21vb3Ro
OjpzY3JvbGwoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24sIFNjcm9sbEdyYW51CiB2
b2lkIFNjcm9sbEFuaW1hdGlvblNtb290aDo6c2Nyb2xsKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0
aW9uKQogewogICAgIFNjcm9sbEdyYW51bGFyaXR5IGdyYW51bGFyaXR5ID0gU2Nyb2xsQnlQYWdl
OwotICAgIGJvb2wgbmVlZFRvU2Nyb2xsID0gdXBkYXRlUGVyQXhpc0RhdGEobV9ob3Jpem9udGFs
RGF0YSwgZ3JhbnVsYXJpdHksIHBvc2l0aW9uLngoKSAtIG1faG9yaXpvbnRhbERhdGEuY3VycmVu
dFBvc2l0aW9uLCBtX3Njcm9sbGFibGVBcmVhLm1pbmltdW1TY3JvbGxQb3NpdGlvbigpLngoKSwg
bV9zY3JvbGxhYmxlQXJlYS5tYXhpbXVtU2Nyb2xsUG9zaXRpb24oKS54KCksIHNtb290aEZhY3Rv
ckZvclByb2dyYW1tYXRpY1Njcm9sbCk7CisgICAgYXV0byBleHRlbnRzID0gbV9zY3JvbGxFeHRl
bnRzRnVuY3Rpb24oKTsKKyAgICBib29sIG5lZWRUb1Njcm9sbCA9IHVwZGF0ZVBlckF4aXNEYXRh
KG1faG9yaXpvbnRhbERhdGEsIGdyYW51bGFyaXR5LCBwb3NpdGlvbi54KCkgLSBtX2hvcml6b250
YWxEYXRhLmN1cnJlbnRQb3NpdGlvbiwgZXh0ZW50cy5taW5pbXVtU2Nyb2xsUG9zaXRpb24ueCgp
LCBleHRlbnRzLm1heGltdW1TY3JvbGxQb3NpdGlvbi54KCksIHNtb290aEZhY3RvckZvclByb2dy
YW1tYXRpY1Njcm9sbCk7CiAgICAgbmVlZFRvU2Nyb2xsIHw9Ci0gICAgICAgIHVwZGF0ZVBlckF4
aXNEYXRhKG1fdmVydGljYWxEYXRhLCBncmFudWxhcml0eSwgcG9zaXRpb24ueSgpIC0gbV92ZXJ0
aWNhbERhdGEuY3VycmVudFBvc2l0aW9uLCBtX3Njcm9sbGFibGVBcmVhLm1pbmltdW1TY3JvbGxQ
b3NpdGlvbigpLnkoKSwgbV9zY3JvbGxhYmxlQXJlYS5tYXhpbXVtU2Nyb2xsUG9zaXRpb24oKS55
KCksIHNtb290aEZhY3RvckZvclByb2dyYW1tYXRpY1Njcm9sbCk7CisgICAgICAgIHVwZGF0ZVBl
ckF4aXNEYXRhKG1fdmVydGljYWxEYXRhLCBncmFudWxhcml0eSwgcG9zaXRpb24ueSgpIC0gbV92
ZXJ0aWNhbERhdGEuY3VycmVudFBvc2l0aW9uLCBleHRlbnRzLm1pbmltdW1TY3JvbGxQb3NpdGlv
bi55KCksIGV4dGVudHMubWF4aW11bVNjcm9sbFBvc2l0aW9uLnkoKSwgc21vb3RoRmFjdG9yRm9y
UHJvZ3JhbW1hdGljU2Nyb2xsKTsKICAgICBpZiAobmVlZFRvU2Nyb2xsICYmICFhbmltYXRpb25U
aW1lckFjdGl2ZSgpKSB7CiAgICAgICAgIG1fc3RhcnRUaW1lID0gbV9ob3Jpem9udGFsRGF0YS5z
dGFydFRpbWU7CiAgICAgICAgIGFuaW1hdGlvblRpbWVyRmlyZWQoKTsKQEAgLTgxLDEzICs5Miwx
NCBAQCB2b2lkIFNjcm9sbEFuaW1hdGlvblNtb290aDo6c2Nyb2xsKGNvbnN0IEZsb2F0UG9pbnQm
IHBvc2l0aW9uKQogdm9pZCBTY3JvbGxBbmltYXRpb25TbW9vdGg6OnN0b3AoKQogewogICAgIG1f
YW5pbWF0aW9uVGltZXIuc3RvcCgpOwotICAgIG1fc2Nyb2xsYWJsZUFyZWEuc2V0U2Nyb2xsQmVo
YXZpb3JTdGF0dXMoU2Nyb2xsQmVoYXZpb3JTdGF0dXM6Ok5vdEluQW5pbWF0aW9uKTsKKyAgICBt
X25vdGlmeUFuaW1hdGlvblN0b3BwZWRGdW5jdGlvbigpOwogfQogCiB2b2lkIFNjcm9sbEFuaW1h
dGlvblNtb290aDo6dXBkYXRlVmlzaWJsZUxlbmd0aHMoKQogewotICAgIG1faG9yaXpvbnRhbERh
dGEudmlzaWJsZUxlbmd0aCA9IG1fc2Nyb2xsYWJsZUFyZWEudmlzaWJsZVdpZHRoKCk7Ci0gICAg
bV92ZXJ0aWNhbERhdGEudmlzaWJsZUxlbmd0aCA9IG1fc2Nyb2xsYWJsZUFyZWEudmlzaWJsZUhl
aWdodCgpOworICAgIGF1dG8gZXh0ZW50cyA9IG1fc2Nyb2xsRXh0ZW50c0Z1bmN0aW9uKCk7Cisg
ICAgbV9ob3Jpem9udGFsRGF0YS52aXNpYmxlTGVuZ3RoID0gZXh0ZW50cy52aXNpYmxlU2l6ZS53
aWR0aCgpOworICAgIG1fdmVydGljYWxEYXRhLnZpc2libGVMZW5ndGggPSBleHRlbnRzLnZpc2li
bGVTaXplLmhlaWdodCgpOwogfQogCiB2b2lkIFNjcm9sbEFuaW1hdGlvblNtb290aDo6c2V0Q3Vy
cmVudFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uKQpAQCAtNDExLDcgKzQyMyw3
IEBAIHZvaWQgU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjphbmltYXRpb25UaW1lckZpcmVkKCkKICAg
ICBpZiAoY29udGludWVBbmltYXRpb24pCiAgICAgICAgIHN0YXJ0TmV4dFRpbWVyKHN0ZDo6bWF4
KG1pbmltdW1UaW1lckludGVydmFsLCBkZWx0YVRvTmV4dEZyYW1lKSk7CiAgICAgZWxzZQotICAg
ICAgICBtX3Njcm9sbGFibGVBcmVhLnNldFNjcm9sbEJlaGF2aW9yU3RhdHVzKFNjcm9sbEJlaGF2
aW9yU3RhdHVzOjpOb3RJbkFuaW1hdGlvbik7CisgICAgICAgIG1fbm90aWZ5QW5pbWF0aW9uU3Rv
cHBlZEZ1bmN0aW9uKCk7CiAKICAgICBtX25vdGlmeVBvc2l0aW9uQ2hhbmdlZEZ1bmN0aW9uKEZs
b2F0UG9pbnQobV9ob3Jpem9udGFsRGF0YS5jdXJyZW50UG9zaXRpb24sIG1fdmVydGljYWxEYXRh
LmN1cnJlbnRQb3NpdGlvbikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxBbmltYXRpb25TbW9vdGguaAppbmRleCA4OWVlZmM4ZmRkOWUzZTIzODI3NWJkZDQzYzMxMDE5
NzcyZTY1NTlhLi5kNzJjODAzZTBkNzcxOTkzNTNhMzlmN2FiY2Y1MzQ4YTgwOTgwYzlkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguaApAQCAt
MjcsNyArMjcsNyBAQAogCiAjaW5jbHVkZSAiU2Nyb2xsQW5pbWF0aW9uLmgiCiAKLSNpbmNsdWRl
ICJUaW1lci5oIgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtMzcsNyArMzcsMTEgQEAgZW51bSBjbGFzcyBTY3JvbGxDbGFtcGluZyA6IGJvb2w7
CiAKIGNsYXNzIFNjcm9sbEFuaW1hdGlvblNtb290aCBmaW5hbDogcHVibGljIFNjcm9sbEFuaW1h
dGlvbiB7CiBwdWJsaWM6Ci0gICAgU2Nyb2xsQW5pbWF0aW9uU21vb3RoKFNjcm9sbGFibGVBcmVh
JiwgY29uc3QgRmxvYXRQb2ludCYsIFdURjo6RnVuY3Rpb248dm9pZCAoRmxvYXRQb2ludCYmKT4m
JiBub3RpZnlQb3NpdGlvbkNoYW5nZWRGdW5jdGlvbik7CisgICAgdXNpbmcgU2Nyb2xsRXh0ZW50
c0NhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjxTY3JvbGxFeHRlbnRzKHZvaWQpPjsKKyAgICB1c2lu
ZyBOb3RpZnlQb3NpdGlvbkNoYW5nZWRDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChGbG9h
dFBvaW50JiYpPjsKKyAgICB1c2luZyBOb3RpZnlBbmltYXRpb25TdG9wcGVkQ2FsbGJhY2sgPSBX
VEY6OkZ1bmN0aW9uPHZvaWQodm9pZCk+OworCisgICAgU2Nyb2xsQW5pbWF0aW9uU21vb3RoKFNj
cm9sbEV4dGVudHNDYWxsYmFjayYmLCBjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbiwgTm90aWZ5
UG9zaXRpb25DaGFuZ2VkQ2FsbGJhY2smJiwgTm90aWZ5QW5pbWF0aW9uU3RvcHBlZENhbGxiYWNr
JiYpOwogICAgIHZpcnR1YWwgflNjcm9sbEFuaW1hdGlvblNtb290aCgpOwogCiAgICAgZW51bSBj
bGFzcyBDdXJ2ZSB7CkBAIC01Niw3ICs2MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRDdXJy
ZW50UG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYpIG92ZXJyaWRlOwogCiAgICAgc3RydWN0IFBl
ckF4aXNEYXRhIHsKLSAgICAgICAgUGVyQXhpc0RhdGEoKSA9IGRlbGV0ZTsKKyAgICAgICAgUGVy
QXhpc0RhdGEoKSB7IH0KIAogICAgICAgICBQZXJBeGlzRGF0YShmbG9hdCBwb3NpdGlvbiwgaW50
IGxlbmd0aCkKICAgICAgICAgICAgIDogY3VycmVudFBvc2l0aW9uKHBvc2l0aW9uKQpAQCAtOTcs
MTMgKzEwMSwxNSBAQCBwcml2YXRlOgogICAgIHZvaWQgYW5pbWF0aW9uVGltZXJGaXJlZCgpOwog
ICAgIGJvb2wgYW5pbWF0aW9uVGltZXJBY3RpdmUoKSBjb25zdDsKIAotICAgIFdURjo6RnVuY3Rp
b248dm9pZCAoRmxvYXRQb2ludCYmKT4gbV9ub3RpZnlQb3NpdGlvbkNoYW5nZWRGdW5jdGlvbjsK
KyAgICBTY3JvbGxFeHRlbnRzQ2FsbGJhY2sgbV9zY3JvbGxFeHRlbnRzRnVuY3Rpb247CisgICAg
Tm90aWZ5UG9zaXRpb25DaGFuZ2VkQ2FsbGJhY2sgbV9ub3RpZnlQb3NpdGlvbkNoYW5nZWRGdW5j
dGlvbjsKKyAgICBOb3RpZnlBbmltYXRpb25TdG9wcGVkQ2FsbGJhY2sgbV9ub3RpZnlBbmltYXRp
b25TdG9wcGVkRnVuY3Rpb247CiAKICAgICBQZXJBeGlzRGF0YSBtX2hvcml6b250YWxEYXRhOwog
ICAgIFBlckF4aXNEYXRhIG1fdmVydGljYWxEYXRhOwogCiAgICAgTW9ub3RvbmljVGltZSBtX3N0
YXJ0VGltZTsKLSAgICBUaW1lciBtX2FuaW1hdGlvblRpbWVyOworICAgIFJ1bkxvb3A6OlRpbWVy
PFNjcm9sbEFuaW1hdGlvblNtb290aD4gbV9hbmltYXRpb25UaW1lcjsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bEFuaW1hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNw
cAppbmRleCBlZTFiMjZmNmEyNzc2NTVkMWFmYmIxMWIzOTQ2ZmVkMWRlYjBjZWMzLi40YmUxNjMx
YTFhMDg5OGUzY2MwMTJmNzUyODQzOGUxMGZiYzFlYjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCkBAIC01NywxMSArNTcsMTkgQEAgU2Nyb2xsQW5pbWF0
b3I6OlNjcm9sbEFuaW1hdG9yKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkKICNpZiBF
TkFCTEUoQ1NTX1NDUk9MTF9TTkFQKSB8fCBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCiAgICAgLCBt
X3Njcm9sbENvbnRyb2xsZXIoKnRoaXMpCiAjZW5kaWYKLSAgICAsIG1fYW5pbWF0aW9uUHJvZ3Jh
bW1hdGljU2Nyb2xsKG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0aW9uU21vb3RoPihzY3JvbGxhYmxl
QXJlYSwgbV9jdXJyZW50UG9zaXRpb24sIFt0aGlzXShGbG9hdFBvaW50JiYgcG9zaXRpb24pIHsK
LSAgICAgICAgRmxvYXRTaXplIGRlbHRhID0gcG9zaXRpb24gLSBtX2N1cnJlbnRQb3NpdGlvbjsK
LSAgICAgICAgbV9jdXJyZW50UG9zaXRpb24gPSBXVEZNb3ZlKHBvc2l0aW9uKTsKLSAgICAgICAg
bm90aWZ5UG9zaXRpb25DaGFuZ2VkKGRlbHRhKTsKLSAgICB9KSkKKyAgICAsIG1fYW5pbWF0aW9u
UHJvZ3JhbW1hdGljU2Nyb2xsKG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0aW9uU21vb3RoPigKKyAg
ICAgICAgW3RoaXNdKCkgLT4gU2Nyb2xsRXh0ZW50cyB7CisgICAgICAgICAgICByZXR1cm4geyBt
X3Njcm9sbGFibGVBcmVhLm1pbmltdW1TY3JvbGxQb3NpdGlvbigpLCBtX3Njcm9sbGFibGVBcmVh
Lm1heGltdW1TY3JvbGxQb3NpdGlvbigpLCBtX3Njcm9sbGFibGVBcmVhLnZpc2libGVTaXplKCkg
fTsKKyAgICAgICAgfSwKKyAgICAgICAgbV9jdXJyZW50UG9zaXRpb24sCisgICAgICAgIFt0aGlz
XShGbG9hdFBvaW50JiYgcG9zaXRpb24pIHsKKyAgICAgICAgICAgIEZsb2F0U2l6ZSBkZWx0YSA9
IHBvc2l0aW9uIC0gbV9jdXJyZW50UG9zaXRpb247CisgICAgICAgICAgICBtX2N1cnJlbnRQb3Np
dGlvbiA9IFdURk1vdmUocG9zaXRpb24pOworICAgICAgICAgICAgbm90aWZ5UG9zaXRpb25DaGFu
Z2VkKGRlbHRhKTsKKyAgICAgICAgfSwKKyAgICAgICAgW3RoaXNdIHsKKyAgICAgICAgICAgIG1f
c2Nyb2xsYWJsZUFyZWEuc2V0U2Nyb2xsQmVoYXZpb3JTdGF0dXMoU2Nyb2xsQmVoYXZpb3JTdGF0
dXM6Ok5vdEluQW5pbWF0aW9uKTsKKyAgICAgICAgfSkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmNw
cAppbmRleCA2YTMzNTBlM2QxNmVkOTU2ZTcyYmE4Y2Q4ODNlNWUzYmE3ZTBlNDk5Li5jMDRhNDgw
ZDU1OTZjNzFjY2YyYTU0YTI5NWY5OWU2Zjk5NTg4YTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuY3BwCkBA
IC01MSw4ICs1MSw4IEBAIFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6U2Nyb2xsQW5pbWF0b3JHZW5l
cmljKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkKICAgICAsIG1fb3ZlcmxheVNjcm9s
bGJhckFuaW1hdGlvblRpbWVyKCp0aGlzLCAmU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpvdmVybGF5
U2Nyb2xsYmFyQW5pbWF0aW9uVGltZXJGaXJlZCkKIHsKICAgICBtX2tpbmV0aWNBbmltYXRpb24g
PSBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlvbktpbmV0aWM+KAotICAgICAgICBbdGhpc10oKSAt
PiBTY3JvbGxBbmltYXRpb25LaW5ldGljOjpTY3JvbGxFeHRlbnRzIHsKLSAgICAgICAgICAgIHJl
dHVybiB7IG1fc2Nyb2xsYWJsZUFyZWEubWluaW11bVNjcm9sbFBvc2l0aW9uKCksIG1fc2Nyb2xs
YWJsZUFyZWEubWF4aW11bVNjcm9sbFBvc2l0aW9uKCkgfTsKKyAgICAgICAgW3RoaXNdKCkgLT4g
U2Nyb2xsRXh0ZW50cyB7CisgICAgICAgICAgICByZXR1cm4geyBtX3Njcm9sbGFibGVBcmVhLm1p
bmltdW1TY3JvbGxQb3NpdGlvbigpLCBtX3Njcm9sbGFibGVBcmVhLm1heGltdW1TY3JvbGxQb3Np
dGlvbigpLCBtX3Njcm9sbGFibGVBcmVhLnZpc2libGVTaXplKCkgfTsKICAgICAgICAgfSwKICAg
ICAgICAgW3RoaXNdKEZsb2F0UG9pbnQmJiBwb3NpdGlvbikgewogI2lmIEVOQUJMRShTTU9PVEhf
U0NST0xMSU5HKQpAQCAtNzYsOSArNzYsMTcgQEAgdm9pZCBTY3JvbGxBbmltYXRvckdlbmVyaWM6
OmVuc3VyZVNtb290aFNjcm9sbGluZ0FuaW1hdGlvbigpCiAgICAgaWYgKG1fc21vb3RoQW5pbWF0
aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Ntb290aEFuaW1hdGlvbiA9IG1ha2VVbmlx
dWU8U2Nyb2xsQW5pbWF0aW9uU21vb3RoPihtX3Njcm9sbGFibGVBcmVhLCBtX2N1cnJlbnRQb3Np
dGlvbiwgW3RoaXNdKEZsb2F0UG9pbnQmJiBwb3NpdGlvbikgewotICAgICAgICB1cGRhdGVQb3Np
dGlvbihXVEZNb3ZlKHBvc2l0aW9uKSk7Ci0gICAgfSk7CisgICAgbV9zbW9vdGhBbmltYXRpb24g
PSBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlvblNtb290aD4oCisgICAgICAgIFt0aGlzXSgpIC0+
IFNjcm9sbEV4dGVudHMgeworICAgICAgICAgICAgcmV0dXJuIHsgbV9zY3JvbGxhYmxlQXJlYS5t
aW5pbXVtU2Nyb2xsUG9zaXRpb24oKSwgbV9zY3JvbGxhYmxlQXJlYS5tYXhpbXVtU2Nyb2xsUG9z
aXRpb24oKSwgbV9zY3JvbGxhYmxlQXJlYS52aXNpYmxlU2l6ZSgpIH07CisgICAgICAgIH0sCisg
ICAgICAgIG1fY3VycmVudFBvc2l0aW9uLAorICAgICAgICBbdGhpc10oRmxvYXRQb2ludCYmIHBv
c2l0aW9uKSB7CisgICAgICAgICAgICB1cGRhdGVQb3NpdGlvbihXVEZNb3ZlKHBvc2l0aW9uKSk7
CisgICAgICAgIH0sCisgICAgICAgIFt0aGlzXSB7CisgICAgICAgICAgICBtX3Njcm9sbGFibGVB
cmVhLnNldFNjcm9sbEJlaGF2aW9yU3RhdHVzKFNjcm9sbEJlaGF2aW9yU3RhdHVzOjpOb3RJbkFu
aW1hdGlvbik7CisgICAgICAgIH0pOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5oCmluZGV4IDZh
ODk1Mzg5ZDI0YjJiYzBjNGZhNWU4OTA0NjMyNGFjNDdkYjRiZjEuLjM0YzE0ZDQ1ODhjMmYyNThj
ZTU4MWU5OWNmNzI3NjBkY2NhNmE2OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuaApAQCAtMzUsNyArMzUsNiBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNjcm9sbEFuaW1hdGlvbjsKIGNsYXNz
IFNjcm9sbEFuaW1hdGlvbktpbmV0aWM7CiAKIGNsYXNzIFNjcm9sbEFuaW1hdG9yR2VuZXJpYyBm
aW5hbCA6IHB1YmxpYyBTY3JvbGxBbmltYXRvciB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407095</attachid>
            <date>2020-08-24 05:02:03 -0700</date>
            <delta_ts>2020-08-24 06:28:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210382-20200824130201.patch</filename>
            <type>text/plain</type>
            <size>32713</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1ODQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDIyZGExZTFiZDk2NGIx
MmNhYjhiMGUxNDEwNTZhZTNmOTcyOWI1OS4uY2NkMjRmZjVkMWI5Y2I0NDAxNGYxMGYxMzg5MTli
ZmZiOGUzMTRhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDIwLTA4LTE5ICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIEFkZCBzdXBw
b3J0IGZvciBzbW9vdGggc2Nyb2xsaW5nIGFuaW1hdGlvbiB3aXRoIGFzeW5jIHNjcm9sbGluZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMzgyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyByZW1v
dmVzIHRoZSBkZXBlbmRlbmN5IG9uIFNjcm9sbGFibGVBcmVhIGZyb20KKyAgICAgICAgU2Nyb2xs
QW5pbWF0aW9uU21vb3RoLCB3aGljaCBhbGxvd3MgaXRzIHVzZSBhcyBhIHV0aWxpdHkgY2xhc3Mg
Zm9yCisgICAgICAgIHNtb290aCBzY3JvbGxpbmcuIFRoaXMgY2xhc3MgaXMgdGhlbiB1c2VkIGlu
IHRoZSBOaWNvc2lhIGFzeW5jIGxheWVyCisgICAgICAgIGNvbXBvc2l0aW9uIHNjcm9sbGluZyBj
b2RlIHRvIHByb3ZpZGUgc21vb3RoIHNjcm9sbGluZywgd2hlbiB0aGUKKyAgICAgICAgZmVhdHVy
ZSBpcyBlbmFibGVkLiBUaGlzIG1pcnJvcnMgdGhlIHdvcmsgZG9uZSBpbiBidWcgMjA5MjMwIGZv
cgorICAgICAgICBraW5ldGljIHNjcm9sbGluZy4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGVu
YWJsaW5nIGV4aXN0aW5nIGZ1bmN0aW9uYWxpdHkgaW4gbW9yZSBzaXR1YXRpb25zLgorCisgICAg
ICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OnNjcm9sbFRvKToKKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGlu
Z05vZGVOaWNvc2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGVOaWNvc2lhOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3Np
YSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmlj
b3NpYTo6Y29tbWl0U3RhdGVBZnRlckNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjpoYW5kbGVXaGVlbEV2ZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjpz
dG9wU2Nyb2xsQW5pbWF0aW9ucyk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9T
Y3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYS5oOgorICAgICAgICAqIHBhZ2Uv
c2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29z
aWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5n
Tm9kZU5pY29zaWE6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNv
c2lhOjpjb21taXRTdGF0ZUFmdGVyQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
aW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWE6OmhhbmRsZVdoZWVsRXZlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29z
aWE6OnN0b3BTY3JvbGxBbmltYXRpb25zKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9uaWNv
c2lhL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhLmg6CisgICAgICAg
ICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxB
bmltYXRpb246OnNlcnZpY2VBbmltYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFu
aW1hdGlvbktpbmV0aWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9v
dGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpTY3JvbGxB
bmltYXRpb25TbW9vdGgpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uU21vb3Ro
OjpzY3JvbGwpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpzdG9w
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblNtb290aDo6dXBkYXRlVmlzaWJs
ZUxlbmd0aHMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uU21vb3RoOjphbmlt
YXRpb25UaW1lckZpcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9v
dGguaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6U2Nyb2xsQW5pbWF0b3IpOgorICAgICAgICAqIHBsYXRm
b3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6ZW5zdXJlU21vb3RoU2Nyb2xsaW5nQW5p
bWF0aW9uKToKKwogMjAyMC0wOC0xOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgog
CiAgICAgICAgIEF1ZGlvQnVmZmVyLmR1cmF0aW9uIHNob3VsZCB1c2UgZG91YmxlIHByZWNpc2lv
bgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCmluZGV4IDIzMDFjOTY1ODc1OGUxNWQyMjViYTRkOTEz
ZjZhY2FiNWE4ZjQzZGMuLjcxM2I5OTI3MDFkYmFlYzZjMmUyMjNiZjdkNDcwMzA5OTc2OThhMTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAKQEAgLTI1Niw5ICsyNTYsNiBAQCB2b2lkIFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpzY3JvbGxUbyhjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlv
biwgU2Nyb2xsVHlwZQogICAgIGlmIChwb3NpdGlvbiA9PSBtX2N1cnJlbnRTY3JvbGxQb3NpdGlv
bikKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHNjcm9sbFR5cGUgPT0gU2Nyb2xsVHlwZTo6
UHJvZ3JhbW1hdGljKQotICAgICAgICBzdG9wU2Nyb2xsQW5pbWF0aW9ucygpOwotCiAgICAgc2Ny
b2xsaW5nVHJlZSgpLnNldElzSGFuZGxpbmdQcm9ncmFtbWF0aWNTY3JvbGwoc2Nyb2xsVHlwZSA9
PSBTY3JvbGxUeXBlOjpQcm9ncmFtbWF0aWMpOwogICAgIAogICAgIG1fY3VycmVudFNjcm9sbFBv
c2l0aW9uID0gYWRqdXN0ZWRTY3JvbGxQb3NpdGlvbihwb3NpdGlvbiwgY2xhbXApOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVl
RnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhLmNwcApp
bmRleCBjYjUyZWQ4MDViYTNiNGY1ZjM4MDFhMjQzZjdkNmQ4ZmEwODc2MWRjLi4wOGI1ZTVlNGY2
ZjBmNTlmOThiNTIwYjI4Yzk5ODVkM2IxNWMwNTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVO
aWNvc2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Nj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhLmNwcApAQCAtNDAsNiArNDAsOSBA
QAogI2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykKICNpbmNsdWRlICJTY3JvbGxBbmltYXRp
b25LaW5ldGljLmgiCiAjZW5kaWYKKyNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKKyNpbmNs
dWRlICJTY3JvbGxBbmltYXRpb25TbW9vdGguaCIKKyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTUzLDEwICs1NiwxNCBAQCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2Rl
Tmljb3NpYTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEoUwogewogI2lm
IEVOQUJMRShLSU5FVElDX1NDUk9MTElORykKICAgICBtX2tpbmV0aWNBbmltYXRpb24gPSBtYWtl
VW5pcXVlPFNjcm9sbEFuaW1hdGlvbktpbmV0aWM+KAotICAgICAgICBbdGhpc10oKSAtPiBTY3Jv
bGxBbmltYXRpb25LaW5ldGljOjpTY3JvbGxFeHRlbnRzIHsKLSAgICAgICAgICAgIHJldHVybiB7
IEludFBvaW50KG1pbmltdW1TY3JvbGxQb3NpdGlvbigpKSwgSW50UG9pbnQobWF4aW11bVNjcm9s
bFBvc2l0aW9uKCkpIH07CisgICAgICAgIFt0aGlzXSgpIC0+IFNjcm9sbEV4dGVudHMgeworICAg
ICAgICAgICAgcmV0dXJuIHsgSW50UG9pbnQobWluaW11bVNjcm9sbFBvc2l0aW9uKCkpLCBJbnRQ
b2ludChtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSksIEludFNpemUoc2Nyb2xsYWJsZUFyZWFTaXpl
KCkpIH07CiAgICAgICAgIH0sCiAgICAgICAgIFt0aGlzXShGbG9hdFBvaW50JiYgcG9zaXRpb24p
IHsKKyNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKKyAgICAgICAgICAgIG1fc21vb3RoQW5p
bWF0aW9uLT5zZXRDdXJyZW50UG9zaXRpb24ocG9zaXRpb24pOworI2VuZGlmCisKICAgICAgICAg
ICAgIGF1dG8qIHNjcm9sbExheWVyID0gc3RhdGljX2Nhc3Q8Tmljb3NpYTo6UGxhdGZvcm1MYXll
cio+KHNjcm9sbGVkQ29udGVudHNMYXllcigpKTsKICAgICAgICAgICAgIEFTU0VSVChzY3JvbGxM
YXllcik7CiAgICAgICAgICAgICBhdXRvJiBjb21wb3NpdGlvbkxheWVyID0gZG93bmNhc3Q8Tmlj
b3NpYTo6Q29tcG9zaXRpb25MYXllcj4oKnNjcm9sbExheWVyKTsKQEAgLTY1LDYgKzcyLDIyIEBA
IFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjpTY3JvbGxpbmdUcmVlRnJh
bWVTY3JvbGxpbmdOb2RlTmljb3NpYShTCiAgICAgICAgICAgICBzY3JvbGxUbyhwb3NpdGlvbik7
CiAgICAgICAgIH0pOwogI2VuZGlmCisjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCisgICAg
bV9zbW9vdGhBbmltYXRpb24gPSBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlvblNtb290aD4oCisg
ICAgICAgIFt0aGlzXSgpIC0+IFNjcm9sbEV4dGVudHMgeworICAgICAgICAgICAgcmV0dXJuIHsg
SW50UG9pbnQobWluaW11bVNjcm9sbFBvc2l0aW9uKCkpLCBJbnRQb2ludChtYXhpbXVtU2Nyb2xs
UG9zaXRpb24oKSksIEludFNpemUoc2Nyb2xsYWJsZUFyZWFTaXplKCkpIH07CisgICAgICAgIH0s
CisgICAgICAgIGN1cnJlbnRTY3JvbGxQb3NpdGlvbigpLAorICAgICAgICBbdGhpc10oRmxvYXRQ
b2ludCYmIHBvc2l0aW9uKSB7CisgICAgICAgICAgICBhdXRvKiBzY3JvbGxMYXllciA9IHN0YXRp
Y19jYXN0PE5pY29zaWE6OlBsYXRmb3JtTGF5ZXIqPihzY3JvbGxlZENvbnRlbnRzTGF5ZXIoKSk7
CisgICAgICAgICAgICBBU1NFUlQoc2Nyb2xsTGF5ZXIpOworICAgICAgICAgICAgYXV0byYgY29t
cG9zaXRpb25MYXllciA9IGRvd25jYXN0PE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+KCpzY3Jv
bGxMYXllcik7CisKKyAgICAgICAgICAgIGF1dG8gdXBkYXRlU2NvcGUgPSBjb21wb3NpdGlvbkxh
eWVyLmNyZWF0ZVVwZGF0ZVNjb3BlKCk7CisgICAgICAgICAgICBzY3JvbGxUbyhwb3NpdGlvbik7
CisgICAgICAgIH0sCisgICAgICAgIFtdIHsgfSk7CisjZW5kaWYKIH0KIAogU2Nyb2xsaW5nVHJl
ZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWE6On5TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdO
b2RlTmljb3NpYSgpID0gZGVmYXVsdDsKQEAgLTEwOSw4ICsxMzIsMTIgQEAgdm9pZCBTY3JvbGxp
bmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYTo6Y29tbWl0U3RhdGVBZnRlckNoaWxkcmVu
KGNvbnN0IFNjcm8KIAogICAgIC8vIFVwZGF0ZSB0aGUgc2Nyb2xsIHBvc2l0aW9uIGFmdGVyIGNo
aWxkIG5vZGVzIGhhdmUgYmVlbiB1cGRhdGVkLCBiZWNhdXNlIHRoZXkgbmVlZCB0byBoYXZlIHVw
ZGF0ZWQgdGhlaXIgY29uc3RyYWludHMgYmVmb3JlIGFueSBzY3JvbGxpbmcgaGFwcGVucy4KICAg
ICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGU6OlJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uKSkgeworICAgICAgICBzdG9w
U2Nyb2xsQW5pbWF0aW9ucygpOwogICAgICAgICBjb25zdCBhdXRvJiByZXF1ZXN0ZWRTY3JvbGxE
YXRhID0gc2Nyb2xsaW5nU3RhdGVOb2RlLnJlcXVlc3RlZFNjcm9sbERhdGEoKTsKICAgICAgICAg
c2Nyb2xsVG8ocmVxdWVzdGVkU2Nyb2xsRGF0YS5zY3JvbGxQb3NpdGlvbiwgcmVxdWVzdGVkU2Ny
b2xsRGF0YS5zY3JvbGxUeXBlLCByZXF1ZXN0ZWRTY3JvbGxEYXRhLmNsYW1waW5nKTsKKyNpZiBF
TkFCTEUoU01PT1RIX1NDUk9MTElORykKKyAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnNldEN1
cnJlbnRQb3NpdGlvbihjdXJyZW50U2Nyb2xsUG9zaXRpb24oKSk7CisjZW5kaWYKICAgICB9CiB9
CiAKQEAgLTExOSwzMyArMTQ2LDYwIEBAIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdCBTY3JvbGxp
bmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYTo6aGFuZGxlV2hlZWxFdmVuCiAgICAgaWYg
KCFjYW5IYW5kbGVXaGVlbEV2ZW50KHdoZWVsRXZlbnQpKQogICAgICAgICByZXR1cm4gV2hlZWxF
dmVudEhhbmRsaW5nUmVzdWx0Ojp1bmhhbmRsZWQoKTsKIAotICAgIGlmICh3aGVlbEV2ZW50LmRl
bHRhWCgpIHx8IHdoZWVsRXZlbnQuZGVsdGFZKCkpIHsKLSAgICAgICAgYXV0byogc2Nyb2xsTGF5
ZXIgPSBzdGF0aWNfY2FzdDxOaWNvc2lhOjpQbGF0Zm9ybUxheWVyKj4oc2Nyb2xsZWRDb250ZW50
c0xheWVyKCkpOwotICAgICAgICBBU1NFUlQoc2Nyb2xsTGF5ZXIpOwotICAgICAgICBhdXRvJiBj
b21wb3NpdGlvbkxheWVyID0gZG93bmNhc3Q8Tmljb3NpYTo6Q29tcG9zaXRpb25MYXllcj4oKnNj
cm9sbExheWVyKTsKLQotICAgICAgICBhdXRvIHVwZGF0ZVNjb3BlID0gY29tcG9zaXRpb25MYXll
ci5jcmVhdGVVcGRhdGVTY29wZSgpOwotICAgICAgICBzY3JvbGxCeSh7IC13aGVlbEV2ZW50LmRl
bHRhWCgpLCAtd2hlZWxFdmVudC5kZWx0YVkoKSB9KTsKLQotICAgIH0KLQogI2lmIEVOQUJMRShL
SU5FVElDX1NDUk9MTElORykKICAgICBtX2tpbmV0aWNBbmltYXRpb24tPmFwcGVuZFRvU2Nyb2xs
SGlzdG9yeSh3aGVlbEV2ZW50KTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xM
SU5HKQogICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+c3RvcCgpOwogICAgIGlmICh3aGVlbEV2ZW50
LmlzRW5kT2ZOb25Nb21lbnR1bVNjcm9sbCgpKSB7CiAgICAgICAgIG1fa2luZXRpY0FuaW1hdGlv
bi0+c3RhcnQoY3VycmVudFNjcm9sbFBvc2l0aW9uKCksIG1fa2luZXRpY0FuaW1hdGlvbi0+Y29t
cHV0ZVZlbG9jaXR5KCksIGNhbkhhdmVIb3Jpem9udGFsU2Nyb2xsYmFyKCksIGNhbkhhdmVWZXJ0
aWNhbFNjcm9sbGJhcigpKTsKICAgICAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5jbGVhclNjcm9s
bEhpc3RvcnkoKTsKKyAgICAgICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6aGFu
ZGxlZCgpOwogICAgIH0KICAgICBpZiAod2hlZWxFdmVudC5pc1RyYW5zaXRpb25pbmdUb01vbWVu
dHVtU2Nyb2xsKCkpIHsKICAgICAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5zdGFydChjdXJyZW50
U2Nyb2xsUG9zaXRpb24oKSwgd2hlZWxFdmVudC5zd2lwZVZlbG9jaXR5KCksIGNhbkhhdmVIb3Jp
em9udGFsU2Nyb2xsYmFyKCksIGNhbkhhdmVWZXJ0aWNhbFNjcm9sbGJhcigpKTsKICAgICAgICAg
bV9raW5ldGljQW5pbWF0aW9uLT5jbGVhclNjcm9sbEhpc3RvcnkoKTsKKyAgICAgICAgcmV0dXJu
IFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6aGFuZGxlZCgpOworICAgIH0KKyNlbmRpZgorCisg
ICAgZmxvYXQgZGVsdGFYID0gY2FuSGF2ZUhvcml6b250YWxTY3JvbGxiYXIoKSA/IHdoZWVsRXZl
bnQuZGVsdGFYKCkgOiAwOworICAgIGZsb2F0IGRlbHRhWSA9IGNhbkhhdmVWZXJ0aWNhbFNjcm9s
bGJhcigpID8gd2hlZWxFdmVudC5kZWx0YVkoKSA6IDA7CisgICAgaWYgKChkZWx0YVggPCAwICYm
IGN1cnJlbnRTY3JvbGxQb3NpdGlvbigpLngoKSA+PSBtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKS54
KCkpCisgICAgICAgIHx8IChkZWx0YVggPiAwICYmIGN1cnJlbnRTY3JvbGxQb3NpdGlvbigpLngo
KSA8PSBtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKS54KCkpKQorICAgICAgICBkZWx0YVggPSAwOwor
ICAgIGlmICgoZGVsdGFZIDwgMCAmJiBjdXJyZW50U2Nyb2xsUG9zaXRpb24oKS55KCkgPj0gbWF4
aW11bVNjcm9sbFBvc2l0aW9uKCkueSgpKQorICAgICAgICB8fCAoZGVsdGFZID4gMCAmJiBjdXJy
ZW50U2Nyb2xsUG9zaXRpb24oKS55KCkgPD0gbWluaW11bVNjcm9sbFBvc2l0aW9uKCkueSgpKSkK
KyAgICAgICAgZGVsdGFZID0gMDsKKworICAgIGlmICghZGVsdGFYICYmICFkZWx0YVkpCisgICAg
ICAgIHJldHVybiBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQ6OnVuaGFuZGxlZCgpOworCisgICAg
aWYgKHdoZWVsRXZlbnQuZ3JhbnVsYXJpdHkoKSA9PSBTY3JvbGxCeVBhZ2VXaGVlbEV2ZW50KSB7
CisgICAgICAgIGlmIChkZWx0YVgpIHsKKyAgICAgICAgICAgIGJvb2wgbmVnYXRpdmUgPSBkZWx0
YVggPCAwOworICAgICAgICAgICAgZGVsdGFYID0gU2Nyb2xsYmFyOjpwYWdlU3RlcERlbHRhKHNj
cm9sbGFibGVBcmVhU2l6ZSgpLndpZHRoKCkpOworICAgICAgICAgICAgaWYgKG5lZ2F0aXZlKQor
ICAgICAgICAgICAgICAgIGRlbHRhWCA9IC1kZWx0YVg7CisgICAgICAgIH0KKyAgICAgICAgaWYg
KGRlbHRhWSkgeworICAgICAgICAgICAgYm9vbCBuZWdhdGl2ZSA9IGRlbHRhWSA8IDA7CisgICAg
ICAgICAgICBkZWx0YVkgPSBTY3JvbGxiYXI6OnBhZ2VTdGVwRGVsdGEoc2Nyb2xsYWJsZUFyZWFT
aXplKCkuaGVpZ2h0KCkpOworICAgICAgICAgICAgaWYgKG5lZ2F0aXZlKQorICAgICAgICAgICAg
ICAgIGRlbHRhWSA9IC1kZWx0YVk7CisgICAgICAgIH0KICAgICB9CisKKyNpZiBFTkFCTEUoU01P
T1RIX1NDUk9MTElORykKKyAgICBtX3Ntb290aEFuaW1hdGlvbi0+c2Nyb2xsKEhvcml6b250YWxT
Y3JvbGxiYXIsIFNjcm9sbEJ5UGl4ZWwsIDEsIC1kZWx0YVgpOworICAgIG1fc21vb3RoQW5pbWF0
aW9uLT5zY3JvbGwoVmVydGljYWxTY3JvbGxiYXIsIFNjcm9sbEJ5UGl4ZWwsIDEsIC1kZWx0YVkp
OworI2Vsc2UKKyAgICBhdXRvKiBzY3JvbGxMYXllciA9IHN0YXRpY19jYXN0PE5pY29zaWE6OlBs
YXRmb3JtTGF5ZXIqPihzY3JvbGxlZENvbnRlbnRzTGF5ZXIoKSk7CisgICAgQVNTRVJUKHNjcm9s
bExheWVyKTsKKyAgICBhdXRvJiBjb21wb3NpdGlvbkxheWVyID0gZG93bmNhc3Q8Tmljb3NpYTo6
Q29tcG9zaXRpb25MYXllcj4oKnNjcm9sbExheWVyKTsKKworICAgIGF1dG8gdXBkYXRlU2NvcGUg
PSBjb21wb3NpdGlvbkxheWVyLmNyZWF0ZVVwZGF0ZVNjb3BlKCk7CisgICAgc2Nyb2xsQnkoeyAt
ZGVsdGFYLCAtZGVsdGFZIH0pOwogI2VuZGlmCiAKLSAgICAvLyBGSVhNRTogVGhpcyBuZWVkcyB0
byByZXR1cm4gd2hldGhlciB0aGUgZXZlbnQgd2FzIGhhbmRsZWQuCiAgICAgcmV0dXJuIFdoZWVs
RXZlbnRIYW5kbGluZ1Jlc3VsdDo6aGFuZGxlZCgpOwogfQogCkBAIC0xNTUsNiArMjA5LDkgQEAg
dm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYTo6c3RvcFNjcm9sbEFu
aW1hdGlvbnMoKQogICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+c3RvcCgpOwogICAgIG1fa2luZXRp
Y0FuaW1hdGlvbi0+Y2xlYXJTY3JvbGxIaXN0b3J5KCk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoU01P
T1RIX1NDUk9MTElORykKKyAgICBtX3Ntb290aEFuaW1hdGlvbi0+c3RvcCgpOworI2VuZGlmCiB9
CiAKIEZsb2F0UG9pbnQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWE6OmFk
anVzdGVkU2Nyb2xsUG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIFNjcm9sbENs
YW1waW5nIGNsYW1waW5nKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYS5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRnJh
bWVTY3JvbGxpbmdOb2RlTmljb3NpYS5oCmluZGV4IDY0NzNhNGI1NmUxMDMxYjczNzk4YWNlMzg3
ZmFlYzhhODRkYzQ5Y2YuLjUwNTRiZWJmZWNmZGI2ZjliODE3ZjNjZWQzYmJkM2E5OTFjMzhmOTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xs
aW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNv
c2lhLmgKQEAgLTM5LDYgKzM5LDcgQEAgY2xhc3MgQ29tcG9zaXRpb25MYXllcjsKIH0KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU2Nyb2xsQW5pbWF0aW9uOwogY2xhc3MgU2Nyb2xsQW5p
bWF0aW9uS2luZXRpYzsKIAogY2xhc3MgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5p
Y29zaWEgZmluYWwgOiBwdWJsaWMgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZSB7CkBA
IC03Myw2ICs3NCw5IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKQog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRpb25LaW5ldGljPiBtX2tpbmV0aWNBbmlt
YXRpb247CiAjZW5kaWYKKyNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8U2Nyb2xsQW5pbWF0aW9uPiBtX3Ntb290aEFuaW1hdGlvbjsKKyNlbmRpZgogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmlj
b3NpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGlu
Z1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhLmNwcAppbmRleCBiNDViNmUxZjc2MzE4
YjI1NTllYTdlMDdmZTZkYjExNmNkZDUzNTg1Li4wNjlhZDRmOTIzZmNjNjU0MzBhOTRmYmNmNDU4
M2Y1ZWU4YmJmZDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9u
aWNvc2lhL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVPdmVy
Zmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhLmNwcApAQCAtMzUsNiArMzUsOSBAQAogI2lmIEVOQUJM
RShLSU5FVElDX1NDUk9MTElORykKICNpbmNsdWRlICJTY3JvbGxBbmltYXRpb25LaW5ldGljLmgi
CiAjZW5kaWYKKyNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKKyNpbmNsdWRlICJTY3JvbGxB
bmltYXRpb25TbW9vdGguaCIKKyNlbmRpZgogI2luY2x1ZGUgIlNjcm9sbGluZ1N0YXRlT3ZlcmZs
b3dTY3JvbGxpbmdOb2RlLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZS5oIgogCkBAIC01MCwx
MSArNTMsMTUgQEAgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWE6OlNj
cm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWMKIHsKICNpZiBFTkFCTEUoS0lORVRJ
Q19TQ1JPTExJTkcpCiAgICAgbV9raW5ldGljQW5pbWF0aW9uID0gbWFrZVVuaXF1ZTxTY3JvbGxB
bmltYXRpb25LaW5ldGljPigKLSAgICAgICAgW3RoaXNdKCkgLT4gU2Nyb2xsQW5pbWF0aW9uS2lu
ZXRpYzo6U2Nyb2xsRXh0ZW50cyB7Ci0gICAgICAgICAgICByZXR1cm4geyBJbnRQb2ludChtaW5p
bXVtU2Nyb2xsUG9zaXRpb24oKSksIEludFBvaW50KG1heGltdW1TY3JvbGxQb3NpdGlvbigpKSB9
OworICAgICAgICBbdGhpc10oKSAtPiBTY3JvbGxFeHRlbnRzIHsKKyAgICAgICAgICAgIHJldHVy
biB7IEludFBvaW50KG1pbmltdW1TY3JvbGxQb3NpdGlvbigpKSwgSW50UG9pbnQobWF4aW11bVNj
cm9sbFBvc2l0aW9uKCkpLCBJbnRTaXplKHNjcm9sbGFibGVBcmVhU2l6ZSgpKSB9OwogICAgICAg
ICB9LAogICAgICAgICBbdGhpc10oRmxvYXRQb2ludCYmIHBvc2l0aW9uKSB7Ci0gICAgICAgICAg
ICBhdXRvKiBzY3JvbGxMYXllciA9IHN0YXRpY19jYXN0PE5pY29zaWE6OlBsYXRmb3JtTGF5ZXIq
PihzY3JvbGxlZENvbnRlbnRzTGF5ZXIoKSk7CisjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcp
CisgICAgICAgICAgICBtX3Ntb290aEFuaW1hdGlvbi0+c2V0Q3VycmVudFBvc2l0aW9uKHBvc2l0
aW9uKTsKKyNlbmRpZgorCisgICAgICAgICAgICBhdXRvKiBzY3JvbGxMYXllciA9IHN0YXRpY19j
YXN0PE5pY29zaWE6OlBsYXRmb3JtTGF5ZXIqPihzY3JvbGxDb250YWluZXJMYXllcigpKTsKICAg
ICAgICAgICAgIEFTU0VSVChzY3JvbGxMYXllcik7CiAgICAgICAgICAgICBhdXRvJiBjb21wb3Np
dGlvbkxheWVyID0gZG93bmNhc3Q8Tmljb3NpYTo6Q29tcG9zaXRpb25MYXllcj4oKnNjcm9sbExh
eWVyKTsKIApAQCAtNjIsNiArNjksMjIgQEAgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5n
Tm9kZU5pY29zaWE6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWMKICAgICAg
ICAgICAgIHNjcm9sbFRvKHBvc2l0aW9uKTsKICAgICAgICAgfSk7CiAjZW5kaWYKKyNpZiBFTkFC
TEUoU01PT1RIX1NDUk9MTElORykKKyAgICBtX3Ntb290aEFuaW1hdGlvbiA9IG1ha2VVbmlxdWU8
U2Nyb2xsQW5pbWF0aW9uU21vb3RoPigKKyAgICAgICAgW3RoaXNdKCkgLT4gU2Nyb2xsRXh0ZW50
cyB7CisgICAgICAgICAgICByZXR1cm4geyBJbnRQb2ludChtaW5pbXVtU2Nyb2xsUG9zaXRpb24o
KSksIEludFBvaW50KG1heGltdW1TY3JvbGxQb3NpdGlvbigpKSwgSW50U2l6ZShzY3JvbGxhYmxl
QXJlYVNpemUoKSkgfTsKKyAgICAgICAgfSwKKyAgICAgICAgY3VycmVudFNjcm9sbFBvc2l0aW9u
KCksCisgICAgICAgIFt0aGlzXShGbG9hdFBvaW50JiYgcG9zaXRpb24pIHsKKyAgICAgICAgICAg
IGF1dG8qIHNjcm9sbExheWVyID0gc3RhdGljX2Nhc3Q8Tmljb3NpYTo6UGxhdGZvcm1MYXllcio+
KHNjcm9sbENvbnRhaW5lckxheWVyKCkpOworICAgICAgICAgICAgQVNTRVJUKHNjcm9sbExheWVy
KTsKKyAgICAgICAgICAgIGF1dG8mIGNvbXBvc2l0aW9uTGF5ZXIgPSBkb3duY2FzdDxOaWNvc2lh
OjpDb21wb3NpdGlvbkxheWVyPigqc2Nyb2xsTGF5ZXIpOworCisgICAgICAgICAgICBhdXRvIHVw
ZGF0ZVNjb3BlID0gY29tcG9zaXRpb25MYXllci5jcmVhdGVVcGRhdGVTY29wZSgpOworICAgICAg
ICAgICAgc2Nyb2xsVG8ocG9zaXRpb24pOworICAgICAgICB9LAorICAgICAgICBbXSB7IH0pOwor
I2VuZGlmCiB9CiAKIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhOjp+
U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWEoKSA9IGRlZmF1bHQ7CkBA
IC03Miw4ICs5NSwxMiBAQCB2b2lkIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVO
aWNvc2lhOjpjb21taXRTdGF0ZUFmdGVyQ2hpbGRyZW4oY29uc3QgUwogCiAgICAgY29uc3QgYXV0
byYgb3ZlcmZsb3dTdGF0ZU5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Ny
b2xsaW5nTm9kZT4oc3RhdGVOb2RlKTsKICAgICBpZiAob3ZlcmZsb3dTdGF0ZU5vZGUuaGFzQ2hh
bmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6UmVxdWVzdGVkU2Nyb2xs
UG9zaXRpb24pKSB7CisgICAgICAgIHN0b3BTY3JvbGxBbmltYXRpb25zKCk7CiAgICAgICAgIGNv
bnN0IGF1dG8mIHJlcXVlc3RlZFNjcm9sbERhdGEgPSBvdmVyZmxvd1N0YXRlTm9kZS5yZXF1ZXN0
ZWRTY3JvbGxEYXRhKCk7CiAgICAgICAgIHNjcm9sbFRvKHJlcXVlc3RlZFNjcm9sbERhdGEuc2Ny
b2xsUG9zaXRpb24sIHJlcXVlc3RlZFNjcm9sbERhdGEuc2Nyb2xsVHlwZSwgcmVxdWVzdGVkU2Ny
b2xsRGF0YS5jbGFtcGluZyk7CisjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCisgICAgICAg
IG1fc21vb3RoQW5pbWF0aW9uLT5zZXRDdXJyZW50UG9zaXRpb24oY3VycmVudFNjcm9sbFBvc2l0
aW9uKCkpOworI2VuZGlmCiAgICAgfQogfQogCkBAIC0xMDQsMzEgKzEzMSw2MCBAQCBXaGVlbEV2
ZW50SGFuZGxpbmdSZXN1bHQgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29z
aWE6OmhhbmRsZVdoZWVsRQogICAgIGlmICghY2FuSGFuZGxlV2hlZWxFdmVudCh3aGVlbEV2ZW50
KSkKICAgICAgICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6dW5oYW5kbGVkKCk7
CiAKLSAgICBpZiAod2hlZWxFdmVudC5kZWx0YVgoKSB8fCB3aGVlbEV2ZW50LmRlbHRhWSgpKSB7
Ci0gICAgICAgIGF1dG8qIHNjcm9sbExheWVyID0gc3RhdGljX2Nhc3Q8Tmljb3NpYTo6UGxhdGZv
cm1MYXllcio+KHNjcm9sbENvbnRhaW5lckxheWVyKCkpOwotICAgICAgICBBU1NFUlQoc2Nyb2xs
TGF5ZXIpOwotICAgICAgICBhdXRvJiBjb21wb3NpdGlvbkxheWVyID0gZG93bmNhc3Q8Tmljb3Np
YTo6Q29tcG9zaXRpb25MYXllcj4oKnNjcm9sbExheWVyKTsKLQotICAgICAgICBhdXRvIHVwZGF0
ZVNjb3BlID0gY29tcG9zaXRpb25MYXllci5jcmVhdGVVcGRhdGVTY29wZSgpOwotICAgICAgICBz
Y3JvbGxCeSh7IC13aGVlbEV2ZW50LmRlbHRhWCgpLCAtd2hlZWxFdmVudC5kZWx0YVkoKSB9KTsK
LSAgICB9Ci0KICNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpCiAgICAgbV9raW5ldGljQW5p
bWF0aW9uLT5hcHBlbmRUb1Njcm9sbEhpc3Rvcnkod2hlZWxFdmVudCk7Ci0jZW5kaWYKLQotI2lm
IEVOQUJMRShLSU5FVElDX1NDUk9MTElORykKICAgICBtX2tpbmV0aWNBbmltYXRpb24tPnN0b3Ao
KTsKICAgICBpZiAod2hlZWxFdmVudC5pc0VuZE9mTm9uTW9tZW50dW1TY3JvbGwoKSkgewogICAg
ICAgICBtX2tpbmV0aWNBbmltYXRpb24tPnN0YXJ0KGN1cnJlbnRTY3JvbGxQb3NpdGlvbigpLCBt
X2tpbmV0aWNBbmltYXRpb24tPmNvbXB1dGVWZWxvY2l0eSgpLCBjYW5IYXZlSG9yaXpvbnRhbFNj
cm9sbGJhcigpLCBjYW5IYXZlVmVydGljYWxTY3JvbGxiYXIoKSk7CiAgICAgICAgIG1fa2luZXRp
Y0FuaW1hdGlvbi0+Y2xlYXJTY3JvbGxIaXN0b3J5KCk7CisgICAgICAgIHJldHVybiBXaGVlbEV2
ZW50SGFuZGxpbmdSZXN1bHQ6OmhhbmRsZWQoKTsKICAgICB9CiAgICAgaWYgKHdoZWVsRXZlbnQu
aXNUcmFuc2l0aW9uaW5nVG9Nb21lbnR1bVNjcm9sbCgpKSB7CiAgICAgICAgIG1fa2luZXRpY0Fu
aW1hdGlvbi0+c3RhcnQoY3VycmVudFNjcm9sbFBvc2l0aW9uKCksIHdoZWVsRXZlbnQuc3dpcGVW
ZWxvY2l0eSgpLCBjYW5IYXZlSG9yaXpvbnRhbFNjcm9sbGJhcigpLCBjYW5IYXZlVmVydGljYWxT
Y3JvbGxiYXIoKSk7CiAgICAgICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+Y2xlYXJTY3JvbGxIaXN0
b3J5KCk7CisgICAgICAgIHJldHVybiBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQ6OmhhbmRsZWQo
KTsKICAgICB9CiAjZW5kaWYKIAorICAgIGZsb2F0IGRlbHRhWCA9IGNhbkhhdmVIb3Jpem9udGFs
U2Nyb2xsYmFyKCkgPyB3aGVlbEV2ZW50LmRlbHRhWCgpIDogMDsKKyAgICBmbG9hdCBkZWx0YVkg
PSBjYW5IYXZlVmVydGljYWxTY3JvbGxiYXIoKSA/IHdoZWVsRXZlbnQuZGVsdGFZKCkgOiAwOwor
ICAgIGlmICgoZGVsdGFYIDwgMCAmJiBjdXJyZW50U2Nyb2xsUG9zaXRpb24oKS54KCkgPj0gbWF4
aW11bVNjcm9sbFBvc2l0aW9uKCkueCgpKQorICAgICAgICB8fCAoZGVsdGFYID4gMCAmJiBjdXJy
ZW50U2Nyb2xsUG9zaXRpb24oKS54KCkgPD0gbWluaW11bVNjcm9sbFBvc2l0aW9uKCkueCgpKSkK
KyAgICAgICAgZGVsdGFYID0gMDsKKyAgICBpZiAoKGRlbHRhWSA8IDAgJiYgY3VycmVudFNjcm9s
bFBvc2l0aW9uKCkueSgpID49IG1heGltdW1TY3JvbGxQb3NpdGlvbigpLnkoKSkKKyAgICAgICAg
fHwgKGRlbHRhWSA+IDAgJiYgY3VycmVudFNjcm9sbFBvc2l0aW9uKCkueSgpIDw9IG1pbmltdW1T
Y3JvbGxQb3NpdGlvbigpLnkoKSkpCisgICAgICAgIGRlbHRhWSA9IDA7CisKKyAgICBpZiAoIWRl
bHRhWCAmJiAhZGVsdGFZKQorICAgICAgICByZXR1cm4gV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0
Ojp1bmhhbmRsZWQoKTsKKworICAgIGlmICh3aGVlbEV2ZW50LmdyYW51bGFyaXR5KCkgPT0gU2Ny
b2xsQnlQYWdlV2hlZWxFdmVudCkgeworICAgICAgICBpZiAoZGVsdGFYKSB7CisgICAgICAgICAg
ICBib29sIG5lZ2F0aXZlID0gZGVsdGFYIDwgMDsKKyAgICAgICAgICAgIGRlbHRhWCA9IFNjcm9s
bGJhcjo6cGFnZVN0ZXBEZWx0YShzY3JvbGxhYmxlQXJlYVNpemUoKS53aWR0aCgpKTsKKyAgICAg
ICAgICAgIGlmIChuZWdhdGl2ZSkKKyAgICAgICAgICAgICAgICBkZWx0YVggPSAtZGVsdGFYOwor
ICAgICAgICB9CisgICAgICAgIGlmIChkZWx0YVkpIHsKKyAgICAgICAgICAgIGJvb2wgbmVnYXRp
dmUgPSBkZWx0YVkgPCAwOworICAgICAgICAgICAgZGVsdGFZID0gU2Nyb2xsYmFyOjpwYWdlU3Rl
cERlbHRhKHNjcm9sbGFibGVBcmVhU2l6ZSgpLmhlaWdodCgpKTsKKyAgICAgICAgICAgIGlmIChu
ZWdhdGl2ZSkKKyAgICAgICAgICAgICAgICBkZWx0YVkgPSAtZGVsdGFZOworICAgICAgICB9Cisg
ICAgfQorCisjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCisgICAgbV9zbW9vdGhBbmltYXRp
b24tPnNjcm9sbChIb3Jpem9udGFsU2Nyb2xsYmFyLCBTY3JvbGxCeVBpeGVsLCAxLCAtZGVsdGFY
KTsKKyAgICBtX3Ntb290aEFuaW1hdGlvbi0+c2Nyb2xsKFZlcnRpY2FsU2Nyb2xsYmFyLCBTY3Jv
bGxCeVBpeGVsLCAxLCAtZGVsdGFZKTsKKyNlbHNlCisgICAgYXV0byogc2Nyb2xsTGF5ZXIgPSBz
dGF0aWNfY2FzdDxOaWNvc2lhOjpQbGF0Zm9ybUxheWVyKj4oc2Nyb2xsQ29udGFpbmVyTGF5ZXIo
KSk7CisgICAgQVNTRVJUKHNjcm9sbExheWVyKTsKKyAgICBhdXRvJiBjb21wb3NpdGlvbkxheWVy
ID0gZG93bmNhc3Q8Tmljb3NpYTo6Q29tcG9zaXRpb25MYXllcj4oKnNjcm9sbExheWVyKTsKKwor
ICAgIGF1dG8gdXBkYXRlU2NvcGUgPSBjb21wb3NpdGlvbkxheWVyLmNyZWF0ZVVwZGF0ZVNjb3Bl
KCk7CisgICAgc2Nyb2xsQnkoeyAtZGVsdGFYLCAtZGVsdGFZIH0pOworI2VuZGlmCisKICAgICBy
ZXR1cm4gV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0OjpoYW5kbGVkKCk7CiB9CiAKQEAgLTEzOCw2
ICsxOTQsOSBAQCB2b2lkIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lh
OjpzdG9wU2Nyb2xsQW5pbWF0aW9ucygpCiAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5zdG9wKCk7
CiAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5jbGVhclNjcm9sbEhpc3RvcnkoKTsKICNlbmRpZgor
I2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQorICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zdG9w
KCk7CisjZW5kaWYKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dT
Y3JvbGxpbmdOb2RlTmljb3NpYS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmlj
b3NpYS9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYS5oCmluZGV4IGFj
ZGM4MmFjMTU2Y2M3NjcwM2NlNGNkNDk5ZWVjYWRmYWZkNDk1ZGIuLjEzMmI0ODg3MWQ2Y2RiNjc0
NWM0YWMzNjE3YTRiYzFkZGVmNGI5MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29z
aWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGlu
Z1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNp
bmNsdWRlICJTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKK2NsYXNzIFNjcm9sbEFuaW1hdGlvbjsKIGNsYXNzIFNjcm9sbEFuaW1hdGlv
bktpbmV0aWM7CiAKIGNsYXNzIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNv
c2lhIGZpbmFsIDogcHVibGljIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGUgewpA
QCAtNTYsNiArNTcsOSBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsQW5pbWF0aW9uS2luZXRpYz4gbV9raW5ldGljQW5p
bWF0aW9uOwogI2VuZGlmCisjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCisgICAgc3RkOjp1
bmlxdWVfcHRyPFNjcm9sbEFuaW1hdGlvbj4gbV9zbW9vdGhBbmltYXRpb247CisjZW5kaWYKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbEFuaW1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
QW5pbWF0aW9uLmgKaW5kZXggZjA2N2IzY2MyZGRlNmIyNjNkZDJjMGUwY2NjZTAzYWQwZjY3MTg5
My4uOTlkODYxYmYzNTEzZDAzNzY2NDcwYTEwNzJiOThmZDAzNzBjYzgwNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uLmgKQEAgLTM0LDYgKzM0LDEyIEBAIGNsYXNz
IEZsb2F0UG9pbnQ7CiBjbGFzcyBTY3JvbGxhYmxlQXJlYTsKIGVudW0gY2xhc3MgU2Nyb2xsQ2xh
bXBpbmcgOiBib29sOwogCitzdHJ1Y3QgU2Nyb2xsRXh0ZW50cyB7CisgICAgU2Nyb2xsUG9zaXRp
b24gbWluaW11bVNjcm9sbFBvc2l0aW9uOworICAgIFNjcm9sbFBvc2l0aW9uIG1heGltdW1TY3Jv
bGxQb3NpdGlvbjsKKyAgICBJbnRTaXplIHZpc2libGVTaXplOworfTsKKwogY2xhc3MgU2Nyb2xs
QW5pbWF0aW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTQ0
LDE0ICs1MCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVmlzaWJsZUxlbmd0
aHMoKSB7IH07CiAgICAgdmlydHVhbCB2b2lkIHNldEN1cnJlbnRQb3NpdGlvbihjb25zdCBGbG9h
dFBvaW50JikgeyB9OwogICAgIHZpcnR1YWwgdm9pZCBzZXJ2aWNlQW5pbWF0aW9uKCkgeyB9Owot
Ci1wcm90ZWN0ZWQ6Ci0gICAgU2Nyb2xsQW5pbWF0aW9uKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxh
YmxlQXJlYSkKLSAgICAgICAgOiBtX3Njcm9sbGFibGVBcmVhKHNjcm9sbGFibGVBcmVhKQotICAg
IHsKLSAgICB9Ci0KLSAgICBTY3JvbGxhYmxlQXJlYSYgbV9zY3JvbGxhYmxlQXJlYTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbEFuaW1hdGlvbktpbmV0aWMuaAppbmRleCBjZjI1ZTc5OGNkNWIwNmIzOTUxYjAyYTY3MzAx
YTAyNTE5NjUxMzE1Li4zZTg5Y2I0OGMwNWM0YzJiZTc1ZTM3NjVjYzllZjgxNTMzZGNiN2JlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGlj
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5o
CkBAIC0zNSw4ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUGxhdGZvcm1X
aGVlbEV2ZW50OwogCi1jbGFzcyBTY3JvbGxBbmltYXRpb25LaW5ldGljIGZpbmFsIHsKLSAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK2NsYXNzIFNjcm9sbEFuaW1hdGlvbktpbmV0aWMgZmlu
YWwgOiBwdWJsaWMgU2Nyb2xsQW5pbWF0aW9uIHsKIHByaXZhdGU6CiAgICAgY2xhc3MgUGVyQXhp
c0RhdGEgewogICAgIHB1YmxpYzoKQEAgLTU5LDExICs1OCw2IEBAIHByaXZhdGU6CiAgICAgfTsK
IAogcHVibGljOgotICAgIHN0cnVjdCBTY3JvbGxFeHRlbnRzIHsKLSAgICAgICAgSW50UG9pbnQg
bWluaW11bVNjcm9sbFBvc2l0aW9uOwotICAgICAgICBJbnRQb2ludCBtYXhpbXVtU2Nyb2xsUG9z
aXRpb247Ci0gICAgfTsKLQogICAgIHVzaW5nIFNjcm9sbEV4dGVudHNDYWxsYmFjayA9IFdURjo6
RnVuY3Rpb248U2Nyb2xsRXh0ZW50cyh2b2lkKT47CiAgICAgdXNpbmcgTm90aWZ5UG9zaXRpb25D
aGFuZ2VkQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoRmxvYXRQb2ludCYmKT47CiAKQEAg
LTc1LDcgKzY5LDcgQEAgcHVibGljOgogICAgIEZsb2F0UG9pbnQgY29tcHV0ZVZlbG9jaXR5KCk7
CiAKICAgICB2b2lkIHN0YXJ0KGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxQb3NpdGlvbiwgY29u
c3QgRmxvYXRQb2ludCYgdmVsb2NpdHksIGJvb2wgbWF5SFNjcm9sbCwgYm9vbCBtYXlWU2Nyb2xs
KTsKLSAgICB2b2lkIHN0b3AoKTsKKyAgICB2b2lkIHN0b3AoKSBvdmVycmlkZTsKIAogcHJpdmF0
ZToKICAgICB2b2lkIGFuaW1hdGlvblRpbWVyRmlyZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguY3BwCmluZGV4IDJjYTU3OGEzMGYxYjMx
YTI5N2RjOTgxZGZlNTJjYTMwNjcyZTdhN2IuLjdhZjJmNjIxZGUwODA5NDk0YzcyMmNhZTZmMDE1
MGU1NzgwZmJmNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFu
aW1hdGlvblNtb290aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5p
bWF0aW9uU21vb3RoLmNwcApAQCAtMzEsNiArMzEsMTAgQEAKICNpbmNsdWRlICJGbG9hdFBvaW50
LmgiCiAjaW5jbHVkZSAiU2Nyb2xsYWJsZUFyZWEuaCIKIAorI2lmIFVTRShHTElCKQorI2luY2x1
ZGUgPHd0Zi9nbGliL1J1bkxvb3BTb3VyY2VQcmlvcml0eS5oPgorI2VuZGlmCisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IGRvdWJsZSBmcmFtZVJhdGUgPSA2MDsKQEAgLTM4
LDI1ICs0Miw0NyBAQCBzdGF0aWMgY29uc3QgU2Vjb25kcyB0aWNrVGltZSA9IDFfcyAvIGZyYW1l
UmF0ZTsKIHN0YXRpYyBjb25zdCBTZWNvbmRzIG1pbmltdW1UaW1lckludGVydmFsIHsgMV9tcyB9
Owogc3RhdGljIGNvbnN0IGRvdWJsZSBzbW9vdGhGYWN0b3JGb3JQcm9ncmFtbWF0aWNTY3JvbGwg
PSA1OwogCi1TY3JvbGxBbmltYXRpb25TbW9vdGg6OlNjcm9sbEFuaW1hdGlvblNtb290aChTY3Jv
bGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEsIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBX
VEY6OkZ1bmN0aW9uPHZvaWQgKEZsb2F0UG9pbnQmJik+JiYgbm90aWZ5UG9zaXRpb25DaGFuZ2Vk
RnVuY3Rpb24pCi0gICAgOiBTY3JvbGxBbmltYXRpb24oc2Nyb2xsYWJsZUFyZWEpCitTY3JvbGxB
bmltYXRpb25TbW9vdGg6OlBlckF4aXNEYXRhOjpQZXJBeGlzRGF0YShTY3JvbGxiYXJPcmllbnRh
dGlvbiBvcmllbnRhdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIFNjcm9sbEV4dGVu
dHNDYWxsYmFjayYgZXh0ZW50c0NhbGxiYWNrKQoreworICAgIGF1dG8gZXh0ZW50cyA9IGV4dGVu
dHNDYWxsYmFjaygpOworICAgIHN3aXRjaCAob3JpZW50YXRpb24pIHsKKyAgICBjYXNlIEhvcml6
b250YWxTY3JvbGxiYXI6CisgICAgICAgIGN1cnJlbnRQb3NpdGlvbiA9IHBvc2l0aW9uLngoKTsK
KyAgICAgICAgdmlzaWJsZUxlbmd0aCA9IGV4dGVudHMudmlzaWJsZVNpemUud2lkdGgoKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBWZXJ0aWNhbFNjcm9sbGJhcjoKKyAgICAgICAgY3VycmVu
dFBvc2l0aW9uID0gcG9zaXRpb24ueSgpOworICAgICAgICB2aXNpYmxlTGVuZ3RoID0gZXh0ZW50
cy52aXNpYmxlU2l6ZS5oZWlnaHQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgZGVz
aXJlZFBvc2l0aW9uID0gY3VycmVudFBvc2l0aW9uOworfQorCitTY3JvbGxBbmltYXRpb25TbW9v
dGg6OlNjcm9sbEFuaW1hdGlvblNtb290aChTY3JvbGxFeHRlbnRzQ2FsbGJhY2smJiBzY3JvbGxF
eHRlbnRzRnVuY3Rpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBOb3RpZnlQb3NpdGlv
bkNoYW5nZWRDYWxsYmFjayYmIG5vdGlmeVBvc2l0aW9uQ2hhbmdlZEZ1bmN0aW9uLCBOb3RpZnlB
bmltYXRpb25TdG9wcGVkQ2FsbGJhY2smJiBub3RpZnlBbmltYXRpb25TdG9wcGVkRnVuY3Rpb24p
CisgICAgOiBtX3Njcm9sbEV4dGVudHNGdW5jdGlvbihXVEZNb3ZlKHNjcm9sbEV4dGVudHNGdW5j
dGlvbikpCiAgICAgLCBtX25vdGlmeVBvc2l0aW9uQ2hhbmdlZEZ1bmN0aW9uKFdURk1vdmUobm90
aWZ5UG9zaXRpb25DaGFuZ2VkRnVuY3Rpb24pKQotICAgICwgbV9ob3Jpem9udGFsRGF0YShwb3Np
dGlvbi54KCksIHNjcm9sbGFibGVBcmVhLnZpc2libGVXaWR0aCgpKQotICAgICwgbV92ZXJ0aWNh
bERhdGEocG9zaXRpb24ueSgpLCBzY3JvbGxhYmxlQXJlYS52aXNpYmxlSGVpZ2h0KCkpCi0gICAg
LCBtX2FuaW1hdGlvblRpbWVyKCp0aGlzLCAmU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjphbmltYXRp
b25UaW1lckZpcmVkKQorICAgICwgbV9ub3RpZnlBbmltYXRpb25TdG9wcGVkRnVuY3Rpb24oV1RG
TW92ZShub3RpZnlBbmltYXRpb25TdG9wcGVkRnVuY3Rpb24pKQorICAgICwgbV9ob3Jpem9udGFs
RGF0YShIb3Jpem9udGFsU2Nyb2xsYmFyLCBwb3NpdGlvbiwgbV9zY3JvbGxFeHRlbnRzRnVuY3Rp
b24pCisgICAgLCBtX3ZlcnRpY2FsRGF0YShWZXJ0aWNhbFNjcm9sbGJhciwgcG9zaXRpb24sIG1f
c2Nyb2xsRXh0ZW50c0Z1bmN0aW9uKQorICAgICwgbV9hbmltYXRpb25UaW1lcihSdW5Mb29wOjpj
dXJyZW50KCksIHRoaXMsICZTY3JvbGxBbmltYXRpb25TbW9vdGg6OmFuaW1hdGlvblRpbWVyRmly
ZWQpCiB7CisjaWYgVVNFKEdMSUIpCisgICAgbV9hbmltYXRpb25UaW1lci5zZXRQcmlvcml0eShX
VEY6OlJ1bkxvb3BTb3VyY2VQcmlvcml0eTo6RGlzcGxheVJlZnJlc2hNb25pdG9yVGltZXIpOwor
I2VuZGlmCiB9CiAKIGJvb2wgU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpzY3JvbGwoU2Nyb2xsYmFy
T3JpZW50YXRpb24gb3JpZW50YXRpb24sIFNjcm9sbEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBm
bG9hdCBzdGVwLCBmbG9hdCBtdWx0aXBsaWVyKQogewogICAgIGZsb2F0IG1pblNjcm9sbFBvc2l0
aW9uOwogICAgIGZsb2F0IG1heFNjcm9sbFBvc2l0aW9uOworICAgIGF1dG8gZXh0ZW50cyA9IG1f
c2Nyb2xsRXh0ZW50c0Z1bmN0aW9uKCk7CiAgICAgaWYgKG9yaWVudGF0aW9uID09IEhvcml6b250
YWxTY3JvbGxiYXIpIHsKLSAgICAgICAgbWluU2Nyb2xsUG9zaXRpb24gPSBtX3Njcm9sbGFibGVB
cmVhLm1pbmltdW1TY3JvbGxQb3NpdGlvbigpLngoKTsKLSAgICAgICAgbWF4U2Nyb2xsUG9zaXRp
b24gPSBtX3Njcm9sbGFibGVBcmVhLm1heGltdW1TY3JvbGxQb3NpdGlvbigpLngoKTsKKyAgICAg
ICAgbWluU2Nyb2xsUG9zaXRpb24gPSBleHRlbnRzLm1pbmltdW1TY3JvbGxQb3NpdGlvbi54KCk7
CisgICAgICAgIG1heFNjcm9sbFBvc2l0aW9uID0gZXh0ZW50cy5tYXhpbXVtU2Nyb2xsUG9zaXRp
b24ueCgpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1pblNjcm9sbFBvc2l0aW9uID0gbV9zY3Jv
bGxhYmxlQXJlYS5taW5pbXVtU2Nyb2xsUG9zaXRpb24oKS55KCk7Ci0gICAgICAgIG1heFNjcm9s
bFBvc2l0aW9uID0gbV9zY3JvbGxhYmxlQXJlYS5tYXhpbXVtU2Nyb2xsUG9zaXRpb24oKS55KCk7
CisgICAgICAgIG1pblNjcm9sbFBvc2l0aW9uID0gZXh0ZW50cy5taW5pbXVtU2Nyb2xsUG9zaXRp
b24ueSgpOworICAgICAgICBtYXhTY3JvbGxQb3NpdGlvbiA9IGV4dGVudHMubWF4aW11bVNjcm9s
bFBvc2l0aW9uLnkoKTsKICAgICB9CiAgICAgYm9vbCBuZWVkVG9TY3JvbGwgPSB1cGRhdGVQZXJB
eGlzRGF0YShvcmllbnRhdGlvbiA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gbV9ob3Jpem9udGFs
RGF0YSA6IG1fdmVydGljYWxEYXRhLCBncmFudWxhcml0eSwgc3RlcCAqIG11bHRpcGxpZXIsIG1p
blNjcm9sbFBvc2l0aW9uLCBtYXhTY3JvbGxQb3NpdGlvbik7CiAgICAgaWYgKG5lZWRUb1Njcm9s
bCAmJiAhYW5pbWF0aW9uVGltZXJBY3RpdmUoKSkgewpAQCAtNjksOSArOTUsMTAgQEAgYm9vbCBT
Y3JvbGxBbmltYXRpb25TbW9vdGg6OnNjcm9sbChTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRh
dGlvbiwgU2Nyb2xsR3JhbnUKIHZvaWQgU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpzY3JvbGwoY29u
c3QgRmxvYXRQb2ludCYgcG9zaXRpb24pCiB7CiAgICAgU2Nyb2xsR3JhbnVsYXJpdHkgZ3JhbnVs
YXJpdHkgPSBTY3JvbGxCeVBhZ2U7Ci0gICAgYm9vbCBuZWVkVG9TY3JvbGwgPSB1cGRhdGVQZXJB
eGlzRGF0YShtX2hvcml6b250YWxEYXRhLCBncmFudWxhcml0eSwgcG9zaXRpb24ueCgpIC0gbV9o
b3Jpem9udGFsRGF0YS5jdXJyZW50UG9zaXRpb24sIG1fc2Nyb2xsYWJsZUFyZWEubWluaW11bVNj
cm9sbFBvc2l0aW9uKCkueCgpLCBtX3Njcm9sbGFibGVBcmVhLm1heGltdW1TY3JvbGxQb3NpdGlv
bigpLngoKSwgc21vb3RoRmFjdG9yRm9yUHJvZ3JhbW1hdGljU2Nyb2xsKTsKKyAgICBhdXRvIGV4
dGVudHMgPSBtX3Njcm9sbEV4dGVudHNGdW5jdGlvbigpOworICAgIGJvb2wgbmVlZFRvU2Nyb2xs
ID0gdXBkYXRlUGVyQXhpc0RhdGEobV9ob3Jpem9udGFsRGF0YSwgZ3JhbnVsYXJpdHksIHBvc2l0
aW9uLngoKSAtIG1faG9yaXpvbnRhbERhdGEuY3VycmVudFBvc2l0aW9uLCBleHRlbnRzLm1pbmlt
dW1TY3JvbGxQb3NpdGlvbi54KCksIGV4dGVudHMubWF4aW11bVNjcm9sbFBvc2l0aW9uLngoKSwg
c21vb3RoRmFjdG9yRm9yUHJvZ3JhbW1hdGljU2Nyb2xsKTsKICAgICBuZWVkVG9TY3JvbGwgfD0K
LSAgICAgICAgdXBkYXRlUGVyQXhpc0RhdGEobV92ZXJ0aWNhbERhdGEsIGdyYW51bGFyaXR5LCBw
b3NpdGlvbi55KCkgLSBtX3ZlcnRpY2FsRGF0YS5jdXJyZW50UG9zaXRpb24sIG1fc2Nyb2xsYWJs
ZUFyZWEubWluaW11bVNjcm9sbFBvc2l0aW9uKCkueSgpLCBtX3Njcm9sbGFibGVBcmVhLm1heGlt
dW1TY3JvbGxQb3NpdGlvbigpLnkoKSwgc21vb3RoRmFjdG9yRm9yUHJvZ3JhbW1hdGljU2Nyb2xs
KTsKKyAgICAgICAgdXBkYXRlUGVyQXhpc0RhdGEobV92ZXJ0aWNhbERhdGEsIGdyYW51bGFyaXR5
LCBwb3NpdGlvbi55KCkgLSBtX3ZlcnRpY2FsRGF0YS5jdXJyZW50UG9zaXRpb24sIGV4dGVudHMu
bWluaW11bVNjcm9sbFBvc2l0aW9uLnkoKSwgZXh0ZW50cy5tYXhpbXVtU2Nyb2xsUG9zaXRpb24u
eSgpLCBzbW9vdGhGYWN0b3JGb3JQcm9ncmFtbWF0aWNTY3JvbGwpOwogICAgIGlmIChuZWVkVG9T
Y3JvbGwgJiYgIWFuaW1hdGlvblRpbWVyQWN0aXZlKCkpIHsKICAgICAgICAgbV9zdGFydFRpbWUg
PSBtX2hvcml6b250YWxEYXRhLnN0YXJ0VGltZTsKICAgICAgICAgYW5pbWF0aW9uVGltZXJGaXJl
ZCgpOwpAQCAtODEsMTMgKzEwOCwxNCBAQCB2b2lkIFNjcm9sbEFuaW1hdGlvblNtb290aDo6c2Ny
b2xsKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uKQogdm9pZCBTY3JvbGxBbmltYXRpb25TbW9v
dGg6OnN0b3AoKQogewogICAgIG1fYW5pbWF0aW9uVGltZXIuc3RvcCgpOwotICAgIG1fc2Nyb2xs
YWJsZUFyZWEuc2V0U2Nyb2xsQmVoYXZpb3JTdGF0dXMoU2Nyb2xsQmVoYXZpb3JTdGF0dXM6Ok5v
dEluQW5pbWF0aW9uKTsKKyAgICBtX25vdGlmeUFuaW1hdGlvblN0b3BwZWRGdW5jdGlvbigpOwog
fQogCiB2b2lkIFNjcm9sbEFuaW1hdGlvblNtb290aDo6dXBkYXRlVmlzaWJsZUxlbmd0aHMoKQog
ewotICAgIG1faG9yaXpvbnRhbERhdGEudmlzaWJsZUxlbmd0aCA9IG1fc2Nyb2xsYWJsZUFyZWEu
dmlzaWJsZVdpZHRoKCk7Ci0gICAgbV92ZXJ0aWNhbERhdGEudmlzaWJsZUxlbmd0aCA9IG1fc2Ny
b2xsYWJsZUFyZWEudmlzaWJsZUhlaWdodCgpOworICAgIGF1dG8gZXh0ZW50cyA9IG1fc2Nyb2xs
RXh0ZW50c0Z1bmN0aW9uKCk7CisgICAgbV9ob3Jpem9udGFsRGF0YS52aXNpYmxlTGVuZ3RoID0g
ZXh0ZW50cy52aXNpYmxlU2l6ZS53aWR0aCgpOworICAgIG1fdmVydGljYWxEYXRhLnZpc2libGVM
ZW5ndGggPSBleHRlbnRzLnZpc2libGVTaXplLmhlaWdodCgpOwogfQogCiB2b2lkIFNjcm9sbEFu
aW1hdGlvblNtb290aDo6c2V0Q3VycmVudFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0
aW9uKQpAQCAtNDExLDcgKzQzOSw3IEBAIHZvaWQgU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjphbmlt
YXRpb25UaW1lckZpcmVkKCkKICAgICBpZiAoY29udGludWVBbmltYXRpb24pCiAgICAgICAgIHN0
YXJ0TmV4dFRpbWVyKHN0ZDo6bWF4KG1pbmltdW1UaW1lckludGVydmFsLCBkZWx0YVRvTmV4dEZy
YW1lKSk7CiAgICAgZWxzZQotICAgICAgICBtX3Njcm9sbGFibGVBcmVhLnNldFNjcm9sbEJlaGF2
aW9yU3RhdHVzKFNjcm9sbEJlaGF2aW9yU3RhdHVzOjpOb3RJbkFuaW1hdGlvbik7CisgICAgICAg
IG1fbm90aWZ5QW5pbWF0aW9uU3RvcHBlZEZ1bmN0aW9uKCk7CiAKICAgICBtX25vdGlmeVBvc2l0
aW9uQ2hhbmdlZEZ1bmN0aW9uKEZsb2F0UG9pbnQobV9ob3Jpem9udGFsRGF0YS5jdXJyZW50UG9z
aXRpb24sIG1fdmVydGljYWxEYXRhLmN1cnJlbnRQb3NpdGlvbikpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguaAppbmRleCA4OWVlZmM4ZmRk
OWUzZTIzODI3NWJkZDQzYzMxMDE5NzcyZTY1NTlhLi5kNDEwYWRjZTYzZGNkNDcyMmZkZWMxM2E0
OWQzYTNjOGI2ZTExMGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxBbmltYXRpb25TbW9vdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxB
bmltYXRpb25TbW9vdGguaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaW5jbHVkZSAiU2Nyb2xsQW5p
bWF0aW9uLmgiCiAKLSNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzcsNyArMzcsMTEgQEAgZW51bSBjbGFzcyBT
Y3JvbGxDbGFtcGluZyA6IGJvb2w7CiAKIGNsYXNzIFNjcm9sbEFuaW1hdGlvblNtb290aCBmaW5h
bDogcHVibGljIFNjcm9sbEFuaW1hdGlvbiB7CiBwdWJsaWM6Ci0gICAgU2Nyb2xsQW5pbWF0aW9u
U21vb3RoKFNjcm9sbGFibGVBcmVhJiwgY29uc3QgRmxvYXRQb2ludCYsIFdURjo6RnVuY3Rpb248
dm9pZCAoRmxvYXRQb2ludCYmKT4mJiBub3RpZnlQb3NpdGlvbkNoYW5nZWRGdW5jdGlvbik7Cisg
ICAgdXNpbmcgU2Nyb2xsRXh0ZW50c0NhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjxTY3JvbGxFeHRl
bnRzKHZvaWQpPjsKKyAgICB1c2luZyBOb3RpZnlQb3NpdGlvbkNoYW5nZWRDYWxsYmFjayA9IFdU
Rjo6RnVuY3Rpb248dm9pZChGbG9hdFBvaW50JiYpPjsKKyAgICB1c2luZyBOb3RpZnlBbmltYXRp
b25TdG9wcGVkQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQodm9pZCk+OworCisgICAgU2Ny
b2xsQW5pbWF0aW9uU21vb3RoKFNjcm9sbEV4dGVudHNDYWxsYmFjayYmLCBjb25zdCBGbG9hdFBv
aW50JiBwb3NpdGlvbiwgTm90aWZ5UG9zaXRpb25DaGFuZ2VkQ2FsbGJhY2smJiwgTm90aWZ5QW5p
bWF0aW9uU3RvcHBlZENhbGxiYWNrJiYpOwogICAgIHZpcnR1YWwgflNjcm9sbEFuaW1hdGlvblNt
b290aCgpOwogCiAgICAgZW51bSBjbGFzcyBDdXJ2ZSB7CkBAIC01OCw2ICs2Miw4IEBAIHByaXZh
dGU6CiAgICAgc3RydWN0IFBlckF4aXNEYXRhIHsKICAgICAgICAgUGVyQXhpc0RhdGEoKSA9IGRl
bGV0ZTsKIAorICAgICAgICBQZXJBeGlzRGF0YShTY3JvbGxiYXJPcmllbnRhdGlvbiwgY29uc3Qg
RmxvYXRQb2ludCYgcG9zaXRpb24sIFNjcm9sbEV4dGVudHNDYWxsYmFjayYpOworCiAgICAgICAg
IFBlckF4aXNEYXRhKGZsb2F0IHBvc2l0aW9uLCBpbnQgbGVuZ3RoKQogICAgICAgICAgICAgOiBj
dXJyZW50UG9zaXRpb24ocG9zaXRpb24pCiAgICAgICAgICAgICAsIGRlc2lyZWRQb3NpdGlvbihw
b3NpdGlvbikKQEAgLTk3LDEzICsxMDMsMTUgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFuaW1hdGlv
blRpbWVyRmlyZWQoKTsKICAgICBib29sIGFuaW1hdGlvblRpbWVyQWN0aXZlKCkgY29uc3Q7CiAK
LSAgICBXVEY6OkZ1bmN0aW9uPHZvaWQgKEZsb2F0UG9pbnQmJik+IG1fbm90aWZ5UG9zaXRpb25D
aGFuZ2VkRnVuY3Rpb247CisgICAgU2Nyb2xsRXh0ZW50c0NhbGxiYWNrIG1fc2Nyb2xsRXh0ZW50
c0Z1bmN0aW9uOworICAgIE5vdGlmeVBvc2l0aW9uQ2hhbmdlZENhbGxiYWNrIG1fbm90aWZ5UG9z
aXRpb25DaGFuZ2VkRnVuY3Rpb247CisgICAgTm90aWZ5QW5pbWF0aW9uU3RvcHBlZENhbGxiYWNr
IG1fbm90aWZ5QW5pbWF0aW9uU3RvcHBlZEZ1bmN0aW9uOwogCiAgICAgUGVyQXhpc0RhdGEgbV9o
b3Jpem9udGFsRGF0YTsKICAgICBQZXJBeGlzRGF0YSBtX3ZlcnRpY2FsRGF0YTsKIAogICAgIE1v
bm90b25pY1RpbWUgbV9zdGFydFRpbWU7Ci0gICAgVGltZXIgbV9hbmltYXRpb25UaW1lcjsKKyAg
ICBSdW5Mb29wOjpUaW1lcjxTY3JvbGxBbmltYXRpb25TbW9vdGg+IG1fYW5pbWF0aW9uVGltZXI7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxBbmltYXRvci5jcHAKaW5kZXggZWUxYjI2ZjZhMjc3NjU1ZDFhZmJiMTFiMzk0NmZlZDFk
ZWIwY2VjMy4uNGJlMTYzMWExYTA4OThlM2NjMDEyZjc1Mjg0MzhlMTBmYmMxZWI1MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcApAQCAtNTcsMTEgKzU3LDE5
IEBAIFNjcm9sbEFuaW1hdG9yOjpTY3JvbGxBbmltYXRvcihTY3JvbGxhYmxlQXJlYSYgc2Nyb2xs
YWJsZUFyZWEpCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkgfHwgRU5BQkxFKFJVQkJFUl9C
QU5ESU5HKQogICAgICwgbV9zY3JvbGxDb250cm9sbGVyKCp0aGlzKQogI2VuZGlmCi0gICAgLCBt
X2FuaW1hdGlvblByb2dyYW1tYXRpY1Njcm9sbChtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlvblNt
b290aD4oc2Nyb2xsYWJsZUFyZWEsIG1fY3VycmVudFBvc2l0aW9uLCBbdGhpc10oRmxvYXRQb2lu
dCYmIHBvc2l0aW9uKSB7Ci0gICAgICAgIEZsb2F0U2l6ZSBkZWx0YSA9IHBvc2l0aW9uIC0gbV9j
dXJyZW50UG9zaXRpb247Ci0gICAgICAgIG1fY3VycmVudFBvc2l0aW9uID0gV1RGTW92ZShwb3Np
dGlvbik7Ci0gICAgICAgIG5vdGlmeVBvc2l0aW9uQ2hhbmdlZChkZWx0YSk7Ci0gICAgfSkpCisg
ICAgLCBtX2FuaW1hdGlvblByb2dyYW1tYXRpY1Njcm9sbChtYWtlVW5pcXVlPFNjcm9sbEFuaW1h
dGlvblNtb290aD4oCisgICAgICAgIFt0aGlzXSgpIC0+IFNjcm9sbEV4dGVudHMgeworICAgICAg
ICAgICAgcmV0dXJuIHsgbV9zY3JvbGxhYmxlQXJlYS5taW5pbXVtU2Nyb2xsUG9zaXRpb24oKSwg
bV9zY3JvbGxhYmxlQXJlYS5tYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSwgbV9zY3JvbGxhYmxlQXJl
YS52aXNpYmxlU2l6ZSgpIH07CisgICAgICAgIH0sCisgICAgICAgIG1fY3VycmVudFBvc2l0aW9u
LAorICAgICAgICBbdGhpc10oRmxvYXRQb2ludCYmIHBvc2l0aW9uKSB7CisgICAgICAgICAgICBG
bG9hdFNpemUgZGVsdGEgPSBwb3NpdGlvbiAtIG1fY3VycmVudFBvc2l0aW9uOworICAgICAgICAg
ICAgbV9jdXJyZW50UG9zaXRpb24gPSBXVEZNb3ZlKHBvc2l0aW9uKTsKKyAgICAgICAgICAgIG5v
dGlmeVBvc2l0aW9uQ2hhbmdlZChkZWx0YSk7CisgICAgICAgIH0sCisgICAgICAgIFt0aGlzXSB7
CisgICAgICAgICAgICBtX3Njcm9sbGFibGVBcmVhLnNldFNjcm9sbEJlaGF2aW9yU3RhdHVzKFNj
cm9sbEJlaGF2aW9yU3RhdHVzOjpOb3RJbkFuaW1hdGlvbik7CisgICAgICAgIH0pKQogewogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1h
dG9yR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFu
aW1hdG9yR2VuZXJpYy5jcHAKaW5kZXggNmEzMzUwZTNkMTZlZDk1NmU3MmJhOGNkODgzZTVlM2Jh
N2UwZTQ5OS4uYzA0YTQ4MGQ1NTk2YzcxY2NmMmE1NGEyOTVmOTllNmY5OTU4OGExZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVy
aWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0
b3JHZW5lcmljLmNwcApAQCAtNTEsOCArNTEsOCBAQCBTY3JvbGxBbmltYXRvckdlbmVyaWM6OlNj
cm9sbEFuaW1hdG9yR2VuZXJpYyhTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiAgICAg
LCBtX292ZXJsYXlTY3JvbGxiYXJBbmltYXRpb25UaW1lcigqdGhpcywgJlNjcm9sbEFuaW1hdG9y
R2VuZXJpYzo6b3ZlcmxheVNjcm9sbGJhckFuaW1hdGlvblRpbWVyRmlyZWQpCiB7CiAgICAgbV9r
aW5ldGljQW5pbWF0aW9uID0gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRpb25LaW5ldGljPigKLSAg
ICAgICAgW3RoaXNdKCkgLT4gU2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6U2Nyb2xsRXh0ZW50cyB7
Ci0gICAgICAgICAgICByZXR1cm4geyBtX3Njcm9sbGFibGVBcmVhLm1pbmltdW1TY3JvbGxQb3Np
dGlvbigpLCBtX3Njcm9sbGFibGVBcmVhLm1heGltdW1TY3JvbGxQb3NpdGlvbigpIH07CisgICAg
ICAgIFt0aGlzXSgpIC0+IFNjcm9sbEV4dGVudHMgeworICAgICAgICAgICAgcmV0dXJuIHsgbV9z
Y3JvbGxhYmxlQXJlYS5taW5pbXVtU2Nyb2xsUG9zaXRpb24oKSwgbV9zY3JvbGxhYmxlQXJlYS5t
YXhpbXVtU2Nyb2xsUG9zaXRpb24oKSwgbV9zY3JvbGxhYmxlQXJlYS52aXNpYmxlU2l6ZSgpIH07
CiAgICAgICAgIH0sCiAgICAgICAgIFt0aGlzXShGbG9hdFBvaW50JiYgcG9zaXRpb24pIHsKICNp
ZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKQEAgLTc2LDkgKzc2LDE3IEBAIHZvaWQgU2Nyb2xs
QW5pbWF0b3JHZW5lcmljOjplbnN1cmVTbW9vdGhTY3JvbGxpbmdBbmltYXRpb24oKQogICAgIGlm
IChtX3Ntb290aEFuaW1hdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9zbW9vdGhBbmlt
YXRpb24gPSBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlvblNtb290aD4obV9zY3JvbGxhYmxlQXJl
YSwgbV9jdXJyZW50UG9zaXRpb24sIFt0aGlzXShGbG9hdFBvaW50JiYgcG9zaXRpb24pIHsKLSAg
ICAgICAgdXBkYXRlUG9zaXRpb24oV1RGTW92ZShwb3NpdGlvbikpOwotICAgIH0pOworICAgIG1f
c21vb3RoQW5pbWF0aW9uID0gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRpb25TbW9vdGg+KAorICAg
ICAgICBbdGhpc10oKSAtPiBTY3JvbGxFeHRlbnRzIHsKKyAgICAgICAgICAgIHJldHVybiB7IG1f
c2Nyb2xsYWJsZUFyZWEubWluaW11bVNjcm9sbFBvc2l0aW9uKCksIG1fc2Nyb2xsYWJsZUFyZWEu
bWF4aW11bVNjcm9sbFBvc2l0aW9uKCksIG1fc2Nyb2xsYWJsZUFyZWEudmlzaWJsZVNpemUoKSB9
OworICAgICAgICB9LAorICAgICAgICBtX2N1cnJlbnRQb3NpdGlvbiwKKyAgICAgICAgW3RoaXNd
KEZsb2F0UG9pbnQmJiBwb3NpdGlvbikgeworICAgICAgICAgICAgdXBkYXRlUG9zaXRpb24oV1RG
TW92ZShwb3NpdGlvbikpOworICAgICAgICB9LAorICAgICAgICBbdGhpc10geworICAgICAgICAg
ICAgbV9zY3JvbGxhYmxlQXJlYS5zZXRTY3JvbGxCZWhhdmlvclN0YXR1cyhTY3JvbGxCZWhhdmlv
clN0YXR1czo6Tm90SW5BbmltYXRpb24pOworICAgICAgICB9KTsKIH0KICNlbmRpZgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407096</attachid>
            <date>2020-08-24 06:28:20 -0700</date>
            <delta_ts>2020-09-01 02:00:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210382-20200824142818.patch</filename>
            <type>text/plain</type>
            <size>33683</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1ODQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDIyZGExZTFiZDk2NGIx
MmNhYjhiMGUxNDEwNTZhZTNmOTcyOWI1OS4uZmQzM2E0ODljNjVlY2MwMWJlMjc0NmZjYmRlY2Fi
MmU4NWVjZmRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDIwLTA4LTE5ICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIEFkZCBzdXBw
b3J0IGZvciBzbW9vdGggc2Nyb2xsaW5nIGFuaW1hdGlvbiB3aXRoIGFzeW5jIHNjcm9sbGluZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMzgyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyByZW1v
dmVzIHRoZSBkZXBlbmRlbmN5IG9uIFNjcm9sbGFibGVBcmVhIGZyb20KKyAgICAgICAgU2Nyb2xs
QW5pbWF0aW9uU21vb3RoLCB3aGljaCBhbGxvd3MgaXRzIHVzZSBhcyBhIHV0aWxpdHkgY2xhc3Mg
Zm9yCisgICAgICAgIHNtb290aCBzY3JvbGxpbmcuIFRoaXMgY2xhc3MgaXMgdGhlbiB1c2VkIGlu
IHRoZSBOaWNvc2lhIGFzeW5jIGxheWVyCisgICAgICAgIGNvbXBvc2l0aW9uIHNjcm9sbGluZyBj
b2RlIHRvIHByb3ZpZGUgc21vb3RoIHNjcm9sbGluZywgd2hlbiB0aGUKKyAgICAgICAgZmVhdHVy
ZSBpcyBlbmFibGVkLiBUaGlzIG1pcnJvcnMgdGhlIHdvcmsgZG9uZSBpbiBidWcgMjA5MjMwIGZv
cgorICAgICAgICBraW5ldGljIHNjcm9sbGluZy4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGVu
YWJsaW5nIGV4aXN0aW5nIGZ1bmN0aW9uYWxpdHkgaW4gbW9yZSBzaXR1YXRpb25zLgorCisgICAg
ICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OnNjcm9sbFRvKToKKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGlu
Z05vZGVOaWNvc2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGVOaWNvc2lhOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3Np
YSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmlj
b3NpYTo6Y29tbWl0U3RhdGVBZnRlckNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjpoYW5kbGVXaGVlbEV2ZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjpz
dG9wU2Nyb2xsQW5pbWF0aW9ucyk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9T
Y3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYS5oOgorICAgICAgICAqIHBhZ2Uv
c2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29z
aWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5n
Tm9kZU5pY29zaWE6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNv
c2lhOjpjb21taXRTdGF0ZUFmdGVyQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
aW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWE6OmhhbmRsZVdoZWVsRXZlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29z
aWE6OnN0b3BTY3JvbGxBbmltYXRpb25zKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9uaWNv
c2lhL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhLmg6CisgICAgICAg
ICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxB
bmltYXRpb246OnNlcnZpY2VBbmltYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFu
aW1hdGlvbktpbmV0aWMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktp
bmV0aWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpTY3JvbGxBbmltYXRpb25T
bW9vdGgpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpzY3JvbGwp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpzdG9wKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblNtb290aDo6dXBkYXRlVmlzaWJsZUxlbmd0aHMp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uU21vb3RoOjphbmltYXRpb25UaW1l
ckZpcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxBbmltYXRvcjo6U2Nyb2xsQW5pbWF0b3IpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVy
aWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFu
aW1hdG9yR2VuZXJpYzo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6ZW5zdXJlU21vb3RoU2Nyb2xsaW5nQW5pbWF0aW9uKToK
KwogMjAyMC0wOC0xOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAg
IEF1ZGlvQnVmZmVyLmR1cmF0aW9uIHNob3VsZCB1c2UgZG91YmxlIHByZWNpc2lvbgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGUuY3BwCmluZGV4IDIzMDFjOTY1ODc1OGUxNWQyMjViYTRkOTEzZjZhY2FiNWE4
ZjQzZGMuLjcxM2I5OTI3MDFkYmFlYzZjMmUyMjNiZjdkNDcwMzA5OTc2OThhMTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZS5jcHAKQEAgLTI1Niw5ICsyNTYsNiBAQCB2b2lkIFNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlOjpzY3JvbGxUbyhjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbiwgU2Nyb2xs
VHlwZQogICAgIGlmIChwb3NpdGlvbiA9PSBtX2N1cnJlbnRTY3JvbGxQb3NpdGlvbikKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaWYgKHNjcm9sbFR5cGUgPT0gU2Nyb2xsVHlwZTo6UHJvZ3JhbW1h
dGljKQotICAgICAgICBzdG9wU2Nyb2xsQW5pbWF0aW9ucygpOwotCiAgICAgc2Nyb2xsaW5nVHJl
ZSgpLnNldElzSGFuZGxpbmdQcm9ncmFtbWF0aWNTY3JvbGwoc2Nyb2xsVHlwZSA9PSBTY3JvbGxU
eXBlOjpQcm9ncmFtbWF0aWMpOwogICAgIAogICAgIG1fY3VycmVudFNjcm9sbFBvc2l0aW9uID0g
YWRqdXN0ZWRTY3JvbGxQb3NpdGlvbihwb3NpdGlvbiwgY2xhbXApOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlTmljb3NpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNv
c2lhL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhLmNwcAppbmRleCBjYjUy
ZWQ4MDViYTNiNGY1ZjM4MDFhMjQzZjdkNmQ4ZmEwODc2MWRjLi4wOGI1ZTVlNGY2ZjBmNTlmOThi
NTIwYjI4Yzk5ODVkM2IxNWMwNTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1Ry
ZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhLmNwcApAQCAtNDAsNiArNDAsOSBAQAogI2lmIEVO
QUJMRShLSU5FVElDX1NDUk9MTElORykKICNpbmNsdWRlICJTY3JvbGxBbmltYXRpb25LaW5ldGlj
LmgiCiAjZW5kaWYKKyNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKKyNpbmNsdWRlICJTY3Jv
bGxBbmltYXRpb25TbW9vdGguaCIKKyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTUzLDEwICs1NiwxNCBAQCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYTo6
U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEoUwogewogI2lmIEVOQUJMRShL
SU5FVElDX1NDUk9MTElORykKICAgICBtX2tpbmV0aWNBbmltYXRpb24gPSBtYWtlVW5pcXVlPFNj
cm9sbEFuaW1hdGlvbktpbmV0aWM+KAotICAgICAgICBbdGhpc10oKSAtPiBTY3JvbGxBbmltYXRp
b25LaW5ldGljOjpTY3JvbGxFeHRlbnRzIHsKLSAgICAgICAgICAgIHJldHVybiB7IEludFBvaW50
KG1pbmltdW1TY3JvbGxQb3NpdGlvbigpKSwgSW50UG9pbnQobWF4aW11bVNjcm9sbFBvc2l0aW9u
KCkpIH07CisgICAgICAgIFt0aGlzXSgpIC0+IFNjcm9sbEV4dGVudHMgeworICAgICAgICAgICAg
cmV0dXJuIHsgSW50UG9pbnQobWluaW11bVNjcm9sbFBvc2l0aW9uKCkpLCBJbnRQb2ludChtYXhp
bXVtU2Nyb2xsUG9zaXRpb24oKSksIEludFNpemUoc2Nyb2xsYWJsZUFyZWFTaXplKCkpIH07CiAg
ICAgICAgIH0sCiAgICAgICAgIFt0aGlzXShGbG9hdFBvaW50JiYgcG9zaXRpb24pIHsKKyNpZiBF
TkFCTEUoU01PT1RIX1NDUk9MTElORykKKyAgICAgICAgICAgIG1fc21vb3RoQW5pbWF0aW9uLT5z
ZXRDdXJyZW50UG9zaXRpb24ocG9zaXRpb24pOworI2VuZGlmCisKICAgICAgICAgICAgIGF1dG8q
IHNjcm9sbExheWVyID0gc3RhdGljX2Nhc3Q8Tmljb3NpYTo6UGxhdGZvcm1MYXllcio+KHNjcm9s
bGVkQ29udGVudHNMYXllcigpKTsKICAgICAgICAgICAgIEFTU0VSVChzY3JvbGxMYXllcik7CiAg
ICAgICAgICAgICBhdXRvJiBjb21wb3NpdGlvbkxheWVyID0gZG93bmNhc3Q8Tmljb3NpYTo6Q29t
cG9zaXRpb25MYXllcj4oKnNjcm9sbExheWVyKTsKQEAgLTY1LDYgKzcyLDIyIEBAIFNjcm9sbGlu
Z1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxp
bmdOb2RlTmljb3NpYShTCiAgICAgICAgICAgICBzY3JvbGxUbyhwb3NpdGlvbik7CiAgICAgICAg
IH0pOwogI2VuZGlmCisjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCisgICAgbV9zbW9vdGhB
bmltYXRpb24gPSBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlvblNtb290aD4oCisgICAgICAgIFt0
aGlzXSgpIC0+IFNjcm9sbEV4dGVudHMgeworICAgICAgICAgICAgcmV0dXJuIHsgSW50UG9pbnQo
bWluaW11bVNjcm9sbFBvc2l0aW9uKCkpLCBJbnRQb2ludChtYXhpbXVtU2Nyb2xsUG9zaXRpb24o
KSksIEludFNpemUoc2Nyb2xsYWJsZUFyZWFTaXplKCkpIH07CisgICAgICAgIH0sCisgICAgICAg
IGN1cnJlbnRTY3JvbGxQb3NpdGlvbigpLAorICAgICAgICBbdGhpc10oRmxvYXRQb2ludCYmIHBv
c2l0aW9uKSB7CisgICAgICAgICAgICBhdXRvKiBzY3JvbGxMYXllciA9IHN0YXRpY19jYXN0PE5p
Y29zaWE6OlBsYXRmb3JtTGF5ZXIqPihzY3JvbGxlZENvbnRlbnRzTGF5ZXIoKSk7CisgICAgICAg
ICAgICBBU1NFUlQoc2Nyb2xsTGF5ZXIpOworICAgICAgICAgICAgYXV0byYgY29tcG9zaXRpb25M
YXllciA9IGRvd25jYXN0PE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+KCpzY3JvbGxMYXllcik7
CisKKyAgICAgICAgICAgIGF1dG8gdXBkYXRlU2NvcGUgPSBjb21wb3NpdGlvbkxheWVyLmNyZWF0
ZVVwZGF0ZVNjb3BlKCk7CisgICAgICAgICAgICBzY3JvbGxUbyhwb3NpdGlvbik7CisgICAgICAg
IH0sCisgICAgICAgIFtdIHsgfSk7CisjZW5kaWYKIH0KIAogU2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZU5pY29zaWE6On5TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3Np
YSgpID0gZGVmYXVsdDsKQEAgLTEwOSw4ICsxMzIsMTIgQEAgdm9pZCBTY3JvbGxpbmdUcmVlRnJh
bWVTY3JvbGxpbmdOb2RlTmljb3NpYTo6Y29tbWl0U3RhdGVBZnRlckNoaWxkcmVuKGNvbnN0IFNj
cm8KIAogICAgIC8vIFVwZGF0ZSB0aGUgc2Nyb2xsIHBvc2l0aW9uIGFmdGVyIGNoaWxkIG5vZGVz
IGhhdmUgYmVlbiB1cGRhdGVkLCBiZWNhdXNlIHRoZXkgbmVlZCB0byBoYXZlIHVwZGF0ZWQgdGhl
aXIgY29uc3RyYWludHMgYmVmb3JlIGFueSBzY3JvbGxpbmcgaGFwcGVucy4KICAgICBpZiAoc2Ny
b2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGlu
Z05vZGU6OlJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uKSkgeworICAgICAgICBzdG9wU2Nyb2xsQW5p
bWF0aW9ucygpOwogICAgICAgICBjb25zdCBhdXRvJiByZXF1ZXN0ZWRTY3JvbGxEYXRhID0gc2Ny
b2xsaW5nU3RhdGVOb2RlLnJlcXVlc3RlZFNjcm9sbERhdGEoKTsKICAgICAgICAgc2Nyb2xsVG8o
cmVxdWVzdGVkU2Nyb2xsRGF0YS5zY3JvbGxQb3NpdGlvbiwgcmVxdWVzdGVkU2Nyb2xsRGF0YS5z
Y3JvbGxUeXBlLCByZXF1ZXN0ZWRTY3JvbGxEYXRhLmNsYW1waW5nKTsKKyNpZiBFTkFCTEUoU01P
T1RIX1NDUk9MTElORykKKyAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnNldEN1cnJlbnRQb3Np
dGlvbihjdXJyZW50U2Nyb2xsUG9zaXRpb24oKSk7CisjZW5kaWYKICAgICB9CiB9CiAKQEAgLTEx
OSwzMyArMTQ2LDYwIEBAIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdCBTY3JvbGxpbmdUcmVlRnJh
bWVTY3JvbGxpbmdOb2RlTmljb3NpYTo6aGFuZGxlV2hlZWxFdmVuCiAgICAgaWYgKCFjYW5IYW5k
bGVXaGVlbEV2ZW50KHdoZWVsRXZlbnQpKQogICAgICAgICByZXR1cm4gV2hlZWxFdmVudEhhbmRs
aW5nUmVzdWx0Ojp1bmhhbmRsZWQoKTsKIAotICAgIGlmICh3aGVlbEV2ZW50LmRlbHRhWCgpIHx8
IHdoZWVsRXZlbnQuZGVsdGFZKCkpIHsKLSAgICAgICAgYXV0byogc2Nyb2xsTGF5ZXIgPSBzdGF0
aWNfY2FzdDxOaWNvc2lhOjpQbGF0Zm9ybUxheWVyKj4oc2Nyb2xsZWRDb250ZW50c0xheWVyKCkp
OwotICAgICAgICBBU1NFUlQoc2Nyb2xsTGF5ZXIpOwotICAgICAgICBhdXRvJiBjb21wb3NpdGlv
bkxheWVyID0gZG93bmNhc3Q8Tmljb3NpYTo6Q29tcG9zaXRpb25MYXllcj4oKnNjcm9sbExheWVy
KTsKLQotICAgICAgICBhdXRvIHVwZGF0ZVNjb3BlID0gY29tcG9zaXRpb25MYXllci5jcmVhdGVV
cGRhdGVTY29wZSgpOwotICAgICAgICBzY3JvbGxCeSh7IC13aGVlbEV2ZW50LmRlbHRhWCgpLCAt
d2hlZWxFdmVudC5kZWx0YVkoKSB9KTsKLQotICAgIH0KLQogI2lmIEVOQUJMRShLSU5FVElDX1ND
Uk9MTElORykKICAgICBtX2tpbmV0aWNBbmltYXRpb24tPmFwcGVuZFRvU2Nyb2xsSGlzdG9yeSh3
aGVlbEV2ZW50KTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKQogICAg
IG1fa2luZXRpY0FuaW1hdGlvbi0+c3RvcCgpOwogICAgIGlmICh3aGVlbEV2ZW50LmlzRW5kT2ZO
b25Nb21lbnR1bVNjcm9sbCgpKSB7CiAgICAgICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+c3RhcnQo
Y3VycmVudFNjcm9sbFBvc2l0aW9uKCksIG1fa2luZXRpY0FuaW1hdGlvbi0+Y29tcHV0ZVZlbG9j
aXR5KCksIGNhbkhhdmVIb3Jpem9udGFsU2Nyb2xsYmFyKCksIGNhbkhhdmVWZXJ0aWNhbFNjcm9s
bGJhcigpKTsKICAgICAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5jbGVhclNjcm9sbEhpc3Rvcnko
KTsKKyAgICAgICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6aGFuZGxlZCgpOwog
ICAgIH0KICAgICBpZiAod2hlZWxFdmVudC5pc1RyYW5zaXRpb25pbmdUb01vbWVudHVtU2Nyb2xs
KCkpIHsKICAgICAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5zdGFydChjdXJyZW50U2Nyb2xsUG9z
aXRpb24oKSwgd2hlZWxFdmVudC5zd2lwZVZlbG9jaXR5KCksIGNhbkhhdmVIb3Jpem9udGFsU2Ny
b2xsYmFyKCksIGNhbkhhdmVWZXJ0aWNhbFNjcm9sbGJhcigpKTsKICAgICAgICAgbV9raW5ldGlj
QW5pbWF0aW9uLT5jbGVhclNjcm9sbEhpc3RvcnkoKTsKKyAgICAgICAgcmV0dXJuIFdoZWVsRXZl
bnRIYW5kbGluZ1Jlc3VsdDo6aGFuZGxlZCgpOworICAgIH0KKyNlbmRpZgorCisgICAgZmxvYXQg
ZGVsdGFYID0gY2FuSGF2ZUhvcml6b250YWxTY3JvbGxiYXIoKSA/IHdoZWVsRXZlbnQuZGVsdGFY
KCkgOiAwOworICAgIGZsb2F0IGRlbHRhWSA9IGNhbkhhdmVWZXJ0aWNhbFNjcm9sbGJhcigpID8g
d2hlZWxFdmVudC5kZWx0YVkoKSA6IDA7CisgICAgaWYgKChkZWx0YVggPCAwICYmIGN1cnJlbnRT
Y3JvbGxQb3NpdGlvbigpLngoKSA+PSBtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKS54KCkpCisgICAg
ICAgIHx8IChkZWx0YVggPiAwICYmIGN1cnJlbnRTY3JvbGxQb3NpdGlvbigpLngoKSA8PSBtaW5p
bXVtU2Nyb2xsUG9zaXRpb24oKS54KCkpKQorICAgICAgICBkZWx0YVggPSAwOworICAgIGlmICgo
ZGVsdGFZIDwgMCAmJiBjdXJyZW50U2Nyb2xsUG9zaXRpb24oKS55KCkgPj0gbWF4aW11bVNjcm9s
bFBvc2l0aW9uKCkueSgpKQorICAgICAgICB8fCAoZGVsdGFZID4gMCAmJiBjdXJyZW50U2Nyb2xs
UG9zaXRpb24oKS55KCkgPD0gbWluaW11bVNjcm9sbFBvc2l0aW9uKCkueSgpKSkKKyAgICAgICAg
ZGVsdGFZID0gMDsKKworICAgIGlmICghZGVsdGFYICYmICFkZWx0YVkpCisgICAgICAgIHJldHVy
biBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQ6OnVuaGFuZGxlZCgpOworCisgICAgaWYgKHdoZWVs
RXZlbnQuZ3JhbnVsYXJpdHkoKSA9PSBTY3JvbGxCeVBhZ2VXaGVlbEV2ZW50KSB7CisgICAgICAg
IGlmIChkZWx0YVgpIHsKKyAgICAgICAgICAgIGJvb2wgbmVnYXRpdmUgPSBkZWx0YVggPCAwOwor
ICAgICAgICAgICAgZGVsdGFYID0gU2Nyb2xsYmFyOjpwYWdlU3RlcERlbHRhKHNjcm9sbGFibGVB
cmVhU2l6ZSgpLndpZHRoKCkpOworICAgICAgICAgICAgaWYgKG5lZ2F0aXZlKQorICAgICAgICAg
ICAgICAgIGRlbHRhWCA9IC1kZWx0YVg7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGRlbHRhWSkg
eworICAgICAgICAgICAgYm9vbCBuZWdhdGl2ZSA9IGRlbHRhWSA8IDA7CisgICAgICAgICAgICBk
ZWx0YVkgPSBTY3JvbGxiYXI6OnBhZ2VTdGVwRGVsdGEoc2Nyb2xsYWJsZUFyZWFTaXplKCkuaGVp
Z2h0KCkpOworICAgICAgICAgICAgaWYgKG5lZ2F0aXZlKQorICAgICAgICAgICAgICAgIGRlbHRh
WSA9IC1kZWx0YVk7CisgICAgICAgIH0KICAgICB9CisKKyNpZiBFTkFCTEUoU01PT1RIX1NDUk9M
TElORykKKyAgICBtX3Ntb290aEFuaW1hdGlvbi0+c2Nyb2xsKEhvcml6b250YWxTY3JvbGxiYXIs
IFNjcm9sbEJ5UGl4ZWwsIDEsIC1kZWx0YVgpOworICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zY3Jv
bGwoVmVydGljYWxTY3JvbGxiYXIsIFNjcm9sbEJ5UGl4ZWwsIDEsIC1kZWx0YVkpOworI2Vsc2UK
KyAgICBhdXRvKiBzY3JvbGxMYXllciA9IHN0YXRpY19jYXN0PE5pY29zaWE6OlBsYXRmb3JtTGF5
ZXIqPihzY3JvbGxlZENvbnRlbnRzTGF5ZXIoKSk7CisgICAgQVNTRVJUKHNjcm9sbExheWVyKTsK
KyAgICBhdXRvJiBjb21wb3NpdGlvbkxheWVyID0gZG93bmNhc3Q8Tmljb3NpYTo6Q29tcG9zaXRp
b25MYXllcj4oKnNjcm9sbExheWVyKTsKKworICAgIGF1dG8gdXBkYXRlU2NvcGUgPSBjb21wb3Np
dGlvbkxheWVyLmNyZWF0ZVVwZGF0ZVNjb3BlKCk7CisgICAgc2Nyb2xsQnkoeyAtZGVsdGFYLCAt
ZGVsdGFZIH0pOwogI2VuZGlmCiAKLSAgICAvLyBGSVhNRTogVGhpcyBuZWVkcyB0byByZXR1cm4g
d2hldGhlciB0aGUgZXZlbnQgd2FzIGhhbmRsZWQuCiAgICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5k
bGluZ1Jlc3VsdDo6aGFuZGxlZCgpOwogfQogCkBAIC0xNTUsNiArMjA5LDkgQEAgdm9pZCBTY3Jv
bGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYTo6c3RvcFNjcm9sbEFuaW1hdGlvbnMo
KQogICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+c3RvcCgpOwogICAgIG1fa2luZXRpY0FuaW1hdGlv
bi0+Y2xlYXJTY3JvbGxIaXN0b3J5KCk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoU01PT1RIX1NDUk9M
TElORykKKyAgICBtX3Ntb290aEFuaW1hdGlvbi0+c3RvcCgpOworI2VuZGlmCiB9CiAKIEZsb2F0
UG9pbnQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWE6OmFkanVzdGVkU2Ny
b2xsUG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIFNjcm9sbENsYW1waW5nIGNs
YW1waW5nKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
bmljb3NpYS9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYS5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxp
bmdOb2RlTmljb3NpYS5oCmluZGV4IDY0NzNhNGI1NmUxMDMxYjczNzk4YWNlMzg3ZmFlYzhhODRk
YzQ5Y2YuLjUwNTRiZWJmZWNmZGI2ZjliODE3ZjNjZWQzYmJkM2E5OTFjMzhmOTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhLmgKQEAg
LTM5LDYgKzM5LDcgQEAgY2xhc3MgQ29tcG9zaXRpb25MYXllcjsKIH0KIAogbmFtZXNwYWNlIFdl
YkNvcmUgeworY2xhc3MgU2Nyb2xsQW5pbWF0aW9uOwogY2xhc3MgU2Nyb2xsQW5pbWF0aW9uS2lu
ZXRpYzsKIAogY2xhc3MgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEgZmlu
YWwgOiBwdWJsaWMgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZSB7CkBAIC03Myw2ICs3
NCw5IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKQogICAgIHN0ZDo6
dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRpb25LaW5ldGljPiBtX2tpbmV0aWNBbmltYXRpb247CiAj
ZW5kaWYKKyNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
U2Nyb2xsQW5pbWF0aW9uPiBtX3Ntb290aEFuaW1hdGlvbjsKKyNlbmRpZgogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVPdmVy
Zmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhLmNwcAppbmRleCBiNDViNmUxZjc2MzE4YjI1NTllYTdl
MDdmZTZkYjExNmNkZDUzNTg1Li4wNjlhZDRmOTIzZmNjNjU0MzBhOTRmYmNmNDU4M2Y1ZWU4YmJm
ZDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Nj
cm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9s
bGluZ05vZGVOaWNvc2lhLmNwcApAQCAtMzUsNiArMzUsOSBAQAogI2lmIEVOQUJMRShLSU5FVElD
X1NDUk9MTElORykKICNpbmNsdWRlICJTY3JvbGxBbmltYXRpb25LaW5ldGljLmgiCiAjZW5kaWYK
KyNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKKyNpbmNsdWRlICJTY3JvbGxBbmltYXRpb25T
bW9vdGguaCIKKyNlbmRpZgogI2luY2x1ZGUgIlNjcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxp
bmdOb2RlLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZS5oIgogCkBAIC01MCwxMSArNTMsMTUg
QEAgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWE6OlNjcm9sbGluZ1Ry
ZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWMKIHsKICNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJ
TkcpCiAgICAgbV9raW5ldGljQW5pbWF0aW9uID0gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRpb25L
aW5ldGljPigKLSAgICAgICAgW3RoaXNdKCkgLT4gU2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6U2Ny
b2xsRXh0ZW50cyB7Ci0gICAgICAgICAgICByZXR1cm4geyBJbnRQb2ludChtaW5pbXVtU2Nyb2xs
UG9zaXRpb24oKSksIEludFBvaW50KG1heGltdW1TY3JvbGxQb3NpdGlvbigpKSB9OworICAgICAg
ICBbdGhpc10oKSAtPiBTY3JvbGxFeHRlbnRzIHsKKyAgICAgICAgICAgIHJldHVybiB7IEludFBv
aW50KG1pbmltdW1TY3JvbGxQb3NpdGlvbigpKSwgSW50UG9pbnQobWF4aW11bVNjcm9sbFBvc2l0
aW9uKCkpLCBJbnRTaXplKHNjcm9sbGFibGVBcmVhU2l6ZSgpKSB9OwogICAgICAgICB9LAogICAg
ICAgICBbdGhpc10oRmxvYXRQb2ludCYmIHBvc2l0aW9uKSB7Ci0gICAgICAgICAgICBhdXRvKiBz
Y3JvbGxMYXllciA9IHN0YXRpY19jYXN0PE5pY29zaWE6OlBsYXRmb3JtTGF5ZXIqPihzY3JvbGxl
ZENvbnRlbnRzTGF5ZXIoKSk7CisjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCisgICAgICAg
ICAgICBtX3Ntb290aEFuaW1hdGlvbi0+c2V0Q3VycmVudFBvc2l0aW9uKHBvc2l0aW9uKTsKKyNl
bmRpZgorCisgICAgICAgICAgICBhdXRvKiBzY3JvbGxMYXllciA9IHN0YXRpY19jYXN0PE5pY29z
aWE6OlBsYXRmb3JtTGF5ZXIqPihzY3JvbGxDb250YWluZXJMYXllcigpKTsKICAgICAgICAgICAg
IEFTU0VSVChzY3JvbGxMYXllcik7CiAgICAgICAgICAgICBhdXRvJiBjb21wb3NpdGlvbkxheWVy
ID0gZG93bmNhc3Q8Tmljb3NpYTo6Q29tcG9zaXRpb25MYXllcj4oKnNjcm9sbExheWVyKTsKIApA
QCAtNjIsNiArNjksMjIgQEAgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29z
aWE6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWMKICAgICAgICAgICAgIHNj
cm9sbFRvKHBvc2l0aW9uKTsKICAgICAgICAgfSk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoU01PT1RI
X1NDUk9MTElORykKKyAgICBtX3Ntb290aEFuaW1hdGlvbiA9IG1ha2VVbmlxdWU8U2Nyb2xsQW5p
bWF0aW9uU21vb3RoPigKKyAgICAgICAgW3RoaXNdKCkgLT4gU2Nyb2xsRXh0ZW50cyB7CisgICAg
ICAgICAgICByZXR1cm4geyBJbnRQb2ludChtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSksIEludFBv
aW50KG1heGltdW1TY3JvbGxQb3NpdGlvbigpKSwgSW50U2l6ZShzY3JvbGxhYmxlQXJlYVNpemUo
KSkgfTsKKyAgICAgICAgfSwKKyAgICAgICAgY3VycmVudFNjcm9sbFBvc2l0aW9uKCksCisgICAg
ICAgIFt0aGlzXShGbG9hdFBvaW50JiYgcG9zaXRpb24pIHsKKyAgICAgICAgICAgIGF1dG8qIHNj
cm9sbExheWVyID0gc3RhdGljX2Nhc3Q8Tmljb3NpYTo6UGxhdGZvcm1MYXllcio+KHNjcm9sbENv
bnRhaW5lckxheWVyKCkpOworICAgICAgICAgICAgQVNTRVJUKHNjcm9sbExheWVyKTsKKyAgICAg
ICAgICAgIGF1dG8mIGNvbXBvc2l0aW9uTGF5ZXIgPSBkb3duY2FzdDxOaWNvc2lhOjpDb21wb3Np
dGlvbkxheWVyPigqc2Nyb2xsTGF5ZXIpOworCisgICAgICAgICAgICBhdXRvIHVwZGF0ZVNjb3Bl
ID0gY29tcG9zaXRpb25MYXllci5jcmVhdGVVcGRhdGVTY29wZSgpOworICAgICAgICAgICAgc2Ny
b2xsVG8ocG9zaXRpb24pOworICAgICAgICB9LAorICAgICAgICBbXSB7IH0pOworI2VuZGlmCiB9
CiAKIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhOjp+U2Nyb2xsaW5n
VHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWEoKSA9IGRlZmF1bHQ7CkBAIC03Miw4ICs5
NSwxMiBAQCB2b2lkIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhOjpj
b21taXRTdGF0ZUFmdGVyQ2hpbGRyZW4oY29uc3QgUwogCiAgICAgY29uc3QgYXV0byYgb3ZlcmZs
b3dTdGF0ZU5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9k
ZT4oc3RhdGVOb2RlKTsKICAgICBpZiAob3ZlcmZsb3dTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3Bl
cnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6UmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24p
KSB7CisgICAgICAgIHN0b3BTY3JvbGxBbmltYXRpb25zKCk7CiAgICAgICAgIGNvbnN0IGF1dG8m
IHJlcXVlc3RlZFNjcm9sbERhdGEgPSBvdmVyZmxvd1N0YXRlTm9kZS5yZXF1ZXN0ZWRTY3JvbGxE
YXRhKCk7CiAgICAgICAgIHNjcm9sbFRvKHJlcXVlc3RlZFNjcm9sbERhdGEuc2Nyb2xsUG9zaXRp
b24sIHJlcXVlc3RlZFNjcm9sbERhdGEuc2Nyb2xsVHlwZSwgcmVxdWVzdGVkU2Nyb2xsRGF0YS5j
bGFtcGluZyk7CisjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCisgICAgICAgIG1fc21vb3Ro
QW5pbWF0aW9uLT5zZXRDdXJyZW50UG9zaXRpb24oY3VycmVudFNjcm9sbFBvc2l0aW9uKCkpOwor
I2VuZGlmCiAgICAgfQogfQogCkBAIC0xMDQsMzEgKzEzMSw2MCBAQCBXaGVlbEV2ZW50SGFuZGxp
bmdSZXN1bHQgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWE6OmhhbmRs
ZVdoZWVsRQogICAgIGlmICghY2FuSGFuZGxlV2hlZWxFdmVudCh3aGVlbEV2ZW50KSkKICAgICAg
ICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6dW5oYW5kbGVkKCk7CiAKLSAgICBp
ZiAod2hlZWxFdmVudC5kZWx0YVgoKSB8fCB3aGVlbEV2ZW50LmRlbHRhWSgpKSB7Ci0gICAgICAg
IGF1dG8qIHNjcm9sbExheWVyID0gc3RhdGljX2Nhc3Q8Tmljb3NpYTo6UGxhdGZvcm1MYXllcio+
KHNjcm9sbENvbnRhaW5lckxheWVyKCkpOwotICAgICAgICBBU1NFUlQoc2Nyb2xsTGF5ZXIpOwot
ICAgICAgICBhdXRvJiBjb21wb3NpdGlvbkxheWVyID0gZG93bmNhc3Q8Tmljb3NpYTo6Q29tcG9z
aXRpb25MYXllcj4oKnNjcm9sbExheWVyKTsKLQotICAgICAgICBhdXRvIHVwZGF0ZVNjb3BlID0g
Y29tcG9zaXRpb25MYXllci5jcmVhdGVVcGRhdGVTY29wZSgpOwotICAgICAgICBzY3JvbGxCeSh7
IC13aGVlbEV2ZW50LmRlbHRhWCgpLCAtd2hlZWxFdmVudC5kZWx0YVkoKSB9KTsKLSAgICB9Ci0K
ICNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpCiAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5h
cHBlbmRUb1Njcm9sbEhpc3Rvcnkod2hlZWxFdmVudCk7Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShL
SU5FVElDX1NDUk9MTElORykKICAgICBtX2tpbmV0aWNBbmltYXRpb24tPnN0b3AoKTsKICAgICBp
ZiAod2hlZWxFdmVudC5pc0VuZE9mTm9uTW9tZW50dW1TY3JvbGwoKSkgewogICAgICAgICBtX2tp
bmV0aWNBbmltYXRpb24tPnN0YXJ0KGN1cnJlbnRTY3JvbGxQb3NpdGlvbigpLCBtX2tpbmV0aWNB
bmltYXRpb24tPmNvbXB1dGVWZWxvY2l0eSgpLCBjYW5IYXZlSG9yaXpvbnRhbFNjcm9sbGJhcigp
LCBjYW5IYXZlVmVydGljYWxTY3JvbGxiYXIoKSk7CiAgICAgICAgIG1fa2luZXRpY0FuaW1hdGlv
bi0+Y2xlYXJTY3JvbGxIaXN0b3J5KCk7CisgICAgICAgIHJldHVybiBXaGVlbEV2ZW50SGFuZGxp
bmdSZXN1bHQ6OmhhbmRsZWQoKTsKICAgICB9CiAgICAgaWYgKHdoZWVsRXZlbnQuaXNUcmFuc2l0
aW9uaW5nVG9Nb21lbnR1bVNjcm9sbCgpKSB7CiAgICAgICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+
c3RhcnQoY3VycmVudFNjcm9sbFBvc2l0aW9uKCksIHdoZWVsRXZlbnQuc3dpcGVWZWxvY2l0eSgp
LCBjYW5IYXZlSG9yaXpvbnRhbFNjcm9sbGJhcigpLCBjYW5IYXZlVmVydGljYWxTY3JvbGxiYXIo
KSk7CiAgICAgICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+Y2xlYXJTY3JvbGxIaXN0b3J5KCk7Cisg
ICAgICAgIHJldHVybiBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQ6OmhhbmRsZWQoKTsKICAgICB9
CiAjZW5kaWYKIAorICAgIGZsb2F0IGRlbHRhWCA9IGNhbkhhdmVIb3Jpem9udGFsU2Nyb2xsYmFy
KCkgPyB3aGVlbEV2ZW50LmRlbHRhWCgpIDogMDsKKyAgICBmbG9hdCBkZWx0YVkgPSBjYW5IYXZl
VmVydGljYWxTY3JvbGxiYXIoKSA/IHdoZWVsRXZlbnQuZGVsdGFZKCkgOiAwOworICAgIGlmICgo
ZGVsdGFYIDwgMCAmJiBjdXJyZW50U2Nyb2xsUG9zaXRpb24oKS54KCkgPj0gbWF4aW11bVNjcm9s
bFBvc2l0aW9uKCkueCgpKQorICAgICAgICB8fCAoZGVsdGFYID4gMCAmJiBjdXJyZW50U2Nyb2xs
UG9zaXRpb24oKS54KCkgPD0gbWluaW11bVNjcm9sbFBvc2l0aW9uKCkueCgpKSkKKyAgICAgICAg
ZGVsdGFYID0gMDsKKyAgICBpZiAoKGRlbHRhWSA8IDAgJiYgY3VycmVudFNjcm9sbFBvc2l0aW9u
KCkueSgpID49IG1heGltdW1TY3JvbGxQb3NpdGlvbigpLnkoKSkKKyAgICAgICAgfHwgKGRlbHRh
WSA+IDAgJiYgY3VycmVudFNjcm9sbFBvc2l0aW9uKCkueSgpIDw9IG1pbmltdW1TY3JvbGxQb3Np
dGlvbigpLnkoKSkpCisgICAgICAgIGRlbHRhWSA9IDA7CisKKyAgICBpZiAoIWRlbHRhWCAmJiAh
ZGVsdGFZKQorICAgICAgICByZXR1cm4gV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0Ojp1bmhhbmRs
ZWQoKTsKKworICAgIGlmICh3aGVlbEV2ZW50LmdyYW51bGFyaXR5KCkgPT0gU2Nyb2xsQnlQYWdl
V2hlZWxFdmVudCkgeworICAgICAgICBpZiAoZGVsdGFYKSB7CisgICAgICAgICAgICBib29sIG5l
Z2F0aXZlID0gZGVsdGFYIDwgMDsKKyAgICAgICAgICAgIGRlbHRhWCA9IFNjcm9sbGJhcjo6cGFn
ZVN0ZXBEZWx0YShzY3JvbGxhYmxlQXJlYVNpemUoKS53aWR0aCgpKTsKKyAgICAgICAgICAgIGlm
IChuZWdhdGl2ZSkKKyAgICAgICAgICAgICAgICBkZWx0YVggPSAtZGVsdGFYOworICAgICAgICB9
CisgICAgICAgIGlmIChkZWx0YVkpIHsKKyAgICAgICAgICAgIGJvb2wgbmVnYXRpdmUgPSBkZWx0
YVkgPCAwOworICAgICAgICAgICAgZGVsdGFZID0gU2Nyb2xsYmFyOjpwYWdlU3RlcERlbHRhKHNj
cm9sbGFibGVBcmVhU2l6ZSgpLmhlaWdodCgpKTsKKyAgICAgICAgICAgIGlmIChuZWdhdGl2ZSkK
KyAgICAgICAgICAgICAgICBkZWx0YVkgPSAtZGVsdGFZOworICAgICAgICB9CisgICAgfQorCisj
aWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCisgICAgbV9zbW9vdGhBbmltYXRpb24tPnNjcm9s
bChIb3Jpem9udGFsU2Nyb2xsYmFyLCBTY3JvbGxCeVBpeGVsLCAxLCAtZGVsdGFYKTsKKyAgICBt
X3Ntb290aEFuaW1hdGlvbi0+c2Nyb2xsKFZlcnRpY2FsU2Nyb2xsYmFyLCBTY3JvbGxCeVBpeGVs
LCAxLCAtZGVsdGFZKTsKKyNlbHNlCisgICAgYXV0byogc2Nyb2xsTGF5ZXIgPSBzdGF0aWNfY2Fz
dDxOaWNvc2lhOjpQbGF0Zm9ybUxheWVyKj4oc2Nyb2xsQ29udGFpbmVyTGF5ZXIoKSk7CisgICAg
QVNTRVJUKHNjcm9sbExheWVyKTsKKyAgICBhdXRvJiBjb21wb3NpdGlvbkxheWVyID0gZG93bmNh
c3Q8Tmljb3NpYTo6Q29tcG9zaXRpb25MYXllcj4oKnNjcm9sbExheWVyKTsKKworICAgIGF1dG8g
dXBkYXRlU2NvcGUgPSBjb21wb3NpdGlvbkxheWVyLmNyZWF0ZVVwZGF0ZVNjb3BlKCk7CisgICAg
c2Nyb2xsQnkoeyAtZGVsdGFYLCAtZGVsdGFZIH0pOworI2VuZGlmCisKICAgICByZXR1cm4gV2hl
ZWxFdmVudEhhbmRsaW5nUmVzdWx0OjpoYW5kbGVkKCk7CiB9CiAKQEAgLTEzOCw2ICsxOTQsOSBA
QCB2b2lkIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhOjpzdG9wU2Ny
b2xsQW5pbWF0aW9ucygpCiAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5zdG9wKCk7CiAgICAgbV9r
aW5ldGljQW5pbWF0aW9uLT5jbGVhclNjcm9sbEhpc3RvcnkoKTsKICNlbmRpZgorI2lmIEVOQUJM
RShTTU9PVEhfU0NST0xMSU5HKQorICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zdG9wKCk7CisjZW5k
aWYKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlTmljb3NpYS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3Jv
bGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYS5oCmluZGV4IGFjZGM4MmFjMTU2
Y2M3NjcwM2NlNGNkNDk5ZWVjYWRmYWZkNDk1ZGIuLjEzMmI0ODg3MWQ2Y2RiNjc0NWM0YWMzNjE3
YTRiYzFkZGVmNGI5MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L25pY29zaWEvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVPdmVy
Zmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJT
Y3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKK2NsYXNzIFNjcm9sbEFuaW1hdGlvbjsKIGNsYXNzIFNjcm9sbEFuaW1hdGlvbktpbmV0aWM7
CiAKIGNsYXNzIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhIGZpbmFs
IDogcHVibGljIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGUgewpAQCAtNTYsNiAr
NTcsOSBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8U2Nyb2xsQW5pbWF0aW9uS2luZXRpYz4gbV9raW5ldGljQW5pbWF0aW9uOwog
I2VuZGlmCisjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCisgICAgc3RkOjp1bmlxdWVfcHRy
PFNjcm9sbEFuaW1hdGlvbj4gbV9zbW9vdGhBbmltYXRpb247CisjZW5kaWYKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbEFuaW1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9u
LmgKaW5kZXggZjA2N2IzY2MyZGRlNmIyNjNkZDJjMGUwY2NjZTAzYWQwZjY3MTg5My4uOTlkODYx
YmYzNTEzZDAzNzY2NDcwYTEwNzJiOThmZDAzNzBjYzgwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQW5pbWF0aW9uLmgKQEAgLTM0LDYgKzM0LDEyIEBAIGNsYXNzIEZsb2F0UG9p
bnQ7CiBjbGFzcyBTY3JvbGxhYmxlQXJlYTsKIGVudW0gY2xhc3MgU2Nyb2xsQ2xhbXBpbmcgOiBi
b29sOwogCitzdHJ1Y3QgU2Nyb2xsRXh0ZW50cyB7CisgICAgU2Nyb2xsUG9zaXRpb24gbWluaW11
bVNjcm9sbFBvc2l0aW9uOworICAgIFNjcm9sbFBvc2l0aW9uIG1heGltdW1TY3JvbGxQb3NpdGlv
bjsKKyAgICBJbnRTaXplIHZpc2libGVTaXplOworfTsKKwogY2xhc3MgU2Nyb2xsQW5pbWF0aW9u
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTQ0LDE0ICs1MCw2
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVmlzaWJsZUxlbmd0aHMoKSB7IH07
CiAgICAgdmlydHVhbCB2b2lkIHNldEN1cnJlbnRQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50Jikg
eyB9OwogICAgIHZpcnR1YWwgdm9pZCBzZXJ2aWNlQW5pbWF0aW9uKCkgeyB9OwotCi1wcm90ZWN0
ZWQ6Ci0gICAgU2Nyb2xsQW5pbWF0aW9uKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkK
LSAgICAgICAgOiBtX3Njcm9sbGFibGVBcmVhKHNjcm9sbGFibGVBcmVhKQotICAgIHsKLSAgICB9
Ci0KLSAgICBTY3JvbGxhYmxlQXJlYSYgbV9zY3JvbGxhYmxlQXJlYTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bEFuaW1hdGlvbktpbmV0aWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5p
bWF0aW9uS2luZXRpYy5jcHAKaW5kZXggM2NlNTVhMTg1MWU2MDUzMGRkMzMyYmIwNjViMjE2YThm
M2NiNzM1MC4uMjRlZGNkMzI4NGQ5YWFiNThiNGE1Y2EyOTI5YTQ3MjRhZTEzMTQxMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5jcHAK
QEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIlBsYXRmb3JtV2hlZWxFdmVudC5oIgogCi0j
aWYgVVNFKEdMSUIpCisjaWYgVVNFKEdMSUJfRVZFTlRfTE9PUCkKICNpbmNsdWRlIDx3dGYvZ2xp
Yi9SdW5Mb29wU291cmNlUHJpb3JpdHkuaD4KICNlbmRpZgogCkBAIC0xMTQsNyArMTE0LDcgQEAg
U2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6U2Nyb2xsQW5pbWF0aW9uS2luZXRpYyhTY3JvbGxFeHRl
bnRzQ2FsbGJhY2smJiBzY3JvbGxFeHQKICAgICAsIG1fbm90aWZ5UG9zaXRpb25DaGFuZ2VkRnVu
Y3Rpb24oV1RGTW92ZShub3RpZnlQb3NpdGlvbkNoYW5nZWRGdW5jdGlvbikpCiAgICAgLCBtX2Fu
aW1hdGlvblRpbWVyKFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJlNjcm9sbEFuaW1hdGlvbktp
bmV0aWM6OmFuaW1hdGlvblRpbWVyRmlyZWQpCiB7Ci0jaWYgVVNFKEdMSUIpCisjaWYgVVNFKEdM
SUJfRVZFTlRfTE9PUCkKICAgICBtX2FuaW1hdGlvblRpbWVyLnNldFByaW9yaXR5KFdURjo6UnVu
TG9vcFNvdXJjZVByaW9yaXR5OjpEaXNwbGF5UmVmcmVzaE1vbml0b3JUaW1lcik7CiAjZW5kaWYK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktp
bmV0aWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMu
aAppbmRleCBjZjI1ZTc5OGNkNWIwNmIzOTUxYjAyYTY3MzAxYTAyNTE5NjUxMzE1Li4zZTg5Y2I0
OGMwNWM0YzJiZTc1ZTM3NjVjYzllZjgxNTMzZGNiN2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5oCkBAIC0zNSw4ICszNSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUGxhdGZvcm1XaGVlbEV2ZW50OwogCi1jbGFzcyBT
Y3JvbGxBbmltYXRpb25LaW5ldGljIGZpbmFsIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKK2NsYXNzIFNjcm9sbEFuaW1hdGlvbktpbmV0aWMgZmluYWwgOiBwdWJsaWMgU2Nyb2xsQW5p
bWF0aW9uIHsKIHByaXZhdGU6CiAgICAgY2xhc3MgUGVyQXhpc0RhdGEgewogICAgIHB1YmxpYzoK
QEAgLTU5LDExICs1OCw2IEBAIHByaXZhdGU6CiAgICAgfTsKIAogcHVibGljOgotICAgIHN0cnVj
dCBTY3JvbGxFeHRlbnRzIHsKLSAgICAgICAgSW50UG9pbnQgbWluaW11bVNjcm9sbFBvc2l0aW9u
OwotICAgICAgICBJbnRQb2ludCBtYXhpbXVtU2Nyb2xsUG9zaXRpb247Ci0gICAgfTsKLQogICAg
IHVzaW5nIFNjcm9sbEV4dGVudHNDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248U2Nyb2xsRXh0ZW50
cyh2b2lkKT47CiAgICAgdXNpbmcgTm90aWZ5UG9zaXRpb25DaGFuZ2VkQ2FsbGJhY2sgPSBXVEY6
OkZ1bmN0aW9uPHZvaWQoRmxvYXRQb2ludCYmKT47CiAKQEAgLTc1LDcgKzY5LDcgQEAgcHVibGlj
OgogICAgIEZsb2F0UG9pbnQgY29tcHV0ZVZlbG9jaXR5KCk7CiAKICAgICB2b2lkIHN0YXJ0KGNv
bnN0IEZsb2F0UG9pbnQmIGluaXRpYWxQb3NpdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgdmVsb2Np
dHksIGJvb2wgbWF5SFNjcm9sbCwgYm9vbCBtYXlWU2Nyb2xsKTsKLSAgICB2b2lkIHN0b3AoKTsK
KyAgICB2b2lkIHN0b3AoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGFuaW1hdGlv
blRpbWVyRmlyZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bEFuaW1hdGlvblNtb290aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmlt
YXRpb25TbW9vdGguY3BwCmluZGV4IDJjYTU3OGEzMGYxYjMxYTI5N2RjOTgxZGZlNTJjYTMwNjcy
ZTdhN2IuLjgzNTczMDVmZWNiMWJmYzQ1ZWI1Yjc3YjAzNTk2YWQxMThhZjA3MjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmNwcApAQCAt
MzEsNiArMzEsMTAgQEAKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiU2Nyb2xs
YWJsZUFyZWEuaCIKIAorI2lmIFVTRShHTElCX0VWRU5UX0xPT1ApCisjaW5jbHVkZSA8d3RmL2ds
aWIvUnVuTG9vcFNvdXJjZVByaW9yaXR5Lmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBzdGF0aWMgY29uc3QgZG91YmxlIGZyYW1lUmF0ZSA9IDYwOwpAQCAtMzgsMjUgKzQyLDQ3
IEBAIHN0YXRpYyBjb25zdCBTZWNvbmRzIHRpY2tUaW1lID0gMV9zIC8gZnJhbWVSYXRlOwogc3Rh
dGljIGNvbnN0IFNlY29uZHMgbWluaW11bVRpbWVySW50ZXJ2YWwgeyAxX21zIH07CiBzdGF0aWMg
Y29uc3QgZG91YmxlIHNtb290aEZhY3RvckZvclByb2dyYW1tYXRpY1Njcm9sbCA9IDU7CiAKLVNj
cm9sbEFuaW1hdGlvblNtb290aDo6U2Nyb2xsQW5pbWF0aW9uU21vb3RoKFNjcm9sbGFibGVBcmVh
JiBzY3JvbGxhYmxlQXJlYSwgY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIFdURjo6RnVuY3Rp
b248dm9pZCAoRmxvYXRQb2ludCYmKT4mJiBub3RpZnlQb3NpdGlvbkNoYW5nZWRGdW5jdGlvbikK
LSAgICA6IFNjcm9sbEFuaW1hdGlvbihzY3JvbGxhYmxlQXJlYSkKK1Njcm9sbEFuaW1hdGlvblNt
b290aDo6UGVyQXhpc0RhdGE6OlBlckF4aXNEYXRhKFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVu
dGF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbiwgU2Nyb2xsRXh0ZW50c0NhbGxiYWNr
JiBleHRlbnRzQ2FsbGJhY2spCit7CisgICAgYXV0byBleHRlbnRzID0gZXh0ZW50c0NhbGxiYWNr
KCk7CisgICAgc3dpdGNoIChvcmllbnRhdGlvbikgeworICAgIGNhc2UgSG9yaXpvbnRhbFNjcm9s
bGJhcjoKKyAgICAgICAgY3VycmVudFBvc2l0aW9uID0gcG9zaXRpb24ueCgpOworICAgICAgICB2
aXNpYmxlTGVuZ3RoID0gZXh0ZW50cy52aXNpYmxlU2l6ZS53aWR0aCgpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFZlcnRpY2FsU2Nyb2xsYmFyOgorICAgICAgICBjdXJyZW50UG9zaXRpb24g
PSBwb3NpdGlvbi55KCk7CisgICAgICAgIHZpc2libGVMZW5ndGggPSBleHRlbnRzLnZpc2libGVT
aXplLmhlaWdodCgpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBkZXNpcmVkUG9zaXRp
b24gPSBjdXJyZW50UG9zaXRpb247Cit9CisKK1Njcm9sbEFuaW1hdGlvblNtb290aDo6U2Nyb2xs
QW5pbWF0aW9uU21vb3RoKFNjcm9sbEV4dGVudHNDYWxsYmFjayYmIHNjcm9sbEV4dGVudHNGdW5j
dGlvbiwgY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIE5vdGlmeVBvc2l0aW9uQ2hhbmdlZENh
bGxiYWNrJiYgbm90aWZ5UG9zaXRpb25DaGFuZ2VkRnVuY3Rpb24sIE5vdGlmeUFuaW1hdGlvblN0
b3BwZWRDYWxsYmFjayYmIG5vdGlmeUFuaW1hdGlvblN0b3BwZWRGdW5jdGlvbikKKyAgICA6IG1f
c2Nyb2xsRXh0ZW50c0Z1bmN0aW9uKFdURk1vdmUoc2Nyb2xsRXh0ZW50c0Z1bmN0aW9uKSkKICAg
ICAsIG1fbm90aWZ5UG9zaXRpb25DaGFuZ2VkRnVuY3Rpb24oV1RGTW92ZShub3RpZnlQb3NpdGlv
bkNoYW5nZWRGdW5jdGlvbikpCi0gICAgLCBtX2hvcml6b250YWxEYXRhKHBvc2l0aW9uLngoKSwg
c2Nyb2xsYWJsZUFyZWEudmlzaWJsZVdpZHRoKCkpCi0gICAgLCBtX3ZlcnRpY2FsRGF0YShwb3Np
dGlvbi55KCksIHNjcm9sbGFibGVBcmVhLnZpc2libGVIZWlnaHQoKSkKLSAgICAsIG1fYW5pbWF0
aW9uVGltZXIoKnRoaXMsICZTY3JvbGxBbmltYXRpb25TbW9vdGg6OmFuaW1hdGlvblRpbWVyRmly
ZWQpCisgICAgLCBtX25vdGlmeUFuaW1hdGlvblN0b3BwZWRGdW5jdGlvbihXVEZNb3ZlKG5vdGlm
eUFuaW1hdGlvblN0b3BwZWRGdW5jdGlvbikpCisgICAgLCBtX2hvcml6b250YWxEYXRhKEhvcml6
b250YWxTY3JvbGxiYXIsIHBvc2l0aW9uLCBtX3Njcm9sbEV4dGVudHNGdW5jdGlvbikKKyAgICAs
IG1fdmVydGljYWxEYXRhKFZlcnRpY2FsU2Nyb2xsYmFyLCBwb3NpdGlvbiwgbV9zY3JvbGxFeHRl
bnRzRnVuY3Rpb24pCisgICAgLCBtX2FuaW1hdGlvblRpbWVyKFJ1bkxvb3A6OmN1cnJlbnQoKSwg
dGhpcywgJlNjcm9sbEFuaW1hdGlvblNtb290aDo6YW5pbWF0aW9uVGltZXJGaXJlZCkKIHsKKyNp
ZiBVU0UoR0xJQl9FVkVOVF9MT09QKQorICAgIG1fYW5pbWF0aW9uVGltZXIuc2V0UHJpb3JpdHko
V1RGOjpSdW5Mb29wU291cmNlUHJpb3JpdHk6OkRpc3BsYXlSZWZyZXNoTW9uaXRvclRpbWVyKTsK
KyNlbmRpZgogfQogCiBib29sIFNjcm9sbEFuaW1hdGlvblNtb290aDo6c2Nyb2xsKFNjcm9sbGJh
ck9yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBTY3JvbGxHcmFudWxhcml0eSBncmFudWxhcml0eSwg
ZmxvYXQgc3RlcCwgZmxvYXQgbXVsdGlwbGllcikKIHsKICAgICBmbG9hdCBtaW5TY3JvbGxQb3Np
dGlvbjsKICAgICBmbG9hdCBtYXhTY3JvbGxQb3NpdGlvbjsKKyAgICBhdXRvIGV4dGVudHMgPSBt
X3Njcm9sbEV4dGVudHNGdW5jdGlvbigpOwogICAgIGlmIChvcmllbnRhdGlvbiA9PSBIb3Jpem9u
dGFsU2Nyb2xsYmFyKSB7Ci0gICAgICAgIG1pblNjcm9sbFBvc2l0aW9uID0gbV9zY3JvbGxhYmxl
QXJlYS5taW5pbXVtU2Nyb2xsUG9zaXRpb24oKS54KCk7Ci0gICAgICAgIG1heFNjcm9sbFBvc2l0
aW9uID0gbV9zY3JvbGxhYmxlQXJlYS5tYXhpbXVtU2Nyb2xsUG9zaXRpb24oKS54KCk7CisgICAg
ICAgIG1pblNjcm9sbFBvc2l0aW9uID0gZXh0ZW50cy5taW5pbXVtU2Nyb2xsUG9zaXRpb24ueCgp
OworICAgICAgICBtYXhTY3JvbGxQb3NpdGlvbiA9IGV4dGVudHMubWF4aW11bVNjcm9sbFBvc2l0
aW9uLngoKTsKICAgICB9IGVsc2UgewotICAgICAgICBtaW5TY3JvbGxQb3NpdGlvbiA9IG1fc2Ny
b2xsYWJsZUFyZWEubWluaW11bVNjcm9sbFBvc2l0aW9uKCkueSgpOwotICAgICAgICBtYXhTY3Jv
bGxQb3NpdGlvbiA9IG1fc2Nyb2xsYWJsZUFyZWEubWF4aW11bVNjcm9sbFBvc2l0aW9uKCkueSgp
OworICAgICAgICBtaW5TY3JvbGxQb3NpdGlvbiA9IGV4dGVudHMubWluaW11bVNjcm9sbFBvc2l0
aW9uLnkoKTsKKyAgICAgICAgbWF4U2Nyb2xsUG9zaXRpb24gPSBleHRlbnRzLm1heGltdW1TY3Jv
bGxQb3NpdGlvbi55KCk7CiAgICAgfQogICAgIGJvb2wgbmVlZFRvU2Nyb2xsID0gdXBkYXRlUGVy
QXhpc0RhdGEob3JpZW50YXRpb24gPT0gSG9yaXpvbnRhbFNjcm9sbGJhciA/IG1faG9yaXpvbnRh
bERhdGEgOiBtX3ZlcnRpY2FsRGF0YSwgZ3JhbnVsYXJpdHksIHN0ZXAgKiBtdWx0aXBsaWVyLCBt
aW5TY3JvbGxQb3NpdGlvbiwgbWF4U2Nyb2xsUG9zaXRpb24pOwogICAgIGlmIChuZWVkVG9TY3Jv
bGwgJiYgIWFuaW1hdGlvblRpbWVyQWN0aXZlKCkpIHsKQEAgLTY5LDkgKzk1LDEwIEBAIGJvb2wg
U2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpzY3JvbGwoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50
YXRpb24sIFNjcm9sbEdyYW51CiB2b2lkIFNjcm9sbEFuaW1hdGlvblNtb290aDo6c2Nyb2xsKGNv
bnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uKQogewogICAgIFNjcm9sbEdyYW51bGFyaXR5IGdyYW51
bGFyaXR5ID0gU2Nyb2xsQnlQYWdlOwotICAgIGJvb2wgbmVlZFRvU2Nyb2xsID0gdXBkYXRlUGVy
QXhpc0RhdGEobV9ob3Jpem9udGFsRGF0YSwgZ3JhbnVsYXJpdHksIHBvc2l0aW9uLngoKSAtIG1f
aG9yaXpvbnRhbERhdGEuY3VycmVudFBvc2l0aW9uLCBtX3Njcm9sbGFibGVBcmVhLm1pbmltdW1T
Y3JvbGxQb3NpdGlvbigpLngoKSwgbV9zY3JvbGxhYmxlQXJlYS5tYXhpbXVtU2Nyb2xsUG9zaXRp
b24oKS54KCksIHNtb290aEZhY3RvckZvclByb2dyYW1tYXRpY1Njcm9sbCk7CisgICAgYXV0byBl
eHRlbnRzID0gbV9zY3JvbGxFeHRlbnRzRnVuY3Rpb24oKTsKKyAgICBib29sIG5lZWRUb1Njcm9s
bCA9IHVwZGF0ZVBlckF4aXNEYXRhKG1faG9yaXpvbnRhbERhdGEsIGdyYW51bGFyaXR5LCBwb3Np
dGlvbi54KCkgLSBtX2hvcml6b250YWxEYXRhLmN1cnJlbnRQb3NpdGlvbiwgZXh0ZW50cy5taW5p
bXVtU2Nyb2xsUG9zaXRpb24ueCgpLCBleHRlbnRzLm1heGltdW1TY3JvbGxQb3NpdGlvbi54KCks
IHNtb290aEZhY3RvckZvclByb2dyYW1tYXRpY1Njcm9sbCk7CiAgICAgbmVlZFRvU2Nyb2xsIHw9
Ci0gICAgICAgIHVwZGF0ZVBlckF4aXNEYXRhKG1fdmVydGljYWxEYXRhLCBncmFudWxhcml0eSwg
cG9zaXRpb24ueSgpIC0gbV92ZXJ0aWNhbERhdGEuY3VycmVudFBvc2l0aW9uLCBtX3Njcm9sbGFi
bGVBcmVhLm1pbmltdW1TY3JvbGxQb3NpdGlvbigpLnkoKSwgbV9zY3JvbGxhYmxlQXJlYS5tYXhp
bXVtU2Nyb2xsUG9zaXRpb24oKS55KCksIHNtb290aEZhY3RvckZvclByb2dyYW1tYXRpY1Njcm9s
bCk7CisgICAgICAgIHVwZGF0ZVBlckF4aXNEYXRhKG1fdmVydGljYWxEYXRhLCBncmFudWxhcml0
eSwgcG9zaXRpb24ueSgpIC0gbV92ZXJ0aWNhbERhdGEuY3VycmVudFBvc2l0aW9uLCBleHRlbnRz
Lm1pbmltdW1TY3JvbGxQb3NpdGlvbi55KCksIGV4dGVudHMubWF4aW11bVNjcm9sbFBvc2l0aW9u
LnkoKSwgc21vb3RoRmFjdG9yRm9yUHJvZ3JhbW1hdGljU2Nyb2xsKTsKICAgICBpZiAobmVlZFRv
U2Nyb2xsICYmICFhbmltYXRpb25UaW1lckFjdGl2ZSgpKSB7CiAgICAgICAgIG1fc3RhcnRUaW1l
ID0gbV9ob3Jpem9udGFsRGF0YS5zdGFydFRpbWU7CiAgICAgICAgIGFuaW1hdGlvblRpbWVyRmly
ZWQoKTsKQEAgLTgxLDEzICsxMDgsMTQgQEAgdm9pZCBTY3JvbGxBbmltYXRpb25TbW9vdGg6OnNj
cm9sbChjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbikKIHZvaWQgU2Nyb2xsQW5pbWF0aW9uU21v
b3RoOjpzdG9wKCkKIHsKICAgICBtX2FuaW1hdGlvblRpbWVyLnN0b3AoKTsKLSAgICBtX3Njcm9s
bGFibGVBcmVhLnNldFNjcm9sbEJlaGF2aW9yU3RhdHVzKFNjcm9sbEJlaGF2aW9yU3RhdHVzOjpO
b3RJbkFuaW1hdGlvbik7CisgICAgbV9ub3RpZnlBbmltYXRpb25TdG9wcGVkRnVuY3Rpb24oKTsK
IH0KIAogdm9pZCBTY3JvbGxBbmltYXRpb25TbW9vdGg6OnVwZGF0ZVZpc2libGVMZW5ndGhzKCkK
IHsKLSAgICBtX2hvcml6b250YWxEYXRhLnZpc2libGVMZW5ndGggPSBtX3Njcm9sbGFibGVBcmVh
LnZpc2libGVXaWR0aCgpOwotICAgIG1fdmVydGljYWxEYXRhLnZpc2libGVMZW5ndGggPSBtX3Nj
cm9sbGFibGVBcmVhLnZpc2libGVIZWlnaHQoKTsKKyAgICBhdXRvIGV4dGVudHMgPSBtX3Njcm9s
bEV4dGVudHNGdW5jdGlvbigpOworICAgIG1faG9yaXpvbnRhbERhdGEudmlzaWJsZUxlbmd0aCA9
IGV4dGVudHMudmlzaWJsZVNpemUud2lkdGgoKTsKKyAgICBtX3ZlcnRpY2FsRGF0YS52aXNpYmxl
TGVuZ3RoID0gZXh0ZW50cy52aXNpYmxlU2l6ZS5oZWlnaHQoKTsKIH0KIAogdm9pZCBTY3JvbGxB
bmltYXRpb25TbW9vdGg6OnNldEN1cnJlbnRQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiBwb3Np
dGlvbikKQEAgLTQxMSw3ICs0MzksNyBAQCB2b2lkIFNjcm9sbEFuaW1hdGlvblNtb290aDo6YW5p
bWF0aW9uVGltZXJGaXJlZCgpCiAgICAgaWYgKGNvbnRpbnVlQW5pbWF0aW9uKQogICAgICAgICBz
dGFydE5leHRUaW1lcihzdGQ6Om1heChtaW5pbXVtVGltZXJJbnRlcnZhbCwgZGVsdGFUb05leHRG
cmFtZSkpOwogICAgIGVsc2UKLSAgICAgICAgbV9zY3JvbGxhYmxlQXJlYS5zZXRTY3JvbGxCZWhh
dmlvclN0YXR1cyhTY3JvbGxCZWhhdmlvclN0YXR1czo6Tm90SW5BbmltYXRpb24pOworICAgICAg
ICBtX25vdGlmeUFuaW1hdGlvblN0b3BwZWRGdW5jdGlvbigpOwogCiAgICAgbV9ub3RpZnlQb3Np
dGlvbkNoYW5nZWRGdW5jdGlvbihGbG9hdFBvaW50KG1faG9yaXpvbnRhbERhdGEuY3VycmVudFBv
c2l0aW9uLCBtX3ZlcnRpY2FsRGF0YS5jdXJyZW50UG9zaXRpb24pKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmgKaW5kZXggODllZWZjOGZk
ZDllM2UyMzgyNzViZGQ0M2MzMTAxOTc3MmU2NTU5YS4uZDQxMGFkY2U2M2RjZDQ3MjJmZGVjMTNh
NDlkM2EzYzhiNmUxMTBjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsQW5pbWF0aW9uU21vb3RoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
QW5pbWF0aW9uU21vb3RoLmgKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2luY2x1ZGUgIlNjcm9sbEFu
aW1hdGlvbi5oIgogCi0jaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM3LDcgKzM3LDExIEBAIGVudW0gY2xhc3Mg
U2Nyb2xsQ2xhbXBpbmcgOiBib29sOwogCiBjbGFzcyBTY3JvbGxBbmltYXRpb25TbW9vdGggZmlu
YWw6IHB1YmxpYyBTY3JvbGxBbmltYXRpb24gewogcHVibGljOgotICAgIFNjcm9sbEFuaW1hdGlv
blNtb290aChTY3JvbGxhYmxlQXJlYSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBXVEY6OkZ1bmN0aW9u
PHZvaWQgKEZsb2F0UG9pbnQmJik+JiYgbm90aWZ5UG9zaXRpb25DaGFuZ2VkRnVuY3Rpb24pOwor
ICAgIHVzaW5nIFNjcm9sbEV4dGVudHNDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248U2Nyb2xsRXh0
ZW50cyh2b2lkKT47CisgICAgdXNpbmcgTm90aWZ5UG9zaXRpb25DaGFuZ2VkQ2FsbGJhY2sgPSBX
VEY6OkZ1bmN0aW9uPHZvaWQoRmxvYXRQb2ludCYmKT47CisgICAgdXNpbmcgTm90aWZ5QW5pbWF0
aW9uU3RvcHBlZENhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKHZvaWQpPjsKKworICAgIFNj
cm9sbEFuaW1hdGlvblNtb290aChTY3JvbGxFeHRlbnRzQ2FsbGJhY2smJiwgY29uc3QgRmxvYXRQ
b2ludCYgcG9zaXRpb24sIE5vdGlmeVBvc2l0aW9uQ2hhbmdlZENhbGxiYWNrJiYsIE5vdGlmeUFu
aW1hdGlvblN0b3BwZWRDYWxsYmFjayYmKTsKICAgICB2aXJ0dWFsIH5TY3JvbGxBbmltYXRpb25T
bW9vdGgoKTsKIAogICAgIGVudW0gY2xhc3MgQ3VydmUgewpAQCAtNTgsNiArNjIsOCBAQCBwcml2
YXRlOgogICAgIHN0cnVjdCBQZXJBeGlzRGF0YSB7CiAgICAgICAgIFBlckF4aXNEYXRhKCkgPSBk
ZWxldGU7CiAKKyAgICAgICAgUGVyQXhpc0RhdGEoU2Nyb2xsYmFyT3JpZW50YXRpb24sIGNvbnN0
IEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBTY3JvbGxFeHRlbnRzQ2FsbGJhY2smKTsKKwogICAgICAg
ICBQZXJBeGlzRGF0YShmbG9hdCBwb3NpdGlvbiwgaW50IGxlbmd0aCkKICAgICAgICAgICAgIDog
Y3VycmVudFBvc2l0aW9uKHBvc2l0aW9uKQogICAgICAgICAgICAgLCBkZXNpcmVkUG9zaXRpb24o
cG9zaXRpb24pCkBAIC05NywxMyArMTAzLDE1IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhbmltYXRp
b25UaW1lckZpcmVkKCk7CiAgICAgYm9vbCBhbmltYXRpb25UaW1lckFjdGl2ZSgpIGNvbnN0Owog
Ci0gICAgV1RGOjpGdW5jdGlvbjx2b2lkIChGbG9hdFBvaW50JiYpPiBtX25vdGlmeVBvc2l0aW9u
Q2hhbmdlZEZ1bmN0aW9uOworICAgIFNjcm9sbEV4dGVudHNDYWxsYmFjayBtX3Njcm9sbEV4dGVu
dHNGdW5jdGlvbjsKKyAgICBOb3RpZnlQb3NpdGlvbkNoYW5nZWRDYWxsYmFjayBtX25vdGlmeVBv
c2l0aW9uQ2hhbmdlZEZ1bmN0aW9uOworICAgIE5vdGlmeUFuaW1hdGlvblN0b3BwZWRDYWxsYmFj
ayBtX25vdGlmeUFuaW1hdGlvblN0b3BwZWRGdW5jdGlvbjsKIAogICAgIFBlckF4aXNEYXRhIG1f
aG9yaXpvbnRhbERhdGE7CiAgICAgUGVyQXhpc0RhdGEgbV92ZXJ0aWNhbERhdGE7CiAKICAgICBN
b25vdG9uaWNUaW1lIG1fc3RhcnRUaW1lOwotICAgIFRpbWVyIG1fYW5pbWF0aW9uVGltZXI7Cisg
ICAgUnVuTG9vcDo6VGltZXI8U2Nyb2xsQW5pbWF0aW9uU21vb3RoPiBtX2FuaW1hdGlvblRpbWVy
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsQW5pbWF0b3IuY3BwCmluZGV4IGVlMWIyNmY2YTI3NzY1NWQxYWZiYjExYjM5NDZmZWQx
ZGViMGNlYzMuLjRiZTE2MzFhMWEwODk4ZTNjYzAxMmY3NTI4NDM4ZTEwZmJjMWViNTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKQEAgLTU3LDExICs1Nywx
OSBAQCBTY3JvbGxBbmltYXRvcjo6U2Nyb2xsQW5pbWF0b3IoU2Nyb2xsYWJsZUFyZWEmIHNjcm9s
bGFibGVBcmVhKQogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApIHx8IEVOQUJMRShSVUJCRVJf
QkFORElORykKICAgICAsIG1fc2Nyb2xsQ29udHJvbGxlcigqdGhpcykKICNlbmRpZgotICAgICwg
bV9hbmltYXRpb25Qcm9ncmFtbWF0aWNTY3JvbGwobWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRpb25T
bW9vdGg+KHNjcm9sbGFibGVBcmVhLCBtX2N1cnJlbnRQb3NpdGlvbiwgW3RoaXNdKEZsb2F0UG9p
bnQmJiBwb3NpdGlvbikgewotICAgICAgICBGbG9hdFNpemUgZGVsdGEgPSBwb3NpdGlvbiAtIG1f
Y3VycmVudFBvc2l0aW9uOwotICAgICAgICBtX2N1cnJlbnRQb3NpdGlvbiA9IFdURk1vdmUocG9z
aXRpb24pOwotICAgICAgICBub3RpZnlQb3NpdGlvbkNoYW5nZWQoZGVsdGEpOwotICAgIH0pKQor
ICAgICwgbV9hbmltYXRpb25Qcm9ncmFtbWF0aWNTY3JvbGwobWFrZVVuaXF1ZTxTY3JvbGxBbmlt
YXRpb25TbW9vdGg+KAorICAgICAgICBbdGhpc10oKSAtPiBTY3JvbGxFeHRlbnRzIHsKKyAgICAg
ICAgICAgIHJldHVybiB7IG1fc2Nyb2xsYWJsZUFyZWEubWluaW11bVNjcm9sbFBvc2l0aW9uKCks
IG1fc2Nyb2xsYWJsZUFyZWEubWF4aW11bVNjcm9sbFBvc2l0aW9uKCksIG1fc2Nyb2xsYWJsZUFy
ZWEudmlzaWJsZVNpemUoKSB9OworICAgICAgICB9LAorICAgICAgICBtX2N1cnJlbnRQb3NpdGlv
biwKKyAgICAgICAgW3RoaXNdKEZsb2F0UG9pbnQmJiBwb3NpdGlvbikgeworICAgICAgICAgICAg
RmxvYXRTaXplIGRlbHRhID0gcG9zaXRpb24gLSBtX2N1cnJlbnRQb3NpdGlvbjsKKyAgICAgICAg
ICAgIG1fY3VycmVudFBvc2l0aW9uID0gV1RGTW92ZShwb3NpdGlvbik7CisgICAgICAgICAgICBu
b3RpZnlQb3NpdGlvbkNoYW5nZWQoZGVsdGEpOworICAgICAgICB9LAorICAgICAgICBbdGhpc10g
eworICAgICAgICAgICAgbV9zY3JvbGxhYmxlQXJlYS5zZXRTY3JvbGxCZWhhdmlvclN0YXR1cyhT
Y3JvbGxCZWhhdmlvclN0YXR1czo6Tm90SW5BbmltYXRpb24pOworICAgICAgICB9KSkKIHsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmlt
YXRvckdlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxB
bmltYXRvckdlbmVyaWMuY3BwCmluZGV4IDZhMzM1MGUzZDE2ZWQ5NTZlNzJiYThjZDg4M2U1ZTNi
YTdlMGU0OTkuLmMwNGE0ODBkNTU5NmM3MWNjZjJhNTRhMjk1Zjk5ZTZmOTk1ODhhMWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5l
cmljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1h
dG9yR2VuZXJpYy5jcHAKQEAgLTUxLDggKzUxLDggQEAgU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpT
Y3JvbGxBbmltYXRvckdlbmVyaWMoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhKQogICAg
ICwgbV9vdmVybGF5U2Nyb2xsYmFyQW5pbWF0aW9uVGltZXIoKnRoaXMsICZTY3JvbGxBbmltYXRv
ckdlbmVyaWM6Om92ZXJsYXlTY3JvbGxiYXJBbmltYXRpb25UaW1lckZpcmVkKQogewogICAgIG1f
a2luZXRpY0FuaW1hdGlvbiA9IG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0aW9uS2luZXRpYz4oCi0g
ICAgICAgIFt0aGlzXSgpIC0+IFNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OlNjcm9sbEV4dGVudHMg
ewotICAgICAgICAgICAgcmV0dXJuIHsgbV9zY3JvbGxhYmxlQXJlYS5taW5pbXVtU2Nyb2xsUG9z
aXRpb24oKSwgbV9zY3JvbGxhYmxlQXJlYS5tYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSB9OworICAg
ICAgICBbdGhpc10oKSAtPiBTY3JvbGxFeHRlbnRzIHsKKyAgICAgICAgICAgIHJldHVybiB7IG1f
c2Nyb2xsYWJsZUFyZWEubWluaW11bVNjcm9sbFBvc2l0aW9uKCksIG1fc2Nyb2xsYWJsZUFyZWEu
bWF4aW11bVNjcm9sbFBvc2l0aW9uKCksIG1fc2Nyb2xsYWJsZUFyZWEudmlzaWJsZVNpemUoKSB9
OwogICAgICAgICB9LAogICAgICAgICBbdGhpc10oRmxvYXRQb2ludCYmIHBvc2l0aW9uKSB7CiAj
aWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCkBAIC03Niw5ICs3NiwxNyBAQCB2b2lkIFNjcm9s
bEFuaW1hdG9yR2VuZXJpYzo6ZW5zdXJlU21vb3RoU2Nyb2xsaW5nQW5pbWF0aW9uKCkKICAgICBp
ZiAobV9zbW9vdGhBbmltYXRpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fc21vb3RoQW5p
bWF0aW9uID0gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRpb25TbW9vdGg+KG1fc2Nyb2xsYWJsZUFy
ZWEsIG1fY3VycmVudFBvc2l0aW9uLCBbdGhpc10oRmxvYXRQb2ludCYmIHBvc2l0aW9uKSB7Ci0g
ICAgICAgIHVwZGF0ZVBvc2l0aW9uKFdURk1vdmUocG9zaXRpb24pKTsKLSAgICB9KTsKKyAgICBt
X3Ntb290aEFuaW1hdGlvbiA9IG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0aW9uU21vb3RoPigKKyAg
ICAgICAgW3RoaXNdKCkgLT4gU2Nyb2xsRXh0ZW50cyB7CisgICAgICAgICAgICByZXR1cm4geyBt
X3Njcm9sbGFibGVBcmVhLm1pbmltdW1TY3JvbGxQb3NpdGlvbigpLCBtX3Njcm9sbGFibGVBcmVh
Lm1heGltdW1TY3JvbGxQb3NpdGlvbigpLCBtX3Njcm9sbGFibGVBcmVhLnZpc2libGVTaXplKCkg
fTsKKyAgICAgICAgfSwKKyAgICAgICAgbV9jdXJyZW50UG9zaXRpb24sCisgICAgICAgIFt0aGlz
XShGbG9hdFBvaW50JiYgcG9zaXRpb24pIHsKKyAgICAgICAgICAgIHVwZGF0ZVBvc2l0aW9uKFdU
Rk1vdmUocG9zaXRpb24pKTsKKyAgICAgICAgfSwKKyAgICAgICAgW3RoaXNdIHsKKyAgICAgICAg
ICAgIG1fc2Nyb2xsYWJsZUFyZWEuc2V0U2Nyb2xsQmVoYXZpb3JTdGF0dXMoU2Nyb2xsQmVoYXZp
b3JTdGF0dXM6Ok5vdEluQW5pbWF0aW9uKTsKKyAgICAgICAgfSk7CiB9CiAjZW5kaWYKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407665</attachid>
            <date>2020-09-01 02:00:09 -0700</date>
            <delta_ts>2020-10-13 02:34:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210382-20200901100007.patch</filename>
            <type>text/plain</type>
            <size>33689</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1ODQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDIyZGExZTFiZDk2NGIx
MmNhYjhiMGUxNDEwNTZhZTNmOTcyOWI1OS4uYzNhMGRkNGU0YmUwZDExZjE4YWVmMGRkMTM4M2Nj
YzM3YjdmNGNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDIwLTA4LTE5ICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIEFkZCBzdXBw
b3J0IGZvciBzbW9vdGggc2Nyb2xsaW5nIGFuaW1hdGlvbiB3aXRoIGFzeW5jIHNjcm9sbGluZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMzgyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQ2FybG9zIEdhcmNpYSBDYW1wb3MuCisKKyAgICAgICAgVGhp
cyByZW1vdmVzIHRoZSBkZXBlbmRlbmN5IG9uIFNjcm9sbGFibGVBcmVhIGZyb20KKyAgICAgICAg
U2Nyb2xsQW5pbWF0aW9uU21vb3RoLCB3aGljaCBhbGxvd3MgaXRzIHVzZSBhcyBhIHV0aWxpdHkg
Y2xhc3MgZm9yCisgICAgICAgIHNtb290aCBzY3JvbGxpbmcuIFRoaXMgY2xhc3MgaXMgdGhlbiB1
c2VkIGluIHRoZSBOaWNvc2lhIGFzeW5jIGxheWVyCisgICAgICAgIGNvbXBvc2l0aW9uIHNjcm9s
bGluZyBjb2RlIHRvIHByb3ZpZGUgc21vb3RoIHNjcm9sbGluZywgd2hlbiB0aGUKKyAgICAgICAg
ZmVhdHVyZSBpcyBlbmFibGVkLiBUaGlzIG1pcnJvcnMgdGhlIHdvcmsgZG9uZSBpbiBidWcgMjA5
MjMwIGZvcgorICAgICAgICBraW5ldGljIHNjcm9sbGluZy4KKworICAgICAgICBObyBuZXcgdGVz
dHMsIGVuYWJsaW5nIGV4aXN0aW5nIGZ1bmN0aW9uYWxpdHkgaW4gbW9yZSBzaXR1YXRpb25zLgor
CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OnNjcm9sbFRv
KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGVOaWNvc2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2Rl
Tmljb3NpYSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdO
b2RlTmljb3NpYTo6Y29tbWl0U3RhdGVBZnRlckNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjpoYW5kbGVXaGVlbEV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNv
c2lhOjpzdG9wU2Nyb2xsQW5pbWF0aW9ucyk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbmlj
b3NpYS9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYS5oOgorICAgICAgICAq
IHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9k
ZU5pY29zaWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Ny
b2xsaW5nTm9kZU5pY29zaWE6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNv
c2lhKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05v
ZGVOaWNvc2lhOjpjb21taXRTdGF0ZUFmdGVyQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWE6OmhhbmRsZVdoZWVsRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9k
ZU5pY29zaWE6OnN0b3BTY3JvbGxBbmltYXRpb25zKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGlu
Zy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxBbmltYXRpb246OnNlcnZpY2VBbmltYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL1Nj
cm9sbEFuaW1hdGlvbktpbmV0aWMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1h
dGlvbktpbmV0aWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGgu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpTY3JvbGxBbmlt
YXRpb25TbW9vdGgpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpz
Y3JvbGwpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpzdG9wKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblNtb290aDo6dXBkYXRlVmlzaWJsZUxl
bmd0aHMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uU21vb3RoOjphbmltYXRp
b25UaW1lckZpcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGgu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxBbmltYXRvcjo6U2Nyb2xsQW5pbWF0b3IpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbEFuaW1hdG9yR2VuZXJpYzo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6ZW5zdXJlU21vb3RoU2Nyb2xsaW5nQW5pbWF0
aW9uKToKKwogMjAyMC0wOC0xOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAg
ICAgICAgIEF1ZGlvQnVmZmVyLmR1cmF0aW9uIHNob3VsZCB1c2UgZG91YmxlIHByZWNpc2lvbgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGUuY3BwCmluZGV4IDIzMDFjOTY1ODc1OGUxNWQyMjViYTRkOTEzZjZh
Y2FiNWE4ZjQzZGMuLjcxM2I5OTI3MDFkYmFlYzZjMmUyMjNiZjdkNDcwMzA5OTc2OThhMTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAKQEAgLTI1Niw5ICsyNTYsNiBAQCB2b2lkIFNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlOjpzY3JvbGxUbyhjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbiwg
U2Nyb2xsVHlwZQogICAgIGlmIChwb3NpdGlvbiA9PSBtX2N1cnJlbnRTY3JvbGxQb3NpdGlvbikK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHNjcm9sbFR5cGUgPT0gU2Nyb2xsVHlwZTo6UHJv
Z3JhbW1hdGljKQotICAgICAgICBzdG9wU2Nyb2xsQW5pbWF0aW9ucygpOwotCiAgICAgc2Nyb2xs
aW5nVHJlZSgpLnNldElzSGFuZGxpbmdQcm9ncmFtbWF0aWNTY3JvbGwoc2Nyb2xsVHlwZSA9PSBT
Y3JvbGxUeXBlOjpQcm9ncmFtbWF0aWMpOwogICAgIAogICAgIG1fY3VycmVudFNjcm9sbFBvc2l0
aW9uID0gYWRqdXN0ZWRTY3JvbGxQb3NpdGlvbihwb3NpdGlvbiwgY2xhbXApOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRnJh
bWVTY3JvbGxpbmdOb2RlTmljb3NpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhLmNwcAppbmRl
eCBjYjUyZWQ4MDViYTNiNGY1ZjM4MDFhMjQzZjdkNmQ4ZmEwODc2MWRjLi4wOGI1ZTVlNGY2ZjBm
NTlmOThiNTIwYjI4Yzk5ODVkM2IxNWMwNTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNv
c2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9s
bGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhLmNwcApAQCAtNDAsNiArNDAsOSBAQAog
I2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykKICNpbmNsdWRlICJTY3JvbGxBbmltYXRpb25L
aW5ldGljLmgiCiAjZW5kaWYKKyNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKKyNpbmNsdWRl
ICJTY3JvbGxBbmltYXRpb25TbW9vdGguaCIKKyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTUzLDEwICs1NiwxNCBAQCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmlj
b3NpYTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEoUwogewogI2lmIEVO
QUJMRShLSU5FVElDX1NDUk9MTElORykKICAgICBtX2tpbmV0aWNBbmltYXRpb24gPSBtYWtlVW5p
cXVlPFNjcm9sbEFuaW1hdGlvbktpbmV0aWM+KAotICAgICAgICBbdGhpc10oKSAtPiBTY3JvbGxB
bmltYXRpb25LaW5ldGljOjpTY3JvbGxFeHRlbnRzIHsKLSAgICAgICAgICAgIHJldHVybiB7IElu
dFBvaW50KG1pbmltdW1TY3JvbGxQb3NpdGlvbigpKSwgSW50UG9pbnQobWF4aW11bVNjcm9sbFBv
c2l0aW9uKCkpIH07CisgICAgICAgIFt0aGlzXSgpIC0+IFNjcm9sbEV4dGVudHMgeworICAgICAg
ICAgICAgcmV0dXJuIHsgSW50UG9pbnQobWluaW11bVNjcm9sbFBvc2l0aW9uKCkpLCBJbnRQb2lu
dChtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSksIEludFNpemUoc2Nyb2xsYWJsZUFyZWFTaXplKCkp
IH07CiAgICAgICAgIH0sCiAgICAgICAgIFt0aGlzXShGbG9hdFBvaW50JiYgcG9zaXRpb24pIHsK
KyNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKKyAgICAgICAgICAgIG1fc21vb3RoQW5pbWF0
aW9uLT5zZXRDdXJyZW50UG9zaXRpb24ocG9zaXRpb24pOworI2VuZGlmCisKICAgICAgICAgICAg
IGF1dG8qIHNjcm9sbExheWVyID0gc3RhdGljX2Nhc3Q8Tmljb3NpYTo6UGxhdGZvcm1MYXllcio+
KHNjcm9sbGVkQ29udGVudHNMYXllcigpKTsKICAgICAgICAgICAgIEFTU0VSVChzY3JvbGxMYXll
cik7CiAgICAgICAgICAgICBhdXRvJiBjb21wb3NpdGlvbkxheWVyID0gZG93bmNhc3Q8Tmljb3Np
YTo6Q29tcG9zaXRpb25MYXllcj4oKnNjcm9sbExheWVyKTsKQEAgLTY1LDYgKzcyLDIyIEBAIFNj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjpTY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlTmljb3NpYShTCiAgICAgICAgICAgICBzY3JvbGxUbyhwb3NpdGlvbik7CiAg
ICAgICAgIH0pOwogI2VuZGlmCisjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCisgICAgbV9z
bW9vdGhBbmltYXRpb24gPSBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlvblNtb290aD4oCisgICAg
ICAgIFt0aGlzXSgpIC0+IFNjcm9sbEV4dGVudHMgeworICAgICAgICAgICAgcmV0dXJuIHsgSW50
UG9pbnQobWluaW11bVNjcm9sbFBvc2l0aW9uKCkpLCBJbnRQb2ludChtYXhpbXVtU2Nyb2xsUG9z
aXRpb24oKSksIEludFNpemUoc2Nyb2xsYWJsZUFyZWFTaXplKCkpIH07CisgICAgICAgIH0sCisg
ICAgICAgIGN1cnJlbnRTY3JvbGxQb3NpdGlvbigpLAorICAgICAgICBbdGhpc10oRmxvYXRQb2lu
dCYmIHBvc2l0aW9uKSB7CisgICAgICAgICAgICBhdXRvKiBzY3JvbGxMYXllciA9IHN0YXRpY19j
YXN0PE5pY29zaWE6OlBsYXRmb3JtTGF5ZXIqPihzY3JvbGxlZENvbnRlbnRzTGF5ZXIoKSk7Cisg
ICAgICAgICAgICBBU1NFUlQoc2Nyb2xsTGF5ZXIpOworICAgICAgICAgICAgYXV0byYgY29tcG9z
aXRpb25MYXllciA9IGRvd25jYXN0PE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+KCpzY3JvbGxM
YXllcik7CisKKyAgICAgICAgICAgIGF1dG8gdXBkYXRlU2NvcGUgPSBjb21wb3NpdGlvbkxheWVy
LmNyZWF0ZVVwZGF0ZVNjb3BlKCk7CisgICAgICAgICAgICBzY3JvbGxUbyhwb3NpdGlvbik7Cisg
ICAgICAgIH0sCisgICAgICAgIFtdIHsgfSk7CisjZW5kaWYKIH0KIAogU2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZU5pY29zaWE6On5TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2Rl
Tmljb3NpYSgpID0gZGVmYXVsdDsKQEAgLTEwOSw4ICsxMzIsMTIgQEAgdm9pZCBTY3JvbGxpbmdU
cmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYTo6Y29tbWl0U3RhdGVBZnRlckNoaWxkcmVuKGNv
bnN0IFNjcm8KIAogICAgIC8vIFVwZGF0ZSB0aGUgc2Nyb2xsIHBvc2l0aW9uIGFmdGVyIGNoaWxk
IG5vZGVzIGhhdmUgYmVlbiB1cGRhdGVkLCBiZWNhdXNlIHRoZXkgbmVlZCB0byBoYXZlIHVwZGF0
ZWQgdGhlaXIgY29uc3RyYWludHMgYmVmb3JlIGFueSBzY3JvbGxpbmcgaGFwcGVucy4KICAgICBp
ZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNj
cm9sbGluZ05vZGU6OlJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uKSkgeworICAgICAgICBzdG9wU2Ny
b2xsQW5pbWF0aW9ucygpOwogICAgICAgICBjb25zdCBhdXRvJiByZXF1ZXN0ZWRTY3JvbGxEYXRh
ID0gc2Nyb2xsaW5nU3RhdGVOb2RlLnJlcXVlc3RlZFNjcm9sbERhdGEoKTsKICAgICAgICAgc2Ny
b2xsVG8ocmVxdWVzdGVkU2Nyb2xsRGF0YS5zY3JvbGxQb3NpdGlvbiwgcmVxdWVzdGVkU2Nyb2xs
RGF0YS5zY3JvbGxUeXBlLCByZXF1ZXN0ZWRTY3JvbGxEYXRhLmNsYW1waW5nKTsKKyNpZiBFTkFC
TEUoU01PT1RIX1NDUk9MTElORykKKyAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnNldEN1cnJl
bnRQb3NpdGlvbihjdXJyZW50U2Nyb2xsUG9zaXRpb24oKSk7CisjZW5kaWYKICAgICB9CiB9CiAK
QEAgLTExOSwzMyArMTQ2LDYwIEBAIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdCBTY3JvbGxpbmdU
cmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYTo6aGFuZGxlV2hlZWxFdmVuCiAgICAgaWYgKCFj
YW5IYW5kbGVXaGVlbEV2ZW50KHdoZWVsRXZlbnQpKQogICAgICAgICByZXR1cm4gV2hlZWxFdmVu
dEhhbmRsaW5nUmVzdWx0Ojp1bmhhbmRsZWQoKTsKIAotICAgIGlmICh3aGVlbEV2ZW50LmRlbHRh
WCgpIHx8IHdoZWVsRXZlbnQuZGVsdGFZKCkpIHsKLSAgICAgICAgYXV0byogc2Nyb2xsTGF5ZXIg
PSBzdGF0aWNfY2FzdDxOaWNvc2lhOjpQbGF0Zm9ybUxheWVyKj4oc2Nyb2xsZWRDb250ZW50c0xh
eWVyKCkpOwotICAgICAgICBBU1NFUlQoc2Nyb2xsTGF5ZXIpOwotICAgICAgICBhdXRvJiBjb21w
b3NpdGlvbkxheWVyID0gZG93bmNhc3Q8Tmljb3NpYTo6Q29tcG9zaXRpb25MYXllcj4oKnNjcm9s
bExheWVyKTsKLQotICAgICAgICBhdXRvIHVwZGF0ZVNjb3BlID0gY29tcG9zaXRpb25MYXllci5j
cmVhdGVVcGRhdGVTY29wZSgpOwotICAgICAgICBzY3JvbGxCeSh7IC13aGVlbEV2ZW50LmRlbHRh
WCgpLCAtd2hlZWxFdmVudC5kZWx0YVkoKSB9KTsKLQotICAgIH0KLQogI2lmIEVOQUJMRShLSU5F
VElDX1NDUk9MTElORykKICAgICBtX2tpbmV0aWNBbmltYXRpb24tPmFwcGVuZFRvU2Nyb2xsSGlz
dG9yeSh3aGVlbEV2ZW50KTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xMSU5H
KQogICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+c3RvcCgpOwogICAgIGlmICh3aGVlbEV2ZW50Lmlz
RW5kT2ZOb25Nb21lbnR1bVNjcm9sbCgpKSB7CiAgICAgICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+
c3RhcnQoY3VycmVudFNjcm9sbFBvc2l0aW9uKCksIG1fa2luZXRpY0FuaW1hdGlvbi0+Y29tcHV0
ZVZlbG9jaXR5KCksIGNhbkhhdmVIb3Jpem9udGFsU2Nyb2xsYmFyKCksIGNhbkhhdmVWZXJ0aWNh
bFNjcm9sbGJhcigpKTsKICAgICAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5jbGVhclNjcm9sbEhp
c3RvcnkoKTsKKyAgICAgICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6aGFuZGxl
ZCgpOwogICAgIH0KICAgICBpZiAod2hlZWxFdmVudC5pc1RyYW5zaXRpb25pbmdUb01vbWVudHVt
U2Nyb2xsKCkpIHsKICAgICAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5zdGFydChjdXJyZW50U2Ny
b2xsUG9zaXRpb24oKSwgd2hlZWxFdmVudC5zd2lwZVZlbG9jaXR5KCksIGNhbkhhdmVIb3Jpem9u
dGFsU2Nyb2xsYmFyKCksIGNhbkhhdmVWZXJ0aWNhbFNjcm9sbGJhcigpKTsKICAgICAgICAgbV9r
aW5ldGljQW5pbWF0aW9uLT5jbGVhclNjcm9sbEhpc3RvcnkoKTsKKyAgICAgICAgcmV0dXJuIFdo
ZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6aGFuZGxlZCgpOworICAgIH0KKyNlbmRpZgorCisgICAg
ZmxvYXQgZGVsdGFYID0gY2FuSGF2ZUhvcml6b250YWxTY3JvbGxiYXIoKSA/IHdoZWVsRXZlbnQu
ZGVsdGFYKCkgOiAwOworICAgIGZsb2F0IGRlbHRhWSA9IGNhbkhhdmVWZXJ0aWNhbFNjcm9sbGJh
cigpID8gd2hlZWxFdmVudC5kZWx0YVkoKSA6IDA7CisgICAgaWYgKChkZWx0YVggPCAwICYmIGN1
cnJlbnRTY3JvbGxQb3NpdGlvbigpLngoKSA+PSBtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKS54KCkp
CisgICAgICAgIHx8IChkZWx0YVggPiAwICYmIGN1cnJlbnRTY3JvbGxQb3NpdGlvbigpLngoKSA8
PSBtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKS54KCkpKQorICAgICAgICBkZWx0YVggPSAwOworICAg
IGlmICgoZGVsdGFZIDwgMCAmJiBjdXJyZW50U2Nyb2xsUG9zaXRpb24oKS55KCkgPj0gbWF4aW11
bVNjcm9sbFBvc2l0aW9uKCkueSgpKQorICAgICAgICB8fCAoZGVsdGFZID4gMCAmJiBjdXJyZW50
U2Nyb2xsUG9zaXRpb24oKS55KCkgPD0gbWluaW11bVNjcm9sbFBvc2l0aW9uKCkueSgpKSkKKyAg
ICAgICAgZGVsdGFZID0gMDsKKworICAgIGlmICghZGVsdGFYICYmICFkZWx0YVkpCisgICAgICAg
IHJldHVybiBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQ6OnVuaGFuZGxlZCgpOworCisgICAgaWYg
KHdoZWVsRXZlbnQuZ3JhbnVsYXJpdHkoKSA9PSBTY3JvbGxCeVBhZ2VXaGVlbEV2ZW50KSB7Cisg
ICAgICAgIGlmIChkZWx0YVgpIHsKKyAgICAgICAgICAgIGJvb2wgbmVnYXRpdmUgPSBkZWx0YVgg
PCAwOworICAgICAgICAgICAgZGVsdGFYID0gU2Nyb2xsYmFyOjpwYWdlU3RlcERlbHRhKHNjcm9s
bGFibGVBcmVhU2l6ZSgpLndpZHRoKCkpOworICAgICAgICAgICAgaWYgKG5lZ2F0aXZlKQorICAg
ICAgICAgICAgICAgIGRlbHRhWCA9IC1kZWx0YVg7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGRl
bHRhWSkgeworICAgICAgICAgICAgYm9vbCBuZWdhdGl2ZSA9IGRlbHRhWSA8IDA7CisgICAgICAg
ICAgICBkZWx0YVkgPSBTY3JvbGxiYXI6OnBhZ2VTdGVwRGVsdGEoc2Nyb2xsYWJsZUFyZWFTaXpl
KCkuaGVpZ2h0KCkpOworICAgICAgICAgICAgaWYgKG5lZ2F0aXZlKQorICAgICAgICAgICAgICAg
IGRlbHRhWSA9IC1kZWx0YVk7CisgICAgICAgIH0KICAgICB9CisKKyNpZiBFTkFCTEUoU01PT1RI
X1NDUk9MTElORykKKyAgICBtX3Ntb290aEFuaW1hdGlvbi0+c2Nyb2xsKEhvcml6b250YWxTY3Jv
bGxiYXIsIFNjcm9sbEJ5UGl4ZWwsIDEsIC1kZWx0YVgpOworICAgIG1fc21vb3RoQW5pbWF0aW9u
LT5zY3JvbGwoVmVydGljYWxTY3JvbGxiYXIsIFNjcm9sbEJ5UGl4ZWwsIDEsIC1kZWx0YVkpOwor
I2Vsc2UKKyAgICBhdXRvKiBzY3JvbGxMYXllciA9IHN0YXRpY19jYXN0PE5pY29zaWE6OlBsYXRm
b3JtTGF5ZXIqPihzY3JvbGxlZENvbnRlbnRzTGF5ZXIoKSk7CisgICAgQVNTRVJUKHNjcm9sbExh
eWVyKTsKKyAgICBhdXRvJiBjb21wb3NpdGlvbkxheWVyID0gZG93bmNhc3Q8Tmljb3NpYTo6Q29t
cG9zaXRpb25MYXllcj4oKnNjcm9sbExheWVyKTsKKworICAgIGF1dG8gdXBkYXRlU2NvcGUgPSBj
b21wb3NpdGlvbkxheWVyLmNyZWF0ZVVwZGF0ZVNjb3BlKCk7CisgICAgc2Nyb2xsQnkoeyAtZGVs
dGFYLCAtZGVsdGFZIH0pOwogI2VuZGlmCiAKLSAgICAvLyBGSVhNRTogVGhpcyBuZWVkcyB0byBy
ZXR1cm4gd2hldGhlciB0aGUgZXZlbnQgd2FzIGhhbmRsZWQuCiAgICAgcmV0dXJuIFdoZWVsRXZl
bnRIYW5kbGluZ1Jlc3VsdDo6aGFuZGxlZCgpOwogfQogCkBAIC0xNTUsNiArMjA5LDkgQEAgdm9p
ZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYTo6c3RvcFNjcm9sbEFuaW1h
dGlvbnMoKQogICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+c3RvcCgpOwogICAgIG1fa2luZXRpY0Fu
aW1hdGlvbi0+Y2xlYXJTY3JvbGxIaXN0b3J5KCk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoU01PT1RI
X1NDUk9MTElORykKKyAgICBtX3Ntb290aEFuaW1hdGlvbi0+c3RvcCgpOworI2VuZGlmCiB9CiAK
IEZsb2F0UG9pbnQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWE6OmFkanVz
dGVkU2Nyb2xsUG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIFNjcm9sbENsYW1w
aW5nIGNsYW1waW5nKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYS5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlTmljb3NpYS5oCmluZGV4IDY0NzNhNGI1NmUxMDMxYjczNzk4YWNlMzg3ZmFl
YzhhODRkYzQ5Y2YuLjUwNTRiZWJmZWNmZGI2ZjliODE3ZjNjZWQzYmJkM2E5OTFjMzhmOTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5n
VHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lh
LmgKQEAgLTM5LDYgKzM5LDcgQEAgY2xhc3MgQ29tcG9zaXRpb25MYXllcjsKIH0KIAogbmFtZXNw
YWNlIFdlYkNvcmUgeworY2xhc3MgU2Nyb2xsQW5pbWF0aW9uOwogY2xhc3MgU2Nyb2xsQW5pbWF0
aW9uS2luZXRpYzsKIAogY2xhc3MgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29z
aWEgZmluYWwgOiBwdWJsaWMgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZSB7CkBAIC03
Myw2ICs3NCw5IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKQogICAg
IHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRpb25LaW5ldGljPiBtX2tpbmV0aWNBbmltYXRp
b247CiAjZW5kaWYKKyNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8U2Nyb2xsQW5pbWF0aW9uPiBtX3Ntb290aEFuaW1hdGlvbjsKKyNlbmRpZgogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3Np
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1Ry
ZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhLmNwcAppbmRleCBiNDViNmUxZjc2MzE4YjI1
NTllYTdlMDdmZTZkYjExNmNkZDUzNTg1Li4wNjlhZDRmOTIzZmNjNjU0MzBhOTRmYmNmNDU4M2Y1
ZWU4YmJmZDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNv
c2lhL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVPdmVyZmxv
d1Njcm9sbGluZ05vZGVOaWNvc2lhLmNwcApAQCAtMzUsNiArMzUsOSBAQAogI2lmIEVOQUJMRShL
SU5FVElDX1NDUk9MTElORykKICNpbmNsdWRlICJTY3JvbGxBbmltYXRpb25LaW5ldGljLmgiCiAj
ZW5kaWYKKyNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKKyNpbmNsdWRlICJTY3JvbGxBbmlt
YXRpb25TbW9vdGguaCIKKyNlbmRpZgogI2luY2x1ZGUgIlNjcm9sbGluZ1N0YXRlT3ZlcmZsb3dT
Y3JvbGxpbmdOb2RlLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZS5oIgogCkBAIC01MCwxMSAr
NTMsMTUgQEAgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWE6OlNjcm9s
bGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWMKIHsKICNpZiBFTkFCTEUoS0lORVRJQ19T
Q1JPTExJTkcpCiAgICAgbV9raW5ldGljQW5pbWF0aW9uID0gbWFrZVVuaXF1ZTxTY3JvbGxBbmlt
YXRpb25LaW5ldGljPigKLSAgICAgICAgW3RoaXNdKCkgLT4gU2Nyb2xsQW5pbWF0aW9uS2luZXRp
Yzo6U2Nyb2xsRXh0ZW50cyB7Ci0gICAgICAgICAgICByZXR1cm4geyBJbnRQb2ludChtaW5pbXVt
U2Nyb2xsUG9zaXRpb24oKSksIEludFBvaW50KG1heGltdW1TY3JvbGxQb3NpdGlvbigpKSB9Owor
ICAgICAgICBbdGhpc10oKSAtPiBTY3JvbGxFeHRlbnRzIHsKKyAgICAgICAgICAgIHJldHVybiB7
IEludFBvaW50KG1pbmltdW1TY3JvbGxQb3NpdGlvbigpKSwgSW50UG9pbnQobWF4aW11bVNjcm9s
bFBvc2l0aW9uKCkpLCBJbnRTaXplKHNjcm9sbGFibGVBcmVhU2l6ZSgpKSB9OwogICAgICAgICB9
LAogICAgICAgICBbdGhpc10oRmxvYXRQb2ludCYmIHBvc2l0aW9uKSB7Ci0gICAgICAgICAgICBh
dXRvKiBzY3JvbGxMYXllciA9IHN0YXRpY19jYXN0PE5pY29zaWE6OlBsYXRmb3JtTGF5ZXIqPihz
Y3JvbGxlZENvbnRlbnRzTGF5ZXIoKSk7CisjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCisg
ICAgICAgICAgICBtX3Ntb290aEFuaW1hdGlvbi0+c2V0Q3VycmVudFBvc2l0aW9uKHBvc2l0aW9u
KTsKKyNlbmRpZgorCisgICAgICAgICAgICBhdXRvKiBzY3JvbGxMYXllciA9IHN0YXRpY19jYXN0
PE5pY29zaWE6OlBsYXRmb3JtTGF5ZXIqPihzY3JvbGxDb250YWluZXJMYXllcigpKTsKICAgICAg
ICAgICAgIEFTU0VSVChzY3JvbGxMYXllcik7CiAgICAgICAgICAgICBhdXRvJiBjb21wb3NpdGlv
bkxheWVyID0gZG93bmNhc3Q8Tmljb3NpYTo6Q29tcG9zaXRpb25MYXllcj4oKnNjcm9sbExheWVy
KTsKIApAQCAtNjIsNiArNjksMjIgQEAgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9k
ZU5pY29zaWE6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWMKICAgICAgICAg
ICAgIHNjcm9sbFRvKHBvc2l0aW9uKTsKICAgICAgICAgfSk7CiAjZW5kaWYKKyNpZiBFTkFCTEUo
U01PT1RIX1NDUk9MTElORykKKyAgICBtX3Ntb290aEFuaW1hdGlvbiA9IG1ha2VVbmlxdWU8U2Ny
b2xsQW5pbWF0aW9uU21vb3RoPigKKyAgICAgICAgW3RoaXNdKCkgLT4gU2Nyb2xsRXh0ZW50cyB7
CisgICAgICAgICAgICByZXR1cm4geyBJbnRQb2ludChtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSks
IEludFBvaW50KG1heGltdW1TY3JvbGxQb3NpdGlvbigpKSwgSW50U2l6ZShzY3JvbGxhYmxlQXJl
YVNpemUoKSkgfTsKKyAgICAgICAgfSwKKyAgICAgICAgY3VycmVudFNjcm9sbFBvc2l0aW9uKCks
CisgICAgICAgIFt0aGlzXShGbG9hdFBvaW50JiYgcG9zaXRpb24pIHsKKyAgICAgICAgICAgIGF1
dG8qIHNjcm9sbExheWVyID0gc3RhdGljX2Nhc3Q8Tmljb3NpYTo6UGxhdGZvcm1MYXllcio+KHNj
cm9sbENvbnRhaW5lckxheWVyKCkpOworICAgICAgICAgICAgQVNTRVJUKHNjcm9sbExheWVyKTsK
KyAgICAgICAgICAgIGF1dG8mIGNvbXBvc2l0aW9uTGF5ZXIgPSBkb3duY2FzdDxOaWNvc2lhOjpD
b21wb3NpdGlvbkxheWVyPigqc2Nyb2xsTGF5ZXIpOworCisgICAgICAgICAgICBhdXRvIHVwZGF0
ZVNjb3BlID0gY29tcG9zaXRpb25MYXllci5jcmVhdGVVcGRhdGVTY29wZSgpOworICAgICAgICAg
ICAgc2Nyb2xsVG8ocG9zaXRpb24pOworICAgICAgICB9LAorICAgICAgICBbXSB7IH0pOworI2Vu
ZGlmCiB9CiAKIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhOjp+U2Ny
b2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWEoKSA9IGRlZmF1bHQ7CkBAIC03
Miw4ICs5NSwxMiBAQCB2b2lkIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNv
c2lhOjpjb21taXRTdGF0ZUFmdGVyQ2hpbGRyZW4oY29uc3QgUwogCiAgICAgY29uc3QgYXV0byYg
b3ZlcmZsb3dTdGF0ZU5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xs
aW5nTm9kZT4oc3RhdGVOb2RlKTsKICAgICBpZiAob3ZlcmZsb3dTdGF0ZU5vZGUuaGFzQ2hhbmdl
ZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6UmVxdWVzdGVkU2Nyb2xsUG9z
aXRpb24pKSB7CisgICAgICAgIHN0b3BTY3JvbGxBbmltYXRpb25zKCk7CiAgICAgICAgIGNvbnN0
IGF1dG8mIHJlcXVlc3RlZFNjcm9sbERhdGEgPSBvdmVyZmxvd1N0YXRlTm9kZS5yZXF1ZXN0ZWRT
Y3JvbGxEYXRhKCk7CiAgICAgICAgIHNjcm9sbFRvKHJlcXVlc3RlZFNjcm9sbERhdGEuc2Nyb2xs
UG9zaXRpb24sIHJlcXVlc3RlZFNjcm9sbERhdGEuc2Nyb2xsVHlwZSwgcmVxdWVzdGVkU2Nyb2xs
RGF0YS5jbGFtcGluZyk7CisjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCisgICAgICAgIG1f
c21vb3RoQW5pbWF0aW9uLT5zZXRDdXJyZW50UG9zaXRpb24oY3VycmVudFNjcm9sbFBvc2l0aW9u
KCkpOworI2VuZGlmCiAgICAgfQogfQogCkBAIC0xMDQsMzEgKzEzMSw2MCBAQCBXaGVlbEV2ZW50
SGFuZGxpbmdSZXN1bHQgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWE6
OmhhbmRsZVdoZWVsRQogICAgIGlmICghY2FuSGFuZGxlV2hlZWxFdmVudCh3aGVlbEV2ZW50KSkK
ICAgICAgICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6dW5oYW5kbGVkKCk7CiAK
LSAgICBpZiAod2hlZWxFdmVudC5kZWx0YVgoKSB8fCB3aGVlbEV2ZW50LmRlbHRhWSgpKSB7Ci0g
ICAgICAgIGF1dG8qIHNjcm9sbExheWVyID0gc3RhdGljX2Nhc3Q8Tmljb3NpYTo6UGxhdGZvcm1M
YXllcio+KHNjcm9sbENvbnRhaW5lckxheWVyKCkpOwotICAgICAgICBBU1NFUlQoc2Nyb2xsTGF5
ZXIpOwotICAgICAgICBhdXRvJiBjb21wb3NpdGlvbkxheWVyID0gZG93bmNhc3Q8Tmljb3NpYTo6
Q29tcG9zaXRpb25MYXllcj4oKnNjcm9sbExheWVyKTsKLQotICAgICAgICBhdXRvIHVwZGF0ZVNj
b3BlID0gY29tcG9zaXRpb25MYXllci5jcmVhdGVVcGRhdGVTY29wZSgpOwotICAgICAgICBzY3Jv
bGxCeSh7IC13aGVlbEV2ZW50LmRlbHRhWCgpLCAtd2hlZWxFdmVudC5kZWx0YVkoKSB9KTsKLSAg
ICB9Ci0KICNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpCiAgICAgbV9raW5ldGljQW5pbWF0
aW9uLT5hcHBlbmRUb1Njcm9sbEhpc3Rvcnkod2hlZWxFdmVudCk7Ci0jZW5kaWYKLQotI2lmIEVO
QUJMRShLSU5FVElDX1NDUk9MTElORykKICAgICBtX2tpbmV0aWNBbmltYXRpb24tPnN0b3AoKTsK
ICAgICBpZiAod2hlZWxFdmVudC5pc0VuZE9mTm9uTW9tZW50dW1TY3JvbGwoKSkgewogICAgICAg
ICBtX2tpbmV0aWNBbmltYXRpb24tPnN0YXJ0KGN1cnJlbnRTY3JvbGxQb3NpdGlvbigpLCBtX2tp
bmV0aWNBbmltYXRpb24tPmNvbXB1dGVWZWxvY2l0eSgpLCBjYW5IYXZlSG9yaXpvbnRhbFNjcm9s
bGJhcigpLCBjYW5IYXZlVmVydGljYWxTY3JvbGxiYXIoKSk7CiAgICAgICAgIG1fa2luZXRpY0Fu
aW1hdGlvbi0+Y2xlYXJTY3JvbGxIaXN0b3J5KCk7CisgICAgICAgIHJldHVybiBXaGVlbEV2ZW50
SGFuZGxpbmdSZXN1bHQ6OmhhbmRsZWQoKTsKICAgICB9CiAgICAgaWYgKHdoZWVsRXZlbnQuaXNU
cmFuc2l0aW9uaW5nVG9Nb21lbnR1bVNjcm9sbCgpKSB7CiAgICAgICAgIG1fa2luZXRpY0FuaW1h
dGlvbi0+c3RhcnQoY3VycmVudFNjcm9sbFBvc2l0aW9uKCksIHdoZWVsRXZlbnQuc3dpcGVWZWxv
Y2l0eSgpLCBjYW5IYXZlSG9yaXpvbnRhbFNjcm9sbGJhcigpLCBjYW5IYXZlVmVydGljYWxTY3Jv
bGxiYXIoKSk7CiAgICAgICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+Y2xlYXJTY3JvbGxIaXN0b3J5
KCk7CisgICAgICAgIHJldHVybiBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQ6OmhhbmRsZWQoKTsK
ICAgICB9CiAjZW5kaWYKIAorICAgIGZsb2F0IGRlbHRhWCA9IGNhbkhhdmVIb3Jpem9udGFsU2Ny
b2xsYmFyKCkgPyB3aGVlbEV2ZW50LmRlbHRhWCgpIDogMDsKKyAgICBmbG9hdCBkZWx0YVkgPSBj
YW5IYXZlVmVydGljYWxTY3JvbGxiYXIoKSA/IHdoZWVsRXZlbnQuZGVsdGFZKCkgOiAwOworICAg
IGlmICgoZGVsdGFYIDwgMCAmJiBjdXJyZW50U2Nyb2xsUG9zaXRpb24oKS54KCkgPj0gbWF4aW11
bVNjcm9sbFBvc2l0aW9uKCkueCgpKQorICAgICAgICB8fCAoZGVsdGFYID4gMCAmJiBjdXJyZW50
U2Nyb2xsUG9zaXRpb24oKS54KCkgPD0gbWluaW11bVNjcm9sbFBvc2l0aW9uKCkueCgpKSkKKyAg
ICAgICAgZGVsdGFYID0gMDsKKyAgICBpZiAoKGRlbHRhWSA8IDAgJiYgY3VycmVudFNjcm9sbFBv
c2l0aW9uKCkueSgpID49IG1heGltdW1TY3JvbGxQb3NpdGlvbigpLnkoKSkKKyAgICAgICAgfHwg
KGRlbHRhWSA+IDAgJiYgY3VycmVudFNjcm9sbFBvc2l0aW9uKCkueSgpIDw9IG1pbmltdW1TY3Jv
bGxQb3NpdGlvbigpLnkoKSkpCisgICAgICAgIGRlbHRhWSA9IDA7CisKKyAgICBpZiAoIWRlbHRh
WCAmJiAhZGVsdGFZKQorICAgICAgICByZXR1cm4gV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0Ojp1
bmhhbmRsZWQoKTsKKworICAgIGlmICh3aGVlbEV2ZW50LmdyYW51bGFyaXR5KCkgPT0gU2Nyb2xs
QnlQYWdlV2hlZWxFdmVudCkgeworICAgICAgICBpZiAoZGVsdGFYKSB7CisgICAgICAgICAgICBi
b29sIG5lZ2F0aXZlID0gZGVsdGFYIDwgMDsKKyAgICAgICAgICAgIGRlbHRhWCA9IFNjcm9sbGJh
cjo6cGFnZVN0ZXBEZWx0YShzY3JvbGxhYmxlQXJlYVNpemUoKS53aWR0aCgpKTsKKyAgICAgICAg
ICAgIGlmIChuZWdhdGl2ZSkKKyAgICAgICAgICAgICAgICBkZWx0YVggPSAtZGVsdGFYOworICAg
ICAgICB9CisgICAgICAgIGlmIChkZWx0YVkpIHsKKyAgICAgICAgICAgIGJvb2wgbmVnYXRpdmUg
PSBkZWx0YVkgPCAwOworICAgICAgICAgICAgZGVsdGFZID0gU2Nyb2xsYmFyOjpwYWdlU3RlcERl
bHRhKHNjcm9sbGFibGVBcmVhU2l6ZSgpLmhlaWdodCgpKTsKKyAgICAgICAgICAgIGlmIChuZWdh
dGl2ZSkKKyAgICAgICAgICAgICAgICBkZWx0YVkgPSAtZGVsdGFZOworICAgICAgICB9CisgICAg
fQorCisjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCisgICAgbV9zbW9vdGhBbmltYXRpb24t
PnNjcm9sbChIb3Jpem9udGFsU2Nyb2xsYmFyLCBTY3JvbGxCeVBpeGVsLCAxLCAtZGVsdGFYKTsK
KyAgICBtX3Ntb290aEFuaW1hdGlvbi0+c2Nyb2xsKFZlcnRpY2FsU2Nyb2xsYmFyLCBTY3JvbGxC
eVBpeGVsLCAxLCAtZGVsdGFZKTsKKyNlbHNlCisgICAgYXV0byogc2Nyb2xsTGF5ZXIgPSBzdGF0
aWNfY2FzdDxOaWNvc2lhOjpQbGF0Zm9ybUxheWVyKj4oc2Nyb2xsQ29udGFpbmVyTGF5ZXIoKSk7
CisgICAgQVNTRVJUKHNjcm9sbExheWVyKTsKKyAgICBhdXRvJiBjb21wb3NpdGlvbkxheWVyID0g
ZG93bmNhc3Q8Tmljb3NpYTo6Q29tcG9zaXRpb25MYXllcj4oKnNjcm9sbExheWVyKTsKKworICAg
IGF1dG8gdXBkYXRlU2NvcGUgPSBjb21wb3NpdGlvbkxheWVyLmNyZWF0ZVVwZGF0ZVNjb3BlKCk7
CisgICAgc2Nyb2xsQnkoeyAtZGVsdGFYLCAtZGVsdGFZIH0pOworI2VuZGlmCisKICAgICByZXR1
cm4gV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0OjpoYW5kbGVkKCk7CiB9CiAKQEAgLTEzOCw2ICsx
OTQsOSBAQCB2b2lkIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhOjpz
dG9wU2Nyb2xsQW5pbWF0aW9ucygpCiAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5zdG9wKCk7CiAg
ICAgbV9raW5ldGljQW5pbWF0aW9uLT5jbGVhclNjcm9sbEhpc3RvcnkoKTsKICNlbmRpZgorI2lm
IEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQorICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zdG9wKCk7
CisjZW5kaWYKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3Jv
bGxpbmdOb2RlTmljb3NpYS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3Np
YS9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYS5oCmluZGV4IGFjZGM4
MmFjMTU2Y2M3NjcwM2NlNGNkNDk5ZWVjYWRmYWZkNDk1ZGIuLjEzMmI0ODg3MWQ2Y2RiNjc0NWM0
YWMzNjE3YTRiYzFkZGVmNGI5MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1Ry
ZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNs
dWRlICJTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKK2NsYXNzIFNjcm9sbEFuaW1hdGlvbjsKIGNsYXNzIFNjcm9sbEFuaW1hdGlvbktp
bmV0aWM7CiAKIGNsYXNzIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lh
IGZpbmFsIDogcHVibGljIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGUgewpAQCAt
NTYsNiArNTcsOSBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsQW5pbWF0aW9uS2luZXRpYz4gbV9raW5ldGljQW5pbWF0
aW9uOwogI2VuZGlmCisjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCisgICAgc3RkOjp1bmlx
dWVfcHRyPFNjcm9sbEFuaW1hdGlvbj4gbV9zbW9vdGhBbmltYXRpb247CisjZW5kaWYKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbEFuaW1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5p
bWF0aW9uLmgKaW5kZXggZjA2N2IzY2MyZGRlNmIyNjNkZDJjMGUwY2NjZTAzYWQwZjY3MTg5My4u
OTlkODYxYmYzNTEzZDAzNzY2NDcwYTEwNzJiOThmZDAzNzBjYzgwNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uLmgKQEAgLTM0LDYgKzM0LDEyIEBAIGNsYXNzIEZs
b2F0UG9pbnQ7CiBjbGFzcyBTY3JvbGxhYmxlQXJlYTsKIGVudW0gY2xhc3MgU2Nyb2xsQ2xhbXBp
bmcgOiBib29sOwogCitzdHJ1Y3QgU2Nyb2xsRXh0ZW50cyB7CisgICAgU2Nyb2xsUG9zaXRpb24g
bWluaW11bVNjcm9sbFBvc2l0aW9uOworICAgIFNjcm9sbFBvc2l0aW9uIG1heGltdW1TY3JvbGxQ
b3NpdGlvbjsKKyAgICBJbnRTaXplIHZpc2libGVTaXplOworfTsKKwogY2xhc3MgU2Nyb2xsQW5p
bWF0aW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTQ0LDE0
ICs1MCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVmlzaWJsZUxlbmd0aHMo
KSB7IH07CiAgICAgdmlydHVhbCB2b2lkIHNldEN1cnJlbnRQb3NpdGlvbihjb25zdCBGbG9hdFBv
aW50JikgeyB9OwogICAgIHZpcnR1YWwgdm9pZCBzZXJ2aWNlQW5pbWF0aW9uKCkgeyB9OwotCi1w
cm90ZWN0ZWQ6Ci0gICAgU2Nyb2xsQW5pbWF0aW9uKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxl
QXJlYSkKLSAgICAgICAgOiBtX3Njcm9sbGFibGVBcmVhKHNjcm9sbGFibGVBcmVhKQotICAgIHsK
LSAgICB9Ci0KLSAgICBTY3JvbGxhYmxlQXJlYSYgbV9zY3JvbGxhYmxlQXJlYTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsQW5pbWF0aW9uS2luZXRpYy5jcHAKaW5kZXggM2NlNTVhMTg1MWU2MDUzMGRkMzMyYmIwNjVi
MjE2YThmM2NiNzM1MC4uMjRlZGNkMzI4NGQ5YWFiNThiNGE1Y2EyOTI5YTQ3MjRhZTEzMTQxMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRp
Yy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRp
Yy5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIlBsYXRmb3JtV2hlZWxFdmVudC5o
IgogCi0jaWYgVVNFKEdMSUIpCisjaWYgVVNFKEdMSUJfRVZFTlRfTE9PUCkKICNpbmNsdWRlIDx3
dGYvZ2xpYi9SdW5Mb29wU291cmNlUHJpb3JpdHkuaD4KICNlbmRpZgogCkBAIC0xMTQsNyArMTE0
LDcgQEAgU2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6U2Nyb2xsQW5pbWF0aW9uS2luZXRpYyhTY3Jv
bGxFeHRlbnRzQ2FsbGJhY2smJiBzY3JvbGxFeHQKICAgICAsIG1fbm90aWZ5UG9zaXRpb25DaGFu
Z2VkRnVuY3Rpb24oV1RGTW92ZShub3RpZnlQb3NpdGlvbkNoYW5nZWRGdW5jdGlvbikpCiAgICAg
LCBtX2FuaW1hdGlvblRpbWVyKFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJlNjcm9sbEFuaW1h
dGlvbktpbmV0aWM6OmFuaW1hdGlvblRpbWVyRmlyZWQpCiB7Ci0jaWYgVVNFKEdMSUIpCisjaWYg
VVNFKEdMSUJfRVZFTlRfTE9PUCkKICAgICBtX2FuaW1hdGlvblRpbWVyLnNldFByaW9yaXR5KFdU
Rjo6UnVuTG9vcFNvdXJjZVByaW9yaXR5OjpEaXNwbGF5UmVmcmVzaE1vbml0b3JUaW1lcik7CiAj
ZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1h
dGlvbktpbmV0aWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktp
bmV0aWMuaAppbmRleCBjZjI1ZTc5OGNkNWIwNmIzOTUxYjAyYTY3MzAxYTAyNTE5NjUxMzE1Li4z
ZTg5Y2I0OGMwNWM0YzJiZTc1ZTM3NjVjYzllZjgxNTMzZGNiN2JlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5oCkBAIC0zNSw4ICszNSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUGxhdGZvcm1XaGVlbEV2ZW50OwogCi1j
bGFzcyBTY3JvbGxBbmltYXRpb25LaW5ldGljIGZpbmFsIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKK2NsYXNzIFNjcm9sbEFuaW1hdGlvbktpbmV0aWMgZmluYWwgOiBwdWJsaWMgU2Ny
b2xsQW5pbWF0aW9uIHsKIHByaXZhdGU6CiAgICAgY2xhc3MgUGVyQXhpc0RhdGEgewogICAgIHB1
YmxpYzoKQEAgLTU5LDExICs1OCw2IEBAIHByaXZhdGU6CiAgICAgfTsKIAogcHVibGljOgotICAg
IHN0cnVjdCBTY3JvbGxFeHRlbnRzIHsKLSAgICAgICAgSW50UG9pbnQgbWluaW11bVNjcm9sbFBv
c2l0aW9uOwotICAgICAgICBJbnRQb2ludCBtYXhpbXVtU2Nyb2xsUG9zaXRpb247Ci0gICAgfTsK
LQogICAgIHVzaW5nIFNjcm9sbEV4dGVudHNDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248U2Nyb2xs
RXh0ZW50cyh2b2lkKT47CiAgICAgdXNpbmcgTm90aWZ5UG9zaXRpb25DaGFuZ2VkQ2FsbGJhY2sg
PSBXVEY6OkZ1bmN0aW9uPHZvaWQoRmxvYXRQb2ludCYmKT47CiAKQEAgLTc1LDcgKzY5LDcgQEAg
cHVibGljOgogICAgIEZsb2F0UG9pbnQgY29tcHV0ZVZlbG9jaXR5KCk7CiAKICAgICB2b2lkIHN0
YXJ0KGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxQb3NpdGlvbiwgY29uc3QgRmxvYXRQb2ludCYg
dmVsb2NpdHksIGJvb2wgbWF5SFNjcm9sbCwgYm9vbCBtYXlWU2Nyb2xsKTsKLSAgICB2b2lkIHN0
b3AoKTsKKyAgICB2b2lkIHN0b3AoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGFu
aW1hdGlvblRpbWVyRmlyZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbEFuaW1hdGlvblNtb290aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxBbmltYXRpb25TbW9vdGguY3BwCmluZGV4IDJjYTU3OGEzMGYxYjMxYTI5N2RjOTgxZGZlNTJj
YTMwNjcyZTdhN2IuLjgzNTczMDVmZWNiMWJmYzQ1ZWI1Yjc3YjAzNTk2YWQxMThhZjA3MjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmNw
cApAQCAtMzEsNiArMzEsMTAgQEAKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCiAjaW5jbHVkZSAi
U2Nyb2xsYWJsZUFyZWEuaCIKIAorI2lmIFVTRShHTElCX0VWRU5UX0xPT1ApCisjaW5jbHVkZSA8
d3RmL2dsaWIvUnVuTG9vcFNvdXJjZVByaW9yaXR5Lmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBzdGF0aWMgY29uc3QgZG91YmxlIGZyYW1lUmF0ZSA9IDYwOwpAQCAtMzgsMjUg
KzQyLDQ3IEBAIHN0YXRpYyBjb25zdCBTZWNvbmRzIHRpY2tUaW1lID0gMV9zIC8gZnJhbWVSYXRl
Owogc3RhdGljIGNvbnN0IFNlY29uZHMgbWluaW11bVRpbWVySW50ZXJ2YWwgeyAxX21zIH07CiBz
dGF0aWMgY29uc3QgZG91YmxlIHNtb290aEZhY3RvckZvclByb2dyYW1tYXRpY1Njcm9sbCA9IDU7
CiAKLVNjcm9sbEFuaW1hdGlvblNtb290aDo6U2Nyb2xsQW5pbWF0aW9uU21vb3RoKFNjcm9sbGFi
bGVBcmVhJiBzY3JvbGxhYmxlQXJlYSwgY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIFdURjo6
RnVuY3Rpb248dm9pZCAoRmxvYXRQb2ludCYmKT4mJiBub3RpZnlQb3NpdGlvbkNoYW5nZWRGdW5j
dGlvbikKLSAgICA6IFNjcm9sbEFuaW1hdGlvbihzY3JvbGxhYmxlQXJlYSkKK1Njcm9sbEFuaW1h
dGlvblNtb290aDo6UGVyQXhpc0RhdGE6OlBlckF4aXNEYXRhKFNjcm9sbGJhck9yaWVudGF0aW9u
IG9yaWVudGF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbiwgU2Nyb2xsRXh0ZW50c0Nh
bGxiYWNrJiBleHRlbnRzQ2FsbGJhY2spCit7CisgICAgYXV0byBleHRlbnRzID0gZXh0ZW50c0Nh
bGxiYWNrKCk7CisgICAgc3dpdGNoIChvcmllbnRhdGlvbikgeworICAgIGNhc2UgSG9yaXpvbnRh
bFNjcm9sbGJhcjoKKyAgICAgICAgY3VycmVudFBvc2l0aW9uID0gcG9zaXRpb24ueCgpOworICAg
ICAgICB2aXNpYmxlTGVuZ3RoID0gZXh0ZW50cy52aXNpYmxlU2l6ZS53aWR0aCgpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFZlcnRpY2FsU2Nyb2xsYmFyOgorICAgICAgICBjdXJyZW50UG9z
aXRpb24gPSBwb3NpdGlvbi55KCk7CisgICAgICAgIHZpc2libGVMZW5ndGggPSBleHRlbnRzLnZp
c2libGVTaXplLmhlaWdodCgpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBkZXNpcmVk
UG9zaXRpb24gPSBjdXJyZW50UG9zaXRpb247Cit9CisKK1Njcm9sbEFuaW1hdGlvblNtb290aDo6
U2Nyb2xsQW5pbWF0aW9uU21vb3RoKFNjcm9sbEV4dGVudHNDYWxsYmFjayYmIHNjcm9sbEV4dGVu
dHNGdW5jdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIE5vdGlmeVBvc2l0aW9uQ2hh
bmdlZENhbGxiYWNrJiYgbm90aWZ5UG9zaXRpb25DaGFuZ2VkRnVuY3Rpb24sIE5vdGlmeUFuaW1h
dGlvblN0b3BwZWRDYWxsYmFjayYmIG5vdGlmeUFuaW1hdGlvblN0b3BwZWRGdW5jdGlvbikKKyAg
ICA6IG1fc2Nyb2xsRXh0ZW50c0Z1bmN0aW9uKFdURk1vdmUoc2Nyb2xsRXh0ZW50c0Z1bmN0aW9u
KSkKICAgICAsIG1fbm90aWZ5UG9zaXRpb25DaGFuZ2VkRnVuY3Rpb24oV1RGTW92ZShub3RpZnlQ
b3NpdGlvbkNoYW5nZWRGdW5jdGlvbikpCi0gICAgLCBtX2hvcml6b250YWxEYXRhKHBvc2l0aW9u
LngoKSwgc2Nyb2xsYWJsZUFyZWEudmlzaWJsZVdpZHRoKCkpCi0gICAgLCBtX3ZlcnRpY2FsRGF0
YShwb3NpdGlvbi55KCksIHNjcm9sbGFibGVBcmVhLnZpc2libGVIZWlnaHQoKSkKLSAgICAsIG1f
YW5pbWF0aW9uVGltZXIoKnRoaXMsICZTY3JvbGxBbmltYXRpb25TbW9vdGg6OmFuaW1hdGlvblRp
bWVyRmlyZWQpCisgICAgLCBtX25vdGlmeUFuaW1hdGlvblN0b3BwZWRGdW5jdGlvbihXVEZNb3Zl
KG5vdGlmeUFuaW1hdGlvblN0b3BwZWRGdW5jdGlvbikpCisgICAgLCBtX2hvcml6b250YWxEYXRh
KEhvcml6b250YWxTY3JvbGxiYXIsIHBvc2l0aW9uLCBtX3Njcm9sbEV4dGVudHNGdW5jdGlvbikK
KyAgICAsIG1fdmVydGljYWxEYXRhKFZlcnRpY2FsU2Nyb2xsYmFyLCBwb3NpdGlvbiwgbV9zY3Jv
bGxFeHRlbnRzRnVuY3Rpb24pCisgICAgLCBtX2FuaW1hdGlvblRpbWVyKFJ1bkxvb3A6OmN1cnJl
bnQoKSwgdGhpcywgJlNjcm9sbEFuaW1hdGlvblNtb290aDo6YW5pbWF0aW9uVGltZXJGaXJlZCkK
IHsKKyNpZiBVU0UoR0xJQl9FVkVOVF9MT09QKQorICAgIG1fYW5pbWF0aW9uVGltZXIuc2V0UHJp
b3JpdHkoV1RGOjpSdW5Mb29wU291cmNlUHJpb3JpdHk6OkRpc3BsYXlSZWZyZXNoTW9uaXRvclRp
bWVyKTsKKyNlbmRpZgogfQogCiBib29sIFNjcm9sbEFuaW1hdGlvblNtb290aDo6c2Nyb2xsKFNj
cm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBTY3JvbGxHcmFudWxhcml0eSBncmFudWxh
cml0eSwgZmxvYXQgc3RlcCwgZmxvYXQgbXVsdGlwbGllcikKIHsKICAgICBmbG9hdCBtaW5TY3Jv
bGxQb3NpdGlvbjsKICAgICBmbG9hdCBtYXhTY3JvbGxQb3NpdGlvbjsKKyAgICBhdXRvIGV4dGVu
dHMgPSBtX3Njcm9sbEV4dGVudHNGdW5jdGlvbigpOwogICAgIGlmIChvcmllbnRhdGlvbiA9PSBI
b3Jpem9udGFsU2Nyb2xsYmFyKSB7Ci0gICAgICAgIG1pblNjcm9sbFBvc2l0aW9uID0gbV9zY3Jv
bGxhYmxlQXJlYS5taW5pbXVtU2Nyb2xsUG9zaXRpb24oKS54KCk7Ci0gICAgICAgIG1heFNjcm9s
bFBvc2l0aW9uID0gbV9zY3JvbGxhYmxlQXJlYS5tYXhpbXVtU2Nyb2xsUG9zaXRpb24oKS54KCk7
CisgICAgICAgIG1pblNjcm9sbFBvc2l0aW9uID0gZXh0ZW50cy5taW5pbXVtU2Nyb2xsUG9zaXRp
b24ueCgpOworICAgICAgICBtYXhTY3JvbGxQb3NpdGlvbiA9IGV4dGVudHMubWF4aW11bVNjcm9s
bFBvc2l0aW9uLngoKTsKICAgICB9IGVsc2UgewotICAgICAgICBtaW5TY3JvbGxQb3NpdGlvbiA9
IG1fc2Nyb2xsYWJsZUFyZWEubWluaW11bVNjcm9sbFBvc2l0aW9uKCkueSgpOwotICAgICAgICBt
YXhTY3JvbGxQb3NpdGlvbiA9IG1fc2Nyb2xsYWJsZUFyZWEubWF4aW11bVNjcm9sbFBvc2l0aW9u
KCkueSgpOworICAgICAgICBtaW5TY3JvbGxQb3NpdGlvbiA9IGV4dGVudHMubWluaW11bVNjcm9s
bFBvc2l0aW9uLnkoKTsKKyAgICAgICAgbWF4U2Nyb2xsUG9zaXRpb24gPSBleHRlbnRzLm1heGlt
dW1TY3JvbGxQb3NpdGlvbi55KCk7CiAgICAgfQogICAgIGJvb2wgbmVlZFRvU2Nyb2xsID0gdXBk
YXRlUGVyQXhpc0RhdGEob3JpZW50YXRpb24gPT0gSG9yaXpvbnRhbFNjcm9sbGJhciA/IG1faG9y
aXpvbnRhbERhdGEgOiBtX3ZlcnRpY2FsRGF0YSwgZ3JhbnVsYXJpdHksIHN0ZXAgKiBtdWx0aXBs
aWVyLCBtaW5TY3JvbGxQb3NpdGlvbiwgbWF4U2Nyb2xsUG9zaXRpb24pOwogICAgIGlmIChuZWVk
VG9TY3JvbGwgJiYgIWFuaW1hdGlvblRpbWVyQWN0aXZlKCkpIHsKQEAgLTY5LDkgKzk1LDEwIEBA
IGJvb2wgU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpzY3JvbGwoU2Nyb2xsYmFyT3JpZW50YXRpb24g
b3JpZW50YXRpb24sIFNjcm9sbEdyYW51CiB2b2lkIFNjcm9sbEFuaW1hdGlvblNtb290aDo6c2Ny
b2xsKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uKQogewogICAgIFNjcm9sbEdyYW51bGFyaXR5
IGdyYW51bGFyaXR5ID0gU2Nyb2xsQnlQYWdlOwotICAgIGJvb2wgbmVlZFRvU2Nyb2xsID0gdXBk
YXRlUGVyQXhpc0RhdGEobV9ob3Jpem9udGFsRGF0YSwgZ3JhbnVsYXJpdHksIHBvc2l0aW9uLngo
KSAtIG1faG9yaXpvbnRhbERhdGEuY3VycmVudFBvc2l0aW9uLCBtX3Njcm9sbGFibGVBcmVhLm1p
bmltdW1TY3JvbGxQb3NpdGlvbigpLngoKSwgbV9zY3JvbGxhYmxlQXJlYS5tYXhpbXVtU2Nyb2xs
UG9zaXRpb24oKS54KCksIHNtb290aEZhY3RvckZvclByb2dyYW1tYXRpY1Njcm9sbCk7CisgICAg
YXV0byBleHRlbnRzID0gbV9zY3JvbGxFeHRlbnRzRnVuY3Rpb24oKTsKKyAgICBib29sIG5lZWRU
b1Njcm9sbCA9IHVwZGF0ZVBlckF4aXNEYXRhKG1faG9yaXpvbnRhbERhdGEsIGdyYW51bGFyaXR5
LCBwb3NpdGlvbi54KCkgLSBtX2hvcml6b250YWxEYXRhLmN1cnJlbnRQb3NpdGlvbiwgZXh0ZW50
cy5taW5pbXVtU2Nyb2xsUG9zaXRpb24ueCgpLCBleHRlbnRzLm1heGltdW1TY3JvbGxQb3NpdGlv
bi54KCksIHNtb290aEZhY3RvckZvclByb2dyYW1tYXRpY1Njcm9sbCk7CiAgICAgbmVlZFRvU2Ny
b2xsIHw9Ci0gICAgICAgIHVwZGF0ZVBlckF4aXNEYXRhKG1fdmVydGljYWxEYXRhLCBncmFudWxh
cml0eSwgcG9zaXRpb24ueSgpIC0gbV92ZXJ0aWNhbERhdGEuY3VycmVudFBvc2l0aW9uLCBtX3Nj
cm9sbGFibGVBcmVhLm1pbmltdW1TY3JvbGxQb3NpdGlvbigpLnkoKSwgbV9zY3JvbGxhYmxlQXJl
YS5tYXhpbXVtU2Nyb2xsUG9zaXRpb24oKS55KCksIHNtb290aEZhY3RvckZvclByb2dyYW1tYXRp
Y1Njcm9sbCk7CisgICAgICAgIHVwZGF0ZVBlckF4aXNEYXRhKG1fdmVydGljYWxEYXRhLCBncmFu
dWxhcml0eSwgcG9zaXRpb24ueSgpIC0gbV92ZXJ0aWNhbERhdGEuY3VycmVudFBvc2l0aW9uLCBl
eHRlbnRzLm1pbmltdW1TY3JvbGxQb3NpdGlvbi55KCksIGV4dGVudHMubWF4aW11bVNjcm9sbFBv
c2l0aW9uLnkoKSwgc21vb3RoRmFjdG9yRm9yUHJvZ3JhbW1hdGljU2Nyb2xsKTsKICAgICBpZiAo
bmVlZFRvU2Nyb2xsICYmICFhbmltYXRpb25UaW1lckFjdGl2ZSgpKSB7CiAgICAgICAgIG1fc3Rh
cnRUaW1lID0gbV9ob3Jpem9udGFsRGF0YS5zdGFydFRpbWU7CiAgICAgICAgIGFuaW1hdGlvblRp
bWVyRmlyZWQoKTsKQEAgLTgxLDEzICsxMDgsMTQgQEAgdm9pZCBTY3JvbGxBbmltYXRpb25TbW9v
dGg6OnNjcm9sbChjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbikKIHZvaWQgU2Nyb2xsQW5pbWF0
aW9uU21vb3RoOjpzdG9wKCkKIHsKICAgICBtX2FuaW1hdGlvblRpbWVyLnN0b3AoKTsKLSAgICBt
X3Njcm9sbGFibGVBcmVhLnNldFNjcm9sbEJlaGF2aW9yU3RhdHVzKFNjcm9sbEJlaGF2aW9yU3Rh
dHVzOjpOb3RJbkFuaW1hdGlvbik7CisgICAgbV9ub3RpZnlBbmltYXRpb25TdG9wcGVkRnVuY3Rp
b24oKTsKIH0KIAogdm9pZCBTY3JvbGxBbmltYXRpb25TbW9vdGg6OnVwZGF0ZVZpc2libGVMZW5n
dGhzKCkKIHsKLSAgICBtX2hvcml6b250YWxEYXRhLnZpc2libGVMZW5ndGggPSBtX3Njcm9sbGFi
bGVBcmVhLnZpc2libGVXaWR0aCgpOwotICAgIG1fdmVydGljYWxEYXRhLnZpc2libGVMZW5ndGgg
PSBtX3Njcm9sbGFibGVBcmVhLnZpc2libGVIZWlnaHQoKTsKKyAgICBhdXRvIGV4dGVudHMgPSBt
X3Njcm9sbEV4dGVudHNGdW5jdGlvbigpOworICAgIG1faG9yaXpvbnRhbERhdGEudmlzaWJsZUxl
bmd0aCA9IGV4dGVudHMudmlzaWJsZVNpemUud2lkdGgoKTsKKyAgICBtX3ZlcnRpY2FsRGF0YS52
aXNpYmxlTGVuZ3RoID0gZXh0ZW50cy52aXNpYmxlU2l6ZS5oZWlnaHQoKTsKIH0KIAogdm9pZCBT
Y3JvbGxBbmltYXRpb25TbW9vdGg6OnNldEN1cnJlbnRQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50
JiBwb3NpdGlvbikKQEAgLTQxMSw3ICs0MzksNyBAQCB2b2lkIFNjcm9sbEFuaW1hdGlvblNtb290
aDo6YW5pbWF0aW9uVGltZXJGaXJlZCgpCiAgICAgaWYgKGNvbnRpbnVlQW5pbWF0aW9uKQogICAg
ICAgICBzdGFydE5leHRUaW1lcihzdGQ6Om1heChtaW5pbXVtVGltZXJJbnRlcnZhbCwgZGVsdGFU
b05leHRGcmFtZSkpOwogICAgIGVsc2UKLSAgICAgICAgbV9zY3JvbGxhYmxlQXJlYS5zZXRTY3Jv
bGxCZWhhdmlvclN0YXR1cyhTY3JvbGxCZWhhdmlvclN0YXR1czo6Tm90SW5BbmltYXRpb24pOwor
ICAgICAgICBtX25vdGlmeUFuaW1hdGlvblN0b3BwZWRGdW5jdGlvbigpOwogCiAgICAgbV9ub3Rp
ZnlQb3NpdGlvbkNoYW5nZWRGdW5jdGlvbihGbG9hdFBvaW50KG1faG9yaXpvbnRhbERhdGEuY3Vy
cmVudFBvc2l0aW9uLCBtX3ZlcnRpY2FsRGF0YS5jdXJyZW50UG9zaXRpb24pKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmgKaW5kZXggODll
ZWZjOGZkZDllM2UyMzgyNzViZGQ0M2MzMTAxOTc3MmU2NTU5YS4uZDQxMGFkY2U2M2RjZDQ3MjJm
ZGVjMTNhNDlkM2EzYzhiNmUxMTBjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsQW5pbWF0aW9uU21vb3RoLmgKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2luY2x1ZGUgIlNj
cm9sbEFuaW1hdGlvbi5oIgogCi0jaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlIDx3dGYvUnVu
TG9vcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM3LDcgKzM3LDExIEBAIGVudW0g
Y2xhc3MgU2Nyb2xsQ2xhbXBpbmcgOiBib29sOwogCiBjbGFzcyBTY3JvbGxBbmltYXRpb25TbW9v
dGggZmluYWw6IHB1YmxpYyBTY3JvbGxBbmltYXRpb24gewogcHVibGljOgotICAgIFNjcm9sbEFu
aW1hdGlvblNtb290aChTY3JvbGxhYmxlQXJlYSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBXVEY6OkZ1
bmN0aW9uPHZvaWQgKEZsb2F0UG9pbnQmJik+JiYgbm90aWZ5UG9zaXRpb25DaGFuZ2VkRnVuY3Rp
b24pOworICAgIHVzaW5nIFNjcm9sbEV4dGVudHNDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248U2Ny
b2xsRXh0ZW50cyh2b2lkKT47CisgICAgdXNpbmcgTm90aWZ5UG9zaXRpb25DaGFuZ2VkQ2FsbGJh
Y2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoRmxvYXRQb2ludCYmKT47CisgICAgdXNpbmcgTm90aWZ5
QW5pbWF0aW9uU3RvcHBlZENhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKHZvaWQpPjsKKwor
ICAgIFNjcm9sbEFuaW1hdGlvblNtb290aChTY3JvbGxFeHRlbnRzQ2FsbGJhY2smJiwgY29uc3Qg
RmxvYXRQb2ludCYgcG9zaXRpb24sIE5vdGlmeVBvc2l0aW9uQ2hhbmdlZENhbGxiYWNrJiYsIE5v
dGlmeUFuaW1hdGlvblN0b3BwZWRDYWxsYmFjayYmKTsKICAgICB2aXJ0dWFsIH5TY3JvbGxBbmlt
YXRpb25TbW9vdGgoKTsKIAogICAgIGVudW0gY2xhc3MgQ3VydmUgewpAQCAtNTgsNiArNjIsOCBA
QCBwcml2YXRlOgogICAgIHN0cnVjdCBQZXJBeGlzRGF0YSB7CiAgICAgICAgIFBlckF4aXNEYXRh
KCkgPSBkZWxldGU7CiAKKyAgICAgICAgUGVyQXhpc0RhdGEoU2Nyb2xsYmFyT3JpZW50YXRpb24s
IGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBTY3JvbGxFeHRlbnRzQ2FsbGJhY2smKTsKKwog
ICAgICAgICBQZXJBeGlzRGF0YShmbG9hdCBwb3NpdGlvbiwgaW50IGxlbmd0aCkKICAgICAgICAg
ICAgIDogY3VycmVudFBvc2l0aW9uKHBvc2l0aW9uKQogICAgICAgICAgICAgLCBkZXNpcmVkUG9z
aXRpb24ocG9zaXRpb24pCkBAIC05NywxMyArMTAzLDE1IEBAIHByaXZhdGU6CiAgICAgdm9pZCBh
bmltYXRpb25UaW1lckZpcmVkKCk7CiAgICAgYm9vbCBhbmltYXRpb25UaW1lckFjdGl2ZSgpIGNv
bnN0OwogCi0gICAgV1RGOjpGdW5jdGlvbjx2b2lkIChGbG9hdFBvaW50JiYpPiBtX25vdGlmeVBv
c2l0aW9uQ2hhbmdlZEZ1bmN0aW9uOworICAgIFNjcm9sbEV4dGVudHNDYWxsYmFjayBtX3Njcm9s
bEV4dGVudHNGdW5jdGlvbjsKKyAgICBOb3RpZnlQb3NpdGlvbkNoYW5nZWRDYWxsYmFjayBtX25v
dGlmeVBvc2l0aW9uQ2hhbmdlZEZ1bmN0aW9uOworICAgIE5vdGlmeUFuaW1hdGlvblN0b3BwZWRD
YWxsYmFjayBtX25vdGlmeUFuaW1hdGlvblN0b3BwZWRGdW5jdGlvbjsKIAogICAgIFBlckF4aXNE
YXRhIG1faG9yaXpvbnRhbERhdGE7CiAgICAgUGVyQXhpc0RhdGEgbV92ZXJ0aWNhbERhdGE7CiAK
ICAgICBNb25vdG9uaWNUaW1lIG1fc3RhcnRUaW1lOwotICAgIFRpbWVyIG1fYW5pbWF0aW9uVGlt
ZXI7CisgICAgUnVuTG9vcDo6VGltZXI8U2Nyb2xsQW5pbWF0aW9uU21vb3RoPiBtX2FuaW1hdGlv
blRpbWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCmluZGV4IGVlMWIyNmY2YTI3NzY1NWQxYWZiYjExYjM5
NDZmZWQxZGViMGNlYzMuLjRiZTE2MzFhMWEwODk4ZTNjYzAxMmY3NTI4NDM4ZTEwZmJjMWViNTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKQEAgLTU3LDEx
ICs1NywxOSBAQCBTY3JvbGxBbmltYXRvcjo6U2Nyb2xsQW5pbWF0b3IoU2Nyb2xsYWJsZUFyZWEm
IHNjcm9sbGFibGVBcmVhKQogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApIHx8IEVOQUJMRShS
VUJCRVJfQkFORElORykKICAgICAsIG1fc2Nyb2xsQ29udHJvbGxlcigqdGhpcykKICNlbmRpZgot
ICAgICwgbV9hbmltYXRpb25Qcm9ncmFtbWF0aWNTY3JvbGwobWFrZVVuaXF1ZTxTY3JvbGxBbmlt
YXRpb25TbW9vdGg+KHNjcm9sbGFibGVBcmVhLCBtX2N1cnJlbnRQb3NpdGlvbiwgW3RoaXNdKEZs
b2F0UG9pbnQmJiBwb3NpdGlvbikgewotICAgICAgICBGbG9hdFNpemUgZGVsdGEgPSBwb3NpdGlv
biAtIG1fY3VycmVudFBvc2l0aW9uOwotICAgICAgICBtX2N1cnJlbnRQb3NpdGlvbiA9IFdURk1v
dmUocG9zaXRpb24pOwotICAgICAgICBub3RpZnlQb3NpdGlvbkNoYW5nZWQoZGVsdGEpOwotICAg
IH0pKQorICAgICwgbV9hbmltYXRpb25Qcm9ncmFtbWF0aWNTY3JvbGwobWFrZVVuaXF1ZTxTY3Jv
bGxBbmltYXRpb25TbW9vdGg+KAorICAgICAgICBbdGhpc10oKSAtPiBTY3JvbGxFeHRlbnRzIHsK
KyAgICAgICAgICAgIHJldHVybiB7IG1fc2Nyb2xsYWJsZUFyZWEubWluaW11bVNjcm9sbFBvc2l0
aW9uKCksIG1fc2Nyb2xsYWJsZUFyZWEubWF4aW11bVNjcm9sbFBvc2l0aW9uKCksIG1fc2Nyb2xs
YWJsZUFyZWEudmlzaWJsZVNpemUoKSB9OworICAgICAgICB9LAorICAgICAgICBtX2N1cnJlbnRQ
b3NpdGlvbiwKKyAgICAgICAgW3RoaXNdKEZsb2F0UG9pbnQmJiBwb3NpdGlvbikgeworICAgICAg
ICAgICAgRmxvYXRTaXplIGRlbHRhID0gcG9zaXRpb24gLSBtX2N1cnJlbnRQb3NpdGlvbjsKKyAg
ICAgICAgICAgIG1fY3VycmVudFBvc2l0aW9uID0gV1RGTW92ZShwb3NpdGlvbik7CisgICAgICAg
ICAgICBub3RpZnlQb3NpdGlvbkNoYW5nZWQoZGVsdGEpOworICAgICAgICB9LAorICAgICAgICBb
dGhpc10geworICAgICAgICAgICAgbV9zY3JvbGxhYmxlQXJlYS5zZXRTY3JvbGxCZWhhdmlvclN0
YXR1cyhTY3JvbGxCZWhhdmlvclN0YXR1czo6Tm90SW5BbmltYXRpb24pOworICAgICAgICB9KSkK
IHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3Jv
bGxBbmltYXRvckdlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9T
Y3JvbGxBbmltYXRvckdlbmVyaWMuY3BwCmluZGV4IDZhMzM1MGUzZDE2ZWQ5NTZlNzJiYThjZDg4
M2U1ZTNiYTdlMGU0OTkuLmMwNGE0ODBkNTU5NmM3MWNjZjJhNTRhMjk1Zjk5ZTZmOTk1ODhhMWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0
b3JHZW5lcmljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9s
bEFuaW1hdG9yR2VuZXJpYy5jcHAKQEAgLTUxLDggKzUxLDggQEAgU2Nyb2xsQW5pbWF0b3JHZW5l
cmljOjpTY3JvbGxBbmltYXRvckdlbmVyaWMoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVh
KQogICAgICwgbV9vdmVybGF5U2Nyb2xsYmFyQW5pbWF0aW9uVGltZXIoKnRoaXMsICZTY3JvbGxB
bmltYXRvckdlbmVyaWM6Om92ZXJsYXlTY3JvbGxiYXJBbmltYXRpb25UaW1lckZpcmVkKQogewog
ICAgIG1fa2luZXRpY0FuaW1hdGlvbiA9IG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0aW9uS2luZXRp
Yz4oCi0gICAgICAgIFt0aGlzXSgpIC0+IFNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OlNjcm9sbEV4
dGVudHMgewotICAgICAgICAgICAgcmV0dXJuIHsgbV9zY3JvbGxhYmxlQXJlYS5taW5pbXVtU2Ny
b2xsUG9zaXRpb24oKSwgbV9zY3JvbGxhYmxlQXJlYS5tYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSB9
OworICAgICAgICBbdGhpc10oKSAtPiBTY3JvbGxFeHRlbnRzIHsKKyAgICAgICAgICAgIHJldHVy
biB7IG1fc2Nyb2xsYWJsZUFyZWEubWluaW11bVNjcm9sbFBvc2l0aW9uKCksIG1fc2Nyb2xsYWJs
ZUFyZWEubWF4aW11bVNjcm9sbFBvc2l0aW9uKCksIG1fc2Nyb2xsYWJsZUFyZWEudmlzaWJsZVNp
emUoKSB9OwogICAgICAgICB9LAogICAgICAgICBbdGhpc10oRmxvYXRQb2ludCYmIHBvc2l0aW9u
KSB7CiAjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCkBAIC03Niw5ICs3NiwxNyBAQCB2b2lk
IFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6ZW5zdXJlU21vb3RoU2Nyb2xsaW5nQW5pbWF0aW9uKCkK
ICAgICBpZiAobV9zbW9vdGhBbmltYXRpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fc21v
b3RoQW5pbWF0aW9uID0gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRpb25TbW9vdGg+KG1fc2Nyb2xs
YWJsZUFyZWEsIG1fY3VycmVudFBvc2l0aW9uLCBbdGhpc10oRmxvYXRQb2ludCYmIHBvc2l0aW9u
KSB7Ci0gICAgICAgIHVwZGF0ZVBvc2l0aW9uKFdURk1vdmUocG9zaXRpb24pKTsKLSAgICB9KTsK
KyAgICBtX3Ntb290aEFuaW1hdGlvbiA9IG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0aW9uU21vb3Ro
PigKKyAgICAgICAgW3RoaXNdKCkgLT4gU2Nyb2xsRXh0ZW50cyB7CisgICAgICAgICAgICByZXR1
cm4geyBtX3Njcm9sbGFibGVBcmVhLm1pbmltdW1TY3JvbGxQb3NpdGlvbigpLCBtX3Njcm9sbGFi
bGVBcmVhLm1heGltdW1TY3JvbGxQb3NpdGlvbigpLCBtX3Njcm9sbGFibGVBcmVhLnZpc2libGVT
aXplKCkgfTsKKyAgICAgICAgfSwKKyAgICAgICAgbV9jdXJyZW50UG9zaXRpb24sCisgICAgICAg
IFt0aGlzXShGbG9hdFBvaW50JiYgcG9zaXRpb24pIHsKKyAgICAgICAgICAgIHVwZGF0ZVBvc2l0
aW9uKFdURk1vdmUocG9zaXRpb24pKTsKKyAgICAgICAgfSwKKyAgICAgICAgW3RoaXNdIHsKKyAg
ICAgICAgICAgIG1fc2Nyb2xsYWJsZUFyZWEuc2V0U2Nyb2xsQmVoYXZpb3JTdGF0dXMoU2Nyb2xs
QmVoYXZpb3JTdGF0dXM6Ok5vdEluQW5pbWF0aW9uKTsKKyAgICAgICAgfSk7CiB9CiAjZW5kaWYK
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411205</attachid>
            <date>2020-10-13 02:35:40 -0700</date>
            <delta_ts>2020-10-13 02:41:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210382-20201013103539.patch</filename>
            <type>text/plain</type>
            <size>37991</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWQyODI5ZDE2YmU5MTU0
ZDhjODYzM2YwZDI3YTE1NjYzZTZhZTBiYS4uYTQyOGJlZWYwZGRkYjMxYjgxOTM0YzcyZDgzN2Jh
YmE5NDViY2YzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIwLTEwLTEzICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIEFkZCBzdXBw
b3J0IGZvciBzbW9vdGggc2Nyb2xsaW5nIGFuaW1hdGlvbiB3aXRoIGFzeW5jIHNjcm9sbGluZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMzgyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVzcGVjdCBz
bW9vdGgtc2Nyb2xsaW5nIHNldHRpbmcgYW5kIGZpeCBkZWFkbG9jayBpc3N1ZXMgd2l0aCBhc3lu
YworICAgICAgICBzY3JvbGxpbmcgb24gbmljb3NpYSBwYXRoLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cywgbm8gZnVuY3Rpb25hbCBjaGFuZ2UuCisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9B
c3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jU2Ny
b2xsaW5nQ29vcmRpbmF0b3I6OnNjcm9sbEFuaW1hdG9yRW5hYmxlZCBjb25zdCk6CisgICAgICAg
ICogcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5oOgorICAgICAgICAq
IHBhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUaHJlYWRlZFNjcm9sbGluZ1RyZWU6OlRocmVhZGVkU2Nyb2xsaW5nVHJlZSk6CisgICAg
ICAgICogcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpUaHJlYWRlZFNjcm9sbGluZ1RyZWU6OnNjcm9sbEFuaW1hdG9yRW5hYmxlZCk6Cisg
ICAgICAgICogcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxp
bmdOb2RlTmljb3NpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlTmljb3NpYTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29z
aWEpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5p
Y29zaWE6OmNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYTo6ZW5zdXJlU2Nyb2xsQW5pbWF0aW9u
S2luZXRpYyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdO
b2RlTmljb3NpYTo6ZW5zdXJlU2Nyb2xsQW5pbWF0aW9uU21vb3RoKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjpoYW5kbGVXaGVlbEV2
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVO
aWNvc2lhOjpzdG9wU2Nyb2xsQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxp
bmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYTo6cmVwb3NpdGlvblJlbGF0ZWRMYXllcnMp
OgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZU5pY29zaWEuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Nj
cm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhOjpTY3JvbGxp
bmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYSk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYTo6Y29tbWl0U3RhdGVBZnRl
ckNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9s
bGluZ05vZGVOaWNvc2lhOjpyZXBvc2l0aW9uU2Nyb2xsaW5nTGF5ZXJzKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhOjplbnN1cmVT
Y3JvbGxBbmltYXRpb25LaW5ldGljKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVP
dmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhOjplbnN1cmVTY3JvbGxBbmltYXRpb25TbW9vdGgp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5p
Y29zaWE6OmhhbmRsZVdoZWVsRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJl
ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWE6OnN0b3BTY3JvbGxBbmltYXRpb25zKToKKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9s
bGluZ05vZGVOaWNvc2lhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjplbnN1cmVTbW9vdGhT
Y3JvbGxpbmdBbmltYXRpb24pOgorCiAyMDIwLTEwLTA3ICBDb21taXQgUXVldWUgIDxjb21taXQt
cXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI2ODA4
NS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggY2Y1NjJlNTI1NzNiMjMxZmJmZDg2NjFkMzZiMDlmNWMxNTAwNDhiZC4u
ZTcwNTlkNzRhN2E0YWFlNzFhYWY3NzIyZjVkMzRhYTRhOTQzOTEyMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMSBAQAorMjAyMC0xMC0xMyAgQ2hyaXMgTG9yZCAgPGNsb3JkQGlnYWxpYS5jb20+CisK
KyAgICAgICAgW0dUS11bV1BFXSBBZGQgc3VwcG9ydCBmb3Igc21vb3RoIHNjcm9sbGluZyBhbmlt
YXRpb24gd2l0aCBhc3luYyBzY3JvbGxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMDM4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBoYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzIHRvIEdUSy9X
UEUgd2hlZWwgZXZlbnRzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBuZWVkZWQuCisKKyAgICAg
ICAgKiBTaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
S2l0MlBsYXRmb3JtV2hlZWxFdmVudDo6V2ViS2l0MlBsYXRmb3JtV2hlZWxFdmVudCk6CisgICAg
ICAgICogU2hhcmVkL1dlYldoZWVsRXZlbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJXaGVl
bEV2ZW50OjpXZWJXaGVlbEV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViV2hlZWxFdmVudDo6
ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViV2hlZWxFdmVudDo6ZGVjb2RlKToK
KyAgICAgICAgKiBTaGFyZWQvV2ViV2hlZWxFdmVudC5oOgorICAgICAgICAqIFNoYXJlZC9ndGsv
TmF0aXZlV2ViV2hlZWxFdmVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5hdGl2ZVdlYldo
ZWVsRXZlbnQ6Ok5hdGl2ZVdlYldoZWVsRXZlbnQpOgorICAgICAgICAqIFNoYXJlZC9ndGsvV2Vi
RXZlbnRGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRXZlbnRGYWN0b3J5OjpjcmVh
dGVXZWJXaGVlbEV2ZW50KToKKyAgICAgICAgKiBTaGFyZWQvbGlid3BlL1dlYkV2ZW50RmFjdG9y
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViV2hlZWxF
dmVudCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OmNhbkNvYWxlc2NlKToKKyAgICAgICAgKFdlYktpdDo6Y29hbGVzY2UpOgorCiAyMDIw
LTEwLTA3ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtl
IHN1cmUgdG8gZmlyZSB0aGUgY29ycmVjdCBzZXQgb2YgZXZlbnRzIGluIGNhc2UgTWVkaWFSZWNv
cmRlciBzdHJlYW0gaGFzIHRyYWNrIGNoYW5nZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAKaW5kZXgg
ZjEzOTIzNzFiZGIyMzMzNThlM2I0NTNlNTM1ZWIzOWMyZTk4ZDc5OC4uMzAzNzkwMDZlMzZkMDRk
ZmMxMzQxNzFmMjc3NDA2ZTk3YWYwMjRiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAKQEAgLTk1
Nyw2ICs5NTcsMTUgQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpyZXBvcnRTeW5j
aHJvbm91c1Njcm9sbGluZ1JlYXNvbnNDaGFuZ2VkKE1vbm90b24KICAgICAgICAgbV9wYWdlLT5w
ZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQoKS0+bG9nU2Nyb2xsaW5nRXZlbnQoUGVyZm9ybWFuY2VM
b2dnaW5nQ2xpZW50OjpTY3JvbGxpbmdFdmVudDo6U3dpdGNoZWRTY3JvbGxpbmdNb2RlLCB0aW1l
c3RhbXAsIHJlYXNvbnMudG9SYXcoKSk7CiB9CiAKKyNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElO
RykKK2Jvb2wgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6c2Nyb2xsQW5pbWF0b3JFbmFibGVk
KCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGF1dG8mIHNldHRp
bmdzID0gbV9wYWdlLT5tYWluRnJhbWUoKS5zZXR0aW5ncygpOworICAgIHJldHVybiBzZXR0aW5n
cy5zY3JvbGxBbmltYXRvckVuYWJsZWQoKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRv
ci5oCmluZGV4IDkwZDFjMjlkYzFiMDk4ZDczZTViM2Y5MjcwZTllZTgyMjhkZTFhMTcuLjU2Njc4
YjdjM2E5NDgwYjBmNmMxMTRkZjdjYzdjNmNlMWJhZmJhNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgK
QEAgLTcxLDYgKzcxLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlcG9ydEV4cG9zZWRVbmZpbGxl
ZEFyZWEoTW9ub3RvbmljVGltZSwgdW5zaWduZWQgdW5maWxsZWRBcmVhKTsKICAgICB2b2lkIHJl
cG9ydFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uc0NoYW5nZWQoTW9ub3RvbmljVGltZSwgT3B0
aW9uU2V0PFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uPik7CiAKKyNpZiBFTkFCTEUoU01PT1RI
X1NDUk9MTElORykKKyAgICBib29sIHNjcm9sbEFuaW1hdG9yRW5hYmxlZCgpIGNvbnN0OworI2Vu
ZGlmCisKIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCBBc3luY1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yKFBhZ2UqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHAKaW5kZXggMjNmNWYwZWZmMDU1ODhhZjI4MGI4
NmQ5N2U0YzJiYmRkMWVjMmUyYi4uYTlhOWI1OWU5OWQ4NTY0OTNiZDc1ZmYwYWUzZjViMWUyOTg4
YTM5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRT
Y3JvbGxpbmdUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9UaHJl
YWRlZFNjcm9sbGluZ1RyZWUuY3BwCkBAIC00Nyw2ICs0Nyw5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIFRocmVhZGVkU2Nyb2xsaW5nVHJlZTo6VGhyZWFkZWRTY3JvbGxpbmdUcmVlKEFzeW5jU2Ny
b2xsaW5nQ29vcmRpbmF0b3ImIHNjcm9sbGluZ0Nvb3JkaW5hdG9yKQogICAgIDogbV9zY3JvbGxp
bmdDb29yZGluYXRvcigmc2Nyb2xsaW5nQ29vcmRpbmF0b3IpCiB7CisjaWYgRU5BQkxFKFNNT09U
SF9TQ1JPTExJTkcpCisgICAgbV9zY3JvbGxBbmltYXRvckVuYWJsZWQgPSBzY3JvbGxpbmdDb29y
ZGluYXRvci5zY3JvbGxBbmltYXRvckVuYWJsZWQoKTsKKyNlbmRpZgogfQogCiBUaHJlYWRlZFNj
cm9sbGluZ1RyZWU6On5UaHJlYWRlZFNjcm9sbGluZ1RyZWUoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuaAppbmRleCBiMjVm
ZjE0Y2ExMmNiMjhhN2NhMTlmMDJhYjFhZmFjNDg2YTk1MTNmLi4wMzc3YzYzZGE1NTNkNDJhMzY3
ZjFhNTE0M2E5MmRlODY3MzEyMzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuaApAQCAtNTgsNiArNTgsOCBAQCBwdWJs
aWM6CiAKICAgICBMb2NrJiB0cmVlTXV0ZXgoKSB7IHJldHVybiBtX3RyZWVNdXRleDsgfQogCisg
ICAgYm9vbCBzY3JvbGxBbmltYXRvckVuYWJsZWQoKSB7IHJldHVybiBtX3Njcm9sbEFuaW1hdG9y
RW5hYmxlZDsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgVGhyZWFkZWRTY3JvbGxpbmdU
cmVlKEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3ImKTsKIApAQCAtMTAzLDYgKzEwNSw4IEBAIHBy
aXZhdGU6CiAKICAgICAvLyBEeW5hbWljYWxseSBhbGxvY2F0ZWQgYmVjYXVzZSBpdCBoYXMgdG8g
dXNlIHRoZSBTY3JvbGxpbmdUaHJlYWQncyBydW5sb29wLgogICAgIHN0ZDo6dW5pcXVlX3B0cjxS
dW5Mb29wOjpUaW1lcjxUaHJlYWRlZFNjcm9sbGluZ1RyZWU+PiBtX2RlbGF5ZWRSZW5kZXJpbmdV
cGRhdGVEZXRlY3Rpb25UaW1lcjsKKworICAgIGJvb2wgbV9zY3JvbGxBbmltYXRvckVuYWJsZWQg
eyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlTmljb3NpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNv
c2lhL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhLmNwcAppbmRleCAwOGI1
ZTVlNGY2ZjBmNTlmOThiNTIwYjI4Yzk5ODVkM2IxNWMwNTk3Li44ZDIzMmM5Mjg5YjAwNjViNTMw
NWI1MGEyODhlZGI5NmE2ZTllNTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1Ry
ZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhLmNwcApAQCAtNTQsNDAgKzU0LDcgQEAgUmVmPFNj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGU+IFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGlu
Z05vZGVOaWNvc2lhOjpjcmUKIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lh
OjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYShTY3JvbGxpbmdUcmVlJiBz
Y3JvbGxpbmdUcmVlLCBTY3JvbGxpbmdOb2RlVHlwZSBub2RlVHlwZSwgU2Nyb2xsaW5nTm9kZUlE
IG5vZGVJRCkKICAgICA6IFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUoc2Nyb2xsaW5n
VHJlZSwgbm9kZVR5cGUsIG5vZGVJRCkKIHsKLSNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcp
Ci0gICAgbV9raW5ldGljQW5pbWF0aW9uID0gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRpb25LaW5l
dGljPigKLSAgICAgICAgW3RoaXNdKCkgLT4gU2Nyb2xsRXh0ZW50cyB7Ci0gICAgICAgICAgICBy
ZXR1cm4geyBJbnRQb2ludChtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSksIEludFBvaW50KG1heGlt
dW1TY3JvbGxQb3NpdGlvbigpKSwgSW50U2l6ZShzY3JvbGxhYmxlQXJlYVNpemUoKSkgfTsKLSAg
ICAgICAgfSwKLSAgICAgICAgW3RoaXNdKEZsb2F0UG9pbnQmJiBwb3NpdGlvbikgewotI2lmIEVO
QUJMRShTTU9PVEhfU0NST0xMSU5HKQotICAgICAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnNl
dEN1cnJlbnRQb3NpdGlvbihwb3NpdGlvbik7Ci0jZW5kaWYKLQotICAgICAgICAgICAgYXV0byog
c2Nyb2xsTGF5ZXIgPSBzdGF0aWNfY2FzdDxOaWNvc2lhOjpQbGF0Zm9ybUxheWVyKj4oc2Nyb2xs
ZWRDb250ZW50c0xheWVyKCkpOwotICAgICAgICAgICAgQVNTRVJUKHNjcm9sbExheWVyKTsKLSAg
ICAgICAgICAgIGF1dG8mIGNvbXBvc2l0aW9uTGF5ZXIgPSBkb3duY2FzdDxOaWNvc2lhOjpDb21w
b3NpdGlvbkxheWVyPigqc2Nyb2xsTGF5ZXIpOwotCi0gICAgICAgICAgICBhdXRvIHVwZGF0ZVNj
b3BlID0gY29tcG9zaXRpb25MYXllci5jcmVhdGVVcGRhdGVTY29wZSgpOwotICAgICAgICAgICAg
c2Nyb2xsVG8ocG9zaXRpb24pOwotICAgICAgICB9KTsKLSNlbmRpZgotI2lmIEVOQUJMRShTTU9P
VEhfU0NST0xMSU5HKQotICAgIG1fc21vb3RoQW5pbWF0aW9uID0gbWFrZVVuaXF1ZTxTY3JvbGxB
bmltYXRpb25TbW9vdGg+KAotICAgICAgICBbdGhpc10oKSAtPiBTY3JvbGxFeHRlbnRzIHsKLSAg
ICAgICAgICAgIHJldHVybiB7IEludFBvaW50KG1pbmltdW1TY3JvbGxQb3NpdGlvbigpKSwgSW50
UG9pbnQobWF4aW11bVNjcm9sbFBvc2l0aW9uKCkpLCBJbnRTaXplKHNjcm9sbGFibGVBcmVhU2l6
ZSgpKSB9OwotICAgICAgICB9LAotICAgICAgICBjdXJyZW50U2Nyb2xsUG9zaXRpb24oKSwKLSAg
ICAgICAgW3RoaXNdKEZsb2F0UG9pbnQmJiBwb3NpdGlvbikgewotICAgICAgICAgICAgYXV0byog
c2Nyb2xsTGF5ZXIgPSBzdGF0aWNfY2FzdDxOaWNvc2lhOjpQbGF0Zm9ybUxheWVyKj4oc2Nyb2xs
ZWRDb250ZW50c0xheWVyKCkpOwotICAgICAgICAgICAgQVNTRVJUKHNjcm9sbExheWVyKTsKLSAg
ICAgICAgICAgIGF1dG8mIGNvbXBvc2l0aW9uTGF5ZXIgPSBkb3duY2FzdDxOaWNvc2lhOjpDb21w
b3NpdGlvbkxheWVyPigqc2Nyb2xsTGF5ZXIpOwotCi0gICAgICAgICAgICBhdXRvIHVwZGF0ZVNj
b3BlID0gY29tcG9zaXRpb25MYXllci5jcmVhdGVVcGRhdGVTY29wZSgpOwotICAgICAgICAgICAg
c2Nyb2xsVG8ocG9zaXRpb24pOwotICAgICAgICB9LAotICAgICAgICBbXSB7IH0pOwotI2VuZGlm
CisgICAgbV9zY3JvbGxBbmltYXRvckVuYWJsZWQgPSBkb3duY2FzdDxUaHJlYWRlZFNjcm9sbGlu
Z1RyZWU+KHNjcm9sbGluZ1RyZWUpLnNjcm9sbEFuaW1hdG9yRW5hYmxlZCgpOwogfQogCiBTY3Jv
bGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYTo6flNjcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGVOaWNvc2lhKCkgPSBkZWZhdWx0OwpAQCAtMTM2LDE3ICsxMDMsNjggQEAgdm9p
ZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYTo6Y29tbWl0U3RhdGVBZnRl
ckNoaWxkcmVuKGNvbnN0IFNjcm8KICAgICAgICAgY29uc3QgYXV0byYgcmVxdWVzdGVkU2Nyb2xs
RGF0YSA9IHNjcm9sbGluZ1N0YXRlTm9kZS5yZXF1ZXN0ZWRTY3JvbGxEYXRhKCk7CiAgICAgICAg
IHNjcm9sbFRvKHJlcXVlc3RlZFNjcm9sbERhdGEuc2Nyb2xsUG9zaXRpb24sIHJlcXVlc3RlZFNj
cm9sbERhdGEuc2Nyb2xsVHlwZSwgcmVxdWVzdGVkU2Nyb2xsRGF0YS5jbGFtcGluZyk7CiAjaWYg
RU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0gICAgICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zZXRD
dXJyZW50UG9zaXRpb24oY3VycmVudFNjcm9sbFBvc2l0aW9uKCkpOworICAgICAgICBpZiAobV9z
bW9vdGhBbmltYXRpb24pCisgICAgICAgICAgICBtX3Ntb290aEFuaW1hdGlvbi0+c2V0Q3VycmVu
dFBvc2l0aW9uKGN1cnJlbnRTY3JvbGxQb3NpdGlvbigpKTsKICNlbmRpZgogICAgIH0KIH0KIAor
I2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykKK3ZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZU5pY29zaWE6OmVuc3VyZVNjcm9sbEFuaW1hdGlvbktpbmV0aWMoKQoreworICAg
IGlmIChtX2tpbmV0aWNBbmltYXRpb24pCisgICAgICAgIHJldHVybjsKKworICAgIG1fa2luZXRp
Y0FuaW1hdGlvbiA9IG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0aW9uS2luZXRpYz4oCisgICAgICAg
IFt0aGlzXSgpIC0+IFNjcm9sbEV4dGVudHMgeworICAgICAgICAgICAgcmV0dXJuIHsgSW50UG9p
bnQobWluaW11bVNjcm9sbFBvc2l0aW9uKCkpLCBJbnRQb2ludChtYXhpbXVtU2Nyb2xsUG9zaXRp
b24oKSksIEludFNpemUoc2Nyb2xsYWJsZUFyZWFTaXplKCkpIH07CisgICAgICAgIH0sCisgICAg
ICAgIFt0aGlzXShGbG9hdFBvaW50JiYgcG9zaXRpb24pIHsKKyNpZiBFTkFCTEUoU01PT1RIX1ND
Uk9MTElORykKKyAgICAgICAgICAgIGlmIChtX3Ntb290aEFuaW1hdGlvbikKKyAgICAgICAgICAg
ICAgICBtX3Ntb290aEFuaW1hdGlvbi0+c2V0Q3VycmVudFBvc2l0aW9uKHBvc2l0aW9uKTsKKyNl
bmRpZgorCisgICAgICAgICAgICBhdXRvKiBzY3JvbGxMYXllciA9IHN0YXRpY19jYXN0PE5pY29z
aWE6OlBsYXRmb3JtTGF5ZXIqPihzY3JvbGxlZENvbnRlbnRzTGF5ZXIoKSk7CisgICAgICAgICAg
ICBBU1NFUlQoc2Nyb2xsTGF5ZXIpOworICAgICAgICAgICAgYXV0byYgY29tcG9zaXRpb25MYXll
ciA9IGRvd25jYXN0PE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+KCpzY3JvbGxMYXllcik7CisK
KyAgICAgICAgICAgIGF1dG8gdXBkYXRlU2NvcGUgPSBjb21wb3NpdGlvbkxheWVyLmNyZWF0ZVVw
ZGF0ZVNjb3BlKCk7CisgICAgICAgICAgICBzY3JvbGxUbyhwb3NpdGlvbik7CisgICAgICAgIH0p
OworfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKK3ZvaWQgU2Nyb2xs
aW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWE6OmVuc3VyZVNjcm9sbEFuaW1hdGlvblNt
b290aCgpCit7CisgICAgaWYgKCFtX3Njcm9sbEFuaW1hdG9yRW5hYmxlZCB8fCBtX3Ntb290aEFu
aW1hdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zbW9vdGhBbmltYXRpb24gPSBtYWtl
VW5pcXVlPFNjcm9sbEFuaW1hdGlvblNtb290aD4oCisgICAgICAgIFt0aGlzXSgpIC0+IFNjcm9s
bEV4dGVudHMgeworICAgICAgICAgICAgcmV0dXJuIHsgSW50UG9pbnQobWluaW11bVNjcm9sbFBv
c2l0aW9uKCkpLCBJbnRQb2ludChtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSksIEludFNpemUoc2Ny
b2xsYWJsZUFyZWFTaXplKCkpIH07CisgICAgICAgIH0sCisgICAgICAgIGN1cnJlbnRTY3JvbGxQ
b3NpdGlvbigpLAorICAgICAgICBbdGhpc10oRmxvYXRQb2ludCYmIHBvc2l0aW9uKSB7CisgICAg
ICAgICAgICBhdXRvKiBzY3JvbGxMYXllciA9IHN0YXRpY19jYXN0PE5pY29zaWE6OlBsYXRmb3Jt
TGF5ZXIqPihzY3JvbGxlZENvbnRlbnRzTGF5ZXIoKSk7CisgICAgICAgICAgICBBU1NFUlQoc2Ny
b2xsTGF5ZXIpOworICAgICAgICAgICAgYXV0byYgY29tcG9zaXRpb25MYXllciA9IGRvd25jYXN0
PE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+KCpzY3JvbGxMYXllcik7CisKKyAgICAgICAgICAg
IGF1dG8gdXBkYXRlU2NvcGUgPSBjb21wb3NpdGlvbkxheWVyLmNyZWF0ZVVwZGF0ZVNjb3BlKCk7
CisgICAgICAgICAgICBzY3JvbGxUbyhwb3NpdGlvbik7CisgICAgICAgIH0sCisgICAgICAgIFtd
IHsgfSk7Cit9CisjZW5kaWYKKwogV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0IFNjcm9sbGluZ1Ry
ZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRm
b3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkKIHsKICAgICBpZiAoIWNhbkhhbmRsZVdoZWVsRXZl
bnQod2hlZWxFdmVudCkpCiAgICAgICAgIHJldHVybiBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQ6
OnVuaGFuZGxlZCgpOwogCiAjaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKQorICAgIGVuc3Vy
ZVNjcm9sbEFuaW1hdGlvbktpbmV0aWMoKTsKICAgICBtX2tpbmV0aWNBbmltYXRpb24tPmFwcGVu
ZFRvU2Nyb2xsSGlzdG9yeSh3aGVlbEV2ZW50KTsKICAgICBtX2tpbmV0aWNBbmltYXRpb24tPnN0
b3AoKTsKICAgICBpZiAod2hlZWxFdmVudC5pc0VuZE9mTm9uTW9tZW50dW1TY3JvbGwoKSkgewpA
QCAtMTg5LDE2ICsyMDcsMjAgQEAgV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0IFNjcm9sbGluZ1Ry
ZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjpoYW5kbGVXaGVlbEV2ZW4KICAgICB9CiAKICNp
ZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKLSAgICBtX3Ntb290aEFuaW1hdGlvbi0+c2Nyb2xs
KEhvcml6b250YWxTY3JvbGxiYXIsIFNjcm9sbEJ5UGl4ZWwsIDEsIC1kZWx0YVgpOwotICAgIG1f
c21vb3RoQW5pbWF0aW9uLT5zY3JvbGwoVmVydGljYWxTY3JvbGxiYXIsIFNjcm9sbEJ5UGl4ZWws
IDEsIC1kZWx0YVkpOwotI2Vsc2UKKyAgICBlbnN1cmVTY3JvbGxBbmltYXRpb25TbW9vdGgoKTsK
KyAgICBpZiAobV9zbW9vdGhBbmltYXRpb24gJiYgIXdoZWVsRXZlbnQuaGFzUHJlY2lzZVNjcm9s
bGluZ0RlbHRhcygpKSB7CisgICAgICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zY3JvbGwoSG9yaXpv
bnRhbFNjcm9sbGJhciwgU2Nyb2xsQnlQaXhlbCwgMSwgLWRlbHRhWCk7CisgICAgICAgIG1fc21v
b3RoQW5pbWF0aW9uLT5zY3JvbGwoVmVydGljYWxTY3JvbGxiYXIsIFNjcm9sbEJ5UGl4ZWwsIDEs
IC1kZWx0YVkpOworICAgICAgICByZXR1cm4gV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0OjpoYW5k
bGVkKCk7CisgICAgfQorI2VuZGlmCisKICAgICBhdXRvKiBzY3JvbGxMYXllciA9IHN0YXRpY19j
YXN0PE5pY29zaWE6OlBsYXRmb3JtTGF5ZXIqPihzY3JvbGxlZENvbnRlbnRzTGF5ZXIoKSk7CiAg
ICAgQVNTRVJUKHNjcm9sbExheWVyKTsKICAgICBhdXRvJiBjb21wb3NpdGlvbkxheWVyID0gZG93
bmNhc3Q8Tmljb3NpYTo6Q29tcG9zaXRpb25MYXllcj4oKnNjcm9sbExheWVyKTsKIAogICAgIGF1
dG8gdXBkYXRlU2NvcGUgPSBjb21wb3NpdGlvbkxheWVyLmNyZWF0ZVVwZGF0ZVNjb3BlKCk7CiAg
ICAgc2Nyb2xsQnkoeyAtZGVsdGFYLCAtZGVsdGFZIH0pOwotI2VuZGlmCiAKICAgICByZXR1cm4g
V2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0OjpoYW5kbGVkKCk7CiB9CkBAIC0yMDYsMTEgKzIyOCwx
NCBAQCBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5n
Tm9kZU5pY29zaWE6OmhhbmRsZVdoZWVsRXZlbgogdm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlTmljb3NpYTo6c3RvcFNjcm9sbEFuaW1hdGlvbnMoKQogewogI2lmIEVOQUJMRShL
SU5FVElDX1NDUk9MTElORykKLSAgICBtX2tpbmV0aWNBbmltYXRpb24tPnN0b3AoKTsKLSAgICBt
X2tpbmV0aWNBbmltYXRpb24tPmNsZWFyU2Nyb2xsSGlzdG9yeSgpOworICAgIGlmIChtX2tpbmV0
aWNBbmltYXRpb24pIHsKKyAgICAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5zdG9wKCk7CisgICAg
ICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+Y2xlYXJTY3JvbGxIaXN0b3J5KCk7CisgICAgfQogI2Vu
ZGlmCiAjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0gICAgbV9zbW9vdGhBbmltYXRpb24t
PnN0b3AoKTsKKyAgICBpZiAobV9zbW9vdGhBbmltYXRpb24pCisgICAgICAgIG1fc21vb3RoQW5p
bWF0aW9uLT5zdG9wKCk7CiAjZW5kaWYKIH0KIApAQCAtMjg5LDYgKzMxNCwxMSBAQCB2b2lkIFNj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjpyZXBvc2l0aW9uUmVsYXRlZExh
eWVycygpCiAgICAgICAgIGlmIChtX2Zvb3RlckxheWVyKQogICAgICAgICAgICAgYXBwbHlMYXll
clBvc2l0aW9uKCptX2Zvb3RlckxheWVyLCBGbG9hdFBvaW50KGhvcml6b250YWxTY3JvbGxPZmZz
ZXRGb3JCYW5uZXIsIEZyYW1lVmlldzo6eVBvc2l0aW9uRm9yRm9vdGVyTGF5ZXIoc2Nyb2xsUG9z
aXRpb24sIHRvcENvbnRlbnRJbnNldCwgdG90YWxDb250ZW50c1NpemUoKS5oZWlnaHQoKSwgZm9v
dGVySGVpZ2h0KCkpKSk7CiAgICAgfQorCisjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCisg
ICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKQorICAgICAgICBtX3Ntb290aEFuaW1hdGlvbi0+dXBk
YXRlVmlzaWJsZUxlbmd0aHMoKTsKKyNlbmRpZgogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9s
bGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lh
LmgKaW5kZXggNTA1NGJlYmZlY2ZkYjZmOWI4MTdmM2NlZDNiYmQzYTk5MWMzOGY5My4uNjA0MDc5
ODgwNjExMmVlNmVjODI1ODI2MjU3OGM5NDM0Y2JkN2QxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdO
b2RlTmljb3NpYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEv
U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEuaApAQCAtNTMsNiArNTMsMTMg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Ny
b2xsaW5nU3RhdGVOb2RlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb21taXRTdGF0ZUFmdGVyQ2hp
bGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJikgb3ZlcnJpZGU7CiAKKyNpZiBFTkFCTEUo
S0lORVRJQ19TQ1JPTExJTkcpCisgICAgdm9pZCBlbnN1cmVTY3JvbGxBbmltYXRpb25LaW5ldGlj
KCk7CisjZW5kaWYKKyNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKKyAgICB2b2lkIGVuc3Vy
ZVNjcm9sbEFuaW1hdGlvblNtb290aCgpOworI2VuZGlmCisKICAgICBXaGVlbEV2ZW50SGFuZGxp
bmdSZXN1bHQgaGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKSBvdmVy
cmlkZTsKIAogICAgIHZvaWQgc3RvcFNjcm9sbEFuaW1hdGlvbnMoKSBvdmVycmlkZTsKQEAgLTcx
LDYgKzc4LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8Tmljb3NpYTo6Q29tcG9zaXRpb25MYXll
cj4gbV9oZWFkZXJMYXllcjsKICAgICBSZWZQdHI8Tmljb3NpYTo6Q29tcG9zaXRpb25MYXllcj4g
bV9mb290ZXJMYXllcjsKIAorICAgIGJvb2wgbV9zY3JvbGxBbmltYXRvckVuYWJsZWQgeyBmYWxz
ZSB9OwogI2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
U2Nyb2xsQW5pbWF0aW9uS2luZXRpYz4gbV9raW5ldGljQW5pbWF0aW9uOwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1Ry
ZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29z
aWEuY3BwCmluZGV4IDA2OWFkNGY5MjNmY2M2NTQzMGE5NGZiY2Y0NTgzZjVlZThiYmZkMmEuLmQ3
YmM4NzU0NjczMGM4ZjI3ZWUyZTZkNjc5ZGVmNzRmYzVmZmExMjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Ny
b2xsaW5nTm9kZU5pY29zaWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L25pY29zaWEvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWEuY3BwCkBA
IC01MSw0MCArNTEsNyBAQCBSZWY8U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZT4g
U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaQogU2Nyb2xsaW5nVHJlZU92
ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWE6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGlu
Z05vZGVOaWNvc2lhKFNjcm9sbGluZ1RyZWUmIHNjcm9sbGluZ1RyZWUsIFNjcm9sbGluZ05vZGVJ
RCBub2RlSUQpCiAgICAgOiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlKHNjcm9s
bGluZ1RyZWUsIG5vZGVJRCkKIHsKLSNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpCi0gICAg
bV9raW5ldGljQW5pbWF0aW9uID0gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRpb25LaW5ldGljPigK
LSAgICAgICAgW3RoaXNdKCkgLT4gU2Nyb2xsRXh0ZW50cyB7Ci0gICAgICAgICAgICByZXR1cm4g
eyBJbnRQb2ludChtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSksIEludFBvaW50KG1heGltdW1TY3Jv
bGxQb3NpdGlvbigpKSwgSW50U2l6ZShzY3JvbGxhYmxlQXJlYVNpemUoKSkgfTsKLSAgICAgICAg
fSwKLSAgICAgICAgW3RoaXNdKEZsb2F0UG9pbnQmJiBwb3NpdGlvbikgewotI2lmIEVOQUJMRShT
TU9PVEhfU0NST0xMSU5HKQotICAgICAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnNldEN1cnJl
bnRQb3NpdGlvbihwb3NpdGlvbik7Ci0jZW5kaWYKLQotICAgICAgICAgICAgYXV0byogc2Nyb2xs
TGF5ZXIgPSBzdGF0aWNfY2FzdDxOaWNvc2lhOjpQbGF0Zm9ybUxheWVyKj4oc2Nyb2xsQ29udGFp
bmVyTGF5ZXIoKSk7Ci0gICAgICAgICAgICBBU1NFUlQoc2Nyb2xsTGF5ZXIpOwotICAgICAgICAg
ICAgYXV0byYgY29tcG9zaXRpb25MYXllciA9IGRvd25jYXN0PE5pY29zaWE6OkNvbXBvc2l0aW9u
TGF5ZXI+KCpzY3JvbGxMYXllcik7Ci0KLSAgICAgICAgICAgIGF1dG8gdXBkYXRlU2NvcGUgPSBj
b21wb3NpdGlvbkxheWVyLmNyZWF0ZVVwZGF0ZVNjb3BlKCk7Ci0gICAgICAgICAgICBzY3JvbGxU
byhwb3NpdGlvbik7Ci0gICAgICAgIH0pOwotI2VuZGlmCi0jaWYgRU5BQkxFKFNNT09USF9TQ1JP
TExJTkcpCi0gICAgbV9zbW9vdGhBbmltYXRpb24gPSBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlv
blNtb290aD4oCi0gICAgICAgIFt0aGlzXSgpIC0+IFNjcm9sbEV4dGVudHMgewotICAgICAgICAg
ICAgcmV0dXJuIHsgSW50UG9pbnQobWluaW11bVNjcm9sbFBvc2l0aW9uKCkpLCBJbnRQb2ludCht
YXhpbXVtU2Nyb2xsUG9zaXRpb24oKSksIEludFNpemUoc2Nyb2xsYWJsZUFyZWFTaXplKCkpIH07
Ci0gICAgICAgIH0sCi0gICAgICAgIGN1cnJlbnRTY3JvbGxQb3NpdGlvbigpLAotICAgICAgICBb
dGhpc10oRmxvYXRQb2ludCYmIHBvc2l0aW9uKSB7Ci0gICAgICAgICAgICBhdXRvKiBzY3JvbGxM
YXllciA9IHN0YXRpY19jYXN0PE5pY29zaWE6OlBsYXRmb3JtTGF5ZXIqPihzY3JvbGxDb250YWlu
ZXJMYXllcigpKTsKLSAgICAgICAgICAgIEFTU0VSVChzY3JvbGxMYXllcik7Ci0gICAgICAgICAg
ICBhdXRvJiBjb21wb3NpdGlvbkxheWVyID0gZG93bmNhc3Q8Tmljb3NpYTo6Q29tcG9zaXRpb25M
YXllcj4oKnNjcm9sbExheWVyKTsKLQotICAgICAgICAgICAgYXV0byB1cGRhdGVTY29wZSA9IGNv
bXBvc2l0aW9uTGF5ZXIuY3JlYXRlVXBkYXRlU2NvcGUoKTsKLSAgICAgICAgICAgIHNjcm9sbFRv
KHBvc2l0aW9uKTsKLSAgICAgICAgfSwKLSAgICAgICAgW10geyB9KTsKLSNlbmRpZgorICAgIG1f
c2Nyb2xsQW5pbWF0b3JFbmFibGVkID0gZG93bmNhc3Q8VGhyZWFkZWRTY3JvbGxpbmdUcmVlPihz
Y3JvbGxpbmdUcmVlKS5zY3JvbGxBbmltYXRvckVuYWJsZWQoKTsKIH0KIAogU2Nyb2xsaW5nVHJl
ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWE6On5TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3Jv
bGxpbmdOb2RlTmljb3NpYSgpID0gZGVmYXVsdDsKQEAgLTk5LDcgKzY2LDggQEAgdm9pZCBTY3Jv
bGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYTo6Y29tbWl0U3RhdGVBZnRlckNo
aWxkcmVuKGNvbnN0IFMKICAgICAgICAgY29uc3QgYXV0byYgcmVxdWVzdGVkU2Nyb2xsRGF0YSA9
IG92ZXJmbG93U3RhdGVOb2RlLnJlcXVlc3RlZFNjcm9sbERhdGEoKTsKICAgICAgICAgc2Nyb2xs
VG8ocmVxdWVzdGVkU2Nyb2xsRGF0YS5zY3JvbGxQb3NpdGlvbiwgcmVxdWVzdGVkU2Nyb2xsRGF0
YS5zY3JvbGxUeXBlLCByZXF1ZXN0ZWRTY3JvbGxEYXRhLmNsYW1waW5nKTsKICNpZiBFTkFCTEUo
U01PT1RIX1NDUk9MTElORykKLSAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnNldEN1cnJlbnRQ
b3NpdGlvbihjdXJyZW50U2Nyb2xsUG9zaXRpb24oKSk7CisgICAgICAgIGlmIChtX3Ntb290aEFu
aW1hdGlvbikKKyAgICAgICAgICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zZXRDdXJyZW50UG9zaXRp
b24oY3VycmVudFNjcm9sbFBvc2l0aW9uKCkpOwogI2VuZGlmCiAgICAgfQogfQpAQCAtMTI0LDE0
ICs5Miw2OSBAQCB2b2lkIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lh
OjpyZXBvc2l0aW9uU2Nyb2xsaW5nTGF5ZXJzKCkKICAgICAgICAgICAgIHN0YXRlLmJvdW5kc09y
aWdpbiA9IHNjcm9sbE9mZnNldDsKICAgICAgICAgICAgIHN0YXRlLmRlbHRhLmJvdW5kc09yaWdp
bkNoYW5nZWQgPSB0cnVlOwogICAgICAgICB9KTsKKworI2lmIEVOQUJMRShTTU9PVEhfU0NST0xM
SU5HKQorICAgIGlmIChtX3Ntb290aEFuaW1hdGlvbikKKyAgICAgICAgbV9zbW9vdGhBbmltYXRp
b24tPnVwZGF0ZVZpc2libGVMZW5ndGhzKCk7CisjZW5kaWYKIH0KIAorI2lmIEVOQUJMRShLSU5F
VElDX1NDUk9MTElORykKK3ZvaWQgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5p
Y29zaWE6OmVuc3VyZVNjcm9sbEFuaW1hdGlvbktpbmV0aWMoKQoreworICAgIGlmIChtX2tpbmV0
aWNBbmltYXRpb24pCisgICAgICAgIHJldHVybjsKKworICAgIG1fa2luZXRpY0FuaW1hdGlvbiA9
IG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0aW9uS2luZXRpYz4oCisgICAgICAgIFt0aGlzXSgpIC0+
IFNjcm9sbEV4dGVudHMgeworICAgICAgICAgICAgcmV0dXJuIHsgSW50UG9pbnQobWluaW11bVNj
cm9sbFBvc2l0aW9uKCkpLCBJbnRQb2ludChtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSksIEludFNp
emUoc2Nyb2xsYWJsZUFyZWFTaXplKCkpIH07CisgICAgICAgIH0sCisgICAgICAgIFt0aGlzXShG
bG9hdFBvaW50JiYgcG9zaXRpb24pIHsKKyNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKKyAg
ICAgICAgICAgIGlmIChtX3Ntb290aEFuaW1hdGlvbikKKyAgICAgICAgICAgICAgICBtX3Ntb290
aEFuaW1hdGlvbi0+c2V0Q3VycmVudFBvc2l0aW9uKHBvc2l0aW9uKTsKKyNlbmRpZgorCisgICAg
ICAgICAgICBhdXRvKiBzY3JvbGxMYXllciA9IHN0YXRpY19jYXN0PE5pY29zaWE6OlBsYXRmb3Jt
TGF5ZXIqPihzY3JvbGxDb250YWluZXJMYXllcigpKTsKKyAgICAgICAgICAgIEFTU0VSVChzY3Jv
bGxMYXllcik7CisgICAgICAgICAgICBhdXRvJiBjb21wb3NpdGlvbkxheWVyID0gZG93bmNhc3Q8
Tmljb3NpYTo6Q29tcG9zaXRpb25MYXllcj4oKnNjcm9sbExheWVyKTsKKworICAgICAgICAgICAg
YXV0byB1cGRhdGVTY29wZSA9IGNvbXBvc2l0aW9uTGF5ZXIuY3JlYXRlVXBkYXRlU2NvcGUoKTsK
KyAgICAgICAgICAgIHNjcm9sbFRvKHBvc2l0aW9uKTsKKyAgICAgICAgfSk7Cit9CisjZW5kaWYK
KworI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQordm9pZCBTY3JvbGxpbmdUcmVlT3ZlcmZs
b3dTY3JvbGxpbmdOb2RlTmljb3NpYTo6ZW5zdXJlU2Nyb2xsQW5pbWF0aW9uU21vb3RoKCkKK3sK
KyAgICBpZiAoIW1fc2Nyb2xsQW5pbWF0b3JFbmFibGVkIHx8IG1fc21vb3RoQW5pbWF0aW9uKQor
ICAgICAgICByZXR1cm47CisKKyAgICBtX3Ntb290aEFuaW1hdGlvbiA9IG1ha2VVbmlxdWU8U2Ny
b2xsQW5pbWF0aW9uU21vb3RoPigKKyAgICAgICAgW3RoaXNdKCkgLT4gU2Nyb2xsRXh0ZW50cyB7
CisgICAgICAgICAgICByZXR1cm4geyBJbnRQb2ludChtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSks
IEludFBvaW50KG1heGltdW1TY3JvbGxQb3NpdGlvbigpKSwgSW50U2l6ZShzY3JvbGxhYmxlQXJl
YVNpemUoKSkgfTsKKyAgICAgICAgfSwKKyAgICAgICAgY3VycmVudFNjcm9sbFBvc2l0aW9uKCks
CisgICAgICAgIFt0aGlzXShGbG9hdFBvaW50JiYgcG9zaXRpb24pIHsKKyAgICAgICAgICAgIGF1
dG8qIHNjcm9sbExheWVyID0gc3RhdGljX2Nhc3Q8Tmljb3NpYTo6UGxhdGZvcm1MYXllcio+KHNj
cm9sbENvbnRhaW5lckxheWVyKCkpOworICAgICAgICAgICAgQVNTRVJUKHNjcm9sbExheWVyKTsK
KyAgICAgICAgICAgIGF1dG8mIGNvbXBvc2l0aW9uTGF5ZXIgPSBkb3duY2FzdDxOaWNvc2lhOjpD
b21wb3NpdGlvbkxheWVyPigqc2Nyb2xsTGF5ZXIpOworCisgICAgICAgICAgICBhdXRvIHVwZGF0
ZVNjb3BlID0gY29tcG9zaXRpb25MYXllci5jcmVhdGVVcGRhdGVTY29wZSgpOworICAgICAgICAg
ICAgc2Nyb2xsVG8ocG9zaXRpb24pOworICAgICAgICB9LAorICAgICAgICBbXSB7IH0pOworfQor
I2VuZGlmCisKIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dT
Y3JvbGxpbmdOb2RlTmljb3NpYTo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVs
RXZlbnQmIHdoZWVsRXZlbnQpCiB7CiAgICAgaWYgKCFjYW5IYW5kbGVXaGVlbEV2ZW50KHdoZWVs
RXZlbnQpKQogICAgICAgICByZXR1cm4gV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0Ojp1bmhhbmRs
ZWQoKTsKIAogI2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykKKyAgICBlbnN1cmVTY3JvbGxB
bmltYXRpb25LaW5ldGljKCk7CiAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5hcHBlbmRUb1Njcm9s
bEhpc3Rvcnkod2hlZWxFdmVudCk7CiAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5zdG9wKCk7CiAg
ICAgaWYgKHdoZWVsRXZlbnQuaXNFbmRPZk5vbk1vbWVudHVtU2Nyb2xsKCkpIHsKQEAgLTE3NCwx
NiArMTk3LDIwIEBAIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdCBTY3JvbGxpbmdUcmVlT3ZlcmZs
b3dTY3JvbGxpbmdOb2RlTmljb3NpYTo6aGFuZGxlV2hlZWxFCiAgICAgfQogCiAjaWYgRU5BQkxF
KFNNT09USF9TQ1JPTExJTkcpCi0gICAgbV9zbW9vdGhBbmltYXRpb24tPnNjcm9sbChIb3Jpem9u
dGFsU2Nyb2xsYmFyLCBTY3JvbGxCeVBpeGVsLCAxLCAtZGVsdGFYKTsKLSAgICBtX3Ntb290aEFu
aW1hdGlvbi0+c2Nyb2xsKFZlcnRpY2FsU2Nyb2xsYmFyLCBTY3JvbGxCeVBpeGVsLCAxLCAtZGVs
dGFZKTsKLSNlbHNlCisgICAgZW5zdXJlU2Nyb2xsQW5pbWF0aW9uU21vb3RoKCk7CisgICAgaWYg
KG1fc21vb3RoQW5pbWF0aW9uICYmICF3aGVlbEV2ZW50Lmhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0
YXMoKSkgeworICAgICAgICBtX3Ntb290aEFuaW1hdGlvbi0+c2Nyb2xsKEhvcml6b250YWxTY3Jv
bGxiYXIsIFNjcm9sbEJ5UGl4ZWwsIDEsIC1kZWx0YVgpOworICAgICAgICBtX3Ntb290aEFuaW1h
dGlvbi0+c2Nyb2xsKFZlcnRpY2FsU2Nyb2xsYmFyLCBTY3JvbGxCeVBpeGVsLCAxLCAtZGVsdGFZ
KTsKKyAgICAgICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6aGFuZGxlZCgpOwor
ICAgIH0KKyNlbmRpZgorCiAgICAgYXV0byogc2Nyb2xsTGF5ZXIgPSBzdGF0aWNfY2FzdDxOaWNv
c2lhOjpQbGF0Zm9ybUxheWVyKj4oc2Nyb2xsQ29udGFpbmVyTGF5ZXIoKSk7CiAgICAgQVNTRVJU
KHNjcm9sbExheWVyKTsKICAgICBhdXRvJiBjb21wb3NpdGlvbkxheWVyID0gZG93bmNhc3Q8Tmlj
b3NpYTo6Q29tcG9zaXRpb25MYXllcj4oKnNjcm9sbExheWVyKTsKIAogICAgIGF1dG8gdXBkYXRl
U2NvcGUgPSBjb21wb3NpdGlvbkxheWVyLmNyZWF0ZVVwZGF0ZVNjb3BlKCk7CiAgICAgc2Nyb2xs
QnkoeyAtZGVsdGFYLCAtZGVsdGFZIH0pOwotI2VuZGlmCiAKICAgICByZXR1cm4gV2hlZWxFdmVu
dEhhbmRsaW5nUmVzdWx0OjpoYW5kbGVkKCk7CiB9CkBAIC0xOTEsMTEgKzIxOCwxNCBAQCBXaGVl
bEV2ZW50SGFuZGxpbmdSZXN1bHQgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5p
Y29zaWE6OmhhbmRsZVdoZWVsRQogdm9pZCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlTmljb3NpYTo6c3RvcFNjcm9sbEFuaW1hdGlvbnMoKQogewogI2lmIEVOQUJMRShLSU5FVElD
X1NDUk9MTElORykKLSAgICBtX2tpbmV0aWNBbmltYXRpb24tPnN0b3AoKTsKLSAgICBtX2tpbmV0
aWNBbmltYXRpb24tPmNsZWFyU2Nyb2xsSGlzdG9yeSgpOworICAgIGlmIChtX2tpbmV0aWNBbmlt
YXRpb24pIHsKKyAgICAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5zdG9wKCk7CisgICAgICAgIG1f
a2luZXRpY0FuaW1hdGlvbi0+Y2xlYXJTY3JvbGxIaXN0b3J5KCk7CisgICAgfQogI2VuZGlmCiAj
aWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0gICAgbV9zbW9vdGhBbmltYXRpb24tPnN0b3Ao
KTsKKyAgICBpZiAobV9zbW9vdGhBbmltYXRpb24pCisgICAgICAgIG1fc21vb3RoQW5pbWF0aW9u
LT5zdG9wKCk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3Np
YS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYS5oCmluZGV4IDEzMmI0ODg3MWQ2Y2RiNjc0NWM0
YWMzNjE3YTRiYzFkZGVmNGI5MDIuLjNiZDFhNDUzMzdkMDA2Mzc4OGU1MDE4NTczZmEwMWFlMzAw
ZWFmZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEv
U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9s
bGluZ05vZGVOaWNvc2lhLmgKQEAgLTUwLDEwICs1MCwxOCBAQCBwcml2YXRlOgogCiAgICAgdm9p
ZCByZXBvc2l0aW9uU2Nyb2xsaW5nTGF5ZXJzKCkgb3ZlcnJpZGU7CiAKKyNpZiBFTkFCTEUoS0lO
RVRJQ19TQ1JPTExJTkcpCisgICAgdm9pZCBlbnN1cmVTY3JvbGxBbmltYXRpb25LaW5ldGljKCk7
CisjZW5kaWYKKyNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKKyAgICB2b2lkIGVuc3VyZVNj
cm9sbEFuaW1hdGlvblNtb290aCgpOworI2VuZGlmCisKICAgICBXaGVlbEV2ZW50SGFuZGxpbmdS
ZXN1bHQgaGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKSBvdmVycmlk
ZTsKIAogICAgIHZvaWQgc3RvcFNjcm9sbEFuaW1hdGlvbnMoKSBvdmVycmlkZTsKIAorICAgIGJv
b2wgbV9zY3JvbGxBbmltYXRvckVuYWJsZWQgeyBmYWxzZSB9OwogI2lmIEVOQUJMRShLSU5FVElD
X1NDUk9MTElORykKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsQW5pbWF0aW9uS2luZXRpYz4g
bV9raW5ldGljQW5pbWF0aW9uOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtV2hlZWxFdmVudC5oCmluZGV4IGUwOWE2YTZiOTIzZmEwMTAyMTE4NGU1Mjc1MzQ2NWY0
ZjIyM2NmNmMuLjA3ZDNmZDcxNzE3OTZhZjQxNzU3NDUwMDYzNzgxOTViY2I5NmMyODggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCkBAIC0xNDEsOSAr
MTQxLDEyIEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBQbGF0Zm9ybVdoZWVsRXZlbnQoR2RrRXZl
bnRTY3JvbGwqKTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgUExBVEZPUk0o
Q09DT0EpIHx8IFBMQVRGT1JNKEdUSykgfHwgVVNFKExJQldQRSkKICAgICBib29sIGhhc1ByZWNp
c2VTY3JvbGxpbmdEZWx0YXMoKSBjb25zdCB7IHJldHVybiBtX2hhc1ByZWNpc2VTY3JvbGxpbmdE
ZWx0YXM7IH0KICAgICB2b2lkIHNldEhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMoYm9vbCBoYXNQ
cmVjaXNlU2Nyb2xsaW5nRGVsdGFzKSB7IG1faGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcyA9IGhh
c1ByZWNpc2VTY3JvbGxpbmdEZWx0YXM7IH0KKyNlbmRpZgorCisjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgdW5zaWduZWQgc2Nyb2xsQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbENvdW50
OyB9CiAgICAgZmxvYXQgdW5hY2NlbGVyYXRlZFNjcm9sbGluZ0RlbHRhWCgpIGNvbnN0IHsgcmV0
dXJuIG1fdW5hY2NlbGVyYXRlZFNjcm9sbGluZ0RlbHRhWDsgfQogICAgIGZsb2F0IHVuYWNjZWxl
cmF0ZWRTY3JvbGxpbmdEZWx0YVkoKSBjb25zdCB7IHJldHVybiBtX3VuYWNjZWxlcmF0ZWRTY3Jv
bGxpbmdEZWx0YVk7IH0KQEAgLTE5Myw4ICsxOTYsMTAgQEAgcHJvdGVjdGVkOgogICAgIFBsYXRm
b3JtV2hlZWxFdmVudFBoYXNlIG1fcGhhc2UgeyBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZU5vbmUg
fTsKICAgICBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSBtX21vbWVudHVtUGhhc2UgeyBQbGF0Zm9y
bVdoZWVsRXZlbnRQaGFzZU5vbmUgfTsKICNlbmRpZgotI2lmIFBMQVRGT1JNKENPQ09BKQorI2lm
IFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShHVEspIHx8IFVTRShMSUJXUEUpCiAgICAgYm9v
bCBtX2hhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMgeyBmYWxzZSB9OworI2VuZGlmCisjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgdW5zaWduZWQgbV9zY3JvbGxDb3VudCB7IDAgfTsKICAgICBmbG9h
dCBtX3VuYWNjZWxlcmF0ZWRTY3JvbGxpbmdEZWx0YVggeyAwIH07CiAgICAgZmxvYXQgbV91bmFj
Y2VsZXJhdGVkU2Nyb2xsaW5nRGVsdGFZIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuY3BwCmluZGV4IGMw
NGE0ODBkNTU5NmM3MWNjZjJhNTRhMjk1Zjk5ZTZmOTk1ODhhMWYuLjE1M2E0ZWQ1MWUxMjI3ZjEw
NGNlNzM1ZWU3YmJhYzMzY2FjZmVlMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5jcHAKQEAgLTczLDggKzcz
LDEwIEBAIFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6flNjcm9sbEFuaW1hdG9yR2VuZXJpYygpID0g
ZGVmYXVsdDsKICNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKIHZvaWQgU2Nyb2xsQW5pbWF0
b3JHZW5lcmljOjplbnN1cmVTbW9vdGhTY3JvbGxpbmdBbmltYXRpb24oKQogewotICAgIGlmICht
X3Ntb290aEFuaW1hdGlvbikKKyAgICBpZiAobV9zbW9vdGhBbmltYXRpb24pIHsKKyAgICAgICAg
bV9zbW9vdGhBbmltYXRpb24tPnNldEN1cnJlbnRQb3NpdGlvbihtX2N1cnJlbnRQb3NpdGlvbik7
CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBtX3Ntb290aEFuaW1hdGlvbiA9IG1ha2VV
bmlxdWU8U2Nyb2xsQW5pbWF0aW9uU21vb3RoPigKICAgICAgICAgW3RoaXNdKCkgLT4gU2Nyb2xs
RXh0ZW50cyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJFdmVudENvbnZl
cnNpb24uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcApp
bmRleCAyZGUyNjAxNTU5NWEzODNmYjNiMTdlYWY3NDZkMjk2ZjZlOTk4ODdhLi4wZmI5OWM3YTll
NjRmYjhhNmQ4ODI1YjNhZmIyMDY0ZjgwNTA1YjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJFdmVudENvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkV2ZW50Q29udmVyc2lvbi5jcHAKQEAgLTE2NCw4ICsxNjQsMTAgQEAgcHVibGljOgogICAg
ICAgICBtX3BoYXNlID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50UGhh
c2U+KHdlYkV2ZW50LnBoYXNlKCkpOwogICAgICAgICBtX21vbWVudHVtUGhhc2UgPSBzdGF0aWNf
Y2FzdDxXZWJDb3JlOjpQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZT4od2ViRXZlbnQubW9tZW50dW1Q
aGFzZSgpKTsKICNlbmRpZgotI2lmIFBMQVRGT1JNKENPQ09BKQorI2lmIFBMQVRGT1JNKENPQ09B
KSB8fCBQTEFURk9STShHVEspIHx8IFVTRShMSUJXUEUpCiAgICAgICAgIG1faGFzUHJlY2lzZVNj
cm9sbGluZ0RlbHRhcyA9IHdlYkV2ZW50Lmhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMoKTsKKyNl
bmRpZgorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICBtX3Njcm9sbENvdW50ID0gd2ViRXZl
bnQuc2Nyb2xsQ291bnQoKTsKICAgICAgICAgbV91bmFjY2VsZXJhdGVkU2Nyb2xsaW5nRGVsdGFY
ID0gd2ViRXZlbnQudW5hY2NlbGVyYXRlZFNjcm9sbGluZ0RlbHRhKCkud2lkdGgoKTsKICAgICAg
ICAgbV91bmFjY2VsZXJhdGVkU2Nyb2xsaW5nRGVsdGFZID0gd2ViRXZlbnQudW5hY2NlbGVyYXRl
ZFNjcm9sbGluZ0RlbHRhKCkuaGVpZ2h0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJXaGVlbEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYldoZWVsRXZl
bnQuY3BwCmluZGV4IDlkNzI1ZWRiNjcyMTRjZGMxYzg1NjRmYmZhMWNjMTQ4YjIyOWQ3N2QuLmMw
M2ZlMjNlYmQ3ZWFjNjM4NTFlYzBhZTlhM2JkZmJkMTY5Zjg5YWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYldoZWVsRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYldoZWVsRXZlbnQuY3BwCkBAIC02MSw3ICs2MSw3IEBAIFdlYldoZWVsRXZlbnQ6Oldl
YldoZWVsRXZlbnQoVHlwZSB0eXBlLCBjb25zdCBJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0IElu
dFBvaW50CiAgICAgQVNTRVJUKGlzV2hlZWxFdmVudFR5cGUodHlwZSkpOwogfQogI2VsaWYgUExB
VEZPUk0oR1RLKSB8fCBVU0UoTElCV1BFKQotV2ViV2hlZWxFdmVudDo6V2ViV2hlZWxFdmVudChU
eXBlIHR5cGUsIGNvbnN0IEludFBvaW50JiBwb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2Jh
bFBvc2l0aW9uLCBjb25zdCBGbG9hdFNpemUmIGRlbHRhLCBjb25zdCBGbG9hdFNpemUmIHdoZWVs
VGlja3MsIFBoYXNlIHBoYXNlLCBQaGFzZSBtb21lbnR1bVBoYXNlLCBHcmFudWxhcml0eSBncmFu
dWxhcml0eSwgT3B0aW9uU2V0PE1vZGlmaWVyPiBtb2RpZmllcnMsIFdhbGxUaW1lIHRpbWVzdGFt
cCkKK1dlYldoZWVsRXZlbnQ6OldlYldoZWVsRXZlbnQoVHlwZSB0eXBlLCBjb25zdCBJbnRQb2lu
dCYgcG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgY29uc3QgRmxvYXRT
aXplJiBkZWx0YSwgY29uc3QgRmxvYXRTaXplJiB3aGVlbFRpY2tzLCBQaGFzZSBwaGFzZSwgUGhh
c2UgbW9tZW50dW1QaGFzZSwgR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGJvb2wgaGFzUHJlY2lz
ZVNjcm9sbGluZ0RlbHRhcywgT3B0aW9uU2V0PE1vZGlmaWVyPiBtb2RpZmllcnMsIFdhbGxUaW1l
IHRpbWVzdGFtcCkKICAgICA6IFdlYkV2ZW50KHR5cGUsIG1vZGlmaWVycywgdGltZXN0YW1wKQog
ICAgICwgbV9wb3NpdGlvbihwb3NpdGlvbikKICAgICAsIG1fZ2xvYmFsUG9zaXRpb24oZ2xvYmFs
UG9zaXRpb24pCkBAIC03MCw2ICs3MCw3IEBAIFdlYldoZWVsRXZlbnQ6OldlYldoZWVsRXZlbnQo
VHlwZSB0eXBlLCBjb25zdCBJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0IEludFBvaW50CiAgICAg
LCBtX2dyYW51bGFyaXR5KGdyYW51bGFyaXR5KQogICAgICwgbV9waGFzZShwaGFzZSkKICAgICAs
IG1fbW9tZW50dW1QaGFzZShtb21lbnR1bVBoYXNlKQorICAgICwgbV9oYXNQcmVjaXNlU2Nyb2xs
aW5nRGVsdGFzKGhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMpCiB7CiAgICAgQVNTRVJUKGlzV2hl
ZWxFdmVudFR5cGUodHlwZSkpOwogfQpAQCAtODgsOSArODksOSBAQCB2b2lkIFdlYldoZWVsRXZl
bnQ6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAjaWYgUExBVEZPUk0oQ09D
T0EpIHx8IFBMQVRGT1JNKEdUSykgfHwgVVNFKExJQldQRSkKICAgICBlbmNvZGVyIDw8IG1fcGhh
c2U7CiAgICAgZW5jb2RlciA8PCBtX21vbWVudHVtUGhhc2U7CisgICAgZW5jb2RlciA8PCBtX2hh
c1ByZWNpc2VTY3JvbGxpbmdEZWx0YXM7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkKLSAg
ICBlbmNvZGVyIDw8IG1faGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhczsKICAgICBlbmNvZGVyIDw8
IG1fc2Nyb2xsQ291bnQ7CiAgICAgZW5jb2RlciA8PCBtX3VuYWNjZWxlcmF0ZWRTY3JvbGxpbmdE
ZWx0YTsKICNlbmRpZgpAQCAtMTE3LDEwICsxMTgsMTAgQEAgYm9vbCBXZWJXaGVlbEV2ZW50Ojpk
ZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBXZWJXaGVlbEV2ZW50JiB0KQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0Lm1fbW9tZW50dW1QaGFzZSkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUodC5tX2hhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHQubV9zY3JvbGxDb3VudCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHQubV91bmFjY2VsZXJhdGVkU2Nyb2xsaW5nRGVsdGEp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViV2hlZWxFdmVudC5oIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViV2hlZWxFdmVudC5oCmluZGV4IDYwOTY3MDY0MDNmY2M3MDk3
NjQzMDJmZmYxNDU5MDFmYjQxY2NjMWUuLmUwOTFkYjhmYjkwYzM5OTVkMDQ3ZDQ5MTZlNTQ4MzE3
NzBjZGM1NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYldoZWVsRXZlbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJXaGVlbEV2ZW50LmgKQEAgLTU1LDcgKzU1
LDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFdlYldoZWVsRXZlbnQoVHlw
ZSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgZ2xvYmFsUG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgZGVsdGEsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgd2hlZWxUaWNrcywgR3JhbnVsYXJpdHksIGJvb2wgZGly
ZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlLCBQaGFzZSwgUGhhc2UgbW9tZW50dW1QaGFzZSwgYm9v
bCBoYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzLCB1aW50MzJfdCBzY3JvbGxDb3VudCwgY29uc3Qg
V2ViQ29yZTo6RmxvYXRTaXplJiB1bmFjY2VsZXJhdGVkU2Nyb2xsaW5nRGVsdGEsIE9wdGlvblNl
dDxNb2RpZmllcj4sIFdhbGxUaW1lIHRpbWVzdGFtcCk7CiAjZWxpZiBQTEFURk9STShHVEspIHx8
IFVTRShMSUJXUEUpCi0gICAgV2ViV2hlZWxFdmVudChUeXBlLCBjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBkZWx0YSwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXpl
JiB3aGVlbFRpY2tzLCBQaGFzZSwgUGhhc2UgbW9tZW50dW1QaGFzZSwgR3JhbnVsYXJpdHksIE9w
dGlvblNldDxNb2RpZmllcj4sIFdhbGxUaW1lIHRpbWVzdGFtcCk7CisgICAgV2ViV2hlZWxFdmVu
dChUeXBlLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBkZWx0
YSwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiB3aGVlbFRpY2tzLCBQaGFzZSwgUGhhc2UgbW9t
ZW50dW1QaGFzZSwgR3JhbnVsYXJpdHksIGJvb2wgaGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcywg
T3B0aW9uU2V0PE1vZGlmaWVyPiwgV2FsbFRpbWUgdGltZXN0YW1wKTsKICNlbmRpZgogCiAgICAg
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQgcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0
aW9uOyB9CkBAIC02Niw4ICs2NiwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBkaXJlY3Rpb25JbnZl
cnRlZEZyb21EZXZpY2UoKSBjb25zdCB7IHJldHVybiBtX2RpcmVjdGlvbkludmVydGVkRnJvbURl
dmljZTsgfQogICAgIFBoYXNlIHBoYXNlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UGhh
c2U+KG1fcGhhc2UpOyB9CiAgICAgUGhhc2UgbW9tZW50dW1QaGFzZSgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PFBoYXNlPihtX21vbWVudHVtUGhhc2UpOyB9Ci0jaWYgUExBVEZPUk0oQ09D
T0EpCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykgfHwgVVNFKExJQldQRSkK
ICAgICBib29sIGhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMoKSBjb25zdCB7IHJldHVybiBtX2hh
c1ByZWNpc2VTY3JvbGxpbmdEZWx0YXM7IH0KKyNlbmRpZgorI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIHVpbnQzMl90IHNjcm9sbENvdW50KCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxDb3VudDsg
fQogICAgIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgdW5hY2NlbGVyYXRlZFNjcm9sbGluZ0Rl
bHRhKCkgY29uc3QgeyByZXR1cm4gbV91bmFjY2VsZXJhdGVkU2Nyb2xsaW5nRGVsdGE7IH0KICNl
bmRpZgpAQCAtODYsOCArODgsMTAgQEAgcHJpdmF0ZToKICAgICB1aW50MzJfdCBtX3BoYXNlIHsg
UGhhc2U6OlBoYXNlTm9uZSB9OwogICAgIHVpbnQzMl90IG1fbW9tZW50dW1QaGFzZSB7IFBoYXNl
OjpQaGFzZU5vbmUgfTsKICAgICBib29sIG1fZGlyZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlIHsg
ZmFsc2UgfTsKLSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgUExB
VEZPUk0oR1RLKSB8fCBVU0UoTElCV1BFKQogICAgIGJvb2wgbV9oYXNQcmVjaXNlU2Nyb2xsaW5n
RGVsdGFzIHsgZmFsc2UgfTsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHVpbnQz
Ml90IG1fc2Nyb2xsQ291bnQgeyAwIH07CiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIG1fdW5hY2Nl
bGVyYXRlZFNjcm9sbGluZ0RlbHRhOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9ndGsvTmF0aXZlV2ViV2hlZWxFdmVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9ndGsvTmF0aXZlV2ViV2hlZWxFdmVudEd0ay5jcHAKaW5kZXggNmU5NTY3YzRiOTVhYzg2
NjAwNmYzNGMwZDk0MzE4YTM2MWJiMWY3Zi4uNDg4ZmJlYzkzOTFkNDRlNmIxYzJmYmJkNGU5NWU0
YzdlNmE1YWJmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL05hdGl2ZVdl
YldoZWVsRXZlbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9OYXRpdmVX
ZWJXaGVlbEV2ZW50R3RrLmNwcApAQCAtNTAsMTIgKzUwLDEyIEBAIE5hdGl2ZVdlYldoZWVsRXZl
bnQ6Ok5hdGl2ZVdlYldoZWVsRXZlbnQoR2RrRXZlbnQqIGV2ZW50LCBjb25zdCBXZWJDb3JlOjpJ
bnRQb2luCiB9CiAKIE5hdGl2ZVdlYldoZWVsRXZlbnQ6Ok5hdGl2ZVdlYldoZWVsRXZlbnQoY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYg
Z2xvYmFsUG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgZGVsdGEsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0U2l6ZSYgd2hlZWxUaWNrcywgV2ViV2hlZWxFdmVudDo6UGhhc2UgcGhhc2Us
IFdlYldoZWVsRXZlbnQ6OlBoYXNlIG1vbWVudHVtUGhhc2UpCi0gICAgOiBXZWJXaGVlbEV2ZW50
KFdlYkV2ZW50OjpXaGVlbCwgcG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBkZWx0YSwgd2hlZWxU
aWNrcywgcGhhc2UsIG1vbWVudHVtUGhhc2UsIFdlYldoZWVsRXZlbnQ6OlNjcm9sbEJ5UGl4ZWxX
aGVlbEV2ZW50LCB7IH0sIFdhbGxUaW1lOjpub3coKSkKKyAgICA6IFdlYldoZWVsRXZlbnQoV2Vi
RXZlbnQ6OldoZWVsLCBwb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24sIGRlbHRhLCB3aGVlbFRpY2tz
LCBwaGFzZSwgbW9tZW50dW1QaGFzZSwgV2ViV2hlZWxFdmVudDo6U2Nyb2xsQnlQaXhlbFdoZWVs
RXZlbnQsIGZhbHNlLCB7IH0sIFdhbGxUaW1lOjpub3coKSkKIHsKIH0KIAogTmF0aXZlV2ViV2hl
ZWxFdmVudDo6TmF0aXZlV2ViV2hlZWxFdmVudChjb25zdCBOYXRpdmVXZWJXaGVlbEV2ZW50JiBl
dmVudCkKLSAgICA6IFdlYldoZWVsRXZlbnQoZXZlbnQudHlwZSgpLCBldmVudC5wb3NpdGlvbigp
LCBldmVudC5nbG9iYWxQb3NpdGlvbigpLCBldmVudC5kZWx0YSgpLCBldmVudC53aGVlbFRpY2tz
KCksIGV2ZW50LnBoYXNlKCksIGV2ZW50Lm1vbWVudHVtUGhhc2UoKSwgZXZlbnQuZ3JhbnVsYXJp
dHkoKSwgZXZlbnQubW9kaWZpZXJzKCksIGV2ZW50LnRpbWVzdGFtcCgpKQorICAgIDogV2ViV2hl
ZWxFdmVudChldmVudC50eXBlKCksIGV2ZW50LnBvc2l0aW9uKCksIGV2ZW50Lmdsb2JhbFBvc2l0
aW9uKCksIGV2ZW50LmRlbHRhKCksIGV2ZW50LndoZWVsVGlja3MoKSwgZXZlbnQucGhhc2UoKSwg
ZXZlbnQubW9tZW50dW1QaGFzZSgpLCBldmVudC5ncmFudWxhcml0eSgpLCBldmVudC5oYXNQcmVj
aXNlU2Nyb2xsaW5nRGVsdGFzKCksIGV2ZW50Lm1vZGlmaWVycygpLCBldmVudC50aW1lc3RhbXAo
KSkKICAgICAsIG1fbmF0aXZlRXZlbnQoZXZlbnQubmF0aXZlRXZlbnQoKSA/IGdka19ldmVudF9j
b3B5KGV2ZW50Lm5hdGl2ZUV2ZW50KCkpIDogbnVsbHB0cikKIHsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5jcHAKaW5kZXggY2M5N2MyMTdiYTJlZjM5MDdl
NjkyZjA3MzlhMmZjMDZhZTgxZjk2OS4uY2E1Y2U0OGE4OTlkNTk5OGFhMTkzNDUzZWZmNjJjMjYw
MTVmMTcyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFj
dG9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5j
cHAKQEAgLTI4OCw2ICsyODgsNyBAQCBXZWJXaGVlbEV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3Jl
YXRlV2ViV2hlZWxFdmVudChjb25zdCBHZGtFdmVudCogZXZlbnQsIGNvbnN0CiAgICAgICAgIHBo
YXNlLAogICAgICAgICBtb21lbnR1bVBoYXNlLAogICAgICAgICBXZWJXaGVlbEV2ZW50OjpTY3Jv
bGxCeVBpeGVsV2hlZWxFdmVudCwKKyAgICAgICAgZmFsc2UsCiAgICAgICAgIG1vZGlmaWVyc0Zv
ckV2ZW50KGV2ZW50KSwKICAgICAgICAgd2FsbFRpbWVGb3JFdmVudChldmVudCkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbGlid3BlL1dlYkV2ZW50RmFjdG9yeS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9saWJ3cGUvV2ViRXZlbnRGYWN0b3J5LmNwcAppbmRleCBm
OGE5NzE1M2Q5ZDRkMmUwZDFmMWIzYmE5YjI2NDYwYWQ5MzU0M2Q2Li5iMDQwMWJmNzExOTk0OTBi
NTk2MWIwMGE0OWU0ZDQ5ODVmOWZlZWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9saWJ3cGUvV2ViRXZlbnRGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9s
aWJ3cGUvV2ViRXZlbnRGYWN0b3J5LmNwcApAQCAtMTY0LDYgKzE2NCw3IEBAIFdlYldoZWVsRXZl
bnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJXaGVlbEV2ZW50KHN0cnVjdCB3cGVfaW5wdXRf
YXhpc19ldmVudCoKIAogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSB3aGVlbFRpY2tzOwogICAgIFdl
YkNvcmU6OkZsb2F0U2l6ZSBkZWx0YTsKKyAgICBib29sIGhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0
YXMgPSBmYWxzZTsKIAogI2lmIFdQRV9DSEVDS19WRVJTSU9OKDEsIDUsIDApCiAgICAgaWYgKGV2
ZW50LT50eXBlICYgd3BlX2lucHV0X2F4aXNfZXZlbnRfdHlwZV9tYXNrXzJkKSB7CkBAIC0xNzcs
NiArMTc4LDcgQEAgV2ViV2hlZWxFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYldoZWVs
RXZlbnQoc3RydWN0IHdwZV9pbnB1dF9heGlzX2V2ZW50KgogICAgICAgICBjYXNlIHdwZV9pbnB1
dF9heGlzX2V2ZW50X3R5cGVfbW90aW9uX3Ntb290aDoKICAgICAgICAgICAgIHdoZWVsVGlja3Mg
PSBXZWJDb3JlOjpGbG9hdFNpemUoZXZlbnQyRC0+eF9heGlzIC8gZGV2aWNlU2NhbGVGYWN0b3Is
IGV2ZW50MkQtPnlfYXhpcyAvIGRldmljZVNjYWxlRmFjdG9yKTsKICAgICAgICAgICAgIGRlbHRh
ID0gd2hlZWxUaWNrczsKKyAgICAgICAgICAgIGhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMgPSB0
cnVlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBy
ZXR1cm4gV2ViV2hlZWxFdmVudCgpOwpAQCAtMTg0LDcgKzE4Niw3IEBAIFdlYldoZWVsRXZlbnQg
V2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJXaGVlbEV2ZW50KHN0cnVjdCB3cGVfaW5wdXRfYXhp
c19ldmVudCoKIAogICAgICAgICByZXR1cm4gV2ViV2hlZWxFdmVudChXZWJFdmVudDo6V2hlZWws
IHBvc2l0aW9uLCBwb3NpdGlvbiwKICAgICAgICAgICAgIGRlbHRhLCB3aGVlbFRpY2tzLCBwaGFz
ZSwgbW9tZW50dW1QaGFzZSwKLSAgICAgICAgICAgIFdlYldoZWVsRXZlbnQ6OlNjcm9sbEJ5UGl4
ZWxXaGVlbEV2ZW50LAorICAgICAgICAgICAgV2ViV2hlZWxFdmVudDo6U2Nyb2xsQnlQaXhlbFdo
ZWVsRXZlbnQsIGhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMsCiAgICAgICAgICAgICBPcHRpb25T
ZXQ8V2ViRXZlbnQ6Ok1vZGlmaWVyPiB7IH0sIHdhbGxUaW1lRm9yRXZlbnRUaW1lKGV2ZW50LT50
aW1lKSk7CiAgICAgfQogI2VuZGlmCkBAIC0yMTAsNiArMjEyLDcgQEAgV2ViV2hlZWxFdmVudCBX
ZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYldoZWVsRXZlbnQoc3RydWN0IHdwZV9pbnB1dF9heGlz
X2V2ZW50KgogICAgIGNhc2UgU21vb3RoOgogICAgICAgICB3aGVlbFRpY2tzID0gV2ViQ29yZTo6
RmxvYXRTaXplKDAsIGV2ZW50LT52YWx1ZSAvIGRldmljZVNjYWxlRmFjdG9yKTsKICAgICAgICAg
ZGVsdGEgPSB3aGVlbFRpY2tzOworICAgICAgICBoYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzID0g
dHJ1ZTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIFdlYldo
ZWVsRXZlbnQoKTsKQEAgLTIxNyw3ICsyMjAsNyBAQCBXZWJXaGVlbEV2ZW50IFdlYkV2ZW50RmFj
dG9yeTo6Y3JlYXRlV2ViV2hlZWxFdmVudChzdHJ1Y3Qgd3BlX2lucHV0X2F4aXNfZXZlbnQqCiAK
ICAgICByZXR1cm4gV2ViV2hlZWxFdmVudChXZWJFdmVudDo6V2hlZWwsIHBvc2l0aW9uLCBwb3Np
dGlvbiwKICAgICAgICAgZGVsdGEsIHdoZWVsVGlja3MsIHBoYXNlLCBtb21lbnR1bVBoYXNlLAot
ICAgICAgICBXZWJXaGVlbEV2ZW50OjpTY3JvbGxCeVBpeGVsV2hlZWxFdmVudCwKKyAgICAgICAg
V2ViV2hlZWxFdmVudDo6U2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQsIGhhc1ByZWNpc2VTY3JvbGxp
bmdEZWx0YXMsCiAgICAgICAgIE9wdGlvblNldDxXZWJFdmVudDo6TW9kaWZpZXI+IHsgfSwgd2Fs
bFRpbWVGb3JFdmVudFRpbWUoZXZlbnQtPnRpbWUpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZGY0ZmJmNjRiZTc2MzhkYWZkNDVjMmJlOTQ5MWVm
ZjdiM2MzNTJiYy4uNDJkNjFiMjQ4MjMxNTJiY2UwMDZjODM3YjRmNzUwZmRjMGQ0MzcxZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0yNjI5LDYgKzI2Mjks
OCBAQCBzdGF0aWMgYm9vbCBjYW5Db2FsZXNjZShjb25zdCBXZWJXaGVlbEV2ZW50JiBhLCBjb25z
dCBXZWJXaGVlbEV2ZW50JiBiKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGEubW9t
ZW50dW1QaGFzZSgpICE9IGIubW9tZW50dW1QaGFzZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CisjZW5kaWYKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oR1RLKSB8fCBVU0UoTElC
V1BFKQogICAgIGlmIChhLmhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMoKSAhPSBiLmhhc1ByZWNp
c2VTY3JvbGxpbmdEZWx0YXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCkBAIC0y
NjQ3LDYgKzI2NDksOCBAQCBzdGF0aWMgV2ViV2hlZWxFdmVudCBjb2FsZXNjZShjb25zdCBXZWJX
aGVlbEV2ZW50JiBhLCBjb25zdCBXZWJXaGVlbEV2ZW50JiBiKQogICAgIEZsb2F0U2l6ZSBtZXJn
ZWRVbmFjY2VsZXJhdGVkU2Nyb2xsaW5nRGVsdGEgPSBhLnVuYWNjZWxlcmF0ZWRTY3JvbGxpbmdE
ZWx0YSgpICsgYi51bmFjY2VsZXJhdGVkU2Nyb2xsaW5nRGVsdGEoKTsKIAogICAgIHJldHVybiBX
ZWJXaGVlbEV2ZW50KFdlYkV2ZW50OjpXaGVlbCwgYi5wb3NpdGlvbigpLCBiLmdsb2JhbFBvc2l0
aW9uKCksIG1lcmdlZERlbHRhLCBtZXJnZWRXaGVlbFRpY2tzLCBiLmdyYW51bGFyaXR5KCksIGIu
ZGlyZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlKCksIGIucGhhc2UoKSwgYi5tb21lbnR1bVBoYXNl
KCksIGIuaGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcygpLCBiLnNjcm9sbENvdW50KCksIG1lcmdl
ZFVuYWNjZWxlcmF0ZWRTY3JvbGxpbmdEZWx0YSwgYi5tb2RpZmllcnMoKSwgYi50aW1lc3RhbXAo
KSk7CisjZWxpZiBQTEFURk9STShHVEspIHx8IFVTRShMSUJXUEUpCisgICAgcmV0dXJuIFdlYldo
ZWVsRXZlbnQoV2ViRXZlbnQ6OldoZWVsLCBiLnBvc2l0aW9uKCksIGIuZ2xvYmFsUG9zaXRpb24o
KSwgbWVyZ2VkRGVsdGEsIG1lcmdlZFdoZWVsVGlja3MsIGIucGhhc2UoKSwgYi5tb21lbnR1bVBo
YXNlKCksIGIuZ3JhbnVsYXJpdHkoKSwgYi5oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzKCksIGIu
bW9kaWZpZXJzKCksIGIudGltZXN0YW1wKCkpOwogI2Vsc2UKICAgICByZXR1cm4gV2ViV2hlZWxF
dmVudChXZWJFdmVudDo6V2hlZWwsIGIucG9zaXRpb24oKSwgYi5nbG9iYWxQb3NpdGlvbigpLCBt
ZXJnZWREZWx0YSwgbWVyZ2VkV2hlZWxUaWNrcywgYi5ncmFudWxhcml0eSgpLCBiLm1vZGlmaWVy
cygpLCBiLnRpbWVzdGFtcCgpKTsKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411206</attachid>
            <date>2020-10-13 02:41:25 -0700</date>
            <delta_ts>2020-10-13 03:22:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210382-20201013104124.patch</filename>
            <type>text/plain</type>
            <size>38448</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWQyODI5ZDE2YmU5MTU0
ZDhjODYzM2YwZDI3YTE1NjYzZTZhZTBiYS4uYTQyOGJlZWYwZGRkYjMxYjgxOTM0YzcyZDgzN2Jh
YmE5NDViY2YzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIwLTEwLTEzICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIEFkZCBzdXBw
b3J0IGZvciBzbW9vdGggc2Nyb2xsaW5nIGFuaW1hdGlvbiB3aXRoIGFzeW5jIHNjcm9sbGluZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMzgyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVzcGVjdCBz
bW9vdGgtc2Nyb2xsaW5nIHNldHRpbmcgYW5kIGZpeCBkZWFkbG9jayBpc3N1ZXMgd2l0aCBhc3lu
YworICAgICAgICBzY3JvbGxpbmcgb24gbmljb3NpYSBwYXRoLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cywgbm8gZnVuY3Rpb25hbCBjaGFuZ2UuCisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9B
c3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jU2Ny
b2xsaW5nQ29vcmRpbmF0b3I6OnNjcm9sbEFuaW1hdG9yRW5hYmxlZCBjb25zdCk6CisgICAgICAg
ICogcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5oOgorICAgICAgICAq
IHBhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUaHJlYWRlZFNjcm9sbGluZ1RyZWU6OlRocmVhZGVkU2Nyb2xsaW5nVHJlZSk6CisgICAg
ICAgICogcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpUaHJlYWRlZFNjcm9sbGluZ1RyZWU6OnNjcm9sbEFuaW1hdG9yRW5hYmxlZCk6Cisg
ICAgICAgICogcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxp
bmdOb2RlTmljb3NpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlTmljb3NpYTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29z
aWEpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5p
Y29zaWE6OmNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYTo6ZW5zdXJlU2Nyb2xsQW5pbWF0aW9u
S2luZXRpYyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdO
b2RlTmljb3NpYTo6ZW5zdXJlU2Nyb2xsQW5pbWF0aW9uU21vb3RoKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjpoYW5kbGVXaGVlbEV2
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVO
aWNvc2lhOjpzdG9wU2Nyb2xsQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxp
bmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYTo6cmVwb3NpdGlvblJlbGF0ZWRMYXllcnMp
OgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZU5pY29zaWEuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Nj
cm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhOjpTY3JvbGxp
bmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYSk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYTo6Y29tbWl0U3RhdGVBZnRl
ckNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9s
bGluZ05vZGVOaWNvc2lhOjpyZXBvc2l0aW9uU2Nyb2xsaW5nTGF5ZXJzKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhOjplbnN1cmVT
Y3JvbGxBbmltYXRpb25LaW5ldGljKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVP
dmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhOjplbnN1cmVTY3JvbGxBbmltYXRpb25TbW9vdGgp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5p
Y29zaWE6OmhhbmRsZVdoZWVsRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJl
ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWE6OnN0b3BTY3JvbGxBbmltYXRpb25zKToKKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9s
bGluZ05vZGVOaWNvc2lhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjplbnN1cmVTbW9vdGhT
Y3JvbGxpbmdBbmltYXRpb24pOgorCiAyMDIwLTEwLTA3ICBDb21taXQgUXVldWUgIDxjb21taXQt
cXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI2ODA4
NS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggY2Y1NjJlNTI1NzNiMjMxZmJmZDg2NjFkMzZiMDlmNWMxNTAwNDhiZC4u
ZTcwNTlkNzRhN2E0YWFlNzFhYWY3NzIyZjVkMzRhYTRhOTQzOTEyMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMSBAQAorMjAyMC0xMC0xMyAgQ2hyaXMgTG9yZCAgPGNsb3JkQGlnYWxpYS5jb20+CisK
KyAgICAgICAgW0dUS11bV1BFXSBBZGQgc3VwcG9ydCBmb3Igc21vb3RoIHNjcm9sbGluZyBhbmlt
YXRpb24gd2l0aCBhc3luYyBzY3JvbGxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMDM4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBoYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzIHRvIEdUSy9X
UEUgd2hlZWwgZXZlbnRzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBuZWVkZWQuCisKKyAgICAg
ICAgKiBTaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
S2l0MlBsYXRmb3JtV2hlZWxFdmVudDo6V2ViS2l0MlBsYXRmb3JtV2hlZWxFdmVudCk6CisgICAg
ICAgICogU2hhcmVkL1dlYldoZWVsRXZlbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJXaGVl
bEV2ZW50OjpXZWJXaGVlbEV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViV2hlZWxFdmVudDo6
ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViV2hlZWxFdmVudDo6ZGVjb2RlKToK
KyAgICAgICAgKiBTaGFyZWQvV2ViV2hlZWxFdmVudC5oOgorICAgICAgICAqIFNoYXJlZC9ndGsv
TmF0aXZlV2ViV2hlZWxFdmVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5hdGl2ZVdlYldo
ZWVsRXZlbnQ6Ok5hdGl2ZVdlYldoZWVsRXZlbnQpOgorICAgICAgICAqIFNoYXJlZC9ndGsvV2Vi
RXZlbnRGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRXZlbnRGYWN0b3J5OjpjcmVh
dGVXZWJXaGVlbEV2ZW50KToKKyAgICAgICAgKiBTaGFyZWQvbGlid3BlL1dlYkV2ZW50RmFjdG9y
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViV2hlZWxF
dmVudCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OmNhbkNvYWxlc2NlKToKKyAgICAgICAgKFdlYktpdDo6Y29hbGVzY2UpOgorCiAyMDIw
LTEwLTA3ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtl
IHN1cmUgdG8gZmlyZSB0aGUgY29ycmVjdCBzZXQgb2YgZXZlbnRzIGluIGNhc2UgTWVkaWFSZWNv
cmRlciBzdHJlYW0gaGFzIHRyYWNrIGNoYW5nZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAKaW5kZXgg
ZjEzOTIzNzFiZGIyMzMzNThlM2I0NTNlNTM1ZWIzOWMyZTk4ZDc5OC4uMzAzNzkwMDZlMzZkMDRk
ZmMxMzQxNzFmMjc3NDA2ZTk3YWYwMjRiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAKQEAgLTk1
Nyw2ICs5NTcsMTUgQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpyZXBvcnRTeW5j
aHJvbm91c1Njcm9sbGluZ1JlYXNvbnNDaGFuZ2VkKE1vbm90b24KICAgICAgICAgbV9wYWdlLT5w
ZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQoKS0+bG9nU2Nyb2xsaW5nRXZlbnQoUGVyZm9ybWFuY2VM
b2dnaW5nQ2xpZW50OjpTY3JvbGxpbmdFdmVudDo6U3dpdGNoZWRTY3JvbGxpbmdNb2RlLCB0aW1l
c3RhbXAsIHJlYXNvbnMudG9SYXcoKSk7CiB9CiAKKyNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElO
RykKK2Jvb2wgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6c2Nyb2xsQW5pbWF0b3JFbmFibGVk
KCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGF1dG8mIHNldHRp
bmdzID0gbV9wYWdlLT5tYWluRnJhbWUoKS5zZXR0aW5ncygpOworICAgIHJldHVybiBzZXR0aW5n
cy5zY3JvbGxBbmltYXRvckVuYWJsZWQoKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRv
ci5oCmluZGV4IDkwZDFjMjlkYzFiMDk4ZDczZTViM2Y5MjcwZTllZTgyMjhkZTFhMTcuLjU2Njc4
YjdjM2E5NDgwYjBmNmMxMTRkZjdjYzdjNmNlMWJhZmJhNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgK
QEAgLTcxLDYgKzcxLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlcG9ydEV4cG9zZWRVbmZpbGxl
ZEFyZWEoTW9ub3RvbmljVGltZSwgdW5zaWduZWQgdW5maWxsZWRBcmVhKTsKICAgICB2b2lkIHJl
cG9ydFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uc0NoYW5nZWQoTW9ub3RvbmljVGltZSwgT3B0
aW9uU2V0PFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uPik7CiAKKyNpZiBFTkFCTEUoU01PT1RI
X1NDUk9MTElORykKKyAgICBib29sIHNjcm9sbEFuaW1hdG9yRW5hYmxlZCgpIGNvbnN0OworI2Vu
ZGlmCisKIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCBBc3luY1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yKFBhZ2UqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHAKaW5kZXggMjNmNWYwZWZmMDU1ODhhZjI4MGI4
NmQ5N2U0YzJiYmRkMWVjMmUyYi4uYTlhOWI1OWU5OWQ4NTY0OTNiZDc1ZmYwYWUzZjViMWUyOTg4
YTM5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRT
Y3JvbGxpbmdUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9UaHJl
YWRlZFNjcm9sbGluZ1RyZWUuY3BwCkBAIC00Nyw2ICs0Nyw5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIFRocmVhZGVkU2Nyb2xsaW5nVHJlZTo6VGhyZWFkZWRTY3JvbGxpbmdUcmVlKEFzeW5jU2Ny
b2xsaW5nQ29vcmRpbmF0b3ImIHNjcm9sbGluZ0Nvb3JkaW5hdG9yKQogICAgIDogbV9zY3JvbGxp
bmdDb29yZGluYXRvcigmc2Nyb2xsaW5nQ29vcmRpbmF0b3IpCiB7CisjaWYgRU5BQkxFKFNNT09U
SF9TQ1JPTExJTkcpCisgICAgbV9zY3JvbGxBbmltYXRvckVuYWJsZWQgPSBzY3JvbGxpbmdDb29y
ZGluYXRvci5zY3JvbGxBbmltYXRvckVuYWJsZWQoKTsKKyNlbmRpZgogfQogCiBUaHJlYWRlZFNj
cm9sbGluZ1RyZWU6On5UaHJlYWRlZFNjcm9sbGluZ1RyZWUoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuaAppbmRleCBiMjVm
ZjE0Y2ExMmNiMjhhN2NhMTlmMDJhYjFhZmFjNDg2YTk1MTNmLi4wMzc3YzYzZGE1NTNkNDJhMzY3
ZjFhNTE0M2E5MmRlODY3MzEyMzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuaApAQCAtNTgsNiArNTgsOCBAQCBwdWJs
aWM6CiAKICAgICBMb2NrJiB0cmVlTXV0ZXgoKSB7IHJldHVybiBtX3RyZWVNdXRleDsgfQogCisg
ICAgYm9vbCBzY3JvbGxBbmltYXRvckVuYWJsZWQoKSB7IHJldHVybiBtX3Njcm9sbEFuaW1hdG9y
RW5hYmxlZDsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgVGhyZWFkZWRTY3JvbGxpbmdU
cmVlKEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3ImKTsKIApAQCAtMTAzLDYgKzEwNSw4IEBAIHBy
aXZhdGU6CiAKICAgICAvLyBEeW5hbWljYWxseSBhbGxvY2F0ZWQgYmVjYXVzZSBpdCBoYXMgdG8g
dXNlIHRoZSBTY3JvbGxpbmdUaHJlYWQncyBydW5sb29wLgogICAgIHN0ZDo6dW5pcXVlX3B0cjxS
dW5Mb29wOjpUaW1lcjxUaHJlYWRlZFNjcm9sbGluZ1RyZWU+PiBtX2RlbGF5ZWRSZW5kZXJpbmdV
cGRhdGVEZXRlY3Rpb25UaW1lcjsKKworICAgIGJvb2wgbV9zY3JvbGxBbmltYXRvckVuYWJsZWQg
eyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlTmljb3NpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNv
c2lhL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhLmNwcAppbmRleCAwOGI1
ZTVlNGY2ZjBmNTlmOThiNTIwYjI4Yzk5ODVkM2IxNWMwNTk3Li5lYWNmODAwMzRkN2RlY2NlMjli
YzFlMjhjZTkxYzEzYzZiN2U4MTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1Ry
ZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhLmNwcApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOaWNvc2lhUGxhdGZvcm1MYXllci5oIgogI2luY2x1
ZGUgIlNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlLmgiCi0jaW5jbHVkZSAiU2Nyb2xs
aW5nVHJlZS5oIgorI2luY2x1ZGUgIlRocmVhZGVkU2Nyb2xsaW5nVHJlZS5oIgogCiAjaWYgRU5B
QkxFKEtJTkVUSUNfU0NST0xMSU5HKQogI2luY2x1ZGUgIlNjcm9sbEFuaW1hdGlvbktpbmV0aWMu
aCIKQEAgLTU0LDQwICs1NCw3IEBAIFJlZjxTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2Rl
PiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYTo6Y3JlCiBTY3JvbGxpbmdU
cmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5n
Tm9kZU5pY29zaWEoU2Nyb2xsaW5nVHJlZSYgc2Nyb2xsaW5nVHJlZSwgU2Nyb2xsaW5nTm9kZVR5
cGUgbm9kZVR5cGUsIFNjcm9sbGluZ05vZGVJRCBub2RlSUQpCiAgICAgOiBTY3JvbGxpbmdUcmVl
RnJhbWVTY3JvbGxpbmdOb2RlKHNjcm9sbGluZ1RyZWUsIG5vZGVUeXBlLCBub2RlSUQpCiB7Ci0j
aWYgRU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKQotICAgIG1fa2luZXRpY0FuaW1hdGlvbiA9IG1h
a2VVbmlxdWU8U2Nyb2xsQW5pbWF0aW9uS2luZXRpYz4oCi0gICAgICAgIFt0aGlzXSgpIC0+IFNj
cm9sbEV4dGVudHMgewotICAgICAgICAgICAgcmV0dXJuIHsgSW50UG9pbnQobWluaW11bVNjcm9s
bFBvc2l0aW9uKCkpLCBJbnRQb2ludChtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSksIEludFNpemUo
c2Nyb2xsYWJsZUFyZWFTaXplKCkpIH07Ci0gICAgICAgIH0sCi0gICAgICAgIFt0aGlzXShGbG9h
dFBvaW50JiYgcG9zaXRpb24pIHsKLSNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKLSAgICAg
ICAgICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zZXRDdXJyZW50UG9zaXRpb24ocG9zaXRpb24pOwot
I2VuZGlmCi0KLSAgICAgICAgICAgIGF1dG8qIHNjcm9sbExheWVyID0gc3RhdGljX2Nhc3Q8Tmlj
b3NpYTo6UGxhdGZvcm1MYXllcio+KHNjcm9sbGVkQ29udGVudHNMYXllcigpKTsKLSAgICAgICAg
ICAgIEFTU0VSVChzY3JvbGxMYXllcik7Ci0gICAgICAgICAgICBhdXRvJiBjb21wb3NpdGlvbkxh
eWVyID0gZG93bmNhc3Q8Tmljb3NpYTo6Q29tcG9zaXRpb25MYXllcj4oKnNjcm9sbExheWVyKTsK
LQotICAgICAgICAgICAgYXV0byB1cGRhdGVTY29wZSA9IGNvbXBvc2l0aW9uTGF5ZXIuY3JlYXRl
VXBkYXRlU2NvcGUoKTsKLSAgICAgICAgICAgIHNjcm9sbFRvKHBvc2l0aW9uKTsKLSAgICAgICAg
fSk7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKLSAgICBtX3Ntb290aEFu
aW1hdGlvbiA9IG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0aW9uU21vb3RoPigKLSAgICAgICAgW3Ro
aXNdKCkgLT4gU2Nyb2xsRXh0ZW50cyB7Ci0gICAgICAgICAgICByZXR1cm4geyBJbnRQb2ludCht
aW5pbXVtU2Nyb2xsUG9zaXRpb24oKSksIEludFBvaW50KG1heGltdW1TY3JvbGxQb3NpdGlvbigp
KSwgSW50U2l6ZShzY3JvbGxhYmxlQXJlYVNpemUoKSkgfTsKLSAgICAgICAgfSwKLSAgICAgICAg
Y3VycmVudFNjcm9sbFBvc2l0aW9uKCksCi0gICAgICAgIFt0aGlzXShGbG9hdFBvaW50JiYgcG9z
aXRpb24pIHsKLSAgICAgICAgICAgIGF1dG8qIHNjcm9sbExheWVyID0gc3RhdGljX2Nhc3Q8Tmlj
b3NpYTo6UGxhdGZvcm1MYXllcio+KHNjcm9sbGVkQ29udGVudHNMYXllcigpKTsKLSAgICAgICAg
ICAgIEFTU0VSVChzY3JvbGxMYXllcik7Ci0gICAgICAgICAgICBhdXRvJiBjb21wb3NpdGlvbkxh
eWVyID0gZG93bmNhc3Q8Tmljb3NpYTo6Q29tcG9zaXRpb25MYXllcj4oKnNjcm9sbExheWVyKTsK
LQotICAgICAgICAgICAgYXV0byB1cGRhdGVTY29wZSA9IGNvbXBvc2l0aW9uTGF5ZXIuY3JlYXRl
VXBkYXRlU2NvcGUoKTsKLSAgICAgICAgICAgIHNjcm9sbFRvKHBvc2l0aW9uKTsKLSAgICAgICAg
fSwKLSAgICAgICAgW10geyB9KTsKLSNlbmRpZgorICAgIG1fc2Nyb2xsQW5pbWF0b3JFbmFibGVk
ID0gZG93bmNhc3Q8VGhyZWFkZWRTY3JvbGxpbmdUcmVlPihzY3JvbGxpbmdUcmVlKS5zY3JvbGxB
bmltYXRvckVuYWJsZWQoKTsKIH0KIAogU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5p
Y29zaWE6On5TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYSgpID0gZGVmYXVs
dDsKQEAgLTEzNiwxNyArMTAzLDY4IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5n
Tm9kZU5pY29zaWE6OmNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbihjb25zdCBTY3JvCiAgICAgICAg
IGNvbnN0IGF1dG8mIHJlcXVlc3RlZFNjcm9sbERhdGEgPSBzY3JvbGxpbmdTdGF0ZU5vZGUucmVx
dWVzdGVkU2Nyb2xsRGF0YSgpOwogICAgICAgICBzY3JvbGxUbyhyZXF1ZXN0ZWRTY3JvbGxEYXRh
LnNjcm9sbFBvc2l0aW9uLCByZXF1ZXN0ZWRTY3JvbGxEYXRhLnNjcm9sbFR5cGUsIHJlcXVlc3Rl
ZFNjcm9sbERhdGEuY2xhbXBpbmcpOwogI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQotICAg
ICAgICBtX3Ntb290aEFuaW1hdGlvbi0+c2V0Q3VycmVudFBvc2l0aW9uKGN1cnJlbnRTY3JvbGxQ
b3NpdGlvbigpKTsKKyAgICAgICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKQorICAgICAgICAgICAg
bV9zbW9vdGhBbmltYXRpb24tPnNldEN1cnJlbnRQb3NpdGlvbihjdXJyZW50U2Nyb2xsUG9zaXRp
b24oKSk7CiAjZW5kaWYKICAgICB9CiB9CiAKKyNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcp
Cit2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjplbnN1cmVTY3Jv
bGxBbmltYXRpb25LaW5ldGljKCkKK3sKKyAgICBpZiAobV9raW5ldGljQW5pbWF0aW9uKQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX2tpbmV0aWNBbmltYXRpb24gPSBtYWtlVW5pcXVlPFNjcm9s
bEFuaW1hdGlvbktpbmV0aWM+KAorICAgICAgICBbdGhpc10oKSAtPiBTY3JvbGxFeHRlbnRzIHsK
KyAgICAgICAgICAgIHJldHVybiB7IEludFBvaW50KG1pbmltdW1TY3JvbGxQb3NpdGlvbigpKSwg
SW50UG9pbnQobWF4aW11bVNjcm9sbFBvc2l0aW9uKCkpLCBJbnRTaXplKHNjcm9sbGFibGVBcmVh
U2l6ZSgpKSB9OworICAgICAgICB9LAorICAgICAgICBbdGhpc10oRmxvYXRQb2ludCYmIHBvc2l0
aW9uKSB7CisjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCisgICAgICAgICAgICBpZiAobV9z
bW9vdGhBbmltYXRpb24pCisgICAgICAgICAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnNldEN1
cnJlbnRQb3NpdGlvbihwb3NpdGlvbik7CisjZW5kaWYKKworICAgICAgICAgICAgYXV0byogc2Ny
b2xsTGF5ZXIgPSBzdGF0aWNfY2FzdDxOaWNvc2lhOjpQbGF0Zm9ybUxheWVyKj4oc2Nyb2xsZWRD
b250ZW50c0xheWVyKCkpOworICAgICAgICAgICAgQVNTRVJUKHNjcm9sbExheWVyKTsKKyAgICAg
ICAgICAgIGF1dG8mIGNvbXBvc2l0aW9uTGF5ZXIgPSBkb3duY2FzdDxOaWNvc2lhOjpDb21wb3Np
dGlvbkxheWVyPigqc2Nyb2xsTGF5ZXIpOworCisgICAgICAgICAgICBhdXRvIHVwZGF0ZVNjb3Bl
ID0gY29tcG9zaXRpb25MYXllci5jcmVhdGVVcGRhdGVTY29wZSgpOworICAgICAgICAgICAgc2Ny
b2xsVG8ocG9zaXRpb24pOworICAgICAgICB9KTsKK30KKyNlbmRpZgorCisjaWYgRU5BQkxFKFNN
T09USF9TQ1JPTExJTkcpCit2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNv
c2lhOjplbnN1cmVTY3JvbGxBbmltYXRpb25TbW9vdGgoKQoreworICAgIGlmICghbV9zY3JvbGxB
bmltYXRvckVuYWJsZWQgfHwgbV9zbW9vdGhBbmltYXRpb24pCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fc21vb3RoQW5pbWF0aW9uID0gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRpb25TbW9vdGg+
KAorICAgICAgICBbdGhpc10oKSAtPiBTY3JvbGxFeHRlbnRzIHsKKyAgICAgICAgICAgIHJldHVy
biB7IEludFBvaW50KG1pbmltdW1TY3JvbGxQb3NpdGlvbigpKSwgSW50UG9pbnQobWF4aW11bVNj
cm9sbFBvc2l0aW9uKCkpLCBJbnRTaXplKHNjcm9sbGFibGVBcmVhU2l6ZSgpKSB9OworICAgICAg
ICB9LAorICAgICAgICBjdXJyZW50U2Nyb2xsUG9zaXRpb24oKSwKKyAgICAgICAgW3RoaXNdKEZs
b2F0UG9pbnQmJiBwb3NpdGlvbikgeworICAgICAgICAgICAgYXV0byogc2Nyb2xsTGF5ZXIgPSBz
dGF0aWNfY2FzdDxOaWNvc2lhOjpQbGF0Zm9ybUxheWVyKj4oc2Nyb2xsZWRDb250ZW50c0xheWVy
KCkpOworICAgICAgICAgICAgQVNTRVJUKHNjcm9sbExheWVyKTsKKyAgICAgICAgICAgIGF1dG8m
IGNvbXBvc2l0aW9uTGF5ZXIgPSBkb3duY2FzdDxOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyPigq
c2Nyb2xsTGF5ZXIpOworCisgICAgICAgICAgICBhdXRvIHVwZGF0ZVNjb3BlID0gY29tcG9zaXRp
b25MYXllci5jcmVhdGVVcGRhdGVTY29wZSgpOworICAgICAgICAgICAgc2Nyb2xsVG8ocG9zaXRp
b24pOworICAgICAgICB9LAorICAgICAgICBbXSB7IH0pOworfQorI2VuZGlmCisKIFdoZWVsRXZl
bnRIYW5kbGluZ1Jlc3VsdCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYTo6
aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCiB7
CiAgICAgaWYgKCFjYW5IYW5kbGVXaGVlbEV2ZW50KHdoZWVsRXZlbnQpKQogICAgICAgICByZXR1
cm4gV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0Ojp1bmhhbmRsZWQoKTsKIAogI2lmIEVOQUJMRShL
SU5FVElDX1NDUk9MTElORykKKyAgICBlbnN1cmVTY3JvbGxBbmltYXRpb25LaW5ldGljKCk7CiAg
ICAgbV9raW5ldGljQW5pbWF0aW9uLT5hcHBlbmRUb1Njcm9sbEhpc3Rvcnkod2hlZWxFdmVudCk7
CiAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5zdG9wKCk7CiAgICAgaWYgKHdoZWVsRXZlbnQuaXNF
bmRPZk5vbk1vbWVudHVtU2Nyb2xsKCkpIHsKQEAgLTE4OSwxNiArMjA3LDIwIEBAIFdoZWVsRXZl
bnRIYW5kbGluZ1Jlc3VsdCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYTo6
aGFuZGxlV2hlZWxFdmVuCiAgICAgfQogCiAjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0g
ICAgbV9zbW9vdGhBbmltYXRpb24tPnNjcm9sbChIb3Jpem9udGFsU2Nyb2xsYmFyLCBTY3JvbGxC
eVBpeGVsLCAxLCAtZGVsdGFYKTsKLSAgICBtX3Ntb290aEFuaW1hdGlvbi0+c2Nyb2xsKFZlcnRp
Y2FsU2Nyb2xsYmFyLCBTY3JvbGxCeVBpeGVsLCAxLCAtZGVsdGFZKTsKLSNlbHNlCisgICAgZW5z
dXJlU2Nyb2xsQW5pbWF0aW9uU21vb3RoKCk7CisgICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uICYm
ICF3aGVlbEV2ZW50Lmhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMoKSkgeworICAgICAgICBtX3Nt
b290aEFuaW1hdGlvbi0+c2Nyb2xsKEhvcml6b250YWxTY3JvbGxiYXIsIFNjcm9sbEJ5UGl4ZWws
IDEsIC1kZWx0YVgpOworICAgICAgICBtX3Ntb290aEFuaW1hdGlvbi0+c2Nyb2xsKFZlcnRpY2Fs
U2Nyb2xsYmFyLCBTY3JvbGxCeVBpeGVsLCAxLCAtZGVsdGFZKTsKKyAgICAgICAgcmV0dXJuIFdo
ZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6aGFuZGxlZCgpOworICAgIH0KKyNlbmRpZgorCiAgICAg
YXV0byogc2Nyb2xsTGF5ZXIgPSBzdGF0aWNfY2FzdDxOaWNvc2lhOjpQbGF0Zm9ybUxheWVyKj4o
c2Nyb2xsZWRDb250ZW50c0xheWVyKCkpOwogICAgIEFTU0VSVChzY3JvbGxMYXllcik7CiAgICAg
YXV0byYgY29tcG9zaXRpb25MYXllciA9IGRvd25jYXN0PE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5
ZXI+KCpzY3JvbGxMYXllcik7CiAKICAgICBhdXRvIHVwZGF0ZVNjb3BlID0gY29tcG9zaXRpb25M
YXllci5jcmVhdGVVcGRhdGVTY29wZSgpOwogICAgIHNjcm9sbEJ5KHsgLWRlbHRhWCwgLWRlbHRh
WSB9KTsKLSNlbmRpZgogCiAgICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6aGFu
ZGxlZCgpOwogfQpAQCAtMjA2LDExICsyMjgsMTQgQEAgV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0
IFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjpoYW5kbGVXaGVlbEV2ZW4K
IHZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWE6OnN0b3BTY3JvbGxB
bmltYXRpb25zKCkKIHsKICNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpCi0gICAgbV9raW5l
dGljQW5pbWF0aW9uLT5zdG9wKCk7Ci0gICAgbV9raW5ldGljQW5pbWF0aW9uLT5jbGVhclNjcm9s
bEhpc3RvcnkoKTsKKyAgICBpZiAobV9raW5ldGljQW5pbWF0aW9uKSB7CisgICAgICAgIG1fa2lu
ZXRpY0FuaW1hdGlvbi0+c3RvcCgpOworICAgICAgICBtX2tpbmV0aWNBbmltYXRpb24tPmNsZWFy
U2Nyb2xsSGlzdG9yeSgpOworICAgIH0KICNlbmRpZgogI2lmIEVOQUJMRShTTU9PVEhfU0NST0xM
SU5HKQotICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zdG9wKCk7CisgICAgaWYgKG1fc21vb3RoQW5p
bWF0aW9uKQorICAgICAgICBtX3Ntb290aEFuaW1hdGlvbi0+c3RvcCgpOwogI2VuZGlmCiB9CiAK
QEAgLTI4OSw2ICszMTQsMTEgQEAgdm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2Rl
Tmljb3NpYTo6cmVwb3NpdGlvblJlbGF0ZWRMYXllcnMoKQogICAgICAgICBpZiAobV9mb290ZXJM
YXllcikKICAgICAgICAgICAgIGFwcGx5TGF5ZXJQb3NpdGlvbigqbV9mb290ZXJMYXllciwgRmxv
YXRQb2ludChob3Jpem9udGFsU2Nyb2xsT2Zmc2V0Rm9yQmFubmVyLCBGcmFtZVZpZXc6OnlQb3Np
dGlvbkZvckZvb3RlckxheWVyKHNjcm9sbFBvc2l0aW9uLCB0b3BDb250ZW50SW5zZXQsIHRvdGFs
Q29udGVudHNTaXplKCkuaGVpZ2h0KCksIGZvb3RlckhlaWdodCgpKSkpOwogICAgIH0KKworI2lm
IEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQorICAgIGlmIChtX3Ntb290aEFuaW1hdGlvbikKKyAg
ICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnVwZGF0ZVZpc2libGVMZW5ndGhzKCk7CisjZW5kaWYK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmlj
b3NpYS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdU
cmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYS5oCmluZGV4IDUwNTRiZWJmZWNmZGI2ZjliODE3
ZjNjZWQzYmJkM2E5OTFjMzhmOTMuLjYwNDA3OTg4MDYxMTJlZTZlYzgyNTgyNjI1NzhjOTQzNGNi
ZDdkMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEv
U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGVOaWNvc2lhLmgKQEAgLTUzLDYgKzUzLDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21taXRT
dGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgY29tbWl0U3RhdGVBZnRlckNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9k
ZSYpIG92ZXJyaWRlOwogCisjaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKQorICAgIHZvaWQg
ZW5zdXJlU2Nyb2xsQW5pbWF0aW9uS2luZXRpYygpOworI2VuZGlmCisjaWYgRU5BQkxFKFNNT09U
SF9TQ1JPTExJTkcpCisgICAgdm9pZCBlbnN1cmVTY3JvbGxBbmltYXRpb25TbW9vdGgoKTsKKyNl
bmRpZgorCiAgICAgV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0IGhhbmRsZVdoZWVsRXZlbnQoY29u
c3QgUGxhdGZvcm1XaGVlbEV2ZW50Jikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHN0b3BTY3JvbGxB
bmltYXRpb25zKCkgb3ZlcnJpZGU7CkBAIC03MSw2ICs3OCw3IEBAIHByaXZhdGU6CiAgICAgUmVm
UHRyPE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+IG1faGVhZGVyTGF5ZXI7CiAgICAgUmVmUHRy
PE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+IG1fZm9vdGVyTGF5ZXI7CiAKKyAgICBib29sIG1f
c2Nyb2xsQW5pbWF0b3JFbmFibGVkIHsgZmFsc2UgfTsKICNpZiBFTkFCTEUoS0lORVRJQ19TQ1JP
TExJTkcpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbEFuaW1hdGlvbktpbmV0aWM+IG1fa2lu
ZXRpY0FuaW1hdGlvbjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3Np
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1Ry
ZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhLmNwcAppbmRleCAwNjlhZDRmOTIzZmNjNjU0
MzBhOTRmYmNmNDU4M2Y1ZWU4YmJmZDJhLi5mMDUzOTU2MzE1MWJlMDFiMzFkZmMyZDI2Y2M5N2Nj
MGM5NGY3Y2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNv
c2lhL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVPdmVyZmxv
d1Njcm9sbGluZ05vZGVOaWNvc2lhLmNwcApAQCAtMzksNyArMzksNyBAQAogI2luY2x1ZGUgIlNj
cm9sbEFuaW1hdGlvblNtb290aC5oIgogI2VuZGlmCiAjaW5jbHVkZSAiU2Nyb2xsaW5nU3RhdGVP
dmVyZmxvd1Njcm9sbGluZ05vZGUuaCIKLSNpbmNsdWRlICJTY3JvbGxpbmdUcmVlLmgiCisjaW5j
bHVkZSAiVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtNTEsNDAgKzUxLDcgQEAgUmVmPFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGU+
IFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2kKIFNjcm9sbGluZ1RyZWVP
dmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhOjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxp
bmdOb2RlTmljb3NpYShTY3JvbGxpbmdUcmVlJiBzY3JvbGxpbmdUcmVlLCBTY3JvbGxpbmdOb2Rl
SUQgbm9kZUlEKQogICAgIDogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZShzY3Jv
bGxpbmdUcmVlLCBub2RlSUQpCiB7Ci0jaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKQotICAg
IG1fa2luZXRpY0FuaW1hdGlvbiA9IG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0aW9uS2luZXRpYz4o
Ci0gICAgICAgIFt0aGlzXSgpIC0+IFNjcm9sbEV4dGVudHMgewotICAgICAgICAgICAgcmV0dXJu
IHsgSW50UG9pbnQobWluaW11bVNjcm9sbFBvc2l0aW9uKCkpLCBJbnRQb2ludChtYXhpbXVtU2Ny
b2xsUG9zaXRpb24oKSksIEludFNpemUoc2Nyb2xsYWJsZUFyZWFTaXplKCkpIH07Ci0gICAgICAg
IH0sCi0gICAgICAgIFt0aGlzXShGbG9hdFBvaW50JiYgcG9zaXRpb24pIHsKLSNpZiBFTkFCTEUo
U01PT1RIX1NDUk9MTElORykKLSAgICAgICAgICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zZXRDdXJy
ZW50UG9zaXRpb24ocG9zaXRpb24pOwotI2VuZGlmCi0KLSAgICAgICAgICAgIGF1dG8qIHNjcm9s
bExheWVyID0gc3RhdGljX2Nhc3Q8Tmljb3NpYTo6UGxhdGZvcm1MYXllcio+KHNjcm9sbENvbnRh
aW5lckxheWVyKCkpOwotICAgICAgICAgICAgQVNTRVJUKHNjcm9sbExheWVyKTsKLSAgICAgICAg
ICAgIGF1dG8mIGNvbXBvc2l0aW9uTGF5ZXIgPSBkb3duY2FzdDxOaWNvc2lhOjpDb21wb3NpdGlv
bkxheWVyPigqc2Nyb2xsTGF5ZXIpOwotCi0gICAgICAgICAgICBhdXRvIHVwZGF0ZVNjb3BlID0g
Y29tcG9zaXRpb25MYXllci5jcmVhdGVVcGRhdGVTY29wZSgpOwotICAgICAgICAgICAgc2Nyb2xs
VG8ocG9zaXRpb24pOwotICAgICAgICB9KTsKLSNlbmRpZgotI2lmIEVOQUJMRShTTU9PVEhfU0NS
T0xMSU5HKQotICAgIG1fc21vb3RoQW5pbWF0aW9uID0gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRp
b25TbW9vdGg+KAotICAgICAgICBbdGhpc10oKSAtPiBTY3JvbGxFeHRlbnRzIHsKLSAgICAgICAg
ICAgIHJldHVybiB7IEludFBvaW50KG1pbmltdW1TY3JvbGxQb3NpdGlvbigpKSwgSW50UG9pbnQo
bWF4aW11bVNjcm9sbFBvc2l0aW9uKCkpLCBJbnRTaXplKHNjcm9sbGFibGVBcmVhU2l6ZSgpKSB9
OwotICAgICAgICB9LAotICAgICAgICBjdXJyZW50U2Nyb2xsUG9zaXRpb24oKSwKLSAgICAgICAg
W3RoaXNdKEZsb2F0UG9pbnQmJiBwb3NpdGlvbikgewotICAgICAgICAgICAgYXV0byogc2Nyb2xs
TGF5ZXIgPSBzdGF0aWNfY2FzdDxOaWNvc2lhOjpQbGF0Zm9ybUxheWVyKj4oc2Nyb2xsQ29udGFp
bmVyTGF5ZXIoKSk7Ci0gICAgICAgICAgICBBU1NFUlQoc2Nyb2xsTGF5ZXIpOwotICAgICAgICAg
ICAgYXV0byYgY29tcG9zaXRpb25MYXllciA9IGRvd25jYXN0PE5pY29zaWE6OkNvbXBvc2l0aW9u
TGF5ZXI+KCpzY3JvbGxMYXllcik7Ci0KLSAgICAgICAgICAgIGF1dG8gdXBkYXRlU2NvcGUgPSBj
b21wb3NpdGlvbkxheWVyLmNyZWF0ZVVwZGF0ZVNjb3BlKCk7Ci0gICAgICAgICAgICBzY3JvbGxU
byhwb3NpdGlvbik7Ci0gICAgICAgIH0sCi0gICAgICAgIFtdIHsgfSk7Ci0jZW5kaWYKKyAgICBt
X3Njcm9sbEFuaW1hdG9yRW5hYmxlZCA9IGRvd25jYXN0PFRocmVhZGVkU2Nyb2xsaW5nVHJlZT4o
c2Nyb2xsaW5nVHJlZSkuc2Nyb2xsQW5pbWF0b3JFbmFibGVkKCk7CiB9CiAKIFNjcm9sbGluZ1Ry
ZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhOjp+U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Ny
b2xsaW5nTm9kZU5pY29zaWEoKSA9IGRlZmF1bHQ7CkBAIC05OSw3ICs2Niw4IEBAIHZvaWQgU2Ny
b2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWE6OmNvbW1pdFN0YXRlQWZ0ZXJD
aGlsZHJlbihjb25zdCBTCiAgICAgICAgIGNvbnN0IGF1dG8mIHJlcXVlc3RlZFNjcm9sbERhdGEg
PSBvdmVyZmxvd1N0YXRlTm9kZS5yZXF1ZXN0ZWRTY3JvbGxEYXRhKCk7CiAgICAgICAgIHNjcm9s
bFRvKHJlcXVlc3RlZFNjcm9sbERhdGEuc2Nyb2xsUG9zaXRpb24sIHJlcXVlc3RlZFNjcm9sbERh
dGEuc2Nyb2xsVHlwZSwgcmVxdWVzdGVkU2Nyb2xsRGF0YS5jbGFtcGluZyk7CiAjaWYgRU5BQkxF
KFNNT09USF9TQ1JPTExJTkcpCi0gICAgICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zZXRDdXJyZW50
UG9zaXRpb24oY3VycmVudFNjcm9sbFBvc2l0aW9uKCkpOworICAgICAgICBpZiAobV9zbW9vdGhB
bmltYXRpb24pCisgICAgICAgICAgICBtX3Ntb290aEFuaW1hdGlvbi0+c2V0Q3VycmVudFBvc2l0
aW9uKGN1cnJlbnRTY3JvbGxQb3NpdGlvbigpKTsKICNlbmRpZgogICAgIH0KIH0KQEAgLTEyNCwx
NCArOTIsNjkgQEAgdm9pZCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3Np
YTo6cmVwb3NpdGlvblNjcm9sbGluZ0xheWVycygpCiAgICAgICAgICAgICBzdGF0ZS5ib3VuZHNP
cmlnaW4gPSBzY3JvbGxPZmZzZXQ7CiAgICAgICAgICAgICBzdGF0ZS5kZWx0YS5ib3VuZHNPcmln
aW5DaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgfSk7CisKKyNpZiBFTkFCTEUoU01PT1RIX1NDUk9M
TElORykKKyAgICBpZiAobV9zbW9vdGhBbmltYXRpb24pCisgICAgICAgIG1fc21vb3RoQW5pbWF0
aW9uLT51cGRhdGVWaXNpYmxlTGVuZ3RocygpOworI2VuZGlmCiB9CiAKKyNpZiBFTkFCTEUoS0lO
RVRJQ19TQ1JPTExJTkcpCit2b2lkIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVO
aWNvc2lhOjplbnN1cmVTY3JvbGxBbmltYXRpb25LaW5ldGljKCkKK3sKKyAgICBpZiAobV9raW5l
dGljQW5pbWF0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2tpbmV0aWNBbmltYXRpb24g
PSBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlvbktpbmV0aWM+KAorICAgICAgICBbdGhpc10oKSAt
PiBTY3JvbGxFeHRlbnRzIHsKKyAgICAgICAgICAgIHJldHVybiB7IEludFBvaW50KG1pbmltdW1T
Y3JvbGxQb3NpdGlvbigpKSwgSW50UG9pbnQobWF4aW11bVNjcm9sbFBvc2l0aW9uKCkpLCBJbnRT
aXplKHNjcm9sbGFibGVBcmVhU2l6ZSgpKSB9OworICAgICAgICB9LAorICAgICAgICBbdGhpc10o
RmxvYXRQb2ludCYmIHBvc2l0aW9uKSB7CisjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCisg
ICAgICAgICAgICBpZiAobV9zbW9vdGhBbmltYXRpb24pCisgICAgICAgICAgICAgICAgbV9zbW9v
dGhBbmltYXRpb24tPnNldEN1cnJlbnRQb3NpdGlvbihwb3NpdGlvbik7CisjZW5kaWYKKworICAg
ICAgICAgICAgYXV0byogc2Nyb2xsTGF5ZXIgPSBzdGF0aWNfY2FzdDxOaWNvc2lhOjpQbGF0Zm9y
bUxheWVyKj4oc2Nyb2xsQ29udGFpbmVyTGF5ZXIoKSk7CisgICAgICAgICAgICBBU1NFUlQoc2Ny
b2xsTGF5ZXIpOworICAgICAgICAgICAgYXV0byYgY29tcG9zaXRpb25MYXllciA9IGRvd25jYXN0
PE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+KCpzY3JvbGxMYXllcik7CisKKyAgICAgICAgICAg
IGF1dG8gdXBkYXRlU2NvcGUgPSBjb21wb3NpdGlvbkxheWVyLmNyZWF0ZVVwZGF0ZVNjb3BlKCk7
CisgICAgICAgICAgICBzY3JvbGxUbyhwb3NpdGlvbik7CisgICAgICAgIH0pOworfQorI2VuZGlm
CisKKyNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKK3ZvaWQgU2Nyb2xsaW5nVHJlZU92ZXJm
bG93U2Nyb2xsaW5nTm9kZU5pY29zaWE6OmVuc3VyZVNjcm9sbEFuaW1hdGlvblNtb290aCgpCit7
CisgICAgaWYgKCFtX3Njcm9sbEFuaW1hdG9yRW5hYmxlZCB8fCBtX3Ntb290aEFuaW1hdGlvbikK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9zbW9vdGhBbmltYXRpb24gPSBtYWtlVW5pcXVlPFNj
cm9sbEFuaW1hdGlvblNtb290aD4oCisgICAgICAgIFt0aGlzXSgpIC0+IFNjcm9sbEV4dGVudHMg
eworICAgICAgICAgICAgcmV0dXJuIHsgSW50UG9pbnQobWluaW11bVNjcm9sbFBvc2l0aW9uKCkp
LCBJbnRQb2ludChtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSksIEludFNpemUoc2Nyb2xsYWJsZUFy
ZWFTaXplKCkpIH07CisgICAgICAgIH0sCisgICAgICAgIGN1cnJlbnRTY3JvbGxQb3NpdGlvbigp
LAorICAgICAgICBbdGhpc10oRmxvYXRQb2ludCYmIHBvc2l0aW9uKSB7CisgICAgICAgICAgICBh
dXRvKiBzY3JvbGxMYXllciA9IHN0YXRpY19jYXN0PE5pY29zaWE6OlBsYXRmb3JtTGF5ZXIqPihz
Y3JvbGxDb250YWluZXJMYXllcigpKTsKKyAgICAgICAgICAgIEFTU0VSVChzY3JvbGxMYXllcik7
CisgICAgICAgICAgICBhdXRvJiBjb21wb3NpdGlvbkxheWVyID0gZG93bmNhc3Q8Tmljb3NpYTo6
Q29tcG9zaXRpb25MYXllcj4oKnNjcm9sbExheWVyKTsKKworICAgICAgICAgICAgYXV0byB1cGRh
dGVTY29wZSA9IGNvbXBvc2l0aW9uTGF5ZXIuY3JlYXRlVXBkYXRlU2NvcGUoKTsKKyAgICAgICAg
ICAgIHNjcm9sbFRvKHBvc2l0aW9uKTsKKyAgICAgICAgfSwKKyAgICAgICAgW10geyB9KTsKK30K
KyNlbmRpZgorCiBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQgU2Nyb2xsaW5nVHJlZU92ZXJmbG93
U2Nyb2xsaW5nTm9kZU5pY29zaWE6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVl
bEV2ZW50JiB3aGVlbEV2ZW50KQogewogICAgIGlmICghY2FuSGFuZGxlV2hlZWxFdmVudCh3aGVl
bEV2ZW50KSkKICAgICAgICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6dW5oYW5k
bGVkKCk7CiAKICNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpCisgICAgZW5zdXJlU2Nyb2xs
QW5pbWF0aW9uS2luZXRpYygpOwogICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+YXBwZW5kVG9TY3Jv
bGxIaXN0b3J5KHdoZWVsRXZlbnQpOwogICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+c3RvcCgpOwog
ICAgIGlmICh3aGVlbEV2ZW50LmlzRW5kT2ZOb25Nb21lbnR1bVNjcm9sbCgpKSB7CkBAIC0xNzQs
MTYgKzE5NywyMCBAQCBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQgU2Nyb2xsaW5nVHJlZU92ZXJm
bG93U2Nyb2xsaW5nTm9kZU5pY29zaWE6OmhhbmRsZVdoZWVsRQogICAgIH0KIAogI2lmIEVOQUJM
RShTTU9PVEhfU0NST0xMSU5HKQotICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zY3JvbGwoSG9yaXpv
bnRhbFNjcm9sbGJhciwgU2Nyb2xsQnlQaXhlbCwgMSwgLWRlbHRhWCk7Ci0gICAgbV9zbW9vdGhB
bmltYXRpb24tPnNjcm9sbChWZXJ0aWNhbFNjcm9sbGJhciwgU2Nyb2xsQnlQaXhlbCwgMSwgLWRl
bHRhWSk7Ci0jZWxzZQorICAgIGVuc3VyZVNjcm9sbEFuaW1hdGlvblNtb290aCgpOworICAgIGlm
IChtX3Ntb290aEFuaW1hdGlvbiAmJiAhd2hlZWxFdmVudC5oYXNQcmVjaXNlU2Nyb2xsaW5nRGVs
dGFzKCkpIHsKKyAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnNjcm9sbChIb3Jpem9udGFsU2Ny
b2xsYmFyLCBTY3JvbGxCeVBpeGVsLCAxLCAtZGVsdGFYKTsKKyAgICAgICAgbV9zbW9vdGhBbmlt
YXRpb24tPnNjcm9sbChWZXJ0aWNhbFNjcm9sbGJhciwgU2Nyb2xsQnlQaXhlbCwgMSwgLWRlbHRh
WSk7CisgICAgICAgIHJldHVybiBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQ6OmhhbmRsZWQoKTsK
KyAgICB9CisjZW5kaWYKKwogICAgIGF1dG8qIHNjcm9sbExheWVyID0gc3RhdGljX2Nhc3Q8Tmlj
b3NpYTo6UGxhdGZvcm1MYXllcio+KHNjcm9sbENvbnRhaW5lckxheWVyKCkpOwogICAgIEFTU0VS
VChzY3JvbGxMYXllcik7CiAgICAgYXV0byYgY29tcG9zaXRpb25MYXllciA9IGRvd25jYXN0PE5p
Y29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+KCpzY3JvbGxMYXllcik7CiAKICAgICBhdXRvIHVwZGF0
ZVNjb3BlID0gY29tcG9zaXRpb25MYXllci5jcmVhdGVVcGRhdGVTY29wZSgpOwogICAgIHNjcm9s
bEJ5KHsgLWRlbHRhWCwgLWRlbHRhWSB9KTsKLSNlbmRpZgogCiAgICAgcmV0dXJuIFdoZWVsRXZl
bnRIYW5kbGluZ1Jlc3VsdDo6aGFuZGxlZCgpOwogfQpAQCAtMTkxLDExICsyMTgsMTQgQEAgV2hl
ZWxFdmVudEhhbmRsaW5nUmVzdWx0IFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVO
aWNvc2lhOjpoYW5kbGVXaGVlbEUKIHZvaWQgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5n
Tm9kZU5pY29zaWE6OnN0b3BTY3JvbGxBbmltYXRpb25zKCkKIHsKICNpZiBFTkFCTEUoS0lORVRJ
Q19TQ1JPTExJTkcpCi0gICAgbV9raW5ldGljQW5pbWF0aW9uLT5zdG9wKCk7Ci0gICAgbV9raW5l
dGljQW5pbWF0aW9uLT5jbGVhclNjcm9sbEhpc3RvcnkoKTsKKyAgICBpZiAobV9raW5ldGljQW5p
bWF0aW9uKSB7CisgICAgICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+c3RvcCgpOworICAgICAgICBt
X2tpbmV0aWNBbmltYXRpb24tPmNsZWFyU2Nyb2xsSGlzdG9yeSgpOworICAgIH0KICNlbmRpZgog
I2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQotICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zdG9w
KCk7CisgICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKQorICAgICAgICBtX3Ntb290aEFuaW1hdGlv
bi0+c3RvcCgpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29z
aWEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJl
ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWEuaAppbmRleCAxMzJiNDg4NzFkNmNkYjY3NDVj
NGFjMzYxN2E0YmMxZGRlZjRiOTAyLi4zYmQxYTQ1MzM3ZDAwNjM3ODhlNTAxODU3M2ZhMDFhZTMw
MGVhZmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lh
L1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3Jv
bGxpbmdOb2RlTmljb3NpYS5oCkBAIC01MCwxMCArNTAsMTggQEAgcHJpdmF0ZToKIAogICAgIHZv
aWQgcmVwb3NpdGlvblNjcm9sbGluZ0xheWVycygpIG92ZXJyaWRlOwogCisjaWYgRU5BQkxFKEtJ
TkVUSUNfU0NST0xMSU5HKQorICAgIHZvaWQgZW5zdXJlU2Nyb2xsQW5pbWF0aW9uS2luZXRpYygp
OworI2VuZGlmCisjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCisgICAgdm9pZCBlbnN1cmVT
Y3JvbGxBbmltYXRpb25TbW9vdGgoKTsKKyNlbmRpZgorCiAgICAgV2hlZWxFdmVudEhhbmRsaW5n
UmVzdWx0IGhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jikgb3ZlcnJp
ZGU7CiAKICAgICB2b2lkIHN0b3BTY3JvbGxBbmltYXRpb25zKCkgb3ZlcnJpZGU7CiAKKyAgICBi
b29sIG1fc2Nyb2xsQW5pbWF0b3JFbmFibGVkIHsgZmFsc2UgfTsKICNpZiBFTkFCTEUoS0lORVRJ
Q19TQ1JPTExJTkcpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbEFuaW1hdGlvbktpbmV0aWM+
IG1fa2luZXRpY0FuaW1hdGlvbjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
bGF0Zm9ybVdoZWVsRXZlbnQuaAppbmRleCBlMDlhNmE2YjkyM2ZhMDEwMjExODRlNTI3NTM0NjVm
NGYyMjNjZjZjLi4wN2QzZmQ3MTcxNzk2YWY0MTc1NzQ1MDA2Mzc4MTk1YmNiOTZjMjg4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaApAQCAtMTQxLDkg
KzE0MSwxMiBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgUGxhdGZvcm1XaGVlbEV2ZW50KEdka0V2
ZW50U2Nyb2xsKik7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKENPQ09BKQorI2lmIFBMQVRGT1JN
KENPQ09BKSB8fCBQTEFURk9STShHVEspIHx8IFVTRShMSUJXUEUpCiAgICAgYm9vbCBoYXNQcmVj
aXNlU2Nyb2xsaW5nRGVsdGFzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNQcmVjaXNlU2Nyb2xsaW5n
RGVsdGFzOyB9CiAgICAgdm9pZCBzZXRIYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzKGJvb2wgaGFz
UHJlY2lzZVNjcm9sbGluZ0RlbHRhcykgeyBtX2hhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMgPSBo
YXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzOyB9CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIHVuc2lnbmVkIHNjcm9sbENvdW50KCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxDb3Vu
dDsgfQogICAgIGZsb2F0IHVuYWNjZWxlcmF0ZWRTY3JvbGxpbmdEZWx0YVgoKSBjb25zdCB7IHJl
dHVybiBtX3VuYWNjZWxlcmF0ZWRTY3JvbGxpbmdEZWx0YVg7IH0KICAgICBmbG9hdCB1bmFjY2Vs
ZXJhdGVkU2Nyb2xsaW5nRGVsdGFZKCkgY29uc3QgeyByZXR1cm4gbV91bmFjY2VsZXJhdGVkU2Ny
b2xsaW5nRGVsdGFZOyB9CkBAIC0xOTMsOCArMTk2LDEwIEBAIHByb3RlY3RlZDoKICAgICBQbGF0
Zm9ybVdoZWVsRXZlbnRQaGFzZSBtX3BoYXNlIHsgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VOb25l
IH07CiAgICAgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UgbV9tb21lbnR1bVBoYXNlIHsgUGxhdGZv
cm1XaGVlbEV2ZW50UGhhc2VOb25lIH07CiAjZW5kaWYKLSNpZiBQTEFURk9STShDT0NPQSkKKyNp
ZiBQTEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oR1RLKSB8fCBVU0UoTElCV1BFKQogICAgIGJv
b2wgbV9oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzIHsgZmFsc2UgfTsKKyNlbmRpZgorI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIHVuc2lnbmVkIG1fc2Nyb2xsQ291bnQgeyAwIH07CiAgICAgZmxv
YXQgbV91bmFjY2VsZXJhdGVkU2Nyb2xsaW5nRGVsdGFYIHsgMCB9OwogICAgIGZsb2F0IG1fdW5h
Y2NlbGVyYXRlZFNjcm9sbGluZ0RlbHRhWSB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmNwcAppbmRleCBj
MDRhNDgwZDU1OTZjNzFjY2YyYTU0YTI5NWY5OWU2Zjk5NTg4YTFmLi4xNTNhNGVkNTFlMTIyN2Yx
MDRjZTczNWVlN2JiYWMzM2NhY2ZlZTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuY3BwCkBAIC03Myw4ICs3
MywxMCBAQCBTY3JvbGxBbmltYXRvckdlbmVyaWM6On5TY3JvbGxBbmltYXRvckdlbmVyaWMoKSA9
IGRlZmF1bHQ7CiAjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCiB2b2lkIFNjcm9sbEFuaW1h
dG9yR2VuZXJpYzo6ZW5zdXJlU21vb3RoU2Nyb2xsaW5nQW5pbWF0aW9uKCkKIHsKLSAgICBpZiAo
bV9zbW9vdGhBbmltYXRpb24pCisgICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKSB7CisgICAgICAg
IG1fc21vb3RoQW5pbWF0aW9uLT5zZXRDdXJyZW50UG9zaXRpb24obV9jdXJyZW50UG9zaXRpb24p
OwogICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgbV9zbW9vdGhBbmltYXRpb24gPSBtYWtl
VW5pcXVlPFNjcm9sbEFuaW1hdGlvblNtb290aD4oCiAgICAgICAgIFt0aGlzXSgpIC0+IFNjcm9s
bEV4dGVudHMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViRXZlbnRDb252
ZXJzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkV2ZW50Q29udmVyc2lvbi5jcHAK
aW5kZXggMmRlMjYwMTU1OTVhMzgzZmIzYjE3ZWFmNzQ2ZDI5NmY2ZTk5ODg3YS4uMGZiOTljN2E5
ZTY0ZmI4YTZkODgyNWIzYWZiMjA2NGY4MDUwNWI0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJFdmVudENvbnZlcnNpb24uY3BwCkBAIC0xNjQsOCArMTY0LDEwIEBAIHB1YmxpYzoKICAg
ICAgICAgbV9waGFzZSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudFBo
YXNlPih3ZWJFdmVudC5waGFzZSgpKTsKICAgICAgICAgbV9tb21lbnR1bVBoYXNlID0gc3RhdGlj
X2Nhc3Q8V2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50UGhhc2U+KHdlYkV2ZW50Lm1vbWVudHVt
UGhhc2UoKSk7CiAjZW5kaWYKLSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBQTEFURk9STShDT0NP
QSkgfHwgUExBVEZPUk0oR1RLKSB8fCBVU0UoTElCV1BFKQogICAgICAgICBtX2hhc1ByZWNpc2VT
Y3JvbGxpbmdEZWx0YXMgPSB3ZWJFdmVudC5oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzKCk7Cisj
ZW5kaWYKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgbV9zY3JvbGxDb3VudCA9IHdlYkV2
ZW50LnNjcm9sbENvdW50KCk7CiAgICAgICAgIG1fdW5hY2NlbGVyYXRlZFNjcm9sbGluZ0RlbHRh
WCA9IHdlYkV2ZW50LnVuYWNjZWxlcmF0ZWRTY3JvbGxpbmdEZWx0YSgpLndpZHRoKCk7CiAgICAg
ICAgIG1fdW5hY2NlbGVyYXRlZFNjcm9sbGluZ0RlbHRhWSA9IHdlYkV2ZW50LnVuYWNjZWxlcmF0
ZWRTY3JvbGxpbmdEZWx0YSgpLmhlaWdodCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViV2hlZWxFdmVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJXaGVlbEV2
ZW50LmNwcAppbmRleCA5ZDcyNWVkYjY3MjE0Y2RjMWM4NTY0ZmJmYTFjYzE0OGIyMjlkNzdkLi5j
MDNmZTIzZWJkN2VhYzYzODUxZWMwYWU5YTNiZGZiZDE2OWY4OWFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJXaGVlbEV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJXaGVlbEV2ZW50LmNwcApAQCAtNjEsNyArNjEsNyBAQCBXZWJXaGVlbEV2ZW50OjpX
ZWJXaGVlbEV2ZW50KFR5cGUgdHlwZSwgY29uc3QgSW50UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJ
bnRQb2ludAogICAgIEFTU0VSVChpc1doZWVsRXZlbnRUeXBlKHR5cGUpKTsKIH0KICNlbGlmIFBM
QVRGT1JNKEdUSykgfHwgVVNFKExJQldQRSkKLVdlYldoZWVsRXZlbnQ6OldlYldoZWVsRXZlbnQo
VHlwZSB0eXBlLCBjb25zdCBJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9i
YWxQb3NpdGlvbiwgY29uc3QgRmxvYXRTaXplJiBkZWx0YSwgY29uc3QgRmxvYXRTaXplJiB3aGVl
bFRpY2tzLCBQaGFzZSBwaGFzZSwgUGhhc2UgbW9tZW50dW1QaGFzZSwgR3JhbnVsYXJpdHkgZ3Jh
bnVsYXJpdHksIE9wdGlvblNldDxNb2RpZmllcj4gbW9kaWZpZXJzLCBXYWxsVGltZSB0aW1lc3Rh
bXApCitXZWJXaGVlbEV2ZW50OjpXZWJXaGVlbEV2ZW50KFR5cGUgdHlwZSwgY29uc3QgSW50UG9p
bnQmIHBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIGNvbnN0IEZsb2F0
U2l6ZSYgZGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgd2hlZWxUaWNrcywgUGhhc2UgcGhhc2UsIFBo
YXNlIG1vbWVudHVtUGhhc2UsIEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBib29sIGhhc1ByZWNp
c2VTY3JvbGxpbmdEZWx0YXMsIE9wdGlvblNldDxNb2RpZmllcj4gbW9kaWZpZXJzLCBXYWxsVGlt
ZSB0aW1lc3RhbXApCiAgICAgOiBXZWJFdmVudCh0eXBlLCBtb2RpZmllcnMsIHRpbWVzdGFtcCkK
ICAgICAsIG1fcG9zaXRpb24ocG9zaXRpb24pCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKGdsb2Jh
bFBvc2l0aW9uKQpAQCAtNzAsNiArNzAsNyBAQCBXZWJXaGVlbEV2ZW50OjpXZWJXaGVlbEV2ZW50
KFR5cGUgdHlwZSwgY29uc3QgSW50UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRQb2ludAogICAg
ICwgbV9ncmFudWxhcml0eShncmFudWxhcml0eSkKICAgICAsIG1fcGhhc2UocGhhc2UpCiAgICAg
LCBtX21vbWVudHVtUGhhc2UobW9tZW50dW1QaGFzZSkKKyAgICAsIG1faGFzUHJlY2lzZVNjcm9s
bGluZ0RlbHRhcyhoYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzKQogewogICAgIEFTU0VSVChpc1do
ZWVsRXZlbnRUeXBlKHR5cGUpKTsKIH0KQEAgLTg4LDkgKzg5LDkgQEAgdm9pZCBXZWJXaGVlbEV2
ZW50OjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogI2lmIFBMQVRGT1JNKENP
Q09BKSB8fCBQTEFURk9STShHVEspIHx8IFVTRShMSUJXUEUpCiAgICAgZW5jb2RlciA8PCBtX3Bo
YXNlOwogICAgIGVuY29kZXIgPDwgbV9tb21lbnR1bVBoYXNlOworICAgIGVuY29kZXIgPDwgbV9o
YXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0g
ICAgZW5jb2RlciA8PCBtX2hhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXM7CiAgICAgZW5jb2RlciA8
PCBtX3Njcm9sbENvdW50OwogICAgIGVuY29kZXIgPDwgbV91bmFjY2VsZXJhdGVkU2Nyb2xsaW5n
RGVsdGE7CiAjZW5kaWYKQEAgLTExNywxMCArMTE4LDEwIEBAIGJvb2wgV2ViV2hlZWxFdmVudDo6
ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgV2ViV2hlZWxFdmVudCYgdCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodC5tX21vbWVudHVtUGhhc2Up
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLSNpZiBQTEFURk9STShDT0NPQSkKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHQubV9oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZSh0Lm1fc2Nyb2xsQ291bnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0Lm1fdW5hY2NlbGVyYXRlZFNjcm9sbGluZ0RlbHRh
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYldoZWVsRXZlbnQuaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYldoZWVsRXZlbnQuaAppbmRleCA2MDk2NzA2NDAzZmNjNzA5
NzY0MzAyZmZmMTQ1OTAxZmI0MWNjYzFlLi5lMDkxZGI4ZmI5MGMzOTk1ZDA0N2Q0OTE2ZTU0ODMx
NzcwY2RjNTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJXaGVlbEV2ZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViV2hlZWxFdmVudC5oCkBAIC01NSw3ICs1
NSw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBXZWJXaGVlbEV2ZW50KFR5
cGUsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGRlbHRhLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHdoZWVsVGlja3MsIEdyYW51bGFyaXR5LCBib29sIGRp
cmVjdGlvbkludmVydGVkRnJvbURldmljZSwgUGhhc2UsIFBoYXNlIG1vbWVudHVtUGhhc2UsIGJv
b2wgaGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcywgdWludDMyX3Qgc2Nyb2xsQ291bnQsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0U2l6ZSYgdW5hY2NlbGVyYXRlZFNjcm9sbGluZ0RlbHRhLCBPcHRpb25T
ZXQ8TW9kaWZpZXI+LCBXYWxsVGltZSB0aW1lc3RhbXApOwogI2VsaWYgUExBVEZPUk0oR1RLKSB8
fCBVU0UoTElCV1BFKQotICAgIFdlYldoZWVsRXZlbnQoVHlwZSwgY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24s
IGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgZGVsdGEsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6
ZSYgd2hlZWxUaWNrcywgUGhhc2UsIFBoYXNlIG1vbWVudHVtUGhhc2UsIEdyYW51bGFyaXR5LCBP
cHRpb25TZXQ8TW9kaWZpZXI+LCBXYWxsVGltZSB0aW1lc3RhbXApOworICAgIFdlYldoZWVsRXZl
bnQoVHlwZSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgZGVs
dGEsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgd2hlZWxUaWNrcywgUGhhc2UsIFBoYXNlIG1v
bWVudHVtUGhhc2UsIEdyYW51bGFyaXR5LCBib29sIGhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMs
IE9wdGlvblNldDxNb2RpZmllcj4sIFdhbGxUaW1lIHRpbWVzdGFtcCk7CiAjZW5kaWYKIAogICAg
IGNvbnN0IFdlYkNvcmU6OkludFBvaW50IHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wb3Np
dGlvbjsgfQpAQCAtNjYsOCArNjYsMTAgQEAgcHVibGljOgogICAgIGJvb2wgZGlyZWN0aW9uSW52
ZXJ0ZWRGcm9tRGV2aWNlKCkgY29uc3QgeyByZXR1cm4gbV9kaXJlY3Rpb25JbnZlcnRlZEZyb21E
ZXZpY2U7IH0KICAgICBQaGFzZSBwaGFzZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFBo
YXNlPihtX3BoYXNlKTsgfQogICAgIFBoYXNlIG1vbWVudHVtUGhhc2UoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxQaGFzZT4obV9tb21lbnR1bVBoYXNlKTsgfQotI2lmIFBMQVRGT1JNKENP
Q09BKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShHVEspIHx8IFVTRShMSUJXUEUp
CiAgICAgYm9vbCBoYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzKCkgY29uc3QgeyByZXR1cm4gbV9o
YXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzOyB9CisjZW5kaWYKKyNpZiBQTEFURk9STShDT0NPQSkK
ICAgICB1aW50MzJfdCBzY3JvbGxDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsQ291bnQ7
IH0KICAgICBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHVuYWNjZWxlcmF0ZWRTY3JvbGxpbmdE
ZWx0YSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5hY2NlbGVyYXRlZFNjcm9sbGluZ0RlbHRhOyB9CiAj
ZW5kaWYKQEAgLTg2LDggKzg4LDEwIEBAIHByaXZhdGU6CiAgICAgdWludDMyX3QgbV9waGFzZSB7
IFBoYXNlOjpQaGFzZU5vbmUgfTsKICAgICB1aW50MzJfdCBtX21vbWVudHVtUGhhc2UgeyBQaGFz
ZTo6UGhhc2VOb25lIH07CiAgICAgYm9vbCBtX2RpcmVjdGlvbkludmVydGVkRnJvbURldmljZSB7
IGZhbHNlIH07Ci0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBM
QVRGT1JNKEdUSykgfHwgVVNFKExJQldQRSkKICAgICBib29sIG1faGFzUHJlY2lzZVNjcm9sbGlu
Z0RlbHRhcyB7IGZhbHNlIH07CisjZW5kaWYKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICB1aW50
MzJfdCBtX3Njcm9sbENvdW50IHsgMCB9OwogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBtX3VuYWNj
ZWxlcmF0ZWRTY3JvbGxpbmdEZWx0YTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvZ3RrL05hdGl2ZVdlYldoZWVsRXZlbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvZ3RrL05hdGl2ZVdlYldoZWVsRXZlbnRHdGsuY3BwCmluZGV4IDZlOTU2N2M0Yjk1YWM4
NjYwMDZmMzRjMGQ5NDMxOGEzNjFiYjFmN2YuLjQ4OGZiZWM5MzkxZDQ0ZTZiMWMyZmJiZDRlOTVl
NGM3ZTZhNWFiZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9OYXRpdmVX
ZWJXaGVlbEV2ZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvTmF0aXZl
V2ViV2hlZWxFdmVudEd0ay5jcHAKQEAgLTUwLDEyICs1MCwxMiBAQCBOYXRpdmVXZWJXaGVlbEV2
ZW50OjpOYXRpdmVXZWJXaGVlbEV2ZW50KEdka0V2ZW50KiBldmVudCwgY29uc3QgV2ViQ29yZTo6
SW50UG9pbgogfQogCiBOYXRpdmVXZWJXaGVlbEV2ZW50OjpOYXRpdmVXZWJXaGVlbEV2ZW50KGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiBwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
IGdsb2JhbFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGRlbHRhLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFNpemUmIHdoZWVsVGlja3MsIFdlYldoZWVsRXZlbnQ6OlBoYXNlIHBoYXNl
LCBXZWJXaGVlbEV2ZW50OjpQaGFzZSBtb21lbnR1bVBoYXNlKQotICAgIDogV2ViV2hlZWxFdmVu
dChXZWJFdmVudDo6V2hlZWwsIHBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgZGVsdGEsIHdoZWVs
VGlja3MsIHBoYXNlLCBtb21lbnR1bVBoYXNlLCBXZWJXaGVlbEV2ZW50OjpTY3JvbGxCeVBpeGVs
V2hlZWxFdmVudCwgeyB9LCBXYWxsVGltZTo6bm93KCkpCisgICAgOiBXZWJXaGVlbEV2ZW50KFdl
YkV2ZW50OjpXaGVlbCwgcG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBkZWx0YSwgd2hlZWxUaWNr
cywgcGhhc2UsIG1vbWVudHVtUGhhc2UsIFdlYldoZWVsRXZlbnQ6OlNjcm9sbEJ5UGl4ZWxXaGVl
bEV2ZW50LCBmYWxzZSwgeyB9LCBXYWxsVGltZTo6bm93KCkpCiB7CiB9CiAKIE5hdGl2ZVdlYldo
ZWVsRXZlbnQ6Ok5hdGl2ZVdlYldoZWVsRXZlbnQoY29uc3QgTmF0aXZlV2ViV2hlZWxFdmVudCYg
ZXZlbnQpCi0gICAgOiBXZWJXaGVlbEV2ZW50KGV2ZW50LnR5cGUoKSwgZXZlbnQucG9zaXRpb24o
KSwgZXZlbnQuZ2xvYmFsUG9zaXRpb24oKSwgZXZlbnQuZGVsdGEoKSwgZXZlbnQud2hlZWxUaWNr
cygpLCBldmVudC5waGFzZSgpLCBldmVudC5tb21lbnR1bVBoYXNlKCksIGV2ZW50LmdyYW51bGFy
aXR5KCksIGV2ZW50Lm1vZGlmaWVycygpLCBldmVudC50aW1lc3RhbXAoKSkKKyAgICA6IFdlYldo
ZWVsRXZlbnQoZXZlbnQudHlwZSgpLCBldmVudC5wb3NpdGlvbigpLCBldmVudC5nbG9iYWxQb3Np
dGlvbigpLCBldmVudC5kZWx0YSgpLCBldmVudC53aGVlbFRpY2tzKCksIGV2ZW50LnBoYXNlKCks
IGV2ZW50Lm1vbWVudHVtUGhhc2UoKSwgZXZlbnQuZ3JhbnVsYXJpdHkoKSwgZXZlbnQuaGFzUHJl
Y2lzZVNjcm9sbGluZ0RlbHRhcygpLCBldmVudC5tb2RpZmllcnMoKSwgZXZlbnQudGltZXN0YW1w
KCkpCiAgICAgLCBtX25hdGl2ZUV2ZW50KGV2ZW50Lm5hdGl2ZUV2ZW50KCkgPyBnZGtfZXZlbnRf
Y29weShldmVudC5uYXRpdmVFdmVudCgpKSA6IG51bGxwdHIpCiB7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuY3BwCmluZGV4IGNjOTdjMjE3YmEyZWYzOTA3
ZTY5MmYwNzM5YTJmYzA2YWU4MWY5NjkuLmNhNWNlNDhhODk5ZDU5OThhYTE5MzQ1M2VmZjYyYzI2
MDE1ZjE3MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9XZWJFdmVudEZh
Y3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3Rvcnku
Y3BwCkBAIC0yODgsNiArMjg4LDcgQEAgV2ViV2hlZWxFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNy
ZWF0ZVdlYldoZWVsRXZlbnQoY29uc3QgR2RrRXZlbnQqIGV2ZW50LCBjb25zdAogICAgICAgICBw
aGFzZSwKICAgICAgICAgbW9tZW50dW1QaGFzZSwKICAgICAgICAgV2ViV2hlZWxFdmVudDo6U2Ny
b2xsQnlQaXhlbFdoZWVsRXZlbnQsCisgICAgICAgIGZhbHNlLAogICAgICAgICBtb2RpZmllcnNG
b3JFdmVudChldmVudCksCiAgICAgICAgIHdhbGxUaW1lRm9yRXZlbnQoZXZlbnQpKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2xpYndwZS9XZWJFdmVudEZhY3RvcnkuY3Bw
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvbGlid3BlL1dlYkV2ZW50RmFjdG9yeS5jcHAKaW5kZXgg
ZjhhOTcxNTNkOWQ0ZDJlMGQxZjFiM2JhOWIyNjQ2MGFkOTM1NDNkNi4uYjA0MDFiZjcxMTk5NDkw
YjU5NjFiMDBhNDllNGQ0OTg1ZjlmZWVkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvbGlid3BlL1dlYkV2ZW50RmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
bGlid3BlL1dlYkV2ZW50RmFjdG9yeS5jcHAKQEAgLTE2NCw2ICsxNjQsNyBAQCBXZWJXaGVlbEV2
ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViV2hlZWxFdmVudChzdHJ1Y3Qgd3BlX2lucHV0
X2F4aXNfZXZlbnQqCiAKICAgICBXZWJDb3JlOjpGbG9hdFNpemUgd2hlZWxUaWNrczsKICAgICBX
ZWJDb3JlOjpGbG9hdFNpemUgZGVsdGE7CisgICAgYm9vbCBoYXNQcmVjaXNlU2Nyb2xsaW5nRGVs
dGFzID0gZmFsc2U7CiAKICNpZiBXUEVfQ0hFQ0tfVkVSU0lPTigxLCA1LCAwKQogICAgIGlmIChl
dmVudC0+dHlwZSAmIHdwZV9pbnB1dF9heGlzX2V2ZW50X3R5cGVfbWFza18yZCkgewpAQCAtMTc3
LDYgKzE3OCw3IEBAIFdlYldoZWVsRXZlbnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJXaGVl
bEV2ZW50KHN0cnVjdCB3cGVfaW5wdXRfYXhpc19ldmVudCoKICAgICAgICAgY2FzZSB3cGVfaW5w
dXRfYXhpc19ldmVudF90eXBlX21vdGlvbl9zbW9vdGg6CiAgICAgICAgICAgICB3aGVlbFRpY2tz
ID0gV2ViQ29yZTo6RmxvYXRTaXplKGV2ZW50MkQtPnhfYXhpcyAvIGRldmljZVNjYWxlRmFjdG9y
LCBldmVudDJELT55X2F4aXMgLyBkZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgICAgICAgICBkZWx0
YSA9IHdoZWVsVGlja3M7CisgICAgICAgICAgICBoYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzID0g
dHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAg
cmV0dXJuIFdlYldoZWVsRXZlbnQoKTsKQEAgLTE4NCw3ICsxODYsNyBAQCBXZWJXaGVlbEV2ZW50
IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViV2hlZWxFdmVudChzdHJ1Y3Qgd3BlX2lucHV0X2F4
aXNfZXZlbnQqCiAKICAgICAgICAgcmV0dXJuIFdlYldoZWVsRXZlbnQoV2ViRXZlbnQ6OldoZWVs
LCBwb3NpdGlvbiwgcG9zaXRpb24sCiAgICAgICAgICAgICBkZWx0YSwgd2hlZWxUaWNrcywgcGhh
c2UsIG1vbWVudHVtUGhhc2UsCi0gICAgICAgICAgICBXZWJXaGVlbEV2ZW50OjpTY3JvbGxCeVBp
eGVsV2hlZWxFdmVudCwKKyAgICAgICAgICAgIFdlYldoZWVsRXZlbnQ6OlNjcm9sbEJ5UGl4ZWxX
aGVlbEV2ZW50LCBoYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzLAogICAgICAgICAgICAgT3B0aW9u
U2V0PFdlYkV2ZW50OjpNb2RpZmllcj4geyB9LCB3YWxsVGltZUZvckV2ZW50VGltZShldmVudC0+
dGltZSkpOwogICAgIH0KICNlbmRpZgpAQCAtMjEwLDYgKzIxMiw3IEBAIFdlYldoZWVsRXZlbnQg
V2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJXaGVlbEV2ZW50KHN0cnVjdCB3cGVfaW5wdXRfYXhp
c19ldmVudCoKICAgICBjYXNlIFNtb290aDoKICAgICAgICAgd2hlZWxUaWNrcyA9IFdlYkNvcmU6
OkZsb2F0U2l6ZSgwLCBldmVudC0+dmFsdWUgLyBkZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgICAg
IGRlbHRhID0gd2hlZWxUaWNrczsKKyAgICAgICAgaGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcyA9
IHRydWU7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBXZWJX
aGVlbEV2ZW50KCk7CkBAIC0yMTcsNyArMjIwLDcgQEAgV2ViV2hlZWxFdmVudCBXZWJFdmVudEZh
Y3Rvcnk6OmNyZWF0ZVdlYldoZWVsRXZlbnQoc3RydWN0IHdwZV9pbnB1dF9heGlzX2V2ZW50Kgog
CiAgICAgcmV0dXJuIFdlYldoZWVsRXZlbnQoV2ViRXZlbnQ6OldoZWVsLCBwb3NpdGlvbiwgcG9z
aXRpb24sCiAgICAgICAgIGRlbHRhLCB3aGVlbFRpY2tzLCBwaGFzZSwgbW9tZW50dW1QaGFzZSwK
LSAgICAgICAgV2ViV2hlZWxFdmVudDo6U2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQsCisgICAgICAg
IFdlYldoZWVsRXZlbnQ6OlNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50LCBoYXNQcmVjaXNlU2Nyb2xs
aW5nRGVsdGFzLAogICAgICAgICBPcHRpb25TZXQ8V2ViRXZlbnQ6Ok1vZGlmaWVyPiB7IH0sIHdh
bGxUaW1lRm9yRXZlbnRUaW1lKGV2ZW50LT50aW1lKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGRmNGZiZjY0YmU3NjM4ZGFmZDQ1YzJiZTk0OTFl
ZmY3YjNjMzUyYmMuLjQyZDYxYjI0ODIzMTUyYmNlMDA2YzgzN2I0Zjc1MGZkYzBkNDM3MWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMjYyOSw2ICsyNjI5
LDggQEAgc3RhdGljIGJvb2wgY2FuQ29hbGVzY2UoY29uc3QgV2ViV2hlZWxFdmVudCYgYSwgY29u
c3QgV2ViV2hlZWxFdmVudCYgYikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChhLm1v
bWVudHVtUGhhc2UoKSAhPSBiLm1vbWVudHVtUGhhc2UoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OworI2VuZGlmCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykgfHwgVVNFKExJ
QldQRSkKICAgICBpZiAoYS5oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzKCkgIT0gYi5oYXNQcmVj
aXNlU2Nyb2xsaW5nRGVsdGFzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgpAQCAt
MjY0Nyw2ICsyNjQ5LDggQEAgc3RhdGljIFdlYldoZWVsRXZlbnQgY29hbGVzY2UoY29uc3QgV2Vi
V2hlZWxFdmVudCYgYSwgY29uc3QgV2ViV2hlZWxFdmVudCYgYikKICAgICBGbG9hdFNpemUgbWVy
Z2VkVW5hY2NlbGVyYXRlZFNjcm9sbGluZ0RlbHRhID0gYS51bmFjY2VsZXJhdGVkU2Nyb2xsaW5n
RGVsdGEoKSArIGIudW5hY2NlbGVyYXRlZFNjcm9sbGluZ0RlbHRhKCk7CiAKICAgICByZXR1cm4g
V2ViV2hlZWxFdmVudChXZWJFdmVudDo6V2hlZWwsIGIucG9zaXRpb24oKSwgYi5nbG9iYWxQb3Np
dGlvbigpLCBtZXJnZWREZWx0YSwgbWVyZ2VkV2hlZWxUaWNrcywgYi5ncmFudWxhcml0eSgpLCBi
LmRpcmVjdGlvbkludmVydGVkRnJvbURldmljZSgpLCBiLnBoYXNlKCksIGIubW9tZW50dW1QaGFz
ZSgpLCBiLmhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMoKSwgYi5zY3JvbGxDb3VudCgpLCBtZXJn
ZWRVbmFjY2VsZXJhdGVkU2Nyb2xsaW5nRGVsdGEsIGIubW9kaWZpZXJzKCksIGIudGltZXN0YW1w
KCkpOworI2VsaWYgUExBVEZPUk0oR1RLKSB8fCBVU0UoTElCV1BFKQorICAgIHJldHVybiBXZWJX
aGVlbEV2ZW50KFdlYkV2ZW50OjpXaGVlbCwgYi5wb3NpdGlvbigpLCBiLmdsb2JhbFBvc2l0aW9u
KCksIG1lcmdlZERlbHRhLCBtZXJnZWRXaGVlbFRpY2tzLCBiLnBoYXNlKCksIGIubW9tZW50dW1Q
aGFzZSgpLCBiLmdyYW51bGFyaXR5KCksIGIuaGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcygpLCBi
Lm1vZGlmaWVycygpLCBiLnRpbWVzdGFtcCgpKTsKICNlbHNlCiAgICAgcmV0dXJuIFdlYldoZWVs
RXZlbnQoV2ViRXZlbnQ6OldoZWVsLCBiLnBvc2l0aW9uKCksIGIuZ2xvYmFsUG9zaXRpb24oKSwg
bWVyZ2VkRGVsdGEsIG1lcmdlZFdoZWVsVGlja3MsIGIuZ3JhbnVsYXJpdHkoKSwgYi5tb2RpZmll
cnMoKSwgYi50aW1lc3RhbXAoKSk7CiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411207</attachid>
            <date>2020-10-13 03:23:04 -0700</date>
            <delta_ts>2020-10-15 04:10:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210382-20201013112303.patch</filename>
            <type>text/plain</type>
            <size>38540</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4Mzg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWI2ZGMyNTExMWFmYjdh
ZTlhNDI0MDFmYTU4MTg1NjFkYzMyOTI1MS4uNDBkMzk4MGNlMjUwY2Q2NzM1YzMyMDk5MjA5ODY2
ZTMzMTMxYmM1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIwLTEwLTEzICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIEFkZCBzdXBw
b3J0IGZvciBzbW9vdGggc2Nyb2xsaW5nIGFuaW1hdGlvbiB3aXRoIGFzeW5jIHNjcm9sbGluZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMzgyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVzcGVjdCBz
bW9vdGgtc2Nyb2xsaW5nIHNldHRpbmcgYW5kIGZpeCBkZWFkbG9jayBpc3N1ZXMgd2l0aCBhc3lu
YworICAgICAgICBzY3JvbGxpbmcgb24gbmljb3NpYSBwYXRoLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cywgbm8gZnVuY3Rpb25hbCBjaGFuZ2UuCisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9B
c3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jU2Ny
b2xsaW5nQ29vcmRpbmF0b3I6OnNjcm9sbEFuaW1hdG9yRW5hYmxlZCBjb25zdCk6CisgICAgICAg
ICogcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5oOgorICAgICAgICAq
IHBhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUaHJlYWRlZFNjcm9sbGluZ1RyZWU6OlRocmVhZGVkU2Nyb2xsaW5nVHJlZSk6CisgICAg
ICAgICogcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpUaHJlYWRlZFNjcm9sbGluZ1RyZWU6OnNjcm9sbEFuaW1hdG9yRW5hYmxlZCk6Cisg
ICAgICAgICogcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxp
bmdOb2RlTmljb3NpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlTmljb3NpYTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29z
aWEpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5p
Y29zaWE6OmNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYTo6ZW5zdXJlU2Nyb2xsQW5pbWF0aW9u
S2luZXRpYyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdO
b2RlTmljb3NpYTo6ZW5zdXJlU2Nyb2xsQW5pbWF0aW9uU21vb3RoKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjpoYW5kbGVXaGVlbEV2
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVO
aWNvc2lhOjpzdG9wU2Nyb2xsQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxp
bmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYTo6cmVwb3NpdGlvblJlbGF0ZWRMYXllcnMp
OgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZU5pY29zaWEuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Nj
cm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhOjpTY3JvbGxp
bmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYSk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYTo6Y29tbWl0U3RhdGVBZnRl
ckNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9s
bGluZ05vZGVOaWNvc2lhOjpyZXBvc2l0aW9uU2Nyb2xsaW5nTGF5ZXJzKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhOjplbnN1cmVT
Y3JvbGxBbmltYXRpb25LaW5ldGljKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVP
dmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhOjplbnN1cmVTY3JvbGxBbmltYXRpb25TbW9vdGgp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5p
Y29zaWE6OmhhbmRsZVdoZWVsRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJl
ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWE6OnN0b3BTY3JvbGxBbmltYXRpb25zKToKKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9s
bGluZ05vZGVOaWNvc2lhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjplbnN1cmVTbW9vdGhT
Y3JvbGxpbmdBbmltYXRpb24pOgorCiAyMDIwLTEwLTEzICBLaW1tbyBLaW5udW5lbiAgPGtraW5u
dW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgQ29jb2E6IE1ha2UgV2ViR0xMYXllciBub3QgZGVw
ZW5kZW50IG9uICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiMzkwMzAzZmQw
MTUxYmY1N2VhMzE5MWYyMmVlYTJkZWRkZDgyMDRhLi45ZTU0MGVjMjAwYmQ0Y2YwNzQyZDVlODA5
YTAzMjI5ZTQ1ZjJlNDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIwLTEwLTEzICBD
aHJpcyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIEFkZCBz
dXBwb3J0IGZvciBzbW9vdGggc2Nyb2xsaW5nIGFuaW1hdGlvbiB3aXRoIGFzeW5jIHNjcm9sbGlu
ZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMzgy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGhh
c1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMgdG8gR1RLL1dQRSB3aGVlbCBldmVudHMuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzIG5lZWRlZC4KKworICAgICAgICAqIFNoYXJlZC9XZWJFdmVudENvbnZl
cnNpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJLaXQyUGxhdGZvcm1XaGVlbEV2ZW50OjpX
ZWJLaXQyUGxhdGZvcm1XaGVlbEV2ZW50KToKKyAgICAgICAgKiBTaGFyZWQvV2ViV2hlZWxFdmVu
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYldoZWVsRXZlbnQ6OldlYldoZWVsRXZlbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJXaGVlbEV2ZW50OjplbmNvZGUgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpXZWJXaGVlbEV2ZW50OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJXaGVl
bEV2ZW50Lmg6CisgICAgICAgICogU2hhcmVkL1dlYldoZWVsRXZlbnRDb2FsZXNjZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJXaGVlbEV2ZW50Q29hbGVzY2VyOjpjYW5Db2FsZXNjZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYldoZWVsRXZlbnRDb2FsZXNjZXI6OmNvYWxlc2NlKToKKyAgICAg
ICAgKiBTaGFyZWQvZ3RrL05hdGl2ZVdlYldoZWVsRXZlbnRHdGsuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOYXRpdmVXZWJXaGVlbEV2ZW50OjpOYXRpdmVXZWJXaGVlbEV2ZW50KToKKyAgICAgICAg
KiBTaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkV2
ZW50RmFjdG9yeTo6Y3JlYXRlV2ViV2hlZWxFdmVudCk6CisgICAgICAgICogU2hhcmVkL2xpYndw
ZS9XZWJFdmVudEZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFdmVudEZhY3Rvcnk6
OmNyZWF0ZVdlYldoZWVsRXZlbnQpOgorCiAyMDIwLTEwLTEzICBLaW1tbyBLaW5udW5lbiAgPGtr
aW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgQ29jb2E6IE1ha2UgV2ViR0xMYXllciBub3Qg
ZGVwZW5kZW50IG9uICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNw
cAppbmRleCBmMTM5MjM3MWJkYjIzMzM1OGUzYjQ1M2U1MzVlYjM5YzJlOThkNzk4Li4zMDM3OTAw
NmUzNmQwNGRmYzEzNDE3MWYyNzc0MDZlOTdhZjAyNGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNw
cApAQCAtOTU3LDYgKzk1NywxNSBAQCB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnJl
cG9ydFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uc0NoYW5nZWQoTW9ub3RvbgogICAgICAgICBt
X3BhZ2UtPnBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudCgpLT5sb2dTY3JvbGxpbmdFdmVudChQZXJm
b3JtYW5jZUxvZ2dpbmdDbGllbnQ6OlNjcm9sbGluZ0V2ZW50OjpTd2l0Y2hlZFNjcm9sbGluZ01v
ZGUsIHRpbWVzdGFtcCwgcmVhc29ucy50b1JhdygpKTsKIH0KIAorI2lmIEVOQUJMRShTTU9PVEhf
U0NST0xMSU5HKQorYm9vbCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpzY3JvbGxBbmltYXRv
ckVuYWJsZWQoKSBjb25zdAoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgYXV0
byYgc2V0dGluZ3MgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLnNldHRpbmdzKCk7CisgICAgcmV0dXJu
IHNldHRpbmdzLnNjcm9sbEFuaW1hdG9yRW5hYmxlZCgpOworfQorI2VuZGlmCisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nv
b3JkaW5hdG9yLmgKaW5kZXggOTBkMWMyOWRjMWIwOThkNzNlNWIzZjkyNzBlOWVlODIyOGRlMWEx
Ny4uNTY2NzhiN2MzYTk0ODBiMGY2YzExNGRmN2NjN2M2Y2UxYmFmYmE3NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRp
bmF0b3IuaApAQCAtNzEsNiArNzEsMTAgQEAgcHVibGljOgogICAgIHZvaWQgcmVwb3J0RXhwb3Nl
ZFVuZmlsbGVkQXJlYShNb25vdG9uaWNUaW1lLCB1bnNpZ25lZCB1bmZpbGxlZEFyZWEpOwogICAg
IHZvaWQgcmVwb3J0U3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zQ2hhbmdlZChNb25vdG9uaWNU
aW1lLCBPcHRpb25TZXQ8U3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb24+KTsKIAorI2lmIEVOQUJM
RShTTU9PVEhfU0NST0xMSU5HKQorICAgIGJvb2wgc2Nyb2xsQW5pbWF0b3JFbmFibGVkKCkgY29u
c3Q7CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAgIFdFQkNPUkVfRVhQT1JUIEFzeW5jU2Nyb2xs
aW5nQ29vcmRpbmF0b3IoUGFnZSopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmNwcAppbmRleCAyM2Y1ZjBlZmYwNTU4
OGFmMjgwYjg2ZDk3ZTRjMmJiZGQxZWMyZTJiLi5hOWE5YjU5ZTk5ZDg1NjQ5M2JkNzVmZjBhZTNm
NWIxZTI5ODhhMzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9U
aHJlYWRlZFNjcm9sbGluZ1RyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHAKQEAgLTQ3LDYgKzQ3LDkgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogVGhyZWFkZWRTY3JvbGxpbmdUcmVlOjpUaHJlYWRlZFNjcm9sbGluZ1RyZWUo
QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvciYgc2Nyb2xsaW5nQ29vcmRpbmF0b3IpCiAgICAgOiBt
X3Njcm9sbGluZ0Nvb3JkaW5hdG9yKCZzY3JvbGxpbmdDb29yZGluYXRvcikKIHsKKyNpZiBFTkFC
TEUoU01PT1RIX1NDUk9MTElORykKKyAgICBtX3Njcm9sbEFuaW1hdG9yRW5hYmxlZCA9IHNjcm9s
bGluZ0Nvb3JkaW5hdG9yLnNjcm9sbEFuaW1hdG9yRW5hYmxlZCgpOworI2VuZGlmCiB9CiAKIFRo
cmVhZGVkU2Nyb2xsaW5nVHJlZTo6flRocmVhZGVkU2Nyb2xsaW5nVHJlZSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5oCmlu
ZGV4IGIyNWZmMTRjYTEyY2IyOGE3Y2ExOWYwMmFiMWFmYWM0ODZhOTUxM2YuLjAzNzdjNjNkYTU1
M2Q0MmEzNjdmMWE1MTQzYTkyZGU4NjczMTIzMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5oCkBAIC01OCw2ICs1OCw4
IEBAIHB1YmxpYzoKIAogICAgIExvY2smIHRyZWVNdXRleCgpIHsgcmV0dXJuIG1fdHJlZU11dGV4
OyB9CiAKKyAgICBib29sIHNjcm9sbEFuaW1hdG9yRW5hYmxlZCgpIHsgcmV0dXJuIG1fc2Nyb2xs
QW5pbWF0b3JFbmFibGVkOyB9CisKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBUaHJlYWRlZFNj
cm9sbGluZ1RyZWUoQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvciYpOwogCkBAIC0xMDMsNiArMTA1
LDggQEAgcHJpdmF0ZToKIAogICAgIC8vIER5bmFtaWNhbGx5IGFsbG9jYXRlZCBiZWNhdXNlIGl0
IGhhcyB0byB1c2UgdGhlIFNjcm9sbGluZ1RocmVhZCdzIHJ1bmxvb3AuCiAgICAgc3RkOjp1bmlx
dWVfcHRyPFJ1bkxvb3A6OlRpbWVyPFRocmVhZGVkU2Nyb2xsaW5nVHJlZT4+IG1fZGVsYXllZFJl
bmRlcmluZ1VwZGF0ZURldGVjdGlvblRpbWVyOworCisgICAgYm9vbCBtX3Njcm9sbEFuaW1hdG9y
RW5hYmxlZCB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEuY3BwCmlu
ZGV4IDA4YjVlNWU0ZjZmMGY1OWY5OGI1MjBiMjhjOTk4NWQzYjE1YzA1OTcuLmVhY2Y4MDAzNGQ3
ZGVjY2UyOWJjMWUyOGNlOTFjMTNjNmI3ZTgxMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5p
Y29zaWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Ny
b2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEuY3BwCkBAIC0zNSw3ICszNSw3IEBA
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5pY29zaWFQbGF0Zm9ybUxheWVyLmgi
CiAjaW5jbHVkZSAiU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUuaCIKLSNpbmNsdWRl
ICJTY3JvbGxpbmdUcmVlLmgiCisjaW5jbHVkZSAiVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmgiCiAK
ICNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpCiAjaW5jbHVkZSAiU2Nyb2xsQW5pbWF0aW9u
S2luZXRpYy5oIgpAQCAtNTQsNDAgKzU0LDcgQEAgUmVmPFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9s
bGluZ05vZGU+IFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjpjcmUKIFNj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjpTY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlTmljb3NpYShTY3JvbGxpbmdUcmVlJiBzY3JvbGxpbmdUcmVlLCBTY3JvbGxp
bmdOb2RlVHlwZSBub2RlVHlwZSwgU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkKICAgICA6IFNjcm9s
bGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUoc2Nyb2xsaW5nVHJlZSwgbm9kZVR5cGUsIG5vZGVJ
RCkKIHsKLSNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpCi0gICAgbV9raW5ldGljQW5pbWF0
aW9uID0gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRpb25LaW5ldGljPigKLSAgICAgICAgW3RoaXNd
KCkgLT4gU2Nyb2xsRXh0ZW50cyB7Ci0gICAgICAgICAgICByZXR1cm4geyBJbnRQb2ludChtaW5p
bXVtU2Nyb2xsUG9zaXRpb24oKSksIEludFBvaW50KG1heGltdW1TY3JvbGxQb3NpdGlvbigpKSwg
SW50U2l6ZShzY3JvbGxhYmxlQXJlYVNpemUoKSkgfTsKLSAgICAgICAgfSwKLSAgICAgICAgW3Ro
aXNdKEZsb2F0UG9pbnQmJiBwb3NpdGlvbikgewotI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5H
KQotICAgICAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnNldEN1cnJlbnRQb3NpdGlvbihwb3Np
dGlvbik7Ci0jZW5kaWYKLQotICAgICAgICAgICAgYXV0byogc2Nyb2xsTGF5ZXIgPSBzdGF0aWNf
Y2FzdDxOaWNvc2lhOjpQbGF0Zm9ybUxheWVyKj4oc2Nyb2xsZWRDb250ZW50c0xheWVyKCkpOwot
ICAgICAgICAgICAgQVNTRVJUKHNjcm9sbExheWVyKTsKLSAgICAgICAgICAgIGF1dG8mIGNvbXBv
c2l0aW9uTGF5ZXIgPSBkb3duY2FzdDxOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyPigqc2Nyb2xs
TGF5ZXIpOwotCi0gICAgICAgICAgICBhdXRvIHVwZGF0ZVNjb3BlID0gY29tcG9zaXRpb25MYXll
ci5jcmVhdGVVcGRhdGVTY29wZSgpOwotICAgICAgICAgICAgc2Nyb2xsVG8ocG9zaXRpb24pOwot
ICAgICAgICB9KTsKLSNlbmRpZgotI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQotICAgIG1f
c21vb3RoQW5pbWF0aW9uID0gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRpb25TbW9vdGg+KAotICAg
ICAgICBbdGhpc10oKSAtPiBTY3JvbGxFeHRlbnRzIHsKLSAgICAgICAgICAgIHJldHVybiB7IElu
dFBvaW50KG1pbmltdW1TY3JvbGxQb3NpdGlvbigpKSwgSW50UG9pbnQobWF4aW11bVNjcm9sbFBv
c2l0aW9uKCkpLCBJbnRTaXplKHNjcm9sbGFibGVBcmVhU2l6ZSgpKSB9OwotICAgICAgICB9LAot
ICAgICAgICBjdXJyZW50U2Nyb2xsUG9zaXRpb24oKSwKLSAgICAgICAgW3RoaXNdKEZsb2F0UG9p
bnQmJiBwb3NpdGlvbikgewotICAgICAgICAgICAgYXV0byogc2Nyb2xsTGF5ZXIgPSBzdGF0aWNf
Y2FzdDxOaWNvc2lhOjpQbGF0Zm9ybUxheWVyKj4oc2Nyb2xsZWRDb250ZW50c0xheWVyKCkpOwot
ICAgICAgICAgICAgQVNTRVJUKHNjcm9sbExheWVyKTsKLSAgICAgICAgICAgIGF1dG8mIGNvbXBv
c2l0aW9uTGF5ZXIgPSBkb3duY2FzdDxOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyPigqc2Nyb2xs
TGF5ZXIpOwotCi0gICAgICAgICAgICBhdXRvIHVwZGF0ZVNjb3BlID0gY29tcG9zaXRpb25MYXll
ci5jcmVhdGVVcGRhdGVTY29wZSgpOwotICAgICAgICAgICAgc2Nyb2xsVG8ocG9zaXRpb24pOwot
ICAgICAgICB9LAotICAgICAgICBbXSB7IH0pOwotI2VuZGlmCisgICAgbV9zY3JvbGxBbmltYXRv
ckVuYWJsZWQgPSBkb3duY2FzdDxUaHJlYWRlZFNjcm9sbGluZ1RyZWU+KHNjcm9sbGluZ1RyZWUp
LnNjcm9sbEFuaW1hdG9yRW5hYmxlZCgpOwogfQogCiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxp
bmdOb2RlTmljb3NpYTo6flNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhKCkg
PSBkZWZhdWx0OwpAQCAtMTM2LDE3ICsxMDMsNjggQEAgdm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlTmljb3NpYTo6Y29tbWl0U3RhdGVBZnRlckNoaWxkcmVuKGNvbnN0IFNjcm8K
ICAgICAgICAgY29uc3QgYXV0byYgcmVxdWVzdGVkU2Nyb2xsRGF0YSA9IHNjcm9sbGluZ1N0YXRl
Tm9kZS5yZXF1ZXN0ZWRTY3JvbGxEYXRhKCk7CiAgICAgICAgIHNjcm9sbFRvKHJlcXVlc3RlZFNj
cm9sbERhdGEuc2Nyb2xsUG9zaXRpb24sIHJlcXVlc3RlZFNjcm9sbERhdGEuc2Nyb2xsVHlwZSwg
cmVxdWVzdGVkU2Nyb2xsRGF0YS5jbGFtcGluZyk7CiAjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJ
TkcpCi0gICAgICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zZXRDdXJyZW50UG9zaXRpb24oY3VycmVu
dFNjcm9sbFBvc2l0aW9uKCkpOworICAgICAgICBpZiAobV9zbW9vdGhBbmltYXRpb24pCisgICAg
ICAgICAgICBtX3Ntb290aEFuaW1hdGlvbi0+c2V0Q3VycmVudFBvc2l0aW9uKGN1cnJlbnRTY3Jv
bGxQb3NpdGlvbigpKTsKICNlbmRpZgogICAgIH0KIH0KIAorI2lmIEVOQUJMRShLSU5FVElDX1ND
Uk9MTElORykKK3ZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWE6OmVu
c3VyZVNjcm9sbEFuaW1hdGlvbktpbmV0aWMoKQoreworICAgIGlmIChtX2tpbmV0aWNBbmltYXRp
b24pCisgICAgICAgIHJldHVybjsKKworICAgIG1fa2luZXRpY0FuaW1hdGlvbiA9IG1ha2VVbmlx
dWU8U2Nyb2xsQW5pbWF0aW9uS2luZXRpYz4oCisgICAgICAgIFt0aGlzXSgpIC0+IFNjcm9sbEV4
dGVudHMgeworICAgICAgICAgICAgcmV0dXJuIHsgSW50UG9pbnQobWluaW11bVNjcm9sbFBvc2l0
aW9uKCkpLCBJbnRQb2ludChtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSksIEludFNpemUoc2Nyb2xs
YWJsZUFyZWFTaXplKCkpIH07CisgICAgICAgIH0sCisgICAgICAgIFt0aGlzXShGbG9hdFBvaW50
JiYgcG9zaXRpb24pIHsKKyNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKKyAgICAgICAgICAg
IGlmIChtX3Ntb290aEFuaW1hdGlvbikKKyAgICAgICAgICAgICAgICBtX3Ntb290aEFuaW1hdGlv
bi0+c2V0Q3VycmVudFBvc2l0aW9uKHBvc2l0aW9uKTsKKyNlbmRpZgorCisgICAgICAgICAgICBh
dXRvKiBzY3JvbGxMYXllciA9IHN0YXRpY19jYXN0PE5pY29zaWE6OlBsYXRmb3JtTGF5ZXIqPihz
Y3JvbGxlZENvbnRlbnRzTGF5ZXIoKSk7CisgICAgICAgICAgICBBU1NFUlQoc2Nyb2xsTGF5ZXIp
OworICAgICAgICAgICAgYXV0byYgY29tcG9zaXRpb25MYXllciA9IGRvd25jYXN0PE5pY29zaWE6
OkNvbXBvc2l0aW9uTGF5ZXI+KCpzY3JvbGxMYXllcik7CisKKyAgICAgICAgICAgIGF1dG8gdXBk
YXRlU2NvcGUgPSBjb21wb3NpdGlvbkxheWVyLmNyZWF0ZVVwZGF0ZVNjb3BlKCk7CisgICAgICAg
ICAgICBzY3JvbGxUbyhwb3NpdGlvbik7CisgICAgICAgIH0pOworfQorI2VuZGlmCisKKyNpZiBF
TkFCTEUoU01PT1RIX1NDUk9MTElORykKK3ZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5n
Tm9kZU5pY29zaWE6OmVuc3VyZVNjcm9sbEFuaW1hdGlvblNtb290aCgpCit7CisgICAgaWYgKCFt
X3Njcm9sbEFuaW1hdG9yRW5hYmxlZCB8fCBtX3Ntb290aEFuaW1hdGlvbikKKyAgICAgICAgcmV0
dXJuOworCisgICAgbV9zbW9vdGhBbmltYXRpb24gPSBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlv
blNtb290aD4oCisgICAgICAgIFt0aGlzXSgpIC0+IFNjcm9sbEV4dGVudHMgeworICAgICAgICAg
ICAgcmV0dXJuIHsgSW50UG9pbnQobWluaW11bVNjcm9sbFBvc2l0aW9uKCkpLCBJbnRQb2ludCht
YXhpbXVtU2Nyb2xsUG9zaXRpb24oKSksIEludFNpemUoc2Nyb2xsYWJsZUFyZWFTaXplKCkpIH07
CisgICAgICAgIH0sCisgICAgICAgIGN1cnJlbnRTY3JvbGxQb3NpdGlvbigpLAorICAgICAgICBb
dGhpc10oRmxvYXRQb2ludCYmIHBvc2l0aW9uKSB7CisgICAgICAgICAgICBhdXRvKiBzY3JvbGxM
YXllciA9IHN0YXRpY19jYXN0PE5pY29zaWE6OlBsYXRmb3JtTGF5ZXIqPihzY3JvbGxlZENvbnRl
bnRzTGF5ZXIoKSk7CisgICAgICAgICAgICBBU1NFUlQoc2Nyb2xsTGF5ZXIpOworICAgICAgICAg
ICAgYXV0byYgY29tcG9zaXRpb25MYXllciA9IGRvd25jYXN0PE5pY29zaWE6OkNvbXBvc2l0aW9u
TGF5ZXI+KCpzY3JvbGxMYXllcik7CisKKyAgICAgICAgICAgIGF1dG8gdXBkYXRlU2NvcGUgPSBj
b21wb3NpdGlvbkxheWVyLmNyZWF0ZVVwZGF0ZVNjb3BlKCk7CisgICAgICAgICAgICBzY3JvbGxU
byhwb3NpdGlvbik7CisgICAgICAgIH0sCisgICAgICAgIFtdIHsgfSk7Cit9CisjZW5kaWYKKwog
V2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0IFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVO
aWNvc2lhOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxF
dmVudCkKIHsKICAgICBpZiAoIWNhbkhhbmRsZVdoZWVsRXZlbnQod2hlZWxFdmVudCkpCiAgICAg
ICAgIHJldHVybiBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQ6OnVuaGFuZGxlZCgpOwogCiAjaWYg
RU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKQorICAgIGVuc3VyZVNjcm9sbEFuaW1hdGlvbktpbmV0
aWMoKTsKICAgICBtX2tpbmV0aWNBbmltYXRpb24tPmFwcGVuZFRvU2Nyb2xsSGlzdG9yeSh3aGVl
bEV2ZW50KTsKICAgICBtX2tpbmV0aWNBbmltYXRpb24tPnN0b3AoKTsKICAgICBpZiAod2hlZWxF
dmVudC5pc0VuZE9mTm9uTW9tZW50dW1TY3JvbGwoKSkgewpAQCAtMTg5LDE2ICsyMDcsMjAgQEAg
V2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0IFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVO
aWNvc2lhOjpoYW5kbGVXaGVlbEV2ZW4KICAgICB9CiAKICNpZiBFTkFCTEUoU01PT1RIX1NDUk9M
TElORykKLSAgICBtX3Ntb290aEFuaW1hdGlvbi0+c2Nyb2xsKEhvcml6b250YWxTY3JvbGxiYXIs
IFNjcm9sbEJ5UGl4ZWwsIDEsIC1kZWx0YVgpOwotICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zY3Jv
bGwoVmVydGljYWxTY3JvbGxiYXIsIFNjcm9sbEJ5UGl4ZWwsIDEsIC1kZWx0YVkpOwotI2Vsc2UK
KyAgICBlbnN1cmVTY3JvbGxBbmltYXRpb25TbW9vdGgoKTsKKyAgICBpZiAobV9zbW9vdGhBbmlt
YXRpb24gJiYgIXdoZWVsRXZlbnQuaGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcygpKSB7CisgICAg
ICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zY3JvbGwoSG9yaXpvbnRhbFNjcm9sbGJhciwgU2Nyb2xs
QnlQaXhlbCwgMSwgLWRlbHRhWCk7CisgICAgICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zY3JvbGwo
VmVydGljYWxTY3JvbGxiYXIsIFNjcm9sbEJ5UGl4ZWwsIDEsIC1kZWx0YVkpOworICAgICAgICBy
ZXR1cm4gV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0OjpoYW5kbGVkKCk7CisgICAgfQorI2VuZGlm
CisKICAgICBhdXRvKiBzY3JvbGxMYXllciA9IHN0YXRpY19jYXN0PE5pY29zaWE6OlBsYXRmb3Jt
TGF5ZXIqPihzY3JvbGxlZENvbnRlbnRzTGF5ZXIoKSk7CiAgICAgQVNTRVJUKHNjcm9sbExheWVy
KTsKICAgICBhdXRvJiBjb21wb3NpdGlvbkxheWVyID0gZG93bmNhc3Q8Tmljb3NpYTo6Q29tcG9z
aXRpb25MYXllcj4oKnNjcm9sbExheWVyKTsKIAogICAgIGF1dG8gdXBkYXRlU2NvcGUgPSBjb21w
b3NpdGlvbkxheWVyLmNyZWF0ZVVwZGF0ZVNjb3BlKCk7CiAgICAgc2Nyb2xsQnkoeyAtZGVsdGFY
LCAtZGVsdGFZIH0pOwotI2VuZGlmCiAKICAgICByZXR1cm4gV2hlZWxFdmVudEhhbmRsaW5nUmVz
dWx0OjpoYW5kbGVkKCk7CiB9CkBAIC0yMDYsMTEgKzIyOCwxNCBAQCBXaGVlbEV2ZW50SGFuZGxp
bmdSZXN1bHQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWE6OmhhbmRsZVdo
ZWVsRXZlbgogdm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYTo6c3Rv
cFNjcm9sbEFuaW1hdGlvbnMoKQogewogI2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykKLSAg
ICBtX2tpbmV0aWNBbmltYXRpb24tPnN0b3AoKTsKLSAgICBtX2tpbmV0aWNBbmltYXRpb24tPmNs
ZWFyU2Nyb2xsSGlzdG9yeSgpOworICAgIGlmIChtX2tpbmV0aWNBbmltYXRpb24pIHsKKyAgICAg
ICAgbV9raW5ldGljQW5pbWF0aW9uLT5zdG9wKCk7CisgICAgICAgIG1fa2luZXRpY0FuaW1hdGlv
bi0+Y2xlYXJTY3JvbGxIaXN0b3J5KCk7CisgICAgfQogI2VuZGlmCiAjaWYgRU5BQkxFKFNNT09U
SF9TQ1JPTExJTkcpCi0gICAgbV9zbW9vdGhBbmltYXRpb24tPnN0b3AoKTsKKyAgICBpZiAobV9z
bW9vdGhBbmltYXRpb24pCisgICAgICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zdG9wKCk7CiAjZW5k
aWYKIH0KIApAQCAtMjg5LDYgKzMxNCwxMSBAQCB2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9s
bGluZ05vZGVOaWNvc2lhOjpyZXBvc2l0aW9uUmVsYXRlZExheWVycygpCiAgICAgICAgIGlmICht
X2Zvb3RlckxheWVyKQogICAgICAgICAgICAgYXBwbHlMYXllclBvc2l0aW9uKCptX2Zvb3Rlckxh
eWVyLCBGbG9hdFBvaW50KGhvcml6b250YWxTY3JvbGxPZmZzZXRGb3JCYW5uZXIsIEZyYW1lVmll
dzo6eVBvc2l0aW9uRm9yRm9vdGVyTGF5ZXIoc2Nyb2xsUG9zaXRpb24sIHRvcENvbnRlbnRJbnNl
dCwgdG90YWxDb250ZW50c1NpemUoKS5oZWlnaHQoKSwgZm9vdGVySGVpZ2h0KCkpKSk7CiAgICAg
fQorCisjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCisgICAgaWYgKG1fc21vb3RoQW5pbWF0
aW9uKQorICAgICAgICBtX3Ntb290aEFuaW1hdGlvbi0+dXBkYXRlVmlzaWJsZUxlbmd0aHMoKTsK
KyNlbmRpZgogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGlu
Z05vZGVOaWNvc2lhLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Nj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhLmgKaW5kZXggNTA1NGJlYmZlY2Zk
YjZmOWI4MTdmM2NlZDNiYmQzYTk5MWMzOGY5My4uNjA0MDc5ODgwNjExMmVlNmVjODI1ODI2MjU3
OGM5NDM0Y2JkN2QxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
bmljb3NpYS9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZU5pY29zaWEuaApAQCAtNTMsNiArNTMsMTMgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBjb21taXRTdGF0ZUFmdGVyQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5n
U3RhdGVOb2RlJikgb3ZlcnJpZGU7CiAKKyNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpCisg
ICAgdm9pZCBlbnN1cmVTY3JvbGxBbmltYXRpb25LaW5ldGljKCk7CisjZW5kaWYKKyNpZiBFTkFC
TEUoU01PT1RIX1NDUk9MTElORykKKyAgICB2b2lkIGVuc3VyZVNjcm9sbEFuaW1hdGlvblNtb290
aCgpOworI2VuZGlmCisKICAgICBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQgaGFuZGxlV2hlZWxF
dmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc3Rv
cFNjcm9sbEFuaW1hdGlvbnMoKSBvdmVycmlkZTsKQEAgLTcxLDYgKzc4LDcgQEAgcHJpdmF0ZToK
ICAgICBSZWZQdHI8Tmljb3NpYTo6Q29tcG9zaXRpb25MYXllcj4gbV9oZWFkZXJMYXllcjsKICAg
ICBSZWZQdHI8Tmljb3NpYTo6Q29tcG9zaXRpb25MYXllcj4gbV9mb290ZXJMYXllcjsKIAorICAg
IGJvb2wgbV9zY3JvbGxBbmltYXRvckVuYWJsZWQgeyBmYWxzZSB9OwogI2lmIEVOQUJMRShLSU5F
VElDX1NDUk9MTElORykKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsQW5pbWF0aW9uS2luZXRp
Yz4gbV9raW5ldGljQW5pbWF0aW9uOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05v
ZGVOaWNvc2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Ny
b2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWEuY3BwCmluZGV4IDA2OWFkNGY5
MjNmY2M2NTQzMGE5NGZiY2Y0NTgzZjVlZThiYmZkMmEuLmYwNTM5NTYzMTUxYmUwMWIzMWRmYzJk
MjZjYzk3Y2MwYzk0ZjdjYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJl
ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWEuY3BwCkBAIC0zOSw3ICszOSw3IEBACiAjaW5j
bHVkZSAiU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmgiCiAjZW5kaWYKICNpbmNsdWRlICJTY3JvbGxp
bmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5oIgotI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWUu
aCIKKyNpbmNsdWRlICJUaHJlYWRlZFNjcm9sbGluZ1RyZWUuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC01MSw0MCArNTEsNyBAQCBSZWY8U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xs
aW5nTm9kZT4gU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaQogU2Nyb2xs
aW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWE6OlNjcm9sbGluZ1RyZWVPdmVyZmxv
d1Njcm9sbGluZ05vZGVOaWNvc2lhKFNjcm9sbGluZ1RyZWUmIHNjcm9sbGluZ1RyZWUsIFNjcm9s
bGluZ05vZGVJRCBub2RlSUQpCiAgICAgOiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlKHNjcm9sbGluZ1RyZWUsIG5vZGVJRCkKIHsKLSNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJ
TkcpCi0gICAgbV9raW5ldGljQW5pbWF0aW9uID0gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRpb25L
aW5ldGljPigKLSAgICAgICAgW3RoaXNdKCkgLT4gU2Nyb2xsRXh0ZW50cyB7Ci0gICAgICAgICAg
ICByZXR1cm4geyBJbnRQb2ludChtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSksIEludFBvaW50KG1h
eGltdW1TY3JvbGxQb3NpdGlvbigpKSwgSW50U2l6ZShzY3JvbGxhYmxlQXJlYVNpemUoKSkgfTsK
LSAgICAgICAgfSwKLSAgICAgICAgW3RoaXNdKEZsb2F0UG9pbnQmJiBwb3NpdGlvbikgewotI2lm
IEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQotICAgICAgICAgICAgbV9zbW9vdGhBbmltYXRpb24t
PnNldEN1cnJlbnRQb3NpdGlvbihwb3NpdGlvbik7Ci0jZW5kaWYKLQotICAgICAgICAgICAgYXV0
byogc2Nyb2xsTGF5ZXIgPSBzdGF0aWNfY2FzdDxOaWNvc2lhOjpQbGF0Zm9ybUxheWVyKj4oc2Ny
b2xsQ29udGFpbmVyTGF5ZXIoKSk7Ci0gICAgICAgICAgICBBU1NFUlQoc2Nyb2xsTGF5ZXIpOwot
ICAgICAgICAgICAgYXV0byYgY29tcG9zaXRpb25MYXllciA9IGRvd25jYXN0PE5pY29zaWE6OkNv
bXBvc2l0aW9uTGF5ZXI+KCpzY3JvbGxMYXllcik7Ci0KLSAgICAgICAgICAgIGF1dG8gdXBkYXRl
U2NvcGUgPSBjb21wb3NpdGlvbkxheWVyLmNyZWF0ZVVwZGF0ZVNjb3BlKCk7Ci0gICAgICAgICAg
ICBzY3JvbGxUbyhwb3NpdGlvbik7Ci0gICAgICAgIH0pOwotI2VuZGlmCi0jaWYgRU5BQkxFKFNN
T09USF9TQ1JPTExJTkcpCi0gICAgbV9zbW9vdGhBbmltYXRpb24gPSBtYWtlVW5pcXVlPFNjcm9s
bEFuaW1hdGlvblNtb290aD4oCi0gICAgICAgIFt0aGlzXSgpIC0+IFNjcm9sbEV4dGVudHMgewot
ICAgICAgICAgICAgcmV0dXJuIHsgSW50UG9pbnQobWluaW11bVNjcm9sbFBvc2l0aW9uKCkpLCBJ
bnRQb2ludChtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSksIEludFNpemUoc2Nyb2xsYWJsZUFyZWFT
aXplKCkpIH07Ci0gICAgICAgIH0sCi0gICAgICAgIGN1cnJlbnRTY3JvbGxQb3NpdGlvbigpLAot
ICAgICAgICBbdGhpc10oRmxvYXRQb2ludCYmIHBvc2l0aW9uKSB7Ci0gICAgICAgICAgICBhdXRv
KiBzY3JvbGxMYXllciA9IHN0YXRpY19jYXN0PE5pY29zaWE6OlBsYXRmb3JtTGF5ZXIqPihzY3Jv
bGxDb250YWluZXJMYXllcigpKTsKLSAgICAgICAgICAgIEFTU0VSVChzY3JvbGxMYXllcik7Ci0g
ICAgICAgICAgICBhdXRvJiBjb21wb3NpdGlvbkxheWVyID0gZG93bmNhc3Q8Tmljb3NpYTo6Q29t
cG9zaXRpb25MYXllcj4oKnNjcm9sbExheWVyKTsKLQotICAgICAgICAgICAgYXV0byB1cGRhdGVT
Y29wZSA9IGNvbXBvc2l0aW9uTGF5ZXIuY3JlYXRlVXBkYXRlU2NvcGUoKTsKLSAgICAgICAgICAg
IHNjcm9sbFRvKHBvc2l0aW9uKTsKLSAgICAgICAgfSwKLSAgICAgICAgW10geyB9KTsKLSNlbmRp
ZgorICAgIG1fc2Nyb2xsQW5pbWF0b3JFbmFibGVkID0gZG93bmNhc3Q8VGhyZWFkZWRTY3JvbGxp
bmdUcmVlPihzY3JvbGxpbmdUcmVlKS5zY3JvbGxBbmltYXRvckVuYWJsZWQoKTsKIH0KIAogU2Ny
b2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWE6On5TY3JvbGxpbmdUcmVlT3Zl
cmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYSgpID0gZGVmYXVsdDsKQEAgLTk5LDcgKzY2LDggQEAg
dm9pZCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYTo6Y29tbWl0U3Rh
dGVBZnRlckNoaWxkcmVuKGNvbnN0IFMKICAgICAgICAgY29uc3QgYXV0byYgcmVxdWVzdGVkU2Ny
b2xsRGF0YSA9IG92ZXJmbG93U3RhdGVOb2RlLnJlcXVlc3RlZFNjcm9sbERhdGEoKTsKICAgICAg
ICAgc2Nyb2xsVG8ocmVxdWVzdGVkU2Nyb2xsRGF0YS5zY3JvbGxQb3NpdGlvbiwgcmVxdWVzdGVk
U2Nyb2xsRGF0YS5zY3JvbGxUeXBlLCByZXF1ZXN0ZWRTY3JvbGxEYXRhLmNsYW1waW5nKTsKICNp
ZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKLSAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnNl
dEN1cnJlbnRQb3NpdGlvbihjdXJyZW50U2Nyb2xsUG9zaXRpb24oKSk7CisgICAgICAgIGlmICht
X3Ntb290aEFuaW1hdGlvbikKKyAgICAgICAgICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zZXRDdXJy
ZW50UG9zaXRpb24oY3VycmVudFNjcm9sbFBvc2l0aW9uKCkpOwogI2VuZGlmCiAgICAgfQogfQpA
QCAtMTI0LDE0ICs5Miw2OSBAQCB2b2lkIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05v
ZGVOaWNvc2lhOjpyZXBvc2l0aW9uU2Nyb2xsaW5nTGF5ZXJzKCkKICAgICAgICAgICAgIHN0YXRl
LmJvdW5kc09yaWdpbiA9IHNjcm9sbE9mZnNldDsKICAgICAgICAgICAgIHN0YXRlLmRlbHRhLmJv
dW5kc09yaWdpbkNoYW5nZWQgPSB0cnVlOwogICAgICAgICB9KTsKKworI2lmIEVOQUJMRShTTU9P
VEhfU0NST0xMSU5HKQorICAgIGlmIChtX3Ntb290aEFuaW1hdGlvbikKKyAgICAgICAgbV9zbW9v
dGhBbmltYXRpb24tPnVwZGF0ZVZpc2libGVMZW5ndGhzKCk7CisjZW5kaWYKIH0KIAorI2lmIEVO
QUJMRShLSU5FVElDX1NDUk9MTElORykKK3ZvaWQgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xs
aW5nTm9kZU5pY29zaWE6OmVuc3VyZVNjcm9sbEFuaW1hdGlvbktpbmV0aWMoKQoreworICAgIGlm
IChtX2tpbmV0aWNBbmltYXRpb24pCisgICAgICAgIHJldHVybjsKKworICAgIG1fa2luZXRpY0Fu
aW1hdGlvbiA9IG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0aW9uS2luZXRpYz4oCisgICAgICAgIFt0
aGlzXSgpIC0+IFNjcm9sbEV4dGVudHMgeworICAgICAgICAgICAgcmV0dXJuIHsgSW50UG9pbnQo
bWluaW11bVNjcm9sbFBvc2l0aW9uKCkpLCBJbnRQb2ludChtYXhpbXVtU2Nyb2xsUG9zaXRpb24o
KSksIEludFNpemUoc2Nyb2xsYWJsZUFyZWFTaXplKCkpIH07CisgICAgICAgIH0sCisgICAgICAg
IFt0aGlzXShGbG9hdFBvaW50JiYgcG9zaXRpb24pIHsKKyNpZiBFTkFCTEUoU01PT1RIX1NDUk9M
TElORykKKyAgICAgICAgICAgIGlmIChtX3Ntb290aEFuaW1hdGlvbikKKyAgICAgICAgICAgICAg
ICBtX3Ntb290aEFuaW1hdGlvbi0+c2V0Q3VycmVudFBvc2l0aW9uKHBvc2l0aW9uKTsKKyNlbmRp
ZgorCisgICAgICAgICAgICBhdXRvKiBzY3JvbGxMYXllciA9IHN0YXRpY19jYXN0PE5pY29zaWE6
OlBsYXRmb3JtTGF5ZXIqPihzY3JvbGxDb250YWluZXJMYXllcigpKTsKKyAgICAgICAgICAgIEFT
U0VSVChzY3JvbGxMYXllcik7CisgICAgICAgICAgICBhdXRvJiBjb21wb3NpdGlvbkxheWVyID0g
ZG93bmNhc3Q8Tmljb3NpYTo6Q29tcG9zaXRpb25MYXllcj4oKnNjcm9sbExheWVyKTsKKworICAg
ICAgICAgICAgYXV0byB1cGRhdGVTY29wZSA9IGNvbXBvc2l0aW9uTGF5ZXIuY3JlYXRlVXBkYXRl
U2NvcGUoKTsKKyAgICAgICAgICAgIHNjcm9sbFRvKHBvc2l0aW9uKTsKKyAgICAgICAgfSk7Cit9
CisjZW5kaWYKKworI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQordm9pZCBTY3JvbGxpbmdU
cmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYTo6ZW5zdXJlU2Nyb2xsQW5pbWF0aW9uU21v
b3RoKCkKK3sKKyAgICBpZiAoIW1fc2Nyb2xsQW5pbWF0b3JFbmFibGVkIHx8IG1fc21vb3RoQW5p
bWF0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Ntb290aEFuaW1hdGlvbiA9IG1ha2VV
bmlxdWU8U2Nyb2xsQW5pbWF0aW9uU21vb3RoPigKKyAgICAgICAgW3RoaXNdKCkgLT4gU2Nyb2xs
RXh0ZW50cyB7CisgICAgICAgICAgICByZXR1cm4geyBJbnRQb2ludChtaW5pbXVtU2Nyb2xsUG9z
aXRpb24oKSksIEludFBvaW50KG1heGltdW1TY3JvbGxQb3NpdGlvbigpKSwgSW50U2l6ZShzY3Jv
bGxhYmxlQXJlYVNpemUoKSkgfTsKKyAgICAgICAgfSwKKyAgICAgICAgY3VycmVudFNjcm9sbFBv
c2l0aW9uKCksCisgICAgICAgIFt0aGlzXShGbG9hdFBvaW50JiYgcG9zaXRpb24pIHsKKyAgICAg
ICAgICAgIGF1dG8qIHNjcm9sbExheWVyID0gc3RhdGljX2Nhc3Q8Tmljb3NpYTo6UGxhdGZvcm1M
YXllcio+KHNjcm9sbENvbnRhaW5lckxheWVyKCkpOworICAgICAgICAgICAgQVNTRVJUKHNjcm9s
bExheWVyKTsKKyAgICAgICAgICAgIGF1dG8mIGNvbXBvc2l0aW9uTGF5ZXIgPSBkb3duY2FzdDxO
aWNvc2lhOjpDb21wb3NpdGlvbkxheWVyPigqc2Nyb2xsTGF5ZXIpOworCisgICAgICAgICAgICBh
dXRvIHVwZGF0ZVNjb3BlID0gY29tcG9zaXRpb25MYXllci5jcmVhdGVVcGRhdGVTY29wZSgpOwor
ICAgICAgICAgICAgc2Nyb2xsVG8ocG9zaXRpb24pOworICAgICAgICB9LAorICAgICAgICBbXSB7
IH0pOworfQorI2VuZGlmCisKIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdCBTY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYTo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0
Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCiB7CiAgICAgaWYgKCFjYW5IYW5kbGVXaGVlbEV2
ZW50KHdoZWVsRXZlbnQpKQogICAgICAgICByZXR1cm4gV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0
Ojp1bmhhbmRsZWQoKTsKIAogI2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykKKyAgICBlbnN1
cmVTY3JvbGxBbmltYXRpb25LaW5ldGljKCk7CiAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5hcHBl
bmRUb1Njcm9sbEhpc3Rvcnkod2hlZWxFdmVudCk7CiAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5z
dG9wKCk7CiAgICAgaWYgKHdoZWVsRXZlbnQuaXNFbmRPZk5vbk1vbWVudHVtU2Nyb2xsKCkpIHsK
QEAgLTE3NCwxNiArMTk3LDIwIEBAIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdCBTY3JvbGxpbmdU
cmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYTo6aGFuZGxlV2hlZWxFCiAgICAgfQogCiAj
aWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0gICAgbV9zbW9vdGhBbmltYXRpb24tPnNjcm9s
bChIb3Jpem9udGFsU2Nyb2xsYmFyLCBTY3JvbGxCeVBpeGVsLCAxLCAtZGVsdGFYKTsKLSAgICBt
X3Ntb290aEFuaW1hdGlvbi0+c2Nyb2xsKFZlcnRpY2FsU2Nyb2xsYmFyLCBTY3JvbGxCeVBpeGVs
LCAxLCAtZGVsdGFZKTsKLSNlbHNlCisgICAgZW5zdXJlU2Nyb2xsQW5pbWF0aW9uU21vb3RoKCk7
CisgICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uICYmICF3aGVlbEV2ZW50Lmhhc1ByZWNpc2VTY3Jv
bGxpbmdEZWx0YXMoKSkgeworICAgICAgICBtX3Ntb290aEFuaW1hdGlvbi0+c2Nyb2xsKEhvcml6
b250YWxTY3JvbGxiYXIsIFNjcm9sbEJ5UGl4ZWwsIDEsIC1kZWx0YVgpOworICAgICAgICBtX3Nt
b290aEFuaW1hdGlvbi0+c2Nyb2xsKFZlcnRpY2FsU2Nyb2xsYmFyLCBTY3JvbGxCeVBpeGVsLCAx
LCAtZGVsdGFZKTsKKyAgICAgICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6aGFu
ZGxlZCgpOworICAgIH0KKyNlbmRpZgorCiAgICAgYXV0byogc2Nyb2xsTGF5ZXIgPSBzdGF0aWNf
Y2FzdDxOaWNvc2lhOjpQbGF0Zm9ybUxheWVyKj4oc2Nyb2xsQ29udGFpbmVyTGF5ZXIoKSk7CiAg
ICAgQVNTRVJUKHNjcm9sbExheWVyKTsKICAgICBhdXRvJiBjb21wb3NpdGlvbkxheWVyID0gZG93
bmNhc3Q8Tmljb3NpYTo6Q29tcG9zaXRpb25MYXllcj4oKnNjcm9sbExheWVyKTsKIAogICAgIGF1
dG8gdXBkYXRlU2NvcGUgPSBjb21wb3NpdGlvbkxheWVyLmNyZWF0ZVVwZGF0ZVNjb3BlKCk7CiAg
ICAgc2Nyb2xsQnkoeyAtZGVsdGFYLCAtZGVsdGFZIH0pOwotI2VuZGlmCiAKICAgICByZXR1cm4g
V2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0OjpoYW5kbGVkKCk7CiB9CkBAIC0xOTEsMTEgKzIxOCwx
NCBAQCBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xs
aW5nTm9kZU5pY29zaWE6OmhhbmRsZVdoZWVsRQogdm9pZCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dT
Y3JvbGxpbmdOb2RlTmljb3NpYTo6c3RvcFNjcm9sbEFuaW1hdGlvbnMoKQogewogI2lmIEVOQUJM
RShLSU5FVElDX1NDUk9MTElORykKLSAgICBtX2tpbmV0aWNBbmltYXRpb24tPnN0b3AoKTsKLSAg
ICBtX2tpbmV0aWNBbmltYXRpb24tPmNsZWFyU2Nyb2xsSGlzdG9yeSgpOworICAgIGlmIChtX2tp
bmV0aWNBbmltYXRpb24pIHsKKyAgICAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5zdG9wKCk7Cisg
ICAgICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+Y2xlYXJTY3JvbGxIaXN0b3J5KCk7CisgICAgfQog
I2VuZGlmCiAjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0gICAgbV9zbW9vdGhBbmltYXRp
b24tPnN0b3AoKTsKKyAgICBpZiAobV9zbW9vdGhBbmltYXRpb24pCisgICAgICAgIG1fc21vb3Ro
QW5pbWF0aW9uLT5zdG9wKCk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlTmljb3NpYS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3Jv
bGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYS5oCmluZGV4IDEzMmI0ODg3MWQ2
Y2RiNjc0NWM0YWMzNjE3YTRiYzFkZGVmNGI5MDIuLjNiZDFhNDUzMzdkMDA2Mzc4OGU1MDE4NTcz
ZmEwMWFlMzAwZWFmZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L25pY29zaWEvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVPdmVy
Zmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhLmgKQEAgLTUwLDEwICs1MCwxOCBAQCBwcml2YXRlOgog
CiAgICAgdm9pZCByZXBvc2l0aW9uU2Nyb2xsaW5nTGF5ZXJzKCkgb3ZlcnJpZGU7CiAKKyNpZiBF
TkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpCisgICAgdm9pZCBlbnN1cmVTY3JvbGxBbmltYXRpb25L
aW5ldGljKCk7CisjZW5kaWYKKyNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKKyAgICB2b2lk
IGVuc3VyZVNjcm9sbEFuaW1hdGlvblNtb290aCgpOworI2VuZGlmCisKICAgICBXaGVlbEV2ZW50
SGFuZGxpbmdSZXN1bHQgaGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQm
KSBvdmVycmlkZTsKIAogICAgIHZvaWQgc3RvcFNjcm9sbEFuaW1hdGlvbnMoKSBvdmVycmlkZTsK
IAorICAgIGJvb2wgbV9zY3JvbGxBbmltYXRvckVuYWJsZWQgeyBmYWxzZSB9OwogI2lmIEVOQUJM
RShLSU5FVElDX1NDUk9MTElORykKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsQW5pbWF0aW9u
S2luZXRpYz4gbV9raW5ldGljQW5pbWF0aW9uOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCmluZGV4IGM0OGVkYjQ1NjY3Mzc1YzgzNzlhYjBl
NTJlNTI0MDFkY2NlZDRkM2MuLmFmMWM1Mzk2MzFiM2JmNTZkMTNlOGMxODVhYjdhNTFkYzFiYzQz
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCkBA
IC0xNDEsOSArMTQxLDEyIEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBQbGF0Zm9ybVdoZWVsRXZl
bnQoR2RrRXZlbnRTY3JvbGwqKTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYg
UExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykgfHwgVVNFKExJQldQRSkKICAgICBib29s
IGhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMoKSBjb25zdCB7IHJldHVybiBtX2hhc1ByZWNpc2VT
Y3JvbGxpbmdEZWx0YXM7IH0KICAgICB2b2lkIHNldEhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMo
Ym9vbCBoYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzKSB7IG1faGFzUHJlY2lzZVNjcm9sbGluZ0Rl
bHRhcyA9IGhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXM7IH0KKyNlbmRpZgorCisjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgdW5zaWduZWQgc2Nyb2xsQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3Nj
cm9sbENvdW50OyB9CiAgICAgZmxvYXQgdW5hY2NlbGVyYXRlZFNjcm9sbGluZ0RlbHRhWCgpIGNv
bnN0IHsgcmV0dXJuIG1fdW5hY2NlbGVyYXRlZFNjcm9sbGluZ0RlbHRhWDsgfQogICAgIGZsb2F0
IHVuYWNjZWxlcmF0ZWRTY3JvbGxpbmdEZWx0YVkoKSBjb25zdCB7IHJldHVybiBtX3VuYWNjZWxl
cmF0ZWRTY3JvbGxpbmdEZWx0YVk7IH0KQEAgLTE5Myw4ICsxOTYsMTAgQEAgcHJvdGVjdGVkOgog
ICAgIFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIG1fcGhhc2UgeyBQbGF0Zm9ybVdoZWVsRXZlbnRQ
aGFzZU5vbmUgfTsKICAgICBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSBtX21vbWVudHVtUGhhc2Ug
eyBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZU5vbmUgfTsKICNlbmRpZgotI2lmIFBMQVRGT1JNKENP
Q09BKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShHVEspIHx8IFVTRShMSUJXUEUp
CiAgICAgYm9vbCBtX2hhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMgeyBmYWxzZSB9OworI2VuZGlm
CisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdW5zaWduZWQgbV9zY3JvbGxDb3VudCB7IDAgfTsK
ICAgICBmbG9hdCBtX3VuYWNjZWxlcmF0ZWRTY3JvbGxpbmdEZWx0YVggeyAwIH07CiAgICAgZmxv
YXQgbV91bmFjY2VsZXJhdGVkU2Nyb2xsaW5nRGVsdGFZIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuY3Bw
CmluZGV4IGMwNGE0ODBkNTU5NmM3MWNjZjJhNTRhMjk1Zjk5ZTZmOTk1ODhhMWYuLjE1M2E0ZWQ1
MWUxMjI3ZjEwNGNlNzM1ZWU3YmJhYzMzY2FjZmVlMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5jcHAKQEAg
LTczLDggKzczLDEwIEBAIFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6flNjcm9sbEFuaW1hdG9yR2Vu
ZXJpYygpID0gZGVmYXVsdDsKICNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKIHZvaWQgU2Ny
b2xsQW5pbWF0b3JHZW5lcmljOjplbnN1cmVTbW9vdGhTY3JvbGxpbmdBbmltYXRpb24oKQogewot
ICAgIGlmIChtX3Ntb290aEFuaW1hdGlvbikKKyAgICBpZiAobV9zbW9vdGhBbmltYXRpb24pIHsK
KyAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnNldEN1cnJlbnRQb3NpdGlvbihtX2N1cnJlbnRQ
b3NpdGlvbik7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBtX3Ntb290aEFuaW1hdGlv
biA9IG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0aW9uU21vb3RoPigKICAgICAgICAgW3RoaXNdKCkg
LT4gU2Nyb2xsRXh0ZW50cyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJF
dmVudENvbnZlcnNpb24uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViRXZlbnRDb252ZXJz
aW9uLmNwcAppbmRleCAyZGUyNjAxNTU5NWEzODNmYjNiMTdlYWY3NDZkMjk2ZjZlOTk4ODdhLi4w
ZmI5OWM3YTllNjRmYjhhNmQ4ODI1YjNhZmIyMDY0ZjgwNTA1YjQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJFdmVudENvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkV2ZW50Q29udmVyc2lvbi5jcHAKQEAgLTE2NCw4ICsxNjQsMTAgQEAgcHVi
bGljOgogICAgICAgICBtX3BoYXNlID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6UGxhdGZvcm1XaGVl
bEV2ZW50UGhhc2U+KHdlYkV2ZW50LnBoYXNlKCkpOwogICAgICAgICBtX21vbWVudHVtUGhhc2Ug
PSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZT4od2ViRXZlbnQu
bW9tZW50dW1QaGFzZSgpKTsKICNlbmRpZgotI2lmIFBMQVRGT1JNKENPQ09BKQorI2lmIFBMQVRG
T1JNKENPQ09BKSB8fCBQTEFURk9STShHVEspIHx8IFVTRShMSUJXUEUpCiAgICAgICAgIG1faGFz
UHJlY2lzZVNjcm9sbGluZ0RlbHRhcyA9IHdlYkV2ZW50Lmhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0
YXMoKTsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICBtX3Njcm9sbENvdW50
ID0gd2ViRXZlbnQuc2Nyb2xsQ291bnQoKTsKICAgICAgICAgbV91bmFjY2VsZXJhdGVkU2Nyb2xs
aW5nRGVsdGFYID0gd2ViRXZlbnQudW5hY2NlbGVyYXRlZFNjcm9sbGluZ0RlbHRhKCkud2lkdGgo
KTsKICAgICAgICAgbV91bmFjY2VsZXJhdGVkU2Nyb2xsaW5nRGVsdGFZID0gd2ViRXZlbnQudW5h
Y2NlbGVyYXRlZFNjcm9sbGluZ0RlbHRhKCkuaGVpZ2h0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJXaGVlbEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YldoZWVsRXZlbnQuY3BwCmluZGV4IDlkNzI1ZWRiNjcyMTRjZGMxYzg1NjRmYmZhMWNjMTQ4YjIy
OWQ3N2QuLmMwM2ZlMjNlYmQ3ZWFjNjM4NTFlYzBhZTlhM2JkZmJkMTY5Zjg5YWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYldoZWVsRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYldoZWVsRXZlbnQuY3BwCkBAIC02MSw3ICs2MSw3IEBAIFdlYldoZWVs
RXZlbnQ6OldlYldoZWVsRXZlbnQoVHlwZSB0eXBlLCBjb25zdCBJbnRQb2ludCYgcG9zaXRpb24s
IGNvbnN0IEludFBvaW50CiAgICAgQVNTRVJUKGlzV2hlZWxFdmVudFR5cGUodHlwZSkpOwogfQog
I2VsaWYgUExBVEZPUk0oR1RLKSB8fCBVU0UoTElCV1BFKQotV2ViV2hlZWxFdmVudDo6V2ViV2hl
ZWxFdmVudChUeXBlIHR5cGUsIGNvbnN0IEludFBvaW50JiBwb3NpdGlvbiwgY29uc3QgSW50UG9p
bnQmIGdsb2JhbFBvc2l0aW9uLCBjb25zdCBGbG9hdFNpemUmIGRlbHRhLCBjb25zdCBGbG9hdFNp
emUmIHdoZWVsVGlja3MsIFBoYXNlIHBoYXNlLCBQaGFzZSBtb21lbnR1bVBoYXNlLCBHcmFudWxh
cml0eSBncmFudWxhcml0eSwgT3B0aW9uU2V0PE1vZGlmaWVyPiBtb2RpZmllcnMsIFdhbGxUaW1l
IHRpbWVzdGFtcCkKK1dlYldoZWVsRXZlbnQ6OldlYldoZWVsRXZlbnQoVHlwZSB0eXBlLCBjb25z
dCBJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgY29u
c3QgRmxvYXRTaXplJiBkZWx0YSwgY29uc3QgRmxvYXRTaXplJiB3aGVlbFRpY2tzLCBQaGFzZSBw
aGFzZSwgUGhhc2UgbW9tZW50dW1QaGFzZSwgR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGJvb2wg
aGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcywgT3B0aW9uU2V0PE1vZGlmaWVyPiBtb2RpZmllcnMs
IFdhbGxUaW1lIHRpbWVzdGFtcCkKICAgICA6IFdlYkV2ZW50KHR5cGUsIG1vZGlmaWVycywgdGlt
ZXN0YW1wKQogICAgICwgbV9wb3NpdGlvbihwb3NpdGlvbikKICAgICAsIG1fZ2xvYmFsUG9zaXRp
b24oZ2xvYmFsUG9zaXRpb24pCkBAIC03MCw2ICs3MCw3IEBAIFdlYldoZWVsRXZlbnQ6OldlYldo
ZWVsRXZlbnQoVHlwZSB0eXBlLCBjb25zdCBJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0IEludFBv
aW50CiAgICAgLCBtX2dyYW51bGFyaXR5KGdyYW51bGFyaXR5KQogICAgICwgbV9waGFzZShwaGFz
ZSkKICAgICAsIG1fbW9tZW50dW1QaGFzZShtb21lbnR1bVBoYXNlKQorICAgICwgbV9oYXNQcmVj
aXNlU2Nyb2xsaW5nRGVsdGFzKGhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMpCiB7CiAgICAgQVNT
RVJUKGlzV2hlZWxFdmVudFR5cGUodHlwZSkpOwogfQpAQCAtODgsOSArODksOSBAQCB2b2lkIFdl
YldoZWVsRXZlbnQ6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAjaWYgUExB
VEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykgfHwgVVNFKExJQldQRSkKICAgICBlbmNvZGVy
IDw8IG1fcGhhc2U7CiAgICAgZW5jb2RlciA8PCBtX21vbWVudHVtUGhhc2U7CisgICAgZW5jb2Rl
ciA8PCBtX2hhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXM7CiAjZW5kaWYKICNpZiBQTEFURk9STShD
T0NPQSkKLSAgICBlbmNvZGVyIDw8IG1faGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhczsKICAgICBl
bmNvZGVyIDw8IG1fc2Nyb2xsQ291bnQ7CiAgICAgZW5jb2RlciA8PCBtX3VuYWNjZWxlcmF0ZWRT
Y3JvbGxpbmdEZWx0YTsKICNlbmRpZgpAQCAtMTE3LDEwICsxMTgsMTAgQEAgYm9vbCBXZWJXaGVl
bEV2ZW50OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBXZWJXaGVlbEV2ZW50JiB0KQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0Lm1fbW9tZW50
dW1QaGFzZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodC5tX2hhc1ByZWNpc2VTY3JvbGxpbmdEZWx0
YXMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKyNpZiBQTEFURk9STShDT0NPQSkK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHQubV9zY3JvbGxDb3VudCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHQubV91bmFjY2VsZXJhdGVkU2Nyb2xs
aW5nRGVsdGEpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViV2hlZWxFdmVu
dC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViV2hlZWxFdmVudC5oCmluZGV4IDYwOTY3MDY0
MDNmY2M3MDk3NjQzMDJmZmYxNDU5MDFmYjQxY2NjMWUuLmUwOTFkYjhmYjkwYzM5OTVkMDQ3ZDQ5
MTZlNTQ4MzE3NzBjZGM1NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYldo
ZWVsRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJXaGVlbEV2ZW50LmgKQEAg
LTU1LDcgKzU1LDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFdlYldoZWVs
RXZlbnQoVHlwZSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYg
ZGVsdGEsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgd2hlZWxUaWNrcywgR3JhbnVsYXJpdHks
IGJvb2wgZGlyZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlLCBQaGFzZSwgUGhhc2UgbW9tZW50dW1Q
aGFzZSwgYm9vbCBoYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzLCB1aW50MzJfdCBzY3JvbGxDb3Vu
dCwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiB1bmFjY2VsZXJhdGVkU2Nyb2xsaW5nRGVsdGEs
IE9wdGlvblNldDxNb2RpZmllcj4sIFdhbGxUaW1lIHRpbWVzdGFtcCk7CiAjZWxpZiBQTEFURk9S
TShHVEspIHx8IFVTRShMSUJXUEUpCi0gICAgV2ViV2hlZWxFdmVudChUeXBlLCBjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBnbG9iYWxQ
b3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBkZWx0YSwgY29uc3QgV2ViQ29yZTo6
RmxvYXRTaXplJiB3aGVlbFRpY2tzLCBQaGFzZSwgUGhhc2UgbW9tZW50dW1QaGFzZSwgR3JhbnVs
YXJpdHksIE9wdGlvblNldDxNb2RpZmllcj4sIFdhbGxUaW1lIHRpbWVzdGFtcCk7CisgICAgV2Vi
V2hlZWxFdmVudChUeXBlLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6RmxvYXRT
aXplJiBkZWx0YSwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiB3aGVlbFRpY2tzLCBQaGFzZSwg
UGhhc2UgbW9tZW50dW1QaGFzZSwgR3JhbnVsYXJpdHksIGJvb2wgaGFzUHJlY2lzZVNjcm9sbGlu
Z0RlbHRhcywgT3B0aW9uU2V0PE1vZGlmaWVyPiwgV2FsbFRpbWUgdGltZXN0YW1wKTsKICNlbmRp
ZgogCiAgICAgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgcG9zaXRpb24oKSBjb25zdCB7IHJldHVy
biBtX3Bvc2l0aW9uOyB9CkBAIC02Niw4ICs2NiwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBkaXJl
Y3Rpb25JbnZlcnRlZEZyb21EZXZpY2UoKSBjb25zdCB7IHJldHVybiBtX2RpcmVjdGlvbkludmVy
dGVkRnJvbURldmljZTsgfQogICAgIFBoYXNlIHBoYXNlKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8UGhhc2U+KG1fcGhhc2UpOyB9CiAgICAgUGhhc2UgbW9tZW50dW1QaGFzZSgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PFBoYXNlPihtX21vbWVudHVtUGhhc2UpOyB9Ci0jaWYgUExB
VEZPUk0oQ09DT0EpCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykgfHwgVVNF
KExJQldQRSkKICAgICBib29sIGhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMoKSBjb25zdCB7IHJl
dHVybiBtX2hhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXM7IH0KKyNlbmRpZgorI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIHVpbnQzMl90IHNjcm9sbENvdW50KCkgY29uc3QgeyByZXR1cm4gbV9zY3Jv
bGxDb3VudDsgfQogICAgIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgdW5hY2NlbGVyYXRlZFNj
cm9sbGluZ0RlbHRhKCkgY29uc3QgeyByZXR1cm4gbV91bmFjY2VsZXJhdGVkU2Nyb2xsaW5nRGVs
dGE7IH0KICNlbmRpZgpAQCAtODYsOCArODgsMTAgQEAgcHJpdmF0ZToKICAgICB1aW50MzJfdCBt
X3BoYXNlIHsgUGhhc2U6OlBoYXNlTm9uZSB9OwogICAgIHVpbnQzMl90IG1fbW9tZW50dW1QaGFz
ZSB7IFBoYXNlOjpQaGFzZU5vbmUgfTsKICAgICBib29sIG1fZGlyZWN0aW9uSW52ZXJ0ZWRGcm9t
RGV2aWNlIHsgZmFsc2UgfTsKLSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBQTEFURk9STShDT0NP
QSkgfHwgUExBVEZPUk0oR1RLKSB8fCBVU0UoTElCV1BFKQogICAgIGJvb2wgbV9oYXNQcmVjaXNl
U2Nyb2xsaW5nRGVsdGFzIHsgZmFsc2UgfTsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIHVpbnQzMl90IG1fc2Nyb2xsQ291bnQgeyAwIH07CiAgICAgV2ViQ29yZTo6RmxvYXRTaXpl
IG1fdW5hY2NlbGVyYXRlZFNjcm9sbGluZ0RlbHRhOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJXaGVlbEV2ZW50Q29hbGVzY2VyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYldoZWVsRXZlbnRDb2FsZXNjZXIuY3BwCmluZGV4IDU1OTU5ZGUzNWMzODc5
ZGYzY2U0MzFkM2RkN2E3ZTc3Y2U5ZTg5NmIuLjEyMGRiMDYyNTA1ZDhmN2RhM2M0M2U5Njg0MDIx
ZTA4OTFiYWJkZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYldoZWVsRXZl
bnRDb2FsZXNjZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYldoZWVsRXZlbnRD
b2FsZXNjZXIuY3BwCkBAIC01OSw2ICs1OSw4IEBAIGJvb2wgV2ViV2hlZWxFdmVudENvYWxlc2Nl
cjo6Y2FuQ29hbGVzY2UoY29uc3QgV2ViV2hlZWxFdmVudCYgYSwgY29uc3QgV2ViV2hlZWxFCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoYS5tb21lbnR1bVBoYXNlKCkgIT0gYi5tb21l
bnR1bVBoYXNlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorI2lmIFBMQVRGT1JN
KENPQ09BKSB8fCBQTEFURk9STShHVEspIHx8IFVTRShMSUJXUEUpCiAgICAgaWYgKGEuaGFzUHJl
Y2lzZVNjcm9sbGluZ0RlbHRhcygpICE9IGIuaGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcygpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKQEAgLTc3LDYgKzc5LDggQEAgV2ViV2hlZWxF
dmVudCBXZWJXaGVlbEV2ZW50Q29hbGVzY2VyOjpjb2FsZXNjZShjb25zdCBXZWJXaGVlbEV2ZW50
JiBhLCBjb25zdCBXZWIKICAgICBhdXRvIG1lcmdlZFVuYWNjZWxlcmF0ZWRTY3JvbGxpbmdEZWx0
YSA9IGEudW5hY2NlbGVyYXRlZFNjcm9sbGluZ0RlbHRhKCkgKyBiLnVuYWNjZWxlcmF0ZWRTY3Jv
bGxpbmdEZWx0YSgpOwogCiAgICAgcmV0dXJuIFdlYldoZWVsRXZlbnQoV2ViRXZlbnQ6OldoZWVs
LCBiLnBvc2l0aW9uKCksIGIuZ2xvYmFsUG9zaXRpb24oKSwgbWVyZ2VkRGVsdGEsIG1lcmdlZFdo
ZWVsVGlja3MsIGIuZ3JhbnVsYXJpdHkoKSwgYi5kaXJlY3Rpb25JbnZlcnRlZEZyb21EZXZpY2Uo
KSwgYi5waGFzZSgpLCBiLm1vbWVudHVtUGhhc2UoKSwgYi5oYXNQcmVjaXNlU2Nyb2xsaW5nRGVs
dGFzKCksIGIuc2Nyb2xsQ291bnQoKSwgbWVyZ2VkVW5hY2NlbGVyYXRlZFNjcm9sbGluZ0RlbHRh
LCBiLm1vZGlmaWVycygpLCBiLnRpbWVzdGFtcCgpKTsKKyNlbGlmIFBMQVRGT1JNKEdUSykgfHwg
VVNFKExJQldQRSkKKyAgICByZXR1cm4gV2ViV2hlZWxFdmVudChXZWJFdmVudDo6V2hlZWwsIGIu
cG9zaXRpb24oKSwgYi5nbG9iYWxQb3NpdGlvbigpLCBtZXJnZWREZWx0YSwgbWVyZ2VkV2hlZWxU
aWNrcywgYi5waGFzZSgpLCBiLm1vbWVudHVtUGhhc2UoKSwgYi5ncmFudWxhcml0eSgpLCBiLmhh
c1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMoKSwgYi5tb2RpZmllcnMoKSwgYi50aW1lc3RhbXAoKSk7
CiAjZWxzZQogICAgIHJldHVybiBXZWJXaGVlbEV2ZW50KFdlYkV2ZW50OjpXaGVlbCwgYi5wb3Np
dGlvbigpLCBiLmdsb2JhbFBvc2l0aW9uKCksIG1lcmdlZERlbHRhLCBtZXJnZWRXaGVlbFRpY2tz
LCBiLmdyYW51bGFyaXR5KCksIGIubW9kaWZpZXJzKCksIGIudGltZXN0YW1wKCkpOwogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvTmF0aXZlV2ViV2hlZWxFdmVu
dEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvTmF0aXZlV2ViV2hlZWxFdmVudEd0
ay5jcHAKaW5kZXggNmU5NTY3YzRiOTVhYzg2NjAwNmYzNGMwZDk0MzE4YTM2MWJiMWY3Zi4uNDg4
ZmJlYzkzOTFkNDRlNmIxYzJmYmJkNGU5NWU0YzdlNmE1YWJmMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvZ3RrL05hdGl2ZVdlYldoZWVsRXZlbnRHdGsuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL2d0ay9OYXRpdmVXZWJXaGVlbEV2ZW50R3RrLmNwcApAQCAtNTAsMTIg
KzUwLDEyIEBAIE5hdGl2ZVdlYldoZWVsRXZlbnQ6Ok5hdGl2ZVdlYldoZWVsRXZlbnQoR2RrRXZl
bnQqIGV2ZW50LCBjb25zdCBXZWJDb3JlOjpJbnRQb2luCiB9CiAKIE5hdGl2ZVdlYldoZWVsRXZl
bnQ6Ok5hdGl2ZVdlYldoZWVsRXZlbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvc2l0aW9u
LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6
OkZsb2F0U2l6ZSYgZGVsdGEsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgd2hlZWxUaWNrcywg
V2ViV2hlZWxFdmVudDo6UGhhc2UgcGhhc2UsIFdlYldoZWVsRXZlbnQ6OlBoYXNlIG1vbWVudHVt
UGhhc2UpCi0gICAgOiBXZWJXaGVlbEV2ZW50KFdlYkV2ZW50OjpXaGVlbCwgcG9zaXRpb24sIGds
b2JhbFBvc2l0aW9uLCBkZWx0YSwgd2hlZWxUaWNrcywgcGhhc2UsIG1vbWVudHVtUGhhc2UsIFdl
YldoZWVsRXZlbnQ6OlNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50LCB7IH0sIFdhbGxUaW1lOjpub3co
KSkKKyAgICA6IFdlYldoZWVsRXZlbnQoV2ViRXZlbnQ6OldoZWVsLCBwb3NpdGlvbiwgZ2xvYmFs
UG9zaXRpb24sIGRlbHRhLCB3aGVlbFRpY2tzLCBwaGFzZSwgbW9tZW50dW1QaGFzZSwgV2ViV2hl
ZWxFdmVudDo6U2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQsIGZhbHNlLCB7IH0sIFdhbGxUaW1lOjpu
b3coKSkKIHsKIH0KIAogTmF0aXZlV2ViV2hlZWxFdmVudDo6TmF0aXZlV2ViV2hlZWxFdmVudChj
b25zdCBOYXRpdmVXZWJXaGVlbEV2ZW50JiBldmVudCkKLSAgICA6IFdlYldoZWVsRXZlbnQoZXZl
bnQudHlwZSgpLCBldmVudC5wb3NpdGlvbigpLCBldmVudC5nbG9iYWxQb3NpdGlvbigpLCBldmVu
dC5kZWx0YSgpLCBldmVudC53aGVlbFRpY2tzKCksIGV2ZW50LnBoYXNlKCksIGV2ZW50Lm1vbWVu
dHVtUGhhc2UoKSwgZXZlbnQuZ3JhbnVsYXJpdHkoKSwgZXZlbnQubW9kaWZpZXJzKCksIGV2ZW50
LnRpbWVzdGFtcCgpKQorICAgIDogV2ViV2hlZWxFdmVudChldmVudC50eXBlKCksIGV2ZW50LnBv
c2l0aW9uKCksIGV2ZW50Lmdsb2JhbFBvc2l0aW9uKCksIGV2ZW50LmRlbHRhKCksIGV2ZW50Lndo
ZWVsVGlja3MoKSwgZXZlbnQucGhhc2UoKSwgZXZlbnQubW9tZW50dW1QaGFzZSgpLCBldmVudC5n
cmFudWxhcml0eSgpLCBldmVudC5oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzKCksIGV2ZW50Lm1v
ZGlmaWVycygpLCBldmVudC50aW1lc3RhbXAoKSkKICAgICAsIG1fbmF0aXZlRXZlbnQoZXZlbnQu
bmF0aXZlRXZlbnQoKSA/IGdka19ldmVudF9jb3B5KGV2ZW50Lm5hdGl2ZUV2ZW50KCkpIDogbnVs
bHB0cikKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9XZWJFdmVu
dEZhY3RvcnkuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5j
cHAKaW5kZXggY2M5N2MyMTdiYTJlZjM5MDdlNjkyZjA3MzlhMmZjMDZhZTgxZjk2OS4uY2E1Y2U0
OGE4OTlkNTk5OGFhMTkzNDUzZWZmNjJjMjYwMTVmMTcyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5jcHAKQEAgLTI4OCw2ICsyODgsNyBAQCBXZWJXaGVl
bEV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViV2hlZWxFdmVudChjb25zdCBHZGtFdmVu
dCogZXZlbnQsIGNvbnN0CiAgICAgICAgIHBoYXNlLAogICAgICAgICBtb21lbnR1bVBoYXNlLAog
ICAgICAgICBXZWJXaGVlbEV2ZW50OjpTY3JvbGxCeVBpeGVsV2hlZWxFdmVudCwKKyAgICAgICAg
ZmFsc2UsCiAgICAgICAgIG1vZGlmaWVyc0ZvckV2ZW50KGV2ZW50KSwKICAgICAgICAgd2FsbFRp
bWVGb3JFdmVudChldmVudCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
bGlid3BlL1dlYkV2ZW50RmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9saWJ3cGUv
V2ViRXZlbnRGYWN0b3J5LmNwcAppbmRleCBmOGE5NzE1M2Q5ZDRkMmUwZDFmMWIzYmE5YjI2NDYw
YWQ5MzU0M2Q2Li5iMDQwMWJmNzExOTk0OTBiNTk2MWIwMGE0OWU0ZDQ5ODVmOWZlZWRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9saWJ3cGUvV2ViRXZlbnRGYWN0b3J5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9saWJ3cGUvV2ViRXZlbnRGYWN0b3J5LmNwcApAQCAt
MTY0LDYgKzE2NCw3IEBAIFdlYldoZWVsRXZlbnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJX
aGVlbEV2ZW50KHN0cnVjdCB3cGVfaW5wdXRfYXhpc19ldmVudCoKIAogICAgIFdlYkNvcmU6OkZs
b2F0U2l6ZSB3aGVlbFRpY2tzOwogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBkZWx0YTsKKyAgICBi
b29sIGhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMgPSBmYWxzZTsKIAogI2lmIFdQRV9DSEVDS19W
RVJTSU9OKDEsIDUsIDApCiAgICAgaWYgKGV2ZW50LT50eXBlICYgd3BlX2lucHV0X2F4aXNfZXZl
bnRfdHlwZV9tYXNrXzJkKSB7CkBAIC0xNzcsNiArMTc4LDcgQEAgV2ViV2hlZWxFdmVudCBXZWJF
dmVudEZhY3Rvcnk6OmNyZWF0ZVdlYldoZWVsRXZlbnQoc3RydWN0IHdwZV9pbnB1dF9heGlzX2V2
ZW50KgogICAgICAgICBjYXNlIHdwZV9pbnB1dF9heGlzX2V2ZW50X3R5cGVfbW90aW9uX3Ntb290
aDoKICAgICAgICAgICAgIHdoZWVsVGlja3MgPSBXZWJDb3JlOjpGbG9hdFNpemUoZXZlbnQyRC0+
eF9heGlzIC8gZGV2aWNlU2NhbGVGYWN0b3IsIGV2ZW50MkQtPnlfYXhpcyAvIGRldmljZVNjYWxl
RmFjdG9yKTsKICAgICAgICAgICAgIGRlbHRhID0gd2hlZWxUaWNrczsKKyAgICAgICAgICAgIGhh
c1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gV2ViV2hlZWxFdmVudCgpOwpAQCAtMTg0
LDcgKzE4Niw3IEBAIFdlYldoZWVsRXZlbnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJXaGVl
bEV2ZW50KHN0cnVjdCB3cGVfaW5wdXRfYXhpc19ldmVudCoKIAogICAgICAgICByZXR1cm4gV2Vi
V2hlZWxFdmVudChXZWJFdmVudDo6V2hlZWwsIHBvc2l0aW9uLCBwb3NpdGlvbiwKICAgICAgICAg
ICAgIGRlbHRhLCB3aGVlbFRpY2tzLCBwaGFzZSwgbW9tZW50dW1QaGFzZSwKLSAgICAgICAgICAg
IFdlYldoZWVsRXZlbnQ6OlNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50LAorICAgICAgICAgICAgV2Vi
V2hlZWxFdmVudDo6U2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQsIGhhc1ByZWNpc2VTY3JvbGxpbmdE
ZWx0YXMsCiAgICAgICAgICAgICBPcHRpb25TZXQ8V2ViRXZlbnQ6Ok1vZGlmaWVyPiB7IH0sIHdh
bGxUaW1lRm9yRXZlbnRUaW1lKGV2ZW50LT50aW1lKSk7CiAgICAgfQogI2VuZGlmCkBAIC0yMTAs
NiArMjEyLDcgQEAgV2ViV2hlZWxFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYldoZWVs
RXZlbnQoc3RydWN0IHdwZV9pbnB1dF9heGlzX2V2ZW50KgogICAgIGNhc2UgU21vb3RoOgogICAg
ICAgICB3aGVlbFRpY2tzID0gV2ViQ29yZTo6RmxvYXRTaXplKDAsIGV2ZW50LT52YWx1ZSAvIGRl
dmljZVNjYWxlRmFjdG9yKTsKICAgICAgICAgZGVsdGEgPSB3aGVlbFRpY2tzOworICAgICAgICBo
YXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVm
YXVsdDoKICAgICAgICAgcmV0dXJuIFdlYldoZWVsRXZlbnQoKTsKQEAgLTIxNyw3ICsyMjAsNyBA
QCBXZWJXaGVlbEV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViV2hlZWxFdmVudChzdHJ1
Y3Qgd3BlX2lucHV0X2F4aXNfZXZlbnQqCiAKICAgICByZXR1cm4gV2ViV2hlZWxFdmVudChXZWJF
dmVudDo6V2hlZWwsIHBvc2l0aW9uLCBwb3NpdGlvbiwKICAgICAgICAgZGVsdGEsIHdoZWVsVGlj
a3MsIHBoYXNlLCBtb21lbnR1bVBoYXNlLAotICAgICAgICBXZWJXaGVlbEV2ZW50OjpTY3JvbGxC
eVBpeGVsV2hlZWxFdmVudCwKKyAgICAgICAgV2ViV2hlZWxFdmVudDo6U2Nyb2xsQnlQaXhlbFdo
ZWVsRXZlbnQsIGhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMsCiAgICAgICAgIE9wdGlvblNldDxX
ZWJFdmVudDo6TW9kaWZpZXI+IHsgfSwgd2FsbFRpbWVGb3JFdmVudFRpbWUoZXZlbnQtPnRpbWUp
KTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411425</attachid>
            <date>2020-10-15 04:10:05 -0700</date>
            <delta_ts>2020-10-15 06:11:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210382-20201015121003.patch</filename>
            <type>text/plain</type>
            <size>43563</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4Mzg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWI2ZGMyNTExMWFmYjdh
ZTlhNDI0MDFmYTU4MTg1NjFkYzMyOTI1MS4uN2U5OGRmNDgxYWRiYzcwNTBlYmFhYTUwYThlZjlj
NzcyM2IwNzExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDIwLTEwLTEzICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIEFkZCBzdXBw
b3J0IGZvciBzbW9vdGggc2Nyb2xsaW5nIGFuaW1hdGlvbiB3aXRoIGFzeW5jIHNjcm9sbGluZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMzgyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVzcGVjdCBz
bW9vdGgtc2Nyb2xsaW5nIHNldHRpbmcgYW5kIGZpeCBkZWFkbG9jayBpc3N1ZXMgd2l0aCBhc3lu
YworICAgICAgICBzY3JvbGxpbmcgb24gbmljb3NpYSBwYXRoLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cywgbm8gZnVuY3Rpb25hbCBjaGFuZ2UuCisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9B
c3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jU2Ny
b2xsaW5nQ29vcmRpbmF0b3I6OnNjcm9sbEFuaW1hdG9yRW5hYmxlZCBjb25zdCk6CisgICAgICAg
ICogcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5oOgorICAgICAgICAq
IHBhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUaHJlYWRlZFNjcm9sbGluZ1RyZWU6OlRocmVhZGVkU2Nyb2xsaW5nVHJlZSk6CisgICAg
ICAgICogcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpUaHJlYWRlZFNjcm9sbGluZ1RyZWU6OnNjcm9sbEFuaW1hdG9yRW5hYmxlZCBjb25z
dCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlTmljb3NpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVl
RnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9k
ZU5pY29zaWEpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5n
Tm9kZU5pY29zaWE6OmNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYTo6ZW5zdXJlU2Nyb2xsQW5p
bWF0aW9uS2luZXRpYyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlTmljb3NpYTo6ZW5zdXJlU2Nyb2xsQW5pbWF0aW9uU21vb3RoKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjpoYW5kbGVX
aGVlbEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGlu
Z05vZGVOaWNvc2lhOjpzdG9wU2Nyb2xsQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYTo6cmVwb3NpdGlvblJlbGF0ZWRM
YXllcnMpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9uaWNv
c2lhL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhOjpT
Y3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYSk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYTo6Y29tbWl0U3Rh
dGVBZnRlckNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVPdmVyZmxv
d1Njcm9sbGluZ05vZGVOaWNvc2lhOjpyZXBvc2l0aW9uU2Nyb2xsaW5nTGF5ZXJzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhOjpl
bnN1cmVTY3JvbGxBbmltYXRpb25LaW5ldGljKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhOjplbnN1cmVTY3JvbGxBbmltYXRpb25T
bW9vdGgpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5n
Tm9kZU5pY29zaWE6OmhhbmRsZVdoZWVsRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
aW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWE6OnN0b3BTY3JvbGxBbmltYXRpb25z
KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVPdmVyZmxv
d1Njcm9sbGluZ05vZGVOaWNvc2lhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1XaGVl
bEV2ZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uLmg6CisgICAgICAg
ICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxBbmltYXRpb25LaW5ldGljOjppc0FjdGl2ZSBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5oOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9s
bEFuaW1hdGlvblNtb290aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25T
bW9vdGg6OnNjcm9sbCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25TbW9vdGg6
OmlzQWN0aXZlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9v
dGguaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvckdlbmVyaWM6OmVuc3VyZVNtb290
aFNjcm9sbGluZ0FuaW1hdGlvbik6CisKIDIwMjAtMTAtMTMgIEtpbW1vIEtpbm51bmVuICA8a2tp
bm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBDb2NvYTogTWFrZSBXZWJHTExheWVyIG5vdCBk
ZXBlbmRlbnQgb24gIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGIzOTAzMDNm
ZDAxNTFiZjU3ZWEzMTkxZjIyZWVhMmRlZGRkODIwNGEuLjllNTQwZWMyMDBiZDRjZjA3NDJkNWU4
MDlhMDMyMjllNDVmMmU0OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjAtMTAtMTMg
IENocmlzIExvcmQgIDxjbG9yZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dQRV0gQWRk
IHN1cHBvcnQgZm9yIHNtb290aCBzY3JvbGxpbmcgYW5pbWF0aW9uIHdpdGggYXN5bmMgc2Nyb2xs
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTAz
ODIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
aGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcyB0byBHVEsvV1BFIHdoZWVsIGV2ZW50cy4KKworICAg
ICAgICBObyBuZXcgdGVzdHMgbmVlZGVkLgorCisgICAgICAgICogU2hhcmVkL1dlYkV2ZW50Q29u
dmVyc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYktpdDJQbGF0Zm9ybVdoZWVsRXZlbnQ6
OldlYktpdDJQbGF0Zm9ybVdoZWVsRXZlbnQpOgorICAgICAgICAqIFNoYXJlZC9XZWJXaGVlbEV2
ZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViV2hlZWxFdmVudDo6V2ViV2hlZWxFdmVudCk6
CisgICAgICAgIChXZWJLaXQ6OldlYldoZWVsRXZlbnQ6OmVuY29kZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYldoZWVsRXZlbnQ6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYldo
ZWVsRXZlbnQuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViV2hlZWxFdmVudENvYWxlc2Nlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYldoZWVsRXZlbnRDb2FsZXNjZXI6OmNhbkNvYWxlc2NlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViV2hlZWxFdmVudENvYWxlc2Nlcjo6Y29hbGVzY2UpOgorICAg
ICAgICAqIFNoYXJlZC9ndGsvTmF0aXZlV2ViV2hlZWxFdmVudEd0ay5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5hdGl2ZVdlYldoZWVsRXZlbnQ6Ok5hdGl2ZVdlYldoZWVsRXZlbnQpOgorICAgICAg
ICAqIFNoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
RXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJXaGVlbEV2ZW50KToKKyAgICAgICAgKiBTaGFyZWQvbGli
d3BlL1dlYkV2ZW50RmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkV2ZW50RmFjdG9y
eTo6Y3JlYXRlV2ViV2hlZWxFdmVudCk6CisKIDIwMjAtMTAtMTMgIEtpbW1vIEtpbm51bmVuICA8
a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBDb2NvYTogTWFrZSBXZWJHTExheWVyIG5v
dCBkZXBlbmRlbnQgb24gIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3Iu
Y3BwCmluZGV4IGYxMzkyMzcxYmRiMjMzMzU4ZTNiNDUzZTUzNWViMzljMmU5OGQ3OTguLjMwMzc5
MDA2ZTM2ZDA0ZGZjMTM0MTcxZjI3NzQwNmU5N2FmMDI0YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3Iu
Y3BwCkBAIC05NTcsNiArOTU3LDE1IEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6
cmVwb3J0U3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zQ2hhbmdlZChNb25vdG9uCiAgICAgICAg
IG1fcGFnZS0+cGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50KCktPmxvZ1Njcm9sbGluZ0V2ZW50KFBl
cmZvcm1hbmNlTG9nZ2luZ0NsaWVudDo6U2Nyb2xsaW5nRXZlbnQ6OlN3aXRjaGVkU2Nyb2xsaW5n
TW9kZSwgdGltZXN0YW1wLCByZWFzb25zLnRvUmF3KCkpOwogfQogCisjaWYgRU5BQkxFKFNNT09U
SF9TQ1JPTExJTkcpCitib29sIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNjcm9sbEFuaW1h
dG9yRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBh
dXRvJiBzZXR0aW5ncyA9IG1fcGFnZS0+bWFpbkZyYW1lKCkuc2V0dGluZ3MoKTsKKyAgICByZXR1
cm4gc2V0dGluZ3Muc2Nyb2xsQW5pbWF0b3JFbmFibGVkKCk7Cit9CisjZW5kaWYKKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29v
cmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuaAppbmRleCA5MGQxYzI5ZGMxYjA5OGQ3M2U1YjNmOTI3MGU5ZWU4MjI4ZGUx
YTE3Li41NjY3OGI3YzNhOTQ4MGIwZjZjMTE0ZGY3Y2M3YzZjZTFiYWZiYTc3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9y
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29y
ZGluYXRvci5oCkBAIC03MSw2ICs3MSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXBvcnRFeHBv
c2VkVW5maWxsZWRBcmVhKE1vbm90b25pY1RpbWUsIHVuc2lnbmVkIHVuZmlsbGVkQXJlYSk7CiAg
ICAgdm9pZCByZXBvcnRTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnNDaGFuZ2VkKE1vbm90b25p
Y1RpbWUsIE9wdGlvblNldDxTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbj4pOwogCisjaWYgRU5B
QkxFKFNNT09USF9TQ1JPTExJTkcpCisgICAgYm9vbCBzY3JvbGxBbmltYXRvckVuYWJsZWQoKSBj
b25zdDsKKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09SRV9FWFBPUlQgQXN5bmNTY3Jv
bGxpbmdDb29yZGluYXRvcihQYWdlKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuY3BwCmluZGV4IDIzZjVmMGVmZjA1
NTg4YWYyODBiODZkOTdlNGMyYmJkZDFlYzJlMmIuLmE5YTliNTllOTlkODU2NDkzYmQ3NWZmMGFl
M2Y1YjFlMjk4OGEzOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmNwcApAQCAtNDcsNiArNDcsOSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBUaHJlYWRlZFNjcm9sbGluZ1RyZWU6OlRocmVhZGVkU2Nyb2xsaW5nVHJl
ZShBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yJiBzY3JvbGxpbmdDb29yZGluYXRvcikKICAgICA6
IG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3IoJnNjcm9sbGluZ0Nvb3JkaW5hdG9yKQogeworI2lmIEVO
QUJMRShTTU9PVEhfU0NST0xMSU5HKQorICAgIG1fc2Nyb2xsQW5pbWF0b3JFbmFibGVkID0gc2Ny
b2xsaW5nQ29vcmRpbmF0b3Iuc2Nyb2xsQW5pbWF0b3JFbmFibGVkKCk7CisjZW5kaWYKIH0KIAog
VGhyZWFkZWRTY3JvbGxpbmdUcmVlOjp+VGhyZWFkZWRTY3JvbGxpbmdUcmVlKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmgK
aW5kZXggYjI1ZmYxNGNhMTJjYjI4YTdjYTE5ZjAyYWIxYWZhYzQ4NmE5NTEzZi4uNzc3YjVjNTU2
MzA4N2JmOWIyMDU5OGI3OWVjNjExOTNmNDdkZmViNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmgKQEAgLTU4LDYgKzU4
LDggQEAgcHVibGljOgogCiAgICAgTG9jayYgdHJlZU11dGV4KCkgeyByZXR1cm4gbV90cmVlTXV0
ZXg7IH0KIAorICAgIGJvb2wgc2Nyb2xsQW5pbWF0b3JFbmFibGVkKCkgY29uc3QgeyByZXR1cm4g
bV9zY3JvbGxBbmltYXRvckVuYWJsZWQ7IH0KKwogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IFRo
cmVhZGVkU2Nyb2xsaW5nVHJlZShBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yJik7CiAKQEAgLTEw
Myw2ICsxMDUsOCBAQCBwcml2YXRlOgogCiAgICAgLy8gRHluYW1pY2FsbHkgYWxsb2NhdGVkIGJl
Y2F1c2UgaXQgaGFzIHRvIHVzZSB0aGUgU2Nyb2xsaW5nVGhyZWFkJ3MgcnVubG9vcC4KICAgICBz
dGQ6OnVuaXF1ZV9wdHI8UnVuTG9vcDo6VGltZXI8VGhyZWFkZWRTY3JvbGxpbmdUcmVlPj4gbV9k
ZWxheWVkUmVuZGVyaW5nVXBkYXRlRGV0ZWN0aW9uVGltZXI7CisKKyAgICBib29sIG1fc2Nyb2xs
QW5pbWF0b3JFbmFibGVkIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xs
aW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3Np
YS5jcHAKaW5kZXggMDhiNWU1ZTRmNmYwZjU5Zjk4YjUyMGIyOGM5OTg1ZDNiMTVjMDU5Ny4uNTYy
Y2Q4NjgxMTlhMGZjZTI5MTM0NTNlMGFlOTZkNDE5N2VjYzQwNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxp
bmdOb2RlTmljb3NpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmlj
b3NpYS9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYS5jcHAKQEAgLTM1LDcg
KzM1LDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmljb3NpYVBsYXRmb3Jt
TGF5ZXIuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZS5oIgot
I2luY2x1ZGUgIlNjcm9sbGluZ1RyZWUuaCIKKyNpbmNsdWRlICJUaHJlYWRlZFNjcm9sbGluZ1Ry
ZWUuaCIKIAogI2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykKICNpbmNsdWRlICJTY3JvbGxB
bmltYXRpb25LaW5ldGljLmgiCkBAIC01NCw0MCArNTQsNyBAQCBSZWY8U2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZT4gU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWE6
OmNyZQogU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWE6OlNjcm9sbGluZ1Ry
ZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhKFNjcm9sbGluZ1RyZWUmIHNjcm9sbGluZ1RyZWUs
IFNjcm9sbGluZ05vZGVUeXBlIG5vZGVUeXBlLCBTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQogICAg
IDogU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZShzY3JvbGxpbmdUcmVlLCBub2RlVHlw
ZSwgbm9kZUlEKQogewotI2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykKLSAgICBtX2tpbmV0
aWNBbmltYXRpb24gPSBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlvbktpbmV0aWM+KAotICAgICAg
ICBbdGhpc10oKSAtPiBTY3JvbGxFeHRlbnRzIHsKLSAgICAgICAgICAgIHJldHVybiB7IEludFBv
aW50KG1pbmltdW1TY3JvbGxQb3NpdGlvbigpKSwgSW50UG9pbnQobWF4aW11bVNjcm9sbFBvc2l0
aW9uKCkpLCBJbnRTaXplKHNjcm9sbGFibGVBcmVhU2l6ZSgpKSB9OwotICAgICAgICB9LAotICAg
ICAgICBbdGhpc10oRmxvYXRQb2ludCYmIHBvc2l0aW9uKSB7Ci0jaWYgRU5BQkxFKFNNT09USF9T
Q1JPTExJTkcpCi0gICAgICAgICAgICBtX3Ntb290aEFuaW1hdGlvbi0+c2V0Q3VycmVudFBvc2l0
aW9uKHBvc2l0aW9uKTsKLSNlbmRpZgotCi0gICAgICAgICAgICBhdXRvKiBzY3JvbGxMYXllciA9
IHN0YXRpY19jYXN0PE5pY29zaWE6OlBsYXRmb3JtTGF5ZXIqPihzY3JvbGxlZENvbnRlbnRzTGF5
ZXIoKSk7Ci0gICAgICAgICAgICBBU1NFUlQoc2Nyb2xsTGF5ZXIpOwotICAgICAgICAgICAgYXV0
byYgY29tcG9zaXRpb25MYXllciA9IGRvd25jYXN0PE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+
KCpzY3JvbGxMYXllcik7Ci0KLSAgICAgICAgICAgIGF1dG8gdXBkYXRlU2NvcGUgPSBjb21wb3Np
dGlvbkxheWVyLmNyZWF0ZVVwZGF0ZVNjb3BlKCk7Ci0gICAgICAgICAgICBzY3JvbGxUbyhwb3Np
dGlvbik7Ci0gICAgICAgIH0pOwotI2VuZGlmCi0jaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcp
Ci0gICAgbV9zbW9vdGhBbmltYXRpb24gPSBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlvblNtb290
aD4oCi0gICAgICAgIFt0aGlzXSgpIC0+IFNjcm9sbEV4dGVudHMgewotICAgICAgICAgICAgcmV0
dXJuIHsgSW50UG9pbnQobWluaW11bVNjcm9sbFBvc2l0aW9uKCkpLCBJbnRQb2ludChtYXhpbXVt
U2Nyb2xsUG9zaXRpb24oKSksIEludFNpemUoc2Nyb2xsYWJsZUFyZWFTaXplKCkpIH07Ci0gICAg
ICAgIH0sCi0gICAgICAgIGN1cnJlbnRTY3JvbGxQb3NpdGlvbigpLAotICAgICAgICBbdGhpc10o
RmxvYXRQb2ludCYmIHBvc2l0aW9uKSB7Ci0gICAgICAgICAgICBhdXRvKiBzY3JvbGxMYXllciA9
IHN0YXRpY19jYXN0PE5pY29zaWE6OlBsYXRmb3JtTGF5ZXIqPihzY3JvbGxlZENvbnRlbnRzTGF5
ZXIoKSk7Ci0gICAgICAgICAgICBBU1NFUlQoc2Nyb2xsTGF5ZXIpOwotICAgICAgICAgICAgYXV0
byYgY29tcG9zaXRpb25MYXllciA9IGRvd25jYXN0PE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+
KCpzY3JvbGxMYXllcik7Ci0KLSAgICAgICAgICAgIGF1dG8gdXBkYXRlU2NvcGUgPSBjb21wb3Np
dGlvbkxheWVyLmNyZWF0ZVVwZGF0ZVNjb3BlKCk7Ci0gICAgICAgICAgICBzY3JvbGxUbyhwb3Np
dGlvbik7Ci0gICAgICAgIH0sCi0gICAgICAgIFtdIHsgfSk7Ci0jZW5kaWYKKyAgICBtX3Njcm9s
bEFuaW1hdG9yRW5hYmxlZCA9IGRvd25jYXN0PFRocmVhZGVkU2Nyb2xsaW5nVHJlZT4oc2Nyb2xs
aW5nVHJlZSkuc2Nyb2xsQW5pbWF0b3JFbmFibGVkKCk7CiB9CiAKIFNjcm9sbGluZ1RyZWVGcmFt
ZVNjcm9sbGluZ05vZGVOaWNvc2lhOjp+U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5p
Y29zaWEoKSA9IGRlZmF1bHQ7CkBAIC0xMzYsMTcgKzEwMyw2OCBAQCB2b2lkIFNjcm9sbGluZ1Ry
ZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjpjb21taXRTdGF0ZUFmdGVyQ2hpbGRyZW4oY29u
c3QgU2NybwogICAgICAgICBjb25zdCBhdXRvJiByZXF1ZXN0ZWRTY3JvbGxEYXRhID0gc2Nyb2xs
aW5nU3RhdGVOb2RlLnJlcXVlc3RlZFNjcm9sbERhdGEoKTsKICAgICAgICAgc2Nyb2xsVG8ocmVx
dWVzdGVkU2Nyb2xsRGF0YS5zY3JvbGxQb3NpdGlvbiwgcmVxdWVzdGVkU2Nyb2xsRGF0YS5zY3Jv
bGxUeXBlLCByZXF1ZXN0ZWRTY3JvbGxEYXRhLmNsYW1waW5nKTsKICNpZiBFTkFCTEUoU01PT1RI
X1NDUk9MTElORykKLSAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnNldEN1cnJlbnRQb3NpdGlv
bihjdXJyZW50U2Nyb2xsUG9zaXRpb24oKSk7CisgICAgICAgIGlmIChtX3Ntb290aEFuaW1hdGlv
bikKKyAgICAgICAgICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zZXRDdXJyZW50UG9zaXRpb24oY3Vy
cmVudFNjcm9sbFBvc2l0aW9uKCkpOwogI2VuZGlmCiAgICAgfQogfQogCisjaWYgRU5BQkxFKEtJ
TkVUSUNfU0NST0xMSU5HKQordm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmlj
b3NpYTo6ZW5zdXJlU2Nyb2xsQW5pbWF0aW9uS2luZXRpYygpCit7CisgICAgaWYgKG1fa2luZXRp
Y0FuaW1hdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9raW5ldGljQW5pbWF0aW9uID0g
bWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRpb25LaW5ldGljPigKKyAgICAgICAgW3RoaXNdKCkgLT4g
U2Nyb2xsRXh0ZW50cyB7CisgICAgICAgICAgICByZXR1cm4geyBJbnRQb2ludChtaW5pbXVtU2Ny
b2xsUG9zaXRpb24oKSksIEludFBvaW50KG1heGltdW1TY3JvbGxQb3NpdGlvbigpKSwgSW50U2l6
ZShzY3JvbGxhYmxlQXJlYVNpemUoKSkgfTsKKyAgICAgICAgfSwKKyAgICAgICAgW3RoaXNdKEZs
b2F0UG9pbnQmJiBwb3NpdGlvbikgeworI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQorICAg
ICAgICAgICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKQorICAgICAgICAgICAgICAgIG1fc21vb3Ro
QW5pbWF0aW9uLT5zZXRDdXJyZW50UG9zaXRpb24ocG9zaXRpb24pOworI2VuZGlmCisKKyAgICAg
ICAgICAgIGF1dG8qIHNjcm9sbExheWVyID0gc3RhdGljX2Nhc3Q8Tmljb3NpYTo6UGxhdGZvcm1M
YXllcio+KHNjcm9sbGVkQ29udGVudHNMYXllcigpKTsKKyAgICAgICAgICAgIEFTU0VSVChzY3Jv
bGxMYXllcik7CisgICAgICAgICAgICBhdXRvJiBjb21wb3NpdGlvbkxheWVyID0gZG93bmNhc3Q8
Tmljb3NpYTo6Q29tcG9zaXRpb25MYXllcj4oKnNjcm9sbExheWVyKTsKKworICAgICAgICAgICAg
YXV0byB1cGRhdGVTY29wZSA9IGNvbXBvc2l0aW9uTGF5ZXIuY3JlYXRlVXBkYXRlU2NvcGUoKTsK
KyAgICAgICAgICAgIHNjcm9sbFRvKHBvc2l0aW9uKTsKKyAgICAgICAgfSk7Cit9CisjZW5kaWYK
KworI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQordm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlTmljb3NpYTo6ZW5zdXJlU2Nyb2xsQW5pbWF0aW9uU21vb3RoKCkKK3sKKyAg
ICBpZiAobV9zbW9vdGhBbmltYXRpb24pCisgICAgICAgIHJldHVybjsKKworICAgIG1fc21vb3Ro
QW5pbWF0aW9uID0gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRpb25TbW9vdGg+KAorICAgICAgICBb
dGhpc10oKSAtPiBTY3JvbGxFeHRlbnRzIHsKKyAgICAgICAgICAgIHJldHVybiB7IEludFBvaW50
KG1pbmltdW1TY3JvbGxQb3NpdGlvbigpKSwgSW50UG9pbnQobWF4aW11bVNjcm9sbFBvc2l0aW9u
KCkpLCBJbnRTaXplKHNjcm9sbGFibGVBcmVhU2l6ZSgpKSB9OworICAgICAgICB9LAorICAgICAg
ICBjdXJyZW50U2Nyb2xsUG9zaXRpb24oKSwKKyAgICAgICAgW3RoaXNdKEZsb2F0UG9pbnQmJiBw
b3NpdGlvbikgeworICAgICAgICAgICAgYXV0byogc2Nyb2xsTGF5ZXIgPSBzdGF0aWNfY2FzdDxO
aWNvc2lhOjpQbGF0Zm9ybUxheWVyKj4oc2Nyb2xsZWRDb250ZW50c0xheWVyKCkpOworICAgICAg
ICAgICAgQVNTRVJUKHNjcm9sbExheWVyKTsKKyAgICAgICAgICAgIGF1dG8mIGNvbXBvc2l0aW9u
TGF5ZXIgPSBkb3duY2FzdDxOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyPigqc2Nyb2xsTGF5ZXIp
OworCisgICAgICAgICAgICBhdXRvIHVwZGF0ZVNjb3BlID0gY29tcG9zaXRpb25MYXllci5jcmVh
dGVVcGRhdGVTY29wZSgpOworICAgICAgICAgICAgc2Nyb2xsVG8ocG9zaXRpb24pOworICAgICAg
ICB9LAorICAgICAgICBbXSB7IH0pOworfQorI2VuZGlmCisKIFdoZWVsRXZlbnRIYW5kbGluZ1Jl
c3VsdCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYTo6aGFuZGxlV2hlZWxF
dmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCiB7CiAgICAgaWYgKCFj
YW5IYW5kbGVXaGVlbEV2ZW50KHdoZWVsRXZlbnQpKQogICAgICAgICByZXR1cm4gV2hlZWxFdmVu
dEhhbmRsaW5nUmVzdWx0Ojp1bmhhbmRsZWQoKTsKIAogI2lmIEVOQUJMRShLSU5FVElDX1NDUk9M
TElORykKKyAgICBlbnN1cmVTY3JvbGxBbmltYXRpb25LaW5ldGljKCk7CiAgICAgbV9raW5ldGlj
QW5pbWF0aW9uLT5hcHBlbmRUb1Njcm9sbEhpc3Rvcnkod2hlZWxFdmVudCk7CiAgICAgbV9raW5l
dGljQW5pbWF0aW9uLT5zdG9wKCk7CiAgICAgaWYgKHdoZWVsRXZlbnQuaXNFbmRPZk5vbk1vbWVu
dHVtU2Nyb2xsKCkpIHsKQEAgLTE4OSwxNiArMjA3LDIwIEBAIFdoZWVsRXZlbnRIYW5kbGluZ1Jl
c3VsdCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYTo6aGFuZGxlV2hlZWxF
dmVuCiAgICAgfQogCiAjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0gICAgbV9zbW9vdGhB
bmltYXRpb24tPnNjcm9sbChIb3Jpem9udGFsU2Nyb2xsYmFyLCBTY3JvbGxCeVBpeGVsLCAxLCAt
ZGVsdGFYKTsKLSAgICBtX3Ntb290aEFuaW1hdGlvbi0+c2Nyb2xsKFZlcnRpY2FsU2Nyb2xsYmFy
LCBTY3JvbGxCeVBpeGVsLCAxLCAtZGVsdGFZKTsKLSNlbHNlCisgICAgaWYgKG1fc2Nyb2xsQW5p
bWF0b3JFbmFibGVkICYmICF3aGVlbEV2ZW50Lmhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMoKSkg
eworICAgICAgICBlbnN1cmVTY3JvbGxBbmltYXRpb25TbW9vdGgoKTsKKyAgICAgICAgbV9zbW9v
dGhBbmltYXRpb24tPnNjcm9sbChIb3Jpem9udGFsU2Nyb2xsYmFyLCBTY3JvbGxCeVBpeGVsLCAx
LCAtZGVsdGFYKTsKKyAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnNjcm9sbChWZXJ0aWNhbFNj
cm9sbGJhciwgU2Nyb2xsQnlQaXhlbCwgMSwgLWRlbHRhWSk7CisgICAgICAgIHJldHVybiBXaGVl
bEV2ZW50SGFuZGxpbmdSZXN1bHQ6OmhhbmRsZWQoKTsKKyAgICB9CisjZW5kaWYKKwogICAgIGF1
dG8qIHNjcm9sbExheWVyID0gc3RhdGljX2Nhc3Q8Tmljb3NpYTo6UGxhdGZvcm1MYXllcio+KHNj
cm9sbGVkQ29udGVudHNMYXllcigpKTsKICAgICBBU1NFUlQoc2Nyb2xsTGF5ZXIpOwogICAgIGF1
dG8mIGNvbXBvc2l0aW9uTGF5ZXIgPSBkb3duY2FzdDxOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVy
Pigqc2Nyb2xsTGF5ZXIpOwogCiAgICAgYXV0byB1cGRhdGVTY29wZSA9IGNvbXBvc2l0aW9uTGF5
ZXIuY3JlYXRlVXBkYXRlU2NvcGUoKTsKICAgICBzY3JvbGxCeSh7IC1kZWx0YVgsIC1kZWx0YVkg
fSk7Ci0jZW5kaWYKIAogICAgIHJldHVybiBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQ6OmhhbmRs
ZWQoKTsKIH0KQEAgLTIwNiwxMSArMjI4LDE0IEBAIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdCBT
Y3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYTo6aGFuZGxlV2hlZWxFdmVuCiB2
b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjpzdG9wU2Nyb2xsQW5p
bWF0aW9ucygpCiB7CiAjaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKQotICAgIG1fa2luZXRp
Y0FuaW1hdGlvbi0+c3RvcCgpOwotICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+Y2xlYXJTY3JvbGxI
aXN0b3J5KCk7CisgICAgaWYgKG1fa2luZXRpY0FuaW1hdGlvbikgeworICAgICAgICBtX2tpbmV0
aWNBbmltYXRpb24tPnN0b3AoKTsKKyAgICAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5jbGVhclNj
cm9sbEhpc3RvcnkoKTsKKyAgICB9CiAjZW5kaWYKICNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElO
RykKLSAgICBtX3Ntb290aEFuaW1hdGlvbi0+c3RvcCgpOworICAgIGlmIChtX3Ntb290aEFuaW1h
dGlvbikKKyAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnN0b3AoKTsKICNlbmRpZgogfQogCkBA
IC0yODksNiArMzE0LDExIEBAIHZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5p
Y29zaWE6OnJlcG9zaXRpb25SZWxhdGVkTGF5ZXJzKCkKICAgICAgICAgaWYgKG1fZm9vdGVyTGF5
ZXIpCiAgICAgICAgICAgICBhcHBseUxheWVyUG9zaXRpb24oKm1fZm9vdGVyTGF5ZXIsIEZsb2F0
UG9pbnQoaG9yaXpvbnRhbFNjcm9sbE9mZnNldEZvckJhbm5lciwgRnJhbWVWaWV3Ojp5UG9zaXRp
b25Gb3JGb290ZXJMYXllcihzY3JvbGxQb3NpdGlvbiwgdG9wQ29udGVudEluc2V0LCB0b3RhbENv
bnRlbnRzU2l6ZSgpLmhlaWdodCgpLCBmb290ZXJIZWlnaHQoKSkpKTsKICAgICB9CisKKyNpZiBF
TkFCTEUoU01PT1RIX1NDUk9MTElORykKKyAgICBpZiAobV9zbW9vdGhBbmltYXRpb24pCisgICAg
ICAgIG1fc21vb3RoQW5pbWF0aW9uLT51cGRhdGVWaXNpYmxlTGVuZ3RocygpOworI2VuZGlmCiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29z
aWEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJl
ZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEuaAppbmRleCA1MDU0YmViZmVjZmRiNmY5YjgxN2Yz
Y2VkM2JiZDNhOTkxYzM4ZjkzLi42MDQwNzk4ODA2MTEyZWU2ZWM4MjU4MjYyNTc4Yzk0MzRjYmQ3
ZDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Nj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2Rl
Tmljb3NpYS5oCkBAIC01Myw2ICs1MywxMyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tbWl0U3Rh
dGVCZWZvcmVDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmKSBvdmVycmlkZTsKICAg
ICB2b2lkIGNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUm
KSBvdmVycmlkZTsKIAorI2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykKKyAgICB2b2lkIGVu
c3VyZVNjcm9sbEFuaW1hdGlvbktpbmV0aWMoKTsKKyNlbmRpZgorI2lmIEVOQUJMRShTTU9PVEhf
U0NST0xMSU5HKQorICAgIHZvaWQgZW5zdXJlU2Nyb2xsQW5pbWF0aW9uU21vb3RoKCk7CisjZW5k
aWYKKwogICAgIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdCBoYW5kbGVXaGVlbEV2ZW50KGNvbnN0
IFBsYXRmb3JtV2hlZWxFdmVudCYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzdG9wU2Nyb2xsQW5p
bWF0aW9ucygpIG92ZXJyaWRlOwpAQCAtNzEsNiArNzgsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0
cjxOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyPiBtX2hlYWRlckxheWVyOwogICAgIFJlZlB0cjxO
aWNvc2lhOjpDb21wb3NpdGlvbkxheWVyPiBtX2Zvb3RlckxheWVyOwogCisgICAgYm9vbCBtX3Nj
cm9sbEFuaW1hdG9yRW5hYmxlZCB7IGZhbHNlIH07CiAjaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xM
SU5HKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRpb25LaW5ldGljPiBtX2tpbmV0
aWNBbmltYXRpb247CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYS5jcHAKaW5kZXggMDY5YWQ0ZjkyM2ZjYzY1NDMw
YTk0ZmJjZjQ1ODNmNWVlOGJiZmQyYS4uNjRkOGE1OGMxNDFlYzU3ODlkYWVjMGI4OWMxN2Y3Yzk5
ZTU4YjEwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3Np
YS9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dT
Y3JvbGxpbmdOb2RlTmljb3NpYS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAKICNpbmNsdWRlICJTY3Jv
bGxBbmltYXRpb25TbW9vdGguaCIKICNlbmRpZgogI2luY2x1ZGUgIlNjcm9sbGluZ1N0YXRlT3Zl
cmZsb3dTY3JvbGxpbmdOb2RlLmgiCi0jaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZS5oIgorI2luY2x1
ZGUgIlRocmVhZGVkU2Nyb2xsaW5nVHJlZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTUxLDQwICs1MSw3IEBAIFJlZjxTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlPiBT
Y3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpCiBTY3JvbGxpbmdUcmVlT3Zl
cmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYTo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5n
Tm9kZU5pY29zaWEoU2Nyb2xsaW5nVHJlZSYgc2Nyb2xsaW5nVHJlZSwgU2Nyb2xsaW5nTm9kZUlE
IG5vZGVJRCkKICAgICA6IFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGUoc2Nyb2xs
aW5nVHJlZSwgbm9kZUlEKQogewotI2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykKLSAgICBt
X2tpbmV0aWNBbmltYXRpb24gPSBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlvbktpbmV0aWM+KAot
ICAgICAgICBbdGhpc10oKSAtPiBTY3JvbGxFeHRlbnRzIHsKLSAgICAgICAgICAgIHJldHVybiB7
IEludFBvaW50KG1pbmltdW1TY3JvbGxQb3NpdGlvbigpKSwgSW50UG9pbnQobWF4aW11bVNjcm9s
bFBvc2l0aW9uKCkpLCBJbnRTaXplKHNjcm9sbGFibGVBcmVhU2l6ZSgpKSB9OwotICAgICAgICB9
LAotICAgICAgICBbdGhpc10oRmxvYXRQb2ludCYmIHBvc2l0aW9uKSB7Ci0jaWYgRU5BQkxFKFNN
T09USF9TQ1JPTExJTkcpCi0gICAgICAgICAgICBtX3Ntb290aEFuaW1hdGlvbi0+c2V0Q3VycmVu
dFBvc2l0aW9uKHBvc2l0aW9uKTsKLSNlbmRpZgotCi0gICAgICAgICAgICBhdXRvKiBzY3JvbGxM
YXllciA9IHN0YXRpY19jYXN0PE5pY29zaWE6OlBsYXRmb3JtTGF5ZXIqPihzY3JvbGxDb250YWlu
ZXJMYXllcigpKTsKLSAgICAgICAgICAgIEFTU0VSVChzY3JvbGxMYXllcik7Ci0gICAgICAgICAg
ICBhdXRvJiBjb21wb3NpdGlvbkxheWVyID0gZG93bmNhc3Q8Tmljb3NpYTo6Q29tcG9zaXRpb25M
YXllcj4oKnNjcm9sbExheWVyKTsKLQotICAgICAgICAgICAgYXV0byB1cGRhdGVTY29wZSA9IGNv
bXBvc2l0aW9uTGF5ZXIuY3JlYXRlVXBkYXRlU2NvcGUoKTsKLSAgICAgICAgICAgIHNjcm9sbFRv
KHBvc2l0aW9uKTsKLSAgICAgICAgfSk7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoU01PT1RIX1NDUk9M
TElORykKLSAgICBtX3Ntb290aEFuaW1hdGlvbiA9IG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0aW9u
U21vb3RoPigKLSAgICAgICAgW3RoaXNdKCkgLT4gU2Nyb2xsRXh0ZW50cyB7Ci0gICAgICAgICAg
ICByZXR1cm4geyBJbnRQb2ludChtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSksIEludFBvaW50KG1h
eGltdW1TY3JvbGxQb3NpdGlvbigpKSwgSW50U2l6ZShzY3JvbGxhYmxlQXJlYVNpemUoKSkgfTsK
LSAgICAgICAgfSwKLSAgICAgICAgY3VycmVudFNjcm9sbFBvc2l0aW9uKCksCi0gICAgICAgIFt0
aGlzXShGbG9hdFBvaW50JiYgcG9zaXRpb24pIHsKLSAgICAgICAgICAgIGF1dG8qIHNjcm9sbExh
eWVyID0gc3RhdGljX2Nhc3Q8Tmljb3NpYTo6UGxhdGZvcm1MYXllcio+KHNjcm9sbENvbnRhaW5l
ckxheWVyKCkpOwotICAgICAgICAgICAgQVNTRVJUKHNjcm9sbExheWVyKTsKLSAgICAgICAgICAg
IGF1dG8mIGNvbXBvc2l0aW9uTGF5ZXIgPSBkb3duY2FzdDxOaWNvc2lhOjpDb21wb3NpdGlvbkxh
eWVyPigqc2Nyb2xsTGF5ZXIpOwotCi0gICAgICAgICAgICBhdXRvIHVwZGF0ZVNjb3BlID0gY29t
cG9zaXRpb25MYXllci5jcmVhdGVVcGRhdGVTY29wZSgpOwotICAgICAgICAgICAgc2Nyb2xsVG8o
cG9zaXRpb24pOwotICAgICAgICB9LAotICAgICAgICBbXSB7IH0pOwotI2VuZGlmCisgICAgbV9z
Y3JvbGxBbmltYXRvckVuYWJsZWQgPSBkb3duY2FzdDxUaHJlYWRlZFNjcm9sbGluZ1RyZWU+KHNj
cm9sbGluZ1RyZWUpLnNjcm9sbEFuaW1hdG9yRW5hYmxlZCgpOwogfQogCiBTY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYTo6flNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9s
bGluZ05vZGVOaWNvc2lhKCkgPSBkZWZhdWx0OwpAQCAtOTksNyArNjYsOCBAQCB2b2lkIFNjcm9s
bGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhOjpjb21taXRTdGF0ZUFmdGVyQ2hp
bGRyZW4oY29uc3QgUwogICAgICAgICBjb25zdCBhdXRvJiByZXF1ZXN0ZWRTY3JvbGxEYXRhID0g
b3ZlcmZsb3dTdGF0ZU5vZGUucmVxdWVzdGVkU2Nyb2xsRGF0YSgpOwogICAgICAgICBzY3JvbGxU
byhyZXF1ZXN0ZWRTY3JvbGxEYXRhLnNjcm9sbFBvc2l0aW9uLCByZXF1ZXN0ZWRTY3JvbGxEYXRh
LnNjcm9sbFR5cGUsIHJlcXVlc3RlZFNjcm9sbERhdGEuY2xhbXBpbmcpOwogI2lmIEVOQUJMRShT
TU9PVEhfU0NST0xMSU5HKQotICAgICAgICBtX3Ntb290aEFuaW1hdGlvbi0+c2V0Q3VycmVudFBv
c2l0aW9uKGN1cnJlbnRTY3JvbGxQb3NpdGlvbigpKTsKKyAgICAgICAgaWYgKG1fc21vb3RoQW5p
bWF0aW9uKQorICAgICAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnNldEN1cnJlbnRQb3NpdGlv
bihjdXJyZW50U2Nyb2xsUG9zaXRpb24oKSk7CiAjZW5kaWYKICAgICB9CiB9CkBAIC0xMjQsMTQg
KzkyLDY5IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWE6
OnJlcG9zaXRpb25TY3JvbGxpbmdMYXllcnMoKQogICAgICAgICAgICAgc3RhdGUuYm91bmRzT3Jp
Z2luID0gc2Nyb2xsT2Zmc2V0OwogICAgICAgICAgICAgc3RhdGUuZGVsdGEuYm91bmRzT3JpZ2lu
Q2hhbmdlZCA9IHRydWU7CiAgICAgICAgIH0pOworCisjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJ
TkcpCisgICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKQorICAgICAgICBtX3Ntb290aEFuaW1hdGlv
bi0+dXBkYXRlVmlzaWJsZUxlbmd0aHMoKTsKKyNlbmRpZgogfQogCisjaWYgRU5BQkxFKEtJTkVU
SUNfU0NST0xMSU5HKQordm9pZCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmlj
b3NpYTo6ZW5zdXJlU2Nyb2xsQW5pbWF0aW9uS2luZXRpYygpCit7CisgICAgaWYgKG1fa2luZXRp
Y0FuaW1hdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9raW5ldGljQW5pbWF0aW9uID0g
bWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRpb25LaW5ldGljPigKKyAgICAgICAgW3RoaXNdKCkgLT4g
U2Nyb2xsRXh0ZW50cyB7CisgICAgICAgICAgICByZXR1cm4geyBJbnRQb2ludChtaW5pbXVtU2Ny
b2xsUG9zaXRpb24oKSksIEludFBvaW50KG1heGltdW1TY3JvbGxQb3NpdGlvbigpKSwgSW50U2l6
ZShzY3JvbGxhYmxlQXJlYVNpemUoKSkgfTsKKyAgICAgICAgfSwKKyAgICAgICAgW3RoaXNdKEZs
b2F0UG9pbnQmJiBwb3NpdGlvbikgeworI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQorICAg
ICAgICAgICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKQorICAgICAgICAgICAgICAgIG1fc21vb3Ro
QW5pbWF0aW9uLT5zZXRDdXJyZW50UG9zaXRpb24ocG9zaXRpb24pOworI2VuZGlmCisKKyAgICAg
ICAgICAgIGF1dG8qIHNjcm9sbExheWVyID0gc3RhdGljX2Nhc3Q8Tmljb3NpYTo6UGxhdGZvcm1M
YXllcio+KHNjcm9sbENvbnRhaW5lckxheWVyKCkpOworICAgICAgICAgICAgQVNTRVJUKHNjcm9s
bExheWVyKTsKKyAgICAgICAgICAgIGF1dG8mIGNvbXBvc2l0aW9uTGF5ZXIgPSBkb3duY2FzdDxO
aWNvc2lhOjpDb21wb3NpdGlvbkxheWVyPigqc2Nyb2xsTGF5ZXIpOworCisgICAgICAgICAgICBh
dXRvIHVwZGF0ZVNjb3BlID0gY29tcG9zaXRpb25MYXllci5jcmVhdGVVcGRhdGVTY29wZSgpOwor
ICAgICAgICAgICAgc2Nyb2xsVG8ocG9zaXRpb24pOworICAgICAgICB9KTsKK30KKyNlbmRpZgor
CisjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCit2b2lkIFNjcm9sbGluZ1RyZWVPdmVyZmxv
d1Njcm9sbGluZ05vZGVOaWNvc2lhOjplbnN1cmVTY3JvbGxBbmltYXRpb25TbW9vdGgoKQorewor
ICAgIGlmIChtX3Ntb290aEFuaW1hdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zbW9v
dGhBbmltYXRpb24gPSBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlvblNtb290aD4oCisgICAgICAg
IFt0aGlzXSgpIC0+IFNjcm9sbEV4dGVudHMgeworICAgICAgICAgICAgcmV0dXJuIHsgSW50UG9p
bnQobWluaW11bVNjcm9sbFBvc2l0aW9uKCkpLCBJbnRQb2ludChtYXhpbXVtU2Nyb2xsUG9zaXRp
b24oKSksIEludFNpemUoc2Nyb2xsYWJsZUFyZWFTaXplKCkpIH07CisgICAgICAgIH0sCisgICAg
ICAgIGN1cnJlbnRTY3JvbGxQb3NpdGlvbigpLAorICAgICAgICBbdGhpc10oRmxvYXRQb2ludCYm
IHBvc2l0aW9uKSB7CisgICAgICAgICAgICBhdXRvKiBzY3JvbGxMYXllciA9IHN0YXRpY19jYXN0
PE5pY29zaWE6OlBsYXRmb3JtTGF5ZXIqPihzY3JvbGxDb250YWluZXJMYXllcigpKTsKKyAgICAg
ICAgICAgIEFTU0VSVChzY3JvbGxMYXllcik7CisgICAgICAgICAgICBhdXRvJiBjb21wb3NpdGlv
bkxheWVyID0gZG93bmNhc3Q8Tmljb3NpYTo6Q29tcG9zaXRpb25MYXllcj4oKnNjcm9sbExheWVy
KTsKKworICAgICAgICAgICAgYXV0byB1cGRhdGVTY29wZSA9IGNvbXBvc2l0aW9uTGF5ZXIuY3Jl
YXRlVXBkYXRlU2NvcGUoKTsKKyAgICAgICAgICAgIHNjcm9sbFRvKHBvc2l0aW9uKTsKKyAgICAg
ICAgfSwKKyAgICAgICAgW10geyB9KTsKK30KKyNlbmRpZgorCiBXaGVlbEV2ZW50SGFuZGxpbmdS
ZXN1bHQgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWE6OmhhbmRsZVdo
ZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQogewogICAgIGlm
ICghY2FuSGFuZGxlV2hlZWxFdmVudCh3aGVlbEV2ZW50KSkKICAgICAgICAgcmV0dXJuIFdoZWVs
RXZlbnRIYW5kbGluZ1Jlc3VsdDo6dW5oYW5kbGVkKCk7CiAKICNpZiBFTkFCTEUoS0lORVRJQ19T
Q1JPTExJTkcpCisgICAgZW5zdXJlU2Nyb2xsQW5pbWF0aW9uS2luZXRpYygpOwogICAgIG1fa2lu
ZXRpY0FuaW1hdGlvbi0+YXBwZW5kVG9TY3JvbGxIaXN0b3J5KHdoZWVsRXZlbnQpOwogICAgIG1f
a2luZXRpY0FuaW1hdGlvbi0+c3RvcCgpOwogICAgIGlmICh3aGVlbEV2ZW50LmlzRW5kT2ZOb25N
b21lbnR1bVNjcm9sbCgpKSB7CkBAIC0xNzQsMTYgKzE5NywyMCBAQCBXaGVlbEV2ZW50SGFuZGxp
bmdSZXN1bHQgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWE6OmhhbmRs
ZVdoZWVsRQogICAgIH0KIAogI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQotICAgIG1fc21v
b3RoQW5pbWF0aW9uLT5zY3JvbGwoSG9yaXpvbnRhbFNjcm9sbGJhciwgU2Nyb2xsQnlQaXhlbCwg
MSwgLWRlbHRhWCk7Ci0gICAgbV9zbW9vdGhBbmltYXRpb24tPnNjcm9sbChWZXJ0aWNhbFNjcm9s
bGJhciwgU2Nyb2xsQnlQaXhlbCwgMSwgLWRlbHRhWSk7Ci0jZWxzZQorICAgIGlmIChtX3Njcm9s
bEFuaW1hdG9yRW5hYmxlZCAmJiAhd2hlZWxFdmVudC5oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFz
KCkpIHsKKyAgICAgICAgZW5zdXJlU2Nyb2xsQW5pbWF0aW9uU21vb3RoKCk7CisgICAgICAgIG1f
c21vb3RoQW5pbWF0aW9uLT5zY3JvbGwoSG9yaXpvbnRhbFNjcm9sbGJhciwgU2Nyb2xsQnlQaXhl
bCwgMSwgLWRlbHRhWCk7CisgICAgICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zY3JvbGwoVmVydGlj
YWxTY3JvbGxiYXIsIFNjcm9sbEJ5UGl4ZWwsIDEsIC1kZWx0YVkpOworICAgICAgICByZXR1cm4g
V2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0OjpoYW5kbGVkKCk7CisgICAgfQorI2VuZGlmCisKICAg
ICBhdXRvKiBzY3JvbGxMYXllciA9IHN0YXRpY19jYXN0PE5pY29zaWE6OlBsYXRmb3JtTGF5ZXIq
PihzY3JvbGxDb250YWluZXJMYXllcigpKTsKICAgICBBU1NFUlQoc2Nyb2xsTGF5ZXIpOwogICAg
IGF1dG8mIGNvbXBvc2l0aW9uTGF5ZXIgPSBkb3duY2FzdDxOaWNvc2lhOjpDb21wb3NpdGlvbkxh
eWVyPigqc2Nyb2xsTGF5ZXIpOwogCiAgICAgYXV0byB1cGRhdGVTY29wZSA9IGNvbXBvc2l0aW9u
TGF5ZXIuY3JlYXRlVXBkYXRlU2NvcGUoKTsKICAgICBzY3JvbGxCeSh7IC1kZWx0YVgsIC1kZWx0
YVkgfSk7Ci0jZW5kaWYKIAogICAgIHJldHVybiBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQ6Omhh
bmRsZWQoKTsKIH0KQEAgLTE5MSwxMSArMjE4LDE0IEBAIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3Vs
dCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYTo6aGFuZGxlV2hlZWxF
CiB2b2lkIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhOjpzdG9wU2Ny
b2xsQW5pbWF0aW9ucygpCiB7CiAjaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKQotICAgIG1f
a2luZXRpY0FuaW1hdGlvbi0+c3RvcCgpOwotICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+Y2xlYXJT
Y3JvbGxIaXN0b3J5KCk7CisgICAgaWYgKG1fa2luZXRpY0FuaW1hdGlvbikgeworICAgICAgICBt
X2tpbmV0aWNBbmltYXRpb24tPnN0b3AoKTsKKyAgICAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5j
bGVhclNjcm9sbEhpc3RvcnkoKTsKKyAgICB9CiAjZW5kaWYKICNpZiBFTkFCTEUoU01PT1RIX1ND
Uk9MTElORykKLSAgICBtX3Ntb290aEFuaW1hdGlvbi0+c3RvcCgpOworICAgIGlmIChtX3Ntb290
aEFuaW1hdGlvbikKKyAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnN0b3AoKTsKICNlbmRpZgog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Nj
cm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05v
ZGVOaWNvc2lhLmgKaW5kZXggMTMyYjQ4ODcxZDZjZGI2NzQ1YzRhYzM2MTdhNGJjMWRkZWY0Yjkw
Mi4uM2JkMWE0NTMzN2QwMDYzNzg4ZTUwMTg1NzNmYTAxYWUzMDBlYWZmMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlT3ZlcmZs
b3dTY3JvbGxpbmdOb2RlTmljb3NpYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWEuaApA
QCAtNTAsMTAgKzUwLDE4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHJlcG9zaXRpb25TY3JvbGxp
bmdMYXllcnMoKSBvdmVycmlkZTsKIAorI2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykKKyAg
ICB2b2lkIGVuc3VyZVNjcm9sbEFuaW1hdGlvbktpbmV0aWMoKTsKKyNlbmRpZgorI2lmIEVOQUJM
RShTTU9PVEhfU0NST0xMSU5HKQorICAgIHZvaWQgZW5zdXJlU2Nyb2xsQW5pbWF0aW9uU21vb3Ro
KCk7CisjZW5kaWYKKwogICAgIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdCBoYW5kbGVXaGVlbEV2
ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzdG9w
U2Nyb2xsQW5pbWF0aW9ucygpIG92ZXJyaWRlOwogCisgICAgYm9vbCBtX3Njcm9sbEFuaW1hdG9y
RW5hYmxlZCB7IGZhbHNlIH07CiAjaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKQogICAgIHN0
ZDo6dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRpb25LaW5ldGljPiBtX2tpbmV0aWNBbmltYXRpb247
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hl
ZWxFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmgK
aW5kZXggYzQ4ZWRiNDU2NjczNzVjODM3OWFiMGU1MmU1MjQwMWRjY2VkNGQzYy4uYWYxYzUzOTYz
MWIzYmY1NmQxM2U4YzE4NWFiN2E1MWRjMWJjNDMzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmgKQEAgLTE0MSw5ICsxNDEsMTIgQEAgcHVibGljOgog
ICAgIGV4cGxpY2l0IFBsYXRmb3JtV2hlZWxFdmVudChHZGtFdmVudFNjcm9sbCopOwogI2VuZGlm
CiAKLSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0o
R1RLKSB8fCBVU0UoTElCV1BFKQogICAgIGJvb2wgaGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcygp
IGNvbnN0IHsgcmV0dXJuIG1faGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhczsgfQogICAgIHZvaWQg
c2V0SGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcyhib29sIGhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0
YXMpIHsgbV9oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzID0gaGFzUHJlY2lzZVNjcm9sbGluZ0Rl
bHRhczsgfQorI2VuZGlmCisKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICB1bnNpZ25lZCBzY3Jv
bGxDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsQ291bnQ7IH0KICAgICBmbG9hdCB1bmFj
Y2VsZXJhdGVkU2Nyb2xsaW5nRGVsdGFYKCkgY29uc3QgeyByZXR1cm4gbV91bmFjY2VsZXJhdGVk
U2Nyb2xsaW5nRGVsdGFYOyB9CiAgICAgZmxvYXQgdW5hY2NlbGVyYXRlZFNjcm9sbGluZ0RlbHRh
WSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5hY2NlbGVyYXRlZFNjcm9sbGluZ0RlbHRhWTsgfQpAQCAt
MTkzLDggKzE5NiwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2Ug
bV9waGFzZSB7IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlTm9uZSB9OwogICAgIFBsYXRmb3JtV2hl
ZWxFdmVudFBoYXNlIG1fbW9tZW50dW1QaGFzZSB7IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlTm9u
ZSB9OwogI2VuZGlmCi0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8
IFBMQVRGT1JNKEdUSykgfHwgVVNFKExJQldQRSkKICAgICBib29sIG1faGFzUHJlY2lzZVNjcm9s
bGluZ0RlbHRhcyB7IGZhbHNlIH07CisjZW5kaWYKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICB1
bnNpZ25lZCBtX3Njcm9sbENvdW50IHsgMCB9OwogICAgIGZsb2F0IG1fdW5hY2NlbGVyYXRlZFNj
cm9sbGluZ0RlbHRhWCB7IDAgfTsKICAgICBmbG9hdCBtX3VuYWNjZWxlcmF0ZWRTY3JvbGxpbmdE
ZWx0YVkgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxB
bmltYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbi5oCmlu
ZGV4IDk5ZDg2MWJmMzUxM2QwMzc2NjQ3MGExMDcyYjk4ZmQwMzcwY2M4MDUuLjAwNGJiYzZiNjM4
MDJiYzBlOTk5Yjk2YjZkZDYzNTIyZmU4M2M3NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbEFuaW1hdGlvbi5oCkBAIC01MCw2ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlVmlzaWJsZUxlbmd0aHMoKSB7IH07CiAgICAgdmlydHVhbCB2b2lkIHNldEN1
cnJlbnRQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JikgeyB9OwogICAgIHZpcnR1YWwgdm9pZCBz
ZXJ2aWNlQW5pbWF0aW9uKCkgeyB9OworICAgIHZpcnR1YWwgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0
ID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5jcHAKaW5kZXggMjRlZGNkMzI4NGQ5
YWFiNThiNGE1Y2EyOTI5YTQ3MjRhZTEzMTQxMS4uOWE1YTg5ZTk0YTg5N2UyNTUxNjY1OTExZDRk
NmI4MTFjN2RlNThlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
QW5pbWF0aW9uS2luZXRpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
QW5pbWF0aW9uS2luZXRpYy5jcHAKQEAgLTEyOCw2ICsxMjgsMTEgQEAgdm9pZCBTY3JvbGxBbmlt
YXRpb25LaW5ldGljOjpzdG9wKCkKICAgICBtX3ZlcnRpY2FsRGF0YSA9IFdURjo6bnVsbG9wdDsK
IH0KIAorYm9vbCBTY3JvbGxBbmltYXRpb25LaW5ldGljOjppc0FjdGl2ZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fYW5pbWF0aW9uVGltZXIuaXNBY3RpdmUoKTsKK30KKwogdm9pZCBTY3JvbGxB
bmltYXRpb25LaW5ldGljOjphcHBlbmRUb1Njcm9sbEhpc3RvcnkoY29uc3QgUGxhdGZvcm1XaGVl
bEV2ZW50JiBldmVudCkKIHsKICAgICBtX3Njcm9sbEhpc3RvcnkucmVtb3ZlQWxsTWF0Y2hpbmco
WyZldmVudF0gKFBsYXRmb3JtV2hlZWxFdmVudCYgb3RoZXJFdmVudCkgLT4gYm9vbCB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmgKaW5kZXgg
M2U4OWNiNDhjMDVjNGMyYmU3NWUzNzY1Y2M5ZWY4MTUzM2RjYjdiZS4uNmFiZTc5ZWY3NzhhZmQ4
ZjQ1ODY0OGMyOTdiMmRhNjFhNDZjNTQyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuaApAQCAtNzAsNiArNzAsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHN0YXJ0KGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxQb3NpdGlvbiwgY29uc3Qg
RmxvYXRQb2ludCYgdmVsb2NpdHksIGJvb2wgbWF5SFNjcm9sbCwgYm9vbCBtYXlWU2Nyb2xsKTsK
ICAgICB2b2lkIHN0b3AoKSBvdmVycmlkZTsKKyAgICBib29sIGlzQWN0aXZlKCkgY29uc3Qgb3Zl
cnJpZGU7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBhbmltYXRpb25UaW1lckZpcmVkKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmNwcAppbmRl
eCA4MzU3MzA1ZmVjYjFiZmM0NWViNWI3N2IwMzU5NmFkMTE4YWYwNzIyLi4yN2UwODM0MzMwODEz
ZDk4YTZlZDVhYjZmNzNjOGIwZDkxOTY0MTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgYm9vbCBT
Y3JvbGxBbmltYXRpb25TbW9vdGg6OnNjcm9sbChTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRh
dGlvbiwgU2Nyb2xsR3JhbnUKICAgICAgICAgbWF4U2Nyb2xsUG9zaXRpb24gPSBleHRlbnRzLm1h
eGltdW1TY3JvbGxQb3NpdGlvbi55KCk7CiAgICAgfQogICAgIGJvb2wgbmVlZFRvU2Nyb2xsID0g
dXBkYXRlUGVyQXhpc0RhdGEob3JpZW50YXRpb24gPT0gSG9yaXpvbnRhbFNjcm9sbGJhciA/IG1f
aG9yaXpvbnRhbERhdGEgOiBtX3ZlcnRpY2FsRGF0YSwgZ3JhbnVsYXJpdHksIHN0ZXAgKiBtdWx0
aXBsaWVyLCBtaW5TY3JvbGxQb3NpdGlvbiwgbWF4U2Nyb2xsUG9zaXRpb24pOwotICAgIGlmIChu
ZWVkVG9TY3JvbGwgJiYgIWFuaW1hdGlvblRpbWVyQWN0aXZlKCkpIHsKKyAgICBpZiAobmVlZFRv
U2Nyb2xsICYmICFpc0FjdGl2ZSgpKSB7CiAgICAgICAgIG1fc3RhcnRUaW1lID0gb3JpZW50YXRp
b24gPT0gSG9yaXpvbnRhbFNjcm9sbGJhciA/IG1faG9yaXpvbnRhbERhdGEuc3RhcnRUaW1lIDog
bV92ZXJ0aWNhbERhdGEuc3RhcnRUaW1lOwogICAgICAgICBhbmltYXRpb25UaW1lckZpcmVkKCk7
CiAgICAgfQpAQCAtOTksNyArOTksNyBAQCB2b2lkIFNjcm9sbEFuaW1hdGlvblNtb290aDo6c2Ny
b2xsKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uKQogICAgIGJvb2wgbmVlZFRvU2Nyb2xsID0g
dXBkYXRlUGVyQXhpc0RhdGEobV9ob3Jpem9udGFsRGF0YSwgZ3JhbnVsYXJpdHksIHBvc2l0aW9u
LngoKSAtIG1faG9yaXpvbnRhbERhdGEuY3VycmVudFBvc2l0aW9uLCBleHRlbnRzLm1pbmltdW1T
Y3JvbGxQb3NpdGlvbi54KCksIGV4dGVudHMubWF4aW11bVNjcm9sbFBvc2l0aW9uLngoKSwgc21v
b3RoRmFjdG9yRm9yUHJvZ3JhbW1hdGljU2Nyb2xsKTsKICAgICBuZWVkVG9TY3JvbGwgfD0KICAg
ICAgICAgdXBkYXRlUGVyQXhpc0RhdGEobV92ZXJ0aWNhbERhdGEsIGdyYW51bGFyaXR5LCBwb3Np
dGlvbi55KCkgLSBtX3ZlcnRpY2FsRGF0YS5jdXJyZW50UG9zaXRpb24sIGV4dGVudHMubWluaW11
bVNjcm9sbFBvc2l0aW9uLnkoKSwgZXh0ZW50cy5tYXhpbXVtU2Nyb2xsUG9zaXRpb24ueSgpLCBz
bW9vdGhGYWN0b3JGb3JQcm9ncmFtbWF0aWNTY3JvbGwpOwotICAgIGlmIChuZWVkVG9TY3JvbGwg
JiYgIWFuaW1hdGlvblRpbWVyQWN0aXZlKCkpIHsKKyAgICBpZiAobmVlZFRvU2Nyb2xsICYmICFp
c0FjdGl2ZSgpKSB7CiAgICAgICAgIG1fc3RhcnRUaW1lID0gbV9ob3Jpem9udGFsRGF0YS5zdGFy
dFRpbWU7CiAgICAgICAgIGFuaW1hdGlvblRpbWVyRmlyZWQoKTsKICAgICB9CkBAIC00NDksNyAr
NDQ5LDcgQEAgdm9pZCBTY3JvbGxBbmltYXRpb25TbW9vdGg6OnN0YXJ0TmV4dFRpbWVyKFNlY29u
ZHMgZGVsYXkpCiAgICAgbV9hbmltYXRpb25UaW1lci5zdGFydE9uZVNob3QoZGVsYXkpOwogfQog
Ci1ib29sIFNjcm9sbEFuaW1hdGlvblNtb290aDo6YW5pbWF0aW9uVGltZXJBY3RpdmUoKSBjb25z
dAorYm9vbCBTY3JvbGxBbmltYXRpb25TbW9vdGg6OmlzQWN0aXZlKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gbV9hbmltYXRpb25UaW1lci5pc0FjdGl2ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguaAppbmRleCBkNDEwYWRjZTYzZGNkNDcy
MmZkZWMxM2E0OWQzYTNjOGI2ZTExMGM4Li4xNDdhY2Y0ZTJiZTJmMjA0NzZiMDIzNzg4YTMyNTEz
N2ZjZDVjYzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmlt
YXRpb25TbW9vdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRp
b25TbW9vdGguaApAQCAtNTgsNiArNTgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RvcCgpIG92
ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlVmlzaWJsZUxlbmd0aHMoKSBvdmVycmlkZTsKICAgICB2
b2lkIHNldEN1cnJlbnRQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50Jikgb3ZlcnJpZGU7CisgICAg
Ym9vbCBpc0FjdGl2ZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgc3RydWN0IFBlckF4aXNEYXRh
IHsKICAgICAgICAgUGVyQXhpc0RhdGEoKSA9IGRlbGV0ZTsKQEAgLTEwMSw3ICsxMDIsNiBAQCBw
cml2YXRlOgogICAgIHZvaWQgcmVxdWVzdEFuaW1hdGlvblRpbWVyRmlyZWQoKTsKICAgICB2b2lk
IHN0YXJ0TmV4dFRpbWVyKFNlY29uZHMgZGVsYXkpOwogICAgIHZvaWQgYW5pbWF0aW9uVGltZXJG
aXJlZCgpOwotICAgIGJvb2wgYW5pbWF0aW9uVGltZXJBY3RpdmUoKSBjb25zdDsKIAogICAgIFNj
cm9sbEV4dGVudHNDYWxsYmFjayBtX3Njcm9sbEV4dGVudHNGdW5jdGlvbjsKICAgICBOb3RpZnlQ
b3NpdGlvbkNoYW5nZWRDYWxsYmFjayBtX25vdGlmeVBvc2l0aW9uQ2hhbmdlZEZ1bmN0aW9uOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRv
ckdlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmlt
YXRvckdlbmVyaWMuY3BwCmluZGV4IGMwNGE0ODBkNTU5NmM3MWNjZjJhNTRhMjk1Zjk5ZTZmOTk1
ODhhMWYuLmNiMTk1NWE4ODQwNzM5M2IzN2U1ZjBmNDY4NDAxNjY4OGE4NTc4NTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmlj
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9y
R2VuZXJpYy5jcHAKQEAgLTczLDggKzczLDExIEBAIFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6flNj
cm9sbEFuaW1hdG9yR2VuZXJpYygpID0gZGVmYXVsdDsKICNpZiBFTkFCTEUoU01PT1RIX1NDUk9M
TElORykKIHZvaWQgU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjplbnN1cmVTbW9vdGhTY3JvbGxpbmdB
bmltYXRpb24oKQogewotICAgIGlmIChtX3Ntb290aEFuaW1hdGlvbikKKyAgICBpZiAobV9zbW9v
dGhBbmltYXRpb24pIHsKKyAgICAgICAgaWYgKCFtX3Ntb290aEFuaW1hdGlvbi0+aXNBY3RpdmUo
KSkKKyAgICAgICAgICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zZXRDdXJyZW50UG9zaXRpb24obV9j
dXJyZW50UG9zaXRpb24pOwogICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgbV9zbW9vdGhB
bmltYXRpb24gPSBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlvblNtb290aD4oCiAgICAgICAgIFt0
aGlzXSgpIC0+IFNjcm9sbEV4dGVudHMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkV2ZW50
Q29udmVyc2lvbi5jcHAKaW5kZXggMmRlMjYwMTU1OTVhMzgzZmIzYjE3ZWFmNzQ2ZDI5NmY2ZTk5
ODg3YS4uMGZiOTljN2E5ZTY0ZmI4YTZkODgyNWIzYWZiMjA2NGY4MDUwNWI0OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJFdmVudENvbnZlcnNpb24uY3BwCkBAIC0xNjQsOCArMTY0LDEw
IEBAIHB1YmxpYzoKICAgICAgICAgbV9waGFzZSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlBsYXRm
b3JtV2hlZWxFdmVudFBoYXNlPih3ZWJFdmVudC5waGFzZSgpKTsKICAgICAgICAgbV9tb21lbnR1
bVBoYXNlID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50UGhhc2U+KHdl
YkV2ZW50Lm1vbWVudHVtUGhhc2UoKSk7CiAjZW5kaWYKLSNpZiBQTEFURk9STShDT0NPQSkKKyNp
ZiBQTEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oR1RLKSB8fCBVU0UoTElCV1BFKQogICAgICAg
ICBtX2hhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMgPSB3ZWJFdmVudC5oYXNQcmVjaXNlU2Nyb2xs
aW5nRGVsdGFzKCk7CisjZW5kaWYKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgbV9zY3Jv
bGxDb3VudCA9IHdlYkV2ZW50LnNjcm9sbENvdW50KCk7CiAgICAgICAgIG1fdW5hY2NlbGVyYXRl
ZFNjcm9sbGluZ0RlbHRhWCA9IHdlYkV2ZW50LnVuYWNjZWxlcmF0ZWRTY3JvbGxpbmdEZWx0YSgp
LndpZHRoKCk7CiAgICAgICAgIG1fdW5hY2NlbGVyYXRlZFNjcm9sbGluZ0RlbHRhWSA9IHdlYkV2
ZW50LnVuYWNjZWxlcmF0ZWRTY3JvbGxpbmdEZWx0YSgpLmhlaWdodCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViV2hlZWxFdmVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJXaGVlbEV2ZW50LmNwcAppbmRleCA5ZDcyNWVkYjY3MjE0Y2RjMWM4NTY0ZmJmYTFj
YzE0OGIyMjlkNzdkLi5jMDNmZTIzZWJkN2VhYzYzODUxZWMwYWU5YTNiZGZiZDE2OWY4OWFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJXaGVlbEV2ZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJXaGVlbEV2ZW50LmNwcApAQCAtNjEsNyArNjEsNyBAQCBX
ZWJXaGVlbEV2ZW50OjpXZWJXaGVlbEV2ZW50KFR5cGUgdHlwZSwgY29uc3QgSW50UG9pbnQmIHBv
c2l0aW9uLCBjb25zdCBJbnRQb2ludAogICAgIEFTU0VSVChpc1doZWVsRXZlbnRUeXBlKHR5cGUp
KTsKIH0KICNlbGlmIFBMQVRGT1JNKEdUSykgfHwgVVNFKExJQldQRSkKLVdlYldoZWVsRXZlbnQ6
OldlYldoZWVsRXZlbnQoVHlwZSB0eXBlLCBjb25zdCBJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0
IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgY29uc3QgRmxvYXRTaXplJiBkZWx0YSwgY29uc3Qg
RmxvYXRTaXplJiB3aGVlbFRpY2tzLCBQaGFzZSBwaGFzZSwgUGhhc2UgbW9tZW50dW1QaGFzZSwg
R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIE9wdGlvblNldDxNb2RpZmllcj4gbW9kaWZpZXJzLCBX
YWxsVGltZSB0aW1lc3RhbXApCitXZWJXaGVlbEV2ZW50OjpXZWJXaGVlbEV2ZW50KFR5cGUgdHlw
ZSwgY29uc3QgSW50UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRp
b24sIGNvbnN0IEZsb2F0U2l6ZSYgZGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgd2hlZWxUaWNrcywg
UGhhc2UgcGhhc2UsIFBoYXNlIG1vbWVudHVtUGhhc2UsIEdyYW51bGFyaXR5IGdyYW51bGFyaXR5
LCBib29sIGhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMsIE9wdGlvblNldDxNb2RpZmllcj4gbW9k
aWZpZXJzLCBXYWxsVGltZSB0aW1lc3RhbXApCiAgICAgOiBXZWJFdmVudCh0eXBlLCBtb2RpZmll
cnMsIHRpbWVzdGFtcCkKICAgICAsIG1fcG9zaXRpb24ocG9zaXRpb24pCiAgICAgLCBtX2dsb2Jh
bFBvc2l0aW9uKGdsb2JhbFBvc2l0aW9uKQpAQCAtNzAsNiArNzAsNyBAQCBXZWJXaGVlbEV2ZW50
OjpXZWJXaGVlbEV2ZW50KFR5cGUgdHlwZSwgY29uc3QgSW50UG9pbnQmIHBvc2l0aW9uLCBjb25z
dCBJbnRQb2ludAogICAgICwgbV9ncmFudWxhcml0eShncmFudWxhcml0eSkKICAgICAsIG1fcGhh
c2UocGhhc2UpCiAgICAgLCBtX21vbWVudHVtUGhhc2UobW9tZW50dW1QaGFzZSkKKyAgICAsIG1f
aGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcyhoYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzKQogewog
ICAgIEFTU0VSVChpc1doZWVsRXZlbnRUeXBlKHR5cGUpKTsKIH0KQEAgLTg4LDkgKzg5LDkgQEAg
dm9pZCBXZWJXaGVlbEV2ZW50OjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAog
I2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShHVEspIHx8IFVTRShMSUJXUEUpCiAgICAg
ZW5jb2RlciA8PCBtX3BoYXNlOwogICAgIGVuY29kZXIgPDwgbV9tb21lbnR1bVBoYXNlOworICAg
IGVuY29kZXIgPDwgbV9oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzOwogI2VuZGlmCiAjaWYgUExB
VEZPUk0oQ09DT0EpCi0gICAgZW5jb2RlciA8PCBtX2hhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXM7
CiAgICAgZW5jb2RlciA8PCBtX3Njcm9sbENvdW50OwogICAgIGVuY29kZXIgPDwgbV91bmFjY2Vs
ZXJhdGVkU2Nyb2xsaW5nRGVsdGE7CiAjZW5kaWYKQEAgLTExNywxMCArMTE4LDEwIEBAIGJvb2wg
V2ViV2hlZWxFdmVudDo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgV2ViV2hlZWxFdmVu
dCYgdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodC5t
X21vbWVudHVtUGhhc2UpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLSNpZiBQTEFU
Rk9STShDT0NPQSkKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHQubV9oYXNQcmVjaXNlU2Nyb2xs
aW5nRGVsdGFzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0Lm1fc2Nyb2xsQ291bnQpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0Lm1fdW5hY2NlbGVyYXRl
ZFNjcm9sbGluZ0RlbHRhKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYldo
ZWVsRXZlbnQuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYldoZWVsRXZlbnQuaAppbmRleCA2
MDk2NzA2NDAzZmNjNzA5NzY0MzAyZmZmMTQ1OTAxZmI0MWNjYzFlLi5lMDkxZGI4ZmI5MGMzOTk1
ZDA0N2Q0OTE2ZTU0ODMxNzcwY2RjNTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJXaGVlbEV2ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViV2hlZWxFdmVu
dC5oCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBX
ZWJXaGVlbEV2ZW50KFR5cGUsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb3NpdGlvbiwgY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFNpemUmIGRlbHRhLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHdoZWVsVGlja3MsIEdyYW51
bGFyaXR5LCBib29sIGRpcmVjdGlvbkludmVydGVkRnJvbURldmljZSwgUGhhc2UsIFBoYXNlIG1v
bWVudHVtUGhhc2UsIGJvb2wgaGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcywgdWludDMyX3Qgc2Ny
b2xsQ291bnQsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgdW5hY2NlbGVyYXRlZFNjcm9sbGlu
Z0RlbHRhLCBPcHRpb25TZXQ8TW9kaWZpZXI+LCBXYWxsVGltZSB0aW1lc3RhbXApOwogI2VsaWYg
UExBVEZPUk0oR1RLKSB8fCBVU0UoTElCV1BFKQotICAgIFdlYldoZWVsRXZlbnQoVHlwZSwgY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYg
Z2xvYmFsUG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgZGVsdGEsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0U2l6ZSYgd2hlZWxUaWNrcywgUGhhc2UsIFBoYXNlIG1vbWVudHVtUGhhc2Us
IEdyYW51bGFyaXR5LCBPcHRpb25TZXQ8TW9kaWZpZXI+LCBXYWxsVGltZSB0aW1lc3RhbXApOwor
ICAgIFdlYldoZWVsRXZlbnQoVHlwZSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvc2l0aW9u
LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6
OkZsb2F0U2l6ZSYgZGVsdGEsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgd2hlZWxUaWNrcywg
UGhhc2UsIFBoYXNlIG1vbWVudHVtUGhhc2UsIEdyYW51bGFyaXR5LCBib29sIGhhc1ByZWNpc2VT
Y3JvbGxpbmdEZWx0YXMsIE9wdGlvblNldDxNb2RpZmllcj4sIFdhbGxUaW1lIHRpbWVzdGFtcCk7
CiAjZW5kaWYKIAogICAgIGNvbnN0IFdlYkNvcmU6OkludFBvaW50IHBvc2l0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9wb3NpdGlvbjsgfQpAQCAtNjYsOCArNjYsMTAgQEAgcHVibGljOgogICAgIGJv
b2wgZGlyZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlKCkgY29uc3QgeyByZXR1cm4gbV9kaXJlY3Rp
b25JbnZlcnRlZEZyb21EZXZpY2U7IH0KICAgICBQaGFzZSBwaGFzZSgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PFBoYXNlPihtX3BoYXNlKTsgfQogICAgIFBoYXNlIG1vbWVudHVtUGhhc2Uo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxQaGFzZT4obV9tb21lbnR1bVBoYXNlKTsgfQot
I2lmIFBMQVRGT1JNKENPQ09BKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShHVEsp
IHx8IFVTRShMSUJXUEUpCiAgICAgYm9vbCBoYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzKCkgY29u
c3QgeyByZXR1cm4gbV9oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzOyB9CisjZW5kaWYKKyNpZiBQ
TEFURk9STShDT0NPQSkKICAgICB1aW50MzJfdCBzY3JvbGxDb3VudCgpIGNvbnN0IHsgcmV0dXJu
IG1fc2Nyb2xsQ291bnQ7IH0KICAgICBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHVuYWNjZWxl
cmF0ZWRTY3JvbGxpbmdEZWx0YSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5hY2NlbGVyYXRlZFNjcm9s
bGluZ0RlbHRhOyB9CiAjZW5kaWYKQEAgLTg2LDggKzg4LDEwIEBAIHByaXZhdGU6CiAgICAgdWlu
dDMyX3QgbV9waGFzZSB7IFBoYXNlOjpQaGFzZU5vbmUgfTsKICAgICB1aW50MzJfdCBtX21vbWVu
dHVtUGhhc2UgeyBQaGFzZTo6UGhhc2VOb25lIH07CiAgICAgYm9vbCBtX2RpcmVjdGlvbkludmVy
dGVkRnJvbURldmljZSB7IGZhbHNlIH07Ci0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgUExBVEZP
Uk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykgfHwgVVNFKExJQldQRSkKICAgICBib29sIG1faGFz
UHJlY2lzZVNjcm9sbGluZ0RlbHRhcyB7IGZhbHNlIH07CisjZW5kaWYKKyNpZiBQTEFURk9STShD
T0NPQSkKICAgICB1aW50MzJfdCBtX3Njcm9sbENvdW50IHsgMCB9OwogICAgIFdlYkNvcmU6OkZs
b2F0U2l6ZSBtX3VuYWNjZWxlcmF0ZWRTY3JvbGxpbmdEZWx0YTsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViV2hlZWxFdmVudENvYWxlc2Nlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJXaGVlbEV2ZW50Q29hbGVzY2VyLmNwcAppbmRleCA1NTk1OWRl
MzVjMzg3OWRmM2NlNDMxZDNkZDdhN2U3N2NlOWU4OTZiLi4xMjBkYjA2MjUwNWQ4ZjdkYTNjNDNl
OTY4NDAyMWUwODkxYmFiZGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJX
aGVlbEV2ZW50Q29hbGVzY2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJXaGVl
bEV2ZW50Q29hbGVzY2VyLmNwcApAQCAtNTksNiArNTksOCBAQCBib29sIFdlYldoZWVsRXZlbnRD
b2FsZXNjZXI6OmNhbkNvYWxlc2NlKGNvbnN0IFdlYldoZWVsRXZlbnQmIGEsIGNvbnN0IFdlYldo
ZWVsRQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGEubW9tZW50dW1QaGFzZSgpICE9
IGIubW9tZW50dW1QaGFzZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKyNpZiBQ
TEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oR1RLKSB8fCBVU0UoTElCV1BFKQogICAgIGlmIChh
Lmhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMoKSAhPSBiLmhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0
YXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCkBAIC03Nyw2ICs3OSw4IEBAIFdl
YldoZWVsRXZlbnQgV2ViV2hlZWxFdmVudENvYWxlc2Nlcjo6Y29hbGVzY2UoY29uc3QgV2ViV2hl
ZWxFdmVudCYgYSwgY29uc3QgV2ViCiAgICAgYXV0byBtZXJnZWRVbmFjY2VsZXJhdGVkU2Nyb2xs
aW5nRGVsdGEgPSBhLnVuYWNjZWxlcmF0ZWRTY3JvbGxpbmdEZWx0YSgpICsgYi51bmFjY2VsZXJh
dGVkU2Nyb2xsaW5nRGVsdGEoKTsKIAogICAgIHJldHVybiBXZWJXaGVlbEV2ZW50KFdlYkV2ZW50
OjpXaGVlbCwgYi5wb3NpdGlvbigpLCBiLmdsb2JhbFBvc2l0aW9uKCksIG1lcmdlZERlbHRhLCBt
ZXJnZWRXaGVlbFRpY2tzLCBiLmdyYW51bGFyaXR5KCksIGIuZGlyZWN0aW9uSW52ZXJ0ZWRGcm9t
RGV2aWNlKCksIGIucGhhc2UoKSwgYi5tb21lbnR1bVBoYXNlKCksIGIuaGFzUHJlY2lzZVNjcm9s
bGluZ0RlbHRhcygpLCBiLnNjcm9sbENvdW50KCksIG1lcmdlZFVuYWNjZWxlcmF0ZWRTY3JvbGxp
bmdEZWx0YSwgYi5tb2RpZmllcnMoKSwgYi50aW1lc3RhbXAoKSk7CisjZWxpZiBQTEFURk9STShH
VEspIHx8IFVTRShMSUJXUEUpCisgICAgcmV0dXJuIFdlYldoZWVsRXZlbnQoV2ViRXZlbnQ6Oldo
ZWVsLCBiLnBvc2l0aW9uKCksIGIuZ2xvYmFsUG9zaXRpb24oKSwgbWVyZ2VkRGVsdGEsIG1lcmdl
ZFdoZWVsVGlja3MsIGIucGhhc2UoKSwgYi5tb21lbnR1bVBoYXNlKCksIGIuZ3JhbnVsYXJpdHko
KSwgYi5oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzKCksIGIubW9kaWZpZXJzKCksIGIudGltZXN0
YW1wKCkpOwogI2Vsc2UKICAgICByZXR1cm4gV2ViV2hlZWxFdmVudChXZWJFdmVudDo6V2hlZWws
IGIucG9zaXRpb24oKSwgYi5nbG9iYWxQb3NpdGlvbigpLCBtZXJnZWREZWx0YSwgbWVyZ2VkV2hl
ZWxUaWNrcywgYi5ncmFudWxhcml0eSgpLCBiLm1vZGlmaWVycygpLCBiLnRpbWVzdGFtcCgpKTsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL05hdGl2ZVdlYldo
ZWVsRXZlbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL05hdGl2ZVdlYldoZWVs
RXZlbnRHdGsuY3BwCmluZGV4IDZlOTU2N2M0Yjk1YWM4NjYwMDZmMzRjMGQ5NDMxOGEzNjFiYjFm
N2YuLjQ4OGZiZWM5MzkxZDQ0ZTZiMWMyZmJiZDRlOTVlNGM3ZTZhNWFiZjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9OYXRpdmVXZWJXaGVlbEV2ZW50R3RrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvTmF0aXZlV2ViV2hlZWxFdmVudEd0ay5jcHAKQEAg
LTUwLDEyICs1MCwxMiBAQCBOYXRpdmVXZWJXaGVlbEV2ZW50OjpOYXRpdmVXZWJXaGVlbEV2ZW50
KEdka0V2ZW50KiBldmVudCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbgogfQogCiBOYXRpdmVXZWJX
aGVlbEV2ZW50OjpOYXRpdmVXZWJXaGVlbEV2ZW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBw
b3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFNpemUmIGRlbHRhLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHdoZWVs
VGlja3MsIFdlYldoZWVsRXZlbnQ6OlBoYXNlIHBoYXNlLCBXZWJXaGVlbEV2ZW50OjpQaGFzZSBt
b21lbnR1bVBoYXNlKQotICAgIDogV2ViV2hlZWxFdmVudChXZWJFdmVudDo6V2hlZWwsIHBvc2l0
aW9uLCBnbG9iYWxQb3NpdGlvbiwgZGVsdGEsIHdoZWVsVGlja3MsIHBoYXNlLCBtb21lbnR1bVBo
YXNlLCBXZWJXaGVlbEV2ZW50OjpTY3JvbGxCeVBpeGVsV2hlZWxFdmVudCwgeyB9LCBXYWxsVGlt
ZTo6bm93KCkpCisgICAgOiBXZWJXaGVlbEV2ZW50KFdlYkV2ZW50OjpXaGVlbCwgcG9zaXRpb24s
IGdsb2JhbFBvc2l0aW9uLCBkZWx0YSwgd2hlZWxUaWNrcywgcGhhc2UsIG1vbWVudHVtUGhhc2Us
IFdlYldoZWVsRXZlbnQ6OlNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50LCBmYWxzZSwgeyB9LCBXYWxs
VGltZTo6bm93KCkpCiB7CiB9CiAKIE5hdGl2ZVdlYldoZWVsRXZlbnQ6Ok5hdGl2ZVdlYldoZWVs
RXZlbnQoY29uc3QgTmF0aXZlV2ViV2hlZWxFdmVudCYgZXZlbnQpCi0gICAgOiBXZWJXaGVlbEV2
ZW50KGV2ZW50LnR5cGUoKSwgZXZlbnQucG9zaXRpb24oKSwgZXZlbnQuZ2xvYmFsUG9zaXRpb24o
KSwgZXZlbnQuZGVsdGEoKSwgZXZlbnQud2hlZWxUaWNrcygpLCBldmVudC5waGFzZSgpLCBldmVu
dC5tb21lbnR1bVBoYXNlKCksIGV2ZW50LmdyYW51bGFyaXR5KCksIGV2ZW50Lm1vZGlmaWVycygp
LCBldmVudC50aW1lc3RhbXAoKSkKKyAgICA6IFdlYldoZWVsRXZlbnQoZXZlbnQudHlwZSgpLCBl
dmVudC5wb3NpdGlvbigpLCBldmVudC5nbG9iYWxQb3NpdGlvbigpLCBldmVudC5kZWx0YSgpLCBl
dmVudC53aGVlbFRpY2tzKCksIGV2ZW50LnBoYXNlKCksIGV2ZW50Lm1vbWVudHVtUGhhc2UoKSwg
ZXZlbnQuZ3JhbnVsYXJpdHkoKSwgZXZlbnQuaGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcygpLCBl
dmVudC5tb2RpZmllcnMoKSwgZXZlbnQudGltZXN0YW1wKCkpCiAgICAgLCBtX25hdGl2ZUV2ZW50
KGV2ZW50Lm5hdGl2ZUV2ZW50KCkgPyBnZGtfZXZlbnRfY29weShldmVudC5uYXRpdmVFdmVudCgp
KSA6IG51bGxwdHIpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsv
V2ViRXZlbnRGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9XZWJFdmVudEZh
Y3RvcnkuY3BwCmluZGV4IGNjOTdjMjE3YmEyZWYzOTA3ZTY5MmYwNzM5YTJmYzA2YWU4MWY5Njku
LmNhNWNlNDhhODk5ZDU5OThhYTE5MzQ1M2VmZjYyYzI2MDE1ZjE3MjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuY3BwCkBAIC0yODgsNiArMjg4LDcgQEAg
V2ViV2hlZWxFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYldoZWVsRXZlbnQoY29uc3Qg
R2RrRXZlbnQqIGV2ZW50LCBjb25zdAogICAgICAgICBwaGFzZSwKICAgICAgICAgbW9tZW50dW1Q
aGFzZSwKICAgICAgICAgV2ViV2hlZWxFdmVudDo6U2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQsCisg
ICAgICAgIGZhbHNlLAogICAgICAgICBtb2RpZmllcnNGb3JFdmVudChldmVudCksCiAgICAgICAg
IHdhbGxUaW1lRm9yRXZlbnQoZXZlbnQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL2xpYndwZS9XZWJFdmVudEZhY3RvcnkuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
bGlid3BlL1dlYkV2ZW50RmFjdG9yeS5jcHAKaW5kZXggZjhhOTcxNTNkOWQ0ZDJlMGQxZjFiM2Jh
OWIyNjQ2MGFkOTM1NDNkNi4uYjA0MDFiZjcxMTk5NDkwYjU5NjFiMDBhNDllNGQ0OTg1ZjlmZWVk
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbGlid3BlL1dlYkV2ZW50RmFjdG9y
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbGlid3BlL1dlYkV2ZW50RmFjdG9yeS5j
cHAKQEAgLTE2NCw2ICsxNjQsNyBAQCBXZWJXaGVlbEV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3Jl
YXRlV2ViV2hlZWxFdmVudChzdHJ1Y3Qgd3BlX2lucHV0X2F4aXNfZXZlbnQqCiAKICAgICBXZWJD
b3JlOjpGbG9hdFNpemUgd2hlZWxUaWNrczsKICAgICBXZWJDb3JlOjpGbG9hdFNpemUgZGVsdGE7
CisgICAgYm9vbCBoYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzID0gZmFsc2U7CiAKICNpZiBXUEVf
Q0hFQ0tfVkVSU0lPTigxLCA1LCAwKQogICAgIGlmIChldmVudC0+dHlwZSAmIHdwZV9pbnB1dF9h
eGlzX2V2ZW50X3R5cGVfbWFza18yZCkgewpAQCAtMTc3LDYgKzE3OCw3IEBAIFdlYldoZWVsRXZl
bnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJXaGVlbEV2ZW50KHN0cnVjdCB3cGVfaW5wdXRf
YXhpc19ldmVudCoKICAgICAgICAgY2FzZSB3cGVfaW5wdXRfYXhpc19ldmVudF90eXBlX21vdGlv
bl9zbW9vdGg6CiAgICAgICAgICAgICB3aGVlbFRpY2tzID0gV2ViQ29yZTo6RmxvYXRTaXplKGV2
ZW50MkQtPnhfYXhpcyAvIGRldmljZVNjYWxlRmFjdG9yLCBldmVudDJELT55X2F4aXMgLyBkZXZp
Y2VTY2FsZUZhY3Rvcik7CiAgICAgICAgICAgICBkZWx0YSA9IHdoZWVsVGlja3M7CisgICAgICAg
ICAgICBoYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIFdlYldoZWVsRXZlbnQoKTsK
QEAgLTE4NCw3ICsxODYsNyBAQCBXZWJXaGVlbEV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRl
V2ViV2hlZWxFdmVudChzdHJ1Y3Qgd3BlX2lucHV0X2F4aXNfZXZlbnQqCiAKICAgICAgICAgcmV0
dXJuIFdlYldoZWVsRXZlbnQoV2ViRXZlbnQ6OldoZWVsLCBwb3NpdGlvbiwgcG9zaXRpb24sCiAg
ICAgICAgICAgICBkZWx0YSwgd2hlZWxUaWNrcywgcGhhc2UsIG1vbWVudHVtUGhhc2UsCi0gICAg
ICAgICAgICBXZWJXaGVlbEV2ZW50OjpTY3JvbGxCeVBpeGVsV2hlZWxFdmVudCwKKyAgICAgICAg
ICAgIFdlYldoZWVsRXZlbnQ6OlNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50LCBoYXNQcmVjaXNlU2Ny
b2xsaW5nRGVsdGFzLAogICAgICAgICAgICAgT3B0aW9uU2V0PFdlYkV2ZW50OjpNb2RpZmllcj4g
eyB9LCB3YWxsVGltZUZvckV2ZW50VGltZShldmVudC0+dGltZSkpOwogICAgIH0KICNlbmRpZgpA
QCAtMjEwLDYgKzIxMiw3IEBAIFdlYldoZWVsRXZlbnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVX
ZWJXaGVlbEV2ZW50KHN0cnVjdCB3cGVfaW5wdXRfYXhpc19ldmVudCoKICAgICBjYXNlIFNtb290
aDoKICAgICAgICAgd2hlZWxUaWNrcyA9IFdlYkNvcmU6OkZsb2F0U2l6ZSgwLCBldmVudC0+dmFs
dWUgLyBkZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgICAgIGRlbHRhID0gd2hlZWxUaWNrczsKKyAg
ICAgICAgaGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcyA9IHRydWU7CiAgICAgICAgIGJyZWFrOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBXZWJXaGVlbEV2ZW50KCk7CkBAIC0yMTcsNyAr
MjIwLDcgQEAgV2ViV2hlZWxFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYldoZWVsRXZl
bnQoc3RydWN0IHdwZV9pbnB1dF9heGlzX2V2ZW50KgogCiAgICAgcmV0dXJuIFdlYldoZWVsRXZl
bnQoV2ViRXZlbnQ6OldoZWVsLCBwb3NpdGlvbiwgcG9zaXRpb24sCiAgICAgICAgIGRlbHRhLCB3
aGVlbFRpY2tzLCBwaGFzZSwgbW9tZW50dW1QaGFzZSwKLSAgICAgICAgV2ViV2hlZWxFdmVudDo6
U2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQsCisgICAgICAgIFdlYldoZWVsRXZlbnQ6OlNjcm9sbEJ5
UGl4ZWxXaGVlbEV2ZW50LCBoYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzLAogICAgICAgICBPcHRp
b25TZXQ8V2ViRXZlbnQ6Ok1vZGlmaWVyPiB7IH0sIHdhbGxUaW1lRm9yRXZlbnRUaW1lKGV2ZW50
LT50aW1lKSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411434</attachid>
            <date>2020-10-15 06:11:46 -0700</date>
            <delta_ts>2020-10-15 06:47:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210382-20201015141144.patch</filename>
            <type>text/plain</type>
            <size>43575</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4Mzg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWI2ZGMyNTExMWFmYjdh
ZTlhNDI0MDFmYTU4MTg1NjFkYzMyOTI1MS4uNGIyYjA0MzE5NzQ5N2VjZjk3ZGYwMGIwNmVmNjBj
ZTQyY2YwYzUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDIwLTEwLTEzICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIEFkZCBzdXBw
b3J0IGZvciBzbW9vdGggc2Nyb2xsaW5nIGFuaW1hdGlvbiB3aXRoIGFzeW5jIHNjcm9sbGluZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMzgyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQ2FybG9zIEdhcmNpYSBDYW1wb3MuCisKKyAgICAgICAgUmVz
cGVjdCBzbW9vdGgtc2Nyb2xsaW5nIHNldHRpbmcgYW5kIGZpeCBkZWFkbG9jayBpc3N1ZXMgd2l0
aCBhc3luYworICAgICAgICBzY3JvbGxpbmcgb24gbmljb3NpYSBwYXRoLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cywgbm8gZnVuY3Rpb25hbCBjaGFuZ2UuCisKKyAgICAgICAgKiBwYWdlL3Njcm9s
bGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFz
eW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNjcm9sbEFuaW1hdG9yRW5hYmxlZCBjb25zdCk6Cisg
ICAgICAgICogcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5oOgorICAg
ICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUaHJlYWRlZFNjcm9sbGluZ1RyZWU6OlRocmVhZGVkU2Nyb2xsaW5nVHJlZSk6
CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpUaHJlYWRlZFNjcm9sbGluZ1RyZWU6OnNjcm9sbEFuaW1hdG9yRW5hYmxl
ZCBjb25zdCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVl
RnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxp
bmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xs
aW5nTm9kZU5pY29zaWEpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZU5pY29zaWE6OmNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbik6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYTo6ZW5zdXJlU2Ny
b2xsQW5pbWF0aW9uS2luZXRpYyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJh
bWVTY3JvbGxpbmdOb2RlTmljb3NpYTo6ZW5zdXJlU2Nyb2xsQW5pbWF0aW9uU21vb3RoKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjpo
YW5kbGVXaGVlbEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGVOaWNvc2lhOjpzdG9wU2Nyb2xsQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYTo6cmVwb3NpdGlvblJl
bGF0ZWRMYXllcnMpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5n
VHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGlu
Zy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNv
c2lhOjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYSk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYTo6Y29t
bWl0U3RhdGVBZnRlckNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVP
dmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhOjpyZXBvc2l0aW9uU2Nyb2xsaW5nTGF5ZXJzKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNv
c2lhOjplbnN1cmVTY3JvbGxBbmltYXRpb25LaW5ldGljKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhOjplbnN1cmVTY3JvbGxBbmlt
YXRpb25TbW9vdGgpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Ny
b2xsaW5nTm9kZU5pY29zaWE6OmhhbmRsZVdoZWVsRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWE6OnN0b3BTY3JvbGxBbmlt
YXRpb25zKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVP
dmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZv
cm1XaGVlbEV2ZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxBbmltYXRpb25LaW5ldGljOjppc0FjdGl2ZSBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5oOgorICAgICAgICAqIHBsYXRmb3Jt
L1Njcm9sbEFuaW1hdGlvblNtb290aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmlt
YXRpb25TbW9vdGg6OnNjcm9sbCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25T
bW9vdGg6OmlzQWN0aXZlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRp
b25TbW9vdGguaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2Vu
ZXJpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvckdlbmVyaWM6OmVuc3Vy
ZVNtb290aFNjcm9sbGluZ0FuaW1hdGlvbik6CisKIDIwMjAtMTAtMTMgIEtpbW1vIEtpbm51bmVu
ICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBDb2NvYTogTWFrZSBXZWJHTExheWVy
IG5vdCBkZXBlbmRlbnQgb24gIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGIz
OTAzMDNmZDAxNTFiZjU3ZWEzMTkxZjIyZWVhMmRlZGRkODIwNGEuLjc0OTMwMDdjZmY3MzUyNjM1
ODgyODc4YjVmMjg4Njg3MzhkYTlkNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjAt
MTAtMTMgIENocmlzIExvcmQgIDxjbG9yZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dQ
RV0gQWRkIHN1cHBvcnQgZm9yIHNtb290aCBzY3JvbGxpbmcgYW5pbWF0aW9uIHdpdGggYXN5bmMg
c2Nyb2xsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTAzODIKKworICAgICAgICBSZXZpZXdlZCBieSBDYXJsb3MgR2FyY2lhIENhbXBvcy4KKwor
ICAgICAgICBBZGQgaGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcyB0byBHVEsvV1BFIHdoZWVsIGV2
ZW50cy4KKworICAgICAgICBObyBuZXcgdGVzdHMgbmVlZGVkLgorCisgICAgICAgICogU2hhcmVk
L1dlYkV2ZW50Q29udmVyc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYktpdDJQbGF0Zm9y
bVdoZWVsRXZlbnQ6OldlYktpdDJQbGF0Zm9ybVdoZWVsRXZlbnQpOgorICAgICAgICAqIFNoYXJl
ZC9XZWJXaGVlbEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViV2hlZWxFdmVudDo6V2Vi
V2hlZWxFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYldoZWVsRXZlbnQ6OmVuY29kZSBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYldoZWVsRXZlbnQ6OmRlY29kZSk6CisgICAgICAgICog
U2hhcmVkL1dlYldoZWVsRXZlbnQuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViV2hlZWxFdmVudENv
YWxlc2Nlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYldoZWVsRXZlbnRDb2FsZXNjZXI6OmNh
bkNvYWxlc2NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViV2hlZWxFdmVudENvYWxlc2Nlcjo6Y29h
bGVzY2UpOgorICAgICAgICAqIFNoYXJlZC9ndGsvTmF0aXZlV2ViV2hlZWxFdmVudEd0ay5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5hdGl2ZVdlYldoZWVsRXZlbnQ6Ok5hdGl2ZVdlYldoZWVsRXZl
bnQpOgorICAgICAgICAqIFNoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJXaGVlbEV2ZW50KToKKyAgICAgICAg
KiBTaGFyZWQvbGlid3BlL1dlYkV2ZW50RmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViV2hlZWxFdmVudCk6CisKIDIwMjAtMTAtMTMgIEtpbW1v
IEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBDb2NvYTogTWFrZSBX
ZWJHTExheWVyIG5vdCBkZXBlbmRlbnQgb24gIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuY3BwCmluZGV4IGYxMzkyMzcxYmRiMjMzMzU4ZTNiNDUzZTUzNWViMzljMmU5
OGQ3OTguLjMwMzc5MDA2ZTM2ZDA0ZGZjMTM0MTcxZjI3NzQwNmU5N2FmMDI0YjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuY3BwCkBAIC05NTcsNiArOTU3LDE1IEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdD
b29yZGluYXRvcjo6cmVwb3J0U3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zQ2hhbmdlZChNb25v
dG9uCiAgICAgICAgIG1fcGFnZS0+cGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50KCktPmxvZ1Njcm9s
bGluZ0V2ZW50KFBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudDo6U2Nyb2xsaW5nRXZlbnQ6OlN3aXRj
aGVkU2Nyb2xsaW5nTW9kZSwgdGltZXN0YW1wLCByZWFzb25zLnRvUmF3KCkpOwogfQogCisjaWYg
RU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCitib29sIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6
OnNjcm9sbEFuaW1hdG9yRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyAgICBhdXRvJiBzZXR0aW5ncyA9IG1fcGFnZS0+bWFpbkZyYW1lKCkuc2V0dGluZ3Mo
KTsKKyAgICByZXR1cm4gc2V0dGluZ3Muc2Nyb2xsQW5pbWF0b3JFbmFibGVkKCk7Cit9CisjZW5k
aWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1ND
Uk9MTElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5j
U2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0Fz
eW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAppbmRleCA5MGQxYzI5ZGMxYjA5OGQ3M2U1YjNmOTI3
MGU5ZWU4MjI4ZGUxYTE3Li41NjY3OGI3YzNhOTQ4MGIwZjZjMTE0ZGY3Y2M3YzZjZTFiYWZiYTc3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNT
Y3JvbGxpbmdDb29yZGluYXRvci5oCkBAIC03MSw2ICs3MSwxMCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCByZXBvcnRFeHBvc2VkVW5maWxsZWRBcmVhKE1vbm90b25pY1RpbWUsIHVuc2lnbmVkIHVuZmls
bGVkQXJlYSk7CiAgICAgdm9pZCByZXBvcnRTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnNDaGFu
Z2VkKE1vbm90b25pY1RpbWUsIE9wdGlvblNldDxTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbj4p
OwogCisjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCisgICAgYm9vbCBzY3JvbGxBbmltYXRv
ckVuYWJsZWQoKSBjb25zdDsKKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09SRV9FWFBP
UlQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcihQYWdlKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuY3BwCmluZGV4
IDIzZjVmMGVmZjA1NTg4YWYyODBiODZkOTdlNGMyYmJkZDFlYzJlMmIuLmE5YTliNTllOTlkODU2
NDkzYmQ3NWZmMGFlM2Y1YjFlMjk4OGEzOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmNwcApAQCAtNDcsNiArNDcs
OSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBUaHJlYWRlZFNjcm9sbGluZ1RyZWU6OlRocmVhZGVk
U2Nyb2xsaW5nVHJlZShBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yJiBzY3JvbGxpbmdDb29yZGlu
YXRvcikKICAgICA6IG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3IoJnNjcm9sbGluZ0Nvb3JkaW5hdG9y
KQogeworI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQorICAgIG1fc2Nyb2xsQW5pbWF0b3JF
bmFibGVkID0gc2Nyb2xsaW5nQ29vcmRpbmF0b3Iuc2Nyb2xsQW5pbWF0b3JFbmFibGVkKCk7Cisj
ZW5kaWYKIH0KIAogVGhyZWFkZWRTY3JvbGxpbmdUcmVlOjp+VGhyZWFkZWRTY3JvbGxpbmdUcmVl
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Ny
b2xsaW5nVHJlZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3Jv
bGxpbmdUcmVlLmgKaW5kZXggYjI1ZmYxNGNhMTJjYjI4YTdjYTE5ZjAyYWIxYWZhYzQ4NmE5NTEz
Zi4uNzc3YjVjNTU2MzA4N2JmOWIyMDU5OGI3OWVjNjExOTNmNDdkZmViNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmgK
QEAgLTU4LDYgKzU4LDggQEAgcHVibGljOgogCiAgICAgTG9jayYgdHJlZU11dGV4KCkgeyByZXR1
cm4gbV90cmVlTXV0ZXg7IH0KIAorICAgIGJvb2wgc2Nyb2xsQW5pbWF0b3JFbmFibGVkKCkgY29u
c3QgeyByZXR1cm4gbV9zY3JvbGxBbmltYXRvckVuYWJsZWQ7IH0KKwogcHJvdGVjdGVkOgogICAg
IGV4cGxpY2l0IFRocmVhZGVkU2Nyb2xsaW5nVHJlZShBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9y
Jik7CiAKQEAgLTEwMyw2ICsxMDUsOCBAQCBwcml2YXRlOgogCiAgICAgLy8gRHluYW1pY2FsbHkg
YWxsb2NhdGVkIGJlY2F1c2UgaXQgaGFzIHRvIHVzZSB0aGUgU2Nyb2xsaW5nVGhyZWFkJ3MgcnVu
bG9vcC4KICAgICBzdGQ6OnVuaXF1ZV9wdHI8UnVuTG9vcDo6VGltZXI8VGhyZWFkZWRTY3JvbGxp
bmdUcmVlPj4gbV9kZWxheWVkUmVuZGVyaW5nVXBkYXRlRGV0ZWN0aW9uVGltZXI7CisKKyAgICBi
b29sIG1fc2Nyb2xsQW5pbWF0b3JFbmFibGVkIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25p
Y29zaWEvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxp
bmdOb2RlTmljb3NpYS5jcHAKaW5kZXggMDhiNWU1ZTRmNmYwZjU5Zjk4YjUyMGIyOGM5OTg1ZDNi
MTVjMDU5Ny4uNTYyY2Q4NjgxMTlhMGZjZTI5MTM0NTNlMGFlOTZkNDE5N2VjYzQwNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVl
RnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYS5j
cHAKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmlj
b3NpYVBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xs
aW5nTm9kZS5oIgotI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWUuaCIKKyNpbmNsdWRlICJUaHJlYWRl
ZFNjcm9sbGluZ1RyZWUuaCIKIAogI2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykKICNpbmNs
dWRlICJTY3JvbGxBbmltYXRpb25LaW5ldGljLmgiCkBAIC01NCw0MCArNTQsNyBAQCBSZWY8U2Ny
b2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZT4gU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5n
Tm9kZU5pY29zaWE6OmNyZQogU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWE6
OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhKFNjcm9sbGluZ1RyZWUmIHNj
cm9sbGluZ1RyZWUsIFNjcm9sbGluZ05vZGVUeXBlIG5vZGVUeXBlLCBTY3JvbGxpbmdOb2RlSUQg
bm9kZUlEKQogICAgIDogU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZShzY3JvbGxpbmdU
cmVlLCBub2RlVHlwZSwgbm9kZUlEKQogewotI2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykK
LSAgICBtX2tpbmV0aWNBbmltYXRpb24gPSBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlvbktpbmV0
aWM+KAotICAgICAgICBbdGhpc10oKSAtPiBTY3JvbGxFeHRlbnRzIHsKLSAgICAgICAgICAgIHJl
dHVybiB7IEludFBvaW50KG1pbmltdW1TY3JvbGxQb3NpdGlvbigpKSwgSW50UG9pbnQobWF4aW11
bVNjcm9sbFBvc2l0aW9uKCkpLCBJbnRTaXplKHNjcm9sbGFibGVBcmVhU2l6ZSgpKSB9OwotICAg
ICAgICB9LAotICAgICAgICBbdGhpc10oRmxvYXRQb2ludCYmIHBvc2l0aW9uKSB7Ci0jaWYgRU5B
QkxFKFNNT09USF9TQ1JPTExJTkcpCi0gICAgICAgICAgICBtX3Ntb290aEFuaW1hdGlvbi0+c2V0
Q3VycmVudFBvc2l0aW9uKHBvc2l0aW9uKTsKLSNlbmRpZgotCi0gICAgICAgICAgICBhdXRvKiBz
Y3JvbGxMYXllciA9IHN0YXRpY19jYXN0PE5pY29zaWE6OlBsYXRmb3JtTGF5ZXIqPihzY3JvbGxl
ZENvbnRlbnRzTGF5ZXIoKSk7Ci0gICAgICAgICAgICBBU1NFUlQoc2Nyb2xsTGF5ZXIpOwotICAg
ICAgICAgICAgYXV0byYgY29tcG9zaXRpb25MYXllciA9IGRvd25jYXN0PE5pY29zaWE6OkNvbXBv
c2l0aW9uTGF5ZXI+KCpzY3JvbGxMYXllcik7Ci0KLSAgICAgICAgICAgIGF1dG8gdXBkYXRlU2Nv
cGUgPSBjb21wb3NpdGlvbkxheWVyLmNyZWF0ZVVwZGF0ZVNjb3BlKCk7Ci0gICAgICAgICAgICBz
Y3JvbGxUbyhwb3NpdGlvbik7Ci0gICAgICAgIH0pOwotI2VuZGlmCi0jaWYgRU5BQkxFKFNNT09U
SF9TQ1JPTExJTkcpCi0gICAgbV9zbW9vdGhBbmltYXRpb24gPSBtYWtlVW5pcXVlPFNjcm9sbEFu
aW1hdGlvblNtb290aD4oCi0gICAgICAgIFt0aGlzXSgpIC0+IFNjcm9sbEV4dGVudHMgewotICAg
ICAgICAgICAgcmV0dXJuIHsgSW50UG9pbnQobWluaW11bVNjcm9sbFBvc2l0aW9uKCkpLCBJbnRQ
b2ludChtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSksIEludFNpemUoc2Nyb2xsYWJsZUFyZWFTaXpl
KCkpIH07Ci0gICAgICAgIH0sCi0gICAgICAgIGN1cnJlbnRTY3JvbGxQb3NpdGlvbigpLAotICAg
ICAgICBbdGhpc10oRmxvYXRQb2ludCYmIHBvc2l0aW9uKSB7Ci0gICAgICAgICAgICBhdXRvKiBz
Y3JvbGxMYXllciA9IHN0YXRpY19jYXN0PE5pY29zaWE6OlBsYXRmb3JtTGF5ZXIqPihzY3JvbGxl
ZENvbnRlbnRzTGF5ZXIoKSk7Ci0gICAgICAgICAgICBBU1NFUlQoc2Nyb2xsTGF5ZXIpOwotICAg
ICAgICAgICAgYXV0byYgY29tcG9zaXRpb25MYXllciA9IGRvd25jYXN0PE5pY29zaWE6OkNvbXBv
c2l0aW9uTGF5ZXI+KCpzY3JvbGxMYXllcik7Ci0KLSAgICAgICAgICAgIGF1dG8gdXBkYXRlU2Nv
cGUgPSBjb21wb3NpdGlvbkxheWVyLmNyZWF0ZVVwZGF0ZVNjb3BlKCk7Ci0gICAgICAgICAgICBz
Y3JvbGxUbyhwb3NpdGlvbik7Ci0gICAgICAgIH0sCi0gICAgICAgIFtdIHsgfSk7Ci0jZW5kaWYK
KyAgICBtX3Njcm9sbEFuaW1hdG9yRW5hYmxlZCA9IGRvd25jYXN0PFRocmVhZGVkU2Nyb2xsaW5n
VHJlZT4oc2Nyb2xsaW5nVHJlZSkuc2Nyb2xsQW5pbWF0b3JFbmFibGVkKCk7CiB9CiAKIFNjcm9s
bGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjp+U2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZU5pY29zaWEoKSA9IGRlZmF1bHQ7CkBAIC0xMzYsMTcgKzEwMyw2OCBAQCB2b2lk
IFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjpjb21taXRTdGF0ZUFmdGVy
Q2hpbGRyZW4oY29uc3QgU2NybwogICAgICAgICBjb25zdCBhdXRvJiByZXF1ZXN0ZWRTY3JvbGxE
YXRhID0gc2Nyb2xsaW5nU3RhdGVOb2RlLnJlcXVlc3RlZFNjcm9sbERhdGEoKTsKICAgICAgICAg
c2Nyb2xsVG8ocmVxdWVzdGVkU2Nyb2xsRGF0YS5zY3JvbGxQb3NpdGlvbiwgcmVxdWVzdGVkU2Ny
b2xsRGF0YS5zY3JvbGxUeXBlLCByZXF1ZXN0ZWRTY3JvbGxEYXRhLmNsYW1waW5nKTsKICNpZiBF
TkFCTEUoU01PT1RIX1NDUk9MTElORykKLSAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnNldEN1
cnJlbnRQb3NpdGlvbihjdXJyZW50U2Nyb2xsUG9zaXRpb24oKSk7CisgICAgICAgIGlmIChtX3Nt
b290aEFuaW1hdGlvbikKKyAgICAgICAgICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zZXRDdXJyZW50
UG9zaXRpb24oY3VycmVudFNjcm9sbFBvc2l0aW9uKCkpOwogI2VuZGlmCiAgICAgfQogfQogCisj
aWYgRU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKQordm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlTmljb3NpYTo6ZW5zdXJlU2Nyb2xsQW5pbWF0aW9uS2luZXRpYygpCit7CisgICAg
aWYgKG1fa2luZXRpY0FuaW1hdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9raW5ldGlj
QW5pbWF0aW9uID0gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRpb25LaW5ldGljPigKKyAgICAgICAg
W3RoaXNdKCkgLT4gU2Nyb2xsRXh0ZW50cyB7CisgICAgICAgICAgICByZXR1cm4geyBJbnRQb2lu
dChtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSksIEludFBvaW50KG1heGltdW1TY3JvbGxQb3NpdGlv
bigpKSwgSW50U2l6ZShzY3JvbGxhYmxlQXJlYVNpemUoKSkgfTsKKyAgICAgICAgfSwKKyAgICAg
ICAgW3RoaXNdKEZsb2F0UG9pbnQmJiBwb3NpdGlvbikgeworI2lmIEVOQUJMRShTTU9PVEhfU0NS
T0xMSU5HKQorICAgICAgICAgICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKQorICAgICAgICAgICAg
ICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zZXRDdXJyZW50UG9zaXRpb24ocG9zaXRpb24pOworI2Vu
ZGlmCisKKyAgICAgICAgICAgIGF1dG8qIHNjcm9sbExheWVyID0gc3RhdGljX2Nhc3Q8Tmljb3Np
YTo6UGxhdGZvcm1MYXllcio+KHNjcm9sbGVkQ29udGVudHNMYXllcigpKTsKKyAgICAgICAgICAg
IEFTU0VSVChzY3JvbGxMYXllcik7CisgICAgICAgICAgICBhdXRvJiBjb21wb3NpdGlvbkxheWVy
ID0gZG93bmNhc3Q8Tmljb3NpYTo6Q29tcG9zaXRpb25MYXllcj4oKnNjcm9sbExheWVyKTsKKwor
ICAgICAgICAgICAgYXV0byB1cGRhdGVTY29wZSA9IGNvbXBvc2l0aW9uTGF5ZXIuY3JlYXRlVXBk
YXRlU2NvcGUoKTsKKyAgICAgICAgICAgIHNjcm9sbFRvKHBvc2l0aW9uKTsKKyAgICAgICAgfSk7
Cit9CisjZW5kaWYKKworI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQordm9pZCBTY3JvbGxp
bmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYTo6ZW5zdXJlU2Nyb2xsQW5pbWF0aW9uU21v
b3RoKCkKK3sKKyAgICBpZiAobV9zbW9vdGhBbmltYXRpb24pCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fc21vb3RoQW5pbWF0aW9uID0gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRpb25TbW9vdGg+
KAorICAgICAgICBbdGhpc10oKSAtPiBTY3JvbGxFeHRlbnRzIHsKKyAgICAgICAgICAgIHJldHVy
biB7IEludFBvaW50KG1pbmltdW1TY3JvbGxQb3NpdGlvbigpKSwgSW50UG9pbnQobWF4aW11bVNj
cm9sbFBvc2l0aW9uKCkpLCBJbnRTaXplKHNjcm9sbGFibGVBcmVhU2l6ZSgpKSB9OworICAgICAg
ICB9LAorICAgICAgICBjdXJyZW50U2Nyb2xsUG9zaXRpb24oKSwKKyAgICAgICAgW3RoaXNdKEZs
b2F0UG9pbnQmJiBwb3NpdGlvbikgeworICAgICAgICAgICAgYXV0byogc2Nyb2xsTGF5ZXIgPSBz
dGF0aWNfY2FzdDxOaWNvc2lhOjpQbGF0Zm9ybUxheWVyKj4oc2Nyb2xsZWRDb250ZW50c0xheWVy
KCkpOworICAgICAgICAgICAgQVNTRVJUKHNjcm9sbExheWVyKTsKKyAgICAgICAgICAgIGF1dG8m
IGNvbXBvc2l0aW9uTGF5ZXIgPSBkb3duY2FzdDxOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyPigq
c2Nyb2xsTGF5ZXIpOworCisgICAgICAgICAgICBhdXRvIHVwZGF0ZVNjb3BlID0gY29tcG9zaXRp
b25MYXllci5jcmVhdGVVcGRhdGVTY29wZSgpOworICAgICAgICAgICAgc2Nyb2xsVG8ocG9zaXRp
b24pOworICAgICAgICB9LAorICAgICAgICBbXSB7IH0pOworfQorI2VuZGlmCisKIFdoZWVsRXZl
bnRIYW5kbGluZ1Jlc3VsdCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYTo6
aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCiB7
CiAgICAgaWYgKCFjYW5IYW5kbGVXaGVlbEV2ZW50KHdoZWVsRXZlbnQpKQogICAgICAgICByZXR1
cm4gV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0Ojp1bmhhbmRsZWQoKTsKIAogI2lmIEVOQUJMRShL
SU5FVElDX1NDUk9MTElORykKKyAgICBlbnN1cmVTY3JvbGxBbmltYXRpb25LaW5ldGljKCk7CiAg
ICAgbV9raW5ldGljQW5pbWF0aW9uLT5hcHBlbmRUb1Njcm9sbEhpc3Rvcnkod2hlZWxFdmVudCk7
CiAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5zdG9wKCk7CiAgICAgaWYgKHdoZWVsRXZlbnQuaXNF
bmRPZk5vbk1vbWVudHVtU2Nyb2xsKCkpIHsKQEAgLTE4OSwxNiArMjA3LDIwIEBAIFdoZWVsRXZl
bnRIYW5kbGluZ1Jlc3VsdCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYTo6
aGFuZGxlV2hlZWxFdmVuCiAgICAgfQogCiAjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0g
ICAgbV9zbW9vdGhBbmltYXRpb24tPnNjcm9sbChIb3Jpem9udGFsU2Nyb2xsYmFyLCBTY3JvbGxC
eVBpeGVsLCAxLCAtZGVsdGFYKTsKLSAgICBtX3Ntb290aEFuaW1hdGlvbi0+c2Nyb2xsKFZlcnRp
Y2FsU2Nyb2xsYmFyLCBTY3JvbGxCeVBpeGVsLCAxLCAtZGVsdGFZKTsKLSNlbHNlCisgICAgaWYg
KG1fc2Nyb2xsQW5pbWF0b3JFbmFibGVkICYmICF3aGVlbEV2ZW50Lmhhc1ByZWNpc2VTY3JvbGxp
bmdEZWx0YXMoKSkgeworICAgICAgICBlbnN1cmVTY3JvbGxBbmltYXRpb25TbW9vdGgoKTsKKyAg
ICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnNjcm9sbChIb3Jpem9udGFsU2Nyb2xsYmFyLCBTY3Jv
bGxCeVBpeGVsLCAxLCAtZGVsdGFYKTsKKyAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnNjcm9s
bChWZXJ0aWNhbFNjcm9sbGJhciwgU2Nyb2xsQnlQaXhlbCwgMSwgLWRlbHRhWSk7CisgICAgICAg
IHJldHVybiBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQ6OmhhbmRsZWQoKTsKKyAgICB9CisjZW5k
aWYKKwogICAgIGF1dG8qIHNjcm9sbExheWVyID0gc3RhdGljX2Nhc3Q8Tmljb3NpYTo6UGxhdGZv
cm1MYXllcio+KHNjcm9sbGVkQ29udGVudHNMYXllcigpKTsKICAgICBBU1NFUlQoc2Nyb2xsTGF5
ZXIpOwogICAgIGF1dG8mIGNvbXBvc2l0aW9uTGF5ZXIgPSBkb3duY2FzdDxOaWNvc2lhOjpDb21w
b3NpdGlvbkxheWVyPigqc2Nyb2xsTGF5ZXIpOwogCiAgICAgYXV0byB1cGRhdGVTY29wZSA9IGNv
bXBvc2l0aW9uTGF5ZXIuY3JlYXRlVXBkYXRlU2NvcGUoKTsKICAgICBzY3JvbGxCeSh7IC1kZWx0
YVgsIC1kZWx0YVkgfSk7Ci0jZW5kaWYKIAogICAgIHJldHVybiBXaGVlbEV2ZW50SGFuZGxpbmdS
ZXN1bHQ6OmhhbmRsZWQoKTsKIH0KQEAgLTIwNiwxMSArMjI4LDE0IEBAIFdoZWVsRXZlbnRIYW5k
bGluZ1Jlc3VsdCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYTo6aGFuZGxl
V2hlZWxFdmVuCiB2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjpz
dG9wU2Nyb2xsQW5pbWF0aW9ucygpCiB7CiAjaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKQot
ICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+c3RvcCgpOwotICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+
Y2xlYXJTY3JvbGxIaXN0b3J5KCk7CisgICAgaWYgKG1fa2luZXRpY0FuaW1hdGlvbikgeworICAg
ICAgICBtX2tpbmV0aWNBbmltYXRpb24tPnN0b3AoKTsKKyAgICAgICAgbV9raW5ldGljQW5pbWF0
aW9uLT5jbGVhclNjcm9sbEhpc3RvcnkoKTsKKyAgICB9CiAjZW5kaWYKICNpZiBFTkFCTEUoU01P
T1RIX1NDUk9MTElORykKLSAgICBtX3Ntb290aEFuaW1hdGlvbi0+c3RvcCgpOworICAgIGlmICht
X3Ntb290aEFuaW1hdGlvbikKKyAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnN0b3AoKTsKICNl
bmRpZgogfQogCkBAIC0yODksNiArMzE0LDExIEBAIHZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZU5pY29zaWE6OnJlcG9zaXRpb25SZWxhdGVkTGF5ZXJzKCkKICAgICAgICAgaWYg
KG1fZm9vdGVyTGF5ZXIpCiAgICAgICAgICAgICBhcHBseUxheWVyUG9zaXRpb24oKm1fZm9vdGVy
TGF5ZXIsIEZsb2F0UG9pbnQoaG9yaXpvbnRhbFNjcm9sbE9mZnNldEZvckJhbm5lciwgRnJhbWVW
aWV3Ojp5UG9zaXRpb25Gb3JGb290ZXJMYXllcihzY3JvbGxQb3NpdGlvbiwgdG9wQ29udGVudElu
c2V0LCB0b3RhbENvbnRlbnRzU2l6ZSgpLmhlaWdodCgpLCBmb290ZXJIZWlnaHQoKSkpKTsKICAg
ICB9CisKKyNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKKyAgICBpZiAobV9zbW9vdGhBbmlt
YXRpb24pCisgICAgICAgIG1fc21vb3RoQW5pbWF0aW9uLT51cGRhdGVWaXNpYmxlTGVuZ3Rocygp
OworI2VuZGlmCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xs
aW5nTm9kZU5pY29zaWEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEv
U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEuaAppbmRleCA1MDU0YmViZmVj
ZmRiNmY5YjgxN2YzY2VkM2JiZDNhOTkxYzM4ZjkzLi42MDQwNzk4ODA2MTEyZWU2ZWM4MjU4MjYy
NTc4Yzk0MzRjYmQ3ZDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlTmljb3NpYS5oCkBAIC01Myw2ICs1MywxMyBAQCBwcml2YXRlOgogICAgIHZv
aWQgY29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmKSBv
dmVycmlkZTsKICAgICB2b2lkIGNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbihjb25zdCBTY3JvbGxp
bmdTdGF0ZU5vZGUmKSBvdmVycmlkZTsKIAorI2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykK
KyAgICB2b2lkIGVuc3VyZVNjcm9sbEFuaW1hdGlvbktpbmV0aWMoKTsKKyNlbmRpZgorI2lmIEVO
QUJMRShTTU9PVEhfU0NST0xMSU5HKQorICAgIHZvaWQgZW5zdXJlU2Nyb2xsQW5pbWF0aW9uU21v
b3RoKCk7CisjZW5kaWYKKwogICAgIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdCBoYW5kbGVXaGVl
bEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBz
dG9wU2Nyb2xsQW5pbWF0aW9ucygpIG92ZXJyaWRlOwpAQCAtNzEsNiArNzgsNyBAQCBwcml2YXRl
OgogICAgIFJlZlB0cjxOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyPiBtX2hlYWRlckxheWVyOwog
ICAgIFJlZlB0cjxOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyPiBtX2Zvb3RlckxheWVyOwogCisg
ICAgYm9vbCBtX3Njcm9sbEFuaW1hdG9yRW5hYmxlZCB7IGZhbHNlIH07CiAjaWYgRU5BQkxFKEtJ
TkVUSUNfU0NST0xMSU5HKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRpb25LaW5l
dGljPiBtX2tpbmV0aWNBbmltYXRpb247CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5n
Tm9kZU5pY29zaWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9T
Y3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYS5jcHAKaW5kZXggMDY5YWQ0
ZjkyM2ZjYzY1NDMwYTk0ZmJjZjQ1ODNmNWVlOGJiZmQyYS4uNjRkOGE1OGMxNDFlYzU3ODlkYWVj
MGI4OWMxN2Y3Yzk5ZTU4YjEwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdU
cmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAKICNp
bmNsdWRlICJTY3JvbGxBbmltYXRpb25TbW9vdGguaCIKICNlbmRpZgogI2luY2x1ZGUgIlNjcm9s
bGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlLmgiCi0jaW5jbHVkZSAiU2Nyb2xsaW5nVHJl
ZS5oIgorI2luY2x1ZGUgIlRocmVhZGVkU2Nyb2xsaW5nVHJlZS5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTUxLDQwICs1MSw3IEBAIFJlZjxTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3Jv
bGxpbmdOb2RlPiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpCiBTY3Jv
bGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYTo6U2Nyb2xsaW5nVHJlZU92ZXJm
bG93U2Nyb2xsaW5nTm9kZU5pY29zaWEoU2Nyb2xsaW5nVHJlZSYgc2Nyb2xsaW5nVHJlZSwgU2Ny
b2xsaW5nTm9kZUlEIG5vZGVJRCkKICAgICA6IFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGlu
Z05vZGUoc2Nyb2xsaW5nVHJlZSwgbm9kZUlEKQogewotI2lmIEVOQUJMRShLSU5FVElDX1NDUk9M
TElORykKLSAgICBtX2tpbmV0aWNBbmltYXRpb24gPSBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlv
bktpbmV0aWM+KAotICAgICAgICBbdGhpc10oKSAtPiBTY3JvbGxFeHRlbnRzIHsKLSAgICAgICAg
ICAgIHJldHVybiB7IEludFBvaW50KG1pbmltdW1TY3JvbGxQb3NpdGlvbigpKSwgSW50UG9pbnQo
bWF4aW11bVNjcm9sbFBvc2l0aW9uKCkpLCBJbnRTaXplKHNjcm9sbGFibGVBcmVhU2l6ZSgpKSB9
OwotICAgICAgICB9LAotICAgICAgICBbdGhpc10oRmxvYXRQb2ludCYmIHBvc2l0aW9uKSB7Ci0j
aWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0gICAgICAgICAgICBtX3Ntb290aEFuaW1hdGlv
bi0+c2V0Q3VycmVudFBvc2l0aW9uKHBvc2l0aW9uKTsKLSNlbmRpZgotCi0gICAgICAgICAgICBh
dXRvKiBzY3JvbGxMYXllciA9IHN0YXRpY19jYXN0PE5pY29zaWE6OlBsYXRmb3JtTGF5ZXIqPihz
Y3JvbGxDb250YWluZXJMYXllcigpKTsKLSAgICAgICAgICAgIEFTU0VSVChzY3JvbGxMYXllcik7
Ci0gICAgICAgICAgICBhdXRvJiBjb21wb3NpdGlvbkxheWVyID0gZG93bmNhc3Q8Tmljb3NpYTo6
Q29tcG9zaXRpb25MYXllcj4oKnNjcm9sbExheWVyKTsKLQotICAgICAgICAgICAgYXV0byB1cGRh
dGVTY29wZSA9IGNvbXBvc2l0aW9uTGF5ZXIuY3JlYXRlVXBkYXRlU2NvcGUoKTsKLSAgICAgICAg
ICAgIHNjcm9sbFRvKHBvc2l0aW9uKTsKLSAgICAgICAgfSk7Ci0jZW5kaWYKLSNpZiBFTkFCTEUo
U01PT1RIX1NDUk9MTElORykKLSAgICBtX3Ntb290aEFuaW1hdGlvbiA9IG1ha2VVbmlxdWU8U2Ny
b2xsQW5pbWF0aW9uU21vb3RoPigKLSAgICAgICAgW3RoaXNdKCkgLT4gU2Nyb2xsRXh0ZW50cyB7
Ci0gICAgICAgICAgICByZXR1cm4geyBJbnRQb2ludChtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSks
IEludFBvaW50KG1heGltdW1TY3JvbGxQb3NpdGlvbigpKSwgSW50U2l6ZShzY3JvbGxhYmxlQXJl
YVNpemUoKSkgfTsKLSAgICAgICAgfSwKLSAgICAgICAgY3VycmVudFNjcm9sbFBvc2l0aW9uKCks
Ci0gICAgICAgIFt0aGlzXShGbG9hdFBvaW50JiYgcG9zaXRpb24pIHsKLSAgICAgICAgICAgIGF1
dG8qIHNjcm9sbExheWVyID0gc3RhdGljX2Nhc3Q8Tmljb3NpYTo6UGxhdGZvcm1MYXllcio+KHNj
cm9sbENvbnRhaW5lckxheWVyKCkpOwotICAgICAgICAgICAgQVNTRVJUKHNjcm9sbExheWVyKTsK
LSAgICAgICAgICAgIGF1dG8mIGNvbXBvc2l0aW9uTGF5ZXIgPSBkb3duY2FzdDxOaWNvc2lhOjpD
b21wb3NpdGlvbkxheWVyPigqc2Nyb2xsTGF5ZXIpOwotCi0gICAgICAgICAgICBhdXRvIHVwZGF0
ZVNjb3BlID0gY29tcG9zaXRpb25MYXllci5jcmVhdGVVcGRhdGVTY29wZSgpOwotICAgICAgICAg
ICAgc2Nyb2xsVG8ocG9zaXRpb24pOwotICAgICAgICB9LAotICAgICAgICBbXSB7IH0pOwotI2Vu
ZGlmCisgICAgbV9zY3JvbGxBbmltYXRvckVuYWJsZWQgPSBkb3duY2FzdDxUaHJlYWRlZFNjcm9s
bGluZ1RyZWU+KHNjcm9sbGluZ1RyZWUpLnNjcm9sbEFuaW1hdG9yRW5hYmxlZCgpOwogfQogCiBT
Y3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYTo6flNjcm9sbGluZ1RyZWVP
dmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhKCkgPSBkZWZhdWx0OwpAQCAtOTksNyArNjYsOCBA
QCB2b2lkIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhOjpjb21taXRT
dGF0ZUFmdGVyQ2hpbGRyZW4oY29uc3QgUwogICAgICAgICBjb25zdCBhdXRvJiByZXF1ZXN0ZWRT
Y3JvbGxEYXRhID0gb3ZlcmZsb3dTdGF0ZU5vZGUucmVxdWVzdGVkU2Nyb2xsRGF0YSgpOwogICAg
ICAgICBzY3JvbGxUbyhyZXF1ZXN0ZWRTY3JvbGxEYXRhLnNjcm9sbFBvc2l0aW9uLCByZXF1ZXN0
ZWRTY3JvbGxEYXRhLnNjcm9sbFR5cGUsIHJlcXVlc3RlZFNjcm9sbERhdGEuY2xhbXBpbmcpOwog
I2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQotICAgICAgICBtX3Ntb290aEFuaW1hdGlvbi0+
c2V0Q3VycmVudFBvc2l0aW9uKGN1cnJlbnRTY3JvbGxQb3NpdGlvbigpKTsKKyAgICAgICAgaWYg
KG1fc21vb3RoQW5pbWF0aW9uKQorICAgICAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnNldEN1
cnJlbnRQb3NpdGlvbihjdXJyZW50U2Nyb2xsUG9zaXRpb24oKSk7CiAjZW5kaWYKICAgICB9CiB9
CkBAIC0xMjQsMTQgKzkyLDY5IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5n
Tm9kZU5pY29zaWE6OnJlcG9zaXRpb25TY3JvbGxpbmdMYXllcnMoKQogICAgICAgICAgICAgc3Rh
dGUuYm91bmRzT3JpZ2luID0gc2Nyb2xsT2Zmc2V0OwogICAgICAgICAgICAgc3RhdGUuZGVsdGEu
Ym91bmRzT3JpZ2luQ2hhbmdlZCA9IHRydWU7CiAgICAgICAgIH0pOworCisjaWYgRU5BQkxFKFNN
T09USF9TQ1JPTExJTkcpCisgICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKQorICAgICAgICBtX3Nt
b290aEFuaW1hdGlvbi0+dXBkYXRlVmlzaWJsZUxlbmd0aHMoKTsKKyNlbmRpZgogfQogCisjaWYg
RU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKQordm9pZCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3Jv
bGxpbmdOb2RlTmljb3NpYTo6ZW5zdXJlU2Nyb2xsQW5pbWF0aW9uS2luZXRpYygpCit7CisgICAg
aWYgKG1fa2luZXRpY0FuaW1hdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9raW5ldGlj
QW5pbWF0aW9uID0gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRpb25LaW5ldGljPigKKyAgICAgICAg
W3RoaXNdKCkgLT4gU2Nyb2xsRXh0ZW50cyB7CisgICAgICAgICAgICByZXR1cm4geyBJbnRQb2lu
dChtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSksIEludFBvaW50KG1heGltdW1TY3JvbGxQb3NpdGlv
bigpKSwgSW50U2l6ZShzY3JvbGxhYmxlQXJlYVNpemUoKSkgfTsKKyAgICAgICAgfSwKKyAgICAg
ICAgW3RoaXNdKEZsb2F0UG9pbnQmJiBwb3NpdGlvbikgeworI2lmIEVOQUJMRShTTU9PVEhfU0NS
T0xMSU5HKQorICAgICAgICAgICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKQorICAgICAgICAgICAg
ICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zZXRDdXJyZW50UG9zaXRpb24ocG9zaXRpb24pOworI2Vu
ZGlmCisKKyAgICAgICAgICAgIGF1dG8qIHNjcm9sbExheWVyID0gc3RhdGljX2Nhc3Q8Tmljb3Np
YTo6UGxhdGZvcm1MYXllcio+KHNjcm9sbENvbnRhaW5lckxheWVyKCkpOworICAgICAgICAgICAg
QVNTRVJUKHNjcm9sbExheWVyKTsKKyAgICAgICAgICAgIGF1dG8mIGNvbXBvc2l0aW9uTGF5ZXIg
PSBkb3duY2FzdDxOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyPigqc2Nyb2xsTGF5ZXIpOworCisg
ICAgICAgICAgICBhdXRvIHVwZGF0ZVNjb3BlID0gY29tcG9zaXRpb25MYXllci5jcmVhdGVVcGRh
dGVTY29wZSgpOworICAgICAgICAgICAgc2Nyb2xsVG8ocG9zaXRpb24pOworICAgICAgICB9KTsK
K30KKyNlbmRpZgorCisjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCit2b2lkIFNjcm9sbGlu
Z1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhOjplbnN1cmVTY3JvbGxBbmltYXRpb25T
bW9vdGgoKQoreworICAgIGlmIChtX3Ntb290aEFuaW1hdGlvbikKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV9zbW9vdGhBbmltYXRpb24gPSBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlvblNtb290
aD4oCisgICAgICAgIFt0aGlzXSgpIC0+IFNjcm9sbEV4dGVudHMgeworICAgICAgICAgICAgcmV0
dXJuIHsgSW50UG9pbnQobWluaW11bVNjcm9sbFBvc2l0aW9uKCkpLCBJbnRQb2ludChtYXhpbXVt
U2Nyb2xsUG9zaXRpb24oKSksIEludFNpemUoc2Nyb2xsYWJsZUFyZWFTaXplKCkpIH07CisgICAg
ICAgIH0sCisgICAgICAgIGN1cnJlbnRTY3JvbGxQb3NpdGlvbigpLAorICAgICAgICBbdGhpc10o
RmxvYXRQb2ludCYmIHBvc2l0aW9uKSB7CisgICAgICAgICAgICBhdXRvKiBzY3JvbGxMYXllciA9
IHN0YXRpY19jYXN0PE5pY29zaWE6OlBsYXRmb3JtTGF5ZXIqPihzY3JvbGxDb250YWluZXJMYXll
cigpKTsKKyAgICAgICAgICAgIEFTU0VSVChzY3JvbGxMYXllcik7CisgICAgICAgICAgICBhdXRv
JiBjb21wb3NpdGlvbkxheWVyID0gZG93bmNhc3Q8Tmljb3NpYTo6Q29tcG9zaXRpb25MYXllcj4o
KnNjcm9sbExheWVyKTsKKworICAgICAgICAgICAgYXV0byB1cGRhdGVTY29wZSA9IGNvbXBvc2l0
aW9uTGF5ZXIuY3JlYXRlVXBkYXRlU2NvcGUoKTsKKyAgICAgICAgICAgIHNjcm9sbFRvKHBvc2l0
aW9uKTsKKyAgICAgICAgfSwKKyAgICAgICAgW10geyB9KTsKK30KKyNlbmRpZgorCiBXaGVlbEV2
ZW50SGFuZGxpbmdSZXN1bHQgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29z
aWE6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50
KQogewogICAgIGlmICghY2FuSGFuZGxlV2hlZWxFdmVudCh3aGVlbEV2ZW50KSkKICAgICAgICAg
cmV0dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6dW5oYW5kbGVkKCk7CiAKICNpZiBFTkFC
TEUoS0lORVRJQ19TQ1JPTExJTkcpCisgICAgZW5zdXJlU2Nyb2xsQW5pbWF0aW9uS2luZXRpYygp
OwogICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+YXBwZW5kVG9TY3JvbGxIaXN0b3J5KHdoZWVsRXZl
bnQpOwogICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+c3RvcCgpOwogICAgIGlmICh3aGVlbEV2ZW50
LmlzRW5kT2ZOb25Nb21lbnR1bVNjcm9sbCgpKSB7CkBAIC0xNzQsMTYgKzE5NywyMCBAQCBXaGVl
bEV2ZW50SGFuZGxpbmdSZXN1bHQgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5p
Y29zaWE6OmhhbmRsZVdoZWVsRQogICAgIH0KIAogI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5H
KQotICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zY3JvbGwoSG9yaXpvbnRhbFNjcm9sbGJhciwgU2Ny
b2xsQnlQaXhlbCwgMSwgLWRlbHRhWCk7Ci0gICAgbV9zbW9vdGhBbmltYXRpb24tPnNjcm9sbChW
ZXJ0aWNhbFNjcm9sbGJhciwgU2Nyb2xsQnlQaXhlbCwgMSwgLWRlbHRhWSk7Ci0jZWxzZQorICAg
IGlmIChtX3Njcm9sbEFuaW1hdG9yRW5hYmxlZCAmJiAhd2hlZWxFdmVudC5oYXNQcmVjaXNlU2Ny
b2xsaW5nRGVsdGFzKCkpIHsKKyAgICAgICAgZW5zdXJlU2Nyb2xsQW5pbWF0aW9uU21vb3RoKCk7
CisgICAgICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zY3JvbGwoSG9yaXpvbnRhbFNjcm9sbGJhciwg
U2Nyb2xsQnlQaXhlbCwgMSwgLWRlbHRhWCk7CisgICAgICAgIG1fc21vb3RoQW5pbWF0aW9uLT5z
Y3JvbGwoVmVydGljYWxTY3JvbGxiYXIsIFNjcm9sbEJ5UGl4ZWwsIDEsIC1kZWx0YVkpOworICAg
ICAgICByZXR1cm4gV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0OjpoYW5kbGVkKCk7CisgICAgfQor
I2VuZGlmCisKICAgICBhdXRvKiBzY3JvbGxMYXllciA9IHN0YXRpY19jYXN0PE5pY29zaWE6OlBs
YXRmb3JtTGF5ZXIqPihzY3JvbGxDb250YWluZXJMYXllcigpKTsKICAgICBBU1NFUlQoc2Nyb2xs
TGF5ZXIpOwogICAgIGF1dG8mIGNvbXBvc2l0aW9uTGF5ZXIgPSBkb3duY2FzdDxOaWNvc2lhOjpD
b21wb3NpdGlvbkxheWVyPigqc2Nyb2xsTGF5ZXIpOwogCiAgICAgYXV0byB1cGRhdGVTY29wZSA9
IGNvbXBvc2l0aW9uTGF5ZXIuY3JlYXRlVXBkYXRlU2NvcGUoKTsKICAgICBzY3JvbGxCeSh7IC1k
ZWx0YVgsIC1kZWx0YVkgfSk7Ci0jZW5kaWYKIAogICAgIHJldHVybiBXaGVlbEV2ZW50SGFuZGxp
bmdSZXN1bHQ6OmhhbmRsZWQoKTsKIH0KQEAgLTE5MSwxMSArMjE4LDE0IEBAIFdoZWVsRXZlbnRI
YW5kbGluZ1Jlc3VsdCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYTo6
aGFuZGxlV2hlZWxFCiB2b2lkIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNv
c2lhOjpzdG9wU2Nyb2xsQW5pbWF0aW9ucygpCiB7CiAjaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xM
SU5HKQotICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+c3RvcCgpOwotICAgIG1fa2luZXRpY0FuaW1h
dGlvbi0+Y2xlYXJTY3JvbGxIaXN0b3J5KCk7CisgICAgaWYgKG1fa2luZXRpY0FuaW1hdGlvbikg
eworICAgICAgICBtX2tpbmV0aWNBbmltYXRpb24tPnN0b3AoKTsKKyAgICAgICAgbV9raW5ldGlj
QW5pbWF0aW9uLT5jbGVhclNjcm9sbEhpc3RvcnkoKTsKKyAgICB9CiAjZW5kaWYKICNpZiBFTkFC
TEUoU01PT1RIX1NDUk9MTElORykKLSAgICBtX3Ntb290aEFuaW1hdGlvbi0+c3RvcCgpOworICAg
IGlmIChtX3Ntb290aEFuaW1hdGlvbikKKyAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnN0b3Ao
KTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVPdmVyZmxv
d1Njcm9sbGluZ05vZGVOaWNvc2lhLmgKaW5kZXggMTMyYjQ4ODcxZDZjZGI2NzQ1YzRhYzM2MTdh
NGJjMWRkZWY0YjkwMi4uM2JkMWE0NTMzN2QwMDYzNzg4ZTUwMTg1NzNmYTAxYWUzMDBlYWZmMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxp
bmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9k
ZU5pY29zaWEuaApAQCAtNTAsMTAgKzUwLDE4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHJlcG9z
aXRpb25TY3JvbGxpbmdMYXllcnMoKSBvdmVycmlkZTsKIAorI2lmIEVOQUJMRShLSU5FVElDX1ND
Uk9MTElORykKKyAgICB2b2lkIGVuc3VyZVNjcm9sbEFuaW1hdGlvbktpbmV0aWMoKTsKKyNlbmRp
ZgorI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQorICAgIHZvaWQgZW5zdXJlU2Nyb2xsQW5p
bWF0aW9uU21vb3RoKCk7CisjZW5kaWYKKwogICAgIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdCBo
YW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpIG92ZXJyaWRlOwogCiAg
ICAgdm9pZCBzdG9wU2Nyb2xsQW5pbWF0aW9ucygpIG92ZXJyaWRlOwogCisgICAgYm9vbCBtX3Nj
cm9sbEFuaW1hdG9yRW5hYmxlZCB7IGZhbHNlIH07CiAjaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xM
SU5HKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRpb25LaW5ldGljPiBtX2tpbmV0
aWNBbmltYXRpb247CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1BsYXRmb3JtV2hlZWxFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1X
aGVlbEV2ZW50LmgKaW5kZXggYzQ4ZWRiNDU2NjczNzVjODM3OWFiMGU1MmU1MjQwMWRjY2VkNGQz
Yy4uYWYxYzUzOTYzMWIzYmY1NmQxM2U4YzE4NWFiN2E1MWRjMWJjNDMzOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmgKQEAgLTE0MSw5ICsxNDEsMTIg
QEAgcHVibGljOgogICAgIGV4cGxpY2l0IFBsYXRmb3JtV2hlZWxFdmVudChHZGtFdmVudFNjcm9s
bCopOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBQTEFURk9STShDT0NPQSkg
fHwgUExBVEZPUk0oR1RLKSB8fCBVU0UoTElCV1BFKQogICAgIGJvb2wgaGFzUHJlY2lzZVNjcm9s
bGluZ0RlbHRhcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhczsg
fQogICAgIHZvaWQgc2V0SGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcyhib29sIGhhc1ByZWNpc2VT
Y3JvbGxpbmdEZWx0YXMpIHsgbV9oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzID0gaGFzUHJlY2lz
ZVNjcm9sbGluZ0RlbHRhczsgfQorI2VuZGlmCisKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICB1
bnNpZ25lZCBzY3JvbGxDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsQ291bnQ7IH0KICAg
ICBmbG9hdCB1bmFjY2VsZXJhdGVkU2Nyb2xsaW5nRGVsdGFYKCkgY29uc3QgeyByZXR1cm4gbV91
bmFjY2VsZXJhdGVkU2Nyb2xsaW5nRGVsdGFYOyB9CiAgICAgZmxvYXQgdW5hY2NlbGVyYXRlZFNj
cm9sbGluZ0RlbHRhWSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5hY2NlbGVyYXRlZFNjcm9sbGluZ0Rl
bHRhWTsgfQpAQCAtMTkzLDggKzE5NiwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgUGxhdGZvcm1XaGVl
bEV2ZW50UGhhc2UgbV9waGFzZSB7IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlTm9uZSB9OwogICAg
IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIG1fbW9tZW50dW1QaGFzZSB7IFBsYXRmb3JtV2hlZWxF
dmVudFBoYXNlTm9uZSB9OwogI2VuZGlmCi0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgUExBVEZP
Uk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykgfHwgVVNFKExJQldQRSkKICAgICBib29sIG1faGFz
UHJlY2lzZVNjcm9sbGluZ0RlbHRhcyB7IGZhbHNlIH07CisjZW5kaWYKKyNpZiBQTEFURk9STShD
T0NPQSkKICAgICB1bnNpZ25lZCBtX3Njcm9sbENvdW50IHsgMCB9OwogICAgIGZsb2F0IG1fdW5h
Y2NlbGVyYXRlZFNjcm9sbGluZ0RlbHRhWCB7IDAgfTsKICAgICBmbG9hdCBtX3VuYWNjZWxlcmF0
ZWRTY3JvbGxpbmdEZWx0YVkgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxBbmltYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFu
aW1hdGlvbi5oCmluZGV4IDk5ZDg2MWJmMzUxM2QwMzc2NjQ3MGExMDcyYjk4ZmQwMzcwY2M4MDUu
LjAwNGJiYzZiNjM4MDJiYzBlOTk5Yjk2YjZkZDYzNTIyZmU4M2M3NmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbi5oCkBAIC01MCw2ICs1MCw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVmlzaWJsZUxlbmd0aHMoKSB7IH07CiAgICAgdmlydHVh
bCB2b2lkIHNldEN1cnJlbnRQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JikgeyB9OwogICAgIHZp
cnR1YWwgdm9pZCBzZXJ2aWNlQW5pbWF0aW9uKCkgeyB9OworICAgIHZpcnR1YWwgYm9vbCBpc0Fj
dGl2ZSgpIGNvbnN0ID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5jcHAKaW5kZXgg
MjRlZGNkMzI4NGQ5YWFiNThiNGE1Y2EyOTI5YTQ3MjRhZTEzMTQxMS4uOWE1YTg5ZTk0YTg5N2Uy
NTUxNjY1OTExZDRkNmI4MTFjN2RlNThlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5jcHAKQEAgLTEyOCw2ICsxMjgsMTEgQEAgdm9p
ZCBTY3JvbGxBbmltYXRpb25LaW5ldGljOjpzdG9wKCkKICAgICBtX3ZlcnRpY2FsRGF0YSA9IFdU
Rjo6bnVsbG9wdDsKIH0KIAorYm9vbCBTY3JvbGxBbmltYXRpb25LaW5ldGljOjppc0FjdGl2ZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYW5pbWF0aW9uVGltZXIuaXNBY3RpdmUoKTsKK30KKwog
dm9pZCBTY3JvbGxBbmltYXRpb25LaW5ldGljOjphcHBlbmRUb1Njcm9sbEhpc3RvcnkoY29uc3Qg
UGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCkKIHsKICAgICBtX3Njcm9sbEhpc3RvcnkucmVtb3Zl
QWxsTWF0Y2hpbmcoWyZldmVudF0gKFBsYXRmb3JtV2hlZWxFdmVudCYgb3RoZXJFdmVudCkgLT4g
Ym9vbCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRp
b25LaW5ldGljLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5l
dGljLmgKaW5kZXggM2U4OWNiNDhjMDVjNGMyYmU3NWUzNzY1Y2M5ZWY4MTUzM2RjYjdiZS4uNmFi
ZTc5ZWY3NzhhZmQ4ZjQ1ODY0OGMyOTdiMmRhNjFhNDZjNTQyMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuaApAQCAtNzAsNiArNzAsNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHN0YXJ0KGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxQb3Np
dGlvbiwgY29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHksIGJvb2wgbWF5SFNjcm9sbCwgYm9vbCBt
YXlWU2Nyb2xsKTsKICAgICB2b2lkIHN0b3AoKSBvdmVycmlkZTsKKyAgICBib29sIGlzQWN0aXZl
KCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBhbmltYXRpb25UaW1lckZp
cmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRp
b25TbW9vdGguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21v
b3RoLmNwcAppbmRleCA4MzU3MzA1ZmVjYjFiZmM0NWViNWI3N2IwMzU5NmFkMTE4YWYwNzIyLi4y
N2UwODM0MzMwODEzZDk4YTZlZDVhYjZmNzNjOGIwZDkxOTY0MTAyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5jcHAKQEAgLTg1LDcgKzg1
LDcgQEAgYm9vbCBTY3JvbGxBbmltYXRpb25TbW9vdGg6OnNjcm9sbChTY3JvbGxiYXJPcmllbnRh
dGlvbiBvcmllbnRhdGlvbiwgU2Nyb2xsR3JhbnUKICAgICAgICAgbWF4U2Nyb2xsUG9zaXRpb24g
PSBleHRlbnRzLm1heGltdW1TY3JvbGxQb3NpdGlvbi55KCk7CiAgICAgfQogICAgIGJvb2wgbmVl
ZFRvU2Nyb2xsID0gdXBkYXRlUGVyQXhpc0RhdGEob3JpZW50YXRpb24gPT0gSG9yaXpvbnRhbFNj
cm9sbGJhciA/IG1faG9yaXpvbnRhbERhdGEgOiBtX3ZlcnRpY2FsRGF0YSwgZ3JhbnVsYXJpdHks
IHN0ZXAgKiBtdWx0aXBsaWVyLCBtaW5TY3JvbGxQb3NpdGlvbiwgbWF4U2Nyb2xsUG9zaXRpb24p
OwotICAgIGlmIChuZWVkVG9TY3JvbGwgJiYgIWFuaW1hdGlvblRpbWVyQWN0aXZlKCkpIHsKKyAg
ICBpZiAobmVlZFRvU2Nyb2xsICYmICFpc0FjdGl2ZSgpKSB7CiAgICAgICAgIG1fc3RhcnRUaW1l
ID0gb3JpZW50YXRpb24gPT0gSG9yaXpvbnRhbFNjcm9sbGJhciA/IG1faG9yaXpvbnRhbERhdGEu
c3RhcnRUaW1lIDogbV92ZXJ0aWNhbERhdGEuc3RhcnRUaW1lOwogICAgICAgICBhbmltYXRpb25U
aW1lckZpcmVkKCk7CiAgICAgfQpAQCAtOTksNyArOTksNyBAQCB2b2lkIFNjcm9sbEFuaW1hdGlv
blNtb290aDo6c2Nyb2xsKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uKQogICAgIGJvb2wgbmVl
ZFRvU2Nyb2xsID0gdXBkYXRlUGVyQXhpc0RhdGEobV9ob3Jpem9udGFsRGF0YSwgZ3JhbnVsYXJp
dHksIHBvc2l0aW9uLngoKSAtIG1faG9yaXpvbnRhbERhdGEuY3VycmVudFBvc2l0aW9uLCBleHRl
bnRzLm1pbmltdW1TY3JvbGxQb3NpdGlvbi54KCksIGV4dGVudHMubWF4aW11bVNjcm9sbFBvc2l0
aW9uLngoKSwgc21vb3RoRmFjdG9yRm9yUHJvZ3JhbW1hdGljU2Nyb2xsKTsKICAgICBuZWVkVG9T
Y3JvbGwgfD0KICAgICAgICAgdXBkYXRlUGVyQXhpc0RhdGEobV92ZXJ0aWNhbERhdGEsIGdyYW51
bGFyaXR5LCBwb3NpdGlvbi55KCkgLSBtX3ZlcnRpY2FsRGF0YS5jdXJyZW50UG9zaXRpb24sIGV4
dGVudHMubWluaW11bVNjcm9sbFBvc2l0aW9uLnkoKSwgZXh0ZW50cy5tYXhpbXVtU2Nyb2xsUG9z
aXRpb24ueSgpLCBzbW9vdGhGYWN0b3JGb3JQcm9ncmFtbWF0aWNTY3JvbGwpOwotICAgIGlmIChu
ZWVkVG9TY3JvbGwgJiYgIWFuaW1hdGlvblRpbWVyQWN0aXZlKCkpIHsKKyAgICBpZiAobmVlZFRv
U2Nyb2xsICYmICFpc0FjdGl2ZSgpKSB7CiAgICAgICAgIG1fc3RhcnRUaW1lID0gbV9ob3Jpem9u
dGFsRGF0YS5zdGFydFRpbWU7CiAgICAgICAgIGFuaW1hdGlvblRpbWVyRmlyZWQoKTsKICAgICB9
CkBAIC00NDksNyArNDQ5LDcgQEAgdm9pZCBTY3JvbGxBbmltYXRpb25TbW9vdGg6OnN0YXJ0TmV4
dFRpbWVyKFNlY29uZHMgZGVsYXkpCiAgICAgbV9hbmltYXRpb25UaW1lci5zdGFydE9uZVNob3Qo
ZGVsYXkpOwogfQogCi1ib29sIFNjcm9sbEFuaW1hdGlvblNtb290aDo6YW5pbWF0aW9uVGltZXJB
Y3RpdmUoKSBjb25zdAorYm9vbCBTY3JvbGxBbmltYXRpb25TbW9vdGg6OmlzQWN0aXZlKCkgY29u
c3QKIHsKICAgICByZXR1cm4gbV9hbmltYXRpb25UaW1lci5pc0FjdGl2ZSgpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguaAppbmRleCBkNDEw
YWRjZTYzZGNkNDcyMmZkZWMxM2E0OWQzYTNjOGI2ZTExMGM4Li4xNDdhY2Y0ZTJiZTJmMjA0NzZi
MDIzNzg4YTMyNTEzN2ZjZDVjYzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxBbmltYXRpb25TbW9vdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxBbmltYXRpb25TbW9vdGguaApAQCAtNTgsNiArNTgsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgc3RvcCgpIG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlVmlzaWJsZUxlbmd0aHMoKSBvdmVy
cmlkZTsKICAgICB2b2lkIHNldEN1cnJlbnRQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50Jikgb3Zl
cnJpZGU7CisgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgc3RydWN0
IFBlckF4aXNEYXRhIHsKICAgICAgICAgUGVyQXhpc0RhdGEoKSA9IGRlbGV0ZTsKQEAgLTEwMSw3
ICsxMDIsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVxdWVzdEFuaW1hdGlvblRpbWVyRmlyZWQo
KTsKICAgICB2b2lkIHN0YXJ0TmV4dFRpbWVyKFNlY29uZHMgZGVsYXkpOwogICAgIHZvaWQgYW5p
bWF0aW9uVGltZXJGaXJlZCgpOwotICAgIGJvb2wgYW5pbWF0aW9uVGltZXJBY3RpdmUoKSBjb25z
dDsKIAogICAgIFNjcm9sbEV4dGVudHNDYWxsYmFjayBtX3Njcm9sbEV4dGVudHNGdW5jdGlvbjsK
ICAgICBOb3RpZnlQb3NpdGlvbkNoYW5nZWRDYWxsYmFjayBtX25vdGlmeVBvc2l0aW9uQ2hhbmdl
ZEZ1bmN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9T
Y3JvbGxBbmltYXRvckdlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJp
Yy9TY3JvbGxBbmltYXRvckdlbmVyaWMuY3BwCmluZGV4IGMwNGE0ODBkNTU5NmM3MWNjZjJhNTRh
Mjk1Zjk5ZTZmOTk1ODhhMWYuLmNiMTk1NWE4ODQwNzM5M2IzN2U1ZjBmNDY4NDAxNjY4OGE4NTc4
NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5p
bWF0b3JHZW5lcmljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Nj
cm9sbEFuaW1hdG9yR2VuZXJpYy5jcHAKQEAgLTczLDggKzczLDExIEBAIFNjcm9sbEFuaW1hdG9y
R2VuZXJpYzo6flNjcm9sbEFuaW1hdG9yR2VuZXJpYygpID0gZGVmYXVsdDsKICNpZiBFTkFCTEUo
U01PT1RIX1NDUk9MTElORykKIHZvaWQgU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjplbnN1cmVTbW9v
dGhTY3JvbGxpbmdBbmltYXRpb24oKQogewotICAgIGlmIChtX3Ntb290aEFuaW1hdGlvbikKKyAg
ICBpZiAobV9zbW9vdGhBbmltYXRpb24pIHsKKyAgICAgICAgaWYgKCFtX3Ntb290aEFuaW1hdGlv
bi0+aXNBY3RpdmUoKSkKKyAgICAgICAgICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zZXRDdXJyZW50
UG9zaXRpb24obV9jdXJyZW50UG9zaXRpb24pOwogICAgICAgICByZXR1cm47CisgICAgfQogCiAg
ICAgbV9zbW9vdGhBbmltYXRpb24gPSBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlvblNtb290aD4o
CiAgICAgICAgIFt0aGlzXSgpIC0+IFNjcm9sbEV4dGVudHMgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkV2ZW50Q29udmVyc2lvbi5jcHAKaW5kZXggMmRlMjYwMTU1OTVhMzgzZmIzYjE3ZWFm
NzQ2ZDI5NmY2ZTk5ODg3YS4uMGZiOTljN2E5ZTY0ZmI4YTZkODgyNWIzYWZiMjA2NGY4MDUwNWI0
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJFdmVudENvbnZlcnNpb24uY3BwCkBAIC0x
NjQsOCArMTY0LDEwIEBAIHB1YmxpYzoKICAgICAgICAgbV9waGFzZSA9IHN0YXRpY19jYXN0PFdl
YkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudFBoYXNlPih3ZWJFdmVudC5waGFzZSgpKTsKICAgICAg
ICAgbV9tb21lbnR1bVBoYXNlID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2
ZW50UGhhc2U+KHdlYkV2ZW50Lm1vbWVudHVtUGhhc2UoKSk7CiAjZW5kaWYKLSNpZiBQTEFURk9S
TShDT0NPQSkKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oR1RLKSB8fCBVU0UoTElC
V1BFKQogICAgICAgICBtX2hhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMgPSB3ZWJFdmVudC5oYXNQ
cmVjaXNlU2Nyb2xsaW5nRGVsdGFzKCk7CisjZW5kaWYKKyNpZiBQTEFURk9STShDT0NPQSkKICAg
ICAgICAgbV9zY3JvbGxDb3VudCA9IHdlYkV2ZW50LnNjcm9sbENvdW50KCk7CiAgICAgICAgIG1f
dW5hY2NlbGVyYXRlZFNjcm9sbGluZ0RlbHRhWCA9IHdlYkV2ZW50LnVuYWNjZWxlcmF0ZWRTY3Jv
bGxpbmdEZWx0YSgpLndpZHRoKCk7CiAgICAgICAgIG1fdW5hY2NlbGVyYXRlZFNjcm9sbGluZ0Rl
bHRhWSA9IHdlYkV2ZW50LnVuYWNjZWxlcmF0ZWRTY3JvbGxpbmdEZWx0YSgpLmhlaWdodCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViV2hlZWxFdmVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJXaGVlbEV2ZW50LmNwcAppbmRleCA5ZDcyNWVkYjY3MjE0Y2Rj
MWM4NTY0ZmJmYTFjYzE0OGIyMjlkNzdkLi5jMDNmZTIzZWJkN2VhYzYzODUxZWMwYWU5YTNiZGZi
ZDE2OWY4OWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJXaGVlbEV2ZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJXaGVlbEV2ZW50LmNwcApAQCAtNjEs
NyArNjEsNyBAQCBXZWJXaGVlbEV2ZW50OjpXZWJXaGVlbEV2ZW50KFR5cGUgdHlwZSwgY29uc3Qg
SW50UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRQb2ludAogICAgIEFTU0VSVChpc1doZWVsRXZl
bnRUeXBlKHR5cGUpKTsKIH0KICNlbGlmIFBMQVRGT1JNKEdUSykgfHwgVVNFKExJQldQRSkKLVdl
YldoZWVsRXZlbnQ6OldlYldoZWVsRXZlbnQoVHlwZSB0eXBlLCBjb25zdCBJbnRQb2ludCYgcG9z
aXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgY29uc3QgRmxvYXRTaXplJiBk
ZWx0YSwgY29uc3QgRmxvYXRTaXplJiB3aGVlbFRpY2tzLCBQaGFzZSBwaGFzZSwgUGhhc2UgbW9t
ZW50dW1QaGFzZSwgR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIE9wdGlvblNldDxNb2RpZmllcj4g
bW9kaWZpZXJzLCBXYWxsVGltZSB0aW1lc3RhbXApCitXZWJXaGVlbEV2ZW50OjpXZWJXaGVlbEV2
ZW50KFR5cGUgdHlwZSwgY29uc3QgSW50UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYg
Z2xvYmFsUG9zaXRpb24sIGNvbnN0IEZsb2F0U2l6ZSYgZGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYg
d2hlZWxUaWNrcywgUGhhc2UgcGhhc2UsIFBoYXNlIG1vbWVudHVtUGhhc2UsIEdyYW51bGFyaXR5
IGdyYW51bGFyaXR5LCBib29sIGhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMsIE9wdGlvblNldDxN
b2RpZmllcj4gbW9kaWZpZXJzLCBXYWxsVGltZSB0aW1lc3RhbXApCiAgICAgOiBXZWJFdmVudCh0
eXBlLCBtb2RpZmllcnMsIHRpbWVzdGFtcCkKICAgICAsIG1fcG9zaXRpb24ocG9zaXRpb24pCiAg
ICAgLCBtX2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBvc2l0aW9uKQpAQCAtNzAsNiArNzAsNyBAQCBX
ZWJXaGVlbEV2ZW50OjpXZWJXaGVlbEV2ZW50KFR5cGUgdHlwZSwgY29uc3QgSW50UG9pbnQmIHBv
c2l0aW9uLCBjb25zdCBJbnRQb2ludAogICAgICwgbV9ncmFudWxhcml0eShncmFudWxhcml0eSkK
ICAgICAsIG1fcGhhc2UocGhhc2UpCiAgICAgLCBtX21vbWVudHVtUGhhc2UobW9tZW50dW1QaGFz
ZSkKKyAgICAsIG1faGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcyhoYXNQcmVjaXNlU2Nyb2xsaW5n
RGVsdGFzKQogewogICAgIEFTU0VSVChpc1doZWVsRXZlbnRUeXBlKHR5cGUpKTsKIH0KQEAgLTg4
LDkgKzg5LDkgQEAgdm9pZCBXZWJXaGVlbEV2ZW50OjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShHVEspIHx8IFVTRShM
SUJXUEUpCiAgICAgZW5jb2RlciA8PCBtX3BoYXNlOwogICAgIGVuY29kZXIgPDwgbV9tb21lbnR1
bVBoYXNlOworICAgIGVuY29kZXIgPDwgbV9oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzOwogI2Vu
ZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgZW5jb2RlciA8PCBtX2hhc1ByZWNpc2VTY3Jv
bGxpbmdEZWx0YXM7CiAgICAgZW5jb2RlciA8PCBtX3Njcm9sbENvdW50OwogICAgIGVuY29kZXIg
PDwgbV91bmFjY2VsZXJhdGVkU2Nyb2xsaW5nRGVsdGE7CiAjZW5kaWYKQEAgLTExNywxMCArMTE4
LDEwIEBAIGJvb2wgV2ViV2hlZWxFdmVudDo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2Rlciwg
V2ViV2hlZWxFdmVudCYgdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUodC5tX21vbWVudHVtUGhhc2UpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0jZW5k
aWYKLSNpZiBQTEFURk9STShDT0NPQSkKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHQubV9oYXNQ
cmVjaXNlU2Nyb2xsaW5nRGVsdGFzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0Lm1fc2Nyb2xsQ291
bnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0Lm1f
dW5hY2NlbGVyYXRlZFNjcm9sbGluZ0RlbHRhKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYldoZWVsRXZlbnQuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYldoZWVsRXZl
bnQuaAppbmRleCA2MDk2NzA2NDAzZmNjNzA5NzY0MzAyZmZmMTQ1OTAxZmI0MWNjYzFlLi5lMDkx
ZGI4ZmI5MGMzOTk1ZDA0N2Q0OTE2ZTU0ODMxNzcwY2RjNTcwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJXaGVlbEV2ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViV2hlZWxFdmVudC5oCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShD
T0NPQSkKICAgICBXZWJXaGVlbEV2ZW50KFR5cGUsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBw
b3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFNpemUmIGRlbHRhLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHdoZWVs
VGlja3MsIEdyYW51bGFyaXR5LCBib29sIGRpcmVjdGlvbkludmVydGVkRnJvbURldmljZSwgUGhh
c2UsIFBoYXNlIG1vbWVudHVtUGhhc2UsIGJvb2wgaGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcywg
dWludDMyX3Qgc2Nyb2xsQ291bnQsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgdW5hY2NlbGVy
YXRlZFNjcm9sbGluZ0RlbHRhLCBPcHRpb25TZXQ8TW9kaWZpZXI+LCBXYWxsVGltZSB0aW1lc3Rh
bXApOwogI2VsaWYgUExBVEZPUk0oR1RLKSB8fCBVU0UoTElCV1BFKQotICAgIFdlYldoZWVsRXZl
bnQoVHlwZSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgZGVs
dGEsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgd2hlZWxUaWNrcywgUGhhc2UsIFBoYXNlIG1v
bWVudHVtUGhhc2UsIEdyYW51bGFyaXR5LCBPcHRpb25TZXQ8TW9kaWZpZXI+LCBXYWxsVGltZSB0
aW1lc3RhbXApOworICAgIFdlYldoZWVsRXZlbnQoVHlwZSwgY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmIHBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIGNv
bnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgZGVsdGEsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYg
d2hlZWxUaWNrcywgUGhhc2UsIFBoYXNlIG1vbWVudHVtUGhhc2UsIEdyYW51bGFyaXR5LCBib29s
IGhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMsIE9wdGlvblNldDxNb2RpZmllcj4sIFdhbGxUaW1l
IHRpbWVzdGFtcCk7CiAjZW5kaWYKIAogICAgIGNvbnN0IFdlYkNvcmU6OkludFBvaW50IHBvc2l0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQpAQCAtNjYsOCArNjYsMTAgQEAgcHVi
bGljOgogICAgIGJvb2wgZGlyZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlKCkgY29uc3QgeyByZXR1
cm4gbV9kaXJlY3Rpb25JbnZlcnRlZEZyb21EZXZpY2U7IH0KICAgICBQaGFzZSBwaGFzZSgpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFBoYXNlPihtX3BoYXNlKTsgfQogICAgIFBoYXNlIG1v
bWVudHVtUGhhc2UoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxQaGFzZT4obV9tb21lbnR1
bVBoYXNlKTsgfQotI2lmIFBMQVRGT1JNKENPQ09BKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQ
TEFURk9STShHVEspIHx8IFVTRShMSUJXUEUpCiAgICAgYm9vbCBoYXNQcmVjaXNlU2Nyb2xsaW5n
RGVsdGFzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzOyB9Cisj
ZW5kaWYKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICB1aW50MzJfdCBzY3JvbGxDb3VudCgpIGNv
bnN0IHsgcmV0dXJuIG1fc2Nyb2xsQ291bnQ7IH0KICAgICBjb25zdCBXZWJDb3JlOjpGbG9hdFNp
emUmIHVuYWNjZWxlcmF0ZWRTY3JvbGxpbmdEZWx0YSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5hY2Nl
bGVyYXRlZFNjcm9sbGluZ0RlbHRhOyB9CiAjZW5kaWYKQEAgLTg2LDggKzg4LDEwIEBAIHByaXZh
dGU6CiAgICAgdWludDMyX3QgbV9waGFzZSB7IFBoYXNlOjpQaGFzZU5vbmUgfTsKICAgICB1aW50
MzJfdCBtX21vbWVudHVtUGhhc2UgeyBQaGFzZTo6UGhhc2VOb25lIH07CiAgICAgYm9vbCBtX2Rp
cmVjdGlvbkludmVydGVkRnJvbURldmljZSB7IGZhbHNlIH07Ci0jaWYgUExBVEZPUk0oQ09DT0Ep
CisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykgfHwgVVNFKExJQldQRSkKICAg
ICBib29sIG1faGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcyB7IGZhbHNlIH07CisjZW5kaWYKKyNp
ZiBQTEFURk9STShDT0NPQSkKICAgICB1aW50MzJfdCBtX3Njcm9sbENvdW50IHsgMCB9OwogICAg
IFdlYkNvcmU6OkZsb2F0U2l6ZSBtX3VuYWNjZWxlcmF0ZWRTY3JvbGxpbmdEZWx0YTsKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViV2hlZWxFdmVudENvYWxlc2Nl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJXaGVlbEV2ZW50Q29hbGVzY2VyLmNwcApp
bmRleCA1NTk1OWRlMzVjMzg3OWRmM2NlNDMxZDNkZDdhN2U3N2NlOWU4OTZiLi4xMjBkYjA2MjUw
NWQ4ZjdkYTNjNDNlOTY4NDAyMWUwODkxYmFiZGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJXaGVlbEV2ZW50Q29hbGVzY2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJXaGVlbEV2ZW50Q29hbGVzY2VyLmNwcApAQCAtNTksNiArNTksOCBAQCBib29sIFdl
YldoZWVsRXZlbnRDb2FsZXNjZXI6OmNhbkNvYWxlc2NlKGNvbnN0IFdlYldoZWVsRXZlbnQmIGEs
IGNvbnN0IFdlYldoZWVsRQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGEubW9tZW50
dW1QaGFzZSgpICE9IGIubW9tZW50dW1QaGFzZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Cisj
ZW5kaWYKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oR1RLKSB8fCBVU0UoTElCV1BF
KQogICAgIGlmIChhLmhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMoKSAhPSBiLmhhc1ByZWNpc2VT
Y3JvbGxpbmdEZWx0YXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCkBAIC03Nyw2
ICs3OSw4IEBAIFdlYldoZWVsRXZlbnQgV2ViV2hlZWxFdmVudENvYWxlc2Nlcjo6Y29hbGVzY2Uo
Y29uc3QgV2ViV2hlZWxFdmVudCYgYSwgY29uc3QgV2ViCiAgICAgYXV0byBtZXJnZWRVbmFjY2Vs
ZXJhdGVkU2Nyb2xsaW5nRGVsdGEgPSBhLnVuYWNjZWxlcmF0ZWRTY3JvbGxpbmdEZWx0YSgpICsg
Yi51bmFjY2VsZXJhdGVkU2Nyb2xsaW5nRGVsdGEoKTsKIAogICAgIHJldHVybiBXZWJXaGVlbEV2
ZW50KFdlYkV2ZW50OjpXaGVlbCwgYi5wb3NpdGlvbigpLCBiLmdsb2JhbFBvc2l0aW9uKCksIG1l
cmdlZERlbHRhLCBtZXJnZWRXaGVlbFRpY2tzLCBiLmdyYW51bGFyaXR5KCksIGIuZGlyZWN0aW9u
SW52ZXJ0ZWRGcm9tRGV2aWNlKCksIGIucGhhc2UoKSwgYi5tb21lbnR1bVBoYXNlKCksIGIuaGFz
UHJlY2lzZVNjcm9sbGluZ0RlbHRhcygpLCBiLnNjcm9sbENvdW50KCksIG1lcmdlZFVuYWNjZWxl
cmF0ZWRTY3JvbGxpbmdEZWx0YSwgYi5tb2RpZmllcnMoKSwgYi50aW1lc3RhbXAoKSk7CisjZWxp
ZiBQTEFURk9STShHVEspIHx8IFVTRShMSUJXUEUpCisgICAgcmV0dXJuIFdlYldoZWVsRXZlbnQo
V2ViRXZlbnQ6OldoZWVsLCBiLnBvc2l0aW9uKCksIGIuZ2xvYmFsUG9zaXRpb24oKSwgbWVyZ2Vk
RGVsdGEsIG1lcmdlZFdoZWVsVGlja3MsIGIucGhhc2UoKSwgYi5tb21lbnR1bVBoYXNlKCksIGIu
Z3JhbnVsYXJpdHkoKSwgYi5oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzKCksIGIubW9kaWZpZXJz
KCksIGIudGltZXN0YW1wKCkpOwogI2Vsc2UKICAgICByZXR1cm4gV2ViV2hlZWxFdmVudChXZWJF
dmVudDo6V2hlZWwsIGIucG9zaXRpb24oKSwgYi5nbG9iYWxQb3NpdGlvbigpLCBtZXJnZWREZWx0
YSwgbWVyZ2VkV2hlZWxUaWNrcywgYi5ncmFudWxhcml0eSgpLCBiLm1vZGlmaWVycygpLCBiLnRp
bWVzdGFtcCgpKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3Rr
L05hdGl2ZVdlYldoZWVsRXZlbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL05h
dGl2ZVdlYldoZWVsRXZlbnRHdGsuY3BwCmluZGV4IDZlOTU2N2M0Yjk1YWM4NjYwMDZmMzRjMGQ5
NDMxOGEzNjFiYjFmN2YuLjQ4OGZiZWM5MzkxZDQ0ZTZiMWMyZmJiZDRlOTVlNGM3ZTZhNWFiZjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9OYXRpdmVXZWJXaGVlbEV2ZW50
R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvTmF0aXZlV2ViV2hlZWxFdmVu
dEd0ay5jcHAKQEAgLTUwLDEyICs1MCwxMiBAQCBOYXRpdmVXZWJXaGVlbEV2ZW50OjpOYXRpdmVX
ZWJXaGVlbEV2ZW50KEdka0V2ZW50KiBldmVudCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbgogfQog
CiBOYXRpdmVXZWJXaGVlbEV2ZW50OjpOYXRpdmVXZWJXaGVlbEV2ZW50KGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiBwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0
aW9uLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGRlbHRhLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFNpemUmIHdoZWVsVGlja3MsIFdlYldoZWVsRXZlbnQ6OlBoYXNlIHBoYXNlLCBXZWJXaGVlbEV2
ZW50OjpQaGFzZSBtb21lbnR1bVBoYXNlKQotICAgIDogV2ViV2hlZWxFdmVudChXZWJFdmVudDo6
V2hlZWwsIHBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgZGVsdGEsIHdoZWVsVGlja3MsIHBoYXNl
LCBtb21lbnR1bVBoYXNlLCBXZWJXaGVlbEV2ZW50OjpTY3JvbGxCeVBpeGVsV2hlZWxFdmVudCwg
eyB9LCBXYWxsVGltZTo6bm93KCkpCisgICAgOiBXZWJXaGVlbEV2ZW50KFdlYkV2ZW50OjpXaGVl
bCwgcG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBkZWx0YSwgd2hlZWxUaWNrcywgcGhhc2UsIG1v
bWVudHVtUGhhc2UsIFdlYldoZWVsRXZlbnQ6OlNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50LCBmYWxz
ZSwgeyB9LCBXYWxsVGltZTo6bm93KCkpCiB7CiB9CiAKIE5hdGl2ZVdlYldoZWVsRXZlbnQ6Ok5h
dGl2ZVdlYldoZWVsRXZlbnQoY29uc3QgTmF0aXZlV2ViV2hlZWxFdmVudCYgZXZlbnQpCi0gICAg
OiBXZWJXaGVlbEV2ZW50KGV2ZW50LnR5cGUoKSwgZXZlbnQucG9zaXRpb24oKSwgZXZlbnQuZ2xv
YmFsUG9zaXRpb24oKSwgZXZlbnQuZGVsdGEoKSwgZXZlbnQud2hlZWxUaWNrcygpLCBldmVudC5w
aGFzZSgpLCBldmVudC5tb21lbnR1bVBoYXNlKCksIGV2ZW50LmdyYW51bGFyaXR5KCksIGV2ZW50
Lm1vZGlmaWVycygpLCBldmVudC50aW1lc3RhbXAoKSkKKyAgICA6IFdlYldoZWVsRXZlbnQoZXZl
bnQudHlwZSgpLCBldmVudC5wb3NpdGlvbigpLCBldmVudC5nbG9iYWxQb3NpdGlvbigpLCBldmVu
dC5kZWx0YSgpLCBldmVudC53aGVlbFRpY2tzKCksIGV2ZW50LnBoYXNlKCksIGV2ZW50Lm1vbWVu
dHVtUGhhc2UoKSwgZXZlbnQuZ3JhbnVsYXJpdHkoKSwgZXZlbnQuaGFzUHJlY2lzZVNjcm9sbGlu
Z0RlbHRhcygpLCBldmVudC5tb2RpZmllcnMoKSwgZXZlbnQudGltZXN0YW1wKCkpCiAgICAgLCBt
X25hdGl2ZUV2ZW50KGV2ZW50Lm5hdGl2ZUV2ZW50KCkgPyBnZGtfZXZlbnRfY29weShldmVudC5u
YXRpdmVFdmVudCgpKSA6IG51bGxwdHIpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0
ay9XZWJFdmVudEZhY3RvcnkuY3BwCmluZGV4IGNjOTdjMjE3YmEyZWYzOTA3ZTY5MmYwNzM5YTJm
YzA2YWU4MWY5NjkuLmNhNWNlNDhhODk5ZDU5OThhYTE5MzQ1M2VmZjYyYzI2MDE1ZjE3MjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuY3BwCkBAIC0yODgs
NiArMjg4LDcgQEAgV2ViV2hlZWxFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYldoZWVs
RXZlbnQoY29uc3QgR2RrRXZlbnQqIGV2ZW50LCBjb25zdAogICAgICAgICBwaGFzZSwKICAgICAg
ICAgbW9tZW50dW1QaGFzZSwKICAgICAgICAgV2ViV2hlZWxFdmVudDo6U2Nyb2xsQnlQaXhlbFdo
ZWVsRXZlbnQsCisgICAgICAgIGZhbHNlLAogICAgICAgICBtb2RpZmllcnNGb3JFdmVudChldmVu
dCksCiAgICAgICAgIHdhbGxUaW1lRm9yRXZlbnQoZXZlbnQpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL2xpYndwZS9XZWJFdmVudEZhY3RvcnkuY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvbGlid3BlL1dlYkV2ZW50RmFjdG9yeS5jcHAKaW5kZXggZjhhOTcxNTNkOWQ0
ZDJlMGQxZjFiM2JhOWIyNjQ2MGFkOTM1NDNkNi4uYjA0MDFiZjcxMTk5NDkwYjU5NjFiMDBhNDll
NGQ0OTg1ZjlmZWVkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbGlid3BlL1dl
YkV2ZW50RmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbGlid3BlL1dlYkV2
ZW50RmFjdG9yeS5jcHAKQEAgLTE2NCw2ICsxNjQsNyBAQCBXZWJXaGVlbEV2ZW50IFdlYkV2ZW50
RmFjdG9yeTo6Y3JlYXRlV2ViV2hlZWxFdmVudChzdHJ1Y3Qgd3BlX2lucHV0X2F4aXNfZXZlbnQq
CiAKICAgICBXZWJDb3JlOjpGbG9hdFNpemUgd2hlZWxUaWNrczsKICAgICBXZWJDb3JlOjpGbG9h
dFNpemUgZGVsdGE7CisgICAgYm9vbCBoYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzID0gZmFsc2U7
CiAKICNpZiBXUEVfQ0hFQ0tfVkVSU0lPTigxLCA1LCAwKQogICAgIGlmIChldmVudC0+dHlwZSAm
IHdwZV9pbnB1dF9heGlzX2V2ZW50X3R5cGVfbWFza18yZCkgewpAQCAtMTc3LDYgKzE3OCw3IEBA
IFdlYldoZWVsRXZlbnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJXaGVlbEV2ZW50KHN0cnVj
dCB3cGVfaW5wdXRfYXhpc19ldmVudCoKICAgICAgICAgY2FzZSB3cGVfaW5wdXRfYXhpc19ldmVu
dF90eXBlX21vdGlvbl9zbW9vdGg6CiAgICAgICAgICAgICB3aGVlbFRpY2tzID0gV2ViQ29yZTo6
RmxvYXRTaXplKGV2ZW50MkQtPnhfYXhpcyAvIGRldmljZVNjYWxlRmFjdG9yLCBldmVudDJELT55
X2F4aXMgLyBkZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgICAgICAgICBkZWx0YSA9IHdoZWVsVGlj
a3M7CisgICAgICAgICAgICBoYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzID0gdHJ1ZTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIFdlYldo
ZWVsRXZlbnQoKTsKQEAgLTE4NCw3ICsxODYsNyBAQCBXZWJXaGVlbEV2ZW50IFdlYkV2ZW50RmFj
dG9yeTo6Y3JlYXRlV2ViV2hlZWxFdmVudChzdHJ1Y3Qgd3BlX2lucHV0X2F4aXNfZXZlbnQqCiAK
ICAgICAgICAgcmV0dXJuIFdlYldoZWVsRXZlbnQoV2ViRXZlbnQ6OldoZWVsLCBwb3NpdGlvbiwg
cG9zaXRpb24sCiAgICAgICAgICAgICBkZWx0YSwgd2hlZWxUaWNrcywgcGhhc2UsIG1vbWVudHVt
UGhhc2UsCi0gICAgICAgICAgICBXZWJXaGVlbEV2ZW50OjpTY3JvbGxCeVBpeGVsV2hlZWxFdmVu
dCwKKyAgICAgICAgICAgIFdlYldoZWVsRXZlbnQ6OlNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50LCBo
YXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzLAogICAgICAgICAgICAgT3B0aW9uU2V0PFdlYkV2ZW50
OjpNb2RpZmllcj4geyB9LCB3YWxsVGltZUZvckV2ZW50VGltZShldmVudC0+dGltZSkpOwogICAg
IH0KICNlbmRpZgpAQCAtMjEwLDYgKzIxMiw3IEBAIFdlYldoZWVsRXZlbnQgV2ViRXZlbnRGYWN0
b3J5OjpjcmVhdGVXZWJXaGVlbEV2ZW50KHN0cnVjdCB3cGVfaW5wdXRfYXhpc19ldmVudCoKICAg
ICBjYXNlIFNtb290aDoKICAgICAgICAgd2hlZWxUaWNrcyA9IFdlYkNvcmU6OkZsb2F0U2l6ZSgw
LCBldmVudC0+dmFsdWUgLyBkZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgICAgIGRlbHRhID0gd2hl
ZWxUaWNrczsKKyAgICAgICAgaGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcyA9IHRydWU7CiAgICAg
ICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBXZWJXaGVlbEV2ZW50KCk7
CkBAIC0yMTcsNyArMjIwLDcgQEAgV2ViV2hlZWxFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0
ZVdlYldoZWVsRXZlbnQoc3RydWN0IHdwZV9pbnB1dF9heGlzX2V2ZW50KgogCiAgICAgcmV0dXJu
IFdlYldoZWVsRXZlbnQoV2ViRXZlbnQ6OldoZWVsLCBwb3NpdGlvbiwgcG9zaXRpb24sCiAgICAg
ICAgIGRlbHRhLCB3aGVlbFRpY2tzLCBwaGFzZSwgbW9tZW50dW1QaGFzZSwKLSAgICAgICAgV2Vi
V2hlZWxFdmVudDo6U2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQsCisgICAgICAgIFdlYldoZWVsRXZl
bnQ6OlNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50LCBoYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzLAog
ICAgICAgICBPcHRpb25TZXQ8V2ViRXZlbnQ6Ok1vZGlmaWVyPiB7IH0sIHdhbGxUaW1lRm9yRXZl
bnRUaW1lKGV2ZW50LT50aW1lKSk7CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>