<?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>98139</bug_id>
          
          <creation_ts>2012-10-02 03:43:23 -0700</creation_ts>
          <short_desc>Disambiguate innerFramePoint and mainFramePoint</short_desc>
          <delta_ts>2012-11-21 07:47:30 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>420+</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>
          <dependson>101915</dependson>
          <blocked>95204</blocked>
    
    <blocked>101590</blocked>
    
    <blocked>102907</blocked>
    
    <blocked>102909</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Allan Sandfeld Jensen">allan.jensen</reporter>
          <assigned_to name="Allan Sandfeld Jensen">allan.jensen</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jchaffraix</cc>
    
    <cc>ojan</cc>
    
    <cc>peter+ews</cc>
    
    <cc>philn</cc>
    
    <cc>rakuco</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>732488</commentid>
    <comment_count>0</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-10-02 03:43:23 -0700</bug_when>
    <thetext>HitTestResult derives from HitTestLocation and thereby doubles as a point. In the current algorithm on render-tree level, this point is always both the original hit point, and the point in the result frame, because it stays within the same frame. The HitTestResult returned by EventHandler::hitTestResultAtPoint however descends into sub-frames, and currently returns a HitTestResult which contains a point transformed into result-frame coordinates.

The problem with this semantics is that descending into sub-frames is also necessary for area-based hit-testing, and the concept of the frame of the result become meaningless when the results can be from multiple frames.

The issue was seen with patch landed and reverted in bug #95204. As a stepping stone before relanding a solution there, we need to make the users of HitTestResult explicitly use either the result-frame point or original hit-test point. This is likely to solve a some corner-case bugs as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732510</commentid>
    <comment_count>1</comment_count>
      <attachid>166658</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-10-02 04:18:19 -0700</bug_when>
    <thetext>Created attachment 166658
Patch

This patch is designed to cause compile errors everywhere the disambiguation still needs to be resolved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732512</commentid>
    <comment_count>2</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-10-02 04:19:59 -0700</bug_when>
    <thetext>Note that replacing HitTestResult::point or HitTestResult::roundedPoint with resultFramePoint is the safe choice that does not change existing behaviour. I feel however the opportunity should be taken to examine if using the resultFramePoint is really the right choice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732516</commentid>
    <comment_count>3</comment_count>
      <attachid>166658</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-02 04:24:29 -0700</bug_when>
    <thetext>Comment on attachment 166658
Patch

Attachment 166658 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14123317</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732521</commentid>
    <comment_count>4</comment_count>
      <attachid>166658</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-02 04:25:20 -0700</bug_when>
    <thetext>Comment on attachment 166658
Patch

Attachment 166658 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14129192</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732524</commentid>
    <comment_count>5</comment_count>
      <attachid>166658</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-10-02 04:28:22 -0700</bug_when>
    <thetext>Comment on attachment 166658
Patch

Attachment 166658 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14135169</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732546</commentid>
    <comment_count>6</comment_count>
      <attachid>166658</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-10-02 04:48:48 -0700</bug_when>
    <thetext>Comment on attachment 166658
Patch

Attachment 166658 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/14134165</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732565</commentid>
    <comment_count>7</comment_count>
      <attachid>166674</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-10-02 05:10:23 -0700</bug_when>
    <thetext>Created attachment 166674
Patch

Fix remaining calls in EFL, Mac and Chromium.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732571</commentid>
    <comment_count>8</comment_count>
      <attachid>166674</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-02 05:18:44 -0700</bug_when>
    <thetext>Comment on attachment 166674
Patch

Attachment 166674 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14132205</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732595</commentid>
    <comment_count>9</comment_count>
      <attachid>166681</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-10-02 06:05:16 -0700</bug_when>
    <thetext>Created attachment 166681
Patch

Fix remaining call in Mac WK2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732759</commentid>
    <comment_count>10</comment_count>
      <attachid>166681</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-10-02 10:00:37 -0700</bug_when>
    <thetext>Comment on attachment 166681
Patch

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

&gt; Source/WebCore/rendering/HitTestResult.h:124
&gt; +    LayoutPoint resultFramePoint() const { return HitTestLocation::point(); }

What is a “frame point”? This is a new term you are introducing here, and I don’t understand what it means. Is it a reference to some particular coordinate system? The coordinate system of some document? Some viewport?

&gt; Source/WebCore/rendering/HitTestResult.h:128
&gt; +    void setOriginalFramePoint(const LayoutPoint&amp; p) { m_originalFramePoint = p; }

Please use a word instead of a single letter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732762</commentid>
    <comment_count>11</comment_count>
      <attachid>166681</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-10-02 10:02:13 -0700</bug_when>
    <thetext>Comment on attachment 166681
Patch

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

&gt;&gt; Source/WebCore/rendering/HitTestResult.h:124
&gt;&gt; +    LayoutPoint resultFramePoint() const { return HitTestLocation::point(); }
&gt; 
&gt; What is a “frame point”? This is a new term you are introducing here, and I don’t understand what it means. Is it a reference to some particular coordinate system? The coordinate system of some document? Some viewport?

Further, what is a “result frame point”? Is it a point in something called a “result frame”? Or is it a “result point” in some particular “frame” coordinate system?

&gt; Source/WebCore/rendering/HitTestResult.h:127
&gt; +    LayoutPoint originalFramePoint() const { return m_originalFramePoint; }

Same question here. Is this the original “frame point” or is it a point in the “original frame”?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732787</commentid>
    <comment_count>12</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-10-02 10:22:07 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 166681 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=166681&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/rendering/HitTestResult.h:124
&gt; &gt;&gt; +    LayoutPoint resultFramePoint() const { return HitTestLocation::point(); }
&gt; &gt; 
&gt; &gt; What is a “frame point”? This is a new term you are introducing here, and I don’t understand what it means. Is it a reference to some particular coordinate system? The coordinate system of some document? Some viewport?
&gt; 
&gt; Further, what is a “result frame point”? Is it a point in something called a “result frame”? Or is it a “result point” in some particular “frame” coordinate system?
&gt; 
It is the point in coordinates of frame of result (the inner node).

&gt; &gt; Source/WebCore/rendering/HitTestResult.h:127
&gt; &gt; +    LayoutPoint originalFramePoint() const { return m_originalFramePoint; }
&gt; 
&gt; Same question here. Is this the original “frame point” or is it a point in the “original frame”?

It is the point in coordinates of original frame. It is also the original point given to the hit test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734572</commentid>
    <comment_count>13</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-10-04 03:47:25 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 166681 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=166681&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/rendering/HitTestResult.h:124
&gt; &gt;&gt; +    LayoutPoint resultFramePoint() const { return HitTestLocation::point(); }
&gt; &gt; 
&gt; &gt; What is a “frame point”? This is a new term you are introducing here, and I don’t understand what it means. Is it a reference to some particular coordinate system? The coordinate system of some document? Some viewport?
&gt; 
&gt; Further, what is a “result frame point”? Is it a point in something called a “result frame”? Or is it a “result point” in some particular “frame” coordinate system?
&gt; 
&gt; &gt; Source/WebCore/rendering/HitTestResult.h:127
&gt; &gt; +    LayoutPoint originalFramePoint() const { return m_originalFramePoint; }
&gt; 
&gt; Same question here. Is this the original “frame point” or is it a point in the “original frame”?

It is not a frame point, it is point in the original frame or in the result frame. If these names are confusing, perhaps better names can be chosen. I just don&apos;t know what that should be.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734590</commentid>
    <comment_count>14</comment_count>
      <attachid>167075</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-10-04 04:40:30 -0700</bug_when>
    <thetext>Created attachment 167075
Patch

Clarify method names, now using pointInResultFrame and pointInOriginalFrame.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734598</commentid>
    <comment_count>15</comment_count>
      <attachid>167075</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2012-10-04 04:50:04 -0700</bug_when>
    <thetext>Comment on attachment 167075
Patch

Attachment 167075 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/14138928</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735527</commentid>
    <comment_count>16</comment_count>
      <attachid>167291</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-10-05 02:40:25 -0700</bug_when>
    <thetext>Created attachment 167291
Patch

Fix one forgotten rename in GTK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>743255</commentid>
    <comment_count>17</comment_count>
      <attachid>167291</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-10-16 10:27:24 -0700</bug_when>
    <thetext>Comment on attachment 167291
Patch

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

I second Darin&apos;s comments about the naming. The current naming doesn&apos;t really convey the idea that the results are in a certain frame&apos;s coordinate.

&gt; Source/WebCore/rendering/HitTestResult.h:103
&gt; -class HitTestResult : public HitTestLocation {
&gt; +class HitTestResult : protected HitTestLocation {

This line took me a while to understand. The fact that you are using &apos;protected&apos; inheritance - along with the forwarding functions below - makes me wonder if the relationship between the 2 classes shouldn&apos;t be composition (has-a) instead of inheritance (is-a).

&gt; Source/WebCore/rendering/HitTestResult.h:127
&gt; +    // The point in the coordinates of the result frame, that is the frame containing innerNode.
&gt; +    LayoutPoint pointInResultFrame() const { return HitTestLocation::point(); }

Some suggestions:
* pointInMostInnerFrameCoordinate()
* pointInInnerFrameCoordinate()

&gt; Source/WebCore/rendering/HitTestResult.h:130
&gt; +    // The point in the coordinates of the original frame hit-tested usually the main frame.
&gt; +    LayoutPoint pointInOriginalFrame() const { return m_originalFramePoint; }

Is it really possible for the original frame not to be the main frame? One of the changes in WebKit/chromium/ContextMenuClientImpl.cpp (getCustomMenuFromDefaultItems) assumes that this will always return the point in the main frame&apos;s coordinates.

&gt; Source/WebKit/win/WebView.cpp:1364
&gt; -    POINT point(view-&gt;contentsToWindow(contextMenuController-&gt;hitTestResult().roundedPoint()));
&gt; +    POINT point(view-&gt;contentsToWindow(roundedIntPoint(contextMenuController-&gt;hitTestResult().pointInResultFrame())));

All platforms round the return point so it would be better to move the rounding in HitTestResult.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745191</commentid>
    <comment_count>18</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-10-18 06:03:20 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 167291 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=167291&amp;action=review
&gt; 
&gt; I second Darin&apos;s comments about the naming. The current naming doesn&apos;t really convey the idea that the results are in a certain frame&apos;s coordinate.
&gt; 
&gt; &gt; Source/WebCore/rendering/HitTestResult.h:103
&gt; &gt; -class HitTestResult : public HitTestLocation {
&gt; &gt; +class HitTestResult : protected HitTestLocation {
&gt; 
&gt; This line took me a while to understand. The fact that you are using &apos;protected&apos; inheritance - along with the forwarding functions below - makes me wonder if the relationship between the 2 classes shouldn&apos;t be composition (has-a) instead of inheritance (is-a).
&gt; 
That has been my secret plan all along (shh!), but it is not the focus of this patch.

&gt; 
&gt; Is it really possible for the original frame not to be the main frame? One of the changes in WebKit/chromium/ContextMenuClientImpl.cpp (getCustomMenuFromDefaultItems) assumes that this will always return the point in the main frame&apos;s coordinates.
&gt; 
API wise yes, in practice not really. EventHandler::hitTestResultAtPoint has a weird trick where it runs the hit-test again from the main-frame, but only if it found something.


&gt; &gt; Source/WebKit/win/WebView.cpp:1364
&gt; &gt; -    POINT point(view-&gt;contentsToWindow(contextMenuController-&gt;hitTestResult().roundedPoint()));
&gt; &gt; +    POINT point(view-&gt;contentsToWindow(roundedIntPoint(contextMenuController-&gt;hitTestResult().pointInResultFrame())));
&gt; 
&gt; All platforms round the return point so it would be better to move the rounding in HitTestResult.

Though a patch a year ago did try to convert all the platforms to only using the rounded point, there are a number of (new?) places where the point is used without rounding.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746292</commentid>
    <comment_count>19</comment_count>
      <attachid>169617</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-10-19 07:30:29 -0700</bug_when>
    <thetext>Created attachment 169617
Patch

Ensure outer frame is main frame, and do appropiate renaming and clean-up</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746304</commentid>
    <comment_count>20</comment_count>
      <attachid>169617</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-19 08:03:22 -0700</bug_when>
    <thetext>Comment on attachment 169617
Patch

Attachment 169617 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14473001</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760722</commentid>
    <comment_count>21</comment_count>
      <attachid>172809</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-11-07 08:18:57 -0800</bug_when>
    <thetext>Created attachment 172809
Patch

Rebased and updated exported symbols for Mac build system</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761061</commentid>
    <comment_count>22</comment_count>
      <attachid>172809</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-11-07 14:34:28 -0800</bug_when>
    <thetext>Comment on attachment 172809
Patch

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

&gt; Source/WebCore/ChangeLog:10
&gt; +        Split the point() method in HitTestResult into two, resultFramePoint and originalFramePoint().
&gt; +        To do this HitTestResult no longer inherits publically from HitTestLocation, which should also
&gt; +        help to later separate the two classes more completely.

I think this is stale: resultFramePoint doesn&apos;t exist in this iteration. The bug title also refers to this method.

As a whole, your ChangeLogs should really say MORE rather than less (as it is the case now). Here there are questions I can&apos;t answer by looking at it so it&apos;s difficult to know if you just overlooked them.

&gt; Source/WebCore/page/EventHandler.cpp:1120
&gt; +

The previous code would fallback to doing this extra hit-testing at the main frame level *after* the original one: couldn&apos;t this change the result of EventHandler::hitTestResultAtPoint on inner frames as we could hit a parent frame first?

(that&apos;s exactly the kind of change that must be explained and argued in the ChangeLog)

&gt; Source/WebCore/rendering/HitTestResult.h:103
&gt; -class HitTestResult : public HitTestLocation {
&gt; +class HitTestResult : protected HitTestLocation {

I would like a FIXME added to track changing the relationship between HitTestLocation and HitTestResult. Extra points if you have a bug!

&gt; Source/WebCore/rendering/HitTestResult.h:126
&gt; +    LayoutPoint pointInMainFrame() const { return m_pointInMainFrame; }

This should return a const LayoutPoint&amp;, this can avoid a copy if the caller is careful. It also shouldn&apos;t break existing code.

&gt; Source/WebCore/rendering/HitTestResult.h:131
&gt; +    LayoutPoint pointInInnerFrame() const { return HitTestLocation::point(); }

Ditto (but would need to modify HitTestLocation::point() so it&apos;s a nit)

&gt; Source/WebCore/rendering/HitTestResult.h:136
&gt; +    LayoutPoint localPoint() const { return m_localPoint; }

Ditto.

&gt; Source/WebCore/rendering/HitTestResult.h:203
&gt; +    LayoutPoint m_pointInMainFrame;

pointInMainFrame is not super clear (what should this be if you have a point in an inner frame?). It should be pointInMainFrameCoordinates.

&gt; Source/WebKit/gtk/webkit/webkithittestresult.cpp:323
&gt; +    innerFrame = result.innerFrame();
&gt; +    if (innerFrame &amp;&amp; innerFrame-&gt;view()) {
&gt;          // Convert document coords to widget coords.
&gt; -        point = targetFrame-&gt;view()-&gt;contentsToWindow(result.roundedPoint());
&gt; +        point = innerFrame-&gt;view()-&gt;contentsToWindow(result.roundedPointInInnerFrame());
&gt;      } else
&gt; -        point = result.roundedPoint();
&gt; +        point = result.roundedPointInMainFrame();

This really looks like

point = result.roundedPointInMainFrame();

You wouldn&apos;t even need |innerFrame|.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761647</commentid>
    <comment_count>23</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-11-08 04:39:35 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; (From update of attachment 172809 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=172809&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:10
&gt; &gt; +        Split the point() method in HitTestResult into two, resultFramePoint and originalFramePoint().
&gt; &gt; +        To do this HitTestResult no longer inherits publically from HitTestLocation, which should also
&gt; &gt; +        help to later separate the two classes more completely.
&gt; 
&gt; I think this is stale: resultFramePoint doesn&apos;t exist in this iteration. The bug title also refers to this method.
&gt; 
&gt; As a whole, your ChangeLogs should really say MORE rather than less (as it is the case now). Here there are questions I can&apos;t answer by looking at it so it&apos;s difficult to know if you just overlooked them.
&gt; 
You are right. I will update the ChangeLogs to be more helpful.

&gt; &gt; Source/WebCore/page/EventHandler.cpp:1120
&gt; &gt; +
&gt; 
&gt; The previous code would fallback to doing this extra hit-testing at the main frame level *after* the original one: couldn&apos;t this change the result of EventHandler::hitTestResultAtPoint on inner frames as we could hit a parent frame first?
&gt; 
It is a tricky case, but it shouldn&apos;t really be called on non-main frames in the first place, and there is the quirk in RenderLayer which ensure all hit always pretends to hit something, so it always ends up as two hit-tests if one is started in a non main-frame.

&gt; (that&apos;s exactly the kind of change that must be explained and argued in the ChangeLog)
&gt; 
Right.

&gt; &gt; Source/WebKit/gtk/webkit/webkithittestresult.cpp:323
&gt; &gt; +    innerFrame = result.innerFrame();
&gt; &gt; +    if (innerFrame &amp;&amp; innerFrame-&gt;view()) {
&gt; &gt;          // Convert document coords to widget coords.
&gt; &gt; -        point = targetFrame-&gt;view()-&gt;contentsToWindow(result.roundedPoint());
&gt; &gt; +        point = innerFrame-&gt;view()-&gt;contentsToWindow(result.roundedPointInInnerFrame());
&gt; &gt;      } else
&gt; &gt; -        point = result.roundedPoint();
&gt; &gt; +        point = result.roundedPointInMainFrame();
&gt; 
&gt; This really looks like
&gt; 
&gt; point = result.roundedPointInMainFrame();
&gt; 
&gt; You wouldn&apos;t even need |innerFrame|.

I am trying to fix as little code as possible in all the ports. More cleanups will be possible in most of them after this patch lands, but I am not in the best position to test all those changes. This case is one of the only ones I changed because it also managed to confuse targetFrame with innerFrame.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761674</commentid>
    <comment_count>24</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-11-08 05:10:56 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; &gt; Source/WebKit/gtk/webkit/webkithittestresult.cpp:323
&gt; &gt; +    innerFrame = result.innerFrame();
&gt; &gt; +    if (innerFrame &amp;&amp; innerFrame-&gt;view()) {
&gt; &gt;          // Convert document coords to widget coords.
&gt; &gt; -        point = targetFrame-&gt;view()-&gt;contentsToWindow(result.roundedPoint());
&gt; &gt; +        point = innerFrame-&gt;view()-&gt;contentsToWindow(result.roundedPointInInnerFrame());
&gt; &gt;      } else
&gt; &gt; -        point = result.roundedPoint();
&gt; &gt; +        point = result.roundedPointInMainFrame();
&gt; 
&gt; This really looks like
&gt; 
&gt; point = result.roundedPointInMainFrame();
&gt; 
Actually no. This confused me a few times as well, but window coordinates are not the same a main frame coordinates.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761679</commentid>
    <comment_count>25</comment_count>
      <attachid>173020</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-11-08 05:13:46 -0800</bug_when>
    <thetext>Created attachment 173020
Patch

Updated changelogs and API, but will probably need an update on exported symbols as well</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761925</commentid>
    <comment_count>26</comment_count>
      <attachid>173020</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-11-08 10:24:34 -0800</bug_when>
    <thetext>Comment on attachment 173020
Patch

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

&gt; Source/WebCore/ChangeLog:14
&gt; +        Many of the call-sites of hitTestResultAtPoint tries to convert back from innerFramePoint to
&gt; +        mainFramePoint. These conversions have not been all cleaned up in this patch, and are left for
&gt; +        the ports to handle, since they are in a better position to test it. This is additionally 

when it land, please file port-specific follow-up bugs for port maintainers to flip it.

&gt; Source/WebCore/ChangeLog:25
&gt; +            Used to do a second hit-test from the main-frame if started on a non main-frame. Now it
&gt; +            does only one hit-test and redirects the test to the main-frame immidiately. Improving
&gt; +            both performance, and guaranteeing its tests always start in the main-frame.

can this be a fix by itself?

&gt; Source/WebCore/page/EventHandler.cpp:1119
&gt; +    // We always send hitTestResultAtPoint to the main frame if we have one,
&gt; +    // otherwise we might hit areas that are obscured by higher frames.
&gt; +    if (Page* page = m_frame-&gt;page()) {
&gt; +        Frame* mainFrame = page-&gt;mainFrame();
&gt; +        if (m_frame != mainFrame) {
&gt; +            FrameView* frameView = m_frame-&gt;view();
&gt; +            FrameView* mainView = mainFrame-&gt;view();
&gt; +            if (frameView &amp;&amp; mainView) {
&gt; +                IntPoint mainFramePoint = mainView-&gt;rootViewToContents(frameView-&gt;contentsToRootView(roundedIntPoint(point)));
&gt; +                return mainFrame-&gt;eventHandler()-&gt;hitTestResultAtPoint(mainFramePoint, allowShadowContent, ignoreClipping, testScrollbars, hitType, padding);
&gt; +            }
&gt; +        }
&gt; +    }

That is the same about the changelog question above: should not this part by itself be a fix and even be testable? Or this whole refactor depends on this premise?

&gt; Source/WebCore/page/EventHandler.cpp:1148
&gt; -        frame-&gt;contentRenderer()-&gt;hitTest(HitTestRequest(hitType), widgetHitTestResult);
&gt; +        widgetHitTestResult.setPointInMainFrame(result.pointInMainFrame());
&gt; +        frame-&gt;contentRenderer()-&gt;hitTest(request, widgetHitTestResult);

I have to admit it gets a bit confusing here.

&gt; Source/WebCore/rendering/HitTestResult.cpp:286
&gt; +Frame* HitTestResult::innerFrame() const

actualHitFrame?

::innerFrame() returning a main frame might sound confusing as well.

&gt; Source/WebCore/rendering/HitTestResult.h:126
&gt; +    // The hit-tested point in the coordinates of the main frame.

contents coordinates or viewport coordinates?

&gt; Source/WebCore/rendering/HitTestResult.h:131
&gt; +    // The hit-tested point in the coordinates of the inner frame, the frame containing innerNode.

same question here.

&gt; Source/WebCore/rendering/HitTestResult.h:134
&gt; +    Frame* innerFrame() const;

const Frame*?

&gt; Source/WebCore/rendering/HitTestResult.h:138
&gt; +    void setLocalPoint(const LayoutPoint&amp; p) { m_localPoint = p; }

better (but waaaaay too long) name would be: setPointInActualHitFrameContentsCoordinates</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762975</commentid>
    <comment_count>27</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-11-09 06:50:52 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; That is the same about the changelog question above: should not this part by itself be a fix and even be testable? Or this whole refactor depends on this premise?
&gt; 
It could be a fix in itself, which was my original plan, but it was foced in here to make the naming simpler. If this isn&apos;t done first then we can not guarantee that mainFramePoint is infact the point in main-frame coordinates, and it will instead just be the point in the original frame the hit-test was started in. So essentially scope-creep due to bikesheding.

&gt; &gt; Source/WebCore/page/EventHandler.cpp:1148
&gt; &gt; -        frame-&gt;contentRenderer()-&gt;hitTest(HitTestRequest(hitType), widgetHitTestResult);
&gt; &gt; +        widgetHitTestResult.setPointInMainFrame(result.pointInMainFrame());
&gt; &gt; +        frame-&gt;contentRenderer()-&gt;hitTest(request, widgetHitTestResult);
&gt; 
&gt; I have to admit it gets a bit confusing here.
&gt; 
&gt; &gt; Source/WebCore/rendering/HitTestResult.cpp:286
&gt; &gt; +Frame* HitTestResult::innerFrame() const
&gt; 
&gt; actualHitFrame?
&gt; 
&gt; ::innerFrame() returning a main frame might sound confusing as well.
&gt; 
It is meant to match innerNode terminology. If the innernode is a node in the main frame the inner frame is the main frame. 

&gt; &gt; Source/WebCore/rendering/HitTestResult.h:126
&gt; &gt; +    // The hit-tested point in the coordinates of the main frame.
&gt; 
&gt; contents coordinates or viewport coordinates?
&gt; 
Content, the viewport of the main frame is the window I think.

&gt; &gt; Source/WebCore/rendering/HitTestResult.h:138
&gt; &gt; +    void setLocalPoint(const LayoutPoint&amp; p) { m_localPoint = p; }
&gt; 
&gt; better (but waaaaay too long) name would be: setPointInActualHitFrameContentsCoordinates

The localPoint is actually the point in the coordinates of the innerNode, it was only moved to make the header cleaner and it is not a functional part of the patch. 

Anyway, we can not rename everything in WebCore or simplify inheritently complex technical terms, but can we agree that the new names  are clearer and less ambigous than those used before and move on?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763131</commentid>
    <comment_count>28</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-11-09 10:17:35 -0800</bug_when>
    <thetext>
&gt; 
&gt; &gt; &gt; Source/WebCore/page/EventHandler.cpp:1148
&gt; &gt; &gt; -        frame-&gt;contentRenderer()-&gt;hitTest(HitTestRequest(hitType), widgetHitTestResult);
&gt; &gt; &gt; +        widgetHitTestResult.setPointInMainFrame(result.pointInMainFrame());
&gt; &gt; &gt; +        frame-&gt;contentRenderer()-&gt;hitTest(request, widgetHitTestResult);
&gt; &gt; 
&gt; &gt; I have to admit it gets a bit confusing here.
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/rendering/HitTestResult.cpp:286
&gt; &gt; &gt; +Frame* HitTestResult::innerFrame() const
&gt; &gt; 
&gt; &gt; actualHitFrame?
&gt; &gt; 
&gt; &gt; ::innerFrame() returning a main frame might sound confusing as well.
&gt; &gt; 
&gt; It is meant to match innerNode terminology. If the innernode is a node in the main frame the inner frame is the main frame. 

However, &quot;iframe&quot; is an abbreviation  &quot;inner frame&quot; on the Web, which could confuse others (it did with me). grep for  &apos;innerframe&apos; in webcore, for example. 

&gt; Anyway, we can not rename everything in WebCore or simplify inheritently complex technical terms, but can we agree that the new names  are clearer and less ambigous than those used before and move on?

I agree that we have to agree on the names. I am not so sure I&apos;ve agreed with the ones proposed here though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763162</commentid>
    <comment_count>29</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-11-09 10:56:00 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; &gt; It is meant to match innerNode terminology. If the innernode is a node in the main frame the inner frame is the main frame. 
&gt; 
&gt; However, &quot;iframe&quot; is an abbreviation  &quot;inner frame&quot; on the Web, which could confuse others (it did with me). grep for  &apos;innerframe&apos; in webcore, for example. 
&gt; 
That makes sense. ActualHitFrame to me is confusing because all the frames are hit, this is just supposed to be the inner most of the frames hit. How about resultFrame or innerNodeFrame?

&gt; &gt; Anyway, we can not rename everything in WebCore or simplify inheritently complex technical terms, but can we agree that the new names  are clearer and less ambigous than those used before and move on?
&gt; 
&gt; I agree that we have to agree on the names. I am not so sure I&apos;ve agreed with the ones proposed here though.

That is fair. I was just feeling we were getting into a situation where I was changing the names to suggestions from one reviewer, only to have another reviewer then come with new suggestions (or old ones), and none of you commiting to an actual r+. If none of the names are perfect, it just seems like we would be better off just going with one and move on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763167</commentid>
    <comment_count>30</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-11-09 11:01:17 -0800</bug_when>
    <thetext>(In reply to comment #29)
&gt; (In reply to comment #28)
&gt; &gt; &gt; It is meant to match innerNode terminology. If the innernode is a node in the main frame the inner frame is the main frame. 
&gt; &gt; 
&gt; &gt; However, &quot;iframe&quot; is an abbreviation  &quot;inner frame&quot; on the Web, which could confuse others (it did with me). grep for  &apos;innerframe&apos; in webcore, for example. 
&gt; &gt; 
&gt; That makes sense. ActualHitFrame to me is confusing because all the frames are hit, this is just supposed to be the inner most of the frames hit. How about resultFrame or innerNodeFrame?

I like the later.

&gt; That is fair. I was just feeling we were getting into a situation where I was changing the names to suggestions from one reviewer, only to have another reviewer then come with new suggestions (or old ones), and none of you commiting to an actual r+. If none of the names are perfect, it just seems like we would be better off just going with one and move on.

I see how it can be frustrating. The above was my biggest concern and you came with a good enough name, imo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764226</commentid>
    <comment_count>31</comment_count>
      <attachid>173611</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-11-12 03:44:40 -0800</bug_when>
    <thetext>Created attachment 173611
Patch

Renamed innerFrame to innerNodeFrame, and separated the change in hitTestResultAtPoint to a separate bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764237</commentid>
    <comment_count>32</comment_count>
      <attachid>173611</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-12 03:53:07 -0800</bug_when>
    <thetext>Comment on attachment 173611
Patch

Attachment 173611 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/14794950</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764239</commentid>
    <comment_count>33</comment_count>
      <attachid>173611</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-12 03:54:35 -0800</bug_when>
    <thetext>Comment on attachment 173611
Patch

Attachment 173611 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14809358</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764242</commentid>
    <comment_count>34</comment_count>
      <attachid>173611</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-12 04:07:42 -0800</bug_when>
    <thetext>Comment on attachment 173611
Patch

Attachment 173611 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14818106</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764251</commentid>
    <comment_count>35</comment_count>
      <attachid>173611</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-11-12 04:26:19 -0800</bug_when>
    <thetext>Comment on attachment 173611
Patch

Attachment 173611 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14806516</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764263</commentid>
    <comment_count>36</comment_count>
      <attachid>173611</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-11-12 04:36:06 -0800</bug_when>
    <thetext>Comment on attachment 173611
Patch

The patch depends on the patch for bug #101915.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764283</commentid>
    <comment_count>37</comment_count>
      <attachid>173611</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-12 05:01:38 -0800</bug_when>
    <thetext>Comment on attachment 173611
Patch

Attachment 173611 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14811397</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764316</commentid>
    <comment_count>38</comment_count>
      <attachid>173611</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-12 05:43:05 -0800</bug_when>
    <thetext>Comment on attachment 173611
Patch

Attachment 173611 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14820102</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764364</commentid>
    <comment_count>39</comment_count>
      <attachid>173611</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-11-12 06:45:18 -0800</bug_when>
    <thetext>Comment on attachment 173611
Patch

Attachment 173611 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/14820117</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765832</commentid>
    <comment_count>40</comment_count>
      <attachid>173611</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-11-13 11:12:12 -0800</bug_when>
    <thetext>Comment on attachment 173611
Patch

I agree with Antonio, the naming is good enough now. I cannot really comment on the inner details of the change (like is the extra fallback in innerNodeFrame() fine for all platforms?) but it shouldn&apos;t be blocked on naming now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770721</commentid>
    <comment_count>41</comment_count>
      <attachid>174976</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-11-19 07:15:57 -0800</bug_when>
    <thetext>Created attachment 174976
Patch

Reupload after blocking patch landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772271</commentid>
    <comment_count>42</comment_count>
      <attachid>174976</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-11-20 16:28:19 -0800</bug_when>
    <thetext>Comment on attachment 174976
Patch

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

Your change is subtle and could really cause badness on other ports (as we have already witnessed). I don&apos;t know the testing you went through on the different ports whose API you have changed (Qt, Gtk and EFL) so it makes me itchy to accept the patch without some maintainers acknowledging that it won&apos;t break their clients.

&gt; Source/WebCore/ChangeLog:9
&gt; +        To do this HitTestResult no longer inherits publically from HitTestLocation, which should also

Nice use of &apos;publically&apos; :)

&gt; Source/WebCore/ChangeLog:39
&gt; +        (WebCore::RenderLayer::hitTest):

Please file those entries. They help see what&apos;s going on.

&gt; Source/WebCore/page/EventHandler.cpp:790
&gt; -    return result.innerNode() &amp;&amp; page-&gt;dragController()-&gt;draggableNode(m_frame, result.innerNode(), roundedIntPoint(result.point()), state);
&gt; +    return result.innerNode() &amp;&amp; page-&gt;dragController()-&gt;draggableNode(m_frame, result.innerNode(), result.roundedPointInMainFrame(), state);

Shouldn&apos;t this be result.roundedPointInInnerFrame()?

&gt; Source/WebCore/rendering/HitTestResult.cpp:204
&gt;  

You have forgotten a constructor above for m_pointInMainFrame initialization (HitTestResult(const LayoutPoint&amp; point)).

&gt; Source/WebCore/rendering/HitTestResult.cpp:207
&gt; +    , m_pointInMainFrame(point())

This construction made me wonder if it was right (and it is), not sure if explicitly initializing with centerPoint or whatever m_point gets would be more readable.

&gt; Source/WebKit/gtk/webkit/webkithittestresult.cpp:318
&gt; -    targetFrame = result.targetFrame();
&gt; -    if (targetFrame &amp;&amp; targetFrame-&gt;view()) {
&gt; +    innerNodeFrame = result.innerNodeFrame();

Anything unrelated with the core renaming / disambiguation should be pushed to a follow-bug (my preference as it limits the potential for badness) or explained. In this case, I don&apos;t know why it&apos;s fine to switch from targetFrame to innerNodeFrame and this being exposed, you are changing a (probably broken) behavior.

&gt; Source/WebKit/gtk/webkit/webkithittestresult.cpp:323
&gt; -        point = result.roundedPoint();
&gt; +        point = result.roundedPointInMainFrame();

This seems like a change in behavior as roundedPoint() was in the innerNodeFrame&apos;s coordinates.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772594</commentid>
    <comment_count>43</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-11-21 01:11:24 -0800</bug_when>
    <thetext>(In reply to comment #42)
&gt; (From update of attachment 174976 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=174976&amp;action=review
&gt; 
&gt; Your change is subtle and could really cause badness on other ports (as we have already witnessed). I don&apos;t know the testing you went through on the different ports whose API you have changed (Qt, Gtk and EFL) so it makes me itchy to accept the patch without some maintainers acknowledging that it won&apos;t break their clients.
&gt; 
We could stick to the direct translation in this patch and just translate all the old point calls to innerNodePoint. I only changed a few places were I could tell from the context or documentation that the wrong point was used. Maybe it would be better to land those changes in separate patches though.

&gt; &gt; Source/WebKit/gtk/webkit/webkithittestresult.cpp:318
&gt; &gt; -    targetFrame = result.targetFrame();
&gt; &gt; -    if (targetFrame &amp;&amp; targetFrame-&gt;view()) {
&gt; &gt; +    innerNodeFrame = result.innerNodeFrame();
&gt; 
&gt; Anything unrelated with the core renaming / disambiguation should be pushed to a follow-bug (my preference as it limits the potential for badness) or explained. In this case, I don&apos;t know why it&apos;s fine to switch from targetFrame to innerNodeFrame and this being exposed, you are changing a (probably broken) behavior.
&gt; 
Yeah, this is the big one. It was a complete mess. TargetFrame is the same as innerNodeFrame except when the mouse is over a link that would open in a new window, but they are using it as it was always innerNodeFrame.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772623</commentid>
    <comment_count>44</comment_count>
      <attachid>175377</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-11-21 01:39:28 -0800</bug_when>
    <thetext>Created attachment 175377
Patch

Remove all functional changes in the ports, and make this patch do purely renames. Updated one missed constructor in HitTestResult.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772945</commentid>
    <comment_count>45</comment_count>
      <attachid>175377</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-11-21 07:20:52 -0800</bug_when>
    <thetext>Comment on attachment 175377
Patch

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

r=me.

&gt; Source/WebCore/ChangeLog:14
&gt; +        Some, but not all call-sites have been all cleaned up in this patch, and they should be
&gt; +        audited by the individual ports.

You don&apos;t do any clean-up now.

&gt; Source/WebCore/ChangeLog:39
&gt; +        (WebCore::RenderLayer::hitTest):

Please don&apos;t forget to fill those before landing.

&gt; Source/WebCore/rendering/HitTestResult.cpp:200
&gt;  HitTestResult::HitTestResult(const LayoutPoint&amp; point) : HitTestLocation(point)

Let&apos;s fix the style of this line while we touch it (the parent class constructor call should be on its own line).

&gt; Source/WebKit/qt/Api/qwebframe.cpp:1601
&gt; +    // FIXME: This should probably use roundedPointInMainFrame if it is to match the documentation of QWebHitTestResult.

Yeah, FIXMEs and follow-up bugs are the way to go. This way you get more focused reviews and don&apos;t get stuck on different port&apos;s policy or reviewers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772967</commentid>
    <comment_count>46</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-11-21 07:47:30 -0800</bug_when>
    <thetext>Committed r135405: &lt;http://trac.webkit.org/changeset/135405&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166658</attachid>
            <date>2012-10-02 04:18:19 -0700</date>
            <delta_ts>2012-10-02 05:10:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98139-20121002131717.patch</filename>
            <type>text/plain</type>
            <size>19988</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwMTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDUxNzU3Mzc2ZWE4Mjli
ZDc4NzMyMDA1NTEyZGEyOWI4Zjc3NGVkYi4uMzM3ZDI1MjMxYjIyY2Q4YWU1MTNlNTU3ODU3ODk2
M2EzNDIxN2JhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTEwLTAyICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIERp
c2FtYmlndWF0ZSByZXN1bHRGcmFtZVBvaW50IGFuZCBvcmlnaW5hbCBoaXQtdGVzdCBwb2ludAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgxMzkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTcGxpdCB0aGUg
cG9pbnQoKSBtZXRob2QgaW4gSGl0VGVzdFJlc3VsdCBpbnRvIHR3bywgcmVzdWx0RnJhbWVQb2lu
dCBhbmQgb3JpZ2luYWxGcmFtZVBvaW50KCkuCisgICAgICAgIFRvIGRvIHRoaXMgSGl0VGVzdFJl
c3VsdCBubyBsb25nZXIgaW5oZXJpdHMgcHVibGljYWxseSBmcm9tIEhpdFRlc3RMb2NhdGlvbiwg
d2hpY2ggc2hvdWxkIGFsc28KKyAgICAgICAgaGVscCB0byBsYXRlciBzZXBhcmF0ZSB0aGUgdHdv
IGNsYXNzZXMgbW9yZSBjb21wbGV0ZWx5LgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpub2Rlc0Zyb21SZWN0KToKKyAgICAgICAgKiBw
YWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmV2
ZW50TWF5U3RhcnREcmFnKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGl0VGVz
dFJlc3VsdEF0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQpOgorICAgICAg
ICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6
OkhpdFRlc3RSZXN1bHQ6OmFwcGVuZCk6CisgICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1
bHQuaDoKKyAgICAgICAgKEhpdFRlc3RSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVz
dFJlc3VsdDo6cmVzdWx0RnJhbWVQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVz
dWx0Ojppc1JlY3RCYXNlZFRlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6
b3JpZ2luYWxGcmFtZVBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OnNl
dE9yaWdpbmFsRnJhbWVQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpoaXRUZXN0KToKKwogMjAxMi0xMC0w
MiAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW1v
dmUgYW5vbnltb3VzIG5hbWVzcGFjZSBmcm9tIFN0eWxlQnVpbGRlci5jcHAgZm9yIGJldHRlciBk
ZWJ1Z2dpbmcgZXhwZXJpZW5jZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAyOGI2OWRk
N2UzMzZmYjU2YjkzNDhmNWUyMWRhZTM1NDFhNmFkMDk1Li41M2VjZDYxOTA5ODFmMDE4NDhjMGI2
OTNmNzUzNTE3MmE0ZTY2OWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE3IEBACisyMDEyLTEwLTAyICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5A
ZGlnaWEuY29tPgorCisgICAgICAgIERpc2FtYmlndWF0ZSByZXN1bHRGcmFtZVBvaW50IGFuZCBv
cmlnaW5hbCBoaXQtdGVzdCBwb2ludAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTgxMzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6Q2hyb21lQ2xpZW50SW1wbDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQpOgorICAgICAgICAq
IHNyYy9Db250ZXh0TWVudUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb250ZXh0
TWVudUNsaWVudEltcGw6OmdldEN1c3RvbU1lbnVGcm9tRGVmYXVsdEl0ZW1zKToKKyAgICAgICAg
KiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjpj
aGFyYWN0ZXJJbmRleEZvclBvaW50KToKKwogMjAxMi0xMC0wMiAgSm9jaGVuIEVpc2luZ2VyICA8
am9jaGVuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVc2UgY29ycmVjdCBndGVzdCBtYWNyb3Mg
Zm9yIHRlc3RzIGZvciB0cnVlL2ZhbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggN2Y3M2IzY2I0MjYz
NDkzMzFkMDk1MGE0MjA3YTkxODBhZjZhODk3Yi4uYmY5N2Q1NTAyZDIyZDIxOTczMzUwZDMzMDBh
YWNkZjk0ZDVlMzc4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTEw
LTAyICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisg
ICAgICAgIERpc2FtYmlndWF0ZSByZXN1bHRGcmFtZVBvaW50IGFuZCBvcmlnaW5hbCBoaXQtdGVz
dCBwb2ludAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTgxMzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHdlYmtpdC93ZWJraXRoaXR0ZXN0cmVzdWx0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6a2l0KToK
KwogMjAxMi0xMC0wMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmVtb3ZlIHRoZSBTYWZhcmkgMiAtPiBTYWZhcmkgMyBpY29uIGRhdGFiYXNlIGltcG9ydCBj
b2RlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L3F0L0NoYW5nZUxvZwppbmRleCBlNTMxZjJhODhkOTVlYzRmNzE5ZmNjOTk5YTRiN2QwYTYz
Yjk2YTk1Li4yZTBiYzFhMGYzOTAxNzNmY2M0ZDlkYTJlZTYyYWU1YWY4MWMxOTEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTEwLTAyICBBbGxhbiBTYW5kZmVsZCBKZW5z
ZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIERpc2FtYmlndWF0ZSByZXN1
bHRGcmFtZVBvaW50IGFuZCBvcmlnaW5hbCBoaXQtdGVzdCBwb2ludAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgxMzkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgUXQgZG9jdW1lbnQgc3RhdGVzIHRo
ZSBwb3MgYXR0cmlidXRlIG9mIFFXZWJIaXRUZXN0UmVzdWx0IGlzIHRoZSBvcmlnaW5hbCBwb3Np
dGlvbiwKKyAgICAgICAgc28gdGhlIGNvZGUgbm93IHVzZXMgb3JpZ2luYWxGcmFtZVBvaW50Lgor
CisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViSGl0VGVzdFJlc3Vs
dFByaXZhdGU6OlFXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZSk6CisgICAgICAgICogQXBpL3F3ZWJw
YWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6VG91Y2hBZGp1c3Rlcjo6ZmluZENh
bmRpZGF0ZVBvaW50Rm9yVG91Y2gpOgorCiAyMDEyLTEwLTAxICBCcmFkeSBFaWRzb24gIDxiZWlk
c29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdGhlIFNhZmFyaSAyIC0+IFNhZmFyaSAz
IGljb24gZGF0YWJhc2UgaW1wb3J0IGNvZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggNjhlODg1YTIz
OWM2OTQ0OWNkNmQ5MmEyYjg3YzM3MTAyYTMzZGY1MS4uNDRjNTM2OWZjMWQ3NzcyMTU4NmMxYmM2
Yjk1ZTVmOWQyMmJhYjBiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEy
LTEwLTAyICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgor
CisgICAgICAgIERpc2FtYmlndWF0ZSByZXN1bHRGcmFtZVBvaW50IGFuZCBvcmlnaW5hbCBoaXQt
dGVzdCBwb2ludAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTgxMzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6aGFuZGxlQ29udGV4dE1lbnVFdmVu
dCk6CisKIDIwMTItMTAtMDEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAg
ICAgICAgIFJlbW92ZSB0aGUgU2FmYXJpIDIgLT4gU2FmYXJpIDMgaWNvbiBkYXRhYmFzZSBpbXBv
cnQgY29kZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwppbmRleCBjYjczNzhhNGY2NjEwOWIyZjM4Yjk0Y2JiMGJiMjRjNmUz
Y2VjZmMxLi5mNDZmODlhYjRhMzlkNjBlZGU0MWY0OGEwNzZiNTE3ZDRiMWRlMTE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMTAtMDIgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAg
PGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CisKKyAgICAgICAgRGlzYW1iaWd1YXRlIHJlc3VsdEZy
YW1lUG9pbnQgYW5kIG9yaWdpbmFsIGhpdC10ZXN0IHBvaW50CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODEzOQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvbnRl
eHRNZW51LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnU6OnNob3cpOgorCiAy
MDEyLTEwLTAxICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZW1vdmUgdGhlIFNhZmFyaSAyIC0+IFNhZmFyaSAzIGljb24gZGF0YWJhc2UgaW1wb3J0IGNvZGUu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBiNzkyNzViNmJjY2QxOTUzMDBhNTA3OWY4MmEx
ZDRjYWVkNDNmY2YzLi41ZWY2NDExMzk2NDUzOTc4MDZlMGVhNzBkMjgxMjBkMDhkMTFmZWIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTEzODgsNyArMTM4OCw3IEBAIFBhc3NSZWZQdHI8
Tm9kZUxpc3Q+IERvY3VtZW50Ojpub2Rlc0Zyb21SZWN0KGludCBjZW50ZXJYLCBpbnQgY2VudGVy
WSwgdW5zaWduZWQKICAgICAvLyBXaGVuIGlnbm9yZUNsaXBwaW5nIGlzIGZhbHNlLCB0aGlzIG1l
dGhvZCByZXR1cm5zIG51bGwgZm9yIGNvb3JkaW5hdGVzIG91dHNpZGUgb2YgdGhlIHZpZXdwb3J0
LgogICAgIGlmIChpZ25vcmVDbGlwcGluZykKICAgICAgICAgdHlwZSB8PSBIaXRUZXN0UmVxdWVz
dDo6SWdub3JlQ2xpcHBpbmc7Ci0gICAgZWxzZSBpZiAoIWZyYW1lVmlldy0+dmlzaWJsZUNvbnRl
bnRSZWN0KCkuaW50ZXJzZWN0cyhIaXRUZXN0UmVzdWx0OjpyZWN0Rm9yUG9pbnQocG9pbnQsIHRv
cFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcpKSkKKyAg
ICBlbHNlIGlmICghZnJhbWVWaWV3LT52aXNpYmxlQ29udGVudFJlY3QoKS5pbnRlcnNlY3RzKEhp
dFRlc3RMb2NhdGlvbjo6cmVjdEZvclBvaW50KHBvaW50LCB0b3BQYWRkaW5nLCByaWdodFBhZGRp
bmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5nKSkpCiAgICAgICAgIHJldHVybiAwOwogICAg
IGlmIChhbGxvd1NoYWRvd0NvbnRlbnQpCiAgICAgICAgIHR5cGUgfD0gSGl0VGVzdFJlcXVlc3Q6
OkFsbG93U2hhZG93Q29udGVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRl
eCBmZTIzMzBlYTJkZmU0NjI2ZTdhYzgwZDgzNTFmNjkxZmI2ODYxM2U5Li4yNmI1NDc1NTNkOGY0
NmVjZTIzYWUwYjk0MGQ3NjgxMjM3ZmJhYWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuY3BwCkBAIC03NTgsNyArNzU4LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmV2ZW50TWF5U3Rh
cnREcmFnKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpIGNvbnN0CiAgICAgSGl0VGVz
dFJlc3VsdCByZXN1bHQodmlldy0+d2luZG93VG9Db250ZW50cyhldmVudC5wb3NpdGlvbigpKSk7
CiAgICAgbV9mcmFtZS0+Y29udGVudFJlbmRlcmVyKCktPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0
KTsKICAgICBEcmFnU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIHJlc3VsdC5pbm5lck5vZGUoKSAm
JiBwYWdlLT5kcmFnQ29udHJvbGxlcigpLT5kcmFnZ2FibGVOb2RlKG1fZnJhbWUsIHJlc3VsdC5p
bm5lck5vZGUoKSwgcm91bmRlZEludFBvaW50KHJlc3VsdC5wb2ludCgpKSwgc3RhdGUpOworICAg
IHJldHVybiByZXN1bHQuaW5uZXJOb2RlKCkgJiYgcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS0+ZHJh
Z2dhYmxlTm9kZShtX2ZyYW1lLCByZXN1bHQuaW5uZXJOb2RlKCksIHJvdW5kZWRJbnRQb2ludChy
ZXN1bHQub3JpZ2luYWxGcmFtZVBvaW50KCkpLCBzdGF0ZSk7CiB9CiAKIHZvaWQgRXZlbnRIYW5k
bGVyOjp1cGRhdGVTZWxlY3Rpb25Gb3JNb3VzZURyYWcoKQpAQCAtMTA5Myw2ICsxMDkzLDcgQEAg
SGl0VGVzdFJlc3VsdCBFdmVudEhhbmRsZXI6OmhpdFRlc3RSZXN1bHRBdFBvaW50KGNvbnN0IExh
eW91dFBvaW50JiBwb2ludCwgYm9vbAogICAgICAgICBMYXlvdXRQb2ludCB3aWRnZXRQb2ludChy
ZXN1bHQubG9jYWxQb2ludCgpLngoKSArIHZpZXctPnNjcm9sbFgoKSAtIHJlbmRlcldpZGdldC0+
Ym9yZGVyTGVmdCgpIC0gcmVuZGVyV2lkZ2V0LT5wYWRkaW5nTGVmdCgpLCAKICAgICAgICAgICAg
IHJlc3VsdC5sb2NhbFBvaW50KCkueSgpICsgdmlldy0+c2Nyb2xsWSgpIC0gcmVuZGVyV2lkZ2V0
LT5ib3JkZXJUb3AoKSAtIHJlbmRlcldpZGdldC0+cGFkZGluZ1RvcCgpKTsKICAgICAgICAgSGl0
VGVzdFJlc3VsdCB3aWRnZXRIaXRUZXN0UmVzdWx0KHdpZGdldFBvaW50LCBwYWRkaW5nLmhlaWdo
dCgpLCBwYWRkaW5nLndpZHRoKCksIHBhZGRpbmcuaGVpZ2h0KCksIHBhZGRpbmcud2lkdGgoKSk7
CisgICAgICAgIHdpZGdldEhpdFRlc3RSZXN1bHQuc2V0T3JpZ2luYWxGcmFtZVBvaW50KHJlc3Vs
dC5vcmlnaW5hbEZyYW1lUG9pbnQoKSk7CiAgICAgICAgIGZyYW1lLT5jb250ZW50UmVuZGVyZXIo
KS0+aGl0VGVzdChIaXRUZXN0UmVxdWVzdChoaXRUeXBlKSwgd2lkZ2V0SGl0VGVzdFJlc3VsdCk7
CiAgICAgICAgIHJlc3VsdCA9IHdpZGdldEhpdFRlc3RSZXN1bHQ7CiAKQEAgLTExMTIsNyArMTEx
Myw3IEBAIEhpdFRlc3RSZXN1bHQgRXZlbnRIYW5kbGVyOjpoaXRUZXN0UmVzdWx0QXRQb2ludChj
b25zdCBMYXlvdXRQb2ludCYgcG9pbnQsIGJvb2wKICAgICAgICAgICAgIEZyYW1lVmlldyogcmVz
dWx0VmlldyA9IHJlc3VsdEZyYW1lLT52aWV3KCk7CiAgICAgICAgICAgICBGcmFtZVZpZXcqIG1h
aW5WaWV3ID0gbWFpbkZyYW1lLT52aWV3KCk7CiAgICAgICAgICAgICBpZiAocmVzdWx0VmlldyAm
JiBtYWluVmlldykgewotICAgICAgICAgICAgICAgIEludFBvaW50IG1haW5GcmFtZVBvaW50ID0g
bWFpblZpZXctPnJvb3RWaWV3VG9Db250ZW50cyhyZXN1bHRWaWV3LT5jb250ZW50c1RvUm9vdFZp
ZXcocm91bmRlZEludFBvaW50KHJlc3VsdC5wb2ludCgpKSkpOworICAgICAgICAgICAgICAgIElu
dFBvaW50IG1haW5GcmFtZVBvaW50ID0gbWFpblZpZXctPnJvb3RWaWV3VG9Db250ZW50cyhyZXN1
bHRWaWV3LT5jb250ZW50c1RvUm9vdFZpZXcocm91bmRlZEludFBvaW50KHJlc3VsdC5yZXN1bHRG
cmFtZVBvaW50KCkpKSk7CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbWFpbkZyYW1lLT5ldmVu
dEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQobWFpbkZyYW1lUG9pbnQsIGFsbG93U2hh
ZG93Q29udGVudCwgaWdub3JlQ2xpcHBpbmcsIHRlc3RTY3JvbGxiYXJzLCBoaXRUeXBlLCBwYWRk
aW5nKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0hpdFRlc3RSZXN1bHQuY3BwCmluZGV4IGNjMzkwNTY4Y2UwMjk4NmQyMGJiYjFjZmZjMTAxM2Jl
MDllZjNjYTMuLjI0ODI0MDMxN2QyNjUzYWQxMTJkMDhhM2VlZmM2OTlkOTJhNWFhZmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKQEAgLTIwNCwxMiArMjA0
LDE0IEBAIEhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQoY29uc3QgTGF5b3V0UG9pbnQmIHBv
aW50KSA6IEhpdFRlc3RMb2NhdGlvbihwb2ludCkKIAogSGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJl
c3VsdChjb25zdCBMYXlvdXRQb2ludCYgY2VudGVyUG9pbnQsIHVuc2lnbmVkIHRvcFBhZGRpbmcs
IHVuc2lnbmVkIHJpZ2h0UGFkZGluZywgdW5zaWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQg
bGVmdFBhZGRpbmcpCiAgICAgOiBIaXRUZXN0TG9jYXRpb24oY2VudGVyUG9pbnQsIHRvcFBhZGRp
bmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcpCisgICAgLCBtX29y
aWdpbmFsRnJhbWVQb2ludChwb2ludCgpKQogICAgICwgbV9pc092ZXJXaWRnZXQoZmFsc2UpCiB7
CiB9CiAKIEhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQoY29uc3QgSGl0VGVzdExvY2F0aW9u
JiBvdGhlcikKICAgICA6IEhpdFRlc3RMb2NhdGlvbihvdGhlcikKKyAgICAsIG1fb3JpZ2luYWxG
cmFtZVBvaW50KHBvaW50KCkpCiAgICAgLCBtX2lzT3ZlcldpZGdldChmYWxzZSkKIHsKIH0KQEAg
LTIxOCw2ICsyMjAsNyBAQCBIaXRUZXN0UmVzdWx0OjpIaXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRl
c3RSZXN1bHQmIG90aGVyKQogICAgIDogSGl0VGVzdExvY2F0aW9uKG90aGVyKQogICAgICwgbV9p
bm5lck5vZGUob3RoZXIuaW5uZXJOb2RlKCkpCiAgICAgLCBtX2lubmVyTm9uU2hhcmVkTm9kZShv
dGhlci5pbm5lck5vblNoYXJlZE5vZGUoKSkKKyAgICAsIG1fb3JpZ2luYWxGcmFtZVBvaW50KG90
aGVyLm9yaWdpbmFsRnJhbWVQb2ludCgpKQogICAgICwgbV9sb2NhbFBvaW50KG90aGVyLmxvY2Fs
UG9pbnQoKSkKICAgICAsIG1faW5uZXJVUkxFbGVtZW50KG90aGVyLlVSTEVsZW1lbnQoKSkKICAg
ICAsIG1fc2Nyb2xsYmFyKG90aGVyLnNjcm9sbGJhcigpKQpAQCAtMjM2LDYgKzIzOSw3IEBAIEhp
dFRlc3RSZXN1bHQmIEhpdFRlc3RSZXN1bHQ6Om9wZXJhdG9yPShjb25zdCBIaXRUZXN0UmVzdWx0
JiBvdGhlcikKICAgICBIaXRUZXN0TG9jYXRpb246Om9wZXJhdG9yPShvdGhlcik7CiAgICAgbV9p
bm5lck5vZGUgPSBvdGhlci5pbm5lck5vZGUoKTsKICAgICBtX2lubmVyTm9uU2hhcmVkTm9kZSA9
IG90aGVyLmlubmVyTm9uU2hhcmVkTm9kZSgpOworICAgIG1fb3JpZ2luYWxGcmFtZVBvaW50ID0g
b3RoZXIub3JpZ2luYWxGcmFtZVBvaW50KCk7CiAgICAgbV9sb2NhbFBvaW50ID0gb3RoZXIubG9j
YWxQb2ludCgpOwogICAgIG1faW5uZXJVUkxFbGVtZW50ID0gb3RoZXIuVVJMRWxlbWVudCgpOwog
ICAgIG1fc2Nyb2xsYmFyID0gb3RoZXIuc2Nyb2xsYmFyKCk7CkBAIC03NDYsNiArNzUwLDcgQEAg
dm9pZCBIaXRUZXN0UmVzdWx0OjphcHBlbmQoY29uc3QgSGl0VGVzdFJlc3VsdCYgb3RoZXIpCiAg
ICAgICAgIG1faW5uZXJOb2RlID0gb3RoZXIuaW5uZXJOb2RlKCk7CiAgICAgICAgIG1faW5uZXJO
b25TaGFyZWROb2RlID0gb3RoZXIuaW5uZXJOb25TaGFyZWROb2RlKCk7CiAgICAgICAgIG1fbG9j
YWxQb2ludCA9IG90aGVyLmxvY2FsUG9pbnQoKTsKKyAgICAgICAgbV9vcmlnaW5hbEZyYW1lUG9p
bnQgPSBvdGhlci5vcmlnaW5hbEZyYW1lUG9pbnQoKTsKICAgICAgICAgbV9pbm5lclVSTEVsZW1l
bnQgPSBvdGhlci5VUkxFbGVtZW50KCk7CiAgICAgICAgIG1fc2Nyb2xsYmFyID0gb3RoZXIuc2Ny
b2xsYmFyKCk7CiAgICAgICAgIG1faXNPdmVyV2lkZ2V0ID0gb3RoZXIuaXNPdmVyV2lkZ2V0KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaAppbmRleCA5MTI5ZWVkNDQx
MWEwMDA1MDMxMDlmNjE0M2IxZGI1M2RmMmYyMDBjLi42OWE3Zjg5NTAwYjAxNDQyOTc4NGYzZWM1
NDY0YzI1M2NlNjBiNzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0
VGVzdFJlc3VsdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0
LmgKQEAgLTEwMCw3ICsxMDAsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc1JlY3RpbGluZWFy
OwogfTsKIAotY2xhc3MgSGl0VGVzdFJlc3VsdCA6IHB1YmxpYyBIaXRUZXN0TG9jYXRpb24gewor
Y2xhc3MgSGl0VGVzdFJlc3VsdCA6IHByb3RlY3RlZCBIaXRUZXN0TG9jYXRpb24gewogcHVibGlj
OgogICAgIHR5cGVkZWYgTGlzdEhhc2hTZXQ8UmVmUHRyPE5vZGU+ID4gTm9kZVNldDsKIApAQCAt
MTIwLDYgKzEyMCwxMyBAQCBwdWJsaWM6CiAgICAgU2Nyb2xsYmFyKiBzY3JvbGxiYXIoKSBjb25z
dCB7IHJldHVybiBtX3Njcm9sbGJhci5nZXQoKTsgfQogICAgIGJvb2wgaXNPdmVyV2lkZ2V0KCkg
Y29uc3QgeyByZXR1cm4gbV9pc092ZXJXaWRnZXQ7IH0KIAorICAgIC8vIEZvcndhcmRpbmcgc29t
ZSBidXQgbm90IGFsbCBIaXRUZXN0TG9jYXRpb24gbWV0aG9kcy4KKyAgICBMYXlvdXRQb2ludCBy
ZXN1bHRGcmFtZVBvaW50KCkgY29uc3QgeyByZXR1cm4gSGl0VGVzdExvY2F0aW9uOjpwb2ludCgp
OyB9CisgICAgYm9vbCBpc1JlY3RCYXNlZFRlc3QoKSBjb25zdCB7IHJldHVybiBIaXRUZXN0TG9j
YXRpb246OmlzUmVjdEJhc2VkVGVzdCgpOyB9CisKKyAgICBMYXlvdXRQb2ludCBvcmlnaW5hbEZy
YW1lUG9pbnQoKSBjb25zdCB7IHJldHVybiBtX29yaWdpbmFsRnJhbWVQb2ludDsgfQorICAgIHZv
aWQgc2V0T3JpZ2luYWxGcmFtZVBvaW50KGNvbnN0IExheW91dFBvaW50JiBwKSB7IG1fb3JpZ2lu
YWxGcmFtZVBvaW50ID0gcDsgfQorCiAgICAgdm9pZCBzZXRUb05vblNoYWRvd0FuY2VzdG9yKCk7
CiAKICAgICBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGhpdFRlc3RMb2NhdGlvbigpIGNvbnN0IHsg
cmV0dXJuICp0aGlzOyB9CkBAIC0xODUsNiArMTkyLDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0
cjxOb2RlPiBtX2lubmVyTm9kZTsKICAgICBSZWZQdHI8Tm9kZT4gbV9pbm5lck5vblNoYXJlZE5v
ZGU7CisgICAgTGF5b3V0UG9pbnQgbV9vcmlnaW5hbEZyYW1lUG9pbnQ7CiAgICAgTGF5b3V0UG9p
bnQgbV9sb2NhbFBvaW50OyAvLyBBIHBvaW50IGluIHRoZSBsb2NhbCBjb29yZGluYXRlIHNwYWNl
IG9mIG1faW5uZXJOb25TaGFyZWROb2RlJ3MgcmVuZGVyZXIuIEFsbG93cyB1cyB0byBlZmZpY2ll
bnRseQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGV0ZXJtaW5lIHdoZXJlIGlu
c2lkZSB0aGUgcmVuZGVyZXIgd2UgaGl0IG9uIHN1YnNlcXVlbnQgb3BlcmF0aW9ucy4KICAgICBS
ZWZQdHI8RWxlbWVudD4gbV9pbm5lclVSTEVsZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmNwcAppbmRleCBjMDEyNzdkMTNiZDMzMTZjYWU4NmEyMTMyM2I1ZWJiMTY0
N2M5NDc2Li5lN2VkYzkxYjA2ODcwNzk2MmY3Y2ZkODMwODJmMzZhNGUzYjI2ZmRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTM0ODIsNyArMzQ4Miw3IEBA
IGJvb2wgUmVuZGVyTGF5ZXI6OmhpdFRlc3QoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYKICAgICAgICAgLy8gcmV0dXJuIG91cnNlbHZlcy4gV2Ug
ZG8gdGhpcyBzbyBtb3VzZSBldmVudHMgY29udGludWUgZ2V0dGluZyBkZWxpdmVyZWQgYWZ0ZXIg
YSBkcmFnIGhhcyAKICAgICAgICAgLy8gZXhpdGVkIHRoZSBXZWJWaWV3LCBhbmQgc28gaGl0IHRl
c3Rpbmcgb3ZlciBhIHNjcm9sbGJhciBoaXRzIHRoZSBjb250ZW50IGRvY3VtZW50LgogICAgICAg
ICBpZiAoKHJlcXVlc3QuYWN0aXZlKCkgfHwgcmVxdWVzdC5yZWxlYXNlKCkpICYmIGlzUm9vdExh
eWVyKCkpIHsKLSAgICAgICAgICAgIHJlbmRlcmVyKCktPnVwZGF0ZUhpdFRlc3RSZXN1bHQocmVz
dWx0LCB0b1JlbmRlclZpZXcocmVuZGVyZXIoKSktPmZsaXBGb3JXcml0aW5nTW9kZShyZXN1bHQu
cG9pbnQoKSkpOworICAgICAgICAgICAgcmVuZGVyZXIoKS0+dXBkYXRlSGl0VGVzdFJlc3VsdChy
ZXN1bHQsIHRvUmVuZGVyVmlldyhyZW5kZXJlcigpKS0+ZmxpcEZvcldyaXRpbmdNb2RlKGhpdFRl
c3RMb2NhdGlvbi5wb2ludCgpKSk7CiAgICAgICAgICAgICBpbnNpZGVMYXllciA9IHRoaXM7CiAg
ICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9D
aHJvbWVDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNs
aWVudEltcGwuY3BwCmluZGV4IDdlMGY4ODU0MjUyYzA0MjMxOWUxMjM0ZGQzMDkwMTgxYTU2ZmQ1
ODEuLmJmNThhZmQ4YTc2NTU1NDMzMDdkMDdlNTdiOTZmODEyYzdhM2YzOTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCkBAIC02MDQsNyAr
NjA0LDcgQEAgdm9pZCBDaHJvbWVDbGllbnRJbXBsOjptb3VzZURpZE1vdmVPdmVyRWxlbWVudCgK
ICAgICAgICAgICAgIFdpZGdldCogd2lkZ2V0ID0gdG9SZW5kZXJXaWRnZXQob2JqZWN0KS0+d2lk
Z2V0KCk7CiAgICAgICAgICAgICBpZiAod2lkZ2V0ICYmIHdpZGdldC0+aXNQbHVnaW5Db250YWlu
ZXIoKSkgewogICAgICAgICAgICAgICAgIFdlYlBsdWdpbkNvbnRhaW5lckltcGwqIHBsdWdpbiA9
IHN0YXRpY19jYXN0PFdlYlBsdWdpbkNvbnRhaW5lckltcGwqPih3aWRnZXQpOwotICAgICAgICAg
ICAgICAgIHVybCA9IHBsdWdpbi0+cGx1Z2luKCktPmxpbmtBdFBvc2l0aW9uKHJlc3VsdC5yb3Vu
ZGVkUG9pbnQoKSk7CisgICAgICAgICAgICAgICAgdXJsID0gcGx1Z2luLT5wbHVnaW4oKS0+bGlu
a0F0UG9zaXRpb24ocm91bmRlZEludFBvaW50KHJlc3VsdC5yZXN1bHRGcmFtZVBvaW50KCkpKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0NvbnRleHRNZW51Q2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9Db250ZXh0TWVudUNsaWVudEltcGwuY3BwCmluZGV4IDQwZTQxNmU0ZjQ5
N2Y2ZjFkODg0Zjg2ZjEwZTAzYTY1NTQ0ZGZiM2YuLmI2MjdjNmVhMDM2NDEyOGQ0MDlkYmE4NmNl
MTFkMDY2M2E5NWM4NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nv
bnRleHRNZW51Q2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
Q29udGV4dE1lbnVDbGllbnRJbXBsLmNwcApAQCAtMTU4LDcgKzE1OCw3IEBAIFBsYXRmb3JtTWVu
dURlc2NyaXB0aW9uIENvbnRleHRNZW51Q2xpZW50SW1wbDo6Z2V0Q3VzdG9tTWVudUZyb21EZWZh
dWx0SXRlbXMoCiAgICAgRnJhbWUqIHNlbGVjdGVkRnJhbWUgPSByLmlubmVyTm9uU2hhcmVkTm9k
ZSgpLT5kb2N1bWVudCgpLT5mcmFtZSgpOwogCiAgICAgV2ViQ29udGV4dE1lbnVEYXRhIGRhdGE7
Ci0gICAgZGF0YS5tb3VzZVBvc2l0aW9uID0gc2VsZWN0ZWRGcmFtZS0+dmlldygpLT5jb250ZW50
c1RvV2luZG93KHIucm91bmRlZFBvaW50KCkpOworICAgIGRhdGEubW91c2VQb3NpdGlvbiA9IHJv
dW5kZWRJbnRQb2ludChyLm9yaWdpbmFsRnJhbWVQb2ludCgpKTsKIAogICAgIC8vIENvbXB1dGUg
ZWRpdCBmbGFncy4KICAgICBkYXRhLmVkaXRGbGFncyA9IFdlYkNvbnRleHRNZW51RGF0YTo6Q2Fu
RG9Ob25lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKaW5k
ZXggMjVmYTNlZjRmMzEzOTQzNzE5NGU3MTUwN2E1M2I5NWYwMWQ4ODdhNS4uOWVkYTQ5NDBmNWY0
M2U3ZDM2MTY1MTgwMTA1NTkwYjIxOTgzOTM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJGcmFtZUltcGwuY3BwCkBAIC0xMjAyLDcgKzEyMDIsNyBAQCBzaXplX3QgV2ViRnJh
bWVJbXBsOjpjaGFyYWN0ZXJJbmRleEZvclBvaW50KGNvbnN0IFdlYlBvaW50JiB3ZWJQb2ludCkg
Y29uc3QKIAogICAgIEludFBvaW50IHBvaW50ID0gZnJhbWUoKS0+dmlldygpLT53aW5kb3dUb0Nv
bnRlbnRzKHdlYlBvaW50KTsKICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGZyYW1lKCktPmV2
ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChwb2ludCwgZmFsc2UpOwotICAgIFJl
ZlB0cjxSYW5nZT4gcmFuZ2UgPSBmcmFtZSgpLT5yYW5nZUZvclBvaW50KHJlc3VsdC5yb3VuZGVk
UG9pbnQoKSk7CisgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IGZyYW1lKCktPnJhbmdlRm9yUG9p
bnQocm91bmRlZEludFBvaW50KHJlc3VsdC5yZXN1bHRGcmFtZVBvaW50KCkpKTsKICAgICBpZiAo
IXJhbmdlKQogICAgICAgICByZXR1cm4gbm90Rm91bmQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRoaXR0ZXN0cmVzdWx0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXRoaXR0ZXN0cmVzdWx0LmNwcAppbmRleCAzYjZhNzdhNjcwNmRlMWE2
ZGI0ZjhjMjIxMmFkMWRlZDkwZDAwNTgzLi4yN2FhZDhkZjBlZjIyZjAyNmQyMmVkZDEzMzQ2MTM3
NzY1NDM4OGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0aGl0
dGVzdHJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGhpdHRl
c3RyZXN1bHQuY3BwCkBAIC0zMTgsOSArMzE4LDkgQEAgV2ViS2l0SGl0VGVzdFJlc3VsdCoga2l0
KGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQmIHJlc3VsdCkKICAgICB0YXJnZXRGcmFtZSA9
IHJlc3VsdC50YXJnZXRGcmFtZSgpOwogICAgIGlmICh0YXJnZXRGcmFtZSAmJiB0YXJnZXRGcmFt
ZS0+dmlldygpKSB7CiAgICAgICAgIC8vIENvbnZlcnQgZG9jdW1lbnQgY29vcmRzIHRvIHdpZGdl
dCBjb29yZHMuCi0gICAgICAgIHBvaW50ID0gdGFyZ2V0RnJhbWUtPnZpZXcoKS0+Y29udGVudHNU
b1dpbmRvdyhyZXN1bHQucm91bmRlZFBvaW50KCkpOworICAgICAgICBwb2ludCA9IHRhcmdldEZy
YW1lLT52aWV3KCktPmNvbnRlbnRzVG9XaW5kb3coV2ViQ29yZTo6cm91bmRlZEludFBvaW50KHJl
c3VsdC5yZXN1bHRGcmFtZVBvaW50KCkpKTsKICAgICB9IGVsc2UKLSAgICAgICAgcG9pbnQgPSBy
ZXN1bHQucm91bmRlZFBvaW50KCk7CisgICAgICAgIHBvaW50ID0gV2ViQ29yZTo6cm91bmRlZElu
dFBvaW50KHJlc3VsdC5vcmlnaW5hbEZyYW1lUG9pbnQoKSk7CiAKICAgICByZXR1cm4gV0VCS0lU
X0hJVF9URVNUX1JFU1VMVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfSElUX1RFU1RfUkVTVUxU
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluay11
cmkiLCBsaW5rVVJJLmdldCgpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdl
YmZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAKaW5kZXggYWRi
ZmExY2NkZTRmYTc0NTVlMGI2YmM3NWJiMTM3YTVmZjRhY2FiMy4uNWU5Nzg5NTMzZTA4NTg3MDNj
ZWI0NWYzOGRmNGUzYjQ3OTIxMGJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9BcGkv
cXdlYmZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCkBA
IC0xNjgyLDcgKzE2ODIsNyBAQCBRV2ViSGl0VGVzdFJlc3VsdFByaXZhdGU6OlFXZWJIaXRUZXN0
UmVzdWx0UHJpdmF0ZShjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0CiB7CiAgICAgaWYgKCFo
aXRUZXN0LmlubmVyTm9kZSgpKQogICAgICAgICByZXR1cm47Ci0gICAgcG9zID0gaGl0VGVzdC5y
b3VuZGVkUG9pbnQoKTsKKyAgICBwb3MgPSBXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoaGl0VGVz
dC5vcmlnaW5hbEZyYW1lUG9pbnQoKSk7CiAgICAgV2ViQ29yZTo6VGV4dERpcmVjdGlvbiBkaXI7
CiAgICAgdGl0bGUgPSBoaXRUZXN0LnRpdGxlKGRpcik7CiAgICAgbGlua1RleHQgPSBoaXRUZXN0
LnRleHRDb250ZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGFn
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKaW5kZXggNzY5N2YxYTZi
Yjc1NDRiMWZjMjU1NDEzYThkZmU5OWE4ZjgxMGI1MS4uZGQzYTFlOTIwYjg0ZTgxOTQwMjNhODVl
MTY5NjJlYjhiMTFlN2VlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcApAQCAtMTU1Myw3
ICsxNTUzLDcgQEAgSW50UG9pbnQgUVdlYlBhZ2VQcml2YXRlOjpUb3VjaEFkanVzdGVyOjpmaW5k
Q2FuZGlkYXRlUG9pbnRGb3JUb3VjaChjb25zdCBJbnRQb2kKICAgICBGcmFtZVZpZXcqIHZpZXcg
PSBkb2N1bWVudC0+ZnJhbWUoKS0+dmlldygpOwogCiAgICAgLy8gVG91Y2ggcmVjdCBpbiBjb250
ZW50cyBjb29yZGluYXRlcy4KLSAgICBJbnRSZWN0IHRvdWNoUmVjdChIaXRUZXN0UmVzdWx0Ojpy
ZWN0Rm9yUG9pbnQodmlldy0+d2luZG93VG9Db250ZW50cyhJbnRQb2ludCh4LCB5KSksIG1fdG9w
UGFkZGluZywgbV9yaWdodFBhZGRpbmcsIG1fYm90dG9tUGFkZGluZywgbV9sZWZ0UGFkZGluZykp
OworICAgIEludFJlY3QgdG91Y2hSZWN0KEhpdFRlc3RMb2NhdGlvbjo6cmVjdEZvclBvaW50KHZp
ZXctPndpbmRvd1RvQ29udGVudHMoSW50UG9pbnQoeCwgeSkpLCBtX3RvcFBhZGRpbmcsIG1fcmln
aHRQYWRkaW5nLCBtX2JvdHRvbVBhZGRpbmcsIG1fbGVmdFBhZGRpbmcpKTsKIAogICAgIC8vIEl0
ZXJhdGUgb3ZlciB0aGUgbGlzdCBvZiBub2RlcyBoaXQgbG9va2luZyBmb3IgdGhlIG9uZSB3aG9z
ZSBib3VuZGluZyBhcmVhCiAgICAgLy8gaGFzIGxhcmdlc3QgaW50ZXJzZWN0aW9uIHdpdGggdGhl
IHRvdWNoIGFyZWEgKHBvaW50ICsgcGFkZGluZykuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCmluZGV4IGE5
MGY2N2U3NTc2YTlkNjQwYWM1MDk3N2I5YjY0NjZlNGMzOGNiMWEuLjIwZmI1Yjk0ODc5NDQxOGJl
OGY0Yzc3ZGZhMmU0YWQ2ZTMyYzJjNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dl
YlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCkBAIC0xMzYxLDcg
KzEzNjEsNyBAQCBib29sIFdlYlZpZXc6OmhhbmRsZUNvbnRleHRNZW51RXZlbnQoV1BBUkFNIHdQ
YXJhbSwgTFBBUkFNIGxQYXJhbSkKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIFBPSU5UIHBvaW50KHZpZXctPmNvbnRlbnRzVG9XaW5kb3coY29udGV4dE1lbnVD
b250cm9sbGVyLT5oaXRUZXN0UmVzdWx0KCkucm91bmRlZFBvaW50KCkpKTsKKyAgICBQT0lOVCBw
b2ludCh2aWV3LT5jb250ZW50c1RvV2luZG93KHJvdW5kZWRJbnRQb2ludChjb250ZXh0TWVudUNv
bnRyb2xsZXItPmhpdFRlc3RSZXN1bHQoKS5yZXN1bHRGcmFtZVBvaW50KCkpKSk7CiAKICAgICAv
LyBUcmFuc2xhdGUgdGhlIHBvaW50IHRvIHNjcmVlbiBjb29yZGluYXRlcwogICAgIGlmICghOjpD
bGllbnRUb1NjcmVlbihtX3ZpZXdXaW5kb3csICZwb2ludCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29udGV4dE1lbnUuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvbnRleHRNZW51LmNwcAppbmRleCAzYTkxZDkw
Yjc1NWU2OGQ3ZDUzNTk3OTNhY2UwZmUzNzVhZTY4NjEwLi5kOWZmOGI4M2Y5Y2RiNzlkODY2NWY0
NjFjMjAwMGRiNTA5MjExNTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViQ29udGV4dE1lbnUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJDb250ZXh0TWVudS5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBXZWJD
b250ZXh0TWVudTo6c2hvdygpCiAKICAgICAvLyBNYXJrIHRoZSBXZWJQYWdlIGhhcyBoYXZpbmcg
YSBzaG93biBjb250ZXh0IG1lbnUgdGhlbiBub3RpZnkgdGhlIFVJUHJvY2Vzcy4KICAgICBtX3Bh
Z2UtPmNvbnRleHRNZW51U2hvd2luZygpOwotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpTaG93Q29udGV4dE1lbnUodmlldy0+Y29udGVudHNUb1dpbmRvdyhjb250cm9s
bGVyLT5oaXRUZXN0UmVzdWx0KCkucm91bmRlZFBvaW50KCkpLCB3ZWJIaXRUZXN0UmVzdWx0RGF0
YSwgcHJvcG9zZWRNZW51LCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0
YS5nZXQoKSkpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2hv
d0NvbnRleHRNZW51KHZpZXctPmNvbnRlbnRzVG9XaW5kb3cocm91bmRlZEludFBvaW50KGNvbnRy
b2xsZXItPmhpdFRlc3RSZXN1bHQoKS5yZXN1bHRGcmFtZVBvaW50KCkpKSwgd2ViSGl0VGVzdFJl
c3VsdERhdGEsIHByb3Bvc2VkTWVudSwgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIo
dXNlckRhdGEuZ2V0KCkpKSk7CiB9CiAKIHZvaWQgV2ViQ29udGV4dE1lbnU6Oml0ZW1TZWxlY3Rl
ZChjb25zdCBXZWJDb250ZXh0TWVudUl0ZW1EYXRhJiBpdGVtKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166674</attachid>
            <date>2012-10-02 05:10:23 -0700</date>
            <delta_ts>2012-10-02 06:05:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98139-20121002140921.patch</filename>
            <type>text/plain</type>
            <size>23663</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwMTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDUxNzU3Mzc2ZWE4Mjli
ZDc4NzMyMDA1NTEyZGEyOWI4Zjc3NGVkYi4uMzM3ZDI1MjMxYjIyY2Q4YWU1MTNlNTU3ODU3ODk2
M2EzNDIxN2JhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTEwLTAyICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIERp
c2FtYmlndWF0ZSByZXN1bHRGcmFtZVBvaW50IGFuZCBvcmlnaW5hbCBoaXQtdGVzdCBwb2ludAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgxMzkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTcGxpdCB0aGUg
cG9pbnQoKSBtZXRob2QgaW4gSGl0VGVzdFJlc3VsdCBpbnRvIHR3bywgcmVzdWx0RnJhbWVQb2lu
dCBhbmQgb3JpZ2luYWxGcmFtZVBvaW50KCkuCisgICAgICAgIFRvIGRvIHRoaXMgSGl0VGVzdFJl
c3VsdCBubyBsb25nZXIgaW5oZXJpdHMgcHVibGljYWxseSBmcm9tIEhpdFRlc3RMb2NhdGlvbiwg
d2hpY2ggc2hvdWxkIGFsc28KKyAgICAgICAgaGVscCB0byBsYXRlciBzZXBhcmF0ZSB0aGUgdHdv
IGNsYXNzZXMgbW9yZSBjb21wbGV0ZWx5LgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpub2Rlc0Zyb21SZWN0KToKKyAgICAgICAgKiBw
YWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmV2
ZW50TWF5U3RhcnREcmFnKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGl0VGVz
dFJlc3VsdEF0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQpOgorICAgICAg
ICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6
OkhpdFRlc3RSZXN1bHQ6OmFwcGVuZCk6CisgICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1
bHQuaDoKKyAgICAgICAgKEhpdFRlc3RSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVz
dFJlc3VsdDo6cmVzdWx0RnJhbWVQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVz
dWx0Ojppc1JlY3RCYXNlZFRlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6
b3JpZ2luYWxGcmFtZVBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OnNl
dE9yaWdpbmFsRnJhbWVQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpoaXRUZXN0KToKKwogMjAxMi0xMC0w
MiAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW1v
dmUgYW5vbnltb3VzIG5hbWVzcGFjZSBmcm9tIFN0eWxlQnVpbGRlci5jcHAgZm9yIGJldHRlciBk
ZWJ1Z2dpbmcgZXhwZXJpZW5jZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAyOGI2OWRk
N2UzMzZmYjU2YjkzNDhmNWUyMWRhZTM1NDFhNmFkMDk1Li5iOTljMjg0MDFiNjg4NzYyZDIwYzA1
MDIwN2Y3NzIxY2M0ZmM1YTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE4IEBACisyMDEyLTEwLTAyICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5A
ZGlnaWEuY29tPgorCisgICAgICAgIERpc2FtYmlndWF0ZSByZXN1bHRGcmFtZVBvaW50IGFuZCBv
cmlnaW5hbCBoaXQtdGVzdCBwb2ludAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTgxMzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6Q2hyb21lQ2xpZW50SW1wbDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQpOgorICAgICAgICAq
IHNyYy9Db250ZXh0TWVudUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpzZWxlY3RN
aXNzcGVsbGVkV29yZCk6CisgICAgICAgIChXZWJLaXQ6OkNvbnRleHRNZW51Q2xpZW50SW1wbDo6
Z2V0Q3VzdG9tTWVudUZyb21EZWZhdWx0SXRlbXMpOgorICAgICAgICAqIHNyYy9XZWJGcmFtZUlt
cGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUltcGw6OmNoYXJhY3RlckluZGV4Rm9y
UG9pbnQpOgorCiAyMDEyLTEwLTAyICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFVzZSBjb3JyZWN0IGd0ZXN0IG1hY3JvcyBmb3IgdGVzdHMgZm9yIHRy
dWUvZmFsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCBkNjJiOGVmNjFjN2IwNTBkMjM1NmYyZjU1ZmVk
Yjg4N2M5YzU4MzM4Li5iZjNhYjhiNGNhOTE1OTNhNjU5MDQ3YzMyZjM0N2M3NGRjYmU5Nzc4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMTAtMDIgIEFsbGFuIFNhbmRm
ZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CisKKyAgICAgICAgRGlzYW1iaWd1
YXRlIHJlc3VsdEZyYW1lUG9pbnQgYW5kIG9yaWdpbmFsIGhpdC10ZXN0IHBvaW50CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODEzOQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN3aXRjaCB0byB1c2luZyBv
cmlnaW5hbCBmcmFtZSBwb2ludCBzaW5jZSB4IGFuZCB5IGFyZSBkb2N1bWVudGVkIGFzIGJlaW5n
IHRoZSBwb2ludCBvZiB0aGUgaGl0IHRlc3QuCisKKyAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNw
cDoKKyAgICAgICAgKGV3a19mcmFtZV9oaXRfdGVzdF9uZXcpOgorCiAyMDEyLTEwLTAxICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdGhlIFNhZmFy
aSAyIC0+IFNhZmFyaSAzIGljb24gZGF0YWJhc2UgaW1wb3J0IGNvZGUuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
aW5kZXggN2Y3M2IzY2I0MjYzNDkzMzFkMDk1MGE0MjA3YTkxODBhZjZhODk3Yi4uYmY5N2Q1NTAy
ZDIyZDIxOTczMzUwZDMzMDBhYWNkZjk0ZDVlMzc4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEzIEBACisyMDEyLTEwLTAyICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5z
ZW5AZGlnaWEuY29tPgorCisgICAgICAgIERpc2FtYmlndWF0ZSByZXN1bHRGcmFtZVBvaW50IGFu
ZCBvcmlnaW5hbCBoaXQtdGVzdCBwb2ludAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTgxMzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIHdlYmtpdC93ZWJraXRoaXR0ZXN0cmVzdWx0LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6a2l0KToKKwogMjAxMi0xMC0wMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBh
cHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHRoZSBTYWZhcmkgMiAtPiBTYWZhcmkgMyBpY29u
IGRhdGFiYXNlIGltcG9ydCBjb2RlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDQ2ZmM5MGRjZjIxNzhj
MGRlNTQ1NThjMWE2ZjI3ZTdkNGUxOTZmNDUuLmQ3YTA3MDU1Y2YzNTE0N2RjZjgxYjcyYjQ2OGVi
NzdhOWVjNjhkNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0xMC0w
MiAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KKworICAg
ICAgICBEaXNhbWJpZ3VhdGUgcmVzdWx0RnJhbWVQb2ludCBhbmQgb3JpZ2luYWwgaGl0LXRlc3Qg
cG9pbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4
MTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbToKKyAgICAgICAgKFdlYkNvbnRl
eHRNZW51Q2xpZW50OjpzaG93Q29udGV4dE1lbnUpOgorCiAyMDEyLTEwLTAxICBCcmFkeSBFaWRz
b24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdGhlIFNhZmFyaSAyIC0+
IFNhZmFyaSAzIGljb24gZGF0YWJhc2UgaW1wb3J0IGNvZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IGU1
MzFmMmE4OGQ5NWVjNGY3MTlmY2M5OTlhNGI3ZDBhNjNiOTZhOTUuLjJlMGJjMWEwZjM5MDE3M2Zj
YzRkOWRhMmVlNjJhZTVhZjgxYzE5MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAK
KzIwMTItMTAtMDIgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5j
b20+CisKKyAgICAgICAgRGlzYW1iaWd1YXRlIHJlc3VsdEZyYW1lUG9pbnQgYW5kIG9yaWdpbmFs
IGhpdC10ZXN0IHBvaW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05ODEzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoZSBRdCBkb2N1bWVudCBzdGF0ZXMgdGhlIHBvcyBhdHRyaWJ1dGUgb2YgUVdlYkhp
dFRlc3RSZXN1bHQgaXMgdGhlIG9yaWdpbmFsIHBvc2l0aW9uLAorICAgICAgICBzbyB0aGUgY29k
ZSBub3cgdXNlcyBvcmlnaW5hbEZyYW1lUG9pbnQuCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1l
LmNwcDoKKyAgICAgICAgKFFXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZTo6UVdlYkhpdFRlc3RSZXN1
bHRQcml2YXRlKToKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBh
Z2VQcml2YXRlOjpUb3VjaEFkanVzdGVyOjpmaW5kQ2FuZGlkYXRlUG9pbnRGb3JUb3VjaCk6CisK
IDIwMTItMTAtMDEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAg
IFJlbW92ZSB0aGUgU2FmYXJpIDIgLT4gU2FmYXJpIDMgaWNvbiBkYXRhYmFzZSBpbXBvcnQgY29k
ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvd2luL0NoYW5nZUxvZwppbmRleCA2OGU4ODVhMjM5YzY5NDQ5Y2Q2ZDkyYTJiODdjMzcxMDJh
MzNkZjUxLi40NGM1MzY5ZmMxZDc3NzIxNTg2YzFiYzZiOTVlNWY5ZDIyYmFiMGIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4v
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMTAtMDIgIEFsbGFuIFNhbmRmZWxkIEpl
bnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CisKKyAgICAgICAgRGlzYW1iaWd1YXRlIHJl
c3VsdEZyYW1lUG9pbnQgYW5kIG9yaWdpbmFsIGhpdC10ZXN0IHBvaW50CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODEzOQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAg
IChXZWJWaWV3OjpoYW5kbGVDb250ZXh0TWVudUV2ZW50KToKKwogMjAxMi0xMC0wMSAgQnJhZHkg
RWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHRoZSBTYWZhcmkg
MiAtPiBTYWZhcmkgMyBpY29uIGRhdGFiYXNlIGltcG9ydCBjb2RlLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGNi
NzM3OGE0ZjY2MTA5YjJmMzhiOTRjYmIwYmIyNGM2ZTNjZWNmYzEuLmY0NmY4OWFiNGEzOWQ2MGVk
ZTQxZjQ4YTA3NmI1MTdkNGIxZGUxMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAx
Mi0xMC0wMiAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4K
KworICAgICAgICBEaXNhbWJpZ3VhdGUgcmVzdWx0RnJhbWVQb2ludCBhbmQgb3JpZ2luYWwgaGl0
LXRlc3QgcG9pbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk4MTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29udGV4dE1lbnUuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDb250ZXh0TWVudTo6c2hvdyk6CisKIDIwMTItMTAtMDEgIEJyYWR5IEVpZHNvbiAg
PGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB0aGUgU2FmYXJpIDIgLT4gU2Fm
YXJpIDMgaWNvbiBkYXRhYmFzZSBpbXBvcnQgY29kZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmlu
ZGV4IGI3OTI3NWI2YmNjZDE5NTMwMGE1MDc5ZjgyYTFkNGNhZWQ0M2ZjZjMuLjVlZjY0MTEzOTY0
NTM5NzgwNmUwZWE3MGQyODEyMGQwOGQxMWZlYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApA
QCAtMTM4OCw3ICsxMzg4LDcgQEAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gRG9jdW1lbnQ6Om5vZGVz
RnJvbVJlY3QoaW50IGNlbnRlclgsIGludCBjZW50ZXJZLCB1bnNpZ25lZAogICAgIC8vIFdoZW4g
aWdub3JlQ2xpcHBpbmcgaXMgZmFsc2UsIHRoaXMgbWV0aG9kIHJldHVybnMgbnVsbCBmb3IgY29v
cmRpbmF0ZXMgb3V0c2lkZSBvZiB0aGUgdmlld3BvcnQuCiAgICAgaWYgKGlnbm9yZUNsaXBwaW5n
KQogICAgICAgICB0eXBlIHw9IEhpdFRlc3RSZXF1ZXN0OjpJZ25vcmVDbGlwcGluZzsKLSAgICBl
bHNlIGlmICghZnJhbWVWaWV3LT52aXNpYmxlQ29udGVudFJlY3QoKS5pbnRlcnNlY3RzKEhpdFRl
c3RSZXN1bHQ6OnJlY3RGb3JQb2ludChwb2ludCwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBi
b3R0b21QYWRkaW5nLCBsZWZ0UGFkZGluZykpKQorICAgIGVsc2UgaWYgKCFmcmFtZVZpZXctPnZp
c2libGVDb250ZW50UmVjdCgpLmludGVyc2VjdHMoSGl0VGVzdExvY2F0aW9uOjpyZWN0Rm9yUG9p
bnQocG9pbnQsIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBh
ZGRpbmcpKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKGFsbG93U2hhZG93Q29udGVudCkK
ICAgICAgICAgdHlwZSB8PSBIaXRUZXN0UmVxdWVzdDo6QWxsb3dTaGFkb3dDb250ZW50OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IGZlMjMzMGVhMmRmZTQ2MjZlN2FjODBk
ODM1MWY2OTFmYjY4NjEzZTkuLjI2YjU0NzU1M2Q4ZjQ2ZWNlMjNhZTBiOTQwZDc2ODEyMzdmYmFh
YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTc1OCw3ICs3NTgsNyBA
QCBib29sIEV2ZW50SGFuZGxlcjo6ZXZlbnRNYXlTdGFydERyYWcoY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50JiBldmVudCkgY29uc3QKICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCh2aWV3LT53aW5k
b3dUb0NvbnRlbnRzKGV2ZW50LnBvc2l0aW9uKCkpKTsKICAgICBtX2ZyYW1lLT5jb250ZW50UmVu
ZGVyZXIoKS0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOwogICAgIERyYWdTdGF0ZSBzdGF0ZTsK
LSAgICByZXR1cm4gcmVzdWx0LmlubmVyTm9kZSgpICYmIHBhZ2UtPmRyYWdDb250cm9sbGVyKCkt
PmRyYWdnYWJsZU5vZGUobV9mcmFtZSwgcmVzdWx0LmlubmVyTm9kZSgpLCByb3VuZGVkSW50UG9p
bnQocmVzdWx0LnBvaW50KCkpLCBzdGF0ZSk7CisgICAgcmV0dXJuIHJlc3VsdC5pbm5lck5vZGUo
KSAmJiBwYWdlLT5kcmFnQ29udHJvbGxlcigpLT5kcmFnZ2FibGVOb2RlKG1fZnJhbWUsIHJlc3Vs
dC5pbm5lck5vZGUoKSwgcm91bmRlZEludFBvaW50KHJlc3VsdC5vcmlnaW5hbEZyYW1lUG9pbnQo
KSksIHN0YXRlKTsKIH0KIAogdm9pZCBFdmVudEhhbmRsZXI6OnVwZGF0ZVNlbGVjdGlvbkZvck1v
dXNlRHJhZygpCkBAIC0xMDkzLDYgKzEwOTMsNyBAQCBIaXRUZXN0UmVzdWx0IEV2ZW50SGFuZGxl
cjo6aGl0VGVzdFJlc3VsdEF0UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBib29sCiAg
ICAgICAgIExheW91dFBvaW50IHdpZGdldFBvaW50KHJlc3VsdC5sb2NhbFBvaW50KCkueCgpICsg
dmlldy0+c2Nyb2xsWCgpIC0gcmVuZGVyV2lkZ2V0LT5ib3JkZXJMZWZ0KCkgLSByZW5kZXJXaWRn
ZXQtPnBhZGRpbmdMZWZ0KCksIAogICAgICAgICAgICAgcmVzdWx0LmxvY2FsUG9pbnQoKS55KCkg
KyB2aWV3LT5zY3JvbGxZKCkgLSByZW5kZXJXaWRnZXQtPmJvcmRlclRvcCgpIC0gcmVuZGVyV2lk
Z2V0LT5wYWRkaW5nVG9wKCkpOwogICAgICAgICBIaXRUZXN0UmVzdWx0IHdpZGdldEhpdFRlc3RS
ZXN1bHQod2lkZ2V0UG9pbnQsIHBhZGRpbmcuaGVpZ2h0KCksIHBhZGRpbmcud2lkdGgoKSwgcGFk
ZGluZy5oZWlnaHQoKSwgcGFkZGluZy53aWR0aCgpKTsKKyAgICAgICAgd2lkZ2V0SGl0VGVzdFJl
c3VsdC5zZXRPcmlnaW5hbEZyYW1lUG9pbnQocmVzdWx0Lm9yaWdpbmFsRnJhbWVQb2ludCgpKTsK
ICAgICAgICAgZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpLT5oaXRUZXN0KEhpdFRlc3RSZXF1ZXN0
KGhpdFR5cGUpLCB3aWRnZXRIaXRUZXN0UmVzdWx0KTsKICAgICAgICAgcmVzdWx0ID0gd2lkZ2V0
SGl0VGVzdFJlc3VsdDsKIApAQCAtMTExMiw3ICsxMTEzLDcgQEAgSGl0VGVzdFJlc3VsdCBFdmVu
dEhhbmRsZXI6OmhpdFRlc3RSZXN1bHRBdFBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCwg
Ym9vbAogICAgICAgICAgICAgRnJhbWVWaWV3KiByZXN1bHRWaWV3ID0gcmVzdWx0RnJhbWUtPnZp
ZXcoKTsKICAgICAgICAgICAgIEZyYW1lVmlldyogbWFpblZpZXcgPSBtYWluRnJhbWUtPnZpZXco
KTsKICAgICAgICAgICAgIGlmIChyZXN1bHRWaWV3ICYmIG1haW5WaWV3KSB7Ci0gICAgICAgICAg
ICAgICAgSW50UG9pbnQgbWFpbkZyYW1lUG9pbnQgPSBtYWluVmlldy0+cm9vdFZpZXdUb0NvbnRl
bnRzKHJlc3VsdFZpZXctPmNvbnRlbnRzVG9Sb290Vmlldyhyb3VuZGVkSW50UG9pbnQocmVzdWx0
LnBvaW50KCkpKSk7CisgICAgICAgICAgICAgICAgSW50UG9pbnQgbWFpbkZyYW1lUG9pbnQgPSBt
YWluVmlldy0+cm9vdFZpZXdUb0NvbnRlbnRzKHJlc3VsdFZpZXctPmNvbnRlbnRzVG9Sb290Vmll
dyhyb3VuZGVkSW50UG9pbnQocmVzdWx0LnJlc3VsdEZyYW1lUG9pbnQoKSkpKTsKICAgICAgICAg
ICAgICAgICByZXN1bHQgPSBtYWluRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0
QXRQb2ludChtYWluRnJhbWVQb2ludCwgYWxsb3dTaGFkb3dDb250ZW50LCBpZ25vcmVDbGlwcGlu
ZywgdGVzdFNjcm9sbGJhcnMsIGhpdFR5cGUsIHBhZGRpbmcpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3Vs
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKaW5kZXgg
Y2MzOTA1NjhjZTAyOTg2ZDIwYmJiMWNmZmMxMDEzYmUwOWVmM2NhMy4uMjQ4MjQwMzE3ZDI2NTNh
ZDExMmQwOGEzZWVmYzY5OWQ5MmE1YWFmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9I
aXRUZXN0UmVzdWx0LmNwcApAQCAtMjA0LDEyICsyMDQsMTQgQEAgSGl0VGVzdFJlc3VsdDo6SGl0
VGVzdFJlc3VsdChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQpIDogSGl0VGVzdExvY2F0aW9uKHBv
aW50KQogCiBIaXRUZXN0UmVzdWx0OjpIaXRUZXN0UmVzdWx0KGNvbnN0IExheW91dFBvaW50JiBj
ZW50ZXJQb2ludCwgdW5zaWduZWQgdG9wUGFkZGluZywgdW5zaWduZWQgcmlnaHRQYWRkaW5nLCB1
bnNpZ25lZCBib3R0b21QYWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGluZykKICAgICA6IEhpdFRl
c3RMb2NhdGlvbihjZW50ZXJQb2ludCwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21Q
YWRkaW5nLCBsZWZ0UGFkZGluZykKKyAgICAsIG1fb3JpZ2luYWxGcmFtZVBvaW50KHBvaW50KCkp
CiAgICAgLCBtX2lzT3ZlcldpZGdldChmYWxzZSkKIHsKIH0KIAogSGl0VGVzdFJlc3VsdDo6SGl0
VGVzdFJlc3VsdChjb25zdCBIaXRUZXN0TG9jYXRpb24mIG90aGVyKQogICAgIDogSGl0VGVzdExv
Y2F0aW9uKG90aGVyKQorICAgICwgbV9vcmlnaW5hbEZyYW1lUG9pbnQocG9pbnQoKSkKICAgICAs
IG1faXNPdmVyV2lkZ2V0KGZhbHNlKQogewogfQpAQCAtMjE4LDYgKzIyMCw3IEBAIEhpdFRlc3RS
ZXN1bHQ6OkhpdFRlc3RSZXN1bHQoY29uc3QgSGl0VGVzdFJlc3VsdCYgb3RoZXIpCiAgICAgOiBI
aXRUZXN0TG9jYXRpb24ob3RoZXIpCiAgICAgLCBtX2lubmVyTm9kZShvdGhlci5pbm5lck5vZGUo
KSkKICAgICAsIG1faW5uZXJOb25TaGFyZWROb2RlKG90aGVyLmlubmVyTm9uU2hhcmVkTm9kZSgp
KQorICAgICwgbV9vcmlnaW5hbEZyYW1lUG9pbnQob3RoZXIub3JpZ2luYWxGcmFtZVBvaW50KCkp
CiAgICAgLCBtX2xvY2FsUG9pbnQob3RoZXIubG9jYWxQb2ludCgpKQogICAgICwgbV9pbm5lclVS
TEVsZW1lbnQob3RoZXIuVVJMRWxlbWVudCgpKQogICAgICwgbV9zY3JvbGxiYXIob3RoZXIuc2Ny
b2xsYmFyKCkpCkBAIC0yMzYsNiArMjM5LDcgQEAgSGl0VGVzdFJlc3VsdCYgSGl0VGVzdFJlc3Vs
dDo6b3BlcmF0b3I9KGNvbnN0IEhpdFRlc3RSZXN1bHQmIG90aGVyKQogICAgIEhpdFRlc3RMb2Nh
dGlvbjo6b3BlcmF0b3I9KG90aGVyKTsKICAgICBtX2lubmVyTm9kZSA9IG90aGVyLmlubmVyTm9k
ZSgpOwogICAgIG1faW5uZXJOb25TaGFyZWROb2RlID0gb3RoZXIuaW5uZXJOb25TaGFyZWROb2Rl
KCk7CisgICAgbV9vcmlnaW5hbEZyYW1lUG9pbnQgPSBvdGhlci5vcmlnaW5hbEZyYW1lUG9pbnQo
KTsKICAgICBtX2xvY2FsUG9pbnQgPSBvdGhlci5sb2NhbFBvaW50KCk7CiAgICAgbV9pbm5lclVS
TEVsZW1lbnQgPSBvdGhlci5VUkxFbGVtZW50KCk7CiAgICAgbV9zY3JvbGxiYXIgPSBvdGhlci5z
Y3JvbGxiYXIoKTsKQEAgLTc0Niw2ICs3NTAsNyBAQCB2b2lkIEhpdFRlc3RSZXN1bHQ6OmFwcGVu
ZChjb25zdCBIaXRUZXN0UmVzdWx0JiBvdGhlcikKICAgICAgICAgbV9pbm5lck5vZGUgPSBvdGhl
ci5pbm5lck5vZGUoKTsKICAgICAgICAgbV9pbm5lck5vblNoYXJlZE5vZGUgPSBvdGhlci5pbm5l
ck5vblNoYXJlZE5vZGUoKTsKICAgICAgICAgbV9sb2NhbFBvaW50ID0gb3RoZXIubG9jYWxQb2lu
dCgpOworICAgICAgICBtX29yaWdpbmFsRnJhbWVQb2ludCA9IG90aGVyLm9yaWdpbmFsRnJhbWVQ
b2ludCgpOwogICAgICAgICBtX2lubmVyVVJMRWxlbWVudCA9IG90aGVyLlVSTEVsZW1lbnQoKTsK
ICAgICAgICAgbV9zY3JvbGxiYXIgPSBvdGhlci5zY3JvbGxiYXIoKTsKICAgICAgICAgbV9pc092
ZXJXaWRnZXQgPSBvdGhlci5pc092ZXJXaWRnZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SGl0VGVzdFJlc3VsdC5oCmluZGV4IDkxMjllZWQ0NDExYTAwMDUwMzEwOWY2MTQzYjFkYjUzZGYy
ZjIwMGMuLjY5YTdmODk1MDBiMDE0NDI5Nzg0ZjNlYzU0NjRjMjUzY2U2MGI3OGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaApAQCAtMTAwLDcgKzEwMCw3IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBtX2lzUmVjdGlsaW5lYXI7CiB9OwogCi1jbGFzcyBIaXRUZXN0UmVz
dWx0IDogcHVibGljIEhpdFRlc3RMb2NhdGlvbiB7CitjbGFzcyBIaXRUZXN0UmVzdWx0IDogcHJv
dGVjdGVkIEhpdFRlc3RMb2NhdGlvbiB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBMaXN0SGFzaFNl
dDxSZWZQdHI8Tm9kZT4gPiBOb2RlU2V0OwogCkBAIC0xMjAsNiArMTIwLDEzIEBAIHB1YmxpYzoK
ICAgICBTY3JvbGxiYXIqIHNjcm9sbGJhcigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYmFyLmdl
dCgpOyB9CiAgICAgYm9vbCBpc092ZXJXaWRnZXQoKSBjb25zdCB7IHJldHVybiBtX2lzT3Zlcldp
ZGdldDsgfQogCisgICAgLy8gRm9yd2FyZGluZyBzb21lIGJ1dCBub3QgYWxsIEhpdFRlc3RMb2Nh
dGlvbiBtZXRob2RzLgorICAgIExheW91dFBvaW50IHJlc3VsdEZyYW1lUG9pbnQoKSBjb25zdCB7
IHJldHVybiBIaXRUZXN0TG9jYXRpb246OnBvaW50KCk7IH0KKyAgICBib29sIGlzUmVjdEJhc2Vk
VGVzdCgpIGNvbnN0IHsgcmV0dXJuIEhpdFRlc3RMb2NhdGlvbjo6aXNSZWN0QmFzZWRUZXN0KCk7
IH0KKworICAgIExheW91dFBvaW50IG9yaWdpbmFsRnJhbWVQb2ludCgpIGNvbnN0IHsgcmV0dXJu
IG1fb3JpZ2luYWxGcmFtZVBvaW50OyB9CisgICAgdm9pZCBzZXRPcmlnaW5hbEZyYW1lUG9pbnQo
Y29uc3QgTGF5b3V0UG9pbnQmIHApIHsgbV9vcmlnaW5hbEZyYW1lUG9pbnQgPSBwOyB9CisKICAg
ICB2b2lkIHNldFRvTm9uU2hhZG93QW5jZXN0b3IoKTsKIAogICAgIGNvbnN0IEhpdFRlc3RMb2Nh
dGlvbiYgaGl0VGVzdExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KQEAgLTE4NSw2
ICsxOTIsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPE5vZGU+IG1faW5uZXJOb2RlOwogICAg
IFJlZlB0cjxOb2RlPiBtX2lubmVyTm9uU2hhcmVkTm9kZTsKKyAgICBMYXlvdXRQb2ludCBtX29y
aWdpbmFsRnJhbWVQb2ludDsKICAgICBMYXlvdXRQb2ludCBtX2xvY2FsUG9pbnQ7IC8vIEEgcG9p
bnQgaW4gdGhlIGxvY2FsIGNvb3JkaW5hdGUgc3BhY2Ugb2YgbV9pbm5lck5vblNoYXJlZE5vZGUn
cyByZW5kZXJlci4gQWxsb3dzIHVzIHRvIGVmZmljaWVudGx5CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBkZXRlcm1pbmUgd2hlcmUgaW5zaWRlIHRoZSByZW5kZXJlciB3ZSBoaXQg
b24gc3Vic2VxdWVudCBvcGVyYXRpb25zLgogICAgIFJlZlB0cjxFbGVtZW50PiBtX2lubmVyVVJM
RWxlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IGMw
MTI3N2QxM2JkMzMxNmNhZTg2YTIxMzIzYjVlYmIxNjQ3Yzk0NzYuLmU3ZWRjOTFiMDY4NzA3OTYy
ZjdjZmQ4MzA4MmYzNmE0ZTNiMjZmZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmNwcApAQCAtMzQ4Miw3ICszNDgyLDcgQEAgYm9vbCBSZW5kZXJMYXllcjo6aGl0VGVz
dChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgSGl0VGVzdExvY2F0aW9uJgog
ICAgICAgICAvLyByZXR1cm4gb3Vyc2VsdmVzLiBXZSBkbyB0aGlzIHNvIG1vdXNlIGV2ZW50cyBj
b250aW51ZSBnZXR0aW5nIGRlbGl2ZXJlZCBhZnRlciBhIGRyYWcgaGFzIAogICAgICAgICAvLyBl
eGl0ZWQgdGhlIFdlYlZpZXcsIGFuZCBzbyBoaXQgdGVzdGluZyBvdmVyIGEgc2Nyb2xsYmFyIGhp
dHMgdGhlIGNvbnRlbnQgZG9jdW1lbnQuCiAgICAgICAgIGlmICgocmVxdWVzdC5hY3RpdmUoKSB8
fCByZXF1ZXN0LnJlbGVhc2UoKSkgJiYgaXNSb290TGF5ZXIoKSkgewotICAgICAgICAgICAgcmVu
ZGVyZXIoKS0+dXBkYXRlSGl0VGVzdFJlc3VsdChyZXN1bHQsIHRvUmVuZGVyVmlldyhyZW5kZXJl
cigpKS0+ZmxpcEZvcldyaXRpbmdNb2RlKHJlc3VsdC5wb2ludCgpKSk7CisgICAgICAgICAgICBy
ZW5kZXJlcigpLT51cGRhdGVIaXRUZXN0UmVzdWx0KHJlc3VsdCwgdG9SZW5kZXJWaWV3KHJlbmRl
cmVyKCkpLT5mbGlwRm9yV3JpdGluZ01vZGUoaGl0VGVzdExvY2F0aW9uLnBvaW50KCkpKTsKICAg
ICAgICAgICAgIGluc2lkZUxheWVyID0gdGhpczsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKaW5kZXggN2UwZjg4
NTQyNTJjMDQyMzE5ZTEyMzRkZDMwOTAxODFhNTZmZDU4MS4uYmY1OGFmZDhhNzY1NTU0MzMwN2Qw
N2U1N2I5NmY4MTJjN2EzZjM5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
Q2hyb21lQ2xpZW50SW1wbC5jcHAKQEAgLTYwNCw3ICs2MDQsNyBAQCB2b2lkIENocm9tZUNsaWVu
dEltcGw6Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KAogICAgICAgICAgICAgV2lkZ2V0KiB3aWRn
ZXQgPSB0b1JlbmRlcldpZGdldChvYmplY3QpLT53aWRnZXQoKTsKICAgICAgICAgICAgIGlmICh3
aWRnZXQgJiYgd2lkZ2V0LT5pc1BsdWdpbkNvbnRhaW5lcigpKSB7CiAgICAgICAgICAgICAgICAg
V2ViUGx1Z2luQ29udGFpbmVySW1wbCogcGx1Z2luID0gc3RhdGljX2Nhc3Q8V2ViUGx1Z2luQ29u
dGFpbmVySW1wbCo+KHdpZGdldCk7Ci0gICAgICAgICAgICAgICAgdXJsID0gcGx1Z2luLT5wbHVn
aW4oKS0+bGlua0F0UG9zaXRpb24ocmVzdWx0LnJvdW5kZWRQb2ludCgpKTsKKyAgICAgICAgICAg
ICAgICB1cmwgPSBwbHVnaW4tPnBsdWdpbigpLT5saW5rQXRQb3NpdGlvbihyb3VuZGVkSW50UG9p
bnQocmVzdWx0LnJlc3VsdEZyYW1lUG9pbnQoKSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ29udGV4dE1l
bnVDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0NvbnRleHRNZW51
Q2xpZW50SW1wbC5jcHAKaW5kZXggNDBlNDE2ZTRmNDk3ZjZmMWQ4ODRmODZmMTBlMDNhNjU1NDRk
ZmIzZi4uNTgxMTM4NzUyODY1ZjFkMzVhODc4MzYyNmYyZGE5ZWUxYzBjNDU5OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ29udGV4dE1lbnVDbGllbnRJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Db250ZXh0TWVudUNsaWVudEltcGwuY3Bw
CkBAIC0xMjAsNyArMTIwLDcgQEAgc3RhdGljIFN0cmluZyBzZWxlY3RNaXNzcGVsbGVkV29yZChj
b25zdCBDb250ZXh0TWVudSogZGVmYXVsdE1lbnUsIEZyYW1lKiBzZWxlY3QKIAogICAgIC8vIFNl
bGVjdGlvbiBpcyBlbXB0eSwgc28gY2hhbmdlIHRoZSBzZWxlY3Rpb24gdG8gdGhlIHdvcmQgdW5k
ZXIgdGhlIGN1cnNvci4KICAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3RSZXN1bHQgPSBzZWxlY3Rl
ZEZyYW1lLT5ldmVudEhhbmRsZXIoKS0+Ci0gICAgICAgIGhpdFRlc3RSZXN1bHRBdFBvaW50KHNl
bGVjdGVkRnJhbWUtPnBhZ2UoKS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCktPmhpdFRlc3RSZXN1
bHQoKS5wb2ludCgpLCB0cnVlKTsKKyAgICAgICAgaGl0VGVzdFJlc3VsdEF0UG9pbnQoc2VsZWN0
ZWRGcmFtZS0+cGFnZSgpLT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKS0+aGl0VGVzdFJlc3VsdCgp
Lm9yaWdpbmFsRnJhbWVQb2ludCgpLCB0cnVlKTsKICAgICBOb2RlKiBpbm5lck5vZGUgPSBoaXRU
ZXN0UmVzdWx0LmlubmVyTm9kZSgpOwogICAgIFZpc2libGVQb3NpdGlvbiBwb3MoaW5uZXJOb2Rl
LT5yZW5kZXJlcigpLT5wb3NpdGlvbkZvclBvaW50KAogICAgICAgICBoaXRUZXN0UmVzdWx0Lmxv
Y2FsUG9pbnQoKSkpOwpAQCAtMTU4LDcgKzE1OCw3IEBAIFBsYXRmb3JtTWVudURlc2NyaXB0aW9u
IENvbnRleHRNZW51Q2xpZW50SW1wbDo6Z2V0Q3VzdG9tTWVudUZyb21EZWZhdWx0SXRlbXMoCiAg
ICAgRnJhbWUqIHNlbGVjdGVkRnJhbWUgPSByLmlubmVyTm9uU2hhcmVkTm9kZSgpLT5kb2N1bWVu
dCgpLT5mcmFtZSgpOwogCiAgICAgV2ViQ29udGV4dE1lbnVEYXRhIGRhdGE7Ci0gICAgZGF0YS5t
b3VzZVBvc2l0aW9uID0gc2VsZWN0ZWRGcmFtZS0+dmlldygpLT5jb250ZW50c1RvV2luZG93KHIu
cm91bmRlZFBvaW50KCkpOworICAgIGRhdGEubW91c2VQb3NpdGlvbiA9IHJvdW5kZWRJbnRQb2lu
dChyLm9yaWdpbmFsRnJhbWVQb2ludCgpKTsKIAogICAgIC8vIENvbXB1dGUgZWRpdCBmbGFncy4K
ICAgICBkYXRhLmVkaXRGbGFncyA9IFdlYkNvbnRleHRNZW51RGF0YTo6Q2FuRG9Ob25lOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKaW5kZXggMjVmYTNlZjRm
MzEzOTQzNzE5NGU3MTUwN2E1M2I5NWYwMWQ4ODdhNS4uOWVkYTQ5NDBmNWY0M2U3ZDM2MTY1MTgw
MTA1NTkwYjIxOTgzOTM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViRnJhbWVJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFt
ZUltcGwuY3BwCkBAIC0xMjAyLDcgKzEyMDIsNyBAQCBzaXplX3QgV2ViRnJhbWVJbXBsOjpjaGFy
YWN0ZXJJbmRleEZvclBvaW50KGNvbnN0IFdlYlBvaW50JiB3ZWJQb2ludCkgY29uc3QKIAogICAg
IEludFBvaW50IHBvaW50ID0gZnJhbWUoKS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHdlYlBv
aW50KTsKICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGZyYW1lKCktPmV2ZW50SGFuZGxlcigp
LT5oaXRUZXN0UmVzdWx0QXRQb2ludChwb2ludCwgZmFsc2UpOwotICAgIFJlZlB0cjxSYW5nZT4g
cmFuZ2UgPSBmcmFtZSgpLT5yYW5nZUZvclBvaW50KHJlc3VsdC5yb3VuZGVkUG9pbnQoKSk7Cisg
ICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IGZyYW1lKCktPnJhbmdlRm9yUG9pbnQocm91bmRlZElu
dFBvaW50KHJlc3VsdC5yZXN1bHRGcmFtZVBvaW50KCkpKTsKICAgICBpZiAoIXJhbmdlKQogICAg
ICAgICByZXR1cm4gbm90Rm91bmQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfZnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAKaW5k
ZXggNTQ2ZWVhNTEyMzY5MDBlODY1ZWNlMzFmNWMxZmQwMDVhZjZiZjM0Zi4uZDM4MmI4MWYxODg1
NTQyM2I2MDcxNGM3YTI2MjVkZjMyMjAwMjEyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a19mcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFt
ZS5jcHAKQEAgLTcwMiw4ICs3MDIsOCBAQCBFd2tfSGl0X1Rlc3QqIGV3a19mcmFtZV9oaXRfdGVz
dF9uZXcoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBpbnQgeCwgaW50IHkpCiAgICAgICAg
IHJldHVybiAwOwogCiAgICAgRXdrX0hpdF9UZXN0KiBoaXRUZXN0ID0gbmV3IEV3a19IaXRfVGVz
dDsKLSAgICBoaXRUZXN0LT54ID0gcmVzdWx0LnBvaW50KCkueCgpOwotICAgIGhpdFRlc3QtPnkg
PSByZXN1bHQucG9pbnQoKS55KCk7CisgICAgaGl0VGVzdC0+eCA9IHJlc3VsdC5vcmlnaW5hbEZy
YW1lUG9pbnQoKS54KCk7CisgICAgaGl0VGVzdC0+eSA9IHJlc3VsdC5vcmlnaW5hbEZyYW1lUG9p
bnQoKS55KCk7CiAjaWYgMAogICAgIC8vIEZJWE1FCiAgICAgaGl0VGVzdC0+Ym91bmRpbmdfYm94
LnggPSByZXN1bHQuYm91bmRpbmdCb3goKS54KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0aGl0dGVzdHJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0aGl0dGVzdHJlc3VsdC5jcHAKaW5kZXggM2I2YTc3YTY3MDZkZTFhNmRiNGY4
YzIyMTJhZDFkZWQ5MGQwMDU4My4uMjdhYWQ4ZGYwZWYyMmYwMjZkMjJlZGQxMzM0NjEzNzc2NTQz
ODhhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGhpdHRlc3Ry
ZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRoaXR0ZXN0cmVz
dWx0LmNwcApAQCAtMzE4LDkgKzMxOCw5IEBAIFdlYktpdEhpdFRlc3RSZXN1bHQqIGtpdChjb25z
dCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0JiByZXN1bHQpCiAgICAgdGFyZ2V0RnJhbWUgPSByZXN1
bHQudGFyZ2V0RnJhbWUoKTsKICAgICBpZiAodGFyZ2V0RnJhbWUgJiYgdGFyZ2V0RnJhbWUtPnZp
ZXcoKSkgewogICAgICAgICAvLyBDb252ZXJ0IGRvY3VtZW50IGNvb3JkcyB0byB3aWRnZXQgY29v
cmRzLgotICAgICAgICBwb2ludCA9IHRhcmdldEZyYW1lLT52aWV3KCktPmNvbnRlbnRzVG9XaW5k
b3cocmVzdWx0LnJvdW5kZWRQb2ludCgpKTsKKyAgICAgICAgcG9pbnQgPSB0YXJnZXRGcmFtZS0+
dmlldygpLT5jb250ZW50c1RvV2luZG93KFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChyZXN1bHQu
cmVzdWx0RnJhbWVQb2ludCgpKSk7CiAgICAgfSBlbHNlCi0gICAgICAgIHBvaW50ID0gcmVzdWx0
LnJvdW5kZWRQb2ludCgpOworICAgICAgICBwb2ludCA9IFdlYkNvcmU6OnJvdW5kZWRJbnRQb2lu
dChyZXN1bHQub3JpZ2luYWxGcmFtZVBvaW50KCkpOwogCiAgICAgcmV0dXJuIFdFQktJVF9ISVRf
VEVTVF9SRVNVTFQoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0hJVF9URVNUX1JFU1VMVCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmstdXJpIiwg
bGlua1VSSS5nZXQoKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0KaW5kZXggZTMxMzEzNjAzNmY3OGQ2MDE3MjMw
NjkyZWQ4YzY3OTA4ZTlkNDNlMC4uMTBhMDY2OTZiMWY0MWNjZDY3NTY3MTdmMzFlYzM0OWFmMTM1
MzYwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29u
dGV4dE1lbnVDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViQ29udGV4dE1lbnVDbGllbnQubW0KQEAgLTM2Niw3ICszNjYsNyBAQCB2b2lkIFdlYkNvbnRl
eHRNZW51Q2xpZW50OjpzaG93Q29udGV4dE1lbnUoKQogICAgIGlmICghZnJhbWVWaWV3KQogICAg
ICAgICByZXR1cm47CiAKLSAgICBJbnRQb2ludCBwb2ludCA9IGZyYW1lVmlldy0+Y29udGVudHNU
b1dpbmRvdyhjb250cm9sbGVyLT5oaXRUZXN0UmVzdWx0KCkucm91bmRlZFBvaW50KCkpOworICAg
IEludFBvaW50IHBvaW50ID0gZnJhbWVWaWV3LT5jb250ZW50c1RvV2luZG93KHJvdW5kZWRJbnRQ
b2ludChjb250cm9sbGVyLT5oaXRUZXN0UmVzdWx0KCkucmVzdWx0RnJhbWVQb2ludCgpKSk7CiAg
ICAgTlNWaWV3KiB2aWV3ID0gZnJhbWVWaWV3LT5kb2N1bWVudFZpZXcoKTsKICAgICBOU1BvaW50
IG5zU2NyZWVuUG9pbnQgPSBbdmlldyBjb252ZXJ0UG9pbnQ6cG9pbnQgdG9WaWV3Om5pbF07CiAg
ICAgLy8gU2hvdyB0aGUgY29udGV4dHVhbCBtZW51IGZvciB0aGlzIGV2ZW50LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQv
QXBpL3F3ZWJmcmFtZS5jcHAKaW5kZXggYWRiZmExY2NkZTRmYTc0NTVlMGI2YmM3NWJiMTM3YTVm
ZjRhY2FiMy4uNWU5Nzg5NTMzZTA4NTg3MDNjZWI0NWYzOGRmNGUzYjQ3OTIxMGJhNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCkBAIC0xNjgyLDcgKzE2ODIsNyBAQCBRV2ViSGl0VGVz
dFJlc3VsdFByaXZhdGU6OlFXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZShjb25zdCBXZWJDb3JlOjpI
aXRUZXN0UmVzdWx0CiB7CiAgICAgaWYgKCFoaXRUZXN0LmlubmVyTm9kZSgpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgcG9zID0gaGl0VGVzdC5yb3VuZGVkUG9pbnQoKTsKKyAgICBwb3MgPSBXZWJD
b3JlOjpyb3VuZGVkSW50UG9pbnQoaGl0VGVzdC5vcmlnaW5hbEZyYW1lUG9pbnQoKSk7CiAgICAg
V2ViQ29yZTo6VGV4dERpcmVjdGlvbiBkaXI7CiAgICAgdGl0bGUgPSBoaXRUZXN0LnRpdGxlKGRp
cik7CiAgICAgbGlua1RleHQgPSBoaXRUZXN0LnRleHRDb250ZW50KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9x
d2VicGFnZS5jcHAKaW5kZXggNzY5N2YxYTZiYjc1NDRiMWZjMjU1NDEzYThkZmU5OWE4ZjgxMGI1
MS4uZGQzYTFlOTIwYjg0ZTgxOTQwMjNhODVlMTY5NjJlYjhiMTFlN2VlZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQv
QXBpL3F3ZWJwYWdlLmNwcApAQCAtMTU1Myw3ICsxNTUzLDcgQEAgSW50UG9pbnQgUVdlYlBhZ2VQ
cml2YXRlOjpUb3VjaEFkanVzdGVyOjpmaW5kQ2FuZGlkYXRlUG9pbnRGb3JUb3VjaChjb25zdCBJ
bnRQb2kKICAgICBGcmFtZVZpZXcqIHZpZXcgPSBkb2N1bWVudC0+ZnJhbWUoKS0+dmlldygpOwog
CiAgICAgLy8gVG91Y2ggcmVjdCBpbiBjb250ZW50cyBjb29yZGluYXRlcy4KLSAgICBJbnRSZWN0
IHRvdWNoUmVjdChIaXRUZXN0UmVzdWx0OjpyZWN0Rm9yUG9pbnQodmlldy0+d2luZG93VG9Db250
ZW50cyhJbnRQb2ludCh4LCB5KSksIG1fdG9wUGFkZGluZywgbV9yaWdodFBhZGRpbmcsIG1fYm90
dG9tUGFkZGluZywgbV9sZWZ0UGFkZGluZykpOworICAgIEludFJlY3QgdG91Y2hSZWN0KEhpdFRl
c3RMb2NhdGlvbjo6cmVjdEZvclBvaW50KHZpZXctPndpbmRvd1RvQ29udGVudHMoSW50UG9pbnQo
eCwgeSkpLCBtX3RvcFBhZGRpbmcsIG1fcmlnaHRQYWRkaW5nLCBtX2JvdHRvbVBhZGRpbmcsIG1f
bGVmdFBhZGRpbmcpKTsKIAogICAgIC8vIEl0ZXJhdGUgb3ZlciB0aGUgbGlzdCBvZiBub2RlcyBo
aXQgbG9va2luZyBmb3IgdGhlIG9uZSB3aG9zZSBib3VuZGluZyBhcmVhCiAgICAgLy8gaGFzIGxh
cmdlc3QgaW50ZXJzZWN0aW9uIHdpdGggdGhlIHRvdWNoIGFyZWEgKHBvaW50ICsgcGFkZGluZyku
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJL
aXQvd2luL1dlYlZpZXcuY3BwCmluZGV4IGE5MGY2N2U3NTc2YTlkNjQwYWM1MDk3N2I5YjY0NjZl
NGMzOGNiMWEuLjIwZmI1Yjk0ODc5NDQxOGJlOGY0Yzc3ZGZhMmU0YWQ2ZTMyYzJjNDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
d2luL1dlYlZpZXcuY3BwCkBAIC0xMzYxLDcgKzEzNjEsNyBAQCBib29sIFdlYlZpZXc6OmhhbmRs
ZUNvbnRleHRNZW51RXZlbnQoV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKICAgICBpZiAo
IXZpZXcpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFBPSU5UIHBvaW50KHZpZXctPmNv
bnRlbnRzVG9XaW5kb3coY29udGV4dE1lbnVDb250cm9sbGVyLT5oaXRUZXN0UmVzdWx0KCkucm91
bmRlZFBvaW50KCkpKTsKKyAgICBQT0lOVCBwb2ludCh2aWV3LT5jb250ZW50c1RvV2luZG93KHJv
dW5kZWRJbnRQb2ludChjb250ZXh0TWVudUNvbnRyb2xsZXItPmhpdFRlc3RSZXN1bHQoKS5yZXN1
bHRGcmFtZVBvaW50KCkpKSk7CiAKICAgICAvLyBUcmFuc2xhdGUgdGhlIHBvaW50IHRvIHNjcmVl
biBjb29yZGluYXRlcwogICAgIGlmICghOjpDbGllbnRUb1NjcmVlbihtX3ZpZXdXaW5kb3csICZw
b2ludCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
Q29udGV4dE1lbnUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNv
bnRleHRNZW51LmNwcAppbmRleCAzYTkxZDkwYjc1NWU2OGQ3ZDUzNTk3OTNhY2UwZmUzNzVhZTY4
NjEwLi5kOWZmOGI4M2Y5Y2RiNzlkODY2NWY0NjFjMjAwMGRiNTA5MjExNTY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29udGV4dE1lbnUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0TWVudS5jcHAK
QEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBXZWJDb250ZXh0TWVudTo6c2hvdygpCiAKICAgICAvLyBN
YXJrIHRoZSBXZWJQYWdlIGhhcyBoYXZpbmcgYSBzaG93biBjb250ZXh0IG1lbnUgdGhlbiBub3Rp
ZnkgdGhlIFVJUHJvY2Vzcy4KICAgICBtX3BhZ2UtPmNvbnRleHRNZW51U2hvd2luZygpOwotICAg
IG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaG93Q29udGV4dE1lbnUodmll
dy0+Y29udGVudHNUb1dpbmRvdyhjb250cm9sbGVyLT5oaXRUZXN0UmVzdWx0KCkucm91bmRlZFBv
aW50KCkpLCB3ZWJIaXRUZXN0UmVzdWx0RGF0YSwgcHJvcG9zZWRNZW51LCBJbmplY3RlZEJ1bmRs
ZVVzZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsKKyAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2hvd0NvbnRleHRNZW51KHZpZXctPmNvbnRlbnRzVG9X
aW5kb3cocm91bmRlZEludFBvaW50KGNvbnRyb2xsZXItPmhpdFRlc3RSZXN1bHQoKS5yZXN1bHRG
cmFtZVBvaW50KCkpKSwgd2ViSGl0VGVzdFJlc3VsdERhdGEsIHByb3Bvc2VkTWVudSwgSW5qZWN0
ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7CiB9CiAKIHZvaWQg
V2ViQ29udGV4dE1lbnU6Oml0ZW1TZWxlY3RlZChjb25zdCBXZWJDb250ZXh0TWVudUl0ZW1EYXRh
JiBpdGVtKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166681</attachid>
            <date>2012-10-02 06:05:16 -0700</date>
            <delta_ts>2012-10-04 04:40:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98139-20121002150413.patch</filename>
            <type>text/plain</type>
            <size>24622</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwMTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDUxNzU3Mzc2ZWE4Mjli
ZDc4NzMyMDA1NTEyZGEyOWI4Zjc3NGVkYi4uMzM3ZDI1MjMxYjIyY2Q4YWU1MTNlNTU3ODU3ODk2
M2EzNDIxN2JhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTEwLTAyICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIERp
c2FtYmlndWF0ZSByZXN1bHRGcmFtZVBvaW50IGFuZCBvcmlnaW5hbCBoaXQtdGVzdCBwb2ludAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgxMzkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTcGxpdCB0aGUg
cG9pbnQoKSBtZXRob2QgaW4gSGl0VGVzdFJlc3VsdCBpbnRvIHR3bywgcmVzdWx0RnJhbWVQb2lu
dCBhbmQgb3JpZ2luYWxGcmFtZVBvaW50KCkuCisgICAgICAgIFRvIGRvIHRoaXMgSGl0VGVzdFJl
c3VsdCBubyBsb25nZXIgaW5oZXJpdHMgcHVibGljYWxseSBmcm9tIEhpdFRlc3RMb2NhdGlvbiwg
d2hpY2ggc2hvdWxkIGFsc28KKyAgICAgICAgaGVscCB0byBsYXRlciBzZXBhcmF0ZSB0aGUgdHdv
IGNsYXNzZXMgbW9yZSBjb21wbGV0ZWx5LgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpub2Rlc0Zyb21SZWN0KToKKyAgICAgICAgKiBw
YWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmV2
ZW50TWF5U3RhcnREcmFnKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGl0VGVz
dFJlc3VsdEF0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQpOgorICAgICAg
ICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6
OkhpdFRlc3RSZXN1bHQ6OmFwcGVuZCk6CisgICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1
bHQuaDoKKyAgICAgICAgKEhpdFRlc3RSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVz
dFJlc3VsdDo6cmVzdWx0RnJhbWVQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVz
dWx0Ojppc1JlY3RCYXNlZFRlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6
b3JpZ2luYWxGcmFtZVBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OnNl
dE9yaWdpbmFsRnJhbWVQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpoaXRUZXN0KToKKwogMjAxMi0xMC0w
MiAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW1v
dmUgYW5vbnltb3VzIG5hbWVzcGFjZSBmcm9tIFN0eWxlQnVpbGRlci5jcHAgZm9yIGJldHRlciBk
ZWJ1Z2dpbmcgZXhwZXJpZW5jZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAyOGI2OWRk
N2UzMzZmYjU2YjkzNDhmNWUyMWRhZTM1NDFhNmFkMDk1Li5iOTljMjg0MDFiNjg4NzYyZDIwYzA1
MDIwN2Y3NzIxY2M0ZmM1YTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE4IEBACisyMDEyLTEwLTAyICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5A
ZGlnaWEuY29tPgorCisgICAgICAgIERpc2FtYmlndWF0ZSByZXN1bHRGcmFtZVBvaW50IGFuZCBv
cmlnaW5hbCBoaXQtdGVzdCBwb2ludAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTgxMzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6Q2hyb21lQ2xpZW50SW1wbDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQpOgorICAgICAgICAq
IHNyYy9Db250ZXh0TWVudUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpzZWxlY3RN
aXNzcGVsbGVkV29yZCk6CisgICAgICAgIChXZWJLaXQ6OkNvbnRleHRNZW51Q2xpZW50SW1wbDo6
Z2V0Q3VzdG9tTWVudUZyb21EZWZhdWx0SXRlbXMpOgorICAgICAgICAqIHNyYy9XZWJGcmFtZUlt
cGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUltcGw6OmNoYXJhY3RlckluZGV4Rm9y
UG9pbnQpOgorCiAyMDEyLTEwLTAyICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFVzZSBjb3JyZWN0IGd0ZXN0IG1hY3JvcyBmb3IgdGVzdHMgZm9yIHRy
dWUvZmFsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCBkNjJiOGVmNjFjN2IwNTBkMjM1NmYyZjU1ZmVk
Yjg4N2M5YzU4MzM4Li5iZjNhYjhiNGNhOTE1OTNhNjU5MDQ3YzMyZjM0N2M3NGRjYmU5Nzc4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMTAtMDIgIEFsbGFuIFNhbmRm
ZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CisKKyAgICAgICAgRGlzYW1iaWd1
YXRlIHJlc3VsdEZyYW1lUG9pbnQgYW5kIG9yaWdpbmFsIGhpdC10ZXN0IHBvaW50CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODEzOQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN3aXRjaCB0byB1c2luZyBv
cmlnaW5hbCBmcmFtZSBwb2ludCBzaW5jZSB4IGFuZCB5IGFyZSBkb2N1bWVudGVkIGFzIGJlaW5n
IHRoZSBwb2ludCBvZiB0aGUgaGl0IHRlc3QuCisKKyAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNw
cDoKKyAgICAgICAgKGV3a19mcmFtZV9oaXRfdGVzdF9uZXcpOgorCiAyMDEyLTEwLTAxICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdGhlIFNhZmFy
aSAyIC0+IFNhZmFyaSAzIGljb24gZGF0YWJhc2UgaW1wb3J0IGNvZGUuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
aW5kZXggN2Y3M2IzY2I0MjYzNDkzMzFkMDk1MGE0MjA3YTkxODBhZjZhODk3Yi4uYmY5N2Q1NTAy
ZDIyZDIxOTczMzUwZDMzMDBhYWNkZjk0ZDVlMzc4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEzIEBACisyMDEyLTEwLTAyICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5z
ZW5AZGlnaWEuY29tPgorCisgICAgICAgIERpc2FtYmlndWF0ZSByZXN1bHRGcmFtZVBvaW50IGFu
ZCBvcmlnaW5hbCBoaXQtdGVzdCBwb2ludAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTgxMzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIHdlYmtpdC93ZWJraXRoaXR0ZXN0cmVzdWx0LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6a2l0KToKKwogMjAxMi0xMC0wMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBh
cHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHRoZSBTYWZhcmkgMiAtPiBTYWZhcmkgMyBpY29u
IGRhdGFiYXNlIGltcG9ydCBjb2RlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDQ2ZmM5MGRjZjIxNzhj
MGRlNTQ1NThjMWE2ZjI3ZTdkNGUxOTZmNDUuLmQ3YTA3MDU1Y2YzNTE0N2RjZjgxYjcyYjQ2OGVi
NzdhOWVjNjhkNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0xMC0w
MiAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KKworICAg
ICAgICBEaXNhbWJpZ3VhdGUgcmVzdWx0RnJhbWVQb2ludCBhbmQgb3JpZ2luYWwgaGl0LXRlc3Qg
cG9pbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4
MTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbToKKyAgICAgICAgKFdlYkNvbnRl
eHRNZW51Q2xpZW50OjpzaG93Q29udGV4dE1lbnUpOgorCiAyMDEyLTEwLTAxICBCcmFkeSBFaWRz
b24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdGhlIFNhZmFyaSAyIC0+
IFNhZmFyaSAzIGljb24gZGF0YWJhc2UgaW1wb3J0IGNvZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IGU1
MzFmMmE4OGQ5NWVjNGY3MTlmY2M5OTlhNGI3ZDBhNjNiOTZhOTUuLjJlMGJjMWEwZjM5MDE3M2Zj
YzRkOWRhMmVlNjJhZTVhZjgxYzE5MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAK
KzIwMTItMTAtMDIgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5j
b20+CisKKyAgICAgICAgRGlzYW1iaWd1YXRlIHJlc3VsdEZyYW1lUG9pbnQgYW5kIG9yaWdpbmFs
IGhpdC10ZXN0IHBvaW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05ODEzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoZSBRdCBkb2N1bWVudCBzdGF0ZXMgdGhlIHBvcyBhdHRyaWJ1dGUgb2YgUVdlYkhp
dFRlc3RSZXN1bHQgaXMgdGhlIG9yaWdpbmFsIHBvc2l0aW9uLAorICAgICAgICBzbyB0aGUgY29k
ZSBub3cgdXNlcyBvcmlnaW5hbEZyYW1lUG9pbnQuCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1l
LmNwcDoKKyAgICAgICAgKFFXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZTo6UVdlYkhpdFRlc3RSZXN1
bHRQcml2YXRlKToKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBh
Z2VQcml2YXRlOjpUb3VjaEFkanVzdGVyOjpmaW5kQ2FuZGlkYXRlUG9pbnRGb3JUb3VjaCk6CisK
IDIwMTItMTAtMDEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAg
IFJlbW92ZSB0aGUgU2FmYXJpIDIgLT4gU2FmYXJpIDMgaWNvbiBkYXRhYmFzZSBpbXBvcnQgY29k
ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvd2luL0NoYW5nZUxvZwppbmRleCA2OGU4ODVhMjM5YzY5NDQ5Y2Q2ZDkyYTJiODdjMzcxMDJh
MzNkZjUxLi40NGM1MzY5ZmMxZDc3NzIxNTg2YzFiYzZiOTVlNWY5ZDIyYmFiMGIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4v
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMTAtMDIgIEFsbGFuIFNhbmRmZWxkIEpl
bnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CisKKyAgICAgICAgRGlzYW1iaWd1YXRlIHJl
c3VsdEZyYW1lUG9pbnQgYW5kIG9yaWdpbmFsIGhpdC10ZXN0IHBvaW50CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODEzOQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAg
IChXZWJWaWV3OjpoYW5kbGVDb250ZXh0TWVudUV2ZW50KToKKwogMjAxMi0xMC0wMSAgQnJhZHkg
RWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHRoZSBTYWZhcmkg
MiAtPiBTYWZhcmkgMyBpY29uIGRhdGFiYXNlIGltcG9ydCBjb2RlLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGNi
NzM3OGE0ZjY2MTA5YjJmMzhiOTRjYmIwYmIyNGM2ZTNjZWNmYzEuLjNiZTg4ZDZhYTU0MmM5YTZm
OWEyZTkyNTQzYTFlNzAzZjJjZTE5MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAx
Mi0xMC0wMiAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4K
KworICAgICAgICBEaXNhbWJpZ3VhdGUgcmVzdWx0RnJhbWVQb2ludCBhbmQgb3JpZ2luYWwgaGl0
LXRlc3QgcG9pbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk4MTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29udGV4dE1lbnUuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDb250ZXh0TWVudTo6c2hvdyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjaGFyYWN0ZXJJ
bmRleEZvclBvaW50KToKKwogMjAxMi0xMC0wMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHRoZSBTYWZhcmkgMiAtPiBTYWZhcmkgMyBpY29uIGRh
dGFiYXNlIGltcG9ydCBjb2RlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggYjc5Mjc1YjZi
Y2NkMTk1MzAwYTUwNzlmODJhMWQ0Y2FlZDQzZmNmMy4uNWVmNjQxMTM5NjQ1Mzk3ODA2ZTBlYTcw
ZDI4MTIwZDA4ZDExZmViMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0xMzg4LDcgKzEz
ODgsNyBAQCBQYXNzUmVmUHRyPE5vZGVMaXN0PiBEb2N1bWVudDo6bm9kZXNGcm9tUmVjdChpbnQg
Y2VudGVyWCwgaW50IGNlbnRlclksIHVuc2lnbmVkCiAgICAgLy8gV2hlbiBpZ25vcmVDbGlwcGlu
ZyBpcyBmYWxzZSwgdGhpcyBtZXRob2QgcmV0dXJucyBudWxsIGZvciBjb29yZGluYXRlcyBvdXRz
aWRlIG9mIHRoZSB2aWV3cG9ydC4KICAgICBpZiAoaWdub3JlQ2xpcHBpbmcpCiAgICAgICAgIHR5
cGUgfD0gSGl0VGVzdFJlcXVlc3Q6Oklnbm9yZUNsaXBwaW5nOwotICAgIGVsc2UgaWYgKCFmcmFt
ZVZpZXctPnZpc2libGVDb250ZW50UmVjdCgpLmludGVyc2VjdHMoSGl0VGVzdFJlc3VsdDo6cmVj
dEZvclBvaW50KHBvaW50LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcs
IGxlZnRQYWRkaW5nKSkpCisgICAgZWxzZSBpZiAoIWZyYW1lVmlldy0+dmlzaWJsZUNvbnRlbnRS
ZWN0KCkuaW50ZXJzZWN0cyhIaXRUZXN0TG9jYXRpb246OnJlY3RGb3JQb2ludChwb2ludCwgdG9w
UGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0UGFkZGluZykpKQogICAg
ICAgICByZXR1cm4gMDsKICAgICBpZiAoYWxsb3dTaGFkb3dDb250ZW50KQogICAgICAgICB0eXBl
IHw9IEhpdFRlc3RSZXF1ZXN0OjpBbGxvd1NoYWRvd0NvbnRlbnQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5jcHAKaW5kZXggZmUyMzMwZWEyZGZlNDYyNmU3YWM4MGQ4MzUxZjY5MWZiNjg2
MTNlOS4uMjZiNTQ3NTUzZDhmNDZlY2UyM2FlMGI5NDBkNzY4MTIzN2ZiYWFjMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtNzU4LDcgKzc1OCw3IEBAIGJvb2wgRXZlbnRI
YW5kbGVyOjpldmVudE1heVN0YXJ0RHJhZyhjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50
KSBjb25zdAogICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHZpZXctPndpbmRvd1RvQ29udGVudHMo
ZXZlbnQucG9zaXRpb24oKSkpOwogICAgIG1fZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpLT5oaXRU
ZXN0KHJlcXVlc3QsIHJlc3VsdCk7CiAgICAgRHJhZ1N0YXRlIHN0YXRlOwotICAgIHJldHVybiBy
ZXN1bHQuaW5uZXJOb2RlKCkgJiYgcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS0+ZHJhZ2dhYmxlTm9k
ZShtX2ZyYW1lLCByZXN1bHQuaW5uZXJOb2RlKCksIHJvdW5kZWRJbnRQb2ludChyZXN1bHQucG9p
bnQoKSksIHN0YXRlKTsKKyAgICByZXR1cm4gcmVzdWx0LmlubmVyTm9kZSgpICYmIHBhZ2UtPmRy
YWdDb250cm9sbGVyKCktPmRyYWdnYWJsZU5vZGUobV9mcmFtZSwgcmVzdWx0LmlubmVyTm9kZSgp
LCByb3VuZGVkSW50UG9pbnQocmVzdWx0Lm9yaWdpbmFsRnJhbWVQb2ludCgpKSwgc3RhdGUpOwog
fQogCiB2b2lkIEV2ZW50SGFuZGxlcjo6dXBkYXRlU2VsZWN0aW9uRm9yTW91c2VEcmFnKCkKQEAg
LTEwOTMsNiArMTA5Myw3IEBAIEhpdFRlc3RSZXN1bHQgRXZlbnRIYW5kbGVyOjpoaXRUZXN0UmVz
dWx0QXRQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQsIGJvb2wKICAgICAgICAgTGF5b3V0
UG9pbnQgd2lkZ2V0UG9pbnQocmVzdWx0LmxvY2FsUG9pbnQoKS54KCkgKyB2aWV3LT5zY3JvbGxY
KCkgLSByZW5kZXJXaWRnZXQtPmJvcmRlckxlZnQoKSAtIHJlbmRlcldpZGdldC0+cGFkZGluZ0xl
ZnQoKSwgCiAgICAgICAgICAgICByZXN1bHQubG9jYWxQb2ludCgpLnkoKSArIHZpZXctPnNjcm9s
bFkoKSAtIHJlbmRlcldpZGdldC0+Ym9yZGVyVG9wKCkgLSByZW5kZXJXaWRnZXQtPnBhZGRpbmdU
b3AoKSk7CiAgICAgICAgIEhpdFRlc3RSZXN1bHQgd2lkZ2V0SGl0VGVzdFJlc3VsdCh3aWRnZXRQ
b2ludCwgcGFkZGluZy5oZWlnaHQoKSwgcGFkZGluZy53aWR0aCgpLCBwYWRkaW5nLmhlaWdodCgp
LCBwYWRkaW5nLndpZHRoKCkpOworICAgICAgICB3aWRnZXRIaXRUZXN0UmVzdWx0LnNldE9yaWdp
bmFsRnJhbWVQb2ludChyZXN1bHQub3JpZ2luYWxGcmFtZVBvaW50KCkpOwogICAgICAgICBmcmFt
ZS0+Y29udGVudFJlbmRlcmVyKCktPmhpdFRlc3QoSGl0VGVzdFJlcXVlc3QoaGl0VHlwZSksIHdp
ZGdldEhpdFRlc3RSZXN1bHQpOwogICAgICAgICByZXN1bHQgPSB3aWRnZXRIaXRUZXN0UmVzdWx0
OwogCkBAIC0xMTEyLDcgKzExMTMsNyBAQCBIaXRUZXN0UmVzdWx0IEV2ZW50SGFuZGxlcjo6aGl0
VGVzdFJlc3VsdEF0UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBib29sCiAgICAgICAg
ICAgICBGcmFtZVZpZXcqIHJlc3VsdFZpZXcgPSByZXN1bHRGcmFtZS0+dmlldygpOwogICAgICAg
ICAgICAgRnJhbWVWaWV3KiBtYWluVmlldyA9IG1haW5GcmFtZS0+dmlldygpOwogICAgICAgICAg
ICAgaWYgKHJlc3VsdFZpZXcgJiYgbWFpblZpZXcpIHsKLSAgICAgICAgICAgICAgICBJbnRQb2lu
dCBtYWluRnJhbWVQb2ludCA9IG1haW5WaWV3LT5yb290Vmlld1RvQ29udGVudHMocmVzdWx0Vmll
dy0+Y29udGVudHNUb1Jvb3RWaWV3KHJvdW5kZWRJbnRQb2ludChyZXN1bHQucG9pbnQoKSkpKTsK
KyAgICAgICAgICAgICAgICBJbnRQb2ludCBtYWluRnJhbWVQb2ludCA9IG1haW5WaWV3LT5yb290
Vmlld1RvQ29udGVudHMocmVzdWx0Vmlldy0+Y29udGVudHNUb1Jvb3RWaWV3KHJvdW5kZWRJbnRQ
b2ludChyZXN1bHQucmVzdWx0RnJhbWVQb2ludCgpKSkpOwogICAgICAgICAgICAgICAgIHJlc3Vs
dCA9IG1haW5GcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KG1haW5G
cmFtZVBvaW50LCBhbGxvd1NoYWRvd0NvbnRlbnQsIGlnbm9yZUNsaXBwaW5nLCB0ZXN0U2Nyb2xs
YmFycywgaGl0VHlwZSwgcGFkZGluZyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAppbmRleCBjYzM5MDU2OGNlMDI5
ODZkMjBiYmIxY2ZmYzEwMTNiZTA5ZWYzY2EzLi4yNDgyNDAzMTdkMjY1M2FkMTEyZDA4YTNlZWZj
Njk5ZDkyYTVhYWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVz
dFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQu
Y3BwCkBAIC0yMDQsMTIgKzIwNCwxNCBAQCBIaXRUZXN0UmVzdWx0OjpIaXRUZXN0UmVzdWx0KGNv
bnN0IExheW91dFBvaW50JiBwb2ludCkgOiBIaXRUZXN0TG9jYXRpb24ocG9pbnQpCiAKIEhpdFRl
c3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQoY29uc3QgTGF5b3V0UG9pbnQmIGNlbnRlclBvaW50LCB1
bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcsIHVuc2lnbmVkIGJvdHRv
bVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nKQogICAgIDogSGl0VGVzdExvY2F0aW9uKGNl
bnRlclBvaW50LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQ
YWRkaW5nKQorICAgICwgbV9vcmlnaW5hbEZyYW1lUG9pbnQocG9pbnQoKSkKICAgICAsIG1faXNP
dmVyV2lkZ2V0KGZhbHNlKQogewogfQogCiBIaXRUZXN0UmVzdWx0OjpIaXRUZXN0UmVzdWx0KGNv
bnN0IEhpdFRlc3RMb2NhdGlvbiYgb3RoZXIpCiAgICAgOiBIaXRUZXN0TG9jYXRpb24ob3RoZXIp
CisgICAgLCBtX29yaWdpbmFsRnJhbWVQb2ludChwb2ludCgpKQogICAgICwgbV9pc092ZXJXaWRn
ZXQoZmFsc2UpCiB7CiB9CkBAIC0yMTgsNiArMjIwLDcgQEAgSGl0VGVzdFJlc3VsdDo6SGl0VGVz
dFJlc3VsdChjb25zdCBIaXRUZXN0UmVzdWx0JiBvdGhlcikKICAgICA6IEhpdFRlc3RMb2NhdGlv
bihvdGhlcikKICAgICAsIG1faW5uZXJOb2RlKG90aGVyLmlubmVyTm9kZSgpKQogICAgICwgbV9p
bm5lck5vblNoYXJlZE5vZGUob3RoZXIuaW5uZXJOb25TaGFyZWROb2RlKCkpCisgICAgLCBtX29y
aWdpbmFsRnJhbWVQb2ludChvdGhlci5vcmlnaW5hbEZyYW1lUG9pbnQoKSkKICAgICAsIG1fbG9j
YWxQb2ludChvdGhlci5sb2NhbFBvaW50KCkpCiAgICAgLCBtX2lubmVyVVJMRWxlbWVudChvdGhl
ci5VUkxFbGVtZW50KCkpCiAgICAgLCBtX3Njcm9sbGJhcihvdGhlci5zY3JvbGxiYXIoKSkKQEAg
LTIzNiw2ICsyMzksNyBAQCBIaXRUZXN0UmVzdWx0JiBIaXRUZXN0UmVzdWx0OjpvcGVyYXRvcj0o
Y29uc3QgSGl0VGVzdFJlc3VsdCYgb3RoZXIpCiAgICAgSGl0VGVzdExvY2F0aW9uOjpvcGVyYXRv
cj0ob3RoZXIpOwogICAgIG1faW5uZXJOb2RlID0gb3RoZXIuaW5uZXJOb2RlKCk7CiAgICAgbV9p
bm5lck5vblNoYXJlZE5vZGUgPSBvdGhlci5pbm5lck5vblNoYXJlZE5vZGUoKTsKKyAgICBtX29y
aWdpbmFsRnJhbWVQb2ludCA9IG90aGVyLm9yaWdpbmFsRnJhbWVQb2ludCgpOwogICAgIG1fbG9j
YWxQb2ludCA9IG90aGVyLmxvY2FsUG9pbnQoKTsKICAgICBtX2lubmVyVVJMRWxlbWVudCA9IG90
aGVyLlVSTEVsZW1lbnQoKTsKICAgICBtX3Njcm9sbGJhciA9IG90aGVyLnNjcm9sbGJhcigpOwpA
QCAtNzQ2LDYgKzc1MCw3IEBAIHZvaWQgSGl0VGVzdFJlc3VsdDo6YXBwZW5kKGNvbnN0IEhpdFRl
c3RSZXN1bHQmIG90aGVyKQogICAgICAgICBtX2lubmVyTm9kZSA9IG90aGVyLmlubmVyTm9kZSgp
OwogICAgICAgICBtX2lubmVyTm9uU2hhcmVkTm9kZSA9IG90aGVyLmlubmVyTm9uU2hhcmVkTm9k
ZSgpOwogICAgICAgICBtX2xvY2FsUG9pbnQgPSBvdGhlci5sb2NhbFBvaW50KCk7CisgICAgICAg
IG1fb3JpZ2luYWxGcmFtZVBvaW50ID0gb3RoZXIub3JpZ2luYWxGcmFtZVBvaW50KCk7CiAgICAg
ICAgIG1faW5uZXJVUkxFbGVtZW50ID0gb3RoZXIuVVJMRWxlbWVudCgpOwogICAgICAgICBtX3Nj
cm9sbGJhciA9IG90aGVyLnNjcm9sbGJhcigpOwogICAgICAgICBtX2lzT3ZlcldpZGdldCA9IG90
aGVyLmlzT3ZlcldpZGdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0hpdFRlc3RSZXN1bHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0
LmgKaW5kZXggOTEyOWVlZDQ0MTFhMDAwNTAzMTA5ZjYxNDNiMWRiNTNkZjJmMjAwYy4uNjlhN2Y4
OTUwMGIwMTQ0Mjk3ODRmM2VjNTQ2NGMyNTNjZTYwYjc4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvSGl0VGVzdFJlc3VsdC5oCkBAIC0xMDAsNyArMTAwLDcgQEAgcHJpdmF0ZToKICAgICBi
b29sIG1faXNSZWN0aWxpbmVhcjsKIH07CiAKLWNsYXNzIEhpdFRlc3RSZXN1bHQgOiBwdWJsaWMg
SGl0VGVzdExvY2F0aW9uIHsKK2NsYXNzIEhpdFRlc3RSZXN1bHQgOiBwcm90ZWN0ZWQgSGl0VGVz
dExvY2F0aW9uIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIExpc3RIYXNoU2V0PFJlZlB0cjxOb2Rl
PiA+IE5vZGVTZXQ7CiAKQEAgLTEyMCw2ICsxMjAsMTMgQEAgcHVibGljOgogICAgIFNjcm9sbGJh
ciogc2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxiYXIuZ2V0KCk7IH0KICAgICBi
b29sIGlzT3ZlcldpZGdldCgpIGNvbnN0IHsgcmV0dXJuIG1faXNPdmVyV2lkZ2V0OyB9CiAKKyAg
ICAvLyBGb3J3YXJkaW5nIHNvbWUgYnV0IG5vdCBhbGwgSGl0VGVzdExvY2F0aW9uIG1ldGhvZHMu
CisgICAgTGF5b3V0UG9pbnQgcmVzdWx0RnJhbWVQb2ludCgpIGNvbnN0IHsgcmV0dXJuIEhpdFRl
c3RMb2NhdGlvbjo6cG9pbnQoKTsgfQorICAgIGJvb2wgaXNSZWN0QmFzZWRUZXN0KCkgY29uc3Qg
eyByZXR1cm4gSGl0VGVzdExvY2F0aW9uOjppc1JlY3RCYXNlZFRlc3QoKTsgfQorCisgICAgTGF5
b3V0UG9pbnQgb3JpZ2luYWxGcmFtZVBvaW50KCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW5hbEZy
YW1lUG9pbnQ7IH0KKyAgICB2b2lkIHNldE9yaWdpbmFsRnJhbWVQb2ludChjb25zdCBMYXlvdXRQ
b2ludCYgcCkgeyBtX29yaWdpbmFsRnJhbWVQb2ludCA9IHA7IH0KKwogICAgIHZvaWQgc2V0VG9O
b25TaGFkb3dBbmNlc3RvcigpOwogCiAgICAgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBoaXRUZXN0
TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiAqdGhpczsgfQpAQCAtMTg1LDYgKzE5Miw3IEBAIHBy
aXZhdGU6CiAKICAgICBSZWZQdHI8Tm9kZT4gbV9pbm5lck5vZGU7CiAgICAgUmVmUHRyPE5vZGU+
IG1faW5uZXJOb25TaGFyZWROb2RlOworICAgIExheW91dFBvaW50IG1fb3JpZ2luYWxGcmFtZVBv
aW50OwogICAgIExheW91dFBvaW50IG1fbG9jYWxQb2ludDsgLy8gQSBwb2ludCBpbiB0aGUgbG9j
YWwgY29vcmRpbmF0ZSBzcGFjZSBvZiBtX2lubmVyTm9uU2hhcmVkTm9kZSdzIHJlbmRlcmVyLiBB
bGxvd3MgdXMgdG8gZWZmaWNpZW50bHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IGRldGVybWluZSB3aGVyZSBpbnNpZGUgdGhlIHJlbmRlcmVyIHdlIGhpdCBvbiBzdWJzZXF1ZW50
IG9wZXJhdGlvbnMuCiAgICAgUmVmUHRyPEVsZW1lbnQ+IG1faW5uZXJVUkxFbGVtZW50OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggYzAxMjc3ZDEzYmQzMzE2
Y2FlODZhMjEzMjNiNWViYjE2NDdjOTQ3Ni4uZTdlZGM5MWIwNjg3MDc5NjJmN2NmZDgzMDgyZjM2
YTRlM2IyNmZkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBA
IC0zNDgyLDcgKzM0ODIsNyBAQCBib29sIFJlbmRlckxheWVyOjpoaXRUZXN0KGNvbnN0IEhpdFRl
c3RSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBIaXRUZXN0TG9jYXRpb24mCiAgICAgICAgIC8vIHJl
dHVybiBvdXJzZWx2ZXMuIFdlIGRvIHRoaXMgc28gbW91c2UgZXZlbnRzIGNvbnRpbnVlIGdldHRp
bmcgZGVsaXZlcmVkIGFmdGVyIGEgZHJhZyBoYXMgCiAgICAgICAgIC8vIGV4aXRlZCB0aGUgV2Vi
VmlldywgYW5kIHNvIGhpdCB0ZXN0aW5nIG92ZXIgYSBzY3JvbGxiYXIgaGl0cyB0aGUgY29udGVu
dCBkb2N1bWVudC4KICAgICAgICAgaWYgKChyZXF1ZXN0LmFjdGl2ZSgpIHx8IHJlcXVlc3QucmVs
ZWFzZSgpKSAmJiBpc1Jvb3RMYXllcigpKSB7Ci0gICAgICAgICAgICByZW5kZXJlcigpLT51cGRh
dGVIaXRUZXN0UmVzdWx0KHJlc3VsdCwgdG9SZW5kZXJWaWV3KHJlbmRlcmVyKCkpLT5mbGlwRm9y
V3JpdGluZ01vZGUocmVzdWx0LnBvaW50KCkpKTsKKyAgICAgICAgICAgIHJlbmRlcmVyKCktPnVw
ZGF0ZUhpdFRlc3RSZXN1bHQocmVzdWx0LCB0b1JlbmRlclZpZXcocmVuZGVyZXIoKSktPmZsaXBG
b3JXcml0aW5nTW9kZShoaXRUZXN0TG9jYXRpb24ucG9pbnQoKSkpOwogICAgICAgICAgICAgaW5z
aWRlTGF5ZXIgPSB0aGlzOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAppbmRleCA3ZTBmODg1NDI1MmMwNDIzMTll
MTIzNGRkMzA5MDE4MWE1NmZkNTgxLi5iZjU4YWZkOGE3NjU1NTQzMzA3ZDA3ZTU3Yjk2ZjgxMmM3
YTNmMzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGll
bnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJ
bXBsLmNwcApAQCAtNjA0LDcgKzYwNCw3IEBAIHZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6bW91c2VE
aWRNb3ZlT3ZlckVsZW1lbnQoCiAgICAgICAgICAgICBXaWRnZXQqIHdpZGdldCA9IHRvUmVuZGVy
V2lkZ2V0KG9iamVjdCktPndpZGdldCgpOwogICAgICAgICAgICAgaWYgKHdpZGdldCAmJiB3aWRn
ZXQtPmlzUGx1Z2luQ29udGFpbmVyKCkpIHsKICAgICAgICAgICAgICAgICBXZWJQbHVnaW5Db250
YWluZXJJbXBsKiBwbHVnaW4gPSBzdGF0aWNfY2FzdDxXZWJQbHVnaW5Db250YWluZXJJbXBsKj4o
d2lkZ2V0KTsKLSAgICAgICAgICAgICAgICB1cmwgPSBwbHVnaW4tPnBsdWdpbigpLT5saW5rQXRQ
b3NpdGlvbihyZXN1bHQucm91bmRlZFBvaW50KCkpOworICAgICAgICAgICAgICAgIHVybCA9IHBs
dWdpbi0+cGx1Z2luKCktPmxpbmtBdFBvc2l0aW9uKHJvdW5kZWRJbnRQb2ludChyZXN1bHQucmVz
dWx0RnJhbWVQb2ludCgpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Db250ZXh0TWVudUNsaWVudEltcGwu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ29udGV4dE1lbnVDbGllbnRJbXBsLmNw
cAppbmRleCA0MGU0MTZlNGY0OTdmNmYxZDg4NGY4NmYxMGUwM2E2NTU0NGRmYjNmLi41ODExMzg3
NTI4NjVmMWQzNWE4NzgzNjI2ZjJkYTllZTFjMGM0NTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9Db250ZXh0TWVudUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0NvbnRleHRNZW51Q2xpZW50SW1wbC5jcHAKQEAgLTEyMCw3ICsx
MjAsNyBAQCBzdGF0aWMgU3RyaW5nIHNlbGVjdE1pc3NwZWxsZWRXb3JkKGNvbnN0IENvbnRleHRN
ZW51KiBkZWZhdWx0TWVudSwgRnJhbWUqIHNlbGVjdAogCiAgICAgLy8gU2VsZWN0aW9uIGlzIGVt
cHR5LCBzbyBjaGFuZ2UgdGhlIHNlbGVjdGlvbiB0byB0aGUgd29yZCB1bmRlciB0aGUgY3Vyc29y
LgogICAgIEhpdFRlc3RSZXN1bHQgaGl0VGVzdFJlc3VsdCA9IHNlbGVjdGVkRnJhbWUtPmV2ZW50
SGFuZGxlcigpLT4KLSAgICAgICAgaGl0VGVzdFJlc3VsdEF0UG9pbnQoc2VsZWN0ZWRGcmFtZS0+
cGFnZSgpLT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKS0+aGl0VGVzdFJlc3VsdCgpLnBvaW50KCks
IHRydWUpOworICAgICAgICBoaXRUZXN0UmVzdWx0QXRQb2ludChzZWxlY3RlZEZyYW1lLT5wYWdl
KCktPmNvbnRleHRNZW51Q29udHJvbGxlcigpLT5oaXRUZXN0UmVzdWx0KCkub3JpZ2luYWxGcmFt
ZVBvaW50KCksIHRydWUpOwogICAgIE5vZGUqIGlubmVyTm9kZSA9IGhpdFRlc3RSZXN1bHQuaW5u
ZXJOb2RlKCk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvcyhpbm5lck5vZGUtPnJlbmRlcmVyKCkt
PnBvc2l0aW9uRm9yUG9pbnQoCiAgICAgICAgIGhpdFRlc3RSZXN1bHQubG9jYWxQb2ludCgpKSk7
CkBAIC0xNTgsNyArMTU4LDcgQEAgUGxhdGZvcm1NZW51RGVzY3JpcHRpb24gQ29udGV4dE1lbnVD
bGllbnRJbXBsOjpnZXRDdXN0b21NZW51RnJvbURlZmF1bHRJdGVtcygKICAgICBGcmFtZSogc2Vs
ZWN0ZWRGcmFtZSA9IHIuaW5uZXJOb25TaGFyZWROb2RlKCktPmRvY3VtZW50KCktPmZyYW1lKCk7
CiAKICAgICBXZWJDb250ZXh0TWVudURhdGEgZGF0YTsKLSAgICBkYXRhLm1vdXNlUG9zaXRpb24g
PSBzZWxlY3RlZEZyYW1lLT52aWV3KCktPmNvbnRlbnRzVG9XaW5kb3coci5yb3VuZGVkUG9pbnQo
KSk7CisgICAgZGF0YS5tb3VzZVBvc2l0aW9uID0gcm91bmRlZEludFBvaW50KHIub3JpZ2luYWxG
cmFtZVBvaW50KCkpOwogCiAgICAgLy8gQ29tcHV0ZSBlZGl0IGZsYWdzLgogICAgIGRhdGEuZWRp
dEZsYWdzID0gV2ViQ29udGV4dE1lbnVEYXRhOjpDYW5Eb05vbmU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAppbmRleCAyNWZhM2VmNGYzMTM5NDM3MTk0ZTcx
NTA3YTUzYjk1ZjAxZDg4N2E1Li45ZWRhNDk0MGY1ZjQzZTdkMzYxNjUxODAxMDU1OTBiMjE5ODM5
MzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKQEAg
LTEyMDIsNyArMTIwMiw3IEBAIHNpemVfdCBXZWJGcmFtZUltcGw6OmNoYXJhY3RlckluZGV4Rm9y
UG9pbnQoY29uc3QgV2ViUG9pbnQmIHdlYlBvaW50KSBjb25zdAogCiAgICAgSW50UG9pbnQgcG9p
bnQgPSBmcmFtZSgpLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMod2ViUG9pbnQpOwogICAgIEhp
dFRlc3RSZXN1bHQgcmVzdWx0ID0gZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1
bHRBdFBvaW50KHBvaW50LCBmYWxzZSk7Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IGZyYW1l
KCktPnJhbmdlRm9yUG9pbnQocmVzdWx0LnJvdW5kZWRQb2ludCgpKTsKKyAgICBSZWZQdHI8UmFu
Z2U+IHJhbmdlID0gZnJhbWUoKS0+cmFuZ2VGb3JQb2ludChyb3VuZGVkSW50UG9pbnQocmVzdWx0
LnJlc3VsdEZyYW1lUG9pbnQoKSkpOwogICAgIGlmICghcmFuZ2UpCiAgICAgICAgIHJldHVybiBu
b3RGb3VuZDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAppbmRleCA1NDZlZWE1MTIz
NjkwMGU4NjVlY2UzMWY1YzFmZDAwNWFmNmJmMzRmLi5kMzgyYjgxZjE4ODU1NDIzYjYwNzE0Yzdh
MjYyNWRmMzIyMDAyMTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2Zy
YW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcApAQCAtNzAy
LDggKzcwMiw4IEBAIEV3a19IaXRfVGVzdCogZXdrX2ZyYW1lX2hpdF90ZXN0X25ldyhjb25zdCBF
dmFzX09iamVjdCogZXdrRnJhbWUsIGludCB4LCBpbnQgeSkKICAgICAgICAgcmV0dXJuIDA7CiAK
ICAgICBFd2tfSGl0X1Rlc3QqIGhpdFRlc3QgPSBuZXcgRXdrX0hpdF9UZXN0OwotICAgIGhpdFRl
c3QtPnggPSByZXN1bHQucG9pbnQoKS54KCk7Ci0gICAgaGl0VGVzdC0+eSA9IHJlc3VsdC5wb2lu
dCgpLnkoKTsKKyAgICBoaXRUZXN0LT54ID0gcmVzdWx0Lm9yaWdpbmFsRnJhbWVQb2ludCgpLngo
KTsKKyAgICBoaXRUZXN0LT55ID0gcmVzdWx0Lm9yaWdpbmFsRnJhbWVQb2ludCgpLnkoKTsKICNp
ZiAwCiAgICAgLy8gRklYTUUKICAgICBoaXRUZXN0LT5ib3VuZGluZ19ib3gueCA9IHJlc3VsdC5i
b3VuZGluZ0JveCgpLngoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXRoaXR0ZXN0cmVzdWx0LmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRo
aXR0ZXN0cmVzdWx0LmNwcAppbmRleCAzYjZhNzdhNjcwNmRlMWE2ZGI0ZjhjMjIxMmFkMWRlZDkw
ZDAwNTgzLi4yN2FhZDhkZjBlZjIyZjAyNmQyMmVkZDEzMzQ2MTM3NzY1NDM4OGE0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0aGl0dGVzdHJlc3VsdC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGhpdHRlc3RyZXN1bHQuY3BwCkBAIC0z
MTgsOSArMzE4LDkgQEAgV2ViS2l0SGl0VGVzdFJlc3VsdCoga2l0KGNvbnN0IFdlYkNvcmU6Okhp
dFRlc3RSZXN1bHQmIHJlc3VsdCkKICAgICB0YXJnZXRGcmFtZSA9IHJlc3VsdC50YXJnZXRGcmFt
ZSgpOwogICAgIGlmICh0YXJnZXRGcmFtZSAmJiB0YXJnZXRGcmFtZS0+dmlldygpKSB7CiAgICAg
ICAgIC8vIENvbnZlcnQgZG9jdW1lbnQgY29vcmRzIHRvIHdpZGdldCBjb29yZHMuCi0gICAgICAg
IHBvaW50ID0gdGFyZ2V0RnJhbWUtPnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhyZXN1bHQucm91
bmRlZFBvaW50KCkpOworICAgICAgICBwb2ludCA9IHRhcmdldEZyYW1lLT52aWV3KCktPmNvbnRl
bnRzVG9XaW5kb3coV2ViQ29yZTo6cm91bmRlZEludFBvaW50KHJlc3VsdC5yZXN1bHRGcmFtZVBv
aW50KCkpKTsKICAgICB9IGVsc2UKLSAgICAgICAgcG9pbnQgPSByZXN1bHQucm91bmRlZFBvaW50
KCk7CisgICAgICAgIHBvaW50ID0gV2ViQ29yZTo6cm91bmRlZEludFBvaW50KHJlc3VsdC5vcmln
aW5hbEZyYW1lUG9pbnQoKSk7CiAKICAgICByZXR1cm4gV0VCS0lUX0hJVF9URVNUX1JFU1VMVChn
X29iamVjdF9uZXcoV0VCS0lUX1RZUEVfSElUX1RFU1RfUkVTVUxULAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluay11cmkiLCBsaW5rVVJJLmdldCgp
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4
dE1lbnVDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250
ZXh0TWVudUNsaWVudC5tbQppbmRleCBlMzEzMTM2MDM2Zjc4ZDYwMTcyMzA2OTJlZDhjNjc5MDhl
OWQ0M2UwLi4xMGEwNjY5NmIxZjQxY2NkNjc1NjcxN2YzMWVjMzQ5YWYxMzUzNjBjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVu
dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVu
dUNsaWVudC5tbQpAQCAtMzY2LDcgKzM2Niw3IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6
OnNob3dDb250ZXh0TWVudSgpCiAgICAgaWYgKCFmcmFtZVZpZXcpCiAgICAgICAgIHJldHVybjsK
IAotICAgIEludFBvaW50IHBvaW50ID0gZnJhbWVWaWV3LT5jb250ZW50c1RvV2luZG93KGNvbnRy
b2xsZXItPmhpdFRlc3RSZXN1bHQoKS5yb3VuZGVkUG9pbnQoKSk7CisgICAgSW50UG9pbnQgcG9p
bnQgPSBmcmFtZVZpZXctPmNvbnRlbnRzVG9XaW5kb3cocm91bmRlZEludFBvaW50KGNvbnRyb2xs
ZXItPmhpdFRlc3RSZXN1bHQoKS5yZXN1bHRGcmFtZVBvaW50KCkpKTsKICAgICBOU1ZpZXcqIHZp
ZXcgPSBmcmFtZVZpZXctPmRvY3VtZW50VmlldygpOwogICAgIE5TUG9pbnQgbnNTY3JlZW5Qb2lu
dCA9IFt2aWV3IGNvbnZlcnRQb2ludDpwb2ludCB0b1ZpZXc6bmlsXTsKICAgICAvLyBTaG93IHRo
ZSBjb250ZXh0dWFsIG1lbnUgZm9yIHRoaXMgZXZlbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1l
LmNwcAppbmRleCBhZGJmYTFjY2RlNGZhNzQ1NWUwYjZiYzc1YmIxMzdhNWZmNGFjYWIzLi41ZTk3
ODk1MzNlMDg1ODcwM2NlYjQ1ZjM4ZGY0ZTNiNDc5MjEwYmE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3
ZWJmcmFtZS5jcHAKQEAgLTE2ODIsNyArMTY4Miw3IEBAIFFXZWJIaXRUZXN0UmVzdWx0UHJpdmF0
ZTo6UVdlYkhpdFRlc3RSZXN1bHRQcml2YXRlKGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQK
IHsKICAgICBpZiAoIWhpdFRlc3QuaW5uZXJOb2RlKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBw
b3MgPSBoaXRUZXN0LnJvdW5kZWRQb2ludCgpOworICAgIHBvcyA9IFdlYkNvcmU6OnJvdW5kZWRJ
bnRQb2ludChoaXRUZXN0Lm9yaWdpbmFsRnJhbWVQb2ludCgpKTsKICAgICBXZWJDb3JlOjpUZXh0
RGlyZWN0aW9uIGRpcjsKICAgICB0aXRsZSA9IGhpdFRlc3QudGl0bGUoZGlyKTsKICAgICBsaW5r
VGV4dCA9IGhpdFRlc3QudGV4dENvbnRlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
cXQvQXBpL3F3ZWJwYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcApp
bmRleCA3Njk3ZjFhNmJiNzU0NGIxZmMyNTU0MTNhOGRmZTk5YThmODEwYjUxLi5kZDNhMWU5MjBi
ODRlODE5NDAyM2E4NWUxNjk2MmViOGIxMWU3ZWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3F0L0FwaS9xd2VicGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2Uu
Y3BwCkBAIC0xNTUzLDcgKzE1NTMsNyBAQCBJbnRQb2ludCBRV2ViUGFnZVByaXZhdGU6OlRvdWNo
QWRqdXN0ZXI6OmZpbmRDYW5kaWRhdGVQb2ludEZvclRvdWNoKGNvbnN0IEludFBvaQogICAgIEZy
YW1lVmlldyogdmlldyA9IGRvY3VtZW50LT5mcmFtZSgpLT52aWV3KCk7CiAKICAgICAvLyBUb3Vj
aCByZWN0IGluIGNvbnRlbnRzIGNvb3JkaW5hdGVzLgotICAgIEludFJlY3QgdG91Y2hSZWN0KEhp
dFRlc3RSZXN1bHQ6OnJlY3RGb3JQb2ludCh2aWV3LT53aW5kb3dUb0NvbnRlbnRzKEludFBvaW50
KHgsIHkpKSwgbV90b3BQYWRkaW5nLCBtX3JpZ2h0UGFkZGluZywgbV9ib3R0b21QYWRkaW5nLCBt
X2xlZnRQYWRkaW5nKSk7CisgICAgSW50UmVjdCB0b3VjaFJlY3QoSGl0VGVzdExvY2F0aW9uOjpy
ZWN0Rm9yUG9pbnQodmlldy0+d2luZG93VG9Db250ZW50cyhJbnRQb2ludCh4LCB5KSksIG1fdG9w
UGFkZGluZywgbV9yaWdodFBhZGRpbmcsIG1fYm90dG9tUGFkZGluZywgbV9sZWZ0UGFkZGluZykp
OwogCiAgICAgLy8gSXRlcmF0ZSBvdmVyIHRoZSBsaXN0IG9mIG5vZGVzIGhpdCBsb29raW5nIGZv
ciB0aGUgb25lIHdob3NlIGJvdW5kaW5nIGFyZWEKICAgICAvLyBoYXMgbGFyZ2VzdCBpbnRlcnNl
Y3Rpb24gd2l0aCB0aGUgdG91Y2ggYXJlYSAocG9pbnQgKyBwYWRkaW5nKS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViVmll
dy5jcHAKaW5kZXggYTkwZjY3ZTc1NzZhOWQ2NDBhYzUwOTc3YjliNjQ2NmU0YzM4Y2IxYS4uMjBm
YjViOTQ4Nzk0NDE4YmU4ZjRjNzdkZmEyZTRhZDZlMzJjMmM0MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5j
cHAKQEAgLTEzNjEsNyArMTM2MSw3IEBAIGJvb2wgV2ViVmlldzo6aGFuZGxlQ29udGV4dE1lbnVF
dmVudChXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQogICAgIGlmICghdmlldykKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgUE9JTlQgcG9pbnQodmlldy0+Y29udGVudHNUb1dpbmRv
dyhjb250ZXh0TWVudUNvbnRyb2xsZXItPmhpdFRlc3RSZXN1bHQoKS5yb3VuZGVkUG9pbnQoKSkp
OworICAgIFBPSU5UIHBvaW50KHZpZXctPmNvbnRlbnRzVG9XaW5kb3cocm91bmRlZEludFBvaW50
KGNvbnRleHRNZW51Q29udHJvbGxlci0+aGl0VGVzdFJlc3VsdCgpLnJlc3VsdEZyYW1lUG9pbnQo
KSkpKTsKIAogICAgIC8vIFRyYW5zbGF0ZSB0aGUgcG9pbnQgdG8gc2NyZWVuIGNvb3JkaW5hdGVz
CiAgICAgaWYgKCE6OkNsaWVudFRvU2NyZWVuKG1fdmlld1dpbmRvdywgJnBvaW50KSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0TWVudS5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29udGV4dE1lbnUuY3Bw
CmluZGV4IDNhOTFkOTBiNzU1ZTY4ZDdkNTM1OTc5M2FjZTBmZTM3NWFlNjg2MTAuLmQ5ZmY4Yjgz
ZjljZGI3OWQ4NjY1ZjQ2MWMyMDAwZGI1MDkyMTE1NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0TWVudS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvbnRleHRNZW51LmNwcApAQCAtODYsNyArODYs
NyBAQCB2b2lkIFdlYkNvbnRleHRNZW51OjpzaG93KCkKIAogICAgIC8vIE1hcmsgdGhlIFdlYlBh
Z2UgaGFzIGhhdmluZyBhIHNob3duIGNvbnRleHQgbWVudSB0aGVuIG5vdGlmeSB0aGUgVUlQcm9j
ZXNzLgogICAgIG1fcGFnZS0+Y29udGV4dE1lbnVTaG93aW5nKCk7Ci0gICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dDb250ZXh0TWVudSh2aWV3LT5jb250ZW50c1Rv
V2luZG93KGNvbnRyb2xsZXItPmhpdFRlc3RSZXN1bHQoKS5yb3VuZGVkUG9pbnQoKSksIHdlYkhp
dFRlc3RSZXN1bHREYXRhLCBwcm9wb3NlZE1lbnUsIEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VF
bmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpTaG93Q29udGV4dE1lbnUodmlldy0+Y29udGVudHNUb1dpbmRvdyhyb3VuZGVk
SW50UG9pbnQoY29udHJvbGxlci0+aGl0VGVzdFJlc3VsdCgpLnJlc3VsdEZyYW1lUG9pbnQoKSkp
LCB3ZWJIaXRUZXN0UmVzdWx0RGF0YSwgcHJvcG9zZWRNZW51LCBJbmplY3RlZEJ1bmRsZVVzZXJN
ZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsKIH0KIAogdm9pZCBXZWJDb250ZXh0TWVu
dTo6aXRlbVNlbGVjdGVkKGNvbnN0IFdlYkNvbnRleHRNZW51SXRlbURhdGEmIGl0ZW0pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0K
aW5kZXggYzJmMDE2NTM3NTk1M2I1M2NjM2NkMWI5ZWI0MzFkYjVlY2ViOTNhZC4uMThlOThkY2Ux
NDg2ODI1MjllMmE2NWMyMTMxZDNjOGEwNDI3OTU3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtMzc4LDcgKzM3OCw3
IEBAIHZvaWQgV2ViUGFnZTo6Y2hhcmFjdGVySW5kZXhGb3JQb2ludChJbnRQb2ludCBwb2ludCwg
dWludDY0X3QmIGluZGV4KQogICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZnJhbWUtPmV2ZW50
SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChwb2ludCwgZmFsc2UpOwogICAgIGZyYW1l
ID0gcmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpID8gcmVzdWx0LmlubmVyTm9uU2hhcmVkTm9k
ZSgpLT5kb2N1bWVudCgpLT5mcmFtZSgpIDogbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9j
dXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgCi0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IGZyYW1l
LT5yYW5nZUZvclBvaW50KHJlc3VsdC5yb3VuZGVkUG9pbnQoKSk7CisgICAgUmVmUHRyPFJhbmdl
PiByYW5nZSA9IGZyYW1lLT5yYW5nZUZvclBvaW50KHJvdW5kZWRJbnRQb2ludChyZXN1bHQucmVz
dWx0RnJhbWVQb2ludCgpKSk7CiAgICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167075</attachid>
            <date>2012-10-04 04:40:30 -0700</date>
            <delta_ts>2012-10-05 02:40:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Patch</filename>
            <type>text/plain</type>
            <size>23222</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwNTE3NTczLi4zMzdkMjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIg
QEAKKzIwMTItMTAtMDIgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdp
YS5jb20+CisKKyAgICAgICAgRGlzYW1iaWd1YXRlIHJlc3VsdEZyYW1lUG9pbnQgYW5kIG9yaWdp
bmFsIGhpdC10ZXN0IHBvaW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05ODEzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFNwbGl0IHRoZSBwb2ludCgpIG1ldGhvZCBpbiBIaXRUZXN0UmVzdWx0IGludG8g
dHdvLCByZXN1bHRGcmFtZVBvaW50IGFuZCBvcmlnaW5hbEZyYW1lUG9pbnQoKS4KKyAgICAgICAg
VG8gZG8gdGhpcyBIaXRUZXN0UmVzdWx0IG5vIGxvbmdlciBpbmhlcml0cyBwdWJsaWNhbGx5IGZy
b20gSGl0VGVzdExvY2F0aW9uLCB3aGljaCBzaG91bGQgYWxzbworICAgICAgICBoZWxwIHRvIGxh
dGVyIHNlcGFyYXRlIHRoZSB0d28gY2xhc3NlcyBtb3JlIGNvbXBsZXRlbHkuCisKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Om5vZGVzRnJv
bVJlY3QpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50SGFuZGxlcjo6ZXZlbnRNYXlTdGFydERyYWcpOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRIYW5kbGVyOjpoaXRUZXN0UmVzdWx0QXRQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5n
L0hpdFRlc3RSZXN1bHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6SGl0
VGVzdFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpvcGVyYXRvcj0p
OgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6YXBwZW5kKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oOgorICAgICAgICAoSGl0VGVzdFJlc3VsdCk6CisgICAg
ICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpyZXN1bHRGcmFtZVBvaW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OmlzUmVjdEJhc2VkVGVzdCk6CisgICAgICAgIChXZWJD
b3JlOjpIaXRUZXN0UmVzdWx0OjpvcmlnaW5hbEZyYW1lUG9pbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SGl0VGVzdFJlc3VsdDo6c2V0T3JpZ2luYWxGcmFtZVBvaW50KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6Omhp
dFRlc3QpOgorCiAyMDEyLTEwLTAyICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFJlbW92ZSBhbm9ueW1vdXMgbmFtZXNwYWNlIGZyb20gU3R5bGVCdWls
ZGVyLmNwcCBmb3IgYmV0dGVyIGRlYnVnZ2luZyBleHBlcmllbmNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAppbmRleCBiNzkyNzViLi41ZWY2NDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAg
LTEzODgsNyArMTM4OCw3IEBAIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IERvY3VtZW50Ojpub2Rlc0Zy
b21SZWN0KGludCBjZW50ZXJYLCBpbnQgY2VudGVyWSwgdW5zaWduZWQKICAgICAvLyBXaGVuIGln
bm9yZUNsaXBwaW5nIGlzIGZhbHNlLCB0aGlzIG1ldGhvZCByZXR1cm5zIG51bGwgZm9yIGNvb3Jk
aW5hdGVzIG91dHNpZGUgb2YgdGhlIHZpZXdwb3J0LgogICAgIGlmIChpZ25vcmVDbGlwcGluZykK
ICAgICAgICAgdHlwZSB8PSBIaXRUZXN0UmVxdWVzdDo6SWdub3JlQ2xpcHBpbmc7Ci0gICAgZWxz
ZSBpZiAoIWZyYW1lVmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0KCkuaW50ZXJzZWN0cyhIaXRUZXN0
UmVzdWx0OjpyZWN0Rm9yUG9pbnQocG9pbnQsIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90
dG9tUGFkZGluZywgbGVmdFBhZGRpbmcpKSkKKyAgICBlbHNlIGlmICghZnJhbWVWaWV3LT52aXNp
YmxlQ29udGVudFJlY3QoKS5pbnRlcnNlY3RzKEhpdFRlc3RMb2NhdGlvbjo6cmVjdEZvclBvaW50
KHBvaW50LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRk
aW5nKSkpCiAgICAgICAgIHJldHVybiAwOwogICAgIGlmIChhbGxvd1NoYWRvd0NvbnRlbnQpCiAg
ICAgICAgIHR5cGUgfD0gSGl0VGVzdFJlcXVlc3Q6OkFsbG93U2hhZG93Q29udGVudDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCBmZTIzMzBlLi4wODZmNThkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC03NTgsNyArNzU4LDcgQEAgYm9vbCBFdmVu
dEhhbmRsZXI6OmV2ZW50TWF5U3RhcnREcmFnKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZl
bnQpIGNvbnN0CiAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQodmlldy0+d2luZG93VG9Db250ZW50
cyhldmVudC5wb3NpdGlvbigpKSk7CiAgICAgbV9mcmFtZS0+Y29udGVudFJlbmRlcmVyKCktPmhp
dFRlc3QocmVxdWVzdCwgcmVzdWx0KTsKICAgICBEcmFnU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJu
IHJlc3VsdC5pbm5lck5vZGUoKSAmJiBwYWdlLT5kcmFnQ29udHJvbGxlcigpLT5kcmFnZ2FibGVO
b2RlKG1fZnJhbWUsIHJlc3VsdC5pbm5lck5vZGUoKSwgcm91bmRlZEludFBvaW50KHJlc3VsdC5w
b2ludCgpKSwgc3RhdGUpOworICAgIHJldHVybiByZXN1bHQuaW5uZXJOb2RlKCkgJiYgcGFnZS0+
ZHJhZ0NvbnRyb2xsZXIoKS0+ZHJhZ2dhYmxlTm9kZShtX2ZyYW1lLCByZXN1bHQuaW5uZXJOb2Rl
KCksIHJvdW5kZWRJbnRQb2ludChyZXN1bHQucG9pbnRJbk9yaWdpbmFsRnJhbWUoKSksIHN0YXRl
KTsKIH0KIAogdm9pZCBFdmVudEhhbmRsZXI6OnVwZGF0ZVNlbGVjdGlvbkZvck1vdXNlRHJhZygp
CkBAIC0xMDkzLDYgKzEwOTMsNyBAQCBIaXRUZXN0UmVzdWx0IEV2ZW50SGFuZGxlcjo6aGl0VGVz
dFJlc3VsdEF0UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBib29sCiAgICAgICAgIExh
eW91dFBvaW50IHdpZGdldFBvaW50KHJlc3VsdC5sb2NhbFBvaW50KCkueCgpICsgdmlldy0+c2Ny
b2xsWCgpIC0gcmVuZGVyV2lkZ2V0LT5ib3JkZXJMZWZ0KCkgLSByZW5kZXJXaWRnZXQtPnBhZGRp
bmdMZWZ0KCksIAogICAgICAgICAgICAgcmVzdWx0LmxvY2FsUG9pbnQoKS55KCkgKyB2aWV3LT5z
Y3JvbGxZKCkgLSByZW5kZXJXaWRnZXQtPmJvcmRlclRvcCgpIC0gcmVuZGVyV2lkZ2V0LT5wYWRk
aW5nVG9wKCkpOwogICAgICAgICBIaXRUZXN0UmVzdWx0IHdpZGdldEhpdFRlc3RSZXN1bHQod2lk
Z2V0UG9pbnQsIHBhZGRpbmcuaGVpZ2h0KCksIHBhZGRpbmcud2lkdGgoKSwgcGFkZGluZy5oZWln
aHQoKSwgcGFkZGluZy53aWR0aCgpKTsKKyAgICAgICAgd2lkZ2V0SGl0VGVzdFJlc3VsdC5zZXRQ
b2ludEluT3JpZ2luYWxGcmFtZShyZXN1bHQucG9pbnRJbk9yaWdpbmFsRnJhbWUoKSk7CiAgICAg
ICAgIGZyYW1lLT5jb250ZW50UmVuZGVyZXIoKS0+aGl0VGVzdChIaXRUZXN0UmVxdWVzdChoaXRU
eXBlKSwgd2lkZ2V0SGl0VGVzdFJlc3VsdCk7CiAgICAgICAgIHJlc3VsdCA9IHdpZGdldEhpdFRl
c3RSZXN1bHQ7CiAKQEAgLTExMTIsNyArMTExMyw3IEBAIEhpdFRlc3RSZXN1bHQgRXZlbnRIYW5k
bGVyOjpoaXRUZXN0UmVzdWx0QXRQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQsIGJvb2wK
ICAgICAgICAgICAgIEZyYW1lVmlldyogcmVzdWx0VmlldyA9IHJlc3VsdEZyYW1lLT52aWV3KCk7
CiAgICAgICAgICAgICBGcmFtZVZpZXcqIG1haW5WaWV3ID0gbWFpbkZyYW1lLT52aWV3KCk7CiAg
ICAgICAgICAgICBpZiAocmVzdWx0VmlldyAmJiBtYWluVmlldykgewotICAgICAgICAgICAgICAg
IEludFBvaW50IG1haW5GcmFtZVBvaW50ID0gbWFpblZpZXctPnJvb3RWaWV3VG9Db250ZW50cyhy
ZXN1bHRWaWV3LT5jb250ZW50c1RvUm9vdFZpZXcocm91bmRlZEludFBvaW50KHJlc3VsdC5wb2lu
dCgpKSkpOworICAgICAgICAgICAgICAgIEludFBvaW50IG1haW5GcmFtZVBvaW50ID0gbWFpblZp
ZXctPnJvb3RWaWV3VG9Db250ZW50cyhyZXN1bHRWaWV3LT5jb250ZW50c1RvUm9vdFZpZXcocm91
bmRlZEludFBvaW50KHJlc3VsdC5wb2ludEluUmVzdWx0RnJhbWUoKSkpKTsKICAgICAgICAgICAg
ICAgICByZXN1bHQgPSBtYWluRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQ
b2ludChtYWluRnJhbWVQb2ludCwgYWxsb3dTaGFkb3dDb250ZW50LCBpZ25vcmVDbGlwcGluZywg
dGVzdFNjcm9sbGJhcnMsIGhpdFR5cGUsIHBhZGRpbmcpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKaW5kZXggY2Mz
OTA1Ni4uZmJiNjFlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRl
c3RSZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0
LmNwcApAQCAtMjA0LDEyICsyMDQsMTQgQEAgSGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3VsdChj
b25zdCBMYXlvdXRQb2ludCYgcG9pbnQpIDogSGl0VGVzdExvY2F0aW9uKHBvaW50KQogCiBIaXRU
ZXN0UmVzdWx0OjpIaXRUZXN0UmVzdWx0KGNvbnN0IExheW91dFBvaW50JiBjZW50ZXJQb2ludCwg
dW5zaWduZWQgdG9wUGFkZGluZywgdW5zaWduZWQgcmlnaHRQYWRkaW5nLCB1bnNpZ25lZCBib3R0
b21QYWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGluZykKICAgICA6IEhpdFRlc3RMb2NhdGlvbihj
ZW50ZXJQb2ludCwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0
UGFkZGluZykKKyAgICAsIG1fb3JpZ2luYWxGcmFtZVBvaW50KHBvaW50KCkpCiAgICAgLCBtX2lz
T3ZlcldpZGdldChmYWxzZSkKIHsKIH0KIAogSGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3VsdChj
b25zdCBIaXRUZXN0TG9jYXRpb24mIG90aGVyKQogICAgIDogSGl0VGVzdExvY2F0aW9uKG90aGVy
KQorICAgICwgbV9vcmlnaW5hbEZyYW1lUG9pbnQocG9pbnQoKSkKICAgICAsIG1faXNPdmVyV2lk
Z2V0KGZhbHNlKQogewogfQpAQCAtMjE4LDYgKzIyMCw3IEBAIEhpdFRlc3RSZXN1bHQ6OkhpdFRl
c3RSZXN1bHQoY29uc3QgSGl0VGVzdFJlc3VsdCYgb3RoZXIpCiAgICAgOiBIaXRUZXN0TG9jYXRp
b24ob3RoZXIpCiAgICAgLCBtX2lubmVyTm9kZShvdGhlci5pbm5lck5vZGUoKSkKICAgICAsIG1f
aW5uZXJOb25TaGFyZWROb2RlKG90aGVyLmlubmVyTm9uU2hhcmVkTm9kZSgpKQorICAgICwgbV9v
cmlnaW5hbEZyYW1lUG9pbnQob3RoZXIubV9vcmlnaW5hbEZyYW1lUG9pbnQpCiAgICAgLCBtX2xv
Y2FsUG9pbnQob3RoZXIubG9jYWxQb2ludCgpKQogICAgICwgbV9pbm5lclVSTEVsZW1lbnQob3Ro
ZXIuVVJMRWxlbWVudCgpKQogICAgICwgbV9zY3JvbGxiYXIob3RoZXIuc2Nyb2xsYmFyKCkpCkBA
IC0yMzYsNiArMjM5LDcgQEAgSGl0VGVzdFJlc3VsdCYgSGl0VGVzdFJlc3VsdDo6b3BlcmF0b3I9
KGNvbnN0IEhpdFRlc3RSZXN1bHQmIG90aGVyKQogICAgIEhpdFRlc3RMb2NhdGlvbjo6b3BlcmF0
b3I9KG90aGVyKTsKICAgICBtX2lubmVyTm9kZSA9IG90aGVyLmlubmVyTm9kZSgpOwogICAgIG1f
aW5uZXJOb25TaGFyZWROb2RlID0gb3RoZXIuaW5uZXJOb25TaGFyZWROb2RlKCk7CisgICAgbV9v
cmlnaW5hbEZyYW1lUG9pbnQgPSBvdGhlci5tX29yaWdpbmFsRnJhbWVQb2ludDsKICAgICBtX2xv
Y2FsUG9pbnQgPSBvdGhlci5sb2NhbFBvaW50KCk7CiAgICAgbV9pbm5lclVSTEVsZW1lbnQgPSBv
dGhlci5VUkxFbGVtZW50KCk7CiAgICAgbV9zY3JvbGxiYXIgPSBvdGhlci5zY3JvbGxiYXIoKTsK
QEAgLTc0Niw2ICs3NTAsNyBAQCB2b2lkIEhpdFRlc3RSZXN1bHQ6OmFwcGVuZChjb25zdCBIaXRU
ZXN0UmVzdWx0JiBvdGhlcikKICAgICAgICAgbV9pbm5lck5vZGUgPSBvdGhlci5pbm5lck5vZGUo
KTsKICAgICAgICAgbV9pbm5lck5vblNoYXJlZE5vZGUgPSBvdGhlci5pbm5lck5vblNoYXJlZE5v
ZGUoKTsKICAgICAgICAgbV9sb2NhbFBvaW50ID0gb3RoZXIubG9jYWxQb2ludCgpOworICAgICAg
ICBtX29yaWdpbmFsRnJhbWVQb2ludCA9IG90aGVyLnBvaW50SW5PcmlnaW5hbEZyYW1lKCk7CiAg
ICAgICAgIG1faW5uZXJVUkxFbGVtZW50ID0gb3RoZXIuVVJMRWxlbWVudCgpOwogICAgICAgICBt
X3Njcm9sbGJhciA9IG90aGVyLnNjcm9sbGJhcigpOwogICAgICAgICBtX2lzT3ZlcldpZGdldCA9
IG90aGVyLmlzT3ZlcldpZGdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0hpdFRlc3RSZXN1bHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVz
dWx0LmgKaW5kZXggOTEyOWVlZC4uZGZiMjEzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SGl0VGVzdFJlc3VsdC5oCkBAIC0xMDAsNyArMTAwLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1f
aXNSZWN0aWxpbmVhcjsKIH07CiAKLWNsYXNzIEhpdFRlc3RSZXN1bHQgOiBwdWJsaWMgSGl0VGVz
dExvY2F0aW9uIHsKK2NsYXNzIEhpdFRlc3RSZXN1bHQgOiBwcm90ZWN0ZWQgSGl0VGVzdExvY2F0
aW9uIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIExpc3RIYXNoU2V0PFJlZlB0cjxOb2RlPiA+IE5v
ZGVTZXQ7CiAKQEAgLTEyMCw2ICsxMjAsMTYgQEAgcHVibGljOgogICAgIFNjcm9sbGJhciogc2Ny
b2xsYmFyKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxiYXIuZ2V0KCk7IH0KICAgICBib29sIGlz
T3ZlcldpZGdldCgpIGNvbnN0IHsgcmV0dXJuIG1faXNPdmVyV2lkZ2V0OyB9CiAKKyAgICAvLyBG
b3J3YXJkZWQgZnJvbSBIaXRUZXN0TG9jYXRpb24KKyAgICBib29sIGlzUmVjdEJhc2VkVGVzdCgp
IGNvbnN0IHsgcmV0dXJuIEhpdFRlc3RMb2NhdGlvbjo6aXNSZWN0QmFzZWRUZXN0KCk7IH0KKwor
ICAgIC8vIFRoZSBwb2ludCBpbiB0aGUgY29vcmRpbmF0ZXMgb2YgdGhlIHJlc3VsdCBmcmFtZSwg
dGhhdCBpcyB0aGUgZnJhbWUgY29udGFpbmluZyBpbm5lck5vZGUuCisgICAgTGF5b3V0UG9pbnQg
cG9pbnRJblJlc3VsdEZyYW1lKCkgY29uc3QgeyByZXR1cm4gSGl0VGVzdExvY2F0aW9uOjpwb2lu
dCgpOyB9CisKKyAgICAvLyBUaGUgcG9pbnQgaW4gdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSBvcmln
aW5hbCBmcmFtZSBoaXQtdGVzdGVkIHVzdWFsbHkgdGhlIG1haW4gZnJhbWUuCisgICAgTGF5b3V0
UG9pbnQgcG9pbnRJbk9yaWdpbmFsRnJhbWUoKSBjb25zdCB7IHJldHVybiBtX29yaWdpbmFsRnJh
bWVQb2ludDsgfQorICAgIHZvaWQgc2V0UG9pbnRJbk9yaWdpbmFsRnJhbWUoY29uc3QgTGF5b3V0
UG9pbnQmIHApIHsgbV9vcmlnaW5hbEZyYW1lUG9pbnQgPSBwOyB9CisKICAgICB2b2lkIHNldFRv
Tm9uU2hhZG93QW5jZXN0b3IoKTsKIAogICAgIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgaGl0VGVz
dExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KQEAgLTE4NSw2ICsxOTUsNyBAQCBw
cml2YXRlOgogCiAgICAgUmVmUHRyPE5vZGU+IG1faW5uZXJOb2RlOwogICAgIFJlZlB0cjxOb2Rl
PiBtX2lubmVyTm9uU2hhcmVkTm9kZTsKKyAgICBMYXlvdXRQb2ludCBtX29yaWdpbmFsRnJhbWVQ
b2ludDsKICAgICBMYXlvdXRQb2ludCBtX2xvY2FsUG9pbnQ7IC8vIEEgcG9pbnQgaW4gdGhlIGxv
Y2FsIGNvb3JkaW5hdGUgc3BhY2Ugb2YgbV9pbm5lck5vblNoYXJlZE5vZGUncyByZW5kZXJlci4g
QWxsb3dzIHVzIHRvIGVmZmljaWVudGx5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBkZXRlcm1pbmUgd2hlcmUgaW5zaWRlIHRoZSByZW5kZXJlciB3ZSBoaXQgb24gc3Vic2VxdWVu
dCBvcGVyYXRpb25zLgogICAgIFJlZlB0cjxFbGVtZW50PiBtX2lubmVyVVJMRWxlbWVudDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IGMwMTI3N2QuLmU3ZWRj
OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtMzQ4Miw3
ICszNDgyLDcgQEAgYm9vbCBSZW5kZXJMYXllcjo6aGl0VGVzdChjb25zdCBIaXRUZXN0UmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgSGl0VGVzdExvY2F0aW9uJgogICAgICAgICAvLyByZXR1cm4gb3Vy
c2VsdmVzLiBXZSBkbyB0aGlzIHNvIG1vdXNlIGV2ZW50cyBjb250aW51ZSBnZXR0aW5nIGRlbGl2
ZXJlZCBhZnRlciBhIGRyYWcgaGFzIAogICAgICAgICAvLyBleGl0ZWQgdGhlIFdlYlZpZXcsIGFu
ZCBzbyBoaXQgdGVzdGluZyBvdmVyIGEgc2Nyb2xsYmFyIGhpdHMgdGhlIGNvbnRlbnQgZG9jdW1l
bnQuCiAgICAgICAgIGlmICgocmVxdWVzdC5hY3RpdmUoKSB8fCByZXF1ZXN0LnJlbGVhc2UoKSkg
JiYgaXNSb290TGF5ZXIoKSkgewotICAgICAgICAgICAgcmVuZGVyZXIoKS0+dXBkYXRlSGl0VGVz
dFJlc3VsdChyZXN1bHQsIHRvUmVuZGVyVmlldyhyZW5kZXJlcigpKS0+ZmxpcEZvcldyaXRpbmdN
b2RlKHJlc3VsdC5wb2ludCgpKSk7CisgICAgICAgICAgICByZW5kZXJlcigpLT51cGRhdGVIaXRU
ZXN0UmVzdWx0KHJlc3VsdCwgdG9SZW5kZXJWaWV3KHJlbmRlcmVyKCkpLT5mbGlwRm9yV3JpdGlu
Z01vZGUoaGl0VGVzdExvY2F0aW9uLnBvaW50KCkpKTsKICAgICAgICAgICAgIGluc2lkZUxheWVy
ID0gdGhpczsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
MjhiNjlkZC4uYjk5YzI4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
OCBAQAorMjAxMi0xMC0wMiAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRp
Z2lhLmNvbT4KKworICAgICAgICBEaXNhbWJpZ3VhdGUgcmVzdWx0RnJhbWVQb2ludCBhbmQgb3Jp
Z2luYWwgaGl0LXRlc3QgcG9pbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTk4MTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkNocm9tZUNsaWVudEltcGw6Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KToKKyAgICAgICAgKiBz
cmMvQ29udGV4dE1lbnVDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6c2VsZWN0TWlz
c3BlbGxlZFdvcmQpOgorICAgICAgICAoV2ViS2l0OjpDb250ZXh0TWVudUNsaWVudEltcGw6Omdl
dEN1c3RvbU1lbnVGcm9tRGVmYXVsdEl0ZW1zKToKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjpjaGFyYWN0ZXJJbmRleEZvclBv
aW50KToKKwogMjAxMi0xMC0wMiAgSm9jaGVuIEVpc2luZ2VyICA8am9jaGVuQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBVc2UgY29ycmVjdCBndGVzdCBtYWNyb3MgZm9yIHRlc3RzIGZvciB0cnVl
L2ZhbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGll
bnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwu
Y3BwCmluZGV4IDdlMGY4ODUuLmU1MzhkYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCkBAIC02MDQsNyArNjA0LDcgQEAgdm9pZCBDaHJv
bWVDbGllbnRJbXBsOjptb3VzZURpZE1vdmVPdmVyRWxlbWVudCgKICAgICAgICAgICAgIFdpZGdl
dCogd2lkZ2V0ID0gdG9SZW5kZXJXaWRnZXQob2JqZWN0KS0+d2lkZ2V0KCk7CiAgICAgICAgICAg
ICBpZiAod2lkZ2V0ICYmIHdpZGdldC0+aXNQbHVnaW5Db250YWluZXIoKSkgewogICAgICAgICAg
ICAgICAgIFdlYlBsdWdpbkNvbnRhaW5lckltcGwqIHBsdWdpbiA9IHN0YXRpY19jYXN0PFdlYlBs
dWdpbkNvbnRhaW5lckltcGwqPih3aWRnZXQpOwotICAgICAgICAgICAgICAgIHVybCA9IHBsdWdp
bi0+cGx1Z2luKCktPmxpbmtBdFBvc2l0aW9uKHJlc3VsdC5yb3VuZGVkUG9pbnQoKSk7CisgICAg
ICAgICAgICAgICAgdXJsID0gcGx1Z2luLT5wbHVnaW4oKS0+bGlua0F0UG9zaXRpb24ocm91bmRl
ZEludFBvaW50KHJlc3VsdC5wb2ludEluUmVzdWx0RnJhbWUoKSkpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
Q29udGV4dE1lbnVDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nv
bnRleHRNZW51Q2xpZW50SW1wbC5jcHAKaW5kZXggNDBlNDE2ZS4uYTI2OTU0NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ29udGV4dE1lbnVDbGllbnRJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Db250ZXh0TWVudUNsaWVudEltcGwuY3Bw
CkBAIC0xMjAsNyArMTIwLDcgQEAgc3RhdGljIFN0cmluZyBzZWxlY3RNaXNzcGVsbGVkV29yZChj
b25zdCBDb250ZXh0TWVudSogZGVmYXVsdE1lbnUsIEZyYW1lKiBzZWxlY3QKIAogICAgIC8vIFNl
bGVjdGlvbiBpcyBlbXB0eSwgc28gY2hhbmdlIHRoZSBzZWxlY3Rpb24gdG8gdGhlIHdvcmQgdW5k
ZXIgdGhlIGN1cnNvci4KICAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3RSZXN1bHQgPSBzZWxlY3Rl
ZEZyYW1lLT5ldmVudEhhbmRsZXIoKS0+Ci0gICAgICAgIGhpdFRlc3RSZXN1bHRBdFBvaW50KHNl
bGVjdGVkRnJhbWUtPnBhZ2UoKS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCktPmhpdFRlc3RSZXN1
bHQoKS5wb2ludCgpLCB0cnVlKTsKKyAgICAgICAgaGl0VGVzdFJlc3VsdEF0UG9pbnQoc2VsZWN0
ZWRGcmFtZS0+cGFnZSgpLT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKS0+aGl0VGVzdFJlc3VsdCgp
LnBvaW50SW5PcmlnaW5hbEZyYW1lKCksIHRydWUpOwogICAgIE5vZGUqIGlubmVyTm9kZSA9IGhp
dFRlc3RSZXN1bHQuaW5uZXJOb2RlKCk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvcyhpbm5lck5v
ZGUtPnJlbmRlcmVyKCktPnBvc2l0aW9uRm9yUG9pbnQoCiAgICAgICAgIGhpdFRlc3RSZXN1bHQu
bG9jYWxQb2ludCgpKSk7CkBAIC0xNTgsNyArMTU4LDcgQEAgUGxhdGZvcm1NZW51RGVzY3JpcHRp
b24gQ29udGV4dE1lbnVDbGllbnRJbXBsOjpnZXRDdXN0b21NZW51RnJvbURlZmF1bHRJdGVtcygK
ICAgICBGcmFtZSogc2VsZWN0ZWRGcmFtZSA9IHIuaW5uZXJOb25TaGFyZWROb2RlKCktPmRvY3Vt
ZW50KCktPmZyYW1lKCk7CiAKICAgICBXZWJDb250ZXh0TWVudURhdGEgZGF0YTsKLSAgICBkYXRh
Lm1vdXNlUG9zaXRpb24gPSBzZWxlY3RlZEZyYW1lLT52aWV3KCktPmNvbnRlbnRzVG9XaW5kb3co
ci5yb3VuZGVkUG9pbnQoKSk7CisgICAgZGF0YS5tb3VzZVBvc2l0aW9uID0gcm91bmRlZEludFBv
aW50KHIucG9pbnRJbk9yaWdpbmFsRnJhbWUoKSk7CiAKICAgICAvLyBDb21wdXRlIGVkaXQgZmxh
Z3MuCiAgICAgZGF0YS5lZGl0RmxhZ3MgPSBXZWJDb250ZXh0TWVudURhdGE6OkNhbkRvTm9uZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCmluZGV4IDI1ZmEz
ZWYuLjcwNzc3YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZy
YW1lSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBs
LmNwcApAQCAtMTIwMiw3ICsxMjAyLDcgQEAgc2l6ZV90IFdlYkZyYW1lSW1wbDo6Y2hhcmFjdGVy
SW5kZXhGb3JQb2ludChjb25zdCBXZWJQb2ludCYgd2ViUG9pbnQpIGNvbnN0CiAKICAgICBJbnRQ
b2ludCBwb2ludCA9IGZyYW1lKCktPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyh3ZWJQb2ludCk7
CiAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBmcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGl0
VGVzdFJlc3VsdEF0UG9pbnQocG9pbnQsIGZhbHNlKTsKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdl
ID0gZnJhbWUoKS0+cmFuZ2VGb3JQb2ludChyZXN1bHQucm91bmRlZFBvaW50KCkpOworICAgIFJl
ZlB0cjxSYW5nZT4gcmFuZ2UgPSBmcmFtZSgpLT5yYW5nZUZvclBvaW50KHJvdW5kZWRJbnRQb2lu
dChyZXN1bHQucG9pbnRJblJlc3VsdEZyYW1lKCkpKTsKICAgICBpZiAoIXJhbmdlKQogICAgICAg
ICByZXR1cm4gbm90Rm91bmQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCBkNjJiOGVmLi5iZjNhYjhi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMTAtMDIgIEFsbGFuIFNh
bmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CisKKyAgICAgICAgRGlzYW1i
aWd1YXRlIHJlc3VsdEZyYW1lUG9pbnQgYW5kIG9yaWdpbmFsIGhpdC10ZXN0IHBvaW50CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODEzOQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN3aXRjaCB0byB1c2lu
ZyBvcmlnaW5hbCBmcmFtZSBwb2ludCBzaW5jZSB4IGFuZCB5IGFyZSBkb2N1bWVudGVkIGFzIGJl
aW5nIHRoZSBwb2ludCBvZiB0aGUgaGl0IHRlc3QuCisKKyAgICAgICAgKiBld2svZXdrX2ZyYW1l
LmNwcDoKKyAgICAgICAgKGV3a19mcmFtZV9oaXRfdGVzdF9uZXcpOgorCiAyMDEyLTEwLTAxICBC
cmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdGhlIFNh
ZmFyaSAyIC0+IFNhZmFyaSAzIGljb24gZGF0YWJhc2UgaW1wb3J0IGNvZGUuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfZnJhbWUuY3BwCmluZGV4IDU0NmVlYTUuLmYzN2E2ZTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfZnJhbWUuY3BwCkBAIC03MDIsOCArNzAyLDggQEAgRXdrX0hpdF9UZXN0KiBld2tf
ZnJhbWVfaGl0X3Rlc3RfbmV3KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgaW50IHgsIGlu
dCB5KQogICAgICAgICByZXR1cm4gMDsKIAogICAgIEV3a19IaXRfVGVzdCogaGl0VGVzdCA9IG5l
dyBFd2tfSGl0X1Rlc3Q7Ci0gICAgaGl0VGVzdC0+eCA9IHJlc3VsdC5wb2ludCgpLngoKTsKLSAg
ICBoaXRUZXN0LT55ID0gcmVzdWx0LnBvaW50KCkueSgpOworICAgIGhpdFRlc3QtPnggPSByZXN1
bHQucG9pbnRJbk9yaWdpbmFsRnJhbWUoKS54KCk7CisgICAgaGl0VGVzdC0+eSA9IHJlc3VsdC5w
b2ludEluT3JpZ2luYWxGcmFtZSgpLnkoKTsKICNpZiAwCiAgICAgLy8gRklYTUUKICAgICBoaXRU
ZXN0LT5ib3VuZGluZ19ib3gueCA9IHJlc3VsdC5ib3VuZGluZ0JveCgpLngoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5n
ZUxvZwppbmRleCA3ZjczYjNjLi5iZjk3ZDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMTItMTAtMDIgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBk
aWdpYS5jb20+CisKKyAgICAgICAgRGlzYW1iaWd1YXRlIHJlc3VsdEZyYW1lUG9pbnQgYW5kIG9y
aWdpbmFsIGhpdC10ZXN0IHBvaW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05ODEzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogd2Via2l0L3dlYmtpdGhpdHRlc3RyZXN1bHQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpraXQpOgorCiAyMDEyLTEwLTAxICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZW1vdmUgdGhlIFNhZmFyaSAyIC0+IFNhZmFyaSAzIGljb24gZGF0
YWJhc2UgaW1wb3J0IGNvZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0aGl0dGVzdHJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
aGl0dGVzdHJlc3VsdC5jcHAKaW5kZXggM2I2YTc3YS4uNGJiOTIzNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGhpdHRlc3RyZXN1bHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRoaXR0ZXN0cmVzdWx0LmNwcApAQCAtMzE4LDkgKzMx
OCw5IEBAIFdlYktpdEhpdFRlc3RSZXN1bHQqIGtpdChjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVz
dWx0JiByZXN1bHQpCiAgICAgdGFyZ2V0RnJhbWUgPSByZXN1bHQudGFyZ2V0RnJhbWUoKTsKICAg
ICBpZiAodGFyZ2V0RnJhbWUgJiYgdGFyZ2V0RnJhbWUtPnZpZXcoKSkgewogICAgICAgICAvLyBD
b252ZXJ0IGRvY3VtZW50IGNvb3JkcyB0byB3aWRnZXQgY29vcmRzLgotICAgICAgICBwb2ludCA9
IHRhcmdldEZyYW1lLT52aWV3KCktPmNvbnRlbnRzVG9XaW5kb3cocmVzdWx0LnJvdW5kZWRQb2lu
dCgpKTsKKyAgICAgICAgcG9pbnQgPSB0YXJnZXRGcmFtZS0+dmlldygpLT5jb250ZW50c1RvV2lu
ZG93KFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChyZXN1bHQucG9pbnRJblJlc3VsdEZyYW1lKCkp
KTsKICAgICB9IGVsc2UKLSAgICAgICAgcG9pbnQgPSByZXN1bHQucm91bmRlZFBvaW50KCk7Cisg
ICAgICAgIHBvaW50ID0gV2ViQ29yZTo6cm91bmRlZEludFBvaW50KHJlc3VsdC5vcmlnaW5hbEZy
YW1lUG9pbnQoKSk7CiAKICAgICByZXR1cm4gV0VCS0lUX0hJVF9URVNUX1JFU1VMVChnX29iamVj
dF9uZXcoV0VCS0lUX1RZUEVfSElUX1RFU1RfUkVTVUxULAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAibGluay11cmkiLCBsaW5rVVJJLmdldCgpLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCmluZGV4IDQ2ZmM5MGQuLmQ3YTA3MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAxMi0xMC0wMiAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVu
c2VuQGRpZ2lhLmNvbT4KKworICAgICAgICBEaXNhbWJpZ3VhdGUgcmVzdWx0RnJhbWVQb2ludCBh
bmQgb3JpZ2luYWwgaGl0LXRlc3QgcG9pbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTk4MTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5t
bToKKyAgICAgICAgKFdlYkNvbnRleHRNZW51Q2xpZW50OjpzaG93Q29udGV4dE1lbnUpOgorCiAy
MDEyLTEwLTAxICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZW1vdmUgdGhlIFNhZmFyaSAyIC0+IFNhZmFyaSAzIGljb24gZGF0YWJhc2UgaW1wb3J0IGNvZGUu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0
TWVudUNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRl
eHRNZW51Q2xpZW50Lm1tCmluZGV4IGUzMTMxMzYuLjQxNjE5YWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1t
CkBAIC0zNjYsNyArMzY2LDcgQEAgdm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6c2hvd0NvbnRl
eHRNZW51KCkKICAgICBpZiAoIWZyYW1lVmlldykKICAgICAgICAgcmV0dXJuOwogCi0gICAgSW50
UG9pbnQgcG9pbnQgPSBmcmFtZVZpZXctPmNvbnRlbnRzVG9XaW5kb3coY29udHJvbGxlci0+aGl0
VGVzdFJlc3VsdCgpLnJvdW5kZWRQb2ludCgpKTsKKyAgICBJbnRQb2ludCBwb2ludCA9IGZyYW1l
Vmlldy0+Y29udGVudHNUb1dpbmRvdyhyb3VuZGVkSW50UG9pbnQoY29udHJvbGxlci0+aGl0VGVz
dFJlc3VsdCgpLnBvaW50SW5SZXN1bHRGcmFtZSgpKSk7CiAgICAgTlNWaWV3KiB2aWV3ID0gZnJh
bWVWaWV3LT5kb2N1bWVudFZpZXcoKTsKICAgICBOU1BvaW50IG5zU2NyZWVuUG9pbnQgPSBbdmll
dyBjb252ZXJ0UG9pbnQ6cG9pbnQgdG9WaWV3Om5pbF07CiAgICAgLy8gU2hvdyB0aGUgY29udGV4
dHVhbCBtZW51IGZvciB0aGlzIGV2ZW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9B
cGkvcXdlYmZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAKaW5k
ZXggYWRiZmExYy4uNTc2YzFmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdl
YmZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCkBAIC0x
NjgyLDcgKzE2ODIsNyBAQCBRV2ViSGl0VGVzdFJlc3VsdFByaXZhdGU6OlFXZWJIaXRUZXN0UmVz
dWx0UHJpdmF0ZShjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0CiB7CiAgICAgaWYgKCFoaXRU
ZXN0LmlubmVyTm9kZSgpKQogICAgICAgICByZXR1cm47Ci0gICAgcG9zID0gaGl0VGVzdC5yb3Vu
ZGVkUG9pbnQoKTsKKyAgICBwb3MgPSBXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoaGl0VGVzdC5w
b2ludEluT3JpZ2luYWxGcmFtZSgpKTsKICAgICBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uIGRpcjsK
ICAgICB0aXRsZSA9IGhpdFRlc3QudGl0bGUoZGlyKTsKICAgICBsaW5rVGV4dCA9IGhpdFRlc3Qu
dGV4dENvbnRlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAppbmRleCA3Njk3ZjFhLi5k
ZDNhMWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCkBAIC0xNTUzLDcgKzE1NTMsNyBA
QCBJbnRQb2ludCBRV2ViUGFnZVByaXZhdGU6OlRvdWNoQWRqdXN0ZXI6OmZpbmRDYW5kaWRhdGVQ
b2ludEZvclRvdWNoKGNvbnN0IEludFBvaQogICAgIEZyYW1lVmlldyogdmlldyA9IGRvY3VtZW50
LT5mcmFtZSgpLT52aWV3KCk7CiAKICAgICAvLyBUb3VjaCByZWN0IGluIGNvbnRlbnRzIGNvb3Jk
aW5hdGVzLgotICAgIEludFJlY3QgdG91Y2hSZWN0KEhpdFRlc3RSZXN1bHQ6OnJlY3RGb3JQb2lu
dCh2aWV3LT53aW5kb3dUb0NvbnRlbnRzKEludFBvaW50KHgsIHkpKSwgbV90b3BQYWRkaW5nLCBt
X3JpZ2h0UGFkZGluZywgbV9ib3R0b21QYWRkaW5nLCBtX2xlZnRQYWRkaW5nKSk7CisgICAgSW50
UmVjdCB0b3VjaFJlY3QoSGl0VGVzdExvY2F0aW9uOjpyZWN0Rm9yUG9pbnQodmlldy0+d2luZG93
VG9Db250ZW50cyhJbnRQb2ludCh4LCB5KSksIG1fdG9wUGFkZGluZywgbV9yaWdodFBhZGRpbmcs
IG1fYm90dG9tUGFkZGluZywgbV9sZWZ0UGFkZGluZykpOwogCiAgICAgLy8gSXRlcmF0ZSBvdmVy
IHRoZSBsaXN0IG9mIG5vZGVzIGhpdCBsb29raW5nIGZvciB0aGUgb25lIHdob3NlIGJvdW5kaW5n
IGFyZWEKICAgICAvLyBoYXMgbGFyZ2VzdCBpbnRlcnNlY3Rpb24gd2l0aCB0aGUgdG91Y2ggYXJl
YSAocG9pbnQgKyBwYWRkaW5nKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggZTUzMWYyYS4uMmUwYmMxYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0xMC0wMiAgQWxsYW4gU2FuZGZl
bGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KKworICAgICAgICBEaXNhbWJpZ3Vh
dGUgcmVzdWx0RnJhbWVQb2ludCBhbmQgb3JpZ2luYWwgaGl0LXRlc3QgcG9pbnQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MTM5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIFF0IGRvY3VtZW50IHN0
YXRlcyB0aGUgcG9zIGF0dHJpYnV0ZSBvZiBRV2ViSGl0VGVzdFJlc3VsdCBpcyB0aGUgb3JpZ2lu
YWwgcG9zaXRpb24sCisgICAgICAgIHNvIHRoZSBjb2RlIG5vdyB1c2VzIG9yaWdpbmFsRnJhbWVQ
b2ludC4KKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkhpdFRl
c3RSZXN1bHRQcml2YXRlOjpRV2ViSGl0VGVzdFJlc3VsdFByaXZhdGUpOgorICAgICAgICAqIEFw
aS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OlRvdWNoQWRqdXN0ZXI6
OmZpbmRDYW5kaWRhdGVQb2ludEZvclRvdWNoKToKKwogMjAxMi0xMC0wMSAgQnJhZHkgRWlkc29u
ICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHRoZSBTYWZhcmkgMiAtPiBT
YWZhcmkgMyBpY29uIGRhdGFiYXNlIGltcG9ydCBjb2RlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDY4
ZTg4NWEuLjQ0YzUzNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0x
MC0wMiAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KKwor
ICAgICAgICBEaXNhbWJpZ3VhdGUgcmVzdWx0RnJhbWVQb2ludCBhbmQgb3JpZ2luYWwgaGl0LXRl
c3QgcG9pbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk4MTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6OmhhbmRsZUNvbnRleHRNZW51RXZlbnQp
OgorCiAyMDEyLTEwLTAxICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZW1vdmUgdGhlIFNhZmFyaSAyIC0+IFNhZmFyaSAzIGljb24gZGF0YWJhc2UgaW1wb3J0
IGNvZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCmluZGV4IGE5MGY2N2UuLmM0NDBjZTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYlZpZXcuY3BwCkBAIC0xMzYxLDcgKzEzNjEsNyBAQCBib29sIFdlYlZpZXc6OmhhbmRsZUNv
bnRleHRNZW51RXZlbnQoV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKICAgICBpZiAoIXZp
ZXcpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFBPSU5UIHBvaW50KHZpZXctPmNvbnRl
bnRzVG9XaW5kb3coY29udGV4dE1lbnVDb250cm9sbGVyLT5oaXRUZXN0UmVzdWx0KCkucm91bmRl
ZFBvaW50KCkpKTsKKyAgICBQT0lOVCBwb2ludCh2aWV3LT5jb250ZW50c1RvV2luZG93KHJvdW5k
ZWRJbnRQb2ludChjb250ZXh0TWVudUNvbnRyb2xsZXItPmhpdFRlc3RSZXN1bHQoKS5wb2ludElu
UmVzdWx0RnJhbWUoKSkpKTsKIAogICAgIC8vIFRyYW5zbGF0ZSB0aGUgcG9pbnQgdG8gc2NyZWVu
IGNvb3JkaW5hdGVzCiAgICAgaWYgKCE6OkNsaWVudFRvU2NyZWVuKG1fdmlld1dpbmRvdywgJnBv
aW50KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwppbmRleCBjYjczNzhhLi4zYmU4OGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTUgQEAKKzIwMTItMTAtMDIgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNl
bkBkaWdpYS5jb20+CisKKyAgICAgICAgRGlzYW1iaWd1YXRlIHJlc3VsdEZyYW1lUG9pbnQgYW5k
IG9yaWdpbmFsIGhpdC10ZXN0IHBvaW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05ODEzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvbnRleHRNZW51LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnU6OnNob3cpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6Y2hhcmFjdGVySW5kZXhGb3JQb2ludCk6CisKIDIwMTItMTAtMDEgIEJyYWR5IEVpZHNvbiAg
PGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB0aGUgU2FmYXJpIDIgLT4gU2Fm
YXJpIDMgaWNvbiBkYXRhYmFzZSBpbXBvcnQgY29kZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0TWVudS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29udGV4dE1lbnUuY3BwCmluZGV4IDNhOTFkOTAuLjAx
NjQ1ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJD
b250ZXh0TWVudS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkNvbnRleHRNZW51LmNwcApAQCAtODYsNyArODYsNyBAQCB2b2lkIFdlYkNvbnRleHRNZW51Ojpz
aG93KCkKIAogICAgIC8vIE1hcmsgdGhlIFdlYlBhZ2UgaGFzIGhhdmluZyBhIHNob3duIGNvbnRl
eHQgbWVudSB0aGVuIG5vdGlmeSB0aGUgVUlQcm9jZXNzLgogICAgIG1fcGFnZS0+Y29udGV4dE1l
bnVTaG93aW5nKCk7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNo
b3dDb250ZXh0TWVudSh2aWV3LT5jb250ZW50c1RvV2luZG93KGNvbnRyb2xsZXItPmhpdFRlc3RS
ZXN1bHQoKS5yb3VuZGVkUG9pbnQoKSksIHdlYkhpdFRlc3RSZXN1bHREYXRhLCBwcm9wb3NlZE1l
bnUsIEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOwor
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaG93Q29udGV4dE1lbnUo
dmlldy0+Y29udGVudHNUb1dpbmRvdyhyb3VuZGVkSW50UG9pbnQoY29udHJvbGxlci0+aGl0VGVz
dFJlc3VsdCgpLnBvaW50SW5SZXN1bHRGcmFtZSgpKSksIHdlYkhpdFRlc3RSZXN1bHREYXRhLCBw
cm9wb3NlZE1lbnUsIEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdl
dCgpKSkpOwogfQogCiB2b2lkIFdlYkNvbnRleHRNZW51OjppdGVtU2VsZWN0ZWQoY29uc3QgV2Vi
Q29udGV4dE1lbnVJdGVtRGF0YSYgaXRlbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCBjMmYwMTY1Li41ZjZhYjA1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VN
YWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdl
TWFjLm1tCkBAIC0zNzgsNyArMzc4LDcgQEAgdm9pZCBXZWJQYWdlOjpjaGFyYWN0ZXJJbmRleEZv
clBvaW50KEludFBvaW50IHBvaW50LCB1aW50NjRfdCYgaW5kZXgpCiAgICAgSGl0VGVzdFJlc3Vs
dCByZXN1bHQgPSBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KHBv
aW50LCBmYWxzZSk7CiAgICAgZnJhbWUgPSByZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCkgPyBy
ZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCktPmRvY3VtZW50KCktPmZyYW1lKCkgOiBtX3BhZ2Ut
PmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICAKLSAgICBSZWZQ
dHI8UmFuZ2U+IHJhbmdlID0gZnJhbWUtPnJhbmdlRm9yUG9pbnQocmVzdWx0LnJvdW5kZWRQb2lu
dCgpKTsKKyAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gZnJhbWUtPnJhbmdlRm9yUG9pbnQocm91
bmRlZEludFBvaW50KHJlc3VsdC5wb2ludEluUmVzdWx0RnJhbWUoKSkpOwogICAgIGlmICghcmFu
Z2UpCiAgICAgICAgIHJldHVybjsKIAo=
</data>
<flag name="commit-queue"
          id="179637"
          type_id="3"
          status="-"
          setter="gtk-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167291</attachid>
            <date>2012-10-05 02:40:25 -0700</date>
            <delta_ts>2012-10-19 07:30:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Patch</filename>
            <type>text/plain</type>
            <size>23224</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwNTE3NTczLi4zMzdkMjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIg
QEAKKzIwMTItMTAtMDIgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdp
YS5jb20+CisKKyAgICAgICAgRGlzYW1iaWd1YXRlIHJlc3VsdEZyYW1lUG9pbnQgYW5kIG9yaWdp
bmFsIGhpdC10ZXN0IHBvaW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05ODEzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFNwbGl0IHRoZSBwb2ludCgpIG1ldGhvZCBpbiBIaXRUZXN0UmVzdWx0IGludG8g
dHdvLCByZXN1bHRGcmFtZVBvaW50IGFuZCBvcmlnaW5hbEZyYW1lUG9pbnQoKS4KKyAgICAgICAg
VG8gZG8gdGhpcyBIaXRUZXN0UmVzdWx0IG5vIGxvbmdlciBpbmhlcml0cyBwdWJsaWNhbGx5IGZy
b20gSGl0VGVzdExvY2F0aW9uLCB3aGljaCBzaG91bGQgYWxzbworICAgICAgICBoZWxwIHRvIGxh
dGVyIHNlcGFyYXRlIHRoZSB0d28gY2xhc3NlcyBtb3JlIGNvbXBsZXRlbHkuCisKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Om5vZGVzRnJv
bVJlY3QpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50SGFuZGxlcjo6ZXZlbnRNYXlTdGFydERyYWcpOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRIYW5kbGVyOjpoaXRUZXN0UmVzdWx0QXRQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5n
L0hpdFRlc3RSZXN1bHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6SGl0
VGVzdFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpvcGVyYXRvcj0p
OgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6YXBwZW5kKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oOgorICAgICAgICAoSGl0VGVzdFJlc3VsdCk6CisgICAg
ICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpyZXN1bHRGcmFtZVBvaW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OmlzUmVjdEJhc2VkVGVzdCk6CisgICAgICAgIChXZWJD
b3JlOjpIaXRUZXN0UmVzdWx0OjpvcmlnaW5hbEZyYW1lUG9pbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SGl0VGVzdFJlc3VsdDo6c2V0T3JpZ2luYWxGcmFtZVBvaW50KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6Omhp
dFRlc3QpOgorCiAyMDEyLTEwLTAyICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFJlbW92ZSBhbm9ueW1vdXMgbmFtZXNwYWNlIGZyb20gU3R5bGVCdWls
ZGVyLmNwcCBmb3IgYmV0dGVyIGRlYnVnZ2luZyBleHBlcmllbmNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAppbmRleCBiNzkyNzViLi41ZWY2NDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAg
LTEzODgsNyArMTM4OCw3IEBAIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IERvY3VtZW50Ojpub2Rlc0Zy
b21SZWN0KGludCBjZW50ZXJYLCBpbnQgY2VudGVyWSwgdW5zaWduZWQKICAgICAvLyBXaGVuIGln
bm9yZUNsaXBwaW5nIGlzIGZhbHNlLCB0aGlzIG1ldGhvZCByZXR1cm5zIG51bGwgZm9yIGNvb3Jk
aW5hdGVzIG91dHNpZGUgb2YgdGhlIHZpZXdwb3J0LgogICAgIGlmIChpZ25vcmVDbGlwcGluZykK
ICAgICAgICAgdHlwZSB8PSBIaXRUZXN0UmVxdWVzdDo6SWdub3JlQ2xpcHBpbmc7Ci0gICAgZWxz
ZSBpZiAoIWZyYW1lVmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0KCkuaW50ZXJzZWN0cyhIaXRUZXN0
UmVzdWx0OjpyZWN0Rm9yUG9pbnQocG9pbnQsIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90
dG9tUGFkZGluZywgbGVmdFBhZGRpbmcpKSkKKyAgICBlbHNlIGlmICghZnJhbWVWaWV3LT52aXNp
YmxlQ29udGVudFJlY3QoKS5pbnRlcnNlY3RzKEhpdFRlc3RMb2NhdGlvbjo6cmVjdEZvclBvaW50
KHBvaW50LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRk
aW5nKSkpCiAgICAgICAgIHJldHVybiAwOwogICAgIGlmIChhbGxvd1NoYWRvd0NvbnRlbnQpCiAg
ICAgICAgIHR5cGUgfD0gSGl0VGVzdFJlcXVlc3Q6OkFsbG93U2hhZG93Q29udGVudDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCBmZTIzMzBlLi4wODZmNThkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC03NTgsNyArNzU4LDcgQEAgYm9vbCBFdmVu
dEhhbmRsZXI6OmV2ZW50TWF5U3RhcnREcmFnKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZl
bnQpIGNvbnN0CiAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQodmlldy0+d2luZG93VG9Db250ZW50
cyhldmVudC5wb3NpdGlvbigpKSk7CiAgICAgbV9mcmFtZS0+Y29udGVudFJlbmRlcmVyKCktPmhp
dFRlc3QocmVxdWVzdCwgcmVzdWx0KTsKICAgICBEcmFnU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJu
IHJlc3VsdC5pbm5lck5vZGUoKSAmJiBwYWdlLT5kcmFnQ29udHJvbGxlcigpLT5kcmFnZ2FibGVO
b2RlKG1fZnJhbWUsIHJlc3VsdC5pbm5lck5vZGUoKSwgcm91bmRlZEludFBvaW50KHJlc3VsdC5w
b2ludCgpKSwgc3RhdGUpOworICAgIHJldHVybiByZXN1bHQuaW5uZXJOb2RlKCkgJiYgcGFnZS0+
ZHJhZ0NvbnRyb2xsZXIoKS0+ZHJhZ2dhYmxlTm9kZShtX2ZyYW1lLCByZXN1bHQuaW5uZXJOb2Rl
KCksIHJvdW5kZWRJbnRQb2ludChyZXN1bHQucG9pbnRJbk9yaWdpbmFsRnJhbWUoKSksIHN0YXRl
KTsKIH0KIAogdm9pZCBFdmVudEhhbmRsZXI6OnVwZGF0ZVNlbGVjdGlvbkZvck1vdXNlRHJhZygp
CkBAIC0xMDkzLDYgKzEwOTMsNyBAQCBIaXRUZXN0UmVzdWx0IEV2ZW50SGFuZGxlcjo6aGl0VGVz
dFJlc3VsdEF0UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBib29sCiAgICAgICAgIExh
eW91dFBvaW50IHdpZGdldFBvaW50KHJlc3VsdC5sb2NhbFBvaW50KCkueCgpICsgdmlldy0+c2Ny
b2xsWCgpIC0gcmVuZGVyV2lkZ2V0LT5ib3JkZXJMZWZ0KCkgLSByZW5kZXJXaWRnZXQtPnBhZGRp
bmdMZWZ0KCksIAogICAgICAgICAgICAgcmVzdWx0LmxvY2FsUG9pbnQoKS55KCkgKyB2aWV3LT5z
Y3JvbGxZKCkgLSByZW5kZXJXaWRnZXQtPmJvcmRlclRvcCgpIC0gcmVuZGVyV2lkZ2V0LT5wYWRk
aW5nVG9wKCkpOwogICAgICAgICBIaXRUZXN0UmVzdWx0IHdpZGdldEhpdFRlc3RSZXN1bHQod2lk
Z2V0UG9pbnQsIHBhZGRpbmcuaGVpZ2h0KCksIHBhZGRpbmcud2lkdGgoKSwgcGFkZGluZy5oZWln
aHQoKSwgcGFkZGluZy53aWR0aCgpKTsKKyAgICAgICAgd2lkZ2V0SGl0VGVzdFJlc3VsdC5zZXRQ
b2ludEluT3JpZ2luYWxGcmFtZShyZXN1bHQucG9pbnRJbk9yaWdpbmFsRnJhbWUoKSk7CiAgICAg
ICAgIGZyYW1lLT5jb250ZW50UmVuZGVyZXIoKS0+aGl0VGVzdChIaXRUZXN0UmVxdWVzdChoaXRU
eXBlKSwgd2lkZ2V0SGl0VGVzdFJlc3VsdCk7CiAgICAgICAgIHJlc3VsdCA9IHdpZGdldEhpdFRl
c3RSZXN1bHQ7CiAKQEAgLTExMTIsNyArMTExMyw3IEBAIEhpdFRlc3RSZXN1bHQgRXZlbnRIYW5k
bGVyOjpoaXRUZXN0UmVzdWx0QXRQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQsIGJvb2wK
ICAgICAgICAgICAgIEZyYW1lVmlldyogcmVzdWx0VmlldyA9IHJlc3VsdEZyYW1lLT52aWV3KCk7
CiAgICAgICAgICAgICBGcmFtZVZpZXcqIG1haW5WaWV3ID0gbWFpbkZyYW1lLT52aWV3KCk7CiAg
ICAgICAgICAgICBpZiAocmVzdWx0VmlldyAmJiBtYWluVmlldykgewotICAgICAgICAgICAgICAg
IEludFBvaW50IG1haW5GcmFtZVBvaW50ID0gbWFpblZpZXctPnJvb3RWaWV3VG9Db250ZW50cyhy
ZXN1bHRWaWV3LT5jb250ZW50c1RvUm9vdFZpZXcocm91bmRlZEludFBvaW50KHJlc3VsdC5wb2lu
dCgpKSkpOworICAgICAgICAgICAgICAgIEludFBvaW50IG1haW5GcmFtZVBvaW50ID0gbWFpblZp
ZXctPnJvb3RWaWV3VG9Db250ZW50cyhyZXN1bHRWaWV3LT5jb250ZW50c1RvUm9vdFZpZXcocm91
bmRlZEludFBvaW50KHJlc3VsdC5wb2ludEluUmVzdWx0RnJhbWUoKSkpKTsKICAgICAgICAgICAg
ICAgICByZXN1bHQgPSBtYWluRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQ
b2ludChtYWluRnJhbWVQb2ludCwgYWxsb3dTaGFkb3dDb250ZW50LCBpZ25vcmVDbGlwcGluZywg
dGVzdFNjcm9sbGJhcnMsIGhpdFR5cGUsIHBhZGRpbmcpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKaW5kZXggY2Mz
OTA1Ni4uZmJiNjFlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRl
c3RSZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0
LmNwcApAQCAtMjA0LDEyICsyMDQsMTQgQEAgSGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3VsdChj
b25zdCBMYXlvdXRQb2ludCYgcG9pbnQpIDogSGl0VGVzdExvY2F0aW9uKHBvaW50KQogCiBIaXRU
ZXN0UmVzdWx0OjpIaXRUZXN0UmVzdWx0KGNvbnN0IExheW91dFBvaW50JiBjZW50ZXJQb2ludCwg
dW5zaWduZWQgdG9wUGFkZGluZywgdW5zaWduZWQgcmlnaHRQYWRkaW5nLCB1bnNpZ25lZCBib3R0
b21QYWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGluZykKICAgICA6IEhpdFRlc3RMb2NhdGlvbihj
ZW50ZXJQb2ludCwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0
UGFkZGluZykKKyAgICAsIG1fb3JpZ2luYWxGcmFtZVBvaW50KHBvaW50KCkpCiAgICAgLCBtX2lz
T3ZlcldpZGdldChmYWxzZSkKIHsKIH0KIAogSGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3VsdChj
b25zdCBIaXRUZXN0TG9jYXRpb24mIG90aGVyKQogICAgIDogSGl0VGVzdExvY2F0aW9uKG90aGVy
KQorICAgICwgbV9vcmlnaW5hbEZyYW1lUG9pbnQocG9pbnQoKSkKICAgICAsIG1faXNPdmVyV2lk
Z2V0KGZhbHNlKQogewogfQpAQCAtMjE4LDYgKzIyMCw3IEBAIEhpdFRlc3RSZXN1bHQ6OkhpdFRl
c3RSZXN1bHQoY29uc3QgSGl0VGVzdFJlc3VsdCYgb3RoZXIpCiAgICAgOiBIaXRUZXN0TG9jYXRp
b24ob3RoZXIpCiAgICAgLCBtX2lubmVyTm9kZShvdGhlci5pbm5lck5vZGUoKSkKICAgICAsIG1f
aW5uZXJOb25TaGFyZWROb2RlKG90aGVyLmlubmVyTm9uU2hhcmVkTm9kZSgpKQorICAgICwgbV9v
cmlnaW5hbEZyYW1lUG9pbnQob3RoZXIubV9vcmlnaW5hbEZyYW1lUG9pbnQpCiAgICAgLCBtX2xv
Y2FsUG9pbnQob3RoZXIubG9jYWxQb2ludCgpKQogICAgICwgbV9pbm5lclVSTEVsZW1lbnQob3Ro
ZXIuVVJMRWxlbWVudCgpKQogICAgICwgbV9zY3JvbGxiYXIob3RoZXIuc2Nyb2xsYmFyKCkpCkBA
IC0yMzYsNiArMjM5LDcgQEAgSGl0VGVzdFJlc3VsdCYgSGl0VGVzdFJlc3VsdDo6b3BlcmF0b3I9
KGNvbnN0IEhpdFRlc3RSZXN1bHQmIG90aGVyKQogICAgIEhpdFRlc3RMb2NhdGlvbjo6b3BlcmF0
b3I9KG90aGVyKTsKICAgICBtX2lubmVyTm9kZSA9IG90aGVyLmlubmVyTm9kZSgpOwogICAgIG1f
aW5uZXJOb25TaGFyZWROb2RlID0gb3RoZXIuaW5uZXJOb25TaGFyZWROb2RlKCk7CisgICAgbV9v
cmlnaW5hbEZyYW1lUG9pbnQgPSBvdGhlci5tX29yaWdpbmFsRnJhbWVQb2ludDsKICAgICBtX2xv
Y2FsUG9pbnQgPSBvdGhlci5sb2NhbFBvaW50KCk7CiAgICAgbV9pbm5lclVSTEVsZW1lbnQgPSBv
dGhlci5VUkxFbGVtZW50KCk7CiAgICAgbV9zY3JvbGxiYXIgPSBvdGhlci5zY3JvbGxiYXIoKTsK
QEAgLTc0Niw2ICs3NTAsNyBAQCB2b2lkIEhpdFRlc3RSZXN1bHQ6OmFwcGVuZChjb25zdCBIaXRU
ZXN0UmVzdWx0JiBvdGhlcikKICAgICAgICAgbV9pbm5lck5vZGUgPSBvdGhlci5pbm5lck5vZGUo
KTsKICAgICAgICAgbV9pbm5lck5vblNoYXJlZE5vZGUgPSBvdGhlci5pbm5lck5vblNoYXJlZE5v
ZGUoKTsKICAgICAgICAgbV9sb2NhbFBvaW50ID0gb3RoZXIubG9jYWxQb2ludCgpOworICAgICAg
ICBtX29yaWdpbmFsRnJhbWVQb2ludCA9IG90aGVyLnBvaW50SW5PcmlnaW5hbEZyYW1lKCk7CiAg
ICAgICAgIG1faW5uZXJVUkxFbGVtZW50ID0gb3RoZXIuVVJMRWxlbWVudCgpOwogICAgICAgICBt
X3Njcm9sbGJhciA9IG90aGVyLnNjcm9sbGJhcigpOwogICAgICAgICBtX2lzT3ZlcldpZGdldCA9
IG90aGVyLmlzT3ZlcldpZGdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0hpdFRlc3RSZXN1bHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVz
dWx0LmgKaW5kZXggOTEyOWVlZC4uZGZiMjEzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SGl0VGVzdFJlc3VsdC5oCkBAIC0xMDAsNyArMTAwLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1f
aXNSZWN0aWxpbmVhcjsKIH07CiAKLWNsYXNzIEhpdFRlc3RSZXN1bHQgOiBwdWJsaWMgSGl0VGVz
dExvY2F0aW9uIHsKK2NsYXNzIEhpdFRlc3RSZXN1bHQgOiBwcm90ZWN0ZWQgSGl0VGVzdExvY2F0
aW9uIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIExpc3RIYXNoU2V0PFJlZlB0cjxOb2RlPiA+IE5v
ZGVTZXQ7CiAKQEAgLTEyMCw2ICsxMjAsMTYgQEAgcHVibGljOgogICAgIFNjcm9sbGJhciogc2Ny
b2xsYmFyKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxiYXIuZ2V0KCk7IH0KICAgICBib29sIGlz
T3ZlcldpZGdldCgpIGNvbnN0IHsgcmV0dXJuIG1faXNPdmVyV2lkZ2V0OyB9CiAKKyAgICAvLyBG
b3J3YXJkZWQgZnJvbSBIaXRUZXN0TG9jYXRpb24KKyAgICBib29sIGlzUmVjdEJhc2VkVGVzdCgp
IGNvbnN0IHsgcmV0dXJuIEhpdFRlc3RMb2NhdGlvbjo6aXNSZWN0QmFzZWRUZXN0KCk7IH0KKwor
ICAgIC8vIFRoZSBwb2ludCBpbiB0aGUgY29vcmRpbmF0ZXMgb2YgdGhlIHJlc3VsdCBmcmFtZSwg
dGhhdCBpcyB0aGUgZnJhbWUgY29udGFpbmluZyBpbm5lck5vZGUuCisgICAgTGF5b3V0UG9pbnQg
cG9pbnRJblJlc3VsdEZyYW1lKCkgY29uc3QgeyByZXR1cm4gSGl0VGVzdExvY2F0aW9uOjpwb2lu
dCgpOyB9CisKKyAgICAvLyBUaGUgcG9pbnQgaW4gdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSBvcmln
aW5hbCBmcmFtZSBoaXQtdGVzdGVkIHVzdWFsbHkgdGhlIG1haW4gZnJhbWUuCisgICAgTGF5b3V0
UG9pbnQgcG9pbnRJbk9yaWdpbmFsRnJhbWUoKSBjb25zdCB7IHJldHVybiBtX29yaWdpbmFsRnJh
bWVQb2ludDsgfQorICAgIHZvaWQgc2V0UG9pbnRJbk9yaWdpbmFsRnJhbWUoY29uc3QgTGF5b3V0
UG9pbnQmIHApIHsgbV9vcmlnaW5hbEZyYW1lUG9pbnQgPSBwOyB9CisKICAgICB2b2lkIHNldFRv
Tm9uU2hhZG93QW5jZXN0b3IoKTsKIAogICAgIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgaGl0VGVz
dExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KQEAgLTE4NSw2ICsxOTUsNyBAQCBw
cml2YXRlOgogCiAgICAgUmVmUHRyPE5vZGU+IG1faW5uZXJOb2RlOwogICAgIFJlZlB0cjxOb2Rl
PiBtX2lubmVyTm9uU2hhcmVkTm9kZTsKKyAgICBMYXlvdXRQb2ludCBtX29yaWdpbmFsRnJhbWVQ
b2ludDsKICAgICBMYXlvdXRQb2ludCBtX2xvY2FsUG9pbnQ7IC8vIEEgcG9pbnQgaW4gdGhlIGxv
Y2FsIGNvb3JkaW5hdGUgc3BhY2Ugb2YgbV9pbm5lck5vblNoYXJlZE5vZGUncyByZW5kZXJlci4g
QWxsb3dzIHVzIHRvIGVmZmljaWVudGx5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBkZXRlcm1pbmUgd2hlcmUgaW5zaWRlIHRoZSByZW5kZXJlciB3ZSBoaXQgb24gc3Vic2VxdWVu
dCBvcGVyYXRpb25zLgogICAgIFJlZlB0cjxFbGVtZW50PiBtX2lubmVyVVJMRWxlbWVudDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IGMwMTI3N2QuLmU3ZWRj
OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtMzQ4Miw3
ICszNDgyLDcgQEAgYm9vbCBSZW5kZXJMYXllcjo6aGl0VGVzdChjb25zdCBIaXRUZXN0UmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgSGl0VGVzdExvY2F0aW9uJgogICAgICAgICAvLyByZXR1cm4gb3Vy
c2VsdmVzLiBXZSBkbyB0aGlzIHNvIG1vdXNlIGV2ZW50cyBjb250aW51ZSBnZXR0aW5nIGRlbGl2
ZXJlZCBhZnRlciBhIGRyYWcgaGFzIAogICAgICAgICAvLyBleGl0ZWQgdGhlIFdlYlZpZXcsIGFu
ZCBzbyBoaXQgdGVzdGluZyBvdmVyIGEgc2Nyb2xsYmFyIGhpdHMgdGhlIGNvbnRlbnQgZG9jdW1l
bnQuCiAgICAgICAgIGlmICgocmVxdWVzdC5hY3RpdmUoKSB8fCByZXF1ZXN0LnJlbGVhc2UoKSkg
JiYgaXNSb290TGF5ZXIoKSkgewotICAgICAgICAgICAgcmVuZGVyZXIoKS0+dXBkYXRlSGl0VGVz
dFJlc3VsdChyZXN1bHQsIHRvUmVuZGVyVmlldyhyZW5kZXJlcigpKS0+ZmxpcEZvcldyaXRpbmdN
b2RlKHJlc3VsdC5wb2ludCgpKSk7CisgICAgICAgICAgICByZW5kZXJlcigpLT51cGRhdGVIaXRU
ZXN0UmVzdWx0KHJlc3VsdCwgdG9SZW5kZXJWaWV3KHJlbmRlcmVyKCkpLT5mbGlwRm9yV3JpdGlu
Z01vZGUoaGl0VGVzdExvY2F0aW9uLnBvaW50KCkpKTsKICAgICAgICAgICAgIGluc2lkZUxheWVy
ID0gdGhpczsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
MjhiNjlkZC4uYjk5YzI4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
OCBAQAorMjAxMi0xMC0wMiAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRp
Z2lhLmNvbT4KKworICAgICAgICBEaXNhbWJpZ3VhdGUgcmVzdWx0RnJhbWVQb2ludCBhbmQgb3Jp
Z2luYWwgaGl0LXRlc3QgcG9pbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTk4MTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkNocm9tZUNsaWVudEltcGw6Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KToKKyAgICAgICAgKiBz
cmMvQ29udGV4dE1lbnVDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6c2VsZWN0TWlz
c3BlbGxlZFdvcmQpOgorICAgICAgICAoV2ViS2l0OjpDb250ZXh0TWVudUNsaWVudEltcGw6Omdl
dEN1c3RvbU1lbnVGcm9tRGVmYXVsdEl0ZW1zKToKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjpjaGFyYWN0ZXJJbmRleEZvclBv
aW50KToKKwogMjAxMi0xMC0wMiAgSm9jaGVuIEVpc2luZ2VyICA8am9jaGVuQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBVc2UgY29ycmVjdCBndGVzdCBtYWNyb3MgZm9yIHRlc3RzIGZvciB0cnVl
L2ZhbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGll
bnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwu
Y3BwCmluZGV4IDdlMGY4ODUuLmU1MzhkYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCkBAIC02MDQsNyArNjA0LDcgQEAgdm9pZCBDaHJv
bWVDbGllbnRJbXBsOjptb3VzZURpZE1vdmVPdmVyRWxlbWVudCgKICAgICAgICAgICAgIFdpZGdl
dCogd2lkZ2V0ID0gdG9SZW5kZXJXaWRnZXQob2JqZWN0KS0+d2lkZ2V0KCk7CiAgICAgICAgICAg
ICBpZiAod2lkZ2V0ICYmIHdpZGdldC0+aXNQbHVnaW5Db250YWluZXIoKSkgewogICAgICAgICAg
ICAgICAgIFdlYlBsdWdpbkNvbnRhaW5lckltcGwqIHBsdWdpbiA9IHN0YXRpY19jYXN0PFdlYlBs
dWdpbkNvbnRhaW5lckltcGwqPih3aWRnZXQpOwotICAgICAgICAgICAgICAgIHVybCA9IHBsdWdp
bi0+cGx1Z2luKCktPmxpbmtBdFBvc2l0aW9uKHJlc3VsdC5yb3VuZGVkUG9pbnQoKSk7CisgICAg
ICAgICAgICAgICAgdXJsID0gcGx1Z2luLT5wbHVnaW4oKS0+bGlua0F0UG9zaXRpb24ocm91bmRl
ZEludFBvaW50KHJlc3VsdC5wb2ludEluUmVzdWx0RnJhbWUoKSkpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
Q29udGV4dE1lbnVDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nv
bnRleHRNZW51Q2xpZW50SW1wbC5jcHAKaW5kZXggNDBlNDE2ZS4uYTI2OTU0NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ29udGV4dE1lbnVDbGllbnRJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Db250ZXh0TWVudUNsaWVudEltcGwuY3Bw
CkBAIC0xMjAsNyArMTIwLDcgQEAgc3RhdGljIFN0cmluZyBzZWxlY3RNaXNzcGVsbGVkV29yZChj
b25zdCBDb250ZXh0TWVudSogZGVmYXVsdE1lbnUsIEZyYW1lKiBzZWxlY3QKIAogICAgIC8vIFNl
bGVjdGlvbiBpcyBlbXB0eSwgc28gY2hhbmdlIHRoZSBzZWxlY3Rpb24gdG8gdGhlIHdvcmQgdW5k
ZXIgdGhlIGN1cnNvci4KICAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3RSZXN1bHQgPSBzZWxlY3Rl
ZEZyYW1lLT5ldmVudEhhbmRsZXIoKS0+Ci0gICAgICAgIGhpdFRlc3RSZXN1bHRBdFBvaW50KHNl
bGVjdGVkRnJhbWUtPnBhZ2UoKS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCktPmhpdFRlc3RSZXN1
bHQoKS5wb2ludCgpLCB0cnVlKTsKKyAgICAgICAgaGl0VGVzdFJlc3VsdEF0UG9pbnQoc2VsZWN0
ZWRGcmFtZS0+cGFnZSgpLT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKS0+aGl0VGVzdFJlc3VsdCgp
LnBvaW50SW5PcmlnaW5hbEZyYW1lKCksIHRydWUpOwogICAgIE5vZGUqIGlubmVyTm9kZSA9IGhp
dFRlc3RSZXN1bHQuaW5uZXJOb2RlKCk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvcyhpbm5lck5v
ZGUtPnJlbmRlcmVyKCktPnBvc2l0aW9uRm9yUG9pbnQoCiAgICAgICAgIGhpdFRlc3RSZXN1bHQu
bG9jYWxQb2ludCgpKSk7CkBAIC0xNTgsNyArMTU4LDcgQEAgUGxhdGZvcm1NZW51RGVzY3JpcHRp
b24gQ29udGV4dE1lbnVDbGllbnRJbXBsOjpnZXRDdXN0b21NZW51RnJvbURlZmF1bHRJdGVtcygK
ICAgICBGcmFtZSogc2VsZWN0ZWRGcmFtZSA9IHIuaW5uZXJOb25TaGFyZWROb2RlKCktPmRvY3Vt
ZW50KCktPmZyYW1lKCk7CiAKICAgICBXZWJDb250ZXh0TWVudURhdGEgZGF0YTsKLSAgICBkYXRh
Lm1vdXNlUG9zaXRpb24gPSBzZWxlY3RlZEZyYW1lLT52aWV3KCktPmNvbnRlbnRzVG9XaW5kb3co
ci5yb3VuZGVkUG9pbnQoKSk7CisgICAgZGF0YS5tb3VzZVBvc2l0aW9uID0gcm91bmRlZEludFBv
aW50KHIucG9pbnRJbk9yaWdpbmFsRnJhbWUoKSk7CiAKICAgICAvLyBDb21wdXRlIGVkaXQgZmxh
Z3MuCiAgICAgZGF0YS5lZGl0RmxhZ3MgPSBXZWJDb250ZXh0TWVudURhdGE6OkNhbkRvTm9uZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCmluZGV4IDI1ZmEz
ZWYuLjcwNzc3YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZy
YW1lSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBs
LmNwcApAQCAtMTIwMiw3ICsxMjAyLDcgQEAgc2l6ZV90IFdlYkZyYW1lSW1wbDo6Y2hhcmFjdGVy
SW5kZXhGb3JQb2ludChjb25zdCBXZWJQb2ludCYgd2ViUG9pbnQpIGNvbnN0CiAKICAgICBJbnRQ
b2ludCBwb2ludCA9IGZyYW1lKCktPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyh3ZWJQb2ludCk7
CiAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBmcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGl0
VGVzdFJlc3VsdEF0UG9pbnQocG9pbnQsIGZhbHNlKTsKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdl
ID0gZnJhbWUoKS0+cmFuZ2VGb3JQb2ludChyZXN1bHQucm91bmRlZFBvaW50KCkpOworICAgIFJl
ZlB0cjxSYW5nZT4gcmFuZ2UgPSBmcmFtZSgpLT5yYW5nZUZvclBvaW50KHJvdW5kZWRJbnRQb2lu
dChyZXN1bHQucG9pbnRJblJlc3VsdEZyYW1lKCkpKTsKICAgICBpZiAoIXJhbmdlKQogICAgICAg
ICByZXR1cm4gbm90Rm91bmQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCBkNjJiOGVmLi5iZjNhYjhi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMTAtMDIgIEFsbGFuIFNh
bmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CisKKyAgICAgICAgRGlzYW1i
aWd1YXRlIHJlc3VsdEZyYW1lUG9pbnQgYW5kIG9yaWdpbmFsIGhpdC10ZXN0IHBvaW50CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODEzOQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN3aXRjaCB0byB1c2lu
ZyBvcmlnaW5hbCBmcmFtZSBwb2ludCBzaW5jZSB4IGFuZCB5IGFyZSBkb2N1bWVudGVkIGFzIGJl
aW5nIHRoZSBwb2ludCBvZiB0aGUgaGl0IHRlc3QuCisKKyAgICAgICAgKiBld2svZXdrX2ZyYW1l
LmNwcDoKKyAgICAgICAgKGV3a19mcmFtZV9oaXRfdGVzdF9uZXcpOgorCiAyMDEyLTEwLTAxICBC
cmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdGhlIFNh
ZmFyaSAyIC0+IFNhZmFyaSAzIGljb24gZGF0YWJhc2UgaW1wb3J0IGNvZGUuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfZnJhbWUuY3BwCmluZGV4IDU0NmVlYTUuLmYzN2E2ZTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfZnJhbWUuY3BwCkBAIC03MDIsOCArNzAyLDggQEAgRXdrX0hpdF9UZXN0KiBld2tf
ZnJhbWVfaGl0X3Rlc3RfbmV3KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgaW50IHgsIGlu
dCB5KQogICAgICAgICByZXR1cm4gMDsKIAogICAgIEV3a19IaXRfVGVzdCogaGl0VGVzdCA9IG5l
dyBFd2tfSGl0X1Rlc3Q7Ci0gICAgaGl0VGVzdC0+eCA9IHJlc3VsdC5wb2ludCgpLngoKTsKLSAg
ICBoaXRUZXN0LT55ID0gcmVzdWx0LnBvaW50KCkueSgpOworICAgIGhpdFRlc3QtPnggPSByZXN1
bHQucG9pbnRJbk9yaWdpbmFsRnJhbWUoKS54KCk7CisgICAgaGl0VGVzdC0+eSA9IHJlc3VsdC5w
b2ludEluT3JpZ2luYWxGcmFtZSgpLnkoKTsKICNpZiAwCiAgICAgLy8gRklYTUUKICAgICBoaXRU
ZXN0LT5ib3VuZGluZ19ib3gueCA9IHJlc3VsdC5ib3VuZGluZ0JveCgpLngoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5n
ZUxvZwppbmRleCA3ZjczYjNjLi5iZjk3ZDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMTItMTAtMDIgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBk
aWdpYS5jb20+CisKKyAgICAgICAgRGlzYW1iaWd1YXRlIHJlc3VsdEZyYW1lUG9pbnQgYW5kIG9y
aWdpbmFsIGhpdC10ZXN0IHBvaW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05ODEzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogd2Via2l0L3dlYmtpdGhpdHRlc3RyZXN1bHQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpraXQpOgorCiAyMDEyLTEwLTAxICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZW1vdmUgdGhlIFNhZmFyaSAyIC0+IFNhZmFyaSAzIGljb24gZGF0
YWJhc2UgaW1wb3J0IGNvZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0aGl0dGVzdHJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
aGl0dGVzdHJlc3VsdC5jcHAKaW5kZXggM2I2YTc3YS4uMjIwZTZiNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGhpdHRlc3RyZXN1bHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRoaXR0ZXN0cmVzdWx0LmNwcApAQCAtMzE4LDkgKzMx
OCw5IEBAIFdlYktpdEhpdFRlc3RSZXN1bHQqIGtpdChjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVz
dWx0JiByZXN1bHQpCiAgICAgdGFyZ2V0RnJhbWUgPSByZXN1bHQudGFyZ2V0RnJhbWUoKTsKICAg
ICBpZiAodGFyZ2V0RnJhbWUgJiYgdGFyZ2V0RnJhbWUtPnZpZXcoKSkgewogICAgICAgICAvLyBD
b252ZXJ0IGRvY3VtZW50IGNvb3JkcyB0byB3aWRnZXQgY29vcmRzLgotICAgICAgICBwb2ludCA9
IHRhcmdldEZyYW1lLT52aWV3KCktPmNvbnRlbnRzVG9XaW5kb3cocmVzdWx0LnJvdW5kZWRQb2lu
dCgpKTsKKyAgICAgICAgcG9pbnQgPSB0YXJnZXRGcmFtZS0+dmlldygpLT5jb250ZW50c1RvV2lu
ZG93KFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChyZXN1bHQucG9pbnRJblJlc3VsdEZyYW1lKCkp
KTsKICAgICB9IGVsc2UKLSAgICAgICAgcG9pbnQgPSByZXN1bHQucm91bmRlZFBvaW50KCk7Cisg
ICAgICAgIHBvaW50ID0gV2ViQ29yZTo6cm91bmRlZEludFBvaW50KHJlc3VsdC5wb2ludEluT3Jp
Z2luYWxGcmFtZSgpKTsKIAogICAgIHJldHVybiBXRUJLSVRfSElUX1RFU1RfUkVTVUxUKGdfb2Jq
ZWN0X25ldyhXRUJLSVRfVFlQRV9ISVRfVEVTVF9SRVNVTFQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5rLXVyaSIsIGxpbmtVUkkuZ2V0KCksCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cKaW5kZXggNDZmYzkwZC4uZDdhMDcwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEzIEBACisyMDEyLTEwLTAyICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5q
ZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIERpc2FtYmlndWF0ZSByZXN1bHRGcmFtZVBvaW50
IGFuZCBvcmlnaW5hbCBoaXQtdGVzdCBwb2ludAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgxMzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50
Lm1tOgorICAgICAgICAoV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNob3dDb250ZXh0TWVudSk6CisK
IDIwMTItMTAtMDEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAg
IFJlbW92ZSB0aGUgU2FmYXJpIDIgLT4gU2FmYXJpIDMgaWNvbiBkYXRhYmFzZSBpbXBvcnQgY29k
ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRl
eHRNZW51Q2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29u
dGV4dE1lbnVDbGllbnQubW0KaW5kZXggZTMxMzEzNi4uNDE2MTlhYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0KKysr
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQu
bW0KQEAgLTM2Niw3ICszNjYsNyBAQCB2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50OjpzaG93Q29u
dGV4dE1lbnUoKQogICAgIGlmICghZnJhbWVWaWV3KQogICAgICAgICByZXR1cm47CiAKLSAgICBJ
bnRQb2ludCBwb2ludCA9IGZyYW1lVmlldy0+Y29udGVudHNUb1dpbmRvdyhjb250cm9sbGVyLT5o
aXRUZXN0UmVzdWx0KCkucm91bmRlZFBvaW50KCkpOworICAgIEludFBvaW50IHBvaW50ID0gZnJh
bWVWaWV3LT5jb250ZW50c1RvV2luZG93KHJvdW5kZWRJbnRQb2ludChjb250cm9sbGVyLT5oaXRU
ZXN0UmVzdWx0KCkucG9pbnRJblJlc3VsdEZyYW1lKCkpKTsKICAgICBOU1ZpZXcqIHZpZXcgPSBm
cmFtZVZpZXctPmRvY3VtZW50VmlldygpOwogICAgIE5TUG9pbnQgbnNTY3JlZW5Qb2ludCA9IFt2
aWV3IGNvbnZlcnRQb2ludDpwb2ludCB0b1ZpZXc6bmlsXTsKICAgICAvLyBTaG93IHRoZSBjb250
ZXh0dWFsIG1lbnUgZm9yIHRoaXMgZXZlbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0
L0FwaS9xd2ViZnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcApp
bmRleCBhZGJmYTFjLi41NzZjMWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9x
d2ViZnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAKQEAg
LTE2ODIsNyArMTY4Miw3IEBAIFFXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZTo6UVdlYkhpdFRlc3RS
ZXN1bHRQcml2YXRlKGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQKIHsKICAgICBpZiAoIWhp
dFRlc3QuaW5uZXJOb2RlKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBwb3MgPSBoaXRUZXN0LnJv
dW5kZWRQb2ludCgpOworICAgIHBvcyA9IFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChoaXRUZXN0
LnBvaW50SW5PcmlnaW5hbEZyYW1lKCkpOwogICAgIFdlYkNvcmU6OlRleHREaXJlY3Rpb24gZGly
OwogICAgIHRpdGxlID0gaGl0VGVzdC50aXRsZShkaXIpOwogICAgIGxpbmtUZXh0ID0gaGl0VGVz
dC50ZXh0Q29udGVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBh
Z2UuY3BwIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCmluZGV4IDc2OTdmMWEu
LmRkM2ExZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKQEAgLTE1NTMsNyArMTU1Myw3
IEBAIEludFBvaW50IFFXZWJQYWdlUHJpdmF0ZTo6VG91Y2hBZGp1c3Rlcjo6ZmluZENhbmRpZGF0
ZVBvaW50Rm9yVG91Y2goY29uc3QgSW50UG9pCiAgICAgRnJhbWVWaWV3KiB2aWV3ID0gZG9jdW1l
bnQtPmZyYW1lKCktPnZpZXcoKTsKIAogICAgIC8vIFRvdWNoIHJlY3QgaW4gY29udGVudHMgY29v
cmRpbmF0ZXMuCi0gICAgSW50UmVjdCB0b3VjaFJlY3QoSGl0VGVzdFJlc3VsdDo6cmVjdEZvclBv
aW50KHZpZXctPndpbmRvd1RvQ29udGVudHMoSW50UG9pbnQoeCwgeSkpLCBtX3RvcFBhZGRpbmcs
IG1fcmlnaHRQYWRkaW5nLCBtX2JvdHRvbVBhZGRpbmcsIG1fbGVmdFBhZGRpbmcpKTsKKyAgICBJ
bnRSZWN0IHRvdWNoUmVjdChIaXRUZXN0TG9jYXRpb246OnJlY3RGb3JQb2ludCh2aWV3LT53aW5k
b3dUb0NvbnRlbnRzKEludFBvaW50KHgsIHkpKSwgbV90b3BQYWRkaW5nLCBtX3JpZ2h0UGFkZGlu
ZywgbV9ib3R0b21QYWRkaW5nLCBtX2xlZnRQYWRkaW5nKSk7CiAKICAgICAvLyBJdGVyYXRlIG92
ZXIgdGhlIGxpc3Qgb2Ygbm9kZXMgaGl0IGxvb2tpbmcgZm9yIHRoZSBvbmUgd2hvc2UgYm91bmRp
bmcgYXJlYQogICAgIC8vIGhhcyBsYXJnZXN0IGludGVyc2VjdGlvbiB3aXRoIHRoZSB0b3VjaCBh
cmVhIChwb2ludCArIHBhZGRpbmcpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCBlNTMxZjJhLi4yZTBiYzFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTEwLTAyICBBbGxhbiBTYW5k
ZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIERpc2FtYmln
dWF0ZSByZXN1bHRGcmFtZVBvaW50IGFuZCBvcmlnaW5hbCBoaXQtdGVzdCBwb2ludAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgxMzkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgUXQgZG9jdW1lbnQg
c3RhdGVzIHRoZSBwb3MgYXR0cmlidXRlIG9mIFFXZWJIaXRUZXN0UmVzdWx0IGlzIHRoZSBvcmln
aW5hbCBwb3NpdGlvbiwKKyAgICAgICAgc28gdGhlIGNvZGUgbm93IHVzZXMgb3JpZ2luYWxGcmFt
ZVBvaW50LgorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViSGl0
VGVzdFJlc3VsdFByaXZhdGU6OlFXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZSk6CisgICAgICAgICog
QXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6VG91Y2hBZGp1c3Rl
cjo6ZmluZENhbmRpZGF0ZVBvaW50Rm9yVG91Y2gpOgorCiAyMDEyLTEwLTAxICBCcmFkeSBFaWRz
b24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdGhlIFNhZmFyaSAyIC0+
IFNhZmFyaSAzIGljb24gZGF0YWJhc2UgaW1wb3J0IGNvZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXgg
NjhlODg1YS4uNDRjNTM2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEy
LTEwLTAyICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgor
CisgICAgICAgIERpc2FtYmlndWF0ZSByZXN1bHRGcmFtZVBvaW50IGFuZCBvcmlnaW5hbCBoaXQt
dGVzdCBwb2ludAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTgxMzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6aGFuZGxlQ29udGV4dE1lbnVFdmVu
dCk6CisKIDIwMTItMTAtMDEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAg
ICAgICAgIFJlbW92ZSB0aGUgU2FmYXJpIDIgLT4gU2FmYXJpIDMgaWNvbiBkYXRhYmFzZSBpbXBv
cnQgY29kZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwIGIvU291
cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKaW5kZXggYTkwZjY3ZS4uYzQ0MGNlNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93
aW4vV2ViVmlldy5jcHAKQEAgLTEzNjEsNyArMTM2MSw3IEBAIGJvb2wgV2ViVmlldzo6aGFuZGxl
Q29udGV4dE1lbnVFdmVudChXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQogICAgIGlmICgh
dmlldykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgUE9JTlQgcG9pbnQodmlldy0+Y29u
dGVudHNUb1dpbmRvdyhjb250ZXh0TWVudUNvbnRyb2xsZXItPmhpdFRlc3RSZXN1bHQoKS5yb3Vu
ZGVkUG9pbnQoKSkpOworICAgIFBPSU5UIHBvaW50KHZpZXctPmNvbnRlbnRzVG9XaW5kb3cocm91
bmRlZEludFBvaW50KGNvbnRleHRNZW51Q29udHJvbGxlci0+aGl0VGVzdFJlc3VsdCgpLnBvaW50
SW5SZXN1bHRGcmFtZSgpKSkpOwogCiAgICAgLy8gVHJhbnNsYXRlIHRoZSBwb2ludCB0byBzY3Jl
ZW4gY29vcmRpbmF0ZXMKICAgICBpZiAoITo6Q2xpZW50VG9TY3JlZW4obV92aWV3V2luZG93LCAm
cG9pbnQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCmluZGV4IGNiNzM3OGEuLjNiZTg4ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxMi0xMC0wMiAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVu
c2VuQGRpZ2lhLmNvbT4KKworICAgICAgICBEaXNhbWJpZ3VhdGUgcmVzdWx0RnJhbWVQb2ludCBh
bmQgb3JpZ2luYWwgaGl0LXRlc3QgcG9pbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTk4MTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29udGV4dE1lbnUuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudTo6c2hvdyk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpjaGFyYWN0ZXJJbmRleEZvclBvaW50KToKKwogMjAxMi0xMC0wMSAgQnJhZHkgRWlkc29u
ICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHRoZSBTYWZhcmkgMiAtPiBT
YWZhcmkgMyBpY29uIGRhdGFiYXNlIGltcG9ydCBjb2RlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvbnRleHRNZW51LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0TWVudS5jcHAKaW5kZXggM2E5MWQ5MC4u
MDE2NDU4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkNvbnRleHRNZW51LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViQ29udGV4dE1lbnUuY3BwCkBAIC04Niw3ICs4Niw3IEBAIHZvaWQgV2ViQ29udGV4dE1lbnU6
OnNob3coKQogCiAgICAgLy8gTWFyayB0aGUgV2ViUGFnZSBoYXMgaGF2aW5nIGEgc2hvd24gY29u
dGV4dCBtZW51IHRoZW4gbm90aWZ5IHRoZSBVSVByb2Nlc3MuCiAgICAgbV9wYWdlLT5jb250ZXh0
TWVudVNob3dpbmcoKTsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
U2hvd0NvbnRleHRNZW51KHZpZXctPmNvbnRlbnRzVG9XaW5kb3coY29udHJvbGxlci0+aGl0VGVz
dFJlc3VsdCgpLnJvdW5kZWRQb2ludCgpKSwgd2ViSGl0VGVzdFJlc3VsdERhdGEsIHByb3Bvc2Vk
TWVudSwgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7
CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dDb250ZXh0TWVu
dSh2aWV3LT5jb250ZW50c1RvV2luZG93KHJvdW5kZWRJbnRQb2ludChjb250cm9sbGVyLT5oaXRU
ZXN0UmVzdWx0KCkucG9pbnRJblJlc3VsdEZyYW1lKCkpKSwgd2ViSGl0VGVzdFJlc3VsdERhdGEs
IHByb3Bvc2VkTWVudSwgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEu
Z2V0KCkpKSk7CiB9CiAKIHZvaWQgV2ViQ29udGV4dE1lbnU6Oml0ZW1TZWxlY3RlZChjb25zdCBX
ZWJDb250ZXh0TWVudUl0ZW1EYXRhJiBpdGVtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IGMyZjAxNjUuLjVmNmFiMDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFn
ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBh
Z2VNYWMubW0KQEAgLTM3OCw3ICszNzgsNyBAQCB2b2lkIFdlYlBhZ2U6OmNoYXJhY3RlckluZGV4
Rm9yUG9pbnQoSW50UG9pbnQgcG9pbnQsIHVpbnQ2NF90JiBpbmRleCkKICAgICBIaXRUZXN0UmVz
dWx0IHJlc3VsdCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQo
cG9pbnQsIGZhbHNlKTsKICAgICBmcmFtZSA9IHJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKSA/
IHJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSA6IG1fcGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIAotICAgIFJl
ZlB0cjxSYW5nZT4gcmFuZ2UgPSBmcmFtZS0+cmFuZ2VGb3JQb2ludChyZXN1bHQucm91bmRlZFBv
aW50KCkpOworICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBmcmFtZS0+cmFuZ2VGb3JQb2ludChy
b3VuZGVkSW50UG9pbnQocmVzdWx0LnBvaW50SW5SZXN1bHRGcmFtZSgpKSk7CiAgICAgaWYgKCFy
YW5nZSkKICAgICAgICAgcmV0dXJuOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169617</attachid>
            <date>2012-10-19 07:30:29 -0700</date>
            <delta_ts>2012-11-07 08:18:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98139-20121019162854.patch</filename>
            <type>text/plain</type>
            <size>30651</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxNzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjVmMTE1MDlkOGI4MTc5
OTAxNzkzMTBhODU1MDIzN2QxZjQyN2I5OC4uZWUwZjY4MjdmOTExNmJlOTY1YzdjMTIyMmNjNDdm
ZDM1OGU2YzFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEyLTEwLTE5ICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIERp
c2FtYmlndWF0ZSByZXN1bHRGcmFtZVBvaW50IGFuZCBvcmlnaW5hbCBoaXQtdGVzdCBwb2ludAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgxMzkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTcGxpdCB0aGUg
cG9pbnQoKSBtZXRob2QgaW4gSGl0VGVzdFJlc3VsdCBpbnRvIHR3bywgcmVzdWx0RnJhbWVQb2lu
dCBhbmQgb3JpZ2luYWxGcmFtZVBvaW50KCkuCisgICAgICAgIFRvIGRvIHRoaXMgSGl0VGVzdFJl
c3VsdCBubyBsb25nZXIgaW5oZXJpdHMgcHVibGljYWxseSBmcm9tIEhpdFRlc3RMb2NhdGlvbiwg
d2hpY2ggc2hvdWxkIGFsc28KKyAgICAgICAgaGVscCB0byBsYXRlciBzZXBhcmF0ZSB0aGUgdHdv
IGNsYXNzZXMgbW9yZSBjb21wbGV0ZWx5LgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpub2Rlc0Zyb21SZWN0KToKKyAgICAgICAgKiBw
YWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmV2
ZW50TWF5U3RhcnREcmFnKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGl0VGVz
dFJlc3VsdEF0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQpOgorICAgICAg
ICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6
OkhpdFRlc3RSZXN1bHQ6OmlubmVyRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJl
c3VsdDo6YXBwZW5kKToKKyAgICAgICAgKiByZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oOgorICAg
ICAgICAoSGl0VGVzdFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0Ojpp
c1JlY3RCYXNlZFRlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6cG9pbnRJ
bk1haW5GcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0Ojpyb3VuZGVkUG9p
bnRJbk1haW5GcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpzZXRQb2lu
dEluTWFpbkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OnBvaW50SW5J
bm5lckZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OnJvdW5kZWRQb2lu
dEluSW5uZXJGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0Ojpsb2NhbFBv
aW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OnNldExvY2FsUG9pbnQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllcjo6aGl0VGVzdCk6CisKIDIwMTItMTAtMTggIFJhcGhhZWwgS3VibyBkYSBDb3N0
YSAgPHJhcGhhZWwua3Viby5kYS5jb3N0YUBpbnRlbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgZG8gbm90IG1ha2UgVXNlVjguY21ha2UgZXhlY3V0YWJsZS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKaW5kZXggMWJlMTUzYjhlNjA5OGMxZjI3YTY3NzAwYTA0MjIyYjc2NDg2NjU3NC4uZDY3
NWE0ZWNiZGFkNzE4OTc2Njg4OWZmZDBmNDY3ZTg4NjYxZmFkZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0xMC0xOSAgQWxsYW4gU2FuZGZlbGQgSmVu
c2VuICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KKworICAgICAgICBEaXNhbWJpZ3VhdGUgcmVz
dWx0RnJhbWVQb2ludCBhbmQgb3JpZ2luYWwgaGl0LXRlc3QgcG9pbnQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6Om1vdXNlRGlkTW92ZU92ZXJF
bGVtZW50KToKKyAgICAgICAgKiBzcmMvQ29udGV4dE1lbnVDbGllbnRJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6c2VsZWN0TWlzc3BlbGxlZFdvcmQpOgorICAgICAgICAoV2ViS2l0OjpDb250
ZXh0TWVudUNsaWVudEltcGw6OmdldEN1c3RvbU1lbnVGcm9tRGVmYXVsdEl0ZW1zKToKKyAgICAg
ICAgKiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBs
OjpjaGFyYWN0ZXJJbmRleEZvclBvaW50KToKKwogMjAxMi0xMC0xNyAgTWlrZSBXZXN0ICA8bWt3
c3RAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIE1vdmUgbWl4ZWQgY29udGVudCBsb2dpYyBvdXQg
b2YgRnJhbWVMb2FkZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCBjODcwNGJjNGUxZGIyNzcxZDQzMDhl
OGQ2ZDZhNTA3NzA3Yzc5MWQ2Li5kZDZmZDJjYWU1YWM0YmZlYjRlMTk5ZjJlZjg3NTE5MTYxZGUw
YzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMTAtMTkgIEFsbGFu
IFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CisKKyAgICAgICAgRGlz
YW1iaWd1YXRlIHJlc3VsdEZyYW1lUG9pbnQgYW5kIG9yaWdpbmFsIGhpdC10ZXN0IHBvaW50Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODEzOQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN3aXRjaCB0byB1
c2luZyBvcmlnaW5hbCBmcmFtZSBwb2ludCBzaW5jZSB4IGFuZCB5IGFyZSBkb2N1bWVudGVkIGFz
IGJlaW5nIHRoZSBwb2ludCBvZiB0aGUgaGl0IHRlc3QuCisKKyAgICAgICAgKiBld2svZXdrX2Zy
YW1lLmNwcDoKKyAgICAgICAgKGV3a19mcmFtZV9oaXRfdGVzdF9uZXcpOgorCiAyMDEyLTEwLTE4
ICBLYW5naWwgSGFuICA8a2FuZ2lsLmhhbkBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBB
ZGQgdW5pdCB0ZXN0IGZvciBld2tfZnJhbWVfc291cmNlX2dldC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRl
eCA5ODZlNGIxZDM3ODcxNzA0ODMzYWQzOWVmNjdhMWUzYjZhMzZhZDBhLi5mODY5NzBkYmY4OTAz
Yzg3NWQ3MTJiNjM0MmM3ZTFiNjI4NjQ2ZWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMTItMTAtMTkgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBk
aWdpYS5jb20+CisKKyAgICAgICAgRGlzYW1iaWd1YXRlIHJlc3VsdEZyYW1lUG9pbnQgYW5kIG9y
aWdpbmFsIGhpdC10ZXN0IHBvaW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05ODEzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogd2Via2l0L3dlYmtpdGhpdHRlc3RyZXN1bHQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpraXQpOgorCiAyMDEyLTEwLTEwICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxl
LmNvbT4KIAogICAgICAgICBTd2l0Y2ggUmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSgpIGZy
b20gU2hhcmVkQnVmZmVyIHRvIFJlc291cmNlQnVmZmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggNGUy
OWYwZTQzMWJkMDY0YzhjMmZlNDA4NzEzNmQ5NzRkNDk0YmI4ZS4uNmNkNmZkM2QwYTU3NTcyNjJi
YjBjNmYyNWE3MmIyZThjMTk3N2JlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDEyLTEwLTE5ICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEu
Y29tPgorCisgICAgICAgIERpc2FtYmlndWF0ZSByZXN1bHRGcmFtZVBvaW50IGFuZCBvcmlnaW5h
bCBoaXQtdGVzdCBwb2ludAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTgxMzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tOgorICAgICAg
ICAoV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNob3dDb250ZXh0TWVudSk6CisKIDIwMTItMTAtMTcg
IEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBV
bmluaXRpYWxpemVkIE1lbWJlcnMgaW4gV2ViRGF0YVNvdXJjZVByaXZhdGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cK
aW5kZXggMDZiYjMyMjBhN2MwNjlkMGRhZDRiZjJjNGZiMzI2ZjYxNzhjMzZlOC4uYWZjNmFiYTAx
NTI3MjI2NGIxNzE1NjUzZjQxMDQ5MjBlMTU3M2ViMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxOCBAQAorMjAxMi0xMC0xOSAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2Vu
QGRpZ2lhLmNvbT4KKworICAgICAgICBEaXNhbWJpZ3VhdGUgcmVzdWx0RnJhbWVQb2ludCBhbmQg
b3JpZ2luYWwgaGl0LXRlc3QgcG9pbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk4MTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhlIFF0IGRvY3VtZW50IHN0YXRlcyB0aGUgcG9zIGF0dHJpYnV0ZSBv
ZiBRV2ViSGl0VGVzdFJlc3VsdCBpcyB0aGUgb3JpZ2luYWwgcG9zaXRpb24sCisgICAgICAgIHNv
IHRoZSBjb2RlIG5vdyB1c2VzIG9yaWdpbmFsRnJhbWVQb2ludC4KKworICAgICAgICAqIEFwaS9x
d2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkhpdFRlc3RSZXN1bHRQcml2YXRlOjpRV2ViSGl0
VGVzdFJlc3VsdFByaXZhdGUpOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAg
IChRV2ViUGFnZVByaXZhdGU6OlRvdWNoQWRqdXN0ZXI6OmZpbmRDYW5kaWRhdGVQb2ludEZvclRv
dWNoKToKKwogMjAxMi0xMC0xNyAgVG9yIEFybmUgVmVzdGLDuCAgPHRvci5hcm5lLnZlc3Rib0Bk
aWdpYS5jb20+CiAKICAgICAgICAgW1F0XSBNb2R1bGFyaXplIGRvY3VtZW50YXRpb24gZm9yIFF0
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggY2E4NWM5ZDFiNGNlMjhmNDlmZTI0ZjM3NjdhMmUz
YWQ1ODE1OWNhMS4uZGQ5MjljYjE4MjU5N2Q0OGU2ODQ5ODI4ODY4Y2VlZTdmMmMzYWI2OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
d2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTEwLTE5ICBBbGxhbiBTYW5kZmVs
ZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIERpc2FtYmlndWF0
ZSByZXN1bHRGcmFtZVBvaW50IGFuZCBvcmlnaW5hbCBoaXQtdGVzdCBwb2ludAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgxMzkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAg
ICAgICAoV2ViVmlldzo6aGFuZGxlQ29udGV4dE1lbnVFdmVudCk6CisKIDIwMTItMTAtMTQgIFNh
bSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggdGhlIHdpbmRvd3MgYnVp
bGQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKaW5kZXggMGI0N2RjNzIyYTYzYTQ5YjU5MTU5YTQxNTM4ZjNkZGQ1NWI4ZWRl
OS4uOTlkYWFiNmM1MThjYjMwZDZhYmZiMmFmYWU2ZjY1MjM3NzE1NTg0OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE1IEBACisyMDEyLTEwLTE5ICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxh
bi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIERpc2FtYmlndWF0ZSByZXN1bHRGcmFtZVBv
aW50IGFuZCBvcmlnaW5hbCBoaXQtdGVzdCBwb2ludAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgxMzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0TWVu
dS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51OjpzaG93KToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmNoYXJhY3RlckluZGV4Rm9yUG9pbnQpOgorCiAyMDEyLTEwLTE4ICBDYXJsb3Mg
R2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBEb24n
dCB1c2UgdGhlIEMgQVBJIGludGVybmFsbHkgaW4gV2ViS2l0V2ViUmVzb3VyY2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCmluZGV4IGVmZTg5ZjQwZjA1OTE4NGRkMDA5Y2ZmNzI2MzE2YTMxZDYwMjlj
ODUuLjU5ZTBhNzIyZjFkZmQ0MzBiY2YwNzk1Y2U5OGMzODJmNTYxOGI2MjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcApAQCAtMTM5Nyw3ICsxMzk3LDcgQEAgUGFzc1JlZlB0cjxOb2RlTGlzdD4g
RG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QoaW50IGNlbnRlclgsIGludCBjZW50ZXJZLCB1bnNpZ25l
ZAogICAgIC8vIFdoZW4gaWdub3JlQ2xpcHBpbmcgaXMgZmFsc2UsIHRoaXMgbWV0aG9kIHJldHVy
bnMgbnVsbCBmb3IgY29vcmRpbmF0ZXMgb3V0c2lkZSBvZiB0aGUgdmlld3BvcnQuCiAgICAgaWYg
KGlnbm9yZUNsaXBwaW5nKQogICAgICAgICB0eXBlIHw9IEhpdFRlc3RSZXF1ZXN0OjpJZ25vcmVD
bGlwcGluZzsKLSAgICBlbHNlIGlmICghZnJhbWVWaWV3LT52aXNpYmxlQ29udGVudFJlY3QoKS5p
bnRlcnNlY3RzKEhpdFRlc3RSZXN1bHQ6OnJlY3RGb3JQb2ludChwb2ludCwgdG9wUGFkZGluZywg
cmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0UGFkZGluZykpKQorICAgIGVsc2UgaWYg
KCFmcmFtZVZpZXctPnZpc2libGVDb250ZW50UmVjdCgpLmludGVyc2VjdHMoSGl0VGVzdExvY2F0
aW9uOjpyZWN0Rm9yUG9pbnQocG9pbnQsIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9t
UGFkZGluZywgbGVmdFBhZGRpbmcpKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKGFsbG93
U2hhZG93Q29udGVudCkKICAgICAgICAgdHlwZSB8PSBIaXRUZXN0UmVxdWVzdDo6QWxsb3dTaGFk
b3dDb250ZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDVlZjBjNjFk
YTkzZDBjMTY0YWJlZjc0ZWRmYzZmMGRlMGY3NzYyMTEuLjc5ODEyMDYxOGMzNWY1ZDM3YTA3ZTI2
NDViMjNjMDZjYmYwNTEwNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAg
LTc2Niw3ICs3NjYsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6ZXZlbnRNYXlTdGFydERyYWcoY29u
c3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkgY29uc3QKICAgICBIaXRUZXN0UmVzdWx0IHJl
c3VsdCh2aWV3LT53aW5kb3dUb0NvbnRlbnRzKGV2ZW50LnBvc2l0aW9uKCkpKTsKICAgICBtX2Zy
YW1lLT5jb250ZW50UmVuZGVyZXIoKS0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOwogICAgIERy
YWdTdGF0ZSBzdGF0ZTsKLSAgICByZXR1cm4gcmVzdWx0LmlubmVyTm9kZSgpICYmIHBhZ2UtPmRy
YWdDb250cm9sbGVyKCktPmRyYWdnYWJsZU5vZGUobV9mcmFtZSwgcmVzdWx0LmlubmVyTm9kZSgp
LCByb3VuZGVkSW50UG9pbnQocmVzdWx0LnBvaW50KCkpLCBzdGF0ZSk7CisgICAgcmV0dXJuIHJl
c3VsdC5pbm5lck5vZGUoKSAmJiBwYWdlLT5kcmFnQ29udHJvbGxlcigpLT5kcmFnZ2FibGVOb2Rl
KG1fZnJhbWUsIHJlc3VsdC5pbm5lck5vZGUoKSwgcmVzdWx0LnJvdW5kZWRQb2ludEluTWFpbkZy
YW1lKCksIHN0YXRlKTsKIH0KIAogdm9pZCBFdmVudEhhbmRsZXI6OnVwZGF0ZVNlbGVjdGlvbkZv
ck1vdXNlRHJhZygpCkBAIC0xMDczLDkgKzEwNzMsMjMgQEAgRHJhZ1NvdXJjZUFjdGlvbiBFdmVu
dEhhbmRsZXI6OnVwZGF0ZURyYWdTb3VyY2VBY3Rpb25zQWxsb3dlZCgpIGNvbnN0CiAgICAgcmV0
dXJuIHBhZ2UtPmRyYWdDb250cm9sbGVyKCktPmRlbGVnYXRlRHJhZ1NvdXJjZUFjdGlvbih2aWV3
LT5jb250ZW50c1RvUm9vdFZpZXcobV9tb3VzZURvd25Qb3MpKTsKIH0KICNlbmRpZiAvLyBFTkFC
TEUoRFJBR19TVVBQT1JUKQotICAgIAorCiBIaXRUZXN0UmVzdWx0IEV2ZW50SGFuZGxlcjo6aGl0
VGVzdFJlc3VsdEF0UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBib29sIGFsbG93U2hh
ZG93Q29udGVudCwgYm9vbCBpZ25vcmVDbGlwcGluZywgSGl0VGVzdFNjcm9sbGJhcnMgdGVzdFNj
cm9sbGJhcnMsIEhpdFRlc3RSZXF1ZXN0OjpIaXRUZXN0UmVxdWVzdFR5cGUgaGl0VHlwZSwgY29u
c3QgTGF5b3V0U2l6ZSYgcGFkZGluZykKIHsKKyAgICAvLyBXZSBhbHdheXMgc2VuZCBoaXRUZXN0
UmVzdWx0QXRQb2ludCB0byB0aGUgbWFpbiBmcmFtZSBpZiB3ZSBoYXZlIG9uZSwKKyAgICAvLyBv
dGhlcndpc2Ugd2UgbWlnaHQgaGl0IGFyZWFzIHRoYXQgYXJlIG9ic2N1cmVkIGJ5IGhpZ2hlciBm
cmFtZXMuCisgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpIHsKKyAgICAgICAg
RnJhbWUqIG1haW5GcmFtZSA9IHBhZ2UtPm1haW5GcmFtZSgpOworICAgICAgICBpZiAobV9mcmFt
ZSAhPSBtYWluRnJhbWUpIHsKKyAgICAgICAgICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbV9m
cmFtZS0+dmlldygpOworICAgICAgICAgICAgRnJhbWVWaWV3KiBtYWluVmlldyA9IG1haW5GcmFt
ZS0+dmlldygpOworICAgICAgICAgICAgaWYgKGZyYW1lVmlldyAmJiBtYWluVmlldykgeworICAg
ICAgICAgICAgICAgIEludFBvaW50IG1haW5GcmFtZVBvaW50ID0gbWFpblZpZXctPnJvb3RWaWV3
VG9Db250ZW50cyhmcmFtZVZpZXctPmNvbnRlbnRzVG9Sb290Vmlldyhyb3VuZGVkSW50UG9pbnQo
cG9pbnQpKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1haW5GcmFtZS0+ZXZlbnRIYW5kbGVy
KCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KG1haW5GcmFtZVBvaW50LCBhbGxvd1NoYWRvd0NvbnRl
bnQsIGlnbm9yZUNsaXBwaW5nLCB0ZXN0U2Nyb2xsYmFycywgaGl0VHlwZSwgcGFkZGluZyk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKICAgICBIaXRUZXN0UmVzdWx0IHJlc3Vs
dChwb2ludCwgcGFkZGluZy5oZWlnaHQoKSwgcGFkZGluZy53aWR0aCgpLCBwYWRkaW5nLmhlaWdo
dCgpLCBwYWRkaW5nLndpZHRoKCkpOwogCiAgICAgaWYgKCFtX2ZyYW1lLT5jb250ZW50UmVuZGVy
ZXIoKSkKQEAgLTEwODQsNyArMTA5OCw4IEBAIEhpdFRlc3RSZXN1bHQgRXZlbnRIYW5kbGVyOjpo
aXRUZXN0UmVzdWx0QXRQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQsIGJvb2wKICAgICAg
ICAgaGl0VHlwZSB8PSBIaXRUZXN0UmVxdWVzdDo6SWdub3JlQ2xpcHBpbmc7CiAgICAgaWYgKGFs
bG93U2hhZG93Q29udGVudCkKICAgICAgICAgaGl0VHlwZSB8PSBIaXRUZXN0UmVxdWVzdDo6QWxs
b3dTaGFkb3dDb250ZW50OwotICAgIG1fZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpLT5oaXRUZXN0
KEhpdFRlc3RSZXF1ZXN0KGhpdFR5cGUpLCByZXN1bHQpOworICAgIEhpdFRlc3RSZXF1ZXN0IHJl
cXVlc3QoaGl0VHlwZSk7CisgICAgbV9mcmFtZS0+Y29udGVudFJlbmRlcmVyKCktPmhpdFRlc3Qo
cmVxdWVzdCwgcmVzdWx0KTsKIAogICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIE5vZGUqIG4g
PSByZXN1bHQuaW5uZXJOb2RlKCk7CkBAIC0xMTAxLDcgKzExMTYsOCBAQCBIaXRUZXN0UmVzdWx0
IEV2ZW50SGFuZGxlcjo6aGl0VGVzdFJlc3VsdEF0UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBv
aW50LCBib29sCiAgICAgICAgIExheW91dFBvaW50IHdpZGdldFBvaW50KHJlc3VsdC5sb2NhbFBv
aW50KCkueCgpICsgdmlldy0+c2Nyb2xsWCgpIC0gcmVuZGVyV2lkZ2V0LT5ib3JkZXJMZWZ0KCkg
LSByZW5kZXJXaWRnZXQtPnBhZGRpbmdMZWZ0KCksIAogICAgICAgICAgICAgcmVzdWx0LmxvY2Fs
UG9pbnQoKS55KCkgKyB2aWV3LT5zY3JvbGxZKCkgLSByZW5kZXJXaWRnZXQtPmJvcmRlclRvcCgp
IC0gcmVuZGVyV2lkZ2V0LT5wYWRkaW5nVG9wKCkpOwogICAgICAgICBIaXRUZXN0UmVzdWx0IHdp
ZGdldEhpdFRlc3RSZXN1bHQod2lkZ2V0UG9pbnQsIHBhZGRpbmcuaGVpZ2h0KCksIHBhZGRpbmcu
d2lkdGgoKSwgcGFkZGluZy5oZWlnaHQoKSwgcGFkZGluZy53aWR0aCgpKTsKLSAgICAgICAgZnJh
bWUtPmNvbnRlbnRSZW5kZXJlcigpLT5oaXRUZXN0KEhpdFRlc3RSZXF1ZXN0KGhpdFR5cGUpLCB3
aWRnZXRIaXRUZXN0UmVzdWx0KTsKKyAgICAgICAgd2lkZ2V0SGl0VGVzdFJlc3VsdC5zZXRQb2lu
dEluTWFpbkZyYW1lKHJlc3VsdC5wb2ludEluTWFpbkZyYW1lKCkpOworICAgICAgICBmcmFtZS0+
Y29udGVudFJlbmRlcmVyKCktPmhpdFRlc3QocmVxdWVzdCwgd2lkZ2V0SGl0VGVzdFJlc3VsdCk7
CiAgICAgICAgIHJlc3VsdCA9IHdpZGdldEhpdFRlc3RSZXN1bHQ7CiAKICAgICAgICAgaWYgKHRl
c3RTY3JvbGxiYXJzID09IFNob3VsZEhpdFRlc3RTY3JvbGxiYXJzKSB7CkBAIC0xMTEwLDIxICsx
MTI2LDYgQEAgSGl0VGVzdFJlc3VsdCBFdmVudEhhbmRsZXI6OmhpdFRlc3RSZXN1bHRBdFBvaW50
KGNvbnN0IExheW91dFBvaW50JiBwb2ludCwgYm9vbAogICAgICAgICAgICAgICAgIHJlc3VsdC5z
ZXRTY3JvbGxiYXIoZXZlbnRTY3JvbGxiYXIpOwogICAgICAgICB9CiAgICAgfQotICAgIAotICAg
IC8vIElmIG91ciBIaXRUZXN0UmVzdWx0IGlzIG5vdCB2aXNpYmxlLCB0aGVuIHdlIHN0YXJ0ZWQg
aGl0IHRlc3RpbmcgdG9vIGZhciBkb3duIHRoZSBmcmFtZSBjaGFpbi4gCi0gICAgLy8gQW5vdGhl
ciBoaXQgdGVzdCBhdCB0aGUgbWFpbiBmcmFtZSBsZXZlbCBzaG91bGQgZ2V0IHVzIHRoZSBjb3Jy
ZWN0IHZpc2libGUgcmVzdWx0LgotICAgIEZyYW1lKiByZXN1bHRGcmFtZSA9IHJlc3VsdC5pbm5l
ck5vblNoYXJlZE5vZGUoKSA/IHJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKS0+ZG9jdW1lbnQo
KS0+ZnJhbWUoKSA6IDA7Ci0gICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpIHsK
LSAgICAgICAgRnJhbWUqIG1haW5GcmFtZSA9IHBhZ2UtPm1haW5GcmFtZSgpOwotICAgICAgICBp
ZiAobV9mcmFtZSAhPSBtYWluRnJhbWUgJiYgcmVzdWx0RnJhbWUgJiYgcmVzdWx0RnJhbWUgIT0g
bWFpbkZyYW1lKSB7Ci0gICAgICAgICAgICBGcmFtZVZpZXcqIHJlc3VsdFZpZXcgPSByZXN1bHRG
cmFtZS0+dmlldygpOwotICAgICAgICAgICAgRnJhbWVWaWV3KiBtYWluVmlldyA9IG1haW5GcmFt
ZS0+dmlldygpOwotICAgICAgICAgICAgaWYgKHJlc3VsdFZpZXcgJiYgbWFpblZpZXcpIHsKLSAg
ICAgICAgICAgICAgICBJbnRQb2ludCBtYWluRnJhbWVQb2ludCA9IG1haW5WaWV3LT5yb290Vmll
d1RvQ29udGVudHMocmVzdWx0Vmlldy0+Y29udGVudHNUb1Jvb3RWaWV3KHJvdW5kZWRJbnRQb2lu
dChyZXN1bHQucG9pbnQoKSkpKTsKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBtYWluRnJhbWUt
PmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChtYWluRnJhbWVQb2ludCwgYWxs
b3dTaGFkb3dDb250ZW50LCBpZ25vcmVDbGlwcGluZywgdGVzdFNjcm9sbGJhcnMsIGhpdFR5cGUs
IHBhZGRpbmcpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQogCiAgICAgaWYgKCFh
bGxvd1NoYWRvd0NvbnRlbnQpCiAgICAgICAgIHJlc3VsdC5zZXRUb05vblNoYWRvd0FuY2VzdG9y
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKaW5kZXggY2Mz
OTA1NjhjZTAyOTg2ZDIwYmJiMWNmZmMxMDEzYmUwOWVmM2NhMy4uNDdiMTVkMmUzNzA5NmIxOGJi
YWM4ZGMyYzE5OGU4MmYwMjZiMzRiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0hpdFRlc3RSZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRU
ZXN0UmVzdWx0LmNwcApAQCAtMjA0LDEyICsyMDQsMTQgQEAgSGl0VGVzdFJlc3VsdDo6SGl0VGVz
dFJlc3VsdChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQpIDogSGl0VGVzdExvY2F0aW9uKHBvaW50
KQogCiBIaXRUZXN0UmVzdWx0OjpIaXRUZXN0UmVzdWx0KGNvbnN0IExheW91dFBvaW50JiBjZW50
ZXJQb2ludCwgdW5zaWduZWQgdG9wUGFkZGluZywgdW5zaWduZWQgcmlnaHRQYWRkaW5nLCB1bnNp
Z25lZCBib3R0b21QYWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGluZykKICAgICA6IEhpdFRlc3RM
b2NhdGlvbihjZW50ZXJQb2ludCwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRk
aW5nLCBsZWZ0UGFkZGluZykKKyAgICAsIG1fcG9pbnRJbk1haW5GcmFtZShwb2ludCgpKQogICAg
ICwgbV9pc092ZXJXaWRnZXQoZmFsc2UpCiB7CiB9CiAKIEhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RS
ZXN1bHQoY29uc3QgSGl0VGVzdExvY2F0aW9uJiBvdGhlcikKICAgICA6IEhpdFRlc3RMb2NhdGlv
bihvdGhlcikKKyAgICAsIG1fcG9pbnRJbk1haW5GcmFtZShwb2ludCgpKQogICAgICwgbV9pc092
ZXJXaWRnZXQoZmFsc2UpCiB7CiB9CkBAIC0yMTgsNiArMjIwLDcgQEAgSGl0VGVzdFJlc3VsdDo6
SGl0VGVzdFJlc3VsdChjb25zdCBIaXRUZXN0UmVzdWx0JiBvdGhlcikKICAgICA6IEhpdFRlc3RM
b2NhdGlvbihvdGhlcikKICAgICAsIG1faW5uZXJOb2RlKG90aGVyLmlubmVyTm9kZSgpKQogICAg
ICwgbV9pbm5lck5vblNoYXJlZE5vZGUob3RoZXIuaW5uZXJOb25TaGFyZWROb2RlKCkpCisgICAg
LCBtX3BvaW50SW5NYWluRnJhbWUob3RoZXIubV9wb2ludEluTWFpbkZyYW1lKQogICAgICwgbV9s
b2NhbFBvaW50KG90aGVyLmxvY2FsUG9pbnQoKSkKICAgICAsIG1faW5uZXJVUkxFbGVtZW50KG90
aGVyLlVSTEVsZW1lbnQoKSkKICAgICAsIG1fc2Nyb2xsYmFyKG90aGVyLnNjcm9sbGJhcigpKQpA
QCAtMjM2LDYgKzIzOSw3IEBAIEhpdFRlc3RSZXN1bHQmIEhpdFRlc3RSZXN1bHQ6Om9wZXJhdG9y
PShjb25zdCBIaXRUZXN0UmVzdWx0JiBvdGhlcikKICAgICBIaXRUZXN0TG9jYXRpb246Om9wZXJh
dG9yPShvdGhlcik7CiAgICAgbV9pbm5lck5vZGUgPSBvdGhlci5pbm5lck5vZGUoKTsKICAgICBt
X2lubmVyTm9uU2hhcmVkTm9kZSA9IG90aGVyLmlubmVyTm9uU2hhcmVkTm9kZSgpOworICAgIG1f
cG9pbnRJbk1haW5GcmFtZSA9IG90aGVyLm1fcG9pbnRJbk1haW5GcmFtZTsKICAgICBtX2xvY2Fs
UG9pbnQgPSBvdGhlci5sb2NhbFBvaW50KCk7CiAgICAgbV9pbm5lclVSTEVsZW1lbnQgPSBvdGhl
ci5VUkxFbGVtZW50KCk7CiAgICAgbV9zY3JvbGxiYXIgPSBvdGhlci5zY3JvbGxiYXIoKTsKQEAg
LTI3OSw2ICsyODMsMTUgQEAgdm9pZCBIaXRUZXN0UmVzdWx0OjpzZXRTY3JvbGxiYXIoU2Nyb2xs
YmFyKiBzKQogICAgIG1fc2Nyb2xsYmFyID0gczsKIH0KIAorRnJhbWUqIEhpdFRlc3RSZXN1bHQ6
OmlubmVyRnJhbWUoKSBjb25zdAoreworICAgIGlmIChtX2lubmVyTm9uU2hhcmVkTm9kZSkKKyAg
ICAgICAgcmV0dXJuIG1faW5uZXJOb25TaGFyZWROb2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpOwor
ICAgIGlmIChtX2lubmVyTm9kZSkKKyAgICAgICAgcmV0dXJuIG1faW5uZXJOb2RlLT5kb2N1bWVu
dCgpLT5mcmFtZSgpOworICAgIHJldHVybiAwOworfQorCiBGcmFtZSogSGl0VGVzdFJlc3VsdDo6
dGFyZ2V0RnJhbWUoKSBjb25zdAogewogICAgIGlmICghbV9pbm5lclVSTEVsZW1lbnQpCkBAIC03
NDYsNiArNzU5LDcgQEAgdm9pZCBIaXRUZXN0UmVzdWx0OjphcHBlbmQoY29uc3QgSGl0VGVzdFJl
c3VsdCYgb3RoZXIpCiAgICAgICAgIG1faW5uZXJOb2RlID0gb3RoZXIuaW5uZXJOb2RlKCk7CiAg
ICAgICAgIG1faW5uZXJOb25TaGFyZWROb2RlID0gb3RoZXIuaW5uZXJOb25TaGFyZWROb2RlKCk7
CiAgICAgICAgIG1fbG9jYWxQb2ludCA9IG90aGVyLmxvY2FsUG9pbnQoKTsKKyAgICAgICAgbV9w
b2ludEluTWFpbkZyYW1lID0gb3RoZXIubV9wb2ludEluTWFpbkZyYW1lOwogICAgICAgICBtX2lu
bmVyVVJMRWxlbWVudCA9IG90aGVyLlVSTEVsZW1lbnQoKTsKICAgICAgICAgbV9zY3JvbGxiYXIg
PSBvdGhlci5zY3JvbGxiYXIoKTsKICAgICAgICAgbV9pc092ZXJXaWRnZXQgPSBvdGhlci5pc092
ZXJXaWRnZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0
UmVzdWx0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oCmluZGV4
IDkxMjllZWQ0NDExYTAwMDUwMzEwOWY2MTQzYjFkYjUzZGYyZjIwMGMuLjRjMDExMmQ0NjdhMzk1
MTQyNzU1N2FlNzI2ZTExMDkxMWYyMzg1YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hp
dFRlc3RSZXN1bHQuaApAQCAtMTAwLDcgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lz
UmVjdGlsaW5lYXI7CiB9OwogCi1jbGFzcyBIaXRUZXN0UmVzdWx0IDogcHVibGljIEhpdFRlc3RM
b2NhdGlvbiB7CitjbGFzcyBIaXRUZXN0UmVzdWx0IDogcHJvdGVjdGVkIEhpdFRlc3RMb2NhdGlv
biB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBMaXN0SGFzaFNldDxSZWZQdHI8Tm9kZT4gPiBOb2Rl
U2V0OwogCkBAIC0xMTUsMTggKzExNSwzMyBAQCBwdWJsaWM6CiAKICAgICBOb2RlKiBpbm5lck5v
ZGUoKSBjb25zdCB7IHJldHVybiBtX2lubmVyTm9kZS5nZXQoKTsgfQogICAgIE5vZGUqIGlubmVy
Tm9uU2hhcmVkTm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5uZXJOb25TaGFyZWROb2RlLmdldCgp
OyB9Ci0gICAgTGF5b3V0UG9pbnQgbG9jYWxQb2ludCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxQ
b2ludDsgfQogICAgIEVsZW1lbnQqIFVSTEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2lubmVy
VVJMRWxlbWVudC5nZXQoKTsgfQogICAgIFNjcm9sbGJhciogc2Nyb2xsYmFyKCkgY29uc3QgeyBy
ZXR1cm4gbV9zY3JvbGxiYXIuZ2V0KCk7IH0KICAgICBib29sIGlzT3ZlcldpZGdldCgpIGNvbnN0
IHsgcmV0dXJuIG1faXNPdmVyV2lkZ2V0OyB9CiAKKyAgICAvLyBGb3J3YXJkZWQgZnJvbSBIaXRU
ZXN0TG9jYXRpb24KKyAgICBib29sIGlzUmVjdEJhc2VkVGVzdCgpIGNvbnN0IHsgcmV0dXJuIEhp
dFRlc3RMb2NhdGlvbjo6aXNSZWN0QmFzZWRUZXN0KCk7IH0KKworICAgIC8vIFRoZSBoaXQtdGVz
dGVkIHBvaW50IGluIHRoZSBjb29yZGluYXRlcyBvZiB0aGUgbWFpbiBmcmFtZS4KKyAgICBMYXlv
dXRQb2ludCBwb2ludEluTWFpbkZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9wb2ludEluTWFpbkZy
YW1lOyB9CisgICAgSW50UG9pbnQgcm91bmRlZFBvaW50SW5NYWluRnJhbWUoKSBjb25zdCB7IHJl
dHVybiByb3VuZGVkSW50UG9pbnQocG9pbnRJbk1haW5GcmFtZSgpKTsgfQorICAgIHZvaWQgc2V0
UG9pbnRJbk1haW5GcmFtZShjb25zdCBMYXlvdXRQb2ludCYgcCkgeyBtX3BvaW50SW5NYWluRnJh
bWUgPSBwOyB9CisKKyAgICAvLyBUaGUgaGl0LXRlc3RlZCBwb2ludCBpbiB0aGUgY29vcmRpbmF0
ZXMgb2YgdGhlIGlubmVyIGZyYW1lLCB0aGUgZnJhbWUgY29udGFpbmluZyBpbm5lck5vZGUuCisg
ICAgTGF5b3V0UG9pbnQgcG9pbnRJbklubmVyRnJhbWUoKSBjb25zdCB7IHJldHVybiBIaXRUZXN0
TG9jYXRpb246OnBvaW50KCk7IH0KKyAgICBJbnRQb2ludCByb3VuZGVkUG9pbnRJbklubmVyRnJh
bWUoKSBjb25zdCB7IHJldHVybiByb3VuZGVkSW50UG9pbnQocG9pbnRJbklubmVyRnJhbWUoKSk7
IH0KKyAgICBGcmFtZSogaW5uZXJGcmFtZSgpIGNvbnN0OworCisgICAgLy8gVGhlIGhpdC10ZXN0
ZWQgcG9pbnQgaW4gdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSBpbm5lciBub2RlLgorICAgIExheW91
dFBvaW50IGxvY2FsUG9pbnQoKSBjb25zdCB7IHJldHVybiBtX2xvY2FsUG9pbnQ7IH0KKyAgICB2
b2lkIHNldExvY2FsUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHApIHsgbV9sb2NhbFBvaW50ID0g
cDsgfQorCiAgICAgdm9pZCBzZXRUb05vblNoYWRvd0FuY2VzdG9yKCk7CiAKICAgICBjb25zdCBI
aXRUZXN0TG9jYXRpb24mIGhpdFRlc3RMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9
CiAKICAgICB2b2lkIHNldElubmVyTm9kZShOb2RlKik7CiAgICAgdm9pZCBzZXRJbm5lck5vblNo
YXJlZE5vZGUoTm9kZSopOwotICAgIHZvaWQgc2V0TG9jYWxQb2ludChjb25zdCBMYXlvdXRQb2lu
dCYgcCkgeyBtX2xvY2FsUG9pbnQgPSBwOyB9CiAgICAgdm9pZCBzZXRVUkxFbGVtZW50KEVsZW1l
bnQqKTsKICAgICB2b2lkIHNldFNjcm9sbGJhcihTY3JvbGxiYXIqKTsKICAgICB2b2lkIHNldElz
T3ZlcldpZGdldChib29sIGIpIHsgbV9pc092ZXJXaWRnZXQgPSBiOyB9CkBAIC0xODUsNiArMjAw
LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxOb2RlPiBtX2lubmVyTm9kZTsKICAgICBSZWZQ
dHI8Tm9kZT4gbV9pbm5lck5vblNoYXJlZE5vZGU7CisgICAgTGF5b3V0UG9pbnQgbV9wb2ludElu
TWFpbkZyYW1lOwogICAgIExheW91dFBvaW50IG1fbG9jYWxQb2ludDsgLy8gQSBwb2ludCBpbiB0
aGUgbG9jYWwgY29vcmRpbmF0ZSBzcGFjZSBvZiBtX2lubmVyTm9uU2hhcmVkTm9kZSdzIHJlbmRl
cmVyLiBBbGxvd3MgdXMgdG8gZWZmaWNpZW50bHkKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIGRldGVybWluZSB3aGVyZSBpbnNpZGUgdGhlIHJlbmRlcmVyIHdlIGhpdCBvbiBzdWJz
ZXF1ZW50IG9wZXJhdGlvbnMuCiAgICAgUmVmUHRyPEVsZW1lbnQ+IG1faW5uZXJVUkxFbGVtZW50
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggNjI2MDZmMTk2
YzFhOGRlOTFlYTllYzJjNDRjZDM2ZWY0NTA2YjMyYS4uOWIwNGRjZTE2YzVkYzVkZjY0ZmFmMTdi
OTgxNDFmNDZkZmNiNjM1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwCkBAIC0zNTE4LDcgKzM1MTgsNyBAQCBib29sIFJlbmRlckxheWVyOjpoaXRUZXN0KGNvbnN0
IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBIaXRUZXN0TG9jYXRpb24mCiAgICAgICAg
IC8vIHJldHVybiBvdXJzZWx2ZXMuIFdlIGRvIHRoaXMgc28gbW91c2UgZXZlbnRzIGNvbnRpbnVl
IGdldHRpbmcgZGVsaXZlcmVkIGFmdGVyIGEgZHJhZyBoYXMgCiAgICAgICAgIC8vIGV4aXRlZCB0
aGUgV2ViVmlldywgYW5kIHNvIGhpdCB0ZXN0aW5nIG92ZXIgYSBzY3JvbGxiYXIgaGl0cyB0aGUg
Y29udGVudCBkb2N1bWVudC4KICAgICAgICAgaWYgKChyZXF1ZXN0LmFjdGl2ZSgpIHx8IHJlcXVl
c3QucmVsZWFzZSgpKSAmJiBpc1Jvb3RMYXllcigpKSB7Ci0gICAgICAgICAgICByZW5kZXJlcigp
LT51cGRhdGVIaXRUZXN0UmVzdWx0KHJlc3VsdCwgdG9SZW5kZXJWaWV3KHJlbmRlcmVyKCkpLT5m
bGlwRm9yV3JpdGluZ01vZGUocmVzdWx0LnBvaW50KCkpKTsKKyAgICAgICAgICAgIHJlbmRlcmVy
KCktPnVwZGF0ZUhpdFRlc3RSZXN1bHQocmVzdWx0LCB0b1JlbmRlclZpZXcocmVuZGVyZXIoKSkt
PmZsaXBGb3JXcml0aW5nTW9kZShoaXRUZXN0TG9jYXRpb24ucG9pbnQoKSkpOwogICAgICAgICAg
ICAgaW5zaWRlTGF5ZXIgPSB0aGlzOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAppbmRleCA5ZDA5NjFjNDY3ZTkw
ODc3MmIzODRiYjFhOTU2OTVmZWY2YjJiZGZmLi5hMjc1OTM1NmQ4Y2I5ODJhNzg4OTFiMzY4MmI3
NDY4NzZkZjkyOTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJv
bWVDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVD
bGllbnRJbXBsLmNwcApAQCAtNjA0LDcgKzYwNCw3IEBAIHZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6
bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoCiAgICAgICAgICAgICBXaWRnZXQqIHdpZGdldCA9IHRv
UmVuZGVyV2lkZ2V0KG9iamVjdCktPndpZGdldCgpOwogICAgICAgICAgICAgaWYgKHdpZGdldCAm
JiB3aWRnZXQtPmlzUGx1Z2luQ29udGFpbmVyKCkpIHsKICAgICAgICAgICAgICAgICBXZWJQbHVn
aW5Db250YWluZXJJbXBsKiBwbHVnaW4gPSBzdGF0aWNfY2FzdDxXZWJQbHVnaW5Db250YWluZXJJ
bXBsKj4od2lkZ2V0KTsKLSAgICAgICAgICAgICAgICB1cmwgPSBwbHVnaW4tPnBsdWdpbigpLT5s
aW5rQXRQb3NpdGlvbihyZXN1bHQucm91bmRlZFBvaW50KCkpOworICAgICAgICAgICAgICAgIHVy
bCA9IHBsdWdpbi0+cGx1Z2luKCktPmxpbmtBdFBvc2l0aW9uKHJlc3VsdC5yb3VuZGVkUG9pbnRJ
bklubmVyRnJhbWUoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Db250ZXh0TWVudUNsaWVudEltcGwuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ29udGV4dE1lbnVDbGllbnRJbXBsLmNwcApp
bmRleCBhZDExNjA5MGNkZWFhZTYzZDEyNjE2NGUxZDcwY2IwMzc3MjIyOGE0Li43MTgyZTgwMjEx
YTMwZmMxOGMyNTg4ZDZlZjZkNWZkNmI3MzZiMWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9Db250ZXh0TWVudUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0NvbnRleHRNZW51Q2xpZW50SW1wbC5jcHAKQEAgLTEyMCw3ICsxMjAs
NyBAQCBzdGF0aWMgU3RyaW5nIHNlbGVjdE1pc3NwZWxsZWRXb3JkKGNvbnN0IENvbnRleHRNZW51
KiBkZWZhdWx0TWVudSwgRnJhbWUqIHNlbGVjdAogCiAgICAgLy8gU2VsZWN0aW9uIGlzIGVtcHR5
LCBzbyBjaGFuZ2UgdGhlIHNlbGVjdGlvbiB0byB0aGUgd29yZCB1bmRlciB0aGUgY3Vyc29yLgog
ICAgIEhpdFRlc3RSZXN1bHQgaGl0VGVzdFJlc3VsdCA9IHNlbGVjdGVkRnJhbWUtPmV2ZW50SGFu
ZGxlcigpLT4KLSAgICAgICAgaGl0VGVzdFJlc3VsdEF0UG9pbnQoc2VsZWN0ZWRGcmFtZS0+cGFn
ZSgpLT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKS0+aGl0VGVzdFJlc3VsdCgpLnBvaW50KCksIHRy
dWUpOworICAgICAgICBoaXRUZXN0UmVzdWx0QXRQb2ludChzZWxlY3RlZEZyYW1lLT5wYWdlKCkt
PmNvbnRleHRNZW51Q29udHJvbGxlcigpLT5oaXRUZXN0UmVzdWx0KCkucG9pbnRJbklubmVyRnJh
bWUoKSwgdHJ1ZSk7CiAgICAgTm9kZSogaW5uZXJOb2RlID0gaGl0VGVzdFJlc3VsdC5pbm5lck5v
ZGUoKTsKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zKGlubmVyTm9kZS0+cmVuZGVyZXIoKS0+cG9z
aXRpb25Gb3JQb2ludCgKICAgICAgICAgaGl0VGVzdFJlc3VsdC5sb2NhbFBvaW50KCkpKTsKQEAg
LTE1NSwxMCArMTU1LDEwIEBAIFBsYXRmb3JtTWVudURlc2NyaXB0aW9uIENvbnRleHRNZW51Q2xp
ZW50SW1wbDo6Z2V0Q3VzdG9tTWVudUZyb21EZWZhdWx0SXRlbXMoCiAgICAgICAgIHJldHVybiAw
OwogCiAgICAgSGl0VGVzdFJlc3VsdCByID0gbV93ZWJWaWV3LT5wYWdlKCktPmNvbnRleHRNZW51
Q29udHJvbGxlcigpLT5oaXRUZXN0UmVzdWx0KCk7Ci0gICAgRnJhbWUqIHNlbGVjdGVkRnJhbWUg
PSByLmlubmVyTm9uU2hhcmVkTm9kZSgpLT5kb2N1bWVudCgpLT5mcmFtZSgpOworICAgIEZyYW1l
KiBzZWxlY3RlZEZyYW1lID0gci5pbm5lckZyYW1lKCk7CiAKICAgICBXZWJDb250ZXh0TWVudURh
dGEgZGF0YTsKLSAgICBkYXRhLm1vdXNlUG9zaXRpb24gPSBzZWxlY3RlZEZyYW1lLT52aWV3KCkt
PmNvbnRlbnRzVG9XaW5kb3coci5yb3VuZGVkUG9pbnQoKSk7CisgICAgZGF0YS5tb3VzZVBvc2l0
aW9uID0gc2VsZWN0ZWRGcmFtZS0+dmlldygpLT5jb250ZW50c1RvV2luZG93KHIucm91bmRlZFBv
aW50SW5Jbm5lckZyYW1lKCkpOwogCiAgICAgLy8gQ29tcHV0ZSBlZGl0IGZsYWdzLgogICAgIGRh
dGEuZWRpdEZsYWdzID0gV2ViQ29udGV4dE1lbnVEYXRhOjpDYW5Eb05vbmU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAppbmRleCBmZjRhMGI0NGM3MTQ0ZTQ4
NjM0NTAwYTM1ZmM4OTM1ZjE0MDc5NWJkLi5jZWJjY2FhZDJlZDAzNTIwMGVjMzFkNDk2YTAyYzE0
ZGMxNGFjMzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFt
ZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5j
cHAKQEAgLTExOTQsNyArMTE5NCw3IEBAIHNpemVfdCBXZWJGcmFtZUltcGw6OmNoYXJhY3Rlcklu
ZGV4Rm9yUG9pbnQoY29uc3QgV2ViUG9pbnQmIHdlYlBvaW50KSBjb25zdAogCiAgICAgSW50UG9p
bnQgcG9pbnQgPSBmcmFtZSgpLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMod2ViUG9pbnQpOwog
ICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRl
c3RSZXN1bHRBdFBvaW50KHBvaW50LCBmYWxzZSk7Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9
IGZyYW1lKCktPnJhbmdlRm9yUG9pbnQocmVzdWx0LnJvdW5kZWRQb2ludCgpKTsKKyAgICBSZWZQ
dHI8UmFuZ2U+IHJhbmdlID0gZnJhbWUoKS0+cmFuZ2VGb3JQb2ludChyZXN1bHQucm91bmRlZFBv
aW50SW5Jbm5lckZyYW1lKCkpOwogICAgIGlmICghcmFuZ2UpCiAgICAgICAgIHJldHVybiBub3RG
b3VuZDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAppbmRleCAxMTk1N2U0NDY2M2Zl
MjdkNTU1MTRkYjg4ZjU1YjJkMGMzMjUxMWEzLi5kYTY3ODRlZmQ5NGQwZGJiNGI2ODE3NTlkMTUx
NWEzOWVmOGE1Yjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1l
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcApAQCAtNzAyLDgg
KzcwMiw4IEBAIEV3a19IaXRfVGVzdCogZXdrX2ZyYW1lX2hpdF90ZXN0X25ldyhjb25zdCBFdmFz
X09iamVjdCogZXdrRnJhbWUsIGludCB4LCBpbnQgeSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAg
ICBFd2tfSGl0X1Rlc3QqIGhpdFRlc3QgPSBuZXcgRXdrX0hpdF9UZXN0OwotICAgIGhpdFRlc3Qt
PnggPSByZXN1bHQucG9pbnQoKS54KCk7Ci0gICAgaGl0VGVzdC0+eSA9IHJlc3VsdC5wb2ludCgp
LnkoKTsKKyAgICBoaXRUZXN0LT54ID0gcmVzdWx0LnBvaW50SW5NYWluRnJhbWUoKS54KCk7Cisg
ICAgaGl0VGVzdC0+eSA9IHJlc3VsdC5wb2ludEluTWFpbkZyYW1lKCkueSgpOwogI2lmIDAKICAg
ICAvLyBGSVhNRQogICAgIGhpdFRlc3QtPmJvdW5kaW5nX2JveC54ID0gcmVzdWx0LmJvdW5kaW5n
Qm94KCkueCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGhp
dHRlc3RyZXN1bHQuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGhpdHRlc3Ry
ZXN1bHQuY3BwCmluZGV4IDNiNmE3N2E2NzA2ZGUxYTZkYjRmOGMyMjEyYWQxZGVkOTBkMDA1ODMu
LjkyZGRkOWVkOWIzYWE1ZmVhY2Q3ZTIxNzI0MDBhNTRlZTFjNmU3YWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRoaXR0ZXN0cmVzdWx0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0aGl0dGVzdHJlc3VsdC5jcHAKQEAgLTI4OCw3ICsy
ODgsNyBAQCBXZWJLaXRIaXRUZXN0UmVzdWx0KiBraXQoY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJl
c3VsdCYgcmVzdWx0KQogICAgIEdPd25QdHI8Y2hhcj4gaW1hZ2VVUkkoMCk7CiAgICAgR093blB0
cjxjaGFyPiBtZWRpYVVSSSgwKTsKICAgICBXZWJLaXRET01Ob2RlKiBub2RlID0gMDsKLSAgICBX
ZWJDb3JlOjpGcmFtZSogdGFyZ2V0RnJhbWU7CisgICAgV2ViQ29yZTo6RnJhbWUqIGlubmVyRnJh
bWU7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQ7CiAKICAgICBpZiAoIXJlc3VsdC5hYnNv
bHV0ZUxpbmtVUkwoKS5pc0VtcHR5KCkpIHsKQEAgLTMxNSwxMiArMzE1LDEyIEBAIFdlYktpdEhp
dFRlc3RSZXN1bHQqIGtpdChjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0JiByZXN1bHQpCiAg
ICAgaWYgKHJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKSkKICAgICAgICAgbm9kZSA9IGtpdChy
ZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCkpOwogCi0gICAgdGFyZ2V0RnJhbWUgPSByZXN1bHQu
dGFyZ2V0RnJhbWUoKTsKLSAgICBpZiAodGFyZ2V0RnJhbWUgJiYgdGFyZ2V0RnJhbWUtPnZpZXco
KSkgeworICAgIGlubmVyRnJhbWUgPSByZXN1bHQuaW5uZXJGcmFtZSgpOworICAgIGlmIChpbm5l
ckZyYW1lICYmIGlubmVyRnJhbWUtPnZpZXcoKSkgewogICAgICAgICAvLyBDb252ZXJ0IGRvY3Vt
ZW50IGNvb3JkcyB0byB3aWRnZXQgY29vcmRzLgotICAgICAgICBwb2ludCA9IHRhcmdldEZyYW1l
LT52aWV3KCktPmNvbnRlbnRzVG9XaW5kb3cocmVzdWx0LnJvdW5kZWRQb2ludCgpKTsKKyAgICAg
ICAgcG9pbnQgPSBpbm5lckZyYW1lLT52aWV3KCktPmNvbnRlbnRzVG9XaW5kb3cocmVzdWx0LnJv
dW5kZWRQb2ludEluSW5uZXJGcmFtZSgpKTsKICAgICB9IGVsc2UKLSAgICAgICAgcG9pbnQgPSBy
ZXN1bHQucm91bmRlZFBvaW50KCk7CisgICAgICAgIHBvaW50ID0gcmVzdWx0LnJvdW5kZWRQb2lu
dEluTWFpbkZyYW1lKCk7CiAKICAgICByZXR1cm4gV0VCS0lUX0hJVF9URVNUX1JFU1VMVChnX29i
amVjdF9uZXcoV0VCS0lUX1RZUEVfSElUX1RFU1RfUkVTVUxULAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluay11cmkiLCBsaW5rVVJJLmdldCgpLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1l
bnVDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0
TWVudUNsaWVudC5tbQppbmRleCBlMzEzMTM2MDM2Zjc4ZDYwMTcyMzA2OTJlZDhjNjc5MDhlOWQ0
M2UwLi4xMDI3ODkwMTA5YzA0MjBhM2NjYWI2NDM0MDA0ZmMyZWYwN2Y0M2EzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNs
aWVudC5tbQpAQCAtMzU2LDE3ICszNTYsMTQgQEAgdm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6
c2hvd0NvbnRleHRNZW51KCkKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsKICAgICBD
b250ZXh0TWVudUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBwYWdlLT5jb250ZXh0TWVudUNvbnRy
b2xsZXIoKTsKLSAgICBOb2RlKiBub2RlID0gY29udHJvbGxlci0+aGl0VGVzdFJlc3VsdCgpLmlu
bmVyTm9uU2hhcmVkTm9kZSgpOwotICAgIGlmICghbm9kZSkKLSAgICAgICAgcmV0dXJuOwotICAg
IEZyYW1lKiBmcmFtZSA9IG5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCk7CisgICAgRnJhbWUqIGZy
YW1lID0gY29udHJvbGxlci0+aGl0VGVzdFJlc3VsdCgpLmlubmVyRnJhbWUoKTsKICAgICBpZiAo
IWZyYW1lKQogICAgICAgICByZXR1cm47CiAgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBmcmFt
ZS0+dmlldygpOwogICAgIGlmICghZnJhbWVWaWV3KQogICAgICAgICByZXR1cm47CiAKLSAgICBJ
bnRQb2ludCBwb2ludCA9IGZyYW1lVmlldy0+Y29udGVudHNUb1dpbmRvdyhjb250cm9sbGVyLT5o
aXRUZXN0UmVzdWx0KCkucm91bmRlZFBvaW50KCkpOworICAgIEludFBvaW50IHBvaW50ID0gZnJh
bWVWaWV3LT5jb250ZW50c1RvV2luZG93KGNvbnRyb2xsZXItPmhpdFRlc3RSZXN1bHQoKS5yb3Vu
ZGVkUG9pbnRJbklubmVyRnJhbWUoKSk7CiAgICAgTlNWaWV3KiB2aWV3ID0gZnJhbWVWaWV3LT5k
b2N1bWVudFZpZXcoKTsKICAgICBOU1BvaW50IG5zU2NyZWVuUG9pbnQgPSBbdmlldyBjb252ZXJ0
UG9pbnQ6cG9pbnQgdG9WaWV3Om5pbF07CiAgICAgLy8gU2hvdyB0aGUgY29udGV4dHVhbCBtZW51
IGZvciB0aGlzIGV2ZW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmZy
YW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAKaW5kZXggMGFjY2Qz
MzYyZGQ2ODczNGNmZGYyMTM4NWVjMzgwNjRmMmMxMzFiZi4uZjE1YWFmMzM4YWUzZGQ4ODVjYThh
ZGEyZWYzYWNlN2U0ZWZiZTAxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdl
YmZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCkBAIC0x
NTk4LDcgKzE1OTgsNyBAQCBRV2ViSGl0VGVzdFJlc3VsdFByaXZhdGU6OlFXZWJIaXRUZXN0UmVz
dWx0UHJpdmF0ZShjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0CiB7CiAgICAgaWYgKCFoaXRU
ZXN0LmlubmVyTm9kZSgpKQogICAgICAgICByZXR1cm47Ci0gICAgcG9zID0gaGl0VGVzdC5yb3Vu
ZGVkUG9pbnQoKTsKKyAgICBwb3MgPSBoaXRUZXN0LnJvdW5kZWRQb2ludEluTWFpbkZyYW1lKCk7
CiAgICAgV2ViQ29yZTo6VGV4dERpcmVjdGlvbiBkaXI7CiAgICAgdGl0bGUgPSBoaXRUZXN0LnRp
dGxlKGRpcik7CiAgICAgbGlua1RleHQgPSBoaXRUZXN0LnRleHRDb250ZW50KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0
L0FwaS9xd2VicGFnZS5jcHAKaW5kZXggOTAxOWY0Njg4NTdkZjFiNmJiZWU0NDcxZjc0NjZlYTg3
ODA4YTg0YS4uYzZlYzZhYjNiNzU3MzkwZmU5NjY2OTE4ZDA3N2VmOTYwNDIyZTVjNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvcXQvQXBpL3F3ZWJwYWdlLmNwcApAQCAtMTU1Myw3ICsxNTUzLDcgQEAgSW50UG9pbnQgUVdl
YlBhZ2VQcml2YXRlOjpUb3VjaEFkanVzdGVyOjpmaW5kQ2FuZGlkYXRlUG9pbnRGb3JUb3VjaChj
b25zdCBJbnRQb2kKICAgICBGcmFtZVZpZXcqIHZpZXcgPSBkb2N1bWVudC0+ZnJhbWUoKS0+dmll
dygpOwogCiAgICAgLy8gVG91Y2ggcmVjdCBpbiBjb250ZW50cyBjb29yZGluYXRlcy4KLSAgICBJ
bnRSZWN0IHRvdWNoUmVjdChIaXRUZXN0UmVzdWx0OjpyZWN0Rm9yUG9pbnQodmlldy0+d2luZG93
VG9Db250ZW50cyhJbnRQb2ludCh4LCB5KSksIG1fdG9wUGFkZGluZywgbV9yaWdodFBhZGRpbmcs
IG1fYm90dG9tUGFkZGluZywgbV9sZWZ0UGFkZGluZykpOworICAgIEludFJlY3QgdG91Y2hSZWN0
KEhpdFRlc3RMb2NhdGlvbjo6cmVjdEZvclBvaW50KHZpZXctPndpbmRvd1RvQ29udGVudHMoSW50
UG9pbnQoeCwgeSkpLCBtX3RvcFBhZGRpbmcsIG1fcmlnaHRQYWRkaW5nLCBtX2JvdHRvbVBhZGRp
bmcsIG1fbGVmdFBhZGRpbmcpKTsKIAogICAgIC8vIEl0ZXJhdGUgb3ZlciB0aGUgbGlzdCBvZiBu
b2RlcyBoaXQgbG9va2luZyBmb3IgdGhlIG9uZSB3aG9zZSBib3VuZGluZyBhcmVhCiAgICAgLy8g
aGFzIGxhcmdlc3QgaW50ZXJzZWN0aW9uIHdpdGggdGhlIHRvdWNoIGFyZWEgKHBvaW50ICsgcGFk
ZGluZykuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCmluZGV4IGQ0NTRjOTg4MjE1YTIwNzhhZjY4NGQ3MjI3
YzY3NDlmZTcxNWFiMjUuLjJlMzM0Y2Q4NDFlZmE2Yjk4ZWIyZjQyYTdjNThkZGQ5MjUxNWEwNjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYlZpZXcuY3BwCkBAIC0xMzQ5LDExICsxMzQ5LDcgQEAgYm9vbCBXZWJWaWV3
OjpoYW5kbGVDb250ZXh0TWVudUV2ZW50KFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pCiAg
ICAgaWYgKCFjb3JlTWVudSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgTm9kZSogbm9k
ZSA9IGNvbnRleHRNZW51Q29udHJvbGxlci0+aGl0VGVzdFJlc3VsdCgpLmlubmVyTm9uU2hhcmVk
Tm9kZSgpOwotICAgIGlmICghbm9kZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgRnJh
bWUqIGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsKKyAgICBGcmFtZSogZnJhbWUg
PSBjb250ZXh0TWVudUNvbnRyb2xsZXItPmhpdFRlc3RSZXN1bHQoKS5pbm5lckZyYW1lKCk7CiAg
ICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xMzYxLDcgKzEzNTcs
NyBAQCBib29sIFdlYlZpZXc6OmhhbmRsZUNvbnRleHRNZW51RXZlbnQoV1BBUkFNIHdQYXJhbSwg
TFBBUkFNIGxQYXJhbSkKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIFBPSU5UIHBvaW50KHZpZXctPmNvbnRlbnRzVG9XaW5kb3coY29udGV4dE1lbnVDb250cm9s
bGVyLT5oaXRUZXN0UmVzdWx0KCkucm91bmRlZFBvaW50KCkpKTsKKyAgICBQT0lOVCBwb2ludCh2
aWV3LT5jb250ZW50c1RvV2luZG93KGNvbnRleHRNZW51Q29udHJvbGxlci0+aGl0VGVzdFJlc3Vs
dCgpLnJvdW5kZWRQb2ludEluSW5uZXJGcmFtZSgpKSk7CiAKICAgICAvLyBUcmFuc2xhdGUgdGhl
IHBvaW50IHRvIHNjcmVlbiBjb29yZGluYXRlcwogICAgIGlmICghOjpDbGllbnRUb1NjcmVlbiht
X3ZpZXdXaW5kb3csICZwb2ludCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViQ29udGV4dE1lbnUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkNvbnRleHRNZW51LmNwcAppbmRleCAzYTkxZDkwYjc1NWU2OGQ3ZDUzNTk3
OTNhY2UwZmUzNzVhZTY4NjEwLi5kNDMxZmJlMDhkMWQyODE0ZDZhZDIzYzhkOTI4MjZiZjhjN2Yz
NDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29u
dGV4dE1lbnUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJD
b250ZXh0TWVudS5jcHAKQEAgLTU5LDEwICs1OSw3IEBAIHZvaWQgV2ViQ29udGV4dE1lbnU6OnNo
b3coKQogICAgIENvbnRleHRNZW51KiBtZW51ID0gY29udHJvbGxlci0+Y29udGV4dE1lbnUoKTsK
ICAgICBpZiAoIW1lbnUpCiAgICAgICAgIHJldHVybjsKLSAgICBOb2RlKiBub2RlID0gY29udHJv
bGxlci0+aGl0VGVzdFJlc3VsdCgpLmlubmVyTm9uU2hhcmVkTm9kZSgpOwotICAgIGlmICghbm9k
ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIEZyYW1lKiBmcmFtZSA9IG5vZGUtPmRvY3VtZW50KCkt
PmZyYW1lKCk7CisgICAgRnJhbWUqIGZyYW1lID0gY29udHJvbGxlci0+aGl0VGVzdFJlc3VsdCgp
LmlubmVyRnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAgICAgRnJh
bWVWaWV3KiB2aWV3ID0gZnJhbWUtPnZpZXcoKTsKQEAgLTg2LDcgKzgzLDcgQEAgdm9pZCBXZWJD
b250ZXh0TWVudTo6c2hvdygpCiAKICAgICAvLyBNYXJrIHRoZSBXZWJQYWdlIGhhcyBoYXZpbmcg
YSBzaG93biBjb250ZXh0IG1lbnUgdGhlbiBub3RpZnkgdGhlIFVJUHJvY2Vzcy4KICAgICBtX3Bh
Z2UtPmNvbnRleHRNZW51U2hvd2luZygpOwotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpTaG93Q29udGV4dE1lbnUodmlldy0+Y29udGVudHNUb1dpbmRvdyhjb250cm9s
bGVyLT5oaXRUZXN0UmVzdWx0KCkucm91bmRlZFBvaW50KCkpLCB3ZWJIaXRUZXN0UmVzdWx0RGF0
YSwgcHJvcG9zZWRNZW51LCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0
YS5nZXQoKSkpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2hv
d0NvbnRleHRNZW51KHZpZXctPmNvbnRlbnRzVG9XaW5kb3coY29udHJvbGxlci0+aGl0VGVzdFJl
c3VsdCgpLnJvdW5kZWRQb2ludEluSW5uZXJGcmFtZSgpKSwgd2ViSGl0VGVzdFJlc3VsdERhdGEs
IHByb3Bvc2VkTWVudSwgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEu
Z2V0KCkpKSk7CiB9CiAKIHZvaWQgV2ViQ29udGV4dE1lbnU6Oml0ZW1TZWxlY3RlZChjb25zdCBX
ZWJDb250ZXh0TWVudUl0ZW1EYXRhJiBpdGVtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IDJhY2Y4NWIwZTRkMmQzYTdi
Y2RhNjZiNzFlOTA0YmQ3N2JlZDA1NzIuLjEzODIyY2QyMjFhOGJjN2VkMjBmMzZhMzkwYmRiNTZi
ZDViZjE5NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1dlYlBhZ2VNYWMubW0KQEAgLTM4NCw5ICszODQsOSBAQCB2b2lkIFdlYlBhZ2U6OmNoYXJh
Y3RlckluZGV4Rm9yUG9pbnQoSW50UG9pbnQgcG9pbnQsIHVpbnQ2NF90JiBpbmRleCkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBmcmFtZS0+ZXZlbnRIYW5k
bGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KHBvaW50LCBmYWxzZSk7Ci0gICAgZnJhbWUgPSBy
ZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCkgPyByZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCkt
PmRvY3VtZW50KCktPmZyYW1lKCkgOiBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2Vk
T3JNYWluRnJhbWUoKTsKKyAgICBmcmFtZSA9IHJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKSA/
IHJlc3VsdC5pbm5lckZyYW1lKCkgOiBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2Vk
T3JNYWluRnJhbWUoKTsKICAgICAKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gZnJhbWUtPnJh
bmdlRm9yUG9pbnQocmVzdWx0LnJvdW5kZWRQb2ludCgpKTsKKyAgICBSZWZQdHI8UmFuZ2U+IHJh
bmdlID0gZnJhbWUtPnJhbmdlRm9yUG9pbnQocmVzdWx0LnJvdW5kZWRQb2ludEluSW5uZXJGcmFt
ZSgpKTsKICAgICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1cm47CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172809</attachid>
            <date>2012-11-07 08:18:57 -0800</date>
            <delta_ts>2012-11-08 05:13:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98139-20121107171644.patch</filename>
            <type>text/plain</type>
            <size>31355</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzNzYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTdiZjEzZjY0Yjk3OWM5
NGRiNjdhMTE3OWRkMWRjMzJhNmZhNGFjZS4uODNmYzk3MjE0ODNjNzg2MDljNDAwZTA5NjViNzI5
ODRmOThjYzBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEyLTEwLTE5ICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIERp
c2FtYmlndWF0ZSByZXN1bHRGcmFtZVBvaW50IGFuZCBvcmlnaW5hbCBoaXQtdGVzdCBwb2ludAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgxMzkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTcGxpdCB0aGUg
cG9pbnQoKSBtZXRob2QgaW4gSGl0VGVzdFJlc3VsdCBpbnRvIHR3bywgcmVzdWx0RnJhbWVQb2lu
dCBhbmQgb3JpZ2luYWxGcmFtZVBvaW50KCkuCisgICAgICAgIFRvIGRvIHRoaXMgSGl0VGVzdFJl
c3VsdCBubyBsb25nZXIgaW5oZXJpdHMgcHVibGljYWxseSBmcm9tIEhpdFRlc3RMb2NhdGlvbiwg
d2hpY2ggc2hvdWxkIGFsc28KKyAgICAgICAgaGVscCB0byBsYXRlciBzZXBhcmF0ZSB0aGUgdHdv
IGNsYXNzZXMgbW9yZSBjb21wbGV0ZWx5LgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46Cisg
ICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpu
b2Rlc0Zyb21SZWN0KToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmV2ZW50TWF5U3RhcnREcmFnKToKKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50SGFuZGxlcjo6aGl0VGVzdFJlc3VsdEF0UG9pbnQpOgorICAgICAgICAqIHJl
bmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1
bHQ6OkhpdFRlc3RSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6b3Bl
cmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OmlubmVyRnJhbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6YXBwZW5kKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvSGl0VGVzdFJlc3VsdC5oOgorICAgICAgICAoSGl0VGVzdFJlc3VsdCk6CisgICAgICAg
IChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0Ojppc1JlY3RCYXNlZFRlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SGl0VGVzdFJlc3VsdDo6cG9pbnRJbk1haW5GcmFtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpIaXRUZXN0UmVzdWx0Ojpyb3VuZGVkUG9pbnRJbk1haW5GcmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpIaXRUZXN0UmVzdWx0OjpzZXRQb2ludEluTWFpbkZyYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OkhpdFRlc3RSZXN1bHQ6OnBvaW50SW5Jbm5lckZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OkhpdFRlc3RSZXN1bHQ6OnJvdW5kZWRQb2ludEluSW5uZXJGcmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpIaXRUZXN0UmVzdWx0Ojpsb2NhbFBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRl
c3RSZXN1bHQ6OnNldExvY2FsUG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXll
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aGl0VGVzdCk6CisKIDIwMTIt
MTEtMDcgIEFuZHJleSBBZGFpa2luICA8YWFuZHJleUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogW0NhbnZhc10gY2xvc3VyZSBjb21waWxlciBmaXhlcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwppbmRleCAwYWM3YTcwMDIxY2Q1OGQzNjVmNTYzZDFhNDlkMTJiZjhmNDAz
YzE3Li45Y2JkYWRkODhlODA1MjI1NTQ3ZTcwZTI0NjFlMmMyZGVkODBiNWY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTEwLTE5ICBBbGxhbiBTYW5k
ZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIERpc2FtYmln
dWF0ZSByZXN1bHRGcmFtZVBvaW50IGFuZCBvcmlnaW5hbCBoaXQtdGVzdCBwb2ludAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgxMzkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHNyYy9DaHJvbWVDbGll
bnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6bW91c2VEaWRN
b3ZlT3ZlckVsZW1lbnQpOgorICAgICAgICAqIHNyYy9Db250ZXh0TWVudUNsaWVudEltcGwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpzZWxlY3RNaXNzcGVsbGVkV29yZCk6CisgICAgICAgIChXZWJL
aXQ6OkNvbnRleHRNZW51Q2xpZW50SW1wbDo6Z2V0Q3VzdG9tTWVudUZyb21EZWZhdWx0SXRlbXMp
OgorICAgICAgICAqIHNyYy9XZWJGcmFtZUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJG
cmFtZUltcGw6OmNoYXJhY3RlckluZGV4Rm9yUG9pbnQpOgorCiAyMDEyLTExLTA3ICBLZW5uZXRo
IFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1v
dmUgc3VwcG9ydCBmb3IgImRlc2t0b3Atd2lkdGgiIGluIHRoZSB2aWV3cG9ydCBtZXRhIHRhZwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9l
ZmwvQ2hhbmdlTG9nCmluZGV4IGIyZThhOGZkNzFiNWE1ZDBhMTMyOGUxNDY4NDQyYWFiYmVlM2Fm
MTUuLjJmOGI2YTk0NWRkY2E1ZGI5YThlYjBiYTlmNjMyZjNjMzhjZDIxODQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0xMC0xOSAgQWxsYW4gU2FuZGZlbGQgSmVuc2Vu
ICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KKworICAgICAgICBEaXNhbWJpZ3VhdGUgcmVzdWx0
RnJhbWVQb2ludCBhbmQgb3JpZ2luYWwgaGl0LXRlc3QgcG9pbnQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MTM5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3dpdGNoIHRvIHVzaW5nIG9yaWdpbmFsIGZy
YW1lIHBvaW50IHNpbmNlIHggYW5kIHkgYXJlIGRvY3VtZW50ZWQgYXMgYmVpbmcgdGhlIHBvaW50
IG9mIHRoZSBoaXQgdGVzdC4KKworICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgorICAgICAg
ICAoZXdrX2ZyYW1lX2hpdF90ZXN0X25ldyk6CisKIDIwMTItMTEtMDEgIFNlb25hZSBLaW0gIDxz
dW5hZWx1di5raW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF1bRFJUXSBTdXBwb3J0IEdl
b2xvY2F0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggZWMxZDBlZmMxYWVmNzMzZmQ3YWExNTEyNmQ0
OTY3YTQ2NzFjMDg5Ni4uMWM3ODE3MjgzY2NlNmFhZWYxYWRlNmYxMGMxMWY4NWM2MDYxM2UwMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTEwLTE5ICBBbGxhbiBTYW5k
ZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIERpc2FtYmln
dWF0ZSByZXN1bHRGcmFtZVBvaW50IGFuZCBvcmlnaW5hbCBoaXQtdGVzdCBwb2ludAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgxMzkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdlYmtpdC93ZWJraXRo
aXR0ZXN0cmVzdWx0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6a2l0KToKKwogMjAxMi0xMS0wNSAg
U2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggbGF5
ZXIgYm9yZGVycyB0byBjbGVhbmluZyBhcHBlYXIgYW5kIGRpc2FwcGVhciBvbiBzd2l0Y2hpbmcK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZwppbmRleCA2YmExYWM3MTU5Y2I5NmI4M2ZkMjVlMGVlYjYwN2EyNzdjMjEz
MDU0Li42ZTBhMTA1NjY4ZDU1N2UyNWNiZmU5NzZkYjg2YzNiODYyNTZjYzJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMTAtMTkgIEFsbGFuIFNhbmRmZWxkIEplbnNl
biAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CisKKyAgICAgICAgRGlzYW1iaWd1YXRlIHJlc3Vs
dEZyYW1lUG9pbnQgYW5kIG9yaWdpbmFsIGhpdC10ZXN0IHBvaW50CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODEzOQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4
dE1lbnVDbGllbnQubW06CisgICAgICAgIChXZWJDb250ZXh0TWVudUNsaWVudDo6c2hvd0NvbnRl
eHRNZW51KToKKwogMjAxMi0xMS0wNiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgog
CiAgICAgICAgIFVucmV2aWV3ZWQgYXR0ZW1wdCB0byBmaXggdGhlIGNocm9taXVtLW1hYyBidWls
ZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9xdC9DaGFuZ2VMb2cKaW5kZXggNDNiOTliM2QzMmY2NjQwYjNjMWY0YmM2ZDc2N2Y1MWQ5MDc5
YmMzMS4uZTZiZWNjZDYzZmRiZGNjYzc4YjE3NGNkZWM3ZTI1YTJhMjkyODNjOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9xdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0xMC0xOSAgQWxsYW4gU2FuZGZlbGQgSmVuc2Vu
ICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KKworICAgICAgICBEaXNhbWJpZ3VhdGUgcmVzdWx0
RnJhbWVQb2ludCBhbmQgb3JpZ2luYWwgaGl0LXRlc3QgcG9pbnQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MTM5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIFF0IGRvY3VtZW50IHN0YXRlcyB0aGUg
cG9zIGF0dHJpYnV0ZSBvZiBRV2ViSGl0VGVzdFJlc3VsdCBpcyB0aGUgb3JpZ2luYWwgcG9zaXRp
b24sCisgICAgICAgIHNvIHRoZSBjb2RlIG5vdyB1c2VzIG9yaWdpbmFsRnJhbWVQb2ludC4KKwor
ICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkhpdFRlc3RSZXN1bHRQ
cml2YXRlOjpRV2ViSGl0VGVzdFJlc3VsdFByaXZhdGUpOgorICAgICAgICAqIEFwaS9xd2VicGFn
ZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OlRvdWNoQWRqdXN0ZXI6OmZpbmRDYW5k
aWRhdGVQb2ludEZvclRvdWNoKToKKwogMjAxMi0xMS0wMSAgU3RlcGhlbiBXaGl0ZSAgPHNlbm9y
YmxhbmNvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCBy
MTMzMTQzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDI2MzUxNzQzYmQ4NjU4MjBhMTg2ZmMzOTBkZmIz
YzJjZDA1NDIxZjguLjQ4M2ZkZjJjYzRjOWZkY2QyNDIzMDM1ZDg5MTZlZWVmOTRjMmZiN2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0xMC0xOSAgQWxsYW4gU2FuZGZl
bGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KKworICAgICAgICBEaXNhbWJpZ3Vh
dGUgcmVzdWx0RnJhbWVQb2ludCBhbmQgb3JpZ2luYWwgaGl0LXRlc3QgcG9pbnQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MTM5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAg
ICAgICAgKFdlYlZpZXc6OmhhbmRsZUNvbnRleHRNZW51RXZlbnQpOgorCiAyMDEyLTExLTA1ICBT
aW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBsYXll
ciBib3JkZXJzIHRvIGNsZWFuaW5nIGFwcGVhciBhbmQgZGlzYXBwZWFyIG9uIHN3aXRjaGluZwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCmluZGV4IDRlNTI2NzZlN2FiYmM3NTI2ZjViMDkzZDY5ZjA0M2NmZDJkMzE5NGUuLmU2
MWQ4ZjQzYzljODAwOWNlOGVmYmY4ZTgwZjhlYzY0YTlkNDE3ODMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxMi0xMC0xOSAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVu
c2VuQGRpZ2lhLmNvbT4KKworICAgICAgICBEaXNhbWJpZ3VhdGUgcmVzdWx0RnJhbWVQb2ludCBh
bmQgb3JpZ2luYWwgaGl0LXRlc3QgcG9pbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTk4MTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29udGV4dE1lbnUuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudTo6c2hvdyk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpjaGFyYWN0ZXJJbmRleEZvclBvaW50KToKKwogMjAxMi0xMS0wNyAgTWlraGFpbCBQb3pk
bnlha292ICA8bWlraGFpbC5wb3pkbnlha292QGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXVtX
SzJdIEFkZCBld2tfc2V0dGluZ3NfcHJlZmVycmVkX21pbmltdW1fY29udGVudHNfd2lkdGhfZ2V0
L3NldCBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggMTgzNDA2OWI1ZjhiMTM4NmU4MThiMWI2
NmMxMzk3OTU3ZDc2ZTdiYi4uNTgyODYzM2ZkNzhlNTNiMmY2M2E2OWU2ZWJkMjgwZWIwMDk4NDNj
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTEyMDMsNiArMTIwMyw3IEBAIF9fWk5LN1dlYkNv
cmUxM0hUVFBIZWFkZXJNYXAzZ2V0RVBLYwogX19aTks3V2ViQ29yZTEzSFRUUEhlYWRlck1hcDNn
ZXRFUktOM1dURjEyQXRvbWljU3RyaW5nRQogX19aTks3V2ViQ29yZTEzSGl0VGVzdFJlc3VsdDEw
aXNMaXZlTGlua0V2CiBfX1pOSzdXZWJDb3JlMTNIaXRUZXN0UmVzdWx0MTBpc1NlbGVjdGVkRXYK
K19fWk5LN1dlYkNvcmUxM0hpdFRlc3RSZXN1bHQxMGlubmVyRnJhbWVFdgogX19aTks3V2ViQ29y
ZTEzSGl0VGVzdFJlc3VsdDExdGFyZ2V0RnJhbWVFdgogX19aTks3V2ViQ29yZTEzSGl0VGVzdFJl
c3VsdDExdGV4dENvbnRlbnRFdgogX19aTks3V2ViQ29yZTEzSGl0VGVzdFJlc3VsdDE0YWJzb2x1
dGVQREZVUkxFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggMzFmZGJhZWQ0ODk4ZDJlMGNk
MTU5ZWFjODZiNTg3YTVmNjhlOWIyOC4uMTYzYzc3MDEwOTAxYjY4ZmU3ZjZmNzYyY2EwN2RjZGYy
NjJkODEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0xMzk0LDcgKzEzOTQsNyBAQCBQ
YXNzUmVmUHRyPE5vZGVMaXN0PiBEb2N1bWVudDo6bm9kZXNGcm9tUmVjdChpbnQgY2VudGVyWCwg
aW50IGNlbnRlclksIHVuc2lnbmVkCiAgICAgLy8gV2hlbiBpZ25vcmVDbGlwcGluZyBpcyBmYWxz
ZSwgdGhpcyBtZXRob2QgcmV0dXJucyBudWxsIGZvciBjb29yZGluYXRlcyBvdXRzaWRlIG9mIHRo
ZSB2aWV3cG9ydC4KICAgICBpZiAoaWdub3JlQ2xpcHBpbmcpCiAgICAgICAgIHR5cGUgfD0gSGl0
VGVzdFJlcXVlc3Q6Oklnbm9yZUNsaXBwaW5nOwotICAgIGVsc2UgaWYgKCFmcmFtZVZpZXctPnZp
c2libGVDb250ZW50UmVjdCgpLmludGVyc2VjdHMoSGl0VGVzdFJlc3VsdDo6cmVjdEZvclBvaW50
KHBvaW50LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRk
aW5nKSkpCisgICAgZWxzZSBpZiAoIWZyYW1lVmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0KCkuaW50
ZXJzZWN0cyhIaXRUZXN0TG9jYXRpb246OnJlY3RGb3JQb2ludChwb2ludCwgdG9wUGFkZGluZywg
cmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0UGFkZGluZykpKQogICAgICAgICByZXR1
cm4gMDsKICAgICBpZiAoYWxsb3dTaGFkb3dDb250ZW50KQogICAgICAgICB0eXBlIHw9IEhpdFRl
c3RSZXF1ZXN0OjpBbGxvd1NoYWRvd0NvbnRlbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5jcHAKaW5kZXggOTIwNTVhMTIzM2E3ODQ2OTUyYjdiYmNmYzExYWQ3M2M1YzgzZTk4Zi4uOWQy
ZmNlNmM3MTQyMmVjYzlmMzM3ODczNTUwMjkyMzFlMmRiNDdjYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmNwcApAQCAtNzczLDcgKzc3Myw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpl
dmVudE1heVN0YXJ0RHJhZyhjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KSBjb25zdAog
ICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHZpZXctPndpbmRvd1RvQ29udGVudHMoZXZlbnQucG9z
aXRpb24oKSkpOwogICAgIG1fZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpLT5oaXRUZXN0KHJlcXVl
c3QsIHJlc3VsdCk7CiAgICAgRHJhZ1N0YXRlIHN0YXRlOwotICAgIHJldHVybiByZXN1bHQuaW5u
ZXJOb2RlKCkgJiYgcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS0+ZHJhZ2dhYmxlTm9kZShtX2ZyYW1l
LCByZXN1bHQuaW5uZXJOb2RlKCksIHJvdW5kZWRJbnRQb2ludChyZXN1bHQucG9pbnQoKSksIHN0
YXRlKTsKKyAgICByZXR1cm4gcmVzdWx0LmlubmVyTm9kZSgpICYmIHBhZ2UtPmRyYWdDb250cm9s
bGVyKCktPmRyYWdnYWJsZU5vZGUobV9mcmFtZSwgcmVzdWx0LmlubmVyTm9kZSgpLCByZXN1bHQu
cm91bmRlZFBvaW50SW5NYWluRnJhbWUoKSwgc3RhdGUpOwogfQogCiB2b2lkIEV2ZW50SGFuZGxl
cjo6dXBkYXRlU2VsZWN0aW9uRm9yTW91c2VEcmFnKCkKQEAgLTExMDEsOSArMTEwMSwyMyBAQCBE
cmFnU291cmNlQWN0aW9uIEV2ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ1NvdXJjZUFjdGlvbnNBbGxv
d2VkKCkgY29uc3QKICAgICByZXR1cm4gcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS0+ZGVsZWdhdGVE
cmFnU291cmNlQWN0aW9uKHZpZXctPmNvbnRlbnRzVG9Sb290VmlldyhtX21vdXNlRG93blBvcykp
OwogfQogI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpCi0gICAgCisKIEhpdFRlc3RSZXN1
bHQgRXZlbnRIYW5kbGVyOjpoaXRUZXN0UmVzdWx0QXRQb2ludChjb25zdCBMYXlvdXRQb2ludCYg
cG9pbnQsIGJvb2wgYWxsb3dTaGFkb3dDb250ZW50LCBib29sIGlnbm9yZUNsaXBwaW5nLCBIaXRU
ZXN0U2Nyb2xsYmFycyB0ZXN0U2Nyb2xsYmFycywgSGl0VGVzdFJlcXVlc3Q6OkhpdFRlc3RSZXF1
ZXN0VHlwZSBoaXRUeXBlLCBjb25zdCBMYXlvdXRTaXplJiBwYWRkaW5nKQogeworICAgIC8vIFdl
IGFsd2F5cyBzZW5kIGhpdFRlc3RSZXN1bHRBdFBvaW50IHRvIHRoZSBtYWluIGZyYW1lIGlmIHdl
IGhhdmUgb25lLAorICAgIC8vIG90aGVyd2lzZSB3ZSBtaWdodCBoaXQgYXJlYXMgdGhhdCBhcmUg
b2JzY3VyZWQgYnkgaGlnaGVyIGZyYW1lcy4KKyAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUt
PnBhZ2UoKSkgeworICAgICAgICBGcmFtZSogbWFpbkZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7
CisgICAgICAgIGlmIChtX2ZyYW1lICE9IG1haW5GcmFtZSkgeworICAgICAgICAgICAgRnJhbWVW
aWV3KiBmcmFtZVZpZXcgPSBtX2ZyYW1lLT52aWV3KCk7CisgICAgICAgICAgICBGcmFtZVZpZXcq
IG1haW5WaWV3ID0gbWFpbkZyYW1lLT52aWV3KCk7CisgICAgICAgICAgICBpZiAoZnJhbWVWaWV3
ICYmIG1haW5WaWV3KSB7CisgICAgICAgICAgICAgICAgSW50UG9pbnQgbWFpbkZyYW1lUG9pbnQg
PSBtYWluVmlldy0+cm9vdFZpZXdUb0NvbnRlbnRzKGZyYW1lVmlldy0+Y29udGVudHNUb1Jvb3RW
aWV3KHJvdW5kZWRJbnRQb2ludChwb2ludCkpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFp
bkZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQobWFpbkZyYW1lUG9p
bnQsIGFsbG93U2hhZG93Q29udGVudCwgaWdub3JlQ2xpcHBpbmcsIHRlc3RTY3JvbGxiYXJzLCBo
aXRUeXBlLCBwYWRkaW5nKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKwogICAg
IEhpdFRlc3RSZXN1bHQgcmVzdWx0KHBvaW50LCBwYWRkaW5nLmhlaWdodCgpLCBwYWRkaW5nLndp
ZHRoKCksIHBhZGRpbmcuaGVpZ2h0KCksIHBhZGRpbmcud2lkdGgoKSk7CiAKICAgICBpZiAoIW1f
ZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpKQpAQCAtMTExMiw3ICsxMTI2LDggQEAgSGl0VGVzdFJl
c3VsdCBFdmVudEhhbmRsZXI6OmhpdFRlc3RSZXN1bHRBdFBvaW50KGNvbnN0IExheW91dFBvaW50
JiBwb2ludCwgYm9vbAogICAgICAgICBoaXRUeXBlIHw9IEhpdFRlc3RSZXF1ZXN0OjpJZ25vcmVD
bGlwcGluZzsKICAgICBpZiAoYWxsb3dTaGFkb3dDb250ZW50KQogICAgICAgICBoaXRUeXBlIHw9
IEhpdFRlc3RSZXF1ZXN0OjpBbGxvd1NoYWRvd0NvbnRlbnQ7Ci0gICAgbV9mcmFtZS0+Y29udGVu
dFJlbmRlcmVyKCktPmhpdFRlc3QoSGl0VGVzdFJlcXVlc3QoaGl0VHlwZSksIHJlc3VsdCk7Cisg
ICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChoaXRUeXBlKTsKKyAgICBtX2ZyYW1lLT5jb250ZW50
UmVuZGVyZXIoKS0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOwogCiAgICAgd2hpbGUgKHRydWUp
IHsKICAgICAgICAgTm9kZSogbiA9IHJlc3VsdC5pbm5lck5vZGUoKTsKQEAgLTExMjksNyArMTE0
NCw4IEBAIEhpdFRlc3RSZXN1bHQgRXZlbnRIYW5kbGVyOjpoaXRUZXN0UmVzdWx0QXRQb2ludChj
b25zdCBMYXlvdXRQb2ludCYgcG9pbnQsIGJvb2wKICAgICAgICAgTGF5b3V0UG9pbnQgd2lkZ2V0
UG9pbnQocmVzdWx0LmxvY2FsUG9pbnQoKS54KCkgKyB2aWV3LT5zY3JvbGxYKCkgLSByZW5kZXJX
aWRnZXQtPmJvcmRlckxlZnQoKSAtIHJlbmRlcldpZGdldC0+cGFkZGluZ0xlZnQoKSwgCiAgICAg
ICAgICAgICByZXN1bHQubG9jYWxQb2ludCgpLnkoKSArIHZpZXctPnNjcm9sbFkoKSAtIHJlbmRl
cldpZGdldC0+Ym9yZGVyVG9wKCkgLSByZW5kZXJXaWRnZXQtPnBhZGRpbmdUb3AoKSk7CiAgICAg
ICAgIEhpdFRlc3RSZXN1bHQgd2lkZ2V0SGl0VGVzdFJlc3VsdCh3aWRnZXRQb2ludCwgcGFkZGlu
Zy5oZWlnaHQoKSwgcGFkZGluZy53aWR0aCgpLCBwYWRkaW5nLmhlaWdodCgpLCBwYWRkaW5nLndp
ZHRoKCkpOwotICAgICAgICBmcmFtZS0+Y29udGVudFJlbmRlcmVyKCktPmhpdFRlc3QoSGl0VGVz
dFJlcXVlc3QoaGl0VHlwZSksIHdpZGdldEhpdFRlc3RSZXN1bHQpOworICAgICAgICB3aWRnZXRI
aXRUZXN0UmVzdWx0LnNldFBvaW50SW5NYWluRnJhbWUocmVzdWx0LnBvaW50SW5NYWluRnJhbWUo
KSk7CisgICAgICAgIGZyYW1lLT5jb250ZW50UmVuZGVyZXIoKS0+aGl0VGVzdChyZXF1ZXN0LCB3
aWRnZXRIaXRUZXN0UmVzdWx0KTsKICAgICAgICAgcmVzdWx0ID0gd2lkZ2V0SGl0VGVzdFJlc3Vs
dDsKIAogICAgICAgICBpZiAodGVzdFNjcm9sbGJhcnMgPT0gU2hvdWxkSGl0VGVzdFNjcm9sbGJh
cnMpIHsKQEAgLTExMzgsMjEgKzExNTQsNiBAQCBIaXRUZXN0UmVzdWx0IEV2ZW50SGFuZGxlcjo6
aGl0VGVzdFJlc3VsdEF0UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBib29sCiAgICAg
ICAgICAgICAgICAgcmVzdWx0LnNldFNjcm9sbGJhcihldmVudFNjcm9sbGJhcik7CiAgICAgICAg
IH0KICAgICB9Ci0gICAgCi0gICAgLy8gSWYgb3VyIEhpdFRlc3RSZXN1bHQgaXMgbm90IHZpc2li
bGUsIHRoZW4gd2Ugc3RhcnRlZCBoaXQgdGVzdGluZyB0b28gZmFyIGRvd24gdGhlIGZyYW1lIGNo
YWluLiAKLSAgICAvLyBBbm90aGVyIGhpdCB0ZXN0IGF0IHRoZSBtYWluIGZyYW1lIGxldmVsIHNo
b3VsZCBnZXQgdXMgdGhlIGNvcnJlY3QgdmlzaWJsZSByZXN1bHQuCi0gICAgRnJhbWUqIHJlc3Vs
dEZyYW1lID0gcmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpID8gcmVzdWx0LmlubmVyTm9uU2hh
cmVkTm9kZSgpLT5kb2N1bWVudCgpLT5mcmFtZSgpIDogMDsKLSAgICBpZiAoUGFnZSogcGFnZSA9
IG1fZnJhbWUtPnBhZ2UoKSkgewotICAgICAgICBGcmFtZSogbWFpbkZyYW1lID0gcGFnZS0+bWFp
bkZyYW1lKCk7Ci0gICAgICAgIGlmIChtX2ZyYW1lICE9IG1haW5GcmFtZSAmJiByZXN1bHRGcmFt
ZSAmJiByZXN1bHRGcmFtZSAhPSBtYWluRnJhbWUpIHsKLSAgICAgICAgICAgIEZyYW1lVmlldyog
cmVzdWx0VmlldyA9IHJlc3VsdEZyYW1lLT52aWV3KCk7Ci0gICAgICAgICAgICBGcmFtZVZpZXcq
IG1haW5WaWV3ID0gbWFpbkZyYW1lLT52aWV3KCk7Ci0gICAgICAgICAgICBpZiAocmVzdWx0Vmll
dyAmJiBtYWluVmlldykgewotICAgICAgICAgICAgICAgIEludFBvaW50IG1haW5GcmFtZVBvaW50
ID0gbWFpblZpZXctPnJvb3RWaWV3VG9Db250ZW50cyhyZXN1bHRWaWV3LT5jb250ZW50c1RvUm9v
dFZpZXcocm91bmRlZEludFBvaW50KHJlc3VsdC5wb2ludCgpKSkpOwotICAgICAgICAgICAgICAg
IHJlc3VsdCA9IG1haW5GcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50
KG1haW5GcmFtZVBvaW50LCBhbGxvd1NoYWRvd0NvbnRlbnQsIGlnbm9yZUNsaXBwaW5nLCB0ZXN0
U2Nyb2xsYmFycywgaGl0VHlwZSwgcGFkZGluZyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICB9CiAKICAgICBpZiAoIWFsbG93U2hhZG93Q29udGVudCkKICAgICAgICAgcmVzdWx0LnNl
dFRvTm9uU2hhZG93QW5jZXN0b3IoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9IaXRUZXN0UmVzdWx0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0
UmVzdWx0LmNwcAppbmRleCBjYzM5MDU2OGNlMDI5ODZkMjBiYmIxY2ZmYzEwMTNiZTA5ZWYzY2Ez
Li40N2IxNWQyZTM3MDk2YjE4YmJhYzhkYzJjMTk4ZTgyZjAyNmIzNGJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCkBAIC0yMDQsMTIgKzIwNCwxNCBAQCBI
aXRUZXN0UmVzdWx0OjpIaXRUZXN0UmVzdWx0KGNvbnN0IExheW91dFBvaW50JiBwb2ludCkgOiBI
aXRUZXN0TG9jYXRpb24ocG9pbnQpCiAKIEhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQoY29u
c3QgTGF5b3V0UG9pbnQmIGNlbnRlclBvaW50LCB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNpZ25l
ZCByaWdodFBhZGRpbmcsIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRk
aW5nKQogICAgIDogSGl0VGVzdExvY2F0aW9uKGNlbnRlclBvaW50LCB0b3BQYWRkaW5nLCByaWdo
dFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5nKQorICAgICwgbV9wb2ludEluTWFp
bkZyYW1lKHBvaW50KCkpCiAgICAgLCBtX2lzT3ZlcldpZGdldChmYWxzZSkKIHsKIH0KIAogSGl0
VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3VsdChjb25zdCBIaXRUZXN0TG9jYXRpb24mIG90aGVyKQog
ICAgIDogSGl0VGVzdExvY2F0aW9uKG90aGVyKQorICAgICwgbV9wb2ludEluTWFpbkZyYW1lKHBv
aW50KCkpCiAgICAgLCBtX2lzT3ZlcldpZGdldChmYWxzZSkKIHsKIH0KQEAgLTIxOCw2ICsyMjAs
NyBAQCBIaXRUZXN0UmVzdWx0OjpIaXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RSZXN1bHQmIG90
aGVyKQogICAgIDogSGl0VGVzdExvY2F0aW9uKG90aGVyKQogICAgICwgbV9pbm5lck5vZGUob3Ro
ZXIuaW5uZXJOb2RlKCkpCiAgICAgLCBtX2lubmVyTm9uU2hhcmVkTm9kZShvdGhlci5pbm5lck5v
blNoYXJlZE5vZGUoKSkKKyAgICAsIG1fcG9pbnRJbk1haW5GcmFtZShvdGhlci5tX3BvaW50SW5N
YWluRnJhbWUpCiAgICAgLCBtX2xvY2FsUG9pbnQob3RoZXIubG9jYWxQb2ludCgpKQogICAgICwg
bV9pbm5lclVSTEVsZW1lbnQob3RoZXIuVVJMRWxlbWVudCgpKQogICAgICwgbV9zY3JvbGxiYXIo
b3RoZXIuc2Nyb2xsYmFyKCkpCkBAIC0yMzYsNiArMjM5LDcgQEAgSGl0VGVzdFJlc3VsdCYgSGl0
VGVzdFJlc3VsdDo6b3BlcmF0b3I9KGNvbnN0IEhpdFRlc3RSZXN1bHQmIG90aGVyKQogICAgIEhp
dFRlc3RMb2NhdGlvbjo6b3BlcmF0b3I9KG90aGVyKTsKICAgICBtX2lubmVyTm9kZSA9IG90aGVy
LmlubmVyTm9kZSgpOwogICAgIG1faW5uZXJOb25TaGFyZWROb2RlID0gb3RoZXIuaW5uZXJOb25T
aGFyZWROb2RlKCk7CisgICAgbV9wb2ludEluTWFpbkZyYW1lID0gb3RoZXIubV9wb2ludEluTWFp
bkZyYW1lOwogICAgIG1fbG9jYWxQb2ludCA9IG90aGVyLmxvY2FsUG9pbnQoKTsKICAgICBtX2lu
bmVyVVJMRWxlbWVudCA9IG90aGVyLlVSTEVsZW1lbnQoKTsKICAgICBtX3Njcm9sbGJhciA9IG90
aGVyLnNjcm9sbGJhcigpOwpAQCAtMjc5LDYgKzI4MywxNSBAQCB2b2lkIEhpdFRlc3RSZXN1bHQ6
OnNldFNjcm9sbGJhcihTY3JvbGxiYXIqIHMpCiAgICAgbV9zY3JvbGxiYXIgPSBzOwogfQogCitG
cmFtZSogSGl0VGVzdFJlc3VsdDo6aW5uZXJGcmFtZSgpIGNvbnN0Cit7CisgICAgaWYgKG1faW5u
ZXJOb25TaGFyZWROb2RlKQorICAgICAgICByZXR1cm4gbV9pbm5lck5vblNoYXJlZE5vZGUtPmRv
Y3VtZW50KCktPmZyYW1lKCk7CisgICAgaWYgKG1faW5uZXJOb2RlKQorICAgICAgICByZXR1cm4g
bV9pbm5lck5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCk7CisgICAgcmV0dXJuIDA7Cit9CisKIEZy
YW1lKiBIaXRUZXN0UmVzdWx0Ojp0YXJnZXRGcmFtZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2lu
bmVyVVJMRWxlbWVudCkKQEAgLTc0Niw2ICs3NTksNyBAQCB2b2lkIEhpdFRlc3RSZXN1bHQ6OmFw
cGVuZChjb25zdCBIaXRUZXN0UmVzdWx0JiBvdGhlcikKICAgICAgICAgbV9pbm5lck5vZGUgPSBv
dGhlci5pbm5lck5vZGUoKTsKICAgICAgICAgbV9pbm5lck5vblNoYXJlZE5vZGUgPSBvdGhlci5p
bm5lck5vblNoYXJlZE5vZGUoKTsKICAgICAgICAgbV9sb2NhbFBvaW50ID0gb3RoZXIubG9jYWxQ
b2ludCgpOworICAgICAgICBtX3BvaW50SW5NYWluRnJhbWUgPSBvdGhlci5tX3BvaW50SW5NYWlu
RnJhbWU7CiAgICAgICAgIG1faW5uZXJVUkxFbGVtZW50ID0gb3RoZXIuVVJMRWxlbWVudCgpOwog
ICAgICAgICBtX3Njcm9sbGJhciA9IG90aGVyLnNjcm9sbGJhcigpOwogICAgICAgICBtX2lzT3Zl
cldpZGdldCA9IG90aGVyLmlzT3ZlcldpZGdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9I
aXRUZXN0UmVzdWx0LmgKaW5kZXggOTEyOWVlZDQ0MTFhMDAwNTAzMTA5ZjYxNDNiMWRiNTNkZjJm
MjAwYy4uNGMwMTEyZDQ2N2EzOTUxNDI3NTU3YWU3MjZlMTEwOTExZjIzODViMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oCkBAIC0xMDAsNyArMTAwLDcgQEAgcHJp
dmF0ZToKICAgICBib29sIG1faXNSZWN0aWxpbmVhcjsKIH07CiAKLWNsYXNzIEhpdFRlc3RSZXN1
bHQgOiBwdWJsaWMgSGl0VGVzdExvY2F0aW9uIHsKK2NsYXNzIEhpdFRlc3RSZXN1bHQgOiBwcm90
ZWN0ZWQgSGl0VGVzdExvY2F0aW9uIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIExpc3RIYXNoU2V0
PFJlZlB0cjxOb2RlPiA+IE5vZGVTZXQ7CiAKQEAgLTExNSwxOCArMTE1LDMzIEBAIHB1YmxpYzoK
IAogICAgIE5vZGUqIGlubmVyTm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5uZXJOb2RlLmdldCgp
OyB9CiAgICAgTm9kZSogaW5uZXJOb25TaGFyZWROb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pbm5l
ck5vblNoYXJlZE5vZGUuZ2V0KCk7IH0KLSAgICBMYXlvdXRQb2ludCBsb2NhbFBvaW50KCkgY29u
c3QgeyByZXR1cm4gbV9sb2NhbFBvaW50OyB9CiAgICAgRWxlbWVudCogVVJMRWxlbWVudCgpIGNv
bnN0IHsgcmV0dXJuIG1faW5uZXJVUkxFbGVtZW50LmdldCgpOyB9CiAgICAgU2Nyb2xsYmFyKiBz
Y3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGJhci5nZXQoKTsgfQogICAgIGJvb2wg
aXNPdmVyV2lkZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9pc092ZXJXaWRnZXQ7IH0KIAorICAgIC8v
IEZvcndhcmRlZCBmcm9tIEhpdFRlc3RMb2NhdGlvbgorICAgIGJvb2wgaXNSZWN0QmFzZWRUZXN0
KCkgY29uc3QgeyByZXR1cm4gSGl0VGVzdExvY2F0aW9uOjppc1JlY3RCYXNlZFRlc3QoKTsgfQor
CisgICAgLy8gVGhlIGhpdC10ZXN0ZWQgcG9pbnQgaW4gdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSBt
YWluIGZyYW1lLgorICAgIExheW91dFBvaW50IHBvaW50SW5NYWluRnJhbWUoKSBjb25zdCB7IHJl
dHVybiBtX3BvaW50SW5NYWluRnJhbWU7IH0KKyAgICBJbnRQb2ludCByb3VuZGVkUG9pbnRJbk1h
aW5GcmFtZSgpIGNvbnN0IHsgcmV0dXJuIHJvdW5kZWRJbnRQb2ludChwb2ludEluTWFpbkZyYW1l
KCkpOyB9CisgICAgdm9pZCBzZXRQb2ludEluTWFpbkZyYW1lKGNvbnN0IExheW91dFBvaW50JiBw
KSB7IG1fcG9pbnRJbk1haW5GcmFtZSA9IHA7IH0KKworICAgIC8vIFRoZSBoaXQtdGVzdGVkIHBv
aW50IGluIHRoZSBjb29yZGluYXRlcyBvZiB0aGUgaW5uZXIgZnJhbWUsIHRoZSBmcmFtZSBjb250
YWluaW5nIGlubmVyTm9kZS4KKyAgICBMYXlvdXRQb2ludCBwb2ludEluSW5uZXJGcmFtZSgpIGNv
bnN0IHsgcmV0dXJuIEhpdFRlc3RMb2NhdGlvbjo6cG9pbnQoKTsgfQorICAgIEludFBvaW50IHJv
dW5kZWRQb2ludEluSW5uZXJGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIHJvdW5kZWRJbnRQb2ludChw
b2ludEluSW5uZXJGcmFtZSgpKTsgfQorICAgIEZyYW1lKiBpbm5lckZyYW1lKCkgY29uc3Q7CisK
KyAgICAvLyBUaGUgaGl0LXRlc3RlZCBwb2ludCBpbiB0aGUgY29vcmRpbmF0ZXMgb2YgdGhlIGlu
bmVyIG5vZGUuCisgICAgTGF5b3V0UG9pbnQgbG9jYWxQb2ludCgpIGNvbnN0IHsgcmV0dXJuIG1f
bG9jYWxQb2ludDsgfQorICAgIHZvaWQgc2V0TG9jYWxQb2ludChjb25zdCBMYXlvdXRQb2ludCYg
cCkgeyBtX2xvY2FsUG9pbnQgPSBwOyB9CisKICAgICB2b2lkIHNldFRvTm9uU2hhZG93QW5jZXN0
b3IoKTsKIAogICAgIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgaGl0VGVzdExvY2F0aW9uKCkgY29u
c3QgeyByZXR1cm4gKnRoaXM7IH0KIAogICAgIHZvaWQgc2V0SW5uZXJOb2RlKE5vZGUqKTsKICAg
ICB2b2lkIHNldElubmVyTm9uU2hhcmVkTm9kZShOb2RlKik7Ci0gICAgdm9pZCBzZXRMb2NhbFBv
aW50KGNvbnN0IExheW91dFBvaW50JiBwKSB7IG1fbG9jYWxQb2ludCA9IHA7IH0KICAgICB2b2lk
IHNldFVSTEVsZW1lbnQoRWxlbWVudCopOwogICAgIHZvaWQgc2V0U2Nyb2xsYmFyKFNjcm9sbGJh
ciopOwogICAgIHZvaWQgc2V0SXNPdmVyV2lkZ2V0KGJvb2wgYikgeyBtX2lzT3ZlcldpZGdldCA9
IGI7IH0KQEAgLTE4NSw2ICsyMDAsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPE5vZGU+IG1f
aW5uZXJOb2RlOwogICAgIFJlZlB0cjxOb2RlPiBtX2lubmVyTm9uU2hhcmVkTm9kZTsKKyAgICBM
YXlvdXRQb2ludCBtX3BvaW50SW5NYWluRnJhbWU7CiAgICAgTGF5b3V0UG9pbnQgbV9sb2NhbFBv
aW50OyAvLyBBIHBvaW50IGluIHRoZSBsb2NhbCBjb29yZGluYXRlIHNwYWNlIG9mIG1faW5uZXJO
b25TaGFyZWROb2RlJ3MgcmVuZGVyZXIuIEFsbG93cyB1cyB0byBlZmZpY2llbnRseQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGV0ZXJtaW5lIHdoZXJlIGluc2lkZSB0aGUgcmVu
ZGVyZXIgd2UgaGl0IG9uIHN1YnNlcXVlbnQgb3BlcmF0aW9ucy4KICAgICBSZWZQdHI8RWxlbWVu
dD4gbV9pbm5lclVSTEVsZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcAppbmRleCA0MTBmY2ExZjQ4ZmYxODc5OTFiNzViOGZjYTM5NThhODQzZmI5NDRiLi40ZDE0
Zjg3M2YzMDVkYTdlMTE1MTY4M2EyOGQ1ZjEyM2JjOThkMzYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTM1NDgsNyArMzU0OCw3IEBAIGJvb2wgUmVuZGVy
TGF5ZXI6OmhpdFRlc3QoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEhpdFRl
c3RMb2NhdGlvbiYKICAgICAgICAgLy8gcmV0dXJuIG91cnNlbHZlcy4gV2UgZG8gdGhpcyBzbyBt
b3VzZSBldmVudHMgY29udGludWUgZ2V0dGluZyBkZWxpdmVyZWQgYWZ0ZXIgYSBkcmFnIGhhcyAK
ICAgICAgICAgLy8gZXhpdGVkIHRoZSBXZWJWaWV3LCBhbmQgc28gaGl0IHRlc3Rpbmcgb3ZlciBh
IHNjcm9sbGJhciBoaXRzIHRoZSBjb250ZW50IGRvY3VtZW50LgogICAgICAgICBpZiAoKHJlcXVl
c3QuYWN0aXZlKCkgfHwgcmVxdWVzdC5yZWxlYXNlKCkpICYmIGlzUm9vdExheWVyKCkpIHsKLSAg
ICAgICAgICAgIHJlbmRlcmVyKCktPnVwZGF0ZUhpdFRlc3RSZXN1bHQocmVzdWx0LCB0b1JlbmRl
clZpZXcocmVuZGVyZXIoKSktPmZsaXBGb3JXcml0aW5nTW9kZShyZXN1bHQucG9pbnQoKSkpOwor
ICAgICAgICAgICAgcmVuZGVyZXIoKS0+dXBkYXRlSGl0VGVzdFJlc3VsdChyZXN1bHQsIHRvUmVu
ZGVyVmlldyhyZW5kZXJlcigpKS0+ZmxpcEZvcldyaXRpbmdNb2RlKGhpdFRlc3RMb2NhdGlvbi5w
b2ludCgpKSk7CiAgICAgICAgICAgICBpbnNpZGVMYXllciA9IHRoaXM7CiAgICAgICAgIH0KICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3Bw
CmluZGV4IDk0OTU5MzgwYTYwNmQ5ZDEyZTdiZjk3NTUyYWZjNGJhNmNjZDliZTYuLjllMzdkNzVl
ODI2NTliY2I0YTkzMWZjMDI4NDA4ODg3NzI1NWRhMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCkBAIC01OTAsNyArNTkwLDcgQEAgdm9p
ZCBDaHJvbWVDbGllbnRJbXBsOjptb3VzZURpZE1vdmVPdmVyRWxlbWVudCgKICAgICAgICAgICAg
IFdpZGdldCogd2lkZ2V0ID0gdG9SZW5kZXJXaWRnZXQob2JqZWN0KS0+d2lkZ2V0KCk7CiAgICAg
ICAgICAgICBpZiAod2lkZ2V0ICYmIHdpZGdldC0+aXNQbHVnaW5Db250YWluZXIoKSkgewogICAg
ICAgICAgICAgICAgIFdlYlBsdWdpbkNvbnRhaW5lckltcGwqIHBsdWdpbiA9IHN0YXRpY19jYXN0
PFdlYlBsdWdpbkNvbnRhaW5lckltcGwqPih3aWRnZXQpOwotICAgICAgICAgICAgICAgIHVybCA9
IHBsdWdpbi0+cGx1Z2luKCktPmxpbmtBdFBvc2l0aW9uKHJlc3VsdC5yb3VuZGVkUG9pbnQoKSk7
CisgICAgICAgICAgICAgICAgdXJsID0gcGx1Z2luLT5wbHVnaW4oKS0+bGlua0F0UG9zaXRpb24o
cmVzdWx0LnJvdW5kZWRQb2ludEluSW5uZXJGcmFtZSgpKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0NvbnRl
eHRNZW51Q2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Db250ZXh0
TWVudUNsaWVudEltcGwuY3BwCmluZGV4IGFkMTE2MDkwY2RlYWFlNjNkMTI2MTY0ZTFkNzBjYjAz
NzcyMjI4YTQuLjcxODJlODAyMTFhMzBmYzE4YzI1ODhkNmVmNmQ1ZmQ2YjczNmIxYzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0NvbnRleHRNZW51Q2xpZW50SW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ29udGV4dE1lbnVDbGllbnRJbXBs
LmNwcApAQCAtMTIwLDcgKzEyMCw3IEBAIHN0YXRpYyBTdHJpbmcgc2VsZWN0TWlzc3BlbGxlZFdv
cmQoY29uc3QgQ29udGV4dE1lbnUqIGRlZmF1bHRNZW51LCBGcmFtZSogc2VsZWN0CiAKICAgICAv
LyBTZWxlY3Rpb24gaXMgZW1wdHksIHNvIGNoYW5nZSB0aGUgc2VsZWN0aW9uIHRvIHRoZSB3b3Jk
IHVuZGVyIHRoZSBjdXJzb3IuCiAgICAgSGl0VGVzdFJlc3VsdCBoaXRUZXN0UmVzdWx0ID0gc2Vs
ZWN0ZWRGcmFtZS0+ZXZlbnRIYW5kbGVyKCktPgotICAgICAgICBoaXRUZXN0UmVzdWx0QXRQb2lu
dChzZWxlY3RlZEZyYW1lLT5wYWdlKCktPmNvbnRleHRNZW51Q29udHJvbGxlcigpLT5oaXRUZXN0
UmVzdWx0KCkucG9pbnQoKSwgdHJ1ZSk7CisgICAgICAgIGhpdFRlc3RSZXN1bHRBdFBvaW50KHNl
bGVjdGVkRnJhbWUtPnBhZ2UoKS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCktPmhpdFRlc3RSZXN1
bHQoKS5wb2ludEluSW5uZXJGcmFtZSgpLCB0cnVlKTsKICAgICBOb2RlKiBpbm5lck5vZGUgPSBo
aXRUZXN0UmVzdWx0LmlubmVyTm9kZSgpOwogICAgIFZpc2libGVQb3NpdGlvbiBwb3MoaW5uZXJO
b2RlLT5yZW5kZXJlcigpLT5wb3NpdGlvbkZvclBvaW50KAogICAgICAgICBoaXRUZXN0UmVzdWx0
LmxvY2FsUG9pbnQoKSkpOwpAQCAtMTU1LDEwICsxNTUsMTAgQEAgUGxhdGZvcm1NZW51RGVzY3Jp
cHRpb24gQ29udGV4dE1lbnVDbGllbnRJbXBsOjpnZXRDdXN0b21NZW51RnJvbURlZmF1bHRJdGVt
cygKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBIaXRUZXN0UmVzdWx0IHIgPSBtX3dlYlZpZXct
PnBhZ2UoKS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCktPmhpdFRlc3RSZXN1bHQoKTsKLSAgICBG
cmFtZSogc2VsZWN0ZWRGcmFtZSA9IHIuaW5uZXJOb25TaGFyZWROb2RlKCktPmRvY3VtZW50KCkt
PmZyYW1lKCk7CisgICAgRnJhbWUqIHNlbGVjdGVkRnJhbWUgPSByLmlubmVyRnJhbWUoKTsKIAog
ICAgIFdlYkNvbnRleHRNZW51RGF0YSBkYXRhOwotICAgIGRhdGEubW91c2VQb3NpdGlvbiA9IHNl
bGVjdGVkRnJhbWUtPnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhyLnJvdW5kZWRQb2ludCgpKTsK
KyAgICBkYXRhLm1vdXNlUG9zaXRpb24gPSBzZWxlY3RlZEZyYW1lLT52aWV3KCktPmNvbnRlbnRz
VG9XaW5kb3coci5yb3VuZGVkUG9pbnRJbklubmVyRnJhbWUoKSk7CiAKICAgICAvLyBDb21wdXRl
IGVkaXQgZmxhZ3MuCiAgICAgZGF0YS5lZGl0RmxhZ3MgPSBXZWJDb250ZXh0TWVudURhdGE6OkNh
bkRvTm9uZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1l
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCmlu
ZGV4IDE5MzY0NzZmM2FlMWEyMDE0MDMzZGMzZmRiN2UwY2FiNWNhOGM3ZjIuLmRlMTc5M2E2YTY4
MDIxYWRmMzk5MmMzMmQzZjVkNDJiNDMzODcwYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViRnJhbWVJbXBsLmNwcApAQCAtMTIwMiw3ICsxMjAyLDcgQEAgc2l6ZV90IFdlYkZy
YW1lSW1wbDo6Y2hhcmFjdGVySW5kZXhGb3JQb2ludChjb25zdCBXZWJQb2ludCYgd2ViUG9pbnQp
IGNvbnN0CiAKICAgICBJbnRQb2ludCBwb2ludCA9IGZyYW1lKCktPnZpZXcoKS0+d2luZG93VG9D
b250ZW50cyh3ZWJQb2ludCk7CiAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBmcmFtZSgpLT5l
dmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQocG9pbnQsIGZhbHNlKTsKLSAgICBS
ZWZQdHI8UmFuZ2U+IHJhbmdlID0gZnJhbWUoKS0+cmFuZ2VGb3JQb2ludChyZXN1bHQucm91bmRl
ZFBvaW50KCkpOworICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBmcmFtZSgpLT5yYW5nZUZvclBv
aW50KHJlc3VsdC5yb3VuZGVkUG9pbnRJbklubmVyRnJhbWUoKSk7CiAgICAgaWYgKCFyYW5nZSkK
ICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX2ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3Bw
CmluZGV4IDczOGE5MzkxOGYzMDE5MWI1MjZjNmZmMThiMjk1YWZjOWI3YjlhN2QuLjczNTY5NGIw
ODgxNDQ3YmFiNDBmZjVjMDk4NzEwNzdlYjkyMDZiMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
ZnJhbWUuY3BwCkBAIC03MDIsOCArNzAyLDggQEAgRXdrX0hpdF9UZXN0KiBld2tfZnJhbWVfaGl0
X3Rlc3RfbmV3KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgaW50IHgsIGludCB5KQogICAg
ICAgICByZXR1cm4gMDsKIAogICAgIEV3a19IaXRfVGVzdCogaGl0VGVzdCA9IG5ldyBFd2tfSGl0
X1Rlc3Q7Ci0gICAgaGl0VGVzdC0+eCA9IHJlc3VsdC5wb2ludCgpLngoKTsKLSAgICBoaXRUZXN0
LT55ID0gcmVzdWx0LnBvaW50KCkueSgpOworICAgIGhpdFRlc3QtPnggPSByZXN1bHQucG9pbnRJ
bk1haW5GcmFtZSgpLngoKTsKKyAgICBoaXRUZXN0LT55ID0gcmVzdWx0LnBvaW50SW5NYWluRnJh
bWUoKS55KCk7CiAjaWYgMAogICAgIC8vIEZJWE1FCiAgICAgaGl0VGVzdC0+Ym91bmRpbmdfYm94
LnggPSByZXN1bHQuYm91bmRpbmdCb3goKS54KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0aGl0dGVzdHJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0aGl0dGVzdHJlc3VsdC5jcHAKaW5kZXggMWE5NDM0YWYwZjVkY2FlM2RiMTU4
MDM0YjQ2NDMyMGI4NjZjMWRjYS4uYTNkMGU4NGE2ZmM3YzkzNGJmM2JkMzQ4YzNjMjRiM2M1MmY5
ZTIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGhpdHRlc3Ry
ZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRoaXR0ZXN0cmVz
dWx0LmNwcApAQCAtMjg4LDcgKzI4OCw3IEBAIFdlYktpdEhpdFRlc3RSZXN1bHQqIGtpdChjb25z
dCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0JiByZXN1bHQpCiAgICAgR093blB0cjxjaGFyPiBpbWFn
ZVVSSSgwKTsKICAgICBHT3duUHRyPGNoYXI+IG1lZGlhVVJJKDApOwogICAgIFdlYktpdERPTU5v
ZGUqIG5vZGUgPSAwOwotICAgIFdlYkNvcmU6OkZyYW1lKiB0YXJnZXRGcmFtZTsKKyAgICBXZWJD
b3JlOjpGcmFtZSogaW5uZXJGcmFtZTsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBwb2ludDsKIAog
ICAgIGlmICghcmVzdWx0LmFic29sdXRlTGlua1VSTCgpLmlzRW1wdHkoKSkgewpAQCAtMzE1LDEy
ICszMTUsMTIgQEAgV2ViS2l0SGl0VGVzdFJlc3VsdCoga2l0KGNvbnN0IFdlYkNvcmU6OkhpdFRl
c3RSZXN1bHQmIHJlc3VsdCkKICAgICBpZiAocmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpKQog
ICAgICAgICBub2RlID0ga2l0KHJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKSk7CiAKLSAgICB0
YXJnZXRGcmFtZSA9IHJlc3VsdC50YXJnZXRGcmFtZSgpOwotICAgIGlmICh0YXJnZXRGcmFtZSAm
JiB0YXJnZXRGcmFtZS0+dmlldygpKSB7CisgICAgaW5uZXJGcmFtZSA9IHJlc3VsdC5pbm5lckZy
YW1lKCk7CisgICAgaWYgKGlubmVyRnJhbWUgJiYgaW5uZXJGcmFtZS0+dmlldygpKSB7CiAgICAg
ICAgIC8vIENvbnZlcnQgZG9jdW1lbnQgY29vcmRzIHRvIHdpZGdldCBjb29yZHMuCi0gICAgICAg
IHBvaW50ID0gdGFyZ2V0RnJhbWUtPnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhyZXN1bHQucm91
bmRlZFBvaW50KCkpOworICAgICAgICBwb2ludCA9IGlubmVyRnJhbWUtPnZpZXcoKS0+Y29udGVu
dHNUb1dpbmRvdyhyZXN1bHQucm91bmRlZFBvaW50SW5Jbm5lckZyYW1lKCkpOwogICAgIH0gZWxz
ZQotICAgICAgICBwb2ludCA9IHJlc3VsdC5yb3VuZGVkUG9pbnQoKTsKKyAgICAgICAgcG9pbnQg
PSByZXN1bHQucm91bmRlZFBvaW50SW5NYWluRnJhbWUoKTsKIAogICAgIHJldHVybiBXRUJLSVRf
SElUX1RFU1RfUkVTVUxUKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9ISVRfVEVTVF9SRVNVTFQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5rLXVy
aSIsIGxpbmtVUkkuZ2V0KCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCmluZGV4IGUzMTMxMzYwMzZmNzhkNjAx
NzIzMDY5MmVkOGM2NzkwOGU5ZDQzZTAuLjEwMjc4OTAxMDljMDQyMGEzY2NhYjY0MzQwMDRmYzJl
ZjA3ZjQzYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkNvbnRleHRNZW51Q2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCkBAIC0zNTYsMTcgKzM1NiwxNCBAQCB2b2lkIFdl
YkNvbnRleHRNZW51Q2xpZW50OjpzaG93Q29udGV4dE1lbnUoKQogICAgIGlmICghcGFnZSkKICAg
ICAgICAgcmV0dXJuOwogICAgIENvbnRleHRNZW51Q29udHJvbGxlciogY29udHJvbGxlciA9IHBh
Z2UtPmNvbnRleHRNZW51Q29udHJvbGxlcigpOwotICAgIE5vZGUqIG5vZGUgPSBjb250cm9sbGVy
LT5oaXRUZXN0UmVzdWx0KCkuaW5uZXJOb25TaGFyZWROb2RlKCk7Ci0gICAgaWYgKCFub2RlKQot
ICAgICAgICByZXR1cm47Ci0gICAgRnJhbWUqIGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS0+ZnJh
bWUoKTsKKyAgICBGcmFtZSogZnJhbWUgPSBjb250cm9sbGVyLT5oaXRUZXN0UmVzdWx0KCkuaW5u
ZXJGcmFtZSgpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKICAgICBGcmFtZVZp
ZXcqIGZyYW1lVmlldyA9IGZyYW1lLT52aWV3KCk7CiAgICAgaWYgKCFmcmFtZVZpZXcpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIEludFBvaW50IHBvaW50ID0gZnJhbWVWaWV3LT5jb250ZW50c1Rv
V2luZG93KGNvbnRyb2xsZXItPmhpdFRlc3RSZXN1bHQoKS5yb3VuZGVkUG9pbnQoKSk7CisgICAg
SW50UG9pbnQgcG9pbnQgPSBmcmFtZVZpZXctPmNvbnRlbnRzVG9XaW5kb3coY29udHJvbGxlci0+
aGl0VGVzdFJlc3VsdCgpLnJvdW5kZWRQb2ludEluSW5uZXJGcmFtZSgpKTsKICAgICBOU1ZpZXcq
IHZpZXcgPSBmcmFtZVZpZXctPmRvY3VtZW50VmlldygpOwogICAgIE5TUG9pbnQgbnNTY3JlZW5Q
b2ludCA9IFt2aWV3IGNvbnZlcnRQb2ludDpwb2ludCB0b1ZpZXc6bmlsXTsKICAgICAvLyBTaG93
IHRoZSBjb250ZXh0dWFsIG1lbnUgZm9yIHRoaXMgZXZlbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmZy
YW1lLmNwcAppbmRleCAwYWNjZDMzNjJkZDY4NzM0Y2ZkZjIxMzg1ZWMzODA2NGYyYzEzMWJmLi5m
MTVhYWYzMzhhZTNkZDg4NWNhOGFkYTJlZjNhY2U3ZTRlZmJlMDEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQXBp
L3F3ZWJmcmFtZS5jcHAKQEAgLTE1OTgsNyArMTU5OCw3IEBAIFFXZWJIaXRUZXN0UmVzdWx0UHJp
dmF0ZTo6UVdlYkhpdFRlc3RSZXN1bHRQcml2YXRlKGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1
bHQKIHsKICAgICBpZiAoIWhpdFRlc3QuaW5uZXJOb2RlKCkpCiAgICAgICAgIHJldHVybjsKLSAg
ICBwb3MgPSBoaXRUZXN0LnJvdW5kZWRQb2ludCgpOworICAgIHBvcyA9IGhpdFRlc3Qucm91bmRl
ZFBvaW50SW5NYWluRnJhbWUoKTsKICAgICBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uIGRpcjsKICAg
ICB0aXRsZSA9IGhpdFRlc3QudGl0bGUoZGlyKTsKICAgICBsaW5rVGV4dCA9IGhpdFRlc3QudGV4
dENvbnRlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAppbmRleCBjMmM5ODIzZjk5Y2Jj
ZTcyYjAzZDdiYzhlYjVkNmFkMzI4ODUyODkyLi5mOTU0MWJlNzMwOTZkMjBlYjYwZDg1ODI4NmNj
NGE5NGIyYzM2NWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCkBAIC0xNTg2LDcgKzE1
ODYsNyBAQCBJbnRQb2ludCBRV2ViUGFnZVByaXZhdGU6OlRvdWNoQWRqdXN0ZXI6OmZpbmRDYW5k
aWRhdGVQb2ludEZvclRvdWNoKGNvbnN0IEludFBvaQogICAgIEZyYW1lVmlldyogdmlldyA9IGRv
Y3VtZW50LT5mcmFtZSgpLT52aWV3KCk7CiAKICAgICAvLyBUb3VjaCByZWN0IGluIGNvbnRlbnRz
IGNvb3JkaW5hdGVzLgotICAgIEludFJlY3QgdG91Y2hSZWN0KEhpdFRlc3RSZXN1bHQ6OnJlY3RG
b3JQb2ludCh2aWV3LT53aW5kb3dUb0NvbnRlbnRzKEludFBvaW50KHgsIHkpKSwgbV90b3BQYWRk
aW5nLCBtX3JpZ2h0UGFkZGluZywgbV9ib3R0b21QYWRkaW5nLCBtX2xlZnRQYWRkaW5nKSk7Cisg
ICAgSW50UmVjdCB0b3VjaFJlY3QoSGl0VGVzdExvY2F0aW9uOjpyZWN0Rm9yUG9pbnQodmlldy0+
d2luZG93VG9Db250ZW50cyhJbnRQb2ludCh4LCB5KSksIG1fdG9wUGFkZGluZywgbV9yaWdodFBh
ZGRpbmcsIG1fYm90dG9tUGFkZGluZywgbV9sZWZ0UGFkZGluZykpOwogCiAgICAgLy8gSXRlcmF0
ZSBvdmVyIHRoZSBsaXN0IG9mIG5vZGVzIGhpdCBsb29raW5nIGZvciB0aGUgb25lIHdob3NlIGJv
dW5kaW5nIGFyZWEKICAgICAvLyBoYXMgbGFyZ2VzdCBpbnRlcnNlY3Rpb24gd2l0aCB0aGUgdG91
Y2ggYXJlYSAocG9pbnQgKyBwYWRkaW5nKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKaW5kZXggZGQ3MDA4
ZWIzYTRhN2RjNjgwZGQyZjBmMjZmODcxODAwYWRjMjFlZi4uNjQwODJkNTQ4OTQyNDVmYjI3MTkw
OTIwNTc0ZmJlN2Q2YjljNGIzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKQEAgLTEzNDksMTEgKzEz
NDksNyBAQCBib29sIFdlYlZpZXc6OmhhbmRsZUNvbnRleHRNZW51RXZlbnQoV1BBUkFNIHdQYXJh
bSwgTFBBUkFNIGxQYXJhbSkKICAgICBpZiAoIWNvcmVNZW51KQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBOb2RlKiBub2RlID0gY29udGV4dE1lbnVDb250cm9sbGVyLT5oaXRUZXN0UmVz
dWx0KCkuaW5uZXJOb25TaGFyZWROb2RlKCk7Ci0gICAgaWYgKCFub2RlKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICBGcmFtZSogZnJhbWUgPSBub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgp
OworICAgIEZyYW1lKiBmcmFtZSA9IGNvbnRleHRNZW51Q29udHJvbGxlci0+aGl0VGVzdFJlc3Vs
dCgpLmlubmVyRnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKQEAgLTEzNjEsNyArMTM1Nyw3IEBAIGJvb2wgV2ViVmlldzo6aGFuZGxlQ29udGV4dE1lbnVF
dmVudChXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQogICAgIGlmICghdmlldykKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgUE9JTlQgcG9pbnQodmlldy0+Y29udGVudHNUb1dpbmRv
dyhjb250ZXh0TWVudUNvbnRyb2xsZXItPmhpdFRlc3RSZXN1bHQoKS5yb3VuZGVkUG9pbnQoKSkp
OworICAgIFBPSU5UIHBvaW50KHZpZXctPmNvbnRlbnRzVG9XaW5kb3coY29udGV4dE1lbnVDb250
cm9sbGVyLT5oaXRUZXN0UmVzdWx0KCkucm91bmRlZFBvaW50SW5Jbm5lckZyYW1lKCkpKTsKIAog
ICAgIC8vIFRyYW5zbGF0ZSB0aGUgcG9pbnQgdG8gc2NyZWVuIGNvb3JkaW5hdGVzCiAgICAgaWYg
KCE6OkNsaWVudFRvU2NyZWVuKG1fdmlld1dpbmRvdywgJnBvaW50KSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0TWVudS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29udGV4dE1lbnUuY3BwCmluZGV4IDNh
OTFkOTBiNzU1ZTY4ZDdkNTM1OTc5M2FjZTBmZTM3NWFlNjg2MTAuLmQ0MzFmYmUwOGQxZDI4MTRk
NmFkMjNjOGQ5MjgyNmJmOGM3ZjM0MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0TWVudS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkNvbnRleHRNZW51LmNwcApAQCAtNTksMTAgKzU5LDcgQEAgdm9p
ZCBXZWJDb250ZXh0TWVudTo6c2hvdygpCiAgICAgQ29udGV4dE1lbnUqIG1lbnUgPSBjb250cm9s
bGVyLT5jb250ZXh0TWVudSgpOwogICAgIGlmICghbWVudSkKICAgICAgICAgcmV0dXJuOwotICAg
IE5vZGUqIG5vZGUgPSBjb250cm9sbGVyLT5oaXRUZXN0UmVzdWx0KCkuaW5uZXJOb25TaGFyZWRO
b2RlKCk7Ci0gICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm47Ci0gICAgRnJhbWUqIGZyYW1l
ID0gbm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsKKyAgICBGcmFtZSogZnJhbWUgPSBjb250cm9s
bGVyLT5oaXRUZXN0UmVzdWx0KCkuaW5uZXJGcmFtZSgpOwogICAgIGlmICghZnJhbWUpCiAgICAg
ICAgIHJldHVybjsKICAgICBGcmFtZVZpZXcqIHZpZXcgPSBmcmFtZS0+dmlldygpOwpAQCAtODYs
NyArODMsNyBAQCB2b2lkIFdlYkNvbnRleHRNZW51OjpzaG93KCkKIAogICAgIC8vIE1hcmsgdGhl
IFdlYlBhZ2UgaGFzIGhhdmluZyBhIHNob3duIGNvbnRleHQgbWVudSB0aGVuIG5vdGlmeSB0aGUg
VUlQcm9jZXNzLgogICAgIG1fcGFnZS0+Y29udGV4dE1lbnVTaG93aW5nKCk7Ci0gICAgbV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dDb250ZXh0TWVudSh2aWV3LT5jb250
ZW50c1RvV2luZG93KGNvbnRyb2xsZXItPmhpdFRlc3RSZXN1bHQoKS5yb3VuZGVkUG9pbnQoKSks
IHdlYkhpdFRlc3RSZXN1bHREYXRhLCBwcm9wb3NlZE1lbnUsIEluamVjdGVkQnVuZGxlVXNlck1l
c3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpTaG93Q29udGV4dE1lbnUodmlldy0+Y29udGVudHNUb1dpbmRvdyhj
b250cm9sbGVyLT5oaXRUZXN0UmVzdWx0KCkucm91bmRlZFBvaW50SW5Jbm5lckZyYW1lKCkpLCB3
ZWJIaXRUZXN0UmVzdWx0RGF0YSwgcHJvcG9zZWRNZW51LCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNz
YWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsKIH0KIAogdm9pZCBXZWJDb250ZXh0TWVudTo6
aXRlbVNlbGVjdGVkKGNvbnN0IFdlYkNvbnRleHRNZW51SXRlbURhdGEmIGl0ZW0pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5k
ZXggYjUyNGRhZjBjZDgyZGY3ZWU5MmRhNjc3NWZkZjdjMjc4NGYyYTQ1Yi4uMmFjMGVjNWVkYzM3
YTk3Zjg1NWNkNzAwMWExNzQwNGQ0MTZhZDcxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtMzg0LDkgKzM4NCw5IEBA
IHZvaWQgV2ViUGFnZTo6Y2hhcmFjdGVySW5kZXhGb3JQb2ludChJbnRQb2ludCBwb2ludCwgdWlu
dDY0X3QmIGluZGV4KQogICAgICAgICByZXR1cm47CiAKICAgICBIaXRUZXN0UmVzdWx0IHJlc3Vs
dCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQocG9pbnQsIGZh
bHNlKTsKLSAgICBmcmFtZSA9IHJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKSA/IHJlc3VsdC5p
bm5lck5vblNoYXJlZE5vZGUoKS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSA6IG1fcGFnZS0+Zm9jdXND
b250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIGZyYW1lID0gcmVzdWx0Lmlu
bmVyTm9uU2hhcmVkTm9kZSgpID8gcmVzdWx0LmlubmVyRnJhbWUoKSA6IG1fcGFnZS0+Zm9jdXND
b250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIAotICAgIFJlZlB0cjxSYW5n
ZT4gcmFuZ2UgPSBmcmFtZS0+cmFuZ2VGb3JQb2ludChyZXN1bHQucm91bmRlZFBvaW50KCkpOwor
ICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBmcmFtZS0+cmFuZ2VGb3JQb2ludChyZXN1bHQucm91
bmRlZFBvaW50SW5Jbm5lckZyYW1lKCkpOwogICAgIGlmICghcmFuZ2UpCiAgICAgICAgIHJldHVy
bjsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173020</attachid>
            <date>2012-11-08 05:13:46 -0800</date>
            <delta_ts>2012-11-12 03:44:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98139-20121108141132.patch</filename>
            <type>text/plain</type>
            <size>32816</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzODc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTQzNDJkMDU0ZGQzYjQw
OTVhNDJlNDhkMGMwOTQ5NzIwM2MwODMyZi4uYTA4NTYwYWZhMzQ0YmQ0MTYyZDg1YjBmZDk5ODRk
MTFlM2RiNDY0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDEyLTExLTA4ICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIERp
c2FtYmlndWF0ZSBpbm5lckZyYW1lUG9pbnQgYW5kIG1haW5GcmFtZVBvaW50CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODEzOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNwbGl0IHRoZSBwb2ludCgpIG1l
dGhvZCBpbiBIaXRUZXN0UmVzdWx0IGludG8gdHdvLCBpbm5lckZyYW1lUG9pbnQgYW5kIG1haW5G
cmFtZVBvaW50KCkuCisgICAgICAgIFRvIGRvIHRoaXMgSGl0VGVzdFJlc3VsdCBubyBsb25nZXIg
aW5oZXJpdHMgcHVibGljYWxseSBmcm9tIEhpdFRlc3RMb2NhdGlvbiwgd2hpY2ggc2hvdWxkIGFs
c28KKyAgICAgICAgaGVscCB0byBsYXRlciBzZXBhcmF0ZSB0aGUgdHdvIGNsYXNzZXMgbW9yZSBj
b21wbGV0ZWx5LgorCisgICAgICAgIE1hbnkgb2YgdGhlIGNhbGwtc2l0ZXMgb2YgaGl0VGVzdFJl
c3VsdEF0UG9pbnQgdHJpZXMgdG8gY29udmVydCBiYWNrIGZyb20gaW5uZXJGcmFtZVBvaW50IHRv
CisgICAgICAgIG1haW5GcmFtZVBvaW50LiBUaGVzZSBjb252ZXJzaW9ucyBoYXZlIG5vdCBiZWVu
IGFsbCBjbGVhbmVkIHVwIGluIHRoaXMgcGF0Y2gsIGFuZCBhcmUgbGVmdCBmb3IKKyAgICAgICAg
dGhlIHBvcnRzIHRvIGhhbmRsZSwgc2luY2UgdGhleSBhcmUgaW4gYSBiZXR0ZXIgcG9zaXRpb24g
dG8gdGVzdCBpdC4gVGhpcyBpcyBhZGRpdGlvbmFsbHkgCisgICAgICAgIHByb2JsZW1hdGljIGJl
Y2F1c2UgbWFueSBjYWxsLXNpdGVzIGhhdmUgY29uZnVzZWQgdGhlIHR3bywgYW5kIHdlcmUgdXNp
bmcgdGhlIG9sZCBwb2ludCBpbmNvcnJlY3RseS4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmlu
OgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6bm9kZXNGcm9tUmVjdCk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpldmVudE1heVN0YXJ0RHJhZyk6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhpdFRlc3RSZXN1bHRBdFBvaW50KToKKyAgICAgICAg
ICAgIFVzZWQgdG8gZG8gYSBzZWNvbmQgaGl0LXRlc3QgZnJvbSB0aGUgbWFpbi1mcmFtZSBpZiBz
dGFydGVkIG9uIGEgbm9uIG1haW4tZnJhbWUuIE5vdyBpdAorICAgICAgICAgICAgZG9lcyBvbmx5
IG9uZSBoaXQtdGVzdCBhbmQgcmVkaXJlY3RzIHRoZSB0ZXN0IHRvIHRoZSBtYWluLWZyYW1lIGlt
bWlkaWF0ZWx5LiBJbXByb3ZpbmcKKyAgICAgICAgICAgIGJvdGggcGVyZm9ybWFuY2UsIGFuZCBn
dWFyYW50ZWVpbmcgaXRzIHRlc3RzIGFsd2F5cyBzdGFydCBpbiB0aGUgbWFpbi1mcmFtZS4KKyAg
ICAgICAgKiByZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
aXRUZXN0UmVzdWx0OjpIaXRUZXN0UmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RS
ZXN1bHQ6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0Ojppbm5l
ckZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OmFwcGVuZCk6CisgICAg
ICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaDoKKyAgICAgICAgKEhpdFRlc3RSZXN1bHQp
OgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6aXNSZWN0QmFzZWRUZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OnBvaW50SW5NYWluRnJhbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6cm91bmRlZFBvaW50SW5NYWluRnJhbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6c2V0UG9pbnRJbk1haW5GcmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0Ojpwb2ludEluSW5uZXJGcmFtZSk6CisgICAgICAg
IChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0Ojpyb3VuZGVkUG9pbnRJbklubmVyRnJhbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6bG9jYWxQb2ludCk6CisgICAgICAgIChXZWJD
b3JlOjpIaXRUZXN0UmVzdWx0OjpzZXRMb2NhbFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmhpdFRlc3Qp
OgorCiAyMDEyLTExLTA4ICBaZW5vIEFsYmlzc2VyICA8emVub0B3ZWJraXQub3JnPgogCiAgICAg
ICAgIEdyYXBoaWNzU3VyZmFjZUdMWCBuZWVkcyB0byBxdWVyeSB0aGUgZHJhd2FibGUgZm9yIFlJ
bnZlcnNpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDgzYzRlNjMzMjMxOTRmM2Q1
N2Y0ZDBmYTMwNDg3N2UxNzhlNTkxZmEuLjA2NzkzOTI2Y2M5ZjRkODNmNTNkMjk2MzdkODAzYTU0
Mjg5NTg1ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIw
MTItMTEtMDggIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+
CisKKyAgICAgICAgRGlzYW1iaWd1YXRlIGlubmVyRnJhbWVQb2ludCBhbmQgbWFpbkZyYW1lUG9p
bnQgCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODEz
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3Jj
L0Nocm9tZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBs
Ojptb3VzZURpZE1vdmVPdmVyRWxlbWVudCk6CisgICAgICAgICogc3JjL0NvbnRleHRNZW51Q2xp
ZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OnNlbGVjdE1pc3NwZWxsZWRXb3JkKToKKyAg
ICAgICAgKFdlYktpdDo6Q29udGV4dE1lbnVDbGllbnRJbXBsOjpnZXRDdXN0b21NZW51RnJvbURl
ZmF1bHRJdGVtcyk6CisgICAgICAgICogc3JjL1dlYkZyYW1lSW1wbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkZyYW1lSW1wbDo6Y2hhcmFjdGVySW5kZXhGb3JQb2ludCk6CisKIDIwMTItMTEt
MDggIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2Vi
IEluc3BlY3RvcjogbW92ZSBmcm9udC1lbmQgbWV0aG9kcyBjYWxsZWQgZnJvbSBuYXRpdmUgcGFy
dCB0byBJbnNwZWN0b3JGcm9udGVuZEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IGY2MTE3ZGEwM2Rk
YjUyNDZmMDYzNWJkNmRhYzYzNGYyNDkxZWE4ODcuLjQ4NTg0YTdkMmFlMTFkNTNiZTE2YWFlMDFl
MzgwZjg0NWRmNGE2YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0x
MS0wOCAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KKwor
ICAgICAgICBEaXNhbWJpZ3VhdGUgaW5uZXJGcmFtZVBvaW50IGFuZCBtYWluRnJhbWVQb2ludCAK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MTM5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3dpdGNoIHRv
IHVzaW5nIG1haW4gZnJhbWUgcG9pbnQgc2luY2UgeCBhbmQgeSBhcmUgZG9jdW1lbnRlZCBhcyBi
ZWluZyB0aGUgcG9pbnQgb2YgdGhlIGhpdCB0ZXN0LgorCisgICAgICAgICogZXdrL2V3a19mcmFt
ZS5jcHA6CisgICAgICAgIChld2tfZnJhbWVfaGl0X3Rlc3RfbmV3KToKKwogMjAxMi0xMS0wNyAg
RW1pbCBBIEVrbHVuZCAgPGVhZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBF
RkwgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IGVjMWQwZWZjMWFlZjczM2ZkN2FhMTUx
MjZkNDk2N2E0NjcxYzA4OTYuLjRhODZjMmRkOTcyNDE5ZTE3MzFmYmM5ODQyYzE0YTBkNGE2ZGIx
NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0xMS0wOCAgQWxsYW4g
U2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KKworICAgICAgICBEaXNh
bWJpZ3VhdGUgaW5uZXJGcmFtZVBvaW50IGFuZCBtYWluRnJhbWVQb2ludAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgxMzkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlZCBjb25mdXNpb24gb2YgdGFy
Z2V0RnJhbWUgYW5kIGlubmVyRnJhbWUuIEZ1cnRoZXIgY2xlYW4tdXAgaXMgcG9zc2libGUgdGhv
dWdoLgorCisgICAgICAgICogd2Via2l0L3dlYmtpdGhpdHRlc3RyZXN1bHQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpraXQpOgorCiAyMDEyLTExLTA1ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFz
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBsYXllciBib3JkZXJzIHRvIGNsZWFuaW5nIGFw
cGVhciBhbmQgZGlzYXBwZWFyIG9uIHN3aXRjaGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGYwMDVm
ODU4NmM2OGQwNWQ5ZGY2YWMwZjViMTJlNzhiM2ZmNDYzYjIuLjdiYWI3ZmU5NTE5YmEwZDFhY2Q1
Nzk2Yjk4YmVhNGQ5YjYyZjdkNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAor
MjAxMi0xMS0wOCAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNv
bT4KKworICAgICAgICBEaXNhbWJpZ3VhdGUgaW5uZXJGcmFtZVBvaW50IGFuZCBtYWluRnJhbWVQ
b2ludAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgx
MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTd2l0
Y2ggdG8gdXNpbmcgSGl0VGVzdFJlc3VsdDo6aW5uZXJGcmFtZSBhbmQgSGl0VGVzdFJlc3VsdDo6
aW5uZXJGcmFtZVBvaW50LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1l
bnVDbGllbnQubW06CisgICAgICAgIChXZWJDb250ZXh0TWVudUNsaWVudDo6c2hvd0NvbnRleHRN
ZW51KToKKwogMjAxMi0xMS0wNyAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAK
ICAgICAgICAgUmVtb3ZlIGJ1aWxkLXdlYmtpdCBkZXBlbmRlbmN5IG9uIEphdmEgU0RLIGZvciBB
cHBsZSBNYWMgV2ViS2l0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCA4ZmMzNzlhMGEyNWU4ZGRjMGRmNDgy
YWQ3OTUxOGFhM2U1MTNiYzM1Li43N2M4ZDEyMDUwOTQ2MmQ5NjJjNjk2NWVmNjllNjY5NmQ5OWUy
YmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTExLTA4ICBBbGxhbiBT
YW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIERpc2Ft
YmlndWF0ZSBpbm5lckZyYW1lUG9pbnQgYW5kIG1haW5GcmFtZVBvaW50CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODEzOQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBRdCBkb2N1bWVudCBzdGF0ZXMg
dGhlIHBvcyBhdHRyaWJ1dGUgb2YgUVdlYkhpdFRlc3RSZXN1bHQgaXMgdGhlIG9yaWdpbmFsIHBv
c2l0aW9uLAorICAgICAgICBzbyB0aGUgY29kZSBub3cgdXNlcyBtYWluRnJhbWVQb2ludC4KKwor
ICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkhpdFRlc3RSZXN1bHRQ
cml2YXRlOjpRV2ViSGl0VGVzdFJlc3VsdFByaXZhdGUpOgorICAgICAgICAqIEFwaS9xd2VicGFn
ZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OlRvdWNoQWRqdXN0ZXI6OmZpbmRDYW5k
aWRhdGVQb2ludEZvclRvdWNoKToKKwogMjAxMi0xMS0wNyAgQWxsYW4gU2FuZGZlbGQgSmVuc2Vu
ICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KIAogICAgICAgICBbUXRdIE9wZW4gbGluayBpbiB0
aGlzIHdpbmRvdyBhY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCAyNjM1MTc0M2JkODY1ODIwYTE4
NmZjMzkwZGZiM2MyY2QwNTQyMWY4Li45N2FjMDQwNDVjOGZmNDY2M2Q3NWU1ODg3NTZiMGY4ZmIz
YzEwZTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMTAtMTkgIEFs
bGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CisKKyAgICAgICAg
RGlzYW1iaWd1YXRlIGlubmVyRnJhbWVQb2ludCBhbmQgbWFpbkZyYW1lUG9pbnQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MTM5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAg
ICAgICAgKFdlYlZpZXc6OmhhbmRsZUNvbnRleHRNZW51RXZlbnQpOgorCiAyMDEyLTExLTA1ICBT
aW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBsYXll
ciBib3JkZXJzIHRvIGNsZWFuaW5nIGFwcGVhciBhbmQgZGlzYXBwZWFyIG9uIHN3aXRjaGluZwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCmluZGV4IDg2YjQyMDFhNDIzNjQ2OWRiNDRjZDhlMGFiMTlhMTY2NjI4Mzc0MTYuLjI4
ZTU5NTZhNmU1OTJmNDI5YmNjNjc1NjVmNGMzNGEwN2EyNGMzNzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAxMi0xMS0wOCAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVu
c2VuQGRpZ2lhLmNvbT4KKworICAgICAgICBEaXNhbWJpZ3VhdGUgaW5uZXJGcmFtZVBvaW50IGFu
ZCBtYWluRnJhbWVQb2ludAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTgxMzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBTd2l0Y2ggdG8gdXNpbmcgSGl0VGVzdFJlc3VsdDo6aW5uZXJGcmFtZSBhbmQgSGl0
VGVzdFJlc3VsdDo6aW5uZXJGcmFtZVBvaW50LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkNvbnRleHRNZW51LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnU6
OnNob3cpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y2hhcmFjdGVySW5kZXhGb3JQb2ludCk6CisKIDIw
MTItMTEtMDggIEthbmdpbCBIYW4gIDxrYW5naWwuaGFuQHNhbXN1bmcuY29tPgogCiAgICAgICAg
IFtFRkxdW01pbmlCcm93c2VyXSBBZGQgZW5jb2RpbmcgZGV0ZWN0b3Igb3B0aW9uLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgppbmRleCBiNjg3MTg1MmYyNTllODAyNjAxZWMxYmU2NjBmMzc0NjM0ZjhmNWVh
Li4wMzc3MDc0YmVmNGJmZDZlYWYzYmQ4MjBhMzVjMmEwY2ZlYTFjYzllIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgpAQCAtMTE5OCw2ICsxMTk4LDcgQEAgX19aTks3V2ViQ29yZTEzSFRUUEhlYWRlck1h
cDNnZXRFUEtjCiBfX1pOSzdXZWJDb3JlMTNIVFRQSGVhZGVyTWFwM2dldEVSS04zV1RGMTJBdG9t
aWNTdHJpbmdFCiBfX1pOSzdXZWJDb3JlMTNIaXRUZXN0UmVzdWx0MTBpc0xpdmVMaW5rRXYKIF9f
Wk5LN1dlYkNvcmUxM0hpdFRlc3RSZXN1bHQxMGlzU2VsZWN0ZWRFdgorX19aTks3V2ViQ29yZTEz
SGl0VGVzdFJlc3VsdDEwaW5uZXJGcmFtZUV2CiBfX1pOSzdXZWJDb3JlMTNIaXRUZXN0UmVzdWx0
MTF0YXJnZXRGcmFtZUV2CiBfX1pOSzdXZWJDb3JlMTNIaXRUZXN0UmVzdWx0MTF0ZXh0Q29udGVu
dEV2CiBfX1pOSzdXZWJDb3JlMTNIaXRUZXN0UmVzdWx0MTRhYnNvbHV0ZVBERlVSTEV2CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAppbmRleCAwYmE4YzhiOGNkZDRjM2U2ZjdjZmE1MzRhMDY5NmRiNGRi
MWM1ZmM4Li41NzI5OGY4MmNlOTNmNWY3MmQ0MWE0MzY0OWI3NjE3ZWQ0ZDdhYThmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKQEAgLTEzOTQsNyArMTM5NCw3IEBAIFBhc3NSZWZQdHI8Tm9kZUxp
c3Q+IERvY3VtZW50Ojpub2Rlc0Zyb21SZWN0KGludCBjZW50ZXJYLCBpbnQgY2VudGVyWSwgdW5z
aWduZWQKICAgICAvLyBXaGVuIGlnbm9yZUNsaXBwaW5nIGlzIGZhbHNlLCB0aGlzIG1ldGhvZCBy
ZXR1cm5zIG51bGwgZm9yIGNvb3JkaW5hdGVzIG91dHNpZGUgb2YgdGhlIHZpZXdwb3J0LgogICAg
IGlmIChpZ25vcmVDbGlwcGluZykKICAgICAgICAgdHlwZSB8PSBIaXRUZXN0UmVxdWVzdDo6SWdu
b3JlQ2xpcHBpbmc7Ci0gICAgZWxzZSBpZiAoIWZyYW1lVmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0
KCkuaW50ZXJzZWN0cyhIaXRUZXN0UmVzdWx0OjpyZWN0Rm9yUG9pbnQocG9pbnQsIHRvcFBhZGRp
bmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcpKSkKKyAgICBlbHNl
IGlmICghZnJhbWVWaWV3LT52aXNpYmxlQ29udGVudFJlY3QoKS5pbnRlcnNlY3RzKEhpdFRlc3RM
b2NhdGlvbjo6cmVjdEZvclBvaW50KHBvaW50LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJv
dHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5nKSkpCiAgICAgICAgIHJldHVybiAwOwogICAgIGlmIChh
bGxvd1NoYWRvd0NvbnRlbnQpCiAgICAgICAgIHR5cGUgfD0gSGl0VGVzdFJlcXVlc3Q6OkFsbG93
U2hhZG93Q29udGVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCA5MjA1
NWExMjMzYTc4NDY5NTJiN2JiY2ZjMTFhZDczYzVjODNlOThmLi45ZDJmY2U2YzcxNDIyZWNjOWYz
Mzc4NzM1NTAyOTIzMWUyZGI0N2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3Bw
CkBAIC03NzMsNyArNzczLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmV2ZW50TWF5U3RhcnREcmFn
KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpIGNvbnN0CiAgICAgSGl0VGVzdFJlc3Vs
dCByZXN1bHQodmlldy0+d2luZG93VG9Db250ZW50cyhldmVudC5wb3NpdGlvbigpKSk7CiAgICAg
bV9mcmFtZS0+Y29udGVudFJlbmRlcmVyKCktPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0KTsKICAg
ICBEcmFnU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIHJlc3VsdC5pbm5lck5vZGUoKSAmJiBwYWdl
LT5kcmFnQ29udHJvbGxlcigpLT5kcmFnZ2FibGVOb2RlKG1fZnJhbWUsIHJlc3VsdC5pbm5lck5v
ZGUoKSwgcm91bmRlZEludFBvaW50KHJlc3VsdC5wb2ludCgpKSwgc3RhdGUpOworICAgIHJldHVy
biByZXN1bHQuaW5uZXJOb2RlKCkgJiYgcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS0+ZHJhZ2dhYmxl
Tm9kZShtX2ZyYW1lLCByZXN1bHQuaW5uZXJOb2RlKCksIHJlc3VsdC5yb3VuZGVkUG9pbnRJbk1h
aW5GcmFtZSgpLCBzdGF0ZSk7CiB9CiAKIHZvaWQgRXZlbnRIYW5kbGVyOjp1cGRhdGVTZWxlY3Rp
b25Gb3JNb3VzZURyYWcoKQpAQCAtMTEwMSw5ICsxMTAxLDIzIEBAIERyYWdTb3VyY2VBY3Rpb24g
RXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnU291cmNlQWN0aW9uc0FsbG93ZWQoKSBjb25zdAogICAg
IHJldHVybiBwYWdlLT5kcmFnQ29udHJvbGxlcigpLT5kZWxlZ2F0ZURyYWdTb3VyY2VBY3Rpb24o
dmlldy0+Y29udGVudHNUb1Jvb3RWaWV3KG1fbW91c2VEb3duUG9zKSk7CiB9CiAjZW5kaWYgLy8g
RU5BQkxFKERSQUdfU1VQUE9SVCkKLSAgICAKKwogSGl0VGVzdFJlc3VsdCBFdmVudEhhbmRsZXI6
OmhpdFRlc3RSZXN1bHRBdFBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCwgYm9vbCBhbGxv
d1NoYWRvd0NvbnRlbnQsIGJvb2wgaWdub3JlQ2xpcHBpbmcsIEhpdFRlc3RTY3JvbGxiYXJzIHRl
c3RTY3JvbGxiYXJzLCBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RUeXBlIGhpdFR5cGUs
IGNvbnN0IExheW91dFNpemUmIHBhZGRpbmcpCiB7CisgICAgLy8gV2UgYWx3YXlzIHNlbmQgaGl0
VGVzdFJlc3VsdEF0UG9pbnQgdG8gdGhlIG1haW4gZnJhbWUgaWYgd2UgaGF2ZSBvbmUsCisgICAg
Ly8gb3RoZXJ3aXNlIHdlIG1pZ2h0IGhpdCBhcmVhcyB0aGF0IGFyZSBvYnNjdXJlZCBieSBoaWdo
ZXIgZnJhbWVzLgorICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKSB7CisgICAg
ICAgIEZyYW1lKiBtYWluRnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsKKyAgICAgICAgaWYgKG1f
ZnJhbWUgIT0gbWFpbkZyYW1lKSB7CisgICAgICAgICAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9
IG1fZnJhbWUtPnZpZXcoKTsKKyAgICAgICAgICAgIEZyYW1lVmlldyogbWFpblZpZXcgPSBtYWlu
RnJhbWUtPnZpZXcoKTsKKyAgICAgICAgICAgIGlmIChmcmFtZVZpZXcgJiYgbWFpblZpZXcpIHsK
KyAgICAgICAgICAgICAgICBJbnRQb2ludCBtYWluRnJhbWVQb2ludCA9IG1haW5WaWV3LT5yb290
Vmlld1RvQ29udGVudHMoZnJhbWVWaWV3LT5jb250ZW50c1RvUm9vdFZpZXcocm91bmRlZEludFBv
aW50KHBvaW50KSkpOworICAgICAgICAgICAgICAgIHJldHVybiBtYWluRnJhbWUtPmV2ZW50SGFu
ZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChtYWluRnJhbWVQb2ludCwgYWxsb3dTaGFkb3dD
b250ZW50LCBpZ25vcmVDbGlwcGluZywgdGVzdFNjcm9sbGJhcnMsIGhpdFR5cGUsIHBhZGRpbmcp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCiAgICAgSGl0VGVzdFJlc3VsdCBy
ZXN1bHQocG9pbnQsIHBhZGRpbmcuaGVpZ2h0KCksIHBhZGRpbmcud2lkdGgoKSwgcGFkZGluZy5o
ZWlnaHQoKSwgcGFkZGluZy53aWR0aCgpKTsKIAogICAgIGlmICghbV9mcmFtZS0+Y29udGVudFJl
bmRlcmVyKCkpCkBAIC0xMTEyLDcgKzExMjYsOCBAQCBIaXRUZXN0UmVzdWx0IEV2ZW50SGFuZGxl
cjo6aGl0VGVzdFJlc3VsdEF0UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBib29sCiAg
ICAgICAgIGhpdFR5cGUgfD0gSGl0VGVzdFJlcXVlc3Q6Oklnbm9yZUNsaXBwaW5nOwogICAgIGlm
IChhbGxvd1NoYWRvd0NvbnRlbnQpCiAgICAgICAgIGhpdFR5cGUgfD0gSGl0VGVzdFJlcXVlc3Q6
OkFsbG93U2hhZG93Q29udGVudDsKLSAgICBtX2ZyYW1lLT5jb250ZW50UmVuZGVyZXIoKS0+aGl0
VGVzdChIaXRUZXN0UmVxdWVzdChoaXRUeXBlKSwgcmVzdWx0KTsKKyAgICBIaXRUZXN0UmVxdWVz
dCByZXF1ZXN0KGhpdFR5cGUpOworICAgIG1fZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpLT5oaXRU
ZXN0KHJlcXVlc3QsIHJlc3VsdCk7CiAKICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICBOb2Rl
KiBuID0gcmVzdWx0LmlubmVyTm9kZSgpOwpAQCAtMTEyOSw3ICsxMTQ0LDggQEAgSGl0VGVzdFJl
c3VsdCBFdmVudEhhbmRsZXI6OmhpdFRlc3RSZXN1bHRBdFBvaW50KGNvbnN0IExheW91dFBvaW50
JiBwb2ludCwgYm9vbAogICAgICAgICBMYXlvdXRQb2ludCB3aWRnZXRQb2ludChyZXN1bHQubG9j
YWxQb2ludCgpLngoKSArIHZpZXctPnNjcm9sbFgoKSAtIHJlbmRlcldpZGdldC0+Ym9yZGVyTGVm
dCgpIC0gcmVuZGVyV2lkZ2V0LT5wYWRkaW5nTGVmdCgpLCAKICAgICAgICAgICAgIHJlc3VsdC5s
b2NhbFBvaW50KCkueSgpICsgdmlldy0+c2Nyb2xsWSgpIC0gcmVuZGVyV2lkZ2V0LT5ib3JkZXJU
b3AoKSAtIHJlbmRlcldpZGdldC0+cGFkZGluZ1RvcCgpKTsKICAgICAgICAgSGl0VGVzdFJlc3Vs
dCB3aWRnZXRIaXRUZXN0UmVzdWx0KHdpZGdldFBvaW50LCBwYWRkaW5nLmhlaWdodCgpLCBwYWRk
aW5nLndpZHRoKCksIHBhZGRpbmcuaGVpZ2h0KCksIHBhZGRpbmcud2lkdGgoKSk7Ci0gICAgICAg
IGZyYW1lLT5jb250ZW50UmVuZGVyZXIoKS0+aGl0VGVzdChIaXRUZXN0UmVxdWVzdChoaXRUeXBl
KSwgd2lkZ2V0SGl0VGVzdFJlc3VsdCk7CisgICAgICAgIHdpZGdldEhpdFRlc3RSZXN1bHQuc2V0
UG9pbnRJbk1haW5GcmFtZShyZXN1bHQucG9pbnRJbk1haW5GcmFtZSgpKTsKKyAgICAgICAgZnJh
bWUtPmNvbnRlbnRSZW5kZXJlcigpLT5oaXRUZXN0KHJlcXVlc3QsIHdpZGdldEhpdFRlc3RSZXN1
bHQpOwogICAgICAgICByZXN1bHQgPSB3aWRnZXRIaXRUZXN0UmVzdWx0OwogCiAgICAgICAgIGlm
ICh0ZXN0U2Nyb2xsYmFycyA9PSBTaG91bGRIaXRUZXN0U2Nyb2xsYmFycykgewpAQCAtMTEzOCwy
MSArMTE1NCw2IEBAIEhpdFRlc3RSZXN1bHQgRXZlbnRIYW5kbGVyOjpoaXRUZXN0UmVzdWx0QXRQ
b2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQsIGJvb2wKICAgICAgICAgICAgICAgICByZXN1
bHQuc2V0U2Nyb2xsYmFyKGV2ZW50U2Nyb2xsYmFyKTsKICAgICAgICAgfQogICAgIH0KLSAgICAK
LSAgICAvLyBJZiBvdXIgSGl0VGVzdFJlc3VsdCBpcyBub3QgdmlzaWJsZSwgdGhlbiB3ZSBzdGFy
dGVkIGhpdCB0ZXN0aW5nIHRvbyBmYXIgZG93biB0aGUgZnJhbWUgY2hhaW4uIAotICAgIC8vIEFu
b3RoZXIgaGl0IHRlc3QgYXQgdGhlIG1haW4gZnJhbWUgbGV2ZWwgc2hvdWxkIGdldCB1cyB0aGUg
Y29ycmVjdCB2aXNpYmxlIHJlc3VsdC4KLSAgICBGcmFtZSogcmVzdWx0RnJhbWUgPSByZXN1bHQu
aW5uZXJOb25TaGFyZWROb2RlKCkgPyByZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCktPmRvY3Vt
ZW50KCktPmZyYW1lKCkgOiAwOwotICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgp
KSB7Ci0gICAgICAgIEZyYW1lKiBtYWluRnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsKLSAgICAg
ICAgaWYgKG1fZnJhbWUgIT0gbWFpbkZyYW1lICYmIHJlc3VsdEZyYW1lICYmIHJlc3VsdEZyYW1l
ICE9IG1haW5GcmFtZSkgewotICAgICAgICAgICAgRnJhbWVWaWV3KiByZXN1bHRWaWV3ID0gcmVz
dWx0RnJhbWUtPnZpZXcoKTsKLSAgICAgICAgICAgIEZyYW1lVmlldyogbWFpblZpZXcgPSBtYWlu
RnJhbWUtPnZpZXcoKTsKLSAgICAgICAgICAgIGlmIChyZXN1bHRWaWV3ICYmIG1haW5WaWV3KSB7
Ci0gICAgICAgICAgICAgICAgSW50UG9pbnQgbWFpbkZyYW1lUG9pbnQgPSBtYWluVmlldy0+cm9v
dFZpZXdUb0NvbnRlbnRzKHJlc3VsdFZpZXctPmNvbnRlbnRzVG9Sb290Vmlldyhyb3VuZGVkSW50
UG9pbnQocmVzdWx0LnBvaW50KCkpKSk7Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gbWFpbkZy
YW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQobWFpbkZyYW1lUG9pbnQs
IGFsbG93U2hhZG93Q29udGVudCwgaWdub3JlQ2xpcHBpbmcsIHRlc3RTY3JvbGxiYXJzLCBoaXRU
eXBlLCBwYWRkaW5nKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KIAogICAgIGlm
ICghYWxsb3dTaGFkb3dDb250ZW50KQogICAgICAgICByZXN1bHQuc2V0VG9Ob25TaGFkb3dBbmNl
c3RvcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1
bHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCmluZGV4
IGNjMzkwNTY4Y2UwMjk4NmQyMGJiYjFjZmZjMTAxM2JlMDllZjNjYTMuLjQ3YjE1ZDJlMzcwOTZi
MThiYmFjOGRjMmMxOThlODJmMDI2YjM0YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SGl0VGVzdFJlc3VsdC5jcHAKQEAgLTIwNCwxMiArMjA0LDE0IEBAIEhpdFRlc3RSZXN1bHQ6Okhp
dFRlc3RSZXN1bHQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KSA6IEhpdFRlc3RMb2NhdGlvbihw
b2ludCkKIAogSGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3VsdChjb25zdCBMYXlvdXRQb2ludCYg
Y2VudGVyUG9pbnQsIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0UGFkZGluZywg
dW5zaWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcpCiAgICAgOiBIaXRU
ZXN0TG9jYXRpb24oY2VudGVyUG9pbnQsIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9t
UGFkZGluZywgbGVmdFBhZGRpbmcpCisgICAgLCBtX3BvaW50SW5NYWluRnJhbWUocG9pbnQoKSkK
ICAgICAsIG1faXNPdmVyV2lkZ2V0KGZhbHNlKQogewogfQogCiBIaXRUZXN0UmVzdWx0OjpIaXRU
ZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgb3RoZXIpCiAgICAgOiBIaXRUZXN0TG9j
YXRpb24ob3RoZXIpCisgICAgLCBtX3BvaW50SW5NYWluRnJhbWUocG9pbnQoKSkKICAgICAsIG1f
aXNPdmVyV2lkZ2V0KGZhbHNlKQogewogfQpAQCAtMjE4LDYgKzIyMCw3IEBAIEhpdFRlc3RSZXN1
bHQ6OkhpdFRlc3RSZXN1bHQoY29uc3QgSGl0VGVzdFJlc3VsdCYgb3RoZXIpCiAgICAgOiBIaXRU
ZXN0TG9jYXRpb24ob3RoZXIpCiAgICAgLCBtX2lubmVyTm9kZShvdGhlci5pbm5lck5vZGUoKSkK
ICAgICAsIG1faW5uZXJOb25TaGFyZWROb2RlKG90aGVyLmlubmVyTm9uU2hhcmVkTm9kZSgpKQor
ICAgICwgbV9wb2ludEluTWFpbkZyYW1lKG90aGVyLm1fcG9pbnRJbk1haW5GcmFtZSkKICAgICAs
IG1fbG9jYWxQb2ludChvdGhlci5sb2NhbFBvaW50KCkpCiAgICAgLCBtX2lubmVyVVJMRWxlbWVu
dChvdGhlci5VUkxFbGVtZW50KCkpCiAgICAgLCBtX3Njcm9sbGJhcihvdGhlci5zY3JvbGxiYXIo
KSkKQEAgLTIzNiw2ICsyMzksNyBAQCBIaXRUZXN0UmVzdWx0JiBIaXRUZXN0UmVzdWx0OjpvcGVy
YXRvcj0oY29uc3QgSGl0VGVzdFJlc3VsdCYgb3RoZXIpCiAgICAgSGl0VGVzdExvY2F0aW9uOjpv
cGVyYXRvcj0ob3RoZXIpOwogICAgIG1faW5uZXJOb2RlID0gb3RoZXIuaW5uZXJOb2RlKCk7CiAg
ICAgbV9pbm5lck5vblNoYXJlZE5vZGUgPSBvdGhlci5pbm5lck5vblNoYXJlZE5vZGUoKTsKKyAg
ICBtX3BvaW50SW5NYWluRnJhbWUgPSBvdGhlci5tX3BvaW50SW5NYWluRnJhbWU7CiAgICAgbV9s
b2NhbFBvaW50ID0gb3RoZXIubG9jYWxQb2ludCgpOwogICAgIG1faW5uZXJVUkxFbGVtZW50ID0g
b3RoZXIuVVJMRWxlbWVudCgpOwogICAgIG1fc2Nyb2xsYmFyID0gb3RoZXIuc2Nyb2xsYmFyKCk7
CkBAIC0yNzksNiArMjgzLDE1IEBAIHZvaWQgSGl0VGVzdFJlc3VsdDo6c2V0U2Nyb2xsYmFyKFNj
cm9sbGJhciogcykKICAgICBtX3Njcm9sbGJhciA9IHM7CiB9CiAKK0ZyYW1lKiBIaXRUZXN0UmVz
dWx0Ojppbm5lckZyYW1lKCkgY29uc3QKK3sKKyAgICBpZiAobV9pbm5lck5vblNoYXJlZE5vZGUp
CisgICAgICAgIHJldHVybiBtX2lubmVyTm9uU2hhcmVkTm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUo
KTsKKyAgICBpZiAobV9pbm5lck5vZGUpCisgICAgICAgIHJldHVybiBtX2lubmVyTm9kZS0+ZG9j
dW1lbnQoKS0+ZnJhbWUoKTsKKyAgICByZXR1cm4gMDsKK30KKwogRnJhbWUqIEhpdFRlc3RSZXN1
bHQ6OnRhcmdldEZyYW1lKCkgY29uc3QKIHsKICAgICBpZiAoIW1faW5uZXJVUkxFbGVtZW50KQpA
QCAtNzQ2LDYgKzc1OSw3IEBAIHZvaWQgSGl0VGVzdFJlc3VsdDo6YXBwZW5kKGNvbnN0IEhpdFRl
c3RSZXN1bHQmIG90aGVyKQogICAgICAgICBtX2lubmVyTm9kZSA9IG90aGVyLmlubmVyTm9kZSgp
OwogICAgICAgICBtX2lubmVyTm9uU2hhcmVkTm9kZSA9IG90aGVyLmlubmVyTm9uU2hhcmVkTm9k
ZSgpOwogICAgICAgICBtX2xvY2FsUG9pbnQgPSBvdGhlci5sb2NhbFBvaW50KCk7CisgICAgICAg
IG1fcG9pbnRJbk1haW5GcmFtZSA9IG90aGVyLm1fcG9pbnRJbk1haW5GcmFtZTsKICAgICAgICAg
bV9pbm5lclVSTEVsZW1lbnQgPSBvdGhlci5VUkxFbGVtZW50KCk7CiAgICAgICAgIG1fc2Nyb2xs
YmFyID0gb3RoZXIuc2Nyb2xsYmFyKCk7CiAgICAgICAgIG1faXNPdmVyV2lkZ2V0ID0gb3RoZXIu
aXNPdmVyV2lkZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0
VGVzdFJlc3VsdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaApp
bmRleCA3YjNjMTllNWNhMzIzODUyOWQzODhmZjhiMmY5MzEwNWUzYTdlOTQwLi43OGUzNjJmMTYy
NmI4MzBlN2JhMTE2NWE2YWY1ODZiMzcxM2U0NjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9IaXRUZXN0UmVzdWx0LmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIH5IaXRUZXN0
TG9jYXRpb24oKTsKICAgICBIaXRUZXN0TG9jYXRpb24mIG9wZXJhdG9yPShjb25zdCBIaXRUZXN0
TG9jYXRpb24mKTsKIAotICAgIExheW91dFBvaW50IHBvaW50KCkgY29uc3QgeyByZXR1cm4gbV9w
b2ludDsgfQorICAgIGNvbnN0IExheW91dFBvaW50JiBwb2ludCgpIGNvbnN0IHsgcmV0dXJuIG1f
cG9pbnQ7IH0KICAgICBJbnRQb2ludCByb3VuZGVkUG9pbnQoKSBjb25zdCB7IHJldHVybiByb3Vu
ZGVkSW50UG9pbnQobV9wb2ludCk7IH0KIAogICAgIFJlbmRlclJlZ2lvbiogcmVnaW9uKCkgY29u
c3QgeyByZXR1cm4gbV9yZWdpb247IH0KQEAgLTEwMCw3ICsxMDAsOCBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9pc1JlY3RpbGluZWFyOwogfTsKIAotY2xhc3MgSGl0VGVzdFJlc3VsdCA6IHB1Ymxp
YyBIaXRUZXN0TG9jYXRpb24geworLy8gRklYTUU6IEhpdFRlc3RSZXN1bHQgc2hvdWxkIG5vdCBi
ZSBhIEhpdFRlc3RMb2NhdGlvbiwgYnV0IGluc3RlYWQgaGF2ZSBhIEhpdFRlc3RMb2NhdGlvbi4g
U2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDE1OTAKK2NsYXNz
IEhpdFRlc3RSZXN1bHQgOiBwcm90ZWN0ZWQgSGl0VGVzdExvY2F0aW9uIHsKIHB1YmxpYzoKICAg
ICB0eXBlZGVmIExpc3RIYXNoU2V0PFJlZlB0cjxOb2RlPiA+IE5vZGVTZXQ7CiAKQEAgLTExNSwx
OCArMTE2LDMzIEBAIHB1YmxpYzoKIAogICAgIE5vZGUqIGlubmVyTm9kZSgpIGNvbnN0IHsgcmV0
dXJuIG1faW5uZXJOb2RlLmdldCgpOyB9CiAgICAgTm9kZSogaW5uZXJOb25TaGFyZWROb2RlKCkg
Y29uc3QgeyByZXR1cm4gbV9pbm5lck5vblNoYXJlZE5vZGUuZ2V0KCk7IH0KLSAgICBMYXlvdXRQ
b2ludCBsb2NhbFBvaW50KCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbFBvaW50OyB9CiAgICAgRWxl
bWVudCogVVJMRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1faW5uZXJVUkxFbGVtZW50LmdldCgp
OyB9CiAgICAgU2Nyb2xsYmFyKiBzY3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGJh
ci5nZXQoKTsgfQogICAgIGJvb2wgaXNPdmVyV2lkZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9pc092
ZXJXaWRnZXQ7IH0KIAorICAgIC8vIEZvcndhcmRlZCBmcm9tIEhpdFRlc3RMb2NhdGlvbgorICAg
IGJvb2wgaXNSZWN0QmFzZWRUZXN0KCkgY29uc3QgeyByZXR1cm4gSGl0VGVzdExvY2F0aW9uOjpp
c1JlY3RCYXNlZFRlc3QoKTsgfQorCisgICAgLy8gVGhlIGhpdC10ZXN0ZWQgcG9pbnQgaW4gdGhl
IGNvb3JkaW5hdGVzIG9mIHRoZSBtYWluIGZyYW1lLgorICAgIGNvbnN0IExheW91dFBvaW50JiBw
b2ludEluTWFpbkZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9wb2ludEluTWFpbkZyYW1lOyB9Cisg
ICAgSW50UG9pbnQgcm91bmRlZFBvaW50SW5NYWluRnJhbWUoKSBjb25zdCB7IHJldHVybiByb3Vu
ZGVkSW50UG9pbnQocG9pbnRJbk1haW5GcmFtZSgpKTsgfQorICAgIHZvaWQgc2V0UG9pbnRJbk1h
aW5GcmFtZShjb25zdCBMYXlvdXRQb2ludCYgcCkgeyBtX3BvaW50SW5NYWluRnJhbWUgPSBwOyB9
CisKKyAgICAvLyBUaGUgaGl0LXRlc3RlZCBwb2ludCBpbiB0aGUgY29vcmRpbmF0ZXMgb2YgdGhl
IGlubmVyIGZyYW1lLCB0aGUgZnJhbWUgY29udGFpbmluZyBpbm5lck5vZGUuCisgICAgY29uc3Qg
TGF5b3V0UG9pbnQmIHBvaW50SW5Jbm5lckZyYW1lKCkgY29uc3QgeyByZXR1cm4gSGl0VGVzdExv
Y2F0aW9uOjpwb2ludCgpOyB9CisgICAgSW50UG9pbnQgcm91bmRlZFBvaW50SW5Jbm5lckZyYW1l
KCkgY29uc3QgeyByZXR1cm4gcm91bmRlZEludFBvaW50KHBvaW50SW5Jbm5lckZyYW1lKCkpOyB9
CisgICAgRnJhbWUqIGlubmVyRnJhbWUoKSBjb25zdDsKKworICAgIC8vIFRoZSBoaXQtdGVzdGVk
IHBvaW50IGluIHRoZSBjb29yZGluYXRlcyBvZiB0aGUgaW5uZXIgbm9kZS4KKyAgICBjb25zdCBM
YXlvdXRQb2ludCYgbG9jYWxQb2ludCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxQb2ludDsgfQor
ICAgIHZvaWQgc2V0TG9jYWxQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcCkgeyBtX2xvY2FsUG9p
bnQgPSBwOyB9CisKICAgICB2b2lkIHNldFRvTm9uU2hhZG93QW5jZXN0b3IoKTsKIAogICAgIGNv
bnN0IEhpdFRlc3RMb2NhdGlvbiYgaGl0VGVzdExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gKnRo
aXM7IH0KIAogICAgIHZvaWQgc2V0SW5uZXJOb2RlKE5vZGUqKTsKICAgICB2b2lkIHNldElubmVy
Tm9uU2hhcmVkTm9kZShOb2RlKik7Ci0gICAgdm9pZCBzZXRMb2NhbFBvaW50KGNvbnN0IExheW91
dFBvaW50JiBwKSB7IG1fbG9jYWxQb2ludCA9IHA7IH0KICAgICB2b2lkIHNldFVSTEVsZW1lbnQo
RWxlbWVudCopOwogICAgIHZvaWQgc2V0U2Nyb2xsYmFyKFNjcm9sbGJhciopOwogICAgIHZvaWQg
c2V0SXNPdmVyV2lkZ2V0KGJvb2wgYikgeyBtX2lzT3ZlcldpZGdldCA9IGI7IH0KQEAgLTE4NSw2
ICsyMDEsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPE5vZGU+IG1faW5uZXJOb2RlOwogICAg
IFJlZlB0cjxOb2RlPiBtX2lubmVyTm9uU2hhcmVkTm9kZTsKKyAgICBMYXlvdXRQb2ludCBtX3Bv
aW50SW5NYWluRnJhbWU7IC8vIFRoZSBoaXQtdGVzdGVkIHBvaW50IGluIG1haW4tZnJhbWUgY29v
cmRpbmF0ZXMuCiAgICAgTGF5b3V0UG9pbnQgbV9sb2NhbFBvaW50OyAvLyBBIHBvaW50IGluIHRo
ZSBsb2NhbCBjb29yZGluYXRlIHNwYWNlIG9mIG1faW5uZXJOb25TaGFyZWROb2RlJ3MgcmVuZGVy
ZXIuIEFsbG93cyB1cyB0byBlZmZpY2llbnRseQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gZGV0ZXJtaW5lIHdoZXJlIGluc2lkZSB0aGUgcmVuZGVyZXIgd2UgaGl0IG9uIHN1YnNl
cXVlbnQgb3BlcmF0aW9ucy4KICAgICBSZWZQdHI8RWxlbWVudD4gbV9pbm5lclVSTEVsZW1lbnQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCBmY2Q1MmZkMTU2
MDAwMjk0MjlmZjI3ZTBmM2I4M2IyZDliN2Y2MmNhLi5hN2Q5M2UyZGJmOGRiNTgyZWY5NzY1MGMy
MTU0NWYxNGE0NTliNGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5j
cHAKQEAgLTM1NDgsNyArMzU0OCw3IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OmhpdFRlc3QoY29uc3Qg
SGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYKICAgICAgICAg
Ly8gcmV0dXJuIG91cnNlbHZlcy4gV2UgZG8gdGhpcyBzbyBtb3VzZSBldmVudHMgY29udGludWUg
Z2V0dGluZyBkZWxpdmVyZWQgYWZ0ZXIgYSBkcmFnIGhhcyAKICAgICAgICAgLy8gZXhpdGVkIHRo
ZSBXZWJWaWV3LCBhbmQgc28gaGl0IHRlc3Rpbmcgb3ZlciBhIHNjcm9sbGJhciBoaXRzIHRoZSBj
b250ZW50IGRvY3VtZW50LgogICAgICAgICBpZiAoKHJlcXVlc3QuYWN0aXZlKCkgfHwgcmVxdWVz
dC5yZWxlYXNlKCkpICYmIGlzUm9vdExheWVyKCkpIHsKLSAgICAgICAgICAgIHJlbmRlcmVyKCkt
PnVwZGF0ZUhpdFRlc3RSZXN1bHQocmVzdWx0LCB0b1JlbmRlclZpZXcocmVuZGVyZXIoKSktPmZs
aXBGb3JXcml0aW5nTW9kZShyZXN1bHQucG9pbnQoKSkpOworICAgICAgICAgICAgcmVuZGVyZXIo
KS0+dXBkYXRlSGl0VGVzdFJlc3VsdChyZXN1bHQsIHRvUmVuZGVyVmlldyhyZW5kZXJlcigpKS0+
ZmxpcEZvcldyaXRpbmdNb2RlKGhpdFRlc3RMb2NhdGlvbi5wb2ludCgpKSk7CiAgICAgICAgICAg
ICBpbnNpZGVMYXllciA9IHRoaXM7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCmluZGV4IDk0OTU5MzgwYTYwNmQ5
ZDEyZTdiZjk3NTUyYWZjNGJhNmNjZDliZTYuLjllMzdkNzVlODI2NTliY2I0YTkzMWZjMDI4NDA4
ODg3NzI1NWRhMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9t
ZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNs
aWVudEltcGwuY3BwCkBAIC01OTAsNyArNTkwLDcgQEAgdm9pZCBDaHJvbWVDbGllbnRJbXBsOjpt
b3VzZURpZE1vdmVPdmVyRWxlbWVudCgKICAgICAgICAgICAgIFdpZGdldCogd2lkZ2V0ID0gdG9S
ZW5kZXJXaWRnZXQob2JqZWN0KS0+d2lkZ2V0KCk7CiAgICAgICAgICAgICBpZiAod2lkZ2V0ICYm
IHdpZGdldC0+aXNQbHVnaW5Db250YWluZXIoKSkgewogICAgICAgICAgICAgICAgIFdlYlBsdWdp
bkNvbnRhaW5lckltcGwqIHBsdWdpbiA9IHN0YXRpY19jYXN0PFdlYlBsdWdpbkNvbnRhaW5lcklt
cGwqPih3aWRnZXQpOwotICAgICAgICAgICAgICAgIHVybCA9IHBsdWdpbi0+cGx1Z2luKCktPmxp
bmtBdFBvc2l0aW9uKHJlc3VsdC5yb3VuZGVkUG9pbnQoKSk7CisgICAgICAgICAgICAgICAgdXJs
ID0gcGx1Z2luLT5wbHVnaW4oKS0+bGlua0F0UG9zaXRpb24ocmVzdWx0LnJvdW5kZWRQb2ludElu
SW5uZXJGcmFtZSgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0NvbnRleHRNZW51Q2xpZW50SW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Db250ZXh0TWVudUNsaWVudEltcGwuY3BwCmlu
ZGV4IGFkMTE2MDkwY2RlYWFlNjNkMTI2MTY0ZTFkNzBjYjAzNzcyMjI4YTQuLjcxODJlODAyMTFh
MzBmYzE4YzI1ODhkNmVmNmQ1ZmQ2YjczNmIxYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0NvbnRleHRNZW51Q2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvQ29udGV4dE1lbnVDbGllbnRJbXBsLmNwcApAQCAtMTIwLDcgKzEyMCw3
IEBAIHN0YXRpYyBTdHJpbmcgc2VsZWN0TWlzc3BlbGxlZFdvcmQoY29uc3QgQ29udGV4dE1lbnUq
IGRlZmF1bHRNZW51LCBGcmFtZSogc2VsZWN0CiAKICAgICAvLyBTZWxlY3Rpb24gaXMgZW1wdHks
IHNvIGNoYW5nZSB0aGUgc2VsZWN0aW9uIHRvIHRoZSB3b3JkIHVuZGVyIHRoZSBjdXJzb3IuCiAg
ICAgSGl0VGVzdFJlc3VsdCBoaXRUZXN0UmVzdWx0ID0gc2VsZWN0ZWRGcmFtZS0+ZXZlbnRIYW5k
bGVyKCktPgotICAgICAgICBoaXRUZXN0UmVzdWx0QXRQb2ludChzZWxlY3RlZEZyYW1lLT5wYWdl
KCktPmNvbnRleHRNZW51Q29udHJvbGxlcigpLT5oaXRUZXN0UmVzdWx0KCkucG9pbnQoKSwgdHJ1
ZSk7CisgICAgICAgIGhpdFRlc3RSZXN1bHRBdFBvaW50KHNlbGVjdGVkRnJhbWUtPnBhZ2UoKS0+
Y29udGV4dE1lbnVDb250cm9sbGVyKCktPmhpdFRlc3RSZXN1bHQoKS5wb2ludEluSW5uZXJGcmFt
ZSgpLCB0cnVlKTsKICAgICBOb2RlKiBpbm5lck5vZGUgPSBoaXRUZXN0UmVzdWx0LmlubmVyTm9k
ZSgpOwogICAgIFZpc2libGVQb3NpdGlvbiBwb3MoaW5uZXJOb2RlLT5yZW5kZXJlcigpLT5wb3Np
dGlvbkZvclBvaW50KAogICAgICAgICBoaXRUZXN0UmVzdWx0LmxvY2FsUG9pbnQoKSkpOwpAQCAt
MTU1LDEwICsxNTUsMTAgQEAgUGxhdGZvcm1NZW51RGVzY3JpcHRpb24gQ29udGV4dE1lbnVDbGll
bnRJbXBsOjpnZXRDdXN0b21NZW51RnJvbURlZmF1bHRJdGVtcygKICAgICAgICAgcmV0dXJuIDA7
CiAKICAgICBIaXRUZXN0UmVzdWx0IHIgPSBtX3dlYlZpZXctPnBhZ2UoKS0+Y29udGV4dE1lbnVD
b250cm9sbGVyKCktPmhpdFRlc3RSZXN1bHQoKTsKLSAgICBGcmFtZSogc2VsZWN0ZWRGcmFtZSA9
IHIuaW5uZXJOb25TaGFyZWROb2RlKCktPmRvY3VtZW50KCktPmZyYW1lKCk7CisgICAgRnJhbWUq
IHNlbGVjdGVkRnJhbWUgPSByLmlubmVyRnJhbWUoKTsKIAogICAgIFdlYkNvbnRleHRNZW51RGF0
YSBkYXRhOwotICAgIGRhdGEubW91c2VQb3NpdGlvbiA9IHNlbGVjdGVkRnJhbWUtPnZpZXcoKS0+
Y29udGVudHNUb1dpbmRvdyhyLnJvdW5kZWRQb2ludCgpKTsKKyAgICBkYXRhLm1vdXNlUG9zaXRp
b24gPSBzZWxlY3RlZEZyYW1lLT52aWV3KCktPmNvbnRlbnRzVG9XaW5kb3coci5yb3VuZGVkUG9p
bnRJbklubmVyRnJhbWUoKSk7CiAKICAgICAvLyBDb21wdXRlIGVkaXQgZmxhZ3MuCiAgICAgZGF0
YS5lZGl0RmxhZ3MgPSBXZWJDb250ZXh0TWVudURhdGE6OkNhbkRvTm9uZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCmluZGV4IDE5MzY0NzZmM2FlMWEyMDE0
MDMzZGMzZmRiN2UwY2FiNWNhOGM3ZjIuLmRlMTc5M2E2YTY4MDIxYWRmMzk5MmMzMmQzZjVkNDJi
NDMzODcwYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1l
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNw
cApAQCAtMTIwMiw3ICsxMjAyLDcgQEAgc2l6ZV90IFdlYkZyYW1lSW1wbDo6Y2hhcmFjdGVySW5k
ZXhGb3JQb2ludChjb25zdCBXZWJQb2ludCYgd2ViUG9pbnQpIGNvbnN0CiAKICAgICBJbnRQb2lu
dCBwb2ludCA9IGZyYW1lKCktPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyh3ZWJQb2ludCk7CiAg
ICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBmcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVz
dFJlc3VsdEF0UG9pbnQocG9pbnQsIGZhbHNlKTsKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0g
ZnJhbWUoKS0+cmFuZ2VGb3JQb2ludChyZXN1bHQucm91bmRlZFBvaW50KCkpOworICAgIFJlZlB0
cjxSYW5nZT4gcmFuZ2UgPSBmcmFtZSgpLT5yYW5nZUZvclBvaW50KHJlc3VsdC5yb3VuZGVkUG9p
bnRJbklubmVyRnJhbWUoKSk7CiAgICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuIG5vdEZv
dW5kOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcCBi
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCmluZGV4IDczOGE5MzkxOGYzMDE5
MWI1MjZjNmZmMThiMjk1YWZjOWI3YjlhN2QuLjczNTY5NGIwODgxNDQ3YmFiNDBmZjVjMDk4NzEw
NzdlYjkyMDZiMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCkBAIC03MDIsOCAr
NzAyLDggQEAgRXdrX0hpdF9UZXN0KiBld2tfZnJhbWVfaGl0X3Rlc3RfbmV3KGNvbnN0IEV2YXNf
T2JqZWN0KiBld2tGcmFtZSwgaW50IHgsIGludCB5KQogICAgICAgICByZXR1cm4gMDsKIAogICAg
IEV3a19IaXRfVGVzdCogaGl0VGVzdCA9IG5ldyBFd2tfSGl0X1Rlc3Q7Ci0gICAgaGl0VGVzdC0+
eCA9IHJlc3VsdC5wb2ludCgpLngoKTsKLSAgICBoaXRUZXN0LT55ID0gcmVzdWx0LnBvaW50KCku
eSgpOworICAgIGhpdFRlc3QtPnggPSByZXN1bHQucG9pbnRJbk1haW5GcmFtZSgpLngoKTsKKyAg
ICBoaXRUZXN0LT55ID0gcmVzdWx0LnBvaW50SW5NYWluRnJhbWUoKS55KCk7CiAjaWYgMAogICAg
IC8vIEZJWE1FCiAgICAgaGl0VGVzdC0+Ym91bmRpbmdfYm94LnggPSByZXN1bHQuYm91bmRpbmdC
b3goKS54KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0aGl0
dGVzdHJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0aGl0dGVzdHJl
c3VsdC5jcHAKaW5kZXggMWE5NDM0YWYwZjVkY2FlM2RiMTU4MDM0YjQ2NDMyMGI4NjZjMWRjYS4u
YTNkMGU4NGE2ZmM3YzkzNGJmM2JkMzQ4YzNjMjRiM2M1MmY5ZTIwOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGhpdHRlc3RyZXN1bHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRoaXR0ZXN0cmVzdWx0LmNwcApAQCAtMjg4LDcgKzI4
OCw3IEBAIFdlYktpdEhpdFRlc3RSZXN1bHQqIGtpdChjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVz
dWx0JiByZXN1bHQpCiAgICAgR093blB0cjxjaGFyPiBpbWFnZVVSSSgwKTsKICAgICBHT3duUHRy
PGNoYXI+IG1lZGlhVVJJKDApOwogICAgIFdlYktpdERPTU5vZGUqIG5vZGUgPSAwOwotICAgIFdl
YkNvcmU6OkZyYW1lKiB0YXJnZXRGcmFtZTsKKyAgICBXZWJDb3JlOjpGcmFtZSogaW5uZXJGcmFt
ZTsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBwb2ludDsKIAogICAgIGlmICghcmVzdWx0LmFic29s
dXRlTGlua1VSTCgpLmlzRW1wdHkoKSkgewpAQCAtMzE1LDEyICszMTUsMTIgQEAgV2ViS2l0SGl0
VGVzdFJlc3VsdCoga2l0KGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQmIHJlc3VsdCkKICAg
ICBpZiAocmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpKQogICAgICAgICBub2RlID0ga2l0KHJl
c3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKSk7CiAKLSAgICB0YXJnZXRGcmFtZSA9IHJlc3VsdC50
YXJnZXRGcmFtZSgpOwotICAgIGlmICh0YXJnZXRGcmFtZSAmJiB0YXJnZXRGcmFtZS0+dmlldygp
KSB7CisgICAgaW5uZXJGcmFtZSA9IHJlc3VsdC5pbm5lckZyYW1lKCk7CisgICAgaWYgKGlubmVy
RnJhbWUgJiYgaW5uZXJGcmFtZS0+dmlldygpKSB7CiAgICAgICAgIC8vIENvbnZlcnQgZG9jdW1l
bnQgY29vcmRzIHRvIHdpZGdldCBjb29yZHMuCi0gICAgICAgIHBvaW50ID0gdGFyZ2V0RnJhbWUt
PnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhyZXN1bHQucm91bmRlZFBvaW50KCkpOworICAgICAg
ICBwb2ludCA9IGlubmVyRnJhbWUtPnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhyZXN1bHQucm91
bmRlZFBvaW50SW5Jbm5lckZyYW1lKCkpOwogICAgIH0gZWxzZQotICAgICAgICBwb2ludCA9IHJl
c3VsdC5yb3VuZGVkUG9pbnQoKTsKKyAgICAgICAgcG9pbnQgPSByZXN1bHQucm91bmRlZFBvaW50
SW5NYWluRnJhbWUoKTsKIAogICAgIHJldHVybiBXRUJLSVRfSElUX1RFU1RfUkVTVUxUKGdfb2Jq
ZWN0X25ldyhXRUJLSVRfVFlQRV9ISVRfVEVTVF9SRVNVTFQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5rLXVyaSIsIGxpbmtVUkkuZ2V0KCksCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVu
dUNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRN
ZW51Q2xpZW50Lm1tCmluZGV4IGUzMTMxMzYwMzZmNzhkNjAxNzIzMDY5MmVkOGM2NzkwOGU5ZDQz
ZTAuLjEwMjc4OTAxMDljMDQyMGEzY2NhYjY0MzQwMDRmYzJlZjA3ZjQzYTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xp
ZW50Lm1tCkBAIC0zNTYsMTcgKzM1NiwxNCBAQCB2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50Ojpz
aG93Q29udGV4dE1lbnUoKQogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuOwogICAgIENv
bnRleHRNZW51Q29udHJvbGxlciogY29udHJvbGxlciA9IHBhZ2UtPmNvbnRleHRNZW51Q29udHJv
bGxlcigpOwotICAgIE5vZGUqIG5vZGUgPSBjb250cm9sbGVyLT5oaXRUZXN0UmVzdWx0KCkuaW5u
ZXJOb25TaGFyZWROb2RlKCk7Ci0gICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm47Ci0gICAg
RnJhbWUqIGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsKKyAgICBGcmFtZSogZnJh
bWUgPSBjb250cm9sbGVyLT5oaXRUZXN0UmVzdWx0KCkuaW5uZXJGcmFtZSgpOwogICAgIGlmICgh
ZnJhbWUpCiAgICAgICAgIHJldHVybjsKICAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IGZyYW1l
LT52aWV3KCk7CiAgICAgaWYgKCFmcmFtZVZpZXcpCiAgICAgICAgIHJldHVybjsKIAotICAgIElu
dFBvaW50IHBvaW50ID0gZnJhbWVWaWV3LT5jb250ZW50c1RvV2luZG93KGNvbnRyb2xsZXItPmhp
dFRlc3RSZXN1bHQoKS5yb3VuZGVkUG9pbnQoKSk7CisgICAgSW50UG9pbnQgcG9pbnQgPSBmcmFt
ZVZpZXctPmNvbnRlbnRzVG9XaW5kb3coY29udHJvbGxlci0+aGl0VGVzdFJlc3VsdCgpLnJvdW5k
ZWRQb2ludEluSW5uZXJGcmFtZSgpKTsKICAgICBOU1ZpZXcqIHZpZXcgPSBmcmFtZVZpZXctPmRv
Y3VtZW50VmlldygpOwogICAgIE5TUG9pbnQgbnNTY3JlZW5Qb2ludCA9IFt2aWV3IGNvbnZlcnRQ
b2ludDpwb2ludCB0b1ZpZXc6bmlsXTsKICAgICAvLyBTaG93IHRoZSBjb250ZXh0dWFsIG1lbnUg
Zm9yIHRoaXMgZXZlbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZnJh
bWUuY3BwIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcAppbmRleCAwYWNjZDMz
NjJkZDY4NzM0Y2ZkZjIxMzg1ZWMzODA2NGYyYzEzMWJmLi5mMTVhYWYzMzhhZTNkZDg4NWNhOGFk
YTJlZjNhY2U3ZTRlZmJlMDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vi
ZnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAKQEAgLTE1
OTgsNyArMTU5OCw3IEBAIFFXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZTo6UVdlYkhpdFRlc3RSZXN1
bHRQcml2YXRlKGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQKIHsKICAgICBpZiAoIWhpdFRl
c3QuaW5uZXJOb2RlKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBwb3MgPSBoaXRUZXN0LnJvdW5k
ZWRQb2ludCgpOworICAgIHBvcyA9IGhpdFRlc3Qucm91bmRlZFBvaW50SW5NYWluRnJhbWUoKTsK
ICAgICBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uIGRpcjsKICAgICB0aXRsZSA9IGhpdFRlc3QudGl0
bGUoZGlyKTsKICAgICBsaW5rVGV4dCA9IGhpdFRlc3QudGV4dENvbnRlbnQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQv
QXBpL3F3ZWJwYWdlLmNwcAppbmRleCA1YWFjMDZmODExYzdjNWE2M2MxYzhhNGY4M2E1MGMwNGZk
NDIzNjczLi44MzkxYjFhOTdlNTIxMzM1ZjEyOTUxODY3NTMwOTc3MTVlNmMzOTEyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9xdC9BcGkvcXdlYnBhZ2UuY3BwCkBAIC0xNTg5LDcgKzE1ODksNyBAQCBJbnRQb2ludCBRV2Vi
UGFnZVByaXZhdGU6OlRvdWNoQWRqdXN0ZXI6OmZpbmRDYW5kaWRhdGVQb2ludEZvclRvdWNoKGNv
bnN0IEludFBvaQogICAgIEZyYW1lVmlldyogdmlldyA9IGRvY3VtZW50LT5mcmFtZSgpLT52aWV3
KCk7CiAKICAgICAvLyBUb3VjaCByZWN0IGluIGNvbnRlbnRzIGNvb3JkaW5hdGVzLgotICAgIElu
dFJlY3QgdG91Y2hSZWN0KEhpdFRlc3RSZXN1bHQ6OnJlY3RGb3JQb2ludCh2aWV3LT53aW5kb3dU
b0NvbnRlbnRzKEludFBvaW50KHgsIHkpKSwgbV90b3BQYWRkaW5nLCBtX3JpZ2h0UGFkZGluZywg
bV9ib3R0b21QYWRkaW5nLCBtX2xlZnRQYWRkaW5nKSk7CisgICAgSW50UmVjdCB0b3VjaFJlY3Qo
SGl0VGVzdExvY2F0aW9uOjpyZWN0Rm9yUG9pbnQodmlldy0+d2luZG93VG9Db250ZW50cyhJbnRQ
b2ludCh4LCB5KSksIG1fdG9wUGFkZGluZywgbV9yaWdodFBhZGRpbmcsIG1fYm90dG9tUGFkZGlu
ZywgbV9sZWZ0UGFkZGluZykpOwogCiAgICAgLy8gSXRlcmF0ZSBvdmVyIHRoZSBsaXN0IG9mIG5v
ZGVzIGhpdCBsb29raW5nIGZvciB0aGUgb25lIHdob3NlIGJvdW5kaW5nIGFyZWEKICAgICAvLyBo
YXMgbGFyZ2VzdCBpbnRlcnNlY3Rpb24gd2l0aCB0aGUgdG91Y2ggYXJlYSAocG9pbnQgKyBwYWRk
aW5nKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwIGIvU291cmNl
L1dlYktpdC93aW4vV2ViVmlldy5jcHAKaW5kZXggZGQ3MDA4ZWIzYTRhN2RjNjgwZGQyZjBmMjZm
ODcxODAwYWRjMjFlZi4uNjQwODJkNTQ4OTQyNDVmYjI3MTkwOTIwNTc0ZmJlN2Q2YjljNGIzZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC93aW4vV2ViVmlldy5jcHAKQEAgLTEzNDksMTEgKzEzNDksNyBAQCBib29sIFdlYlZpZXc6
OmhhbmRsZUNvbnRleHRNZW51RXZlbnQoV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKICAg
ICBpZiAoIWNvcmVNZW51KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBOb2RlKiBub2Rl
ID0gY29udGV4dE1lbnVDb250cm9sbGVyLT5oaXRUZXN0UmVzdWx0KCkuaW5uZXJOb25TaGFyZWRO
b2RlKCk7Ci0gICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBGcmFt
ZSogZnJhbWUgPSBub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpOworICAgIEZyYW1lKiBmcmFtZSA9
IGNvbnRleHRNZW51Q29udHJvbGxlci0+aGl0VGVzdFJlc3VsdCgpLmlubmVyRnJhbWUoKTsKICAg
ICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTEzNjEsNyArMTM1Nyw3
IEBAIGJvb2wgV2ViVmlldzo6aGFuZGxlQ29udGV4dE1lbnVFdmVudChXUEFSQU0gd1BhcmFtLCBM
UEFSQU0gbFBhcmFtKQogICAgIGlmICghdmlldykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgUE9JTlQgcG9pbnQodmlldy0+Y29udGVudHNUb1dpbmRvdyhjb250ZXh0TWVudUNvbnRyb2xs
ZXItPmhpdFRlc3RSZXN1bHQoKS5yb3VuZGVkUG9pbnQoKSkpOworICAgIFBPSU5UIHBvaW50KHZp
ZXctPmNvbnRlbnRzVG9XaW5kb3coY29udGV4dE1lbnVDb250cm9sbGVyLT5oaXRUZXN0UmVzdWx0
KCkucm91bmRlZFBvaW50SW5Jbm5lckZyYW1lKCkpKTsKIAogICAgIC8vIFRyYW5zbGF0ZSB0aGUg
cG9pbnQgdG8gc2NyZWVuIGNvb3JkaW5hdGVzCiAgICAgaWYgKCE6OkNsaWVudFRvU2NyZWVuKG1f
dmlld1dpbmRvdywgJnBvaW50KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJDb250ZXh0TWVudS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViQ29udGV4dE1lbnUuY3BwCmluZGV4IDNhOTFkOTBiNzU1ZTY4ZDdkNTM1OTc5
M2FjZTBmZTM3NWFlNjg2MTAuLmQ0MzFmYmUwOGQxZDI4MTRkNmFkMjNjOGQ5MjgyNmJmOGM3ZjM0
MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb250
ZXh0TWVudS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNv
bnRleHRNZW51LmNwcApAQCAtNTksMTAgKzU5LDcgQEAgdm9pZCBXZWJDb250ZXh0TWVudTo6c2hv
dygpCiAgICAgQ29udGV4dE1lbnUqIG1lbnUgPSBjb250cm9sbGVyLT5jb250ZXh0TWVudSgpOwog
ICAgIGlmICghbWVudSkKICAgICAgICAgcmV0dXJuOwotICAgIE5vZGUqIG5vZGUgPSBjb250cm9s
bGVyLT5oaXRUZXN0UmVzdWx0KCkuaW5uZXJOb25TaGFyZWROb2RlKCk7Ci0gICAgaWYgKCFub2Rl
KQotICAgICAgICByZXR1cm47Ci0gICAgRnJhbWUqIGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS0+
ZnJhbWUoKTsKKyAgICBGcmFtZSogZnJhbWUgPSBjb250cm9sbGVyLT5oaXRUZXN0UmVzdWx0KCku
aW5uZXJGcmFtZSgpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKICAgICBGcmFt
ZVZpZXcqIHZpZXcgPSBmcmFtZS0+dmlldygpOwpAQCAtODYsNyArODMsNyBAQCB2b2lkIFdlYkNv
bnRleHRNZW51OjpzaG93KCkKIAogICAgIC8vIE1hcmsgdGhlIFdlYlBhZ2UgaGFzIGhhdmluZyBh
IHNob3duIGNvbnRleHQgbWVudSB0aGVuIG5vdGlmeSB0aGUgVUlQcm9jZXNzLgogICAgIG1fcGFn
ZS0+Y29udGV4dE1lbnVTaG93aW5nKCk7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OlNob3dDb250ZXh0TWVudSh2aWV3LT5jb250ZW50c1RvV2luZG93KGNvbnRyb2xs
ZXItPmhpdFRlc3RSZXN1bHQoKS5yb3VuZGVkUG9pbnQoKSksIHdlYkhpdFRlc3RSZXN1bHREYXRh
LCBwcm9wb3NlZE1lbnUsIEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRh
LmdldCgpKSkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaG93
Q29udGV4dE1lbnUodmlldy0+Y29udGVudHNUb1dpbmRvdyhjb250cm9sbGVyLT5oaXRUZXN0UmVz
dWx0KCkucm91bmRlZFBvaW50SW5Jbm5lckZyYW1lKCkpLCB3ZWJIaXRUZXN0UmVzdWx0RGF0YSwg
cHJvcG9zZWRNZW51LCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5n
ZXQoKSkpKTsKIH0KIAogdm9pZCBXZWJDb250ZXh0TWVudTo6aXRlbVNlbGVjdGVkKGNvbnN0IFdl
YkNvbnRleHRNZW51SXRlbURhdGEmIGl0ZW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggYjUyNGRhZjBjZDgyZGY3ZWU5
MmRhNjc3NWZkZjdjMjc4NGYyYTQ1Yi4uMmFjMGVjNWVkYzM3YTk3Zjg1NWNkNzAwMWExNzQwNGQ0
MTZhZDcxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvV2ViUGFnZU1hYy5tbQpAQCAtMzg0LDkgKzM4NCw5IEBAIHZvaWQgV2ViUGFnZTo6Y2hhcmFj
dGVySW5kZXhGb3JQb2ludChJbnRQb2ludCBwb2ludCwgdWludDY0X3QmIGluZGV4KQogICAgICAg
ICByZXR1cm47CiAKICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGZyYW1lLT5ldmVudEhhbmRs
ZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQocG9pbnQsIGZhbHNlKTsKLSAgICBmcmFtZSA9IHJl
c3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKSA/IHJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKS0+
ZG9jdW1lbnQoKS0+ZnJhbWUoKSA6IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRP
ck1haW5GcmFtZSgpOworICAgIGZyYW1lID0gcmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpID8g
cmVzdWx0LmlubmVyRnJhbWUoKSA6IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRP
ck1haW5GcmFtZSgpOwogICAgIAotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBmcmFtZS0+cmFu
Z2VGb3JQb2ludChyZXN1bHQucm91bmRlZFBvaW50KCkpOworICAgIFJlZlB0cjxSYW5nZT4gcmFu
Z2UgPSBmcmFtZS0+cmFuZ2VGb3JQb2ludChyZXN1bHQucm91bmRlZFBvaW50SW5Jbm5lckZyYW1l
KCkpOwogICAgIGlmICghcmFuZ2UpCiAgICAgICAgIHJldHVybjsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173611</attachid>
            <date>2012-11-12 03:44:40 -0800</date>
            <delta_ts>2012-11-19 07:15:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98139-20121112124218.patch</filename>
            <type>text/plain</type>
            <size>30093</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzODc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGNiNjVhMDIwYzUyY2Uw
NTUxMDA0MWU5NTZlNTQ4YWZhZGQ0NzU4Mi4uMThiMzQ2ZmU3NjQ4M2MyYmExMjQyZjQ2YzczMTA4
YmNmZGZhMDM5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ1IEBACiAyMDEyLTExLTEyICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgogCisgICAgICAgIERp
c2FtYmlndWF0ZSBpbm5lck5vZGVGcmFtZVBvaW50IGFuZCBtYWluRnJhbWVQb2ludAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgxMzkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTcGxpdHMgdGhlIHBvaW50
KCkgbWV0aG9kIGluIEhpdFRlc3RSZXN1bHQgaW50byB0d28sIGlubmVyTm9kZUZyYW1lUG9pbnQg
YW5kIG1haW5GcmFtZVBvaW50KCkuCisgICAgICAgIFRvIGRvIHRoaXMgSGl0VGVzdFJlc3VsdCBu
byBsb25nZXIgaW5oZXJpdHMgcHVibGljYWxseSBmcm9tIEhpdFRlc3RMb2NhdGlvbiwgd2hpY2gg
c2hvdWxkIGFsc28KKyAgICAgICAgaGVscCB0byBsYXRlciBzZXBhcmF0ZSB0aGUgdHdvIGNsYXNz
ZXMgY29tcGxldGVseS4KKworICAgICAgICBNYW55IG9mIHRoZSBjYWxsLXNpdGVzIG9mIGhpdFRl
c3RSZXN1bHRBdFBvaW50IGNvbmZ1c2VzIHdoaWNoIGNvb3JkaW5hdGVzIHRoZSBwb2ludCBpcyBp
bi4KKyAgICAgICAgU29tZSwgYnV0IG5vdCBhbGwgY2FsbC1zaXRlcyBoYXZlIGJlZW4gYWxsIGNs
ZWFuZWQgdXAgaW4gdGhpcyBwYXRjaCwgYW5kIHRoZXkgc2hvdWxkIGJlCisgICAgICAgIGF1ZGl0
ZWQgYnkgdGhlIGluZGl2aWR1YWwgcG9ydHMuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoK
KyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
Om5vZGVzRnJvbVJlY3QpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZXZlbnRNYXlTdGFydERyYWcpOgorICAgICAgICAo
V2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoaXRUZXN0UmVzdWx0QXRQb2ludCk6CisgICAgICAgICog
cmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJl
c3VsdDo6SGl0VGVzdFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0Ojpv
cGVyYXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6aW5uZXJOb2RlRnJh
bWUpOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6YXBwZW5kKToKKyAgICAgICAg
KiByZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdExv
Y2F0aW9uOjpwb2ludCk6CisgICAgICAgIChIaXRUZXN0UmVzdWx0KToKKyAgICAgICAgKFdlYkNv
cmU6OkhpdFRlc3RSZXN1bHQ6OmlzUmVjdEJhc2VkVGVzdCk6CisgICAgICAgIChXZWJDb3JlOjpI
aXRUZXN0UmVzdWx0Ojpwb2ludEluTWFpbkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRl
c3RSZXN1bHQ6OnJvdW5kZWRQb2ludEluTWFpbkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Okhp
dFRlc3RSZXN1bHQ6OnNldFBvaW50SW5NYWluRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SGl0
VGVzdFJlc3VsdDo6cG9pbnRJbklubmVyTm9kZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Okhp
dFRlc3RSZXN1bHQ6OnJvdW5kZWRQb2ludEluSW5uZXJOb2RlRnJhbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6SGl0VGVzdFJlc3VsdDo6bG9jYWxQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRU
ZXN0UmVzdWx0OjpzZXRMb2NhbFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmhpdFRlc3QpOgorCisyMDEy
LTExLTEyICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgor
CiAgICAgICAgIGhpdFRlc3RSZXN1bHRBdFBvaW50IGRvZXMgdHdvIGhpdC10ZXN0cyBpZiBjYWxs
ZWQgb24gbm9uIG1haW4gZnJhbWUKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwMTkxNQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDgzYzRl
NjMzMjMxOTRmM2Q1N2Y0ZDBmYTMwNDg3N2UxNzhlNTkxZmEuLjQ3MGY0OThjZjBkOGJlMWYzOGNi
YmExNWI3ODU0NTQ1OTFkMjI0ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTggQEAKKzIwMTItMTEtMTIgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNl
bkBkaWdpYS5jb20+CisKKyAgICAgICAgRGlzYW1iaWd1YXRlIGlubmVyTm9kZUZyYW1lUG9pbnQg
YW5kIG1haW5GcmFtZVBvaW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05ODEzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpD
aHJvbWVDbGllbnRJbXBsOjptb3VzZURpZE1vdmVPdmVyRWxlbWVudCk6CisgICAgICAgICogc3Jj
L0NvbnRleHRNZW51Q2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OnNlbGVjdE1pc3Nw
ZWxsZWRXb3JkKToKKyAgICAgICAgKFdlYktpdDo6Q29udGV4dE1lbnVDbGllbnRJbXBsOjpnZXRD
dXN0b21NZW51RnJvbURlZmF1bHRJdGVtcyk6CisgICAgICAgICogc3JjL1dlYkZyYW1lSW1wbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6Y2hhcmFjdGVySW5kZXhGb3JQb2lu
dCk6CisKIDIwMTItMTEtMDggIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogbW92ZSBmcm9udC1lbmQgbWV0aG9kcyBjYWxsZWQg
ZnJvbSBuYXRpdmUgcGFydCB0byBJbnNwZWN0b3JGcm9udGVuZEFQSQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmlu
ZGV4IGY2MTE3ZGEwM2RkYjUyNDZmMDYzNWJkNmRhYzYzNGYyNDkxZWE4ODcuLjg3MTRiNmYxZGI2
NjVlZDc3OTRhZjBjZmMxZTcxOGZhYWRmZDY1ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNSBAQAorMjAxMi0xMS0xMiAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2Vu
QGRpZ2lhLmNvbT4KKworICAgICAgICBEaXNhbWJpZ3VhdGUgaW5uZXJOb2RlRnJhbWVQb2ludCBh
bmQgbWFpbkZyYW1lUG9pbnQgCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05ODEzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFN3aXRjaCB0byB1c2luZyBtYWluIGZyYW1lIHBvaW50IHNpbmNlIHggYW5kIHkg
YXJlIGRvY3VtZW50ZWQgYXMgYmVpbmcgdGhlIHBvaW50IG9mIHRoZSBoaXQgdGVzdC4KKworICAg
ICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgorICAgICAgICAoZXdrX2ZyYW1lX2hpdF90ZXN0X25l
dyk6CisKIDIwMTItMTEtMDcgIEVtaWwgQSBFa2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQgRUZMIGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCBlYzFk
MGVmYzFhZWY3MzNmZDdhYTE1MTI2ZDQ5NjdhNDY3MWMwODk2Li4zYzIzYjM3OGYyOWUwZjhlODMx
Yjc4ZTQ0MDU2MmFmNWZjZWVhMmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTItMTEtMTIgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5j
b20+CisKKyAgICAgICAgRGlzYW1iaWd1YXRlIGlubmVyTm9kZUZyYW1lUG9pbnQgYW5kIG1haW5G
cmFtZVBvaW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05ODEzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEZpeGVkIGNvbmZ1c2lvbiBvZiB0YXJnZXRGcmFtZSBhbmQgaW5uZXJOb2RlRnJhbWUuIEZ1cnRo
ZXIgY2xlYW4tdXAgaXMgcG9zc2libGUgdGhvdWdoLgorCisgICAgICAgICogd2Via2l0L3dlYmtp
dGhpdHRlc3RyZXN1bHQuY3BwOgorICAgICAgICAoV2ViS2l0OjpraXQpOgorCiAyMDEyLTExLTA1
ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBs
YXllciBib3JkZXJzIHRvIGNsZWFuaW5nIGFwcGVhciBhbmQgZGlzYXBwZWFyIG9uIHN3aXRjaGlu
ZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCmluZGV4IGYwMDVmODU4NmM2OGQwNWQ5ZGY2YWMwZjViMTJlNzhiM2Zm
NDYzYjIuLjMwY2Y5ODc4MzE5MzhmZmRhZmViOGYxMThjYjdmMzU0NjdiNDk1ZTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0xMS0xMiAgQWxsYW4gU2FuZGZlbGQgSmVu
c2VuICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KKworICAgICAgICBEaXNhbWJpZ3VhdGUgaW5u
ZXJOb2RlRnJhbWVQb2ludCBhbmQgbWFpbkZyYW1lUG9pbnQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3dpdGNoIHRvIHVzaW5nIEhpdFRlc3RSZXN1bHQ6
OmlubmVyTm9kZUZyYW1lIGFuZCBIaXRUZXN0UmVzdWx0Ojppbm5lck5vZGVGcmFtZVBvaW50Lgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW06CisgICAg
ICAgIChXZWJDb250ZXh0TWVudUNsaWVudDo6c2hvd0NvbnRleHRNZW51KToKKwogMjAxMi0xMS0w
NyAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIGJ1
aWxkLXdlYmtpdCBkZXBlbmRlbmN5IG9uIEphdmEgU0RLIGZvciBBcHBsZSBNYWMgV2ViS2l0Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZwppbmRleCA4ZmMzNzlhMGEyNWU4ZGRjMGRmNDgyYWQ3OTUxOGFhM2U1MTNiYzM1
Li5jYWVjZDY4ZTBiZjg4MjEyYWQxY2QzYmNiMTNiNTViNTI3ODU1ODE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTExLTEyICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxh
bGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIERpc2FtYmlndWF0ZSBpbm5lck5vZGVG
cmFtZVBvaW50IGFuZCBtYWluRnJhbWVQb2ludAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgxMzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGUgUXQgZG9jdW1lbnQgc3RhdGVzIHRoZSBwb3MgYXR0cmli
dXRlIG9mIFFXZWJIaXRUZXN0UmVzdWx0IGlzIHRoZSBvcmlnaW5hbCBwb3NpdGlvbiwKKyAgICAg
ICAgc28gdGhlIGNvZGUgbm93IHVzZXMgbWFpbkZyYW1lUG9pbnQuCisKKyAgICAgICAgKiBBcGkv
cXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZTo6UVdlYkhp
dFRlc3RSZXN1bHRQcml2YXRlKToKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAg
ICAoUVdlYlBhZ2VQcml2YXRlOjpUb3VjaEFkanVzdGVyOjpmaW5kQ2FuZGlkYXRlUG9pbnRGb3JU
b3VjaCk6CisKIDIwMTItMTEtMDcgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNl
bkBkaWdpYS5jb20+CiAKICAgICAgICAgW1F0XSBPcGVuIGxpbmsgaW4gdGhpcyB3aW5kb3cgYWN0
aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggMjYzNTE3NDNiZDg2NTgyMGExODZmYzM5MGRmYjNjMmNk
MDU0MjFmOC4uNDljYmQ3ZTdmNTljNzUxNWRjZGExN2QyNzI3NjE2NThjOWZlMDkzNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2lu
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTExLTEyICBBbGxhbiBTYW5kZmVsZCBK
ZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIERpc2FtYmlndWF0ZSBp
bm5lck5vZGVGcmFtZVBvaW50IGFuZCBtYWluRnJhbWVQb2ludAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgxMzkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2Vi
Vmlldzo6aGFuZGxlQ29udGV4dE1lbnVFdmVudCk6CisKIDIwMTItMTEtMDUgIFNpbW9uIEZyYXNl
ciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGxheWVyIGJvcmRlcnMg
dG8gY2xlYW5pbmcgYXBwZWFyIGFuZCBkaXNhcHBlYXIgb24gc3dpdGNoaW5nCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggODZiNDIwMWE0MjM2NDY5ZGI0NGNkOGUwYWIxOWExNjY2MjgzNzQxNi4uOThjZjRkMzgwYTQw
ZGNmMGRhODkyYWQ3YjY4ODlhZTY1ZTAzMjgyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBA
CisyMDEyLTExLTEyICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEu
Y29tPgorCisgICAgICAgIERpc2FtYmlndWF0ZSBpbm5lck5vZGVGcmFtZVBvaW50IGFuZCBtYWlu
RnJhbWVQb2ludAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTgxMzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBTd2l0Y2ggdG8gdXNpbmcgSGl0VGVzdFJlc3VsdDo6aW5uZXJOb2RlRnJhbWUgYW5kIEhpdFRl
c3RSZXN1bHQ6OmlubmVyTm9kZUZyYW1lUG9pbnQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViQ29udGV4dE1lbnUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVu
dTo6c2hvdyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjaGFyYWN0ZXJJbmRleEZvclBvaW50KToKKwog
MjAxMi0xMS0wOCAgS2FuZ2lsIEhhbiAgPGthbmdpbC5oYW5Ac2Ftc3VuZy5jb20+CiAKICAgICAg
ICAgW0VGTF1bTWluaUJyb3dzZXJdIEFkZCBlbmNvZGluZyBkZXRlY3RvciBvcHRpb24uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluCmluZGV4IGI2ODcxODUyZjI1OWU4MDI2MDFlYzFiZTY2MGYzNzQ2MzRmOGY1
ZWEuLjY3ODA1MDg0NzcwNGQzODliNWVjOWU4ZmRiMjdlNGQzMGJiYzc5ZWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluCkBAIC0xMjAxLDYgKzEyMDEsNyBAQCBfX1pOSzdXZWJDb3JlMTNIaXRUZXN0UmVz
dWx0MTBpc1NlbGVjdGVkRXYKIF9fWk5LN1dlYkNvcmUxM0hpdFRlc3RSZXN1bHQxMXRhcmdldEZy
YW1lRXYKIF9fWk5LN1dlYkNvcmUxM0hpdFRlc3RSZXN1bHQxMXRleHRDb250ZW50RXYKIF9fWk5L
N1dlYkNvcmUxM0hpdFRlc3RSZXN1bHQxNGFic29sdXRlUERGVVJMRXYKK19fWk5LN1dlYkNvcmUx
M0hpdFRlc3RSZXN1bHQxNGlubmVyTm9kZUZyYW1lRXYKIF9fWk5LN1dlYkNvcmUxM0hpdFRlc3RS
ZXN1bHQxNWFic29sdXRlTGlua1VSTEV2CiBfX1pOSzdXZWJDb3JlMTNIaXRUZXN0UmVzdWx0MTVz
cGVsbGluZ1Rvb2xUaXBFUk5TXzEzVGV4dERpcmVjdGlvbkUKIF9fWk5LN1dlYkNvcmUxM0hpdFRl
c3RSZXN1bHQxNmFic29sdXRlSW1hZ2VVUkxFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXgg
MGJhOGM4YjhjZGQ0YzNlNmY3Y2ZhNTM0YTA2OTZkYjRkYjFjNWZjOC4uNTcyOThmODJjZTkzZjVm
NzJkNDFhNDM2NDliNzYxN2VkNGQ3YWE4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0x
Mzk0LDcgKzEzOTQsNyBAQCBQYXNzUmVmUHRyPE5vZGVMaXN0PiBEb2N1bWVudDo6bm9kZXNGcm9t
UmVjdChpbnQgY2VudGVyWCwgaW50IGNlbnRlclksIHVuc2lnbmVkCiAgICAgLy8gV2hlbiBpZ25v
cmVDbGlwcGluZyBpcyBmYWxzZSwgdGhpcyBtZXRob2QgcmV0dXJucyBudWxsIGZvciBjb29yZGlu
YXRlcyBvdXRzaWRlIG9mIHRoZSB2aWV3cG9ydC4KICAgICBpZiAoaWdub3JlQ2xpcHBpbmcpCiAg
ICAgICAgIHR5cGUgfD0gSGl0VGVzdFJlcXVlc3Q6Oklnbm9yZUNsaXBwaW5nOwotICAgIGVsc2Ug
aWYgKCFmcmFtZVZpZXctPnZpc2libGVDb250ZW50UmVjdCgpLmludGVyc2VjdHMoSGl0VGVzdFJl
c3VsdDo6cmVjdEZvclBvaW50KHBvaW50LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRv
bVBhZGRpbmcsIGxlZnRQYWRkaW5nKSkpCisgICAgZWxzZSBpZiAoIWZyYW1lVmlldy0+dmlzaWJs
ZUNvbnRlbnRSZWN0KCkuaW50ZXJzZWN0cyhIaXRUZXN0TG9jYXRpb246OnJlY3RGb3JQb2ludChw
b2ludCwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0UGFkZGlu
ZykpKQogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoYWxsb3dTaGFkb3dDb250ZW50KQogICAg
ICAgICB0eXBlIHw9IEhpdFRlc3RSZXF1ZXN0OjpBbGxvd1NoYWRvd0NvbnRlbnQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggNjU5YTJkMzNiYjc0OTUxYWY1MzQxOWRmMDU5
NTZkYjA1NzQ4ZWFlMy4uOWQyZmNlNmM3MTQyMmVjYzlmMzM3ODczNTUwMjkyMzFlMmRiNDdjYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtNzczLDcgKzc3Myw3IEBAIGJv
b2wgRXZlbnRIYW5kbGVyOjpldmVudE1heVN0YXJ0RHJhZyhjb25zdCBQbGF0Zm9ybU1vdXNlRXZl
bnQmIGV2ZW50KSBjb25zdAogICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHZpZXctPndpbmRvd1Rv
Q29udGVudHMoZXZlbnQucG9zaXRpb24oKSkpOwogICAgIG1fZnJhbWUtPmNvbnRlbnRSZW5kZXJl
cigpLT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCk7CiAgICAgRHJhZ1N0YXRlIHN0YXRlOwotICAg
IHJldHVybiByZXN1bHQuaW5uZXJOb2RlKCkgJiYgcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS0+ZHJh
Z2dhYmxlTm9kZShtX2ZyYW1lLCByZXN1bHQuaW5uZXJOb2RlKCksIHJvdW5kZWRJbnRQb2ludChy
ZXN1bHQucG9pbnQoKSksIHN0YXRlKTsKKyAgICByZXR1cm4gcmVzdWx0LmlubmVyTm9kZSgpICYm
IHBhZ2UtPmRyYWdDb250cm9sbGVyKCktPmRyYWdnYWJsZU5vZGUobV9mcmFtZSwgcmVzdWx0Lmlu
bmVyTm9kZSgpLCByZXN1bHQucm91bmRlZFBvaW50SW5NYWluRnJhbWUoKSwgc3RhdGUpOwogfQog
CiB2b2lkIEV2ZW50SGFuZGxlcjo6dXBkYXRlU2VsZWN0aW9uRm9yTW91c2VEcmFnKCkKQEAgLTEx
MjYsNyArMTEyNiw4IEBAIEhpdFRlc3RSZXN1bHQgRXZlbnRIYW5kbGVyOjpoaXRUZXN0UmVzdWx0
QXRQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQsIGJvb2wKICAgICAgICAgaGl0VHlwZSB8
PSBIaXRUZXN0UmVxdWVzdDo6SWdub3JlQ2xpcHBpbmc7CiAgICAgaWYgKGFsbG93U2hhZG93Q29u
dGVudCkKICAgICAgICAgaGl0VHlwZSB8PSBIaXRUZXN0UmVxdWVzdDo6QWxsb3dTaGFkb3dDb250
ZW50OwotICAgIG1fZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpLT5oaXRUZXN0KEhpdFRlc3RSZXF1
ZXN0KGhpdFR5cGUpLCByZXN1bHQpOworICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoaGl0VHlw
ZSk7CisgICAgbV9mcmFtZS0+Y29udGVudFJlbmRlcmVyKCktPmhpdFRlc3QocmVxdWVzdCwgcmVz
dWx0KTsKIAogICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIE5vZGUqIG4gPSByZXN1bHQuaW5u
ZXJOb2RlKCk7CkBAIC0xMTQzLDcgKzExNDQsOCBAQCBIaXRUZXN0UmVzdWx0IEV2ZW50SGFuZGxl
cjo6aGl0VGVzdFJlc3VsdEF0UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBib29sCiAg
ICAgICAgIExheW91dFBvaW50IHdpZGdldFBvaW50KHJlc3VsdC5sb2NhbFBvaW50KCkueCgpICsg
dmlldy0+c2Nyb2xsWCgpIC0gcmVuZGVyV2lkZ2V0LT5ib3JkZXJMZWZ0KCkgLSByZW5kZXJXaWRn
ZXQtPnBhZGRpbmdMZWZ0KCksIAogICAgICAgICAgICAgcmVzdWx0LmxvY2FsUG9pbnQoKS55KCkg
KyB2aWV3LT5zY3JvbGxZKCkgLSByZW5kZXJXaWRnZXQtPmJvcmRlclRvcCgpIC0gcmVuZGVyV2lk
Z2V0LT5wYWRkaW5nVG9wKCkpOwogICAgICAgICBIaXRUZXN0UmVzdWx0IHdpZGdldEhpdFRlc3RS
ZXN1bHQod2lkZ2V0UG9pbnQsIHBhZGRpbmcuaGVpZ2h0KCksIHBhZGRpbmcud2lkdGgoKSwgcGFk
ZGluZy5oZWlnaHQoKSwgcGFkZGluZy53aWR0aCgpKTsKLSAgICAgICAgZnJhbWUtPmNvbnRlbnRS
ZW5kZXJlcigpLT5oaXRUZXN0KEhpdFRlc3RSZXF1ZXN0KGhpdFR5cGUpLCB3aWRnZXRIaXRUZXN0
UmVzdWx0KTsKKyAgICAgICAgd2lkZ2V0SGl0VGVzdFJlc3VsdC5zZXRQb2ludEluTWFpbkZyYW1l
KHJlc3VsdC5wb2ludEluTWFpbkZyYW1lKCkpOworICAgICAgICBmcmFtZS0+Y29udGVudFJlbmRl
cmVyKCktPmhpdFRlc3QocmVxdWVzdCwgd2lkZ2V0SGl0VGVzdFJlc3VsdCk7CiAgICAgICAgIHJl
c3VsdCA9IHdpZGdldEhpdFRlc3RSZXN1bHQ7CiAKICAgICAgICAgaWYgKHRlc3RTY3JvbGxiYXJz
ID09IFNob3VsZEhpdFRlc3RTY3JvbGxiYXJzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SGl0VGVzdFJlc3VsdC5jcHAKaW5kZXggY2MzOTA1NjhjZTAyOTg2ZDIwYmJiMWNmZmMxMDEzYmUw
OWVmM2NhMy4uNDBiYTQyNDYxYTNlZTQ2ZTI5NzM5OWMxZGQxZTg5OTAxYWIyMmVjNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcApAQCAtMjA0LDEyICsyMDQs
MTQgQEAgSGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3VsdChjb25zdCBMYXlvdXRQb2ludCYgcG9p
bnQpIDogSGl0VGVzdExvY2F0aW9uKHBvaW50KQogCiBIaXRUZXN0UmVzdWx0OjpIaXRUZXN0UmVz
dWx0KGNvbnN0IExheW91dFBvaW50JiBjZW50ZXJQb2ludCwgdW5zaWduZWQgdG9wUGFkZGluZywg
dW5zaWduZWQgcmlnaHRQYWRkaW5nLCB1bnNpZ25lZCBib3R0b21QYWRkaW5nLCB1bnNpZ25lZCBs
ZWZ0UGFkZGluZykKICAgICA6IEhpdFRlc3RMb2NhdGlvbihjZW50ZXJQb2ludCwgdG9wUGFkZGlu
ZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0UGFkZGluZykKKyAgICAsIG1fcG9p
bnRJbk1haW5GcmFtZShwb2ludCgpKQogICAgICwgbV9pc092ZXJXaWRnZXQoZmFsc2UpCiB7CiB9
CiAKIEhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQoY29uc3QgSGl0VGVzdExvY2F0aW9uJiBv
dGhlcikKICAgICA6IEhpdFRlc3RMb2NhdGlvbihvdGhlcikKKyAgICAsIG1fcG9pbnRJbk1haW5G
cmFtZShwb2ludCgpKQogICAgICwgbV9pc092ZXJXaWRnZXQoZmFsc2UpCiB7CiB9CkBAIC0yMTgs
NiArMjIwLDcgQEAgSGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3VsdChjb25zdCBIaXRUZXN0UmVz
dWx0JiBvdGhlcikKICAgICA6IEhpdFRlc3RMb2NhdGlvbihvdGhlcikKICAgICAsIG1faW5uZXJO
b2RlKG90aGVyLmlubmVyTm9kZSgpKQogICAgICwgbV9pbm5lck5vblNoYXJlZE5vZGUob3RoZXIu
aW5uZXJOb25TaGFyZWROb2RlKCkpCisgICAgLCBtX3BvaW50SW5NYWluRnJhbWUob3RoZXIubV9w
b2ludEluTWFpbkZyYW1lKQogICAgICwgbV9sb2NhbFBvaW50KG90aGVyLmxvY2FsUG9pbnQoKSkK
ICAgICAsIG1faW5uZXJVUkxFbGVtZW50KG90aGVyLlVSTEVsZW1lbnQoKSkKICAgICAsIG1fc2Ny
b2xsYmFyKG90aGVyLnNjcm9sbGJhcigpKQpAQCAtMjM2LDYgKzIzOSw3IEBAIEhpdFRlc3RSZXN1
bHQmIEhpdFRlc3RSZXN1bHQ6Om9wZXJhdG9yPShjb25zdCBIaXRUZXN0UmVzdWx0JiBvdGhlcikK
ICAgICBIaXRUZXN0TG9jYXRpb246Om9wZXJhdG9yPShvdGhlcik7CiAgICAgbV9pbm5lck5vZGUg
PSBvdGhlci5pbm5lck5vZGUoKTsKICAgICBtX2lubmVyTm9uU2hhcmVkTm9kZSA9IG90aGVyLmlu
bmVyTm9uU2hhcmVkTm9kZSgpOworICAgIG1fcG9pbnRJbk1haW5GcmFtZSA9IG90aGVyLm1fcG9p
bnRJbk1haW5GcmFtZTsKICAgICBtX2xvY2FsUG9pbnQgPSBvdGhlci5sb2NhbFBvaW50KCk7CiAg
ICAgbV9pbm5lclVSTEVsZW1lbnQgPSBvdGhlci5VUkxFbGVtZW50KCk7CiAgICAgbV9zY3JvbGxi
YXIgPSBvdGhlci5zY3JvbGxiYXIoKTsKQEAgLTI3OSw2ICsyODMsMTUgQEAgdm9pZCBIaXRUZXN0
UmVzdWx0OjpzZXRTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzKQogICAgIG1fc2Nyb2xsYmFyID0gczsK
IH0KIAorRnJhbWUqIEhpdFRlc3RSZXN1bHQ6OmlubmVyTm9kZUZyYW1lKCkgY29uc3QKK3sKKyAg
ICBpZiAobV9pbm5lck5vblNoYXJlZE5vZGUpCisgICAgICAgIHJldHVybiBtX2lubmVyTm9uU2hh
cmVkTm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsKKyAgICBpZiAobV9pbm5lck5vZGUpCisgICAg
ICAgIHJldHVybiBtX2lubmVyTm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsKKyAgICByZXR1cm4g
MDsKK30KKwogRnJhbWUqIEhpdFRlc3RSZXN1bHQ6OnRhcmdldEZyYW1lKCkgY29uc3QKIHsKICAg
ICBpZiAoIW1faW5uZXJVUkxFbGVtZW50KQpAQCAtNzQ2LDYgKzc1OSw3IEBAIHZvaWQgSGl0VGVz
dFJlc3VsdDo6YXBwZW5kKGNvbnN0IEhpdFRlc3RSZXN1bHQmIG90aGVyKQogICAgICAgICBtX2lu
bmVyTm9kZSA9IG90aGVyLmlubmVyTm9kZSgpOwogICAgICAgICBtX2lubmVyTm9uU2hhcmVkTm9k
ZSA9IG90aGVyLmlubmVyTm9uU2hhcmVkTm9kZSgpOwogICAgICAgICBtX2xvY2FsUG9pbnQgPSBv
dGhlci5sb2NhbFBvaW50KCk7CisgICAgICAgIG1fcG9pbnRJbk1haW5GcmFtZSA9IG90aGVyLm1f
cG9pbnRJbk1haW5GcmFtZTsKICAgICAgICAgbV9pbm5lclVSTEVsZW1lbnQgPSBvdGhlci5VUkxF
bGVtZW50KCk7CiAgICAgICAgIG1fc2Nyb2xsYmFyID0gb3RoZXIuc2Nyb2xsYmFyKCk7CiAgICAg
ICAgIG1faXNPdmVyV2lkZ2V0ID0gb3RoZXIuaXNPdmVyV2lkZ2V0KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaAppbmRleCA3YjNjMTllNWNhMzIzODUyOWQzODhmZjhi
MmY5MzEwNWUzYTdlOTQwLi5iMjE5YTk3ZGNmZGY0ZTI3NTEwYTg0M2Y0ZjczZGM5MWEwOTEyYzlk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKQEAgLTYwLDcgKzYw
LDcgQEAgcHVibGljOgogICAgIH5IaXRUZXN0TG9jYXRpb24oKTsKICAgICBIaXRUZXN0TG9jYXRp
b24mIG9wZXJhdG9yPShjb25zdCBIaXRUZXN0TG9jYXRpb24mKTsKIAotICAgIExheW91dFBvaW50
IHBvaW50KCkgY29uc3QgeyByZXR1cm4gbV9wb2ludDsgfQorICAgIGNvbnN0IExheW91dFBvaW50
JiBwb2ludCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9pbnQ7IH0KICAgICBJbnRQb2ludCByb3VuZGVk
UG9pbnQoKSBjb25zdCB7IHJldHVybiByb3VuZGVkSW50UG9pbnQobV9wb2ludCk7IH0KIAogICAg
IFJlbmRlclJlZ2lvbiogcmVnaW9uKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpb247IH0KQEAgLTEw
MCw3ICsxMDAsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc1JlY3RpbGluZWFyOwogfTsKIAot
Y2xhc3MgSGl0VGVzdFJlc3VsdCA6IHB1YmxpYyBIaXRUZXN0TG9jYXRpb24geworLy8gRklYTUU6
IEhpdFRlc3RSZXN1bHQgc2hvdWxkIG5vdCBiZSBhIEhpdFRlc3RMb2NhdGlvbiwgYnV0IGluc3Rl
YWQgaGF2ZSBhIEhpdFRlc3RMb2NhdGlvbi4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDE1OTAKK2NsYXNzIEhpdFRlc3RSZXN1bHQgOiBwcm90ZWN0ZWQgSGl0
VGVzdExvY2F0aW9uIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIExpc3RIYXNoU2V0PFJlZlB0cjxO
b2RlPiA+IE5vZGVTZXQ7CiAKQEAgLTExNSwxOCArMTE2LDMzIEBAIHB1YmxpYzoKIAogICAgIE5v
ZGUqIGlubmVyTm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5uZXJOb2RlLmdldCgpOyB9CiAgICAg
Tm9kZSogaW5uZXJOb25TaGFyZWROb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pbm5lck5vblNoYXJl
ZE5vZGUuZ2V0KCk7IH0KLSAgICBMYXlvdXRQb2ludCBsb2NhbFBvaW50KCkgY29uc3QgeyByZXR1
cm4gbV9sb2NhbFBvaW50OyB9CiAgICAgRWxlbWVudCogVVJMRWxlbWVudCgpIGNvbnN0IHsgcmV0
dXJuIG1faW5uZXJVUkxFbGVtZW50LmdldCgpOyB9CiAgICAgU2Nyb2xsYmFyKiBzY3JvbGxiYXIo
KSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGJhci5nZXQoKTsgfQogICAgIGJvb2wgaXNPdmVyV2lk
Z2V0KCkgY29uc3QgeyByZXR1cm4gbV9pc092ZXJXaWRnZXQ7IH0KIAorICAgIC8vIEZvcndhcmRl
ZCBmcm9tIEhpdFRlc3RMb2NhdGlvbgorICAgIGJvb2wgaXNSZWN0QmFzZWRUZXN0KCkgY29uc3Qg
eyByZXR1cm4gSGl0VGVzdExvY2F0aW9uOjppc1JlY3RCYXNlZFRlc3QoKTsgfQorCisgICAgLy8g
VGhlIGhpdC10ZXN0ZWQgcG9pbnQgaW4gdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSBtYWluIGZyYW1l
LgorICAgIGNvbnN0IExheW91dFBvaW50JiBwb2ludEluTWFpbkZyYW1lKCkgY29uc3QgeyByZXR1
cm4gbV9wb2ludEluTWFpbkZyYW1lOyB9CisgICAgSW50UG9pbnQgcm91bmRlZFBvaW50SW5NYWlu
RnJhbWUoKSBjb25zdCB7IHJldHVybiByb3VuZGVkSW50UG9pbnQocG9pbnRJbk1haW5GcmFtZSgp
KTsgfQorICAgIHZvaWQgc2V0UG9pbnRJbk1haW5GcmFtZShjb25zdCBMYXlvdXRQb2ludCYgcCkg
eyBtX3BvaW50SW5NYWluRnJhbWUgPSBwOyB9CisKKyAgICAvLyBUaGUgaGl0LXRlc3RlZCBwb2lu
dCBpbiB0aGUgY29vcmRpbmF0ZXMgb2YgdGhlIGlubmVyTm9kZSBmcmFtZSwgdGhlIGZyYW1lIGNv
bnRhaW5pbmcgaW5uZXJOb2RlLgorICAgIGNvbnN0IExheW91dFBvaW50JiBwb2ludEluSW5uZXJO
b2RlRnJhbWUoKSBjb25zdCB7IHJldHVybiBIaXRUZXN0TG9jYXRpb246OnBvaW50KCk7IH0KKyAg
ICBJbnRQb2ludCByb3VuZGVkUG9pbnRJbklubmVyTm9kZUZyYW1lKCkgY29uc3QgeyByZXR1cm4g
cm91bmRlZEludFBvaW50KHBvaW50SW5Jbm5lck5vZGVGcmFtZSgpKTsgfQorICAgIEZyYW1lKiBp
bm5lck5vZGVGcmFtZSgpIGNvbnN0OworCisgICAgLy8gVGhlIGhpdC10ZXN0ZWQgcG9pbnQgaW4g
dGhlIGNvb3JkaW5hdGVzIG9mIHRoZSBpbm5lciBub2RlLgorICAgIGNvbnN0IExheW91dFBvaW50
JiBsb2NhbFBvaW50KCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbFBvaW50OyB9CisgICAgdm9pZCBz
ZXRMb2NhbFBvaW50KGNvbnN0IExheW91dFBvaW50JiBwKSB7IG1fbG9jYWxQb2ludCA9IHA7IH0K
KwogICAgIHZvaWQgc2V0VG9Ob25TaGFkb3dBbmNlc3RvcigpOwogCiAgICAgY29uc3QgSGl0VGVz
dExvY2F0aW9uJiBoaXRUZXN0TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiAqdGhpczsgfQogCiAg
ICAgdm9pZCBzZXRJbm5lck5vZGUoTm9kZSopOwogICAgIHZvaWQgc2V0SW5uZXJOb25TaGFyZWRO
b2RlKE5vZGUqKTsKLSAgICB2b2lkIHNldExvY2FsUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHAp
IHsgbV9sb2NhbFBvaW50ID0gcDsgfQogICAgIHZvaWQgc2V0VVJMRWxlbWVudChFbGVtZW50Kik7
CiAgICAgdm9pZCBzZXRTY3JvbGxiYXIoU2Nyb2xsYmFyKik7CiAgICAgdm9pZCBzZXRJc092ZXJX
aWRnZXQoYm9vbCBiKSB7IG1faXNPdmVyV2lkZ2V0ID0gYjsgfQpAQCAtMTg1LDYgKzIwMSw3IEBA
IHByaXZhdGU6CiAKICAgICBSZWZQdHI8Tm9kZT4gbV9pbm5lck5vZGU7CiAgICAgUmVmUHRyPE5v
ZGU+IG1faW5uZXJOb25TaGFyZWROb2RlOworICAgIExheW91dFBvaW50IG1fcG9pbnRJbk1haW5G
cmFtZTsgLy8gVGhlIGhpdC10ZXN0ZWQgcG9pbnQgaW4gbWFpbi1mcmFtZSBjb29yZGluYXRlcy4K
ICAgICBMYXlvdXRQb2ludCBtX2xvY2FsUG9pbnQ7IC8vIEEgcG9pbnQgaW4gdGhlIGxvY2FsIGNv
b3JkaW5hdGUgc3BhY2Ugb2YgbV9pbm5lck5vblNoYXJlZE5vZGUncyByZW5kZXJlci4gQWxsb3dz
IHVzIHRvIGVmZmljaWVudGx5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkZXRl
cm1pbmUgd2hlcmUgaW5zaWRlIHRoZSByZW5kZXJlciB3ZSBoaXQgb24gc3Vic2VxdWVudCBvcGVy
YXRpb25zLgogICAgIFJlZlB0cjxFbGVtZW50PiBtX2lubmVyVVJMRWxlbWVudDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IGZjZDUyZmQxNTYwMDAyOTQyOWZm
MjdlMGYzYjgzYjJkOWI3ZjYyY2EuLmE3ZDkzZTJkYmY4ZGI1ODJlZjk3NjUwYzIxNTQ1ZjE0YTQ1
OWI0ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtMzU0
OCw3ICszNTQ4LDcgQEAgYm9vbCBSZW5kZXJMYXllcjo6aGl0VGVzdChjb25zdCBIaXRUZXN0UmVx
dWVzdCYgcmVxdWVzdCwgY29uc3QgSGl0VGVzdExvY2F0aW9uJgogICAgICAgICAvLyByZXR1cm4g
b3Vyc2VsdmVzLiBXZSBkbyB0aGlzIHNvIG1vdXNlIGV2ZW50cyBjb250aW51ZSBnZXR0aW5nIGRl
bGl2ZXJlZCBhZnRlciBhIGRyYWcgaGFzIAogICAgICAgICAvLyBleGl0ZWQgdGhlIFdlYlZpZXcs
IGFuZCBzbyBoaXQgdGVzdGluZyBvdmVyIGEgc2Nyb2xsYmFyIGhpdHMgdGhlIGNvbnRlbnQgZG9j
dW1lbnQuCiAgICAgICAgIGlmICgocmVxdWVzdC5hY3RpdmUoKSB8fCByZXF1ZXN0LnJlbGVhc2Uo
KSkgJiYgaXNSb290TGF5ZXIoKSkgewotICAgICAgICAgICAgcmVuZGVyZXIoKS0+dXBkYXRlSGl0
VGVzdFJlc3VsdChyZXN1bHQsIHRvUmVuZGVyVmlldyhyZW5kZXJlcigpKS0+ZmxpcEZvcldyaXRp
bmdNb2RlKHJlc3VsdC5wb2ludCgpKSk7CisgICAgICAgICAgICByZW5kZXJlcigpLT51cGRhdGVI
aXRUZXN0UmVzdWx0KHJlc3VsdCwgdG9SZW5kZXJWaWV3KHJlbmRlcmVyKCkpLT5mbGlwRm9yV3Jp
dGluZ01vZGUoaGl0VGVzdExvY2F0aW9uLnBvaW50KCkpKTsKICAgICAgICAgICAgIGluc2lkZUxh
eWVyID0gdGhpczsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKaW5kZXggOTQ5NTkzODBhNjA2ZDlkMTJlN2JmOTc1
NTJhZmM0YmE2Y2NkOWJlNi4uYjNjNWIzZmZhM2I2NjU2YTVlMmQxMDQxZDAyYWVkNjc4NDBkZDZm
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5j
cHAKQEAgLTU5MCw3ICs1OTAsNyBAQCB2b2lkIENocm9tZUNsaWVudEltcGw6Om1vdXNlRGlkTW92
ZU92ZXJFbGVtZW50KAogICAgICAgICAgICAgV2lkZ2V0KiB3aWRnZXQgPSB0b1JlbmRlcldpZGdl
dChvYmplY3QpLT53aWRnZXQoKTsKICAgICAgICAgICAgIGlmICh3aWRnZXQgJiYgd2lkZ2V0LT5p
c1BsdWdpbkNvbnRhaW5lcigpKSB7CiAgICAgICAgICAgICAgICAgV2ViUGx1Z2luQ29udGFpbmVy
SW1wbCogcGx1Z2luID0gc3RhdGljX2Nhc3Q8V2ViUGx1Z2luQ29udGFpbmVySW1wbCo+KHdpZGdl
dCk7Ci0gICAgICAgICAgICAgICAgdXJsID0gcGx1Z2luLT5wbHVnaW4oKS0+bGlua0F0UG9zaXRp
b24ocmVzdWx0LnJvdW5kZWRQb2ludCgpKTsKKyAgICAgICAgICAgICAgICB1cmwgPSBwbHVnaW4t
PnBsdWdpbigpLT5saW5rQXRQb3NpdGlvbihyZXN1bHQucm91bmRlZFBvaW50SW5Jbm5lck5vZGVG
cmFtZSgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0NvbnRleHRNZW51Q2xpZW50SW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Db250ZXh0TWVudUNsaWVudEltcGwuY3BwCmluZGV4IGFk
MTE2MDkwY2RlYWFlNjNkMTI2MTY0ZTFkNzBjYjAzNzcyMjI4YTQuLjBhNWI1ODZhM2IzYTVkMjAw
OTNlZWQ4NTc4NGRkOWYwODg2OTBkZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0NvbnRleHRNZW51Q2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvQ29udGV4dE1lbnVDbGllbnRJbXBsLmNwcApAQCAtMTIwLDcgKzEyMCw3IEBAIHN0
YXRpYyBTdHJpbmcgc2VsZWN0TWlzc3BlbGxlZFdvcmQoY29uc3QgQ29udGV4dE1lbnUqIGRlZmF1
bHRNZW51LCBGcmFtZSogc2VsZWN0CiAKICAgICAvLyBTZWxlY3Rpb24gaXMgZW1wdHksIHNvIGNo
YW5nZSB0aGUgc2VsZWN0aW9uIHRvIHRoZSB3b3JkIHVuZGVyIHRoZSBjdXJzb3IuCiAgICAgSGl0
VGVzdFJlc3VsdCBoaXRUZXN0UmVzdWx0ID0gc2VsZWN0ZWRGcmFtZS0+ZXZlbnRIYW5kbGVyKCkt
PgotICAgICAgICBoaXRUZXN0UmVzdWx0QXRQb2ludChzZWxlY3RlZEZyYW1lLT5wYWdlKCktPmNv
bnRleHRNZW51Q29udHJvbGxlcigpLT5oaXRUZXN0UmVzdWx0KCkucG9pbnQoKSwgdHJ1ZSk7Cisg
ICAgICAgIGhpdFRlc3RSZXN1bHRBdFBvaW50KHNlbGVjdGVkRnJhbWUtPnBhZ2UoKS0+Y29udGV4
dE1lbnVDb250cm9sbGVyKCktPmhpdFRlc3RSZXN1bHQoKS5wb2ludEluSW5uZXJOb2RlRnJhbWUo
KSwgdHJ1ZSk7CiAgICAgTm9kZSogaW5uZXJOb2RlID0gaGl0VGVzdFJlc3VsdC5pbm5lck5vZGUo
KTsKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zKGlubmVyTm9kZS0+cmVuZGVyZXIoKS0+cG9zaXRp
b25Gb3JQb2ludCgKICAgICAgICAgaGl0VGVzdFJlc3VsdC5sb2NhbFBvaW50KCkpKTsKQEAgLTE1
NSwxMCArMTU1LDEwIEBAIFBsYXRmb3JtTWVudURlc2NyaXB0aW9uIENvbnRleHRNZW51Q2xpZW50
SW1wbDo6Z2V0Q3VzdG9tTWVudUZyb21EZWZhdWx0SXRlbXMoCiAgICAgICAgIHJldHVybiAwOwog
CiAgICAgSGl0VGVzdFJlc3VsdCByID0gbV93ZWJWaWV3LT5wYWdlKCktPmNvbnRleHRNZW51Q29u
dHJvbGxlcigpLT5oaXRUZXN0UmVzdWx0KCk7Ci0gICAgRnJhbWUqIHNlbGVjdGVkRnJhbWUgPSBy
LmlubmVyTm9uU2hhcmVkTm9kZSgpLT5kb2N1bWVudCgpLT5mcmFtZSgpOworICAgIEZyYW1lKiBz
ZWxlY3RlZEZyYW1lID0gci5pbm5lck5vZGVGcmFtZSgpOwogCiAgICAgV2ViQ29udGV4dE1lbnVE
YXRhIGRhdGE7Ci0gICAgZGF0YS5tb3VzZVBvc2l0aW9uID0gc2VsZWN0ZWRGcmFtZS0+dmlldygp
LT5jb250ZW50c1RvV2luZG93KHIucm91bmRlZFBvaW50KCkpOworICAgIGRhdGEubW91c2VQb3Np
dGlvbiA9IHNlbGVjdGVkRnJhbWUtPnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhyLnJvdW5kZWRQ
b2ludEluSW5uZXJOb2RlRnJhbWUoKSk7CiAKICAgICAvLyBDb21wdXRlIGVkaXQgZmxhZ3MuCiAg
ICAgZGF0YS5lZGl0RmxhZ3MgPSBXZWJDb250ZXh0TWVudURhdGE6OkNhbkRvTm9uZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCmluZGV4IDE5MzY0NzZmM2Fl
MWEyMDE0MDMzZGMzZmRiN2UwY2FiNWNhOGM3ZjIuLjA2Mjc1OWM4MzAwNzVlZDZlMDBkYTA5ZGNm
NTQ4Y2Q3NzY0MjViY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkZyYW1lSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJ
bXBsLmNwcApAQCAtMTIwMiw3ICsxMjAyLDcgQEAgc2l6ZV90IFdlYkZyYW1lSW1wbDo6Y2hhcmFj
dGVySW5kZXhGb3JQb2ludChjb25zdCBXZWJQb2ludCYgd2ViUG9pbnQpIGNvbnN0CiAKICAgICBJ
bnRQb2ludCBwb2ludCA9IGZyYW1lKCktPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyh3ZWJQb2lu
dCk7CiAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBmcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+
aGl0VGVzdFJlc3VsdEF0UG9pbnQocG9pbnQsIGZhbHNlKTsKLSAgICBSZWZQdHI8UmFuZ2U+IHJh
bmdlID0gZnJhbWUoKS0+cmFuZ2VGb3JQb2ludChyZXN1bHQucm91bmRlZFBvaW50KCkpOworICAg
IFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBmcmFtZSgpLT5yYW5nZUZvclBvaW50KHJlc3VsdC5yb3Vu
ZGVkUG9pbnRJbklubmVyTm9kZUZyYW1lKCkpOwogICAgIGlmICghcmFuZ2UpCiAgICAgICAgIHJl
dHVybiBub3RGb3VuZDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19m
cmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAppbmRleCA3Mzhh
OTM5MThmMzAxOTFiNTI2YzZmZjE4YjI5NWFmYzliN2I5YTdkLi43MzU2OTRiMDg4MTQ0N2JhYjQw
ZmY1YzA5ODcxMDc3ZWI5MjA2YjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX2ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcApA
QCAtNzAyLDggKzcwMiw4IEBAIEV3a19IaXRfVGVzdCogZXdrX2ZyYW1lX2hpdF90ZXN0X25ldyhj
b25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUsIGludCB4LCBpbnQgeSkKICAgICAgICAgcmV0dXJu
IDA7CiAKICAgICBFd2tfSGl0X1Rlc3QqIGhpdFRlc3QgPSBuZXcgRXdrX0hpdF9UZXN0OwotICAg
IGhpdFRlc3QtPnggPSByZXN1bHQucG9pbnQoKS54KCk7Ci0gICAgaGl0VGVzdC0+eSA9IHJlc3Vs
dC5wb2ludCgpLnkoKTsKKyAgICBoaXRUZXN0LT54ID0gcmVzdWx0LnBvaW50SW5NYWluRnJhbWUo
KS54KCk7CisgICAgaGl0VGVzdC0+eSA9IHJlc3VsdC5wb2ludEluTWFpbkZyYW1lKCkueSgpOwog
I2lmIDAKICAgICAvLyBGSVhNRQogICAgIGhpdFRlc3QtPmJvdW5kaW5nX2JveC54ID0gcmVzdWx0
LmJvdW5kaW5nQm94KCkueCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0
L3dlYmtpdGhpdHRlc3RyZXN1bHQuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dGhpdHRlc3RyZXN1bHQuY3BwCmluZGV4IDFhOTQzNGFmMGY1ZGNhZTNkYjE1ODAzNGI0NjQzMjBi
ODY2YzFkY2EuLjkxNjI2MmQxZTI0ZWJmYTY1NTEwZDE2MDZhMzM3ZmZiZjAzOWY4MWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRoaXR0ZXN0cmVzdWx0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0aGl0dGVzdHJlc3VsdC5jcHAKQEAg
LTI4OCw3ICsyODgsNyBAQCBXZWJLaXRIaXRUZXN0UmVzdWx0KiBraXQoY29uc3QgV2ViQ29yZTo6
SGl0VGVzdFJlc3VsdCYgcmVzdWx0KQogICAgIEdPd25QdHI8Y2hhcj4gaW1hZ2VVUkkoMCk7CiAg
ICAgR093blB0cjxjaGFyPiBtZWRpYVVSSSgwKTsKICAgICBXZWJLaXRET01Ob2RlKiBub2RlID0g
MDsKLSAgICBXZWJDb3JlOjpGcmFtZSogdGFyZ2V0RnJhbWU7CisgICAgV2ViQ29yZTo6RnJhbWUq
IGlubmVyTm9kZUZyYW1lOwogICAgIFdlYkNvcmU6OkludFBvaW50IHBvaW50OwogCiAgICAgaWYg
KCFyZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCkuaXNFbXB0eSgpKSB7CkBAIC0zMTUsMTIgKzMxNSwx
MiBAQCBXZWJLaXRIaXRUZXN0UmVzdWx0KiBraXQoY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJlc3Vs
dCYgcmVzdWx0KQogICAgIGlmIChyZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCkpCiAgICAgICAg
IG5vZGUgPSBraXQocmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpKTsKIAotICAgIHRhcmdldEZy
YW1lID0gcmVzdWx0LnRhcmdldEZyYW1lKCk7Ci0gICAgaWYgKHRhcmdldEZyYW1lICYmIHRhcmdl
dEZyYW1lLT52aWV3KCkpIHsKKyAgICBpbm5lck5vZGVGcmFtZSA9IHJlc3VsdC5pbm5lck5vZGVG
cmFtZSgpOworICAgIGlmIChpbm5lck5vZGVGcmFtZSAmJiBpbm5lck5vZGVGcmFtZS0+dmlldygp
KSB7CiAgICAgICAgIC8vIENvbnZlcnQgZG9jdW1lbnQgY29vcmRzIHRvIHdpZGdldCBjb29yZHMu
Ci0gICAgICAgIHBvaW50ID0gdGFyZ2V0RnJhbWUtPnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhy
ZXN1bHQucm91bmRlZFBvaW50KCkpOworICAgICAgICBwb2ludCA9IGlubmVyTm9kZUZyYW1lLT52
aWV3KCktPmNvbnRlbnRzVG9XaW5kb3cocmVzdWx0LnJvdW5kZWRQb2ludEluSW5uZXJOb2RlRnJh
bWUoKSk7CiAgICAgfSBlbHNlCi0gICAgICAgIHBvaW50ID0gcmVzdWx0LnJvdW5kZWRQb2ludCgp
OworICAgICAgICBwb2ludCA9IHJlc3VsdC5yb3VuZGVkUG9pbnRJbk1haW5GcmFtZSgpOwogCiAg
ICAgcmV0dXJuIFdFQktJVF9ISVRfVEVTVF9SRVNVTFQoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBF
X0hJVF9URVNUX1JFU1VMVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImxpbmstdXJpIiwgbGlua1VSSS5nZXQoKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0KaW5kZXgg
ZTMxMzEzNjAzNmY3OGQ2MDE3MjMwNjkyZWQ4YzY3OTA4ZTlkNDNlMC4uMWQ1MTkxYjU0ZWM4ZjQy
MzA3OTZhZjg0NTg2MTNlYjg5ZWQxYWY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0KQEAgLTM1NiwxNyAr
MzU2LDE0IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNob3dDb250ZXh0TWVudSgpCiAg
ICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47CiAgICAgQ29udGV4dE1lbnVDb250cm9sbGVy
KiBjb250cm9sbGVyID0gcGFnZS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCk7Ci0gICAgTm9kZSog
bm9kZSA9IGNvbnRyb2xsZXItPmhpdFRlc3RSZXN1bHQoKS5pbm5lck5vblNoYXJlZE5vZGUoKTsK
LSAgICBpZiAoIW5vZGUpCi0gICAgICAgIHJldHVybjsKLSAgICBGcmFtZSogZnJhbWUgPSBub2Rl
LT5kb2N1bWVudCgpLT5mcmFtZSgpOworICAgIEZyYW1lKiBmcmFtZSA9IGNvbnRyb2xsZXItPmhp
dFRlc3RSZXN1bHQoKS5pbm5lck5vZGVGcmFtZSgpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAg
IHJldHVybjsKICAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IGZyYW1lLT52aWV3KCk7CiAgICAg
aWYgKCFmcmFtZVZpZXcpCiAgICAgICAgIHJldHVybjsKIAotICAgIEludFBvaW50IHBvaW50ID0g
ZnJhbWVWaWV3LT5jb250ZW50c1RvV2luZG93KGNvbnRyb2xsZXItPmhpdFRlc3RSZXN1bHQoKS5y
b3VuZGVkUG9pbnQoKSk7CisgICAgSW50UG9pbnQgcG9pbnQgPSBmcmFtZVZpZXctPmNvbnRlbnRz
VG9XaW5kb3coY29udHJvbGxlci0+aGl0VGVzdFJlc3VsdCgpLnJvdW5kZWRQb2ludEluSW5uZXJO
b2RlRnJhbWUoKSk7CiAgICAgTlNWaWV3KiB2aWV3ID0gZnJhbWVWaWV3LT5kb2N1bWVudFZpZXco
KTsKICAgICBOU1BvaW50IG5zU2NyZWVuUG9pbnQgPSBbdmlldyBjb252ZXJ0UG9pbnQ6cG9pbnQg
dG9WaWV3Om5pbF07CiAgICAgLy8gU2hvdyB0aGUgY29udGV4dHVhbCBtZW51IGZvciB0aGlzIGV2
ZW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAKaW5kZXggMGFjY2QzMzYyZGQ2ODczNGNm
ZGYyMTM4NWVjMzgwNjRmMmMxMzFiZi4uZjE1YWFmMzM4YWUzZGQ4ODVjYThhZGEyZWYzYWNlN2U0
ZWZiZTAxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCkBAIC0xNTk4LDcgKzE1OTgs
NyBAQCBRV2ViSGl0VGVzdFJlc3VsdFByaXZhdGU6OlFXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZShj
b25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0CiB7CiAgICAgaWYgKCFoaXRUZXN0LmlubmVyTm9k
ZSgpKQogICAgICAgICByZXR1cm47Ci0gICAgcG9zID0gaGl0VGVzdC5yb3VuZGVkUG9pbnQoKTsK
KyAgICBwb3MgPSBoaXRUZXN0LnJvdW5kZWRQb2ludEluTWFpbkZyYW1lKCk7CiAgICAgV2ViQ29y
ZTo6VGV4dERpcmVjdGlvbiBkaXI7CiAgICAgdGl0bGUgPSBoaXRUZXN0LnRpdGxlKGRpcik7CiAg
ICAgbGlua1RleHQgPSBoaXRUZXN0LnRleHRDb250ZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGFn
ZS5jcHAKaW5kZXggNWFhYzA2ZjgxMWM3YzVhNjNjMWM4YTRmODNhNTBjMDRmZDQyMzY3My4uODM5
MWIxYTk3ZTUyMTMzNWYxMjk1MTg2NzUzMDk3NzE1ZTZjMzkxMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3
ZWJwYWdlLmNwcApAQCAtMTU4OSw3ICsxNTg5LDcgQEAgSW50UG9pbnQgUVdlYlBhZ2VQcml2YXRl
OjpUb3VjaEFkanVzdGVyOjpmaW5kQ2FuZGlkYXRlUG9pbnRGb3JUb3VjaChjb25zdCBJbnRQb2kK
ICAgICBGcmFtZVZpZXcqIHZpZXcgPSBkb2N1bWVudC0+ZnJhbWUoKS0+dmlldygpOwogCiAgICAg
Ly8gVG91Y2ggcmVjdCBpbiBjb250ZW50cyBjb29yZGluYXRlcy4KLSAgICBJbnRSZWN0IHRvdWNo
UmVjdChIaXRUZXN0UmVzdWx0OjpyZWN0Rm9yUG9pbnQodmlldy0+d2luZG93VG9Db250ZW50cyhJ
bnRQb2ludCh4LCB5KSksIG1fdG9wUGFkZGluZywgbV9yaWdodFBhZGRpbmcsIG1fYm90dG9tUGFk
ZGluZywgbV9sZWZ0UGFkZGluZykpOworICAgIEludFJlY3QgdG91Y2hSZWN0KEhpdFRlc3RMb2Nh
dGlvbjo6cmVjdEZvclBvaW50KHZpZXctPndpbmRvd1RvQ29udGVudHMoSW50UG9pbnQoeCwgeSkp
LCBtX3RvcFBhZGRpbmcsIG1fcmlnaHRQYWRkaW5nLCBtX2JvdHRvbVBhZGRpbmcsIG1fbGVmdFBh
ZGRpbmcpKTsKIAogICAgIC8vIEl0ZXJhdGUgb3ZlciB0aGUgbGlzdCBvZiBub2RlcyBoaXQgbG9v
a2luZyBmb3IgdGhlIG9uZSB3aG9zZSBib3VuZGluZyBhcmVhCiAgICAgLy8gaGFzIGxhcmdlc3Qg
aW50ZXJzZWN0aW9uIHdpdGggdGhlIHRvdWNoIGFyZWEgKHBvaW50ICsgcGFkZGluZykuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYlZpZXcuY3BwCmluZGV4IGRkNzAwOGViM2E0YTdkYzY4MGRkMmYwZjI2Zjg3MTgwMGFkYzIx
ZWYuLmY2YzllNjljZjlkYzAyZTM3NjY3YjYyYzFlNGE3ODcyMDY3OWU3YmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dl
YlZpZXcuY3BwCkBAIC0xMzQ5LDExICsxMzQ5LDcgQEAgYm9vbCBXZWJWaWV3OjpoYW5kbGVDb250
ZXh0TWVudUV2ZW50KFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pCiAgICAgaWYgKCFjb3Jl
TWVudSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgTm9kZSogbm9kZSA9IGNvbnRleHRN
ZW51Q29udHJvbGxlci0+aGl0VGVzdFJlc3VsdCgpLmlubmVyTm9uU2hhcmVkTm9kZSgpOwotICAg
IGlmICghbm9kZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgRnJhbWUqIGZyYW1lID0g
bm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsKKyAgICBGcmFtZSogZnJhbWUgPSBjb250ZXh0TWVu
dUNvbnRyb2xsZXItPmhpdFRlc3RSZXN1bHQoKS5pbm5lck5vZGVGcmFtZSgpOwogICAgIGlmICgh
ZnJhbWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTM2MSw3ICsxMzU3LDcgQEAgYm9v
bCBXZWJWaWV3OjpoYW5kbGVDb250ZXh0TWVudUV2ZW50KFdQQVJBTSB3UGFyYW0sIExQQVJBTSBs
UGFyYW0pCiAgICAgaWYgKCF2aWV3KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBQT0lO
VCBwb2ludCh2aWV3LT5jb250ZW50c1RvV2luZG93KGNvbnRleHRNZW51Q29udHJvbGxlci0+aGl0
VGVzdFJlc3VsdCgpLnJvdW5kZWRQb2ludCgpKSk7CisgICAgUE9JTlQgcG9pbnQodmlldy0+Y29u
dGVudHNUb1dpbmRvdyhjb250ZXh0TWVudUNvbnRyb2xsZXItPmhpdFRlc3RSZXN1bHQoKS5yb3Vu
ZGVkUG9pbnRJbklubmVyTm9kZUZyYW1lKCkpKTsKIAogICAgIC8vIFRyYW5zbGF0ZSB0aGUgcG9p
bnQgdG8gc2NyZWVuIGNvb3JkaW5hdGVzCiAgICAgaWYgKCE6OkNsaWVudFRvU2NyZWVuKG1fdmll
d1dpbmRvdywgJnBvaW50KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJDb250ZXh0TWVudS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViQ29udGV4dE1lbnUuY3BwCmluZGV4IDNhOTFkOTBiNzU1ZTY4ZDdkNTM1OTc5M2Fj
ZTBmZTM3NWFlNjg2MTAuLjMyNzNiZGMwOWVkZjAwYzMyODAzOWY1NTI1OGI5ZGE5ODJiZjA5MzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0
TWVudS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvbnRl
eHRNZW51LmNwcApAQCAtNTksMTAgKzU5LDcgQEAgdm9pZCBXZWJDb250ZXh0TWVudTo6c2hvdygp
CiAgICAgQ29udGV4dE1lbnUqIG1lbnUgPSBjb250cm9sbGVyLT5jb250ZXh0TWVudSgpOwogICAg
IGlmICghbWVudSkKICAgICAgICAgcmV0dXJuOwotICAgIE5vZGUqIG5vZGUgPSBjb250cm9sbGVy
LT5oaXRUZXN0UmVzdWx0KCkuaW5uZXJOb25TaGFyZWROb2RlKCk7Ci0gICAgaWYgKCFub2RlKQot
ICAgICAgICByZXR1cm47Ci0gICAgRnJhbWUqIGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS0+ZnJh
bWUoKTsKKyAgICBGcmFtZSogZnJhbWUgPSBjb250cm9sbGVyLT5oaXRUZXN0UmVzdWx0KCkuaW5u
ZXJOb2RlRnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAgICAgRnJh
bWVWaWV3KiB2aWV3ID0gZnJhbWUtPnZpZXcoKTsKQEAgLTg2LDcgKzgzLDcgQEAgdm9pZCBXZWJD
b250ZXh0TWVudTo6c2hvdygpCiAKICAgICAvLyBNYXJrIHRoZSBXZWJQYWdlIGhhcyBoYXZpbmcg
YSBzaG93biBjb250ZXh0IG1lbnUgdGhlbiBub3RpZnkgdGhlIFVJUHJvY2Vzcy4KICAgICBtX3Bh
Z2UtPmNvbnRleHRNZW51U2hvd2luZygpOwotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpTaG93Q29udGV4dE1lbnUodmlldy0+Y29udGVudHNUb1dpbmRvdyhjb250cm9s
bGVyLT5oaXRUZXN0UmVzdWx0KCkucm91bmRlZFBvaW50KCkpLCB3ZWJIaXRUZXN0UmVzdWx0RGF0
YSwgcHJvcG9zZWRNZW51LCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0
YS5nZXQoKSkpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2hv
d0NvbnRleHRNZW51KHZpZXctPmNvbnRlbnRzVG9XaW5kb3coY29udHJvbGxlci0+aGl0VGVzdFJl
c3VsdCgpLnJvdW5kZWRQb2ludEluSW5uZXJOb2RlRnJhbWUoKSksIHdlYkhpdFRlc3RSZXN1bHRE
YXRhLCBwcm9wb3NlZE1lbnUsIEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJE
YXRhLmdldCgpKSkpOwogfQogCiB2b2lkIFdlYkNvbnRleHRNZW51OjppdGVtU2VsZWN0ZWQoY29u
c3QgV2ViQ29udGV4dE1lbnVJdGVtRGF0YSYgaXRlbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCBiNTI0ZGFmMGNkODJk
ZjdlZTkyZGE2Nzc1ZmRmN2MyNzg0ZjJhNDViLi4zYjAyZmUwZmZkMzM2NzI5ODM2NjIyYzUxZjQz
ODdmYTM2NDAxNWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC0zODQsOSArMzg0LDkgQEAgdm9pZCBXZWJQYWdlOjpj
aGFyYWN0ZXJJbmRleEZvclBvaW50KEludFBvaW50IHBvaW50LCB1aW50NjRfdCYgaW5kZXgpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZnJhbWUtPmV2ZW50
SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChwb2ludCwgZmFsc2UpOwotICAgIGZyYW1l
ID0gcmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpID8gcmVzdWx0LmlubmVyTm9uU2hhcmVkTm9k
ZSgpLT5kb2N1bWVudCgpLT5mcmFtZSgpIDogbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9j
dXNlZE9yTWFpbkZyYW1lKCk7CisgICAgZnJhbWUgPSByZXN1bHQuaW5uZXJOb25TaGFyZWROb2Rl
KCkgPyByZXN1bHQuaW5uZXJOb2RlRnJhbWUoKSA6IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkt
PmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIAotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBm
cmFtZS0+cmFuZ2VGb3JQb2ludChyZXN1bHQucm91bmRlZFBvaW50KCkpOworICAgIFJlZlB0cjxS
YW5nZT4gcmFuZ2UgPSBmcmFtZS0+cmFuZ2VGb3JQb2ludChyZXN1bHQucm91bmRlZFBvaW50SW5J
bm5lck5vZGVGcmFtZSgpKTsKICAgICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1cm47CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174976</attachid>
            <date>2012-11-19 07:15:57 -0800</date>
            <delta_ts>2012-11-21 01:39:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98139-20121119161321.patch</filename>
            <type>text/plain</type>
            <size>29966</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGFjOTA5OWJkODZjZDNl
ODBlNzE1MTE2NmEwZjI4Y2U3Njc0YjAzMC4uNWM0NTA0N2E4ZmQ3YmVlYTlmZmQ0OGZhYWFkZDE3
NjczZjczMGU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTExLTEyICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIERp
c2FtYmlndWF0ZSBpbm5lck5vZGVGcmFtZVBvaW50IGFuZCBtYWluRnJhbWVQb2ludAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgxMzkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTcGxpdHMgdGhlIHBvaW50
KCkgbWV0aG9kIGluIEhpdFRlc3RSZXN1bHQgaW50byB0d28sIGlubmVyTm9kZUZyYW1lUG9pbnQg
YW5kIG1haW5GcmFtZVBvaW50KCkuCisgICAgICAgIFRvIGRvIHRoaXMgSGl0VGVzdFJlc3VsdCBu
byBsb25nZXIgaW5oZXJpdHMgcHVibGljYWxseSBmcm9tIEhpdFRlc3RMb2NhdGlvbiwgd2hpY2gg
c2hvdWxkIGFsc28KKyAgICAgICAgaGVscCB0byBsYXRlciBzZXBhcmF0ZSB0aGUgdHdvIGNsYXNz
ZXMgY29tcGxldGVseS4KKworICAgICAgICBNYW55IG9mIHRoZSBjYWxsLXNpdGVzIG9mIGhpdFRl
c3RSZXN1bHRBdFBvaW50IGNvbmZ1c2VzIHdoaWNoIGNvb3JkaW5hdGVzIHRoZSBwb2ludCBpcyBp
bi4KKyAgICAgICAgU29tZSwgYnV0IG5vdCBhbGwgY2FsbC1zaXRlcyBoYXZlIGJlZW4gYWxsIGNs
ZWFuZWQgdXAgaW4gdGhpcyBwYXRjaCwgYW5kIHRoZXkgc2hvdWxkIGJlCisgICAgICAgIGF1ZGl0
ZWQgYnkgdGhlIGluZGl2aWR1YWwgcG9ydHMuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoK
KyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
Om5vZGVzRnJvbVJlY3QpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZXZlbnRNYXlTdGFydERyYWcpOgorICAgICAgICAo
V2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoaXRUZXN0UmVzdWx0QXRQb2ludCk6CisgICAgICAgICog
cmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJl
c3VsdDo6SGl0VGVzdFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0Ojpv
cGVyYXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6aW5uZXJOb2RlRnJh
bWUpOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6YXBwZW5kKToKKyAgICAgICAg
KiByZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdExv
Y2F0aW9uOjpwb2ludCk6CisgICAgICAgIChIaXRUZXN0UmVzdWx0KToKKyAgICAgICAgKFdlYkNv
cmU6OkhpdFRlc3RSZXN1bHQ6OmlzUmVjdEJhc2VkVGVzdCk6CisgICAgICAgIChXZWJDb3JlOjpI
aXRUZXN0UmVzdWx0Ojpwb2ludEluTWFpbkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRl
c3RSZXN1bHQ6OnJvdW5kZWRQb2ludEluTWFpbkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Okhp
dFRlc3RSZXN1bHQ6OnNldFBvaW50SW5NYWluRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SGl0
VGVzdFJlc3VsdDo6cG9pbnRJbklubmVyTm9kZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Okhp
dFRlc3RSZXN1bHQ6OnJvdW5kZWRQb2ludEluSW5uZXJOb2RlRnJhbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6SGl0VGVzdFJlc3VsdDo6bG9jYWxQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRU
ZXN0UmVzdWx0OjpzZXRMb2NhbFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmhpdFRlc3QpOgorCiAyMDEy
LTExLTE5ICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBpbnB1
dC52YWx1ZT0iIiBzaG91bGQgY2xlYXIgZGF0ZS90aW1lIGlucHV0IGVsZW1lbnRzIHdpdGggcGFy
dGlhbCB2YWx1ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZTQyMjdiNWE1YzM5OGNi
NDE0MmU5NTExOGI4YmM2NWVmZGM1MjI1ZC4uZTE2OGUzOGNiNzcxMTA0ZTA3M2ViMGJjM2NkY2U1
MzY4YzZiNzY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAor
MjAxMi0xMS0xMiAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNv
bT4KKworICAgICAgICBEaXNhbWJpZ3VhdGUgaW5uZXJOb2RlRnJhbWVQb2ludCBhbmQgbWFpbkZy
YW1lUG9pbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk4MTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVu
dEltcGw6Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KToKKyAgICAgICAgKiBzcmMvQ29udGV4dE1l
bnVDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6c2VsZWN0TWlzc3BlbGxlZFdvcmQp
OgorICAgICAgICAoV2ViS2l0OjpDb250ZXh0TWVudUNsaWVudEltcGw6OmdldEN1c3RvbU1lbnVG
cm9tRGVmYXVsdEl0ZW1zKToKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjpjaGFyYWN0ZXJJbmRleEZvclBvaW50KToKKwogMjAx
Mi0xMS0xOCAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEzNTA0Ny4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCAyNjlh
MjA5MDdiYTUwMzkyZTQwNjlhNWE5ZTMzODAyODY2ZTU1YjBhLi45N2U2NzA5ODJiOGI0ZTY4YTI2
ODg0M2NlZTcyMDhlMzFjZDE5YTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTItMTEtMTIgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5j
b20+CisKKyAgICAgICAgRGlzYW1iaWd1YXRlIGlubmVyTm9kZUZyYW1lUG9pbnQgYW5kIG1haW5G
cmFtZVBvaW50IAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTgxMzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBTd2l0Y2ggdG8gdXNpbmcgbWFpbiBmcmFtZSBwb2ludCBzaW5jZSB4IGFuZCB5IGFyZSBkb2N1
bWVudGVkIGFzIGJlaW5nIHRoZSBwb2ludCBvZiB0aGUgaGl0IHRlc3QuCisKKyAgICAgICAgKiBl
d2svZXdrX2ZyYW1lLmNwcDoKKyAgICAgICAgKGV3a19mcmFtZV9oaXRfdGVzdF9uZXcpOgorCiAy
MDEyLTExLTE2ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTM0Njk0LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmlu
ZGV4IDNkYzY2YzI0MTNkZGU4ZjVjYzllMTcyYjk1N2IyMDdjNGM4OTNkM2IuLmQ1ODJlNWVlNjE1
ZGUwMWU4NDczMDVkMTMxZDFkZGIxYzIyZDc1ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNSBAQAorMjAxMi0xMS0xMiAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2Vu
QGRpZ2lhLmNvbT4KKworICAgICAgICBEaXNhbWJpZ3VhdGUgaW5uZXJOb2RlRnJhbWVQb2ludCBh
bmQgbWFpbkZyYW1lUG9pbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTk4MTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgRml4ZWQgY29uZnVzaW9uIG9mIHRhcmdldEZyYW1lIGFuZCBpbm5lck5vZGVGcmFt
ZS4gRnVydGhlciBjbGVhbi11cCBpcyBwb3NzaWJsZSB0aG91Z2guCisKKyAgICAgICAgKiB3ZWJr
aXQvd2Via2l0aGl0dGVzdHJlc3VsdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OmtpdCk6CisKIDIw
MTItMTEtMTYgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtHVEtdIE1vdmUgQ3JlZGVudGlhbEJhY2tpbmdTdG9yZSB1c2FnZSBmcm9tIEd0a0F1dGhl
bnRpY2F0aW9uRGlhbG9nIHRvIFJlc291cmNlSGFuZGxlU291cApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4
IDhlNGRlMjJjN2ExNDY2OTBlNGU2NmZhYjZjNTM1MjNmNmViYjhjMzYuLmM3NDZlYTZjZWMxZGQ2
N2FjZjlhNzQyM2NiNDgzYzc3OGMyODUzZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NSBAQAorMjAxMi0xMS0xMiAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRp
Z2lhLmNvbT4KKworICAgICAgICBEaXNhbWJpZ3VhdGUgaW5uZXJOb2RlRnJhbWVQb2ludCBhbmQg
bWFpbkZyYW1lUG9pbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk4MTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgU3dpdGNoIHRvIHVzaW5nIEhpdFRlc3RSZXN1bHQ6OmlubmVyTm9kZUZyYW1lIGFuZCBI
aXRUZXN0UmVzdWx0Ojppbm5lck5vZGVGcmFtZVBvaW50LgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW06CisgICAgICAgIChXZWJDb250ZXh0TWVudUNs
aWVudDo6c2hvd0NvbnRleHRNZW51KToKKwogMjAxMi0xMS0xNiAgVG9ueSBDaGFuZyAgPHRvbnlA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbW92ZSBFTkFCTEVfQ1NTX0hJRVJBUkNISUVTIHNp
bmNlIGl0J3Mgbm8gbG9uZ2VyIGluIHVzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCBjMTZiYzg2YWQ2OTU0
ZjBlNTRhMDdjOTI0NTg1MmIzNGE2ZDAzNzczLi41M2RjY2ZmN2NhYWFiMjljYWI1YTliZWQxOTUz
ZTU3OGI4OWMwYTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTExLTEy
ICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAg
ICAgIERpc2FtYmlndWF0ZSBpbm5lck5vZGVGcmFtZVBvaW50IGFuZCBtYWluRnJhbWVQb2ludAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgxMzkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgUXQgZG9j
dW1lbnQgc3RhdGVzIHRoZSBwb3MgYXR0cmlidXRlIG9mIFFXZWJIaXRUZXN0UmVzdWx0IGlzIHRo
ZSBvcmlnaW5hbCBwb3NpdGlvbiwKKyAgICAgICAgc28gdGhlIGNvZGUgbm93IHVzZXMgbWFpbkZy
YW1lUG9pbnQuCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJI
aXRUZXN0UmVzdWx0UHJpdmF0ZTo6UVdlYkhpdFRlc3RSZXN1bHRQcml2YXRlKToKKyAgICAgICAg
KiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpUb3VjaEFkanVz
dGVyOjpmaW5kQ2FuZGlkYXRlUG9pbnRGb3JUb3VjaCk6CisKIDIwMTItMTEtMTggIExhc3psbyBH
b21ib3MgIDxsLmdvbWJvc0BzYW1zdW5nLmNvbT4KIAogICAgICAgICBbUXRdIFJlbW92ZSByZW1h
aW5pbmcgdHJhY2VzIG9mIHN5bWJpYW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCA2OTA5NjU4YzQzNmE3
NTdhNmU4Yzc2ZDhlNDAyMmJmZjA5MjU3ZDQyLi40ZDA1YzE1N2JmYzU3Nzc4YTI2YjgxMmEwODY2
ODc3ZTcwODk3NDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMTEt
MTIgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CisKKyAg
ICAgICAgRGlzYW1iaWd1YXRlIGlubmVyTm9kZUZyYW1lUG9pbnQgYW5kIG1haW5GcmFtZVBvaW50
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODEzOQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmll
dy5jcHA6CisgICAgICAgIChXZWJWaWV3OjpoYW5kbGVDb250ZXh0TWVudUV2ZW50KToKKwogMjAx
Mi0xMS0xNyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRk
IGFuIGludGVnZXIgaWRlbnRpZmllciBmaWVsZCB0byBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJh
c2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKaW5kZXggMzc0MGQ0NzgzYzlhZWQ1MDBiZDMyYWQ1NjY4MDJhMGVkZjEwMjU5
Mi4uMTNhMjI1MzQ2YWI2ZmY0NWQyODk0MjFmYTU5MDc0ZDE5OGE4YjY2NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE3IEBACisyMDEyLTExLTEyICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxh
bi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIERpc2FtYmlndWF0ZSBpbm5lck5vZGVGcmFt
ZVBvaW50IGFuZCBtYWluRnJhbWVQb2ludAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTgxMzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBTd2l0Y2ggdG8gdXNpbmcgSGl0VGVzdFJlc3VsdDo6aW5uZXJOb2Rl
RnJhbWUgYW5kIEhpdFRlc3RSZXN1bHQ6OmlubmVyTm9kZUZyYW1lUG9pbnQuCisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29udGV4dE1lbnUuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJDb250ZXh0TWVudTo6c2hvdyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjaGFyYWN0ZXJJbmRl
eEZvclBvaW50KToKKwogMjAxMi0xMS0xOSAgQmFsYXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4K
aW5kZXggMDA0NDhjYWUwNGYxMWJkNDgxOGIwM2RjMzkwNmQ1OTYyM2Y1Mzg3Yy4uZmYwZmFkZmRm
OGFlYzA3NGFjZjk4MDZjYTJiYWFlMmZlMTU5NmMzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAg
LTExNzQsNiArMTE3NCw3IEBAIF9fWk5LN1dlYkNvcmUxM0hpdFRlc3RSZXN1bHQxMGlzU2VsZWN0
ZWRFdgogX19aTks3V2ViQ29yZTEzSGl0VGVzdFJlc3VsdDExdGFyZ2V0RnJhbWVFdgogX19aTks3
V2ViQ29yZTEzSGl0VGVzdFJlc3VsdDExdGV4dENvbnRlbnRFdgogX19aTks3V2ViQ29yZTEzSGl0
VGVzdFJlc3VsdDE0YWJzb2x1dGVQREZVUkxFdgorX19aTks3V2ViQ29yZTEzSGl0VGVzdFJlc3Vs
dDE0aW5uZXJOb2RlRnJhbWVFdgogX19aTks3V2ViQ29yZTEzSGl0VGVzdFJlc3VsdDE1YWJzb2x1
dGVMaW5rVVJMRXYKIF9fWk5LN1dlYkNvcmUxM0hpdFRlc3RSZXN1bHQxNXNwZWxsaW5nVG9vbFRp
cEVSTlNfMTNUZXh0RGlyZWN0aW9uRQogX19aTks3V2ViQ29yZTEzSGl0VGVzdFJlc3VsdDE2YWJz
b2x1dGVJbWFnZVVSTEV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBlZWEyOTg0YjQ0Njll
Yjk4ZTMzODJhZTI0MTg5MjFjMWU5NWZkNmVmLi4wZWMzZmExOWY2MmM5NmM1NmRhZDIyOTBiNmMy
YTZhOWY0MTlhZjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTEzOTEsNyArMTM5MSw3
IEBAIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IERvY3VtZW50Ojpub2Rlc0Zyb21SZWN0KGludCBjZW50
ZXJYLCBpbnQgY2VudGVyWSwgdW5zaWduZWQKICAgICAvLyBXaGVuIGlnbm9yZUNsaXBwaW5nIGlz
IGZhbHNlLCB0aGlzIG1ldGhvZCByZXR1cm5zIG51bGwgZm9yIGNvb3JkaW5hdGVzIG91dHNpZGUg
b2YgdGhlIHZpZXdwb3J0LgogICAgIGlmIChpZ25vcmVDbGlwcGluZykKICAgICAgICAgdHlwZSB8
PSBIaXRUZXN0UmVxdWVzdDo6SWdub3JlQ2xpcHBpbmc7Ci0gICAgZWxzZSBpZiAoIWZyYW1lVmll
dy0+dmlzaWJsZUNvbnRlbnRSZWN0KCkuaW50ZXJzZWN0cyhIaXRUZXN0UmVzdWx0OjpyZWN0Rm9y
UG9pbnQocG9pbnQsIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVm
dFBhZGRpbmcpKSkKKyAgICBlbHNlIGlmICghZnJhbWVWaWV3LT52aXNpYmxlQ29udGVudFJlY3Qo
KS5pbnRlcnNlY3RzKEhpdFRlc3RMb2NhdGlvbjo6cmVjdEZvclBvaW50KHBvaW50LCB0b3BQYWRk
aW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5nKSkpCiAgICAgICAg
IHJldHVybiAwOwogICAgIGlmIChhbGxvd1NoYWRvd0NvbnRlbnQpCiAgICAgICAgIHR5cGUgfD0g
SGl0VGVzdFJlcXVlc3Q6OkFsbG93U2hhZG93Q29udGVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcAppbmRleCAzYTc3MzlmYmUyYTg0M2FmZjI2ZTc4OWY3NTRiM2Y4NzIzNGQ4YWI0
Li4xYjM0ZDQ4MGU0MGFkNjc5MjhkMDUzNDFhMmJkYzU5M2UzNjVkNzhhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC03ODcsNyArNzg3LDcgQEAgYm9vbCBFdmVudEhhbmRs
ZXI6OmV2ZW50TWF5U3RhcnREcmFnKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpIGNv
bnN0CiAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQodmlldy0+d2luZG93VG9Db250ZW50cyhldmVu
dC5wb3NpdGlvbigpKSk7CiAgICAgbV9mcmFtZS0+Y29udGVudFJlbmRlcmVyKCktPmhpdFRlc3Qo
cmVxdWVzdCwgcmVzdWx0KTsKICAgICBEcmFnU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIHJlc3Vs
dC5pbm5lck5vZGUoKSAmJiBwYWdlLT5kcmFnQ29udHJvbGxlcigpLT5kcmFnZ2FibGVOb2RlKG1f
ZnJhbWUsIHJlc3VsdC5pbm5lck5vZGUoKSwgcm91bmRlZEludFBvaW50KHJlc3VsdC5wb2ludCgp
KSwgc3RhdGUpOworICAgIHJldHVybiByZXN1bHQuaW5uZXJOb2RlKCkgJiYgcGFnZS0+ZHJhZ0Nv
bnRyb2xsZXIoKS0+ZHJhZ2dhYmxlTm9kZShtX2ZyYW1lLCByZXN1bHQuaW5uZXJOb2RlKCksIHJl
c3VsdC5yb3VuZGVkUG9pbnRJbk1haW5GcmFtZSgpLCBzdGF0ZSk7CiB9CiAKIHZvaWQgRXZlbnRI
YW5kbGVyOjp1cGRhdGVTZWxlY3Rpb25Gb3JNb3VzZURyYWcoKQpAQCAtMTE0MCw3ICsxMTQwLDgg
QEAgSGl0VGVzdFJlc3VsdCBFdmVudEhhbmRsZXI6OmhpdFRlc3RSZXN1bHRBdFBvaW50KGNvbnN0
IExheW91dFBvaW50JiBwb2ludCwgYm9vbAogICAgICAgICBoaXRUeXBlIHw9IEhpdFRlc3RSZXF1
ZXN0OjpJZ25vcmVDbGlwcGluZzsKICAgICBpZiAoYWxsb3dTaGFkb3dDb250ZW50KQogICAgICAg
ICBoaXRUeXBlIHw9IEhpdFRlc3RSZXF1ZXN0OjpBbGxvd1NoYWRvd0NvbnRlbnQ7Ci0gICAgbV9m
cmFtZS0+Y29udGVudFJlbmRlcmVyKCktPmhpdFRlc3QoSGl0VGVzdFJlcXVlc3QoaGl0VHlwZSks
IHJlc3VsdCk7CisgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChoaXRUeXBlKTsKKyAgICBtX2Zy
YW1lLT5jb250ZW50UmVuZGVyZXIoKS0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOwogCiAgICAg
d2hpbGUgKHRydWUpIHsKICAgICAgICAgTm9kZSogbiA9IHJlc3VsdC5pbm5lck5vZGUoKTsKQEAg
LTExNTcsNyArMTE1OCw4IEBAIEhpdFRlc3RSZXN1bHQgRXZlbnRIYW5kbGVyOjpoaXRUZXN0UmVz
dWx0QXRQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQsIGJvb2wKICAgICAgICAgTGF5b3V0
UG9pbnQgd2lkZ2V0UG9pbnQocmVzdWx0LmxvY2FsUG9pbnQoKS54KCkgKyB2aWV3LT5zY3JvbGxY
KCkgLSByZW5kZXJXaWRnZXQtPmJvcmRlckxlZnQoKSAtIHJlbmRlcldpZGdldC0+cGFkZGluZ0xl
ZnQoKSwgCiAgICAgICAgICAgICByZXN1bHQubG9jYWxQb2ludCgpLnkoKSArIHZpZXctPnNjcm9s
bFkoKSAtIHJlbmRlcldpZGdldC0+Ym9yZGVyVG9wKCkgLSByZW5kZXJXaWRnZXQtPnBhZGRpbmdU
b3AoKSk7CiAgICAgICAgIEhpdFRlc3RSZXN1bHQgd2lkZ2V0SGl0VGVzdFJlc3VsdCh3aWRnZXRQ
b2ludCwgcGFkZGluZy5oZWlnaHQoKSwgcGFkZGluZy53aWR0aCgpLCBwYWRkaW5nLmhlaWdodCgp
LCBwYWRkaW5nLndpZHRoKCkpOwotICAgICAgICBmcmFtZS0+Y29udGVudFJlbmRlcmVyKCktPmhp
dFRlc3QoSGl0VGVzdFJlcXVlc3QoaGl0VHlwZSksIHdpZGdldEhpdFRlc3RSZXN1bHQpOworICAg
ICAgICB3aWRnZXRIaXRUZXN0UmVzdWx0LnNldFBvaW50SW5NYWluRnJhbWUocmVzdWx0LnBvaW50
SW5NYWluRnJhbWUoKSk7CisgICAgICAgIGZyYW1lLT5jb250ZW50UmVuZGVyZXIoKS0+aGl0VGVz
dChyZXF1ZXN0LCB3aWRnZXRIaXRUZXN0UmVzdWx0KTsKICAgICAgICAgcmVzdWx0ID0gd2lkZ2V0
SGl0VGVzdFJlc3VsdDsKIAogICAgICAgICBpZiAodGVzdFNjcm9sbGJhcnMgPT0gU2hvdWxkSGl0
VGVzdFNjcm9sbGJhcnMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9I
aXRUZXN0UmVzdWx0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0
LmNwcAppbmRleCBjYzM5MDU2OGNlMDI5ODZkMjBiYmIxY2ZmYzEwMTNiZTA5ZWYzY2EzLi40MGJh
NDI0NjFhM2VlNDZlMjk3Mzk5YzFkZDFlODk5MDFhYjIyZWM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCkBAIC0yMDQsMTIgKzIwNCwxNCBAQCBIaXRUZXN0
UmVzdWx0OjpIaXRUZXN0UmVzdWx0KGNvbnN0IExheW91dFBvaW50JiBwb2ludCkgOiBIaXRUZXN0
TG9jYXRpb24ocG9pbnQpCiAKIEhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQoY29uc3QgTGF5
b3V0UG9pbnQmIGNlbnRlclBvaW50LCB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdo
dFBhZGRpbmcsIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nKQog
ICAgIDogSGl0VGVzdExvY2F0aW9uKGNlbnRlclBvaW50LCB0b3BQYWRkaW5nLCByaWdodFBhZGRp
bmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5nKQorICAgICwgbV9wb2ludEluTWFpbkZyYW1l
KHBvaW50KCkpCiAgICAgLCBtX2lzT3ZlcldpZGdldChmYWxzZSkKIHsKIH0KIAogSGl0VGVzdFJl
c3VsdDo6SGl0VGVzdFJlc3VsdChjb25zdCBIaXRUZXN0TG9jYXRpb24mIG90aGVyKQogICAgIDog
SGl0VGVzdExvY2F0aW9uKG90aGVyKQorICAgICwgbV9wb2ludEluTWFpbkZyYW1lKHBvaW50KCkp
CiAgICAgLCBtX2lzT3ZlcldpZGdldChmYWxzZSkKIHsKIH0KQEAgLTIxOCw2ICsyMjAsNyBAQCBI
aXRUZXN0UmVzdWx0OjpIaXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RSZXN1bHQmIG90aGVyKQog
ICAgIDogSGl0VGVzdExvY2F0aW9uKG90aGVyKQogICAgICwgbV9pbm5lck5vZGUob3RoZXIuaW5u
ZXJOb2RlKCkpCiAgICAgLCBtX2lubmVyTm9uU2hhcmVkTm9kZShvdGhlci5pbm5lck5vblNoYXJl
ZE5vZGUoKSkKKyAgICAsIG1fcG9pbnRJbk1haW5GcmFtZShvdGhlci5tX3BvaW50SW5NYWluRnJh
bWUpCiAgICAgLCBtX2xvY2FsUG9pbnQob3RoZXIubG9jYWxQb2ludCgpKQogICAgICwgbV9pbm5l
clVSTEVsZW1lbnQob3RoZXIuVVJMRWxlbWVudCgpKQogICAgICwgbV9zY3JvbGxiYXIob3RoZXIu
c2Nyb2xsYmFyKCkpCkBAIC0yMzYsNiArMjM5LDcgQEAgSGl0VGVzdFJlc3VsdCYgSGl0VGVzdFJl
c3VsdDo6b3BlcmF0b3I9KGNvbnN0IEhpdFRlc3RSZXN1bHQmIG90aGVyKQogICAgIEhpdFRlc3RM
b2NhdGlvbjo6b3BlcmF0b3I9KG90aGVyKTsKICAgICBtX2lubmVyTm9kZSA9IG90aGVyLmlubmVy
Tm9kZSgpOwogICAgIG1faW5uZXJOb25TaGFyZWROb2RlID0gb3RoZXIuaW5uZXJOb25TaGFyZWRO
b2RlKCk7CisgICAgbV9wb2ludEluTWFpbkZyYW1lID0gb3RoZXIubV9wb2ludEluTWFpbkZyYW1l
OwogICAgIG1fbG9jYWxQb2ludCA9IG90aGVyLmxvY2FsUG9pbnQoKTsKICAgICBtX2lubmVyVVJM
RWxlbWVudCA9IG90aGVyLlVSTEVsZW1lbnQoKTsKICAgICBtX3Njcm9sbGJhciA9IG90aGVyLnNj
cm9sbGJhcigpOwpAQCAtMjc5LDYgKzI4MywxNSBAQCB2b2lkIEhpdFRlc3RSZXN1bHQ6OnNldFNj
cm9sbGJhcihTY3JvbGxiYXIqIHMpCiAgICAgbV9zY3JvbGxiYXIgPSBzOwogfQogCitGcmFtZSog
SGl0VGVzdFJlc3VsdDo6aW5uZXJOb2RlRnJhbWUoKSBjb25zdAoreworICAgIGlmIChtX2lubmVy
Tm9uU2hhcmVkTm9kZSkKKyAgICAgICAgcmV0dXJuIG1faW5uZXJOb25TaGFyZWROb2RlLT5kb2N1
bWVudCgpLT5mcmFtZSgpOworICAgIGlmIChtX2lubmVyTm9kZSkKKyAgICAgICAgcmV0dXJuIG1f
aW5uZXJOb2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpOworICAgIHJldHVybiAwOworfQorCiBGcmFt
ZSogSGl0VGVzdFJlc3VsdDo6dGFyZ2V0RnJhbWUoKSBjb25zdAogewogICAgIGlmICghbV9pbm5l
clVSTEVsZW1lbnQpCkBAIC03NDYsNiArNzU5LDcgQEAgdm9pZCBIaXRUZXN0UmVzdWx0OjphcHBl
bmQoY29uc3QgSGl0VGVzdFJlc3VsdCYgb3RoZXIpCiAgICAgICAgIG1faW5uZXJOb2RlID0gb3Ro
ZXIuaW5uZXJOb2RlKCk7CiAgICAgICAgIG1faW5uZXJOb25TaGFyZWROb2RlID0gb3RoZXIuaW5u
ZXJOb25TaGFyZWROb2RlKCk7CiAgICAgICAgIG1fbG9jYWxQb2ludCA9IG90aGVyLmxvY2FsUG9p
bnQoKTsKKyAgICAgICAgbV9wb2ludEluTWFpbkZyYW1lID0gb3RoZXIubV9wb2ludEluTWFpbkZy
YW1lOwogICAgICAgICBtX2lubmVyVVJMRWxlbWVudCA9IG90aGVyLlVSTEVsZW1lbnQoKTsKICAg
ICAgICAgbV9zY3JvbGxiYXIgPSBvdGhlci5zY3JvbGxiYXIoKTsKICAgICAgICAgbV9pc092ZXJX
aWRnZXQgPSBvdGhlci5pc092ZXJXaWRnZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0
VGVzdFJlc3VsdC5oCmluZGV4IDdiM2MxOWU1Y2EzMjM4NTI5ZDM4OGZmOGIyZjkzMTA1ZTNhN2U5
NDAuLmIyMTlhOTdkY2ZkZjRlMjc1MTBhODQzZjRmNzNkYzkxYTA5MTJjOWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6
CiAgICAgfkhpdFRlc3RMb2NhdGlvbigpOwogICAgIEhpdFRlc3RMb2NhdGlvbiYgb3BlcmF0b3I9
KGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYpOwogCi0gICAgTGF5b3V0UG9pbnQgcG9pbnQoKSBjb25z
dCB7IHJldHVybiBtX3BvaW50OyB9CisgICAgY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KCkgY29u
c3QgeyByZXR1cm4gbV9wb2ludDsgfQogICAgIEludFBvaW50IHJvdW5kZWRQb2ludCgpIGNvbnN0
IHsgcmV0dXJuIHJvdW5kZWRJbnRQb2ludChtX3BvaW50KTsgfQogCiAgICAgUmVuZGVyUmVnaW9u
KiByZWdpb24oKSBjb25zdCB7IHJldHVybiBtX3JlZ2lvbjsgfQpAQCAtMTAwLDcgKzEwMCw4IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBtX2lzUmVjdGlsaW5lYXI7CiB9OwogCi1jbGFzcyBIaXRUZXN0
UmVzdWx0IDogcHVibGljIEhpdFRlc3RMb2NhdGlvbiB7CisvLyBGSVhNRTogSGl0VGVzdFJlc3Vs
dCBzaG91bGQgbm90IGJlIGEgSGl0VGVzdExvY2F0aW9uLCBidXQgaW5zdGVhZCBoYXZlIGEgSGl0
VGVzdExvY2F0aW9uLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwMTU5MAorY2xhc3MgSGl0VGVzdFJlc3VsdCA6IHByb3RlY3RlZCBIaXRUZXN0TG9jYXRpb24g
ewogcHVibGljOgogICAgIHR5cGVkZWYgTGlzdEhhc2hTZXQ8UmVmUHRyPE5vZGU+ID4gTm9kZVNl
dDsKIApAQCAtMTE1LDE4ICsxMTYsMzMgQEAgcHVibGljOgogCiAgICAgTm9kZSogaW5uZXJOb2Rl
KCkgY29uc3QgeyByZXR1cm4gbV9pbm5lck5vZGUuZ2V0KCk7IH0KICAgICBOb2RlKiBpbm5lck5v
blNoYXJlZE5vZGUoKSBjb25zdCB7IHJldHVybiBtX2lubmVyTm9uU2hhcmVkTm9kZS5nZXQoKTsg
fQotICAgIExheW91dFBvaW50IGxvY2FsUG9pbnQoKSBjb25zdCB7IHJldHVybiBtX2xvY2FsUG9p
bnQ7IH0KICAgICBFbGVtZW50KiBVUkxFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9pbm5lclVS
TEVsZW1lbnQuZ2V0KCk7IH0KICAgICBTY3JvbGxiYXIqIHNjcm9sbGJhcigpIGNvbnN0IHsgcmV0
dXJuIG1fc2Nyb2xsYmFyLmdldCgpOyB9CiAgICAgYm9vbCBpc092ZXJXaWRnZXQoKSBjb25zdCB7
IHJldHVybiBtX2lzT3ZlcldpZGdldDsgfQogCisgICAgLy8gRm9yd2FyZGVkIGZyb20gSGl0VGVz
dExvY2F0aW9uCisgICAgYm9vbCBpc1JlY3RCYXNlZFRlc3QoKSBjb25zdCB7IHJldHVybiBIaXRU
ZXN0TG9jYXRpb246OmlzUmVjdEJhc2VkVGVzdCgpOyB9CisKKyAgICAvLyBUaGUgaGl0LXRlc3Rl
ZCBwb2ludCBpbiB0aGUgY29vcmRpbmF0ZXMgb2YgdGhlIG1haW4gZnJhbWUuCisgICAgY29uc3Qg
TGF5b3V0UG9pbnQmIHBvaW50SW5NYWluRnJhbWUoKSBjb25zdCB7IHJldHVybiBtX3BvaW50SW5N
YWluRnJhbWU7IH0KKyAgICBJbnRQb2ludCByb3VuZGVkUG9pbnRJbk1haW5GcmFtZSgpIGNvbnN0
IHsgcmV0dXJuIHJvdW5kZWRJbnRQb2ludChwb2ludEluTWFpbkZyYW1lKCkpOyB9CisgICAgdm9p
ZCBzZXRQb2ludEluTWFpbkZyYW1lKGNvbnN0IExheW91dFBvaW50JiBwKSB7IG1fcG9pbnRJbk1h
aW5GcmFtZSA9IHA7IH0KKworICAgIC8vIFRoZSBoaXQtdGVzdGVkIHBvaW50IGluIHRoZSBjb29y
ZGluYXRlcyBvZiB0aGUgaW5uZXJOb2RlIGZyYW1lLCB0aGUgZnJhbWUgY29udGFpbmluZyBpbm5l
ck5vZGUuCisgICAgY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50SW5Jbm5lck5vZGVGcmFtZSgpIGNv
bnN0IHsgcmV0dXJuIEhpdFRlc3RMb2NhdGlvbjo6cG9pbnQoKTsgfQorICAgIEludFBvaW50IHJv
dW5kZWRQb2ludEluSW5uZXJOb2RlRnJhbWUoKSBjb25zdCB7IHJldHVybiByb3VuZGVkSW50UG9p
bnQocG9pbnRJbklubmVyTm9kZUZyYW1lKCkpOyB9CisgICAgRnJhbWUqIGlubmVyTm9kZUZyYW1l
KCkgY29uc3Q7CisKKyAgICAvLyBUaGUgaGl0LXRlc3RlZCBwb2ludCBpbiB0aGUgY29vcmRpbmF0
ZXMgb2YgdGhlIGlubmVyIG5vZGUuCisgICAgY29uc3QgTGF5b3V0UG9pbnQmIGxvY2FsUG9pbnQo
KSBjb25zdCB7IHJldHVybiBtX2xvY2FsUG9pbnQ7IH0KKyAgICB2b2lkIHNldExvY2FsUG9pbnQo
Y29uc3QgTGF5b3V0UG9pbnQmIHApIHsgbV9sb2NhbFBvaW50ID0gcDsgfQorCiAgICAgdm9pZCBz
ZXRUb05vblNoYWRvd0FuY2VzdG9yKCk7CiAKICAgICBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGhp
dFRlc3RMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CiAKICAgICB2b2lkIHNldElu
bmVyTm9kZShOb2RlKik7CiAgICAgdm9pZCBzZXRJbm5lck5vblNoYXJlZE5vZGUoTm9kZSopOwot
ICAgIHZvaWQgc2V0TG9jYWxQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcCkgeyBtX2xvY2FsUG9p
bnQgPSBwOyB9CiAgICAgdm9pZCBzZXRVUkxFbGVtZW50KEVsZW1lbnQqKTsKICAgICB2b2lkIHNl
dFNjcm9sbGJhcihTY3JvbGxiYXIqKTsKICAgICB2b2lkIHNldElzT3ZlcldpZGdldChib29sIGIp
IHsgbV9pc092ZXJXaWRnZXQgPSBiOyB9CkBAIC0xODUsNiArMjAxLDcgQEAgcHJpdmF0ZToKIAog
ICAgIFJlZlB0cjxOb2RlPiBtX2lubmVyTm9kZTsKICAgICBSZWZQdHI8Tm9kZT4gbV9pbm5lck5v
blNoYXJlZE5vZGU7CisgICAgTGF5b3V0UG9pbnQgbV9wb2ludEluTWFpbkZyYW1lOyAvLyBUaGUg
aGl0LXRlc3RlZCBwb2ludCBpbiBtYWluLWZyYW1lIGNvb3JkaW5hdGVzLgogICAgIExheW91dFBv
aW50IG1fbG9jYWxQb2ludDsgLy8gQSBwb2ludCBpbiB0aGUgbG9jYWwgY29vcmRpbmF0ZSBzcGFj
ZSBvZiBtX2lubmVyTm9uU2hhcmVkTm9kZSdzIHJlbmRlcmVyLiBBbGxvd3MgdXMgdG8gZWZmaWNp
ZW50bHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRldGVybWluZSB3aGVyZSBp
bnNpZGUgdGhlIHJlbmRlcmVyIHdlIGhpdCBvbiBzdWJzZXF1ZW50IG9wZXJhdGlvbnMuCiAgICAg
UmVmUHRyPEVsZW1lbnQ+IG1faW5uZXJVUkxFbGVtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAKaW5kZXggYmM0OWZlODIzMWU1NTY1MmZmYzBjMzU1MDMzMWQ3NTc5
ZmQ5ZDAzMy4uMzM1MzdhYTQ5MzllOWM2YzNkMDBiMTQwZWIxMzc5NTc0NTA4M2ZmMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0zNjQyLDcgKzM2NDIsNyBA
QCBib29sIFJlbmRlckxheWVyOjpoaXRUZXN0KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBIaXRUZXN0TG9jYXRpb24mCiAgICAgICAgIC8vIHJldHVybiBvdXJzZWx2ZXMuIFdl
IGRvIHRoaXMgc28gbW91c2UgZXZlbnRzIGNvbnRpbnVlIGdldHRpbmcgZGVsaXZlcmVkIGFmdGVy
IGEgZHJhZyBoYXMgCiAgICAgICAgIC8vIGV4aXRlZCB0aGUgV2ViVmlldywgYW5kIHNvIGhpdCB0
ZXN0aW5nIG92ZXIgYSBzY3JvbGxiYXIgaGl0cyB0aGUgY29udGVudCBkb2N1bWVudC4KICAgICAg
ICAgaWYgKChyZXF1ZXN0LmFjdGl2ZSgpIHx8IHJlcXVlc3QucmVsZWFzZSgpKSAmJiBpc1Jvb3RM
YXllcigpKSB7Ci0gICAgICAgICAgICByZW5kZXJlcigpLT51cGRhdGVIaXRUZXN0UmVzdWx0KHJl
c3VsdCwgdG9SZW5kZXJWaWV3KHJlbmRlcmVyKCkpLT5mbGlwRm9yV3JpdGluZ01vZGUocmVzdWx0
LnBvaW50KCkpKTsKKyAgICAgICAgICAgIHJlbmRlcmVyKCktPnVwZGF0ZUhpdFRlc3RSZXN1bHQo
cmVzdWx0LCB0b1JlbmRlclZpZXcocmVuZGVyZXIoKSktPmZsaXBGb3JXcml0aW5nTW9kZShoaXRU
ZXN0TG9jYXRpb24ucG9pbnQoKSkpOwogICAgICAgICAgICAgaW5zaWRlTGF5ZXIgPSB0aGlzOwog
ICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
Q2hyb21lQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVD
bGllbnRJbXBsLmNwcAppbmRleCAyYjNhNWMyODc0ZWFkNTY1ZWUyMzYwYjE1OGQ0N2Q5OTYzYmQ4
YTYwLi41OGI4MmQyMDAxOTM1ODZjZmRhNjU1ZGVjZjg0ZDAyYTllNzhmNmFhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcApAQCAtNTk2LDcg
KzU5Niw3IEBAIHZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQo
CiAgICAgICAgICAgICBXaWRnZXQqIHdpZGdldCA9IHRvUmVuZGVyV2lkZ2V0KG9iamVjdCktPndp
ZGdldCgpOwogICAgICAgICAgICAgaWYgKHdpZGdldCAmJiB3aWRnZXQtPmlzUGx1Z2luQ29udGFp
bmVyKCkpIHsKICAgICAgICAgICAgICAgICBXZWJQbHVnaW5Db250YWluZXJJbXBsKiBwbHVnaW4g
PSBzdGF0aWNfY2FzdDxXZWJQbHVnaW5Db250YWluZXJJbXBsKj4od2lkZ2V0KTsKLSAgICAgICAg
ICAgICAgICB1cmwgPSBwbHVnaW4tPnBsdWdpbigpLT5saW5rQXRQb3NpdGlvbihyZXN1bHQucm91
bmRlZFBvaW50KCkpOworICAgICAgICAgICAgICAgIHVybCA9IHBsdWdpbi0+cGx1Z2luKCktPmxp
bmtBdFBvc2l0aW9uKHJlc3VsdC5yb3VuZGVkUG9pbnRJbklubmVyTm9kZUZyYW1lKCkpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvQ29udGV4dE1lbnVDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0NvbnRleHRNZW51Q2xpZW50SW1wbC5jcHAKaW5kZXggOTU1NDYwMDcyYmI4MWE1
NTI2ZDkxY2JjMTQ0MzQ4NThlYWMyZGRhMy4uYTQ3YzQwNWNiYmM2YWMzZWEyMWMyYTA3NGNmMTQ2
OTE1YjU3ZWFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ29udGV4
dE1lbnVDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Db250
ZXh0TWVudUNsaWVudEltcGwuY3BwCkBAIC0xMjAsNyArMTIwLDcgQEAgc3RhdGljIFN0cmluZyBz
ZWxlY3RNaXNzcGVsbGVkV29yZChjb25zdCBDb250ZXh0TWVudSogZGVmYXVsdE1lbnUsIEZyYW1l
KiBzZWxlY3QKIAogICAgIC8vIFNlbGVjdGlvbiBpcyBlbXB0eSwgc28gY2hhbmdlIHRoZSBzZWxl
Y3Rpb24gdG8gdGhlIHdvcmQgdW5kZXIgdGhlIGN1cnNvci4KICAgICBIaXRUZXN0UmVzdWx0IGhp
dFRlc3RSZXN1bHQgPSBzZWxlY3RlZEZyYW1lLT5ldmVudEhhbmRsZXIoKS0+Ci0gICAgICAgIGhp
dFRlc3RSZXN1bHRBdFBvaW50KHNlbGVjdGVkRnJhbWUtPnBhZ2UoKS0+Y29udGV4dE1lbnVDb250
cm9sbGVyKCktPmhpdFRlc3RSZXN1bHQoKS5wb2ludCgpLCB0cnVlKTsKKyAgICAgICAgaGl0VGVz
dFJlc3VsdEF0UG9pbnQoc2VsZWN0ZWRGcmFtZS0+cGFnZSgpLT5jb250ZXh0TWVudUNvbnRyb2xs
ZXIoKS0+aGl0VGVzdFJlc3VsdCgpLnBvaW50SW5Jbm5lck5vZGVGcmFtZSgpLCB0cnVlKTsKICAg
ICBOb2RlKiBpbm5lck5vZGUgPSBoaXRUZXN0UmVzdWx0LmlubmVyTm9kZSgpOwogICAgIFZpc2li
bGVQb3NpdGlvbiBwb3MoaW5uZXJOb2RlLT5yZW5kZXJlcigpLT5wb3NpdGlvbkZvclBvaW50KAog
ICAgICAgICBoaXRUZXN0UmVzdWx0LmxvY2FsUG9pbnQoKSkpOwpAQCAtMTU1LDEwICsxNTUsMTAg
QEAgUGxhdGZvcm1NZW51RGVzY3JpcHRpb24gQ29udGV4dE1lbnVDbGllbnRJbXBsOjpnZXRDdXN0
b21NZW51RnJvbURlZmF1bHRJdGVtcygKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBIaXRUZXN0
UmVzdWx0IHIgPSBtX3dlYlZpZXctPnBhZ2UoKS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCktPmhp
dFRlc3RSZXN1bHQoKTsKLSAgICBGcmFtZSogc2VsZWN0ZWRGcmFtZSA9IHIuaW5uZXJOb25TaGFy
ZWROb2RlKCktPmRvY3VtZW50KCktPmZyYW1lKCk7CisgICAgRnJhbWUqIHNlbGVjdGVkRnJhbWUg
PSByLmlubmVyTm9kZUZyYW1lKCk7CiAKICAgICBXZWJDb250ZXh0TWVudURhdGEgZGF0YTsKLSAg
ICBkYXRhLm1vdXNlUG9zaXRpb24gPSBzZWxlY3RlZEZyYW1lLT52aWV3KCktPmNvbnRlbnRzVG9X
aW5kb3coci5yb3VuZGVkUG9pbnQoKSk7CisgICAgZGF0YS5tb3VzZVBvc2l0aW9uID0gc2VsZWN0
ZWRGcmFtZS0+dmlldygpLT5jb250ZW50c1RvV2luZG93KHIucm91bmRlZFBvaW50SW5Jbm5lck5v
ZGVGcmFtZSgpKTsKIAogICAgIC8vIENvbXB1dGUgZWRpdCBmbGFncy4KICAgICBkYXRhLmVkaXRG
bGFncyA9IFdlYkNvbnRleHRNZW51RGF0YTo6Q2FuRG9Ob25lOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKaW5kZXggMTkzNjQ3NmYzYWUxYTIwMTQwMzNkYzNm
ZGI3ZTBjYWI1Y2E4YzdmMi4uMDYyNzU5YzgzMDA3NWVkNmUwMGRhMDlkY2Y1NDhjZDc3NjQyNWJj
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCkBAIC0x
MjAyLDcgKzEyMDIsNyBAQCBzaXplX3QgV2ViRnJhbWVJbXBsOjpjaGFyYWN0ZXJJbmRleEZvclBv
aW50KGNvbnN0IFdlYlBvaW50JiB3ZWJQb2ludCkgY29uc3QKIAogICAgIEludFBvaW50IHBvaW50
ID0gZnJhbWUoKS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHdlYlBvaW50KTsKICAgICBIaXRU
ZXN0UmVzdWx0IHJlc3VsdCA9IGZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0
QXRQb2ludChwb2ludCwgZmFsc2UpOwotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBmcmFtZSgp
LT5yYW5nZUZvclBvaW50KHJlc3VsdC5yb3VuZGVkUG9pbnQoKSk7CisgICAgUmVmUHRyPFJhbmdl
PiByYW5nZSA9IGZyYW1lKCktPnJhbmdlRm9yUG9pbnQocmVzdWx0LnJvdW5kZWRQb2ludEluSW5u
ZXJOb2RlRnJhbWUoKSk7CiAgICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuIG5vdEZvdW5k
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCmluZGV4IDczOGE5MzkxOGYzMDE5MWI1
MjZjNmZmMThiMjk1YWZjOWI3YjlhN2QuLjczNTY5NGIwODgxNDQ3YmFiNDBmZjVjMDk4NzEwNzdl
YjkyMDZiMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCkBAIC03MDIsOCArNzAy
LDggQEAgRXdrX0hpdF9UZXN0KiBld2tfZnJhbWVfaGl0X3Rlc3RfbmV3KGNvbnN0IEV2YXNfT2Jq
ZWN0KiBld2tGcmFtZSwgaW50IHgsIGludCB5KQogICAgICAgICByZXR1cm4gMDsKIAogICAgIEV3
a19IaXRfVGVzdCogaGl0VGVzdCA9IG5ldyBFd2tfSGl0X1Rlc3Q7Ci0gICAgaGl0VGVzdC0+eCA9
IHJlc3VsdC5wb2ludCgpLngoKTsKLSAgICBoaXRUZXN0LT55ID0gcmVzdWx0LnBvaW50KCkueSgp
OworICAgIGhpdFRlc3QtPnggPSByZXN1bHQucG9pbnRJbk1haW5GcmFtZSgpLngoKTsKKyAgICBo
aXRUZXN0LT55ID0gcmVzdWx0LnBvaW50SW5NYWluRnJhbWUoKS55KCk7CiAjaWYgMAogICAgIC8v
IEZJWE1FCiAgICAgaGl0VGVzdC0+Ym91bmRpbmdfYm94LnggPSByZXN1bHQuYm91bmRpbmdCb3go
KS54KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0aGl0dGVz
dHJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0aGl0dGVzdHJlc3Vs
dC5jcHAKaW5kZXggMWE5NDM0YWYwZjVkY2FlM2RiMTU4MDM0YjQ2NDMyMGI4NjZjMWRjYS4uOTE2
MjYyZDFlMjRlYmZhNjU1MTBkMTYwNmEzMzdmZmJmMDM5ZjgxZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGhpdHRlc3RyZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRoaXR0ZXN0cmVzdWx0LmNwcApAQCAtMjg4LDcgKzI4OCw3
IEBAIFdlYktpdEhpdFRlc3RSZXN1bHQqIGtpdChjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0
JiByZXN1bHQpCiAgICAgR093blB0cjxjaGFyPiBpbWFnZVVSSSgwKTsKICAgICBHT3duUHRyPGNo
YXI+IG1lZGlhVVJJKDApOwogICAgIFdlYktpdERPTU5vZGUqIG5vZGUgPSAwOwotICAgIFdlYkNv
cmU6OkZyYW1lKiB0YXJnZXRGcmFtZTsKKyAgICBXZWJDb3JlOjpGcmFtZSogaW5uZXJOb2RlRnJh
bWU7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQ7CiAKICAgICBpZiAoIXJlc3VsdC5hYnNv
bHV0ZUxpbmtVUkwoKS5pc0VtcHR5KCkpIHsKQEAgLTMxNSwxMiArMzE1LDEyIEBAIFdlYktpdEhp
dFRlc3RSZXN1bHQqIGtpdChjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0JiByZXN1bHQpCiAg
ICAgaWYgKHJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKSkKICAgICAgICAgbm9kZSA9IGtpdChy
ZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCkpOwogCi0gICAgdGFyZ2V0RnJhbWUgPSByZXN1bHQu
dGFyZ2V0RnJhbWUoKTsKLSAgICBpZiAodGFyZ2V0RnJhbWUgJiYgdGFyZ2V0RnJhbWUtPnZpZXco
KSkgeworICAgIGlubmVyTm9kZUZyYW1lID0gcmVzdWx0LmlubmVyTm9kZUZyYW1lKCk7CisgICAg
aWYgKGlubmVyTm9kZUZyYW1lICYmIGlubmVyTm9kZUZyYW1lLT52aWV3KCkpIHsKICAgICAgICAg
Ly8gQ29udmVydCBkb2N1bWVudCBjb29yZHMgdG8gd2lkZ2V0IGNvb3Jkcy4KLSAgICAgICAgcG9p
bnQgPSB0YXJnZXRGcmFtZS0+dmlldygpLT5jb250ZW50c1RvV2luZG93KHJlc3VsdC5yb3VuZGVk
UG9pbnQoKSk7CisgICAgICAgIHBvaW50ID0gaW5uZXJOb2RlRnJhbWUtPnZpZXcoKS0+Y29udGVu
dHNUb1dpbmRvdyhyZXN1bHQucm91bmRlZFBvaW50SW5Jbm5lck5vZGVGcmFtZSgpKTsKICAgICB9
IGVsc2UKLSAgICAgICAgcG9pbnQgPSByZXN1bHQucm91bmRlZFBvaW50KCk7CisgICAgICAgIHBv
aW50ID0gcmVzdWx0LnJvdW5kZWRQb2ludEluTWFpbkZyYW1lKCk7CiAKICAgICByZXR1cm4gV0VC
S0lUX0hJVF9URVNUX1JFU1VMVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfSElUX1RFU1RfUkVT
VUxULAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGlu
ay11cmkiLCBsaW5rVVJJLmdldCgpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQppbmRleCBlMzEzMTM2MDM2Zjc4
ZDYwMTcyMzA2OTJlZDhjNjc5MDhlOWQ0M2UwLi4xZDUxOTFiNTRlYzhmNDIzMDc5NmFmODQ1ODYx
M2ViODllZDFhZjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQpAQCAtMzU2LDE3ICszNTYsMTQgQEAgdm9p
ZCBXZWJDb250ZXh0TWVudUNsaWVudDo6c2hvd0NvbnRleHRNZW51KCkKICAgICBpZiAoIXBhZ2Up
CiAgICAgICAgIHJldHVybjsKICAgICBDb250ZXh0TWVudUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIg
PSBwYWdlLT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKTsKLSAgICBOb2RlKiBub2RlID0gY29udHJv
bGxlci0+aGl0VGVzdFJlc3VsdCgpLmlubmVyTm9uU2hhcmVkTm9kZSgpOwotICAgIGlmICghbm9k
ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIEZyYW1lKiBmcmFtZSA9IG5vZGUtPmRvY3VtZW50KCkt
PmZyYW1lKCk7CisgICAgRnJhbWUqIGZyYW1lID0gY29udHJvbGxlci0+aGl0VGVzdFJlc3VsdCgp
LmlubmVyTm9kZUZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogICAg
IEZyYW1lVmlldyogZnJhbWVWaWV3ID0gZnJhbWUtPnZpZXcoKTsKICAgICBpZiAoIWZyYW1lVmll
dykKICAgICAgICAgcmV0dXJuOwogCi0gICAgSW50UG9pbnQgcG9pbnQgPSBmcmFtZVZpZXctPmNv
bnRlbnRzVG9XaW5kb3coY29udHJvbGxlci0+aGl0VGVzdFJlc3VsdCgpLnJvdW5kZWRQb2ludCgp
KTsKKyAgICBJbnRQb2ludCBwb2ludCA9IGZyYW1lVmlldy0+Y29udGVudHNUb1dpbmRvdyhjb250
cm9sbGVyLT5oaXRUZXN0UmVzdWx0KCkucm91bmRlZFBvaW50SW5Jbm5lck5vZGVGcmFtZSgpKTsK
ICAgICBOU1ZpZXcqIHZpZXcgPSBmcmFtZVZpZXctPmRvY3VtZW50VmlldygpOwogICAgIE5TUG9p
bnQgbnNTY3JlZW5Qb2ludCA9IFt2aWV3IGNvbnZlcnRQb2ludDpwb2ludCB0b1ZpZXc6bmlsXTsK
ICAgICAvLyBTaG93IHRoZSBjb250ZXh0dWFsIG1lbnUgZm9yIHRoaXMgZXZlbnQuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9x
dC9BcGkvcXdlYmZyYW1lLmNwcAppbmRleCAwYWNjZDMzNjJkZDY4NzM0Y2ZkZjIxMzg1ZWMzODA2
NGYyYzEzMWJmLi5mMTVhYWYzMzhhZTNkZDg4NWNhOGFkYTJlZjNhY2U3ZTRlZmJlMDEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAKQEAgLTE1OTgsNyArMTU5OCw3IEBAIFFXZWJIaXRU
ZXN0UmVzdWx0UHJpdmF0ZTo6UVdlYkhpdFRlc3RSZXN1bHRQcml2YXRlKGNvbnN0IFdlYkNvcmU6
OkhpdFRlc3RSZXN1bHQKIHsKICAgICBpZiAoIWhpdFRlc3QuaW5uZXJOb2RlKCkpCiAgICAgICAg
IHJldHVybjsKLSAgICBwb3MgPSBoaXRUZXN0LnJvdW5kZWRQb2ludCgpOworICAgIHBvcyA9IGhp
dFRlc3Qucm91bmRlZFBvaW50SW5NYWluRnJhbWUoKTsKICAgICBXZWJDb3JlOjpUZXh0RGlyZWN0
aW9uIGRpcjsKICAgICB0aXRsZSA9IGhpdFRlc3QudGl0bGUoZGlyKTsKICAgICBsaW5rVGV4dCA9
IGhpdFRlc3QudGV4dENvbnRlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBp
L3F3ZWJwYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAppbmRleCBh
ZGU0OTZmYTQ0YWUzZDdlZThkNjcxMzQ0NDY1OThjZjJkYWY0NGJiLi4wMjM4M2FjNjc0MTU4NDkw
NGQ4MmNhMGQ3ODJlYzk2NzI4OWRlODg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0Fw
aS9xd2VicGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCkBA
IC0xNTgyLDcgKzE1ODIsNyBAQCBJbnRQb2ludCBRV2ViUGFnZVByaXZhdGU6OlRvdWNoQWRqdXN0
ZXI6OmZpbmRDYW5kaWRhdGVQb2ludEZvclRvdWNoKGNvbnN0IEludFBvaQogICAgIEZyYW1lVmll
dyogdmlldyA9IGRvY3VtZW50LT5mcmFtZSgpLT52aWV3KCk7CiAKICAgICAvLyBUb3VjaCByZWN0
IGluIGNvbnRlbnRzIGNvb3JkaW5hdGVzLgotICAgIEludFJlY3QgdG91Y2hSZWN0KEhpdFRlc3RS
ZXN1bHQ6OnJlY3RGb3JQb2ludCh2aWV3LT53aW5kb3dUb0NvbnRlbnRzKEludFBvaW50KHgsIHkp
KSwgbV90b3BQYWRkaW5nLCBtX3JpZ2h0UGFkZGluZywgbV9ib3R0b21QYWRkaW5nLCBtX2xlZnRQ
YWRkaW5nKSk7CisgICAgSW50UmVjdCB0b3VjaFJlY3QoSGl0VGVzdExvY2F0aW9uOjpyZWN0Rm9y
UG9pbnQodmlldy0+d2luZG93VG9Db250ZW50cyhJbnRQb2ludCh4LCB5KSksIG1fdG9wUGFkZGlu
ZywgbV9yaWdodFBhZGRpbmcsIG1fYm90dG9tUGFkZGluZywgbV9sZWZ0UGFkZGluZykpOwogCiAg
ICAgLy8gSXRlcmF0ZSBvdmVyIHRoZSBsaXN0IG9mIG5vZGVzIGhpdCBsb29raW5nIGZvciB0aGUg
b25lIHdob3NlIGJvdW5kaW5nIGFyZWEKICAgICAvLyBoYXMgbGFyZ2VzdCBpbnRlcnNlY3Rpb24g
d2l0aCB0aGUgdG91Y2ggYXJlYSAocG9pbnQgKyBwYWRkaW5nKS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAK
aW5kZXggMzM4Zjk1YzA0ZDY3MzBkM2U0MDM0YmY3NzA5ZjZlNTFkMTQ4YTU4MC4uMzhkMmU1MTVl
MGUxMWY3OGM1MmU3YWI4YjEwNDcwZDRlYzRhYjhkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKQEAg
LTEzNTAsMTEgKzEzNTAsNyBAQCBib29sIFdlYlZpZXc6OmhhbmRsZUNvbnRleHRNZW51RXZlbnQo
V1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKICAgICBpZiAoIWNvcmVNZW51KQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBOb2RlKiBub2RlID0gY29udGV4dE1lbnVDb250cm9sbGVy
LT5oaXRUZXN0UmVzdWx0KCkuaW5uZXJOb25TaGFyZWROb2RlKCk7Ci0gICAgaWYgKCFub2RlKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBGcmFtZSogZnJhbWUgPSBub2RlLT5kb2N1bWVu
dCgpLT5mcmFtZSgpOworICAgIEZyYW1lKiBmcmFtZSA9IGNvbnRleHRNZW51Q29udHJvbGxlci0+
aGl0VGVzdFJlc3VsdCgpLmlubmVyTm9kZUZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xMzYyLDcgKzEzNTgsNyBAQCBib29sIFdlYlZpZXc6Omhh
bmRsZUNvbnRleHRNZW51RXZlbnQoV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKICAgICBp
ZiAoIXZpZXcpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFBPSU5UIHBvaW50KHZpZXct
PmNvbnRlbnRzVG9XaW5kb3coY29udGV4dE1lbnVDb250cm9sbGVyLT5oaXRUZXN0UmVzdWx0KCku
cm91bmRlZFBvaW50KCkpKTsKKyAgICBQT0lOVCBwb2ludCh2aWV3LT5jb250ZW50c1RvV2luZG93
KGNvbnRleHRNZW51Q29udHJvbGxlci0+aGl0VGVzdFJlc3VsdCgpLnJvdW5kZWRQb2ludEluSW5u
ZXJOb2RlRnJhbWUoKSkpOwogCiAgICAgLy8gVHJhbnNsYXRlIHRoZSBwb2ludCB0byBzY3JlZW4g
Y29vcmRpbmF0ZXMKICAgICBpZiAoITo6Q2xpZW50VG9TY3JlZW4obV92aWV3V2luZG93LCAmcG9p
bnQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNv
bnRleHRNZW51LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb250
ZXh0TWVudS5jcHAKaW5kZXggM2E5MWQ5MGI3NTVlNjhkN2Q1MzU5NzkzYWNlMGZlMzc1YWU2ODYx
MC4uMzI3M2JkYzA5ZWRmMDBjMzI4MDM5ZjU1MjU4YjlkYTk4MmJmMDkzMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvbnRleHRNZW51LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29udGV4dE1lbnUuY3BwCkBA
IC01OSwxMCArNTksNyBAQCB2b2lkIFdlYkNvbnRleHRNZW51OjpzaG93KCkKICAgICBDb250ZXh0
TWVudSogbWVudSA9IGNvbnRyb2xsZXItPmNvbnRleHRNZW51KCk7CiAgICAgaWYgKCFtZW51KQog
ICAgICAgICByZXR1cm47Ci0gICAgTm9kZSogbm9kZSA9IGNvbnRyb2xsZXItPmhpdFRlc3RSZXN1
bHQoKS5pbm5lck5vblNoYXJlZE5vZGUoKTsKLSAgICBpZiAoIW5vZGUpCi0gICAgICAgIHJldHVy
bjsKLSAgICBGcmFtZSogZnJhbWUgPSBub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpOworICAgIEZy
YW1lKiBmcmFtZSA9IGNvbnRyb2xsZXItPmhpdFRlc3RSZXN1bHQoKS5pbm5lck5vZGVGcmFtZSgp
OwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKICAgICBGcmFtZVZpZXcqIHZpZXcg
PSBmcmFtZS0+dmlldygpOwpAQCAtODYsNyArODMsNyBAQCB2b2lkIFdlYkNvbnRleHRNZW51Ojpz
aG93KCkKIAogICAgIC8vIE1hcmsgdGhlIFdlYlBhZ2UgaGFzIGhhdmluZyBhIHNob3duIGNvbnRl
eHQgbWVudSB0aGVuIG5vdGlmeSB0aGUgVUlQcm9jZXNzLgogICAgIG1fcGFnZS0+Y29udGV4dE1l
bnVTaG93aW5nKCk7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNo
b3dDb250ZXh0TWVudSh2aWV3LT5jb250ZW50c1RvV2luZG93KGNvbnRyb2xsZXItPmhpdFRlc3RS
ZXN1bHQoKS5yb3VuZGVkUG9pbnQoKSksIHdlYkhpdFRlc3RSZXN1bHREYXRhLCBwcm9wb3NlZE1l
bnUsIEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOwor
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaG93Q29udGV4dE1lbnUo
dmlldy0+Y29udGVudHNUb1dpbmRvdyhjb250cm9sbGVyLT5oaXRUZXN0UmVzdWx0KCkucm91bmRl
ZFBvaW50SW5Jbm5lck5vZGVGcmFtZSgpKSwgd2ViSGl0VGVzdFJlc3VsdERhdGEsIHByb3Bvc2Vk
TWVudSwgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7
CiB9CiAKIHZvaWQgV2ViQ29udGV4dE1lbnU6Oml0ZW1TZWxlY3RlZChjb25zdCBXZWJDb250ZXh0
TWVudUl0ZW1EYXRhJiBpdGVtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IDBmZWU5YzE4YWQxYWNjNjJlMDY2MmQ4NGYw
NmEwZTU2ZGZlZjE3NmIuLjVmMDlkNzUxYjczZWVmNTkxMWIyMWNlMDgyYTdlZTZkNjk5YjJkZDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFn
ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBh
Z2VNYWMubW0KQEAgLTM4NCw5ICszODQsOSBAQCB2b2lkIFdlYlBhZ2U6OmNoYXJhY3RlckluZGV4
Rm9yUG9pbnQoSW50UG9pbnQgcG9pbnQsIHVpbnQ2NF90JiBpbmRleCkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhp
dFRlc3RSZXN1bHRBdFBvaW50KHBvaW50LCBmYWxzZSk7Ci0gICAgZnJhbWUgPSByZXN1bHQuaW5u
ZXJOb25TaGFyZWROb2RlKCkgPyByZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCktPmRvY3VtZW50
KCktPmZyYW1lKCkgOiBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJh
bWUoKTsKKyAgICBmcmFtZSA9IHJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKSA/IHJlc3VsdC5p
bm5lck5vZGVGcmFtZSgpIDogbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFp
bkZyYW1lKCk7CiAgICAgCi0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IGZyYW1lLT5yYW5nZUZv
clBvaW50KHJlc3VsdC5yb3VuZGVkUG9pbnQoKSk7CisgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9
IGZyYW1lLT5yYW5nZUZvclBvaW50KHJlc3VsdC5yb3VuZGVkUG9pbnRJbklubmVyTm9kZUZyYW1l
KCkpOwogICAgIGlmICghcmFuZ2UpCiAgICAgICAgIHJldHVybjsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175377</attachid>
            <date>2012-11-21 01:39:28 -0800</date>
            <delta_ts>2012-11-21 07:20:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98139-20121121103649.patch</filename>
            <type>text/plain</type>
            <size>29957</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MzU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTBkMjdkNWU3N2M1OTQ3
Y2UxMmVmMjViMjI0ZWM2ZjI4OWVkNzJjYy4uMWMwMzYyOTRmNzU3YTE4MjcxYWE2Y2JlNGI4ZTVm
NWZmZDAyN2M5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTExLTEyICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIERp
c2FtYmlndWF0ZSBpbm5lck5vZGVGcmFtZVBvaW50IGFuZCBtYWluRnJhbWVQb2ludAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgxMzkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTcGxpdHMgdGhlIHBvaW50
KCkgbWV0aG9kIGluIEhpdFRlc3RSZXN1bHQgaW50byB0d28sIGlubmVyTm9kZUZyYW1lUG9pbnQg
YW5kIG1haW5GcmFtZVBvaW50KCkuCisgICAgICAgIFRvIGRvIHRoaXMgSGl0VGVzdFJlc3VsdCBu
byBsb25nZXIgaW5oZXJpdHMgcHVibGljYWxseSBmcm9tIEhpdFRlc3RMb2NhdGlvbiwgd2hpY2gg
c2hvdWxkIGFsc28KKyAgICAgICAgaGVscCB0byBsYXRlciBzZXBhcmF0ZSB0aGUgdHdvIGNsYXNz
ZXMgY29tcGxldGVseS4KKworICAgICAgICBNYW55IG9mIHRoZSBjYWxsLXNpdGVzIG9mIGhpdFRl
c3RSZXN1bHRBdFBvaW50IGNvbmZ1c2VzIHdoaWNoIGNvb3JkaW5hdGVzIHRoZSBwb2ludCBpcyBp
bi4KKyAgICAgICAgU29tZSwgYnV0IG5vdCBhbGwgY2FsbC1zaXRlcyBoYXZlIGJlZW4gYWxsIGNs
ZWFuZWQgdXAgaW4gdGhpcyBwYXRjaCwgYW5kIHRoZXkgc2hvdWxkIGJlCisgICAgICAgIGF1ZGl0
ZWQgYnkgdGhlIGluZGl2aWR1YWwgcG9ydHMuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoK
KyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
Om5vZGVzRnJvbVJlY3QpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZXZlbnRNYXlTdGFydERyYWcpOgorICAgICAgICAo
V2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoaXRUZXN0UmVzdWx0QXRQb2ludCk6CisgICAgICAgICog
cmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJl
c3VsdDo6SGl0VGVzdFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0Ojpv
cGVyYXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6aW5uZXJOb2RlRnJh
bWUpOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6YXBwZW5kKToKKyAgICAgICAg
KiByZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdExv
Y2F0aW9uOjpwb2ludCk6CisgICAgICAgIChIaXRUZXN0UmVzdWx0KToKKyAgICAgICAgKFdlYkNv
cmU6OkhpdFRlc3RSZXN1bHQ6OmlzUmVjdEJhc2VkVGVzdCk6CisgICAgICAgIChXZWJDb3JlOjpI
aXRUZXN0UmVzdWx0Ojpwb2ludEluTWFpbkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRl
c3RSZXN1bHQ6OnJvdW5kZWRQb2ludEluTWFpbkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Okhp
dFRlc3RSZXN1bHQ6OnNldFBvaW50SW5NYWluRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SGl0
VGVzdFJlc3VsdDo6cG9pbnRJbklubmVyTm9kZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Okhp
dFRlc3RSZXN1bHQ6OnJvdW5kZWRQb2ludEluSW5uZXJOb2RlRnJhbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6SGl0VGVzdFJlc3VsdDo6bG9jYWxQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRU
ZXN0UmVzdWx0OjpzZXRMb2NhbFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmhpdFRlc3QpOgorCiAyMDEy
LTExLTIxICBLdW5paGlrbyBTYWthbW90byAgPGtzYWthbW90b0BjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgRW5hYmxlIGRhdGFsaXN0IFVJIGZvciBpbnB1dCB0eXBlcyBkYXRldGltZSBhbmQgZGF0
ZXRpbWUtbG9jYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggN2Q4M2VlZDBlYmQ5NjZh
Y2UwOTBhNzNhMGJlOGYyZjRjYmExMjMxNC4uNmM5N2I5YmMzZmMxNDhlMmZlMjdiODk2Y2U5YTMy
N2VhNzllYzQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAor
MjAxMi0xMS0xMiAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNv
bT4KKworICAgICAgICBEaXNhbWJpZ3VhdGUgaW5uZXJOb2RlRnJhbWVQb2ludCBhbmQgbWFpbkZy
YW1lUG9pbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk4MTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVu
dEltcGw6Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KToKKyAgICAgICAgKiBzcmMvQ29udGV4dE1l
bnVDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6c2VsZWN0TWlzc3BlbGxlZFdvcmQp
OgorICAgICAgICAoV2ViS2l0OjpDb250ZXh0TWVudUNsaWVudEltcGw6OmdldEN1c3RvbU1lbnVG
cm9tRGVmYXVsdEl0ZW1zKToKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjpjaGFyYWN0ZXJJbmRleEZvclBvaW50KToKKwogMjAx
Mi0xMS0yMCAgUmFjaGVsIEJsdW0gIDxncm9ieUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0No
cm9taXVtXSBOZWVkIHNwZWxsY2hlY2sgc3VnZ2VzdGlvbnMgZXZlbiBpZiBjb250aW51b3VzIGNo
ZWNrIGlzIG9mZi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCAwZTM5ZTcxNzZhOTYwOGQxZDFjYmQ4ZWY4
MGUwZjkyYzEyNGZhZWRhLi41YzgyOWVlN2VjZTI2Mjc0ZjBjM2Y2ZWRjNWViY2UwY2JhN2UwMjdi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMTEtMTIgIEFsbGFuIFNh
bmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CisKKyAgICAgICAgRGlzYW1i
aWd1YXRlIGlubmVyTm9kZUZyYW1lUG9pbnQgYW5kIG1haW5GcmFtZVBvaW50IAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgxMzkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3Bw
OgorICAgICAgICAoZXdrX2ZyYW1lX2hpdF90ZXN0X25ldyk6CisKIDIwMTItMTEtMjAgIFNoZXJp
ZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3
ZWQsIHJvbGxpbmcgb3V0IHIxMzUyOTUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggMmJlZmMxOGM5Nzk2
YmU1OGExZmU1Y2U0MGU3MWNlZWJlYjY0ZWU4Zi4uNDdmYmZhYjNlYzA2MWYyZWE2ZjlhZTM4Zjdk
NWJmZDgyY2Y1NzAzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTEx
LTEyICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisg
ICAgICAgIERpc2FtYmlndWF0ZSBpbm5lck5vZGVGcmFtZVBvaW50IGFuZCBtYWluRnJhbWVQb2lu
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgxMzkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTd2l0Y2hl
ZCB0byB1c2luZyBwb2ludCBpbiBpbm5lck5vZGVGcmFtZS4gV2hpbGUgdGhlIHVzZSBoZXJlIHNl
ZW1zIHdyb25nIGl0IGhhcyBiZWVuCisgICAgICAgIGxlZnQgZnVuY3Rpb25hbGx5IHVuY2hhbmdl
ZCB0byBiZSBmaXhlZCBieSBhIGxhdGVyIHBhdGNoLgorCisgICAgICAgICogd2Via2l0L3dlYmtp
dGhpdHRlc3RyZXN1bHQuY3BwOgorICAgICAgICAoV2ViS2l0OjpraXQpOgorCiAyMDEyLTExLTIw
ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLCByb2xsaW5nIG91dCByMTM1Mjk1LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDQwYzI0
M2Q2NzNjZGE4NWYxMzc0NTk1ZGQ1YjVhNjE3MjQ2N2NmM2MuLjFiNmZlNDQyMGZhZjQyZWRhNWMw
NGE3YzgxNDk3ODU3MjUyYjNkYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAor
MjAxMi0xMS0xMiAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNv
bT4KKworICAgICAgICBEaXNhbWJpZ3VhdGUgaW5uZXJOb2RlRnJhbWVQb2ludCBhbmQgbWFpbkZy
YW1lUG9pbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk4MTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
U3dpdGNoIHRvIHVzaW5nIEhpdFRlc3RSZXN1bHQ6OmlubmVyTm9kZUZyYW1lIGFuZCBIaXRUZXN0
UmVzdWx0Ojppbm5lck5vZGVGcmFtZVBvaW50LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViQ29udGV4dE1lbnVDbGllbnQubW06CisgICAgICAgIChXZWJDb250ZXh0TWVudUNsaWVudDo6
c2hvd0NvbnRleHRNZW51KToKKwogMjAxMi0xMS0yMCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2
aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEz
NTI5NS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggMTcwNjU3MzRmNGRlYjBlYmY3ODFiNjQyOGFlYTExN2M5
MTY3MTgwNS4uZjMwYmM3MTc1NzM3MWZiZmJlNTg0MmRhYmQzZmRhMzFjOTFhMWZlNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9xdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0xMS0xMiAgQWxsYW4gU2FuZGZlbGQgSmVu
c2VuICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KKworICAgICAgICBEaXNhbWJpZ3VhdGUgaW5u
ZXJOb2RlRnJhbWVQb2ludCBhbmQgbWFpbkZyYW1lUG9pbnQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAg
KFFXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZTo6UVdlYkhpdFRlc3RSZXN1bHRQcml2YXRlKToKKyAg
ICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpUb3Vj
aEFkanVzdGVyOjpmaW5kQ2FuZGlkYXRlUG9pbnRGb3JUb3VjaCk6CisKIDIwMTItMTEtMjAgIFNo
ZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMzUyOTUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggMDYyOTA3YjVj
ZGJjYzk3YWE1MDhhZjM3ZDFmZjVkMTI0ZjE2MzA3YS4uMmY1YjkzYWJiZjdmZWMzNTg3MTA5OTRh
YWU2Mzg5ZDZjMjRjNDRmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEy
LTExLTEyICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgor
CisgICAgICAgIERpc2FtYmlndWF0ZSBpbm5lck5vZGVGcmFtZVBvaW50IGFuZCBtYWluRnJhbWVQ
b2ludAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgx
MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6aGFuZGxlQ29udGV4dE1lbnVFdmVudCk6CisK
IDIwMTItMTEtMjAgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMzUyOTUuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
NDUwMDYxOTRmNThiNjZkOWFhNjJiYTdlZjRkMWE3ZTFkNDNkNmE5Ny4uOGM0ZmEzODc2NjIzZTAx
MzE4YjNkOTEyZTY4NGE4OGY3ODRlNjdkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisy
MDEyLTExLTEyICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29t
PgorCisgICAgICAgIERpc2FtYmlndWF0ZSBpbm5lck5vZGVGcmFtZVBvaW50IGFuZCBtYWluRnJh
bWVQb2ludAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTgxMzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBT
d2l0Y2ggdG8gdXNpbmcgSGl0VGVzdFJlc3VsdDo6aW5uZXJOb2RlRnJhbWUgYW5kIEhpdFRlc3RS
ZXN1bHQ6OmlubmVyTm9kZUZyYW1lUG9pbnQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViQ29udGV4dE1lbnUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudTo6
c2hvdyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjaGFyYWN0ZXJJbmRleEZvclBvaW50KToKKwogMjAx
Mi0xMS0yMCAgSmlud29vIFNvbmcgIDxqaW53b283LnNvbmdAc2Ftc3VuZy5jb20+CiAKICAgICAg
ICAgW0VGTF1bV0syXSBSZW1vdmUgdW5uZWNlc3NhcnkgI2luY2x1ZGUgaW4gQVBJIHRlc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4KaW5kZXggODdlZDc0OTgzNTJiMjQwMWUzNGZlZTZjNTQ4OTNiN2UxYWZk
NzYzYi4uOTlhMDQ0YmIzYWQ2YzA4Y2FiY2YxOGY2MWZhZDAyNzdjMjA2OTFjNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW4KQEAgLTExNzYsNiArMTE3Niw3IEBAIF9fWk5LN1dlYkNvcmUxM0hpdFRlc3RS
ZXN1bHQxMGlzU2VsZWN0ZWRFdgogX19aTks3V2ViQ29yZTEzSGl0VGVzdFJlc3VsdDExdGFyZ2V0
RnJhbWVFdgogX19aTks3V2ViQ29yZTEzSGl0VGVzdFJlc3VsdDExdGV4dENvbnRlbnRFdgogX19a
Tks3V2ViQ29yZTEzSGl0VGVzdFJlc3VsdDE0YWJzb2x1dGVQREZVUkxFdgorX19aTks3V2ViQ29y
ZTEzSGl0VGVzdFJlc3VsdDE0aW5uZXJOb2RlRnJhbWVFdgogX19aTks3V2ViQ29yZTEzSGl0VGVz
dFJlc3VsdDE1YWJzb2x1dGVMaW5rVVJMRXYKIF9fWk5LN1dlYkNvcmUxM0hpdFRlc3RSZXN1bHQx
NXNwZWxsaW5nVG9vbFRpcEVSTlNfMTNUZXh0RGlyZWN0aW9uRQogX19aTks3V2ViQ29yZTEzSGl0
VGVzdFJlc3VsdDE2YWJzb2x1dGVJbWFnZVVSTEV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRl
eCA0NTBhMmY4ZDg1YTkwODY1MjY1OGQ0OGNjZTVjZjBiNzY2MDc1NzkyLi5iOGJkYjNjYTkyZDQw
Nzk5MzEzNWYwNmE1ZjQyODViMTgyN2NmOWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAg
LTEzODksNyArMTM4OSw3IEBAIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IERvY3VtZW50Ojpub2Rlc0Zy
b21SZWN0KGludCBjZW50ZXJYLCBpbnQgY2VudGVyWSwgdW5zaWduZWQKICAgICAvLyBXaGVuIGln
bm9yZUNsaXBwaW5nIGlzIGZhbHNlLCB0aGlzIG1ldGhvZCByZXR1cm5zIG51bGwgZm9yIGNvb3Jk
aW5hdGVzIG91dHNpZGUgb2YgdGhlIHZpZXdwb3J0LgogICAgIGlmIChpZ25vcmVDbGlwcGluZykK
ICAgICAgICAgdHlwZSB8PSBIaXRUZXN0UmVxdWVzdDo6SWdub3JlQ2xpcHBpbmc7Ci0gICAgZWxz
ZSBpZiAoIWZyYW1lVmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0KCkuaW50ZXJzZWN0cyhIaXRUZXN0
UmVzdWx0OjpyZWN0Rm9yUG9pbnQocG9pbnQsIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90
dG9tUGFkZGluZywgbGVmdFBhZGRpbmcpKSkKKyAgICBlbHNlIGlmICghZnJhbWVWaWV3LT52aXNp
YmxlQ29udGVudFJlY3QoKS5pbnRlcnNlY3RzKEhpdFRlc3RMb2NhdGlvbjo6cmVjdEZvclBvaW50
KHBvaW50LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRk
aW5nKSkpCiAgICAgICAgIHJldHVybiAwOwogICAgIGlmIChhbGxvd1NoYWRvd0NvbnRlbnQpCiAg
ICAgICAgIHR5cGUgfD0gSGl0VGVzdFJlcXVlc3Q6OkFsbG93U2hhZG93Q29udGVudDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCAzYTc3MzlmYmUyYTg0M2FmZjI2ZTc4OWY3
NTRiM2Y4NzIzNGQ4YWI0Li5kOTQ2YjFmYjRiZDM5MjE2NWU0MTMwMmZmY2VjNTBmMGMxMjdjYTMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC03ODcsNyArNzg3LDcgQEAg
Ym9vbCBFdmVudEhhbmRsZXI6OmV2ZW50TWF5U3RhcnREcmFnKGNvbnN0IFBsYXRmb3JtTW91c2VF
dmVudCYgZXZlbnQpIGNvbnN0CiAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQodmlldy0+d2luZG93
VG9Db250ZW50cyhldmVudC5wb3NpdGlvbigpKSk7CiAgICAgbV9mcmFtZS0+Y29udGVudFJlbmRl
cmVyKCktPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0KTsKICAgICBEcmFnU3RhdGUgc3RhdGU7Ci0g
ICAgcmV0dXJuIHJlc3VsdC5pbm5lck5vZGUoKSAmJiBwYWdlLT5kcmFnQ29udHJvbGxlcigpLT5k
cmFnZ2FibGVOb2RlKG1fZnJhbWUsIHJlc3VsdC5pbm5lck5vZGUoKSwgcm91bmRlZEludFBvaW50
KHJlc3VsdC5wb2ludCgpKSwgc3RhdGUpOworICAgIHJldHVybiByZXN1bHQuaW5uZXJOb2RlKCkg
JiYgcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS0+ZHJhZ2dhYmxlTm9kZShtX2ZyYW1lLCByZXN1bHQu
aW5uZXJOb2RlKCksIHJlc3VsdC5yb3VuZGVkUG9pbnRJbklubmVyTm9kZUZyYW1lKCksIHN0YXRl
KTsKIH0KIAogdm9pZCBFdmVudEhhbmRsZXI6OnVwZGF0ZVNlbGVjdGlvbkZvck1vdXNlRHJhZygp
CkBAIC0xMTQwLDcgKzExNDAsOCBAQCBIaXRUZXN0UmVzdWx0IEV2ZW50SGFuZGxlcjo6aGl0VGVz
dFJlc3VsdEF0UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBib29sCiAgICAgICAgIGhp
dFR5cGUgfD0gSGl0VGVzdFJlcXVlc3Q6Oklnbm9yZUNsaXBwaW5nOwogICAgIGlmIChhbGxvd1No
YWRvd0NvbnRlbnQpCiAgICAgICAgIGhpdFR5cGUgfD0gSGl0VGVzdFJlcXVlc3Q6OkFsbG93U2hh
ZG93Q29udGVudDsKLSAgICBtX2ZyYW1lLT5jb250ZW50UmVuZGVyZXIoKS0+aGl0VGVzdChIaXRU
ZXN0UmVxdWVzdChoaXRUeXBlKSwgcmVzdWx0KTsKKyAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0
KGhpdFR5cGUpOworICAgIG1fZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpLT5oaXRUZXN0KHJlcXVl
c3QsIHJlc3VsdCk7CiAKICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICBOb2RlKiBuID0gcmVz
dWx0LmlubmVyTm9kZSgpOwpAQCAtMTE1Nyw3ICsxMTU4LDggQEAgSGl0VGVzdFJlc3VsdCBFdmVu
dEhhbmRsZXI6OmhpdFRlc3RSZXN1bHRBdFBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCwg
Ym9vbAogICAgICAgICBMYXlvdXRQb2ludCB3aWRnZXRQb2ludChyZXN1bHQubG9jYWxQb2ludCgp
LngoKSArIHZpZXctPnNjcm9sbFgoKSAtIHJlbmRlcldpZGdldC0+Ym9yZGVyTGVmdCgpIC0gcmVu
ZGVyV2lkZ2V0LT5wYWRkaW5nTGVmdCgpLCAKICAgICAgICAgICAgIHJlc3VsdC5sb2NhbFBvaW50
KCkueSgpICsgdmlldy0+c2Nyb2xsWSgpIC0gcmVuZGVyV2lkZ2V0LT5ib3JkZXJUb3AoKSAtIHJl
bmRlcldpZGdldC0+cGFkZGluZ1RvcCgpKTsKICAgICAgICAgSGl0VGVzdFJlc3VsdCB3aWRnZXRI
aXRUZXN0UmVzdWx0KHdpZGdldFBvaW50LCBwYWRkaW5nLmhlaWdodCgpLCBwYWRkaW5nLndpZHRo
KCksIHBhZGRpbmcuaGVpZ2h0KCksIHBhZGRpbmcud2lkdGgoKSk7Ci0gICAgICAgIGZyYW1lLT5j
b250ZW50UmVuZGVyZXIoKS0+aGl0VGVzdChIaXRUZXN0UmVxdWVzdChoaXRUeXBlKSwgd2lkZ2V0
SGl0VGVzdFJlc3VsdCk7CisgICAgICAgIHdpZGdldEhpdFRlc3RSZXN1bHQuc2V0UG9pbnRJbk1h
aW5GcmFtZShyZXN1bHQucG9pbnRJbk1haW5GcmFtZSgpKTsKKyAgICAgICAgZnJhbWUtPmNvbnRl
bnRSZW5kZXJlcigpLT5oaXRUZXN0KHJlcXVlc3QsIHdpZGdldEhpdFRlc3RSZXN1bHQpOwogICAg
ICAgICByZXN1bHQgPSB3aWRnZXRIaXRUZXN0UmVzdWx0OwogCiAgICAgICAgIGlmICh0ZXN0U2Ny
b2xsYmFycyA9PSBTaG91bGRIaXRUZXN0U2Nyb2xsYmFycykgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCmluZGV4IGNjMzkwNTY4Y2UwMjk4NmQyMGJiYjFjZmZj
MTAxM2JlMDllZjNjYTMuLjY1ZmZkZmZkYjA5NzFlYmNiMDk2MjVkMDA3ZjBiYjRlZDdiNmIwODIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKQEAgLTE5OCwx
OCArMTk4LDIxIEBAIEhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQoKSA6IEhpdFRlc3RMb2Nh
dGlvbigpCiB9CiAKIEhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQoY29uc3QgTGF5b3V0UG9p
bnQmIHBvaW50KSA6IEhpdFRlc3RMb2NhdGlvbihwb2ludCkKKyAgICAsIG1fcG9pbnRJbk1haW5G
cmFtZShwb2ludCkKICAgICAsIG1faXNPdmVyV2lkZ2V0KGZhbHNlKQogewogfQogCiBIaXRUZXN0
UmVzdWx0OjpIaXRUZXN0UmVzdWx0KGNvbnN0IExheW91dFBvaW50JiBjZW50ZXJQb2ludCwgdW5z
aWduZWQgdG9wUGFkZGluZywgdW5zaWduZWQgcmlnaHRQYWRkaW5nLCB1bnNpZ25lZCBib3R0b21Q
YWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGluZykKICAgICA6IEhpdFRlc3RMb2NhdGlvbihjZW50
ZXJQb2ludCwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0UGFk
ZGluZykKKyAgICAsIG1fcG9pbnRJbk1haW5GcmFtZShjZW50ZXJQb2ludCkKICAgICAsIG1faXNP
dmVyV2lkZ2V0KGZhbHNlKQogewogfQogCiBIaXRUZXN0UmVzdWx0OjpIaXRUZXN0UmVzdWx0KGNv
bnN0IEhpdFRlc3RMb2NhdGlvbiYgb3RoZXIpCiAgICAgOiBIaXRUZXN0TG9jYXRpb24ob3RoZXIp
CisgICAgLCBtX3BvaW50SW5NYWluRnJhbWUocG9pbnQoKSkKICAgICAsIG1faXNPdmVyV2lkZ2V0
KGZhbHNlKQogewogfQpAQCAtMjE4LDYgKzIyMSw3IEBAIEhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RS
ZXN1bHQoY29uc3QgSGl0VGVzdFJlc3VsdCYgb3RoZXIpCiAgICAgOiBIaXRUZXN0TG9jYXRpb24o
b3RoZXIpCiAgICAgLCBtX2lubmVyTm9kZShvdGhlci5pbm5lck5vZGUoKSkKICAgICAsIG1faW5u
ZXJOb25TaGFyZWROb2RlKG90aGVyLmlubmVyTm9uU2hhcmVkTm9kZSgpKQorICAgICwgbV9wb2lu
dEluTWFpbkZyYW1lKG90aGVyLm1fcG9pbnRJbk1haW5GcmFtZSkKICAgICAsIG1fbG9jYWxQb2lu
dChvdGhlci5sb2NhbFBvaW50KCkpCiAgICAgLCBtX2lubmVyVVJMRWxlbWVudChvdGhlci5VUkxF
bGVtZW50KCkpCiAgICAgLCBtX3Njcm9sbGJhcihvdGhlci5zY3JvbGxiYXIoKSkKQEAgLTIzNiw2
ICsyNDAsNyBAQCBIaXRUZXN0UmVzdWx0JiBIaXRUZXN0UmVzdWx0OjpvcGVyYXRvcj0oY29uc3Qg
SGl0VGVzdFJlc3VsdCYgb3RoZXIpCiAgICAgSGl0VGVzdExvY2F0aW9uOjpvcGVyYXRvcj0ob3Ro
ZXIpOwogICAgIG1faW5uZXJOb2RlID0gb3RoZXIuaW5uZXJOb2RlKCk7CiAgICAgbV9pbm5lck5v
blNoYXJlZE5vZGUgPSBvdGhlci5pbm5lck5vblNoYXJlZE5vZGUoKTsKKyAgICBtX3BvaW50SW5N
YWluRnJhbWUgPSBvdGhlci5tX3BvaW50SW5NYWluRnJhbWU7CiAgICAgbV9sb2NhbFBvaW50ID0g
b3RoZXIubG9jYWxQb2ludCgpOwogICAgIG1faW5uZXJVUkxFbGVtZW50ID0gb3RoZXIuVVJMRWxl
bWVudCgpOwogICAgIG1fc2Nyb2xsYmFyID0gb3RoZXIuc2Nyb2xsYmFyKCk7CkBAIC0yNzksNiAr
Mjg0LDE1IEBAIHZvaWQgSGl0VGVzdFJlc3VsdDo6c2V0U2Nyb2xsYmFyKFNjcm9sbGJhciogcykK
ICAgICBtX3Njcm9sbGJhciA9IHM7CiB9CiAKK0ZyYW1lKiBIaXRUZXN0UmVzdWx0Ojppbm5lck5v
ZGVGcmFtZSgpIGNvbnN0Cit7CisgICAgaWYgKG1faW5uZXJOb25TaGFyZWROb2RlKQorICAgICAg
ICByZXR1cm4gbV9pbm5lck5vblNoYXJlZE5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCk7CisgICAg
aWYgKG1faW5uZXJOb2RlKQorICAgICAgICByZXR1cm4gbV9pbm5lck5vZGUtPmRvY3VtZW50KCkt
PmZyYW1lKCk7CisgICAgcmV0dXJuIDA7Cit9CisKIEZyYW1lKiBIaXRUZXN0UmVzdWx0Ojp0YXJn
ZXRGcmFtZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2lubmVyVVJMRWxlbWVudCkKQEAgLTc0Niw2
ICs3NjAsNyBAQCB2b2lkIEhpdFRlc3RSZXN1bHQ6OmFwcGVuZChjb25zdCBIaXRUZXN0UmVzdWx0
JiBvdGhlcikKICAgICAgICAgbV9pbm5lck5vZGUgPSBvdGhlci5pbm5lck5vZGUoKTsKICAgICAg
ICAgbV9pbm5lck5vblNoYXJlZE5vZGUgPSBvdGhlci5pbm5lck5vblNoYXJlZE5vZGUoKTsKICAg
ICAgICAgbV9sb2NhbFBvaW50ID0gb3RoZXIubG9jYWxQb2ludCgpOworICAgICAgICBtX3BvaW50
SW5NYWluRnJhbWUgPSBvdGhlci5tX3BvaW50SW5NYWluRnJhbWU7CiAgICAgICAgIG1faW5uZXJV
UkxFbGVtZW50ID0gb3RoZXIuVVJMRWxlbWVudCgpOwogICAgICAgICBtX3Njcm9sbGJhciA9IG90
aGVyLnNjcm9sbGJhcigpOwogICAgICAgICBtX2lzT3ZlcldpZGdldCA9IG90aGVyLmlzT3Zlcldp
ZGdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1
bHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKaW5kZXggN2Iz
YzE5ZTVjYTMyMzg1MjlkMzg4ZmY4YjJmOTMxMDVlM2E3ZTk0MC4uYjIxOWE5N2RjZmRmNGUyNzUx
MGE4NDNmNGY3M2RjOTFhMDkxMmM5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0hpdFRlc3RSZXN1bHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVz
dFJlc3VsdC5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICB+SGl0VGVzdExvY2F0aW9u
KCk7CiAgICAgSGl0VGVzdExvY2F0aW9uJiBvcGVyYXRvcj0oY29uc3QgSGl0VGVzdExvY2F0aW9u
Jik7CiAKLSAgICBMYXlvdXRQb2ludCBwb2ludCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9pbnQ7IH0K
KyAgICBjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQoKSBjb25zdCB7IHJldHVybiBtX3BvaW50OyB9
CiAgICAgSW50UG9pbnQgcm91bmRlZFBvaW50KCkgY29uc3QgeyByZXR1cm4gcm91bmRlZEludFBv
aW50KG1fcG9pbnQpOyB9CiAKICAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbigpIGNvbnN0IHsgcmV0
dXJuIG1fcmVnaW9uOyB9CkBAIC0xMDAsNyArMTAwLDggQEAgcHJpdmF0ZToKICAgICBib29sIG1f
aXNSZWN0aWxpbmVhcjsKIH07CiAKLWNsYXNzIEhpdFRlc3RSZXN1bHQgOiBwdWJsaWMgSGl0VGVz
dExvY2F0aW9uIHsKKy8vIEZJWE1FOiBIaXRUZXN0UmVzdWx0IHNob3VsZCBub3QgYmUgYSBIaXRU
ZXN0TG9jYXRpb24sIGJ1dCBpbnN0ZWFkIGhhdmUgYSBIaXRUZXN0TG9jYXRpb24uIFNlZSBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxNTkwCitjbGFzcyBIaXRUZXN0
UmVzdWx0IDogcHJvdGVjdGVkIEhpdFRlc3RMb2NhdGlvbiB7CiBwdWJsaWM6CiAgICAgdHlwZWRl
ZiBMaXN0SGFzaFNldDxSZWZQdHI8Tm9kZT4gPiBOb2RlU2V0OwogCkBAIC0xMTUsMTggKzExNiwz
MyBAQCBwdWJsaWM6CiAKICAgICBOb2RlKiBpbm5lck5vZGUoKSBjb25zdCB7IHJldHVybiBtX2lu
bmVyTm9kZS5nZXQoKTsgfQogICAgIE5vZGUqIGlubmVyTm9uU2hhcmVkTm9kZSgpIGNvbnN0IHsg
cmV0dXJuIG1faW5uZXJOb25TaGFyZWROb2RlLmdldCgpOyB9Ci0gICAgTGF5b3V0UG9pbnQgbG9j
YWxQb2ludCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxQb2ludDsgfQogICAgIEVsZW1lbnQqIFVS
TEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2lubmVyVVJMRWxlbWVudC5nZXQoKTsgfQogICAg
IFNjcm9sbGJhciogc2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxiYXIuZ2V0KCk7
IH0KICAgICBib29sIGlzT3ZlcldpZGdldCgpIGNvbnN0IHsgcmV0dXJuIG1faXNPdmVyV2lkZ2V0
OyB9CiAKKyAgICAvLyBGb3J3YXJkZWQgZnJvbSBIaXRUZXN0TG9jYXRpb24KKyAgICBib29sIGlz
UmVjdEJhc2VkVGVzdCgpIGNvbnN0IHsgcmV0dXJuIEhpdFRlc3RMb2NhdGlvbjo6aXNSZWN0QmFz
ZWRUZXN0KCk7IH0KKworICAgIC8vIFRoZSBoaXQtdGVzdGVkIHBvaW50IGluIHRoZSBjb29yZGlu
YXRlcyBvZiB0aGUgbWFpbiBmcmFtZS4KKyAgICBjb25zdCBMYXlvdXRQb2ludCYgcG9pbnRJbk1h
aW5GcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fcG9pbnRJbk1haW5GcmFtZTsgfQorICAgIEludFBv
aW50IHJvdW5kZWRQb2ludEluTWFpbkZyYW1lKCkgY29uc3QgeyByZXR1cm4gcm91bmRlZEludFBv
aW50KHBvaW50SW5NYWluRnJhbWUoKSk7IH0KKyAgICB2b2lkIHNldFBvaW50SW5NYWluRnJhbWUo
Y29uc3QgTGF5b3V0UG9pbnQmIHApIHsgbV9wb2ludEluTWFpbkZyYW1lID0gcDsgfQorCisgICAg
Ly8gVGhlIGhpdC10ZXN0ZWQgcG9pbnQgaW4gdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSBpbm5lck5v
ZGUgZnJhbWUsIHRoZSBmcmFtZSBjb250YWluaW5nIGlubmVyTm9kZS4KKyAgICBjb25zdCBMYXlv
dXRQb2ludCYgcG9pbnRJbklubmVyTm9kZUZyYW1lKCkgY29uc3QgeyByZXR1cm4gSGl0VGVzdExv
Y2F0aW9uOjpwb2ludCgpOyB9CisgICAgSW50UG9pbnQgcm91bmRlZFBvaW50SW5Jbm5lck5vZGVG
cmFtZSgpIGNvbnN0IHsgcmV0dXJuIHJvdW5kZWRJbnRQb2ludChwb2ludEluSW5uZXJOb2RlRnJh
bWUoKSk7IH0KKyAgICBGcmFtZSogaW5uZXJOb2RlRnJhbWUoKSBjb25zdDsKKworICAgIC8vIFRo
ZSBoaXQtdGVzdGVkIHBvaW50IGluIHRoZSBjb29yZGluYXRlcyBvZiB0aGUgaW5uZXIgbm9kZS4K
KyAgICBjb25zdCBMYXlvdXRQb2ludCYgbG9jYWxQb2ludCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9j
YWxQb2ludDsgfQorICAgIHZvaWQgc2V0TG9jYWxQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcCkg
eyBtX2xvY2FsUG9pbnQgPSBwOyB9CisKICAgICB2b2lkIHNldFRvTm9uU2hhZG93QW5jZXN0b3Io
KTsKIAogICAgIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgaGl0VGVzdExvY2F0aW9uKCkgY29uc3Qg
eyByZXR1cm4gKnRoaXM7IH0KIAogICAgIHZvaWQgc2V0SW5uZXJOb2RlKE5vZGUqKTsKICAgICB2
b2lkIHNldElubmVyTm9uU2hhcmVkTm9kZShOb2RlKik7Ci0gICAgdm9pZCBzZXRMb2NhbFBvaW50
KGNvbnN0IExheW91dFBvaW50JiBwKSB7IG1fbG9jYWxQb2ludCA9IHA7IH0KICAgICB2b2lkIHNl
dFVSTEVsZW1lbnQoRWxlbWVudCopOwogICAgIHZvaWQgc2V0U2Nyb2xsYmFyKFNjcm9sbGJhciop
OwogICAgIHZvaWQgc2V0SXNPdmVyV2lkZ2V0KGJvb2wgYikgeyBtX2lzT3ZlcldpZGdldCA9IGI7
IH0KQEAgLTE4NSw2ICsyMDEsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPE5vZGU+IG1faW5u
ZXJOb2RlOwogICAgIFJlZlB0cjxOb2RlPiBtX2lubmVyTm9uU2hhcmVkTm9kZTsKKyAgICBMYXlv
dXRQb2ludCBtX3BvaW50SW5NYWluRnJhbWU7IC8vIFRoZSBoaXQtdGVzdGVkIHBvaW50IGluIG1h
aW4tZnJhbWUgY29vcmRpbmF0ZXMuCiAgICAgTGF5b3V0UG9pbnQgbV9sb2NhbFBvaW50OyAvLyBB
IHBvaW50IGluIHRoZSBsb2NhbCBjb29yZGluYXRlIHNwYWNlIG9mIG1faW5uZXJOb25TaGFyZWRO
b2RlJ3MgcmVuZGVyZXIuIEFsbG93cyB1cyB0byBlZmZpY2llbnRseQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gZGV0ZXJtaW5lIHdoZXJlIGluc2lkZSB0aGUgcmVuZGVyZXIgd2Ug
aGl0IG9uIHN1YnNlcXVlbnQgb3BlcmF0aW9ucy4KICAgICBSZWZQdHI8RWxlbWVudD4gbV9pbm5l
clVSTEVsZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRl
eCA1NTZkMGU4NmVmZGQ3ZjVhMjU5ZDJhZmFlYTM0YmRhMDdjNmY4N2ViLi40ZTY3Y2Q1NzEzZDY0
YjgyNzYzMmQ3MGE4ZTgwYjE0NDkwMGViNzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHAKQEAgLTM2NDIsNyArMzY0Miw3IEBAIGJvb2wgUmVuZGVyTGF5ZXI6Omhp
dFRlc3QoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEhpdFRlc3RMb2NhdGlv
biYKICAgICAgICAgLy8gcmV0dXJuIG91cnNlbHZlcy4gV2UgZG8gdGhpcyBzbyBtb3VzZSBldmVu
dHMgY29udGludWUgZ2V0dGluZyBkZWxpdmVyZWQgYWZ0ZXIgYSBkcmFnIGhhcyAKICAgICAgICAg
Ly8gZXhpdGVkIHRoZSBXZWJWaWV3LCBhbmQgc28gaGl0IHRlc3Rpbmcgb3ZlciBhIHNjcm9sbGJh
ciBoaXRzIHRoZSBjb250ZW50IGRvY3VtZW50LgogICAgICAgICBpZiAoKHJlcXVlc3QuYWN0aXZl
KCkgfHwgcmVxdWVzdC5yZWxlYXNlKCkpICYmIGlzUm9vdExheWVyKCkpIHsKLSAgICAgICAgICAg
IHJlbmRlcmVyKCktPnVwZGF0ZUhpdFRlc3RSZXN1bHQocmVzdWx0LCB0b1JlbmRlclZpZXcocmVu
ZGVyZXIoKSktPmZsaXBGb3JXcml0aW5nTW9kZShyZXN1bHQucG9pbnQoKSkpOworICAgICAgICAg
ICAgcmVuZGVyZXIoKS0+dXBkYXRlSGl0VGVzdFJlc3VsdChyZXN1bHQsIHRvUmVuZGVyVmlldyhy
ZW5kZXJlcigpKS0+ZmxpcEZvcldyaXRpbmdNb2RlKGhpdFRlc3RMb2NhdGlvbi5wb2ludCgpKSk7
CiAgICAgICAgICAgICBpbnNpZGVMYXllciA9IHRoaXM7CiAgICAgICAgIH0KICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCmluZGV4IDYy
OGU5OTkyN2I1NjhmZjlkYmE4NDQxZjVmMGE4MTg2NzQ2MGMzMzQuLmVlODRlZWY3ZWZmYzE5Zjgz
MGVkZmNjYzIwOWU5OWJhNWU2MWQwMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCkBAIC02MDAsNyArNjAwLDcgQEAgdm9pZCBDaHJvbWVD
bGllbnRJbXBsOjptb3VzZURpZE1vdmVPdmVyRWxlbWVudCgKICAgICAgICAgICAgIFdpZGdldCog
d2lkZ2V0ID0gdG9SZW5kZXJXaWRnZXQob2JqZWN0KS0+d2lkZ2V0KCk7CiAgICAgICAgICAgICBp
ZiAod2lkZ2V0ICYmIHdpZGdldC0+aXNQbHVnaW5Db250YWluZXIoKSkgewogICAgICAgICAgICAg
ICAgIFdlYlBsdWdpbkNvbnRhaW5lckltcGwqIHBsdWdpbiA9IHN0YXRpY19jYXN0PFdlYlBsdWdp
bkNvbnRhaW5lckltcGwqPih3aWRnZXQpOwotICAgICAgICAgICAgICAgIHVybCA9IHBsdWdpbi0+
cGx1Z2luKCktPmxpbmtBdFBvc2l0aW9uKHJlc3VsdC5yb3VuZGVkUG9pbnQoKSk7CisgICAgICAg
ICAgICAgICAgdXJsID0gcGx1Z2luLT5wbHVnaW4oKS0+bGlua0F0UG9zaXRpb24ocmVzdWx0LnJv
dW5kZWRQb2ludEluSW5uZXJOb2RlRnJhbWUoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Db250ZXh0TWVu
dUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ29udGV4dE1lbnVD
bGllbnRJbXBsLmNwcAppbmRleCAyY2ZlOTBhM2ZiZTRiMmVjYzBlYzI3MTI2MjQwNThlODNkMDZk
YjgzLi5iZGExYjJlOWFjMjNmZDQ4OTU1NGM5NzA4MWU2YjkwMDJiNDdmZTA3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Db250ZXh0TWVudUNsaWVudEltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0NvbnRleHRNZW51Q2xpZW50SW1wbC5jcHAK
QEAgLTEyMCw3ICsxMjAsNyBAQCBzdGF0aWMgU3RyaW5nIHNlbGVjdE1pc3NwZWxsZWRXb3JkKGNv
bnN0IENvbnRleHRNZW51KiBkZWZhdWx0TWVudSwgRnJhbWUqIHNlbGVjdAogCiAgICAgLy8gU2Vs
ZWN0aW9uIGlzIGVtcHR5LCBzbyBjaGFuZ2UgdGhlIHNlbGVjdGlvbiB0byB0aGUgd29yZCB1bmRl
ciB0aGUgY3Vyc29yLgogICAgIEhpdFRlc3RSZXN1bHQgaGl0VGVzdFJlc3VsdCA9IHNlbGVjdGVk
RnJhbWUtPmV2ZW50SGFuZGxlcigpLT4KLSAgICAgICAgaGl0VGVzdFJlc3VsdEF0UG9pbnQoc2Vs
ZWN0ZWRGcmFtZS0+cGFnZSgpLT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKS0+aGl0VGVzdFJlc3Vs
dCgpLnBvaW50KCksIHRydWUpOworICAgICAgICBoaXRUZXN0UmVzdWx0QXRQb2ludChzZWxlY3Rl
ZEZyYW1lLT5wYWdlKCktPmNvbnRleHRNZW51Q29udHJvbGxlcigpLT5oaXRUZXN0UmVzdWx0KCku
cG9pbnRJbklubmVyTm9kZUZyYW1lKCksIHRydWUpOwogICAgIE5vZGUqIGlubmVyTm9kZSA9IGhp
dFRlc3RSZXN1bHQuaW5uZXJOb2RlKCk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvcyhpbm5lck5v
ZGUtPnJlbmRlcmVyKCktPnBvc2l0aW9uRm9yUG9pbnQoCiAgICAgICAgIGhpdFRlc3RSZXN1bHQu
bG9jYWxQb2ludCgpKSk7CkBAIC0xNTUsMTAgKzE1NSwxMCBAQCBQbGF0Zm9ybU1lbnVEZXNjcmlw
dGlvbiBDb250ZXh0TWVudUNsaWVudEltcGw6OmdldEN1c3RvbU1lbnVGcm9tRGVmYXVsdEl0ZW1z
KAogICAgICAgICByZXR1cm4gMDsKIAogICAgIEhpdFRlc3RSZXN1bHQgciA9IG1fd2ViVmlldy0+
cGFnZSgpLT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKS0+aGl0VGVzdFJlc3VsdCgpOwotICAgIEZy
YW1lKiBzZWxlY3RlZEZyYW1lID0gci5pbm5lck5vblNoYXJlZE5vZGUoKS0+ZG9jdW1lbnQoKS0+
ZnJhbWUoKTsKKyAgICBGcmFtZSogc2VsZWN0ZWRGcmFtZSA9IHIuaW5uZXJOb2RlRnJhbWUoKTsK
IAogICAgIFdlYkNvbnRleHRNZW51RGF0YSBkYXRhOwotICAgIGRhdGEubW91c2VQb3NpdGlvbiA9
IHNlbGVjdGVkRnJhbWUtPnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhyLnJvdW5kZWRQb2ludCgp
KTsKKyAgICBkYXRhLm1vdXNlUG9zaXRpb24gPSBzZWxlY3RlZEZyYW1lLT52aWV3KCktPmNvbnRl
bnRzVG9XaW5kb3coci5yb3VuZGVkUG9pbnRJbklubmVyTm9kZUZyYW1lKCkpOwogCiAgICAgLy8g
Q29tcHV0ZSBlZGl0IGZsYWdzLgogICAgIGRhdGEuZWRpdEZsYWdzID0gV2ViQ29udGV4dE1lbnVE
YXRhOjpDYW5Eb05vbmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJGcmFtZUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBs
LmNwcAppbmRleCAzN2YxNDRmMjFlZTJmYWE0NTJmZGZlODM2NjRjYjc1MWFkMjlkOWNmLi5lYWNm
OWFiYTg1MDAzOWQ5ZmI4OGI5ZGM1ZDc1NDE3M2RkYWQ0ZWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKQEAgLTExODQsNyArMTE4NCw3IEBAIHNpemVf
dCBXZWJGcmFtZUltcGw6OmNoYXJhY3RlckluZGV4Rm9yUG9pbnQoY29uc3QgV2ViUG9pbnQmIHdl
YlBvaW50KSBjb25zdAogCiAgICAgSW50UG9pbnQgcG9pbnQgPSBmcmFtZSgpLT52aWV3KCktPndp
bmRvd1RvQ29udGVudHMod2ViUG9pbnQpOwogICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZnJh
bWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KHBvaW50LCBmYWxzZSk7
Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IGZyYW1lKCktPnJhbmdlRm9yUG9pbnQocmVzdWx0
LnJvdW5kZWRQb2ludCgpKTsKKyAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gZnJhbWUoKS0+cmFu
Z2VGb3JQb2ludChyZXN1bHQucm91bmRlZFBvaW50SW5Jbm5lck5vZGVGcmFtZSgpKTsKICAgICBp
ZiAoIXJhbmdlKQogICAgICAgICByZXR1cm4gbm90Rm91bmQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a19mcmFtZS5jcHAKaW5kZXggNzM4YTkzOTE4ZjMwMTkxYjUyNmM2ZmYxOGIyOTVhZmM5YjdiOWE3
ZC4uZGVjNTVkNjk4NzFhNjYxNjBiZWI5ODY2NGUxMDc4YTQxMGJmYzA0MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a19mcmFtZS5jcHAKQEAgLTcwMiw4ICs3MDIsOSBAQCBFd2tfSGl0X1Rlc3QqIGV3
a19mcmFtZV9oaXRfdGVzdF9uZXcoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBpbnQgeCwg
aW50IHkpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgRXdrX0hpdF9UZXN0KiBoaXRUZXN0ID0g
bmV3IEV3a19IaXRfVGVzdDsKLSAgICBoaXRUZXN0LT54ID0gcmVzdWx0LnBvaW50KCkueCgpOwot
ICAgIGhpdFRlc3QtPnkgPSByZXN1bHQucG9pbnQoKS55KCk7CisgICAgLy8gRklYTUU6IFRoaXMg
c2hvdWxkIHByb2JhYmx5IHVzZSBwb2ludEluTWFpbkZyYW1lLCBpZiBpdCBpcyB0byBtYXRjaCB0
aGUgZG9jdW1lbnRhdGlvbiBvZiBld2tfaGl0X3Rlc3QuCisgICAgaGl0VGVzdC0+eCA9IHJlc3Vs
dC5wb2ludEluSW5uZXJOb2RlRnJhbWUoKS54KCk7CisgICAgaGl0VGVzdC0+eSA9IHJlc3VsdC5w
b2ludEluSW5uZXJOb2RlRnJhbWUoKS55KCk7CiAjaWYgMAogICAgIC8vIEZJWE1FCiAgICAgaGl0
VGVzdC0+Ym91bmRpbmdfYm94LnggPSByZXN1bHQuYm91bmRpbmdCb3goKS54KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0aGl0dGVzdHJlc3VsdC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0aGl0dGVzdHJlc3VsdC5jcHAKaW5kZXggMWE5
NDM0YWYwZjVkY2FlM2RiMTU4MDM0YjQ2NDMyMGI4NjZjMWRjYS4uYzQwODFhNzY0NWIxYjUzODRl
OGRiNDBmNmJmZjg4NjdhMDI2ZTM4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdGhpdHRlc3RyZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXRoaXR0ZXN0cmVzdWx0LmNwcApAQCAtMzE1LDEyICszMTUsMTUgQEAgV2ViS2l0SGl0
VGVzdFJlc3VsdCoga2l0KGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQmIHJlc3VsdCkKICAg
ICBpZiAocmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpKQogICAgICAgICBub2RlID0ga2l0KHJl
c3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKSk7CiAKKyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQg
cHJvYmFibHkgdXNlIGlubmVyTm9kZUZyYW1lLCBhcyB0YXJnZXRGcmFtZSBpcyB0aGUgcG90ZW50
aWFsbHkgZGlmZmVyZW50IGZyYW1lIHRoZSBsaW5rIG9wZW5zIGluLgogICAgIHRhcmdldEZyYW1l
ID0gcmVzdWx0LnRhcmdldEZyYW1lKCk7CiAgICAgaWYgKHRhcmdldEZyYW1lICYmIHRhcmdldEZy
YW1lLT52aWV3KCkpIHsKICAgICAgICAgLy8gQ29udmVydCBkb2N1bWVudCBjb29yZHMgdG8gd2lk
Z2V0IGNvb3Jkcy4KLSAgICAgICAgcG9pbnQgPSB0YXJnZXRGcmFtZS0+dmlldygpLT5jb250ZW50
c1RvV2luZG93KHJlc3VsdC5yb3VuZGVkUG9pbnQoKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHBv
aW50ID0gcmVzdWx0LnJvdW5kZWRQb2ludCgpOworICAgICAgICBwb2ludCA9IHRhcmdldEZyYW1l
LT52aWV3KCktPmNvbnRlbnRzVG9XaW5kb3cocmVzdWx0LnJvdW5kZWRQb2ludEluSW5uZXJOb2Rl
RnJhbWUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHBy
b2JhYmx5IHVzZSByb3VuZGVkUG9pbnRJbk1haW5GcmFtZSBhbmQgdHJhbnNsYXRlIGZyb20gdGhl
IG1haW5mcmFtZS4KKyAgICAgICAgcG9pbnQgPSByZXN1bHQucm91bmRlZFBvaW50SW5Jbm5lck5v
ZGVGcmFtZSgpOworICAgIH0KIAogICAgIHJldHVybiBXRUJLSVRfSElUX1RFU1RfUkVTVUxUKGdf
b2JqZWN0X25ldyhXRUJLSVRfVFlQRV9ISVRfVEVTVF9SRVNVTFQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5rLXVyaSIsIGxpbmtVUkkuZ2V0KCks
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0
TWVudUNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRl
eHRNZW51Q2xpZW50Lm1tCmluZGV4IGUzMTMxMzYwMzZmNzhkNjAxNzIzMDY5MmVkOGM2NzkwOGU5
ZDQzZTAuLjFkNTE5MWI1NGVjOGY0MjMwNzk2YWY4NDU4NjEzZWI4OWVkMWFmNzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51
Q2xpZW50Lm1tCkBAIC0zNTYsMTcgKzM1NiwxNCBAQCB2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50
OjpzaG93Q29udGV4dE1lbnUoKQogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuOwogICAg
IENvbnRleHRNZW51Q29udHJvbGxlciogY29udHJvbGxlciA9IHBhZ2UtPmNvbnRleHRNZW51Q29u
dHJvbGxlcigpOwotICAgIE5vZGUqIG5vZGUgPSBjb250cm9sbGVyLT5oaXRUZXN0UmVzdWx0KCku
aW5uZXJOb25TaGFyZWROb2RlKCk7Ci0gICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm47Ci0g
ICAgRnJhbWUqIGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsKKyAgICBGcmFtZSog
ZnJhbWUgPSBjb250cm9sbGVyLT5oaXRUZXN0UmVzdWx0KCkuaW5uZXJOb2RlRnJhbWUoKTsKICAg
ICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcg
PSBmcmFtZS0+dmlldygpOwogICAgIGlmICghZnJhbWVWaWV3KQogICAgICAgICByZXR1cm47CiAK
LSAgICBJbnRQb2ludCBwb2ludCA9IGZyYW1lVmlldy0+Y29udGVudHNUb1dpbmRvdyhjb250cm9s
bGVyLT5oaXRUZXN0UmVzdWx0KCkucm91bmRlZFBvaW50KCkpOworICAgIEludFBvaW50IHBvaW50
ID0gZnJhbWVWaWV3LT5jb250ZW50c1RvV2luZG93KGNvbnRyb2xsZXItPmhpdFRlc3RSZXN1bHQo
KS5yb3VuZGVkUG9pbnRJbklubmVyTm9kZUZyYW1lKCkpOwogICAgIE5TVmlldyogdmlldyA9IGZy
YW1lVmlldy0+ZG9jdW1lbnRWaWV3KCk7CiAgICAgTlNQb2ludCBuc1NjcmVlblBvaW50ID0gW3Zp
ZXcgY29udmVydFBvaW50OnBvaW50IHRvVmlldzpuaWxdOwogICAgIC8vIFNob3cgdGhlIGNvbnRl
eHR1YWwgbWVudSBmb3IgdGhpcyBldmVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQv
QXBpL3F3ZWJmcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCmlu
ZGV4IDBhY2NkMzM2MmRkNjg3MzRjZmRmMjEzODVlYzM4MDY0ZjJjMTMxYmYuLmI3NzNiOTYzMTRj
OGU2YmQ4MDM3ZjEyZDY0YTRiN2RjODc3MmU0NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
cXQvQXBpL3F3ZWJmcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1l
LmNwcApAQCAtMTU5OCw3ICsxNTk4LDggQEAgUVdlYkhpdFRlc3RSZXN1bHRQcml2YXRlOjpRV2Vi
SGl0VGVzdFJlc3VsdFByaXZhdGUoY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdAogewogICAg
IGlmICghaGl0VGVzdC5pbm5lck5vZGUoKSkKICAgICAgICAgcmV0dXJuOwotICAgIHBvcyA9IGhp
dFRlc3Qucm91bmRlZFBvaW50KCk7CisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5
IHVzZSByb3VuZGVkUG9pbnRJbk1haW5GcmFtZSBpZiBpdCBpcyB0byBtYXRjaCB0aGUgZG9jdW1l
bnRhdGlvbiBvZiBRV2ViSGl0VGVzdFJlc3VsdC4KKyAgICBwb3MgPSBoaXRUZXN0LnJvdW5kZWRQ
b2ludEluSW5uZXJOb2RlRnJhbWUoKTsKICAgICBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uIGRpcjsK
ICAgICB0aXRsZSA9IGhpdFRlc3QudGl0bGUoZGlyKTsKICAgICBsaW5rVGV4dCA9IGhpdFRlc3Qu
dGV4dENvbnRlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAppbmRleCBhZGU0OTZmYTQ0
YWUzZDdlZThkNjcxMzQ0NDY1OThjZjJkYWY0NGJiLi4wMjM4M2FjNjc0MTU4NDkwNGQ4MmNhMGQ3
ODJlYzk2NzI4OWRlODg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCkBAIC0xNTgyLDcg
KzE1ODIsNyBAQCBJbnRQb2ludCBRV2ViUGFnZVByaXZhdGU6OlRvdWNoQWRqdXN0ZXI6OmZpbmRD
YW5kaWRhdGVQb2ludEZvclRvdWNoKGNvbnN0IEludFBvaQogICAgIEZyYW1lVmlldyogdmlldyA9
IGRvY3VtZW50LT5mcmFtZSgpLT52aWV3KCk7CiAKICAgICAvLyBUb3VjaCByZWN0IGluIGNvbnRl
bnRzIGNvb3JkaW5hdGVzLgotICAgIEludFJlY3QgdG91Y2hSZWN0KEhpdFRlc3RSZXN1bHQ6OnJl
Y3RGb3JQb2ludCh2aWV3LT53aW5kb3dUb0NvbnRlbnRzKEludFBvaW50KHgsIHkpKSwgbV90b3BQ
YWRkaW5nLCBtX3JpZ2h0UGFkZGluZywgbV9ib3R0b21QYWRkaW5nLCBtX2xlZnRQYWRkaW5nKSk7
CisgICAgSW50UmVjdCB0b3VjaFJlY3QoSGl0VGVzdExvY2F0aW9uOjpyZWN0Rm9yUG9pbnQodmll
dy0+d2luZG93VG9Db250ZW50cyhJbnRQb2ludCh4LCB5KSksIG1fdG9wUGFkZGluZywgbV9yaWdo
dFBhZGRpbmcsIG1fYm90dG9tUGFkZGluZywgbV9sZWZ0UGFkZGluZykpOwogCiAgICAgLy8gSXRl
cmF0ZSBvdmVyIHRoZSBsaXN0IG9mIG5vZGVzIGhpdCBsb29raW5nIGZvciB0aGUgb25lIHdob3Nl
IGJvdW5kaW5nIGFyZWEKICAgICAvLyBoYXMgbGFyZ2VzdCBpbnRlcnNlY3Rpb24gd2l0aCB0aGUg
dG91Y2ggYXJlYSAocG9pbnQgKyBwYWRkaW5nKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
d2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKaW5kZXggMzM4
Zjk1YzA0ZDY3MzBkM2U0MDM0YmY3NzA5ZjZlNTFkMTQ4YTU4MC4uMzhkMmU1MTVlMGUxMWY3OGM1
MmU3YWI4YjEwNDcwZDRlYzRhYjhkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2Vi
Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKQEAgLTEzNTAsMTEg
KzEzNTAsNyBAQCBib29sIFdlYlZpZXc6OmhhbmRsZUNvbnRleHRNZW51RXZlbnQoV1BBUkFNIHdQ
YXJhbSwgTFBBUkFNIGxQYXJhbSkKICAgICBpZiAoIWNvcmVNZW51KQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBOb2RlKiBub2RlID0gY29udGV4dE1lbnVDb250cm9sbGVyLT5oaXRUZXN0
UmVzdWx0KCkuaW5uZXJOb25TaGFyZWROb2RlKCk7Ci0gICAgaWYgKCFub2RlKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICBGcmFtZSogZnJhbWUgPSBub2RlLT5kb2N1bWVudCgpLT5mcmFt
ZSgpOworICAgIEZyYW1lKiBmcmFtZSA9IGNvbnRleHRNZW51Q29udHJvbGxlci0+aGl0VGVzdFJl
c3VsdCgpLmlubmVyTm9kZUZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCkBAIC0xMzYyLDcgKzEzNTgsNyBAQCBib29sIFdlYlZpZXc6OmhhbmRsZUNvbnRl
eHRNZW51RXZlbnQoV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKICAgICBpZiAoIXZpZXcp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFBPSU5UIHBvaW50KHZpZXctPmNvbnRlbnRz
VG9XaW5kb3coY29udGV4dE1lbnVDb250cm9sbGVyLT5oaXRUZXN0UmVzdWx0KCkucm91bmRlZFBv
aW50KCkpKTsKKyAgICBQT0lOVCBwb2ludCh2aWV3LT5jb250ZW50c1RvV2luZG93KGNvbnRleHRN
ZW51Q29udHJvbGxlci0+aGl0VGVzdFJlc3VsdCgpLnJvdW5kZWRQb2ludEluSW5uZXJOb2RlRnJh
bWUoKSkpOwogCiAgICAgLy8gVHJhbnNsYXRlIHRoZSBwb2ludCB0byBzY3JlZW4gY29vcmRpbmF0
ZXMKICAgICBpZiAoITo6Q2xpZW50VG9TY3JlZW4obV92aWV3V2luZG93LCAmcG9pbnQpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvbnRleHRNZW51
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0TWVudS5j
cHAKaW5kZXggM2E5MWQ5MGI3NTVlNjhkN2Q1MzU5NzkzYWNlMGZlMzc1YWU2ODYxMC4uMzI3M2Jk
YzA5ZWRmMDBjMzI4MDM5ZjU1MjU4YjlkYTk4MmJmMDkzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvbnRleHRNZW51LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29udGV4dE1lbnUuY3BwCkBAIC01OSwxMCAr
NTksNyBAQCB2b2lkIFdlYkNvbnRleHRNZW51OjpzaG93KCkKICAgICBDb250ZXh0TWVudSogbWVu
dSA9IGNvbnRyb2xsZXItPmNvbnRleHRNZW51KCk7CiAgICAgaWYgKCFtZW51KQogICAgICAgICBy
ZXR1cm47Ci0gICAgTm9kZSogbm9kZSA9IGNvbnRyb2xsZXItPmhpdFRlc3RSZXN1bHQoKS5pbm5l
ck5vblNoYXJlZE5vZGUoKTsKLSAgICBpZiAoIW5vZGUpCi0gICAgICAgIHJldHVybjsKLSAgICBG
cmFtZSogZnJhbWUgPSBub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpOworICAgIEZyYW1lKiBmcmFt
ZSA9IGNvbnRyb2xsZXItPmhpdFRlc3RSZXN1bHQoKS5pbm5lck5vZGVGcmFtZSgpOwogICAgIGlm
ICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKICAgICBGcmFtZVZpZXcqIHZpZXcgPSBmcmFtZS0+
dmlldygpOwpAQCAtODYsNyArODMsNyBAQCB2b2lkIFdlYkNvbnRleHRNZW51OjpzaG93KCkKIAog
ICAgIC8vIE1hcmsgdGhlIFdlYlBhZ2UgaGFzIGhhdmluZyBhIHNob3duIGNvbnRleHQgbWVudSB0
aGVuIG5vdGlmeSB0aGUgVUlQcm9jZXNzLgogICAgIG1fcGFnZS0+Y29udGV4dE1lbnVTaG93aW5n
KCk7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dDb250ZXh0
TWVudSh2aWV3LT5jb250ZW50c1RvV2luZG93KGNvbnRyb2xsZXItPmhpdFRlc3RSZXN1bHQoKS5y
b3VuZGVkUG9pbnQoKSksIHdlYkhpdFRlc3RSZXN1bHREYXRhLCBwcm9wb3NlZE1lbnUsIEluamVj
dGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOworICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaG93Q29udGV4dE1lbnUodmlldy0+Y29u
dGVudHNUb1dpbmRvdyhjb250cm9sbGVyLT5oaXRUZXN0UmVzdWx0KCkucm91bmRlZFBvaW50SW5J
bm5lck5vZGVGcmFtZSgpKSwgd2ViSGl0VGVzdFJlc3VsdERhdGEsIHByb3Bvc2VkTWVudSwgSW5q
ZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7CiB9CiAKIHZv
aWQgV2ViQ29udGV4dE1lbnU6Oml0ZW1TZWxlY3RlZChjb25zdCBXZWJDb250ZXh0TWVudUl0ZW1E
YXRhJiBpdGVtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9XZWJQYWdlTWFjLm1tCmluZGV4IDBmZWU5YzE4YWQxYWNjNjJlMDY2MmQ4NGYwNmEwZTU2ZGZl
ZjE3NmIuLjVmMDlkNzUxYjczZWVmNTkxMWIyMWNlMDgyYTdlZTZkNjk5YjJkZDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0K
QEAgLTM4NCw5ICszODQsOSBAQCB2b2lkIFdlYlBhZ2U6OmNoYXJhY3RlckluZGV4Rm9yUG9pbnQo
SW50UG9pbnQgcG9pbnQsIHVpbnQ2NF90JiBpbmRleCkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
SGl0VGVzdFJlc3VsdCByZXN1bHQgPSBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1
bHRBdFBvaW50KHBvaW50LCBmYWxzZSk7Ci0gICAgZnJhbWUgPSByZXN1bHQuaW5uZXJOb25TaGFy
ZWROb2RlKCkgPyByZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCktPmRvY3VtZW50KCktPmZyYW1l
KCkgOiBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAg
ICBmcmFtZSA9IHJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKSA/IHJlc3VsdC5pbm5lck5vZGVG
cmFtZSgpIDogbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7
CiAgICAgCi0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IGZyYW1lLT5yYW5nZUZvclBvaW50KHJl
c3VsdC5yb3VuZGVkUG9pbnQoKSk7CisgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IGZyYW1lLT5y
YW5nZUZvclBvaW50KHJlc3VsdC5yb3VuZGVkUG9pbnRJbklubmVyTm9kZUZyYW1lKCkpOwogICAg
IGlmICghcmFuZ2UpCiAgICAgICAgIHJldHVybjsKIAo=
</data>
<flag name="review"
          id="190805"
          type_id="1"
          status="+"
          setter="jchaffraix"
    />
          </attachment>
      

    </bug>

</bugzilla>