<?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>88268</bug_id>
          
          <creation_ts>2012-06-04 17:02:11 -0700</creation_ts>
          <short_desc>[chromium] Expose rendering statistics to WebLayerTreeView.</short_desc>
          <delta_ts>2012-06-26 14:31:07 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Dave Tu">dtu</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>danakj</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>kbr</cc>
    
    <cc>levin+threading</cc>
    
    <cc>nduca</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>641005</commentid>
    <comment_count>0</comment_count>
    <who name="Dave Tu">dtu</who>
    <bug_when>2012-06-04 17:02:11 -0700</bug_when>
    <thetext>[chromium] Expose rendering statistics to WebLayerTreeView.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641009</commentid>
    <comment_count>1</comment_count>
      <attachid>145658</attachid>
    <who name="Dave Tu">dtu</who>
    <bug_when>2012-06-04 17:05:09 -0700</bug_when>
    <thetext>Created attachment 145658
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641134</commentid>
    <comment_count>2</comment_count>
      <attachid>145658</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-06-04 20:19:38 -0700</bug_when>
    <thetext>Comment on attachment 145658
Patch

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

&gt; Source/Platform/chromium/public/WebLayerTreeView.h:50
&gt; +    int implFrameCount;

any alternative names for paintFrameCount? painting is pretty overloaded. frameCount would be okay.

Put //s on each explaining what they are.

I know its annoying, but this has to be its own file.

&gt; Source/Platform/chromium/public/WebLayerTreeView.h:181
&gt; +    WEBKIT_EXPORT void renderingStatistics(WebRenderingStatistics&amp;);

When we extend this to things like &quot;time spent in paint&quot; how is this API going to work? Are we just going to hope that the counters dont overflow? Or will we add a reset function? I dont care, but we should think it through now.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.h:200
&gt; +    int implFrameNumber() const { return m_proxy-&gt;implFrameNumber(); }

I think this should have a renderingStatistics API too. The WLTVI changes should just be passthrough to CCLTH

&gt; Source/WebCore/platform/graphics/chromium/cc/CCProxy.h:82
&gt; +    virtual int implFrameNumber() = 0;

What happens if we want more impl-side rendering stats? E.g. time spent in draw? Would it be better to have a method on the proxy saying &quot;fill your impl side stats into this WebRenderingStatistics struct?&quot; That way when we add other stats we dont have to add yet-more proxy emthods</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645011</commentid>
    <comment_count>3</comment_count>
      <attachid>146644</attachid>
    <who name="Dave Tu">dtu</who>
    <bug_when>2012-06-08 14:03:47 -0700</bug_when>
    <thetext>Created attachment 146644
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645013</commentid>
    <comment_count>4</comment_count>
      <attachid>145658</attachid>
    <who name="Dave Tu">dtu</who>
    <bug_when>2012-06-08 14:04:45 -0700</bug_when>
    <thetext>Comment on attachment 145658
Patch

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

&gt;&gt; Source/Platform/chromium/public/WebLayerTreeView.h:50
&gt;&gt; +    int implFrameCount;
&gt; 
&gt; any alternative names for paintFrameCount? painting is pretty overloaded. frameCount would be okay.
&gt; 
&gt; Put //s on each explaining what they are.
&gt; 
&gt; I know its annoying, but this has to be its own file.

Done.

&gt;&gt; Source/Platform/chromium/public/WebLayerTreeView.h:181
&gt;&gt; +    WEBKIT_EXPORT void renderingStatistics(WebRenderingStatistics&amp;);
&gt; 
&gt; When we extend this to things like &quot;time spent in paint&quot; how is this API going to work? Are we just going to hope that the counters dont overflow? Or will we add a reset function? I dont care, but we should think it through now.

For the frame counters, it&apos;s okay because it&apos;s (2^31-1)/120/60/60/24 = 207 days before it overflows at 120 fps. For &quot;time spent in paint,&quot; probably floating point types. The Javascript API would convert them all to doubles anyway.

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.h:200
&gt;&gt; +    int implFrameNumber() const { return m_proxy-&gt;implFrameNumber(); }
&gt; 
&gt; I think this should have a renderingStatistics API too. The WLTVI changes should just be passthrough to CCLTH

Done.

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCProxy.h:82
&gt;&gt; +    virtual int implFrameNumber() = 0;
&gt; 
&gt; What happens if we want more impl-side rendering stats? E.g. time spent in draw? Would it be better to have a method on the proxy saying &quot;fill your impl side stats into this WebRenderingStatistics struct?&quot; That way when we add other stats we dont have to add yet-more proxy emthods

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645015</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-08 14:06:25 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645170</commentid>
    <comment_count>6</comment_count>
      <attachid>146644</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-08 18:15:10 -0700</bug_when>
    <thetext>Comment on attachment 146644
Patch

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

&gt; Source/Platform/chromium/public/WebLayerTreeView.h:178
&gt; +    // Fills in a WebRenderingStats struct containing
&gt; +    // information about the state of the compositor.

You don&apos;t need to line wrap so aggressively (there&apos;s no 80 col limit in WebKit). This would fit easily on one line.

&gt; Source/Platform/chromium/public/WebLayerTreeView.h:179
&gt; +    WEBKIT_EXPORT void renderingStats(WebRenderingStats&amp;);

This is a very expensive call relative to other calls on this interface since it blocks on the compositor thread. I think you should move it into the &quot;Debugging / dangerous&quot; section of this header and add some documentation here about how heavy the call is.

&gt; Source/WebKit/chromium/public/WebRenderingStats.h:1
&gt; +/*

If you want to use this struct in Platform/chromium/public/WebLayerTreeView.h, you need to define this struct in Platform/chromium/public/

&gt; Source/WebKit/chromium/public/WebRenderingStats.h:2
&gt; + * Copyright (C) 2011 Google Inc. All rights reserved.

it&apos;s 2012

&gt; Source/WebKit/chromium/public/WebRenderingStats.h:31
&gt; +struct WebRenderingStats {

please add a constructor that zeros out the fields.  Otherwise if someone writes the very reasonable-looking code:

{
  WebRenderingStats stats;
  myWebView-&gt;renderingStats(stats);
}

and compositing mode isn&apos;t active, the struct will just have garbage stack values sitting in it.

&gt; Source/WebKit/chromium/public/WebRenderingStats.h:32
&gt; +    int frameNumber; // Number of frames that have elapsed on the main thread.

the names and documentation here are lacking. what does &quot;elapsed&quot; mean?  Is this the number of frames we&apos;ve rendered? what is this counted from - the &quot;beginning of time&quot;, the last call to gather stats, some other time? it looks like this is only implemented in the compositing path - please document this at least. is this a count, or a number?

&gt; Source/WebKit/chromium/public/WebRenderingStats.h:33
&gt; +    int implFrameNumber; // Number of frames that have elapsed on the impl thread.

the &quot;impl&quot; bit here doesn&apos;t mean much out of context (and the comment doesn&apos;t help). perhaps this could be named something like compositorThreadFrameNumber (or frameCount)

what happens if threaded mode isn&apos;t enabled? please document the behavior whatever it is

&gt; Source/WebKit/chromium/public/WebWidget.h:227
&gt; +    // Fills in a WebRenderingStats struct containing
&gt; +    // information about the state of the compositor.
&gt; +    virtual void renderingStats(WebRenderingStats&amp;) { }

this doesn&apos;t make sense on WebWidget - we only support compositing on WebViews.

renderingStats() is a bit generic for what this is - since it&apos;s only for compositing mode, something compositor-specific in the name would be better.

Looking at the implementation, it looks like this call is relatively heavy - it blocks the main thread until the compositor thread can respond. Someone looking at this header in isolation might think it&apos;s perfectly fine to do something like call this every frame just in case. I think we should document how expensive this call is or make it cheaper.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646138</commentid>
    <comment_count>7</comment_count>
      <attachid>146644</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-06-11 11:38:29 -0700</bug_when>
    <thetext>Comment on attachment 146644
Patch

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

Gettin there! :)

&gt;&gt; Source/WebKit/chromium/public/WebWidget.h:227
&gt;&gt; +    virtual void renderingStats(WebRenderingStats&amp;) { }
&gt; 
&gt; this doesn&apos;t make sense on WebWidget - we only support compositing on WebViews.
&gt; 
&gt; renderingStats() is a bit generic for what this is - since it&apos;s only for compositing mode, something compositor-specific in the name would be better.
&gt; 
&gt; Looking at the implementation, it looks like this call is relatively heavy - it blocks the main thread until the compositor thread can respond. Someone looking at this header in isolation might think it&apos;s perfectly fine to do something like call this every frame just in case. I think we should document how expensive this call is or make it cheaper.

I think this makes sense on webwidget, actually. Fullscreen pepper plugins are webwidgets, remember? :/ And, we have teh composite() method on WebWidget.

obtainRenderingStats() with a comment saying it is slightly costly is sufficient for now, I think. THis is the place to explain that the call only works in accelerated mode and that calling it  in software mode will assert false.

&gt; Source/WebKit/chromium/src/WebLayerTreeView.cpp:175
&gt; +    stats.frameNumber = ccStats.frameNumber;

/me wonders out loud if we have an accepted technique for converting structs, e.g. by having the WebRenderingStats have conversion functions on it. Walk over to jamesr&apos;s desk and ask him if we have a way to do this cleaner please?

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:1455
&gt; +{

You should ASSERT_NOT_REACHED in the case that this is called in non-accelerated mode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647504</commentid>
    <comment_count>8</comment_count>
      <attachid>147196</attachid>
    <who name="Dave Tu">dtu</who>
    <bug_when>2012-06-12 17:11:59 -0700</bug_when>
    <thetext>Created attachment 147196
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647505</commentid>
    <comment_count>9</comment_count>
      <attachid>146644</attachid>
    <who name="Dave Tu">dtu</who>
    <bug_when>2012-06-12 17:12:43 -0700</bug_when>
    <thetext>Comment on attachment 146644
Patch

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

&gt;&gt; Source/Platform/chromium/public/WebLayerTreeView.h:178
&gt;&gt; +    // information about the state of the compositor.
&gt; 
&gt; You don&apos;t need to line wrap so aggressively (there&apos;s no 80 col limit in WebKit). This would fit easily on one line.

Done.

&gt;&gt; Source/Platform/chromium/public/WebLayerTreeView.h:179
&gt;&gt; +    WEBKIT_EXPORT void renderingStats(WebRenderingStats&amp;);
&gt; 
&gt; This is a very expensive call relative to other calls on this interface since it blocks on the compositor thread. I think you should move it into the &quot;Debugging / dangerous&quot; section of this header and add some documentation here about how heavy the call is.

Done.

&gt;&gt; Source/WebKit/chromium/public/WebRenderingStats.h:1
&gt;&gt; +/*
&gt; 
&gt; If you want to use this struct in Platform/chromium/public/WebLayerTreeView.h, you need to define this struct in Platform/chromium/public/

Done.

&gt;&gt; Source/WebKit/chromium/public/WebRenderingStats.h:2
&gt;&gt; + * Copyright (C) 2011 Google Inc. All rights reserved.
&gt; 
&gt; it&apos;s 2012

Done.

&gt;&gt; Source/WebKit/chromium/public/WebRenderingStats.h:31
&gt;&gt; +struct WebRenderingStats {
&gt; 
&gt; please add a constructor that zeros out the fields.  Otherwise if someone writes the very reasonable-looking code:
&gt; 
&gt; {
&gt;   WebRenderingStats stats;
&gt;   myWebView-&gt;renderingStats(stats);
&gt; }
&gt; 
&gt; and compositing mode isn&apos;t active, the struct will just have garbage stack values sitting in it.

Done.

&gt;&gt; Source/WebKit/chromium/public/WebRenderingStats.h:32
&gt;&gt; +    int frameNumber; // Number of frames that have elapsed on the main thread.
&gt; 
&gt; the names and documentation here are lacking. what does &quot;elapsed&quot; mean?  Is this the number of frames we&apos;ve rendered? what is this counted from - the &quot;beginning of time&quot;, the last call to gather stats, some other time? it looks like this is only implemented in the compositing path - please document this at least. is this a count, or a number?

It&apos;s since the beginning of the CCLayerTreeHost. Is that the same as the &quot;beginning of time?&quot; The beginning of the GPU process?

What&apos;s the difference between &quot;count&quot; and &quot;number?&quot;

&gt;&gt; Source/WebKit/chromium/public/WebRenderingStats.h:33
&gt;&gt; +    int implFrameNumber; // Number of frames that have elapsed on the impl thread.
&gt; 
&gt; the &quot;impl&quot; bit here doesn&apos;t mean much out of context (and the comment doesn&apos;t help). perhaps this could be named something like compositorThreadFrameNumber (or frameCount)
&gt; 
&gt; what happens if threaded mode isn&apos;t enabled? please document the behavior whatever it is

Isn&apos;t the &quot;impl thread&quot; just whatever thread compositing is happening on?

I&apos;m not yet familiar with what terminology is specific and what is vague. If a &quot;frame&quot; is a delimiter between time intervals or an instantaneous event, then the &quot;elapsed frames&quot; would be the number of events that have occurred. In this case, the event for &quot;frameNumber&quot; is the number of commits that have happened (number of calls to CCLayerTreeHost::finishCommitOnImplThread) and the event for &quot;implFrameNumber&quot; is the number of composites that have happened (number of calls to CCLayerTreeHostImpl::drawLayers). Do these terms make sense in this context, or are they only applicable within the compositor code and should be invisible at this layer?

&gt;&gt;&gt; Source/WebKit/chromium/public/WebWidget.h:227
&gt;&gt;&gt; +    virtual void renderingStats(WebRenderingStats&amp;) { }
&gt;&gt; 
&gt;&gt; this doesn&apos;t make sense on WebWidget - we only support compositing on WebViews.
&gt;&gt; 
&gt;&gt; renderingStats() is a bit generic for what this is - since it&apos;s only for compositing mode, something compositor-specific in the name would be better.
&gt;&gt; 
&gt;&gt; Looking at the implementation, it looks like this call is relatively heavy - it blocks the main thread until the compositor thread can respond. Someone looking at this header in isolation might think it&apos;s perfectly fine to do something like call this every frame just in case. I think we should document how expensive this call is or make it cheaper.
&gt; 
&gt; I think this makes sense on webwidget, actually. Fullscreen pepper plugins are webwidgets, remember? :/ And, we have teh composite() method on WebWidget.
&gt; 
&gt; obtainRenderingStats() with a comment saying it is slightly costly is sufficient for now, I think. THis is the place to explain that the call only works in accelerated mode and that calling it  in software mode will assert false.

I intend to extend the method in the future with non-compositing stats. I&apos;m not sure yet whether it will reuse the existing WebRenderingStats struct fields. Maybe a TODO is needed?

&gt;&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:1455
&gt;&gt; +{
&gt; 
&gt; You should ASSERT_NOT_REACHED in the case that this is called in non-accelerated mode.

Won&apos;t that just cause Chrome to crash? As written, this method just does nothing in non-accelerated mode. Since I&apos;m adding a constructor to WebRenderingStats, the benchmarking extension can check the fields, and exclude them from Javascript if they haven&apos;t been set.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648611</commentid>
    <comment_count>10</comment_count>
      <attachid>147196</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-13 17:22:03 -0700</bug_when>
    <thetext>Comment on attachment 147196
Patch

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

&gt; Source/Platform/chromium/public/WebRenderingStats.h:32
&gt; +    int frameNumber; // Number of commits that have occurred since the process started. Only applicable in accelerated mode.

&quot;commits&quot; is a concept that is internal the compositor and not something that I think makes a lot of sense to generally expose. The inspector uses this concept and refers to it simply as &quot;frames&quot;.

Note that we&apos;re always going to make calls out to the embedder on each main-thread &quot;frame&quot; operation, since it needs it for rate control and synchronization with plugins etc etc.  These calls work in accelerated and non accelerated mode already (although they aren&apos;t entirely unified), so I&apos;m wondering if we really need WebKit API to expose it or if the embedder should just keep track if they are interested.

&gt; Source/Platform/chromium/public/WebRenderingStats.h:33
&gt; +    int implFrameNumber; // Number of composites that have occurred since the process started. In single-threaded mode, this is the same as frameNumber. Only applicable in accelerated mode.

The comment is nice but it makes me think that the variable name is poor, though - could we make this more obvious?  Other instrumentation code (see WebWidgetClient) talks about compositor frames in terms of drawing and swapping as two operation.  Perhaps implFrameNumber -&gt; framesComposited, compositorFramesSwapped, something like that?

The note about single-threaded mode is confusing (the caller of this interface shouldn&apos;t care whether the compositor is in single-threaded mode or not) and I think it&apos;s also incorrect - I believe in single threaded mode we sometimes start making a frame, incrementing frameNumber, and then later abort since we have no damage.  I would just delete that part and instead try to make the variables names clear enough so that a user could understand why the two numbers might be different.

&gt; Source/WebKit/chromium/WebKit.gyp:322
&gt; +                &apos;public/platform/WebRenderingStats.h&apos;,

don&apos;t need this

&gt; Source/WebKit/chromium/public/WebWidget.h:228
&gt; +    // TODO(dtu): Do something useful in software mode.

in WebKit, this is a FIXME: with no name not a TODO()

I would personally leave the comment out

If this is only going to make in composited mode, then it really should be on WebView - we only support compositing on WebViews. If we plan to write other implementations based on things other than the compositor then leaving it up on WebWidget is reasonable - is that what you had in mind, Nat?

&gt; Source/WebKit/chromium/public/platform/WebRenderingStats.h:26
&gt; +#include &quot;../../../../Platform/chromium/public/WebRenderingStats.h&quot;

I don&apos;t think we need to have this header at all - normally we only have forwarding headers like this if we have code that&apos;s already using the header in the WebKit/chromium/public/platform/ location, but in this case if somebody wants to use this header they can get it from the Platform location</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648680</commentid>
    <comment_count>11</comment_count>
      <attachid>147196</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-06-13 19:02:53 -0700</bug_when>
    <thetext>Comment on attachment 147196
Patch

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

&gt;&gt; Source/Platform/chromium/public/WebRenderingStats.h:32
&gt;&gt; +    int frameNumber; // Number of commits that have occurred since the process started. Only applicable in accelerated mode.
&gt; 
&gt; &quot;commits&quot; is a concept that is internal the compositor and not something that I think makes a lot of sense to generally expose. The inspector uses this concept and refers to it simply as &quot;frames&quot;.
&gt; 
&gt; Note that we&apos;re always going to make calls out to the embedder on each main-thread &quot;frame&quot; operation, since it needs it for rate control and synchronization with plugins etc etc.  These calls work in accelerated and non accelerated mode already (although they aren&apos;t entirely unified), so I&apos;m wondering if we really need WebKit API to expose it or if the embedder should just keep track if they are interested.

Lets make this be the number of animationFrames we&apos;ve run. E.g. any time we call requestAnimationFrame, we call it a frame.

&gt;&gt; Source/Platform/chromium/public/WebRenderingStats.h:33
&gt;&gt; +    int implFrameNumber; // Number of composites that have occurred since the process started. In single-threaded mode, this is the same as frameNumber. Only applicable in accelerated mode.
&gt; 
&gt; The comment is nice but it makes me think that the variable name is poor, though - could we make this more obvious?  Other instrumentation code (see WebWidgetClient) talks about compositor frames in terms of drawing and swapping as two operation.  Perhaps implFrameNumber -&gt; framesComposited, compositorFramesSwapped, something like that?
&gt; 
&gt; The note about single-threaded mode is confusing (the caller of this interface shouldn&apos;t care whether the compositor is in single-threaded mode or not) and I think it&apos;s also incorrect - I believe in single threaded mode we sometimes start making a frame, incrementing frameNumber, and then later abort since we have no damage.  I would just delete that part and instead try to make the variables names clear enough so that a user could understand why the two numbers might be different.

Good point. Lets name this as numFramesSentToScreen. This is exactly equal to the number of swapbuffers we issued.

&gt;&gt; Source/WebKit/chromium/public/WebWidget.h:228
&gt;&gt; +    // TODO(dtu): Do something useful in software mode.
&gt; 
&gt; in WebKit, this is a FIXME: with no name not a TODO()
&gt; 
&gt; I would personally leave the comment out
&gt; 
&gt; If this is only going to make in composited mode, then it really should be on WebView - we only support compositing on WebViews. If we plan to write other implementations based on things other than the compositor then leaving it up on WebWidget is reasonable - is that what you had in mind, Nat?

Put it on the webview.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648814</commentid>
    <comment_count>12</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-06-13 22:39:46 -0700</bug_when>
    <thetext>&gt; &gt; You should ASSERT_NOT_REACHED in the case that this is called in non-accelerated mode.
&gt; 
&gt; Won&apos;t that just cause Chrome to crash? As written, this method just does nothing in non-accelerated mode. Since I&apos;m adding a constructor to WebRenderingStats, the benchmarking extension can check the fields, and exclude them from Javascript if they haven&apos;t been set.

Hopefuly not. chrome wil be making this call, so you can have chrome not call down to webkit in software mode, and instead fill in the same structure with the software mode statistics. That is to say, make a renderview method with the same sort of api --- renderingStatistics() that itself says &quot;if composited mode, ask webview for stats, else have the render_widget fill it in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649708</commentid>
    <comment_count>13</comment_count>
      <attachid>147696</attachid>
    <who name="Dave Tu">dtu</who>
    <bug_when>2012-06-14 18:26:47 -0700</bug_when>
    <thetext>Created attachment 147696
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649712</commentid>
    <comment_count>14</comment_count>
      <attachid>147697</attachid>
    <who name="Dave Tu">dtu</who>
    <bug_when>2012-06-14 18:31:59 -0700</bug_when>
    <thetext>Created attachment 147697
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649713</commentid>
    <comment_count>15</comment_count>
      <attachid>147196</attachid>
    <who name="Dave Tu">dtu</who>
    <bug_when>2012-06-14 18:32:35 -0700</bug_when>
    <thetext>Comment on attachment 147196
Patch

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

&gt;&gt;&gt; Source/Platform/chromium/public/WebRenderingStats.h:32
&gt;&gt;&gt; +    int frameNumber; // Number of commits that have occurred since the process started. Only applicable in accelerated mode.
&gt;&gt; 
&gt;&gt; &quot;commits&quot; is a concept that is internal the compositor and not something that I think makes a lot of sense to generally expose. The inspector uses this concept and refers to it simply as &quot;frames&quot;.
&gt;&gt; 
&gt;&gt; Note that we&apos;re always going to make calls out to the embedder on each main-thread &quot;frame&quot; operation, since it needs it for rate control and synchronization with plugins etc etc.  These calls work in accelerated and non accelerated mode already (although they aren&apos;t entirely unified), so I&apos;m wondering if we really need WebKit API to expose it or if the embedder should just keep track if they are interested.
&gt; 
&gt; Lets make this be the number of animationFrames we&apos;ve run. E.g. any time we call requestAnimationFrame, we call it a frame.

Done.

&gt;&gt;&gt; Source/Platform/chromium/public/WebRenderingStats.h:33
&gt;&gt;&gt; +    int implFrameNumber; // Number of composites that have occurred since the process started. In single-threaded mode, this is the same as frameNumber. Only applicable in accelerated mode.
&gt;&gt; 
&gt;&gt; The comment is nice but it makes me think that the variable name is poor, though - could we make this more obvious?  Other instrumentation code (see WebWidgetClient) talks about compositor frames in terms of drawing and swapping as two operation.  Perhaps implFrameNumber -&gt; framesComposited, compositorFramesSwapped, something like that?
&gt;&gt; 
&gt;&gt; The note about single-threaded mode is confusing (the caller of this interface shouldn&apos;t care whether the compositor is in single-threaded mode or not) and I think it&apos;s also incorrect - I believe in single threaded mode we sometimes start making a frame, incrementing frameNumber, and then later abort since we have no damage.  I would just delete that part and instead try to make the variables names clear enough so that a user could understand why the two numbers might be different.
&gt; 
&gt; Good point. Lets name this as numFramesSentToScreen. This is exactly equal to the number of swapbuffers we issued.

Done.

&gt;&gt; Source/WebKit/chromium/WebKit.gyp:322
&gt;&gt; +                &apos;public/platform/WebRenderingStats.h&apos;,
&gt; 
&gt; don&apos;t need this

Done.

&gt;&gt;&gt; Source/WebKit/chromium/public/WebWidget.h:228
&gt;&gt;&gt; +    // TODO(dtu): Do something useful in software mode.
&gt;&gt; 
&gt;&gt; in WebKit, this is a FIXME: with no name not a TODO()
&gt;&gt; 
&gt;&gt; I would personally leave the comment out
&gt;&gt; 
&gt;&gt; If this is only going to make in composited mode, then it really should be on WebView - we only support compositing on WebViews. If we plan to write other implementations based on things other than the compositor then leaving it up on WebWidget is reasonable - is that what you had in mind, Nat?
&gt; 
&gt; Put it on the webview.

Done.

&gt;&gt; Source/WebKit/chromium/public/platform/WebRenderingStats.h:26
&gt;&gt; +#include &quot;../../../../Platform/chromium/public/WebRenderingStats.h&quot;
&gt; 
&gt; I don&apos;t think we need to have this header at all - normally we only have forwarding headers like this if we have code that&apos;s already using the header in the WebKit/chromium/public/platform/ location, but in this case if somebody wants to use this header they can get it from the Platform location

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649738</commentid>
    <comment_count>16</comment_count>
      <attachid>147697</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-06-14 18:55:18 -0700</bug_when>
    <thetext>Comment on attachment 147697
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:326
&gt; +    stats.numAnimationFrames = frameNumber();

How about renaming the vars here too, instead of having m_framenNumber, you have m_animationFrameNumber or something. And updating the impl side to have m_sourceAnimationFrameNumber. You should also update that when we call m_client-&gt;animate -- check both the single thread and ccthread proxy to understand when that happens. FrameNumber as measured now isn&apos;t 1:1 with calls to composite, which is where we currently bump frameNumber.

&gt; Source/WebKit/chromium/public/WebView.h:364
&gt; +    // Fills in a WebRenderingStats struct containing information about the state of the compositor.

There&apos;s a GPU section in the webview i think. Look for graphcisContext3D

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:1461
&gt; +    if (!m_layerTreeView.isNull())

You still need an assert_not_reached in software mode. This is the member variable m_isAcceleratedRenderignActive or something like that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649783</commentid>
    <comment_count>17</comment_count>
      <attachid>147697</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-14 19:37:01 -0700</bug_when>
    <thetext>Comment on attachment 147697
Patch

Nat speaks wisdom so R- for now. I think with his comments addressed we&apos;ll be good to land, however.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653007</commentid>
    <comment_count>18</comment_count>
      <attachid>148464</attachid>
    <who name="Dave Tu">dtu</who>
    <bug_when>2012-06-19 17:05:34 -0700</bug_when>
    <thetext>Created attachment 148464
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653059</commentid>
    <comment_count>19</comment_count>
      <attachid>147697</attachid>
    <who name="Dave Tu">dtu</who>
    <bug_when>2012-06-19 17:57:19 -0700</bug_when>
    <thetext>Comment on attachment 147697
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:326
&gt;&gt; +    stats.numAnimationFrames = frameNumber();
&gt; 
&gt; How about renaming the vars here too, instead of having m_framenNumber, you have m_animationFrameNumber or something. And updating the impl side to have m_sourceAnimationFrameNumber. You should also update that when we call m_client-&gt;animate -- check both the single thread and ccthread proxy to understand when that happens. FrameNumber as measured now isn&apos;t 1:1 with calls to composite, which is where we currently bump frameNumber.

Done.

&gt;&gt; Source/WebKit/chromium/public/WebView.h:364
&gt;&gt; +    // Fills in a WebRenderingStats struct containing information about the state of the compositor.
&gt; 
&gt; There&apos;s a GPU section in the webview i think. Look for graphcisContext3D

Done.

&gt;&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:1461
&gt;&gt; +    if (!m_layerTreeView.isNull())
&gt; 
&gt; You still need an assert_not_reached in software mode. This is the member variable m_isAcceleratedRenderignActive or something like that.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653062</commentid>
    <comment_count>20</comment_count>
      <attachid>148477</attachid>
    <who name="Dave Tu">dtu</who>
    <bug_when>2012-06-19 17:58:04 -0700</bug_when>
    <thetext>Created attachment 148477
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653123</commentid>
    <comment_count>21</comment_count>
      <attachid>148477</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-19 20:13:29 -0700</bug_when>
    <thetext>Comment on attachment 148477
Patch

Attachment 148477 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/12999079</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653219</commentid>
    <comment_count>22</comment_count>
      <attachid>148477</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-06-19 22:45:07 -0700</bug_when>
    <thetext>Comment on attachment 148477
Patch

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

LGTM, but verify the tests. Did you sort out whether there&apos;s a clean way to output WebRenderingStats into JS value objects?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:-262
&gt; -    m_frameNumber++;

I bet this breaks a few cclayertreehost tests. build and run webkit_unit_tests to verify.  you can probably fix the tests.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:327
&gt; +    m_proxy-&gt;renderingStats(stats);

bikeshed in me still questions this method name. Should the method name explain that its filling in only impl-side fields on the stats structure? E.g. implSideRenderingStats()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654129</commentid>
    <comment_count>23</comment_count>
      <attachid>148706</attachid>
    <who name="Dave Tu">dtu</who>
    <bug_when>2012-06-20 18:52:10 -0700</bug_when>
    <thetext>Created attachment 148706
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654131</commentid>
    <comment_count>24</comment_count>
      <attachid>148477</attachid>
    <who name="Dave Tu">dtu</who>
    <bug_when>2012-06-20 18:53:49 -0700</bug_when>
    <thetext>Comment on attachment 148477
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:-262
&gt;&gt; -    m_frameNumber++;
&gt; 
&gt; I bet this breaks a few cclayertreehost tests. build and run webkit_unit_tests to verify.  you can probably fix the tests.

Done.

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:327
&gt;&gt; +    m_proxy-&gt;renderingStats(stats);
&gt; 
&gt; bikeshed in me still questions this method name. Should the method name explain that its filling in only impl-side fields on the stats structure? E.g. implSideRenderingStats()?

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654252</commentid>
    <comment_count>25</comment_count>
      <attachid>148706</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-06-20 22:31:51 -0700</bug_when>
    <thetext>Comment on attachment 148706
Patch

Please pull out the WebSerializedXX forwarding header change to a new patch and upload that separately. That needs review on its own.

This patch looks ready to go once you land that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654934</commentid>
    <comment_count>26</comment_count>
      <attachid>148706</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-06-21 15:21:10 -0700</bug_when>
    <thetext>Comment on attachment 148706
Patch

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

&gt; Source/Platform/chromium/public/WebRenderingStats.h:56
&gt; +    WebSerializedScriptValue value()
&gt; +    {
&gt; +        v8::Handle&lt;v8::Object&gt; stats = v8::Object::New();
&gt; +        if (numAnimationFrames)
&gt; +            stats-&gt;Set(v8::String::New(&quot;numAnimationFrames&quot;),
&gt; +                              v8::Integer::New(numAnimationFrames),
&gt; +                              v8::ReadOnly);
&gt; +        if (numFramesSentToScreen)
&gt; +            stats-&gt;Set(v8::String::New(&quot;numFramesSentToScreen&quot;),
&gt; +                              v8::Integer::New(numFramesSentToScreen),
&gt; +                              v8::ReadOnly);
&gt; +        return WebSerializedScriptValue::serialize(stats);
&gt; +    }

I don&apos;t undertand why this function is here.  This doesn&apos;t look right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654935</commentid>
    <comment_count>27</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-06-21 15:21:37 -0700</bug_when>
    <thetext>As discussed in Bug 89691, WebSerializedScriptValue shouldn&apos;t be moved into Platform.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654948</commentid>
    <comment_count>28</comment_count>
    <who name="Dave Tu">dtu</who>
    <bug_when>2012-06-21 15:29:43 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; (From update of attachment 148706 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=148706&amp;action=review
&gt; 
&gt; &gt; Source/Platform/chromium/public/WebRenderingStats.h:56
&gt; &gt; +    WebSerializedScriptValue value()
&gt; &gt; +    {
&gt; &gt; +        v8::Handle&lt;v8::Object&gt; stats = v8::Object::New();
&gt; &gt; +        if (numAnimationFrames)
&gt; &gt; +            stats-&gt;Set(v8::String::New(&quot;numAnimationFrames&quot;),
&gt; &gt; +                              v8::Integer::New(numAnimationFrames),
&gt; &gt; +                              v8::ReadOnly);
&gt; &gt; +        if (numFramesSentToScreen)
&gt; &gt; +            stats-&gt;Set(v8::String::New(&quot;numFramesSentToScreen&quot;),
&gt; &gt; +                              v8::Integer::New(numFramesSentToScreen),
&gt; &gt; +                              v8::ReadOnly);
&gt; &gt; +        return WebSerializedScriptValue::serialize(stats);
&gt; &gt; +    }
&gt; 
&gt; I don&apos;t undertand why this function is here.  This doesn&apos;t look right.

It&apos;s here because we plan on adding a bunch of additional fields to WebRenderingStats in the future, and moving the v8 object creation into WebKit allows us to do that without any changes on the Chromium side, as in https://chromiumcodereview.appspot.com/10536080/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654952</commentid>
    <comment_count>29</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-06-21 15:34:21 -0700</bug_when>
    <thetext>The WebKit API is not the correct place to implement JavaScript bindings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655130</commentid>
    <comment_count>30</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-06-21 18:35:35 -0700</bug_when>
    <thetext>Hey Adam,

Ignoring the fact that the actual value() implementaiton is in the header rather than an impl file in src for a moment, can we get your advice on the following basic design problem?

We have a webkit-side data structure with stats in it. We want to export that data structure to javascript, but the interface out to JS is via a chrome-side extension, e.g. content/renderer/gpu/gpu_benchmarking_extension. That extension calls into webview to get the rendering stats structure, converts it to a v8::value and returns it out to javascript. The chromium-side code does not need to do anything with this data structure, just get it into v8.

The thing I&apos;m trying to avoid is us having to make a change to chromium every time we change this webkit-side data. E.g. if I add a field, I want to avoid having to also change the v8 serialization code of this structure in chrome. Or, similarly, if I change a field, having to do a 3 way set of commits to make the change happen.

SerializedScriptValue is promising here because it allows us to exchange values between webkit and a chrome-side v8 extension without the chrome side having to do the WebType-&gt;v8 serialization.

Any alternative ideas on how to do this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655134</commentid>
    <comment_count>31</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-06-21 18:37:03 -0700</bug_when>
    <thetext>Note, this is based on the WebIDBCursor::value design, which seems to do the same basic thing, but with the caveat that the chromium-side code is in src/webkit/glue and thus able to access WebKit/chromium/platform --- content/ doesn&apos;t seem to be able to see this directory. ~puzzled hat~</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655156</commentid>
    <comment_count>32</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-06-21 19:16:31 -0700</bug_when>
    <thetext>&gt; Ignoring the fact that the actual value() implementaiton is in the header rather than an impl file in src for a moment, can we get your advice on the following basic design problem?

Sorry.  Sorry for being brief earlier.  I was a bit rushed.

&gt; We have a webkit-side data structure with stats in it. We want to export that data structure to javascript, but the interface out to JS is via a chrome-side extension, e.g. content/renderer/gpu/gpu_benchmarking_extension. That extension calls into webview to get the rendering stats structure, converts it to a v8::value and returns it out to javascript. The chromium-side code does not need to do anything with this data structure, just get it into v8.

Got it.

&gt; The thing I&apos;m trying to avoid is us having to make a change to chromium every time we change this webkit-side data. E.g. if I add a field, I want to avoid having to also change the v8 serialization code of this structure in chrome. Or, similarly, if I change a field, having to do a 3 way set of commits to make the change happen.
&gt; 
&gt; SerializedScriptValue is promising here because it allows us to exchange values between webkit and a chrome-side v8 extension without the chrome side having to do the WebType-&gt;v8 serialization.
&gt; 
&gt; Any alternative ideas on how to do this?

The fact that you&apos;re exposing this data structure to the GPU benchmarking extension in an implementation detail of Chromium that should be hidden from WebKit.  From WebKit&apos;s perspective, this data structure is just like many of other data structures we exchange with the embedder that aren&apos;t translated into JavaScript APIs in Chromium.

One trick we could try is to create a macro that iterates over all the properties of the data structure.  Chromium could then use this macro to generate JavaScript bindings.  We use this trick internally in WebCore a bunch, but I don&apos;t think we&apos;ve ever used it in the API.  If that sounds appealing, we should check with the other API reviewers to make sure they&apos;re happy with it.

&gt; Note, this is based on the WebIDBCursor::value design, which seems to do the same basic thing, but with the caveat that the chromium-side code is in src/webkit/glue and thus able to access WebKit/chromium/platform --- content/ doesn&apos;t seem to be able to see this directory. ~puzzled hat~

My understanding is that we&apos;re going to remove the use of WebSerializedScriptValue in WebIDBCursor::value in favor of just using WebData.  From Chromium&apos;s perspective, it&apos;s just an opaque sequence of bytes.  WebCore happens to interpret those bytes as a serialized script value, but Chromium doesn&apos;t care about that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655247</commentid>
    <comment_count>33</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-06-21 22:53:01 -0700</bug_when>
    <thetext>So what I&apos;m hearing is that the plan is to not have a way to a WebKit data type for a JS value. If thats the case, bummer, but I can work around it. I just wanted to use one if it did exist.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655714</commentid>
    <comment_count>34</comment_count>
      <attachid>149091</attachid>
    <who name="Dave Tu">dtu</who>
    <bug_when>2012-06-22 13:12:51 -0700</bug_when>
    <thetext>Created attachment 149091
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655757</commentid>
    <comment_count>35</comment_count>
      <attachid>149091</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-22 14:11:24 -0700</bug_when>
    <thetext>Comment on attachment 149091
Patch

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

R=me

&gt; Source/WebKit/chromium/src/WebLayerTreeView.cpp:39
&gt; +#include &quot;public/WebRenderingStats.h&quot;

nit: should be #include &lt;public/WebRenderingStats.h&gt;

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:734
&gt; +    if (!isAcceleratedCompositingActive())
&gt; +        ASSERT_NOT_REACHED();

we&apos;d normally spell this: ASSERT(isAcceleratedCompositingActive());</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655763</commentid>
    <comment_count>36</comment_count>
      <attachid>149101</attachid>
    <who name="Dave Tu">dtu</who>
    <bug_when>2012-06-22 14:24:26 -0700</bug_when>
    <thetext>Created attachment 149101
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655859</commentid>
    <comment_count>37</comment_count>
      <attachid>149101</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-22 15:45:03 -0700</bug_when>
    <thetext>Comment on attachment 149101
Patch

Clearing flags on attachment: 149101

Committed r121064: &lt;http://trac.webkit.org/changeset/121064&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655861</commentid>
    <comment_count>38</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-22 15:46:13 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655892</commentid>
    <comment_count>39</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-06-22 16:15:18 -0700</bug_when>
    <thetext>This broke the Chromium Mac build due to a class/struct mismatch:

http://build.chromium.org/p/chromium.webkit/builders/Webkit%20Mac%20Builder/builds/26523

I&apos;m rolling it out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655893</commentid>
    <comment_count>40</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-06-22 16:17:23 -0700</bug_when>
    <thetext>Reverted r121064 for reason:

Broke Chromium Mac build.

Committed r121069: &lt;http://trac.webkit.org/changeset/121069&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655910</commentid>
    <comment_count>41</comment_count>
      <attachid>149135</attachid>
    <who name="Dave Tu">dtu</who>
    <bug_when>2012-06-22 16:28:51 -0700</bug_when>
    <thetext>Created attachment 149135
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655917</commentid>
    <comment_count>42</comment_count>
      <attachid>149135</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-22 16:33:09 -0700</bug_when>
    <thetext>Comment on attachment 149135
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCProxy.h:37
&gt; +struct CCRenderingStats;

please re-sort</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655929</commentid>
    <comment_count>43</comment_count>
      <attachid>149140</attachid>
    <who name="Dave Tu">dtu</who>
    <bug_when>2012-06-22 16:44:20 -0700</bug_when>
    <thetext>Created attachment 149140
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655950</commentid>
    <comment_count>44</comment_count>
      <attachid>149140</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-22 17:26:56 -0700</bug_when>
    <thetext>Comment on attachment 149140
Patch

Rejecting attachment 149140 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
unk #3 succeeded at 960 (offset 34 lines).
Hunk #4 succeeded at 970 (offset 34 lines).
Hunk #5 FAILED at 1009.
Hunk #6 FAILED at 1040.
Hunk #7 succeeded at 2235 (offset -73 lines).
Hunk #8 succeeded at 2243 (offset -73 lines).
2 out of 8 hunks FAILED -- saving rejects to file Source/WebKit/chromium/tests/CCLayerTreeHostTest.cpp.rej

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;, u&apos;--reviewer&apos;, u&apos;James Robi...&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue/

Full output: http://queues.webkit.org/results/13032566</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656846</commentid>
    <comment_count>45</comment_count>
      <attachid>149356</attachid>
    <who name="Dave Tu">dtu</who>
    <bug_when>2012-06-25 14:13:19 -0700</bug_when>
    <thetext>Created attachment 149356
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657818</commentid>
    <comment_count>46</comment_count>
      <attachid>149580</attachid>
    <who name="Dave Tu">dtu</who>
    <bug_when>2012-06-26 12:04:30 -0700</bug_when>
    <thetext>Created attachment 149580
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657820</commentid>
    <comment_count>47</comment_count>
    <who name="Dave Tu">dtu</who>
    <bug_when>2012-06-26 12:06:05 -0700</bug_when>
    <thetext>Merged, need CQ.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657825</commentid>
    <comment_count>48</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-06-26 12:10:06 -0700</bug_when>
    <thetext>(In reply to comment #47)
&gt; Merged, need CQ.

If you stick the reviewer&apos;s name in the changelogs, then I can CQ it for you, otherwise youll have to get R+ again to pass the CQ.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657925</commentid>
    <comment_count>49</comment_count>
      <attachid>149595</attachid>
    <who name="Dave Tu">dtu</who>
    <bug_when>2012-06-26 13:31:49 -0700</bug_when>
    <thetext>Created attachment 149595
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657928</commentid>
    <comment_count>50</comment_count>
      <attachid>149595</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-06-26 13:34:00 -0700</bug_when>
    <thetext>Comment on attachment 149595
Patch

if you set R+ the bot&apos;s going to get upset.

just use --no-review --request-commit when you upload to not set R anything, and the CQ? flag. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657999</commentid>
    <comment_count>51</comment_count>
      <attachid>149595</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-26 14:31:00 -0700</bug_when>
    <thetext>Comment on attachment 149595
Patch

Clearing flags on attachment: 149595

Committed r121288: &lt;http://trac.webkit.org/changeset/121288&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658001</commentid>
    <comment_count>52</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-26 14:31:07 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145658</attachid>
            <date>2012-06-04 17:05:09 -0700</date>
            <delta_ts>2012-06-08 14:04:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88268-20120604170509.patch</filename>
            <type>text/plain</type>
            <size>9439</size>
            <attacher name="Dave Tu">dtu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4ODQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA3YWE0M2MzMzI5ZWVm
MmZiZmMxYWZmNmU3YjY4YWMwYjMzNzczYjM5Li5iYzc5NzU1Mzg0NjcyODE3MWVmNGE1N2IyMGY3
YTU3NTI1OTNkN2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNi0wNCAg
RGF2ZSBUdSAgPGR0dUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBFeHBvc2Ug
cmVuZGVyaW5nIHN0YXRpc3RpY3MgdG8gV2ViTGF5ZXJUcmVlVmlldy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4MjY4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViTGF5
ZXJUcmVlVmlldy5oOgorICAgICAgICAoV2ViUmVuZGVyaW5nU3RhdGlzdGljcyk6CisgICAgICAg
IChXZWJLaXQpOgorICAgICAgICAoV2ViTGF5ZXJUcmVlVmlldyk6CisKIDIwMTItMDUtMjUgIEtp
bnVrbyBZYXN1ZGEgIDxraW51a29AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0g
RGVwcmVjYXRlIEZpbGVVdGlsaXRpZXM6OmdldEZpbGVTaXplIGFuZCBnZXRGaWxlTW9kaWZpZWRU
aW1lIGluIGZhdm9yIG9mIGdldEZpbGVNZXRhZGF0YQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGJhZDk3NTAxMmJl
OTg4YTllY2I5OGVjNTBmMTZlOWUzYzc5YjdiMmMuLmZlMmI0ZWE1MjMyY2QwYmNlZWM4NjIxMDRl
YWZjNDYxN2FmODBmNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxMi0wNi0wNCAg
RGF2ZSBUdSAgPGR0dUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBFeHBvc2Ug
cmVuZGVyaW5nIHN0YXRpc3RpY3MgdG8gV2ViTGF5ZXJUcmVlVmlldy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4MjY4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEpCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6aW1wbEZyYW1lTnVtYmVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5Lmg6CisgICAg
ICAgIChDQ1Byb3h5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NpbmdsZVRocmVhZFByb3h5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5
OjppbXBsRnJhbWVOdW1iZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1RocmVhZFByb3h5OjppbXBsRnJhbWVOdW1iZXJPbkltcGxUaHJlYWQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaDoKKyAgICAgICAg
KENDVGhyZWFkUHJveHkpOgorCiAyMDEyLTA1LTI5ICBWaWN0b3IgQ2FyYnVuZSAgPHZpY3RvckBy
b3NlZHUub3JnPgogCiAgICAgICAgIERpc3BsYXkgY3VlcyBpbiB0aGUgY29udHJvbHMgYXJlYQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA5YjM4ZDZkYmQyODBjNGY0OWFmNTY5Yzc4ZmM5
M2ZlMWY0YTkwZDAzLi5lMDM4NWUyODkxNGZjMDhjZmNmYTUyZWJjZGQ3MzZhYjk3ODg1ZGQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA2LTA0ICBE
YXZlIFR1ICA8ZHR1QGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEV4cG9zZSBy
ZW5kZXJpbmcgc3RhdGlzdGljcyB0byBXZWJMYXllclRyZWVWaWV3LgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODgyNjgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHNyYy9XZWJMYXllclRyZWVWaWV3LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlldzo6cmVuZGVyaW5nU3RhdGlzdGlj
cyk6CisgICAgICAgIChXZWJLaXQpOgorCiAyMDEyLTA1LTI5ICBBbGVjIEZsZXR0ICA8YWxlY2Zs
ZXR0QGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbmRleGVkREI6IEFsaWduIGNvZGVzIGFuZCBu
YW1lcyBmb3IgSURCLXNwZWNpZmljIGFuZCBET00tc3BlY2lmaWMgZXJyb3JzL2V4Y2VwdGlvbnMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVl
Vmlldy5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3
LmgKaW5kZXggMmIwZjMwYWRlYjVlYTFhYzE4YjlhYjBkMmEyNTIzZTdjNWZmZGExNy4uODcxY2Fk
NWY5ZWFhNDYyNzJhODE4NmY4ZTk4YjZlODI2YjY3MzhlYSAxMDA2NDQKLS0tIGEvU291cmNlL1Bs
YXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmgKKysrIGIvU291cmNlL1Bs
YXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmgKQEAgLTQ1LDYgKzQ1LDEx
IEBAIGNsYXNzIFdlYkxheWVyVHJlZVZpZXdJbXBsOwogc3RydWN0IFdlYlBvaW50Owogc3RydWN0
IFdlYlJlY3Q7CiAKK3N0cnVjdCBXZWJSZW5kZXJpbmdTdGF0aXN0aWNzIHsKKyAgICBpbnQgcGFp
bnRGcmFtZUNvdW50OworICAgIGludCBpbXBsRnJhbWVDb3VudDsKK307CisKIGNsYXNzIFdlYkxh
eWVyVHJlZVZpZXcgOiBwdWJsaWMgV2ViTm9uQ29weWFibGUgewogcHVibGljOgogICAgIHN0cnVj
dCBTZXR0aW5ncyB7CkBAIC0xNzEsNiArMTc2LDEwIEBAIHB1YmxpYzoKICAgICAvLyB0aGUgY29t
cG9zaXRvciB0aHJlYWQuCiAgICAgV0VCS0lUX0VYUE9SVCBXZWJHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCgpOwogCisgICAgLy8gRmlsbHMgaW4gYSBXZWJSZW5kZXJpbmdTdGF0aXN0aWNzIHN0
cnVjdCBjb250YWluaW5nCisgICAgLy8gaW5mb3JtYXRpb24gYWJvdXQgdGhlIHN0YXRlIG9mIHRo
ZSBjb21wb3NpdG9yLgorICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZW5kZXJpbmdTdGF0aXN0aWNz
KFdlYlJlbmRlcmluZ1N0YXRpc3RpY3MmKTsKKwogICAgIC8vIERlYnVnZ2luZyAvIGRhbmdlcm91
cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogICAgIC8v
IFNpbXVsYXRlcyBhIGxvc3QgY29udGV4dC4gRm9yIHRlc3Rpbmcgb25seS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0LmgKaW5kZXggZWNlYzIzYjExZGFkN2ZmMTkwYTk5M2M3MzQ5NWEyODhmODU4
OTVlYi4uNmEzYTk5NWMyMmJjZGMxNmE4OTFmOTFjNTM0ZTI1MTdjMDc5NjQ1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmgKQEAgLTE5Nyw2ICsxOTcsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBmaW5pc2hBbGxSZW5kZXJpbmcoKTsKIAogICAgIGludCBmcmFtZU51bWJlcigpIGNvbnN0IHsg
cmV0dXJuIG1fZnJhbWVOdW1iZXI7IH0KKyAgICBpbnQgaW1wbEZyYW1lTnVtYmVyKCkgY29uc3Qg
eyByZXR1cm4gbV9wcm94eS0+aW1wbEZyYW1lTnVtYmVyKCk7IH0KIAogICAgIGNvbnN0IExheWVy
UmVuZGVyZXJDYXBhYmlsaXRpZXMmIGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKSBjb25zdDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NQcm94eS5oCmluZGV4IDM2NjI5MTc5YTJlMTY1MzkwZWQyODJiOGQ1NWI3MzU0YTdjNWQw
NDAuLjRjNmU3NDM2ZjU1ZGE1MjQ2ODY2YjEwNzY2NDAyYWI1OTkyYWFhODMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5
LmgKQEAgLTc5LDYgKzc5LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBpbnQgY29tcG9zaXRv
cklkZW50aWZpZXIoKSBjb25zdCA9IDA7CiAKKyAgICB2aXJ0dWFsIGludCBpbXBsRnJhbWVOdW1i
ZXIoKSA9IDA7CisKICAgICB2aXJ0dWFsIGNvbnN0IExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMm
IGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIHZv
aWQgc2V0TmVlZHNBbmltYXRlKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94
eS5oCmluZGV4IDhmYzg5ODRiZjk0MDBmMmI4M2ZmYjhlMTRhZGMxZTQyMGYyMWRmZWMuLjcxZmIy
M2QxZDczZTM0YWVkZWI4MWY2YWVlOGM2ZWVmYjZkYmNiM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Np
bmdsZVRocmVhZFByb3h5LmgKQEAgLTUzLDYgKzUzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
Ym9vbCBpbml0aWFsaXplTGF5ZXJSZW5kZXJlcigpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9v
bCByZWNyZWF0ZUNvbnRleHQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGludCBjb21wb3NpdG9y
SWRlbnRpZmllcigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fY29tcG9zaXRvcklkZW50aWZp
ZXI7IH0KKyAgICB2aXJ0dWFsIGludCBpbXBsRnJhbWVOdW1iZXIoKSBPVkVSUklERSB7IHJldHVy
biBtX2xheWVyVHJlZUhvc3RJbXBsLT5mcmFtZU51bWJlcigpOyB9CiAgICAgdmlydHVhbCBjb25z
dCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkg
Y29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGxvc2VDb250ZXh0KCkgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzQW5pbWF0ZSgpIE9WRVJSSURFOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RocmVhZFByb3h5LmNwcAppbmRleCBmYjBhNWMxMGI1N2Y3OTg4MTAzZDIxMzIzOThjNmExOGNj
M2MxNDE5Li4wZWJlMTczMzIwMWQ3ZTk0ZWZjN2JjYmY0OGQ0MDA4YWVmY2EzMzg3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVh
ZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RocmVhZFByb3h5LmNwcApAQCAtMjY2LDYgKzI2NiwxOSBAQCBpbnQgQ0NUaHJlYWRQ
cm94eTo6Y29tcG9zaXRvcklkZW50aWZpZXIoKSBjb25zdAogICAgIHJldHVybiBtX2NvbXBvc2l0
b3JJZGVudGlmaWVyOwogfQogCitpbnQgQ0NUaHJlYWRQcm94eTo6aW1wbEZyYW1lTnVtYmVyKCkK
K3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgQ0NDb21wbGV0aW9uRXZlbnQg
Y29tcGxldGlvbjsKKyAgICBpbnQgZnJhbWVOdW1iZXIgPSAwOworICAgIENDUHJveHk6OmltcGxU
aHJlYWQoKS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5
OjppbXBsRnJhbWVOdW1iZXJPbkltcGxUaHJlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2VzcygmY29t
cGxldGlvbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2VzcygmZnJhbWVOdW1iZXIpKSk7CisgICAgY29t
cGxldGlvbi53YWl0KCk7CisgICAgcmV0dXJuIGZyYW1lTnVtYmVyOworfQorCiBjb25zdCBMYXll
clJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBDQ1RocmVhZFByb3h5OjpsYXllclJlbmRlcmVyQ2FwYWJp
bGl0aWVzKCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9sYXllclJlbmRlcmVySW5pdGlhbGl6ZWQp
OwpAQCAtODc3LDQgKzg5MCwxMSBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4
dE9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbiwgRwogICAgIGNvbXBs
ZXRpb24tPnNpZ25hbCgpOwogfQogCit2b2lkIENDVGhyZWFkUHJveHk6OmltcGxGcmFtZU51bWJl
ck9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbiwgaW50KiBmcmFtZU51
bWJlcikKK3sKKyAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOworICAgICpmcmFtZU51bWJlciA9
IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmZyYW1lTnVtYmVyKCk7CisgICAgY29tcGxldGlvbi0+c2ln
bmFsKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHku
aAppbmRleCA5ZDJlZGRhNmZkZTBkZGY3MTA3ZmUxYzc1OTdhMmEwZTlmMzIzZWU4Li4zYmY0YWE5
OTQ2Y2U1MzAyM2M0MmE1YjAyYmRkYzY3ZmUyY2JhZTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94
eS5oCkBAIC02MSw2ICs2MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaW5pdGlhbGl6
ZUxheWVyUmVuZGVyZXIoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgcmVjcmVhdGVDb250
ZXh0KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBpbnQgY29tcG9zaXRvcklkZW50aWZpZXIoKSBj
b25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGludCBpbXBsRnJhbWVOdW1iZXIoKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIGNvbnN0IExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMmIGxheWVyUmVu
ZGVyZXJDYXBhYmlsaXRpZXMoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgbG9z
ZUNvbnRleHQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNBbmltYXRlKCkg
T1ZFUlJJREU7CkBAIC0xNDIsNiArMTQzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEZ1bGxS
b290TGF5ZXJEYW1hZ2VPbkltcGxUaHJlYWQoKTsKICAgICB2b2lkIGFjcXVpcmVMYXllclRleHR1
cmVzRm9yTWFpblRocmVhZE9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCopOwogICAgIHZv
aWQgcmVjcmVhdGVDb250ZXh0T25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiwgR3JhcGhp
Y3NDb250ZXh0M0QqLCBib29sKiByZWNyZWF0ZVN1Y2NlZWRlZCwgTGF5ZXJSZW5kZXJlckNhcGFi
aWxpdGllcyopOworICAgIHZvaWQgaW1wbEZyYW1lTnVtYmVyT25JbXBsVGhyZWFkKENDQ29tcGxl
dGlvbkV2ZW50KiwgaW50KiBmcmFtZU51bWJlcik7CiAgICAgQ0NTY2hlZHVsZWRBY3Rpb25EcmF3
QW5kU3dhcFJlc3VsdCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcEludGVybmFsKGJvb2wgZm9y
Y2VkRHJhdyk7CiAgICAgdm9pZCBzZXRGb250QXRsYXNPbkltcGxUaHJlYWQoUGFzc093blB0cjxD
Q0ZvbnRBdGxhcz4pOwogICAgIHZvaWQgZm9yY2VTZXJpYWxpemVPblN3YXBCdWZmZXJzT25JbXBs
VGhyZWFkKENDQ29tcGxldGlvbkV2ZW50Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCmluZGV4IDY1YTJhNjNiMThhMmM4Y2NmZGM1ZmVjMWUx
MGYxOWM2MzNhY2E1NTguLjQzZWNmNmU3MDk2M2QwN2IwNGEzMTc3OTE5Nzc3YmI5MzRiODA3MTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3Bw
CkBAIC0xNjQsNiArMTY0LDEyIEBAIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBXZWJMYXllclRyZWVW
aWV3Ojpjb250ZXh0KCkKICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpleHRy
YWN0V2ViR3JhcGhpY3NDb250ZXh0M0QobV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPmNvbnRl
eHQoKSk7CiB9CiAKK3ZvaWQgV2ViTGF5ZXJUcmVlVmlldzo6cmVuZGVyaW5nU3RhdGlzdGljcyhX
ZWJSZW5kZXJpbmdTdGF0aXN0aWNzJiBzdGF0aXN0aWNzKQoreworICAgIHN0YXRpc3RpY3MucGFp
bnRGcmFtZUNvdW50ID0gbV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPmZyYW1lTnVtYmVyKCk7
CisgICAgc3RhdGlzdGljcy5pbXBsRnJhbWVDb3VudCA9IG1fcHJpdmF0ZS0+bGF5ZXJUcmVlSG9z
dCgpLT5pbXBsRnJhbWVOdW1iZXIoKTsKK30KKwogdm9pZCBXZWJMYXllclRyZWVWaWV3Ojpsb3Nl
Q29tcG9zaXRvckNvbnRleHQoaW50IG51bVRpbWVzKQogewogICAgIG1fcHJpdmF0ZS0+bGF5ZXJU
cmVlSG9zdCgpLT5sb3NlQ29udGV4dChudW1UaW1lcyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146644</attachid>
            <date>2012-06-08 14:03:47 -0700</date>
            <delta_ts>2012-06-12 17:12:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88268-20120608140347.patch</filename>
            <type>text/plain</type>
            <size>20331</size>
            <attacher name="Dave Tu">dtu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5ODE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBjMDU3MTc2ZDE5ODFi
ZWFjNmNlZWZiYTQxOTZiMDExMWQ4ZDI2MDgyLi5mMTA5NWY2YjM4NDI3NDU4YjU5MmFkY2JmNTQx
ZTZhZjY4NGRjNGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wNi0wNCAg
RGF2ZSBUdSAgPGR0dUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBFeHBvc2Ug
cmVuZGVyaW5nIHN0YXRpc3RpY3MgdG8gV2ViV2lkZ2V0LgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODgyNjgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgV2ViS2l0IHNpZGUgb2YgYSBiYXNpYyBmcmFt
ZXdvcmsgZm9yIGV4cG9zaW5nIHJlbmRlcmluZyBzdGF0aXN0aWNzCisgICAgICAgIHRvIENocm9t
aXVtJ3MgLS1lbmFibGUtYmVuY2htYXJraW5nIGV4dGVuc2lvbi4KKworICAgICAgICAqIGNocm9t
aXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Lmg6CisgICAgICAgIChXZWJSZW5kZXJpbmdTdGF0
aXN0aWNzKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJMYXllclRyZWVWaWV3KToK
KwogMjAxMi0wNi0wNiAgTWFyayBQaWxncmltICA8cGlsZ3JpbUBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgW0Nocm9taXVtXSBNb3ZlIGNyZWF0ZU1lc3NhZ2VQb3J0Q2hhbm5lbCB0byBQbGF0Zm9y
bS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggOGFlMzY5ZWZiODM1NjQ5NzZmYjAwNDU4NDc2ZTkzYWIyMWMxY2Fm
YS4uZTRhYTRlMjFiN2ViZjU2YmYzYzYwYTJlNzdjODA0YzFhMDliZjg2NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI1IEBACisyMDEyLTA2LTA0ICBEYXZlIFR1ICA8ZHR1QGNocm9taXVtLm9yZz4K
KworICAgICAgICBbY2hyb21pdW1dIEV4cG9zZSByZW5kZXJpbmcgc3RhdGlzdGljcyB0byBXZWJX
aWRnZXQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
ODI2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
ZSBXZWJLaXQgc2lkZSBvZiBhIGJhc2ljIGZyYW1ld29yayBmb3IgZXhwb3NpbmcgcmVuZGVyaW5n
IHN0YXRpc3RpY3MKKyAgICAgICAgdG8gQ2hyb21pdW0ncyAtLWVuYWJsZS1iZW5jaG1hcmtpbmcg
ZXh0ZW5zaW9uLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0Lmg6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmltcGxG
cmFtZU51bWJlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQ
cm94eS5oOgorICAgICAgICAoQ0NQcm94eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q0NUaHJlYWRQcm94eTo6aW1wbEZyYW1lTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6aW1wbEZyYW1lTnVtYmVyT25JbXBsVGhyZWFk
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5
Lmg6CisgICAgICAgIChDQ1RocmVhZFByb3h5KToKKwogMjAxMi0wNi0wOCAgS2VudGFybyBIYXJh
ICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUkVHUkVTU0lPTiByMTE5ODAyOiBS
ZW1vdmUgdW5uZWNlc3NhcnkgQVNTRVJUKCFtX2RlbGV0aW9uSGFzQmVndW4pIGZyb20gRG9jdW1l
bnQuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAxZTdhMTlkZDgwMzc3NzZmYzU3OWI2
Yjc3Y2VjMjEzNWQ0YjA0MzllLi42YmIwNTYwNDg3MzRhNjI2YzNhNzU3MGZiNDBhYzMyMDc5NGI0
NjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA2
LTA0ICBEYXZlIFR1ICA8ZHR1QGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEV4
cG9zZSByZW5kZXJpbmcgc3RhdGlzdGljcyB0byBXZWJXaWRnZXQuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODI2OAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBXZWJLaXQgc2lkZSBvZiBhIGJhc2lj
IGZyYW1ld29yayBmb3IgZXhwb3NpbmcgcmVuZGVyaW5nIHN0YXRpc3RpY3MKKyAgICAgICAgdG8g
Q2hyb21pdW0ncyAtLWVuYWJsZS1iZW5jaG1hcmtpbmcgZXh0ZW5zaW9uLgorCisgICAgICAgICog
c3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVW
aWV3OjpyZW5kZXJpbmdTdGF0aXN0aWNzKToKKyAgICAgICAgKFdlYktpdCk6CisKIDIwMTItMDYt
MDggIFBldGVyIEJldmVybG9vICA8cGV0ZXJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJv
bWl1bV0gUmUtZW5hYmxlIFNIQVJFRF9XT1JLRVJTIGZvciBBbmRyb2lkIHVudGlsIGEgYnVpbGQg
Zml4IGhhcyBiZWVuIHJlc29sdmVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9t
aXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0v
cHVibGljL1dlYkxheWVyVHJlZVZpZXcuaAppbmRleCAyM2QwZDYzY2U5ZGQyOGE1YjViYWQ3MTI4
ZWFhMTQ5YTk3M2I5ZGU2Li4yNTllODNjNDczZjQ0ZWI4ZDhmMTkxMmU0ZjczOTBmNzYwNGVmYWRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJl
ZVZpZXcuaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJl
ZVZpZXcuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBXZWJMYXllclRyZWVWaWV3Q2xpZW50Owog
Y2xhc3MgV2ViTGF5ZXJUcmVlVmlld0ltcGw7CiBzdHJ1Y3QgV2ViUG9pbnQ7CiBzdHJ1Y3QgV2Vi
UmVjdDsKK3N0cnVjdCBXZWJSZW5kZXJpbmdTdGF0czsKIAogY2xhc3MgV2ViTGF5ZXJUcmVlVmll
dyA6IHB1YmxpYyBXZWJOb25Db3B5YWJsZSB7CiBwdWJsaWM6CkBAIC0xNzMsNiArMTc0LDEwIEBA
IHB1YmxpYzoKICAgICAvLyB0aGUgY29tcG9zaXRvciB0aHJlYWQuCiAgICAgV0VCS0lUX0VYUE9S
VCBXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCgpOwogCisgICAgLy8gRmlsbHMgaW4gYSBX
ZWJSZW5kZXJpbmdTdGF0cyBzdHJ1Y3QgY29udGFpbmluZworICAgIC8vIGluZm9ybWF0aW9uIGFi
b3V0IHRoZSBzdGF0ZSBvZiB0aGUgY29tcG9zaXRvci4KKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQg
cmVuZGVyaW5nU3RhdHMoV2ViUmVuZGVyaW5nU3RhdHMmKTsKKwogICAgIC8vIERlYnVnZ2luZyAv
IGRhbmdlcm91cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IAogICAgIC8vIFNpbXVsYXRlcyBhIGxvc3QgY29udGV4dC4gRm9yIHRlc3Rpbmcgb25seS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQppbmRleCBiM2U2NjI3ZWNkMjQ0ZjRkN2M3Mzc0ZTJjNGQ2ODc0ODc1YTM0NDlm
Li44ZjFkMWVmYzFlNzBmOWQ5MDM1MDIzNjMwZTY1YzI5MTJlYzU2ZGRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCkBAIC0zNzI1LDYgKzM3MjUsNyBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUHJveHkuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyaW5nU3RhdHMuaCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmgnLAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdR
dWFkLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAppbmRleCBmYTBlYjY0YzM2
NWIxOGRlMGQ5NjlmYzgzZTliNDgzNWEzODY5MzRhLi41YThiNjFmZmIxYmYzYjM1NGI4ODE3MjZj
NzdkZTIzNDI2YzUxYzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTM4
LDYgKzM4LDcgQEAKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uaCIKICNpbmNs
dWRlICJjYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NPY2NsdXNpb25U
cmFja2VyLmgiCisjaW5jbHVkZSAiY2MvQ0NSZW5kZXJpbmdTdGF0cy5oIgogI2luY2x1ZGUgImNj
L0NDU2luZ2xlVGhyZWFkUHJveHkuaCIKICNpbmNsdWRlICJjYy9DQ1RocmVhZC5oIgogI2luY2x1
ZGUgImNjL0NDVGhyZWFkUHJveHkuaCIKQEAgLTMxNyw2ICszMTgsMTIgQEAgdm9pZCBDQ0xheWVy
VHJlZUhvc3Q6OmZpbmlzaEFsbFJlbmRlcmluZygpCiAgICAgbV9wcm94eS0+ZmluaXNoQWxsUmVu
ZGVyaW5nKCk7CiB9CiAKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpyZW5kZXJpbmdTdGF0cyhDQ1Jl
bmRlcmluZ1N0YXRzJiBzdGF0cykgY29uc3QKK3sKKyAgICBtX3Byb3h5LT5yZW5kZXJpbmdTdGF0
cyhzdGF0cyk7CisgICAgc3RhdHMuZnJhbWVOdW1iZXIgPSBmcmFtZU51bWJlcigpOworfQorCiBj
b25zdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBDQ0xheWVyVHJlZUhvc3Q6OmxheWVyUmVu
ZGVyZXJDYXBhYmlsaXRpZXMoKSBjb25zdAogewogICAgIHJldHVybiBtX3Byb3h5LT5sYXllclJl
bmRlcmVyQ2FwYWJpbGl0aWVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4IDQz
NGFlYzI3NDIyMDFjNWY2ZDViNDljYzUzN2UxODAzOWMyYzg2NGQuLjdmMGNjNDBjODk5ZDZhOTU3
ZWQ1MWE4YTFlMTE3Mzk1MmE5NjI1M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBA
IC00NSw2ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0NMYXllclRyZWVI
b3N0SW1wbDsKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQ7CitjbGFzcyBDQ1JlbmRl
cmluZ1N0YXRzOwogY2xhc3MgQ0NUZXh0dXJlVXBkYXRlcjsKIGNsYXNzIEdyYXBoaWNzQ29udGV4
dDNEOwogY2xhc3MgTGF5ZXJQYWludGVyQ2hyb21pdW07CkBAIC0yMDAsNiArMjAxLDggQEAgcHVi
bGljOgogCiAgICAgaW50IGZyYW1lTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZU51bWJl
cjsgfQogCisgICAgdm9pZCByZW5kZXJpbmdTdGF0cyhDQ1JlbmRlcmluZ1N0YXRzJikgY29uc3Q7
CisKICAgICBjb25zdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBsYXllclJlbmRlcmVyQ2Fw
YWJpbGl0aWVzKCkgY29uc3Q7CiAKICAgICAvLyBUZXN0IG9ubHkgaG9vawpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCmlu
ZGV4IGZiMmNiYmFlOTZmMDczMzAwNzVjMjUzMzVkYmEwN2U1OWE1ZDJlMmYuLjgwZDQ3YjZhNTUz
YzExMmFiMWM4YWRhMTU3ZTA2NWEwNTFjOTk2YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKQEAgLTM0LDYgKzM0
LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0NGb250QXRsYXM7CitjbGFzcyBD
Q1JlbmRlcmluZ1N0YXRzOwogY2xhc3MgQ0NUaHJlYWQ7CiBjbGFzcyBDQ0dyYXBoaWNzQ29udGV4
dDsKIHN0cnVjdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzOwpAQCAtNzksNiArODAsOCBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIGludCBjb21wb3NpdG9ySWRlbnRpZmllcigpIGNvbnN0ID0g
MDsKIAorICAgIHZpcnR1YWwgdm9pZCByZW5kZXJpbmdTdGF0cyhDQ1JlbmRlcmluZ1N0YXRzJikg
PSAwOworCiAgICAgdmlydHVhbCBjb25zdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBsYXll
clJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHNl
dE5lZWRzQW5pbWF0ZSgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyaW5nU3RhdHMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyaW5nU3RhdHMuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yZDJjY2VhNzI2YzE5OGMzMzU0ODYyYWQ0MmZmNWUwOWQxYTI5YmQxCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NS
ZW5kZXJpbmdTdGF0cy5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
Q0NSZW5kZXJpbmdTdGF0c19oCisjZGVmaW5lIENDUmVuZGVyaW5nU3RhdHNfaAorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3N0cnVjdCBDQ1JlbmRlcmluZ1N0YXRzIHsKKyAgICBpbnQgZnJhbWVO
dW1iZXI7CisgICAgaW50IGltcGxGcmFtZU51bWJlcjsKK307CisKK30KKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Np
bmdsZVRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCmluZGV4IGE2MmNkNmIzYjc3NWNjNjg4
ZGQ4NzViZjk2NjQ2MTEyYzQ0YTNhY2YuLjI0MDcyZGJlMjJkMmMzY2UyZTdiODliYjY0MThkZTY5
OWZhOGEzNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCkBAIC0z
MCw2ICszMCw3IEBACiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgogI2luY2x1ZGUgImNjL0NDRm9u
dEF0bGFzLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCisjaW5jbHVkZSAiY2Mv
Q0NSZW5kZXJpbmdTdGF0cy5oIgogI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKICNp
bmNsdWRlICJjYy9DQ1RpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CkBAIC0x
OTYsNiArMTk3LDExIEBAIGJvb2wgQ0NTaW5nbGVUaHJlYWRQcm94eTo6cmVjcmVhdGVDb250ZXh0
KCkKICAgICByZXR1cm4gaW5pdGlhbGl6ZWQ7CiB9CiAKK3ZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94
eTo6cmVuZGVyaW5nU3RhdHMoQ0NSZW5kZXJpbmdTdGF0cyYgc3RhdHMpCit7CisgICAgc3RhdHMu
aW1wbEZyYW1lTnVtYmVyID0gbV9sYXllclRyZWVIb3N0SW1wbC0+ZnJhbWVOdW1iZXIoKTsKK30K
KwogY29uc3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgQ0NTaW5nbGVUaHJlYWRQcm94eTo6
bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1fbGF5ZXJS
ZW5kZXJlckluaXRpYWxpemVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaApp
bmRleCA2NDVhOGE5YTRhZDExNzRjMzZlMWVkMjA3MTllZDE3ZWIzZThmN2VmLi40NmZmZTE5M2M1
OWM0MDM4ZDFiNTc4ODRjMjAwMWRkNWMyZDBkNTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVU
aHJlYWRQcm94eS5oCkBAIC01Myw2ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wg
aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgcmVj
cmVhdGVDb250ZXh0KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBpbnQgY29tcG9zaXRvcklkZW50
aWZpZXIoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2NvbXBvc2l0b3JJZGVudGlmaWVyOyB9
CisgICAgdmlydHVhbCB2b2lkIHJlbmRlcmluZ1N0YXRzKENDUmVuZGVyaW5nU3RhdHMmKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIGNvbnN0IExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMmIGxheWVy
UmVuZGVyZXJDYXBhYmlsaXRpZXMoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
bG9zZUNvbnRleHQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNBbmltYXRl
KCkgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCmluZGV4IGU5NTU1NTUxMDU2
N2UyOTdmMzlhMGUzYzE5NmVmYThmMjgyYWM5YTQuLjZhYjI0YzgyMzNiOGUwMWJlM2NhOTFjNTFk
NjJmNDVlNzVkMWUwNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCkBAIC0zNSw2ICsz
NSw3IEBACiAjaW5jbHVkZSAiY2MvQ0NGcmFtZVJhdGVDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAi
Y2MvQ0NJbnB1dEhhbmRsZXIuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKKyNp
bmNsdWRlICJjYy9DQ1JlbmRlcmluZ1N0YXRzLmgiCiAjaW5jbHVkZSAiY2MvQ0NTY2hlZHVsZXIu
aCIKICNpbmNsdWRlICJjYy9DQ1Njb3BlZFRocmVhZFByb3h5LmgiCiAjaW5jbHVkZSAiY2MvQ0NU
ZXh0dXJlVXBkYXRlci5oIgpAQCAtMjY2LDYgKzI2NywxNyBAQCBpbnQgQ0NUaHJlYWRQcm94eTo6
Y29tcG9zaXRvcklkZW50aWZpZXIoKSBjb25zdAogICAgIHJldHVybiBtX2NvbXBvc2l0b3JJZGVu
dGlmaWVyOwogfQogCit2b2lkIENDVGhyZWFkUHJveHk6OnJlbmRlcmluZ1N0YXRzKENDUmVuZGVy
aW5nU3RhdHMmIHN0YXRzKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBD
Q0NvbXBsZXRpb25FdmVudCBjb21wbGV0aW9uOworICAgIENDUHJveHk6OmltcGxUaHJlYWQoKS0+
cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjpyZW5kZXJp
bmdTdGF0c09uSW1wbFRocmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKCZjb21wbGV0aW9uKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBB
bGxvd0Nyb3NzVGhyZWFkQWNjZXNzKCZzdGF0cykpKTsKKyAgICBjb21wbGV0aW9uLndhaXQoKTsK
K30KKwogY29uc3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgQ0NUaHJlYWRQcm94eTo6bGF5
ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1fbGF5ZXJSZW5k
ZXJlckluaXRpYWxpemVkKTsKQEAgLTg3Nyw0ICs4ODksMTEgQEAgdm9pZCBDQ1RocmVhZFByb3h5
OjpyZWNyZWF0ZUNvbnRleHRPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRp
b24sIEMKICAgICBjb21wbGV0aW9uLT5zaWduYWwoKTsKIH0KIAordm9pZCBDQ1RocmVhZFByb3h5
OjpyZW5kZXJpbmdTdGF0c09uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlv
biwgQ0NSZW5kZXJpbmdTdGF0cyogc3RhdHMpCit7CisgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgp
KTsKKyAgICBzdGF0cy0+aW1wbEZyYW1lTnVtYmVyID0gbV9sYXllclRyZWVIb3N0SW1wbC0+ZnJh
bWVOdW1iZXIoKTsKKyAgICBjb21wbGV0aW9uLT5zaWduYWwoKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCmluZGV4IDI0ZGI5MmU2ZWExNWM5ZjQ2
MjgyOTY5OTAxZWViYmU1Zjk4OWU2ZTQuLmNjM2VjNmNkZGE4NDUyZTljMjBkMzMyOTg4Zjc2NWEw
NzdiMDFmNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKQEAgLTYxLDYgKzYxLDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgYm9vbCBpbml0aWFsaXplTGF5ZXJSZW5kZXJlcigpIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgYm9vbCByZWNyZWF0ZUNvbnRleHQoKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIGludCBjb21wb3NpdG9ySWRlbnRpZmllcigpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCByZW5kZXJpbmdTdGF0cyhDQ1JlbmRlcmluZ1N0YXRzJikgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCBjb25zdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBsYXllclJlbmRlcmVyQ2Fw
YWJpbGl0aWVzKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGxvc2VDb250ZXh0
KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzQW5pbWF0ZSgpIE9WRVJSSURF
OwpAQCAtMTQyLDYgKzE0Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRGdWxsUm9vdExheWVy
RGFtYWdlT25JbXBsVGhyZWFkKCk7CiAgICAgdm9pZCBhY3F1aXJlTGF5ZXJUZXh0dXJlc0Zvck1h
aW5UaHJlYWRPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsKICAgICB2b2lkIHJlY3Jl
YXRlQ29udGV4dE9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCosIENDR3JhcGhpY3NDb250
ZXh0KiwgYm9vbCogcmVjcmVhdGVTdWNjZWVkZWQsIExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMq
KTsKKyAgICB2b2lkIHJlbmRlcmluZ1N0YXRzT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50
KiwgQ0NSZW5kZXJpbmdTdGF0cyopOwogICAgIENDU2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBS
ZXN1bHQgc2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBJbnRlcm5hbChib29sIGZvcmNlZERyYXcp
OwogICAgIHZvaWQgc2V0Rm9udEF0bGFzT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8Q0NGb250QXRs
YXM+KTsKICAgICB2b2lkIGZvcmNlU2VyaWFsaXplT25Td2FwQnVmZmVyc09uSW1wbFRocmVhZChD
Q0NvbXBsZXRpb25FdmVudCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9X
ZWJLaXQuZ3lwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IDk5MjA0
Yjg4NmFiN2VjMWNmNGQyNGE1OTNjY2RjZDAyN2Q1NDk5MDEuLjI5ZWZkNmZjMDBlM2NmM2MzMzNj
YTgyMzU2NzU5MWRkZjIzNGEzOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
V2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTIy
OSw2ICsyMjksNyBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViUHJlcmVuZGVyZXJDbGll
bnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJSYW5nZS5oJywKICAgICAgICAgICAg
ICAgICAncHVibGljL1dlYlJlZ3VsYXJFeHByZXNzaW9uLmgnLAorICAgICAgICAgICAgICAgICdw
dWJsaWMvV2ViUmVuZGVyaW5nU3RhdHMuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJS
dW50aW1lRmVhdHVyZXMuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJTY29wZWRNaWNy
b3Rhc2tTdXBwcmVzc2lvbi5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlNjb3BlZFVz
ZXJHZXN0dXJlLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViUmVuZGVyaW5nU3RhdHMuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlJl
bmRlcmluZ1N0YXRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTQxYmRiYjk3NmUzNDc4NWVhOGJhZjFiNzUwMzlk
MmYwMmZiMDczNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlJlbmRlcmluZ1N0YXRzLmgKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
V2ViUmVuZGVyaW5nU3RhdHNfaAorI2RlZmluZSBXZWJSZW5kZXJpbmdTdGF0c19oCisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgV2ViUmVuZGVyaW5nU3RhdHMgeworICAgIGludCBmcmFt
ZU51bWJlcjsgLy8gTnVtYmVyIG9mIGZyYW1lcyB0aGF0IGhhdmUgZWxhcHNlZCBvbiB0aGUgbWFp
biB0aHJlYWQuCisgICAgaW50IGltcGxGcmFtZU51bWJlcjsgLy8gTnVtYmVyIG9mIGZyYW1lcyB0
aGF0IGhhdmUgZWxhcHNlZCBvbiB0aGUgaW1wbCB0aHJlYWQuCit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlJlbmRlcmluZ1N0YXRzX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldpZGdldC5oIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViV2lkZ2V0LmgKaW5kZXggMDhiMmNkMDVhMjVhZGNiNGFmZDZkYmY0
OGFlMTM0YmIzNmZjN2VjZi4uYjAzYWE5OTJjOTY2MzkwY2RmNDc3NjUxODkxZDhkOTRkNGMyNDA5
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV2lkZ2V0LmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV2lkZ2V0LmgKQEAgLTQ4LDYg
KzQ4LDcgQEAgY2xhc3MgV2ViSW5wdXRFdmVudDsKIGNsYXNzIFdlYk1vdXNlRXZlbnQ7CiBjbGFz
cyBXZWJTdHJpbmc7CiBzdHJ1Y3QgV2ViUG9pbnQ7CitzdHJ1Y3QgV2ViUmVuZGVyaW5nU3RhdHM7
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgV2ViVmVjdG9yOwogCiBjbGFzcyBXZWJXaWRn
ZXQgewpAQCAtMjIxLDYgKzIyMiwxMCBAQCBwdWJsaWM6CiAgICAgLy8gZm9sbG93aW5nIHRoZSBj
YWxsIHRvIGluc3RydW1lbnRCZWdpbkZyYW1lKCkuCiAgICAgdmlydHVhbCB2b2lkIGluc3RydW1l
bnRDYW5jZWxGcmFtZSgpIHsgfQogCisgICAgLy8gRmlsbHMgaW4gYSBXZWJSZW5kZXJpbmdTdGF0
cyBzdHJ1Y3QgY29udGFpbmluZworICAgIC8vIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzdGF0ZSBv
ZiB0aGUgY29tcG9zaXRvci4KKyAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyaW5nU3RhdHMoV2ViUmVu
ZGVyaW5nU3RhdHMmKSB7IH0KKwogcHJvdGVjdGVkOgogICAgIH5XZWJXaWRnZXQoKSB7IH0KIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCmlu
ZGV4IGFlMjBhZWE5YTM1ODNlNjM0MjQ5ZjViYjRkYjQwODgyODRkODI2ZjEuLmY0MTQwZWYwZDY0
ZDI2OGU4OWEzODNlNGY2YTcyYmZlMTJlYWM3ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCkBAIC0yOCw3ICsyOCw5IEBACiAKICNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJMYXllclRyZWVW
aWV3SW1wbC5oIgorI2luY2x1ZGUgIldlYlJlbmRlcmluZ1N0YXRzLmgiCiAjaW5jbHVkZSAiY2Mv
Q0NMYXllclRyZWVIb3N0LmgiCisjaW5jbHVkZSAiY2MvQ0NSZW5kZXJpbmdTdGF0cy5oIgogI2lu
Y2x1ZGUgInBsYXRmb3JtL1dlYkxheWVyLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViUG9pbnQu
aCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJSZWN0LmgiCkBAIC0xNjUsNiArMTY3LDE1IEBAIFdl
YkdyYXBoaWNzQ29udGV4dDNEKiBXZWJMYXllclRyZWVWaWV3Ojpjb250ZXh0KCkKICAgICByZXR1
cm4gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpleHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0M0Qo
bV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPmNvbnRleHQoKS0+Y29udGV4dDNEKCkpOwogfQog
Cit2b2lkIFdlYkxheWVyVHJlZVZpZXc6OnJlbmRlcmluZ1N0YXRzKFdlYlJlbmRlcmluZ1N0YXRz
JiBzdGF0cykKK3sKKyAgICBDQ1JlbmRlcmluZ1N0YXRzIGNjU3RhdHM7CisgICAgbV9wcml2YXRl
LT5sYXllclRyZWVIb3N0KCktPnJlbmRlcmluZ1N0YXRzKGNjU3RhdHMpOworCisgICAgc3RhdHMu
ZnJhbWVOdW1iZXIgPSBjY1N0YXRzLmZyYW1lTnVtYmVyOworICAgIHN0YXRzLmltcGxGcmFtZU51
bWJlciA9IGNjU3RhdHMuaW1wbEZyYW1lTnVtYmVyOworfQorCiB2b2lkIFdlYkxheWVyVHJlZVZp
ZXc6Omxvc2VDb21wb3NpdG9yQ29udGV4dChpbnQgbnVtVGltZXMpCiB7CiAgICAgbV9wcml2YXRl
LT5sYXllclRyZWVIb3N0KCktPmxvc2VDb250ZXh0KG51bVRpbWVzKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCBmOTBiMWY4YWY3YmQzZWE5YzIyYjZj
MWRmZWU3ZDY2MGFhZDE4MDllLi5mN2ExODNlNjAwYzExMzFhMjM4ZmQwZDg2NDgzNDI2YjMxZGEz
YzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC0x
NDUxLDYgKzE0NTEsMTIgQEAgdm9pZCBXZWJWaWV3SW1wbDo6aW5zdHJ1bWVudENhbmNlbEZyYW1l
KCkKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENhbmNlbEZyYW1lKG1fcGFnZS5n
ZXQoKSk7CiB9CiAKK3ZvaWQgV2ViVmlld0ltcGw6OnJlbmRlcmluZ1N0YXRzKFdlYlJlbmRlcmlu
Z1N0YXRzJiBzdGF0cykKK3sKKyAgICBpZiAoIW1fbGF5ZXJUcmVlVmlldy5pc051bGwoKSkKKyAg
ICAgICAgbV9sYXllclRyZWVWaWV3LnJlbmRlcmluZ1N0YXRzKHN0YXRzKTsKK30KKwogI2lmIEVO
QUJMRShCQVRURVJZX1NUQVRVUykKIHZvaWQgV2ViVmlld0ltcGw6OnVwZGF0ZUJhdHRlcnlTdGF0
dXMoY29uc3QgV2ViQmF0dGVyeVN0YXR1cyYgc3RhdHVzKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5kZXggYTA4ODk2NzhhMTQwMDc0MmNjMjZlMGViZmJiZTIz
ZTE5OGI5MmQyZS4uMGJiNDZkODllMTliMmQzOTYzMGFmMmFiMTMxYTRmYzhiMGJjNGVmZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBAIC0xMTAsNiArMTEwLDcg
QEAgY2xhc3MgV2ViTW91c2VFdmVudDsKIGNsYXNzIFdlYk1vdXNlV2hlZWxFdmVudDsKIGNsYXNz
IFdlYlNldHRpbmdzSW1wbDsKIGNsYXNzIFdlYlRvdWNoRXZlbnQ7CitzdHJ1Y3QgV2ViUmVuZGVy
aW5nU3RhdHM7CiAKIGNsYXNzIFdlYlZpZXdJbXBsIDogcHVibGljIFdlYlZpZXcsIHB1YmxpYyBX
ZWJMYXllclRyZWVWaWV3Q2xpZW50LCBwdWJsaWMgUmVmQ291bnRlZDxXZWJWaWV3SW1wbD4sIHB1
YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldCwgcHVibGljIFBhZ2VXaWRn
ZXRFdmVudEhhbmRsZXIgewogcHVibGljOgpAQCAtMTYwLDYgKzE2MSw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlV2luZG93UmVzaXplclJlY3QoKTsKICAgICB2aXJ0dWFs
IHZvaWQgaW5zdHJ1bWVudEJlZ2luRnJhbWUoKTsKICAgICB2aXJ0dWFsIHZvaWQgaW5zdHJ1bWVu
dENhbmNlbEZyYW1lKCk7CisgICAgdmlydHVhbCB2b2lkIHJlbmRlcmluZ1N0YXRzKFdlYlJlbmRl
cmluZ1N0YXRzJik7CiAKICAgICAvLyBXZWJWaWV3IG1ldGhvZHM6CiAgICAgdmlydHVhbCB2b2lk
IGluaXRpYWxpemVNYWluRnJhbWUoV2ViRnJhbWVDbGllbnQqKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147196</attachid>
            <date>2012-06-12 17:11:59 -0700</date>
            <delta_ts>2012-06-14 18:32:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88268-20120612171158.patch</filename>
            <type>text/plain</type>
            <size>23576</size>
            <attacher name="Dave Tu">dtu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwMTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA2MTgzN2E5OGRkNTBk
ZTA2NGYzMzM3MmI4NzliNzdhYTQ4NDAyNWEwLi5kM2I2MGIzMmZmYWY5M2FjODg1YWI0NTExYjJi
NjFkZGFmNTE0OTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wNi0wNCAg
RGF2ZSBUdSAgPGR0dUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBFeHBvc2Ug
cmVuZGVyaW5nIHN0YXRpc3RpY3MgdG8gV2ViV2lkZ2V0LgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODgyNjgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgV2ViS2l0IHNpZGUgb2YgYSBiYXNpYyBmcmFt
ZXdvcmsgZm9yIGV4cG9zaW5nIHJlbmRlcmluZyBzdGF0aXN0aWNzCisgICAgICAgIHRvIENocm9t
aXVtJ3MgLS1lbmFibGUtYmVuY2htYXJraW5nIGV4dGVuc2lvbi4KKworICAgICAgICAqIGNocm9t
aXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Lmg6CisgICAgICAgIChXZWJSZW5kZXJpbmdTdGF0
aXN0aWNzKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJMYXllclRyZWVWaWV3KToK
KwogMjAxMi0wNi0xMSAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFtjaHJvbWl1bV0gUG9ydCBEcmF3aW5nQnVmZmVyQ2hyb21pdW0gZnJvbSBUZXh0dXJl
TGF5ZXJDaHJvbWl1bSBvdmVyIHRvIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggMjdjNmYzYmEyM2NjN2Q3ZTU5M2YwZjZkM2Q2MzExNmJiMzJlYjk1OS4uMjYzYzYxMDU3MjQ4
ZTMwOGViYWNjYjk2MGIzOTlmODg5NTc1NDBjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBA
CisyMDEyLTA2LTA0ICBEYXZlIFR1ICA8ZHR1QGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hy
b21pdW1dIEV4cG9zZSByZW5kZXJpbmcgc3RhdGlzdGljcyB0byBXZWJXaWRnZXQuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODI2OAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBXZWJLaXQgc2lkZSBv
ZiBhIGJhc2ljIGZyYW1ld29yayBmb3IgZXhwb3NpbmcgcmVuZGVyaW5nIHN0YXRpc3RpY3MKKyAg
ICAgICAgdG8gQ2hyb21pdW0ncyAtLWVuYWJsZS1iZW5jaG1hcmtpbmcgZXh0ZW5zaW9uLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6
CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmltcGxGcmFtZU51bWJlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oOgorICAgICAg
ICAoQ0NQcm94eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
aW5nbGVUaHJlYWRQcm94eS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6
aW1wbEZyYW1lTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NUaHJlYWRQcm94eTo6aW1wbEZyYW1lTnVtYmVyT25JbXBsVGhyZWFkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5Lmg6CisgICAgICAgIChD
Q1RocmVhZFByb3h5KToKKwogMjAxMi0wNi0xMiAgU2FtaSBLeW9zdGlsYSAgPHNreW9zdGlsQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIERvbid0IGNyYXNoIGluIENDTGF5ZXJJ
dGVyYXRvciBpZiB0aGUgcm9vdCBsYXllciBkb2Vzbid0IGhhdmUgYSByZW5kZXIgc3VyZmFjZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBjZThmY2YxNDk4NWNiMzA3YjkwOWU4MTAxNWY0
NTViOGMxMmUzOTQ1Li4wZDc5NWQ2ZjM1ZDFmOTNlYWNjZDhhYTRmZTg2NTdhY2MwMDM4MzA1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA2LTA0ICBE
YXZlIFR1ICA8ZHR1QGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEV4cG9zZSBy
ZW5kZXJpbmcgc3RhdGlzdGljcyB0byBXZWJXaWRnZXQuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODI2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBXZWJLaXQgc2lkZSBvZiBhIGJhc2ljIGZyYW1l
d29yayBmb3IgZXhwb3NpbmcgcmVuZGVyaW5nIHN0YXRpc3RpY3MKKyAgICAgICAgdG8gQ2hyb21p
dW0ncyAtLWVuYWJsZS1iZW5jaG1hcmtpbmcgZXh0ZW5zaW9uLgorCisgICAgICAgICogc3JjL1dl
YkxheWVyVHJlZVZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3Ojpy
ZW5kZXJpbmdTdGF0aXN0aWNzKToKKyAgICAgICAgKFdlYktpdCk6CisKIDIwMTItMDYtMTIgIEFk
cmllbm5lIFdhbGtlciAgPGVubmVAZ29vZ2xlLmNvbT4KIAogICAgICAgICBbY2hyb21pdW1dIEZp
eCBpbmNvcnJlY3QgTGF5ZXJDaHJvbWl1bSBzY3JvbGwgcG9zaXRpb24gZm9yIFJUTCBvdmVyZmxv
dyBwYWdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkgYi9Tb3Vy
Y2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQppbmRleCAxMjMyMjI3NGJjOTg2Zjc5MGYyYjkxNzUx
MGQ2YmE1YTE4ZWM0NzMzLi43NTNmMDgyZDFiYzU4YWIzZGVjMDFjM2YwYjVkMTllY2FlOTE2NTc4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQorKysgYi9Tb3VyY2Uv
UGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQpAQCAtOTMsNiArOTMsNyBAQAogICAgICAgICAgICAgJ2No
cm9taXVtL3B1YmxpYy9XZWJQcml2YXRlUHRyLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1
YmxpYy9XZWJSZWN0LmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJSZWZlcnJl
clBvbGljeS5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViUmVuZGVyaW5nU3Rh
dHMuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlNlc3Npb25EZXNjcmlwdGlv
bkRlc2NyaXB0b3IuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlNpemUuaCcs
CiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlNvY2tldFN0cmVhbUVycm9yLmgnLApk
aWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVW
aWV3LmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcu
aAppbmRleCA0NjdmNjVjZDU1ZDdhOWViODMxMTdjNDBmOWNiODIwY2EzOTgwMjc1Li42YzNkY2Zl
YmE4MjZiM2U4OTUzZjJlNmM5MzQwZjhiNWYxMWE2ZWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaAorKysgYi9Tb3VyY2UvUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaApAQCAtNDQsNiArNDQsNyBA
QCBjbGFzcyBXZWJMYXllclRyZWVWaWV3Q2xpZW50OwogY2xhc3MgV2ViTGF5ZXJUcmVlVmlld0lt
cGw7CiBzdHJ1Y3QgV2ViUG9pbnQ7CiBzdHJ1Y3QgV2ViUmVjdDsKK3N0cnVjdCBXZWJSZW5kZXJp
bmdTdGF0czsKIAogY2xhc3MgV2ViTGF5ZXJUcmVlVmlldyA6IHB1YmxpYyBXZWJOb25Db3B5YWJs
ZSB7CiBwdWJsaWM6CkBAIC0xNzgsNiArMTc5LDEwIEBAIHB1YmxpYzoKIAogICAgIC8vIERlYnVn
Z2luZyAvIGRhbmdlcm91cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KIAorICAgIC8vIEZpbGxzIGluIGEgV2ViUmVuZGVyaW5nU3RhdHMgc3RydWN0IGNvbnRh
aW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHN0YXRlIG9mIHRoZSBjb21wb3NpdG9yLgorICAg
IC8vIFRoaXMgY2FsbCBpcyByZWxhdGl2ZWx5IGV4cGVuc2l2ZSBpbiB0aHJlYWRlZCBtb2RlIGFz
IGl0IGJsb2NrcyBvbiB0aGUgY29tcG9zaXRvciB0aHJlYWQuCisgICAgV0VCS0lUX0VYUE9SVCB2
b2lkIHJlbmRlcmluZ1N0YXRzKFdlYlJlbmRlcmluZ1N0YXRzJikgY29uc3Q7CisKICAgICAvLyBT
aW11bGF0ZXMgYSBsb3N0IGNvbnRleHQuIEZvciB0ZXN0aW5nIG9ubHkuCiAgICAgV0VCS0lUX0VY
UE9SVCB2b2lkIGxvc2VDb21wb3NpdG9yQ29udGV4dChpbnQgbnVtVGltZXMpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlJlbmRlcmluZ1N0YXRzLmgg
Yi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlJlbmRlcmluZ1N0YXRzLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDQwOGQ4NTgxZmJmNzRhOTA5MzFjMTE5NGY2MzA4MGNlYThmODc2NAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUmVuZGVyaW5n
U3RhdHMuaApAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJSZW5kZXJpbmdTdGF0
c19oCisjZGVmaW5lIFdlYlJlbmRlcmluZ1N0YXRzX2gKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K3N0cnVjdCBXZWJSZW5kZXJpbmdTdGF0cyB7CisgICAgaW50IGZyYW1lTnVtYmVyOyAvLyBOdW1i
ZXIgb2YgY29tbWl0cyB0aGF0IGhhdmUgb2NjdXJyZWQgc2luY2UgdGhlIHByb2Nlc3Mgc3RhcnRl
ZC4gT25seSBhcHBsaWNhYmxlIGluIGFjY2VsZXJhdGVkIG1vZGUuCisgICAgaW50IGltcGxGcmFt
ZU51bWJlcjsgLy8gTnVtYmVyIG9mIGNvbXBvc2l0ZXMgdGhhdCBoYXZlIG9jY3VycmVkIHNpbmNl
IHRoZSBwcm9jZXNzIHN0YXJ0ZWQuIEluIHNpbmdsZS10aHJlYWRlZCBtb2RlLCB0aGlzIGlzIHRo
ZSBzYW1lIGFzIGZyYW1lTnVtYmVyLiBPbmx5IGFwcGxpY2FibGUgaW4gYWNjZWxlcmF0ZWQgbW9k
ZS4KKworICAgIFdlYlJlbmRlcmluZ1N0YXRzKCkKKyAgICAgICAgOiBmcmFtZU51bWJlcigwKQor
ICAgICAgICAsIGltcGxGcmFtZU51bWJlcigwKQorICAgIHsKKyAgICB9Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlJlbmRlcmluZ1N0YXRzX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQppbmRleCA3YTIxY2I1YjI1ZTNjZTIyMmIwZDc0ZGFjNzIyYWNmMDVmZTYwYjJkLi43MTZl
Yzc4NDk0ZTIxMDE4NjYxNWVmNDU2MmUxNzNlNGQzMjA2ZmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBA
IC0zNzMzLDYgKzM3MzMsNyBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUHJveHkuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyaW5nU3RhdHMuaCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmgnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmNw
cCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAppbmRleCBmNGY0ODJiZWE2N2M3NmI2
YmUxNTA0NWUxN2ZlMWY5NjE3ODdiZjYxLi45NTZmYzliNDA3NDY5NDEzMmE0ZTNiYTMyMTMyMmNj
Y2IyZmMwZmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTM4LDYgKzM4
LDcgQEAKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uaCIKICNpbmNsdWRlICJj
Yy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NPY2NsdXNpb25UcmFja2Vy
LmgiCisjaW5jbHVkZSAiY2MvQ0NSZW5kZXJpbmdTdGF0cy5oIgogI2luY2x1ZGUgImNjL0NDU2lu
Z2xlVGhyZWFkUHJveHkuaCIKICNpbmNsdWRlICJjYy9DQ1RocmVhZC5oIgogI2luY2x1ZGUgImNj
L0NDVGhyZWFkUHJveHkuaCIKQEAgLTMxOSw2ICszMjAsMTIgQEAgdm9pZCBDQ0xheWVyVHJlZUhv
c3Q6OmZpbmlzaEFsbFJlbmRlcmluZygpCiAgICAgbV9wcm94eS0+ZmluaXNoQWxsUmVuZGVyaW5n
KCk7CiB9CiAKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpyZW5kZXJpbmdTdGF0cyhDQ1JlbmRlcmlu
Z1N0YXRzJiBzdGF0cykgY29uc3QKK3sKKyAgICBtX3Byb3h5LT5yZW5kZXJpbmdTdGF0cyhzdGF0
cyk7CisgICAgc3RhdHMuZnJhbWVOdW1iZXIgPSBmcmFtZU51bWJlcigpOworfQorCiBjb25zdCBM
YXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBDQ0xheWVyVHJlZUhvc3Q6OmxheWVyUmVuZGVyZXJD
YXBhYmlsaXRpZXMoKSBjb25zdAogewogICAgIHJldHVybiBtX3Byb3h5LT5sYXllclJlbmRlcmVy
Q2FwYWJpbGl0aWVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4IDNjM2FlMDNm
NjZjOGVmNDU3YTgzMWNlNjJkYzFkODRmY2ZjMzQxZTIuLmY3M2IzNGVhOWE3ODk2MDE3ZmY1ZmY4
YzFhZTQwZDczYjRmYmE3MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBAIC00NSw2
ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0NMYXllclRyZWVIb3N0SW1w
bDsKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQ7CitjbGFzcyBDQ1JlbmRlcmluZ1N0
YXRzOwogY2xhc3MgQ0NUZXh0dXJlVXBkYXRlcjsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwog
Y2xhc3MgTGF5ZXJQYWludGVyQ2hyb21pdW07CkBAIC0yMDAsNiArMjAxLDggQEAgcHVibGljOgog
CiAgICAgaW50IGZyYW1lTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZU51bWJlcjsgfQog
CisgICAgdm9pZCByZW5kZXJpbmdTdGF0cyhDQ1JlbmRlcmluZ1N0YXRzJikgY29uc3Q7CisKICAg
ICBjb25zdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBsYXllclJlbmRlcmVyQ2FwYWJpbGl0
aWVzKCkgY29uc3Q7CiAKICAgICAvLyBUZXN0IG9ubHkgaG9vawpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCmluZGV4IGZi
MmNiYmFlOTZmMDczMzAwNzVjMjUzMzVkYmEwN2U1OWE1ZDJlMmYuLjgwZDQ3YjZhNTUzYzExMmFi
MWM4YWRhMTU3ZTA2NWEwNTFjOTk2YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKQEAgLTM0LDYgKzM0LDcgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0NGb250QXRsYXM7CitjbGFzcyBDQ1JlbmRl
cmluZ1N0YXRzOwogY2xhc3MgQ0NUaHJlYWQ7CiBjbGFzcyBDQ0dyYXBoaWNzQ29udGV4dDsKIHN0
cnVjdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzOwpAQCAtNzksNiArODAsOCBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIGludCBjb21wb3NpdG9ySWRlbnRpZmllcigpIGNvbnN0ID0gMDsKIAor
ICAgIHZpcnR1YWwgdm9pZCByZW5kZXJpbmdTdGF0cyhDQ1JlbmRlcmluZ1N0YXRzJikgPSAwOwor
CiAgICAgdmlydHVhbCBjb25zdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBsYXllclJlbmRl
cmVyQ2FwYWJpbGl0aWVzKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRz
QW5pbWF0ZSgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyaW5nU3RhdHMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyaW5nU3RhdHMuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
YjJhZTY4MmVkMTAwOWE3MWYwN2NmNjliOTE5OTMzZTBiZWE2MmM0Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJp
bmdTdGF0cy5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ0NSZW5k
ZXJpbmdTdGF0c19oCisjZGVmaW5lIENDUmVuZGVyaW5nU3RhdHNfaAorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3N0cnVjdCBDQ1JlbmRlcmluZ1N0YXRzIHsKKyAgICBpbnQgZnJhbWVOdW1iZXI7
CisgICAgaW50IGltcGxGcmFtZU51bWJlcjsKKworICAgIENDUmVuZGVyaW5nU3RhdHMoKQorICAg
ICAgICA6IGZyYW1lTnVtYmVyKDApCisgICAgICAgICwgaW1wbEZyYW1lTnVtYmVyKDApCisgICAg
eworICAgIH0KK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFk
UHJveHkuY3BwCmluZGV4IDhmMzA1MmQ5MzE2YzQ3YTg4Y2ViMWUwYjk2ZjNjMDE4MTk0N2ZhMWUu
LjJjZjVkOTg2MGMzNWE4MTM3MDczOWMwYzZlMzA0ZGEyMDI1NDQ5MjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFk
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAi
VHJhY2VFdmVudC5oIgogI2luY2x1ZGUgImNjL0NDRm9udEF0bGFzLmgiCiAjaW5jbHVkZSAiY2Mv
Q0NMYXllclRyZWVIb3N0LmgiCisjaW5jbHVkZSAiY2MvQ0NSZW5kZXJpbmdTdGF0cy5oIgogI2lu
Y2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJjYy9DQ1RpbWVyLmgiCiAj
aW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CkBAIC0xOTcsNiArMTk4LDExIEBAIGJvb2wgQ0NT
aW5nbGVUaHJlYWRQcm94eTo6cmVjcmVhdGVDb250ZXh0KCkKICAgICByZXR1cm4gaW5pdGlhbGl6
ZWQ7CiB9CiAKK3ZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6cmVuZGVyaW5nU3RhdHMoQ0NSZW5k
ZXJpbmdTdGF0cyYgc3RhdHMpCit7CisgICAgc3RhdHMuaW1wbEZyYW1lTnVtYmVyID0gbV9sYXll
clRyZWVIb3N0SW1wbC0+ZnJhbWVOdW1iZXIoKTsKK30KKwogY29uc3QgTGF5ZXJSZW5kZXJlckNh
cGFiaWxpdGllcyYgQ0NTaW5nbGVUaHJlYWRQcm94eTo6bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGll
cygpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1fbGF5ZXJSZW5kZXJlckluaXRpYWxpemVkKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2luZ2xlVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaAppbmRleCBkMzI1M2UyNWM3ZjI4ZjBjYWM5
NGU5NDY5OGRhYTY2YTkwOTY5MWI1Li4xNzYzYzhlNzY5ZTNiOTIwNmNmZjIwYmRhYWRlODVjNDJi
N2E1NmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCkBAIC01Myw2ICs1
Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIo
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgcmVjcmVhdGVDb250ZXh0KCkgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCBpbnQgY29tcG9zaXRvcklkZW50aWZpZXIoKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiBtX2NvbXBvc2l0b3JJZGVudGlmaWVyOyB9CisgICAgdmlydHVhbCB2b2lkIHJlbmRl
cmluZ1N0YXRzKENDUmVuZGVyaW5nU3RhdHMmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGNvbnN0
IExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMmIGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKSBj
b25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgbG9zZUNvbnRleHQoKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNBbmltYXRlKCkgT1ZFUlJJREU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGhyZWFkUHJveHkuY3BwCmluZGV4IGU5NTU1NTUxMDU2N2UyOTdmMzlhMGUzYzE5NmVmYThmMjgy
YWM5YTQuLjZhYjI0YzgyMzNiOGUwMWJlM2NhOTFjNTFkNjJmNDVlNzVkMWUwNTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFk
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiY2MvQ0NG
cmFtZVJhdGVDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NJbnB1dEhhbmRsZXIuaCIKICNp
bmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKKyNpbmNsdWRlICJjYy9DQ1JlbmRlcmluZ1N0
YXRzLmgiCiAjaW5jbHVkZSAiY2MvQ0NTY2hlZHVsZXIuaCIKICNpbmNsdWRlICJjYy9DQ1Njb3Bl
ZFRocmVhZFByb3h5LmgiCiAjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgpAQCAtMjY2
LDYgKzI2NywxNyBAQCBpbnQgQ0NUaHJlYWRQcm94eTo6Y29tcG9zaXRvcklkZW50aWZpZXIoKSBj
b25zdAogICAgIHJldHVybiBtX2NvbXBvc2l0b3JJZGVudGlmaWVyOwogfQogCit2b2lkIENDVGhy
ZWFkUHJveHk6OnJlbmRlcmluZ1N0YXRzKENDUmVuZGVyaW5nU3RhdHMmIHN0YXRzKQoreworICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBDQ0NvbXBsZXRpb25FdmVudCBjb21wbGV0
aW9uOworICAgIENDUHJveHk6OmltcGxUaHJlYWQoKS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRU
YXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjpyZW5kZXJpbmdTdGF0c09uSW1wbFRocmVhZCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxv
d0Nyb3NzVGhyZWFkQWNjZXNzKCZjb21wbGV0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKCZz
dGF0cykpKTsKKyAgICBjb21wbGV0aW9uLndhaXQoKTsKK30KKwogY29uc3QgTGF5ZXJSZW5kZXJl
ckNhcGFiaWxpdGllcyYgQ0NUaHJlYWRQcm94eTo6bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygp
IGNvbnN0CiB7CiAgICAgQVNTRVJUKG1fbGF5ZXJSZW5kZXJlckluaXRpYWxpemVkKTsKQEAgLTg3
Nyw0ICs4ODksMTEgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpyZWNyZWF0ZUNvbnRleHRPbkltcGxU
aHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24sIEMKICAgICBjb21wbGV0aW9uLT5z
aWduYWwoKTsKIH0KIAordm9pZCBDQ1RocmVhZFByb3h5OjpyZW5kZXJpbmdTdGF0c09uSW1wbFRo
cmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbiwgQ0NSZW5kZXJpbmdTdGF0cyogc3Rh
dHMpCit7CisgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKKyAgICBzdGF0cy0+aW1wbEZyYW1l
TnVtYmVyID0gbV9sYXllclRyZWVIb3N0SW1wbC0+ZnJhbWVOdW1iZXIoKTsKKyAgICBjb21wbGV0
aW9uLT5zaWduYWwoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94
eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJl
YWRQcm94eS5oCmluZGV4IDJjMmJlYjAxMjUyMmI2YTVmY2U1MjFlZTc3YTg0YjU2NjAzYWJiNzgu
LjYyNmFhYmYxMzhkMDJiZjcxYTk1NDc4MmRlNWE4NzlkNjA0N2QzMTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Ro
cmVhZFByb3h5LmgKQEAgLTYxLDYgKzYxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBp
bml0aWFsaXplTGF5ZXJSZW5kZXJlcigpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCByZWNy
ZWF0ZUNvbnRleHQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGludCBjb21wb3NpdG9ySWRlbnRp
ZmllcigpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZW5kZXJpbmdTdGF0cyhD
Q1JlbmRlcmluZ1N0YXRzJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBjb25zdCBMYXllclJlbmRl
cmVyQ2FwYWJpbGl0aWVzJiBsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkgY29uc3QgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCB2b2lkIGxvc2VDb250ZXh0KCkgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIHNldE5lZWRzQW5pbWF0ZSgpIE9WRVJSSURFOwpAQCAtMTQyLDYgKzE0Myw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzZXRGdWxsUm9vdExheWVyRGFtYWdlT25JbXBsVGhyZWFkKCk7CiAg
ICAgdm9pZCBhY3F1aXJlTGF5ZXJUZXh0dXJlc0Zvck1haW5UaHJlYWRPbkltcGxUaHJlYWQoQ0ND
b21wbGV0aW9uRXZlbnQqKTsKICAgICB2b2lkIHJlY3JlYXRlQ29udGV4dE9uSW1wbFRocmVhZChD
Q0NvbXBsZXRpb25FdmVudCosIENDR3JhcGhpY3NDb250ZXh0KiwgYm9vbCogcmVjcmVhdGVTdWNj
ZWVkZWQsIExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMqKTsKKyAgICB2b2lkIHJlbmRlcmluZ1N0
YXRzT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiwgQ0NSZW5kZXJpbmdTdGF0cyopOwog
ICAgIENDU2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBSZXN1bHQgc2NoZWR1bGVkQWN0aW9uRHJh
d0FuZFN3YXBJbnRlcm5hbChib29sIGZvcmNlZERyYXcpOwogICAgIHZvaWQgc2V0Rm9udEF0bGFz
T25JbXBsVGhyZWFkKFBhc3NPd25QdHI8Q0NGb250QXRsYXM+KTsKICAgICB2b2lkIGZvcmNlU2Vy
aWFsaXplT25Td2FwQnVmZmVyc09uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCopOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IDk5MjA0Yjg4NmFiN2VjMWNmNGQyNGE1OTNjY2Rj
ZDAyN2Q1NDk5MDEuLjVmN2MxZGIwMmRjODFkYzk4MmUyNTc0YjUyYTM5ZTI5ZjVkNjkwNzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTMxOSw2ICszMTksNyBAQAogICAgICAgICAg
ICAgICAgICdwdWJsaWMvcGxhdGZvcm0vV2ViUHJpdmF0ZVB0ci5oJywKICAgICAgICAgICAgICAg
ICAncHVibGljL3BsYXRmb3JtL1dlYlJlY3QuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9w
bGF0Zm9ybS9XZWJSZWZlcnJlclBvbGljeS5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL3Bs
YXRmb3JtL1dlYlJlbmRlcmluZ1N0YXRzLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvcGxh
dGZvcm0vV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgnLAogICAgICAgICAgICAgICAgICdwdWJs
aWMvcGxhdGZvcm0vV2ViU2l6ZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL3BsYXRmb3Jt
L1dlYlNvY2tldFN0cmVhbUVycm9yLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViV2lkZ2V0LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJXaWRnZXQuaAppbmRleCAwOGIyY2QwNWEyNWFkY2I0YWZkNmRiZjQ4YWUxMzRiYjM2ZmM3ZWNm
Li5mZjZmMWM1MzM1M2U0OGNmNzc1M2Y2Nzg1ZDY2NWEzMjEzMDBjMmJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXaWRnZXQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXaWRnZXQuaApAQCAtNDgsNiArNDgsNyBAQCBjbGFzcyBX
ZWJJbnB1dEV2ZW50OwogY2xhc3MgV2ViTW91c2VFdmVudDsKIGNsYXNzIFdlYlN0cmluZzsKIHN0
cnVjdCBXZWJQb2ludDsKK3N0cnVjdCBXZWJSZW5kZXJpbmdTdGF0czsKIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPiBjbGFzcyBXZWJWZWN0b3I7CiAKIGNsYXNzIFdlYldpZGdldCB7CkBAIC0yMjEsNiAr
MjIyLDEyIEBAIHB1YmxpYzoKICAgICAvLyBmb2xsb3dpbmcgdGhlIGNhbGwgdG8gaW5zdHJ1bWVu
dEJlZ2luRnJhbWUoKS4KICAgICB2aXJ0dWFsIHZvaWQgaW5zdHJ1bWVudENhbmNlbEZyYW1lKCkg
eyB9CiAKKyAgICAvLyBGaWxscyBpbiBhIFdlYlJlbmRlcmluZ1N0YXRzIHN0cnVjdCBjb250YWlu
aW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzdGF0ZSBvZiB0aGUgY29tcG9zaXRvci4KKyAgICAv
LyBUaGlzIGNhbGwgaXMgcmVsYXRpdmVseSBleHBlbnNpdmUgaW4gdGhyZWFkZWQgbW9kZSBhcyBp
dCBibG9ja3Mgb24gdGhlIGNvbXBvc2l0b3IgdGhyZWFkLgorICAgIC8vIFRoaXMgbWV0aG9kIG9u
bHkgd29ya3MgaW4gYWNjZWxlcmF0ZWQgbW9kZSBhbmQgY2FsbGluZyBpdCBpbiBzb2Z0d2FyZSBt
b2RlIHdpbGwgZG8gbm90aGluZy4KKyAgICAvLyBUT0RPKGR0dSk6IERvIHNvbWV0aGluZyB1c2Vm
dWwgaW4gc29mdHdhcmUgbW9kZS4KKyAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyaW5nU3RhdHMoV2Vi
UmVuZGVyaW5nU3RhdHMmKSBjb25zdCB7IH0KKwogcHJvdGVjdGVkOgogICAgIH5XZWJXaWRnZXQo
KSB7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0
Zm9ybS9XZWJSZW5kZXJpbmdTdGF0cy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
cGxhdGZvcm0vV2ViUmVuZGVyaW5nU3RhdHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZGI2ZmVhOWM4ZmVjYTIy
MjQ4ZTU3Zjg3NDY4MDhlODViMjYxNmM4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViUmVuZGVyaW5nU3RhdHMuaApAQCAtMCwwICsx
LDI2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgIi4uLy4uLy4uLy4uL1BsYXRmb3JtL2Nocm9taXVtL3B1
YmxpYy9XZWJSZW5kZXJpbmdTdGF0cy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJMYXllclRyZWVWaWV3LmNwcAppbmRleCBmZWQzZGI5NzU5ODVjNzhjMzYyOTEyODc4OGFj
NjQxYWYwMTM3ZjgwLi5hNTU2NDMxMGJjYmZlYzRhN2FjMjJkZjgwZGExYzE4NTc4ZjMzNmMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcApA
QCAtMjksOSArMjksMTEgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaCIK
ICNpbmNsdWRlICJXZWJMYXllclRyZWVWaWV3SW1wbC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJU
cmVlSG9zdC5oIgorI2luY2x1ZGUgImNjL0NDUmVuZGVyaW5nU3RhdHMuaCIKICNpbmNsdWRlICJw
bGF0Zm9ybS9XZWJMYXllci5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlBvaW50LmgiCiAjaW5j
bHVkZSAicGxhdGZvcm0vV2ViUmVjdC5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlJlbmRlcmlu
Z1N0YXRzLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViU2l6ZS5oIgogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKQEAgLTE3MCw2ICsxNzIsMTUgQEAgV2ViR3JhcGhpY3NDb250ZXh0M0QqIFdl
YkxheWVyVHJlZVZpZXc6OmNvbnRleHQoKQogICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGU6OmV4dHJhY3RXZWJHcmFwaGljc0NvbnRleHQzRChtX3ByaXZhdGUtPmxheWVyVHJlZUhv
c3QoKS0+Y29udGV4dCgpLT5jb250ZXh0M0QoKSk7CiB9CiAKK3ZvaWQgV2ViTGF5ZXJUcmVlVmll
dzo6cmVuZGVyaW5nU3RhdHMoV2ViUmVuZGVyaW5nU3RhdHMmIHN0YXRzKSBjb25zdAoreworICAg
IENDUmVuZGVyaW5nU3RhdHMgY2NTdGF0czsKKyAgICBtX3ByaXZhdGUtPmxheWVyVHJlZUhvc3Qo
KS0+cmVuZGVyaW5nU3RhdHMoY2NTdGF0cyk7CisKKyAgICBzdGF0cy5mcmFtZU51bWJlciA9IGNj
U3RhdHMuZnJhbWVOdW1iZXI7CisgICAgc3RhdHMuaW1wbEZyYW1lTnVtYmVyID0gY2NTdGF0cy5p
bXBsRnJhbWVOdW1iZXI7Cit9CisKIHZvaWQgV2ViTGF5ZXJUcmVlVmlldzo6bG9zZUNvbXBvc2l0
b3JDb250ZXh0KGludCBudW1UaW1lcykKIHsKICAgICBtX3ByaXZhdGUtPmxheWVyVHJlZUhvc3Qo
KS0+bG9zZUNvbnRleHQobnVtVGltZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuY3BwCmluZGV4IDkzMGEyMjNmY2Q4YzRmZmY1MmQ2OWFhNmNhZjkwNWNjZjU1MmRk
NmUuLjA3MjgzMDI2ODc5YTZjYzFjZGMyNjA3OTEyNGUzZTc4MTQwMzAwMzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTE0NTEsNiArMTQ1MSwxMiBA
QCB2b2lkIFdlYlZpZXdJbXBsOjppbnN0cnVtZW50Q2FuY2VsRnJhbWUoKQogICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkQ2FuY2VsRnJhbWUobV9wYWdlLmdldCgpKTsKIH0KIAordm9p
ZCBXZWJWaWV3SW1wbDo6cmVuZGVyaW5nU3RhdHMoV2ViUmVuZGVyaW5nU3RhdHMmIHN0YXRzKSBj
b25zdAoreworICAgIGlmICghbV9sYXllclRyZWVWaWV3LmlzTnVsbCgpKQorICAgICAgICBtX2xh
eWVyVHJlZVZpZXcucmVuZGVyaW5nU3RhdHMoc3RhdHMpOworfQorCiAjaWYgRU5BQkxFKEJBVFRF
UllfU1RBVFVTKQogdm9pZCBXZWJWaWV3SW1wbDo6dXBkYXRlQmF0dGVyeVN0YXR1cyhjb25zdCBX
ZWJCYXR0ZXJ5U3RhdHVzJiBzdGF0dXMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuaAppbmRleCBhMDg4OTY3OGExNDAwNzQyY2MyNmUwZWJmYmJlMjNlMTk4YjkyZDJl
Li40YjViNmZkOWJjNzZjZTcxN2VhZTllNjljZjVlM2MwYWRlNDM5NmE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTExMCw2ICsxMTAsNyBAQCBjbGFzcyBX
ZWJNb3VzZUV2ZW50OwogY2xhc3MgV2ViTW91c2VXaGVlbEV2ZW50OwogY2xhc3MgV2ViU2V0dGlu
Z3NJbXBsOwogY2xhc3MgV2ViVG91Y2hFdmVudDsKK3N0cnVjdCBXZWJSZW5kZXJpbmdTdGF0czsK
IAogY2xhc3MgV2ViVmlld0ltcGwgOiBwdWJsaWMgV2ViVmlldywgcHVibGljIFdlYkxheWVyVHJl
ZVZpZXdDbGllbnQsIHB1YmxpYyBSZWZDb3VudGVkPFdlYlZpZXdJbXBsPiwgcHVibGljIFdlYkNv
cmU6OlBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0LCBwdWJsaWMgUGFnZVdpZGdldEV2ZW50SGFu
ZGxlciB7CiBwdWJsaWM6CkBAIC0xNjAsNiArMTYxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBkaWRDaGFuZ2VXaW5kb3dSZXNpemVyUmVjdCgpOwogICAgIHZpcnR1YWwgdm9pZCBpbnN0
cnVtZW50QmVnaW5GcmFtZSgpOwogICAgIHZpcnR1YWwgdm9pZCBpbnN0cnVtZW50Q2FuY2VsRnJh
bWUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyaW5nU3RhdHMoV2ViUmVuZGVyaW5nU3RhdHMm
KSBjb25zdDsKIAogICAgIC8vIFdlYlZpZXcgbWV0aG9kczoKICAgICB2aXJ0dWFsIHZvaWQgaW5p
dGlhbGl6ZU1haW5GcmFtZShXZWJGcmFtZUNsaWVudCopOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147696</attachid>
            <date>2012-06-14 18:26:47 -0700</date>
            <delta_ts>2012-06-14 18:31:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88268-20120614182646.patch</filename>
            <type>text/plain</type>
            <size>20967</size>
            <attacher name="Dave Tu">dtu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwMzYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA5NTNmMjllODQ2Zjhl
ZThhNGI0ZGRhZWM3NmRhNzQwZWI3ZmIzYzFjLi4xYjE0NjNkNDUxNjIwMDg3MzQyYjgzYmMzNmVk
MjVjNTdkNzJmODczIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wNi0wNCAg
RGF2ZSBUdSAgPGR0dUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBFeHBvc2Ug
cmVuZGVyaW5nIHN0YXRpc3RpY3MgdG8gV2ViV2lkZ2V0LgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODgyNjgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgV2ViS2l0IHNpZGUgb2YgYSBiYXNpYyBmcmFt
ZXdvcmsgZm9yIGV4cG9zaW5nIHJlbmRlcmluZyBzdGF0aXN0aWNzCisgICAgICAgIHRvIENocm9t
aXVtJ3MgLS1lbmFibGUtYmVuY2htYXJraW5nIGV4dGVuc2lvbi4KKworICAgICAgICAqIGNocm9t
aXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Lmg6CisgICAgICAgIChXZWJSZW5kZXJpbmdTdGF0
aXN0aWNzKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJMYXllclRyZWVWaWV3KToK
KwogMjAxMi0wNi0xNCAgSWFuIFZvbGxpY2sgIDx2b2xsaWNrQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBbY2hyb21pdW1dIENlcnRhaW4gc2V0dGluZ3MgaW4gQ0NTZXR0aW5ncyBjb3VsZCBiZSBn
bG9iYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCA3ZmNmODM4YTMwNTM4ZTM4Zjg5NzY5NzE0ZDA2NTdmNDY3N2Ey
MGZiLi43N2NiM2I5NTY5MjU5ZjljMjY2ODUwMTYzOTA1OWRlOWU5YTdhZTE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjUgQEAKKzIwMTItMDYtMDQgIERhdmUgVHUgIDxkdHVAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFtjaHJvbWl1bV0gRXhwb3NlIHJlbmRlcmluZyBzdGF0aXN0aWNzIHRvIFdl
YldpZGdldC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTg4MjY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhlIFdlYktpdCBzaWRlIG9mIGEgYmFzaWMgZnJhbWV3b3JrIGZvciBleHBvc2luZyByZW5kZXJp
bmcgc3RhdGlzdGljcworICAgICAgICB0byBDaHJvbWl1bSdzIC0tZW5hYmxlLWJlbmNobWFya2lu
ZyBleHRlbnNpb24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6aW1w
bEZyYW1lTnVtYmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1Byb3h5Lmg6CisgICAgICAgIChDQ1Byb3h5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5Lmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1RocmVhZFByb3h5OjppbXBsRnJhbWVOdW1iZXIpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjppbXBsRnJhbWVOdW1iZXJPbkltcGxUaHJl
YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJv
eHkuaDoKKyAgICAgICAgKENDVGhyZWFkUHJveHkpOgorCiAyMDEyLTA2LTE0ICBJYW4gVm9sbGlj
ayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gQ2VydGFpbiBz
ZXR0aW5ncyBpbiBDQ1NldHRpbmdzIGNvdWxkIGJlIGdsb2JhbApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwppbmRleCAzNjkyOTFmMzEzYjA2NTU2NDNmNGY1YzZkZGQzOGY4YjJjOTE4N2M5Li5mMjBh
YjQwZjg0M2RjMmY3YzM1NDQ4MzA0ZWZmNjAxM2ViN2U3ODJiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA2LTA0ICBEYXZlIFR1ICA8ZHR1QGNocm9t
aXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEV4cG9zZSByZW5kZXJpbmcgc3RhdGlzdGlj
cyB0byBXZWJXaWRnZXQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04ODI2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoZSBXZWJLaXQgc2lkZSBvZiBhIGJhc2ljIGZyYW1ld29yayBmb3IgZXhwb3Npbmcg
cmVuZGVyaW5nIHN0YXRpc3RpY3MKKyAgICAgICAgdG8gQ2hyb21pdW0ncyAtLWVuYWJsZS1iZW5j
aG1hcmtpbmcgZXh0ZW5zaW9uLgorCisgICAgICAgICogc3JjL1dlYkxheWVyVHJlZVZpZXcuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3OjpyZW5kZXJpbmdTdGF0aXN0aWNz
KToKKyAgICAgICAgKFdlYktpdCk6CisKIDIwMTItMDYtMTQgIElhbiBWb2xsaWNrICA8dm9sbGlj
a0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBDZXJ0YWluIHNldHRpbmdzIGlu
IENDU2V0dGluZ3MgY291bGQgYmUgZ2xvYmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
UGxhdGZvcm0uZ3lwaSBiL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCmluZGV4IDEyMzIy
Mjc0YmM5ODZmNzkwZjJiOTE3NTEwZDZiYTVhMThlYzQ3MzMuLjc1M2YwODJkMWJjNThhYjNkZWMw
MWMzZjBiNWQxOWVjYWU5MTY1NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9y
bS5neXBpCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCkBAIC05Myw2ICs5Myw3
IEBACiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlByaXZhdGVQdHIuaCcsCiAgICAg
ICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlJlY3QuaCcsCiAgICAgICAgICAgICAnY2hyb21p
dW0vcHVibGljL1dlYlJlZmVycmVyUG9saWN5LmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL3B1
YmxpYy9XZWJSZW5kZXJpbmdTdGF0cy5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMv
V2ViU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvci5oJywKICAgICAgICAgICAgICdjaHJvbWl1
bS9wdWJsaWMvV2ViU2l6ZS5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViU29j
a2V0U3RyZWFtRXJyb3IuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0v
cHVibGljL1dlYkxheWVyVHJlZVZpZXcuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvV2ViTGF5ZXJUcmVlVmlldy5oCmluZGV4IDcyYjVhYjljMmQ0NDAzMjk1MTYyZTdjNzM4NWFi
ZTkyNWIwYzlhMGQuLjJhMGJjODkyMzBlYmU2MjM1MzBiZDI3NjhhZDY5NzMzMzFhYjhlODAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmll
dy5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmll
dy5oCkBAIC00NCw2ICs0NCw3IEBAIGNsYXNzIFdlYkxheWVyVHJlZVZpZXdDbGllbnQ7CiBjbGFz
cyBXZWJMYXllclRyZWVWaWV3SW1wbDsKIHN0cnVjdCBXZWJQb2ludDsKIHN0cnVjdCBXZWJSZWN0
Oworc3RydWN0IFdlYlJlbmRlcmluZ1N0YXRzOwogCiBjbGFzcyBXZWJMYXllclRyZWVWaWV3IDog
cHVibGljIFdlYk5vbkNvcHlhYmxlIHsKIHB1YmxpYzoKQEAgLTE3Miw2ICsxNzMsMTAgQEAgcHVi
bGljOgogCiAgICAgLy8gRGVidWdnaW5nIC8gZGFuZ2Vyb3VzIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCisgICAgLy8gRmlsbHMgaW4gYSBXZWJSZW5kZXJp
bmdTdGF0cyBzdHJ1Y3QgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc3RhdGUgb2Yg
dGhlIGNvbXBvc2l0b3IuCisgICAgLy8gVGhpcyBjYWxsIGlzIHJlbGF0aXZlbHkgZXhwZW5zaXZl
IGluIHRocmVhZGVkIG1vZGUgYXMgaXQgYmxvY2tzIG9uIHRoZSBjb21wb3NpdG9yIHRocmVhZC4K
KyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVuZGVyaW5nU3RhdHMoV2ViUmVuZGVyaW5nU3RhdHMm
KSBjb25zdDsKKwogICAgIC8vIFNpbXVsYXRlcyBhIGxvc3QgY29udGV4dC4gRm9yIHRlc3Rpbmcg
b25seS4KICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgbG9zZUNvbXBvc2l0b3JDb250ZXh0KGludCBu
dW1UaW1lcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMv
V2ViUmVuZGVyaW5nU3RhdHMuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2Vi
UmVuZGVyaW5nU3RhdHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMTc2OTg1NWIwMDMyNThlZDA1MGE1ZTEwMDkx
N2E0NGU1YzIxYmM4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9XZWJSZW5kZXJpbmdTdGF0cy5oCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFdlYlJlbmRlcmluZ1N0YXRzX2gKKyNkZWZpbmUgV2ViUmVuZGVyaW5nU3RhdHNfaAorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IFdlYlJlbmRlcmluZ1N0YXRzIHsKKyAgICBpbnQg
bnVtQW5pbWF0aW9uRnJhbWVzOworICAgIGludCBudW1GcmFtZXNTZW50VG9TY3JlZW47CisKKyAg
ICBXZWJSZW5kZXJpbmdTdGF0cygpCisgICAgICAgIDogbnVtQW5pbWF0aW9uRnJhbWVzKDApCisg
ICAgICAgICwgbnVtRnJhbWVzU2VudFRvU2NyZWVuKDApCisgICAgeworICAgIH0KK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViUmVuZGVyaW5nU3RhdHNfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCmluZGV4IDljYjZjN2Q0MzZkM2FkNDcyZjRhNjY5OTk0OGUyYjQwMjAzN2U1MzMu
LmQ2N2NjMGQ2YmE3NWJhMTdlMTc2Zjg0YTI5NGZjODQ1OWMxYTQ0YmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKQEAgLTM3MzgsNiArMzczOCw3IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NQcm94eS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJpbmdTdGF0cy5oJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuaCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1
YWQuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IDhmMjQ2ZDNjNTli
ZjU4ZDM3NDRhN2E1NWJjYWQ2ZTljZDFjNjNjNWYuLjI4YmNhMmEwNDcwZGYyYzBhZGM2MjIwNzcz
YzE1M2VjNzJjNWQ5ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApAQCAtMzcs
NiArMzcsNyBAQAogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5oIgogI2luY2x1
ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIKICNpbmNsdWRlICJjYy9DQ09jY2x1c2lvblRy
YWNrZXIuaCIKKyNpbmNsdWRlICJjYy9DQ1JlbmRlcmluZ1N0YXRzLmgiCiAjaW5jbHVkZSAiY2Mv
Q0NTZXR0aW5ncy5oIgogI2luY2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIKICNpbmNs
dWRlICJjYy9DQ1RocmVhZC5oIgpAQCAtMzE5LDYgKzMyMCwxMiBAQCB2b2lkIENDTGF5ZXJUcmVl
SG9zdDo6ZmluaXNoQWxsUmVuZGVyaW5nKCkKICAgICBtX3Byb3h5LT5maW5pc2hBbGxSZW5kZXJp
bmcoKTsKIH0KIAordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnJlbmRlcmluZ1N0YXRzKENDUmVuZGVy
aW5nU3RhdHMmIHN0YXRzKSBjb25zdAoreworICAgIG1fcHJveHktPnJlbmRlcmluZ1N0YXRzKHN0
YXRzKTsKKyAgICBzdGF0cy5udW1BbmltYXRpb25GcmFtZXMgPSBmcmFtZU51bWJlcigpOworfQor
CiBjb25zdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBDQ0xheWVyVHJlZUhvc3Q6OmxheWVy
UmVuZGVyZXJDYXBhYmlsaXRpZXMoKSBjb25zdAogewogICAgIHJldHVybiBtX3Byb3h5LT5sYXll
clJlbmRlcmVyQ2FwYWJpbGl0aWVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4
IGUxNjI4YWY3YTQyZThiMWMxMWEzZmNhMDY4NmI1OTI3M2JiMWM3ZWEuLjFmODdiMWNiOGVlMzY4
MTA5Y2I5OWQ3ZjM2N2JjNTIwNDgzY2QxOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5o
CkBAIC00NSw2ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0NMYXllclRy
ZWVIb3N0SW1wbDsKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQ7CitjbGFzcyBDQ1Jl
bmRlcmluZ1N0YXRzOwogY2xhc3MgQ0NUZXh0dXJlVXBkYXRlcjsKIGNsYXNzIEdyYXBoaWNzQ29u
dGV4dDNEOwogY2xhc3MgUmVnaW9uOwpAQCAtMTkzLDYgKzE5NCw4IEBAIHB1YmxpYzoKIAogICAg
IGludCBmcmFtZU51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVOdW1iZXI7IH0KIAorICAg
IHZvaWQgcmVuZGVyaW5nU3RhdHMoQ0NSZW5kZXJpbmdTdGF0cyYpIGNvbnN0OworCiAgICAgY29u
c3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgbGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygp
IGNvbnN0OwogCiAgICAgLy8gVGVzdCBvbmx5IGhvb2sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaAppbmRleCBmYjJjYmJh
ZTk2ZjA3MzMwMDc1YzI1MzM1ZGJhMDdlNTlhNWQyZTJmLi44MGQ0N2I2YTU1M2MxMTJhYjFjOGFk
YTE1N2UwNjVhMDUxYzk5NmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCkBAIC0zNCw2ICszNCw3IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENDRm9udEF0bGFzOworY2xhc3MgQ0NSZW5kZXJpbmdT
dGF0czsKIGNsYXNzIENDVGhyZWFkOwogY2xhc3MgQ0NHcmFwaGljc0NvbnRleHQ7CiBzdHJ1Y3Qg
TGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllczsKQEAgLTc5LDYgKzgwLDggQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCBpbnQgY29tcG9zaXRvcklkZW50aWZpZXIoKSBjb25zdCA9IDA7CiAKKyAgICB2
aXJ0dWFsIHZvaWQgcmVuZGVyaW5nU3RhdHMoQ0NSZW5kZXJpbmdTdGF0cyYpID0gMDsKKwogICAg
IHZpcnR1YWwgY29uc3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgbGF5ZXJSZW5kZXJlckNh
cGFiaWxpdGllcygpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0FuaW1h
dGUoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1JlbmRlcmluZ1N0YXRzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlcmluZ1N0YXRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjY5Yzhl
MDI2ODRlYzJlNTAwM2YzMjA0NzBkMDljY2U5MGVmMTE2MgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyaW5nU3Rh
dHMuaApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENDUmVuZGVyaW5n
U3RhdHNfaAorI2RlZmluZSBDQ1JlbmRlcmluZ1N0YXRzX2gKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitzdHJ1Y3QgQ0NSZW5kZXJpbmdTdGF0cyB7CisgICAgaW50IG51bUFuaW1hdGlvbkZyYW1l
czsKKyAgICBpbnQgbnVtRnJhbWVzU2VudFRvU2NyZWVuOworCisgICAgQ0NSZW5kZXJpbmdTdGF0
cygpCisgICAgICAgIDogbnVtQW5pbWF0aW9uRnJhbWVzKDApCisgICAgICAgICwgbnVtRnJhbWVz
U2VudFRvU2NyZWVuKDApCisgICAgeworICAgIH0KK307CisKK30KKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Npbmds
ZVRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCmluZGV4IDhmMzA1MmQ5MzE2YzQ3YTg4Y2Vi
MWUwYjk2ZjNjMDE4MTk0N2ZhMWUuLjk4Y2U2NzUyZjlhMmY1NDhiY2FkNjdlYWRjMmY4Y2MyMjAw
YWNiNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCkBAIC0zMCw2
ICszMCw3IEBACiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgogI2luY2x1ZGUgImNjL0NDRm9udEF0
bGFzLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCisjaW5jbHVkZSAiY2MvQ0NS
ZW5kZXJpbmdTdGF0cy5oIgogI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNs
dWRlICJjYy9DQ1RpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CkBAIC0xOTcs
NiArMTk4LDExIEBAIGJvb2wgQ0NTaW5nbGVUaHJlYWRQcm94eTo6cmVjcmVhdGVDb250ZXh0KCkK
ICAgICByZXR1cm4gaW5pdGlhbGl6ZWQ7CiB9CiAKK3ZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6
cmVuZGVyaW5nU3RhdHMoQ0NSZW5kZXJpbmdTdGF0cyYgc3RhdHMpCit7CisgICAgc3RhdHMubnVt
RnJhbWVzU2VudFRvU2NyZWVuID0gbV9sYXllclRyZWVIb3N0SW1wbC0+ZnJhbWVOdW1iZXIoKTsK
K30KKwogY29uc3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgQ0NTaW5nbGVUaHJlYWRQcm94
eTo6bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1fbGF5
ZXJSZW5kZXJlckluaXRpYWxpemVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHku
aAppbmRleCBkMzI1M2UyNWM3ZjI4ZjBjYWM5NGU5NDY5OGRhYTY2YTkwOTY5MWI1Li4xNzYzYzhl
NzY5ZTNiOTIwNmNmZjIwYmRhYWRlODVjNDJiN2E1NmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5n
bGVUaHJlYWRQcm94eS5oCkBAIC01Myw2ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJv
b2wgaW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wg
cmVjcmVhdGVDb250ZXh0KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBpbnQgY29tcG9zaXRvcklk
ZW50aWZpZXIoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2NvbXBvc2l0b3JJZGVudGlmaWVy
OyB9CisgICAgdmlydHVhbCB2b2lkIHJlbmRlcmluZ1N0YXRzKENDUmVuZGVyaW5nU3RhdHMmKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIGNvbnN0IExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMmIGxh
eWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgbG9zZUNvbnRleHQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNBbmlt
YXRlKCkgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCmluZGV4IGU5NTU1NTUx
MDU2N2UyOTdmMzlhMGUzYzE5NmVmYThmMjgyYWM5YTQuLmRjYzNhNGYwZTIxZTE1MTI3MDlkZDZj
NTdmODgxNGM2NDBlM2IwYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCkBAIC0zNSw2
ICszNSw3IEBACiAjaW5jbHVkZSAiY2MvQ0NGcmFtZVJhdGVDb250cm9sbGVyLmgiCiAjaW5jbHVk
ZSAiY2MvQ0NJbnB1dEhhbmRsZXIuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIK
KyNpbmNsdWRlICJjYy9DQ1JlbmRlcmluZ1N0YXRzLmgiCiAjaW5jbHVkZSAiY2MvQ0NTY2hlZHVs
ZXIuaCIKICNpbmNsdWRlICJjYy9DQ1Njb3BlZFRocmVhZFByb3h5LmgiCiAjaW5jbHVkZSAiY2Mv
Q0NUZXh0dXJlVXBkYXRlci5oIgpAQCAtMjY2LDYgKzI2NywxNyBAQCBpbnQgQ0NUaHJlYWRQcm94
eTo6Y29tcG9zaXRvcklkZW50aWZpZXIoKSBjb25zdAogICAgIHJldHVybiBtX2NvbXBvc2l0b3JJ
ZGVudGlmaWVyOwogfQogCit2b2lkIENDVGhyZWFkUHJveHk6OnJlbmRlcmluZ1N0YXRzKENDUmVu
ZGVyaW5nU3RhdHMmIHN0YXRzKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAg
ICBDQ0NvbXBsZXRpb25FdmVudCBjb21wbGV0aW9uOworICAgIENDUHJveHk6OmltcGxUaHJlYWQo
KS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjpyZW5k
ZXJpbmdTdGF0c09uSW1wbFRocmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKCZjb21wbGV0aW9u
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKCZzdGF0cykpKTsKKyAgICBjb21wbGV0aW9uLndhaXQo
KTsKK30KKwogY29uc3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgQ0NUaHJlYWRQcm94eTo6
bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1fbGF5ZXJS
ZW5kZXJlckluaXRpYWxpemVkKTsKQEAgLTg3Nyw0ICs4ODksMTEgQEAgdm9pZCBDQ1RocmVhZFBy
b3h5OjpyZWNyZWF0ZUNvbnRleHRPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBs
ZXRpb24sIEMKICAgICBjb21wbGV0aW9uLT5zaWduYWwoKTsKIH0KIAordm9pZCBDQ1RocmVhZFBy
b3h5OjpyZW5kZXJpbmdTdGF0c09uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxl
dGlvbiwgQ0NSZW5kZXJpbmdTdGF0cyogc3RhdHMpCit7CisgICAgQVNTRVJUKGlzSW1wbFRocmVh
ZCgpKTsKKyAgICBzdGF0cy0+bnVtRnJhbWVzU2VudFRvU2NyZWVuID0gbV9sYXllclRyZWVIb3N0
SW1wbC0+ZnJhbWVOdW1iZXIoKTsKKyAgICBjb21wbGV0aW9uLT5zaWduYWwoKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCmluZGV4IDJjMmJlYjAx
MjUyMmI2YTVmY2U1MjFlZTc3YTg0YjU2NjAzYWJiNzguLjYyNmFhYmYxMzhkMDJiZjcxYTk1NDc4
MmRlNWE4NzlkNjA0N2QzMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKQEAgLTYxLDYgKzYx
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpbml0aWFsaXplTGF5ZXJSZW5kZXJlcigp
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCByZWNyZWF0ZUNvbnRleHQoKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIGludCBjb21wb3NpdG9ySWRlbnRpZmllcigpIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCByZW5kZXJpbmdTdGF0cyhDQ1JlbmRlcmluZ1N0YXRzJikgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCBjb25zdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBsYXllclJl
bmRlcmVyQ2FwYWJpbGl0aWVzKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGxv
c2VDb250ZXh0KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzQW5pbWF0ZSgp
IE9WRVJSSURFOwpAQCAtMTQyLDYgKzE0Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRGdWxs
Um9vdExheWVyRGFtYWdlT25JbXBsVGhyZWFkKCk7CiAgICAgdm9pZCBhY3F1aXJlTGF5ZXJUZXh0
dXJlc0Zvck1haW5UaHJlYWRPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsKICAgICB2
b2lkIHJlY3JlYXRlQ29udGV4dE9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCosIENDR3Jh
cGhpY3NDb250ZXh0KiwgYm9vbCogcmVjcmVhdGVTdWNjZWVkZWQsIExheWVyUmVuZGVyZXJDYXBh
YmlsaXRpZXMqKTsKKyAgICB2b2lkIHJlbmRlcmluZ1N0YXRzT25JbXBsVGhyZWFkKENDQ29tcGxl
dGlvbkV2ZW50KiwgQ0NSZW5kZXJpbmdTdGF0cyopOwogICAgIENDU2NoZWR1bGVkQWN0aW9uRHJh
d0FuZFN3YXBSZXN1bHQgc2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBJbnRlcm5hbChib29sIGZv
cmNlZERyYXcpOwogICAgIHZvaWQgc2V0Rm9udEF0bGFzT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8
Q0NGb250QXRsYXM+KTsKICAgICB2b2lkIGZvcmNlU2VyaWFsaXplT25Td2FwQnVmZmVyc09uSW1w
bFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViVmlldy5oCmluZGV4IDU0MmIxMDIxYTY0NDY1ZTM4NmFiNDNmNGFjY2UzYjBmODM2MWNlOTMu
LjNhYTNmOWNkNDc2ZDU3ZDIwOGM5NzI2MzZmN2IwOTJhNGIxOGE3M2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKQEAgLTYyLDYgKzYyLDcgQEAgc3RydWN0IFdlYkFj
dGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOwogc3RydWN0IFdlYk1lZGlhUGxheWVyQWN0aW9uOwog
c3RydWN0IFdlYlBsdWdpbkFjdGlvbjsKIHN0cnVjdCBXZWJQb2ludDsKK3N0cnVjdCBXZWJSZW5k
ZXJpbmdTdGF0czsKIAogY2xhc3MgV2ViVmlldyA6IHB1YmxpYyBXZWJXaWRnZXQgewogcHVibGlj
OgpAQCAtMzYwLDYgKzM2MSwxMCBAQCBwdWJsaWM6CiAgICAgLy8gYmUgc2V0IG9uY2UgcGVyIFdl
YlZpZXcuCiAgICAgdmlydHVhbCBXZWJEZXZUb29sc0FnZW50KiBkZXZUb29sc0FnZW50KCkgPSAw
OwogCisgICAgLy8gRmlsbHMgaW4gYSBXZWJSZW5kZXJpbmdTdGF0cyBzdHJ1Y3QgY29udGFpbmlu
ZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc3RhdGUgb2YgdGhlIGNvbXBvc2l0b3IuCisgICAgLy8g
VGhpcyBjYWxsIGlzIHJlbGF0aXZlbHkgZXhwZW5zaXZlIGluIHRocmVhZGVkIG1vZGUgYXMgaXQg
YmxvY2tzIG9uIHRoZSBjb21wb3NpdG9yIHRocmVhZC4KKyAgICB2aXJ0dWFsIHZvaWQgcmVuZGVy
aW5nU3RhdHMoV2ViUmVuZGVyaW5nU3RhdHMmKSBjb25zdCB7IH0KKwogCiAgICAgLy8gQWNjZXNz
aWJpbGl0eSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldp
ZGdldC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV2lkZ2V0LmgKaW5kZXgg
MDhiMmNkMDVhMjVhZGNiNGFmZDZkYmY0OGFlMTM0YmIzNmZjN2VjZi4uZWU3YjcxMWJjODY1ZjZl
ZjZjN2M4NTRlNDhmZjBjNDVlOGUzNDRlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViV2lkZ2V0LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViV2lkZ2V0LmgKQEAgLTQ4LDYgKzQ4LDcgQEAgY2xhc3MgV2ViSW5wdXRFdmVudDsKIGNs
YXNzIFdlYk1vdXNlRXZlbnQ7CiBjbGFzcyBXZWJTdHJpbmc7CiBzdHJ1Y3QgV2ViUG9pbnQ7Citz
dHJ1Y3QgV2ViUmVuZGVyaW5nU3RhdHM7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgV2Vi
VmVjdG9yOwogCiBjbGFzcyBXZWJXaWRnZXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcAppbmRleCBlMDQyZjI1MTczMGZhYzk3ZWE4ZjYxODQ2
MDRiOTgyZmZiNTAwOTNlLi44YjUwMGU3OGFmZjZlZDFjZjU5NzgwYThiOThkOGEzNWM1NzM2MzQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNw
cApAQCAtMjksMTAgKzI5LDEyIEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
LmgiCiAjaW5jbHVkZSAiV2ViTGF5ZXJUcmVlVmlld0ltcGwuaCIKICNpbmNsdWRlICJjYy9DQ0xh
eWVyVHJlZUhvc3QuaCIKKyNpbmNsdWRlICJjYy9DQ1JlbmRlcmluZ1N0YXRzLmgiCiAjaW5jbHVk
ZSAicGxhdGZvcm0vV2ViTGF5ZXIuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJQb2ludC5oIgog
I2luY2x1ZGUgInBsYXRmb3JtL1dlYlJlY3QuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTaXpl
LmgiCisjaW5jbHVkZSAicHVibGljL1dlYlJlbmRlcmluZ1N0YXRzLmgiCiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCkBAIC0xNjcsNiArMTY5LDE1IEBAIFdlYkdyYXBoaWNzQ29udGV4dDNE
KiBXZWJMYXllclRyZWVWaWV3Ojpjb250ZXh0KCkKICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlOjpleHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0M0QobV9wcml2YXRlLT5sYXllclRy
ZWVIb3N0KCktPmNvbnRleHQoKS0+Y29udGV4dDNEKCkpOwogfQogCit2b2lkIFdlYkxheWVyVHJl
ZVZpZXc6OnJlbmRlcmluZ1N0YXRzKFdlYlJlbmRlcmluZ1N0YXRzJiBzdGF0cykgY29uc3QKK3sK
KyAgICBDQ1JlbmRlcmluZ1N0YXRzIGNjU3RhdHM7CisgICAgbV9wcml2YXRlLT5sYXllclRyZWVI
b3N0KCktPnJlbmRlcmluZ1N0YXRzKGNjU3RhdHMpOworCisgICAgc3RhdHMubnVtQW5pbWF0aW9u
RnJhbWVzID0gY2NTdGF0cy5udW1BbmltYXRpb25GcmFtZXM7CisgICAgc3RhdHMubnVtRnJhbWVz
U2VudFRvU2NyZWVuID0gY2NTdGF0cy5udW1GcmFtZXNTZW50VG9TY3JlZW47Cit9CisKIHZvaWQg
V2ViTGF5ZXJUcmVlVmlldzo6bG9zZUNvbXBvc2l0b3JDb250ZXh0KGludCBudW1UaW1lcykKIHsK
ICAgICBtX3ByaXZhdGUtPmxheWVyVHJlZUhvc3QoKS0+bG9zZUNvbnRleHQobnVtVGltZXMpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDg3NDhhODA3
ODdiOGYxMmJkZWMxYjllZmEyYWZiNTQwZTMyMmY4NTcuLmNiMTY4ZjBmNDIwZjExM2FiOWJiOTdk
OTJiMTcxNTdhNDJhMzk2NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5jcHAKQEAgLTE0NTYsNiArMTQ1NiwxMiBAQCB2b2lkIFdlYlZpZXdJbXBsOjppbnN0cnVt
ZW50Q2FuY2VsRnJhbWUoKQogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2FuY2Vs
RnJhbWUobV9wYWdlLmdldCgpKTsKIH0KIAordm9pZCBXZWJWaWV3SW1wbDo6cmVuZGVyaW5nU3Rh
dHMoV2ViUmVuZGVyaW5nU3RhdHMmIHN0YXRzKSBjb25zdAoreworICAgIGlmICghbV9sYXllclRy
ZWVWaWV3LmlzTnVsbCgpKQorICAgICAgICBtX2xheWVyVHJlZVZpZXcucmVuZGVyaW5nU3RhdHMo
c3RhdHMpOworfQorCiAjaWYgRU5BQkxFKEJBVFRFUllfU1RBVFVTKQogdm9pZCBXZWJWaWV3SW1w
bDo6dXBkYXRlQmF0dGVyeVN0YXR1cyhjb25zdCBXZWJCYXR0ZXJ5U3RhdHVzJiBzdGF0dXMpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCA0ZjVjMDQ4ZDk3
NzQyYWQ1OWIxNWVjYjM0M2Q4NWM4ZDNhMDMxODZmLi4wY2E2NWY1YTNmYWU5ODEwMGY3ZjZkNmUz
NDE0NjQ4MTMzNTc4YTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmgKQEAgLTI2OCw2ICsyNjgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEluc3Bl
Y3RvclNldHRpbmcoY29uc3QgV2ViU3RyaW5nJiBrZXksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiB2YWx1ZSk7CiAgICAgdmlydHVhbCBXZWJE
ZXZUb29sc0FnZW50KiBkZXZUb29sc0FnZW50KCk7CisgICAgdmlydHVhbCB2b2lkIHJlbmRlcmlu
Z1N0YXRzKFdlYlJlbmRlcmluZ1N0YXRzJikgY29uc3Q7CiAgICAgdmlydHVhbCBXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0IGFjY2Vzc2liaWxpdHlPYmplY3QoKTsKICAgICB2aXJ0dWFsIHZvaWQgYXBw
bHlBdXRvZmlsbFN1Z2dlc3Rpb25zKAogICAgICAgICBjb25zdCBXZWJOb2RlJiwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147697</attachid>
            <date>2012-06-14 18:31:59 -0700</date>
            <delta_ts>2012-06-19 17:57:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88268-20120614183158.patch</filename>
            <type>text/plain</type>
            <size>20491</size>
            <attacher name="Dave Tu">dtu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwMzYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA5NTNmMjllODQ2Zjhl
ZThhNGI0ZGRhZWM3NmRhNzQwZWI3ZmIzYzFjLi4xYjE0NjNkNDUxNjIwMDg3MzQyYjgzYmMzNmVk
MjVjNTdkNzJmODczIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wNi0wNCAg
RGF2ZSBUdSAgPGR0dUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBFeHBvc2Ug
cmVuZGVyaW5nIHN0YXRpc3RpY3MgdG8gV2ViV2lkZ2V0LgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODgyNjgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgV2ViS2l0IHNpZGUgb2YgYSBiYXNpYyBmcmFt
ZXdvcmsgZm9yIGV4cG9zaW5nIHJlbmRlcmluZyBzdGF0aXN0aWNzCisgICAgICAgIHRvIENocm9t
aXVtJ3MgLS1lbmFibGUtYmVuY2htYXJraW5nIGV4dGVuc2lvbi4KKworICAgICAgICAqIGNocm9t
aXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Lmg6CisgICAgICAgIChXZWJSZW5kZXJpbmdTdGF0
aXN0aWNzKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJMYXllclRyZWVWaWV3KToK
KwogMjAxMi0wNi0xNCAgSWFuIFZvbGxpY2sgIDx2b2xsaWNrQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBbY2hyb21pdW1dIENlcnRhaW4gc2V0dGluZ3MgaW4gQ0NTZXR0aW5ncyBjb3VsZCBiZSBn
bG9iYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCA3ZmNmODM4YTMwNTM4ZTM4Zjg5NzY5NzE0ZDA2NTdmNDY3N2Ey
MGZiLi43N2NiM2I5NTY5MjU5ZjljMjY2ODUwMTYzOTA1OWRlOWU5YTdhZTE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjUgQEAKKzIwMTItMDYtMDQgIERhdmUgVHUgIDxkdHVAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFtjaHJvbWl1bV0gRXhwb3NlIHJlbmRlcmluZyBzdGF0aXN0aWNzIHRvIFdl
YldpZGdldC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTg4MjY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhlIFdlYktpdCBzaWRlIG9mIGEgYmFzaWMgZnJhbWV3b3JrIGZvciBleHBvc2luZyByZW5kZXJp
bmcgc3RhdGlzdGljcworICAgICAgICB0byBDaHJvbWl1bSdzIC0tZW5hYmxlLWJlbmNobWFya2lu
ZyBleHRlbnNpb24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6aW1w
bEZyYW1lTnVtYmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1Byb3h5Lmg6CisgICAgICAgIChDQ1Byb3h5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5Lmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1RocmVhZFByb3h5OjppbXBsRnJhbWVOdW1iZXIpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjppbXBsRnJhbWVOdW1iZXJPbkltcGxUaHJl
YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJv
eHkuaDoKKyAgICAgICAgKENDVGhyZWFkUHJveHkpOgorCiAyMDEyLTA2LTE0ICBJYW4gVm9sbGlj
ayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gQ2VydGFpbiBz
ZXR0aW5ncyBpbiBDQ1NldHRpbmdzIGNvdWxkIGJlIGdsb2JhbApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwppbmRleCAzNjkyOTFmMzEzYjA2NTU2NDNmNGY1YzZkZGQzOGY4YjJjOTE4N2M5Li5mMjBh
YjQwZjg0M2RjMmY3YzM1NDQ4MzA0ZWZmNjAxM2ViN2U3ODJiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA2LTA0ICBEYXZlIFR1ICA8ZHR1QGNocm9t
aXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEV4cG9zZSByZW5kZXJpbmcgc3RhdGlzdGlj
cyB0byBXZWJXaWRnZXQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04ODI2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoZSBXZWJLaXQgc2lkZSBvZiBhIGJhc2ljIGZyYW1ld29yayBmb3IgZXhwb3Npbmcg
cmVuZGVyaW5nIHN0YXRpc3RpY3MKKyAgICAgICAgdG8gQ2hyb21pdW0ncyAtLWVuYWJsZS1iZW5j
aG1hcmtpbmcgZXh0ZW5zaW9uLgorCisgICAgICAgICogc3JjL1dlYkxheWVyVHJlZVZpZXcuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3OjpyZW5kZXJpbmdTdGF0aXN0aWNz
KToKKyAgICAgICAgKFdlYktpdCk6CisKIDIwMTItMDYtMTQgIElhbiBWb2xsaWNrICA8dm9sbGlj
a0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBDZXJ0YWluIHNldHRpbmdzIGlu
IENDU2V0dGluZ3MgY291bGQgYmUgZ2xvYmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
UGxhdGZvcm0uZ3lwaSBiL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCmluZGV4IDEyMzIy
Mjc0YmM5ODZmNzkwZjJiOTE3NTEwZDZiYTVhMThlYzQ3MzMuLjc1M2YwODJkMWJjNThhYjNkZWMw
MWMzZjBiNWQxOWVjYWU5MTY1NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9y
bS5neXBpCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCkBAIC05Myw2ICs5Myw3
IEBACiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlByaXZhdGVQdHIuaCcsCiAgICAg
ICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlJlY3QuaCcsCiAgICAgICAgICAgICAnY2hyb21p
dW0vcHVibGljL1dlYlJlZmVycmVyUG9saWN5LmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL3B1
YmxpYy9XZWJSZW5kZXJpbmdTdGF0cy5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMv
V2ViU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvci5oJywKICAgICAgICAgICAgICdjaHJvbWl1
bS9wdWJsaWMvV2ViU2l6ZS5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViU29j
a2V0U3RyZWFtRXJyb3IuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0v
cHVibGljL1dlYkxheWVyVHJlZVZpZXcuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvV2ViTGF5ZXJUcmVlVmlldy5oCmluZGV4IDcyYjVhYjljMmQ0NDAzMjk1MTYyZTdjNzM4NWFi
ZTkyNWIwYzlhMGQuLjJhMGJjODkyMzBlYmU2MjM1MzBiZDI3NjhhZDY5NzMzMzFhYjhlODAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmll
dy5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmll
dy5oCkBAIC00NCw2ICs0NCw3IEBAIGNsYXNzIFdlYkxheWVyVHJlZVZpZXdDbGllbnQ7CiBjbGFz
cyBXZWJMYXllclRyZWVWaWV3SW1wbDsKIHN0cnVjdCBXZWJQb2ludDsKIHN0cnVjdCBXZWJSZWN0
Oworc3RydWN0IFdlYlJlbmRlcmluZ1N0YXRzOwogCiBjbGFzcyBXZWJMYXllclRyZWVWaWV3IDog
cHVibGljIFdlYk5vbkNvcHlhYmxlIHsKIHB1YmxpYzoKQEAgLTE3Miw2ICsxNzMsMTAgQEAgcHVi
bGljOgogCiAgICAgLy8gRGVidWdnaW5nIC8gZGFuZ2Vyb3VzIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCisgICAgLy8gRmlsbHMgaW4gYSBXZWJSZW5kZXJp
bmdTdGF0cyBzdHJ1Y3QgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc3RhdGUgb2Yg
dGhlIGNvbXBvc2l0b3IuCisgICAgLy8gVGhpcyBjYWxsIGlzIHJlbGF0aXZlbHkgZXhwZW5zaXZl
IGluIHRocmVhZGVkIG1vZGUgYXMgaXQgYmxvY2tzIG9uIHRoZSBjb21wb3NpdG9yIHRocmVhZC4K
KyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVuZGVyaW5nU3RhdHMoV2ViUmVuZGVyaW5nU3RhdHMm
KSBjb25zdDsKKwogICAgIC8vIFNpbXVsYXRlcyBhIGxvc3QgY29udGV4dC4gRm9yIHRlc3Rpbmcg
b25seS4KICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgbG9zZUNvbXBvc2l0b3JDb250ZXh0KGludCBu
dW1UaW1lcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMv
V2ViUmVuZGVyaW5nU3RhdHMuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2Vi
UmVuZGVyaW5nU3RhdHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMTc2OTg1NWIwMDMyNThlZDA1MGE1ZTEwMDkx
N2E0NGU1YzIxYmM4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9XZWJSZW5kZXJpbmdTdGF0cy5oCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFdlYlJlbmRlcmluZ1N0YXRzX2gKKyNkZWZpbmUgV2ViUmVuZGVyaW5nU3RhdHNfaAorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IFdlYlJlbmRlcmluZ1N0YXRzIHsKKyAgICBpbnQg
bnVtQW5pbWF0aW9uRnJhbWVzOworICAgIGludCBudW1GcmFtZXNTZW50VG9TY3JlZW47CisKKyAg
ICBXZWJSZW5kZXJpbmdTdGF0cygpCisgICAgICAgIDogbnVtQW5pbWF0aW9uRnJhbWVzKDApCisg
ICAgICAgICwgbnVtRnJhbWVzU2VudFRvU2NyZWVuKDApCisgICAgeworICAgIH0KK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViUmVuZGVyaW5nU3RhdHNfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCmluZGV4IDljYjZjN2Q0MzZkM2FkNDcyZjRhNjY5OTk0OGUyYjQwMjAzN2U1MzMu
LmQ2N2NjMGQ2YmE3NWJhMTdlMTc2Zjg0YTI5NGZjODQ1OWMxYTQ0YmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKQEAgLTM3MzgsNiArMzczOCw3IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NQcm94eS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJpbmdTdGF0cy5oJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuaCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1
YWQuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IDhmMjQ2ZDNjNTli
ZjU4ZDM3NDRhN2E1NWJjYWQ2ZTljZDFjNjNjNWYuLjI4YmNhMmEwNDcwZGYyYzBhZGM2MjIwNzcz
YzE1M2VjNzJjNWQ5ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApAQCAtMzcs
NiArMzcsNyBAQAogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5oIgogI2luY2x1
ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIKICNpbmNsdWRlICJjYy9DQ09jY2x1c2lvblRy
YWNrZXIuaCIKKyNpbmNsdWRlICJjYy9DQ1JlbmRlcmluZ1N0YXRzLmgiCiAjaW5jbHVkZSAiY2Mv
Q0NTZXR0aW5ncy5oIgogI2luY2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIKICNpbmNs
dWRlICJjYy9DQ1RocmVhZC5oIgpAQCAtMzE5LDYgKzMyMCwxMiBAQCB2b2lkIENDTGF5ZXJUcmVl
SG9zdDo6ZmluaXNoQWxsUmVuZGVyaW5nKCkKICAgICBtX3Byb3h5LT5maW5pc2hBbGxSZW5kZXJp
bmcoKTsKIH0KIAordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnJlbmRlcmluZ1N0YXRzKENDUmVuZGVy
aW5nU3RhdHMmIHN0YXRzKSBjb25zdAoreworICAgIG1fcHJveHktPnJlbmRlcmluZ1N0YXRzKHN0
YXRzKTsKKyAgICBzdGF0cy5udW1BbmltYXRpb25GcmFtZXMgPSBmcmFtZU51bWJlcigpOworfQor
CiBjb25zdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBDQ0xheWVyVHJlZUhvc3Q6OmxheWVy
UmVuZGVyZXJDYXBhYmlsaXRpZXMoKSBjb25zdAogewogICAgIHJldHVybiBtX3Byb3h5LT5sYXll
clJlbmRlcmVyQ2FwYWJpbGl0aWVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4
IGUxNjI4YWY3YTQyZThiMWMxMWEzZmNhMDY4NmI1OTI3M2JiMWM3ZWEuLjFmODdiMWNiOGVlMzY4
MTA5Y2I5OWQ3ZjM2N2JjNTIwNDgzY2QxOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5o
CkBAIC00NSw2ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0NMYXllclRy
ZWVIb3N0SW1wbDsKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQ7CitjbGFzcyBDQ1Jl
bmRlcmluZ1N0YXRzOwogY2xhc3MgQ0NUZXh0dXJlVXBkYXRlcjsKIGNsYXNzIEdyYXBoaWNzQ29u
dGV4dDNEOwogY2xhc3MgUmVnaW9uOwpAQCAtMTkzLDYgKzE5NCw4IEBAIHB1YmxpYzoKIAogICAg
IGludCBmcmFtZU51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVOdW1iZXI7IH0KIAorICAg
IHZvaWQgcmVuZGVyaW5nU3RhdHMoQ0NSZW5kZXJpbmdTdGF0cyYpIGNvbnN0OworCiAgICAgY29u
c3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgbGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygp
IGNvbnN0OwogCiAgICAgLy8gVGVzdCBvbmx5IGhvb2sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaAppbmRleCBmYjJjYmJh
ZTk2ZjA3MzMwMDc1YzI1MzM1ZGJhMDdlNTlhNWQyZTJmLi44MGQ0N2I2YTU1M2MxMTJhYjFjOGFk
YTE1N2UwNjVhMDUxYzk5NmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCkBAIC0zNCw2ICszNCw3IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENDRm9udEF0bGFzOworY2xhc3MgQ0NSZW5kZXJpbmdT
dGF0czsKIGNsYXNzIENDVGhyZWFkOwogY2xhc3MgQ0NHcmFwaGljc0NvbnRleHQ7CiBzdHJ1Y3Qg
TGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllczsKQEAgLTc5LDYgKzgwLDggQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCBpbnQgY29tcG9zaXRvcklkZW50aWZpZXIoKSBjb25zdCA9IDA7CiAKKyAgICB2
aXJ0dWFsIHZvaWQgcmVuZGVyaW5nU3RhdHMoQ0NSZW5kZXJpbmdTdGF0cyYpID0gMDsKKwogICAg
IHZpcnR1YWwgY29uc3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgbGF5ZXJSZW5kZXJlckNh
cGFiaWxpdGllcygpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0FuaW1h
dGUoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1JlbmRlcmluZ1N0YXRzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlcmluZ1N0YXRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjY5Yzhl
MDI2ODRlYzJlNTAwM2YzMjA0NzBkMDljY2U5MGVmMTE2MgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyaW5nU3Rh
dHMuaApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENDUmVuZGVyaW5n
U3RhdHNfaAorI2RlZmluZSBDQ1JlbmRlcmluZ1N0YXRzX2gKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitzdHJ1Y3QgQ0NSZW5kZXJpbmdTdGF0cyB7CisgICAgaW50IG51bUFuaW1hdGlvbkZyYW1l
czsKKyAgICBpbnQgbnVtRnJhbWVzU2VudFRvU2NyZWVuOworCisgICAgQ0NSZW5kZXJpbmdTdGF0
cygpCisgICAgICAgIDogbnVtQW5pbWF0aW9uRnJhbWVzKDApCisgICAgICAgICwgbnVtRnJhbWVz
U2VudFRvU2NyZWVuKDApCisgICAgeworICAgIH0KK307CisKK30KKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Npbmds
ZVRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCmluZGV4IDhmMzA1MmQ5MzE2YzQ3YTg4Y2Vi
MWUwYjk2ZjNjMDE4MTk0N2ZhMWUuLjk4Y2U2NzUyZjlhMmY1NDhiY2FkNjdlYWRjMmY4Y2MyMjAw
YWNiNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCkBAIC0zMCw2
ICszMCw3IEBACiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgogI2luY2x1ZGUgImNjL0NDRm9udEF0
bGFzLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCisjaW5jbHVkZSAiY2MvQ0NS
ZW5kZXJpbmdTdGF0cy5oIgogI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNs
dWRlICJjYy9DQ1RpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CkBAIC0xOTcs
NiArMTk4LDExIEBAIGJvb2wgQ0NTaW5nbGVUaHJlYWRQcm94eTo6cmVjcmVhdGVDb250ZXh0KCkK
ICAgICByZXR1cm4gaW5pdGlhbGl6ZWQ7CiB9CiAKK3ZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6
cmVuZGVyaW5nU3RhdHMoQ0NSZW5kZXJpbmdTdGF0cyYgc3RhdHMpCit7CisgICAgc3RhdHMubnVt
RnJhbWVzU2VudFRvU2NyZWVuID0gbV9sYXllclRyZWVIb3N0SW1wbC0+ZnJhbWVOdW1iZXIoKTsK
K30KKwogY29uc3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgQ0NTaW5nbGVUaHJlYWRQcm94
eTo6bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1fbGF5
ZXJSZW5kZXJlckluaXRpYWxpemVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHku
aAppbmRleCBkMzI1M2UyNWM3ZjI4ZjBjYWM5NGU5NDY5OGRhYTY2YTkwOTY5MWI1Li4xNzYzYzhl
NzY5ZTNiOTIwNmNmZjIwYmRhYWRlODVjNDJiN2E1NmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5n
bGVUaHJlYWRQcm94eS5oCkBAIC01Myw2ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJv
b2wgaW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wg
cmVjcmVhdGVDb250ZXh0KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBpbnQgY29tcG9zaXRvcklk
ZW50aWZpZXIoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2NvbXBvc2l0b3JJZGVudGlmaWVy
OyB9CisgICAgdmlydHVhbCB2b2lkIHJlbmRlcmluZ1N0YXRzKENDUmVuZGVyaW5nU3RhdHMmKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIGNvbnN0IExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMmIGxh
eWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgbG9zZUNvbnRleHQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNBbmlt
YXRlKCkgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCmluZGV4IGU5NTU1NTUx
MDU2N2UyOTdmMzlhMGUzYzE5NmVmYThmMjgyYWM5YTQuLmRjYzNhNGYwZTIxZTE1MTI3MDlkZDZj
NTdmODgxNGM2NDBlM2IwYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCkBAIC0zNSw2
ICszNSw3IEBACiAjaW5jbHVkZSAiY2MvQ0NGcmFtZVJhdGVDb250cm9sbGVyLmgiCiAjaW5jbHVk
ZSAiY2MvQ0NJbnB1dEhhbmRsZXIuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIK
KyNpbmNsdWRlICJjYy9DQ1JlbmRlcmluZ1N0YXRzLmgiCiAjaW5jbHVkZSAiY2MvQ0NTY2hlZHVs
ZXIuaCIKICNpbmNsdWRlICJjYy9DQ1Njb3BlZFRocmVhZFByb3h5LmgiCiAjaW5jbHVkZSAiY2Mv
Q0NUZXh0dXJlVXBkYXRlci5oIgpAQCAtMjY2LDYgKzI2NywxNyBAQCBpbnQgQ0NUaHJlYWRQcm94
eTo6Y29tcG9zaXRvcklkZW50aWZpZXIoKSBjb25zdAogICAgIHJldHVybiBtX2NvbXBvc2l0b3JJ
ZGVudGlmaWVyOwogfQogCit2b2lkIENDVGhyZWFkUHJveHk6OnJlbmRlcmluZ1N0YXRzKENDUmVu
ZGVyaW5nU3RhdHMmIHN0YXRzKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAg
ICBDQ0NvbXBsZXRpb25FdmVudCBjb21wbGV0aW9uOworICAgIENDUHJveHk6OmltcGxUaHJlYWQo
KS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjpyZW5k
ZXJpbmdTdGF0c09uSW1wbFRocmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKCZjb21wbGV0aW9u
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKCZzdGF0cykpKTsKKyAgICBjb21wbGV0aW9uLndhaXQo
KTsKK30KKwogY29uc3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgQ0NUaHJlYWRQcm94eTo6
bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1fbGF5ZXJS
ZW5kZXJlckluaXRpYWxpemVkKTsKQEAgLTg3Nyw0ICs4ODksMTEgQEAgdm9pZCBDQ1RocmVhZFBy
b3h5OjpyZWNyZWF0ZUNvbnRleHRPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBs
ZXRpb24sIEMKICAgICBjb21wbGV0aW9uLT5zaWduYWwoKTsKIH0KIAordm9pZCBDQ1RocmVhZFBy
b3h5OjpyZW5kZXJpbmdTdGF0c09uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxl
dGlvbiwgQ0NSZW5kZXJpbmdTdGF0cyogc3RhdHMpCit7CisgICAgQVNTRVJUKGlzSW1wbFRocmVh
ZCgpKTsKKyAgICBzdGF0cy0+bnVtRnJhbWVzU2VudFRvU2NyZWVuID0gbV9sYXllclRyZWVIb3N0
SW1wbC0+ZnJhbWVOdW1iZXIoKTsKKyAgICBjb21wbGV0aW9uLT5zaWduYWwoKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCmluZGV4IDJjMmJlYjAx
MjUyMmI2YTVmY2U1MjFlZTc3YTg0YjU2NjAzYWJiNzguLjYyNmFhYmYxMzhkMDJiZjcxYTk1NDc4
MmRlNWE4NzlkNjA0N2QzMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKQEAgLTYxLDYgKzYx
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpbml0aWFsaXplTGF5ZXJSZW5kZXJlcigp
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCByZWNyZWF0ZUNvbnRleHQoKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIGludCBjb21wb3NpdG9ySWRlbnRpZmllcigpIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCByZW5kZXJpbmdTdGF0cyhDQ1JlbmRlcmluZ1N0YXRzJikgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCBjb25zdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBsYXllclJl
bmRlcmVyQ2FwYWJpbGl0aWVzKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGxv
c2VDb250ZXh0KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzQW5pbWF0ZSgp
IE9WRVJSSURFOwpAQCAtMTQyLDYgKzE0Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRGdWxs
Um9vdExheWVyRGFtYWdlT25JbXBsVGhyZWFkKCk7CiAgICAgdm9pZCBhY3F1aXJlTGF5ZXJUZXh0
dXJlc0Zvck1haW5UaHJlYWRPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsKICAgICB2
b2lkIHJlY3JlYXRlQ29udGV4dE9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCosIENDR3Jh
cGhpY3NDb250ZXh0KiwgYm9vbCogcmVjcmVhdGVTdWNjZWVkZWQsIExheWVyUmVuZGVyZXJDYXBh
YmlsaXRpZXMqKTsKKyAgICB2b2lkIHJlbmRlcmluZ1N0YXRzT25JbXBsVGhyZWFkKENDQ29tcGxl
dGlvbkV2ZW50KiwgQ0NSZW5kZXJpbmdTdGF0cyopOwogICAgIENDU2NoZWR1bGVkQWN0aW9uRHJh
d0FuZFN3YXBSZXN1bHQgc2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBJbnRlcm5hbChib29sIGZv
cmNlZERyYXcpOwogICAgIHZvaWQgc2V0Rm9udEF0bGFzT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8
Q0NGb250QXRsYXM+KTsKICAgICB2b2lkIGZvcmNlU2VyaWFsaXplT25Td2FwQnVmZmVyc09uSW1w
bFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViVmlldy5oCmluZGV4IDU0MmIxMDIxYTY0NDY1ZTM4NmFiNDNmNGFjY2UzYjBmODM2MWNlOTMu
LjNhYTNmOWNkNDc2ZDU3ZDIwOGM5NzI2MzZmN2IwOTJhNGIxOGE3M2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKQEAgLTYyLDYgKzYyLDcgQEAgc3RydWN0IFdlYkFj
dGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOwogc3RydWN0IFdlYk1lZGlhUGxheWVyQWN0aW9uOwog
c3RydWN0IFdlYlBsdWdpbkFjdGlvbjsKIHN0cnVjdCBXZWJQb2ludDsKK3N0cnVjdCBXZWJSZW5k
ZXJpbmdTdGF0czsKIAogY2xhc3MgV2ViVmlldyA6IHB1YmxpYyBXZWJXaWRnZXQgewogcHVibGlj
OgpAQCAtMzYwLDYgKzM2MSwxMCBAQCBwdWJsaWM6CiAgICAgLy8gYmUgc2V0IG9uY2UgcGVyIFdl
YlZpZXcuCiAgICAgdmlydHVhbCBXZWJEZXZUb29sc0FnZW50KiBkZXZUb29sc0FnZW50KCkgPSAw
OwogCisgICAgLy8gRmlsbHMgaW4gYSBXZWJSZW5kZXJpbmdTdGF0cyBzdHJ1Y3QgY29udGFpbmlu
ZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc3RhdGUgb2YgdGhlIGNvbXBvc2l0b3IuCisgICAgLy8g
VGhpcyBjYWxsIGlzIHJlbGF0aXZlbHkgZXhwZW5zaXZlIGluIHRocmVhZGVkIG1vZGUgYXMgaXQg
YmxvY2tzIG9uIHRoZSBjb21wb3NpdG9yIHRocmVhZC4KKyAgICB2aXJ0dWFsIHZvaWQgcmVuZGVy
aW5nU3RhdHMoV2ViUmVuZGVyaW5nU3RhdHMmKSBjb25zdCB7IH0KKwogCiAgICAgLy8gQWNjZXNz
aWJpbGl0eSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVy
VHJlZVZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmll
dy5jcHAKaW5kZXggZTA0MmYyNTE3MzBmYWM5N2VhOGY2MTg0NjA0Yjk4MmZmYjUwMDkzZS4uOGI1
MDBlNzhhZmY2ZWQxY2Y1OTc4MGE4Yjk4ZDhhMzVjNTczNjM0NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHAKQEAgLTI5LDEwICsyOSwxMiBA
QAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYkxh
eWVyVHJlZVZpZXdJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCisjaW5j
bHVkZSAiY2MvQ0NSZW5kZXJpbmdTdGF0cy5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkxheWVy
LmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViUG9pbnQuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9X
ZWJSZWN0LmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViU2l6ZS5oIgorI2luY2x1ZGUgInB1Ymxp
Yy9XZWJSZW5kZXJpbmdTdGF0cy5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAt
MTY3LDYgKzE2OSwxNSBAQCBXZWJHcmFwaGljc0NvbnRleHQzRCogV2ViTGF5ZXJUcmVlVmlldzo6
Y29udGV4dCgpCiAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZXh0cmFjdFdl
YkdyYXBoaWNzQ29udGV4dDNEKG1fcHJpdmF0ZS0+bGF5ZXJUcmVlSG9zdCgpLT5jb250ZXh0KCkt
PmNvbnRleHQzRCgpKTsKIH0KIAordm9pZCBXZWJMYXllclRyZWVWaWV3OjpyZW5kZXJpbmdTdGF0
cyhXZWJSZW5kZXJpbmdTdGF0cyYgc3RhdHMpIGNvbnN0Cit7CisgICAgQ0NSZW5kZXJpbmdTdGF0
cyBjY1N0YXRzOworICAgIG1fcHJpdmF0ZS0+bGF5ZXJUcmVlSG9zdCgpLT5yZW5kZXJpbmdTdGF0
cyhjY1N0YXRzKTsKKworICAgIHN0YXRzLm51bUFuaW1hdGlvbkZyYW1lcyA9IGNjU3RhdHMubnVt
QW5pbWF0aW9uRnJhbWVzOworICAgIHN0YXRzLm51bUZyYW1lc1NlbnRUb1NjcmVlbiA9IGNjU3Rh
dHMubnVtRnJhbWVzU2VudFRvU2NyZWVuOworfQorCiB2b2lkIFdlYkxheWVyVHJlZVZpZXc6Omxv
c2VDb21wb3NpdG9yQ29udGV4dChpbnQgbnVtVGltZXMpCiB7CiAgICAgbV9wcml2YXRlLT5sYXll
clRyZWVIb3N0KCktPmxvc2VDb250ZXh0KG51bVRpbWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCA4NzQ4YTgwNzg3YjhmMTJiZGVjMWI5ZWZhMmFm
YjU0MGUzMjJmODU3Li5jYjE2OGYwZjQyMGYxMTNhYjliYjk3ZDkyYjE3MTU3YTQyYTM5NjUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC0xNDU2LDYg
KzE0NTYsMTIgQEAgdm9pZCBXZWJWaWV3SW1wbDo6aW5zdHJ1bWVudENhbmNlbEZyYW1lKCkKICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENhbmNlbEZyYW1lKG1fcGFnZS5nZXQoKSk7
CiB9CiAKK3ZvaWQgV2ViVmlld0ltcGw6OnJlbmRlcmluZ1N0YXRzKFdlYlJlbmRlcmluZ1N0YXRz
JiBzdGF0cykgY29uc3QKK3sKKyAgICBpZiAoIW1fbGF5ZXJUcmVlVmlldy5pc051bGwoKSkKKyAg
ICAgICAgbV9sYXllclRyZWVWaWV3LnJlbmRlcmluZ1N0YXRzKHN0YXRzKTsKK30KKwogI2lmIEVO
QUJMRShCQVRURVJZX1NUQVRVUykKIHZvaWQgV2ViVmlld0ltcGw6OnVwZGF0ZUJhdHRlcnlTdGF0
dXMoY29uc3QgV2ViQmF0dGVyeVN0YXR1cyYgc3RhdHVzKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5kZXggNGY1YzA0OGQ5Nzc0MmFkNTliMTVlY2IzNDNkODVj
OGQzYTAzMTg2Zi4uMGNhNjVmNWEzZmFlOTgxMDBmN2Y2ZDZlMzQxNDY0ODEzMzU3OGE5ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBAIC0yNjgsNiArMjY4LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRJbnNwZWN0b3JTZXR0aW5nKGNvbnN0IFdl
YlN0cmluZyYga2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFdlYlN0cmluZyYgdmFsdWUpOwogICAgIHZpcnR1YWwgV2ViRGV2VG9vbHNBZ2VudCogZGV2VG9v
bHNBZ2VudCgpOworICAgIHZpcnR1YWwgdm9pZCByZW5kZXJpbmdTdGF0cyhXZWJSZW5kZXJpbmdT
dGF0cyYpIGNvbnN0OwogICAgIHZpcnR1YWwgV2ViQWNjZXNzaWJpbGl0eU9iamVjdCBhY2Nlc3Np
YmlsaXR5T2JqZWN0KCk7CiAgICAgdmlydHVhbCB2b2lkIGFwcGx5QXV0b2ZpbGxTdWdnZXN0aW9u
cygKICAgICAgICAgY29uc3QgV2ViTm9kZSYsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148464</attachid>
            <date>2012-06-19 17:05:34 -0700</date>
            <delta_ts>2012-06-19 17:57:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88268-20120619170533.patch</filename>
            <type>text/plain</type>
            <size>25874</size>
            <attacher name="Dave Tu">dtu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNjc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBlN2NlOWY1NGU5OGQ0
NDljZmQzODhiOWZmZWQzZDc0NTljOGEyMTUzLi4xODkwMDg2ZTFiM2RiZWVkZGMwN2IxMWQwYjgz
NmY0NjYzYzc3NWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wNi0wNCAg
RGF2ZSBUdSAgPGR0dUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBFeHBvc2Ug
cmVuZGVyaW5nIHN0YXRpc3RpY3MgdG8gV2ViV2lkZ2V0LgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODgyNjgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgV2ViS2l0IHNpZGUgb2YgYSBiYXNpYyBmcmFt
ZXdvcmsgZm9yIGV4cG9zaW5nIHJlbmRlcmluZyBzdGF0aXN0aWNzCisgICAgICAgIHRvIENocm9t
aXVtJ3MgLS1lbmFibGUtYmVuY2htYXJraW5nIGV4dGVuc2lvbi4KKworICAgICAgICAqIGNocm9t
aXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Lmg6CisgICAgICAgIChXZWJSZW5kZXJpbmdTdGF0
aXN0aWNzKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJMYXllclRyZWVWaWV3KToK
KwogMjAxMi0wNi0xNCAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFtjaHJvbWl1bV0gVXNlIFdlYkltYWdlTGF5ZXIgaW4gR3JhcGhpY3NMYXllckNocm9t
aXVtIGZvciBpbWFnZSBsYXllcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjYWQzZDQ1YmZlZTU5NGFhMGEyODc2
YjBhMWRmODg0NmFlNzY5NTYzLi41OTY4M2FhODQ2YmRkM2FhMTYxOTY1YmJkMzFlOGE0ZWUyNWY3
YzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTItMDYtMDQgIERhdmUgVHUgIDxk
dHVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRXhwb3NlIHJlbmRlcmluZyBz
dGF0aXN0aWNzIHRvIFdlYldpZGdldC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTg4MjY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhlIFdlYktpdCBzaWRlIG9mIGEgYmFzaWMgZnJhbWV3b3JrIGZvciBl
eHBvc2luZyByZW5kZXJpbmcgc3RhdGlzdGljcworICAgICAgICB0byBDaHJvbWl1bSdzIC0tZW5h
YmxlLWJlbmNobWFya2luZyBleHRlbnNpb24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJUcmVlSG9zdDo6aW1wbEZyYW1lTnVtYmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1Byb3h5Lmg6CisgICAgICAgIChDQ1Byb3h5KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5Lmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjppbXBsRnJhbWVOdW1iZXIpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjppbXBsRnJhbWVO
dW1iZXJPbkltcGxUaHJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuaDoKKyAgICAgICAgKENDVGhyZWFkUHJveHkpOgorCiAyMDEyLTA2
LTE4ICBKb29uZSBIdXIgIDxqb29uZS5odXJAaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdIEZv
bnRjb25maWcgY2FuJ3QgYmUgbGlua2VkIHByb3Blcmx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CmluZGV4IDk5OTJlMjhlNzEzODkwOWUxMjUwZTBiMjYwNjBmZDI1MGFjYzg0NDUuLjg0ZjA2YWZl
NmUyNjBkOTgyNTZiMzA3ODk1N2JkNmE3NWZhOTg1ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDYtMDQgIERhdmUgVHUgIDxkdHVAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRXhwb3NlIHJlbmRlcmluZyBzdGF0aXN0aWNzIHRv
IFdlYldpZGdldC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg4MjY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhlIFdlYktpdCBzaWRlIG9mIGEgYmFzaWMgZnJhbWV3b3JrIGZvciBleHBvc2luZyByZW5k
ZXJpbmcgc3RhdGlzdGljcworICAgICAgICB0byBDaHJvbWl1bSdzIC0tZW5hYmxlLWJlbmNobWFy
a2luZyBleHRlbnNpb24uCisKKyAgICAgICAgKiBzcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXc6OnJlbmRlcmluZ1N0YXRpc3RpY3MpOgor
ICAgICAgICAoV2ViS2l0KToKKwogMjAxMi0wNi0xOCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gR2VzdHVyZVBpbmNoQmVnaW4gYW5kIGZyaWVu
ZHMgYXJlIGdlc3R1cmUgZXZlbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZv
cm0uZ3lwaSBiL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCmluZGV4IGQ3OWY4NTNiMzE5
ZmYxMGZmNDhhMWUwMGNhYmNlZTc3ZWRkNjFkYzguLjc1YWQ5NzJmYmY4Mjc4OTU5ODAxNzQyZWE0
N2U5ZTNiMDc4MWEzMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBp
CisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCkBAIC05NCw2ICs5NCw3IEBACiAg
ICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlByaXZhdGVQdHIuaCcsCiAgICAgICAgICAg
ICAnY2hyb21pdW0vcHVibGljL1dlYlJlY3QuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVi
bGljL1dlYlJlZmVycmVyUG9saWN5LmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9X
ZWJSZW5kZXJpbmdTdGF0cy5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViU2Vz
c2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvci5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJs
aWMvV2ViU2l6ZS5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViU29ja2V0U3Ry
ZWFtRXJyb3IuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYkxheWVyVHJlZVZpZXcuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2Vi
TGF5ZXJUcmVlVmlldy5oCmluZGV4IGQ1ZDk5YTI4NTU5MjMxMDlhZWYxNGM1YmU1YTRhZjVjMjRi
YWU1OWYuLmY2NzkzMGRkMTA1NjhkMTExYzQ2ZTlmM2VjOWQyN2UyYzhmYjA4OTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oCisr
KyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oCkBA
IC00NCw2ICs0NCw3IEBAIGNsYXNzIFdlYkxheWVyVHJlZVZpZXdDbGllbnQ7CiBjbGFzcyBXZWJM
YXllclRyZWVWaWV3SW1wbDsKIHN0cnVjdCBXZWJQb2ludDsKIHN0cnVjdCBXZWJSZWN0Oworc3Ry
dWN0IFdlYlJlbmRlcmluZ1N0YXRzOwogCiBjbGFzcyBXZWJMYXllclRyZWVWaWV3IDogcHVibGlj
IFdlYk5vbkNvcHlhYmxlIHsKIHB1YmxpYzoKQEAgLTE3Myw2ICsxNzQsMTAgQEAgcHVibGljOgog
CiAgICAgLy8gRGVidWdnaW5nIC8gZGFuZ2Vyb3VzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogCisgICAgLy8gRmlsbHMgaW4gYSBXZWJSZW5kZXJpbmdTdGF0
cyBzdHJ1Y3QgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc3RhdGUgb2YgdGhlIGNv
bXBvc2l0b3IuCisgICAgLy8gVGhpcyBjYWxsIGlzIHJlbGF0aXZlbHkgZXhwZW5zaXZlIGluIHRo
cmVhZGVkIG1vZGUgYXMgaXQgYmxvY2tzIG9uIHRoZSBjb21wb3NpdG9yIHRocmVhZC4KKyAgICBX
RUJLSVRfRVhQT1JUIHZvaWQgcmVuZGVyaW5nU3RhdHMoV2ViUmVuZGVyaW5nU3RhdHMmKSBjb25z
dDsKKwogICAgIC8vIFNpbXVsYXRlcyBhIGxvc3QgY29udGV4dC4gRm9yIHRlc3Rpbmcgb25seS4K
ICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgbG9zZUNvbXBvc2l0b3JDb250ZXh0KGludCBudW1UaW1l
cyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUmVu
ZGVyaW5nU3RhdHMuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUmVuZGVy
aW5nU3RhdHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMTc2OTg1NWIwMDMyNThlZDA1MGE1ZTEwMDkxN2E0NGU1
YzIxYmM4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJSZW5kZXJpbmdTdGF0cy5oCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdl
YlJlbmRlcmluZ1N0YXRzX2gKKyNkZWZpbmUgV2ViUmVuZGVyaW5nU3RhdHNfaAorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworc3RydWN0IFdlYlJlbmRlcmluZ1N0YXRzIHsKKyAgICBpbnQgbnVtQW5p
bWF0aW9uRnJhbWVzOworICAgIGludCBudW1GcmFtZXNTZW50VG9TY3JlZW47CisKKyAgICBXZWJS
ZW5kZXJpbmdTdGF0cygpCisgICAgICAgIDogbnVtQW5pbWF0aW9uRnJhbWVzKDApCisgICAgICAg
ICwgbnVtRnJhbWVzU2VudFRvU2NyZWVuKDApCisgICAgeworICAgIH0KK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViUmVuZGVyaW5nU3RhdHNfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCmluZGV4IDBjMmU4ZTNlMTA5NmQ2NzY5MzYwNjhhYzdmMDFhNmI3M2VjNjkwOGEuLjY5YzU1
Y2QzNGQyYTc5MmI0YTI0NDViZDZmZDgyZTM1M2U0ZmJjYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAg
LTM3NDAsNiArMzc0MCw3IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NQcm94eS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1F1YWRDdWxsZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJpbmdTdGF0cy5oJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuaCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuY3Bw
JywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCA4YmQ0Y2YzNDdkNGUzNDA1
ZjEzZTBjYWJkZTYzNjJlY2Y3NTdhZjExLi43MDE5NzE1NmMwZTY0YjY2MmRjMTNiNDJjMzBhNDdk
YjUzNjM4MTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC00MjU2LDYg
KzQyNTYsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlJ
RCBpZCwgQ1NTVmFsdWUqIHZhbHVlKQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5C
cmVha0luc2lkZToKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQ291bnQ6CiAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkdhcDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0Q29sdW1uUHJvZ3Jlc3Npb246CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1
bGVDb2xvcjoKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVN0eWxlOgogICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlV2lkdGg6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0LmNwcAppbmRleCBmMTIwZDhjNzcwMTU3Nzk1MGJmOTFjNWIwMjAwNTM3NWViNzMz
OGI5Li5hNjJkNzI5ZDIxODViYzliNGM5ZmM0NWM1MGNhNjFmODYzNjRmNTMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJjYy9D
Q0xheWVyVHJlZUhvc3RDb21tb24uaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RJbXBs
LmgiCiAjaW5jbHVkZSAiY2MvQ0NPY2NsdXNpb25UcmFja2VyLmgiCisjaW5jbHVkZSAiY2MvQ0NS
ZW5kZXJpbmdTdGF0cy5oIgogI2luY2x1ZGUgImNjL0NDU2V0dGluZ3MuaCIKICNpbmNsdWRlICJj
Yy9DQ1NpbmdsZVRocmVhZFByb3h5LmgiCiAjaW5jbHVkZSAiY2MvQ0NUaHJlYWQuaCIKQEAgLTcx
LDcgKzcyLDcgQEAgQ0NMYXllclRyZWVIb3N0OjpDQ0xheWVyVHJlZUhvc3QoQ0NMYXllclRyZWVI
b3N0Q2xpZW50KiBjbGllbnQsIGNvbnN0IENDTGF5ZXJUcmUKICAgICAsIG1fYW5pbWF0aW5nKGZh
bHNlKQogICAgICwgbV9uZWVkc0FuaW1hdGVMYXllcnMoZmFsc2UpCiAgICAgLCBtX2NsaWVudChj
bGllbnQpCi0gICAgLCBtX2ZyYW1lTnVtYmVyKDApCisgICAgLCBtX2FuaW1hdGlvbkZyYW1lTnVt
YmVyKDApCiAgICAgLCBtX2ZyYW1lSXNGb3JEaXNwbGF5KGZhbHNlKQogICAgICwgbV9sYXllclJl
bmRlcmVySW5pdGlhbGl6ZWQoZmFsc2UpCiAgICAgLCBtX2NvbnRleHRMb3N0KGZhbHNlKQpAQCAt
MjE4LDYgKzIxOSw4IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVBbmltYXRpb25zKGRv
dWJsZSBtb25vdG9uaWNGcmFtZUJlZ2luVGltZSkKICAgICBtX2NsaWVudC0+dXBkYXRlQW5pbWF0
aW9ucyhtb25vdG9uaWNGcmFtZUJlZ2luVGltZSk7CiAgICAgYW5pbWF0ZUxheWVycyhtb25vdG9u
aWNGcmFtZUJlZ2luVGltZSk7CiAgICAgbV9hbmltYXRpbmcgPSBmYWxzZTsKKworICAgIG1fYW5p
bWF0aW9uRnJhbWVOdW1iZXIrKzsKIH0KIAogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmxheW91dCgp
CkBAIC0yNTAsNyArMjUzLDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmZpbmlzaENvbW1pdE9u
SW1wbFRocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBob3N0SW1wbCkKICAgICBpZiAocm9vdExh
eWVyKCkgJiYgbV9uZWVkc0FuaW1hdGVMYXllcnMpCiAgICAgICAgIGhvc3RJbXBsLT5zZXROZWVk
c0FuaW1hdGVMYXllcnMoKTsKIAotICAgIGhvc3RJbXBsLT5zZXRTb3VyY2VGcmFtZU51bWJlcihm
cmFtZU51bWJlcigpKTsKKyAgICBob3N0SW1wbC0+c2V0U291cmNlRnJhbWVOdW1iZXIoYW5pbWF0
aW9uRnJhbWVOdW1iZXIoKSk7CiAgICAgaG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZSh2aWV3cG9y
dFNpemUoKSk7CiAgICAgaG9zdEltcGwtPnNldERldmljZVNjYWxlRmFjdG9yKGRldmljZVNjYWxl
RmFjdG9yKCkpOwogICAgIGhvc3RJbXBsLT5zZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1pdHMobV9w
YWdlU2NhbGVGYWN0b3IsIG1fbWluUGFnZVNjYWxlRmFjdG9yLCBtX21heFBhZ2VTY2FsZUZhY3Rv
cik7CkBAIC0yNTgsOCArMjYxLDYgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmZpbmlzaENvbW1p
dE9uSW1wbFRocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBob3N0SW1wbCkKICAgICBob3N0SW1w
bC0+c2V0SGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKG1faGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5k
KTsKICAgICBob3N0SW1wbC0+c2V0VmlzaWJsZShtX3Zpc2libGUpOwogICAgIGhvc3RJbXBsLT5z
ZXRTb3VyY2VGcmFtZUNhbkJlRHJhd24obV9mcmFtZUlzRm9yRGlzcGxheSk7Ci0KLSAgICBtX2Zy
YW1lTnVtYmVyKys7CiB9CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojpjb21taXRDb21wbGV0ZSgp
CkBAIC0zMjEsNiArMzIyLDEyIEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpmaW5pc2hBbGxSZW5k
ZXJpbmcoKQogICAgIG1fcHJveHktPmZpbmlzaEFsbFJlbmRlcmluZygpOwogfQogCit2b2lkIEND
TGF5ZXJUcmVlSG9zdDo6cmVuZGVyaW5nU3RhdHMoQ0NSZW5kZXJpbmdTdGF0cyYgc3RhdHMpIGNv
bnN0Cit7CisgICAgbV9wcm94eS0+cmVuZGVyaW5nU3RhdHMoc3RhdHMpOworICAgIHN0YXRzLm51
bUFuaW1hdGlvbkZyYW1lcyA9IGFuaW1hdGlvbkZyYW1lTnVtYmVyKCk7Cit9CisKIGNvbnN0IExh
eWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMmIENDTGF5ZXJUcmVlSG9zdDo6bGF5ZXJSZW5kZXJlckNh
cGFiaWxpdGllcygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcHJveHktPmxheWVyUmVuZGVyZXJD
YXBhYmlsaXRpZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKaW5kZXggZTEyMDlhZjM1
NTljOTdlYmE0ODAxNTM2NGE5ZGJjODE0NGVmOTMxYy4uMGI5OThlMTY5NGRiZTNiNzVkMTZjNDI3
YTNiMjc4YTVmMzQyMDM2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKQEAgLTQ1LDYg
KzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBs
OwogY2xhc3MgQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudDsKK2NsYXNzIENDUmVuZGVyaW5nU3Rh
dHM7CiBjbGFzcyBDQ1RleHR1cmVVcGRhdGVyOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiBj
bGFzcyBSZWdpb247CkBAIC0xODksNyArMTkwLDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBmaW5p
c2hBbGxSZW5kZXJpbmcoKTsKIAotICAgIGludCBmcmFtZU51bWJlcigpIGNvbnN0IHsgcmV0dXJu
IG1fZnJhbWVOdW1iZXI7IH0KKyAgICBpbnQgYW5pbWF0aW9uRnJhbWVOdW1iZXIoKSBjb25zdCB7
IHJldHVybiBtX2FuaW1hdGlvbkZyYW1lTnVtYmVyOyB9CisKKyAgICB2b2lkIHJlbmRlcmluZ1N0
YXRzKENDUmVuZGVyaW5nU3RhdHMmKSBjb25zdDsKIAogICAgIGNvbnN0IExheWVyUmVuZGVyZXJD
YXBhYmlsaXRpZXMmIGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKSBjb25zdDsKIApAQCAtMjc3
LDcgKzI4MCw3IEBAIHByaXZhdGU6CiAKICAgICBDQ0xheWVyVHJlZUhvc3RDbGllbnQqIG1fY2xp
ZW50OwogCi0gICAgaW50IG1fZnJhbWVOdW1iZXI7CisgICAgaW50IG1fYW5pbWF0aW9uRnJhbWVO
dW1iZXI7CiAgICAgYm9vbCBtX2ZyYW1lSXNGb3JEaXNwbGF5OwogCiAgICAgT3duUHRyPENDUHJv
eHk+IG1fcHJveHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4
IDQ5NGY5MDg1YmY2MDYxZjFhOTcyNWEzYjdhNDg2NzIzMTU1YTViYjUuLmM3YjBlNDU0Yzk0MTg2
YjQ0Y2I5OWJmMjk4MWM5ODJkYjgwOGQ5YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdEltcGwuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgUGFzc093blB0cjxDQ0xheWVyVHJlZUhv
c3RJbXBsPiBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUoY29uc3QgQ0NMYXllclRyZWVTZXQK
IENDTGF5ZXJUcmVlSG9zdEltcGw6OkNDTGF5ZXJUcmVlSG9zdEltcGwoY29uc3QgQ0NMYXllclRy
ZWVTZXR0aW5ncyYgc2V0dGluZ3MsIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQqIGNsaWVudCkK
ICAgICA6IG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1fc291cmNlRnJhbWVOdW1iZXIoLTEpCi0g
ICAgLCBtX2ZyYW1lTnVtYmVyKDApCisgICAgLCBtX3NvdXJjZUFuaW1hdGlvbkZyYW1lTnVtYmVy
KDApCiAgICAgLCBtX3Jvb3RTY3JvbGxMYXllckltcGwoMCkKICAgICAsIG1fY3VycmVudGx5U2Ny
b2xsaW5nTGF5ZXJJbXBsKDApCiAgICAgLCBtX3Njcm9sbGluZ0xheWVySWRGcm9tUHJldmlvdXNU
cmVlKC0xKQpAQCAtNTA2LDcgKzUwNiw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6ZHJh
d0xheWVycyhjb25zdCBGcmFtZURhdGEmIGZyYW1lKQogCiAgICAgbV9sYXllclJlbmRlcmVyLT5m
aW5pc2hEcmF3aW5nRnJhbWUoKTsKIAotICAgICsrbV9mcmFtZU51bWJlcjsKKyAgICArK21fc291
cmNlQW5pbWF0aW9uRnJhbWVOdW1iZXI7CiAKICAgICAvLyBUaGUgbmV4dCBmcmFtZSBzaG91bGQg
c3RhcnQgYnkgYXNzdW1pbmcgbm90aGluZyBoYXMgY2hhbmdlZCwgYW5kIGNoYW5nZXMgYXJlIG5v
dGVkIGFzIHRoZXkgb2NjdXIuCiAgICAgbV9yb290TGF5ZXJJbXBsLT5yZXNldEFsbENoYW5nZVRy
YWNraW5nRm9yU3VidHJlZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCmlu
ZGV4IDJlN2FiYTRlZDdiYmRhNjBiNTM5NjBiMDJhZDlmODYyM2QxYjI4N2QuLjE1MGY3YjJiZTVm
YmM3N2M0MjAyZjQxODdiY2VjYWVjMmVkYmVjY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3RJbXBsLmgKQEAgLTEyMSw3ICsxMjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRGb250
QXRsYXMoUGFzc093blB0cjxDQ0ZvbnRBdGxhcz4pOwogCiAgICAgdm9pZCBmaW5pc2hBbGxSZW5k
ZXJpbmcoKTsKLSAgICBpbnQgZnJhbWVOdW1iZXIoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lTnVt
YmVyOyB9CisgICAgaW50IHNvdXJjZUFuaW1hdGlvbkZyYW1lTnVtYmVyKCkgY29uc3QgeyByZXR1
cm4gbV9zb3VyY2VBbmltYXRpb25GcmFtZU51bWJlcjsgfQogCiAgICAgYm9vbCBpbml0aWFsaXpl
TGF5ZXJSZW5kZXJlcihQYXNzUmVmUHRyPENDR3JhcGhpY3NDb250ZXh0PiwgVGV4dHVyZVVwbG9h
ZGVyT3B0aW9uKTsKICAgICBib29sIGlzQ29udGV4dExvc3QoKTsKQEAgLTE0Niw3ICsxNDYsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRWaXNpYmxlKGJvb2wpOwogCiAgICAgaW50IHNvdXJjZUZy
YW1lTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VGcmFtZU51bWJlcjsgfQotICAgIHZv
aWQgc2V0U291cmNlRnJhbWVOdW1iZXIoaW50IGZyYW1lTnVtYmVyKSB7IG1fc291cmNlRnJhbWVO
dW1iZXIgPSBmcmFtZU51bWJlcjsgfQorICAgIHZvaWQgc2V0U291cmNlRnJhbWVOdW1iZXIoaW50
IHNvdXJjZUFuaW1hdGlvbkZyYW1lTnVtYmVyKSB7IG1fc291cmNlRnJhbWVOdW1iZXIgPSBzb3Vy
Y2VBbmltYXRpb25GcmFtZU51bWJlcjsgfQogCiAgICAgYm9vbCBzb3VyY2VGcmFtZUNhbkJlRHJh
d24oKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUZyYW1lQ2FuQmVEcmF3bjsgfQogICAgIHZvaWQg
c2V0U291cmNlRnJhbWVDYW5CZURyYXduKGJvb2wgc291cmNlRnJhbWVDYW5CZURyYXduKSB7IG1f
c291cmNlRnJhbWVDYW5CZURyYXduID0gc291cmNlRnJhbWVDYW5CZURyYXduOyB9CkBAIC0xOTgs
NyArMTk4LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCog
bV9jbGllbnQ7CiAgICAgaW50IG1fc291cmNlRnJhbWVOdW1iZXI7Ci0gICAgaW50IG1fZnJhbWVO
dW1iZXI7CisgICAgaW50IG1fc291cmNlQW5pbWF0aW9uRnJhbWVOdW1iZXI7CiAKIHByaXZhdGU6
CiAgICAgdm9pZCBjb21wdXRlRG91YmxlVGFwWm9vbURlbHRhcyhDQ1Njcm9sbEFuZFNjYWxlU2V0
KiBzY3JvbGxJbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaAppbmRleCBmYjJjYmJhZTk2ZjA3MzMwMDc1YzI1MzM1
ZGJhMDdlNTlhNWQyZTJmLi44MGQ0N2I2YTU1M2MxMTJhYjFjOGFkYTE1N2UwNjVhMDUxYzk5NmJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1Byb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NQcm94eS5oCkBAIC0zNCw2ICszNCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIENDRm9udEF0bGFzOworY2xhc3MgQ0NSZW5kZXJpbmdTdGF0czsKIGNsYXNzIENDVGhy
ZWFkOwogY2xhc3MgQ0NHcmFwaGljc0NvbnRleHQ7CiBzdHJ1Y3QgTGF5ZXJSZW5kZXJlckNhcGFi
aWxpdGllczsKQEAgLTc5LDYgKzgwLDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBpbnQgY29t
cG9zaXRvcklkZW50aWZpZXIoKSBjb25zdCA9IDA7CiAKKyAgICB2aXJ0dWFsIHZvaWQgcmVuZGVy
aW5nU3RhdHMoQ0NSZW5kZXJpbmdTdGF0cyYpID0gMDsKKwogICAgIHZpcnR1YWwgY29uc3QgTGF5
ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgbGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpIGNvbnN0
ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0FuaW1hdGUoKSA9IDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRl
cmluZ1N0YXRzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1JlbmRlcmluZ1N0YXRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjY5YzhlMDI2ODRlYzJlNTAwM2YzMjA0
NzBkMDljY2U5MGVmMTE2MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyaW5nU3RhdHMuaApAQCAtMCwwICsxLDQz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENDUmVuZGVyaW5nU3RhdHNfaAorI2RlZmluZSBD
Q1JlbmRlcmluZ1N0YXRzX2gKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgQ0NSZW5k
ZXJpbmdTdGF0cyB7CisgICAgaW50IG51bUFuaW1hdGlvbkZyYW1lczsKKyAgICBpbnQgbnVtRnJh
bWVzU2VudFRvU2NyZWVuOworCisgICAgQ0NSZW5kZXJpbmdTdGF0cygpCisgICAgICAgIDogbnVt
QW5pbWF0aW9uRnJhbWVzKDApCisgICAgICAgICwgbnVtRnJhbWVzU2VudFRvU2NyZWVuKDApCisg
ICAgeworICAgIH0KK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhy
ZWFkUHJveHkuY3BwCmluZGV4IDhmMzA1MmQ5MzE2YzQ3YTg4Y2ViMWUwYjk2ZjNjMDE4MTk0N2Zh
MWUuLjE4MjlhYzI2NGMzZDE1MWY3MmQ5YTkxMzIyM2QzMzQwNDUzNTY3MGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhy
ZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVk
ZSAiVHJhY2VFdmVudC5oIgogI2luY2x1ZGUgImNjL0NDRm9udEF0bGFzLmgiCiAjaW5jbHVkZSAi
Y2MvQ0NMYXllclRyZWVIb3N0LmgiCisjaW5jbHVkZSAiY2MvQ0NSZW5kZXJpbmdTdGF0cy5oIgog
I2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJjYy9DQ1RpbWVyLmgi
CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CkBAIC0xOTcsNiArMTk4LDExIEBAIGJvb2wg
Q0NTaW5nbGVUaHJlYWRQcm94eTo6cmVjcmVhdGVDb250ZXh0KCkKICAgICByZXR1cm4gaW5pdGlh
bGl6ZWQ7CiB9CiAKK3ZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6cmVuZGVyaW5nU3RhdHMoQ0NS
ZW5kZXJpbmdTdGF0cyYgc3RhdHMpCit7CisgICAgc3RhdHMubnVtRnJhbWVzU2VudFRvU2NyZWVu
ID0gbV9sYXllclRyZWVIb3N0SW1wbC0+c291cmNlQW5pbWF0aW9uRnJhbWVOdW1iZXIoKTsKK30K
KwogY29uc3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgQ0NTaW5nbGVUaHJlYWRQcm94eTo6
bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1fbGF5ZXJS
ZW5kZXJlckluaXRpYWxpemVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaApp
bmRleCBkMzI1M2UyNWM3ZjI4ZjBjYWM5NGU5NDY5OGRhYTY2YTkwOTY5MWI1Li4xNzYzYzhlNzY5
ZTNiOTIwNmNmZjIwYmRhYWRlODVjNDJiN2E1NmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVU
aHJlYWRQcm94eS5oCkBAIC01Myw2ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wg
aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgcmVj
cmVhdGVDb250ZXh0KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBpbnQgY29tcG9zaXRvcklkZW50
aWZpZXIoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2NvbXBvc2l0b3JJZGVudGlmaWVyOyB9
CisgICAgdmlydHVhbCB2b2lkIHJlbmRlcmluZ1N0YXRzKENDUmVuZGVyaW5nU3RhdHMmKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIGNvbnN0IExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMmIGxheWVy
UmVuZGVyZXJDYXBhYmlsaXRpZXMoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
bG9zZUNvbnRleHQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNBbmltYXRl
KCkgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCmluZGV4IGU5NTU1NTUxMDU2
N2UyOTdmMzlhMGUzYzE5NmVmYThmMjgyYWM5YTQuLjE5ZjgxMzdkYjJlNjFiMDM1NzY4NGMwNTM5
NzZkNDQ5M2Y1MmY2M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCkBAIC0zNSw2ICsz
NSw3IEBACiAjaW5jbHVkZSAiY2MvQ0NGcmFtZVJhdGVDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAi
Y2MvQ0NJbnB1dEhhbmRsZXIuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKKyNp
bmNsdWRlICJjYy9DQ1JlbmRlcmluZ1N0YXRzLmgiCiAjaW5jbHVkZSAiY2MvQ0NTY2hlZHVsZXIu
aCIKICNpbmNsdWRlICJjYy9DQ1Njb3BlZFRocmVhZFByb3h5LmgiCiAjaW5jbHVkZSAiY2MvQ0NU
ZXh0dXJlVXBkYXRlci5oIgpAQCAtMjY2LDYgKzI2NywxNyBAQCBpbnQgQ0NUaHJlYWRQcm94eTo6
Y29tcG9zaXRvcklkZW50aWZpZXIoKSBjb25zdAogICAgIHJldHVybiBtX2NvbXBvc2l0b3JJZGVu
dGlmaWVyOwogfQogCit2b2lkIENDVGhyZWFkUHJveHk6OnJlbmRlcmluZ1N0YXRzKENDUmVuZGVy
aW5nU3RhdHMmIHN0YXRzKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBD
Q0NvbXBsZXRpb25FdmVudCBjb21wbGV0aW9uOworICAgIENDUHJveHk6OmltcGxUaHJlYWQoKS0+
cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjpyZW5kZXJp
bmdTdGF0c09uSW1wbFRocmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKCZjb21wbGV0aW9uKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBB
bGxvd0Nyb3NzVGhyZWFkQWNjZXNzKCZzdGF0cykpKTsKKyAgICBjb21wbGV0aW9uLndhaXQoKTsK
K30KKwogY29uc3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgQ0NUaHJlYWRQcm94eTo6bGF5
ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1fbGF5ZXJSZW5k
ZXJlckluaXRpYWxpemVkKTsKQEAgLTg3Nyw0ICs4ODksMTEgQEAgdm9pZCBDQ1RocmVhZFByb3h5
OjpyZWNyZWF0ZUNvbnRleHRPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRp
b24sIEMKICAgICBjb21wbGV0aW9uLT5zaWduYWwoKTsKIH0KIAordm9pZCBDQ1RocmVhZFByb3h5
OjpyZW5kZXJpbmdTdGF0c09uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlv
biwgQ0NSZW5kZXJpbmdTdGF0cyogc3RhdHMpCit7CisgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgp
KTsKKyAgICBzdGF0cy0+bnVtRnJhbWVzU2VudFRvU2NyZWVuID0gbV9sYXllclRyZWVIb3N0SW1w
bC0+c291cmNlQW5pbWF0aW9uRnJhbWVOdW1iZXIoKTsKKyAgICBjb21wbGV0aW9uLT5zaWduYWwo
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCmlu
ZGV4IDJjMmJlYjAxMjUyMmI2YTVmY2U1MjFlZTc3YTg0YjU2NjAzYWJiNzguLjYyNmFhYmYxMzhk
MDJiZjcxYTk1NDc4MmRlNWE4NzlkNjA0N2QzMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgK
QEAgLTYxLDYgKzYxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpbml0aWFsaXplTGF5
ZXJSZW5kZXJlcigpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCByZWNyZWF0ZUNvbnRleHQo
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGludCBjb21wb3NpdG9ySWRlbnRpZmllcigpIGNvbnN0
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZW5kZXJpbmdTdGF0cyhDQ1JlbmRlcmluZ1N0
YXRzJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBjb25zdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0
aWVzJiBsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIGxvc2VDb250ZXh0KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldE5l
ZWRzQW5pbWF0ZSgpIE9WRVJSSURFOwpAQCAtMTQyLDYgKzE0Myw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBzZXRGdWxsUm9vdExheWVyRGFtYWdlT25JbXBsVGhyZWFkKCk7CiAgICAgdm9pZCBhY3F1
aXJlTGF5ZXJUZXh0dXJlc0Zvck1haW5UaHJlYWRPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZl
bnQqKTsKICAgICB2b2lkIHJlY3JlYXRlQ29udGV4dE9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25F
dmVudCosIENDR3JhcGhpY3NDb250ZXh0KiwgYm9vbCogcmVjcmVhdGVTdWNjZWVkZWQsIExheWVy
UmVuZGVyZXJDYXBhYmlsaXRpZXMqKTsKKyAgICB2b2lkIHJlbmRlcmluZ1N0YXRzT25JbXBsVGhy
ZWFkKENDQ29tcGxldGlvbkV2ZW50KiwgQ0NSZW5kZXJpbmdTdGF0cyopOwogICAgIENDU2NoZWR1
bGVkQWN0aW9uRHJhd0FuZFN3YXBSZXN1bHQgc2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBJbnRl
cm5hbChib29sIGZvcmNlZERyYXcpOwogICAgIHZvaWQgc2V0Rm9udEF0bGFzT25JbXBsVGhyZWFk
KFBhc3NPd25QdHI8Q0NGb250QXRsYXM+KTsKICAgICB2b2lkIGZvcmNlU2VyaWFsaXplT25Td2Fw
QnVmZmVyc09uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCopOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViVmlldy5oCmluZGV4IDU0MmIxMDIxYTY0NDY1ZTM4NmFiNDNmNGFjY2Uz
YjBmODM2MWNlOTMuLjkzNzIyNDQzNmMyMzFmMDI3NzY2MGRiMzkwNzc3ZDU0ZTA0YjIzOGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKQEAgLTYyLDYgKzYyLDcgQEAg
c3RydWN0IFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOwogc3RydWN0IFdlYk1lZGlhUGxh
eWVyQWN0aW9uOwogc3RydWN0IFdlYlBsdWdpbkFjdGlvbjsKIHN0cnVjdCBXZWJQb2ludDsKK3N0
cnVjdCBXZWJSZW5kZXJpbmdTdGF0czsKIAogY2xhc3MgV2ViVmlldyA6IHB1YmxpYyBXZWJXaWRn
ZXQgewogcHVibGljOgpAQCAtNDUzLDYgKzQ1NCwxMCBAQCBwdWJsaWM6CiAgICAgLy8gYnkgdGhl
IGNvbXBvc2l0b3IpIGJ1dCBtdXN0IGJlIGNvbXBsZXRlZCBieSB0aGUgV2ViVmlldy4KICAgICB2
aXJ0dWFsIHZvaWQgdHJhbnNmZXJBY3RpdmVXaGVlbEZsaW5nQW5pbWF0aW9uKGNvbnN0IFdlYkFj
dGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJikgPSAwOwogCisgICAgLy8gRmlsbHMgaW4gYSBXZWJS
ZW5kZXJpbmdTdGF0cyBzdHJ1Y3QgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc3Rh
dGUgb2YgdGhlIGNvbXBvc2l0b3IuCisgICAgLy8gVGhpcyBjYWxsIGlzIHJlbGF0aXZlbHkgZXhw
ZW5zaXZlIGluIHRocmVhZGVkIG1vZGUgYXMgaXQgYmxvY2tzIG9uIHRoZSBjb21wb3NpdG9yIHRo
cmVhZC4KKyAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyaW5nU3RhdHMoV2ViUmVuZGVyaW5nU3RhdHMm
KSBjb25zdCB7IH0KKwogICAgIC8vIFZpc2liaWxpdHkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogICAgIC8vIFNldHMgdGhlIHZp
c2liaWxpdHkgb2YgdGhlIFdlYlZpZXcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkxheWVyVHJlZVZpZXcuY3BwCmluZGV4IDQ3Y2M4ODMxMGFlYjNkM2ZlOGZhOThjYTA1N2Iz
NzgxOGVjYzQyYjUuLjYzNTg3YTlhNjU1M2M3MjcyNGVkMTkyMTgxYTg4OTJhMzc2MmMwNTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCkBA
IC0yOSwxMCArMjksMTIgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaCIK
ICNpbmNsdWRlICJXZWJMYXllclRyZWVWaWV3SW1wbC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJU
cmVlSG9zdC5oIgorI2luY2x1ZGUgImNjL0NDUmVuZGVyaW5nU3RhdHMuaCIKICNpbmNsdWRlICJw
bGF0Zm9ybS9XZWJMYXllci5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlBvaW50LmgiCiAjaW5j
bHVkZSAicGxhdGZvcm0vV2ViUmVjdC5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlNpemUuaCIK
KyNpbmNsdWRlICJwdWJsaWMvV2ViUmVuZGVyaW5nU3RhdHMuaCIKIAogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKQEAgLTE3Niw2ICsxNzgsMTUgQEAgV2ViR3JhcGhpY3NDb250ZXh0M0QqIFdl
YkxheWVyVHJlZVZpZXc6OmNvbnRleHQoKQogICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGU6OmV4dHJhY3RXZWJHcmFwaGljc0NvbnRleHQzRChtX3ByaXZhdGUtPmxheWVyVHJlZUhv
c3QoKS0+Y29udGV4dCgpLT5jb250ZXh0M0QoKSk7CiB9CiAKK3ZvaWQgV2ViTGF5ZXJUcmVlVmll
dzo6cmVuZGVyaW5nU3RhdHMoV2ViUmVuZGVyaW5nU3RhdHMmIHN0YXRzKSBjb25zdAoreworICAg
IENDUmVuZGVyaW5nU3RhdHMgY2NTdGF0czsKKyAgICBtX3ByaXZhdGUtPmxheWVyVHJlZUhvc3Qo
KS0+cmVuZGVyaW5nU3RhdHMoY2NTdGF0cyk7CisKKyAgICBzdGF0cy5udW1BbmltYXRpb25GcmFt
ZXMgPSBjY1N0YXRzLm51bUFuaW1hdGlvbkZyYW1lczsKKyAgICBzdGF0cy5udW1GcmFtZXNTZW50
VG9TY3JlZW4gPSBjY1N0YXRzLm51bUZyYW1lc1NlbnRUb1NjcmVlbjsKK30KKwogdm9pZCBXZWJM
YXllclRyZWVWaWV3Ojpsb3NlQ29tcG9zaXRvckNvbnRleHQoaW50IG51bVRpbWVzKQogewogICAg
IG1fcHJpdmF0ZS0+bGF5ZXJUcmVlSG9zdCgpLT5sb3NlQ29udGV4dChudW1UaW1lcyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggNjdiN2MwNDFlNjI4
MzUyNmIwNzBlY2VhYTkxZDg0OTFiMjc5NGE3NS4uY2IxYWM3ZWQ0NzljNjEyOGIyYzYzMWZjM2Y1
NmYwM2VmYTg1MjgxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmNwcApAQCAtNzI4LDYgKzcyOCwxNCBAQCB2b2lkIFdlYlZpZXdJbXBsOjp0cmFuc2ZlckFjdGl2
ZVdoZWVsRmxpbmdBbmltYXRpb24oY29uc3QgV2ViQWN0aXZlV2hlZWxGbGluZ1BhcgogICAgIHNj
aGVkdWxlQW5pbWF0aW9uKCk7CiB9CiAKK3ZvaWQgV2ViVmlld0ltcGw6OnJlbmRlcmluZ1N0YXRz
KFdlYlJlbmRlcmluZ1N0YXRzJiBzdGF0cykgY29uc3QKK3sKKyAgICBpZiAoIWlzQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0FjdGl2ZSgpKQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICBpZiAoIW1fbGF5ZXJUcmVlVmlldy5pc051bGwoKSkKKyAgICAgICAgbV9sYXllclRyZWVWaWV3
LnJlbmRlcmluZ1N0YXRzKHN0YXRzKTsKK30KKwogdm9pZCBXZWJWaWV3SW1wbDo6c3RhcnRQYWdl
U2NhbGVBbmltYXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9sbCwgYm9vbCB1c2VBbmNob3IsIGZs
b2F0IG5ld1NjYWxlLCBkb3VibGUgZHVyYXRpb25TZWMpCiB7CiAgICAgaWYgKCFtX2xheWVyVHJl
ZVZpZXcuaXNOdWxsKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApp
bmRleCA0ZjVjMDQ4ZDk3NzQyYWQ1OWIxNWVjYjM0M2Q4NWM4ZDNhMDMxODZmLi5lMzVkZmU3ZWNh
OWM0ZTdmZTAzMDFhZTJkZGZmOTkxOGNkOTg1NTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmgKQEAgLTI5MSw2ICsyOTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUJhdHRlcnlTdGF0dXMoY29uc3QgV2ViQmF0dGVyeVN0YXR1cyYpOwogI2Vu
ZGlmCiAgICAgdmlydHVhbCB2b2lkIHRyYW5zZmVyQWN0aXZlV2hlZWxGbGluZ0FuaW1hdGlvbihj
b25zdCBXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyYpOworICAgIHZpcnR1YWwgdm9pZCBy
ZW5kZXJpbmdTdGF0cyhXZWJSZW5kZXJpbmdTdGF0cyYpIGNvbnN0OwogCiAgICAgLy8gV2ViTGF5
ZXJUcmVlVmlld0NsaWVudAogICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVnaW5GcmFtZSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148477</attachid>
            <date>2012-06-19 17:58:04 -0700</date>
            <delta_ts>2012-06-20 18:53:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88268-20120619175804.patch</filename>
            <type>text/plain</type>
            <size>25210</size>
            <attacher name="Dave Tu">dtu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNjc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBlN2NlOWY1NGU5OGQ0
NDljZmQzODhiOWZmZWQzZDc0NTljOGEyMTUzLi4xODkwMDg2ZTFiM2RiZWVkZGMwN2IxMWQwYjgz
NmY0NjYzYzc3NWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wNi0wNCAg
RGF2ZSBUdSAgPGR0dUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBFeHBvc2Ug
cmVuZGVyaW5nIHN0YXRpc3RpY3MgdG8gV2ViV2lkZ2V0LgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODgyNjgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgV2ViS2l0IHNpZGUgb2YgYSBiYXNpYyBmcmFt
ZXdvcmsgZm9yIGV4cG9zaW5nIHJlbmRlcmluZyBzdGF0aXN0aWNzCisgICAgICAgIHRvIENocm9t
aXVtJ3MgLS1lbmFibGUtYmVuY2htYXJraW5nIGV4dGVuc2lvbi4KKworICAgICAgICAqIGNocm9t
aXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Lmg6CisgICAgICAgIChXZWJSZW5kZXJpbmdTdGF0
aXN0aWNzKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJMYXllclRyZWVWaWV3KToK
KwogMjAxMi0wNi0xNCAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFtjaHJvbWl1bV0gVXNlIFdlYkltYWdlTGF5ZXIgaW4gR3JhcGhpY3NMYXllckNocm9t
aXVtIGZvciBpbWFnZSBsYXllcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjYWQzZDQ1YmZlZTU5NGFhMGEyODc2
YjBhMWRmODg0NmFlNzY5NTYzLi41OTY4M2FhODQ2YmRkM2FhMTYxOTY1YmJkMzFlOGE0ZWUyNWY3
YzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTItMDYtMDQgIERhdmUgVHUgIDxk
dHVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRXhwb3NlIHJlbmRlcmluZyBz
dGF0aXN0aWNzIHRvIFdlYldpZGdldC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTg4MjY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhlIFdlYktpdCBzaWRlIG9mIGEgYmFzaWMgZnJhbWV3b3JrIGZvciBl
eHBvc2luZyByZW5kZXJpbmcgc3RhdGlzdGljcworICAgICAgICB0byBDaHJvbWl1bSdzIC0tZW5h
YmxlLWJlbmNobWFya2luZyBleHRlbnNpb24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJUcmVlSG9zdDo6aW1wbEZyYW1lTnVtYmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1Byb3h5Lmg6CisgICAgICAgIChDQ1Byb3h5KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5Lmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjppbXBsRnJhbWVOdW1iZXIpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjppbXBsRnJhbWVO
dW1iZXJPbkltcGxUaHJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuaDoKKyAgICAgICAgKENDVGhyZWFkUHJveHkpOgorCiAyMDEyLTA2
LTE4ICBKb29uZSBIdXIgIDxqb29uZS5odXJAaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdIEZv
bnRjb25maWcgY2FuJ3QgYmUgbGlua2VkIHByb3Blcmx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CmluZGV4IDk5OTJlMjhlNzEzODkwOWUxMjUwZTBiMjYwNjBmZDI1MGFjYzg0NDUuLjg0ZjA2YWZl
NmUyNjBkOTgyNTZiMzA3ODk1N2JkNmE3NWZhOTg1ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDYtMDQgIERhdmUgVHUgIDxkdHVAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRXhwb3NlIHJlbmRlcmluZyBzdGF0aXN0aWNzIHRv
IFdlYldpZGdldC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg4MjY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhlIFdlYktpdCBzaWRlIG9mIGEgYmFzaWMgZnJhbWV3b3JrIGZvciBleHBvc2luZyByZW5k
ZXJpbmcgc3RhdGlzdGljcworICAgICAgICB0byBDaHJvbWl1bSdzIC0tZW5hYmxlLWJlbmNobWFy
a2luZyBleHRlbnNpb24uCisKKyAgICAgICAgKiBzcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXc6OnJlbmRlcmluZ1N0YXRpc3RpY3MpOgor
ICAgICAgICAoV2ViS2l0KToKKwogMjAxMi0wNi0xOCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gR2VzdHVyZVBpbmNoQmVnaW4gYW5kIGZyaWVu
ZHMgYXJlIGdlc3R1cmUgZXZlbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZv
cm0uZ3lwaSBiL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCmluZGV4IGQ3OWY4NTNiMzE5
ZmYxMGZmNDhhMWUwMGNhYmNlZTc3ZWRkNjFkYzguLjc1YWQ5NzJmYmY4Mjc4OTU5ODAxNzQyZWE0
N2U5ZTNiMDc4MWEzMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBp
CisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCkBAIC05NCw2ICs5NCw3IEBACiAg
ICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlByaXZhdGVQdHIuaCcsCiAgICAgICAgICAg
ICAnY2hyb21pdW0vcHVibGljL1dlYlJlY3QuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVi
bGljL1dlYlJlZmVycmVyUG9saWN5LmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9X
ZWJSZW5kZXJpbmdTdGF0cy5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViU2Vz
c2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvci5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJs
aWMvV2ViU2l6ZS5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViU29ja2V0U3Ry
ZWFtRXJyb3IuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYkxheWVyVHJlZVZpZXcuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2Vi
TGF5ZXJUcmVlVmlldy5oCmluZGV4IGQ1ZDk5YTI4NTU5MjMxMDlhZWYxNGM1YmU1YTRhZjVjMjRi
YWU1OWYuLmY2NzkzMGRkMTA1NjhkMTExYzQ2ZTlmM2VjOWQyN2UyYzhmYjA4OTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oCisr
KyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oCkBA
IC00NCw2ICs0NCw3IEBAIGNsYXNzIFdlYkxheWVyVHJlZVZpZXdDbGllbnQ7CiBjbGFzcyBXZWJM
YXllclRyZWVWaWV3SW1wbDsKIHN0cnVjdCBXZWJQb2ludDsKIHN0cnVjdCBXZWJSZWN0Oworc3Ry
dWN0IFdlYlJlbmRlcmluZ1N0YXRzOwogCiBjbGFzcyBXZWJMYXllclRyZWVWaWV3IDogcHVibGlj
IFdlYk5vbkNvcHlhYmxlIHsKIHB1YmxpYzoKQEAgLTE3Myw2ICsxNzQsMTAgQEAgcHVibGljOgog
CiAgICAgLy8gRGVidWdnaW5nIC8gZGFuZ2Vyb3VzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogCisgICAgLy8gRmlsbHMgaW4gYSBXZWJSZW5kZXJpbmdTdGF0
cyBzdHJ1Y3QgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc3RhdGUgb2YgdGhlIGNv
bXBvc2l0b3IuCisgICAgLy8gVGhpcyBjYWxsIGlzIHJlbGF0aXZlbHkgZXhwZW5zaXZlIGluIHRo
cmVhZGVkIG1vZGUgYXMgaXQgYmxvY2tzIG9uIHRoZSBjb21wb3NpdG9yIHRocmVhZC4KKyAgICBX
RUJLSVRfRVhQT1JUIHZvaWQgcmVuZGVyaW5nU3RhdHMoV2ViUmVuZGVyaW5nU3RhdHMmKSBjb25z
dDsKKwogICAgIC8vIFNpbXVsYXRlcyBhIGxvc3QgY29udGV4dC4gRm9yIHRlc3Rpbmcgb25seS4K
ICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgbG9zZUNvbXBvc2l0b3JDb250ZXh0KGludCBudW1UaW1l
cyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUmVu
ZGVyaW5nU3RhdHMuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUmVuZGVy
aW5nU3RhdHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMTc2OTg1NWIwMDMyNThlZDA1MGE1ZTEwMDkxN2E0NGU1
YzIxYmM4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJSZW5kZXJpbmdTdGF0cy5oCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdl
YlJlbmRlcmluZ1N0YXRzX2gKKyNkZWZpbmUgV2ViUmVuZGVyaW5nU3RhdHNfaAorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworc3RydWN0IFdlYlJlbmRlcmluZ1N0YXRzIHsKKyAgICBpbnQgbnVtQW5p
bWF0aW9uRnJhbWVzOworICAgIGludCBudW1GcmFtZXNTZW50VG9TY3JlZW47CisKKyAgICBXZWJS
ZW5kZXJpbmdTdGF0cygpCisgICAgICAgIDogbnVtQW5pbWF0aW9uRnJhbWVzKDApCisgICAgICAg
ICwgbnVtRnJhbWVzU2VudFRvU2NyZWVuKDApCisgICAgeworICAgIH0KK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViUmVuZGVyaW5nU3RhdHNfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCmluZGV4IDBjMmU4ZTNlMTA5NmQ2NzY5MzYwNjhhYzdmMDFhNmI3M2VjNjkwOGEuLjY5YzU1
Y2QzNGQyYTc5MmI0YTI0NDViZDZmZDgyZTM1M2U0ZmJjYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAg
LTM3NDAsNiArMzc0MCw3IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NQcm94eS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1F1YWRDdWxsZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJpbmdTdGF0cy5oJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuaCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuY3Bw
JywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IGYxMjBkOGM3NzAxNTc3OTUw
YmY5MWM1YjAyMDA1Mzc1ZWI3MzM4YjkuLmE2MmQ3MjlkMjE4NWJjOWI0YzlmYzQ1YzUwY2E2MWY4
NjM2NGY1MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApAQCAtMzcsNiArMzcs
NyBAQAogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5oIgogI2luY2x1ZGUgImNj
L0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIKICNpbmNsdWRlICJjYy9DQ09jY2x1c2lvblRyYWNrZXIu
aCIKKyNpbmNsdWRlICJjYy9DQ1JlbmRlcmluZ1N0YXRzLmgiCiAjaW5jbHVkZSAiY2MvQ0NTZXR0
aW5ncy5oIgogI2luY2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIKICNpbmNsdWRlICJj
Yy9DQ1RocmVhZC5oIgpAQCAtNzEsNyArNzIsNyBAQCBDQ0xheWVyVHJlZUhvc3Q6OkNDTGF5ZXJU
cmVlSG9zdChDQ0xheWVyVHJlZUhvc3RDbGllbnQqIGNsaWVudCwgY29uc3QgQ0NMYXllclRyZQog
ICAgICwgbV9hbmltYXRpbmcoZmFsc2UpCiAgICAgLCBtX25lZWRzQW5pbWF0ZUxheWVycyhmYWxz
ZSkKICAgICAsIG1fY2xpZW50KGNsaWVudCkKLSAgICAsIG1fZnJhbWVOdW1iZXIoMCkKKyAgICAs
IG1fYW5pbWF0aW9uRnJhbWVOdW1iZXIoMCkKICAgICAsIG1fZnJhbWVJc0ZvckRpc3BsYXkoZmFs
c2UpCiAgICAgLCBtX2xheWVyUmVuZGVyZXJJbml0aWFsaXplZChmYWxzZSkKICAgICAsIG1fY29u
dGV4dExvc3QoZmFsc2UpCkBAIC0yMTgsNiArMjE5LDggQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6
OnVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIG1vbm90b25pY0ZyYW1lQmVnaW5UaW1lKQogICAgIG1f
Y2xpZW50LT51cGRhdGVBbmltYXRpb25zKG1vbm90b25pY0ZyYW1lQmVnaW5UaW1lKTsKICAgICBh
bmltYXRlTGF5ZXJzKG1vbm90b25pY0ZyYW1lQmVnaW5UaW1lKTsKICAgICBtX2FuaW1hdGluZyA9
IGZhbHNlOworCisgICAgbV9hbmltYXRpb25GcmFtZU51bWJlcisrOwogfQogCiB2b2lkIENDTGF5
ZXJUcmVlSG9zdDo6bGF5b3V0KCkKQEAgLTI1MCw3ICsyNTMsNyBAQCB2b2lkIENDTGF5ZXJUcmVl
SG9zdDo6ZmluaXNoQ29tbWl0T25JbXBsVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGhvc3RJ
bXBsKQogICAgIGlmIChyb290TGF5ZXIoKSAmJiBtX25lZWRzQW5pbWF0ZUxheWVycykKICAgICAg
ICAgaG9zdEltcGwtPnNldE5lZWRzQW5pbWF0ZUxheWVycygpOwogCi0gICAgaG9zdEltcGwtPnNl
dFNvdXJjZUZyYW1lTnVtYmVyKGZyYW1lTnVtYmVyKCkpOworICAgIGhvc3RJbXBsLT5zZXRTb3Vy
Y2VGcmFtZU51bWJlcihhbmltYXRpb25GcmFtZU51bWJlcigpKTsKICAgICBob3N0SW1wbC0+c2V0
Vmlld3BvcnRTaXplKHZpZXdwb3J0U2l6ZSgpKTsKICAgICBob3N0SW1wbC0+c2V0RGV2aWNlU2Nh
bGVGYWN0b3IoZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAgICAgaG9zdEltcGwtPnNldFBhZ2VTY2Fs
ZUZhY3RvckFuZExpbWl0cyhtX3BhZ2VTY2FsZUZhY3RvciwgbV9taW5QYWdlU2NhbGVGYWN0b3Is
IG1fbWF4UGFnZVNjYWxlRmFjdG9yKTsKQEAgLTI1OCw4ICsyNjEsNiBAQCB2b2lkIENDTGF5ZXJU
cmVlSG9zdDo6ZmluaXNoQ29tbWl0T25JbXBsVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGhv
c3RJbXBsKQogICAgIGhvc3RJbXBsLT5zZXRIYXNUcmFuc3BhcmVudEJhY2tncm91bmQobV9oYXNU
cmFuc3BhcmVudEJhY2tncm91bmQpOwogICAgIGhvc3RJbXBsLT5zZXRWaXNpYmxlKG1fdmlzaWJs
ZSk7CiAgICAgaG9zdEltcGwtPnNldFNvdXJjZUZyYW1lQ2FuQmVEcmF3bihtX2ZyYW1lSXNGb3JE
aXNwbGF5KTsKLQotICAgIG1fZnJhbWVOdW1iZXIrKzsKIH0KIAogdm9pZCBDQ0xheWVyVHJlZUhv
c3Q6OmNvbW1pdENvbXBsZXRlKCkKQEAgLTMyMSw2ICszMjIsMTIgQEAgdm9pZCBDQ0xheWVyVHJl
ZUhvc3Q6OmZpbmlzaEFsbFJlbmRlcmluZygpCiAgICAgbV9wcm94eS0+ZmluaXNoQWxsUmVuZGVy
aW5nKCk7CiB9CiAKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpyZW5kZXJpbmdTdGF0cyhDQ1JlbmRl
cmluZ1N0YXRzJiBzdGF0cykgY29uc3QKK3sKKyAgICBtX3Byb3h5LT5yZW5kZXJpbmdTdGF0cyhz
dGF0cyk7CisgICAgc3RhdHMubnVtQW5pbWF0aW9uRnJhbWVzID0gYW5pbWF0aW9uRnJhbWVOdW1i
ZXIoKTsKK30KKwogY29uc3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgQ0NMYXllclRyZWVI
b3N0OjpsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9w
cm94eS0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3QuaAppbmRleCBlMTIwOWFmMzU1OWM5N2ViYTQ4MDE1MzY0YTlkYmM4MTQ0ZWY5MzFjLi4wYjk5
OGUxNjk0ZGJlM2I3NWQxNmM0MjdhM2IyNzhhNWYzNDIwMzY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3QuaApAQCAtNDUsNiArNDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IENDTGF5ZXJUcmVlSG9zdEltcGw7CiBjbGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50Owor
Y2xhc3MgQ0NSZW5kZXJpbmdTdGF0czsKIGNsYXNzIENDVGV4dHVyZVVwZGF0ZXI7CiBjbGFzcyBH
cmFwaGljc0NvbnRleHQzRDsKIGNsYXNzIFJlZ2lvbjsKQEAgLTE4OSw3ICsxOTAsOSBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIGZpbmlzaEFsbFJlbmRlcmluZygpOwogCi0gICAgaW50IGZyYW1lTnVt
YmVyKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZU51bWJlcjsgfQorICAgIGludCBhbmltYXRpb25G
cmFtZU51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fYW5pbWF0aW9uRnJhbWVOdW1iZXI7IH0KKwor
ICAgIHZvaWQgcmVuZGVyaW5nU3RhdHMoQ0NSZW5kZXJpbmdTdGF0cyYpIGNvbnN0OwogCiAgICAg
Y29uc3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgbGF5ZXJSZW5kZXJlckNhcGFiaWxpdGll
cygpIGNvbnN0OwogCkBAIC0yNzcsNyArMjgwLDcgQEAgcHJpdmF0ZToKIAogICAgIENDTGF5ZXJU
cmVlSG9zdENsaWVudCogbV9jbGllbnQ7CiAKLSAgICBpbnQgbV9mcmFtZU51bWJlcjsKKyAgICBp
bnQgbV9hbmltYXRpb25GcmFtZU51bWJlcjsKICAgICBib29sIG1fZnJhbWVJc0ZvckRpc3BsYXk7
CiAKICAgICBPd25QdHI8Q0NQcm94eT4gbV9wcm94eTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0SW1wbC5jcHAKaW5kZXggNDk0ZjkwODViZjYwNjFmMWE5NzI1YTNiN2E0ODY3MjMxNTVh
NWJiNS4uYzdiMGU0NTRjOTQxODZiNDRjYjk5YmYyOTgxYzk4MmRiODA4ZDlhMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCBQYXNz
T3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZShj
b25zdCBDQ0xheWVyVHJlZVNldAogQ0NMYXllclRyZWVIb3N0SW1wbDo6Q0NMYXllclRyZWVIb3N0
SW1wbChjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncywgQ0NMYXllclRyZWVIb3N0
SW1wbENsaWVudCogY2xpZW50KQogICAgIDogbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9zb3Vy
Y2VGcmFtZU51bWJlcigtMSkKLSAgICAsIG1fZnJhbWVOdW1iZXIoMCkKKyAgICAsIG1fc291cmNl
QW5pbWF0aW9uRnJhbWVOdW1iZXIoMCkKICAgICAsIG1fcm9vdFNjcm9sbExheWVySW1wbCgwKQog
ICAgICwgbV9jdXJyZW50bHlTY3JvbGxpbmdMYXllckltcGwoMCkKICAgICAsIG1fc2Nyb2xsaW5n
TGF5ZXJJZEZyb21QcmV2aW91c1RyZWUoLTEpCkBAIC01MDYsNyArNTA2LDcgQEAgdm9pZCBDQ0xh
eWVyVHJlZUhvc3RJbXBsOjpkcmF3TGF5ZXJzKGNvbnN0IEZyYW1lRGF0YSYgZnJhbWUpCiAKICAg
ICBtX2xheWVyUmVuZGVyZXItPmZpbmlzaERyYXdpbmdGcmFtZSgpOwogCi0gICAgKyttX2ZyYW1l
TnVtYmVyOworICAgICsrbV9zb3VyY2VBbmltYXRpb25GcmFtZU51bWJlcjsKIAogICAgIC8vIFRo
ZSBuZXh0IGZyYW1lIHNob3VsZCBzdGFydCBieSBhc3N1bWluZyBub3RoaW5nIGhhcyBjaGFuZ2Vk
LCBhbmQgY2hhbmdlcyBhcmUgbm90ZWQgYXMgdGhleSBvY2N1ci4KICAgICBtX3Jvb3RMYXllcklt
cGwtPnJlc2V0QWxsQ2hhbmdlVHJhY2tpbmdGb3JTdWJ0cmVlKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3RJbXBsLmgKaW5kZXggMmU3YWJhNGVkN2JiZGE2MGI1Mzk2MGIwMmFkOWY4NjIz
ZDFiMjg3ZC4uMTUwZjdiMmJlNWZiYzc3YzQyMDJmNDE4N2JjZWNhZWMyZWRiZWNjYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaApAQCAtMTIxLDcgKzEyMSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldEZvbnRBdGxhcyhQYXNzT3duUHRyPENDRm9udEF0bGFzPik7CiAKICAg
ICB2b2lkIGZpbmlzaEFsbFJlbmRlcmluZygpOwotICAgIGludCBmcmFtZU51bWJlcigpIGNvbnN0
IHsgcmV0dXJuIG1fZnJhbWVOdW1iZXI7IH0KKyAgICBpbnQgc291cmNlQW5pbWF0aW9uRnJhbWVO
dW1iZXIoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUFuaW1hdGlvbkZyYW1lTnVtYmVyOyB9CiAK
ICAgICBib29sIGluaXRpYWxpemVMYXllclJlbmRlcmVyKFBhc3NSZWZQdHI8Q0NHcmFwaGljc0Nv
bnRleHQ+LCBUZXh0dXJlVXBsb2FkZXJPcHRpb24pOwogICAgIGJvb2wgaXNDb250ZXh0TG9zdCgp
OwpAQCAtMTQ2LDcgKzE0Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFZpc2libGUoYm9vbCk7
CiAKICAgICBpbnQgc291cmNlRnJhbWVOdW1iZXIoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUZy
YW1lTnVtYmVyOyB9Ci0gICAgdm9pZCBzZXRTb3VyY2VGcmFtZU51bWJlcihpbnQgZnJhbWVOdW1i
ZXIpIHsgbV9zb3VyY2VGcmFtZU51bWJlciA9IGZyYW1lTnVtYmVyOyB9CisgICAgdm9pZCBzZXRT
b3VyY2VGcmFtZU51bWJlcihpbnQgc291cmNlQW5pbWF0aW9uRnJhbWVOdW1iZXIpIHsgbV9zb3Vy
Y2VGcmFtZU51bWJlciA9IHNvdXJjZUFuaW1hdGlvbkZyYW1lTnVtYmVyOyB9CiAKICAgICBib29s
IHNvdXJjZUZyYW1lQ2FuQmVEcmF3bigpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlRnJhbWVDYW5C
ZURyYXduOyB9CiAgICAgdm9pZCBzZXRTb3VyY2VGcmFtZUNhbkJlRHJhd24oYm9vbCBzb3VyY2VG
cmFtZUNhbkJlRHJhd24pIHsgbV9zb3VyY2VGcmFtZUNhbkJlRHJhd24gPSBzb3VyY2VGcmFtZUNh
bkJlRHJhd247IH0KQEAgLTE5OCw3ICsxOTgsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBDQ0xheWVy
VHJlZUhvc3RJbXBsQ2xpZW50KiBtX2NsaWVudDsKICAgICBpbnQgbV9zb3VyY2VGcmFtZU51bWJl
cjsKLSAgICBpbnQgbV9mcmFtZU51bWJlcjsKKyAgICBpbnQgbV9zb3VyY2VBbmltYXRpb25GcmFt
ZU51bWJlcjsKIAogcHJpdmF0ZToKICAgICB2b2lkIGNvbXB1dGVEb3VibGVUYXBab29tRGVsdGFz
KENDU2Nyb2xsQW5kU2NhbGVTZXQqIHNjcm9sbEluZm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCmluZGV4IGZiMmNi
YmFlOTZmMDczMzAwNzVjMjUzMzVkYmEwN2U1OWE1ZDJlMmYuLjgwZDQ3YjZhNTUzYzExMmFiMWM4
YWRhMTU3ZTA2NWEwNTFjOTk2YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKQEAgLTM0LDYgKzM0LDcgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0NGb250QXRsYXM7CitjbGFzcyBDQ1JlbmRlcmlu
Z1N0YXRzOwogY2xhc3MgQ0NUaHJlYWQ7CiBjbGFzcyBDQ0dyYXBoaWNzQ29udGV4dDsKIHN0cnVj
dCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzOwpAQCAtNzksNiArODAsOCBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIGludCBjb21wb3NpdG9ySWRlbnRpZmllcigpIGNvbnN0ID0gMDsKIAorICAg
IHZpcnR1YWwgdm9pZCByZW5kZXJpbmdTdGF0cyhDQ1JlbmRlcmluZ1N0YXRzJikgPSAwOworCiAg
ICAgdmlydHVhbCBjb25zdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBsYXllclJlbmRlcmVy
Q2FwYWJpbGl0aWVzKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzQW5p
bWF0ZSgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUmVuZGVyaW5nU3RhdHMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyaW5nU3RhdHMuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNjlj
OGUwMjY4NGVjMmU1MDAzZjMyMDQ3MGQwOWNjZTkwZWYxMTYyCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJpbmdT
dGF0cy5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ0NSZW5kZXJp
bmdTdGF0c19oCisjZGVmaW5lIENDUmVuZGVyaW5nU3RhdHNfaAorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK3N0cnVjdCBDQ1JlbmRlcmluZ1N0YXRzIHsKKyAgICBpbnQgbnVtQW5pbWF0aW9uRnJh
bWVzOworICAgIGludCBudW1GcmFtZXNTZW50VG9TY3JlZW47CisKKyAgICBDQ1JlbmRlcmluZ1N0
YXRzKCkKKyAgICAgICAgOiBudW1BbmltYXRpb25GcmFtZXMoMCkKKyAgICAgICAgLCBudW1GcmFt
ZXNTZW50VG9TY3JlZW4oMCkKKyAgICB7CisgICAgfQorfTsKKworfQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2lu
Z2xlVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKaW5kZXggOGYzMDUyZDkzMTZjNDdhODhj
ZWIxZTBiOTZmM2MwMTgxOTQ3ZmExZS4uMTgyOWFjMjY0YzNkMTUxZjcyZDlhOTEzMjIzZDMzNDA0
NTM1NjcwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKQEAgLTMw
LDYgKzMwLDcgQEAKICNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCiAjaW5jbHVkZSAiY2MvQ0NGb250
QXRsYXMuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKKyNpbmNsdWRlICJjYy9D
Q1JlbmRlcmluZ1N0YXRzLmgiCiAjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogI2lu
Y2x1ZGUgImNjL0NDVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KQEAgLTE5
Nyw2ICsxOTgsMTEgQEAgYm9vbCBDQ1NpbmdsZVRocmVhZFByb3h5OjpyZWNyZWF0ZUNvbnRleHQo
KQogICAgIHJldHVybiBpbml0aWFsaXplZDsKIH0KIAordm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5
OjpyZW5kZXJpbmdTdGF0cyhDQ1JlbmRlcmluZ1N0YXRzJiBzdGF0cykKK3sKKyAgICBzdGF0cy5u
dW1GcmFtZXNTZW50VG9TY3JlZW4gPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5zb3VyY2VBbmltYXRp
b25GcmFtZU51bWJlcigpOworfQorCiBjb25zdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBD
Q1NpbmdsZVRocmVhZFByb3h5OjpsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkgY29uc3QKIHsK
ICAgICBBU1NFUlQobV9sYXllclJlbmRlcmVySW5pdGlhbGl6ZWQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQ
cm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
aW5nbGVUaHJlYWRQcm94eS5oCmluZGV4IGQzMjUzZTI1YzdmMjhmMGNhYzk0ZTk0Njk4ZGFhNjZh
OTA5NjkxYjUuLjE3NjNjOGU3NjllM2I5MjA2Y2ZmMjBiZGFhZGU4NWM0MmI3YTU2ZWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2lu
Z2xlVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKQEAgLTUzLDYgKzUzLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgYm9vbCBpbml0aWFsaXplTGF5ZXJSZW5kZXJlcigpIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgYm9vbCByZWNyZWF0ZUNvbnRleHQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IGludCBjb21wb3NpdG9ySWRlbnRpZmllcigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fY29t
cG9zaXRvcklkZW50aWZpZXI7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyaW5nU3RhdHMoQ0NS
ZW5kZXJpbmdTdGF0cyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgY29uc3QgTGF5ZXJSZW5kZXJl
ckNhcGFiaWxpdGllcyYgbGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpIGNvbnN0IE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCBsb3NlQ29udGV4dCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBzZXROZWVkc0FuaW1hdGUoKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5j
cHAKaW5kZXggZTk1NTU1NTEwNTY3ZTI5N2YzOWEwZTNjMTk2ZWZhOGYyODJhYzlhNC4uMTlmODEz
N2RiMmU2MWIwMzU3Njg0YzA1Mzk3NmQ0NDkzZjUyZjYzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQ
cm94eS5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJjYy9DQ0ZyYW1lUmF0ZUNvbnRy
b2xsZXIuaCIKICNpbmNsdWRlICJjYy9DQ0lucHV0SGFuZGxlci5oIgogI2luY2x1ZGUgImNjL0ND
TGF5ZXJUcmVlSG9zdC5oIgorI2luY2x1ZGUgImNjL0NDUmVuZGVyaW5nU3RhdHMuaCIKICNpbmNs
dWRlICJjYy9DQ1NjaGVkdWxlci5oIgogI2luY2x1ZGUgImNjL0NDU2NvcGVkVGhyZWFkUHJveHku
aCIKICNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCkBAIC0yNjYsNiArMjY3LDE3IEBA
IGludCBDQ1RocmVhZFByb3h5Ojpjb21wb3NpdG9ySWRlbnRpZmllcigpIGNvbnN0CiAgICAgcmV0
dXJuIG1fY29tcG9zaXRvcklkZW50aWZpZXI7CiB9CiAKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6cmVu
ZGVyaW5nU3RhdHMoQ0NSZW5kZXJpbmdTdGF0cyYgc3RhdHMpCit7CisgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKworICAgIENDQ29tcGxldGlvbkV2ZW50IGNvbXBsZXRpb247CisgICAgQ0NQ
cm94eTo6aW1wbFRocmVhZCgpLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkND
VGhyZWFkUHJveHk6OnJlbmRlcmluZ1N0YXRzT25JbXBsVGhyZWFkLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRB
Y2Nlc3MoJmNvbXBsZXRpb24pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoJnN0YXRzKSkpOworICAg
IGNvbXBsZXRpb24ud2FpdCgpOworfQorCiBjb25zdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVz
JiBDQ1RocmVhZFByb3h5OjpsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkgY29uc3QKIHsKICAg
ICBBU1NFUlQobV9sYXllclJlbmRlcmVySW5pdGlhbGl6ZWQpOwpAQCAtODc3LDQgKzg4OSwxMSBA
QCB2b2lkIENDVGhyZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4dE9uSW1wbFRocmVhZChDQ0NvbXBs
ZXRpb25FdmVudCogY29tcGxldGlvbiwgQwogICAgIGNvbXBsZXRpb24tPnNpZ25hbCgpOwogfQog
Cit2b2lkIENDVGhyZWFkUHJveHk6OnJlbmRlcmluZ1N0YXRzT25JbXBsVGhyZWFkKENDQ29tcGxl
dGlvbkV2ZW50KiBjb21wbGV0aW9uLCBDQ1JlbmRlcmluZ1N0YXRzKiBzdGF0cykKK3sKKyAgICBB
U1NFUlQoaXNJbXBsVGhyZWFkKCkpOworICAgIHN0YXRzLT5udW1GcmFtZXNTZW50VG9TY3JlZW4g
PSBtX2xheWVyVHJlZUhvc3RJbXBsLT5zb3VyY2VBbmltYXRpb25GcmFtZU51bWJlcigpOworICAg
IGNvbXBsZXRpb24tPnNpZ25hbCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Ro
cmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RocmVhZFByb3h5LmgKaW5kZXggMmMyYmViMDEyNTIyYjZhNWZjZTUyMWVlNzdhODRiNTY2
MDNhYmI3OC4uNjI2YWFiZjEzOGQwMmJmNzFhOTU0NzgyZGU1YTg3OWQ2MDQ3ZDMxOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJl
YWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuaApAQCAtNjEsNiArNjEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBib29sIGluaXRpYWxpemVMYXllclJlbmRlcmVyKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBi
b29sIHJlY3JlYXRlQ29udGV4dCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgaW50IGNvbXBvc2l0
b3JJZGVudGlmaWVyKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlbmRlcmlu
Z1N0YXRzKENDUmVuZGVyaW5nU3RhdHMmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGNvbnN0IExh
eWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMmIGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKSBjb25z
dCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgbG9zZUNvbnRleHQoKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNBbmltYXRlKCkgT1ZFUlJJREU7CkBAIC0xNDIsNiArMTQz
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEZ1bGxSb290TGF5ZXJEYW1hZ2VPbkltcGxUaHJl
YWQoKTsKICAgICB2b2lkIGFjcXVpcmVMYXllclRleHR1cmVzRm9yTWFpblRocmVhZE9uSW1wbFRo
cmVhZChDQ0NvbXBsZXRpb25FdmVudCopOwogICAgIHZvaWQgcmVjcmVhdGVDb250ZXh0T25JbXBs
VGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiwgQ0NHcmFwaGljc0NvbnRleHQqLCBib29sKiByZWNy
ZWF0ZVN1Y2NlZWRlZCwgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyopOworICAgIHZvaWQgcmVu
ZGVyaW5nU3RhdHNPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqLCBDQ1JlbmRlcmluZ1N0
YXRzKik7CiAgICAgQ0NTY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcFJlc3VsdCBzY2hlZHVsZWRB
Y3Rpb25EcmF3QW5kU3dhcEludGVybmFsKGJvb2wgZm9yY2VkRHJhdyk7CiAgICAgdm9pZCBzZXRG
b250QXRsYXNPbkltcGxUaHJlYWQoUGFzc093blB0cjxDQ0ZvbnRBdGxhcz4pOwogICAgIHZvaWQg
Zm9yY2VTZXJpYWxpemVPblN3YXBCdWZmZXJzT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50
Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Lmgg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKaW5kZXggNTQyYjEwMjFh
NjQ0NjVlMzg2YWI0M2Y0YWNjZTNiMGY4MzYxY2U5My4uOTM3MjI0NDM2YzIzMWYwMjc3NjYwZGIz
OTA3NzdkNTRlMDRiMjM4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcu
aApAQCAtNjIsNiArNjIsNyBAQCBzdHJ1Y3QgV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM7
CiBzdHJ1Y3QgV2ViTWVkaWFQbGF5ZXJBY3Rpb247CiBzdHJ1Y3QgV2ViUGx1Z2luQWN0aW9uOwog
c3RydWN0IFdlYlBvaW50Oworc3RydWN0IFdlYlJlbmRlcmluZ1N0YXRzOwogCiBjbGFzcyBXZWJW
aWV3IDogcHVibGljIFdlYldpZGdldCB7CiBwdWJsaWM6CkBAIC00NTMsNiArNDU0LDEwIEBAIHB1
YmxpYzoKICAgICAvLyBieSB0aGUgY29tcG9zaXRvcikgYnV0IG11c3QgYmUgY29tcGxldGVkIGJ5
IHRoZSBXZWJWaWV3LgogICAgIHZpcnR1YWwgdm9pZCB0cmFuc2ZlckFjdGl2ZVdoZWVsRmxpbmdB
bmltYXRpb24oY29uc3QgV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMmKSA9IDA7CiAKKyAg
ICAvLyBGaWxscyBpbiBhIFdlYlJlbmRlcmluZ1N0YXRzIHN0cnVjdCBjb250YWluaW5nIGluZm9y
bWF0aW9uIGFib3V0IHRoZSBzdGF0ZSBvZiB0aGUgY29tcG9zaXRvci4KKyAgICAvLyBUaGlzIGNh
bGwgaXMgcmVsYXRpdmVseSBleHBlbnNpdmUgaW4gdGhyZWFkZWQgbW9kZSBhcyBpdCBibG9ja3Mg
b24gdGhlIGNvbXBvc2l0b3IgdGhyZWFkLgorICAgIHZpcnR1YWwgdm9pZCByZW5kZXJpbmdTdGF0
cyhXZWJSZW5kZXJpbmdTdGF0cyYpIGNvbnN0IHsgfQorCiAgICAgLy8gVmlzaWJpbGl0eSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
CiAgICAgLy8gU2V0cyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgV2ViVmlldy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHAKaW5kZXggNDdjYzg4MzEw
YWViM2QzZmU4ZmE5OGNhMDU3YjM3ODE4ZWNjNDJiNS4uNjM1ODdhOWE2NTUzYzcyNzI0ZWQxOTIx
ODFhODg5MmEzNzYyYzA1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViTGF5ZXJUcmVlVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
TGF5ZXJUcmVlVmlldy5jcHAKQEAgLTI5LDEwICsyOSwxMiBAQAogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYkxheWVyVHJlZVZpZXdJbXBsLmgiCiAj
aW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCisjaW5jbHVkZSAiY2MvQ0NSZW5kZXJpbmdT
dGF0cy5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkxheWVyLmgiCiAjaW5jbHVkZSAicGxhdGZv
cm0vV2ViUG9pbnQuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJSZWN0LmgiCiAjaW5jbHVkZSAi
cGxhdGZvcm0vV2ViU2l6ZS5oIgorI2luY2x1ZGUgInB1YmxpYy9XZWJSZW5kZXJpbmdTdGF0cy5o
IgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMTc2LDYgKzE3OCwxNSBAQCBXZWJH
cmFwaGljc0NvbnRleHQzRCogV2ViTGF5ZXJUcmVlVmlldzo6Y29udGV4dCgpCiAgICAgcmV0dXJu
IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZXh0cmFjdFdlYkdyYXBoaWNzQ29udGV4dDNEKG1f
cHJpdmF0ZS0+bGF5ZXJUcmVlSG9zdCgpLT5jb250ZXh0KCktPmNvbnRleHQzRCgpKTsKIH0KIAor
dm9pZCBXZWJMYXllclRyZWVWaWV3OjpyZW5kZXJpbmdTdGF0cyhXZWJSZW5kZXJpbmdTdGF0cyYg
c3RhdHMpIGNvbnN0Cit7CisgICAgQ0NSZW5kZXJpbmdTdGF0cyBjY1N0YXRzOworICAgIG1fcHJp
dmF0ZS0+bGF5ZXJUcmVlSG9zdCgpLT5yZW5kZXJpbmdTdGF0cyhjY1N0YXRzKTsKKworICAgIHN0
YXRzLm51bUFuaW1hdGlvbkZyYW1lcyA9IGNjU3RhdHMubnVtQW5pbWF0aW9uRnJhbWVzOworICAg
IHN0YXRzLm51bUZyYW1lc1NlbnRUb1NjcmVlbiA9IGNjU3RhdHMubnVtRnJhbWVzU2VudFRvU2Ny
ZWVuOworfQorCiB2b2lkIFdlYkxheWVyVHJlZVZpZXc6Omxvc2VDb21wb3NpdG9yQ29udGV4dChp
bnQgbnVtVGltZXMpCiB7CiAgICAgbV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPmxvc2VDb250
ZXh0KG51bVRpbWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNw
cAppbmRleCA2N2I3YzA0MWU2MjgzNTI2YjA3MGVjZWFhOTFkODQ5MWIyNzk0YTc1Li5jYjFhYzdl
ZDQ3OWM2MTI4YjJjNjMxZmMzZjU2ZjAzZWZhODUyODE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC03MjgsNiArNzI4LDE0IEBAIHZvaWQgV2ViVmll
d0ltcGw6OnRyYW5zZmVyQWN0aXZlV2hlZWxGbGluZ0FuaW1hdGlvbihjb25zdCBXZWJBY3RpdmVX
aGVlbEZsaW5nUGFyCiAgICAgc2NoZWR1bGVBbmltYXRpb24oKTsKIH0KIAordm9pZCBXZWJWaWV3
SW1wbDo6cmVuZGVyaW5nU3RhdHMoV2ViUmVuZGVyaW5nU3RhdHMmIHN0YXRzKSBjb25zdAorewor
ICAgIGlmICghaXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKCkpCisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIGlmICghbV9sYXllclRyZWVWaWV3LmlzTnVsbCgpKQorICAg
ICAgICBtX2xheWVyVHJlZVZpZXcucmVuZGVyaW5nU3RhdHMoc3RhdHMpOworfQorCiB2b2lkIFdl
YlZpZXdJbXBsOjpzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBJbnRQb2ludCYgc2Nyb2xs
LCBib29sIHVzZUFuY2hvciwgZmxvYXQgbmV3U2NhbGUsIGRvdWJsZSBkdXJhdGlvblNlYykKIHsK
ICAgICBpZiAoIW1fbGF5ZXJUcmVlVmlldy5pc051bGwoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IDRmNWMwNDhkOTc3NDJhZDU5YjE1ZWNiMzQzZDg1Yzhk
M2EwMzE4NmYuLmUzNWRmZTdlY2E5YzRlN2ZlMDMwMWFlMmRkZmY5OTE4Y2Q5ODU1NmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAtMjkxLDYgKzI5MSw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQmF0dGVyeVN0YXR1cyhjb25zdCBXZWJC
YXR0ZXJ5U3RhdHVzJik7CiAjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmZXJBY3RpdmVX
aGVlbEZsaW5nQW5pbWF0aW9uKGNvbnN0IFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJik7
CisgICAgdmlydHVhbCB2b2lkIHJlbmRlcmluZ1N0YXRzKFdlYlJlbmRlcmluZ1N0YXRzJikgY29u
c3Q7CiAKICAgICAvLyBXZWJMYXllclRyZWVWaWV3Q2xpZW50CiAgICAgdmlydHVhbCB2b2lkIHdp
bGxCZWdpbkZyYW1lKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148706</attachid>
            <date>2012-06-20 18:52:10 -0700</date>
            <delta_ts>2012-06-22 13:12:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88268-20120620185210.patch</filename>
            <type>text/plain</type>
            <size>38092</size>
            <attacher name="Dave Tu">dtu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwODA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA0YmM3NGNiM2NlZWRk
NTdjOGJlMjY2NGM4YjZmMTliODFlMzc1NmQ3Li5mZWY4NjJmZmVhNzRkMDlhYmMyNDE3NzRmZmNh
YTFjMjY5ZGY4NTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wNi0wNCAg
RGF2ZSBUdSAgPGR0dUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBFeHBvc2Ug
cmVuZGVyaW5nIHN0YXRpc3RpY3MgdG8gV2ViV2lkZ2V0LgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODgyNjgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgV2ViS2l0IHNpZGUgb2YgYSBiYXNpYyBmcmFt
ZXdvcmsgZm9yIGV4cG9zaW5nIHJlbmRlcmluZyBzdGF0aXN0aWNzCisgICAgICAgIHRvIENocm9t
aXVtJ3MgLS1lbmFibGUtYmVuY2htYXJraW5nIGV4dGVuc2lvbi4KKworICAgICAgICAqIGNocm9t
aXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Lmg6CisgICAgICAgIChXZWJSZW5kZXJpbmdTdGF0
aXN0aWNzKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJMYXllclRyZWVWaWV3KToK
KwogMjAxMi0wNi0xOSAgVG9ueSBQYXluZSAgPHRwYXluZUBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgQWRkIG1vbml0b3IgcHJvZmlsZSBzdXBwb3J0IGZvciBXaW4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2NzBh
OGI2ZTJhNDBmYWY4YTNiNTRhYjlmODhhY2Q1NTZkMzRjZjU4Li4wODJiOGI5MmViYWI0MjgyYmEx
NzNlNzZjNjJlN2Q2NDdkNjlmMWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTIt
MDYtMDQgIERhdmUgVHUgIDxkdHVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0g
RXhwb3NlIHJlbmRlcmluZyBzdGF0aXN0aWNzIHRvIFdlYldpZGdldC4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4MjY4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIFdlYktpdCBzaWRlIG9mIGEgYmFz
aWMgZnJhbWV3b3JrIGZvciBleHBvc2luZyByZW5kZXJpbmcgc3RhdGlzdGljcworICAgICAgICB0
byBDaHJvbWl1bSdzIC0tZW5hYmxlLWJlbmNobWFya2luZyBleHRlbnNpb24uCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6aW1wbEZyYW1lTnVtYmVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5Lmg6CisgICAgICAgIChDQ1By
b3h5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRo
cmVhZFByb3h5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjppbXBsRnJh
bWVOdW1iZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVh
ZFByb3h5OjppbXBsRnJhbWVOdW1iZXJPbkltcGxUaHJlYWQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaDoKKyAgICAgICAgKENDVGhyZWFk
UHJveHkpOgorCiAyMDEyLTA2LTE5ICBIYXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBBc3NlcnRpb24gZm9yIGV2ZW50J3MgdGFyZ2V0IGlzIHdyb25nLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwppbmRleCBiNmMzN2UxYzlhNjY5NzMzNzZlM2ZhNzljYzZiOWVhNTkx
NDM0NjEyLi5lN2VhNjdmY2ZlMWUwZGZjNjFjMTU0OGFiOTNmZmJiNWYyN2Q0NjkzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA2LTA0ICBEYXZlIFR1
ICA8ZHR1QGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEV4cG9zZSByZW5kZXJp
bmcgc3RhdGlzdGljcyB0byBXZWJXaWRnZXQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04ODI2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoZSBXZWJLaXQgc2lkZSBvZiBhIGJhc2ljIGZyYW1ld29yayBm
b3IgZXhwb3NpbmcgcmVuZGVyaW5nIHN0YXRpc3RpY3MKKyAgICAgICAgdG8gQ2hyb21pdW0ncyAt
LWVuYWJsZS1iZW5jaG1hcmtpbmcgZXh0ZW5zaW9uLgorCisgICAgICAgICogc3JjL1dlYkxheWVy
VHJlZVZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3OjpyZW5kZXJp
bmdTdGF0aXN0aWNzKToKKyAgICAgICAgKFdlYktpdCk6CisKIDIwMTItMDYtMTkgIEtlbm5ldGgg
UnVzc2VsbCAgPGtickBnb29nbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcg
b3V0IHIxMjA3NzIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaSBi
L1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCmluZGV4IGQ3OWY4NTNiMzE5ZmYxMGZmNDhh
MWUwMGNhYmNlZTc3ZWRkNjFkYzguLjc1YWQ5NzJmYmY4Mjc4OTU5ODAxNzQyZWE0N2U5ZTNiMDc4
MWEzMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCisrKyBiL1Nv
dXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCkBAIC05NCw2ICs5NCw3IEBACiAgICAgICAgICAg
ICAnY2hyb21pdW0vcHVibGljL1dlYlByaXZhdGVQdHIuaCcsCiAgICAgICAgICAgICAnY2hyb21p
dW0vcHVibGljL1dlYlJlY3QuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlJl
ZmVycmVyUG9saWN5LmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJSZW5kZXJp
bmdTdGF0cy5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViU2Vzc2lvbkRlc2Ny
aXB0aW9uRGVzY3JpcHRvci5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViU2l6
ZS5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViU29ja2V0U3RyZWFtRXJyb3Iu
aCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVy
VHJlZVZpZXcuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVl
Vmlldy5oCmluZGV4IGQ1ZDk5YTI4NTU5MjMxMDlhZWYxNGM1YmU1YTRhZjVjMjRiYWU1OWYuLmY2
NzkzMGRkMTA1NjhkMTExYzQ2ZTlmM2VjOWQyN2UyYzhmYjA4OTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oCisrKyBiL1NvdXJj
ZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oCkBAIC00NCw2ICs0
NCw3IEBAIGNsYXNzIFdlYkxheWVyVHJlZVZpZXdDbGllbnQ7CiBjbGFzcyBXZWJMYXllclRyZWVW
aWV3SW1wbDsKIHN0cnVjdCBXZWJQb2ludDsKIHN0cnVjdCBXZWJSZWN0Oworc3RydWN0IFdlYlJl
bmRlcmluZ1N0YXRzOwogCiBjbGFzcyBXZWJMYXllclRyZWVWaWV3IDogcHVibGljIFdlYk5vbkNv
cHlhYmxlIHsKIHB1YmxpYzoKQEAgLTE3Myw2ICsxNzQsMTAgQEAgcHVibGljOgogCiAgICAgLy8g
RGVidWdnaW5nIC8gZGFuZ2Vyb3VzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogCisgICAgLy8gRmlsbHMgaW4gYSBXZWJSZW5kZXJpbmdTdGF0cyBzdHJ1Y3Qg
Y29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc3RhdGUgb2YgdGhlIGNvbXBvc2l0b3Iu
CisgICAgLy8gVGhpcyBjYWxsIGlzIHJlbGF0aXZlbHkgZXhwZW5zaXZlIGluIHRocmVhZGVkIG1v
ZGUgYXMgaXQgYmxvY2tzIG9uIHRoZSBjb21wb3NpdG9yIHRocmVhZC4KKyAgICBXRUJLSVRfRVhQ
T1JUIHZvaWQgcmVuZGVyaW5nU3RhdHMoV2ViUmVuZGVyaW5nU3RhdHMmKSBjb25zdDsKKwogICAg
IC8vIFNpbXVsYXRlcyBhIGxvc3QgY29udGV4dC4gRm9yIHRlc3Rpbmcgb25seS4KICAgICBXRUJL
SVRfRVhQT1JUIHZvaWQgbG9zZUNvbXBvc2l0b3JDb250ZXh0KGludCBudW1UaW1lcyk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUmVuZGVyaW5nU3Rh
dHMuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUmVuZGVyaW5nU3RhdHMu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45OWUxZmY4ZTY3NjI2YmExM2ZmZjQwMjM1ZDBlMzE1NWI5YTA0M2M0Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSZW5k
ZXJpbmdTdGF0cy5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlJlbmRlcmlu
Z1N0YXRzX2gKKyNkZWZpbmUgV2ViUmVuZGVyaW5nU3RhdHNfaAorCisjaW5jbHVkZSAiV2ViU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8djguaD4KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK3N0cnVjdCBXZWJSZW5kZXJpbmdTdGF0cyB7CisgICAgaW50IG51bUFuaW1hdGlvbkZy
YW1lczsKKyAgICBpbnQgbnVtRnJhbWVzU2VudFRvU2NyZWVuOworCisgICAgV2ViUmVuZGVyaW5n
U3RhdHMoKQorICAgICAgICA6IG51bUFuaW1hdGlvbkZyYW1lcygwKQorICAgICAgICAsIG51bUZy
YW1lc1NlbnRUb1NjcmVlbigwKQorICAgIHsKKyAgICB9CisKKyAgICBXZWJTZXJpYWxpemVkU2Ny
aXB0VmFsdWUgdmFsdWUoKQorICAgIHsKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBz
dGF0cyA9IHY4OjpPYmplY3Q6Ok5ldygpOworICAgICAgICBpZiAobnVtQW5pbWF0aW9uRnJhbWVz
KQorICAgICAgICAgICAgc3RhdHMtPlNldCh2ODo6U3RyaW5nOjpOZXcoIm51bUFuaW1hdGlvbkZy
YW1lcyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjg6OkludGVnZXI6Ok5ldyhu
dW1BbmltYXRpb25GcmFtZXMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjg6OlJl
YWRPbmx5KTsKKyAgICAgICAgaWYgKG51bUZyYW1lc1NlbnRUb1NjcmVlbikKKyAgICAgICAgICAg
IHN0YXRzLT5TZXQodjg6OlN0cmluZzo6TmV3KCJudW1GcmFtZXNTZW50VG9TY3JlZW4iKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHY4OjpJbnRlZ2VyOjpOZXcobnVtRnJhbWVzU2Vu
dFRvU2NyZWVuKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHY4OjpSZWFkT25seSk7
CisgICAgICAgIHJldHVybiBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU6OnNlcmlhbGl6ZShzdGF0
cyk7CisgICAgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJS
ZW5kZXJpbmdTdGF0c19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVi
bGljL1dlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9XZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NTAxNjMzYmNi
ZTZiNDQ0NGUyODE2MzY4MDY3YjRmNDdhMTRkYzA5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaApAQCAt
MCwwICsxLDk2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWVfaAorI2RlZmluZSBX
ZWJTZXJpYWxpemVkU2NyaXB0VmFsdWVfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5j
bHVkZSAiV2ViUHJpdmF0ZVB0ci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTsgfQorCisjaWYgV0VCS0lUX1VTSU5HX1Y4CituYW1lc3BhY2Ugdjgg
eworY2xhc3MgVmFsdWU7Cit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgSGFuZGxlOworfQorI2Vu
ZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViU3RyaW5nOworCisvLyBGSVhNRTog
U2hvdWxkIHRoaXMgY2xhc3MgYmUgaW4gcGxhdGZvcm0/CitjbGFzcyBXZWJTZXJpYWxpemVkU2Ny
aXB0VmFsdWUgeworcHVibGljOgorICAgIH5XZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUoKSB7IHJl
c2V0KCk7IH0KKworICAgIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSgpIHsgfQorICAgIFdlYlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZShjb25zdCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmIGQpIHsg
YXNzaWduKGQpOyB9CisgICAgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJiBvcGVyYXRvcj0oY29u
c3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJiBkKQorICAgIHsKKyAgICAgICAgYXNzaWduKGQp
OworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgV0VCS0lUX0VYUE9SVCBzdGF0
aWMgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlIGZyb21TdHJpbmcoY29uc3QgV2ViU3RyaW5nJik7
CisKKyNpZiBXRUJLSVRfVVNJTkdfVjgKKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJTZXJp
YWxpemVkU2NyaXB0VmFsdWUgc2VyaWFsaXplKHY4OjpIYW5kbGU8djg6OlZhbHVlPik7CisjZW5k
aWYKKworICAgIC8vIENyZWF0ZSBhIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSB0aGF0IHJlcHJl
c2VudHMgYSBzZXJpYWxpemF0aW9uIGVycm9yLgorICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdl
YlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBjcmVhdGVJbnZhbGlkKCk7CisKKyAgICBXRUJLSVRfRVhQ
T1JUIHZvaWQgcmVzZXQoKTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXNzaWduKGNvbnN0IFdl
YlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYpOworCisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJl
dHVybiBtX3ByaXZhdGUuaXNOdWxsKCk7IH0KKworICAgIC8vIFJldHVybnMgYSBzdHJpbmcgcmVw
cmVzZW50YXRpb24gb2YgdGhlIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS4KKyAgICBXRUJLSVRf
RVhQT1JUIFdlYlN0cmluZyB0b1N0cmluZygpIGNvbnN0OworCisjaWYgV0VCS0lUX1VTSU5HX1Y4
CisgICAgLy8gQ29udmVydCB0aGUgc2VyaWFsaXplZCB2YWx1ZSB0byBhIHBhcnNlZCB2OCB2YWx1
ZS4KKyAgICBXRUJLSVRfRVhQT1JUIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBkZXNlcmlhbGl6ZSgp
OworI2VuZGlmCisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJTZXJpYWxpemVk
U2NyaXB0VmFsdWUoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4mKTsKKyAgICBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmIG9wZXJhdG9yPShjb25z
dCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYpOworICAg
IG9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+
KCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXZWJQcml2YXRlUHRyPFdlYkNvcmU6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbV9wcml2YXRlOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGIwYzcyYmMzMWQ5N2NlMWQwYTA1
NjhmNTM4YTczYzBiYjE1ZWMzYzYuLjFmNmI3YTNlNGJhN2UyMGU4N2Y0NmUzZGZmZTk3YjUyNzY3
YWZhNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTM3NDIsNiArMzc0Miw3IEBACiAgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuaCcsCisg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJpbmdTdGF0
cy5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRl
clBhc3MuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1JlbmRlclBhc3MuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
Y3BwCmluZGV4IGYxMjBkOGM3NzAxNTc3OTUwYmY5MWM1YjAyMDA1Mzc1ZWI3MzM4YjkuLjE3Mzlm
OTgxZDQwOGE5NmU3NDIyYWQ3ZWJmZTU1OGNkODYwMzQwYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVl
SG9zdENvbW1vbi5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIKICNpbmNs
dWRlICJjYy9DQ09jY2x1c2lvblRyYWNrZXIuaCIKKyNpbmNsdWRlICJjYy9DQ1JlbmRlcmluZ1N0
YXRzLmgiCiAjaW5jbHVkZSAiY2MvQ0NTZXR0aW5ncy5oIgogI2luY2x1ZGUgImNjL0NDU2luZ2xl
VGhyZWFkUHJveHkuaCIKICNpbmNsdWRlICJjYy9DQ1RocmVhZC5oIgpAQCAtNzEsNyArNzIsOCBA
QCBDQ0xheWVyVHJlZUhvc3Q6OkNDTGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3RDbGllbnQq
IGNsaWVudCwgY29uc3QgQ0NMYXllclRyZQogICAgICwgbV9hbmltYXRpbmcoZmFsc2UpCiAgICAg
LCBtX25lZWRzQW5pbWF0ZUxheWVycyhmYWxzZSkKICAgICAsIG1fY2xpZW50KGNsaWVudCkKLSAg
ICAsIG1fZnJhbWVOdW1iZXIoMCkKKyAgICAsIG1fYW5pbWF0aW9uRnJhbWVOdW1iZXIoMCkKKyAg
ICAsIG1fY29tbWl0TnVtYmVyKDApCiAgICAgLCBtX2ZyYW1lSXNGb3JEaXNwbGF5KGZhbHNlKQog
ICAgICwgbV9sYXllclJlbmRlcmVySW5pdGlhbGl6ZWQoZmFsc2UpCiAgICAgLCBtX2NvbnRleHRM
b3N0KGZhbHNlKQpAQCAtMjE4LDYgKzIyMCw4IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRh
dGVBbmltYXRpb25zKGRvdWJsZSBtb25vdG9uaWNGcmFtZUJlZ2luVGltZSkKICAgICBtX2NsaWVu
dC0+dXBkYXRlQW5pbWF0aW9ucyhtb25vdG9uaWNGcmFtZUJlZ2luVGltZSk7CiAgICAgYW5pbWF0
ZUxheWVycyhtb25vdG9uaWNGcmFtZUJlZ2luVGltZSk7CiAgICAgbV9hbmltYXRpbmcgPSBmYWxz
ZTsKKworICAgIG1fYW5pbWF0aW9uRnJhbWVOdW1iZXIrKzsKIH0KIAogdm9pZCBDQ0xheWVyVHJl
ZUhvc3Q6OmxheW91dCgpCkBAIC0yNTAsNyArMjU0LDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6
OmZpbmlzaENvbW1pdE9uSW1wbFRocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBob3N0SW1wbCkK
ICAgICBpZiAocm9vdExheWVyKCkgJiYgbV9uZWVkc0FuaW1hdGVMYXllcnMpCiAgICAgICAgIGhv
c3RJbXBsLT5zZXROZWVkc0FuaW1hdGVMYXllcnMoKTsKIAotICAgIGhvc3RJbXBsLT5zZXRTb3Vy
Y2VGcmFtZU51bWJlcihmcmFtZU51bWJlcigpKTsKKyAgICBob3N0SW1wbC0+c2V0U291cmNlRnJh
bWVOdW1iZXIoY29tbWl0TnVtYmVyKCkpOwogICAgIGhvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUo
dmlld3BvcnRTaXplKCkpOwogICAgIGhvc3RJbXBsLT5zZXREZXZpY2VTY2FsZUZhY3RvcihkZXZp
Y2VTY2FsZUZhY3RvcigpKTsKICAgICBob3N0SW1wbC0+c2V0UGFnZVNjYWxlRmFjdG9yQW5kTGlt
aXRzKG1fcGFnZVNjYWxlRmFjdG9yLCBtX21pblBhZ2VTY2FsZUZhY3RvciwgbV9tYXhQYWdlU2Nh
bGVGYWN0b3IpOwpAQCAtMjU5LDcgKzI2Myw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpmaW5p
c2hDb21taXRPbkltcGxUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaG9zdEltcGwpCiAgICAg
aG9zdEltcGwtPnNldFZpc2libGUobV92aXNpYmxlKTsKICAgICBob3N0SW1wbC0+c2V0U291cmNl
RnJhbWVDYW5CZURyYXduKG1fZnJhbWVJc0ZvckRpc3BsYXkpOwogCi0gICAgbV9mcmFtZU51bWJl
cisrOworICAgIG1fY29tbWl0TnVtYmVyKys7CiB9CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojpj
b21taXRDb21wbGV0ZSgpCkBAIC0zMjEsNiArMzI1LDEyIEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0
OjpmaW5pc2hBbGxSZW5kZXJpbmcoKQogICAgIG1fcHJveHktPmZpbmlzaEFsbFJlbmRlcmluZygp
OwogfQogCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cmVuZGVyaW5nU3RhdHMoQ0NSZW5kZXJpbmdT
dGF0cyYgc3RhdHMpIGNvbnN0Cit7CisgICAgbV9wcm94eS0+aW1wbFNpZGVSZW5kZXJpbmdTdGF0
cyhzdGF0cyk7CisgICAgc3RhdHMubnVtQW5pbWF0aW9uRnJhbWVzID0gYW5pbWF0aW9uRnJhbWVO
dW1iZXIoKTsKK30KKwogY29uc3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgQ0NMYXllclRy
ZWVIb3N0OjpsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkgY29uc3QKIHsKICAgICByZXR1cm4g
bV9wcm94eS0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3QuaAppbmRleCBlMTIwOWFmMzU1OWM5N2ViYTQ4MDE1MzY0YTlkYmM4MTQ0ZWY5MzFjLi4y
ZTRhOWM1NjliNjcyYzRkODZkYWE2MTRmYTgyMTgzZjhiYjM1OGUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3QuaApAQCAtNDUsNiArNDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIENDTGF5ZXJUcmVlSG9zdEltcGw7CiBjbGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50
OworY2xhc3MgQ0NSZW5kZXJpbmdTdGF0czsKIGNsYXNzIENDVGV4dHVyZVVwZGF0ZXI7CiBjbGFz
cyBHcmFwaGljc0NvbnRleHQzRDsKIGNsYXNzIFJlZ2lvbjsKQEAgLTE4OSw3ICsxOTAsMTEgQEAg
cHVibGljOgogCiAgICAgdm9pZCBmaW5pc2hBbGxSZW5kZXJpbmcoKTsKIAotICAgIGludCBmcmFt
ZU51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVOdW1iZXI7IH0KKyAgICBpbnQgYW5pbWF0
aW9uRnJhbWVOdW1iZXIoKSBjb25zdCB7IHJldHVybiBtX2FuaW1hdGlvbkZyYW1lTnVtYmVyOyB9
CisKKyAgICBpbnQgY29tbWl0TnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9jb21taXROdW1iZXI7
IH0KKworICAgIHZvaWQgcmVuZGVyaW5nU3RhdHMoQ0NSZW5kZXJpbmdTdGF0cyYpIGNvbnN0Owog
CiAgICAgY29uc3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgbGF5ZXJSZW5kZXJlckNhcGFi
aWxpdGllcygpIGNvbnN0OwogCkBAIC0yNzcsNyArMjgyLDggQEAgcHJpdmF0ZToKIAogICAgIEND
TGF5ZXJUcmVlSG9zdENsaWVudCogbV9jbGllbnQ7CiAKLSAgICBpbnQgbV9mcmFtZU51bWJlcjsK
KyAgICBpbnQgbV9hbmltYXRpb25GcmFtZU51bWJlcjsKKyAgICBpbnQgbV9jb21taXROdW1iZXI7
CiAgICAgYm9vbCBtX2ZyYW1lSXNGb3JEaXNwbGF5OwogCiAgICAgT3duUHRyPENDUHJveHk+IG1f
cHJveHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4IDIxYTY3
MmU4ZmE1NzY0YTk4M2IyMzYwZWU2NDg2M2M1MGJjNDE0YmQuLmE1ZTBmNzkyODRjM2Q5Y2M3NTJm
ZDg3Nzg4MGE4MWFjZTc0MTRmYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdElt
cGwuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgUGFzc093blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBs
PiBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUoY29uc3QgQ0NMYXllclRyZWVTZXQKIENDTGF5
ZXJUcmVlSG9zdEltcGw6OkNDTGF5ZXJUcmVlSG9zdEltcGwoY29uc3QgQ0NMYXllclRyZWVTZXR0
aW5ncyYgc2V0dGluZ3MsIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQqIGNsaWVudCkKICAgICA6
IG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1fc291cmNlRnJhbWVOdW1iZXIoLTEpCi0gICAgLCBt
X2ZyYW1lTnVtYmVyKDApCisgICAgLCBtX3NvdXJjZUFuaW1hdGlvbkZyYW1lTnVtYmVyKDApCiAg
ICAgLCBtX3Jvb3RTY3JvbGxMYXllckltcGwoMCkKICAgICAsIG1fY3VycmVudGx5U2Nyb2xsaW5n
TGF5ZXJJbXBsKDApCiAgICAgLCBtX3Njcm9sbGluZ0xheWVySWRGcm9tUHJldmlvdXNUcmVlKC0x
KQpAQCAtNTA3LDcgKzUwNyw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6ZHJhd0xheWVy
cyhjb25zdCBGcmFtZURhdGEmIGZyYW1lKQogCiAgICAgbV9sYXllclJlbmRlcmVyLT5maW5pc2hE
cmF3aW5nRnJhbWUoKTsKIAotICAgICsrbV9mcmFtZU51bWJlcjsKKyAgICArK21fc291cmNlQW5p
bWF0aW9uRnJhbWVOdW1iZXI7CiAKICAgICAvLyBUaGUgbmV4dCBmcmFtZSBzaG91bGQgc3RhcnQg
YnkgYXNzdW1pbmcgbm90aGluZyBoYXMgY2hhbmdlZCwgYW5kIGNoYW5nZXMgYXJlIG5vdGVkIGFz
IHRoZXkgb2NjdXIuCiAgICAgbV9yb290TGF5ZXJJbXBsLT5yZXNldEFsbENoYW5nZVRyYWNraW5n
Rm9yU3VidHJlZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCmluZGV4IDJl
N2FiYTRlZDdiYmRhNjBiNTM5NjBiMDJhZDlmODYyM2QxYjI4N2QuLmYxNGM1ZjM3NjY2MTczOGE0
NTZkZDc3M2M5ZjgzMmViOTQ4MDRjOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmgKQEAgLTEyMSw3ICsxMjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRGb250QXRsYXMo
UGFzc093blB0cjxDQ0ZvbnRBdGxhcz4pOwogCiAgICAgdm9pZCBmaW5pc2hBbGxSZW5kZXJpbmco
KTsKLSAgICBpbnQgZnJhbWVOdW1iZXIoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lTnVtYmVyOyB9
CisgICAgaW50IHNvdXJjZUFuaW1hdGlvbkZyYW1lTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9z
b3VyY2VBbmltYXRpb25GcmFtZU51bWJlcjsgfQogCiAgICAgYm9vbCBpbml0aWFsaXplTGF5ZXJS
ZW5kZXJlcihQYXNzUmVmUHRyPENDR3JhcGhpY3NDb250ZXh0PiwgVGV4dHVyZVVwbG9hZGVyT3B0
aW9uKTsKICAgICBib29sIGlzQ29udGV4dExvc3QoKTsKQEAgLTE5OCw3ICsxOTgsNyBAQCBwcm90
ZWN0ZWQ6CiAKICAgICBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50KiBtX2NsaWVudDsKICAgICBp
bnQgbV9zb3VyY2VGcmFtZU51bWJlcjsKLSAgICBpbnQgbV9mcmFtZU51bWJlcjsKKyAgICBpbnQg
bV9zb3VyY2VBbmltYXRpb25GcmFtZU51bWJlcjsKIAogcHJpdmF0ZToKICAgICB2b2lkIGNvbXB1
dGVEb3VibGVUYXBab29tRGVsdGFzKENDU2Nyb2xsQW5kU2NhbGVTZXQqIHNjcm9sbEluZm8pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NQcm94eS5oCmluZGV4IGZiMmNiYmFlOTZmMDczMzAwNzVjMjUzMzVkYmEwN2U1OWE1ZDJlMmYu
LjNkYzYwYjNjNjUzOTBkZTAxNzJmZGI4MDM4ZWUwYTRkYjM0MjJjYzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgK
QEAgLTM0LDYgKzM0LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0NGb250QXRs
YXM7CitjbGFzcyBDQ1JlbmRlcmluZ1N0YXRzOwogY2xhc3MgQ0NUaHJlYWQ7CiBjbGFzcyBDQ0dy
YXBoaWNzQ29udGV4dDsKIHN0cnVjdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzOwpAQCAtNzks
NiArODAsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGludCBjb21wb3NpdG9ySWRlbnRpZmll
cigpIGNvbnN0ID0gMDsKIAorICAgIHZpcnR1YWwgdm9pZCBpbXBsU2lkZVJlbmRlcmluZ1N0YXRz
KENDUmVuZGVyaW5nU3RhdHMmKSA9IDA7CisKICAgICB2aXJ0dWFsIGNvbnN0IExheWVyUmVuZGVy
ZXJDYXBhYmlsaXRpZXMmIGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKSBjb25zdCA9IDA7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNBbmltYXRlKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJpbmdTdGF0
cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5k
ZXJpbmdTdGF0cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY2OWM4ZTAyNjg0ZWMyZTUwMDNmMzIwNDcwZDA5Y2Nl
OTBlZjExNjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlcmluZ1N0YXRzLmgKQEAgLTAsMCArMSw0MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICog
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBDQ1JlbmRlcmluZ1N0YXRzX2gKKyNkZWZpbmUgQ0NSZW5kZXJp
bmdTdGF0c19oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IENDUmVuZGVyaW5nU3Rh
dHMgeworICAgIGludCBudW1BbmltYXRpb25GcmFtZXM7CisgICAgaW50IG51bUZyYW1lc1NlbnRU
b1NjcmVlbjsKKworICAgIENDUmVuZGVyaW5nU3RhdHMoKQorICAgICAgICA6IG51bUFuaW1hdGlv
bkZyYW1lcygwKQorICAgICAgICAsIG51bUZyYW1lc1NlbnRUb1NjcmVlbigwKQorICAgIHsKKyAg
ICB9Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5
LmNwcAppbmRleCA4ZjMwNTJkOTMxNmM0N2E4OGNlYjFlMGI5NmYzYzAxODE5NDdmYTFlLi4zN2U5
N2Q5NTdhZDc3Y2M1MjlkYzA5YmYyYmFmM2YwNGRlNjM2MWMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NpbmdsZVRocmVhZFByb3h5LmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIlRyYWNl
RXZlbnQuaCIKICNpbmNsdWRlICJjYy9DQ0ZvbnRBdGxhcy5oIgogI2luY2x1ZGUgImNjL0NDTGF5
ZXJUcmVlSG9zdC5oIgorI2luY2x1ZGUgImNjL0NDUmVuZGVyaW5nU3RhdHMuaCIKICNpbmNsdWRl
ICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NUaW1lci5oIgogI2luY2x1
ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgpAQCAtMTk3LDYgKzE5OCwxMSBAQCBib29sIENDU2luZ2xl
VGhyZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4dCgpCiAgICAgcmV0dXJuIGluaXRpYWxpemVkOwog
fQogCit2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OmltcGxTaWRlUmVuZGVyaW5nU3RhdHMoQ0NS
ZW5kZXJpbmdTdGF0cyYgc3RhdHMpCit7CisgICAgc3RhdHMubnVtRnJhbWVzU2VudFRvU2NyZWVu
ID0gbV9sYXllclRyZWVIb3N0SW1wbC0+c291cmNlQW5pbWF0aW9uRnJhbWVOdW1iZXIoKTsKK30K
KwogY29uc3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgQ0NTaW5nbGVUaHJlYWRQcm94eTo6
bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1fbGF5ZXJS
ZW5kZXJlckluaXRpYWxpemVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaApp
bmRleCBkMzI1M2UyNWM3ZjI4ZjBjYWM5NGU5NDY5OGRhYTY2YTkwOTY5MWI1Li5lODE0OWMxNjIw
MzBhZDNlM2ZjYTczYjU1NTczNDZlNDFjNzU4N2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVU
aHJlYWRQcm94eS5oCkBAIC01Myw2ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wg
aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgcmVj
cmVhdGVDb250ZXh0KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBpbnQgY29tcG9zaXRvcklkZW50
aWZpZXIoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2NvbXBvc2l0b3JJZGVudGlmaWVyOyB9
CisgICAgdmlydHVhbCB2b2lkIGltcGxTaWRlUmVuZGVyaW5nU3RhdHMoQ0NSZW5kZXJpbmdTdGF0
cyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgY29uc3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGll
cyYgbGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCBsb3NlQ29udGV4dCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVk
c0FuaW1hdGUoKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggZTk1
NTU1NTEwNTY3ZTI5N2YzOWEwZTNjMTk2ZWZhOGYyODJhYzlhNC4uOTNlMDkyZDdjZmEzYzAwMmJm
MDllYjYzYWJmNGY5OWQ1NTQ4MzgzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAg
LTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJjYy9DQ0ZyYW1lUmF0ZUNvbnRyb2xsZXIuaCIKICNp
bmNsdWRlICJjYy9DQ0lucHV0SGFuZGxlci5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9z
dC5oIgorI2luY2x1ZGUgImNjL0NDUmVuZGVyaW5nU3RhdHMuaCIKICNpbmNsdWRlICJjYy9DQ1Nj
aGVkdWxlci5oIgogI2luY2x1ZGUgImNjL0NDU2NvcGVkVGhyZWFkUHJveHkuaCIKICNpbmNsdWRl
ICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCkBAIC0yNjYsNiArMjY3LDE3IEBAIGludCBDQ1RocmVh
ZFByb3h5Ojpjb21wb3NpdG9ySWRlbnRpZmllcigpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29tcG9z
aXRvcklkZW50aWZpZXI7CiB9CiAKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6aW1wbFNpZGVSZW5kZXJp
bmdTdGF0cyhDQ1JlbmRlcmluZ1N0YXRzJiBzdGF0cykKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworCisgICAgQ0NDb21wbGV0aW9uRXZlbnQgY29tcGxldGlvbjsKKyAgICBDQ1Byb3h5
OjppbXBsVGhyZWFkKCktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJl
YWRQcm94eTo6aW1wbFNpZGVSZW5kZXJpbmdTdGF0c09uSW1wbFRocmVhZCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhy
ZWFkQWNjZXNzKCZjb21wbGV0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKCZzdGF0cykpKTsK
KyAgICBjb21wbGV0aW9uLndhaXQoKTsKK30KKwogY29uc3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxp
dGllcyYgQ0NUaHJlYWRQcm94eTo6bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpIGNvbnN0CiB7
CiAgICAgQVNTRVJUKG1fbGF5ZXJSZW5kZXJlckluaXRpYWxpemVkKTsKQEAgLTg3Nyw0ICs4ODks
MTEgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpyZWNyZWF0ZUNvbnRleHRPbkltcGxUaHJlYWQoQ0ND
b21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24sIEMKICAgICBjb21wbGV0aW9uLT5zaWduYWwoKTsK
IH0KIAordm9pZCBDQ1RocmVhZFByb3h5OjppbXBsU2lkZVJlbmRlcmluZ1N0YXRzT25JbXBsVGhy
ZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uLCBDQ1JlbmRlcmluZ1N0YXRzKiBzdGF0
cykKK3sKKyAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOworICAgIHN0YXRzLT5udW1GcmFtZXNT
ZW50VG9TY3JlZW4gPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5zb3VyY2VBbmltYXRpb25GcmFtZU51
bWJlcigpOworICAgIGNvbXBsZXRpb24tPnNpZ25hbCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKaW5kZXggMmMyYmViMDEyNTIyYjZhNWZjZTUy
MWVlNzdhODRiNTY2MDNhYmI3OC4uM2EwNjFmMDY1MzRjNmNkM2UwZjMxYTFiNWE1OWQzMTZjNTkz
MjliMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaApAQCAtNjEsNiArNjEsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBib29sIGluaXRpYWxpemVMYXllclJlbmRlcmVyKCkgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCBib29sIHJlY3JlYXRlQ29udGV4dCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
aW50IGNvbXBvc2l0b3JJZGVudGlmaWVyKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIGltcGxTaWRlUmVuZGVyaW5nU3RhdHMoQ0NSZW5kZXJpbmdTdGF0cyYpIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgY29uc3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgbGF5ZXJSZW5kZXJl
ckNhcGFiaWxpdGllcygpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBsb3NlQ29u
dGV4dCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0FuaW1hdGUoKSBPVkVS
UklERTsKQEAgLTE0Miw2ICsxNDMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RnVsbFJvb3RM
YXllckRhbWFnZU9uSW1wbFRocmVhZCgpOwogICAgIHZvaWQgYWNxdWlyZUxheWVyVGV4dHVyZXNG
b3JNYWluVGhyZWFkT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50Kik7CiAgICAgdm9pZCBy
ZWNyZWF0ZUNvbnRleHRPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqLCBDQ0dyYXBoaWNz
Q29udGV4dCosIGJvb2wqIHJlY3JlYXRlU3VjY2VlZGVkLCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0
aWVzKik7CisgICAgdm9pZCBpbXBsU2lkZVJlbmRlcmluZ1N0YXRzT25JbXBsVGhyZWFkKENDQ29t
cGxldGlvbkV2ZW50KiwgQ0NSZW5kZXJpbmdTdGF0cyopOwogICAgIENDU2NoZWR1bGVkQWN0aW9u
RHJhd0FuZFN3YXBSZXN1bHQgc2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBJbnRlcm5hbChib29s
IGZvcmNlZERyYXcpOwogICAgIHZvaWQgc2V0Rm9udEF0bGFzT25JbXBsVGhyZWFkKFBhc3NPd25Q
dHI8Q0NGb250QXRsYXM+KTsKICAgICB2b2lkIGZvcmNlU2VyaWFsaXplT25Td2FwQnVmZmVyc09u
SW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViVmlldy5oCmluZGV4IDU0MmIxMDIxYTY0NDY1ZTM4NmFiNDNmNGFjY2UzYjBmODM2MWNl
OTMuLjkzNzIyNDQzNmMyMzFmMDI3NzY2MGRiMzkwNzc3ZDU0ZTA0YjIzOGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKQEAgLTYyLDYgKzYyLDcgQEAgc3RydWN0IFdl
YkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOwogc3RydWN0IFdlYk1lZGlhUGxheWVyQWN0aW9u
Owogc3RydWN0IFdlYlBsdWdpbkFjdGlvbjsKIHN0cnVjdCBXZWJQb2ludDsKK3N0cnVjdCBXZWJS
ZW5kZXJpbmdTdGF0czsKIAogY2xhc3MgV2ViVmlldyA6IHB1YmxpYyBXZWJXaWRnZXQgewogcHVi
bGljOgpAQCAtNDUzLDYgKzQ1NCwxMCBAQCBwdWJsaWM6CiAgICAgLy8gYnkgdGhlIGNvbXBvc2l0
b3IpIGJ1dCBtdXN0IGJlIGNvbXBsZXRlZCBieSB0aGUgV2ViVmlldy4KICAgICB2aXJ0dWFsIHZv
aWQgdHJhbnNmZXJBY3RpdmVXaGVlbEZsaW5nQW5pbWF0aW9uKGNvbnN0IFdlYkFjdGl2ZVdoZWVs
RmxpbmdQYXJhbWV0ZXJzJikgPSAwOwogCisgICAgLy8gRmlsbHMgaW4gYSBXZWJSZW5kZXJpbmdT
dGF0cyBzdHJ1Y3QgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc3RhdGUgb2YgdGhl
IGNvbXBvc2l0b3IuCisgICAgLy8gVGhpcyBjYWxsIGlzIHJlbGF0aXZlbHkgZXhwZW5zaXZlIGlu
IHRocmVhZGVkIG1vZGUgYXMgaXQgYmxvY2tzIG9uIHRoZSBjb21wb3NpdG9yIHRocmVhZC4KKyAg
ICB2aXJ0dWFsIHZvaWQgcmVuZGVyaW5nU3RhdHMoV2ViUmVuZGVyaW5nU3RhdHMmKSBjb25zdCB7
IH0KKwogICAgIC8vIFZpc2liaWxpdHkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogICAgIC8vIFNldHMgdGhlIHZpc2liaWxpdHkg
b2YgdGhlIFdlYlZpZXcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9wbGF0Zm9ybS9XZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IDg1
MDE2MzNiY2JlNmI0NDQ0ZTI4MTYzNjgwNjdiNGY0N2ExNGRjMDkuLjJkZWFiNzA1MmZhMDlhZTU1
OTQyMjYwM2QzNWI1M2M3ZWExN2FkN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL3BsYXRmb3JtL1dlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5oCkBAIC0xLDk2ICsxLDI2IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSAqIG1ldDoKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKICAqCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJp
YnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KICAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBX
ZWJTZXJpYWxpemVkU2NyaXB0VmFsdWVfaAotI2RlZmluZSBXZWJTZXJpYWxpemVkU2NyaXB0VmFs
dWVfaAotCi0jaW5jbHVkZSAiV2ViQ29tbW9uLmgiCi0jaW5jbHVkZSAiV2ViUHJpdmF0ZVB0ci5o
IgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsgfQot
Ci0jaWYgV0VCS0lUX1VTSU5HX1Y4Ci1uYW1lc3BhY2UgdjggewotY2xhc3MgVmFsdWU7Ci10ZW1w
bGF0ZSA8Y2xhc3MgVD4gY2xhc3MgSGFuZGxlOwotfQotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJL
aXQgewotY2xhc3MgV2ViU3RyaW5nOwotCi0vLyBGSVhNRTogU2hvdWxkIHRoaXMgY2xhc3MgYmUg
aW4gcGxhdGZvcm0/Ci1jbGFzcyBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUgewotcHVibGljOgot
ICAgIH5XZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUoKSB7IHJlc2V0KCk7IH0KLQotICAgIFdlYlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSgpIHsgfQotICAgIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShj
b25zdCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmIGQpIHsgYXNzaWduKGQpOyB9Ci0gICAgV2Vi
U2VyaWFsaXplZFNjcmlwdFZhbHVlJiBvcGVyYXRvcj0oY29uc3QgV2ViU2VyaWFsaXplZFNjcmlw
dFZhbHVlJiBkKQotICAgIHsKLSAgICAgICAgYXNzaWduKGQpOwotICAgICAgICByZXR1cm4gKnRo
aXM7Ci0gICAgfQotCi0gICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViU2VyaWFsaXplZFNjcmlw
dFZhbHVlIGZyb21TdHJpbmcoY29uc3QgV2ViU3RyaW5nJik7Ci0KLSNpZiBXRUJLSVRfVVNJTkdf
VjgKLSAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUgc2Vy
aWFsaXplKHY4OjpIYW5kbGU8djg6OlZhbHVlPik7Ci0jZW5kaWYKLQotICAgIC8vIENyZWF0ZSBh
IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSB0aGF0IHJlcHJlc2VudHMgYSBzZXJpYWxpemF0aW9u
IGVycm9yLgotICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSBjcmVhdGVJbnZhbGlkKCk7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKLSAg
ICBXRUJLSVRfRVhQT1JUIHZvaWQgYXNzaWduKGNvbnN0IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSYpOwotCi0gICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGUuaXNOdWxs
KCk7IH0KLQotICAgIC8vIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIFdl
YlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS4KLSAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyB0b1N0
cmluZygpIGNvbnN0OwotCi0jaWYgV0VCS0lUX1VTSU5HX1Y4Ci0gICAgLy8gQ29udmVydCB0aGUg
c2VyaWFsaXplZCB2YWx1ZSB0byBhIHBhcnNlZCB2OCB2YWx1ZS4KLSAgICBXRUJLSVRfRVhQT1JU
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBkZXNlcmlhbGl6ZSgpOwotI2VuZGlmCi0KLSNpZiBXRUJL
SVRfSU1QTEVNRU5UQVRJT04KLSAgICBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUoY29uc3QgV1RG
OjpQYXNzUmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mKTsKLSAgICBXZWJT
ZXJpYWxpemVkU2NyaXB0VmFsdWUmIG9wZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2Vi
Q29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYpOwotICAgIG9wZXJhdG9yIFdURjo6UGFzc1Jl
ZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+KCkgY29uc3Q7Ci0jZW5kaWYKLQot
cHJpdmF0ZToKLSAgICBXZWJQcml2YXRlUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gbV9wcml2YXRlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZgorI2lu
Y2x1ZGUgIi4uLy4uLy4uLy4uL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTZXJpYWxpemVk
U2NyaXB0VmFsdWUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkxheWVyVHJlZVZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJU
cmVlVmlldy5jcHAKaW5kZXggNDdjYzg4MzEwYWViM2QzZmU4ZmE5OGNhMDU3YjM3ODE4ZWNjNDJi
NS4uNjM1ODdhOWE2NTUzYzcyNzI0ZWQxOTIxODFhODg5MmEzNzYyYzA1NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHAKQEAgLTI5LDEwICsy
OSwxMiBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oIgogI2luY2x1ZGUg
IldlYkxheWVyVHJlZVZpZXdJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0Lmgi
CisjaW5jbHVkZSAiY2MvQ0NSZW5kZXJpbmdTdGF0cy5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dl
YkxheWVyLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViUG9pbnQuaCIKICNpbmNsdWRlICJwbGF0
Zm9ybS9XZWJSZWN0LmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViU2l6ZS5oIgorI2luY2x1ZGUg
InB1YmxpYy9XZWJSZW5kZXJpbmdTdGF0cy5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IApAQCAtMTc2LDYgKzE3OCwxNSBAQCBXZWJHcmFwaGljc0NvbnRleHQzRCogV2ViTGF5ZXJUcmVl
Vmlldzo6Y29udGV4dCgpCiAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZXh0
cmFjdFdlYkdyYXBoaWNzQ29udGV4dDNEKG1fcHJpdmF0ZS0+bGF5ZXJUcmVlSG9zdCgpLT5jb250
ZXh0KCktPmNvbnRleHQzRCgpKTsKIH0KIAordm9pZCBXZWJMYXllclRyZWVWaWV3OjpyZW5kZXJp
bmdTdGF0cyhXZWJSZW5kZXJpbmdTdGF0cyYgc3RhdHMpIGNvbnN0Cit7CisgICAgQ0NSZW5kZXJp
bmdTdGF0cyBjY1N0YXRzOworICAgIG1fcHJpdmF0ZS0+bGF5ZXJUcmVlSG9zdCgpLT5yZW5kZXJp
bmdTdGF0cyhjY1N0YXRzKTsKKworICAgIHN0YXRzLm51bUFuaW1hdGlvbkZyYW1lcyA9IGNjU3Rh
dHMubnVtQW5pbWF0aW9uRnJhbWVzOworICAgIHN0YXRzLm51bUZyYW1lc1NlbnRUb1NjcmVlbiA9
IGNjU3RhdHMubnVtRnJhbWVzU2VudFRvU2NyZWVuOworfQorCiB2b2lkIFdlYkxheWVyVHJlZVZp
ZXc6Omxvc2VDb21wb3NpdG9yQ29udGV4dChpbnQgbnVtVGltZXMpCiB7CiAgICAgbV9wcml2YXRl
LT5sYXllclRyZWVIb3N0KCktPmxvc2VDb250ZXh0KG51bVRpbWVzKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCA2N2I3YzA0MWU2MjgzNTI2YjA3MGVj
ZWFhOTFkODQ5MWIyNzk0YTc1Li5jYjFhYzdlZDQ3OWM2MTI4YjJjNjMxZmMzZjU2ZjAzZWZhODUy
ODE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC03
MjgsNiArNzI4LDE0IEBAIHZvaWQgV2ViVmlld0ltcGw6OnRyYW5zZmVyQWN0aXZlV2hlZWxGbGlu
Z0FuaW1hdGlvbihjb25zdCBXZWJBY3RpdmVXaGVlbEZsaW5nUGFyCiAgICAgc2NoZWR1bGVBbmlt
YXRpb24oKTsKIH0KIAordm9pZCBXZWJWaWV3SW1wbDo6cmVuZGVyaW5nU3RhdHMoV2ViUmVuZGVy
aW5nU3RhdHMmIHN0YXRzKSBjb25zdAoreworICAgIGlmICghaXNBY2NlbGVyYXRlZENvbXBvc2l0
aW5nQWN0aXZlKCkpCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGlmICghbV9s
YXllclRyZWVWaWV3LmlzTnVsbCgpKQorICAgICAgICBtX2xheWVyVHJlZVZpZXcucmVuZGVyaW5n
U3RhdHMoc3RhdHMpOworfQorCiB2b2lkIFdlYlZpZXdJbXBsOjpzdGFydFBhZ2VTY2FsZUFuaW1h
dGlvbihjb25zdCBJbnRQb2ludCYgc2Nyb2xsLCBib29sIHVzZUFuY2hvciwgZmxvYXQgbmV3U2Nh
bGUsIGRvdWJsZSBkdXJhdGlvblNlYykKIHsKICAgICBpZiAoIW1fbGF5ZXJUcmVlVmlldy5pc051
bGwoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IDRmNWMw
NDhkOTc3NDJhZDU5YjE1ZWNiMzQzZDg1YzhkM2EwMzE4NmYuLmUzNWRmZTdlY2E5YzRlN2ZlMDMw
MWFlMmRkZmY5OTE4Y2Q5ODU1NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuaApAQCAtMjkxLDYgKzI5MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlQmF0dGVyeVN0YXR1cyhjb25zdCBXZWJCYXR0ZXJ5U3RhdHVzJik7CiAjZW5kaWYKICAgICB2
aXJ0dWFsIHZvaWQgdHJhbnNmZXJBY3RpdmVXaGVlbEZsaW5nQW5pbWF0aW9uKGNvbnN0IFdlYkFj
dGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJik7CisgICAgdmlydHVhbCB2b2lkIHJlbmRlcmluZ1N0
YXRzKFdlYlJlbmRlcmluZ1N0YXRzJikgY29uc3Q7CiAKICAgICAvLyBXZWJMYXllclRyZWVWaWV3
Q2xpZW50CiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZWdpbkZyYW1lKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAppbmRleCA1
NDRlY2E4OGIxYjFiZTkxZDg5MDMxMzE0Y2VlZGMxODQxZThhOWY2Li44NTJjYmZhOGU1ZmQ1Mzgy
ZDUyNmExZGExZDFlOTdiZmUxNzFmOGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKQEAgLTgzMSw3ICs4MzEsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGxheW91dCgpCiAgICAgewogICAgICAgICBMYXllckNo
cm9taXVtKiByb290ID0gbV9sYXllclRyZWVIb3N0LT5yb290TGF5ZXIoKTsKLSAgICAgICAgaWYg
KCFtX2xheWVyVHJlZUhvc3QtPmZyYW1lTnVtYmVyKCkpCisgICAgICAgIGlmICghbV9sYXllclRy
ZWVIb3N0LT5jb21taXROdW1iZXIoKSkKICAgICAgICAgICAgIEVYUEVDVF9FUShyb290LT5zY3Jv
bGxQb3NpdGlvbigpLCBtX2luaXRpYWxTY3JvbGwpOwogICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgIEVYUEVDVF9FUShyb290LT5zY3JvbGxQb3NpdGlvbigpLCBtX2luaXRpYWxTY3JvbGwgKyBt
X3Njcm9sbEFtb3VudCk7CkBAIC05MTcsNyArOTE3LDcgQEAgcHVibGljOgogICAgICAgICByb290
LT5zZXRTY3JvbGxhYmxlKHRydWUpOwogICAgICAgICByb290LT5zZXRNYXhTY3JvbGxQb3NpdGlv
bihJbnRTaXplKDEwMCwgMTAwKSk7CiAKLSAgICAgICAgaWYgKCFpbXBsLT5zb3VyY2VGcmFtZU51
bWJlcigpICYmIGltcGwtPmZyYW1lTnVtYmVyKCkgPT0gMSkgeworICAgICAgICBpZiAoIWltcGwt
PnNvdXJjZUZyYW1lTnVtYmVyKCkgJiYgaW1wbC0+c291cmNlQW5pbWF0aW9uRnJhbWVOdW1iZXIo
KSA9PSAxKSB7CiAgICAgICAgICAgICAvLyBGaXJzdCBkcmF3IGFmdGVyIGZpcnN0IGNvbW1pdC4K
ICAgICAgICAgICAgIEVYUEVDVF9FUShyb290LT5zY3JvbGxEZWx0YSgpLCBJbnRTaXplKCkpOwog
ICAgICAgICAgICAgcm9vdC0+c2Nyb2xsQnkobV9zY3JvbGxBbW91bnQpOwpAQCAtOTI1LDcgKzky
NSw3IEBAIHB1YmxpYzoKIAogICAgICAgICAgICAgRVhQRUNUX0VRKHJvb3QtPnNjcm9sbFBvc2l0
aW9uKCksIG1faW5pdGlhbFNjcm9sbCk7CiAgICAgICAgICAgICBwb3N0U2V0TmVlZHNSZWRyYXdU
b01haW5UaHJlYWQoKTsKLSAgICAgICAgfSBlbHNlIGlmICghaW1wbC0+c291cmNlRnJhbWVOdW1i
ZXIoKSAmJiBpbXBsLT5mcmFtZU51bWJlcigpID09IDIpIHsKKyAgICAgICAgfSBlbHNlIGlmICgh
aW1wbC0+c291cmNlRnJhbWVOdW1iZXIoKSAmJiBpbXBsLT5zb3VyY2VBbmltYXRpb25GcmFtZU51
bWJlcigpID09IDIpIHsKICAgICAgICAgICAgIC8vIFNlY29uZCBkcmF3IGFmdGVyIGZpcnN0IGNv
bW1pdC4KICAgICAgICAgICAgIEVYUEVDVF9FUShyb290LT5zY3JvbGxEZWx0YSgpLCBtX3Njcm9s
bEFtb3VudCk7CiAgICAgICAgICAgICByb290LT5zY3JvbGxCeShtX3Njcm9sbEFtb3VudCk7CkBA
IC05MzUsNyArOTM1LDcgQEAgcHVibGljOgogICAgICAgICAgICAgcG9zdFNldE5lZWRzQ29tbWl0
VG9NYWluVGhyZWFkKCk7CiAgICAgICAgIH0gZWxzZSBpZiAoaW1wbC0+c291cmNlRnJhbWVOdW1i
ZXIoKSA9PSAxKSB7CiAgICAgICAgICAgICAvLyBUaGlyZCBvciBsYXRlciBkcmF3IGFmdGVyIHNl
Y29uZCBjb21taXQuCi0gICAgICAgICAgICBFWFBFQ1RfR0UoaW1wbC0+ZnJhbWVOdW1iZXIoKSwg
Myk7CisgICAgICAgICAgICBFWFBFQ1RfR0UoaW1wbC0+c291cmNlQW5pbWF0aW9uRnJhbWVOdW1i
ZXIoKSwgMyk7CiAgICAgICAgICAgICBFWFBFQ1RfRVEocm9vdC0+c2Nyb2xsRGVsdGEoKSwgSW50
U2l6ZSgpKTsKICAgICAgICAgICAgIEVYUEVDVF9FUShyb290LT5zY3JvbGxQb3NpdGlvbigpLCBt
X2luaXRpYWxTY3JvbGwgKyBtX3Njcm9sbEFtb3VudCArIG1fc2Nyb2xsQW1vdW50KTsKICAgICAg
ICAgICAgIGVuZFRlc3QoKTsKQEAgLTEwMDgsNyArMTAwOCw3IEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgdm9pZCBkaWRDb21taXRBbmREcmF3RnJhbWUoKQogICAgIHsKLSAgICAgICAgaW50IGxh
c3RGcmFtZSA9IG1fbGF5ZXJUcmVlSG9zdC0+ZnJhbWVOdW1iZXIoKSAtIDE7CisgICAgICAgIGlu
dCBsYXN0RnJhbWUgPSBtX2xheWVyVHJlZUhvc3QtPmNvbW1pdE51bWJlcigpIC0gMTsKIAogICAg
ICAgICAvLyBUaGVzZSBmcmFtZXMgc2hvdWxkIGRyYXcuCiAgICAgICAgIHN3aXRjaCAobGFzdEZy
YW1lKSB7CkBAIC0xMDM5LDcgKzEwMzksNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ29tbWl0KCkKICAgICB7Ci0gICAgICAgIGludCBsYXN0RnJhbWUgPSBtX2xheWVyVHJlZUhv
c3QtPmZyYW1lTnVtYmVyKCkgLSAxOworICAgICAgICBpbnQgbGFzdEZyYW1lID0gbV9sYXllclRy
ZWVIb3N0LT5jb21taXROdW1iZXIoKSAtIDE7CiAKICAgICAgICAgLy8gVGhlc2UgZnJhbWVzIHNo
b3VsZCBub3QgZHJhdy4KICAgICAgICAgc3dpdGNoIChsYXN0RnJhbWUpIHsKQEAgLTIzMDQsNyAr
MjMwNCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5Db21taXRPbkNDVGhyZWFk
KENDTGF5ZXJUcmVlSG9zdEltcGwqIGltcGwpIE9WRVJSSURFCiAgICAgewogICAgICAgICBFWFBF
Q1RfRVEobV9yb290U2Nyb2xsTGF5ZXItPnNjcm9sbFBvc2l0aW9uKCksIEludFBvaW50KCkpOwot
ICAgICAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdC0+ZnJhbWVOdW1iZXIoKSkKKyAgICAgICAgaWYg
KCFtX2xheWVyVHJlZUhvc3QtPmNvbW1pdE51bWJlcigpKQogICAgICAgICAgICAgRVhQRUNUX0VR
KG1fY2hpbGRMYXllci0+c2Nyb2xsUG9zaXRpb24oKSwgSW50UG9pbnQoKSk7CiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIEVYUEVDVF9FUShtX2NoaWxkTGF5ZXItPnNjcm9sbFBvc2l0aW9uKCks
IEludFBvaW50KCkgKyBtX3Njcm9sbEFtb3VudCk7CkBAIC0yMzEyLDExICsyMzEyLDExIEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3TGF5ZXJzT25DQ1RocmVhZChDQ0xheWVyVHJl
ZUhvc3RJbXBsKiBpbXBsKSBPVkVSUklERQogICAgIHsKLSAgICAgICAgaWYgKGltcGwtPmZyYW1l
TnVtYmVyKCkgPT0gMSkgeworICAgICAgICBpZiAoaW1wbC0+c291cmNlQW5pbWF0aW9uRnJhbWVO
dW1iZXIoKSA9PSAxKSB7CiAgICAgICAgICAgICBFWFBFQ1RfRVEoaW1wbC0+c2Nyb2xsQmVnaW4o
SW50UG9pbnQoNSwgNSksIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpXaGVlbCksIENDSW5wdXRIYW5k
bGVyQ2xpZW50OjpTY3JvbGxTdGFydGVkKTsKICAgICAgICAgICAgIGltcGwtPnNjcm9sbEJ5KG1f
c2Nyb2xsQW1vdW50KTsKICAgICAgICAgICAgIGltcGwtPnNjcm9sbEVuZCgpOwotICAgICAgICB9
IGVsc2UgaWYgKGltcGwtPmZyYW1lTnVtYmVyKCkgPT0gMikKKyAgICAgICAgfSBlbHNlIGlmIChp
bXBsLT5zb3VyY2VBbmltYXRpb25GcmFtZU51bWJlcigpID09IDIpCiAgICAgICAgICAgICBlbmRU
ZXN0KCk7CiAgICAgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149091</attachid>
            <date>2012-06-22 13:12:51 -0700</date>
            <delta_ts>2012-06-22 14:24:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88268-20120622131251.patch</filename>
            <type>text/plain</type>
            <size>28400</size>
            <attacher name="Dave Tu">dtu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMDE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAxODZiNWVhOWEyMTIw
NTlkMjQ4YWFmNDE0MjUwN2MxZjUzMGQzOGU1Li4zNmU5MTcyN2FiMmE4NjliODlmNzFiMTJhYjNj
NmZjYjcyNGYxYTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wNi0wNCAg
RGF2ZSBUdSAgPGR0dUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBFeHBvc2Ug
cmVuZGVyaW5nIHN0YXRpc3RpY3MgdG8gV2ViV2lkZ2V0LgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODgyNjgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgV2ViS2l0IHNpZGUgb2YgYSBiYXNpYyBmcmFt
ZXdvcmsgZm9yIGV4cG9zaW5nIHJlbmRlcmluZyBzdGF0aXN0aWNzCisgICAgICAgIHRvIENocm9t
aXVtJ3MgLS1lbmFibGUtYmVuY2htYXJraW5nIGV4dGVuc2lvbi4KKworICAgICAgICAqIGNocm9t
aXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Lmg6CisgICAgICAgIChXZWJSZW5kZXJpbmdTdGF0
aXN0aWNzKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJMYXllclRyZWVWaWV3KToK
KwogMjAxMi0wNi0yMCAgQ2hyaXN0b3BoZXIgQ2FtZXJvbiAgPGNjYW1lcm9uQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBbY2hyb21pdW1dIHdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5IGRvZXNu
J3Qgd29yayB3aXRoIHZpZGVvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTI2ODY3MmM5ZDBiMmM1NjM3MTViY2E2
YmQyOTE4NmFmOTc4ODlkZi4uOTg3ZGJkZjNlNjdkY2FkZDVjM2M1NmZhNjczNDkzZjdjNzg2NjEy
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTA2LTA0ICBEYXZlIFR1ICA8ZHR1
QGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEV4cG9zZSByZW5kZXJpbmcgc3Rh
dGlzdGljcyB0byBXZWJXaWRnZXQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04ODI2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoZSBXZWJLaXQgc2lkZSBvZiBhIGJhc2ljIGZyYW1ld29yayBmb3IgZXhw
b3NpbmcgcmVuZGVyaW5nIHN0YXRpc3RpY3MKKyAgICAgICAgdG8gQ2hyb21pdW0ncyAtLWVuYWJs
ZS1iZW5jaG1hcmtpbmcgZXh0ZW5zaW9uLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
VHJlZUhvc3Q6OmltcGxGcmFtZU51bWJlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NQcm94eS5oOgorICAgICAgICAoQ0NQcm94eSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6aW1wbEZyYW1lTnVtYmVyKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6aW1wbEZyYW1lTnVt
YmVyT25JbXBsVGhyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RocmVhZFByb3h5Lmg6CisgICAgICAgIChDQ1RocmVhZFByb3h5KToKKwogMjAxMi0wNi0y
MiAgQW15IE91c3RlcmhvdXQgIDxhb3VzdGVyaEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVu
YW1lZCBEZXZpY2VPcmllbnRhdGlvbiB0byBEZXZpY2VPcmllbnRhdGlvbkRhdGEKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKaW5kZXggMjUxNjk0YzIzNGQyM2NlNjgzODRkZTIzNDczODJmNjIxMmNl
NjZiNy4uMTliYTgzMTI2ZTE3MTBkNDQyOTNhOThkNTFjZjEyN2Q0ZDBhYmZkNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wNi0wNCAgRGF2ZSBUdSAg
PGR0dUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBFeHBvc2UgcmVuZGVyaW5n
IHN0YXRpc3RpY3MgdG8gV2ViV2lkZ2V0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODgyNjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGUgV2ViS2l0IHNpZGUgb2YgYSBiYXNpYyBmcmFtZXdvcmsgZm9y
IGV4cG9zaW5nIHJlbmRlcmluZyBzdGF0aXN0aWNzCisgICAgICAgIHRvIENocm9taXVtJ3MgLS1l
bmFibGUtYmVuY2htYXJraW5nIGV4dGVuc2lvbi4KKworICAgICAgICAqIHNyYy9XZWJMYXllclRy
ZWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlldzo6cmVuZGVyaW5n
U3RhdGlzdGljcyk6CisgICAgICAgIChXZWJLaXQpOgorCiAyMDEyLTA2LTIyICBBbXkgT3VzdGVy
aG91dCAgPGFvdXN0ZXJoQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW5hbWVkIERldmljZU9y
aWVudGF0aW9uIHRvIERldmljZU9yaWVudGF0aW9uRGF0YQpkaWZmIC0tZ2l0IGEvU291cmNlL1Bs
YXRmb3JtL1BsYXRmb3JtLmd5cGkgYi9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQppbmRl
eCBkNzlmODUzYjMxOWZmMTBmZjQ4YTFlMDBjYWJjZWU3N2VkZDYxZGM4Li43NWFkOTcyZmJmODI3
ODk1OTgwMTc0MmVhNDdlOWUzYjA3ODFhMzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0v
UGxhdGZvcm0uZ3lwaQorKysgYi9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQpAQCAtOTQs
NiArOTQsNyBAQAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJQcml2YXRlUHRyLmgn
LAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJSZWN0LmgnLAogICAgICAgICAgICAg
J2Nocm9taXVtL3B1YmxpYy9XZWJSZWZlcnJlclBvbGljeS5oJywKKyAgICAgICAgICAgICdjaHJv
bWl1bS9wdWJsaWMvV2ViUmVuZGVyaW5nU3RhdHMuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0v
cHVibGljL1dlYlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IuaCcsCiAgICAgICAgICAgICAn
Y2hyb21pdW0vcHVibGljL1dlYlNpemUuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGlj
L1dlYlNvY2tldFN0cmVhbUVycm9yLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21p
dW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaAppbmRleCBkNWQ5OWEyODU1OTIzMTA5YWVmMTRj
NWJlNWE0YWY1YzI0YmFlNTlmLi5mNjc5MzBkZDEwNTY4ZDExMWM0NmU5ZjNlYzlkMjdlMmM4ZmIw
ODkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVy
VHJlZVZpZXcuaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVy
VHJlZVZpZXcuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBXZWJMYXllclRyZWVWaWV3Q2xpZW50
OwogY2xhc3MgV2ViTGF5ZXJUcmVlVmlld0ltcGw7CiBzdHJ1Y3QgV2ViUG9pbnQ7CiBzdHJ1Y3Qg
V2ViUmVjdDsKK3N0cnVjdCBXZWJSZW5kZXJpbmdTdGF0czsKIAogY2xhc3MgV2ViTGF5ZXJUcmVl
VmlldyA6IHB1YmxpYyBXZWJOb25Db3B5YWJsZSB7CiBwdWJsaWM6CkBAIC0xNzMsNiArMTc0LDEw
IEBAIHB1YmxpYzoKIAogICAgIC8vIERlYnVnZ2luZyAvIGRhbmdlcm91cyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAorICAgIC8vIEZpbGxzIGluIGEgV2Vi
UmVuZGVyaW5nU3RhdHMgc3RydWN0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHN0
YXRlIG9mIHRoZSBjb21wb3NpdG9yLgorICAgIC8vIFRoaXMgY2FsbCBpcyByZWxhdGl2ZWx5IGV4
cGVuc2l2ZSBpbiB0aHJlYWRlZCBtb2RlIGFzIGl0IGJsb2NrcyBvbiB0aGUgY29tcG9zaXRvciB0
aHJlYWQuCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlbmRlcmluZ1N0YXRzKFdlYlJlbmRlcmlu
Z1N0YXRzJikgY29uc3Q7CisKICAgICAvLyBTaW11bGF0ZXMgYSBsb3N0IGNvbnRleHQuIEZvciB0
ZXN0aW5nIG9ubHkuCiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGxvc2VDb21wb3NpdG9yQ29udGV4
dChpbnQgbnVtVGltZXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0v
cHVibGljL1dlYlJlbmRlcmluZ1N0YXRzLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVi
bGljL1dlYlJlbmRlcmluZ1N0YXRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjE3Njk4NTViMDAzMjU4ZWQwNTBh
NWUxMDA5MTdhNDRlNWMyMWJjOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9j
aHJvbWl1bS9wdWJsaWMvV2ViUmVuZGVyaW5nU3RhdHMuaApAQCAtMCwwICsxLDQ0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBXZWJSZW5kZXJpbmdTdGF0c19oCisjZGVmaW5lIFdlYlJlbmRlcmluZ1N0YXRz
X2gKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBXZWJSZW5kZXJpbmdTdGF0cyB7Cisg
ICAgaW50IG51bUFuaW1hdGlvbkZyYW1lczsKKyAgICBpbnQgbnVtRnJhbWVzU2VudFRvU2NyZWVu
OworCisgICAgV2ViUmVuZGVyaW5nU3RhdHMoKQorICAgICAgICA6IG51bUFuaW1hdGlvbkZyYW1l
cygwKQorICAgICAgICAsIG51bUZyYW1lc1NlbnRUb1NjcmVlbigwKQorICAgIHsKKyAgICB9Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlJlbmRlcmluZ1N0YXRz
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQppbmRleCA4YWUwZTBjZWY5MTQ2NWFhMzkxNmRlNWM4MDgxYzJkMGM5
Y2ZmMDQ4Li43Y2U2MDE0MzRlZDNkYmZlOGZhOGVlOTMzNGI4ODFiOWY4MzNmNWQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCkBAIC0zNzUwLDYgKzM3NTAsNyBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmgnLAorICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyaW5nU3RhdHMuaCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmgn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFz
c0RyYXdRdWFkLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAppbmRleCBiYjZj
MDY0NjJiNDUxMDBiNDQ4N2Y3NjdiN2VlYTY3MTAzMzdjYWM0Li4yZTIxZDZkZmYwN2NjNGZiYWIz
NjNhZTIwZDU1OTRhNGZiMzgzOTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAK
QEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgiCiAj
aW5jbHVkZSAiY2MvQ0NPY2NsdXNpb25UcmFja2VyLmgiCiAjaW5jbHVkZSAiY2MvQ0NPdmVyZHJh
d01ldHJpY3MuaCIKKyNpbmNsdWRlICJjYy9DQ1JlbmRlcmluZ1N0YXRzLmgiCiAjaW5jbHVkZSAi
Y2MvQ0NTZXR0aW5ncy5oIgogI2luY2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIKICNp
bmNsdWRlICJjYy9DQ1RocmVhZFByb3h5LmgiCkBAIC03Miw3ICs3Myw4IEBAIENDTGF5ZXJUcmVl
SG9zdDo6Q0NMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdENsaWVudCogY2xpZW50LCBjb25z
dCBDQ0xheWVyVHJlCiAgICAgLCBtX2FuaW1hdGluZyhmYWxzZSkKICAgICAsIG1fbmVlZHNBbmlt
YXRlTGF5ZXJzKGZhbHNlKQogICAgICwgbV9jbGllbnQoY2xpZW50KQotICAgICwgbV9mcmFtZU51
bWJlcigwKQorICAgICwgbV9hbmltYXRpb25GcmFtZU51bWJlcigwKQorICAgICwgbV9jb21taXRO
dW1iZXIoMCkKICAgICAsIG1fZnJhbWVJc0ZvckRpc3BsYXkoZmFsc2UpCiAgICAgLCBtX2xheWVy
UmVuZGVyZXJJbml0aWFsaXplZChmYWxzZSkKICAgICAsIG1fY29udGV4dExvc3QoZmFsc2UpCkBA
IC0yMTksNiArMjIxLDggQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUFuaW1hdGlvbnMo
ZG91YmxlIG1vbm90b25pY0ZyYW1lQmVnaW5UaW1lKQogICAgIG1fY2xpZW50LT51cGRhdGVBbmlt
YXRpb25zKG1vbm90b25pY0ZyYW1lQmVnaW5UaW1lKTsKICAgICBhbmltYXRlTGF5ZXJzKG1vbm90
b25pY0ZyYW1lQmVnaW5UaW1lKTsKICAgICBtX2FuaW1hdGluZyA9IGZhbHNlOworCisgICAgbV9h
bmltYXRpb25GcmFtZU51bWJlcisrOwogfQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6bGF5b3V0
KCkKQEAgLTI1MSw3ICsyNTUsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6ZmluaXNoQ29tbWl0
T25JbXBsVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGhvc3RJbXBsKQogICAgIGlmIChyb290
TGF5ZXIoKSAmJiBtX25lZWRzQW5pbWF0ZUxheWVycykKICAgICAgICAgaG9zdEltcGwtPnNldE5l
ZWRzQW5pbWF0ZUxheWVycygpOwogCi0gICAgaG9zdEltcGwtPnNldFNvdXJjZUZyYW1lTnVtYmVy
KGZyYW1lTnVtYmVyKCkpOworICAgIGhvc3RJbXBsLT5zZXRTb3VyY2VGcmFtZU51bWJlcihjb21t
aXROdW1iZXIoKSk7CiAgICAgaG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZSh2aWV3cG9ydFNpemUo
KSk7CiAgICAgaG9zdEltcGwtPnNldERldmljZVNjYWxlRmFjdG9yKGRldmljZVNjYWxlRmFjdG9y
KCkpOwogICAgIGhvc3RJbXBsLT5zZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1pdHMobV9wYWdlU2Nh
bGVGYWN0b3IsIG1fbWluUGFnZVNjYWxlRmFjdG9yLCBtX21heFBhZ2VTY2FsZUZhY3Rvcik7CkBA
IC0yNjAsNyArMjY0LDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmZpbmlzaENvbW1pdE9uSW1w
bFRocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBob3N0SW1wbCkKICAgICBob3N0SW1wbC0+c2V0
VmlzaWJsZShtX3Zpc2libGUpOwogICAgIGhvc3RJbXBsLT5zZXRTb3VyY2VGcmFtZUNhbkJlRHJh
d24obV9mcmFtZUlzRm9yRGlzcGxheSk7CiAKLSAgICBtX2ZyYW1lTnVtYmVyKys7CisgICAgbV9j
b21taXROdW1iZXIrKzsKIH0KIAogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmNvbW1pdENvbXBsZXRl
KCkKQEAgLTMxMyw2ICszMTcsMTIgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmZpbmlzaEFsbFJl
bmRlcmluZygpCiAgICAgbV9wcm94eS0+ZmluaXNoQWxsUmVuZGVyaW5nKCk7CiB9CiAKK3ZvaWQg
Q0NMYXllclRyZWVIb3N0OjpyZW5kZXJpbmdTdGF0cyhDQ1JlbmRlcmluZ1N0YXRzJiBzdGF0cykg
Y29uc3QKK3sKKyAgICBtX3Byb3h5LT5pbXBsU2lkZVJlbmRlcmluZ1N0YXRzKHN0YXRzKTsKKyAg
ICBzdGF0cy5udW1BbmltYXRpb25GcmFtZXMgPSBhbmltYXRpb25GcmFtZU51bWJlcigpOworfQor
CiBjb25zdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBDQ0xheWVyVHJlZUhvc3Q6OmxheWVy
UmVuZGVyZXJDYXBhYmlsaXRpZXMoKSBjb25zdAogewogICAgIHJldHVybiBtX3Byb3h5LT5sYXll
clJlbmRlcmVyQ2FwYWJpbGl0aWVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4
IDU4YjdkMmI4YzE4YzJiNDg1NGFjNmNjNTJiMjhmZjYwOGQ2ODFjYjYuLmY5NjYwNmQ0MzViZjFl
OGI3NTAxMzhlZjRhOTQ4NjFmNTI2MjgwOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5o
CkBAIC00Niw2ICs0Niw3IEBAIGNsYXNzIENDR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgQ0NMYXll
ckNocm9taXVtOwogY2xhc3MgQ0NMYXllclRyZWVIb3N0SW1wbDsKIGNsYXNzIENDTGF5ZXJUcmVl
SG9zdEltcGxDbGllbnQ7CitjbGFzcyBDQ1JlbmRlcmluZ1N0YXRzOwogc3RydWN0IENDU2Nyb2xs
QW5kU2NhbGVTZXQ7CiBjbGFzcyBDQ1RleHR1cmVVcGRhdGVyOwogY2xhc3MgTWFuYWdlZFRleHR1
cmU7CkBAIC0xOTIsNyArMTkzLDExIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZmluaXNoQWxsUmVu
ZGVyaW5nKCk7CiAKLSAgICBpbnQgZnJhbWVOdW1iZXIoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1l
TnVtYmVyOyB9CisgICAgaW50IGFuaW1hdGlvbkZyYW1lTnVtYmVyKCkgY29uc3QgeyByZXR1cm4g
bV9hbmltYXRpb25GcmFtZU51bWJlcjsgfQorCisgICAgaW50IGNvbW1pdE51bWJlcigpIGNvbnN0
IHsgcmV0dXJuIG1fY29tbWl0TnVtYmVyOyB9CisKKyAgICB2b2lkIHJlbmRlcmluZ1N0YXRzKEND
UmVuZGVyaW5nU3RhdHMmKSBjb25zdDsKIAogICAgIGNvbnN0IExheWVyUmVuZGVyZXJDYXBhYmls
aXRpZXMmIGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKSBjb25zdDsKIApAQCAtMjgwLDcgKzI4
NSw4IEBAIHByaXZhdGU6CiAKICAgICBDQ0xheWVyVHJlZUhvc3RDbGllbnQqIG1fY2xpZW50Owog
Ci0gICAgaW50IG1fZnJhbWVOdW1iZXI7CisgICAgaW50IG1fYW5pbWF0aW9uRnJhbWVOdW1iZXI7
CisgICAgaW50IG1fY29tbWl0TnVtYmVyOwogICAgIGJvb2wgbV9mcmFtZUlzRm9yRGlzcGxheTsK
IAogICAgIE93blB0cjxDQ1Byb3h5PiBtX3Byb3h5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3RJbXBsLmNwcAppbmRleCA5NDE0MWQ2OWI1NGI5ZWQyYTAxNWJlYzU4Y2Q3ZmMxOWE2ZWNm
MjQzLi5kOGNiZTFlMDk3ODIwNDZlYTA1NDdiYjliYjQ0MWY3NzcwM2VhYThiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3RJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcApAQCAtMTEzLDcgKzExMyw3IEBAIFBhc3NP
d25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gQ0NMYXllclRyZWVIb3N0SW1wbDo6Y3JlYXRlKGNv
bnN0IENDTGF5ZXJUcmVlU2V0CiBDQ0xheWVyVHJlZUhvc3RJbXBsOjpDQ0xheWVyVHJlZUhvc3RJ
bXBsKGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdzLCBDQ0xheWVyVHJlZUhvc3RJ
bXBsQ2xpZW50KiBjbGllbnQpCiAgICAgOiBtX2NsaWVudChjbGllbnQpCiAgICAgLCBtX3NvdXJj
ZUZyYW1lTnVtYmVyKC0xKQotICAgICwgbV9mcmFtZU51bWJlcigwKQorICAgICwgbV9zb3VyY2VB
bmltYXRpb25GcmFtZU51bWJlcigwKQogICAgICwgbV9yb290U2Nyb2xsTGF5ZXJJbXBsKDApCiAg
ICAgLCBtX2N1cnJlbnRseVNjcm9sbGluZ0xheWVySW1wbCgwKQogICAgICwgbV9zY3JvbGxpbmdM
YXllcklkRnJvbVByZXZpb3VzVHJlZSgtMSkKQEAgLTUwNSw3ICs1MDUsNyBAQCB2b2lkIENDTGF5
ZXJUcmVlSG9zdEltcGw6OmRyYXdMYXllcnMoY29uc3QgRnJhbWVEYXRhJiBmcmFtZSkKIAogICAg
IG1fbGF5ZXJSZW5kZXJlci0+ZmluaXNoRHJhd2luZ0ZyYW1lKCk7CiAKLSAgICArK21fZnJhbWVO
dW1iZXI7CisgICAgKyttX3NvdXJjZUFuaW1hdGlvbkZyYW1lTnVtYmVyOwogCiAgICAgLy8gVGhl
IG5leHQgZnJhbWUgc2hvdWxkIHN0YXJ0IGJ5IGFzc3VtaW5nIG5vdGhpbmcgaGFzIGNoYW5nZWQs
IGFuZCBjaGFuZ2VzIGFyZSBub3RlZCBhcyB0aGV5IG9jY3VyLgogICAgIG1fcm9vdExheWVySW1w
bC0+cmVzZXRBbGxDaGFuZ2VUcmFja2luZ0ZvclN1YnRyZWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdElt
cGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdEltcGwuaAppbmRleCA4Mjc5MTI0ODdmMjBiMDE3NjdlNDQxNjk3ZTQzZDhmY2Ez
NGJhMzVhLi4wNzViNWUwM2Y1MjExZTM4YThmYWJlYjE3MzA3YmZmZjYxYmJhNDFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3RJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCkBAIC0xMTksNyArMTE5LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0Rm9udEF0bGFzKFBhc3NPd25QdHI8Q0NGb250QXRsYXM+KTsKIAogICAg
IHZvaWQgZmluaXNoQWxsUmVuZGVyaW5nKCk7Ci0gICAgaW50IGZyYW1lTnVtYmVyKCkgY29uc3Qg
eyByZXR1cm4gbV9mcmFtZU51bWJlcjsgfQorICAgIGludCBzb3VyY2VBbmltYXRpb25GcmFtZU51
bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQW5pbWF0aW9uRnJhbWVOdW1iZXI7IH0KIAog
ICAgIGJvb2wgaW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoUGFzc1JlZlB0cjxDQ0dyYXBoaWNzQ29u
dGV4dD4sIFRleHR1cmVVcGxvYWRlck9wdGlvbik7CiAgICAgYm9vbCBpc0NvbnRleHRMb3N0KCk7
CkBAIC0xOTYsNyArMTk2LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgQ0NMYXllclRyZWVIb3N0SW1w
bENsaWVudCogbV9jbGllbnQ7CiAgICAgaW50IG1fc291cmNlRnJhbWVOdW1iZXI7Ci0gICAgaW50
IG1fZnJhbWVOdW1iZXI7CisgICAgaW50IG1fc291cmNlQW5pbWF0aW9uRnJhbWVOdW1iZXI7CiAK
IHByaXZhdGU6CiAgICAgdm9pZCBjb21wdXRlRG91YmxlVGFwWm9vbURlbHRhcyhDQ1Njcm9sbEFu
ZFNjYWxlU2V0KiBzY3JvbGxJbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaAppbmRleCBmYjJjYmJhZTk2ZjA3MzMw
MDc1YzI1MzM1ZGJhMDdlNTlhNWQyZTJmLi4zZGM2MGIzYzY1MzkwZGUwMTcyZmRiODAzOGVlMGE0
ZGIzNDIyY2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1Byb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCkBAIC0zNCw2ICszNCw3IEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIENDRm9udEF0bGFzOworY2xhc3MgQ0NSZW5kZXJpbmdTdGF0czsKIGNs
YXNzIENDVGhyZWFkOwogY2xhc3MgQ0NHcmFwaGljc0NvbnRleHQ7CiBzdHJ1Y3QgTGF5ZXJSZW5k
ZXJlckNhcGFiaWxpdGllczsKQEAgLTc5LDYgKzgwLDggQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCBpbnQgY29tcG9zaXRvcklkZW50aWZpZXIoKSBjb25zdCA9IDA7CiAKKyAgICB2aXJ0dWFsIHZv
aWQgaW1wbFNpZGVSZW5kZXJpbmdTdGF0cyhDQ1JlbmRlcmluZ1N0YXRzJikgPSAwOworCiAgICAg
dmlydHVhbCBjb25zdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBsYXllclJlbmRlcmVyQ2Fw
YWJpbGl0aWVzKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzQW5pbWF0
ZSgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUmVuZGVyaW5nU3RhdHMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyaW5nU3RhdHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNjljOGUw
MjY4NGVjMmU1MDAzZjMyMDQ3MGQwOWNjZTkwZWYxMTYyCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJpbmdTdGF0
cy5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ0NSZW5kZXJpbmdT
dGF0c19oCisjZGVmaW5lIENDUmVuZGVyaW5nU3RhdHNfaAorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK3N0cnVjdCBDQ1JlbmRlcmluZ1N0YXRzIHsKKyAgICBpbnQgbnVtQW5pbWF0aW9uRnJhbWVz
OworICAgIGludCBudW1GcmFtZXNTZW50VG9TY3JlZW47CisKKyAgICBDQ1JlbmRlcmluZ1N0YXRz
KCkKKyAgICAgICAgOiBudW1BbmltYXRpb25GcmFtZXMoMCkKKyAgICAgICAgLCBudW1GcmFtZXNT
ZW50VG9TY3JlZW4oMCkKKyAgICB7CisgICAgfQorfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xl
VGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKaW5kZXggMTRjZGYxYzA4MDhiMzUxYzRkMGFj
MjZhODdjNjBiM2JhNWFlMDQzZS4uYzBmNzdhZmExZWQxNDVjMTljNTFjZDQ1MTQzOGUyMmU0NGI4
MjRjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKQEAgLTMxLDYg
KzMxLDcgQEAKICNpbmNsdWRlICJjYy9DQ0ZvbnRBdGxhcy5oIgogI2luY2x1ZGUgImNjL0NDR3Jh
cGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCisjaW5jbHVk
ZSAiY2MvQ0NSZW5kZXJpbmdTdGF0cy5oIgogI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIu
aCIKICNpbmNsdWRlICJjYy9DQ1RpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+
CkBAIC0xOTgsNiArMTk5LDExIEBAIGJvb2wgQ0NTaW5nbGVUaHJlYWRQcm94eTo6cmVjcmVhdGVD
b250ZXh0KCkKICAgICByZXR1cm4gaW5pdGlhbGl6ZWQ7CiB9CiAKK3ZvaWQgQ0NTaW5nbGVUaHJl
YWRQcm94eTo6aW1wbFNpZGVSZW5kZXJpbmdTdGF0cyhDQ1JlbmRlcmluZ1N0YXRzJiBzdGF0cykK
K3sKKyAgICBzdGF0cy5udW1GcmFtZXNTZW50VG9TY3JlZW4gPSBtX2xheWVyVHJlZUhvc3RJbXBs
LT5zb3VyY2VBbmltYXRpb25GcmFtZU51bWJlcigpOworfQorCiBjb25zdCBMYXllclJlbmRlcmVy
Q2FwYWJpbGl0aWVzJiBDQ1NpbmdsZVRocmVhZFByb3h5OjpsYXllclJlbmRlcmVyQ2FwYWJpbGl0
aWVzKCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9sYXllclJlbmRlcmVySW5pdGlhbGl6ZWQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTaW5nbGVUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCmluZGV4IDkzYzEyOGJjODVhNzdhNzMy
YjE5YTJkZmZkYjcyMzYyYjVmOTJhNjEuLjJkN2JmNzY1MDAxMGU2MTQ0ZmYwOWE2NTI1NDA0Zjhj
ZWI3MmFiNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKQEAgLTUyLDYg
KzUyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpbml0aWFsaXplTGF5ZXJSZW5kZXJl
cigpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCByZWNyZWF0ZUNvbnRleHQoKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIGludCBjb21wb3NpdG9ySWRlbnRpZmllcigpIGNvbnN0IE9WRVJSSURF
IHsgcmV0dXJuIG1fY29tcG9zaXRvcklkZW50aWZpZXI7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaW1w
bFNpZGVSZW5kZXJpbmdTdGF0cyhDQ1JlbmRlcmluZ1N0YXRzJikgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCBjb25zdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBsYXllclJlbmRlcmVyQ2FwYWJp
bGl0aWVzKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGxvc2VDb250ZXh0KCkg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzQW5pbWF0ZSgpIE9WRVJSSURFOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAppbmRleCBhOWJmYmMxYTc4YWFlZDkzNjI0ODMwNDE4
NDgwOGRmY2JiNTlmZmZkLi40NTA5YTdlYTUzY2Q0MDRiYzJkODBlNzI1MTRmZTYzNTg0NThkMWQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1
ZGUgImNjL0NDR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiY2MvQ0NJbnB1dEhhbmRsZXIu
aCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKKyNpbmNsdWRlICJjYy9DQ1JlbmRl
cmluZ1N0YXRzLmgiCiAjaW5jbHVkZSAiY2MvQ0NTY2hlZHVsZXIuaCIKICNpbmNsdWRlICJjYy9D
Q1Njb3BlZFRocmVhZFByb3h5LmgiCiAjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgpA
QCAtMjY3LDYgKzI2OCwxNyBAQCBpbnQgQ0NUaHJlYWRQcm94eTo6Y29tcG9zaXRvcklkZW50aWZp
ZXIoKSBjb25zdAogICAgIHJldHVybiBtX2NvbXBvc2l0b3JJZGVudGlmaWVyOwogfQogCit2b2lk
IENDVGhyZWFkUHJveHk6OmltcGxTaWRlUmVuZGVyaW5nU3RhdHMoQ0NSZW5kZXJpbmdTdGF0cyYg
c3RhdHMpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIENDQ29tcGxldGlv
bkV2ZW50IGNvbXBsZXRpb247CisgICAgQ0NQcm94eTo6aW1wbFRocmVhZCgpLT5wb3N0VGFzayhj
cmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OmltcGxTaWRlUmVuZGVyaW5n
U3RhdHNPbkltcGxUaHJlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2VzcygmY29tcGxldGlvbiksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxs
b3dDcm9zc1RocmVhZEFjY2Vzcygmc3RhdHMpKSk7CisgICAgY29tcGxldGlvbi53YWl0KCk7Cit9
CisKIGNvbnN0IExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMmIENDVGhyZWFkUHJveHk6OmxheWVy
UmVuZGVyZXJDYXBhYmlsaXRpZXMoKSBjb25zdAogewogICAgIEFTU0VSVChtX2xheWVyUmVuZGVy
ZXJJbml0aWFsaXplZCk7CkBAIC04ODAsNCArODkyLDExIEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6
cmVjcmVhdGVDb250ZXh0T25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9u
LCBDCiAgICAgY29tcGxldGlvbi0+c2lnbmFsKCk7CiB9CiAKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6
aW1wbFNpZGVSZW5kZXJpbmdTdGF0c09uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29t
cGxldGlvbiwgQ0NSZW5kZXJpbmdTdGF0cyogc3RhdHMpCit7CisgICAgQVNTRVJUKGlzSW1wbFRo
cmVhZCgpKTsKKyAgICBzdGF0cy0+bnVtRnJhbWVzU2VudFRvU2NyZWVuID0gbV9sYXllclRyZWVI
b3N0SW1wbC0+c291cmNlQW5pbWF0aW9uRnJhbWVOdW1iZXIoKTsKKyAgICBjb21wbGV0aW9uLT5z
aWduYWwoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94
eS5oCmluZGV4IDU1MjFmMmYwNjNjMWVhZGEwYzlmNzYxMmY0OGY5N2JjODU4OWQzNDguLmNmZjYy
MDdjYmMyZjdlNmIwOTQ3ZmM3ZmY4Zjc2OWIwNDgyNWFjYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFBy
b3h5LmgKQEAgLTU5LDYgKzU5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpbml0aWFs
aXplTGF5ZXJSZW5kZXJlcigpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCByZWNyZWF0ZUNv
bnRleHQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGludCBjb21wb3NpdG9ySWRlbnRpZmllcigp
IGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBpbXBsU2lkZVJlbmRlcmluZ1N0YXRz
KENDUmVuZGVyaW5nU3RhdHMmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGNvbnN0IExheWVyUmVu
ZGVyZXJDYXBhYmlsaXRpZXMmIGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKSBjb25zdCBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgbG9zZUNvbnRleHQoKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0TmVlZHNBbmltYXRlKCkgT1ZFUlJJREU7CkBAIC0xNDAsNiArMTQxLDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHNldEZ1bGxSb290TGF5ZXJEYW1hZ2VPbkltcGxUaHJlYWQoKTsK
ICAgICB2b2lkIGFjcXVpcmVMYXllclRleHR1cmVzRm9yTWFpblRocmVhZE9uSW1wbFRocmVhZChD
Q0NvbXBsZXRpb25FdmVudCopOwogICAgIHZvaWQgcmVjcmVhdGVDb250ZXh0T25JbXBsVGhyZWFk
KENDQ29tcGxldGlvbkV2ZW50KiwgQ0NHcmFwaGljc0NvbnRleHQqLCBib29sKiByZWNyZWF0ZVN1
Y2NlZWRlZCwgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyopOworICAgIHZvaWQgaW1wbFNpZGVS
ZW5kZXJpbmdTdGF0c09uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCosIENDUmVuZGVyaW5n
U3RhdHMqKTsKICAgICBDQ1NjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwUmVzdWx0IHNjaGVkdWxl
ZEFjdGlvbkRyYXdBbmRTd2FwSW50ZXJuYWwoYm9vbCBmb3JjZWREcmF3KTsKICAgICB2b2lkIHNl
dEZvbnRBdGxhc09uSW1wbFRocmVhZChQYXNzT3duUHRyPENDRm9udEF0bGFzPik7CiAgICAgdm9p
ZCBmb3JjZVNlcmlhbGl6ZU9uU3dhcEJ1ZmZlcnNPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZl
bnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcu
aCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaAppbmRleCAxZTU4ODJk
MWEwYzNhZGQ4ODdlYWUzZTI4ZTkxZTZmNmU2YzhjZWE1Li5iNjYyMjJkNjRkMjczMGE5YTc1ZmJk
MjVhZmYxMjBiOWI0MTk3OTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmll
dy5oCkBAIC02Miw2ICs2Miw3IEBAIHN0cnVjdCBXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVy
czsKIHN0cnVjdCBXZWJNZWRpYVBsYXllckFjdGlvbjsKIHN0cnVjdCBXZWJQbHVnaW5BY3Rpb247
CiBzdHJ1Y3QgV2ViUG9pbnQ7CitzdHJ1Y3QgV2ViUmVuZGVyaW5nU3RhdHM7CiAKIGNsYXNzIFdl
YlZpZXcgOiBwdWJsaWMgV2ViV2lkZ2V0IHsKIHB1YmxpYzoKQEAgLTQ1NSw2ICs0NTYsMTAgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCBib29sIHNldEVkaXRhYmxlU2VsZWN0aW9uT2Zmc2V0cyhp
bnQgc3RhcnQsIGludCBlbmQpID0gMDsKIAorICAgIC8vIEZpbGxzIGluIGEgV2ViUmVuZGVyaW5n
U3RhdHMgc3RydWN0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHN0YXRlIG9mIHRo
ZSBjb21wb3NpdG9yLgorICAgIC8vIFRoaXMgY2FsbCBpcyByZWxhdGl2ZWx5IGV4cGVuc2l2ZSBp
biB0aHJlYWRlZCBtb2RlIGFzIGl0IGJsb2NrcyBvbiB0aGUgY29tcG9zaXRvciB0aHJlYWQuCisg
ICAgdmlydHVhbCB2b2lkIHJlbmRlcmluZ1N0YXRzKFdlYlJlbmRlcmluZ1N0YXRzJikgY29uc3Qg
eyB9CisKICAgICAvLyBWaXNpYmlsaXR5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKICAgICAvLyBTZXRzIHRoZSB2aXNpYmlsaXR5
IG9mIHRoZSBXZWJWaWV3LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViTGF5ZXJUcmVlVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXll
clRyZWVWaWV3LmNwcAppbmRleCAzNTZhZjFkZTIzZmNkODA1YjZiNDFmZGZmOGQ4MDg3Y2Q4Nzli
ZjYwLi4xMWVmYThmZmNlNWI4ZDJjZDI3MTFlZWE2YjI3NTY4ODZlZGI4NTJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcApAQCAtMzEsMTAg
KzMxLDEyIEBACiAjaW5jbHVkZSAiV2ViTGF5ZXJUcmVlVmlld0ltcGwuaCIKICNpbmNsdWRlICJj
Yy9DQ0dyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgor
I2luY2x1ZGUgImNjL0NDUmVuZGVyaW5nU3RhdHMuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJM
YXllci5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlBvaW50LmgiCiAjaW5jbHVkZSAicGxhdGZv
cm0vV2ViUmVjdC5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlNpemUuaCIKKyNpbmNsdWRlICJw
dWJsaWMvV2ViUmVuZGVyaW5nU3RhdHMuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
QEAgLTE3OCw2ICsxODAsMTUgQEAgV2ViR3JhcGhpY3NDb250ZXh0M0QqIFdlYkxheWVyVHJlZVZp
ZXc6OmNvbnRleHQoKQogICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmV4dHJh
Y3RXZWJHcmFwaGljc0NvbnRleHQzRChtX3ByaXZhdGUtPmxheWVyVHJlZUhvc3QoKS0+Y29udGV4
dCgpLT5jb250ZXh0M0QoKSk7CiB9CiAKK3ZvaWQgV2ViTGF5ZXJUcmVlVmlldzo6cmVuZGVyaW5n
U3RhdHMoV2ViUmVuZGVyaW5nU3RhdHMmIHN0YXRzKSBjb25zdAoreworICAgIENDUmVuZGVyaW5n
U3RhdHMgY2NTdGF0czsKKyAgICBtX3ByaXZhdGUtPmxheWVyVHJlZUhvc3QoKS0+cmVuZGVyaW5n
U3RhdHMoY2NTdGF0cyk7CisKKyAgICBzdGF0cy5udW1BbmltYXRpb25GcmFtZXMgPSBjY1N0YXRz
Lm51bUFuaW1hdGlvbkZyYW1lczsKKyAgICBzdGF0cy5udW1GcmFtZXNTZW50VG9TY3JlZW4gPSBj
Y1N0YXRzLm51bUZyYW1lc1NlbnRUb1NjcmVlbjsKK30KKwogdm9pZCBXZWJMYXllclRyZWVWaWV3
Ojpsb3NlQ29tcG9zaXRvckNvbnRleHQoaW50IG51bVRpbWVzKQogewogICAgIG1fcHJpdmF0ZS0+
bGF5ZXJUcmVlSG9zdCgpLT5sb3NlQ29udGV4dChudW1UaW1lcyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggNTVhMTA5ZTE0YjJkZTJmNTg1YWMwMTMy
ZDY3YWU3ZDI1ZGI0NmQ5YS4uZjdhZTRjY2UwZTNkOWIzMmIzZDQ0NDk3ZDQ3MGI0M2Y4ZDgyNGMx
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtNzI4
LDYgKzcyOCwxNCBAQCB2b2lkIFdlYlZpZXdJbXBsOjp0cmFuc2ZlckFjdGl2ZVdoZWVsRmxpbmdB
bmltYXRpb24oY29uc3QgV2ViQWN0aXZlV2hlZWxGbGluZ1BhcgogICAgIHNjaGVkdWxlQW5pbWF0
aW9uKCk7CiB9CiAKK3ZvaWQgV2ViVmlld0ltcGw6OnJlbmRlcmluZ1N0YXRzKFdlYlJlbmRlcmlu
Z1N0YXRzJiBzdGF0cykgY29uc3QKK3sKKyAgICBpZiAoIWlzQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0FjdGl2ZSgpKQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBpZiAoIW1fbGF5
ZXJUcmVlVmlldy5pc051bGwoKSkKKyAgICAgICAgbV9sYXllclRyZWVWaWV3LnJlbmRlcmluZ1N0
YXRzKHN0YXRzKTsKK30KKwogdm9pZCBXZWJWaWV3SW1wbDo6c3RhcnRQYWdlU2NhbGVBbmltYXRp
b24oY29uc3QgSW50UG9pbnQmIHNjcm9sbCwgYm9vbCB1c2VBbmNob3IsIGZsb2F0IG5ld1NjYWxl
LCBkb3VibGUgZHVyYXRpb25TZWMpCiB7CiAgICAgaWYgKCFtX2xheWVyVHJlZVZpZXcuaXNOdWxs
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5o
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCA3MGM2MjJj
ZmU5MWU2MGYzNjNjMTFlZjgzZjNkODVlYjI3ZDJlNDQ2Li4wYTkxMmYzYTUzYmZlNjE1NDkyNGQ4
ZTcwMzg4OGFlOWJmMDZjNDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmgKQEAgLTI5Miw2ICsyOTIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZUJhdHRlcnlTdGF0dXMoY29uc3QgV2ViQmF0dGVyeVN0YXR1cyYpOwogI2VuZGlmCiAgICAgdmly
dHVhbCB2b2lkIHRyYW5zZmVyQWN0aXZlV2hlZWxGbGluZ0FuaW1hdGlvbihjb25zdCBXZWJBY3Rp
dmVXaGVlbEZsaW5nUGFyYW1ldGVycyYpOworICAgIHZpcnR1YWwgdm9pZCByZW5kZXJpbmdTdGF0
cyhXZWJSZW5kZXJpbmdTdGF0cyYpIGNvbnN0OwogCiAgICAgLy8gV2ViTGF5ZXJUcmVlVmlld0Ns
aWVudAogICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVnaW5GcmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5kZXggNGEy
ZmQzMWE5MzQ0YTYyZDFmMDM2YTc2MGE4Mjg0M2QyNzAyNWNkOC4uMTJmM2E4MjQ3OTRlOGNkNDY1
NDQ1NTMyMGQ4MDM5NGY4YmYxNWIzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCkBAIC04MzIsNyArODMyLDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKQogICAgIHsKICAgICAgICAgTGF5ZXJDaHJv
bWl1bSogcm9vdCA9IG1fbGF5ZXJUcmVlSG9zdC0+cm9vdExheWVyKCk7Ci0gICAgICAgIGlmICgh
bV9sYXllclRyZWVIb3N0LT5mcmFtZU51bWJlcigpKQorICAgICAgICBpZiAoIW1fbGF5ZXJUcmVl
SG9zdC0+Y29tbWl0TnVtYmVyKCkpCiAgICAgICAgICAgICBFWFBFQ1RfRVEocm9vdC0+c2Nyb2xs
UG9zaXRpb24oKSwgbV9pbml0aWFsU2Nyb2xsKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
ICBFWFBFQ1RfRVEocm9vdC0+c2Nyb2xsUG9zaXRpb24oKSwgbV9pbml0aWFsU2Nyb2xsICsgbV9z
Y3JvbGxBbW91bnQpOwpAQCAtOTE4LDcgKzkxOCw3IEBAIHB1YmxpYzoKICAgICAgICAgcm9vdC0+
c2V0U2Nyb2xsYWJsZSh0cnVlKTsKICAgICAgICAgcm9vdC0+c2V0TWF4U2Nyb2xsUG9zaXRpb24o
SW50U2l6ZSgxMDAsIDEwMCkpOwogCi0gICAgICAgIGlmICghaW1wbC0+c291cmNlRnJhbWVOdW1i
ZXIoKSAmJiBpbXBsLT5mcmFtZU51bWJlcigpID09IDEpIHsKKyAgICAgICAgaWYgKCFpbXBsLT5z
b3VyY2VGcmFtZU51bWJlcigpICYmIGltcGwtPnNvdXJjZUFuaW1hdGlvbkZyYW1lTnVtYmVyKCkg
PT0gMSkgewogICAgICAgICAgICAgLy8gRmlyc3QgZHJhdyBhZnRlciBmaXJzdCBjb21taXQuCiAg
ICAgICAgICAgICBFWFBFQ1RfRVEocm9vdC0+c2Nyb2xsRGVsdGEoKSwgSW50U2l6ZSgpKTsKICAg
ICAgICAgICAgIHJvb3QtPnNjcm9sbEJ5KG1fc2Nyb2xsQW1vdW50KTsKQEAgLTkyNiw3ICs5MjYs
NyBAQCBwdWJsaWM6CiAKICAgICAgICAgICAgIEVYUEVDVF9FUShyb290LT5zY3JvbGxQb3NpdGlv
bigpLCBtX2luaXRpYWxTY3JvbGwpOwogICAgICAgICAgICAgcG9zdFNldE5lZWRzUmVkcmF3VG9N
YWluVGhyZWFkKCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoIWltcGwtPnNvdXJjZUZyYW1lTnVtYmVy
KCkgJiYgaW1wbC0+ZnJhbWVOdW1iZXIoKSA9PSAyKSB7CisgICAgICAgIH0gZWxzZSBpZiAoIWlt
cGwtPnNvdXJjZUZyYW1lTnVtYmVyKCkgJiYgaW1wbC0+c291cmNlQW5pbWF0aW9uRnJhbWVOdW1i
ZXIoKSA9PSAyKSB7CiAgICAgICAgICAgICAvLyBTZWNvbmQgZHJhdyBhZnRlciBmaXJzdCBjb21t
aXQuCiAgICAgICAgICAgICBFWFBFQ1RfRVEocm9vdC0+c2Nyb2xsRGVsdGEoKSwgbV9zY3JvbGxB
bW91bnQpOwogICAgICAgICAgICAgcm9vdC0+c2Nyb2xsQnkobV9zY3JvbGxBbW91bnQpOwpAQCAt
OTM2LDcgKzkzNiw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHBvc3RTZXROZWVkc0NvbW1pdFRv
TWFpblRocmVhZCgpOwogICAgICAgICB9IGVsc2UgaWYgKGltcGwtPnNvdXJjZUZyYW1lTnVtYmVy
KCkgPT0gMSkgewogICAgICAgICAgICAgLy8gVGhpcmQgb3IgbGF0ZXIgZHJhdyBhZnRlciBzZWNv
bmQgY29tbWl0LgotICAgICAgICAgICAgRVhQRUNUX0dFKGltcGwtPmZyYW1lTnVtYmVyKCksIDMp
OworICAgICAgICAgICAgRVhQRUNUX0dFKGltcGwtPnNvdXJjZUFuaW1hdGlvbkZyYW1lTnVtYmVy
KCksIDMpOwogICAgICAgICAgICAgRVhQRUNUX0VRKHJvb3QtPnNjcm9sbERlbHRhKCksIEludFNp
emUoKSk7CiAgICAgICAgICAgICBFWFBFQ1RfRVEocm9vdC0+c2Nyb2xsUG9zaXRpb24oKSwgbV9p
bml0aWFsU2Nyb2xsICsgbV9zY3JvbGxBbW91bnQgKyBtX3Njcm9sbEFtb3VudCk7CiAgICAgICAg
ICAgICBlbmRUZXN0KCk7CkBAIC0xMDA5LDcgKzEwMDksNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIHZvaWQgZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCkKICAgICB7Ci0gICAgICAgIGludCBsYXN0
RnJhbWUgPSBtX2xheWVyVHJlZUhvc3QtPmZyYW1lTnVtYmVyKCkgLSAxOworICAgICAgICBpbnQg
bGFzdEZyYW1lID0gbV9sYXllclRyZWVIb3N0LT5jb21taXROdW1iZXIoKSAtIDE7CiAKICAgICAg
ICAgLy8gVGhlc2UgZnJhbWVzIHNob3VsZCBkcmF3LgogICAgICAgICBzd2l0Y2ggKGxhc3RGcmFt
ZSkgewpAQCAtMTA0MCw3ICsxMDQwLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRp
ZENvbW1pdCgpCiAgICAgewotICAgICAgICBpbnQgbGFzdEZyYW1lID0gbV9sYXllclRyZWVIb3N0
LT5mcmFtZU51bWJlcigpIC0gMTsKKyAgICAgICAgaW50IGxhc3RGcmFtZSA9IG1fbGF5ZXJUcmVl
SG9zdC0+Y29tbWl0TnVtYmVyKCkgLSAxOwogCiAgICAgICAgIC8vIFRoZXNlIGZyYW1lcyBzaG91
bGQgbm90IGRyYXcuCiAgICAgICAgIHN3aXRjaCAobGFzdEZyYW1lKSB7CkBAIC0yMzA4LDcgKzIz
MDgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luQ29tbWl0T25DQ1RocmVhZChD
Q0xheWVyVHJlZUhvc3RJbXBsKiBpbXBsKSBPVkVSUklERQogICAgIHsKICAgICAgICAgRVhQRUNU
X0VRKG1fcm9vdFNjcm9sbExheWVyLT5zY3JvbGxQb3NpdGlvbigpLCBJbnRQb2ludCgpKTsKLSAg
ICAgICAgaWYgKCFtX2xheWVyVHJlZUhvc3QtPmZyYW1lTnVtYmVyKCkpCisgICAgICAgIGlmICgh
bV9sYXllclRyZWVIb3N0LT5jb21taXROdW1iZXIoKSkKICAgICAgICAgICAgIEVYUEVDVF9FUSht
X2NoaWxkTGF5ZXItPnNjcm9sbFBvc2l0aW9uKCksIEludFBvaW50KCkpOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBFWFBFQ1RfRVEobV9jaGlsZExheWVyLT5zY3JvbGxQb3NpdGlvbigpLCBJ
bnRQb2ludCgpICsgbV9zY3JvbGxBbW91bnQpOwpAQCAtMjMxNiwxMSArMjMxNiwxMSBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVI
b3N0SW1wbCogaW1wbCkgT1ZFUlJJREUKICAgICB7Ci0gICAgICAgIGlmIChpbXBsLT5mcmFtZU51
bWJlcigpID09IDEpIHsKKyAgICAgICAgaWYgKGltcGwtPnNvdXJjZUFuaW1hdGlvbkZyYW1lTnVt
YmVyKCkgPT0gMSkgewogICAgICAgICAgICAgRVhQRUNUX0VRKGltcGwtPnNjcm9sbEJlZ2luKElu
dFBvaW50KDUsIDUpLCBDQ0lucHV0SGFuZGxlckNsaWVudDo6V2hlZWwpLCBDQ0lucHV0SGFuZGxl
ckNsaWVudDo6U2Nyb2xsU3RhcnRlZCk7CiAgICAgICAgICAgICBpbXBsLT5zY3JvbGxCeShtX3Nj
cm9sbEFtb3VudCk7CiAgICAgICAgICAgICBpbXBsLT5zY3JvbGxFbmQoKTsKLSAgICAgICAgfSBl
bHNlIGlmIChpbXBsLT5mcmFtZU51bWJlcigpID09IDIpCisgICAgICAgIH0gZWxzZSBpZiAoaW1w
bC0+c291cmNlQW5pbWF0aW9uRnJhbWVOdW1iZXIoKSA9PSAyKQogICAgICAgICAgICAgZW5kVGVz
dCgpOwogICAgIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149101</attachid>
            <date>2012-06-22 14:24:26 -0700</date>
            <delta_ts>2012-06-22 16:28:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88268-20120622142426.patch</filename>
            <type>text/plain</type>
            <size>28372</size>
            <attacher name="Dave Tu">dtu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMDE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAxODZiNWVhOWEyMTIw
NTlkMjQ4YWFmNDE0MjUwN2MxZjUzMGQzOGU1Li4zNmU5MTcyN2FiMmE4NjliODlmNzFiMTJhYjNj
NmZjYjcyNGYxYTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wNi0wNCAg
RGF2ZSBUdSAgPGR0dUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBFeHBvc2Ug
cmVuZGVyaW5nIHN0YXRpc3RpY3MgdG8gV2ViV2lkZ2V0LgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODgyNjgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgV2ViS2l0IHNpZGUgb2YgYSBiYXNpYyBmcmFt
ZXdvcmsgZm9yIGV4cG9zaW5nIHJlbmRlcmluZyBzdGF0aXN0aWNzCisgICAgICAgIHRvIENocm9t
aXVtJ3MgLS1lbmFibGUtYmVuY2htYXJraW5nIGV4dGVuc2lvbi4KKworICAgICAgICAqIGNocm9t
aXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Lmg6CisgICAgICAgIChXZWJSZW5kZXJpbmdTdGF0
aXN0aWNzKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJMYXllclRyZWVWaWV3KToK
KwogMjAxMi0wNi0yMCAgQ2hyaXN0b3BoZXIgQ2FtZXJvbiAgPGNjYW1lcm9uQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBbY2hyb21pdW1dIHdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5IGRvZXNu
J3Qgd29yayB3aXRoIHZpZGVvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTI2ODY3MmM5ZDBiMmM1NjM3MTViY2E2
YmQyOTE4NmFmOTc4ODlkZi4uOTg3ZGJkZjNlNjdkY2FkZDVjM2M1NmZhNjczNDkzZjdjNzg2NjEy
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTA2LTA0ICBEYXZlIFR1ICA8ZHR1
QGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEV4cG9zZSByZW5kZXJpbmcgc3Rh
dGlzdGljcyB0byBXZWJXaWRnZXQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04ODI2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoZSBXZWJLaXQgc2lkZSBvZiBhIGJhc2ljIGZyYW1ld29yayBmb3IgZXhw
b3NpbmcgcmVuZGVyaW5nIHN0YXRpc3RpY3MKKyAgICAgICAgdG8gQ2hyb21pdW0ncyAtLWVuYWJs
ZS1iZW5jaG1hcmtpbmcgZXh0ZW5zaW9uLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
VHJlZUhvc3Q6OmltcGxGcmFtZU51bWJlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NQcm94eS5oOgorICAgICAgICAoQ0NQcm94eSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6aW1wbEZyYW1lTnVtYmVyKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6aW1wbEZyYW1lTnVt
YmVyT25JbXBsVGhyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RocmVhZFByb3h5Lmg6CisgICAgICAgIChDQ1RocmVhZFByb3h5KToKKwogMjAxMi0wNi0y
MiAgQW15IE91c3RlcmhvdXQgIDxhb3VzdGVyaEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVu
YW1lZCBEZXZpY2VPcmllbnRhdGlvbiB0byBEZXZpY2VPcmllbnRhdGlvbkRhdGEKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKaW5kZXggMjUxNjk0YzIzNGQyM2NlNjgzODRkZTIzNDczODJmNjIxMmNl
NjZiNy4uMTliYTgzMTI2ZTE3MTBkNDQyOTNhOThkNTFjZjEyN2Q0ZDBhYmZkNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wNi0wNCAgRGF2ZSBUdSAg
PGR0dUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBFeHBvc2UgcmVuZGVyaW5n
IHN0YXRpc3RpY3MgdG8gV2ViV2lkZ2V0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODgyNjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGUgV2ViS2l0IHNpZGUgb2YgYSBiYXNpYyBmcmFtZXdvcmsgZm9y
IGV4cG9zaW5nIHJlbmRlcmluZyBzdGF0aXN0aWNzCisgICAgICAgIHRvIENocm9taXVtJ3MgLS1l
bmFibGUtYmVuY2htYXJraW5nIGV4dGVuc2lvbi4KKworICAgICAgICAqIHNyYy9XZWJMYXllclRy
ZWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlldzo6cmVuZGVyaW5n
U3RhdGlzdGljcyk6CisgICAgICAgIChXZWJLaXQpOgorCiAyMDEyLTA2LTIyICBBbXkgT3VzdGVy
aG91dCAgPGFvdXN0ZXJoQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW5hbWVkIERldmljZU9y
aWVudGF0aW9uIHRvIERldmljZU9yaWVudGF0aW9uRGF0YQpkaWZmIC0tZ2l0IGEvU291cmNlL1Bs
YXRmb3JtL1BsYXRmb3JtLmd5cGkgYi9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQppbmRl
eCBkNzlmODUzYjMxOWZmMTBmZjQ4YTFlMDBjYWJjZWU3N2VkZDYxZGM4Li43NWFkOTcyZmJmODI3
ODk1OTgwMTc0MmVhNDdlOWUzYjA3ODFhMzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0v
UGxhdGZvcm0uZ3lwaQorKysgYi9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQpAQCAtOTQs
NiArOTQsNyBAQAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJQcml2YXRlUHRyLmgn
LAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJSZWN0LmgnLAogICAgICAgICAgICAg
J2Nocm9taXVtL3B1YmxpYy9XZWJSZWZlcnJlclBvbGljeS5oJywKKyAgICAgICAgICAgICdjaHJv
bWl1bS9wdWJsaWMvV2ViUmVuZGVyaW5nU3RhdHMuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0v
cHVibGljL1dlYlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IuaCcsCiAgICAgICAgICAgICAn
Y2hyb21pdW0vcHVibGljL1dlYlNpemUuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGlj
L1dlYlNvY2tldFN0cmVhbUVycm9yLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21p
dW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaAppbmRleCBkNWQ5OWEyODU1OTIzMTA5YWVmMTRj
NWJlNWE0YWY1YzI0YmFlNTlmLi5mNjc5MzBkZDEwNTY4ZDExMWM0NmU5ZjNlYzlkMjdlMmM4ZmIw
ODkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVy
VHJlZVZpZXcuaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVy
VHJlZVZpZXcuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBXZWJMYXllclRyZWVWaWV3Q2xpZW50
OwogY2xhc3MgV2ViTGF5ZXJUcmVlVmlld0ltcGw7CiBzdHJ1Y3QgV2ViUG9pbnQ7CiBzdHJ1Y3Qg
V2ViUmVjdDsKK3N0cnVjdCBXZWJSZW5kZXJpbmdTdGF0czsKIAogY2xhc3MgV2ViTGF5ZXJUcmVl
VmlldyA6IHB1YmxpYyBXZWJOb25Db3B5YWJsZSB7CiBwdWJsaWM6CkBAIC0xNzMsNiArMTc0LDEw
IEBAIHB1YmxpYzoKIAogICAgIC8vIERlYnVnZ2luZyAvIGRhbmdlcm91cyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAorICAgIC8vIEZpbGxzIGluIGEgV2Vi
UmVuZGVyaW5nU3RhdHMgc3RydWN0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHN0
YXRlIG9mIHRoZSBjb21wb3NpdG9yLgorICAgIC8vIFRoaXMgY2FsbCBpcyByZWxhdGl2ZWx5IGV4
cGVuc2l2ZSBpbiB0aHJlYWRlZCBtb2RlIGFzIGl0IGJsb2NrcyBvbiB0aGUgY29tcG9zaXRvciB0
aHJlYWQuCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlbmRlcmluZ1N0YXRzKFdlYlJlbmRlcmlu
Z1N0YXRzJikgY29uc3Q7CisKICAgICAvLyBTaW11bGF0ZXMgYSBsb3N0IGNvbnRleHQuIEZvciB0
ZXN0aW5nIG9ubHkuCiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGxvc2VDb21wb3NpdG9yQ29udGV4
dChpbnQgbnVtVGltZXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0v
cHVibGljL1dlYlJlbmRlcmluZ1N0YXRzLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVi
bGljL1dlYlJlbmRlcmluZ1N0YXRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjE3Njk4NTViMDAzMjU4ZWQwNTBh
NWUxMDA5MTdhNDRlNWMyMWJjOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9j
aHJvbWl1bS9wdWJsaWMvV2ViUmVuZGVyaW5nU3RhdHMuaApAQCAtMCwwICsxLDQ0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBXZWJSZW5kZXJpbmdTdGF0c19oCisjZGVmaW5lIFdlYlJlbmRlcmluZ1N0YXRz
X2gKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBXZWJSZW5kZXJpbmdTdGF0cyB7Cisg
ICAgaW50IG51bUFuaW1hdGlvbkZyYW1lczsKKyAgICBpbnQgbnVtRnJhbWVzU2VudFRvU2NyZWVu
OworCisgICAgV2ViUmVuZGVyaW5nU3RhdHMoKQorICAgICAgICA6IG51bUFuaW1hdGlvbkZyYW1l
cygwKQorICAgICAgICAsIG51bUZyYW1lc1NlbnRUb1NjcmVlbigwKQorICAgIHsKKyAgICB9Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlJlbmRlcmluZ1N0YXRz
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQppbmRleCA4YWUwZTBjZWY5MTQ2NWFhMzkxNmRlNWM4MDgxYzJkMGM5
Y2ZmMDQ4Li43Y2U2MDE0MzRlZDNkYmZlOGZhOGVlOTMzNGI4ODFiOWY4MzNmNWQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCkBAIC0zNzUwLDYgKzM3NTAsNyBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmgnLAorICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyaW5nU3RhdHMuaCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmgn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFz
c0RyYXdRdWFkLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAppbmRleCBiYjZj
MDY0NjJiNDUxMDBiNDQ4N2Y3NjdiN2VlYTY3MTAzMzdjYWM0Li4yZTIxZDZkZmYwN2NjNGZiYWIz
NjNhZTIwZDU1OTRhNGZiMzgzOTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAK
QEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgiCiAj
aW5jbHVkZSAiY2MvQ0NPY2NsdXNpb25UcmFja2VyLmgiCiAjaW5jbHVkZSAiY2MvQ0NPdmVyZHJh
d01ldHJpY3MuaCIKKyNpbmNsdWRlICJjYy9DQ1JlbmRlcmluZ1N0YXRzLmgiCiAjaW5jbHVkZSAi
Y2MvQ0NTZXR0aW5ncy5oIgogI2luY2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIKICNp
bmNsdWRlICJjYy9DQ1RocmVhZFByb3h5LmgiCkBAIC03Miw3ICs3Myw4IEBAIENDTGF5ZXJUcmVl
SG9zdDo6Q0NMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdENsaWVudCogY2xpZW50LCBjb25z
dCBDQ0xheWVyVHJlCiAgICAgLCBtX2FuaW1hdGluZyhmYWxzZSkKICAgICAsIG1fbmVlZHNBbmlt
YXRlTGF5ZXJzKGZhbHNlKQogICAgICwgbV9jbGllbnQoY2xpZW50KQotICAgICwgbV9mcmFtZU51
bWJlcigwKQorICAgICwgbV9hbmltYXRpb25GcmFtZU51bWJlcigwKQorICAgICwgbV9jb21taXRO
dW1iZXIoMCkKICAgICAsIG1fZnJhbWVJc0ZvckRpc3BsYXkoZmFsc2UpCiAgICAgLCBtX2xheWVy
UmVuZGVyZXJJbml0aWFsaXplZChmYWxzZSkKICAgICAsIG1fY29udGV4dExvc3QoZmFsc2UpCkBA
IC0yMTksNiArMjIxLDggQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUFuaW1hdGlvbnMo
ZG91YmxlIG1vbm90b25pY0ZyYW1lQmVnaW5UaW1lKQogICAgIG1fY2xpZW50LT51cGRhdGVBbmlt
YXRpb25zKG1vbm90b25pY0ZyYW1lQmVnaW5UaW1lKTsKICAgICBhbmltYXRlTGF5ZXJzKG1vbm90
b25pY0ZyYW1lQmVnaW5UaW1lKTsKICAgICBtX2FuaW1hdGluZyA9IGZhbHNlOworCisgICAgbV9h
bmltYXRpb25GcmFtZU51bWJlcisrOwogfQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6bGF5b3V0
KCkKQEAgLTI1MSw3ICsyNTUsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6ZmluaXNoQ29tbWl0
T25JbXBsVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGhvc3RJbXBsKQogICAgIGlmIChyb290
TGF5ZXIoKSAmJiBtX25lZWRzQW5pbWF0ZUxheWVycykKICAgICAgICAgaG9zdEltcGwtPnNldE5l
ZWRzQW5pbWF0ZUxheWVycygpOwogCi0gICAgaG9zdEltcGwtPnNldFNvdXJjZUZyYW1lTnVtYmVy
KGZyYW1lTnVtYmVyKCkpOworICAgIGhvc3RJbXBsLT5zZXRTb3VyY2VGcmFtZU51bWJlcihjb21t
aXROdW1iZXIoKSk7CiAgICAgaG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZSh2aWV3cG9ydFNpemUo
KSk7CiAgICAgaG9zdEltcGwtPnNldERldmljZVNjYWxlRmFjdG9yKGRldmljZVNjYWxlRmFjdG9y
KCkpOwogICAgIGhvc3RJbXBsLT5zZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1pdHMobV9wYWdlU2Nh
bGVGYWN0b3IsIG1fbWluUGFnZVNjYWxlRmFjdG9yLCBtX21heFBhZ2VTY2FsZUZhY3Rvcik7CkBA
IC0yNjAsNyArMjY0LDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmZpbmlzaENvbW1pdE9uSW1w
bFRocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBob3N0SW1wbCkKICAgICBob3N0SW1wbC0+c2V0
VmlzaWJsZShtX3Zpc2libGUpOwogICAgIGhvc3RJbXBsLT5zZXRTb3VyY2VGcmFtZUNhbkJlRHJh
d24obV9mcmFtZUlzRm9yRGlzcGxheSk7CiAKLSAgICBtX2ZyYW1lTnVtYmVyKys7CisgICAgbV9j
b21taXROdW1iZXIrKzsKIH0KIAogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmNvbW1pdENvbXBsZXRl
KCkKQEAgLTMxMyw2ICszMTcsMTIgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmZpbmlzaEFsbFJl
bmRlcmluZygpCiAgICAgbV9wcm94eS0+ZmluaXNoQWxsUmVuZGVyaW5nKCk7CiB9CiAKK3ZvaWQg
Q0NMYXllclRyZWVIb3N0OjpyZW5kZXJpbmdTdGF0cyhDQ1JlbmRlcmluZ1N0YXRzJiBzdGF0cykg
Y29uc3QKK3sKKyAgICBtX3Byb3h5LT5pbXBsU2lkZVJlbmRlcmluZ1N0YXRzKHN0YXRzKTsKKyAg
ICBzdGF0cy5udW1BbmltYXRpb25GcmFtZXMgPSBhbmltYXRpb25GcmFtZU51bWJlcigpOworfQor
CiBjb25zdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBDQ0xheWVyVHJlZUhvc3Q6OmxheWVy
UmVuZGVyZXJDYXBhYmlsaXRpZXMoKSBjb25zdAogewogICAgIHJldHVybiBtX3Byb3h5LT5sYXll
clJlbmRlcmVyQ2FwYWJpbGl0aWVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4
IDU4YjdkMmI4YzE4YzJiNDg1NGFjNmNjNTJiMjhmZjYwOGQ2ODFjYjYuLmY5NjYwNmQ0MzViZjFl
OGI3NTAxMzhlZjRhOTQ4NjFmNTI2MjgwOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5o
CkBAIC00Niw2ICs0Niw3IEBAIGNsYXNzIENDR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgQ0NMYXll
ckNocm9taXVtOwogY2xhc3MgQ0NMYXllclRyZWVIb3N0SW1wbDsKIGNsYXNzIENDTGF5ZXJUcmVl
SG9zdEltcGxDbGllbnQ7CitjbGFzcyBDQ1JlbmRlcmluZ1N0YXRzOwogc3RydWN0IENDU2Nyb2xs
QW5kU2NhbGVTZXQ7CiBjbGFzcyBDQ1RleHR1cmVVcGRhdGVyOwogY2xhc3MgTWFuYWdlZFRleHR1
cmU7CkBAIC0xOTIsNyArMTkzLDExIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZmluaXNoQWxsUmVu
ZGVyaW5nKCk7CiAKLSAgICBpbnQgZnJhbWVOdW1iZXIoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1l
TnVtYmVyOyB9CisgICAgaW50IGFuaW1hdGlvbkZyYW1lTnVtYmVyKCkgY29uc3QgeyByZXR1cm4g
bV9hbmltYXRpb25GcmFtZU51bWJlcjsgfQorCisgICAgaW50IGNvbW1pdE51bWJlcigpIGNvbnN0
IHsgcmV0dXJuIG1fY29tbWl0TnVtYmVyOyB9CisKKyAgICB2b2lkIHJlbmRlcmluZ1N0YXRzKEND
UmVuZGVyaW5nU3RhdHMmKSBjb25zdDsKIAogICAgIGNvbnN0IExheWVyUmVuZGVyZXJDYXBhYmls
aXRpZXMmIGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKSBjb25zdDsKIApAQCAtMjgwLDcgKzI4
NSw4IEBAIHByaXZhdGU6CiAKICAgICBDQ0xheWVyVHJlZUhvc3RDbGllbnQqIG1fY2xpZW50Owog
Ci0gICAgaW50IG1fZnJhbWVOdW1iZXI7CisgICAgaW50IG1fYW5pbWF0aW9uRnJhbWVOdW1iZXI7
CisgICAgaW50IG1fY29tbWl0TnVtYmVyOwogICAgIGJvb2wgbV9mcmFtZUlzRm9yRGlzcGxheTsK
IAogICAgIE93blB0cjxDQ1Byb3h5PiBtX3Byb3h5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3RJbXBsLmNwcAppbmRleCA5NDE0MWQ2OWI1NGI5ZWQyYTAxNWJlYzU4Y2Q3ZmMxOWE2ZWNm
MjQzLi5kOGNiZTFlMDk3ODIwNDZlYTA1NDdiYjliYjQ0MWY3NzcwM2VhYThiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3RJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcApAQCAtMTEzLDcgKzExMyw3IEBAIFBhc3NP
d25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gQ0NMYXllclRyZWVIb3N0SW1wbDo6Y3JlYXRlKGNv
bnN0IENDTGF5ZXJUcmVlU2V0CiBDQ0xheWVyVHJlZUhvc3RJbXBsOjpDQ0xheWVyVHJlZUhvc3RJ
bXBsKGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdzLCBDQ0xheWVyVHJlZUhvc3RJ
bXBsQ2xpZW50KiBjbGllbnQpCiAgICAgOiBtX2NsaWVudChjbGllbnQpCiAgICAgLCBtX3NvdXJj
ZUZyYW1lTnVtYmVyKC0xKQotICAgICwgbV9mcmFtZU51bWJlcigwKQorICAgICwgbV9zb3VyY2VB
bmltYXRpb25GcmFtZU51bWJlcigwKQogICAgICwgbV9yb290U2Nyb2xsTGF5ZXJJbXBsKDApCiAg
ICAgLCBtX2N1cnJlbnRseVNjcm9sbGluZ0xheWVySW1wbCgwKQogICAgICwgbV9zY3JvbGxpbmdM
YXllcklkRnJvbVByZXZpb3VzVHJlZSgtMSkKQEAgLTUwNSw3ICs1MDUsNyBAQCB2b2lkIENDTGF5
ZXJUcmVlSG9zdEltcGw6OmRyYXdMYXllcnMoY29uc3QgRnJhbWVEYXRhJiBmcmFtZSkKIAogICAg
IG1fbGF5ZXJSZW5kZXJlci0+ZmluaXNoRHJhd2luZ0ZyYW1lKCk7CiAKLSAgICArK21fZnJhbWVO
dW1iZXI7CisgICAgKyttX3NvdXJjZUFuaW1hdGlvbkZyYW1lTnVtYmVyOwogCiAgICAgLy8gVGhl
IG5leHQgZnJhbWUgc2hvdWxkIHN0YXJ0IGJ5IGFzc3VtaW5nIG5vdGhpbmcgaGFzIGNoYW5nZWQs
IGFuZCBjaGFuZ2VzIGFyZSBub3RlZCBhcyB0aGV5IG9jY3VyLgogICAgIG1fcm9vdExheWVySW1w
bC0+cmVzZXRBbGxDaGFuZ2VUcmFja2luZ0ZvclN1YnRyZWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdElt
cGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdEltcGwuaAppbmRleCA4Mjc5MTI0ODdmMjBiMDE3NjdlNDQxNjk3ZTQzZDhmY2Ez
NGJhMzVhLi4wNzViNWUwM2Y1MjExZTM4YThmYWJlYjE3MzA3YmZmZjYxYmJhNDFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3RJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCkBAIC0xMTksNyArMTE5LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0Rm9udEF0bGFzKFBhc3NPd25QdHI8Q0NGb250QXRsYXM+KTsKIAogICAg
IHZvaWQgZmluaXNoQWxsUmVuZGVyaW5nKCk7Ci0gICAgaW50IGZyYW1lTnVtYmVyKCkgY29uc3Qg
eyByZXR1cm4gbV9mcmFtZU51bWJlcjsgfQorICAgIGludCBzb3VyY2VBbmltYXRpb25GcmFtZU51
bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQW5pbWF0aW9uRnJhbWVOdW1iZXI7IH0KIAog
ICAgIGJvb2wgaW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoUGFzc1JlZlB0cjxDQ0dyYXBoaWNzQ29u
dGV4dD4sIFRleHR1cmVVcGxvYWRlck9wdGlvbik7CiAgICAgYm9vbCBpc0NvbnRleHRMb3N0KCk7
CkBAIC0xOTYsNyArMTk2LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgQ0NMYXllclRyZWVIb3N0SW1w
bENsaWVudCogbV9jbGllbnQ7CiAgICAgaW50IG1fc291cmNlRnJhbWVOdW1iZXI7Ci0gICAgaW50
IG1fZnJhbWVOdW1iZXI7CisgICAgaW50IG1fc291cmNlQW5pbWF0aW9uRnJhbWVOdW1iZXI7CiAK
IHByaXZhdGU6CiAgICAgdm9pZCBjb21wdXRlRG91YmxlVGFwWm9vbURlbHRhcyhDQ1Njcm9sbEFu
ZFNjYWxlU2V0KiBzY3JvbGxJbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaAppbmRleCBmYjJjYmJhZTk2ZjA3MzMw
MDc1YzI1MzM1ZGJhMDdlNTlhNWQyZTJmLi4zZGM2MGIzYzY1MzkwZGUwMTcyZmRiODAzOGVlMGE0
ZGIzNDIyY2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1Byb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCkBAIC0zNCw2ICszNCw3IEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIENDRm9udEF0bGFzOworY2xhc3MgQ0NSZW5kZXJpbmdTdGF0czsKIGNs
YXNzIENDVGhyZWFkOwogY2xhc3MgQ0NHcmFwaGljc0NvbnRleHQ7CiBzdHJ1Y3QgTGF5ZXJSZW5k
ZXJlckNhcGFiaWxpdGllczsKQEAgLTc5LDYgKzgwLDggQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCBpbnQgY29tcG9zaXRvcklkZW50aWZpZXIoKSBjb25zdCA9IDA7CiAKKyAgICB2aXJ0dWFsIHZv
aWQgaW1wbFNpZGVSZW5kZXJpbmdTdGF0cyhDQ1JlbmRlcmluZ1N0YXRzJikgPSAwOworCiAgICAg
dmlydHVhbCBjb25zdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBsYXllclJlbmRlcmVyQ2Fw
YWJpbGl0aWVzKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzQW5pbWF0
ZSgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUmVuZGVyaW5nU3RhdHMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyaW5nU3RhdHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNjljOGUw
MjY4NGVjMmU1MDAzZjMyMDQ3MGQwOWNjZTkwZWYxMTYyCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJpbmdTdGF0
cy5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ0NSZW5kZXJpbmdT
dGF0c19oCisjZGVmaW5lIENDUmVuZGVyaW5nU3RhdHNfaAorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK3N0cnVjdCBDQ1JlbmRlcmluZ1N0YXRzIHsKKyAgICBpbnQgbnVtQW5pbWF0aW9uRnJhbWVz
OworICAgIGludCBudW1GcmFtZXNTZW50VG9TY3JlZW47CisKKyAgICBDQ1JlbmRlcmluZ1N0YXRz
KCkKKyAgICAgICAgOiBudW1BbmltYXRpb25GcmFtZXMoMCkKKyAgICAgICAgLCBudW1GcmFtZXNT
ZW50VG9TY3JlZW4oMCkKKyAgICB7CisgICAgfQorfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xl
VGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKaW5kZXggMTRjZGYxYzA4MDhiMzUxYzRkMGFj
MjZhODdjNjBiM2JhNWFlMDQzZS4uYzBmNzdhZmExZWQxNDVjMTljNTFjZDQ1MTQzOGUyMmU0NGI4
MjRjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKQEAgLTMxLDYg
KzMxLDcgQEAKICNpbmNsdWRlICJjYy9DQ0ZvbnRBdGxhcy5oIgogI2luY2x1ZGUgImNjL0NDR3Jh
cGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCisjaW5jbHVk
ZSAiY2MvQ0NSZW5kZXJpbmdTdGF0cy5oIgogI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIu
aCIKICNpbmNsdWRlICJjYy9DQ1RpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+
CkBAIC0xOTgsNiArMTk5LDExIEBAIGJvb2wgQ0NTaW5nbGVUaHJlYWRQcm94eTo6cmVjcmVhdGVD
b250ZXh0KCkKICAgICByZXR1cm4gaW5pdGlhbGl6ZWQ7CiB9CiAKK3ZvaWQgQ0NTaW5nbGVUaHJl
YWRQcm94eTo6aW1wbFNpZGVSZW5kZXJpbmdTdGF0cyhDQ1JlbmRlcmluZ1N0YXRzJiBzdGF0cykK
K3sKKyAgICBzdGF0cy5udW1GcmFtZXNTZW50VG9TY3JlZW4gPSBtX2xheWVyVHJlZUhvc3RJbXBs
LT5zb3VyY2VBbmltYXRpb25GcmFtZU51bWJlcigpOworfQorCiBjb25zdCBMYXllclJlbmRlcmVy
Q2FwYWJpbGl0aWVzJiBDQ1NpbmdsZVRocmVhZFByb3h5OjpsYXllclJlbmRlcmVyQ2FwYWJpbGl0
aWVzKCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9sYXllclJlbmRlcmVySW5pdGlhbGl6ZWQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTaW5nbGVUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCmluZGV4IDkzYzEyOGJjODVhNzdhNzMy
YjE5YTJkZmZkYjcyMzYyYjVmOTJhNjEuLjJkN2JmNzY1MDAxMGU2MTQ0ZmYwOWE2NTI1NDA0Zjhj
ZWI3MmFiNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKQEAgLTUyLDYg
KzUyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpbml0aWFsaXplTGF5ZXJSZW5kZXJl
cigpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCByZWNyZWF0ZUNvbnRleHQoKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIGludCBjb21wb3NpdG9ySWRlbnRpZmllcigpIGNvbnN0IE9WRVJSSURF
IHsgcmV0dXJuIG1fY29tcG9zaXRvcklkZW50aWZpZXI7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaW1w
bFNpZGVSZW5kZXJpbmdTdGF0cyhDQ1JlbmRlcmluZ1N0YXRzJikgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCBjb25zdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBsYXllclJlbmRlcmVyQ2FwYWJp
bGl0aWVzKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGxvc2VDb250ZXh0KCkg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzQW5pbWF0ZSgpIE9WRVJSSURFOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAppbmRleCBhOWJmYmMxYTc4YWFlZDkzNjI0ODMwNDE4
NDgwOGRmY2JiNTlmZmZkLi40NTA5YTdlYTUzY2Q0MDRiYzJkODBlNzI1MTRmZTYzNTg0NThkMWQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1
ZGUgImNjL0NDR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiY2MvQ0NJbnB1dEhhbmRsZXIu
aCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKKyNpbmNsdWRlICJjYy9DQ1JlbmRl
cmluZ1N0YXRzLmgiCiAjaW5jbHVkZSAiY2MvQ0NTY2hlZHVsZXIuaCIKICNpbmNsdWRlICJjYy9D
Q1Njb3BlZFRocmVhZFByb3h5LmgiCiAjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgpA
QCAtMjY3LDYgKzI2OCwxNyBAQCBpbnQgQ0NUaHJlYWRQcm94eTo6Y29tcG9zaXRvcklkZW50aWZp
ZXIoKSBjb25zdAogICAgIHJldHVybiBtX2NvbXBvc2l0b3JJZGVudGlmaWVyOwogfQogCit2b2lk
IENDVGhyZWFkUHJveHk6OmltcGxTaWRlUmVuZGVyaW5nU3RhdHMoQ0NSZW5kZXJpbmdTdGF0cyYg
c3RhdHMpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIENDQ29tcGxldGlv
bkV2ZW50IGNvbXBsZXRpb247CisgICAgQ0NQcm94eTo6aW1wbFRocmVhZCgpLT5wb3N0VGFzayhj
cmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OmltcGxTaWRlUmVuZGVyaW5n
U3RhdHNPbkltcGxUaHJlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2VzcygmY29tcGxldGlvbiksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxs
b3dDcm9zc1RocmVhZEFjY2Vzcygmc3RhdHMpKSk7CisgICAgY29tcGxldGlvbi53YWl0KCk7Cit9
CisKIGNvbnN0IExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMmIENDVGhyZWFkUHJveHk6OmxheWVy
UmVuZGVyZXJDYXBhYmlsaXRpZXMoKSBjb25zdAogewogICAgIEFTU0VSVChtX2xheWVyUmVuZGVy
ZXJJbml0aWFsaXplZCk7CkBAIC04ODAsNCArODkyLDExIEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6
cmVjcmVhdGVDb250ZXh0T25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9u
LCBDCiAgICAgY29tcGxldGlvbi0+c2lnbmFsKCk7CiB9CiAKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6
aW1wbFNpZGVSZW5kZXJpbmdTdGF0c09uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29t
cGxldGlvbiwgQ0NSZW5kZXJpbmdTdGF0cyogc3RhdHMpCit7CisgICAgQVNTRVJUKGlzSW1wbFRo
cmVhZCgpKTsKKyAgICBzdGF0cy0+bnVtRnJhbWVzU2VudFRvU2NyZWVuID0gbV9sYXllclRyZWVI
b3N0SW1wbC0+c291cmNlQW5pbWF0aW9uRnJhbWVOdW1iZXIoKTsKKyAgICBjb21wbGV0aW9uLT5z
aWduYWwoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94
eS5oCmluZGV4IDU1MjFmMmYwNjNjMWVhZGEwYzlmNzYxMmY0OGY5N2JjODU4OWQzNDguLmNmZjYy
MDdjYmMyZjdlNmIwOTQ3ZmM3ZmY4Zjc2OWIwNDgyNWFjYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFBy
b3h5LmgKQEAgLTU5LDYgKzU5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpbml0aWFs
aXplTGF5ZXJSZW5kZXJlcigpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCByZWNyZWF0ZUNv
bnRleHQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGludCBjb21wb3NpdG9ySWRlbnRpZmllcigp
IGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBpbXBsU2lkZVJlbmRlcmluZ1N0YXRz
KENDUmVuZGVyaW5nU3RhdHMmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGNvbnN0IExheWVyUmVu
ZGVyZXJDYXBhYmlsaXRpZXMmIGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKSBjb25zdCBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgbG9zZUNvbnRleHQoKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0TmVlZHNBbmltYXRlKCkgT1ZFUlJJREU7CkBAIC0xNDAsNiArMTQxLDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHNldEZ1bGxSb290TGF5ZXJEYW1hZ2VPbkltcGxUaHJlYWQoKTsK
ICAgICB2b2lkIGFjcXVpcmVMYXllclRleHR1cmVzRm9yTWFpblRocmVhZE9uSW1wbFRocmVhZChD
Q0NvbXBsZXRpb25FdmVudCopOwogICAgIHZvaWQgcmVjcmVhdGVDb250ZXh0T25JbXBsVGhyZWFk
KENDQ29tcGxldGlvbkV2ZW50KiwgQ0NHcmFwaGljc0NvbnRleHQqLCBib29sKiByZWNyZWF0ZVN1
Y2NlZWRlZCwgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyopOworICAgIHZvaWQgaW1wbFNpZGVS
ZW5kZXJpbmdTdGF0c09uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCosIENDUmVuZGVyaW5n
U3RhdHMqKTsKICAgICBDQ1NjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwUmVzdWx0IHNjaGVkdWxl
ZEFjdGlvbkRyYXdBbmRTd2FwSW50ZXJuYWwoYm9vbCBmb3JjZWREcmF3KTsKICAgICB2b2lkIHNl
dEZvbnRBdGxhc09uSW1wbFRocmVhZChQYXNzT3duUHRyPENDRm9udEF0bGFzPik7CiAgICAgdm9p
ZCBmb3JjZVNlcmlhbGl6ZU9uU3dhcEJ1ZmZlcnNPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZl
bnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcu
aCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaAppbmRleCAxZTU4ODJk
MWEwYzNhZGQ4ODdlYWUzZTI4ZTkxZTZmNmU2YzhjZWE1Li5iNjYyMjJkNjRkMjczMGE5YTc1ZmJk
MjVhZmYxMjBiOWI0MTk3OTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmll
dy5oCkBAIC02Miw2ICs2Miw3IEBAIHN0cnVjdCBXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVy
czsKIHN0cnVjdCBXZWJNZWRpYVBsYXllckFjdGlvbjsKIHN0cnVjdCBXZWJQbHVnaW5BY3Rpb247
CiBzdHJ1Y3QgV2ViUG9pbnQ7CitzdHJ1Y3QgV2ViUmVuZGVyaW5nU3RhdHM7CiAKIGNsYXNzIFdl
YlZpZXcgOiBwdWJsaWMgV2ViV2lkZ2V0IHsKIHB1YmxpYzoKQEAgLTQ1NSw2ICs0NTYsMTAgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCBib29sIHNldEVkaXRhYmxlU2VsZWN0aW9uT2Zmc2V0cyhp
bnQgc3RhcnQsIGludCBlbmQpID0gMDsKIAorICAgIC8vIEZpbGxzIGluIGEgV2ViUmVuZGVyaW5n
U3RhdHMgc3RydWN0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHN0YXRlIG9mIHRo
ZSBjb21wb3NpdG9yLgorICAgIC8vIFRoaXMgY2FsbCBpcyByZWxhdGl2ZWx5IGV4cGVuc2l2ZSBp
biB0aHJlYWRlZCBtb2RlIGFzIGl0IGJsb2NrcyBvbiB0aGUgY29tcG9zaXRvciB0aHJlYWQuCisg
ICAgdmlydHVhbCB2b2lkIHJlbmRlcmluZ1N0YXRzKFdlYlJlbmRlcmluZ1N0YXRzJikgY29uc3Qg
eyB9CisKICAgICAvLyBWaXNpYmlsaXR5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKICAgICAvLyBTZXRzIHRoZSB2aXNpYmlsaXR5
IG9mIHRoZSBXZWJWaWV3LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViTGF5ZXJUcmVlVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXll
clRyZWVWaWV3LmNwcAppbmRleCAzNTZhZjFkZTIzZmNkODA1YjZiNDFmZGZmOGQ4MDg3Y2Q4Nzli
ZjYwLi5jMmQ4NGZlN2RkYmIzZjZhYjI2NWEyOGUxMDIyMzUzYzY5MWEzN2FjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcApAQCAtMzEsMTAg
KzMxLDEyIEBACiAjaW5jbHVkZSAiV2ViTGF5ZXJUcmVlVmlld0ltcGwuaCIKICNpbmNsdWRlICJj
Yy9DQ0dyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgor
I2luY2x1ZGUgImNjL0NDUmVuZGVyaW5nU3RhdHMuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJM
YXllci5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlBvaW50LmgiCiAjaW5jbHVkZSAicGxhdGZv
cm0vV2ViUmVjdC5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlNpemUuaCIKKyNpbmNsdWRlIDxw
dWJsaWMvV2ViUmVuZGVyaW5nU3RhdHMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
QEAgLTE3OCw2ICsxODAsMTUgQEAgV2ViR3JhcGhpY3NDb250ZXh0M0QqIFdlYkxheWVyVHJlZVZp
ZXc6OmNvbnRleHQoKQogICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmV4dHJh
Y3RXZWJHcmFwaGljc0NvbnRleHQzRChtX3ByaXZhdGUtPmxheWVyVHJlZUhvc3QoKS0+Y29udGV4
dCgpLT5jb250ZXh0M0QoKSk7CiB9CiAKK3ZvaWQgV2ViTGF5ZXJUcmVlVmlldzo6cmVuZGVyaW5n
U3RhdHMoV2ViUmVuZGVyaW5nU3RhdHMmIHN0YXRzKSBjb25zdAoreworICAgIENDUmVuZGVyaW5n
U3RhdHMgY2NTdGF0czsKKyAgICBtX3ByaXZhdGUtPmxheWVyVHJlZUhvc3QoKS0+cmVuZGVyaW5n
U3RhdHMoY2NTdGF0cyk7CisKKyAgICBzdGF0cy5udW1BbmltYXRpb25GcmFtZXMgPSBjY1N0YXRz
Lm51bUFuaW1hdGlvbkZyYW1lczsKKyAgICBzdGF0cy5udW1GcmFtZXNTZW50VG9TY3JlZW4gPSBj
Y1N0YXRzLm51bUZyYW1lc1NlbnRUb1NjcmVlbjsKK30KKwogdm9pZCBXZWJMYXllclRyZWVWaWV3
Ojpsb3NlQ29tcG9zaXRvckNvbnRleHQoaW50IG51bVRpbWVzKQogewogICAgIG1fcHJpdmF0ZS0+
bGF5ZXJUcmVlSG9zdCgpLT5sb3NlQ29udGV4dChudW1UaW1lcyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggNTVhMTA5ZTE0YjJkZTJmNTg1YWMwMTMy
ZDY3YWU3ZDI1ZGI0NmQ5YS4uYTJlYjM4MjJhNWJmOTVmZWUwOWQ0ZDMyYzU3M2MwZDMxY2MyMjY0
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtNzI4
LDYgKzcyOCwxMyBAQCB2b2lkIFdlYlZpZXdJbXBsOjp0cmFuc2ZlckFjdGl2ZVdoZWVsRmxpbmdB
bmltYXRpb24oY29uc3QgV2ViQWN0aXZlV2hlZWxGbGluZ1BhcgogICAgIHNjaGVkdWxlQW5pbWF0
aW9uKCk7CiB9CiAKK3ZvaWQgV2ViVmlld0ltcGw6OnJlbmRlcmluZ1N0YXRzKFdlYlJlbmRlcmlu
Z1N0YXRzJiBzdGF0cykgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNBY2NlbGVyYXRlZENvbXBvc2l0
aW5nQWN0aXZlKCkpOworICAgIGlmICghbV9sYXllclRyZWVWaWV3LmlzTnVsbCgpKQorICAgICAg
ICBtX2xheWVyVHJlZVZpZXcucmVuZGVyaW5nU3RhdHMoc3RhdHMpOworfQorCiB2b2lkIFdlYlZp
ZXdJbXBsOjpzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBJbnRQb2ludCYgc2Nyb2xsLCBi
b29sIHVzZUFuY2hvciwgZmxvYXQgbmV3U2NhbGUsIGRvdWJsZSBkdXJhdGlvblNlYykKIHsKICAg
ICBpZiAoIW1fbGF5ZXJUcmVlVmlldy5pc051bGwoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5oCmluZGV4IDcwYzYyMmNmZTkxZTYwZjM2M2MxMWVmODNmM2Q4NWViMjdk
MmU0NDYuLjBhOTEyZjNhNTNiZmU2MTU0OTI0ZDhlNzAzODg4YWU5YmYwNmM0M2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAtMjkyLDYgKzI5Miw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQmF0dGVyeVN0YXR1cyhjb25zdCBXZWJCYXR0
ZXJ5U3RhdHVzJik7CiAjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmZXJBY3RpdmVXaGVl
bEZsaW5nQW5pbWF0aW9uKGNvbnN0IFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJik7Cisg
ICAgdmlydHVhbCB2b2lkIHJlbmRlcmluZ1N0YXRzKFdlYlJlbmRlcmluZ1N0YXRzJikgY29uc3Q7
CiAKICAgICAvLyBXZWJMYXllclRyZWVWaWV3Q2xpZW50CiAgICAgdmlydHVhbCB2b2lkIHdpbGxC
ZWdpbkZyYW1lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
TGF5ZXJUcmVlSG9zdFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xh
eWVyVHJlZUhvc3RUZXN0LmNwcAppbmRleCA0YTJmZDMxYTkzNDRhNjJkMWYwMzZhNzYwYTgyODQz
ZDI3MDI1Y2Q4Li4xMmYzYTgyNDc5NGU4Y2Q0NjU0NDU1MzIwZDgwMzk0ZjhiZjE1YjM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVz
dC5jcHAKQEAgLTgzMiw3ICs4MzIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGxheW91
dCgpCiAgICAgewogICAgICAgICBMYXllckNocm9taXVtKiByb290ID0gbV9sYXllclRyZWVIb3N0
LT5yb290TGF5ZXIoKTsKLSAgICAgICAgaWYgKCFtX2xheWVyVHJlZUhvc3QtPmZyYW1lTnVtYmVy
KCkpCisgICAgICAgIGlmICghbV9sYXllclRyZWVIb3N0LT5jb21taXROdW1iZXIoKSkKICAgICAg
ICAgICAgIEVYUEVDVF9FUShyb290LT5zY3JvbGxQb3NpdGlvbigpLCBtX2luaXRpYWxTY3JvbGwp
OwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIEVYUEVDVF9FUShyb290LT5zY3JvbGxQb3Np
dGlvbigpLCBtX2luaXRpYWxTY3JvbGwgKyBtX3Njcm9sbEFtb3VudCk7CkBAIC05MTgsNyArOTE4
LDcgQEAgcHVibGljOgogICAgICAgICByb290LT5zZXRTY3JvbGxhYmxlKHRydWUpOwogICAgICAg
ICByb290LT5zZXRNYXhTY3JvbGxQb3NpdGlvbihJbnRTaXplKDEwMCwgMTAwKSk7CiAKLSAgICAg
ICAgaWYgKCFpbXBsLT5zb3VyY2VGcmFtZU51bWJlcigpICYmIGltcGwtPmZyYW1lTnVtYmVyKCkg
PT0gMSkgeworICAgICAgICBpZiAoIWltcGwtPnNvdXJjZUZyYW1lTnVtYmVyKCkgJiYgaW1wbC0+
c291cmNlQW5pbWF0aW9uRnJhbWVOdW1iZXIoKSA9PSAxKSB7CiAgICAgICAgICAgICAvLyBGaXJz
dCBkcmF3IGFmdGVyIGZpcnN0IGNvbW1pdC4KICAgICAgICAgICAgIEVYUEVDVF9FUShyb290LT5z
Y3JvbGxEZWx0YSgpLCBJbnRTaXplKCkpOwogICAgICAgICAgICAgcm9vdC0+c2Nyb2xsQnkobV9z
Y3JvbGxBbW91bnQpOwpAQCAtOTI2LDcgKzkyNiw3IEBAIHB1YmxpYzoKIAogICAgICAgICAgICAg
RVhQRUNUX0VRKHJvb3QtPnNjcm9sbFBvc2l0aW9uKCksIG1faW5pdGlhbFNjcm9sbCk7CiAgICAg
ICAgICAgICBwb3N0U2V0TmVlZHNSZWRyYXdUb01haW5UaHJlYWQoKTsKLSAgICAgICAgfSBlbHNl
IGlmICghaW1wbC0+c291cmNlRnJhbWVOdW1iZXIoKSAmJiBpbXBsLT5mcmFtZU51bWJlcigpID09
IDIpIHsKKyAgICAgICAgfSBlbHNlIGlmICghaW1wbC0+c291cmNlRnJhbWVOdW1iZXIoKSAmJiBp
bXBsLT5zb3VyY2VBbmltYXRpb25GcmFtZU51bWJlcigpID09IDIpIHsKICAgICAgICAgICAgIC8v
IFNlY29uZCBkcmF3IGFmdGVyIGZpcnN0IGNvbW1pdC4KICAgICAgICAgICAgIEVYUEVDVF9FUShy
b290LT5zY3JvbGxEZWx0YSgpLCBtX3Njcm9sbEFtb3VudCk7CiAgICAgICAgICAgICByb290LT5z
Y3JvbGxCeShtX3Njcm9sbEFtb3VudCk7CkBAIC05MzYsNyArOTM2LDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgcG9zdFNldE5lZWRzQ29tbWl0VG9NYWluVGhyZWFkKCk7CiAgICAgICAgIH0gZWxz
ZSBpZiAoaW1wbC0+c291cmNlRnJhbWVOdW1iZXIoKSA9PSAxKSB7CiAgICAgICAgICAgICAvLyBU
aGlyZCBvciBsYXRlciBkcmF3IGFmdGVyIHNlY29uZCBjb21taXQuCi0gICAgICAgICAgICBFWFBF
Q1RfR0UoaW1wbC0+ZnJhbWVOdW1iZXIoKSwgMyk7CisgICAgICAgICAgICBFWFBFQ1RfR0UoaW1w
bC0+c291cmNlQW5pbWF0aW9uRnJhbWVOdW1iZXIoKSwgMyk7CiAgICAgICAgICAgICBFWFBFQ1Rf
RVEocm9vdC0+c2Nyb2xsRGVsdGEoKSwgSW50U2l6ZSgpKTsKICAgICAgICAgICAgIEVYUEVDVF9F
UShyb290LT5zY3JvbGxQb3NpdGlvbigpLCBtX2luaXRpYWxTY3JvbGwgKyBtX3Njcm9sbEFtb3Vu
dCArIG1fc2Nyb2xsQW1vdW50KTsKICAgICAgICAgICAgIGVuZFRlc3QoKTsKQEAgLTEwMDksNyAr
MTAwOSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRBbmREcmF3RnJh
bWUoKQogICAgIHsKLSAgICAgICAgaW50IGxhc3RGcmFtZSA9IG1fbGF5ZXJUcmVlSG9zdC0+ZnJh
bWVOdW1iZXIoKSAtIDE7CisgICAgICAgIGludCBsYXN0RnJhbWUgPSBtX2xheWVyVHJlZUhvc3Qt
PmNvbW1pdE51bWJlcigpIC0gMTsKIAogICAgICAgICAvLyBUaGVzZSBmcmFtZXMgc2hvdWxkIGRy
YXcuCiAgICAgICAgIHN3aXRjaCAobGFzdEZyYW1lKSB7CkBAIC0xMDQwLDcgKzEwNDAsNyBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0KCkKICAgICB7Ci0gICAgICAgIGlu
dCBsYXN0RnJhbWUgPSBtX2xheWVyVHJlZUhvc3QtPmZyYW1lTnVtYmVyKCkgLSAxOworICAgICAg
ICBpbnQgbGFzdEZyYW1lID0gbV9sYXllclRyZWVIb3N0LT5jb21taXROdW1iZXIoKSAtIDE7CiAK
ICAgICAgICAgLy8gVGhlc2UgZnJhbWVzIHNob3VsZCBub3QgZHJhdy4KICAgICAgICAgc3dpdGNo
IChsYXN0RnJhbWUpIHsKQEAgLTIzMDgsNyArMjMwOCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgYmVnaW5Db21taXRPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGltcGwpIE9W
RVJSSURFCiAgICAgewogICAgICAgICBFWFBFQ1RfRVEobV9yb290U2Nyb2xsTGF5ZXItPnNjcm9s
bFBvc2l0aW9uKCksIEludFBvaW50KCkpOwotICAgICAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdC0+
ZnJhbWVOdW1iZXIoKSkKKyAgICAgICAgaWYgKCFtX2xheWVyVHJlZUhvc3QtPmNvbW1pdE51bWJl
cigpKQogICAgICAgICAgICAgRVhQRUNUX0VRKG1fY2hpbGRMYXllci0+c2Nyb2xsUG9zaXRpb24o
KSwgSW50UG9pbnQoKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIEVYUEVDVF9FUShtX2No
aWxkTGF5ZXItPnNjcm9sbFBvc2l0aW9uKCksIEludFBvaW50KCkgKyBtX3Njcm9sbEFtb3VudCk7
CkBAIC0yMzE2LDExICsyMzE2LDExIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3
TGF5ZXJzT25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBpbXBsKSBPVkVSUklERQogICAg
IHsKLSAgICAgICAgaWYgKGltcGwtPmZyYW1lTnVtYmVyKCkgPT0gMSkgeworICAgICAgICBpZiAo
aW1wbC0+c291cmNlQW5pbWF0aW9uRnJhbWVOdW1iZXIoKSA9PSAxKSB7CiAgICAgICAgICAgICBF
WFBFQ1RfRVEoaW1wbC0+c2Nyb2xsQmVnaW4oSW50UG9pbnQoNSwgNSksIENDSW5wdXRIYW5kbGVy
Q2xpZW50OjpXaGVlbCksIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGFydGVkKTsKICAg
ICAgICAgICAgIGltcGwtPnNjcm9sbEJ5KG1fc2Nyb2xsQW1vdW50KTsKICAgICAgICAgICAgIGlt
cGwtPnNjcm9sbEVuZCgpOwotICAgICAgICB9IGVsc2UgaWYgKGltcGwtPmZyYW1lTnVtYmVyKCkg
PT0gMikKKyAgICAgICAgfSBlbHNlIGlmIChpbXBsLT5zb3VyY2VBbmltYXRpb25GcmFtZU51bWJl
cigpID09IDIpCiAgICAgICAgICAgICBlbmRUZXN0KCk7CiAgICAgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149135</attachid>
            <date>2012-06-22 16:28:51 -0700</date>
            <delta_ts>2012-06-22 16:43:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88268-20120622162850.patch</filename>
            <type>text/plain</type>
            <size>28374</size>
            <attacher name="Dave Tu">dtu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMDE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAxODZiNWVhOWEyMTIw
NTlkMjQ4YWFmNDE0MjUwN2MxZjUzMGQzOGU1Li4zNmU5MTcyN2FiMmE4NjliODlmNzFiMTJhYjNj
NmZjYjcyNGYxYTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wNi0wNCAg
RGF2ZSBUdSAgPGR0dUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBFeHBvc2Ug
cmVuZGVyaW5nIHN0YXRpc3RpY3MgdG8gV2ViV2lkZ2V0LgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODgyNjgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgV2ViS2l0IHNpZGUgb2YgYSBiYXNpYyBmcmFt
ZXdvcmsgZm9yIGV4cG9zaW5nIHJlbmRlcmluZyBzdGF0aXN0aWNzCisgICAgICAgIHRvIENocm9t
aXVtJ3MgLS1lbmFibGUtYmVuY2htYXJraW5nIGV4dGVuc2lvbi4KKworICAgICAgICAqIGNocm9t
aXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Lmg6CisgICAgICAgIChXZWJSZW5kZXJpbmdTdGF0
aXN0aWNzKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJMYXllclRyZWVWaWV3KToK
KwogMjAxMi0wNi0yMCAgQ2hyaXN0b3BoZXIgQ2FtZXJvbiAgPGNjYW1lcm9uQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBbY2hyb21pdW1dIHdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5IGRvZXNu
J3Qgd29yayB3aXRoIHZpZGVvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTI2ODY3MmM5ZDBiMmM1NjM3MTViY2E2
YmQyOTE4NmFmOTc4ODlkZi4uOTg3ZGJkZjNlNjdkY2FkZDVjM2M1NmZhNjczNDkzZjdjNzg2NjEy
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTA2LTA0ICBEYXZlIFR1ICA8ZHR1
QGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEV4cG9zZSByZW5kZXJpbmcgc3Rh
dGlzdGljcyB0byBXZWJXaWRnZXQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04ODI2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoZSBXZWJLaXQgc2lkZSBvZiBhIGJhc2ljIGZyYW1ld29yayBmb3IgZXhw
b3NpbmcgcmVuZGVyaW5nIHN0YXRpc3RpY3MKKyAgICAgICAgdG8gQ2hyb21pdW0ncyAtLWVuYWJs
ZS1iZW5jaG1hcmtpbmcgZXh0ZW5zaW9uLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
VHJlZUhvc3Q6OmltcGxGcmFtZU51bWJlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NQcm94eS5oOgorICAgICAgICAoQ0NQcm94eSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6aW1wbEZyYW1lTnVtYmVyKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6aW1wbEZyYW1lTnVt
YmVyT25JbXBsVGhyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RocmVhZFByb3h5Lmg6CisgICAgICAgIChDQ1RocmVhZFByb3h5KToKKwogMjAxMi0wNi0y
MiAgQW15IE91c3RlcmhvdXQgIDxhb3VzdGVyaEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVu
YW1lZCBEZXZpY2VPcmllbnRhdGlvbiB0byBEZXZpY2VPcmllbnRhdGlvbkRhdGEKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKaW5kZXggMjUxNjk0YzIzNGQyM2NlNjgzODRkZTIzNDczODJmNjIxMmNl
NjZiNy4uMTliYTgzMTI2ZTE3MTBkNDQyOTNhOThkNTFjZjEyN2Q0ZDBhYmZkNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wNi0wNCAgRGF2ZSBUdSAg
PGR0dUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBFeHBvc2UgcmVuZGVyaW5n
IHN0YXRpc3RpY3MgdG8gV2ViV2lkZ2V0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODgyNjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGUgV2ViS2l0IHNpZGUgb2YgYSBiYXNpYyBmcmFtZXdvcmsgZm9y
IGV4cG9zaW5nIHJlbmRlcmluZyBzdGF0aXN0aWNzCisgICAgICAgIHRvIENocm9taXVtJ3MgLS1l
bmFibGUtYmVuY2htYXJraW5nIGV4dGVuc2lvbi4KKworICAgICAgICAqIHNyYy9XZWJMYXllclRy
ZWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlldzo6cmVuZGVyaW5n
U3RhdGlzdGljcyk6CisgICAgICAgIChXZWJLaXQpOgorCiAyMDEyLTA2LTIyICBBbXkgT3VzdGVy
aG91dCAgPGFvdXN0ZXJoQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW5hbWVkIERldmljZU9y
aWVudGF0aW9uIHRvIERldmljZU9yaWVudGF0aW9uRGF0YQpkaWZmIC0tZ2l0IGEvU291cmNlL1Bs
YXRmb3JtL1BsYXRmb3JtLmd5cGkgYi9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQppbmRl
eCBkNzlmODUzYjMxOWZmMTBmZjQ4YTFlMDBjYWJjZWU3N2VkZDYxZGM4Li43NWFkOTcyZmJmODI3
ODk1OTgwMTc0MmVhNDdlOWUzYjA3ODFhMzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0v
UGxhdGZvcm0uZ3lwaQorKysgYi9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQpAQCAtOTQs
NiArOTQsNyBAQAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJQcml2YXRlUHRyLmgn
LAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJSZWN0LmgnLAogICAgICAgICAgICAg
J2Nocm9taXVtL3B1YmxpYy9XZWJSZWZlcnJlclBvbGljeS5oJywKKyAgICAgICAgICAgICdjaHJv
bWl1bS9wdWJsaWMvV2ViUmVuZGVyaW5nU3RhdHMuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0v
cHVibGljL1dlYlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IuaCcsCiAgICAgICAgICAgICAn
Y2hyb21pdW0vcHVibGljL1dlYlNpemUuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGlj
L1dlYlNvY2tldFN0cmVhbUVycm9yLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21p
dW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaAppbmRleCBkNWQ5OWEyODU1OTIzMTA5YWVmMTRj
NWJlNWE0YWY1YzI0YmFlNTlmLi5mNjc5MzBkZDEwNTY4ZDExMWM0NmU5ZjNlYzlkMjdlMmM4ZmIw
ODkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVy
VHJlZVZpZXcuaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVy
VHJlZVZpZXcuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBXZWJMYXllclRyZWVWaWV3Q2xpZW50
OwogY2xhc3MgV2ViTGF5ZXJUcmVlVmlld0ltcGw7CiBzdHJ1Y3QgV2ViUG9pbnQ7CiBzdHJ1Y3Qg
V2ViUmVjdDsKK3N0cnVjdCBXZWJSZW5kZXJpbmdTdGF0czsKIAogY2xhc3MgV2ViTGF5ZXJUcmVl
VmlldyA6IHB1YmxpYyBXZWJOb25Db3B5YWJsZSB7CiBwdWJsaWM6CkBAIC0xNzMsNiArMTc0LDEw
IEBAIHB1YmxpYzoKIAogICAgIC8vIERlYnVnZ2luZyAvIGRhbmdlcm91cyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAorICAgIC8vIEZpbGxzIGluIGEgV2Vi
UmVuZGVyaW5nU3RhdHMgc3RydWN0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHN0
YXRlIG9mIHRoZSBjb21wb3NpdG9yLgorICAgIC8vIFRoaXMgY2FsbCBpcyByZWxhdGl2ZWx5IGV4
cGVuc2l2ZSBpbiB0aHJlYWRlZCBtb2RlIGFzIGl0IGJsb2NrcyBvbiB0aGUgY29tcG9zaXRvciB0
aHJlYWQuCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlbmRlcmluZ1N0YXRzKFdlYlJlbmRlcmlu
Z1N0YXRzJikgY29uc3Q7CisKICAgICAvLyBTaW11bGF0ZXMgYSBsb3N0IGNvbnRleHQuIEZvciB0
ZXN0aW5nIG9ubHkuCiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGxvc2VDb21wb3NpdG9yQ29udGV4
dChpbnQgbnVtVGltZXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0v
cHVibGljL1dlYlJlbmRlcmluZ1N0YXRzLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVi
bGljL1dlYlJlbmRlcmluZ1N0YXRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjE3Njk4NTViMDAzMjU4ZWQwNTBh
NWUxMDA5MTdhNDRlNWMyMWJjOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9j
aHJvbWl1bS9wdWJsaWMvV2ViUmVuZGVyaW5nU3RhdHMuaApAQCAtMCwwICsxLDQ0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBXZWJSZW5kZXJpbmdTdGF0c19oCisjZGVmaW5lIFdlYlJlbmRlcmluZ1N0YXRz
X2gKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBXZWJSZW5kZXJpbmdTdGF0cyB7Cisg
ICAgaW50IG51bUFuaW1hdGlvbkZyYW1lczsKKyAgICBpbnQgbnVtRnJhbWVzU2VudFRvU2NyZWVu
OworCisgICAgV2ViUmVuZGVyaW5nU3RhdHMoKQorICAgICAgICA6IG51bUFuaW1hdGlvbkZyYW1l
cygwKQorICAgICAgICAsIG51bUZyYW1lc1NlbnRUb1NjcmVlbigwKQorICAgIHsKKyAgICB9Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlJlbmRlcmluZ1N0YXRz
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQppbmRleCA4YWUwZTBjZWY5MTQ2NWFhMzkxNmRlNWM4MDgxYzJkMGM5
Y2ZmMDQ4Li43Y2U2MDE0MzRlZDNkYmZlOGZhOGVlOTMzNGI4ODFiOWY4MzNmNWQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCkBAIC0zNzUwLDYgKzM3NTAsNyBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmgnLAorICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyaW5nU3RhdHMuaCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmgn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFz
c0RyYXdRdWFkLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAppbmRleCBiYjZj
MDY0NjJiNDUxMDBiNDQ4N2Y3NjdiN2VlYTY3MTAzMzdjYWM0Li4yZTIxZDZkZmYwN2NjNGZiYWIz
NjNhZTIwZDU1OTRhNGZiMzgzOTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAK
QEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgiCiAj
aW5jbHVkZSAiY2MvQ0NPY2NsdXNpb25UcmFja2VyLmgiCiAjaW5jbHVkZSAiY2MvQ0NPdmVyZHJh
d01ldHJpY3MuaCIKKyNpbmNsdWRlICJjYy9DQ1JlbmRlcmluZ1N0YXRzLmgiCiAjaW5jbHVkZSAi
Y2MvQ0NTZXR0aW5ncy5oIgogI2luY2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIKICNp
bmNsdWRlICJjYy9DQ1RocmVhZFByb3h5LmgiCkBAIC03Miw3ICs3Myw4IEBAIENDTGF5ZXJUcmVl
SG9zdDo6Q0NMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdENsaWVudCogY2xpZW50LCBjb25z
dCBDQ0xheWVyVHJlCiAgICAgLCBtX2FuaW1hdGluZyhmYWxzZSkKICAgICAsIG1fbmVlZHNBbmlt
YXRlTGF5ZXJzKGZhbHNlKQogICAgICwgbV9jbGllbnQoY2xpZW50KQotICAgICwgbV9mcmFtZU51
bWJlcigwKQorICAgICwgbV9hbmltYXRpb25GcmFtZU51bWJlcigwKQorICAgICwgbV9jb21taXRO
dW1iZXIoMCkKICAgICAsIG1fZnJhbWVJc0ZvckRpc3BsYXkoZmFsc2UpCiAgICAgLCBtX2xheWVy
UmVuZGVyZXJJbml0aWFsaXplZChmYWxzZSkKICAgICAsIG1fY29udGV4dExvc3QoZmFsc2UpCkBA
IC0yMTksNiArMjIxLDggQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUFuaW1hdGlvbnMo
ZG91YmxlIG1vbm90b25pY0ZyYW1lQmVnaW5UaW1lKQogICAgIG1fY2xpZW50LT51cGRhdGVBbmlt
YXRpb25zKG1vbm90b25pY0ZyYW1lQmVnaW5UaW1lKTsKICAgICBhbmltYXRlTGF5ZXJzKG1vbm90
b25pY0ZyYW1lQmVnaW5UaW1lKTsKICAgICBtX2FuaW1hdGluZyA9IGZhbHNlOworCisgICAgbV9h
bmltYXRpb25GcmFtZU51bWJlcisrOwogfQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6bGF5b3V0
KCkKQEAgLTI1MSw3ICsyNTUsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6ZmluaXNoQ29tbWl0
T25JbXBsVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGhvc3RJbXBsKQogICAgIGlmIChyb290
TGF5ZXIoKSAmJiBtX25lZWRzQW5pbWF0ZUxheWVycykKICAgICAgICAgaG9zdEltcGwtPnNldE5l
ZWRzQW5pbWF0ZUxheWVycygpOwogCi0gICAgaG9zdEltcGwtPnNldFNvdXJjZUZyYW1lTnVtYmVy
KGZyYW1lTnVtYmVyKCkpOworICAgIGhvc3RJbXBsLT5zZXRTb3VyY2VGcmFtZU51bWJlcihjb21t
aXROdW1iZXIoKSk7CiAgICAgaG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZSh2aWV3cG9ydFNpemUo
KSk7CiAgICAgaG9zdEltcGwtPnNldERldmljZVNjYWxlRmFjdG9yKGRldmljZVNjYWxlRmFjdG9y
KCkpOwogICAgIGhvc3RJbXBsLT5zZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1pdHMobV9wYWdlU2Nh
bGVGYWN0b3IsIG1fbWluUGFnZVNjYWxlRmFjdG9yLCBtX21heFBhZ2VTY2FsZUZhY3Rvcik7CkBA
IC0yNjAsNyArMjY0LDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmZpbmlzaENvbW1pdE9uSW1w
bFRocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBob3N0SW1wbCkKICAgICBob3N0SW1wbC0+c2V0
VmlzaWJsZShtX3Zpc2libGUpOwogICAgIGhvc3RJbXBsLT5zZXRTb3VyY2VGcmFtZUNhbkJlRHJh
d24obV9mcmFtZUlzRm9yRGlzcGxheSk7CiAKLSAgICBtX2ZyYW1lTnVtYmVyKys7CisgICAgbV9j
b21taXROdW1iZXIrKzsKIH0KIAogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmNvbW1pdENvbXBsZXRl
KCkKQEAgLTMxMyw2ICszMTcsMTIgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmZpbmlzaEFsbFJl
bmRlcmluZygpCiAgICAgbV9wcm94eS0+ZmluaXNoQWxsUmVuZGVyaW5nKCk7CiB9CiAKK3ZvaWQg
Q0NMYXllclRyZWVIb3N0OjpyZW5kZXJpbmdTdGF0cyhDQ1JlbmRlcmluZ1N0YXRzJiBzdGF0cykg
Y29uc3QKK3sKKyAgICBtX3Byb3h5LT5pbXBsU2lkZVJlbmRlcmluZ1N0YXRzKHN0YXRzKTsKKyAg
ICBzdGF0cy5udW1BbmltYXRpb25GcmFtZXMgPSBhbmltYXRpb25GcmFtZU51bWJlcigpOworfQor
CiBjb25zdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBDQ0xheWVyVHJlZUhvc3Q6OmxheWVy
UmVuZGVyZXJDYXBhYmlsaXRpZXMoKSBjb25zdAogewogICAgIHJldHVybiBtX3Byb3h5LT5sYXll
clJlbmRlcmVyQ2FwYWJpbGl0aWVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4
IDU4YjdkMmI4YzE4YzJiNDg1NGFjNmNjNTJiMjhmZjYwOGQ2ODFjYjYuLjllNDYzNjExMzMwMWIw
OWVmNjVmNzI5NWY2MzliNzAxZWZiNmI4Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5o
CkBAIC00Niw2ICs0Niw3IEBAIGNsYXNzIENDR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgQ0NMYXll
ckNocm9taXVtOwogY2xhc3MgQ0NMYXllclRyZWVIb3N0SW1wbDsKIGNsYXNzIENDTGF5ZXJUcmVl
SG9zdEltcGxDbGllbnQ7CitzdHJ1Y3QgQ0NSZW5kZXJpbmdTdGF0czsKIHN0cnVjdCBDQ1Njcm9s
bEFuZFNjYWxlU2V0OwogY2xhc3MgQ0NUZXh0dXJlVXBkYXRlcjsKIGNsYXNzIE1hbmFnZWRUZXh0
dXJlOwpAQCAtMTkyLDcgKzE5MywxMSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGZpbmlzaEFsbFJl
bmRlcmluZygpOwogCi0gICAgaW50IGZyYW1lTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9mcmFt
ZU51bWJlcjsgfQorICAgIGludCBhbmltYXRpb25GcmFtZU51bWJlcigpIGNvbnN0IHsgcmV0dXJu
IG1fYW5pbWF0aW9uRnJhbWVOdW1iZXI7IH0KKworICAgIGludCBjb21taXROdW1iZXIoKSBjb25z
dCB7IHJldHVybiBtX2NvbW1pdE51bWJlcjsgfQorCisgICAgdm9pZCByZW5kZXJpbmdTdGF0cyhD
Q1JlbmRlcmluZ1N0YXRzJikgY29uc3Q7CiAKICAgICBjb25zdCBMYXllclJlbmRlcmVyQ2FwYWJp
bGl0aWVzJiBsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkgY29uc3Q7CiAKQEAgLTI4MCw3ICsy
ODUsOCBAQCBwcml2YXRlOgogCiAgICAgQ0NMYXllclRyZWVIb3N0Q2xpZW50KiBtX2NsaWVudDsK
IAotICAgIGludCBtX2ZyYW1lTnVtYmVyOworICAgIGludCBtX2FuaW1hdGlvbkZyYW1lTnVtYmVy
OworICAgIGludCBtX2NvbW1pdE51bWJlcjsKICAgICBib29sIG1fZnJhbWVJc0ZvckRpc3BsYXk7
CiAKICAgICBPd25QdHI8Q0NQcm94eT4gbV9wcm94eTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0SW1wbC5jcHAKaW5kZXggOTQxNDFkNjliNTRiOWVkMmEwMTViZWM1OGNkN2ZjMTlhNmVj
ZjI0My4uZDhjYmUxZTA5NzgyMDQ2ZWEwNTQ3YmI5YmI0NDFmNzc3MDNlYWE4YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCBQYXNz
T3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZShj
b25zdCBDQ0xheWVyVHJlZVNldAogQ0NMYXllclRyZWVIb3N0SW1wbDo6Q0NMYXllclRyZWVIb3N0
SW1wbChjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncywgQ0NMYXllclRyZWVIb3N0
SW1wbENsaWVudCogY2xpZW50KQogICAgIDogbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9zb3Vy
Y2VGcmFtZU51bWJlcigtMSkKLSAgICAsIG1fZnJhbWVOdW1iZXIoMCkKKyAgICAsIG1fc291cmNl
QW5pbWF0aW9uRnJhbWVOdW1iZXIoMCkKICAgICAsIG1fcm9vdFNjcm9sbExheWVySW1wbCgwKQog
ICAgICwgbV9jdXJyZW50bHlTY3JvbGxpbmdMYXllckltcGwoMCkKICAgICAsIG1fc2Nyb2xsaW5n
TGF5ZXJJZEZyb21QcmV2aW91c1RyZWUoLTEpCkBAIC01MDUsNyArNTA1LDcgQEAgdm9pZCBDQ0xh
eWVyVHJlZUhvc3RJbXBsOjpkcmF3TGF5ZXJzKGNvbnN0IEZyYW1lRGF0YSYgZnJhbWUpCiAKICAg
ICBtX2xheWVyUmVuZGVyZXItPmZpbmlzaERyYXdpbmdGcmFtZSgpOwogCi0gICAgKyttX2ZyYW1l
TnVtYmVyOworICAgICsrbV9zb3VyY2VBbmltYXRpb25GcmFtZU51bWJlcjsKIAogICAgIC8vIFRo
ZSBuZXh0IGZyYW1lIHNob3VsZCBzdGFydCBieSBhc3N1bWluZyBub3RoaW5nIGhhcyBjaGFuZ2Vk
LCBhbmQgY2hhbmdlcyBhcmUgbm90ZWQgYXMgdGhleSBvY2N1ci4KICAgICBtX3Jvb3RMYXllcklt
cGwtPnJlc2V0QWxsQ2hhbmdlVHJhY2tpbmdGb3JTdWJ0cmVlKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3RJbXBsLmgKaW5kZXggODI3OTEyNDg3ZjIwYjAxNzY3ZTQ0MTY5N2U0M2Q4ZmNh
MzRiYTM1YS4uMDc1YjVlMDNmNTIxMWUzOGE4ZmFiZWIxNzMwN2JmZmY2MWJiYTQxYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaApAQCAtMTE5LDcgKzExOSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldEZvbnRBdGxhcyhQYXNzT3duUHRyPENDRm9udEF0bGFzPik7CiAKICAg
ICB2b2lkIGZpbmlzaEFsbFJlbmRlcmluZygpOwotICAgIGludCBmcmFtZU51bWJlcigpIGNvbnN0
IHsgcmV0dXJuIG1fZnJhbWVOdW1iZXI7IH0KKyAgICBpbnQgc291cmNlQW5pbWF0aW9uRnJhbWVO
dW1iZXIoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUFuaW1hdGlvbkZyYW1lTnVtYmVyOyB9CiAK
ICAgICBib29sIGluaXRpYWxpemVMYXllclJlbmRlcmVyKFBhc3NSZWZQdHI8Q0NHcmFwaGljc0Nv
bnRleHQ+LCBUZXh0dXJlVXBsb2FkZXJPcHRpb24pOwogICAgIGJvb2wgaXNDb250ZXh0TG9zdCgp
OwpAQCAtMTk2LDcgKzE5Niw3IEBAIHByb3RlY3RlZDoKIAogICAgIENDTGF5ZXJUcmVlSG9zdElt
cGxDbGllbnQqIG1fY2xpZW50OwogICAgIGludCBtX3NvdXJjZUZyYW1lTnVtYmVyOwotICAgIGlu
dCBtX2ZyYW1lTnVtYmVyOworICAgIGludCBtX3NvdXJjZUFuaW1hdGlvbkZyYW1lTnVtYmVyOwog
CiBwcml2YXRlOgogICAgIHZvaWQgY29tcHV0ZURvdWJsZVRhcFpvb21EZWx0YXMoQ0NTY3JvbGxB
bmRTY2FsZVNldCogc2Nyb2xsSW5mbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKaW5kZXggZmIyY2JiYWU5NmYwNzMz
MDA3NWMyNTMzNWRiYTA3ZTU5YTVkMmUyZi4uNGMxZGQxMmRjZTM3OWJmOTRkMzExODI3NDI5Y2Zk
YzQ1OGZlOTM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaApAQCAtMzQsNiArMzQsNyBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBDQ0ZvbnRBdGxhczsKK3N0cnVjdCBDQ1JlbmRlcmluZ1N0YXRzOwog
Y2xhc3MgQ0NUaHJlYWQ7CiBjbGFzcyBDQ0dyYXBoaWNzQ29udGV4dDsKIHN0cnVjdCBMYXllclJl
bmRlcmVyQ2FwYWJpbGl0aWVzOwpAQCAtNzksNiArODAsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIGludCBjb21wb3NpdG9ySWRlbnRpZmllcigpIGNvbnN0ID0gMDsKIAorICAgIHZpcnR1YWwg
dm9pZCBpbXBsU2lkZVJlbmRlcmluZ1N0YXRzKENDUmVuZGVyaW5nU3RhdHMmKSA9IDA7CisKICAg
ICB2aXJ0dWFsIGNvbnN0IExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMmIGxheWVyUmVuZGVyZXJD
YXBhYmlsaXRpZXMoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNBbmlt
YXRlKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NSZW5kZXJpbmdTdGF0cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJpbmdTdGF0cy5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY2OWM4
ZTAyNjg0ZWMyZTUwMDNmMzIwNDcwZDA5Y2NlOTBlZjExNjIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlcmluZ1N0
YXRzLmgKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDQ1JlbmRlcmlu
Z1N0YXRzX2gKKyNkZWZpbmUgQ0NSZW5kZXJpbmdTdGF0c19oCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworc3RydWN0IENDUmVuZGVyaW5nU3RhdHMgeworICAgIGludCBudW1BbmltYXRpb25GcmFt
ZXM7CisgICAgaW50IG51bUZyYW1lc1NlbnRUb1NjcmVlbjsKKworICAgIENDUmVuZGVyaW5nU3Rh
dHMoKQorICAgICAgICA6IG51bUFuaW1hdGlvbkZyYW1lcygwKQorICAgICAgICAsIG51bUZyYW1l
c1NlbnRUb1NjcmVlbigwKQorICAgIHsKKyAgICB9Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5n
bGVUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAppbmRleCAxNGNkZjFjMDgwOGIzNTFjNGQw
YWMyNmE4N2M2MGIzYmE1YWUwNDNlLi5jMGY3N2FmYTFlZDE0NWMxOWM1MWNkNDUxNDM4ZTIyZTQ0
YjgyNGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcApAQCAtMzEs
NiArMzEsNyBAQAogI2luY2x1ZGUgImNjL0NDRm9udEF0bGFzLmgiCiAjaW5jbHVkZSAiY2MvQ0NH
cmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKKyNpbmNs
dWRlICJjYy9DQ1JlbmRlcmluZ1N0YXRzLmgiCiAjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRl
ci5oIgogI2luY2x1ZGUgImNjL0NDVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUu
aD4KQEAgLTE5OCw2ICsxOTksMTEgQEAgYm9vbCBDQ1NpbmdsZVRocmVhZFByb3h5OjpyZWNyZWF0
ZUNvbnRleHQoKQogICAgIHJldHVybiBpbml0aWFsaXplZDsKIH0KIAordm9pZCBDQ1NpbmdsZVRo
cmVhZFByb3h5OjppbXBsU2lkZVJlbmRlcmluZ1N0YXRzKENDUmVuZGVyaW5nU3RhdHMmIHN0YXRz
KQoreworICAgIHN0YXRzLm51bUZyYW1lc1NlbnRUb1NjcmVlbiA9IG1fbGF5ZXJUcmVlSG9zdElt
cGwtPnNvdXJjZUFuaW1hdGlvbkZyYW1lTnVtYmVyKCk7Cit9CisKIGNvbnN0IExheWVyUmVuZGVy
ZXJDYXBhYmlsaXRpZXMmIENDU2luZ2xlVGhyZWFkUHJveHk6OmxheWVyUmVuZGVyZXJDYXBhYmls
aXRpZXMoKSBjb25zdAogewogICAgIEFTU0VSVChtX2xheWVyUmVuZGVyZXJJbml0aWFsaXplZCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1NpbmdsZVRocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKaW5kZXggOTNjMTI4YmM4NWE3N2E3
MzJiMTlhMmRmZmRiNzIzNjJiNWY5MmE2MS4uMmQ3YmY3NjUwMDEwZTYxNDRmZjA5YTY1MjU0MDRm
OGNlYjcyYWI2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaApAQCAtNTIs
NiArNTIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGluaXRpYWxpemVMYXllclJlbmRl
cmVyKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHJlY3JlYXRlQ29udGV4dCgpIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgaW50IGNvbXBvc2l0b3JJZGVudGlmaWVyKCkgY29uc3QgT1ZFUlJJ
REUgeyByZXR1cm4gbV9jb21wb3NpdG9ySWRlbnRpZmllcjsgfQorICAgIHZpcnR1YWwgdm9pZCBp
bXBsU2lkZVJlbmRlcmluZ1N0YXRzKENDUmVuZGVyaW5nU3RhdHMmKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIGNvbnN0IExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMmIGxheWVyUmVuZGVyZXJDYXBh
YmlsaXRpZXMoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgbG9zZUNvbnRleHQo
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNBbmltYXRlKCkgT1ZFUlJJREU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCmluZGV4IGE5YmZiYzFhNzhhYWVkOTM2MjQ4MzA0
MTg0ODA4ZGZjYmI1OWZmZmQuLjQ1MDlhN2VhNTNjZDQwNGJjMmQ4MGU3MjUxNGZlNjM1ODQ1OGQx
ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5j
bHVkZSAiY2MvQ0NHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJjYy9DQ0lucHV0SGFuZGxl
ci5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgorI2luY2x1ZGUgImNjL0NDUmVu
ZGVyaW5nU3RhdHMuaCIKICNpbmNsdWRlICJjYy9DQ1NjaGVkdWxlci5oIgogI2luY2x1ZGUgImNj
L0NDU2NvcGVkVGhyZWFkUHJveHkuaCIKICNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgi
CkBAIC0yNjcsNiArMjY4LDE3IEBAIGludCBDQ1RocmVhZFByb3h5Ojpjb21wb3NpdG9ySWRlbnRp
ZmllcigpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29tcG9zaXRvcklkZW50aWZpZXI7CiB9CiAKK3Zv
aWQgQ0NUaHJlYWRQcm94eTo6aW1wbFNpZGVSZW5kZXJpbmdTdGF0cyhDQ1JlbmRlcmluZ1N0YXRz
JiBzdGF0cykKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgQ0NDb21wbGV0
aW9uRXZlbnQgY29tcGxldGlvbjsKKyAgICBDQ1Byb3h5OjppbXBsVGhyZWFkKCktPnBvc3RUYXNr
KGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6aW1wbFNpZGVSZW5kZXJp
bmdTdGF0c09uSW1wbFRocmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKCZjb21wbGV0aW9uKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBB
bGxvd0Nyb3NzVGhyZWFkQWNjZXNzKCZzdGF0cykpKTsKKyAgICBjb21wbGV0aW9uLndhaXQoKTsK
K30KKwogY29uc3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgQ0NUaHJlYWRQcm94eTo6bGF5
ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1fbGF5ZXJSZW5k
ZXJlckluaXRpYWxpemVkKTsKQEAgLTg4MCw0ICs4OTIsMTEgQEAgdm9pZCBDQ1RocmVhZFByb3h5
OjpyZWNyZWF0ZUNvbnRleHRPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRp
b24sIEMKICAgICBjb21wbGV0aW9uLT5zaWduYWwoKTsKIH0KIAordm9pZCBDQ1RocmVhZFByb3h5
OjppbXBsU2lkZVJlbmRlcmluZ1N0YXRzT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBj
b21wbGV0aW9uLCBDQ1JlbmRlcmluZ1N0YXRzKiBzdGF0cykKK3sKKyAgICBBU1NFUlQoaXNJbXBs
VGhyZWFkKCkpOworICAgIHN0YXRzLT5udW1GcmFtZXNTZW50VG9TY3JlZW4gPSBtX2xheWVyVHJl
ZUhvc3RJbXBsLT5zb3VyY2VBbmltYXRpb25GcmFtZU51bWJlcigpOworICAgIGNvbXBsZXRpb24t
PnNpZ25hbCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFBy
b3h5LmgKaW5kZXggNTUyMWYyZjA2M2MxZWFkYTBjOWY3NjEyZjQ4Zjk3YmM4NTg5ZDM0OC4uY2Zm
NjIwN2NiYzJmN2U2YjA5NDdmYzdmZjhmNzY5YjA0ODI1YWNhZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFk
UHJveHkuaApAQCAtNTksNiArNTksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGluaXRp
YWxpemVMYXllclJlbmRlcmVyKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHJlY3JlYXRl
Q29udGV4dCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgaW50IGNvbXBvc2l0b3JJZGVudGlmaWVy
KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGltcGxTaWRlUmVuZGVyaW5nU3Rh
dHMoQ0NSZW5kZXJpbmdTdGF0cyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgY29uc3QgTGF5ZXJS
ZW5kZXJlckNhcGFiaWxpdGllcyYgbGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpIGNvbnN0IE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBsb3NlQ29udGV4dCgpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCBzZXROZWVkc0FuaW1hdGUoKSBPVkVSUklERTsKQEAgLTE0MCw2ICsxNDEsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgc2V0RnVsbFJvb3RMYXllckRhbWFnZU9uSW1wbFRocmVhZCgp
OwogICAgIHZvaWQgYWNxdWlyZUxheWVyVGV4dHVyZXNGb3JNYWluVGhyZWFkT25JbXBsVGhyZWFk
KENDQ29tcGxldGlvbkV2ZW50Kik7CiAgICAgdm9pZCByZWNyZWF0ZUNvbnRleHRPbkltcGxUaHJl
YWQoQ0NDb21wbGV0aW9uRXZlbnQqLCBDQ0dyYXBoaWNzQ29udGV4dCosIGJvb2wqIHJlY3JlYXRl
U3VjY2VlZGVkLCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKik7CisgICAgdm9pZCBpbXBsU2lk
ZVJlbmRlcmluZ1N0YXRzT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiwgQ0NSZW5kZXJp
bmdTdGF0cyopOwogICAgIENDU2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBSZXN1bHQgc2NoZWR1
bGVkQWN0aW9uRHJhd0FuZFN3YXBJbnRlcm5hbChib29sIGZvcmNlZERyYXcpOwogICAgIHZvaWQg
c2V0Rm9udEF0bGFzT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8Q0NGb250QXRsYXM+KTsKICAgICB2
b2lkIGZvcmNlU2VyaWFsaXplT25Td2FwQnVmZmVyc09uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25F
dmVudCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmll
dy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oCmluZGV4IDFlNTg4
MmQxYTBjM2FkZDg4N2VhZTNlMjhlOTFlNmY2ZTZjOGNlYTUuLmI2NjIyMmQ2NGQyNzMwYTlhNzVm
YmQyNWFmZjEyMGI5YjQxOTc5NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJW
aWV3LmgKQEAgLTYyLDYgKzYyLDcgQEAgc3RydWN0IFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0
ZXJzOwogc3RydWN0IFdlYk1lZGlhUGxheWVyQWN0aW9uOwogc3RydWN0IFdlYlBsdWdpbkFjdGlv
bjsKIHN0cnVjdCBXZWJQb2ludDsKK3N0cnVjdCBXZWJSZW5kZXJpbmdTdGF0czsKIAogY2xhc3Mg
V2ViVmlldyA6IHB1YmxpYyBXZWJXaWRnZXQgewogcHVibGljOgpAQCAtNDU1LDYgKzQ1NiwxMCBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgc2V0RWRpdGFibGVTZWxlY3Rpb25PZmZzZXRz
KGludCBzdGFydCwgaW50IGVuZCkgPSAwOwogCisgICAgLy8gRmlsbHMgaW4gYSBXZWJSZW5kZXJp
bmdTdGF0cyBzdHJ1Y3QgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc3RhdGUgb2Yg
dGhlIGNvbXBvc2l0b3IuCisgICAgLy8gVGhpcyBjYWxsIGlzIHJlbGF0aXZlbHkgZXhwZW5zaXZl
IGluIHRocmVhZGVkIG1vZGUgYXMgaXQgYmxvY2tzIG9uIHRoZSBjb21wb3NpdG9yIHRocmVhZC4K
KyAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyaW5nU3RhdHMoV2ViUmVuZGVyaW5nU3RhdHMmKSBjb25z
dCB7IH0KKwogICAgIC8vIFZpc2liaWxpdHkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogICAgIC8vIFNldHMgdGhlIHZpc2liaWxp
dHkgb2YgdGhlIFdlYlZpZXcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJMYXllclRyZWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxh
eWVyVHJlZVZpZXcuY3BwCmluZGV4IDM1NmFmMWRlMjNmY2Q4MDViNmI0MWZkZmY4ZDgwODdjZDg3
OWJmNjAuLmMyZDg0ZmU3ZGRiYjNmNmFiMjY1YTI4ZTEwMjIzNTNjNjkxYTM3YWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCkBAIC0zMSwx
MCArMzEsMTIgQEAKICNpbmNsdWRlICJXZWJMYXllclRyZWVWaWV3SW1wbC5oIgogI2luY2x1ZGUg
ImNjL0NDR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0Lmgi
CisjaW5jbHVkZSAiY2MvQ0NSZW5kZXJpbmdTdGF0cy5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dl
YkxheWVyLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViUG9pbnQuaCIKICNpbmNsdWRlICJwbGF0
Zm9ybS9XZWJSZWN0LmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViU2l6ZS5oIgorI2luY2x1ZGUg
PHB1YmxpYy9XZWJSZW5kZXJpbmdTdGF0cy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IApAQCAtMTc4LDYgKzE4MCwxNSBAQCBXZWJHcmFwaGljc0NvbnRleHQzRCogV2ViTGF5ZXJUcmVl
Vmlldzo6Y29udGV4dCgpCiAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZXh0
cmFjdFdlYkdyYXBoaWNzQ29udGV4dDNEKG1fcHJpdmF0ZS0+bGF5ZXJUcmVlSG9zdCgpLT5jb250
ZXh0KCktPmNvbnRleHQzRCgpKTsKIH0KIAordm9pZCBXZWJMYXllclRyZWVWaWV3OjpyZW5kZXJp
bmdTdGF0cyhXZWJSZW5kZXJpbmdTdGF0cyYgc3RhdHMpIGNvbnN0Cit7CisgICAgQ0NSZW5kZXJp
bmdTdGF0cyBjY1N0YXRzOworICAgIG1fcHJpdmF0ZS0+bGF5ZXJUcmVlSG9zdCgpLT5yZW5kZXJp
bmdTdGF0cyhjY1N0YXRzKTsKKworICAgIHN0YXRzLm51bUFuaW1hdGlvbkZyYW1lcyA9IGNjU3Rh
dHMubnVtQW5pbWF0aW9uRnJhbWVzOworICAgIHN0YXRzLm51bUZyYW1lc1NlbnRUb1NjcmVlbiA9
IGNjU3RhdHMubnVtRnJhbWVzU2VudFRvU2NyZWVuOworfQorCiB2b2lkIFdlYkxheWVyVHJlZVZp
ZXc6Omxvc2VDb21wb3NpdG9yQ29udGV4dChpbnQgbnVtVGltZXMpCiB7CiAgICAgbV9wcml2YXRl
LT5sYXllclRyZWVIb3N0KCktPmxvc2VDb250ZXh0KG51bVRpbWVzKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCA1NWExMDllMTRiMmRlMmY1ODVhYzAx
MzJkNjdhZTdkMjVkYjQ2ZDlhLi5hMmViMzgyMmE1YmY5NWZlZTA5ZDRkMzJjNTczYzBkMzFjYzIy
NjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC03
MjgsNiArNzI4LDEzIEBAIHZvaWQgV2ViVmlld0ltcGw6OnRyYW5zZmVyQWN0aXZlV2hlZWxGbGlu
Z0FuaW1hdGlvbihjb25zdCBXZWJBY3RpdmVXaGVlbEZsaW5nUGFyCiAgICAgc2NoZWR1bGVBbmlt
YXRpb24oKTsKIH0KIAordm9pZCBXZWJWaWV3SW1wbDo6cmVuZGVyaW5nU3RhdHMoV2ViUmVuZGVy
aW5nU3RhdHMmIHN0YXRzKSBjb25zdAoreworICAgIEFTU0VSVChpc0FjY2VsZXJhdGVkQ29tcG9z
aXRpbmdBY3RpdmUoKSk7CisgICAgaWYgKCFtX2xheWVyVHJlZVZpZXcuaXNOdWxsKCkpCisgICAg
ICAgIG1fbGF5ZXJUcmVlVmlldy5yZW5kZXJpbmdTdGF0cyhzdGF0cyk7Cit9CisKIHZvaWQgV2Vi
Vmlld0ltcGw6OnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFBvaW50JiBzY3JvbGws
IGJvb2wgdXNlQW5jaG9yLCBmbG9hdCBuZXdTY2FsZSwgZG91YmxlIGR1cmF0aW9uU2VjKQogewog
ICAgIGlmICghbV9sYXllclRyZWVWaWV3LmlzTnVsbCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmgKaW5kZXggNzBjNjIyY2ZlOTFlNjBmMzYzYzExZWY4M2YzZDg1ZWIy
N2QyZTQ0Ni4uMGE5MTJmM2E1M2JmZTYxNTQ5MjRkOGU3MDM4ODhhZTliZjA2YzQzYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBAIC0yOTIsNiArMjkyLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVCYXR0ZXJ5U3RhdHVzKGNvbnN0IFdlYkJh
dHRlcnlTdGF0dXMmKTsKICNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCB0cmFuc2ZlckFjdGl2ZVdo
ZWVsRmxpbmdBbmltYXRpb24oY29uc3QgV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMmKTsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyaW5nU3RhdHMoV2ViUmVuZGVyaW5nU3RhdHMmKSBjb25z
dDsKIAogICAgIC8vIFdlYkxheWVyVHJlZVZpZXdDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgd2ls
bEJlZ2luRnJhbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NMYXllclRyZWVIb3N0VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
TGF5ZXJUcmVlSG9zdFRlc3QuY3BwCmluZGV4IDRhMmZkMzFhOTM0NGE2MmQxZjAzNmE3NjBhODI4
NDNkMjcwMjVjZDguLjEyZjNhODI0Nzk0ZThjZDQ2NTQ0NTUzMjBkODAzOTRmOGJmMTViMzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVz
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RU
ZXN0LmNwcApAQCAtODMyLDcgKzgzMiw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbGF5
b3V0KCkKICAgICB7CiAgICAgICAgIExheWVyQ2hyb21pdW0qIHJvb3QgPSBtX2xheWVyVHJlZUhv
c3QtPnJvb3RMYXllcigpOwotICAgICAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdC0+ZnJhbWVOdW1i
ZXIoKSkKKyAgICAgICAgaWYgKCFtX2xheWVyVHJlZUhvc3QtPmNvbW1pdE51bWJlcigpKQogICAg
ICAgICAgICAgRVhQRUNUX0VRKHJvb3QtPnNjcm9sbFBvc2l0aW9uKCksIG1faW5pdGlhbFNjcm9s
bCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgRVhQRUNUX0VRKHJvb3QtPnNjcm9sbFBv
c2l0aW9uKCksIG1faW5pdGlhbFNjcm9sbCArIG1fc2Nyb2xsQW1vdW50KTsKQEAgLTkxOCw3ICs5
MTgsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJvb3QtPnNldFNjcm9sbGFibGUodHJ1ZSk7CiAgICAg
ICAgIHJvb3QtPnNldE1heFNjcm9sbFBvc2l0aW9uKEludFNpemUoMTAwLCAxMDApKTsKIAotICAg
ICAgICBpZiAoIWltcGwtPnNvdXJjZUZyYW1lTnVtYmVyKCkgJiYgaW1wbC0+ZnJhbWVOdW1iZXIo
KSA9PSAxKSB7CisgICAgICAgIGlmICghaW1wbC0+c291cmNlRnJhbWVOdW1iZXIoKSAmJiBpbXBs
LT5zb3VyY2VBbmltYXRpb25GcmFtZU51bWJlcigpID09IDEpIHsKICAgICAgICAgICAgIC8vIEZp
cnN0IGRyYXcgYWZ0ZXIgZmlyc3QgY29tbWl0LgogICAgICAgICAgICAgRVhQRUNUX0VRKHJvb3Qt
PnNjcm9sbERlbHRhKCksIEludFNpemUoKSk7CiAgICAgICAgICAgICByb290LT5zY3JvbGxCeSht
X3Njcm9sbEFtb3VudCk7CkBAIC05MjYsNyArOTI2LDcgQEAgcHVibGljOgogCiAgICAgICAgICAg
ICBFWFBFQ1RfRVEocm9vdC0+c2Nyb2xsUG9zaXRpb24oKSwgbV9pbml0aWFsU2Nyb2xsKTsKICAg
ICAgICAgICAgIHBvc3RTZXROZWVkc1JlZHJhd1RvTWFpblRocmVhZCgpOwotICAgICAgICB9IGVs
c2UgaWYgKCFpbXBsLT5zb3VyY2VGcmFtZU51bWJlcigpICYmIGltcGwtPmZyYW1lTnVtYmVyKCkg
PT0gMikgeworICAgICAgICB9IGVsc2UgaWYgKCFpbXBsLT5zb3VyY2VGcmFtZU51bWJlcigpICYm
IGltcGwtPnNvdXJjZUFuaW1hdGlvbkZyYW1lTnVtYmVyKCkgPT0gMikgewogICAgICAgICAgICAg
Ly8gU2Vjb25kIGRyYXcgYWZ0ZXIgZmlyc3QgY29tbWl0LgogICAgICAgICAgICAgRVhQRUNUX0VR
KHJvb3QtPnNjcm9sbERlbHRhKCksIG1fc2Nyb2xsQW1vdW50KTsKICAgICAgICAgICAgIHJvb3Qt
PnNjcm9sbEJ5KG1fc2Nyb2xsQW1vdW50KTsKQEAgLTkzNiw3ICs5MzYsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICBwb3N0U2V0TmVlZHNDb21taXRUb01haW5UaHJlYWQoKTsKICAgICAgICAgfSBl
bHNlIGlmIChpbXBsLT5zb3VyY2VGcmFtZU51bWJlcigpID09IDEpIHsKICAgICAgICAgICAgIC8v
IFRoaXJkIG9yIGxhdGVyIGRyYXcgYWZ0ZXIgc2Vjb25kIGNvbW1pdC4KLSAgICAgICAgICAgIEVY
UEVDVF9HRShpbXBsLT5mcmFtZU51bWJlcigpLCAzKTsKKyAgICAgICAgICAgIEVYUEVDVF9HRShp
bXBsLT5zb3VyY2VBbmltYXRpb25GcmFtZU51bWJlcigpLCAzKTsKICAgICAgICAgICAgIEVYUEVD
VF9FUShyb290LT5zY3JvbGxEZWx0YSgpLCBJbnRTaXplKCkpOwogICAgICAgICAgICAgRVhQRUNU
X0VRKHJvb3QtPnNjcm9sbFBvc2l0aW9uKCksIG1faW5pdGlhbFNjcm9sbCArIG1fc2Nyb2xsQW1v
dW50ICsgbV9zY3JvbGxBbW91bnQpOwogICAgICAgICAgICAgZW5kVGVzdCgpOwpAQCAtMTAwOSw3
ICsxMDA5LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdEFuZERyYXdG
cmFtZSgpCiAgICAgewotICAgICAgICBpbnQgbGFzdEZyYW1lID0gbV9sYXllclRyZWVIb3N0LT5m
cmFtZU51bWJlcigpIC0gMTsKKyAgICAgICAgaW50IGxhc3RGcmFtZSA9IG1fbGF5ZXJUcmVlSG9z
dC0+Y29tbWl0TnVtYmVyKCkgLSAxOwogCiAgICAgICAgIC8vIFRoZXNlIGZyYW1lcyBzaG91bGQg
ZHJhdy4KICAgICAgICAgc3dpdGNoIChsYXN0RnJhbWUpIHsKQEAgLTEwNDAsNyArMTA0MCw3IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXQoKQogICAgIHsKLSAgICAgICAg
aW50IGxhc3RGcmFtZSA9IG1fbGF5ZXJUcmVlSG9zdC0+ZnJhbWVOdW1iZXIoKSAtIDE7CisgICAg
ICAgIGludCBsYXN0RnJhbWUgPSBtX2xheWVyVHJlZUhvc3QtPmNvbW1pdE51bWJlcigpIC0gMTsK
IAogICAgICAgICAvLyBUaGVzZSBmcmFtZXMgc2hvdWxkIG5vdCBkcmF3LgogICAgICAgICBzd2l0
Y2ggKGxhc3RGcmFtZSkgewpAQCAtMjMwOCw3ICsyMzA4LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBiZWdpbkNvbW1pdE9uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1wbCkg
T1ZFUlJJREUKICAgICB7CiAgICAgICAgIEVYUEVDVF9FUShtX3Jvb3RTY3JvbGxMYXllci0+c2Ny
b2xsUG9zaXRpb24oKSwgSW50UG9pbnQoKSk7Ci0gICAgICAgIGlmICghbV9sYXllclRyZWVIb3N0
LT5mcmFtZU51bWJlcigpKQorICAgICAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdC0+Y29tbWl0TnVt
YmVyKCkpCiAgICAgICAgICAgICBFWFBFQ1RfRVEobV9jaGlsZExheWVyLT5zY3JvbGxQb3NpdGlv
bigpLCBJbnRQb2ludCgpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgRVhQRUNUX0VRKG1f
Y2hpbGRMYXllci0+c2Nyb2xsUG9zaXRpb24oKSwgSW50UG9pbnQoKSArIG1fc2Nyb2xsQW1vdW50
KTsKQEAgLTIzMTYsMTEgKzIzMTYsMTEgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRy
YXdMYXllcnNPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGltcGwpIE9WRVJSSURFCiAg
ICAgewotICAgICAgICBpZiAoaW1wbC0+ZnJhbWVOdW1iZXIoKSA9PSAxKSB7CisgICAgICAgIGlm
IChpbXBsLT5zb3VyY2VBbmltYXRpb25GcmFtZU51bWJlcigpID09IDEpIHsKICAgICAgICAgICAg
IEVYUEVDVF9FUShpbXBsLT5zY3JvbGxCZWdpbihJbnRQb2ludCg1LCA1KSwgQ0NJbnB1dEhhbmRs
ZXJDbGllbnQ6OldoZWVsKSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQpOwog
ICAgICAgICAgICAgaW1wbC0+c2Nyb2xsQnkobV9zY3JvbGxBbW91bnQpOwogICAgICAgICAgICAg
aW1wbC0+c2Nyb2xsRW5kKCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoaW1wbC0+ZnJhbWVOdW1iZXIo
KSA9PSAyKQorICAgICAgICB9IGVsc2UgaWYgKGltcGwtPnNvdXJjZUFuaW1hdGlvbkZyYW1lTnVt
YmVyKCkgPT0gMikKICAgICAgICAgICAgIGVuZFRlc3QoKTsKICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149140</attachid>
            <date>2012-06-22 16:44:20 -0700</date>
            <delta_ts>2012-06-25 14:12:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88268-20120622164420.patch</filename>
            <type>text/plain</type>
            <size>28591</size>
            <attacher name="Dave Tu">dtu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMDE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAxODZiNWVhOWEyMTIw
NTlkMjQ4YWFmNDE0MjUwN2MxZjUzMGQzOGU1Li4zNmU5MTcyN2FiMmE4NjliODlmNzFiMTJhYjNj
NmZjYjcyNGYxYTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wNi0wNCAg
RGF2ZSBUdSAgPGR0dUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBFeHBvc2Ug
cmVuZGVyaW5nIHN0YXRpc3RpY3MgdG8gV2ViV2lkZ2V0LgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODgyNjgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgV2ViS2l0IHNpZGUgb2YgYSBiYXNpYyBmcmFt
ZXdvcmsgZm9yIGV4cG9zaW5nIHJlbmRlcmluZyBzdGF0aXN0aWNzCisgICAgICAgIHRvIENocm9t
aXVtJ3MgLS1lbmFibGUtYmVuY2htYXJraW5nIGV4dGVuc2lvbi4KKworICAgICAgICAqIGNocm9t
aXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Lmg6CisgICAgICAgIChXZWJSZW5kZXJpbmdTdGF0
aXN0aWNzKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJMYXllclRyZWVWaWV3KToK
KwogMjAxMi0wNi0yMCAgQ2hyaXN0b3BoZXIgQ2FtZXJvbiAgPGNjYW1lcm9uQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBbY2hyb21pdW1dIHdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5IGRvZXNu
J3Qgd29yayB3aXRoIHZpZGVvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTI2ODY3MmM5ZDBiMmM1NjM3MTViY2E2
YmQyOTE4NmFmOTc4ODlkZi4uOTg3ZGJkZjNlNjdkY2FkZDVjM2M1NmZhNjczNDkzZjdjNzg2NjEy
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTA2LTA0ICBEYXZlIFR1ICA8ZHR1
QGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEV4cG9zZSByZW5kZXJpbmcgc3Rh
dGlzdGljcyB0byBXZWJXaWRnZXQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04ODI2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoZSBXZWJLaXQgc2lkZSBvZiBhIGJhc2ljIGZyYW1ld29yayBmb3IgZXhw
b3NpbmcgcmVuZGVyaW5nIHN0YXRpc3RpY3MKKyAgICAgICAgdG8gQ2hyb21pdW0ncyAtLWVuYWJs
ZS1iZW5jaG1hcmtpbmcgZXh0ZW5zaW9uLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
VHJlZUhvc3Q6OmltcGxGcmFtZU51bWJlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NQcm94eS5oOgorICAgICAgICAoQ0NQcm94eSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6aW1wbEZyYW1lTnVtYmVyKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6aW1wbEZyYW1lTnVt
YmVyT25JbXBsVGhyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RocmVhZFByb3h5Lmg6CisgICAgICAgIChDQ1RocmVhZFByb3h5KToKKwogMjAxMi0wNi0y
MiAgQW15IE91c3RlcmhvdXQgIDxhb3VzdGVyaEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVu
YW1lZCBEZXZpY2VPcmllbnRhdGlvbiB0byBEZXZpY2VPcmllbnRhdGlvbkRhdGEKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKaW5kZXggMjUxNjk0YzIzNGQyM2NlNjgzODRkZTIzNDczODJmNjIxMmNl
NjZiNy4uMTliYTgzMTI2ZTE3MTBkNDQyOTNhOThkNTFjZjEyN2Q0ZDBhYmZkNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wNi0wNCAgRGF2ZSBUdSAg
PGR0dUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBFeHBvc2UgcmVuZGVyaW5n
IHN0YXRpc3RpY3MgdG8gV2ViV2lkZ2V0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODgyNjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGUgV2ViS2l0IHNpZGUgb2YgYSBiYXNpYyBmcmFtZXdvcmsgZm9y
IGV4cG9zaW5nIHJlbmRlcmluZyBzdGF0aXN0aWNzCisgICAgICAgIHRvIENocm9taXVtJ3MgLS1l
bmFibGUtYmVuY2htYXJraW5nIGV4dGVuc2lvbi4KKworICAgICAgICAqIHNyYy9XZWJMYXllclRy
ZWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlldzo6cmVuZGVyaW5n
U3RhdGlzdGljcyk6CisgICAgICAgIChXZWJLaXQpOgorCiAyMDEyLTA2LTIyICBBbXkgT3VzdGVy
aG91dCAgPGFvdXN0ZXJoQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW5hbWVkIERldmljZU9y
aWVudGF0aW9uIHRvIERldmljZU9yaWVudGF0aW9uRGF0YQpkaWZmIC0tZ2l0IGEvU291cmNlL1Bs
YXRmb3JtL1BsYXRmb3JtLmd5cGkgYi9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQppbmRl
eCBkNzlmODUzYjMxOWZmMTBmZjQ4YTFlMDBjYWJjZWU3N2VkZDYxZGM4Li43NWFkOTcyZmJmODI3
ODk1OTgwMTc0MmVhNDdlOWUzYjA3ODFhMzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0v
UGxhdGZvcm0uZ3lwaQorKysgYi9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQpAQCAtOTQs
NiArOTQsNyBAQAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJQcml2YXRlUHRyLmgn
LAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJSZWN0LmgnLAogICAgICAgICAgICAg
J2Nocm9taXVtL3B1YmxpYy9XZWJSZWZlcnJlclBvbGljeS5oJywKKyAgICAgICAgICAgICdjaHJv
bWl1bS9wdWJsaWMvV2ViUmVuZGVyaW5nU3RhdHMuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0v
cHVibGljL1dlYlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IuaCcsCiAgICAgICAgICAgICAn
Y2hyb21pdW0vcHVibGljL1dlYlNpemUuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGlj
L1dlYlNvY2tldFN0cmVhbUVycm9yLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21p
dW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaAppbmRleCBkNWQ5OWEyODU1OTIzMTA5YWVmMTRj
NWJlNWE0YWY1YzI0YmFlNTlmLi5mNjc5MzBkZDEwNTY4ZDExMWM0NmU5ZjNlYzlkMjdlMmM4ZmIw
ODkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVy
VHJlZVZpZXcuaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVy
VHJlZVZpZXcuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBXZWJMYXllclRyZWVWaWV3Q2xpZW50
OwogY2xhc3MgV2ViTGF5ZXJUcmVlVmlld0ltcGw7CiBzdHJ1Y3QgV2ViUG9pbnQ7CiBzdHJ1Y3Qg
V2ViUmVjdDsKK3N0cnVjdCBXZWJSZW5kZXJpbmdTdGF0czsKIAogY2xhc3MgV2ViTGF5ZXJUcmVl
VmlldyA6IHB1YmxpYyBXZWJOb25Db3B5YWJsZSB7CiBwdWJsaWM6CkBAIC0xNzMsNiArMTc0LDEw
IEBAIHB1YmxpYzoKIAogICAgIC8vIERlYnVnZ2luZyAvIGRhbmdlcm91cyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAorICAgIC8vIEZpbGxzIGluIGEgV2Vi
UmVuZGVyaW5nU3RhdHMgc3RydWN0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHN0
YXRlIG9mIHRoZSBjb21wb3NpdG9yLgorICAgIC8vIFRoaXMgY2FsbCBpcyByZWxhdGl2ZWx5IGV4
cGVuc2l2ZSBpbiB0aHJlYWRlZCBtb2RlIGFzIGl0IGJsb2NrcyBvbiB0aGUgY29tcG9zaXRvciB0
aHJlYWQuCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlbmRlcmluZ1N0YXRzKFdlYlJlbmRlcmlu
Z1N0YXRzJikgY29uc3Q7CisKICAgICAvLyBTaW11bGF0ZXMgYSBsb3N0IGNvbnRleHQuIEZvciB0
ZXN0aW5nIG9ubHkuCiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGxvc2VDb21wb3NpdG9yQ29udGV4
dChpbnQgbnVtVGltZXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0v
cHVibGljL1dlYlJlbmRlcmluZ1N0YXRzLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVi
bGljL1dlYlJlbmRlcmluZ1N0YXRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjE3Njk4NTViMDAzMjU4ZWQwNTBh
NWUxMDA5MTdhNDRlNWMyMWJjOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9j
aHJvbWl1bS9wdWJsaWMvV2ViUmVuZGVyaW5nU3RhdHMuaApAQCAtMCwwICsxLDQ0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBXZWJSZW5kZXJpbmdTdGF0c19oCisjZGVmaW5lIFdlYlJlbmRlcmluZ1N0YXRz
X2gKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBXZWJSZW5kZXJpbmdTdGF0cyB7Cisg
ICAgaW50IG51bUFuaW1hdGlvbkZyYW1lczsKKyAgICBpbnQgbnVtRnJhbWVzU2VudFRvU2NyZWVu
OworCisgICAgV2ViUmVuZGVyaW5nU3RhdHMoKQorICAgICAgICA6IG51bUFuaW1hdGlvbkZyYW1l
cygwKQorICAgICAgICAsIG51bUZyYW1lc1NlbnRUb1NjcmVlbigwKQorICAgIHsKKyAgICB9Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlJlbmRlcmluZ1N0YXRz
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQppbmRleCA4YWUwZTBjZWY5MTQ2NWFhMzkxNmRlNWM4MDgxYzJkMGM5
Y2ZmMDQ4Li43Y2U2MDE0MzRlZDNkYmZlOGZhOGVlOTMzNGI4ODFiOWY4MzNmNWQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCkBAIC0zNzUwLDYgKzM3NTAsNyBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmgnLAorICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyaW5nU3RhdHMuaCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmgn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFz
c0RyYXdRdWFkLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAppbmRleCBiYjZj
MDY0NjJiNDUxMDBiNDQ4N2Y3NjdiN2VlYTY3MTAzMzdjYWM0Li4yZTIxZDZkZmYwN2NjNGZiYWIz
NjNhZTIwZDU1OTRhNGZiMzgzOTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAK
QEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgiCiAj
aW5jbHVkZSAiY2MvQ0NPY2NsdXNpb25UcmFja2VyLmgiCiAjaW5jbHVkZSAiY2MvQ0NPdmVyZHJh
d01ldHJpY3MuaCIKKyNpbmNsdWRlICJjYy9DQ1JlbmRlcmluZ1N0YXRzLmgiCiAjaW5jbHVkZSAi
Y2MvQ0NTZXR0aW5ncy5oIgogI2luY2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIKICNp
bmNsdWRlICJjYy9DQ1RocmVhZFByb3h5LmgiCkBAIC03Miw3ICs3Myw4IEBAIENDTGF5ZXJUcmVl
SG9zdDo6Q0NMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdENsaWVudCogY2xpZW50LCBjb25z
dCBDQ0xheWVyVHJlCiAgICAgLCBtX2FuaW1hdGluZyhmYWxzZSkKICAgICAsIG1fbmVlZHNBbmlt
YXRlTGF5ZXJzKGZhbHNlKQogICAgICwgbV9jbGllbnQoY2xpZW50KQotICAgICwgbV9mcmFtZU51
bWJlcigwKQorICAgICwgbV9hbmltYXRpb25GcmFtZU51bWJlcigwKQorICAgICwgbV9jb21taXRO
dW1iZXIoMCkKICAgICAsIG1fZnJhbWVJc0ZvckRpc3BsYXkoZmFsc2UpCiAgICAgLCBtX2xheWVy
UmVuZGVyZXJJbml0aWFsaXplZChmYWxzZSkKICAgICAsIG1fY29udGV4dExvc3QoZmFsc2UpCkBA
IC0yMTksNiArMjIxLDggQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUFuaW1hdGlvbnMo
ZG91YmxlIG1vbm90b25pY0ZyYW1lQmVnaW5UaW1lKQogICAgIG1fY2xpZW50LT51cGRhdGVBbmlt
YXRpb25zKG1vbm90b25pY0ZyYW1lQmVnaW5UaW1lKTsKICAgICBhbmltYXRlTGF5ZXJzKG1vbm90
b25pY0ZyYW1lQmVnaW5UaW1lKTsKICAgICBtX2FuaW1hdGluZyA9IGZhbHNlOworCisgICAgbV9h
bmltYXRpb25GcmFtZU51bWJlcisrOwogfQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6bGF5b3V0
KCkKQEAgLTI1MSw3ICsyNTUsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6ZmluaXNoQ29tbWl0
T25JbXBsVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGhvc3RJbXBsKQogICAgIGlmIChyb290
TGF5ZXIoKSAmJiBtX25lZWRzQW5pbWF0ZUxheWVycykKICAgICAgICAgaG9zdEltcGwtPnNldE5l
ZWRzQW5pbWF0ZUxheWVycygpOwogCi0gICAgaG9zdEltcGwtPnNldFNvdXJjZUZyYW1lTnVtYmVy
KGZyYW1lTnVtYmVyKCkpOworICAgIGhvc3RJbXBsLT5zZXRTb3VyY2VGcmFtZU51bWJlcihjb21t
aXROdW1iZXIoKSk7CiAgICAgaG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZSh2aWV3cG9ydFNpemUo
KSk7CiAgICAgaG9zdEltcGwtPnNldERldmljZVNjYWxlRmFjdG9yKGRldmljZVNjYWxlRmFjdG9y
KCkpOwogICAgIGhvc3RJbXBsLT5zZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1pdHMobV9wYWdlU2Nh
bGVGYWN0b3IsIG1fbWluUGFnZVNjYWxlRmFjdG9yLCBtX21heFBhZ2VTY2FsZUZhY3Rvcik7CkBA
IC0yNjAsNyArMjY0LDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmZpbmlzaENvbW1pdE9uSW1w
bFRocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBob3N0SW1wbCkKICAgICBob3N0SW1wbC0+c2V0
VmlzaWJsZShtX3Zpc2libGUpOwogICAgIGhvc3RJbXBsLT5zZXRTb3VyY2VGcmFtZUNhbkJlRHJh
d24obV9mcmFtZUlzRm9yRGlzcGxheSk7CiAKLSAgICBtX2ZyYW1lTnVtYmVyKys7CisgICAgbV9j
b21taXROdW1iZXIrKzsKIH0KIAogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmNvbW1pdENvbXBsZXRl
KCkKQEAgLTMxMyw2ICszMTcsMTIgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmZpbmlzaEFsbFJl
bmRlcmluZygpCiAgICAgbV9wcm94eS0+ZmluaXNoQWxsUmVuZGVyaW5nKCk7CiB9CiAKK3ZvaWQg
Q0NMYXllclRyZWVIb3N0OjpyZW5kZXJpbmdTdGF0cyhDQ1JlbmRlcmluZ1N0YXRzJiBzdGF0cykg
Y29uc3QKK3sKKyAgICBtX3Byb3h5LT5pbXBsU2lkZVJlbmRlcmluZ1N0YXRzKHN0YXRzKTsKKyAg
ICBzdGF0cy5udW1BbmltYXRpb25GcmFtZXMgPSBhbmltYXRpb25GcmFtZU51bWJlcigpOworfQor
CiBjb25zdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBDQ0xheWVyVHJlZUhvc3Q6OmxheWVy
UmVuZGVyZXJDYXBhYmlsaXRpZXMoKSBjb25zdAogewogICAgIHJldHVybiBtX3Byb3h5LT5sYXll
clJlbmRlcmVyQ2FwYWJpbGl0aWVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4
IDU4YjdkMmI4YzE4YzJiNDg1NGFjNmNjNTJiMjhmZjYwOGQ2ODFjYjYuLjFiZjNiMDQyZDI0Y2Fk
MWQ0MzcyYzIxZDhkMWI3N2RjYTM0ZTU4YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5o
CkBAIC00NiwxMiArNDYsMTMgQEAgY2xhc3MgQ0NHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBDQ0xh
eWVyQ2hyb21pdW07CiBjbGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBsOwogY2xhc3MgQ0NMYXllclRy
ZWVIb3N0SW1wbENsaWVudDsKLXN0cnVjdCBDQ1Njcm9sbEFuZFNjYWxlU2V0OwogY2xhc3MgQ0NU
ZXh0dXJlVXBkYXRlcjsKIGNsYXNzIE1hbmFnZWRUZXh0dXJlOwogY2xhc3MgUmVnaW9uOwogY2xh
c3MgVGV4dHVyZUFsbG9jYXRvcjsKIGNsYXNzIFRleHR1cmVNYW5hZ2VyOworc3RydWN0IENDUmVu
ZGVyaW5nU3RhdHM7CitzdHJ1Y3QgQ0NTY3JvbGxBbmRTY2FsZVNldDsKIAogY2xhc3MgQ0NMYXll
clRyZWVIb3N0Q2xpZW50IHsKIHB1YmxpYzoKQEAgLTE5Miw3ICsxOTMsMTEgQEAgcHVibGljOgog
CiAgICAgdm9pZCBmaW5pc2hBbGxSZW5kZXJpbmcoKTsKIAotICAgIGludCBmcmFtZU51bWJlcigp
IGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVOdW1iZXI7IH0KKyAgICBpbnQgYW5pbWF0aW9uRnJhbWVO
dW1iZXIoKSBjb25zdCB7IHJldHVybiBtX2FuaW1hdGlvbkZyYW1lTnVtYmVyOyB9CisKKyAgICBp
bnQgY29tbWl0TnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9jb21taXROdW1iZXI7IH0KKworICAg
IHZvaWQgcmVuZGVyaW5nU3RhdHMoQ0NSZW5kZXJpbmdTdGF0cyYpIGNvbnN0OwogCiAgICAgY29u
c3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgbGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygp
IGNvbnN0OwogCkBAIC0yODAsNyArMjg1LDggQEAgcHJpdmF0ZToKIAogICAgIENDTGF5ZXJUcmVl
SG9zdENsaWVudCogbV9jbGllbnQ7CiAKLSAgICBpbnQgbV9mcmFtZU51bWJlcjsKKyAgICBpbnQg
bV9hbmltYXRpb25GcmFtZU51bWJlcjsKKyAgICBpbnQgbV9jb21taXROdW1iZXI7CiAgICAgYm9v
bCBtX2ZyYW1lSXNGb3JEaXNwbGF5OwogCiAgICAgT3duUHRyPENDUHJveHk+IG1fcHJveHk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4IDk0MTQxZDY5YjU0Yjll
ZDJhMDE1YmVjNThjZDdmYzE5YTZlY2YyNDMuLmQ4Y2JlMWUwOTc4MjA0NmVhMDU0N2JiOWJiNDQx
Zjc3NzAzZWFhOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBA
IC0xMTMsNyArMTEzLDcgQEAgUGFzc093blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBDQ0xheWVy
VHJlZUhvc3RJbXBsOjpjcmVhdGUoY29uc3QgQ0NMYXllclRyZWVTZXQKIENDTGF5ZXJUcmVlSG9z
dEltcGw6OkNDTGF5ZXJUcmVlSG9zdEltcGwoY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYgc2V0
dGluZ3MsIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQqIGNsaWVudCkKICAgICA6IG1fY2xpZW50
KGNsaWVudCkKICAgICAsIG1fc291cmNlRnJhbWVOdW1iZXIoLTEpCi0gICAgLCBtX2ZyYW1lTnVt
YmVyKDApCisgICAgLCBtX3NvdXJjZUFuaW1hdGlvbkZyYW1lTnVtYmVyKDApCiAgICAgLCBtX3Jv
b3RTY3JvbGxMYXllckltcGwoMCkKICAgICAsIG1fY3VycmVudGx5U2Nyb2xsaW5nTGF5ZXJJbXBs
KDApCiAgICAgLCBtX3Njcm9sbGluZ0xheWVySWRGcm9tUHJldmlvdXNUcmVlKC0xKQpAQCAtNTA1
LDcgKzUwNSw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6ZHJhd0xheWVycyhjb25zdCBG
cmFtZURhdGEmIGZyYW1lKQogCiAgICAgbV9sYXllclJlbmRlcmVyLT5maW5pc2hEcmF3aW5nRnJh
bWUoKTsKIAotICAgICsrbV9mcmFtZU51bWJlcjsKKyAgICArK21fc291cmNlQW5pbWF0aW9uRnJh
bWVOdW1iZXI7CiAKICAgICAvLyBUaGUgbmV4dCBmcmFtZSBzaG91bGQgc3RhcnQgYnkgYXNzdW1p
bmcgbm90aGluZyBoYXMgY2hhbmdlZCwgYW5kIGNoYW5nZXMgYXJlIG5vdGVkIGFzIHRoZXkgb2Nj
dXIuCiAgICAgbV9yb290TGF5ZXJJbXBsLT5yZXNldEFsbENoYW5nZVRyYWNraW5nRm9yU3VidHJl
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCmluZGV4IDgyNzkxMjQ4N2Yy
MGIwMTc2N2U0NDE2OTdlNDNkOGZjYTM0YmEzNWEuLjA3NWI1ZTAzZjUyMTFlMzhhOGZhYmViMTcz
MDdiZmZmNjFiYmE0MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKQEAg
LTExOSw3ICsxMTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRGb250QXRsYXMoUGFzc093blB0
cjxDQ0ZvbnRBdGxhcz4pOwogCiAgICAgdm9pZCBmaW5pc2hBbGxSZW5kZXJpbmcoKTsKLSAgICBp
bnQgZnJhbWVOdW1iZXIoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lTnVtYmVyOyB9CisgICAgaW50
IHNvdXJjZUFuaW1hdGlvbkZyYW1lTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VBbmlt
YXRpb25GcmFtZU51bWJlcjsgfQogCiAgICAgYm9vbCBpbml0aWFsaXplTGF5ZXJSZW5kZXJlcihQ
YXNzUmVmUHRyPENDR3JhcGhpY3NDb250ZXh0PiwgVGV4dHVyZVVwbG9hZGVyT3B0aW9uKTsKICAg
ICBib29sIGlzQ29udGV4dExvc3QoKTsKQEAgLTE5Niw3ICsxOTYsNyBAQCBwcm90ZWN0ZWQ6CiAK
ICAgICBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50KiBtX2NsaWVudDsKICAgICBpbnQgbV9zb3Vy
Y2VGcmFtZU51bWJlcjsKLSAgICBpbnQgbV9mcmFtZU51bWJlcjsKKyAgICBpbnQgbV9zb3VyY2VB
bmltYXRpb25GcmFtZU51bWJlcjsKIAogcHJpdmF0ZToKICAgICB2b2lkIGNvbXB1dGVEb3VibGVU
YXBab29tRGVsdGFzKENDU2Nyb2xsQW5kU2NhbGVTZXQqIHNjcm9sbEluZm8pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5o
CmluZGV4IGZiMmNiYmFlOTZmMDczMzAwNzVjMjUzMzVkYmEwN2U1OWE1ZDJlMmYuLmZjYjI3Njhl
OTk5MThhOWVlZjI0NjU2NTEwNzUxYjkzYmY2MmU3NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKQEAgLTM2LDYg
KzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ0NGb250QXRsYXM7CiBjbGFzcyBD
Q1RocmVhZDsKIGNsYXNzIENDR3JhcGhpY3NDb250ZXh0Oworc3RydWN0IENDUmVuZGVyaW5nU3Rh
dHM7CiBzdHJ1Y3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllczsKIAogLy8gQWJzdHJhY3QgY2xh
c3MgcmVzcG9uc2libGUgZm9yIHByb3h5aW5nIGNvbW1hbmRzIGZyb20gdGhlIG1haW4tdGhyZWFk
IHNpZGUgb2YKQEAgLTc5LDYgKzgwLDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBpbnQgY29t
cG9zaXRvcklkZW50aWZpZXIoKSBjb25zdCA9IDA7CiAKKyAgICB2aXJ0dWFsIHZvaWQgaW1wbFNp
ZGVSZW5kZXJpbmdTdGF0cyhDQ1JlbmRlcmluZ1N0YXRzJikgPSAwOworCiAgICAgdmlydHVhbCBj
b25zdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVz
KCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzQW5pbWF0ZSgpID0gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUmVuZGVyaW5nU3RhdHMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUmVuZGVyaW5nU3RhdHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNjljOGUwMjY4NGVjMmU1
MDAzZjMyMDQ3MGQwOWNjZTkwZWYxMTYyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJpbmdTdGF0cy5oCkBAIC0w
LDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ0NSZW5kZXJpbmdTdGF0c19oCisj
ZGVmaW5lIENDUmVuZGVyaW5nU3RhdHNfaAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVj
dCBDQ1JlbmRlcmluZ1N0YXRzIHsKKyAgICBpbnQgbnVtQW5pbWF0aW9uRnJhbWVzOworICAgIGlu
dCBudW1GcmFtZXNTZW50VG9TY3JlZW47CisKKyAgICBDQ1JlbmRlcmluZ1N0YXRzKCkKKyAgICAg
ICAgOiBudW1BbmltYXRpb25GcmFtZXMoMCkKKyAgICAgICAgLCBudW1GcmFtZXNTZW50VG9TY3Jl
ZW4oMCkKKyAgICB7CisgICAgfQorfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJv
eHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
aW5nbGVUaHJlYWRQcm94eS5jcHAKaW5kZXggMTRjZGYxYzA4MDhiMzUxYzRkMGFjMjZhODdjNjBi
M2JhNWFlMDQzZS4uYzBmNzdhZmExZWQxNDVjMTljNTFjZDQ1MTQzOGUyMmU0NGI4MjRjZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
aW5nbGVUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAK
ICNpbmNsdWRlICJjYy9DQ0ZvbnRBdGxhcy5oIgogI2luY2x1ZGUgImNjL0NDR3JhcGhpY3NDb250
ZXh0LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCisjaW5jbHVkZSAiY2MvQ0NS
ZW5kZXJpbmdTdGF0cy5oIgogI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNs
dWRlICJjYy9DQ1RpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CkBAIC0xOTgs
NiArMTk5LDExIEBAIGJvb2wgQ0NTaW5nbGVUaHJlYWRQcm94eTo6cmVjcmVhdGVDb250ZXh0KCkK
ICAgICByZXR1cm4gaW5pdGlhbGl6ZWQ7CiB9CiAKK3ZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6
aW1wbFNpZGVSZW5kZXJpbmdTdGF0cyhDQ1JlbmRlcmluZ1N0YXRzJiBzdGF0cykKK3sKKyAgICBz
dGF0cy5udW1GcmFtZXNTZW50VG9TY3JlZW4gPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5zb3VyY2VB
bmltYXRpb25GcmFtZU51bWJlcigpOworfQorCiBjb25zdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0
aWVzJiBDQ1NpbmdsZVRocmVhZFByb3h5OjpsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkgY29u
c3QKIHsKICAgICBBU1NFUlQobV9sYXllclJlbmRlcmVySW5pdGlhbGl6ZWQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVU
aHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCmluZGV4IDkzYzEyOGJjODVhNzdhNzMyYjE5YTJkZmZk
YjcyMzYyYjVmOTJhNjEuLjJkN2JmNzY1MDAxMGU2MTQ0ZmYwOWE2NTI1NDA0ZjhjZWI3MmFiNmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2luZ2xlVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKQEAgLTUyLDYgKzUyLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpbml0aWFsaXplTGF5ZXJSZW5kZXJlcigpIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgYm9vbCByZWNyZWF0ZUNvbnRleHQoKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIGludCBjb21wb3NpdG9ySWRlbnRpZmllcigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJu
IG1fY29tcG9zaXRvcklkZW50aWZpZXI7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaW1wbFNpZGVSZW5k
ZXJpbmdTdGF0cyhDQ1JlbmRlcmluZ1N0YXRzJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBjb25z
dCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkg
Y29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGxvc2VDb250ZXh0KCkgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzQW5pbWF0ZSgpIE9WRVJSSURFOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RocmVhZFByb3h5LmNwcAppbmRleCBhOWJmYmMxYTc4YWFlZDkzNjI0ODMwNDE4NDgwOGRmY2Ji
NTlmZmZkLi40NTA5YTdlYTUzY2Q0MDRiYzJkODBlNzI1MTRmZTYzNTg0NThkMWQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVh
ZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RocmVhZFByb3h5LmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgImNjL0ND
R3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiY2MvQ0NJbnB1dEhhbmRsZXIuaCIKICNpbmNs
dWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKKyNpbmNsdWRlICJjYy9DQ1JlbmRlcmluZ1N0YXRz
LmgiCiAjaW5jbHVkZSAiY2MvQ0NTY2hlZHVsZXIuaCIKICNpbmNsdWRlICJjYy9DQ1Njb3BlZFRo
cmVhZFByb3h5LmgiCiAjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgpAQCAtMjY3LDYg
KzI2OCwxNyBAQCBpbnQgQ0NUaHJlYWRQcm94eTo6Y29tcG9zaXRvcklkZW50aWZpZXIoKSBjb25z
dAogICAgIHJldHVybiBtX2NvbXBvc2l0b3JJZGVudGlmaWVyOwogfQogCit2b2lkIENDVGhyZWFk
UHJveHk6OmltcGxTaWRlUmVuZGVyaW5nU3RhdHMoQ0NSZW5kZXJpbmdTdGF0cyYgc3RhdHMpCit7
CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIENDQ29tcGxldGlvbkV2ZW50IGNv
bXBsZXRpb247CisgICAgQ0NQcm94eTo6aW1wbFRocmVhZCgpLT5wb3N0VGFzayhjcmVhdGVDQ1Ro
cmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OmltcGxTaWRlUmVuZGVyaW5nU3RhdHNPbklt
cGxUaHJlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2VzcygmY29tcGxldGlvbiksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1Ro
cmVhZEFjY2Vzcygmc3RhdHMpKSk7CisgICAgY29tcGxldGlvbi53YWl0KCk7Cit9CisKIGNvbnN0
IExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMmIENDVGhyZWFkUHJveHk6OmxheWVyUmVuZGVyZXJD
YXBhYmlsaXRpZXMoKSBjb25zdAogewogICAgIEFTU0VSVChtX2xheWVyUmVuZGVyZXJJbml0aWFs
aXplZCk7CkBAIC04ODAsNCArODkyLDExIEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6cmVjcmVhdGVD
b250ZXh0T25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uLCBDCiAgICAg
Y29tcGxldGlvbi0+c2lnbmFsKCk7CiB9CiAKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6aW1wbFNpZGVS
ZW5kZXJpbmdTdGF0c09uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbiwg
Q0NSZW5kZXJpbmdTdGF0cyogc3RhdHMpCit7CisgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsK
KyAgICBzdGF0cy0+bnVtRnJhbWVzU2VudFRvU2NyZWVuID0gbV9sYXllclRyZWVIb3N0SW1wbC0+
c291cmNlQW5pbWF0aW9uRnJhbWVOdW1iZXIoKTsKKyAgICBjb21wbGV0aW9uLT5zaWduYWwoKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCmluZGV4
IDU1MjFmMmYwNjNjMWVhZGEwYzlmNzYxMmY0OGY5N2JjODU4OWQzNDguLmNmZjYyMDdjYmMyZjdl
NmIwOTQ3ZmM3ZmY4Zjc2OWIwNDgyNWFjYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKQEAg
LTU5LDYgKzU5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpbml0aWFsaXplTGF5ZXJS
ZW5kZXJlcigpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCByZWNyZWF0ZUNvbnRleHQoKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIGludCBjb21wb3NpdG9ySWRlbnRpZmllcigpIGNvbnN0IE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBpbXBsU2lkZVJlbmRlcmluZ1N0YXRzKENDUmVuZGVy
aW5nU3RhdHMmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGNvbnN0IExheWVyUmVuZGVyZXJDYXBh
YmlsaXRpZXMmIGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKSBjb25zdCBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgbG9zZUNvbnRleHQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0TmVlZHNBbmltYXRlKCkgT1ZFUlJJREU7CkBAIC0xNDAsNiArMTQxLDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHNldEZ1bGxSb290TGF5ZXJEYW1hZ2VPbkltcGxUaHJlYWQoKTsKICAgICB2b2lk
IGFjcXVpcmVMYXllclRleHR1cmVzRm9yTWFpblRocmVhZE9uSW1wbFRocmVhZChDQ0NvbXBsZXRp
b25FdmVudCopOwogICAgIHZvaWQgcmVjcmVhdGVDb250ZXh0T25JbXBsVGhyZWFkKENDQ29tcGxl
dGlvbkV2ZW50KiwgQ0NHcmFwaGljc0NvbnRleHQqLCBib29sKiByZWNyZWF0ZVN1Y2NlZWRlZCwg
TGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyopOworICAgIHZvaWQgaW1wbFNpZGVSZW5kZXJpbmdT
dGF0c09uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCosIENDUmVuZGVyaW5nU3RhdHMqKTsK
ICAgICBDQ1NjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwUmVzdWx0IHNjaGVkdWxlZEFjdGlvbkRy
YXdBbmRTd2FwSW50ZXJuYWwoYm9vbCBmb3JjZWREcmF3KTsKICAgICB2b2lkIHNldEZvbnRBdGxh
c09uSW1wbFRocmVhZChQYXNzT3duUHRyPENDRm9udEF0bGFzPik7CiAgICAgdm9pZCBmb3JjZVNl
cmlhbGl6ZU9uU3dhcEJ1ZmZlcnNPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaAppbmRleCAxZTU4ODJkMWEwYzNhZGQ4
ODdlYWUzZTI4ZTkxZTZmNmU2YzhjZWE1Li5iNjYyMjJkNjRkMjczMGE5YTc1ZmJkMjVhZmYxMjBi
OWI0MTk3OTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJW
aWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oCkBAIC02
Miw2ICs2Miw3IEBAIHN0cnVjdCBXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyczsKIHN0cnVj
dCBXZWJNZWRpYVBsYXllckFjdGlvbjsKIHN0cnVjdCBXZWJQbHVnaW5BY3Rpb247CiBzdHJ1Y3Qg
V2ViUG9pbnQ7CitzdHJ1Y3QgV2ViUmVuZGVyaW5nU3RhdHM7CiAKIGNsYXNzIFdlYlZpZXcgOiBw
dWJsaWMgV2ViV2lkZ2V0IHsKIHB1YmxpYzoKQEAgLTQ1NSw2ICs0NTYsMTAgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCBib29sIHNldEVkaXRhYmxlU2VsZWN0aW9uT2Zmc2V0cyhpbnQgc3RhcnQs
IGludCBlbmQpID0gMDsKIAorICAgIC8vIEZpbGxzIGluIGEgV2ViUmVuZGVyaW5nU3RhdHMgc3Ry
dWN0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHN0YXRlIG9mIHRoZSBjb21wb3Np
dG9yLgorICAgIC8vIFRoaXMgY2FsbCBpcyByZWxhdGl2ZWx5IGV4cGVuc2l2ZSBpbiB0aHJlYWRl
ZCBtb2RlIGFzIGl0IGJsb2NrcyBvbiB0aGUgY29tcG9zaXRvciB0aHJlYWQuCisgICAgdmlydHVh
bCB2b2lkIHJlbmRlcmluZ1N0YXRzKFdlYlJlbmRlcmluZ1N0YXRzJikgY29uc3QgeyB9CisKICAg
ICAvLyBWaXNpYmlsaXR5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAKICAgICAvLyBTZXRzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBX
ZWJWaWV3LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJU
cmVlVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3
LmNwcAppbmRleCAzNTZhZjFkZTIzZmNkODA1YjZiNDFmZGZmOGQ4MDg3Y2Q4NzliZjYwLi5jMmQ4
NGZlN2RkYmIzZjZhYjI2NWEyOGUxMDIyMzUzYzY5MWEzN2FjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcApAQCAtMzEsMTAgKzMxLDEyIEBA
CiAjaW5jbHVkZSAiV2ViTGF5ZXJUcmVlVmlld0ltcGwuaCIKICNpbmNsdWRlICJjYy9DQ0dyYXBo
aWNzQ29udGV4dC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgorI2luY2x1ZGUg
ImNjL0NDUmVuZGVyaW5nU3RhdHMuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJMYXllci5oIgog
I2luY2x1ZGUgInBsYXRmb3JtL1dlYlBvaW50LmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViUmVj
dC5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlNpemUuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2Vi
UmVuZGVyaW5nU3RhdHMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTE3OCw2
ICsxODAsMTUgQEAgV2ViR3JhcGhpY3NDb250ZXh0M0QqIFdlYkxheWVyVHJlZVZpZXc6OmNvbnRl
eHQoKQogICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmV4dHJhY3RXZWJHcmFw
aGljc0NvbnRleHQzRChtX3ByaXZhdGUtPmxheWVyVHJlZUhvc3QoKS0+Y29udGV4dCgpLT5jb250
ZXh0M0QoKSk7CiB9CiAKK3ZvaWQgV2ViTGF5ZXJUcmVlVmlldzo6cmVuZGVyaW5nU3RhdHMoV2Vi
UmVuZGVyaW5nU3RhdHMmIHN0YXRzKSBjb25zdAoreworICAgIENDUmVuZGVyaW5nU3RhdHMgY2NT
dGF0czsKKyAgICBtX3ByaXZhdGUtPmxheWVyVHJlZUhvc3QoKS0+cmVuZGVyaW5nU3RhdHMoY2NT
dGF0cyk7CisKKyAgICBzdGF0cy5udW1BbmltYXRpb25GcmFtZXMgPSBjY1N0YXRzLm51bUFuaW1h
dGlvbkZyYW1lczsKKyAgICBzdGF0cy5udW1GcmFtZXNTZW50VG9TY3JlZW4gPSBjY1N0YXRzLm51
bUZyYW1lc1NlbnRUb1NjcmVlbjsKK30KKwogdm9pZCBXZWJMYXllclRyZWVWaWV3Ojpsb3NlQ29t
cG9zaXRvckNvbnRleHQoaW50IG51bVRpbWVzKQogewogICAgIG1fcHJpdmF0ZS0+bGF5ZXJUcmVl
SG9zdCgpLT5sb3NlQ29udGV4dChudW1UaW1lcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggNTVhMTA5ZTE0YjJkZTJmNTg1YWMwMTMyZDY3YWU3ZDI1
ZGI0NmQ5YS4uYTJlYjM4MjJhNWJmOTVmZWUwOWQ0ZDMyYzU3M2MwZDMxY2MyMjY0NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtNzI4LDYgKzcyOCwx
MyBAQCB2b2lkIFdlYlZpZXdJbXBsOjp0cmFuc2ZlckFjdGl2ZVdoZWVsRmxpbmdBbmltYXRpb24o
Y29uc3QgV2ViQWN0aXZlV2hlZWxGbGluZ1BhcgogICAgIHNjaGVkdWxlQW5pbWF0aW9uKCk7CiB9
CiAKK3ZvaWQgV2ViVmlld0ltcGw6OnJlbmRlcmluZ1N0YXRzKFdlYlJlbmRlcmluZ1N0YXRzJiBz
dGF0cykgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZl
KCkpOworICAgIGlmICghbV9sYXllclRyZWVWaWV3LmlzTnVsbCgpKQorICAgICAgICBtX2xheWVy
VHJlZVZpZXcucmVuZGVyaW5nU3RhdHMoc3RhdHMpOworfQorCiB2b2lkIFdlYlZpZXdJbXBsOjpz
dGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBJbnRQb2ludCYgc2Nyb2xsLCBib29sIHVzZUFu
Y2hvciwgZmxvYXQgbmV3U2NhbGUsIGRvdWJsZSBkdXJhdGlvblNlYykKIHsKICAgICBpZiAoIW1f
bGF5ZXJUcmVlVmlldy5pc051bGwoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5oCmluZGV4IDcwYzYyMmNmZTkxZTYwZjM2M2MxMWVmODNmM2Q4NWViMjdkMmU0NDYuLjBh
OTEyZjNhNTNiZmU2MTU0OTI0ZDhlNzAzODg4YWU5YmYwNmM0M2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAtMjkyLDYgKzI5Miw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlQmF0dGVyeVN0YXR1cyhjb25zdCBXZWJCYXR0ZXJ5U3RhdHVz
Jik7CiAjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmZXJBY3RpdmVXaGVlbEZsaW5nQW5p
bWF0aW9uKGNvbnN0IFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJik7CisgICAgdmlydHVh
bCB2b2lkIHJlbmRlcmluZ1N0YXRzKFdlYlJlbmRlcmluZ1N0YXRzJikgY29uc3Q7CiAKICAgICAv
LyBXZWJMYXllclRyZWVWaWV3Q2xpZW50CiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZWdpbkZyYW1l
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVl
SG9zdFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhv
c3RUZXN0LmNwcAppbmRleCA0YTJmZDMxYTkzNDRhNjJkMWYwMzZhNzYwYTgyODQzZDI3MDI1Y2Q4
Li4xMmYzYTgyNDc5NGU4Y2Q0NjU0NDU1MzIwZDgwMzk0ZjhiZjE1YjM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKQEAg
LTgzMiw3ICs4MzIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGxheW91dCgpCiAgICAg
ewogICAgICAgICBMYXllckNocm9taXVtKiByb290ID0gbV9sYXllclRyZWVIb3N0LT5yb290TGF5
ZXIoKTsKLSAgICAgICAgaWYgKCFtX2xheWVyVHJlZUhvc3QtPmZyYW1lTnVtYmVyKCkpCisgICAg
ICAgIGlmICghbV9sYXllclRyZWVIb3N0LT5jb21taXROdW1iZXIoKSkKICAgICAgICAgICAgIEVY
UEVDVF9FUShyb290LT5zY3JvbGxQb3NpdGlvbigpLCBtX2luaXRpYWxTY3JvbGwpOwogICAgICAg
ICBlbHNlIHsKICAgICAgICAgICAgIEVYUEVDVF9FUShyb290LT5zY3JvbGxQb3NpdGlvbigpLCBt
X2luaXRpYWxTY3JvbGwgKyBtX3Njcm9sbEFtb3VudCk7CkBAIC05MTgsNyArOTE4LDcgQEAgcHVi
bGljOgogICAgICAgICByb290LT5zZXRTY3JvbGxhYmxlKHRydWUpOwogICAgICAgICByb290LT5z
ZXRNYXhTY3JvbGxQb3NpdGlvbihJbnRTaXplKDEwMCwgMTAwKSk7CiAKLSAgICAgICAgaWYgKCFp
bXBsLT5zb3VyY2VGcmFtZU51bWJlcigpICYmIGltcGwtPmZyYW1lTnVtYmVyKCkgPT0gMSkgewor
ICAgICAgICBpZiAoIWltcGwtPnNvdXJjZUZyYW1lTnVtYmVyKCkgJiYgaW1wbC0+c291cmNlQW5p
bWF0aW9uRnJhbWVOdW1iZXIoKSA9PSAxKSB7CiAgICAgICAgICAgICAvLyBGaXJzdCBkcmF3IGFm
dGVyIGZpcnN0IGNvbW1pdC4KICAgICAgICAgICAgIEVYUEVDVF9FUShyb290LT5zY3JvbGxEZWx0
YSgpLCBJbnRTaXplKCkpOwogICAgICAgICAgICAgcm9vdC0+c2Nyb2xsQnkobV9zY3JvbGxBbW91
bnQpOwpAQCAtOTI2LDcgKzkyNiw3IEBAIHB1YmxpYzoKIAogICAgICAgICAgICAgRVhQRUNUX0VR
KHJvb3QtPnNjcm9sbFBvc2l0aW9uKCksIG1faW5pdGlhbFNjcm9sbCk7CiAgICAgICAgICAgICBw
b3N0U2V0TmVlZHNSZWRyYXdUb01haW5UaHJlYWQoKTsKLSAgICAgICAgfSBlbHNlIGlmICghaW1w
bC0+c291cmNlRnJhbWVOdW1iZXIoKSAmJiBpbXBsLT5mcmFtZU51bWJlcigpID09IDIpIHsKKyAg
ICAgICAgfSBlbHNlIGlmICghaW1wbC0+c291cmNlRnJhbWVOdW1iZXIoKSAmJiBpbXBsLT5zb3Vy
Y2VBbmltYXRpb25GcmFtZU51bWJlcigpID09IDIpIHsKICAgICAgICAgICAgIC8vIFNlY29uZCBk
cmF3IGFmdGVyIGZpcnN0IGNvbW1pdC4KICAgICAgICAgICAgIEVYUEVDVF9FUShyb290LT5zY3Jv
bGxEZWx0YSgpLCBtX3Njcm9sbEFtb3VudCk7CiAgICAgICAgICAgICByb290LT5zY3JvbGxCeSht
X3Njcm9sbEFtb3VudCk7CkBAIC05MzYsNyArOTM2LDcgQEAgcHVibGljOgogICAgICAgICAgICAg
cG9zdFNldE5lZWRzQ29tbWl0VG9NYWluVGhyZWFkKCk7CiAgICAgICAgIH0gZWxzZSBpZiAoaW1w
bC0+c291cmNlRnJhbWVOdW1iZXIoKSA9PSAxKSB7CiAgICAgICAgICAgICAvLyBUaGlyZCBvciBs
YXRlciBkcmF3IGFmdGVyIHNlY29uZCBjb21taXQuCi0gICAgICAgICAgICBFWFBFQ1RfR0UoaW1w
bC0+ZnJhbWVOdW1iZXIoKSwgMyk7CisgICAgICAgICAgICBFWFBFQ1RfR0UoaW1wbC0+c291cmNl
QW5pbWF0aW9uRnJhbWVOdW1iZXIoKSwgMyk7CiAgICAgICAgICAgICBFWFBFQ1RfRVEocm9vdC0+
c2Nyb2xsRGVsdGEoKSwgSW50U2l6ZSgpKTsKICAgICAgICAgICAgIEVYUEVDVF9FUShyb290LT5z
Y3JvbGxQb3NpdGlvbigpLCBtX2luaXRpYWxTY3JvbGwgKyBtX3Njcm9sbEFtb3VudCArIG1fc2Ny
b2xsQW1vdW50KTsKICAgICAgICAgICAgIGVuZFRlc3QoKTsKQEAgLTEwMDksNyArMTAwOSw3IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRBbmREcmF3RnJhbWUoKQogICAg
IHsKLSAgICAgICAgaW50IGxhc3RGcmFtZSA9IG1fbGF5ZXJUcmVlSG9zdC0+ZnJhbWVOdW1iZXIo
KSAtIDE7CisgICAgICAgIGludCBsYXN0RnJhbWUgPSBtX2xheWVyVHJlZUhvc3QtPmNvbW1pdE51
bWJlcigpIC0gMTsKIAogICAgICAgICAvLyBUaGVzZSBmcmFtZXMgc2hvdWxkIGRyYXcuCiAgICAg
ICAgIHN3aXRjaCAobGFzdEZyYW1lKSB7CkBAIC0xMDQwLDcgKzEwNDAsNyBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0KCkKICAgICB7Ci0gICAgICAgIGludCBsYXN0RnJh
bWUgPSBtX2xheWVyVHJlZUhvc3QtPmZyYW1lTnVtYmVyKCkgLSAxOworICAgICAgICBpbnQgbGFz
dEZyYW1lID0gbV9sYXllclRyZWVIb3N0LT5jb21taXROdW1iZXIoKSAtIDE7CiAKICAgICAgICAg
Ly8gVGhlc2UgZnJhbWVzIHNob3VsZCBub3QgZHJhdy4KICAgICAgICAgc3dpdGNoIChsYXN0RnJh
bWUpIHsKQEAgLTIzMDgsNyArMjMwOCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYmVn
aW5Db21taXRPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGltcGwpIE9WRVJSSURFCiAg
ICAgewogICAgICAgICBFWFBFQ1RfRVEobV9yb290U2Nyb2xsTGF5ZXItPnNjcm9sbFBvc2l0aW9u
KCksIEludFBvaW50KCkpOwotICAgICAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdC0+ZnJhbWVOdW1i
ZXIoKSkKKyAgICAgICAgaWYgKCFtX2xheWVyVHJlZUhvc3QtPmNvbW1pdE51bWJlcigpKQogICAg
ICAgICAgICAgRVhQRUNUX0VRKG1fY2hpbGRMYXllci0+c2Nyb2xsUG9zaXRpb24oKSwgSW50UG9p
bnQoKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIEVYUEVDVF9FUShtX2NoaWxkTGF5ZXIt
PnNjcm9sbFBvc2l0aW9uKCksIEludFBvaW50KCkgKyBtX3Njcm9sbEFtb3VudCk7CkBAIC0yMzE2
LDExICsyMzE2LDExIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3TGF5ZXJzT25D
Q1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBpbXBsKSBPVkVSUklERQogICAgIHsKLSAgICAg
ICAgaWYgKGltcGwtPmZyYW1lTnVtYmVyKCkgPT0gMSkgeworICAgICAgICBpZiAoaW1wbC0+c291
cmNlQW5pbWF0aW9uRnJhbWVOdW1iZXIoKSA9PSAxKSB7CiAgICAgICAgICAgICBFWFBFQ1RfRVEo
aW1wbC0+c2Nyb2xsQmVnaW4oSW50UG9pbnQoNSwgNSksIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpX
aGVlbCksIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGFydGVkKTsKICAgICAgICAgICAg
IGltcGwtPnNjcm9sbEJ5KG1fc2Nyb2xsQW1vdW50KTsKICAgICAgICAgICAgIGltcGwtPnNjcm9s
bEVuZCgpOwotICAgICAgICB9IGVsc2UgaWYgKGltcGwtPmZyYW1lTnVtYmVyKCkgPT0gMikKKyAg
ICAgICAgfSBlbHNlIGlmIChpbXBsLT5zb3VyY2VBbmltYXRpb25GcmFtZU51bWJlcigpID09IDIp
CiAgICAgICAgICAgICBlbmRUZXN0KCk7CiAgICAgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149356</attachid>
            <date>2012-06-25 14:13:19 -0700</date>
            <delta_ts>2012-06-26 12:03:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88268-20120625141318.patch</filename>
            <type>text/plain</type>
            <size>27941</size>
            <attacher name="Dave Tu">dtu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA4ZWNmMTBiM2UwM2Y3
NzZjZjM4OTRmNmQxOWMyNDI0Zjk2NzQ5Y2RmLi5lYzQyOWQ2ZWIzNjdjOTM3MWZiZjA4ZGQ4Zjgy
Njk5MWFlMzJjYjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wNi0wNCAg
RGF2ZSBUdSAgPGR0dUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBFeHBvc2Ug
cmVuZGVyaW5nIHN0YXRpc3RpY3MgdG8gV2ViV2lkZ2V0LgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODgyNjgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgV2ViS2l0IHNpZGUgb2YgYSBiYXNpYyBmcmFt
ZXdvcmsgZm9yIGV4cG9zaW5nIHJlbmRlcmluZyBzdGF0aXN0aWNzCisgICAgICAgIHRvIENocm9t
aXVtJ3MgLS1lbmFibGUtYmVuY2htYXJraW5nIGV4dGVuc2lvbi4KKworICAgICAgICAqIGNocm9t
aXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Lmg6CisgICAgICAgIChXZWJSZW5kZXJpbmdTdGF0
aXN0aWNzKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJMYXllclRyZWVWaWV3KToK
KwogMjAxMi0wNi0yMiAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyMTA2NC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4OTM1ODdl
MGUxZWI1M2EyYTQ1MDhjMThmMjgzYzlmM2Y0NTEzNDI1Li5iODkwMTQwZDVhOGJhMzg5YmQ4ODYy
YjFjNzEwNTFiNWMyN2Y3MTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTItMDYt
MDQgIERhdmUgVHUgIDxkdHVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRXhw
b3NlIHJlbmRlcmluZyBzdGF0aXN0aWNzIHRvIFdlYldpZGdldC4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4MjY4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIFdlYktpdCBzaWRlIG9mIGEgYmFzaWMg
ZnJhbWV3b3JrIGZvciBleHBvc2luZyByZW5kZXJpbmcgc3RhdGlzdGljcworICAgICAgICB0byBD
aHJvbWl1bSdzIC0tZW5hYmxlLWJlbmNobWFya2luZyBleHRlbnNpb24uCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6aW1wbEZyYW1lTnVtYmVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5Lmg6CisgICAgICAgIChDQ1Byb3h5
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVh
ZFByb3h5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJl
YWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjppbXBsRnJhbWVO
dW1iZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFBy
b3h5OjppbXBsRnJhbWVOdW1iZXJPbkltcGxUaHJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaDoKKyAgICAgICAgKENDVGhyZWFkUHJv
eHkpOgorCiAyMDEyLTA2LTI0ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWls
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTIxMTA2LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwppbmRleCA4YTZmMTM0ZWEwMjlkOGM0YWRmNzIzYjNiMjcwNDA4ZmU1
N2JiM2JhLi4xNjdmNDdiZDVjMDQ5ZmVhZjBiOGI0MjgxMTE1OWM3MjIyY2EwMjNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA2LTA0ICBEYXZlIFR1
ICA8ZHR1QGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEV4cG9zZSByZW5kZXJp
bmcgc3RhdGlzdGljcyB0byBXZWJXaWRnZXQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04ODI2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoZSBXZWJLaXQgc2lkZSBvZiBhIGJhc2ljIGZyYW1ld29yayBm
b3IgZXhwb3NpbmcgcmVuZGVyaW5nIHN0YXRpc3RpY3MKKyAgICAgICAgdG8gQ2hyb21pdW0ncyAt
LWVuYWJsZS1iZW5jaG1hcmtpbmcgZXh0ZW5zaW9uLgorCisgICAgICAgICogc3JjL1dlYkxheWVy
VHJlZVZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3OjpyZW5kZXJp
bmdTdGF0aXN0aWNzKToKKyAgICAgICAgKFdlYktpdCk6CisKIDIwMTItMDYtMjMgIEt3YW5nIFl1
bCBTZW8gIDxza3l1bEBjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBbY2hyb21pdW1dIFJldHVy
biBoYXMgdmFsdWUsIGluIGZ1bmN0aW9uIHJldHVybmluZyB2b2lkCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaSBiL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBp
CmluZGV4IGQ3OWY4NTNiMzE5ZmYxMGZmNDhhMWUwMGNhYmNlZTc3ZWRkNjFkYzguLjc1YWQ5NzJm
YmY4Mjc4OTU5ODAxNzQyZWE0N2U5ZTNiMDc4MWEzMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0
Zm9ybS9QbGF0Zm9ybS5neXBpCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCkBA
IC05NCw2ICs5NCw3IEBACiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlByaXZhdGVQ
dHIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlJlY3QuaCcsCiAgICAgICAg
ICAgICAnY2hyb21pdW0vcHVibGljL1dlYlJlZmVycmVyUG9saWN5LmgnLAorICAgICAgICAgICAg
J2Nocm9taXVtL3B1YmxpYy9XZWJSZW5kZXJpbmdTdGF0cy5oJywKICAgICAgICAgICAgICdjaHJv
bWl1bS9wdWJsaWMvV2ViU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvci5oJywKICAgICAgICAg
ICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViU2l6ZS5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9w
dWJsaWMvV2ViU29ja2V0U3RyZWFtRXJyb3IuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZv
cm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaCBiL1NvdXJjZS9QbGF0Zm9ybS9j
aHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oCmluZGV4IGQ1ZDk5YTI4NTU5MjMxMDlh
ZWYxNGM1YmU1YTRhZjVjMjRiYWU1OWYuLmY2NzkzMGRkMTA1NjhkMTExYzQ2ZTlmM2VjOWQyN2Uy
YzhmYjA4OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2Vi
TGF5ZXJUcmVlVmlldy5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2Vi
TGF5ZXJUcmVlVmlldy5oCkBAIC00NCw2ICs0NCw3IEBAIGNsYXNzIFdlYkxheWVyVHJlZVZpZXdD
bGllbnQ7CiBjbGFzcyBXZWJMYXllclRyZWVWaWV3SW1wbDsKIHN0cnVjdCBXZWJQb2ludDsKIHN0
cnVjdCBXZWJSZWN0Oworc3RydWN0IFdlYlJlbmRlcmluZ1N0YXRzOwogCiBjbGFzcyBXZWJMYXll
clRyZWVWaWV3IDogcHVibGljIFdlYk5vbkNvcHlhYmxlIHsKIHB1YmxpYzoKQEAgLTE3Myw2ICsx
NzQsMTAgQEAgcHVibGljOgogCiAgICAgLy8gRGVidWdnaW5nIC8gZGFuZ2Vyb3VzIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCisgICAgLy8gRmlsbHMgaW4g
YSBXZWJSZW5kZXJpbmdTdGF0cyBzdHJ1Y3QgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0
aGUgc3RhdGUgb2YgdGhlIGNvbXBvc2l0b3IuCisgICAgLy8gVGhpcyBjYWxsIGlzIHJlbGF0aXZl
bHkgZXhwZW5zaXZlIGluIHRocmVhZGVkIG1vZGUgYXMgaXQgYmxvY2tzIG9uIHRoZSBjb21wb3Np
dG9yIHRocmVhZC4KKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVuZGVyaW5nU3RhdHMoV2ViUmVu
ZGVyaW5nU3RhdHMmKSBjb25zdDsKKwogICAgIC8vIFNpbXVsYXRlcyBhIGxvc3QgY29udGV4dC4g
Rm9yIHRlc3Rpbmcgb25seS4KICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgbG9zZUNvbXBvc2l0b3JD
b250ZXh0KGludCBudW1UaW1lcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJv
bWl1bS9wdWJsaWMvV2ViUmVuZGVyaW5nU3RhdHMuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1
bS9wdWJsaWMvV2ViUmVuZGVyaW5nU3RhdHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMTc2OTg1NWIwMDMyNThl
ZDA1MGE1ZTEwMDkxN2E0NGU1YzIxYmM4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1BsYXRm
b3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSZW5kZXJpbmdTdGF0cy5oCkBAIC0wLDAgKzEsNDQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFdlYlJlbmRlcmluZ1N0YXRzX2gKKyNkZWZpbmUgV2ViUmVuZGVyaW5n
U3RhdHNfaAorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IFdlYlJlbmRlcmluZ1N0YXRz
IHsKKyAgICBpbnQgbnVtQW5pbWF0aW9uRnJhbWVzOworICAgIGludCBudW1GcmFtZXNTZW50VG9T
Y3JlZW47CisKKyAgICBXZWJSZW5kZXJpbmdTdGF0cygpCisgICAgICAgIDogbnVtQW5pbWF0aW9u
RnJhbWVzKDApCisgICAgICAgICwgbnVtRnJhbWVzU2VudFRvU2NyZWVuKDApCisgICAgeworICAg
IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViUmVuZGVyaW5n
U3RhdHNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGIzZGE3MGJhNDhiZDI2MTYxNzY0Mzg4MjM3MTk3
NTg1MzM0NTBiZWIuLmRiNmM5NGI5M2FlYWJlOGJkNzc3NGVlYWFkNmIzY2U3ZTEwMzIzYWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKQEAgLTM3NTEsNiArMzc1MSw3IEBACiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuaCcsCisgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJpbmdTdGF0cy5oJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuY3Bw
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBh
c3MuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5k
ZXJQYXNzRHJhd1F1YWQuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4
IDdkMTRjZjVkYTNhNWMzMmJlNWYzMDQ2NWEyYWU4ZmQ4ZjQwZTNjZmMuLjNjZjFmOGQ1YTllYTFm
ZDhiNzhlYmNhMWY4ZTA5MDJkMWVjMzA1NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
LmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
aCIKICNpbmNsdWRlICJjYy9DQ09jY2x1c2lvblRyYWNrZXIuaCIKICNpbmNsdWRlICJjYy9DQ092
ZXJkcmF3TWV0cmljcy5oIgorI2luY2x1ZGUgImNjL0NDUmVuZGVyaW5nU3RhdHMuaCIKICNpbmNs
dWRlICJjYy9DQ1NldHRpbmdzLmgiCiAjaW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5o
IgogI2luY2x1ZGUgImNjL0NDVGhyZWFkUHJveHkuaCIKQEAgLTcyLDcgKzczLDggQEAgQ0NMYXll
clRyZWVIb3N0OjpDQ0xheWVyVHJlZUhvc3QoQ0NMYXllclRyZWVIb3N0Q2xpZW50KiBjbGllbnQs
IGNvbnN0IENDTGF5ZXJUcmUKICAgICAsIG1fYW5pbWF0aW5nKGZhbHNlKQogICAgICwgbV9uZWVk
c0FuaW1hdGVMYXllcnMoZmFsc2UpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCi0gICAgLCBtX2Zy
YW1lTnVtYmVyKDApCisgICAgLCBtX2FuaW1hdGlvbkZyYW1lTnVtYmVyKDApCisgICAgLCBtX2Nv
bW1pdE51bWJlcigwKQogICAgICwgbV9sYXllclJlbmRlcmVySW5pdGlhbGl6ZWQoZmFsc2UpCiAg
ICAgLCBtX2NvbnRleHRMb3N0KGZhbHNlKQogICAgICwgbV9udW1UaW1lc1JlY3JlYXRlU2hvdWxk
RmFpbCgwKQpAQCAtMjExLDYgKzIxMyw4IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVB
bmltYXRpb25zKGRvdWJsZSBtb25vdG9uaWNGcmFtZUJlZ2luVGltZSkKICAgICBtX2NsaWVudC0+
dXBkYXRlQW5pbWF0aW9ucyhtb25vdG9uaWNGcmFtZUJlZ2luVGltZSk7CiAgICAgYW5pbWF0ZUxh
eWVycyhtb25vdG9uaWNGcmFtZUJlZ2luVGltZSk7CiAgICAgbV9hbmltYXRpbmcgPSBmYWxzZTsK
KworICAgIG1fYW5pbWF0aW9uRnJhbWVOdW1iZXIrKzsKIH0KIAogdm9pZCBDQ0xheWVyVHJlZUhv
c3Q6OmxheW91dCgpCkBAIC0yNDMsMTQgKzI0NywxNCBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6
ZmluaXNoQ29tbWl0T25JbXBsVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGhvc3RJbXBsKQog
ICAgIGlmIChyb290TGF5ZXIoKSAmJiBtX25lZWRzQW5pbWF0ZUxheWVycykKICAgICAgICAgaG9z
dEltcGwtPnNldE5lZWRzQW5pbWF0ZUxheWVycygpOwogCi0gICAgaG9zdEltcGwtPnNldFNvdXJj
ZUZyYW1lTnVtYmVyKGZyYW1lTnVtYmVyKCkpOworICAgIGhvc3RJbXBsLT5zZXRTb3VyY2VGcmFt
ZU51bWJlcihjb21taXROdW1iZXIoKSk7CiAgICAgaG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZSh2
aWV3cG9ydFNpemUoKSk7CiAgICAgaG9zdEltcGwtPnNldERldmljZVNjYWxlRmFjdG9yKGRldmlj
ZVNjYWxlRmFjdG9yKCkpOwogICAgIGhvc3RJbXBsLT5zZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1p
dHMobV9wYWdlU2NhbGVGYWN0b3IsIG1fbWluUGFnZVNjYWxlRmFjdG9yLCBtX21heFBhZ2VTY2Fs
ZUZhY3Rvcik7CiAgICAgaG9zdEltcGwtPnNldEJhY2tncm91bmRDb2xvcihtX2JhY2tncm91bmRD
b2xvcik7CiAgICAgaG9zdEltcGwtPnNldEhhc1RyYW5zcGFyZW50QmFja2dyb3VuZChtX2hhc1Ry
YW5zcGFyZW50QmFja2dyb3VuZCk7CiAKLSAgICBtX2ZyYW1lTnVtYmVyKys7CisgICAgbV9jb21t
aXROdW1iZXIrKzsKIH0KIAogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmNvbW1pdENvbXBsZXRlKCkK
QEAgLTMwMyw2ICszMDcsMTIgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmZpbmlzaEFsbFJlbmRl
cmluZygpCiAgICAgbV9wcm94eS0+ZmluaXNoQWxsUmVuZGVyaW5nKCk7CiB9CiAKK3ZvaWQgQ0NM
YXllclRyZWVIb3N0OjpyZW5kZXJpbmdTdGF0cyhDQ1JlbmRlcmluZ1N0YXRzJiBzdGF0cykgY29u
c3QKK3sKKyAgICBtX3Byb3h5LT5pbXBsU2lkZVJlbmRlcmluZ1N0YXRzKHN0YXRzKTsKKyAgICBz
dGF0cy5udW1BbmltYXRpb25GcmFtZXMgPSBhbmltYXRpb25GcmFtZU51bWJlcigpOworfQorCiBj
b25zdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBDQ0xheWVyVHJlZUhvc3Q6OmxheWVyUmVu
ZGVyZXJDYXBhYmlsaXRpZXMoKSBjb25zdAogewogICAgIHJldHVybiBtX3Byb3h5LT5sYXllclJl
bmRlcmVyQ2FwYWJpbGl0aWVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4IDZm
Njk0NmUzMWM3YTMzYWJhZGY3OGQ2NTY1MGUwYjkzNTI2NjY1NGYuLjJjZjJhOWQyYmZjMzhlYzRh
Yjg4NjZiODMyZDVhNWVjNWQyYWIzN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBA
IC00NiwxMiArNDYsMTMgQEAgY2xhc3MgQ0NHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBDQ0xheWVy
Q2hyb21pdW07CiBjbGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBsOwogY2xhc3MgQ0NMYXllclRyZWVI
b3N0SW1wbENsaWVudDsKLXN0cnVjdCBDQ1Njcm9sbEFuZFNjYWxlU2V0OwogY2xhc3MgQ0NUZXh0
dXJlVXBkYXRlcjsKIGNsYXNzIE1hbmFnZWRUZXh0dXJlOwogY2xhc3MgUmVnaW9uOwogY2xhc3Mg
VGV4dHVyZUFsbG9jYXRvcjsKIGNsYXNzIFRleHR1cmVNYW5hZ2VyOworc3RydWN0IENDUmVuZGVy
aW5nU3RhdHM7CitzdHJ1Y3QgQ0NTY3JvbGxBbmRTY2FsZVNldDsKIAogY2xhc3MgQ0NMYXllclRy
ZWVIb3N0Q2xpZW50IHsKIHB1YmxpYzoKQEAgLTE5Miw3ICsxOTMsMTEgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBmaW5pc2hBbGxSZW5kZXJpbmcoKTsKIAotICAgIGludCBmcmFtZU51bWJlcigpIGNv
bnN0IHsgcmV0dXJuIG1fZnJhbWVOdW1iZXI7IH0KKyAgICBpbnQgYW5pbWF0aW9uRnJhbWVOdW1i
ZXIoKSBjb25zdCB7IHJldHVybiBtX2FuaW1hdGlvbkZyYW1lTnVtYmVyOyB9CisKKyAgICBpbnQg
Y29tbWl0TnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9jb21taXROdW1iZXI7IH0KKworICAgIHZv
aWQgcmVuZGVyaW5nU3RhdHMoQ0NSZW5kZXJpbmdTdGF0cyYpIGNvbnN0OwogCiAgICAgY29uc3Qg
TGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgbGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpIGNv
bnN0OwogCkBAIC0yODQsNyArMjg5LDggQEAgcHJpdmF0ZToKIAogICAgIENDTGF5ZXJUcmVlSG9z
dENsaWVudCogbV9jbGllbnQ7CiAKLSAgICBpbnQgbV9mcmFtZU51bWJlcjsKKyAgICBpbnQgbV9h
bmltYXRpb25GcmFtZU51bWJlcjsKKyAgICBpbnQgbV9jb21taXROdW1iZXI7CiAKICAgICBPd25Q
dHI8Q0NQcm94eT4gbV9wcm94eTsKICAgICBib29sIG1fbGF5ZXJSZW5kZXJlckluaXRpYWxpemVk
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAppbmRleCA5YTExYmQyODA4
YjI5ZjNlODJjOTRjN2Q2MTBmMWYwMGFjODVjYWY5Li5mNjEyYjcwNGM3YzZhYWMzZGJhOTEwZDA0
NzRjZWQ2NjEwMDYxMWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNw
cApAQCAtMTE0LDcgKzExNCw3IEBAIFBhc3NPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gQ0NM
YXllclRyZWVIb3N0SW1wbDo6Y3JlYXRlKGNvbnN0IENDTGF5ZXJUcmVlU2V0CiBDQ0xheWVyVHJl
ZUhvc3RJbXBsOjpDQ0xheWVyVHJlZUhvc3RJbXBsKGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3Mm
IHNldHRpbmdzLCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50KiBjbGllbnQpCiAgICAgOiBtX2Ns
aWVudChjbGllbnQpCiAgICAgLCBtX3NvdXJjZUZyYW1lTnVtYmVyKC0xKQotICAgICwgbV9mcmFt
ZU51bWJlcigwKQorICAgICwgbV9zb3VyY2VBbmltYXRpb25GcmFtZU51bWJlcigwKQogICAgICwg
bV9yb290U2Nyb2xsTGF5ZXJJbXBsKDApCiAgICAgLCBtX2N1cnJlbnRseVNjcm9sbGluZ0xheWVy
SW1wbCgwKQogICAgICwgbV9zY3JvbGxpbmdMYXllcklkRnJvbVByZXZpb3VzVHJlZSgtMSkKQEAg
LTUxOSw3ICs1MTksNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmRyYXdMYXllcnMoY29u
c3QgRnJhbWVEYXRhJiBmcmFtZSkKIAogICAgIG1fbGF5ZXJSZW5kZXJlci0+ZmluaXNoRHJhd2lu
Z0ZyYW1lKCk7CiAKLSAgICArK21fZnJhbWVOdW1iZXI7CisgICAgKyttX3NvdXJjZUFuaW1hdGlv
bkZyYW1lTnVtYmVyOwogCiAgICAgLy8gVGhlIG5leHQgZnJhbWUgc2hvdWxkIHN0YXJ0IGJ5IGFz
c3VtaW5nIG5vdGhpbmcgaGFzIGNoYW5nZWQsIGFuZCBjaGFuZ2VzIGFyZSBub3RlZCBhcyB0aGV5
IG9jY3VyLgogICAgIG1fcm9vdExheWVySW1wbC0+cmVzZXRBbGxDaGFuZ2VUcmFja2luZ0ZvclN1
YnRyZWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAppbmRleCA5MzllNDJl
NmI3NmZjYzc0NTliZjIwZTZjZDZlYTY4YmUwYTRhYTk3Li5lOGE4NTU0NDk1ZGY5ZjNhMDI4OGYx
MzczMTNjNWQ0MjY5ODdkNTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5o
CkBAIC0xMTksNyArMTE5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Rm9udEF0bGFzKFBhc3NP
d25QdHI8Q0NGb250QXRsYXM+KTsKIAogICAgIHZvaWQgZmluaXNoQWxsUmVuZGVyaW5nKCk7Ci0g
ICAgaW50IGZyYW1lTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZU51bWJlcjsgfQorICAg
IGludCBzb3VyY2VBbmltYXRpb25GcmFtZU51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNl
QW5pbWF0aW9uRnJhbWVOdW1iZXI7IH0KIAogICAgIGJvb2wgaW5pdGlhbGl6ZUxheWVyUmVuZGVy
ZXIoUGFzc1JlZlB0cjxDQ0dyYXBoaWNzQ29udGV4dD4sIFRleHR1cmVVcGxvYWRlck9wdGlvbik7
CiAgICAgYm9vbCBpc0NvbnRleHRMb3N0KCk7CkBAIC0xOTYsNyArMTk2LDcgQEAgcHJvdGVjdGVk
OgogCiAgICAgQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCogbV9jbGllbnQ7CiAgICAgaW50IG1f
c291cmNlRnJhbWVOdW1iZXI7Ci0gICAgaW50IG1fZnJhbWVOdW1iZXI7CisgICAgaW50IG1fc291
cmNlQW5pbWF0aW9uRnJhbWVOdW1iZXI7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBjb21wdXRlRG91
YmxlVGFwWm9vbURlbHRhcyhDQ1Njcm9sbEFuZFNjYWxlU2V0KiBzY3JvbGxJbmZvKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJv
eHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJv
eHkuaAppbmRleCAxYzJmOWNhZmQ1MzUyNWNmMWI5NDY3NWRkNGEyZjk2ODY0OGYxOGE1Li45NDA3
MDVlMWI5NzYwOWY1NWQ5ZTBjMTBjYzJhY2NmZGQxYWE3NTNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCkBAIC0z
Niw2ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENDRm9udEF0bGFzOwogY2xh
c3MgQ0NUaHJlYWQ7CiBjbGFzcyBDQ0dyYXBoaWNzQ29udGV4dDsKK3N0cnVjdCBDQ1JlbmRlcmlu
Z1N0YXRzOwogc3RydWN0IExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXM7CiAKIC8vIEFic3RyYWN0
IGNsYXNzIHJlc3BvbnNpYmxlIGZvciBwcm94eWluZyBjb21tYW5kcyBmcm9tIHRoZSBtYWluLXRo
cmVhZCBzaWRlIG9mCkBAIC04MSw2ICs4Miw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgaW50
IGNvbXBvc2l0b3JJZGVudGlmaWVyKCkgY29uc3QgPSAwOwogCisgICAgdmlydHVhbCB2b2lkIGlt
cGxTaWRlUmVuZGVyaW5nU3RhdHMoQ0NSZW5kZXJpbmdTdGF0cyYpID0gMDsKKwogICAgIHZpcnR1
YWwgY29uc3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgbGF5ZXJSZW5kZXJlckNhcGFiaWxp
dGllcygpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0FuaW1hdGUoKSA9
IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1JlbmRlcmluZ1N0YXRzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1JlbmRlcmluZ1N0YXRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjY5YzhlMDI2ODRl
YzJlNTAwM2YzMjA0NzBkMDljY2U5MGVmMTE2MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyaW5nU3RhdHMuaApA
QCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENDUmVuZGVyaW5nU3RhdHNf
aAorI2RlZmluZSBDQ1JlbmRlcmluZ1N0YXRzX2gKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitz
dHJ1Y3QgQ0NSZW5kZXJpbmdTdGF0cyB7CisgICAgaW50IG51bUFuaW1hdGlvbkZyYW1lczsKKyAg
ICBpbnQgbnVtRnJhbWVzU2VudFRvU2NyZWVuOworCisgICAgQ0NSZW5kZXJpbmdTdGF0cygpCisg
ICAgICAgIDogbnVtQW5pbWF0aW9uRnJhbWVzKDApCisgICAgICAgICwgbnVtRnJhbWVzU2VudFRv
U2NyZWVuKDApCisgICAgeworICAgIH0KK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVh
ZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCmluZGV4IGY1NGJhNzc1MDUyNTQ5N2RhY2Y2NzE1ZTgw
N2IyYzE4Y2E4YzJiN2MuLjdlNDA2YjQ1YTU5OGUxZDdlYTdiM2NkYmJlN2MxMDgwNzRhMDc0NTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCkBAIC0zMSw2ICszMSw3
IEBACiAjaW5jbHVkZSAiY2MvQ0NGb250QXRsYXMuaCIKICNpbmNsdWRlICJjYy9DQ0dyYXBoaWNz
Q29udGV4dC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgorI2luY2x1ZGUgImNj
L0NDUmVuZGVyaW5nU3RhdHMuaCIKICNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAj
aW5jbHVkZSAiY2MvQ0NUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgpAQCAt
MjA0LDYgKzIwNSwxMSBAQCBib29sIENDU2luZ2xlVGhyZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4
dCgpCiAgICAgcmV0dXJuIGluaXRpYWxpemVkOwogfQogCit2b2lkIENDU2luZ2xlVGhyZWFkUHJv
eHk6OmltcGxTaWRlUmVuZGVyaW5nU3RhdHMoQ0NSZW5kZXJpbmdTdGF0cyYgc3RhdHMpCit7Cisg
ICAgc3RhdHMubnVtRnJhbWVzU2VudFRvU2NyZWVuID0gbV9sYXllclRyZWVIb3N0SW1wbC0+c291
cmNlQW5pbWF0aW9uRnJhbWVOdW1iZXIoKTsKK30KKwogY29uc3QgTGF5ZXJSZW5kZXJlckNhcGFi
aWxpdGllcyYgQ0NTaW5nbGVUaHJlYWRQcm94eTo6bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygp
IGNvbnN0CiB7CiAgICAgQVNTRVJUKG1fbGF5ZXJSZW5kZXJlckluaXRpYWxpemVkKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2lu
Z2xlVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaAppbmRleCA0NmNiMzAyYWM2MTI4NjgwNzJkN2Y5
ODgzNWUyZjE3NzA5YWE0MWI1Li40NGYwMjgxN2Q2MTg1NmJkODk1YzQ0M2E2ZDZmZTJmMWVhN2Yx
NTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCkBAIC01Myw2ICs1Myw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgcmVjcmVhdGVDb250ZXh0KCkgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCBpbnQgY29tcG9zaXRvcklkZW50aWZpZXIoKSBjb25zdCBPVkVSUklERSB7IHJl
dHVybiBtX2NvbXBvc2l0b3JJZGVudGlmaWVyOyB9CisgICAgdmlydHVhbCB2b2lkIGltcGxTaWRl
UmVuZGVyaW5nU3RhdHMoQ0NSZW5kZXJpbmdTdGF0cyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
Y29uc3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgbGF5ZXJSZW5kZXJlckNhcGFiaWxpdGll
cygpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBsb3NlQ29udGV4dCgpIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0FuaW1hdGUoKSBPVkVSUklERTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhy
ZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggZTJlY2I5YzU4NTkxNWE1MzE2NDA3NGVjZjBiNGM3
ZjBkNWFjNTUyNC4uNDc3NDZmNTUzNGI3ZDcwODgzYzI2NmM4ZmUzZGRkOWZiZmMyMTk1MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJj
Yy9DQ0dyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgImNjL0NDSW5wdXRIYW5kbGVyLmgiCiAj
aW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCisjaW5jbHVkZSAiY2MvQ0NSZW5kZXJpbmdT
dGF0cy5oIgogI2luY2x1ZGUgImNjL0NDU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NTY29w
ZWRUaHJlYWRQcm94eS5oIgogI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKQEAgLTI4
Niw2ICsyODcsMTcgQEAgaW50IENDVGhyZWFkUHJveHk6OmNvbXBvc2l0b3JJZGVudGlmaWVyKCkg
Y29uc3QKICAgICByZXR1cm4gbV9jb21wb3NpdG9ySWRlbnRpZmllcjsKIH0KIAordm9pZCBDQ1Ro
cmVhZFByb3h5OjppbXBsU2lkZVJlbmRlcmluZ1N0YXRzKENDUmVuZGVyaW5nU3RhdHMmIHN0YXRz
KQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBDQ0NvbXBsZXRpb25FdmVu
dCBjb21wbGV0aW9uOworICAgIENDUHJveHk6OmltcGxUaHJlYWQoKS0+cG9zdFRhc2soY3JlYXRl
Q0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjppbXBsU2lkZVJlbmRlcmluZ1N0YXRz
T25JbXBsVGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoJmNvbXBsZXRpb24pLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jv
c3NUaHJlYWRBY2Nlc3MoJnN0YXRzKSkpOworICAgIGNvbXBsZXRpb24ud2FpdCgpOworfQorCiBj
b25zdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBDQ1RocmVhZFByb3h5OjpsYXllclJlbmRl
cmVyQ2FwYWJpbGl0aWVzKCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9sYXllclJlbmRlcmVySW5p
dGlhbGl6ZWQpOwpAQCAtODk1LDQgKzkwNywxMSBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnJlY3Jl
YXRlQ29udGV4dE9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbiwgQwog
ICAgIGNvbXBsZXRpb24tPnNpZ25hbCgpOwogfQogCit2b2lkIENDVGhyZWFkUHJveHk6OmltcGxT
aWRlUmVuZGVyaW5nU3RhdHNPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRp
b24sIENDUmVuZGVyaW5nU3RhdHMqIHN0YXRzKQoreworICAgIEFTU0VSVChpc0ltcGxUaHJlYWQo
KSk7CisgICAgc3RhdHMtPm51bUZyYW1lc1NlbnRUb1NjcmVlbiA9IG1fbGF5ZXJUcmVlSG9zdElt
cGwtPnNvdXJjZUFuaW1hdGlvbkZyYW1lTnVtYmVyKCk7CisgICAgY29tcGxldGlvbi0+c2lnbmFs
KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaApp
bmRleCA1NzJmOWY0ODgzYWY0NmJhMmQ3MmU5OWQ1ODg1ZDY1ZjhjNmJlYTQwLi41NWZiNmEzMTg5
ZTA1MTQ2NGYyMGMxYTFhMDhjZTJmNGQxZjY0MmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5o
CkBAIC02MCw2ICs2MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaW5pdGlhbGl6ZUxh
eWVyUmVuZGVyZXIoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgcmVjcmVhdGVDb250ZXh0
KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBpbnQgY29tcG9zaXRvcklkZW50aWZpZXIoKSBjb25z
dCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgaW1wbFNpZGVSZW5kZXJpbmdTdGF0cyhDQ1Jl
bmRlcmluZ1N0YXRzJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBjb25zdCBMYXllclJlbmRlcmVy
Q2FwYWJpbGl0aWVzJiBsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkgY29uc3QgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIGxvc2VDb250ZXh0KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIHNldE5lZWRzQW5pbWF0ZSgpIE9WRVJSSURFOwpAQCAtMTQyLDYgKzE0Myw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBzZXRGdWxsUm9vdExheWVyRGFtYWdlT25JbXBsVGhyZWFkKCk7CiAgICAg
dm9pZCBhY3F1aXJlTGF5ZXJUZXh0dXJlc0Zvck1haW5UaHJlYWRPbkltcGxUaHJlYWQoQ0NDb21w
bGV0aW9uRXZlbnQqKTsKICAgICB2b2lkIHJlY3JlYXRlQ29udGV4dE9uSW1wbFRocmVhZChDQ0Nv
bXBsZXRpb25FdmVudCosIENDR3JhcGhpY3NDb250ZXh0KiwgYm9vbCogcmVjcmVhdGVTdWNjZWVk
ZWQsIExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMqKTsKKyAgICB2b2lkIGltcGxTaWRlUmVuZGVy
aW5nU3RhdHNPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqLCBDQ1JlbmRlcmluZ1N0YXRz
Kik7CiAgICAgQ0NTY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcFJlc3VsdCBzY2hlZHVsZWRBY3Rp
b25EcmF3QW5kU3dhcEludGVybmFsKGJvb2wgZm9yY2VkRHJhdyk7CiAgICAgdm9pZCBzZXRGb250
QXRsYXNPbkltcGxUaHJlYWQoUGFzc093blB0cjxDQ0ZvbnRBdGxhcz4pOwogICAgIHZvaWQgZm9y
Y2VTZXJpYWxpemVPblN3YXBCdWZmZXJzT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50Kik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKaW5kZXggYzE1Mjk4MjA0MGQ5
NDAzZWM3YmI4NGQ3YjQ2YjgxMTNhYTc5NGRlNS4uZTg1NzI2MmI2Njc4Yjg1MzI5Yzc5NjFhNzNk
M2QyOWYxMGJlMTcxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaApA
QCAtNjIsNiArNjIsNyBAQCBzdHJ1Y3QgV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM7CiBz
dHJ1Y3QgV2ViTWVkaWFQbGF5ZXJBY3Rpb247CiBzdHJ1Y3QgV2ViUGx1Z2luQWN0aW9uOwogc3Ry
dWN0IFdlYlBvaW50Oworc3RydWN0IFdlYlJlbmRlcmluZ1N0YXRzOwogCiBjbGFzcyBXZWJWaWV3
IDogcHVibGljIFdlYldpZGdldCB7CiBwdWJsaWM6CkBAIC00NTksNiArNDYwLDEwIEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgYm9vbCBzZXRFZGl0YWJsZVNlbGVjdGlvbk9mZnNldHMoaW50IHN0
YXJ0LCBpbnQgZW5kKSA9IDA7CiAKKyAgICAvLyBGaWxscyBpbiBhIFdlYlJlbmRlcmluZ1N0YXRz
IHN0cnVjdCBjb250YWluaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzdGF0ZSBvZiB0aGUgY29t
cG9zaXRvci4KKyAgICAvLyBUaGlzIGNhbGwgaXMgcmVsYXRpdmVseSBleHBlbnNpdmUgaW4gdGhy
ZWFkZWQgbW9kZSBhcyBpdCBibG9ja3Mgb24gdGhlIGNvbXBvc2l0b3IgdGhyZWFkLgorICAgIHZp
cnR1YWwgdm9pZCByZW5kZXJpbmdTdGF0cyhXZWJSZW5kZXJpbmdTdGF0cyYpIGNvbnN0IHsgfQor
CiAgICAgLy8gVmlzaWJpbGl0eSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAgICAgLy8gU2V0cyB0aGUgdmlzaWJpbGl0eSBvZiB0
aGUgV2ViVmlldy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxh
eWVyVHJlZVZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVl
Vmlldy5jcHAKaW5kZXggMzU2YWYxZGUyM2ZjZDgwNWI2YjQxZmRmZjhkODA4N2NkODc5YmY2MC4u
YzJkODRmZTdkZGJiM2Y2YWIyNjVhMjhlMTAyMjM1M2M2OTFhMzdhYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHAKQEAgLTMxLDEwICszMSwx
MiBAQAogI2luY2x1ZGUgIldlYkxheWVyVHJlZVZpZXdJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NH
cmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKKyNpbmNs
dWRlICJjYy9DQ1JlbmRlcmluZ1N0YXRzLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViTGF5ZXIu
aCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJQb2ludC5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dl
YlJlY3QuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTaXplLmgiCisjaW5jbHVkZSA8cHVibGlj
L1dlYlJlbmRlcmluZ1N0YXRzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC0x
NzgsNiArMTgwLDE1IEBAIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBXZWJMYXllclRyZWVWaWV3Ojpj
b250ZXh0KCkKICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpleHRyYWN0V2Vi
R3JhcGhpY3NDb250ZXh0M0QobV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPmNvbnRleHQoKS0+
Y29udGV4dDNEKCkpOwogfQogCit2b2lkIFdlYkxheWVyVHJlZVZpZXc6OnJlbmRlcmluZ1N0YXRz
KFdlYlJlbmRlcmluZ1N0YXRzJiBzdGF0cykgY29uc3QKK3sKKyAgICBDQ1JlbmRlcmluZ1N0YXRz
IGNjU3RhdHM7CisgICAgbV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPnJlbmRlcmluZ1N0YXRz
KGNjU3RhdHMpOworCisgICAgc3RhdHMubnVtQW5pbWF0aW9uRnJhbWVzID0gY2NTdGF0cy5udW1B
bmltYXRpb25GcmFtZXM7CisgICAgc3RhdHMubnVtRnJhbWVzU2VudFRvU2NyZWVuID0gY2NTdGF0
cy5udW1GcmFtZXNTZW50VG9TY3JlZW47Cit9CisKIHZvaWQgV2ViTGF5ZXJUcmVlVmlldzo6bG9z
ZUNvbXBvc2l0b3JDb250ZXh0KGludCBudW1UaW1lcykKIHsKICAgICBtX3ByaXZhdGUtPmxheWVy
VHJlZUhvc3QoKS0+bG9zZUNvbnRleHQobnVtVGltZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IGQyMzkzYzMxYzMxOGNjOWE4OGYyMzg5NjNiNDM2
YTFhOTAxZDdjOTguLjhlOTM5YWE1NzhhNDhkYmQxMDUxYjg4NDNhYjk2OTBiY2I3NjQ5MmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTcyOCw2ICs3
MjgsMTMgQEAgdm9pZCBXZWJWaWV3SW1wbDo6dHJhbnNmZXJBY3RpdmVXaGVlbEZsaW5nQW5pbWF0
aW9uKGNvbnN0IFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXIKICAgICBzY2hlZHVsZUFuaW1hdGlvbigp
OwogfQogCit2b2lkIFdlYlZpZXdJbXBsOjpyZW5kZXJpbmdTdGF0cyhXZWJSZW5kZXJpbmdTdGF0
cyYgc3RhdHMpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Fj
dGl2ZSgpKTsKKyAgICBpZiAoIW1fbGF5ZXJUcmVlVmlldy5pc051bGwoKSkKKyAgICAgICAgbV9s
YXllclRyZWVWaWV3LnJlbmRlcmluZ1N0YXRzKHN0YXRzKTsKK30KKwogdm9pZCBXZWJWaWV3SW1w
bDo6c3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9sbCwgYm9vbCB1
c2VBbmNob3IsIGZsb2F0IG5ld1NjYWxlLCBkb3VibGUgZHVyYXRpb25TZWMpCiB7CiAgICAgaWYg
KCFtX2xheWVyVHJlZVZpZXcuaXNOdWxsKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuaAppbmRleCBkNDUyN2RhMGQ0N2NhYjJmZjU4Yjg2MTAxMDIzNmE3NjI2N2JlMzNi
Li4yODRiNDc4ZDI3MzkxY2U0YjhjNjYwZGJkODE4ZTFhMThkZTk4NWEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTI5Myw2ICsyOTMsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJhdHRlcnlTdGF0dXMoY29uc3QgV2ViQmF0dGVyeVN0
YXR1cyYpOwogI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIHRyYW5zZmVyQWN0aXZlV2hlZWxGbGlu
Z0FuaW1hdGlvbihjb25zdCBXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyYpOworICAgIHZp
cnR1YWwgdm9pZCByZW5kZXJpbmdTdGF0cyhXZWJSZW5kZXJpbmdTdGF0cyYpIGNvbnN0OwogCiAg
ICAgLy8gV2ViTGF5ZXJUcmVlVmlld0NsaWVudAogICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVnaW5G
cmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVy
VHJlZUhvc3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRy
ZWVIb3N0VGVzdC5jcHAKaW5kZXggZDI3NzM3OTBlYmY1NDc5ZjZkMDMyYThlZjI5YmJhMDU3Y2Yz
OWI2Yi4uZDdiYzcwNjcwZjE2NzExNGIyMGRhMTAxODY4YmIzODViYzk0ZmM1MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3Bw
CkBAIC04NjYsNyArODY2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKQog
ICAgIHsKICAgICAgICAgTGF5ZXJDaHJvbWl1bSogcm9vdCA9IG1fbGF5ZXJUcmVlSG9zdC0+cm9v
dExheWVyKCk7Ci0gICAgICAgIGlmICghbV9sYXllclRyZWVIb3N0LT5mcmFtZU51bWJlcigpKQor
ICAgICAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdC0+Y29tbWl0TnVtYmVyKCkpCiAgICAgICAgICAg
ICBFWFBFQ1RfRVEocm9vdC0+c2Nyb2xsUG9zaXRpb24oKSwgbV9pbml0aWFsU2Nyb2xsKTsKICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICBFWFBFQ1RfRVEocm9vdC0+c2Nyb2xsUG9zaXRpb24o
KSwgbV9pbml0aWFsU2Nyb2xsICsgbV9zY3JvbGxBbW91bnQpOwpAQCAtOTUyLDcgKzk1Miw3IEBA
IHB1YmxpYzoKICAgICAgICAgcm9vdC0+c2V0U2Nyb2xsYWJsZSh0cnVlKTsKICAgICAgICAgcm9v
dC0+c2V0TWF4U2Nyb2xsUG9zaXRpb24oSW50U2l6ZSgxMDAsIDEwMCkpOwogCi0gICAgICAgIGlm
ICghaW1wbC0+c291cmNlRnJhbWVOdW1iZXIoKSAmJiBpbXBsLT5mcmFtZU51bWJlcigpID09IDEp
IHsKKyAgICAgICAgaWYgKCFpbXBsLT5zb3VyY2VGcmFtZU51bWJlcigpICYmIGltcGwtPnNvdXJj
ZUFuaW1hdGlvbkZyYW1lTnVtYmVyKCkgPT0gMSkgewogICAgICAgICAgICAgLy8gRmlyc3QgZHJh
dyBhZnRlciBmaXJzdCBjb21taXQuCiAgICAgICAgICAgICBFWFBFQ1RfRVEocm9vdC0+c2Nyb2xs
RGVsdGEoKSwgSW50U2l6ZSgpKTsKICAgICAgICAgICAgIHJvb3QtPnNjcm9sbEJ5KG1fc2Nyb2xs
QW1vdW50KTsKQEAgLTk2MCw3ICs5NjAsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgICAgIEVYUEVD
VF9FUShyb290LT5zY3JvbGxQb3NpdGlvbigpLCBtX2luaXRpYWxTY3JvbGwpOwogICAgICAgICAg
ICAgcG9zdFNldE5lZWRzUmVkcmF3VG9NYWluVGhyZWFkKCk7Ci0gICAgICAgIH0gZWxzZSBpZiAo
IWltcGwtPnNvdXJjZUZyYW1lTnVtYmVyKCkgJiYgaW1wbC0+ZnJhbWVOdW1iZXIoKSA9PSAyKSB7
CisgICAgICAgIH0gZWxzZSBpZiAoIWltcGwtPnNvdXJjZUZyYW1lTnVtYmVyKCkgJiYgaW1wbC0+
c291cmNlQW5pbWF0aW9uRnJhbWVOdW1iZXIoKSA9PSAyKSB7CiAgICAgICAgICAgICAvLyBTZWNv
bmQgZHJhdyBhZnRlciBmaXJzdCBjb21taXQuCiAgICAgICAgICAgICBFWFBFQ1RfRVEocm9vdC0+
c2Nyb2xsRGVsdGEoKSwgbV9zY3JvbGxBbW91bnQpOwogICAgICAgICAgICAgcm9vdC0+c2Nyb2xs
QnkobV9zY3JvbGxBbW91bnQpOwpAQCAtOTcwLDcgKzk3MCw3IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIHBvc3RTZXROZWVkc0NvbW1pdFRvTWFpblRocmVhZCgpOwogICAgICAgICB9IGVsc2UgaWYg
KGltcGwtPnNvdXJjZUZyYW1lTnVtYmVyKCkgPT0gMSkgewogICAgICAgICAgICAgLy8gVGhpcmQg
b3IgbGF0ZXIgZHJhdyBhZnRlciBzZWNvbmQgY29tbWl0LgotICAgICAgICAgICAgRVhQRUNUX0dF
KGltcGwtPmZyYW1lTnVtYmVyKCksIDMpOworICAgICAgICAgICAgRVhQRUNUX0dFKGltcGwtPnNv
dXJjZUFuaW1hdGlvbkZyYW1lTnVtYmVyKCksIDMpOwogICAgICAgICAgICAgRVhQRUNUX0VRKHJv
b3QtPnNjcm9sbERlbHRhKCksIEludFNpemUoKSk7CiAgICAgICAgICAgICBFWFBFQ1RfRVEocm9v
dC0+c2Nyb2xsUG9zaXRpb24oKSwgbV9pbml0aWFsU2Nyb2xsICsgbV9zY3JvbGxBbW91bnQgKyBt
X3Njcm9sbEFtb3VudCk7CiAgICAgICAgICAgICBlbmRUZXN0KCk7CkBAIC0yMjM1LDcgKzIyMzUs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luQ29tbWl0T25DQ1RocmVhZChDQ0xh
eWVyVHJlZUhvc3RJbXBsKiBpbXBsKSBPVkVSUklERQogICAgIHsKICAgICAgICAgRVhQRUNUX0VR
KG1fcm9vdFNjcm9sbExheWVyLT5zY3JvbGxQb3NpdGlvbigpLCBJbnRQb2ludCgpKTsKLSAgICAg
ICAgaWYgKCFtX2xheWVyVHJlZUhvc3QtPmZyYW1lTnVtYmVyKCkpCisgICAgICAgIGlmICghbV9s
YXllclRyZWVIb3N0LT5jb21taXROdW1iZXIoKSkKICAgICAgICAgICAgIEVYUEVDVF9FUShtX2No
aWxkTGF5ZXItPnNjcm9sbFBvc2l0aW9uKCksIEludFBvaW50KCkpOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBFWFBFQ1RfRVEobV9jaGlsZExheWVyLT5zY3JvbGxQb3NpdGlvbigpLCBJbnRQ
b2ludCgpICsgbV9zY3JvbGxBbW91bnQpOwpAQCAtMjI0MywxMSArMjI0MywxMSBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0
SW1wbCogaW1wbCkgT1ZFUlJJREUKICAgICB7Ci0gICAgICAgIGlmIChpbXBsLT5mcmFtZU51bWJl
cigpID09IDEpIHsKKyAgICAgICAgaWYgKGltcGwtPnNvdXJjZUFuaW1hdGlvbkZyYW1lTnVtYmVy
KCkgPT0gMSkgewogICAgICAgICAgICAgRVhQRUNUX0VRKGltcGwtPnNjcm9sbEJlZ2luKEludFBv
aW50KDUsIDUpLCBDQ0lucHV0SGFuZGxlckNsaWVudDo6V2hlZWwpLCBDQ0lucHV0SGFuZGxlckNs
aWVudDo6U2Nyb2xsU3RhcnRlZCk7CiAgICAgICAgICAgICBpbXBsLT5zY3JvbGxCeShtX3Njcm9s
bEFtb3VudCk7CiAgICAgICAgICAgICBpbXBsLT5zY3JvbGxFbmQoKTsKLSAgICAgICAgfSBlbHNl
IGlmIChpbXBsLT5mcmFtZU51bWJlcigpID09IDIpCisgICAgICAgIH0gZWxzZSBpZiAoaW1wbC0+
c291cmNlQW5pbWF0aW9uRnJhbWVOdW1iZXIoKSA9PSAyKQogICAgICAgICAgICAgZW5kVGVzdCgp
OwogICAgIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149580</attachid>
            <date>2012-06-26 12:04:30 -0700</date>
            <delta_ts>2012-06-26 13:31:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88268-20120626120430.patch</filename>
            <type>text/plain</type>
            <size>27887</size>
            <attacher name="Dave Tu">dtu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMjM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBhNjUxNGVmNWNmOTAw
YzE0YjZiZTFmMDZiNjNiZDJmNzYwMTRjMWUzLi4xNTEzM2I1MzljYjVkMzMyNWQzNGRiZDBhMGU3
ZTdjMTYwOWQzM2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wNi0wNCAg
RGF2ZSBUdSAgPGR0dUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBFeHBvc2Ug
cmVuZGVyaW5nIHN0YXRpc3RpY3MgdG8gV2ViV2lkZ2V0LgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODgyNjgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgV2ViS2l0IHNpZGUgb2YgYSBiYXNpYyBmcmFt
ZXdvcmsgZm9yIGV4cG9zaW5nIHJlbmRlcmluZyBzdGF0aXN0aWNzCisgICAgICAgIHRvIENocm9t
aXVtJ3MgLS1lbmFibGUtYmVuY2htYXJraW5nIGV4dGVuc2lvbi4KKworICAgICAgICAqIGNocm9t
aXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Lmg6CisgICAgICAgIChXZWJSZW5kZXJpbmdTdGF0
aXN0aWNzKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJMYXllclRyZWVWaWV3KToK
KwogMjAxMi0wNi0yNSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyMTE3Ni4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCA0NmRmMTA0NjFjM2FlZDA1MTVkMTgwMzE0ODZkMzA0ZGNkYzM0OTlhLi5jY2ZkMDdmOGNjNTVh
ZmIzMGRiZjM3NjBhMTQxYWZiNDI3OWE3NmFiIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAK
KzIwMTItMDYtMDQgIERhdmUgVHUgIDxkdHVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJv
bWl1bV0gRXhwb3NlIHJlbmRlcmluZyBzdGF0aXN0aWNzIHRvIFdlYldpZGdldC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4MjY4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIFdlYktpdCBzaWRlIG9m
IGEgYmFzaWMgZnJhbWV3b3JrIGZvciBleHBvc2luZyByZW5kZXJpbmcgc3RhdGlzdGljcworICAg
ICAgICB0byBDaHJvbWl1bSdzIC0tZW5hYmxlLWJlbmNobWFya2luZyBleHRlbnNpb24uCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6aW1wbEZyYW1lTnVtYmVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5Lmg6CisgICAgICAg
IChDQ1Byb3h5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Np
bmdsZVRocmVhZFByb3h5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5Ojpp
bXBsRnJhbWVOdW1iZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1RocmVhZFByb3h5OjppbXBsRnJhbWVOdW1iZXJPbkltcGxUaHJlYWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaDoKKyAgICAgICAgKEND
VGhyZWFkUHJveHkpOgorCiAyMDEyLTA2LTI2ICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBSZWZhY3RvcmluZzogU2ltcGxpZnkgRm9ybUNvbnRyb2xsZXIgaW50
ZXJmYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDhkMzU4OTgzYjgzZjM4YmE4MjBi
ODMxMWQyNTEyZjNlZDZiMGIyZmQuLjllZTM0ZjcxOThjZGI3MzE4OGY4NTM0ZTkwNTM2MWUyMzA1
Y2RlYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTIt
MDYtMDQgIERhdmUgVHUgIDxkdHVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0g
RXhwb3NlIHJlbmRlcmluZyBzdGF0aXN0aWNzIHRvIFdlYldpZGdldC4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4MjY4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIFdlYktpdCBzaWRlIG9mIGEgYmFz
aWMgZnJhbWV3b3JrIGZvciBleHBvc2luZyByZW5kZXJpbmcgc3RhdGlzdGljcworICAgICAgICB0
byBDaHJvbWl1bSdzIC0tZW5hYmxlLWJlbmNobWFya2luZyBleHRlbnNpb24uCisKKyAgICAgICAg
KiBzcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJl
ZVZpZXc6OnJlbmRlcmluZ1N0YXRpc3RpY3MpOgorICAgICAgICAoV2ViS2l0KToKKwogMjAxMi0w
Ni0yNiAgSnVuIE11a2FpICA8bXVrYWlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFsbG93IHVz
aW5nIDxpbnB1dCB0eXBlPSJjb2xvciI+IFVJIGluIENocm9tZU9TLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkgYi9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lw
aQppbmRleCBkNzlmODUzYjMxOWZmMTBmZjQ4YTFlMDBjYWJjZWU3N2VkZDYxZGM4Li43NWFkOTcy
ZmJmODI3ODk1OTgwMTc0MmVhNDdlOWUzYjA3ODFhMzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxh
dGZvcm0vUGxhdGZvcm0uZ3lwaQorKysgYi9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQpA
QCAtOTQsNiArOTQsNyBAQAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJQcml2YXRl
UHRyLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJSZWN0LmgnLAogICAgICAg
ICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJSZWZlcnJlclBvbGljeS5oJywKKyAgICAgICAgICAg
ICdjaHJvbWl1bS9wdWJsaWMvV2ViUmVuZGVyaW5nU3RhdHMuaCcsCiAgICAgICAgICAgICAnY2hy
b21pdW0vcHVibGljL1dlYlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IuaCcsCiAgICAgICAg
ICAgICAnY2hyb21pdW0vcHVibGljL1dlYlNpemUuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0v
cHVibGljL1dlYlNvY2tldFN0cmVhbUVycm9yLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRm
b3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmggYi9Tb3VyY2UvUGxhdGZvcm0v
Y2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaAppbmRleCBkNWQ5OWEyODU1OTIzMTA5
YWVmMTRjNWJlNWE0YWY1YzI0YmFlNTlmLi5mNjc5MzBkZDEwNTY4ZDExMWM0NmU5ZjNlYzlkMjdl
MmM4ZmIwODkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dl
YkxheWVyVHJlZVZpZXcuaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dl
YkxheWVyVHJlZVZpZXcuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBXZWJMYXllclRyZWVWaWV3
Q2xpZW50OwogY2xhc3MgV2ViTGF5ZXJUcmVlVmlld0ltcGw7CiBzdHJ1Y3QgV2ViUG9pbnQ7CiBz
dHJ1Y3QgV2ViUmVjdDsKK3N0cnVjdCBXZWJSZW5kZXJpbmdTdGF0czsKIAogY2xhc3MgV2ViTGF5
ZXJUcmVlVmlldyA6IHB1YmxpYyBXZWJOb25Db3B5YWJsZSB7CiBwdWJsaWM6CkBAIC0xNzMsNiAr
MTc0LDEwIEBAIHB1YmxpYzoKIAogICAgIC8vIERlYnVnZ2luZyAvIGRhbmdlcm91cyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAorICAgIC8vIEZpbGxzIGlu
IGEgV2ViUmVuZGVyaW5nU3RhdHMgc3RydWN0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQg
dGhlIHN0YXRlIG9mIHRoZSBjb21wb3NpdG9yLgorICAgIC8vIFRoaXMgY2FsbCBpcyByZWxhdGl2
ZWx5IGV4cGVuc2l2ZSBpbiB0aHJlYWRlZCBtb2RlIGFzIGl0IGJsb2NrcyBvbiB0aGUgY29tcG9z
aXRvciB0aHJlYWQuCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlbmRlcmluZ1N0YXRzKFdlYlJl
bmRlcmluZ1N0YXRzJikgY29uc3Q7CisKICAgICAvLyBTaW11bGF0ZXMgYSBsb3N0IGNvbnRleHQu
IEZvciB0ZXN0aW5nIG9ubHkuCiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGxvc2VDb21wb3NpdG9y
Q29udGV4dChpbnQgbnVtVGltZXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hy
b21pdW0vcHVibGljL1dlYlJlbmRlcmluZ1N0YXRzLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21p
dW0vcHVibGljL1dlYlJlbmRlcmluZ1N0YXRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjE3Njk4NTViMDAzMjU4
ZWQwNTBhNWUxMDA5MTdhNDRlNWMyMWJjOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9QbGF0
Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUmVuZGVyaW5nU3RhdHMuaApAQCAtMCwwICsxLDQ0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBXZWJSZW5kZXJpbmdTdGF0c19oCisjZGVmaW5lIFdlYlJlbmRlcmlu
Z1N0YXRzX2gKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBXZWJSZW5kZXJpbmdTdGF0
cyB7CisgICAgaW50IG51bUFuaW1hdGlvbkZyYW1lczsKKyAgICBpbnQgbnVtRnJhbWVzU2VudFRv
U2NyZWVuOworCisgICAgV2ViUmVuZGVyaW5nU3RhdHMoKQorICAgICAgICA6IG51bUFuaW1hdGlv
bkZyYW1lcygwKQorICAgICAgICAsIG51bUZyYW1lc1NlbnRUb1NjcmVlbigwKQorICAgIHsKKyAg
ICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlJlbmRlcmlu
Z1N0YXRzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBlOWViZDZjMWY0ZTM4ZGQ4MjUwNDRlZTE0MTA5
YzQxYzM5YWU5YjQyLi4xMDU0ZTA3MjU1Y2E3NmFiOGJkZTVlNGMwMjlhOTY1ZTlkMzAyODA1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCkBAIC0zNzUzLDYgKzM3NTMsNyBAQAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmgnLAorICAgICAgICAg
ICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyaW5nU3RhdHMuaCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNw
cCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQ
YXNzLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVu
ZGVyUGFzc0RyYXdRdWFkLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAppbmRl
eCAzZjlhYmYxNjU0YjcwOTlmMTExNzMzYTA0ZGU4MjliMWM0ODM5MGNlLi4zMjEwNzg2YWJmOTgw
YzM0NDI1ZDI1ZWMzNTgxNWJmMzZhMWMxNTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dC5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RJbXBs
LmgiCiAjaW5jbHVkZSAiY2MvQ0NPY2NsdXNpb25UcmFja2VyLmgiCiAjaW5jbHVkZSAiY2MvQ0NP
dmVyZHJhd01ldHJpY3MuaCIKKyNpbmNsdWRlICJjYy9DQ1JlbmRlcmluZ1N0YXRzLmgiCiAjaW5j
bHVkZSAiY2MvQ0NTZXR0aW5ncy5oIgogI2luY2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJveHku
aCIKICNpbmNsdWRlICJjYy9DQ1RocmVhZFByb3h5LmgiCkBAIC03Miw3ICs3Myw4IEBAIENDTGF5
ZXJUcmVlSG9zdDo6Q0NMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdENsaWVudCogY2xpZW50
LCBjb25zdCBDQ0xheWVyVHJlCiAgICAgLCBtX2FuaW1hdGluZyhmYWxzZSkKICAgICAsIG1fbmVl
ZHNBbmltYXRlTGF5ZXJzKGZhbHNlKQogICAgICwgbV9jbGllbnQoY2xpZW50KQotICAgICwgbV9m
cmFtZU51bWJlcigwKQorICAgICwgbV9hbmltYXRpb25GcmFtZU51bWJlcigwKQorICAgICwgbV9j
b21taXROdW1iZXIoMCkKICAgICAsIG1fbGF5ZXJSZW5kZXJlckluaXRpYWxpemVkKGZhbHNlKQog
ICAgICwgbV9jb250ZXh0TG9zdChmYWxzZSkKICAgICAsIG1fbnVtVGltZXNSZWNyZWF0ZVNob3Vs
ZEZhaWwoMCkKQEAgLTIxMSw2ICsyMTMsOCBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRl
QW5pbWF0aW9ucyhkb3VibGUgbW9ub3RvbmljRnJhbWVCZWdpblRpbWUpCiAgICAgbV9jbGllbnQt
PnVwZGF0ZUFuaW1hdGlvbnMobW9ub3RvbmljRnJhbWVCZWdpblRpbWUpOwogICAgIGFuaW1hdGVM
YXllcnMobW9ub3RvbmljRnJhbWVCZWdpblRpbWUpOwogICAgIG1fYW5pbWF0aW5nID0gZmFsc2U7
CisKKyAgICBtX2FuaW1hdGlvbkZyYW1lTnVtYmVyKys7CiB9CiAKIHZvaWQgQ0NMYXllclRyZWVI
b3N0OjpsYXlvdXQoKQpAQCAtMjQzLDE0ICsyNDcsMTQgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6
OmZpbmlzaENvbW1pdE9uSW1wbFRocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBob3N0SW1wbCkK
ICAgICBpZiAocm9vdExheWVyKCkgJiYgbV9uZWVkc0FuaW1hdGVMYXllcnMpCiAgICAgICAgIGhv
c3RJbXBsLT5zZXROZWVkc0FuaW1hdGVMYXllcnMoKTsKIAotICAgIGhvc3RJbXBsLT5zZXRTb3Vy
Y2VGcmFtZU51bWJlcihmcmFtZU51bWJlcigpKTsKKyAgICBob3N0SW1wbC0+c2V0U291cmNlRnJh
bWVOdW1iZXIoY29tbWl0TnVtYmVyKCkpOwogICAgIGhvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUo
dmlld3BvcnRTaXplKCkpOwogICAgIGhvc3RJbXBsLT5zZXREZXZpY2VTY2FsZUZhY3RvcihkZXZp
Y2VTY2FsZUZhY3RvcigpKTsKICAgICBob3N0SW1wbC0+c2V0UGFnZVNjYWxlRmFjdG9yQW5kTGlt
aXRzKG1fcGFnZVNjYWxlRmFjdG9yLCBtX21pblBhZ2VTY2FsZUZhY3RvciwgbV9tYXhQYWdlU2Nh
bGVGYWN0b3IpOwogICAgIGhvc3RJbXBsLT5zZXRCYWNrZ3JvdW5kQ29sb3IobV9iYWNrZ3JvdW5k
Q29sb3IpOwogICAgIGhvc3RJbXBsLT5zZXRIYXNUcmFuc3BhcmVudEJhY2tncm91bmQobV9oYXNU
cmFuc3BhcmVudEJhY2tncm91bmQpOwogCi0gICAgbV9mcmFtZU51bWJlcisrOworICAgIG1fY29t
bWl0TnVtYmVyKys7CiB9CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojpjb21taXRDb21wbGV0ZSgp
CkBAIC0zMDIsNiArMzA2LDEyIEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpmaW5pc2hBbGxSZW5k
ZXJpbmcoKQogICAgIG1fcHJveHktPmZpbmlzaEFsbFJlbmRlcmluZygpOwogfQogCit2b2lkIEND
TGF5ZXJUcmVlSG9zdDo6cmVuZGVyaW5nU3RhdHMoQ0NSZW5kZXJpbmdTdGF0cyYgc3RhdHMpIGNv
bnN0Cit7CisgICAgbV9wcm94eS0+aW1wbFNpZGVSZW5kZXJpbmdTdGF0cyhzdGF0cyk7CisgICAg
c3RhdHMubnVtQW5pbWF0aW9uRnJhbWVzID0gYW5pbWF0aW9uRnJhbWVOdW1iZXIoKTsKK30KKwog
Y29uc3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgQ0NMYXllclRyZWVIb3N0OjpsYXllclJl
bmRlcmVyQ2FwYWJpbGl0aWVzKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wcm94eS0+bGF5ZXJS
ZW5kZXJlckNhcGFiaWxpdGllcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAppbmRleCAx
ZjRkM2M5NjcyMjg1NTBmZjY2MDlkNjExZjg3ZWViNmRhZDA5ZjAxLi42ZDFlM2E0OTM3MTZhZTM4
NjE1NDI3MGIwNzRkYmZjMjEyYWIzNmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApA
QCAtNDYsMTIgKzQ2LDEzIEBAIGNsYXNzIENDR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgQ0NMYXll
ckNocm9taXVtOwogY2xhc3MgQ0NMYXllclRyZWVIb3N0SW1wbDsKIGNsYXNzIENDTGF5ZXJUcmVl
SG9zdEltcGxDbGllbnQ7Ci1zdHJ1Y3QgQ0NTY3JvbGxBbmRTY2FsZVNldDsKIGNsYXNzIENDVGV4
dHVyZVVwZGF0ZXI7CiBjbGFzcyBNYW5hZ2VkVGV4dHVyZTsKIGNsYXNzIFJlZ2lvbjsKIGNsYXNz
IFRleHR1cmVBbGxvY2F0b3I7CiBjbGFzcyBUZXh0dXJlTWFuYWdlcjsKK3N0cnVjdCBDQ1JlbmRl
cmluZ1N0YXRzOworc3RydWN0IENDU2Nyb2xsQW5kU2NhbGVTZXQ7CiAKIGNsYXNzIENDTGF5ZXJU
cmVlSG9zdENsaWVudCB7CiBwdWJsaWM6CkBAIC0xOTUsNyArMTk2LDExIEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgZmluaXNoQWxsUmVuZGVyaW5nKCk7CiAKLSAgICBpbnQgZnJhbWVOdW1iZXIoKSBj
b25zdCB7IHJldHVybiBtX2ZyYW1lTnVtYmVyOyB9CisgICAgaW50IGFuaW1hdGlvbkZyYW1lTnVt
YmVyKCkgY29uc3QgeyByZXR1cm4gbV9hbmltYXRpb25GcmFtZU51bWJlcjsgfQorCisgICAgaW50
IGNvbW1pdE51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fY29tbWl0TnVtYmVyOyB9CisKKyAgICB2
b2lkIHJlbmRlcmluZ1N0YXRzKENDUmVuZGVyaW5nU3RhdHMmKSBjb25zdDsKIAogICAgIGNvbnN0
IExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMmIGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKSBj
b25zdDsKIApAQCAtMjg3LDcgKzI5Miw4IEBAIHByaXZhdGU6CiAKICAgICBDQ0xheWVyVHJlZUhv
c3RDbGllbnQqIG1fY2xpZW50OwogCi0gICAgaW50IG1fZnJhbWVOdW1iZXI7CisgICAgaW50IG1f
YW5pbWF0aW9uRnJhbWVOdW1iZXI7CisgICAgaW50IG1fY29tbWl0TnVtYmVyOwogCiAgICAgT3du
UHRyPENDUHJveHk+IG1fcHJveHk7CiAgICAgYm9vbCBtX2xheWVyUmVuZGVyZXJJbml0aWFsaXpl
ZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKaW5kZXggMzAxMWI1ZWNj
NjYzMDZjY2Q2MGQ5OTIxNDFkMWY4NGZlZjdlZTlkZC4uMWRjYTM2YTYwYzZkMWI3NTM0NWQwMzQy
MTZlMmMwMGVmMjg2ZjA3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5j
cHAKQEAgLTExNCw3ICsxMTQsNyBAQCBQYXNzT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IEND
TGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZShjb25zdCBDQ0xheWVyVHJlZVNldAogQ0NMYXllclRy
ZWVIb3N0SW1wbDo6Q0NMYXllclRyZWVIb3N0SW1wbChjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdz
JiBzZXR0aW5ncywgQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCogY2xpZW50KQogICAgIDogbV9j
bGllbnQoY2xpZW50KQogICAgICwgbV9zb3VyY2VGcmFtZU51bWJlcigtMSkKLSAgICAsIG1fZnJh
bWVOdW1iZXIoMCkKKyAgICAsIG1fc291cmNlQW5pbWF0aW9uRnJhbWVOdW1iZXIoMCkKICAgICAs
IG1fcm9vdFNjcm9sbExheWVySW1wbCgwKQogICAgICwgbV9jdXJyZW50bHlTY3JvbGxpbmdMYXll
ckltcGwoMCkKICAgICAsIG1fc2Nyb2xsaW5nTGF5ZXJJZEZyb21QcmV2aW91c1RyZWUoLTEpCkBA
IC01MTksNyArNTE5LDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpkcmF3TGF5ZXJzKGNv
bnN0IEZyYW1lRGF0YSYgZnJhbWUpCiAKICAgICBtX2xheWVyUmVuZGVyZXItPmZpbmlzaERyYXdp
bmdGcmFtZSgpOwogCi0gICAgKyttX2ZyYW1lTnVtYmVyOworICAgICsrbV9zb3VyY2VBbmltYXRp
b25GcmFtZU51bWJlcjsKIAogICAgIC8vIFRoZSBuZXh0IGZyYW1lIHNob3VsZCBzdGFydCBieSBh
c3N1bWluZyBub3RoaW5nIGhhcyBjaGFuZ2VkLCBhbmQgY2hhbmdlcyBhcmUgbm90ZWQgYXMgdGhl
eSBvY2N1ci4KICAgICBtX3Jvb3RMYXllckltcGwtPnJlc2V0QWxsQ2hhbmdlVHJhY2tpbmdGb3JT
dWJ0cmVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKaW5kZXggNGU0ZjZj
Y2I3ZTJmNjU1YjUyYjIyNDIwM2RkZTg1OTdmMDBjNmVkNS4uNzI2MDM3ZjE3NmE0ZDQzYzMyNjRl
YmZmM2Y2NzQyNmQ0N2I4MTE4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
aApAQCAtMTE5LDcgKzExOSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEZvbnRBdGxhcyhQYXNz
T3duUHRyPENDRm9udEF0bGFzPik7CiAKICAgICB2b2lkIGZpbmlzaEFsbFJlbmRlcmluZygpOwot
ICAgIGludCBmcmFtZU51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVOdW1iZXI7IH0KKyAg
ICBpbnQgc291cmNlQW5pbWF0aW9uRnJhbWVOdW1iZXIoKSBjb25zdCB7IHJldHVybiBtX3NvdXJj
ZUFuaW1hdGlvbkZyYW1lTnVtYmVyOyB9CiAKICAgICBib29sIGluaXRpYWxpemVMYXllclJlbmRl
cmVyKFBhc3NPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+LCBUZXh0dXJlVXBsb2FkZXJPcHRpb24p
OwogICAgIGJvb2wgaXNDb250ZXh0TG9zdCgpOwpAQCAtMTk2LDcgKzE5Niw3IEBAIHByb3RlY3Rl
ZDoKIAogICAgIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQqIG1fY2xpZW50OwogICAgIGludCBt
X3NvdXJjZUZyYW1lTnVtYmVyOwotICAgIGludCBtX2ZyYW1lTnVtYmVyOworICAgIGludCBtX3Nv
dXJjZUFuaW1hdGlvbkZyYW1lTnVtYmVyOwogCiBwcml2YXRlOgogICAgIHZvaWQgY29tcHV0ZURv
dWJsZVRhcFpvb21EZWx0YXMoQ0NTY3JvbGxBbmRTY2FsZVNldCogc2Nyb2xsSW5mbyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1By
b3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1By
b3h5LmgKaW5kZXggMWMyZjljYWZkNTM1MjVjZjFiOTQ2NzVkZDRhMmY5Njg2NDhmMThhNS4uOTQw
NzA1ZTFiOTc2MDlmNTVkOWUwYzEwY2MyYWNjZmRkMWFhNzUzYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaApAQCAt
MzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDQ0ZvbnRBdGxhczsKIGNs
YXNzIENDVGhyZWFkOwogY2xhc3MgQ0NHcmFwaGljc0NvbnRleHQ7CitzdHJ1Y3QgQ0NSZW5kZXJp
bmdTdGF0czsKIHN0cnVjdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzOwogCiAvLyBBYnN0cmFj
dCBjbGFzcyByZXNwb25zaWJsZSBmb3IgcHJveHlpbmcgY29tbWFuZHMgZnJvbSB0aGUgbWFpbi10
aHJlYWQgc2lkZSBvZgpAQCAtODEsNiArODIsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGlu
dCBjb21wb3NpdG9ySWRlbnRpZmllcigpIGNvbnN0ID0gMDsKIAorICAgIHZpcnR1YWwgdm9pZCBp
bXBsU2lkZVJlbmRlcmluZ1N0YXRzKENDUmVuZGVyaW5nU3RhdHMmKSA9IDA7CisKICAgICB2aXJ0
dWFsIGNvbnN0IExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMmIGxheWVyUmVuZGVyZXJDYXBhYmls
aXRpZXMoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNBbmltYXRlKCkg
PSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZW5kZXJpbmdTdGF0cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJpbmdTdGF0cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY2OWM4ZTAyNjg0
ZWMyZTUwMDNmMzIwNDcwZDA5Y2NlOTBlZjExNjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlcmluZ1N0YXRzLmgK
QEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDQ1JlbmRlcmluZ1N0YXRz
X2gKKyNkZWZpbmUgQ0NSZW5kZXJpbmdTdGF0c19oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
c3RydWN0IENDUmVuZGVyaW5nU3RhdHMgeworICAgIGludCBudW1BbmltYXRpb25GcmFtZXM7Cisg
ICAgaW50IG51bUZyYW1lc1NlbnRUb1NjcmVlbjsKKworICAgIENDUmVuZGVyaW5nU3RhdHMoKQor
ICAgICAgICA6IG51bUFuaW1hdGlvbkZyYW1lcygwKQorICAgICAgICAsIG51bUZyYW1lc1NlbnRU
b1NjcmVlbigwKQorICAgIHsKKyAgICB9Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJl
YWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAppbmRleCBjYmQ1MWQ0ZmU2OTVjYTUyMmM3ODc2NmVj
NTM2ZmQwNDhmNGQwNzg5Li44ZWI1MTEwYzYzMWE1MjZhNDViNDIwMjE3M2VlNzJhMDE2NTYxOWEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcApAQCAtMzEsNiArMzEs
NyBAQAogI2luY2x1ZGUgImNjL0NDRm9udEF0bGFzLmgiCiAjaW5jbHVkZSAiY2MvQ0NHcmFwaGlj
c0NvbnRleHQuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKKyNpbmNsdWRlICJj
Yy9DQ1JlbmRlcmluZ1N0YXRzLmgiCiAjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgog
I2luY2x1ZGUgImNjL0NDVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KQEAg
LTIwMiw2ICsyMDMsMTEgQEAgYm9vbCBDQ1NpbmdsZVRocmVhZFByb3h5OjpyZWNyZWF0ZUNvbnRl
eHQoKQogICAgIHJldHVybiBpbml0aWFsaXplZDsKIH0KIAordm9pZCBDQ1NpbmdsZVRocmVhZFBy
b3h5OjppbXBsU2lkZVJlbmRlcmluZ1N0YXRzKENDUmVuZGVyaW5nU3RhdHMmIHN0YXRzKQorewor
ICAgIHN0YXRzLm51bUZyYW1lc1NlbnRUb1NjcmVlbiA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPnNv
dXJjZUFuaW1hdGlvbkZyYW1lTnVtYmVyKCk7Cit9CisKIGNvbnN0IExheWVyUmVuZGVyZXJDYXBh
YmlsaXRpZXMmIENDU2luZ2xlVGhyZWFkUHJveHk6OmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMo
KSBjb25zdAogewogICAgIEFTU0VSVChtX2xheWVyUmVuZGVyZXJJbml0aWFsaXplZCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Np
bmdsZVRocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKaW5kZXggNmZiNzMzZGYyZWI4Nzc5NTIwMzU1
ODI0YTBmODU3ZWNkZjQwMTFiOS4uNWZjMmIzMWY3ZmI5NWQzODJiOWYwMjAzZjM4NzNkMGFjOGRl
NWUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaApAQCAtNTMsNiArNTMs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGluaXRpYWxpemVMYXllclJlbmRlcmVyKCkg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHJlY3JlYXRlQ29udGV4dCgpIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgaW50IGNvbXBvc2l0b3JJZGVudGlmaWVyKCkgY29uc3QgT1ZFUlJJREUgeyBy
ZXR1cm4gbV9jb21wb3NpdG9ySWRlbnRpZmllcjsgfQorICAgIHZpcnR1YWwgdm9pZCBpbXBsU2lk
ZVJlbmRlcmluZ1N0YXRzKENDUmVuZGVyaW5nU3RhdHMmKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IGNvbnN0IExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMmIGxheWVyUmVuZGVyZXJDYXBhYmlsaXRp
ZXMoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgbG9zZUNvbnRleHQoKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNBbmltYXRlKCkgT1ZFUlJJREU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Ro
cmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuY3BwCmluZGV4IDE5ODgwMzIwYmVlNmFhNzU3MTAyYWJlMTlmMGVj
ODUwNWE3YjkzYzguLjlhY2RkNzE5NmMxOWE0MjNlMzM5NzFmNzkyZjYwZTJlZjdkYWEwMWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAi
Y2MvQ0NHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJjYy9DQ0lucHV0SGFuZGxlci5oIgog
I2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgorI2luY2x1ZGUgImNjL0NDUmVuZGVyaW5n
U3RhdHMuaCIKICNpbmNsdWRlICJjYy9DQ1NjaGVkdWxlci5oIgogI2luY2x1ZGUgImNjL0NDU2Nv
cGVkVGhyZWFkUHJveHkuaCIKICNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCkBAIC0y
NzUsNiArMjc2LDE3IEBAIGludCBDQ1RocmVhZFByb3h5Ojpjb21wb3NpdG9ySWRlbnRpZmllcigp
IGNvbnN0CiAgICAgcmV0dXJuIG1fY29tcG9zaXRvcklkZW50aWZpZXI7CiB9CiAKK3ZvaWQgQ0NU
aHJlYWRQcm94eTo6aW1wbFNpZGVSZW5kZXJpbmdTdGF0cyhDQ1JlbmRlcmluZ1N0YXRzJiBzdGF0
cykKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgQ0NDb21wbGV0aW9uRXZl
bnQgY29tcGxldGlvbjsKKyAgICBDQ1Byb3h5OjppbXBsVGhyZWFkKCktPnBvc3RUYXNrKGNyZWF0
ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6aW1wbFNpZGVSZW5kZXJpbmdTdGF0
c09uSW1wbFRocmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKCZjb21wbGV0aW9uKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Ny
b3NzVGhyZWFkQWNjZXNzKCZzdGF0cykpKTsKKyAgICBjb21wbGV0aW9uLndhaXQoKTsKK30KKwog
Y29uc3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgQ0NUaHJlYWRQcm94eTo6bGF5ZXJSZW5k
ZXJlckNhcGFiaWxpdGllcygpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1fbGF5ZXJSZW5kZXJlcklu
aXRpYWxpemVkKTsKQEAgLTg4Niw0ICs4OTgsMTEgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpyZWNy
ZWF0ZUNvbnRleHRPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24sIEMK
ICAgICBjb21wbGV0aW9uLT5zaWduYWwoKTsKIH0KIAordm9pZCBDQ1RocmVhZFByb3h5OjppbXBs
U2lkZVJlbmRlcmluZ1N0YXRzT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0
aW9uLCBDQ1JlbmRlcmluZ1N0YXRzKiBzdGF0cykKK3sKKyAgICBBU1NFUlQoaXNJbXBsVGhyZWFk
KCkpOworICAgIHN0YXRzLT5udW1GcmFtZXNTZW50VG9TY3JlZW4gPSBtX2xheWVyVHJlZUhvc3RJ
bXBsLT5zb3VyY2VBbmltYXRpb25GcmFtZU51bWJlcigpOworICAgIGNvbXBsZXRpb24tPnNpZ25h
bCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgK
aW5kZXggMzNkM2Q5OTZlZGQ2ZDc3NzY2ZGZiODJmZDdlZWE4MDIxYmI2MGVhZi4uZjZkNTFmNjc1
YmU3Mzg4MzdlYTRhNTBjN2JkMWQxODgxYjcyMTU1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHku
aApAQCAtNjAsNiArNjAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGluaXRpYWxpemVM
YXllclJlbmRlcmVyKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHJlY3JlYXRlQ29udGV4
dCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgaW50IGNvbXBvc2l0b3JJZGVudGlmaWVyKCkgY29u
c3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGltcGxTaWRlUmVuZGVyaW5nU3RhdHMoQ0NS
ZW5kZXJpbmdTdGF0cyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgY29uc3QgTGF5ZXJSZW5kZXJl
ckNhcGFiaWxpdGllcyYgbGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpIGNvbnN0IE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCBsb3NlQ29udGV4dCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBzZXROZWVkc0FuaW1hdGUoKSBPVkVSUklERTsKQEAgLTE0Miw2ICsxNDMsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgc2V0RnVsbFJvb3RMYXllckRhbWFnZU9uSW1wbFRocmVhZCgpOwogICAg
IHZvaWQgYWNxdWlyZUxheWVyVGV4dHVyZXNGb3JNYWluVGhyZWFkT25JbXBsVGhyZWFkKENDQ29t
cGxldGlvbkV2ZW50Kik7CiAgICAgdm9pZCByZWNyZWF0ZUNvbnRleHRPbkltcGxUaHJlYWQoQ0ND
b21wbGV0aW9uRXZlbnQqLCBDQ0dyYXBoaWNzQ29udGV4dCosIGJvb2wqIHJlY3JlYXRlU3VjY2Vl
ZGVkLCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKik7CisgICAgdm9pZCBpbXBsU2lkZVJlbmRl
cmluZ1N0YXRzT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiwgQ0NSZW5kZXJpbmdTdGF0
cyopOwogICAgIENDU2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBSZXN1bHQgc2NoZWR1bGVkQWN0
aW9uRHJhd0FuZFN3YXBJbnRlcm5hbChib29sIGZvcmNlZERyYXcpOwogICAgIHZvaWQgc2V0Rm9u
dEF0bGFzT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8Q0NGb250QXRsYXM+KTsKICAgICB2b2lkIGZv
cmNlU2VyaWFsaXplT25Td2FwQnVmZmVyc09uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCop
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oCmluZGV4IDRhMjgwNGZjYWEy
Njk1MjMwNzQyMzQwNjkwNjUyOGY5MTAyYWM2YzEuLjIwMjkwNDVjYWUzN2NiMzI2OWYzODVkZGQ3
NTZkOTdkNTNhYTIxZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgK
QEAgLTYyLDYgKzYyLDcgQEAgc3RydWN0IFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOwog
c3RydWN0IFdlYk1lZGlhUGxheWVyQWN0aW9uOwogc3RydWN0IFdlYlBsdWdpbkFjdGlvbjsKIHN0
cnVjdCBXZWJQb2ludDsKK3N0cnVjdCBXZWJSZW5kZXJpbmdTdGF0czsKIAogY2xhc3MgV2ViVmll
dyA6IHB1YmxpYyBXZWJXaWRnZXQgewogcHVibGljOgpAQCAtNDY0LDYgKzQ2NSwxMCBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgc2V0RWRpdGFibGVTZWxlY3Rpb25PZmZzZXRzKGludCBz
dGFydCwgaW50IGVuZCkgPSAwOwogCisgICAgLy8gRmlsbHMgaW4gYSBXZWJSZW5kZXJpbmdTdGF0
cyBzdHJ1Y3QgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc3RhdGUgb2YgdGhlIGNv
bXBvc2l0b3IuCisgICAgLy8gVGhpcyBjYWxsIGlzIHJlbGF0aXZlbHkgZXhwZW5zaXZlIGluIHRo
cmVhZGVkIG1vZGUgYXMgaXQgYmxvY2tzIG9uIHRoZSBjb21wb3NpdG9yIHRocmVhZC4KKyAgICB2
aXJ0dWFsIHZvaWQgcmVuZGVyaW5nU3RhdHMoV2ViUmVuZGVyaW5nU3RhdHMmKSBjb25zdCB7IH0K
KwogICAgIC8vIFZpc2liaWxpdHkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogICAgIC8vIFNldHMgdGhlIHZpc2liaWxpdHkgb2Yg
dGhlIFdlYlZpZXcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJM
YXllclRyZWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJl
ZVZpZXcuY3BwCmluZGV4IDdmMjJmNzlmOTNiMjAyZDQ3NGYwZWVkMTk4MzFmMmVkNDc0ZDljYzAu
LjkwMzU1MmJlMDFiZDIwY2YxNzVjN2U1MTQzNzM3ZGE2MGJhZTM5YzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCkBAIC0zMSwxMCArMzEs
MTIgQEAKICNpbmNsdWRlICJXZWJMYXllclRyZWVWaWV3SW1wbC5oIgogI2luY2x1ZGUgImNjL0ND
R3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCisjaW5j
bHVkZSAiY2MvQ0NSZW5kZXJpbmdTdGF0cy5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkxheWVy
LmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViUG9pbnQuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9X
ZWJSZWN0LmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViU2l6ZS5oIgorI2luY2x1ZGUgPHB1Ymxp
Yy9XZWJSZW5kZXJpbmdTdGF0cy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAt
MTc4LDYgKzE4MCwxNSBAQCBXZWJHcmFwaGljc0NvbnRleHQzRCogV2ViTGF5ZXJUcmVlVmlldzo6
Y29udGV4dCgpCiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+bGF5ZXJUcmVlSG9zdCgpLT5jb250ZXh0
KCktPmNvbnRleHQzRCgpOwogfQogCit2b2lkIFdlYkxheWVyVHJlZVZpZXc6OnJlbmRlcmluZ1N0
YXRzKFdlYlJlbmRlcmluZ1N0YXRzJiBzdGF0cykgY29uc3QKK3sKKyAgICBDQ1JlbmRlcmluZ1N0
YXRzIGNjU3RhdHM7CisgICAgbV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPnJlbmRlcmluZ1N0
YXRzKGNjU3RhdHMpOworCisgICAgc3RhdHMubnVtQW5pbWF0aW9uRnJhbWVzID0gY2NTdGF0cy5u
dW1BbmltYXRpb25GcmFtZXM7CisgICAgc3RhdHMubnVtRnJhbWVzU2VudFRvU2NyZWVuID0gY2NT
dGF0cy5udW1GcmFtZXNTZW50VG9TY3JlZW47Cit9CisKIHZvaWQgV2ViTGF5ZXJUcmVlVmlldzo6
bG9zZUNvbXBvc2l0b3JDb250ZXh0KGludCBudW1UaW1lcykKIHsKICAgICBtX3ByaXZhdGUtPmxh
eWVyVHJlZUhvc3QoKS0+bG9zZUNvbnRleHQobnVtVGltZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDAyZGI2M2U4MDA0MDI2YTdkODRlZTg5MjE2
OTBlM2YxOTJhODkwNzAuLjk4ZDNjZmQ2NGY0YmRjY2Y5NGUzNmE2Y2E0ODllYWFhZjhjMzJkMGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTcyOSw2
ICs3MjksMTMgQEAgdm9pZCBXZWJWaWV3SW1wbDo6dHJhbnNmZXJBY3RpdmVXaGVlbEZsaW5nQW5p
bWF0aW9uKGNvbnN0IFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXIKICAgICBzY2hlZHVsZUFuaW1hdGlv
bigpOwogfQogCit2b2lkIFdlYlZpZXdJbXBsOjpyZW5kZXJpbmdTdGF0cyhXZWJSZW5kZXJpbmdT
dGF0cyYgc3RhdHMpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0FjdGl2ZSgpKTsKKyAgICBpZiAoIW1fbGF5ZXJUcmVlVmlldy5pc051bGwoKSkKKyAgICAgICAg
bV9sYXllclRyZWVWaWV3LnJlbmRlcmluZ1N0YXRzKHN0YXRzKTsKK30KKwogdm9pZCBXZWJWaWV3
SW1wbDo6c3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9sbCwgYm9v
bCB1c2VBbmNob3IsIGZsb2F0IG5ld1NjYWxlLCBkb3VibGUgZHVyYXRpb25TZWMpCiB7CiAgICAg
aWYgKCFtX2xheWVyVHJlZVZpZXcuaXNOdWxsKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuaAppbmRleCBhMGRkZWRiODE3YWE5NzcyNjNmNmY1MWM0YWIzN2VjNjA5OTMx
ZTUxLi41OTIwYjAyNzQzNDE5NTc5OTYxZDFhY2MyMmIzYmFmYWI0Zjg1YjAxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTI5NCw2ICsyOTQsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJhdHRlcnlTdGF0dXMoY29uc3QgV2ViQmF0dGVy
eVN0YXR1cyYpOwogI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIHRyYW5zZmVyQWN0aXZlV2hlZWxG
bGluZ0FuaW1hdGlvbihjb25zdCBXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyYpOworICAg
IHZpcnR1YWwgdm9pZCByZW5kZXJpbmdTdGF0cyhXZWJSZW5kZXJpbmdTdGF0cyYpIGNvbnN0Owog
CiAgICAgLy8gV2ViTGF5ZXJUcmVlVmlld0NsaWVudAogICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVn
aW5GcmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xh
eWVyVHJlZUhvc3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXll
clRyZWVIb3N0VGVzdC5jcHAKaW5kZXggM2JmMjYyMDRkMWJhZjRiZTQ4YjJjYzA2OWUxYTliYTdh
NjdiMWQ2MC4uN2QxNGQzOGQ1ZDM2YTZjZjY3OGUxMWYxMWY4YjIxN2I3NTlkMzk2ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3Qu
Y3BwCkBAIC04NjYsNyArODY2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQo
KQogICAgIHsKICAgICAgICAgTGF5ZXJDaHJvbWl1bSogcm9vdCA9IG1fbGF5ZXJUcmVlSG9zdC0+
cm9vdExheWVyKCk7Ci0gICAgICAgIGlmICghbV9sYXllclRyZWVIb3N0LT5mcmFtZU51bWJlcigp
KQorICAgICAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdC0+Y29tbWl0TnVtYmVyKCkpCiAgICAgICAg
ICAgICBFWFBFQ1RfRVEocm9vdC0+c2Nyb2xsUG9zaXRpb24oKSwgbV9pbml0aWFsU2Nyb2xsKTsK
ICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBFWFBFQ1RfRVEocm9vdC0+c2Nyb2xsUG9zaXRp
b24oKSwgbV9pbml0aWFsU2Nyb2xsICsgbV9zY3JvbGxBbW91bnQpOwpAQCAtOTUyLDcgKzk1Miw3
IEBAIHB1YmxpYzoKICAgICAgICAgcm9vdC0+c2V0U2Nyb2xsYWJsZSh0cnVlKTsKICAgICAgICAg
cm9vdC0+c2V0TWF4U2Nyb2xsUG9zaXRpb24oSW50U2l6ZSgxMDAsIDEwMCkpOwogCi0gICAgICAg
IGlmICghaW1wbC0+c291cmNlRnJhbWVOdW1iZXIoKSAmJiBpbXBsLT5mcmFtZU51bWJlcigpID09
IDEpIHsKKyAgICAgICAgaWYgKCFpbXBsLT5zb3VyY2VGcmFtZU51bWJlcigpICYmIGltcGwtPnNv
dXJjZUFuaW1hdGlvbkZyYW1lTnVtYmVyKCkgPT0gMSkgewogICAgICAgICAgICAgLy8gRmlyc3Qg
ZHJhdyBhZnRlciBmaXJzdCBjb21taXQuCiAgICAgICAgICAgICBFWFBFQ1RfRVEocm9vdC0+c2Ny
b2xsRGVsdGEoKSwgSW50U2l6ZSgpKTsKICAgICAgICAgICAgIHJvb3QtPnNjcm9sbEJ5KG1fc2Ny
b2xsQW1vdW50KTsKQEAgLTk2MCw3ICs5NjAsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgICAgIEVY
UEVDVF9FUShyb290LT5zY3JvbGxQb3NpdGlvbigpLCBtX2luaXRpYWxTY3JvbGwpOwogICAgICAg
ICAgICAgcG9zdFNldE5lZWRzUmVkcmF3VG9NYWluVGhyZWFkKCk7Ci0gICAgICAgIH0gZWxzZSBp
ZiAoIWltcGwtPnNvdXJjZUZyYW1lTnVtYmVyKCkgJiYgaW1wbC0+ZnJhbWVOdW1iZXIoKSA9PSAy
KSB7CisgICAgICAgIH0gZWxzZSBpZiAoIWltcGwtPnNvdXJjZUZyYW1lTnVtYmVyKCkgJiYgaW1w
bC0+c291cmNlQW5pbWF0aW9uRnJhbWVOdW1iZXIoKSA9PSAyKSB7CiAgICAgICAgICAgICAvLyBT
ZWNvbmQgZHJhdyBhZnRlciBmaXJzdCBjb21taXQuCiAgICAgICAgICAgICBFWFBFQ1RfRVEocm9v
dC0+c2Nyb2xsRGVsdGEoKSwgbV9zY3JvbGxBbW91bnQpOwogICAgICAgICAgICAgcm9vdC0+c2Ny
b2xsQnkobV9zY3JvbGxBbW91bnQpOwpAQCAtOTcwLDcgKzk3MCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIHBvc3RTZXROZWVkc0NvbW1pdFRvTWFpblRocmVhZCgpOwogICAgICAgICB9IGVsc2Ug
aWYgKGltcGwtPnNvdXJjZUZyYW1lTnVtYmVyKCkgPT0gMSkgewogICAgICAgICAgICAgLy8gVGhp
cmQgb3IgbGF0ZXIgZHJhdyBhZnRlciBzZWNvbmQgY29tbWl0LgotICAgICAgICAgICAgRVhQRUNU
X0dFKGltcGwtPmZyYW1lTnVtYmVyKCksIDMpOworICAgICAgICAgICAgRVhQRUNUX0dFKGltcGwt
PnNvdXJjZUFuaW1hdGlvbkZyYW1lTnVtYmVyKCksIDMpOwogICAgICAgICAgICAgRVhQRUNUX0VR
KHJvb3QtPnNjcm9sbERlbHRhKCksIEludFNpemUoKSk7CiAgICAgICAgICAgICBFWFBFQ1RfRVEo
cm9vdC0+c2Nyb2xsUG9zaXRpb24oKSwgbV9pbml0aWFsU2Nyb2xsICsgbV9zY3JvbGxBbW91bnQg
KyBtX3Njcm9sbEFtb3VudCk7CiAgICAgICAgICAgICBlbmRUZXN0KCk7CkBAIC0yMjM1LDcgKzIy
MzUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luQ29tbWl0T25DQ1RocmVhZChD
Q0xheWVyVHJlZUhvc3RJbXBsKiBpbXBsKSBPVkVSUklERQogICAgIHsKICAgICAgICAgRVhQRUNU
X0VRKG1fcm9vdFNjcm9sbExheWVyLT5zY3JvbGxQb3NpdGlvbigpLCBJbnRQb2ludCgpKTsKLSAg
ICAgICAgaWYgKCFtX2xheWVyVHJlZUhvc3QtPmZyYW1lTnVtYmVyKCkpCisgICAgICAgIGlmICgh
bV9sYXllclRyZWVIb3N0LT5jb21taXROdW1iZXIoKSkKICAgICAgICAgICAgIEVYUEVDVF9FUSht
X2NoaWxkTGF5ZXItPnNjcm9sbFBvc2l0aW9uKCksIEludFBvaW50KCkpOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBFWFBFQ1RfRVEobV9jaGlsZExheWVyLT5zY3JvbGxQb3NpdGlvbigpLCBJ
bnRQb2ludCgpICsgbV9zY3JvbGxBbW91bnQpOwpAQCAtMjI0MywxMSArMjI0MywxMSBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVI
b3N0SW1wbCogaW1wbCkgT1ZFUlJJREUKICAgICB7Ci0gICAgICAgIGlmIChpbXBsLT5mcmFtZU51
bWJlcigpID09IDEpIHsKKyAgICAgICAgaWYgKGltcGwtPnNvdXJjZUFuaW1hdGlvbkZyYW1lTnVt
YmVyKCkgPT0gMSkgewogICAgICAgICAgICAgRVhQRUNUX0VRKGltcGwtPnNjcm9sbEJlZ2luKElu
dFBvaW50KDUsIDUpLCBDQ0lucHV0SGFuZGxlckNsaWVudDo6V2hlZWwpLCBDQ0lucHV0SGFuZGxl
ckNsaWVudDo6U2Nyb2xsU3RhcnRlZCk7CiAgICAgICAgICAgICBpbXBsLT5zY3JvbGxCeShtX3Nj
cm9sbEFtb3VudCk7CiAgICAgICAgICAgICBpbXBsLT5zY3JvbGxFbmQoKTsKLSAgICAgICAgfSBl
bHNlIGlmIChpbXBsLT5mcmFtZU51bWJlcigpID09IDIpCisgICAgICAgIH0gZWxzZSBpZiAoaW1w
bC0+c291cmNlQW5pbWF0aW9uRnJhbWVOdW1iZXIoKSA9PSAyKQogICAgICAgICAgICAgZW5kVGVz
dCgpOwogICAgIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149595</attachid>
            <date>2012-06-26 13:31:49 -0700</date>
            <delta_ts>2012-06-26 14:31:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88268-20120626133149.patch</filename>
            <type>text/plain</type>
            <size>27887</size>
            <attacher name="Dave Tu">dtu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMjM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBhNjUxNGVmNWNmOTAw
YzE0YjZiZTFmMDZiNjNiZDJmNzYwMTRjMWUzLi4yMTJkY2Y3Mzc4OTE5NjY4ODkxOGVjYzRiZWNl
MTRmMmY0MTRiMzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wNi0wNCAg
RGF2ZSBUdSAgPGR0dUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBFeHBvc2Ug
cmVuZGVyaW5nIHN0YXRpc3RpY3MgdG8gV2ViV2lkZ2V0LgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODgyNjgKKworICAgICAgICBSZXZpZXdlZCBieSBK
YW1lcyBSb2JpbnNvbi4KKworICAgICAgICBUaGUgV2ViS2l0IHNpZGUgb2YgYSBiYXNpYyBmcmFt
ZXdvcmsgZm9yIGV4cG9zaW5nIHJlbmRlcmluZyBzdGF0aXN0aWNzCisgICAgICAgIHRvIENocm9t
aXVtJ3MgLS1lbmFibGUtYmVuY2htYXJraW5nIGV4dGVuc2lvbi4KKworICAgICAgICAqIGNocm9t
aXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Lmg6CisgICAgICAgIChXZWJSZW5kZXJpbmdTdGF0
aXN0aWNzKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJMYXllclRyZWVWaWV3KToK
KwogMjAxMi0wNi0yNSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyMTE3Ni4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCA0NmRmMTA0NjFjM2FlZDA1MTVkMTgwMzE0ODZkMzA0ZGNkYzM0OTlhLi40MTY4MjAyZGJhMjRh
ZGIwOTQ1NzRmY2ZhZTQ2NzkzYjBhMTE4MDM3IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAK
KzIwMTItMDYtMDQgIERhdmUgVHUgIDxkdHVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJv
bWl1bV0gRXhwb3NlIHJlbmRlcmluZyBzdGF0aXN0aWNzIHRvIFdlYldpZGdldC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4MjY4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgSmFtZXMgUm9iaW5zb24uCisKKyAgICAgICAgVGhlIFdlYktpdCBzaWRlIG9m
IGEgYmFzaWMgZnJhbWV3b3JrIGZvciBleHBvc2luZyByZW5kZXJpbmcgc3RhdGlzdGljcworICAg
ICAgICB0byBDaHJvbWl1bSdzIC0tZW5hYmxlLWJlbmNobWFya2luZyBleHRlbnNpb24uCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6aW1wbEZyYW1lTnVtYmVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5Lmg6CisgICAgICAg
IChDQ1Byb3h5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Np
bmdsZVRocmVhZFByb3h5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5Ojpp
bXBsRnJhbWVOdW1iZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1RocmVhZFByb3h5OjppbXBsRnJhbWVOdW1iZXJPbkltcGxUaHJlYWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaDoKKyAgICAgICAgKEND
VGhyZWFkUHJveHkpOgorCiAyMDEyLTA2LTI2ICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBSZWZhY3RvcmluZzogU2ltcGxpZnkgRm9ybUNvbnRyb2xsZXIgaW50
ZXJmYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDhkMzU4OTgzYjgzZjM4YmE4MjBi
ODMxMWQyNTEyZjNlZDZiMGIyZmQuLmMwZDgxMmM4YzkwZjEzOGFhMjBhMjA1YjJlZGJhMmJmMjUz
OTZlZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTIt
MDYtMDQgIERhdmUgVHUgIDxkdHVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0g
RXhwb3NlIHJlbmRlcmluZyBzdGF0aXN0aWNzIHRvIFdlYldpZGdldC4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4MjY4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgSmFtZXMgUm9iaW5zb24uCisKKyAgICAgICAgVGhlIFdlYktpdCBzaWRlIG9mIGEgYmFz
aWMgZnJhbWV3b3JrIGZvciBleHBvc2luZyByZW5kZXJpbmcgc3RhdGlzdGljcworICAgICAgICB0
byBDaHJvbWl1bSdzIC0tZW5hYmxlLWJlbmNobWFya2luZyBleHRlbnNpb24uCisKKyAgICAgICAg
KiBzcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJl
ZVZpZXc6OnJlbmRlcmluZ1N0YXRpc3RpY3MpOgorICAgICAgICAoV2ViS2l0KToKKwogMjAxMi0w
Ni0yNiAgSnVuIE11a2FpICA8bXVrYWlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFsbG93IHVz
aW5nIDxpbnB1dCB0eXBlPSJjb2xvciI+IFVJIGluIENocm9tZU9TLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkgYi9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lw
aQppbmRleCBkNzlmODUzYjMxOWZmMTBmZjQ4YTFlMDBjYWJjZWU3N2VkZDYxZGM4Li43NWFkOTcy
ZmJmODI3ODk1OTgwMTc0MmVhNDdlOWUzYjA3ODFhMzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxh
dGZvcm0vUGxhdGZvcm0uZ3lwaQorKysgYi9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQpA
QCAtOTQsNiArOTQsNyBAQAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJQcml2YXRl
UHRyLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJSZWN0LmgnLAogICAgICAg
ICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJSZWZlcnJlclBvbGljeS5oJywKKyAgICAgICAgICAg
ICdjaHJvbWl1bS9wdWJsaWMvV2ViUmVuZGVyaW5nU3RhdHMuaCcsCiAgICAgICAgICAgICAnY2hy
b21pdW0vcHVibGljL1dlYlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IuaCcsCiAgICAgICAg
ICAgICAnY2hyb21pdW0vcHVibGljL1dlYlNpemUuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0v
cHVibGljL1dlYlNvY2tldFN0cmVhbUVycm9yLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRm
b3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmggYi9Tb3VyY2UvUGxhdGZvcm0v
Y2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaAppbmRleCBkNWQ5OWEyODU1OTIzMTA5
YWVmMTRjNWJlNWE0YWY1YzI0YmFlNTlmLi5mNjc5MzBkZDEwNTY4ZDExMWM0NmU5ZjNlYzlkMjdl
MmM4ZmIwODkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dl
YkxheWVyVHJlZVZpZXcuaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dl
YkxheWVyVHJlZVZpZXcuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBXZWJMYXllclRyZWVWaWV3
Q2xpZW50OwogY2xhc3MgV2ViTGF5ZXJUcmVlVmlld0ltcGw7CiBzdHJ1Y3QgV2ViUG9pbnQ7CiBz
dHJ1Y3QgV2ViUmVjdDsKK3N0cnVjdCBXZWJSZW5kZXJpbmdTdGF0czsKIAogY2xhc3MgV2ViTGF5
ZXJUcmVlVmlldyA6IHB1YmxpYyBXZWJOb25Db3B5YWJsZSB7CiBwdWJsaWM6CkBAIC0xNzMsNiAr
MTc0LDEwIEBAIHB1YmxpYzoKIAogICAgIC8vIERlYnVnZ2luZyAvIGRhbmdlcm91cyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAorICAgIC8vIEZpbGxzIGlu
IGEgV2ViUmVuZGVyaW5nU3RhdHMgc3RydWN0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQg
dGhlIHN0YXRlIG9mIHRoZSBjb21wb3NpdG9yLgorICAgIC8vIFRoaXMgY2FsbCBpcyByZWxhdGl2
ZWx5IGV4cGVuc2l2ZSBpbiB0aHJlYWRlZCBtb2RlIGFzIGl0IGJsb2NrcyBvbiB0aGUgY29tcG9z
aXRvciB0aHJlYWQuCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlbmRlcmluZ1N0YXRzKFdlYlJl
bmRlcmluZ1N0YXRzJikgY29uc3Q7CisKICAgICAvLyBTaW11bGF0ZXMgYSBsb3N0IGNvbnRleHQu
IEZvciB0ZXN0aW5nIG9ubHkuCiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGxvc2VDb21wb3NpdG9y
Q29udGV4dChpbnQgbnVtVGltZXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hy
b21pdW0vcHVibGljL1dlYlJlbmRlcmluZ1N0YXRzLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21p
dW0vcHVibGljL1dlYlJlbmRlcmluZ1N0YXRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjE3Njk4NTViMDAzMjU4
ZWQwNTBhNWUxMDA5MTdhNDRlNWMyMWJjOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9QbGF0
Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUmVuZGVyaW5nU3RhdHMuaApAQCAtMCwwICsxLDQ0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBXZWJSZW5kZXJpbmdTdGF0c19oCisjZGVmaW5lIFdlYlJlbmRlcmlu
Z1N0YXRzX2gKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBXZWJSZW5kZXJpbmdTdGF0
cyB7CisgICAgaW50IG51bUFuaW1hdGlvbkZyYW1lczsKKyAgICBpbnQgbnVtRnJhbWVzU2VudFRv
U2NyZWVuOworCisgICAgV2ViUmVuZGVyaW5nU3RhdHMoKQorICAgICAgICA6IG51bUFuaW1hdGlv
bkZyYW1lcygwKQorICAgICAgICAsIG51bUZyYW1lc1NlbnRUb1NjcmVlbigwKQorICAgIHsKKyAg
ICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlJlbmRlcmlu
Z1N0YXRzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBlOWViZDZjMWY0ZTM4ZGQ4MjUwNDRlZTE0MTA5
YzQxYzM5YWU5YjQyLi4xMDU0ZTA3MjU1Y2E3NmFiOGJkZTVlNGMwMjlhOTY1ZTlkMzAyODA1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCkBAIC0zNzUzLDYgKzM3NTMsNyBAQAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmgnLAorICAgICAgICAg
ICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyaW5nU3RhdHMuaCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNw
cCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQ
YXNzLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVu
ZGVyUGFzc0RyYXdRdWFkLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAppbmRl
eCAzZjlhYmYxNjU0YjcwOTlmMTExNzMzYTA0ZGU4MjliMWM0ODM5MGNlLi4zMjEwNzg2YWJmOTgw
YzM0NDI1ZDI1ZWMzNTgxNWJmMzZhMWMxNTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dC5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RJbXBs
LmgiCiAjaW5jbHVkZSAiY2MvQ0NPY2NsdXNpb25UcmFja2VyLmgiCiAjaW5jbHVkZSAiY2MvQ0NP
dmVyZHJhd01ldHJpY3MuaCIKKyNpbmNsdWRlICJjYy9DQ1JlbmRlcmluZ1N0YXRzLmgiCiAjaW5j
bHVkZSAiY2MvQ0NTZXR0aW5ncy5oIgogI2luY2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJveHku
aCIKICNpbmNsdWRlICJjYy9DQ1RocmVhZFByb3h5LmgiCkBAIC03Miw3ICs3Myw4IEBAIENDTGF5
ZXJUcmVlSG9zdDo6Q0NMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdENsaWVudCogY2xpZW50
LCBjb25zdCBDQ0xheWVyVHJlCiAgICAgLCBtX2FuaW1hdGluZyhmYWxzZSkKICAgICAsIG1fbmVl
ZHNBbmltYXRlTGF5ZXJzKGZhbHNlKQogICAgICwgbV9jbGllbnQoY2xpZW50KQotICAgICwgbV9m
cmFtZU51bWJlcigwKQorICAgICwgbV9hbmltYXRpb25GcmFtZU51bWJlcigwKQorICAgICwgbV9j
b21taXROdW1iZXIoMCkKICAgICAsIG1fbGF5ZXJSZW5kZXJlckluaXRpYWxpemVkKGZhbHNlKQog
ICAgICwgbV9jb250ZXh0TG9zdChmYWxzZSkKICAgICAsIG1fbnVtVGltZXNSZWNyZWF0ZVNob3Vs
ZEZhaWwoMCkKQEAgLTIxMSw2ICsyMTMsOCBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRl
QW5pbWF0aW9ucyhkb3VibGUgbW9ub3RvbmljRnJhbWVCZWdpblRpbWUpCiAgICAgbV9jbGllbnQt
PnVwZGF0ZUFuaW1hdGlvbnMobW9ub3RvbmljRnJhbWVCZWdpblRpbWUpOwogICAgIGFuaW1hdGVM
YXllcnMobW9ub3RvbmljRnJhbWVCZWdpblRpbWUpOwogICAgIG1fYW5pbWF0aW5nID0gZmFsc2U7
CisKKyAgICBtX2FuaW1hdGlvbkZyYW1lTnVtYmVyKys7CiB9CiAKIHZvaWQgQ0NMYXllclRyZWVI
b3N0OjpsYXlvdXQoKQpAQCAtMjQzLDE0ICsyNDcsMTQgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6
OmZpbmlzaENvbW1pdE9uSW1wbFRocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBob3N0SW1wbCkK
ICAgICBpZiAocm9vdExheWVyKCkgJiYgbV9uZWVkc0FuaW1hdGVMYXllcnMpCiAgICAgICAgIGhv
c3RJbXBsLT5zZXROZWVkc0FuaW1hdGVMYXllcnMoKTsKIAotICAgIGhvc3RJbXBsLT5zZXRTb3Vy
Y2VGcmFtZU51bWJlcihmcmFtZU51bWJlcigpKTsKKyAgICBob3N0SW1wbC0+c2V0U291cmNlRnJh
bWVOdW1iZXIoY29tbWl0TnVtYmVyKCkpOwogICAgIGhvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUo
dmlld3BvcnRTaXplKCkpOwogICAgIGhvc3RJbXBsLT5zZXREZXZpY2VTY2FsZUZhY3RvcihkZXZp
Y2VTY2FsZUZhY3RvcigpKTsKICAgICBob3N0SW1wbC0+c2V0UGFnZVNjYWxlRmFjdG9yQW5kTGlt
aXRzKG1fcGFnZVNjYWxlRmFjdG9yLCBtX21pblBhZ2VTY2FsZUZhY3RvciwgbV9tYXhQYWdlU2Nh
bGVGYWN0b3IpOwogICAgIGhvc3RJbXBsLT5zZXRCYWNrZ3JvdW5kQ29sb3IobV9iYWNrZ3JvdW5k
Q29sb3IpOwogICAgIGhvc3RJbXBsLT5zZXRIYXNUcmFuc3BhcmVudEJhY2tncm91bmQobV9oYXNU
cmFuc3BhcmVudEJhY2tncm91bmQpOwogCi0gICAgbV9mcmFtZU51bWJlcisrOworICAgIG1fY29t
bWl0TnVtYmVyKys7CiB9CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojpjb21taXRDb21wbGV0ZSgp
CkBAIC0zMDIsNiArMzA2LDEyIEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpmaW5pc2hBbGxSZW5k
ZXJpbmcoKQogICAgIG1fcHJveHktPmZpbmlzaEFsbFJlbmRlcmluZygpOwogfQogCit2b2lkIEND
TGF5ZXJUcmVlSG9zdDo6cmVuZGVyaW5nU3RhdHMoQ0NSZW5kZXJpbmdTdGF0cyYgc3RhdHMpIGNv
bnN0Cit7CisgICAgbV9wcm94eS0+aW1wbFNpZGVSZW5kZXJpbmdTdGF0cyhzdGF0cyk7CisgICAg
c3RhdHMubnVtQW5pbWF0aW9uRnJhbWVzID0gYW5pbWF0aW9uRnJhbWVOdW1iZXIoKTsKK30KKwog
Y29uc3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgQ0NMYXllclRyZWVIb3N0OjpsYXllclJl
bmRlcmVyQ2FwYWJpbGl0aWVzKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wcm94eS0+bGF5ZXJS
ZW5kZXJlckNhcGFiaWxpdGllcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAppbmRleCAx
ZjRkM2M5NjcyMjg1NTBmZjY2MDlkNjExZjg3ZWViNmRhZDA5ZjAxLi42ZDFlM2E0OTM3MTZhZTM4
NjE1NDI3MGIwNzRkYmZjMjEyYWIzNmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApA
QCAtNDYsMTIgKzQ2LDEzIEBAIGNsYXNzIENDR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgQ0NMYXll
ckNocm9taXVtOwogY2xhc3MgQ0NMYXllclRyZWVIb3N0SW1wbDsKIGNsYXNzIENDTGF5ZXJUcmVl
SG9zdEltcGxDbGllbnQ7Ci1zdHJ1Y3QgQ0NTY3JvbGxBbmRTY2FsZVNldDsKIGNsYXNzIENDVGV4
dHVyZVVwZGF0ZXI7CiBjbGFzcyBNYW5hZ2VkVGV4dHVyZTsKIGNsYXNzIFJlZ2lvbjsKIGNsYXNz
IFRleHR1cmVBbGxvY2F0b3I7CiBjbGFzcyBUZXh0dXJlTWFuYWdlcjsKK3N0cnVjdCBDQ1JlbmRl
cmluZ1N0YXRzOworc3RydWN0IENDU2Nyb2xsQW5kU2NhbGVTZXQ7CiAKIGNsYXNzIENDTGF5ZXJU
cmVlSG9zdENsaWVudCB7CiBwdWJsaWM6CkBAIC0xOTUsNyArMTk2LDExIEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgZmluaXNoQWxsUmVuZGVyaW5nKCk7CiAKLSAgICBpbnQgZnJhbWVOdW1iZXIoKSBj
b25zdCB7IHJldHVybiBtX2ZyYW1lTnVtYmVyOyB9CisgICAgaW50IGFuaW1hdGlvbkZyYW1lTnVt
YmVyKCkgY29uc3QgeyByZXR1cm4gbV9hbmltYXRpb25GcmFtZU51bWJlcjsgfQorCisgICAgaW50
IGNvbW1pdE51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fY29tbWl0TnVtYmVyOyB9CisKKyAgICB2
b2lkIHJlbmRlcmluZ1N0YXRzKENDUmVuZGVyaW5nU3RhdHMmKSBjb25zdDsKIAogICAgIGNvbnN0
IExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMmIGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKSBj
b25zdDsKIApAQCAtMjg3LDcgKzI5Miw4IEBAIHByaXZhdGU6CiAKICAgICBDQ0xheWVyVHJlZUhv
c3RDbGllbnQqIG1fY2xpZW50OwogCi0gICAgaW50IG1fZnJhbWVOdW1iZXI7CisgICAgaW50IG1f
YW5pbWF0aW9uRnJhbWVOdW1iZXI7CisgICAgaW50IG1fY29tbWl0TnVtYmVyOwogCiAgICAgT3du
UHRyPENDUHJveHk+IG1fcHJveHk7CiAgICAgYm9vbCBtX2xheWVyUmVuZGVyZXJJbml0aWFsaXpl
ZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKaW5kZXggMzAxMWI1ZWNj
NjYzMDZjY2Q2MGQ5OTIxNDFkMWY4NGZlZjdlZTlkZC4uMWRjYTM2YTYwYzZkMWI3NTM0NWQwMzQy
MTZlMmMwMGVmMjg2ZjA3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5j
cHAKQEAgLTExNCw3ICsxMTQsNyBAQCBQYXNzT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IEND
TGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZShjb25zdCBDQ0xheWVyVHJlZVNldAogQ0NMYXllclRy
ZWVIb3N0SW1wbDo6Q0NMYXllclRyZWVIb3N0SW1wbChjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdz
JiBzZXR0aW5ncywgQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCogY2xpZW50KQogICAgIDogbV9j
bGllbnQoY2xpZW50KQogICAgICwgbV9zb3VyY2VGcmFtZU51bWJlcigtMSkKLSAgICAsIG1fZnJh
bWVOdW1iZXIoMCkKKyAgICAsIG1fc291cmNlQW5pbWF0aW9uRnJhbWVOdW1iZXIoMCkKICAgICAs
IG1fcm9vdFNjcm9sbExheWVySW1wbCgwKQogICAgICwgbV9jdXJyZW50bHlTY3JvbGxpbmdMYXll
ckltcGwoMCkKICAgICAsIG1fc2Nyb2xsaW5nTGF5ZXJJZEZyb21QcmV2aW91c1RyZWUoLTEpCkBA
IC01MTksNyArNTE5LDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpkcmF3TGF5ZXJzKGNv
bnN0IEZyYW1lRGF0YSYgZnJhbWUpCiAKICAgICBtX2xheWVyUmVuZGVyZXItPmZpbmlzaERyYXdp
bmdGcmFtZSgpOwogCi0gICAgKyttX2ZyYW1lTnVtYmVyOworICAgICsrbV9zb3VyY2VBbmltYXRp
b25GcmFtZU51bWJlcjsKIAogICAgIC8vIFRoZSBuZXh0IGZyYW1lIHNob3VsZCBzdGFydCBieSBh
c3N1bWluZyBub3RoaW5nIGhhcyBjaGFuZ2VkLCBhbmQgY2hhbmdlcyBhcmUgbm90ZWQgYXMgdGhl
eSBvY2N1ci4KICAgICBtX3Jvb3RMYXllckltcGwtPnJlc2V0QWxsQ2hhbmdlVHJhY2tpbmdGb3JT
dWJ0cmVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKaW5kZXggNGU0ZjZj
Y2I3ZTJmNjU1YjUyYjIyNDIwM2RkZTg1OTdmMDBjNmVkNS4uNzI2MDM3ZjE3NmE0ZDQzYzMyNjRl
YmZmM2Y2NzQyNmQ0N2I4MTE4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
aApAQCAtMTE5LDcgKzExOSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEZvbnRBdGxhcyhQYXNz
T3duUHRyPENDRm9udEF0bGFzPik7CiAKICAgICB2b2lkIGZpbmlzaEFsbFJlbmRlcmluZygpOwot
ICAgIGludCBmcmFtZU51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVOdW1iZXI7IH0KKyAg
ICBpbnQgc291cmNlQW5pbWF0aW9uRnJhbWVOdW1iZXIoKSBjb25zdCB7IHJldHVybiBtX3NvdXJj
ZUFuaW1hdGlvbkZyYW1lTnVtYmVyOyB9CiAKICAgICBib29sIGluaXRpYWxpemVMYXllclJlbmRl
cmVyKFBhc3NPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+LCBUZXh0dXJlVXBsb2FkZXJPcHRpb24p
OwogICAgIGJvb2wgaXNDb250ZXh0TG9zdCgpOwpAQCAtMTk2LDcgKzE5Niw3IEBAIHByb3RlY3Rl
ZDoKIAogICAgIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQqIG1fY2xpZW50OwogICAgIGludCBt
X3NvdXJjZUZyYW1lTnVtYmVyOwotICAgIGludCBtX2ZyYW1lTnVtYmVyOworICAgIGludCBtX3Nv
dXJjZUFuaW1hdGlvbkZyYW1lTnVtYmVyOwogCiBwcml2YXRlOgogICAgIHZvaWQgY29tcHV0ZURv
dWJsZVRhcFpvb21EZWx0YXMoQ0NTY3JvbGxBbmRTY2FsZVNldCogc2Nyb2xsSW5mbyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1By
b3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1By
b3h5LmgKaW5kZXggMWMyZjljYWZkNTM1MjVjZjFiOTQ2NzVkZDRhMmY5Njg2NDhmMThhNS4uOTQw
NzA1ZTFiOTc2MDlmNTVkOWUwYzEwY2MyYWNjZmRkMWFhNzUzYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaApAQCAt
MzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDQ0ZvbnRBdGxhczsKIGNs
YXNzIENDVGhyZWFkOwogY2xhc3MgQ0NHcmFwaGljc0NvbnRleHQ7CitzdHJ1Y3QgQ0NSZW5kZXJp
bmdTdGF0czsKIHN0cnVjdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzOwogCiAvLyBBYnN0cmFj
dCBjbGFzcyByZXNwb25zaWJsZSBmb3IgcHJveHlpbmcgY29tbWFuZHMgZnJvbSB0aGUgbWFpbi10
aHJlYWQgc2lkZSBvZgpAQCAtODEsNiArODIsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGlu
dCBjb21wb3NpdG9ySWRlbnRpZmllcigpIGNvbnN0ID0gMDsKIAorICAgIHZpcnR1YWwgdm9pZCBp
bXBsU2lkZVJlbmRlcmluZ1N0YXRzKENDUmVuZGVyaW5nU3RhdHMmKSA9IDA7CisKICAgICB2aXJ0
dWFsIGNvbnN0IExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMmIGxheWVyUmVuZGVyZXJDYXBhYmls
aXRpZXMoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNBbmltYXRlKCkg
PSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZW5kZXJpbmdTdGF0cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJpbmdTdGF0cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY2OWM4ZTAyNjg0
ZWMyZTUwMDNmMzIwNDcwZDA5Y2NlOTBlZjExNjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlcmluZ1N0YXRzLmgK
QEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDQ1JlbmRlcmluZ1N0YXRz
X2gKKyNkZWZpbmUgQ0NSZW5kZXJpbmdTdGF0c19oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
c3RydWN0IENDUmVuZGVyaW5nU3RhdHMgeworICAgIGludCBudW1BbmltYXRpb25GcmFtZXM7Cisg
ICAgaW50IG51bUZyYW1lc1NlbnRUb1NjcmVlbjsKKworICAgIENDUmVuZGVyaW5nU3RhdHMoKQor
ICAgICAgICA6IG51bUFuaW1hdGlvbkZyYW1lcygwKQorICAgICAgICAsIG51bUZyYW1lc1NlbnRU
b1NjcmVlbigwKQorICAgIHsKKyAgICB9Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJl
YWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAppbmRleCBjYmQ1MWQ0ZmU2OTVjYTUyMmM3ODc2NmVj
NTM2ZmQwNDhmNGQwNzg5Li44ZWI1MTEwYzYzMWE1MjZhNDViNDIwMjE3M2VlNzJhMDE2NTYxOWEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcApAQCAtMzEsNiArMzEs
NyBAQAogI2luY2x1ZGUgImNjL0NDRm9udEF0bGFzLmgiCiAjaW5jbHVkZSAiY2MvQ0NHcmFwaGlj
c0NvbnRleHQuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKKyNpbmNsdWRlICJj
Yy9DQ1JlbmRlcmluZ1N0YXRzLmgiCiAjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgog
I2luY2x1ZGUgImNjL0NDVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KQEAg
LTIwMiw2ICsyMDMsMTEgQEAgYm9vbCBDQ1NpbmdsZVRocmVhZFByb3h5OjpyZWNyZWF0ZUNvbnRl
eHQoKQogICAgIHJldHVybiBpbml0aWFsaXplZDsKIH0KIAordm9pZCBDQ1NpbmdsZVRocmVhZFBy
b3h5OjppbXBsU2lkZVJlbmRlcmluZ1N0YXRzKENDUmVuZGVyaW5nU3RhdHMmIHN0YXRzKQorewor
ICAgIHN0YXRzLm51bUZyYW1lc1NlbnRUb1NjcmVlbiA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPnNv
dXJjZUFuaW1hdGlvbkZyYW1lTnVtYmVyKCk7Cit9CisKIGNvbnN0IExheWVyUmVuZGVyZXJDYXBh
YmlsaXRpZXMmIENDU2luZ2xlVGhyZWFkUHJveHk6OmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMo
KSBjb25zdAogewogICAgIEFTU0VSVChtX2xheWVyUmVuZGVyZXJJbml0aWFsaXplZCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Np
bmdsZVRocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKaW5kZXggNmZiNzMzZGYyZWI4Nzc5NTIwMzU1
ODI0YTBmODU3ZWNkZjQwMTFiOS4uNWZjMmIzMWY3ZmI5NWQzODJiOWYwMjAzZjM4NzNkMGFjOGRl
NWUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaApAQCAtNTMsNiArNTMs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGluaXRpYWxpemVMYXllclJlbmRlcmVyKCkg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHJlY3JlYXRlQ29udGV4dCgpIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgaW50IGNvbXBvc2l0b3JJZGVudGlmaWVyKCkgY29uc3QgT1ZFUlJJREUgeyBy
ZXR1cm4gbV9jb21wb3NpdG9ySWRlbnRpZmllcjsgfQorICAgIHZpcnR1YWwgdm9pZCBpbXBsU2lk
ZVJlbmRlcmluZ1N0YXRzKENDUmVuZGVyaW5nU3RhdHMmKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IGNvbnN0IExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMmIGxheWVyUmVuZGVyZXJDYXBhYmlsaXRp
ZXMoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgbG9zZUNvbnRleHQoKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNBbmltYXRlKCkgT1ZFUlJJREU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Ro
cmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuY3BwCmluZGV4IDE5ODgwMzIwYmVlNmFhNzU3MTAyYWJlMTlmMGVj
ODUwNWE3YjkzYzguLjlhY2RkNzE5NmMxOWE0MjNlMzM5NzFmNzkyZjYwZTJlZjdkYWEwMWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAi
Y2MvQ0NHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJjYy9DQ0lucHV0SGFuZGxlci5oIgog
I2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgorI2luY2x1ZGUgImNjL0NDUmVuZGVyaW5n
U3RhdHMuaCIKICNpbmNsdWRlICJjYy9DQ1NjaGVkdWxlci5oIgogI2luY2x1ZGUgImNjL0NDU2Nv
cGVkVGhyZWFkUHJveHkuaCIKICNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCkBAIC0y
NzUsNiArMjc2LDE3IEBAIGludCBDQ1RocmVhZFByb3h5Ojpjb21wb3NpdG9ySWRlbnRpZmllcigp
IGNvbnN0CiAgICAgcmV0dXJuIG1fY29tcG9zaXRvcklkZW50aWZpZXI7CiB9CiAKK3ZvaWQgQ0NU
aHJlYWRQcm94eTo6aW1wbFNpZGVSZW5kZXJpbmdTdGF0cyhDQ1JlbmRlcmluZ1N0YXRzJiBzdGF0
cykKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgQ0NDb21wbGV0aW9uRXZl
bnQgY29tcGxldGlvbjsKKyAgICBDQ1Byb3h5OjppbXBsVGhyZWFkKCktPnBvc3RUYXNrKGNyZWF0
ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6aW1wbFNpZGVSZW5kZXJpbmdTdGF0
c09uSW1wbFRocmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKCZjb21wbGV0aW9uKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Ny
b3NzVGhyZWFkQWNjZXNzKCZzdGF0cykpKTsKKyAgICBjb21wbGV0aW9uLndhaXQoKTsKK30KKwog
Y29uc3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgQ0NUaHJlYWRQcm94eTo6bGF5ZXJSZW5k
ZXJlckNhcGFiaWxpdGllcygpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1fbGF5ZXJSZW5kZXJlcklu
aXRpYWxpemVkKTsKQEAgLTg4Niw0ICs4OTgsMTEgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpyZWNy
ZWF0ZUNvbnRleHRPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24sIEMK
ICAgICBjb21wbGV0aW9uLT5zaWduYWwoKTsKIH0KIAordm9pZCBDQ1RocmVhZFByb3h5OjppbXBs
U2lkZVJlbmRlcmluZ1N0YXRzT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0
aW9uLCBDQ1JlbmRlcmluZ1N0YXRzKiBzdGF0cykKK3sKKyAgICBBU1NFUlQoaXNJbXBsVGhyZWFk
KCkpOworICAgIHN0YXRzLT5udW1GcmFtZXNTZW50VG9TY3JlZW4gPSBtX2xheWVyVHJlZUhvc3RJ
bXBsLT5zb3VyY2VBbmltYXRpb25GcmFtZU51bWJlcigpOworICAgIGNvbXBsZXRpb24tPnNpZ25h
bCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgK
aW5kZXggMzNkM2Q5OTZlZGQ2ZDc3NzY2ZGZiODJmZDdlZWE4MDIxYmI2MGVhZi4uZjZkNTFmNjc1
YmU3Mzg4MzdlYTRhNTBjN2JkMWQxODgxYjcyMTU1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHku
aApAQCAtNjAsNiArNjAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGluaXRpYWxpemVM
YXllclJlbmRlcmVyKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHJlY3JlYXRlQ29udGV4
dCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgaW50IGNvbXBvc2l0b3JJZGVudGlmaWVyKCkgY29u
c3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGltcGxTaWRlUmVuZGVyaW5nU3RhdHMoQ0NS
ZW5kZXJpbmdTdGF0cyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgY29uc3QgTGF5ZXJSZW5kZXJl
ckNhcGFiaWxpdGllcyYgbGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpIGNvbnN0IE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCBsb3NlQ29udGV4dCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBzZXROZWVkc0FuaW1hdGUoKSBPVkVSUklERTsKQEAgLTE0Miw2ICsxNDMsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgc2V0RnVsbFJvb3RMYXllckRhbWFnZU9uSW1wbFRocmVhZCgpOwogICAg
IHZvaWQgYWNxdWlyZUxheWVyVGV4dHVyZXNGb3JNYWluVGhyZWFkT25JbXBsVGhyZWFkKENDQ29t
cGxldGlvbkV2ZW50Kik7CiAgICAgdm9pZCByZWNyZWF0ZUNvbnRleHRPbkltcGxUaHJlYWQoQ0ND
b21wbGV0aW9uRXZlbnQqLCBDQ0dyYXBoaWNzQ29udGV4dCosIGJvb2wqIHJlY3JlYXRlU3VjY2Vl
ZGVkLCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKik7CisgICAgdm9pZCBpbXBsU2lkZVJlbmRl
cmluZ1N0YXRzT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiwgQ0NSZW5kZXJpbmdTdGF0
cyopOwogICAgIENDU2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBSZXN1bHQgc2NoZWR1bGVkQWN0
aW9uRHJhd0FuZFN3YXBJbnRlcm5hbChib29sIGZvcmNlZERyYXcpOwogICAgIHZvaWQgc2V0Rm9u
dEF0bGFzT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8Q0NGb250QXRsYXM+KTsKICAgICB2b2lkIGZv
cmNlU2VyaWFsaXplT25Td2FwQnVmZmVyc09uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCop
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oCmluZGV4IDRhMjgwNGZjYWEy
Njk1MjMwNzQyMzQwNjkwNjUyOGY5MTAyYWM2YzEuLjIwMjkwNDVjYWUzN2NiMzI2OWYzODVkZGQ3
NTZkOTdkNTNhYTIxZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgK
QEAgLTYyLDYgKzYyLDcgQEAgc3RydWN0IFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOwog
c3RydWN0IFdlYk1lZGlhUGxheWVyQWN0aW9uOwogc3RydWN0IFdlYlBsdWdpbkFjdGlvbjsKIHN0
cnVjdCBXZWJQb2ludDsKK3N0cnVjdCBXZWJSZW5kZXJpbmdTdGF0czsKIAogY2xhc3MgV2ViVmll
dyA6IHB1YmxpYyBXZWJXaWRnZXQgewogcHVibGljOgpAQCAtNDY0LDYgKzQ2NSwxMCBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgc2V0RWRpdGFibGVTZWxlY3Rpb25PZmZzZXRzKGludCBz
dGFydCwgaW50IGVuZCkgPSAwOwogCisgICAgLy8gRmlsbHMgaW4gYSBXZWJSZW5kZXJpbmdTdGF0
cyBzdHJ1Y3QgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc3RhdGUgb2YgdGhlIGNv
bXBvc2l0b3IuCisgICAgLy8gVGhpcyBjYWxsIGlzIHJlbGF0aXZlbHkgZXhwZW5zaXZlIGluIHRo
cmVhZGVkIG1vZGUgYXMgaXQgYmxvY2tzIG9uIHRoZSBjb21wb3NpdG9yIHRocmVhZC4KKyAgICB2
aXJ0dWFsIHZvaWQgcmVuZGVyaW5nU3RhdHMoV2ViUmVuZGVyaW5nU3RhdHMmKSBjb25zdCB7IH0K
KwogICAgIC8vIFZpc2liaWxpdHkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogICAgIC8vIFNldHMgdGhlIHZpc2liaWxpdHkgb2Yg
dGhlIFdlYlZpZXcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJM
YXllclRyZWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJl
ZVZpZXcuY3BwCmluZGV4IDdmMjJmNzlmOTNiMjAyZDQ3NGYwZWVkMTk4MzFmMmVkNDc0ZDljYzAu
LjkwMzU1MmJlMDFiZDIwY2YxNzVjN2U1MTQzNzM3ZGE2MGJhZTM5YzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCkBAIC0zMSwxMCArMzEs
MTIgQEAKICNpbmNsdWRlICJXZWJMYXllclRyZWVWaWV3SW1wbC5oIgogI2luY2x1ZGUgImNjL0ND
R3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCisjaW5j
bHVkZSAiY2MvQ0NSZW5kZXJpbmdTdGF0cy5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkxheWVy
LmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViUG9pbnQuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9X
ZWJSZWN0LmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViU2l6ZS5oIgorI2luY2x1ZGUgPHB1Ymxp
Yy9XZWJSZW5kZXJpbmdTdGF0cy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAt
MTc4LDYgKzE4MCwxNSBAQCBXZWJHcmFwaGljc0NvbnRleHQzRCogV2ViTGF5ZXJUcmVlVmlldzo6
Y29udGV4dCgpCiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+bGF5ZXJUcmVlSG9zdCgpLT5jb250ZXh0
KCktPmNvbnRleHQzRCgpOwogfQogCit2b2lkIFdlYkxheWVyVHJlZVZpZXc6OnJlbmRlcmluZ1N0
YXRzKFdlYlJlbmRlcmluZ1N0YXRzJiBzdGF0cykgY29uc3QKK3sKKyAgICBDQ1JlbmRlcmluZ1N0
YXRzIGNjU3RhdHM7CisgICAgbV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPnJlbmRlcmluZ1N0
YXRzKGNjU3RhdHMpOworCisgICAgc3RhdHMubnVtQW5pbWF0aW9uRnJhbWVzID0gY2NTdGF0cy5u
dW1BbmltYXRpb25GcmFtZXM7CisgICAgc3RhdHMubnVtRnJhbWVzU2VudFRvU2NyZWVuID0gY2NT
dGF0cy5udW1GcmFtZXNTZW50VG9TY3JlZW47Cit9CisKIHZvaWQgV2ViTGF5ZXJUcmVlVmlldzo6
bG9zZUNvbXBvc2l0b3JDb250ZXh0KGludCBudW1UaW1lcykKIHsKICAgICBtX3ByaXZhdGUtPmxh
eWVyVHJlZUhvc3QoKS0+bG9zZUNvbnRleHQobnVtVGltZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDAyZGI2M2U4MDA0MDI2YTdkODRlZTg5MjE2
OTBlM2YxOTJhODkwNzAuLjk4ZDNjZmQ2NGY0YmRjY2Y5NGUzNmE2Y2E0ODllYWFhZjhjMzJkMGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTcyOSw2
ICs3MjksMTMgQEAgdm9pZCBXZWJWaWV3SW1wbDo6dHJhbnNmZXJBY3RpdmVXaGVlbEZsaW5nQW5p
bWF0aW9uKGNvbnN0IFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXIKICAgICBzY2hlZHVsZUFuaW1hdGlv
bigpOwogfQogCit2b2lkIFdlYlZpZXdJbXBsOjpyZW5kZXJpbmdTdGF0cyhXZWJSZW5kZXJpbmdT
dGF0cyYgc3RhdHMpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0FjdGl2ZSgpKTsKKyAgICBpZiAoIW1fbGF5ZXJUcmVlVmlldy5pc051bGwoKSkKKyAgICAgICAg
bV9sYXllclRyZWVWaWV3LnJlbmRlcmluZ1N0YXRzKHN0YXRzKTsKK30KKwogdm9pZCBXZWJWaWV3
SW1wbDo6c3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9sbCwgYm9v
bCB1c2VBbmNob3IsIGZsb2F0IG5ld1NjYWxlLCBkb3VibGUgZHVyYXRpb25TZWMpCiB7CiAgICAg
aWYgKCFtX2xheWVyVHJlZVZpZXcuaXNOdWxsKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuaAppbmRleCBhMGRkZWRiODE3YWE5NzcyNjNmNmY1MWM0YWIzN2VjNjA5OTMx
ZTUxLi41OTIwYjAyNzQzNDE5NTc5OTYxZDFhY2MyMmIzYmFmYWI0Zjg1YjAxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTI5NCw2ICsyOTQsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJhdHRlcnlTdGF0dXMoY29uc3QgV2ViQmF0dGVy
eVN0YXR1cyYpOwogI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIHRyYW5zZmVyQWN0aXZlV2hlZWxG
bGluZ0FuaW1hdGlvbihjb25zdCBXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyYpOworICAg
IHZpcnR1YWwgdm9pZCByZW5kZXJpbmdTdGF0cyhXZWJSZW5kZXJpbmdTdGF0cyYpIGNvbnN0Owog
CiAgICAgLy8gV2ViTGF5ZXJUcmVlVmlld0NsaWVudAogICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVn
aW5GcmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xh
eWVyVHJlZUhvc3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXll
clRyZWVIb3N0VGVzdC5jcHAKaW5kZXggM2JmMjYyMDRkMWJhZjRiZTQ4YjJjYzA2OWUxYTliYTdh
NjdiMWQ2MC4uN2QxNGQzOGQ1ZDM2YTZjZjY3OGUxMWYxMWY4YjIxN2I3NTlkMzk2ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3Qu
Y3BwCkBAIC04NjYsNyArODY2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQo
KQogICAgIHsKICAgICAgICAgTGF5ZXJDaHJvbWl1bSogcm9vdCA9IG1fbGF5ZXJUcmVlSG9zdC0+
cm9vdExheWVyKCk7Ci0gICAgICAgIGlmICghbV9sYXllclRyZWVIb3N0LT5mcmFtZU51bWJlcigp
KQorICAgICAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdC0+Y29tbWl0TnVtYmVyKCkpCiAgICAgICAg
ICAgICBFWFBFQ1RfRVEocm9vdC0+c2Nyb2xsUG9zaXRpb24oKSwgbV9pbml0aWFsU2Nyb2xsKTsK
ICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBFWFBFQ1RfRVEocm9vdC0+c2Nyb2xsUG9zaXRp
b24oKSwgbV9pbml0aWFsU2Nyb2xsICsgbV9zY3JvbGxBbW91bnQpOwpAQCAtOTUyLDcgKzk1Miw3
IEBAIHB1YmxpYzoKICAgICAgICAgcm9vdC0+c2V0U2Nyb2xsYWJsZSh0cnVlKTsKICAgICAgICAg
cm9vdC0+c2V0TWF4U2Nyb2xsUG9zaXRpb24oSW50U2l6ZSgxMDAsIDEwMCkpOwogCi0gICAgICAg
IGlmICghaW1wbC0+c291cmNlRnJhbWVOdW1iZXIoKSAmJiBpbXBsLT5mcmFtZU51bWJlcigpID09
IDEpIHsKKyAgICAgICAgaWYgKCFpbXBsLT5zb3VyY2VGcmFtZU51bWJlcigpICYmIGltcGwtPnNv
dXJjZUFuaW1hdGlvbkZyYW1lTnVtYmVyKCkgPT0gMSkgewogICAgICAgICAgICAgLy8gRmlyc3Qg
ZHJhdyBhZnRlciBmaXJzdCBjb21taXQuCiAgICAgICAgICAgICBFWFBFQ1RfRVEocm9vdC0+c2Ny
b2xsRGVsdGEoKSwgSW50U2l6ZSgpKTsKICAgICAgICAgICAgIHJvb3QtPnNjcm9sbEJ5KG1fc2Ny
b2xsQW1vdW50KTsKQEAgLTk2MCw3ICs5NjAsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgICAgIEVY
UEVDVF9FUShyb290LT5zY3JvbGxQb3NpdGlvbigpLCBtX2luaXRpYWxTY3JvbGwpOwogICAgICAg
ICAgICAgcG9zdFNldE5lZWRzUmVkcmF3VG9NYWluVGhyZWFkKCk7Ci0gICAgICAgIH0gZWxzZSBp
ZiAoIWltcGwtPnNvdXJjZUZyYW1lTnVtYmVyKCkgJiYgaW1wbC0+ZnJhbWVOdW1iZXIoKSA9PSAy
KSB7CisgICAgICAgIH0gZWxzZSBpZiAoIWltcGwtPnNvdXJjZUZyYW1lTnVtYmVyKCkgJiYgaW1w
bC0+c291cmNlQW5pbWF0aW9uRnJhbWVOdW1iZXIoKSA9PSAyKSB7CiAgICAgICAgICAgICAvLyBT
ZWNvbmQgZHJhdyBhZnRlciBmaXJzdCBjb21taXQuCiAgICAgICAgICAgICBFWFBFQ1RfRVEocm9v
dC0+c2Nyb2xsRGVsdGEoKSwgbV9zY3JvbGxBbW91bnQpOwogICAgICAgICAgICAgcm9vdC0+c2Ny
b2xsQnkobV9zY3JvbGxBbW91bnQpOwpAQCAtOTcwLDcgKzk3MCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIHBvc3RTZXROZWVkc0NvbW1pdFRvTWFpblRocmVhZCgpOwogICAgICAgICB9IGVsc2Ug
aWYgKGltcGwtPnNvdXJjZUZyYW1lTnVtYmVyKCkgPT0gMSkgewogICAgICAgICAgICAgLy8gVGhp
cmQgb3IgbGF0ZXIgZHJhdyBhZnRlciBzZWNvbmQgY29tbWl0LgotICAgICAgICAgICAgRVhQRUNU
X0dFKGltcGwtPmZyYW1lTnVtYmVyKCksIDMpOworICAgICAgICAgICAgRVhQRUNUX0dFKGltcGwt
PnNvdXJjZUFuaW1hdGlvbkZyYW1lTnVtYmVyKCksIDMpOwogICAgICAgICAgICAgRVhQRUNUX0VR
KHJvb3QtPnNjcm9sbERlbHRhKCksIEludFNpemUoKSk7CiAgICAgICAgICAgICBFWFBFQ1RfRVEo
cm9vdC0+c2Nyb2xsUG9zaXRpb24oKSwgbV9pbml0aWFsU2Nyb2xsICsgbV9zY3JvbGxBbW91bnQg
KyBtX3Njcm9sbEFtb3VudCk7CiAgICAgICAgICAgICBlbmRUZXN0KCk7CkBAIC0yMjM1LDcgKzIy
MzUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luQ29tbWl0T25DQ1RocmVhZChD
Q0xheWVyVHJlZUhvc3RJbXBsKiBpbXBsKSBPVkVSUklERQogICAgIHsKICAgICAgICAgRVhQRUNU
X0VRKG1fcm9vdFNjcm9sbExheWVyLT5zY3JvbGxQb3NpdGlvbigpLCBJbnRQb2ludCgpKTsKLSAg
ICAgICAgaWYgKCFtX2xheWVyVHJlZUhvc3QtPmZyYW1lTnVtYmVyKCkpCisgICAgICAgIGlmICgh
bV9sYXllclRyZWVIb3N0LT5jb21taXROdW1iZXIoKSkKICAgICAgICAgICAgIEVYUEVDVF9FUSht
X2NoaWxkTGF5ZXItPnNjcm9sbFBvc2l0aW9uKCksIEludFBvaW50KCkpOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBFWFBFQ1RfRVEobV9jaGlsZExheWVyLT5zY3JvbGxQb3NpdGlvbigpLCBJ
bnRQb2ludCgpICsgbV9zY3JvbGxBbW91bnQpOwpAQCAtMjI0MywxMSArMjI0MywxMSBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVI
b3N0SW1wbCogaW1wbCkgT1ZFUlJJREUKICAgICB7Ci0gICAgICAgIGlmIChpbXBsLT5mcmFtZU51
bWJlcigpID09IDEpIHsKKyAgICAgICAgaWYgKGltcGwtPnNvdXJjZUFuaW1hdGlvbkZyYW1lTnVt
YmVyKCkgPT0gMSkgewogICAgICAgICAgICAgRVhQRUNUX0VRKGltcGwtPnNjcm9sbEJlZ2luKElu
dFBvaW50KDUsIDUpLCBDQ0lucHV0SGFuZGxlckNsaWVudDo6V2hlZWwpLCBDQ0lucHV0SGFuZGxl
ckNsaWVudDo6U2Nyb2xsU3RhcnRlZCk7CiAgICAgICAgICAgICBpbXBsLT5zY3JvbGxCeShtX3Nj
cm9sbEFtb3VudCk7CiAgICAgICAgICAgICBpbXBsLT5zY3JvbGxFbmQoKTsKLSAgICAgICAgfSBl
bHNlIGlmIChpbXBsLT5mcmFtZU51bWJlcigpID09IDIpCisgICAgICAgIH0gZWxzZSBpZiAoaW1w
bC0+c291cmNlQW5pbWF0aW9uRnJhbWVOdW1iZXIoKSA9PSAyKQogICAgICAgICAgICAgZW5kVGVz
dCgpOwogICAgIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>