<?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>110895</bug_id>
          
          <creation_ts>2013-02-26 11:37:24 -0800</creation_ts>
          <short_desc>Focus ring for a child layer is incorrectly offset by ancestor composited layer&apos;s position</short_desc>
          <delta_ts>2013-02-28 12:40:25 -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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Xianzhu Wang">wangxianzhu</reporter>
          <assigned_to name="Xianzhu Wang">wangxianzhu</assigned_to>
          <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>d-r</cc>
    
    <cc>eric</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>fmalita</cc>
    
    <cc>jchaffraix</cc>
    
    <cc>mifenton</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>pdr</cc>
    
    <cc>schenney</cc>
    
    <cc>shawnsingh</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>skyostil</cc>
    
    <cc>tkent</cc>
    
    <cc>trchen</cc>
    
    <cc>vollick</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>842222</commentid>
    <comment_count>0</comment_count>
      <attachid>190333</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2013-02-26 11:37:24 -0800</bug_when>
    <thetext>Created attachment 190333
Test case

For the attached test case, the focus ring for the dark grey element is incorrectly offset by the absolute position of the element.

I tried to minimize the test case, but all divs in the test seem mandatory to reproduce the bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842363</commentid>
    <comment_count>1</comment_count>
      <attachid>190359</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2013-02-26 14:18:17 -0800</bug_when>
    <thetext>Created attachment 190359
Simplified test case

Just found the test can be simplified.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842390</commentid>
    <comment_count>2</comment_count>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2013-02-26 14:45:59 -0800</bug_when>
    <thetext>BTW Question: do we really need to draw the focus-ring (outline style==&apos;auto&quot;) for an overflowed element?

For example, the outline for the following

&lt;div style=&quot;outline: red auto thin; width: 50px; height: 50px&quot;&gt;
  &lt;div style=&quot;width: 100px; height: 25px&quot;&gt;&lt;/div&gt;
&lt;/div&gt;

will be like
 ______________
|              |
|        ______|
|       |
|_______|

Is this intended?

Sometimes if the overflowed child is fully out of the parent box, then the outline may be like:
 ______________
|              |
|______________|
 _______
|       |
|_______|

Even worse thing is that the lower box will only appear when the area is invalidated. If part of the area is invalidated, only part of the box appears.

In addition, if the outline style is not &apos;auto&apos; (e.g. &apos;solid&apos; or &apos;dotted&apos;), then only the rectangle of the element will be drawn, not including overflowed child. Is this also intended?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842459</commentid>
    <comment_count>3</comment_count>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2013-02-26 15:47:36 -0800</bug_when>
    <thetext>Considering transformations, drawing focus ring around overflowed children will be more complex, and the visual effect might not be desired.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842928</commentid>
    <comment_count>4</comment_count>
    <who name="Sami Kyöstilä">skyostil</who>
    <bug_when>2013-02-27 04:13:35 -0800</bug_when>
    <thetext>Seems like the root cause here is that outline:auto doesn&apos;t support transforms, right? I guess we&apos;d need a way of taking the union of arbitrarily transformed quads -- is there code for that already?

As to clipping the outline to the overflow container, I think it would make sense to do that but maybe we should fix it in a different bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843119</commentid>
    <comment_count>5</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2013-02-27 08:51:02 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Seems like the root cause here is that outline:auto doesn&apos;t support transforms, right? 

AFAICT this is completely unrelated: the test case has 0 transforms and positioned offset are representable in our current system.

&gt; I guess we&apos;d need a way of taking the union of arbitrarily transformed quads -- is there code for that already?

Focus rings and outlines are represented as rectangles (IntRect / LayoutRect), not quads. You would need to update the code to support quads. See addFocusRingRect and paintOutline for details.

&gt; As to clipping the outline to the overflow container, I think it would make sense to do that but maybe we should fix it in a different bug.

Outlines are specified in CSS 2.1 [1] and also CSS 3 UI [2]. We definitely want to follow what the specifications are saying, not what we believe &apos;outline&apos; should be. If other browsers don&apos;t match our behavior, we should get the specification updated to match the consensus.

Relevant bits:

* &quot;Outlines may be non-rectangular.&quot; (note that this is a MAY which makes our implementation using rects compliant)
* &quot;By default, the outline is drawn starting just outside the border edge. However, it is possible to offset the outline and draw it beyond the border edge.&quot;
* &quot;For example, if the element is broken across several lines, the outline should be an outline or minimum set of outlines that encloses all the element&apos;s boxes.&quot;

[1] http://www.w3.org/TR/CSS21/ui.html#dynamic-outlines
[2] http://dev.w3.org/csswg/css3-ui/#outline-properties</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843204</commentid>
    <comment_count>6</comment_count>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2013-02-27 10:09:54 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Outlines are specified in CSS 2.1 [1] and also CSS 3 UI [2]. We definitely want to follow what the specifications are saying, not what we believe &apos;outline&apos; should be. If other browsers don&apos;t match our behavior, we should get the specification updated to match the consensus.
&gt; 
&gt; Relevant bits:
&gt; 
&gt; * &quot;Outlines may be non-rectangular.&quot; (note that this is a MAY which makes our implementation using rects compliant)
&gt; * &quot;By default, the outline is drawn starting just outside the border edge. However, it is possible to offset the outline and draw it beyond the border edge.&quot;
&gt; * &quot;For example, if the element is broken across several lines, the outline should be an outline or minimum set of outlines that encloses all the element&apos;s boxes.&quot;
&gt; 
&gt; [1] http://www.w3.org/TR/CSS21/ui.html#dynamic-outlines
&gt; [2] http://dev.w3.org/csswg/css3-ui/#outline-properties

It only mentions the multiple-line case. The second half of the sentence seems to cover the overflow case but looks unclear. In our current code, the cases are in different code paths.

Another issue is, our behaviors for &apos;auto&apos; and non-&apos;auto&apos; outlines are different. The former draws outlines of overflowed sub-elements, but the latter draws only a single rectangle enclosing the element itself only.

Tried other browsers:
- Firefox (19.0). a single rectangle enclosing the the element and its sub-elements when outline-style!=auto. Doesn&apos;t support &apos;auto&apos;.
- IE9: a single rectangle enclosing the element only when outline-style!=auto. Doesn&apos;t support &apos;auto&apos;.

IE9 is same as WebKit when outline-style!=auto.

For real focus ring (when an element is really focused):
- Firefox: same as outline, using dotted black and white outline style.
- 

Putting aside transformations, the issue is caused by the following lines in RenderBlock::addFocusRingRects():

                if (box-&gt;layer())
                    pos = curr-&gt;localToAbsolute();
                else
                    pos = FloatPoint(additionalOffset.x() + box-&gt;x(), additionalOffset.y() + box-&gt;y());
                box-&gt;addFocusRingRects(rects, flooredLayoutPoint(pos));

RenderObject::paintFocusRing() expects that the rects are in coordinates of current paint (in the case, coordinates of the outer GraphicsLayer). However, the above code will use the absolute coordinates of the inner layer, so the focus ring for the inner layer will be offset by the origin of the outer layer. This happens only when the inner layer is a sub-element of the element wanting the focus ring.

I tried to remove the &apos;if&apos; part leaving only the &apos;else&apos; part, and the focus ring will be at correct position (for the test case). Do you think this is a correct fix?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843216</commentid>
    <comment_count>7</comment_count>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2013-02-27 10:23:37 -0800</bug_when>
    <thetext>CSS3 seems to give browsers more flexibility about drawing outlines:

... User agents should use an algorithm for determining the outline that encloses a region appropriate for conveying the concept of focus to the user.

I don&apos;t think drawing a separate outline for the fully overflowed sub-element conveying more information about focus to the user. Instead, it seems to confuse the user.

I believe in many cases, the web page designer doesn&apos;t actually want an out-of-flow element to be a visual part of the ancestor elements. Drawing parent&apos;s  including out-of-flow sub-elements may not be the intention of the web page designer either.

===========
P.S. to #6:

For real focus ring (when an element is really focused):
- Firefox: position same as outline (enclosing sub-elements), using dotted black-and-white outline style.
- IE9: position same as outline (not enclosing sub-elements), using dotted black-and-white outline style. The sub-layer covers part of the focus ring.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843238</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-02-27 10:41:31 -0800</bug_when>
    <thetext>Regardless of what the spec says, there&apos;s an obvious bug with composited layers here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843240</commentid>
    <comment_count>9</comment_count>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2013-02-27 10:44:02 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Regardless of what the spec says, there&apos;s an obvious bug with composited layers here.

Please run the test case. The focus ring for the sub-layer is not at the correct position.

#2 is not the bug itself, just my questions about the current (correct) behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843275</commentid>
    <comment_count>10</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2013-02-27 11:09:55 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; Regardless of what the spec says, there&apos;s an obvious bug with composited layers here.
&gt; 
&gt; Please run the test case. The focus ring for the sub-layer is not at the correct position.
&gt; 
&gt; #2 is not the bug itself, just my questions about the current (correct) behavior.

I agree with Simon. It&apos;s an obvious functional bug if the focus is not drawn at the right position regardless of whether you think it&apos;s good UX. The localToAbsolute calls seems wrong as it walks the tree for each child but if you remove it, won&apos;t you ignore any offset the (positioned) child may have?

Also please stop piggy-backing random bugs / questions into this bug. Try to keep bugzilla razor-focused on a single bug or it will confuse people (like me) and they will stop reading the comments in full (I already started). Other means of communications (IRC, mailing lists, other bugs) are here to ask such questions if you need to.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843323</commentid>
    <comment_count>11</comment_count>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2013-02-27 11:48:43 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; I agree with Simon. It&apos;s an obvious functional bug if the focus is not drawn at the right position regardless of whether you think it&apos;s good UX. The localToAbsolute calls seems wrong as it walks the tree for each child but if you remove it, won&apos;t you ignore any offset the (positioned) child may have?
&gt;

Removing the &apos;if&apos; part seems not to ignore some offset, but will include unnecessary offsets of parent elements (through the additionalOffset parameter to RenderBlock::addFocusRingRects()). Anyway that is incorrect.

What&apos;s the good way to know the ancestor layer that the current painting is originated, or other way to know the correct offset of the sub-layer to paint outline?
 
&gt; Also please stop piggy-backing random bugs / questions into this bug. Try to keep bugzilla razor-focused on a single bug or it will confuse people (like me) and they will stop reading the comments in full (I already started). Other means of communications (IRC, mailing lists, other bugs) are here to ask such questions if you need to.

Sorry for the confusing. I asked the question here partly because I thought not drawing outlines around sub-layers also a possible solution to the issue if this could be agreed upon. I should have made it clear :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843329</commentid>
    <comment_count>12</comment_count>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2013-02-27 11:53:07 -0800</bug_when>
    <thetext>Actually the child layer needs not to be composited, but some ancestor layer need to be, to reproduce the bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843652</commentid>
    <comment_count>13</comment_count>
      <attachid>190636</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2013-02-27 19:42:36 -0800</bug_when>
    <thetext>Created attachment 190636
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843653</commentid>
    <comment_count>14</comment_count>
      <attachid>190636</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-02-27 19:48:55 -0800</bug_when>
    <thetext>Comment on attachment 190636
Patch

Attachment 190636 did not pass qt-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/16672629</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843654</commentid>
    <comment_count>15</comment_count>
      <attachid>190636</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-02-27 19:50:31 -0800</bug_when>
    <thetext>Comment on attachment 190636
Patch

Attachment 190636 did not pass qt-wk2-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/16758376</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843655</commentid>
    <comment_count>16</comment_count>
      <attachid>190636</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-02-27 19:52:18 -0800</bug_when>
    <thetext>Comment on attachment 190636
Patch

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

The fix is good, just some naming quibbles.

&gt; Source/WebCore/ChangeLog:31
&gt; +        (RenderBox):

You should remove useless lines like this.

&gt; Source/WebCore/rendering/PaintInfo.h:58
&gt; +        OverlapTestRequestMap* overlapTestRequests = 0, const RenderLayerModelObject* newRepaintContainer = 0)

The name is a bit confusing, since this isn&apos;t about &quot;repaint&quot;. Let&apos;s call it &quot;paintContainer&quot; here. Or we could rename &quot;paintingRoot&quot;, and re-use that name for this.

&gt; Source/WebCore/rendering/RenderBlock.h:538
&gt; +    virtual void addFocusRingRects(Vector&lt;IntRect&gt;&amp;, const LayoutPoint&amp;, const RenderLayerModelObject*);

This should name the parameter so it&apos;s easy to tell what it&apos;s for. Perhaps &quot;rootForRects&quot; or &quot;paintingRoot&quot;.

&gt; Source/WebCore/rendering/RenderBox.h:165
&gt; +    virtual void addFocusRingRects(Vector&lt;IntRect&gt;&amp;, const LayoutPoint&amp;, const RenderLayerModelObject*);

Ditto.

&gt; Source/WebCore/rendering/RenderInline.cpp:1368
&gt; +void RenderInline::addFocusRingRects(Vector&lt;IntRect&gt;&amp; rects, const LayoutPoint&amp; additionalOffset, const RenderLayerModelObject* repaintContainer)

repaintContainer-&gt;paintingRoot.

&gt; Source/WebCore/rendering/RenderInline.h:84
&gt; +    virtual void addFocusRingRects(Vector&lt;IntRect&gt;&amp;, const LayoutPoint&amp;, const RenderLayerModelObject*);

Same here. If you&apos;re touching these functions, you might as well add OVERRIDE.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844149</commentid>
    <comment_count>17</comment_count>
      <attachid>190739</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2013-02-28 09:33:56 -0800</bug_when>
    <thetext>Created attachment 190739
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844151</commentid>
    <comment_count>18</comment_count>
      <attachid>190636</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2013-02-28 09:35:13 -0800</bug_when>
    <thetext>Comment on attachment 190636
Patch

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

&gt;&gt; Source/WebCore/rendering/PaintInfo.h:58
&gt;&gt; +        OverlapTestRequestMap* overlapTestRequests = 0, const RenderLayerModelObject* newRepaintContainer = 0)
&gt; 
&gt; The name is a bit confusing, since this isn&apos;t about &quot;repaint&quot;. Let&apos;s call it &quot;paintContainer&quot; here. Or we could rename &quot;paintingRoot&quot;, and re-use that name for this.

I choose &apos;paintContainer&apos;, as I found that paintingRoot has already been used in PaintInfo for another purpose (to paint only the subtree).

&gt;&gt; Source/WebCore/rendering/RenderBlock.h:538
&gt;&gt; +    virtual void addFocusRingRects(Vector&lt;IntRect&gt;&amp;, const LayoutPoint&amp;, const RenderLayerModelObject*);
&gt; 
&gt; This should name the parameter so it&apos;s easy to tell what it&apos;s for. Perhaps &quot;rootForRects&quot; or &quot;paintingRoot&quot;.

Done.

&gt;&gt; Source/WebCore/rendering/RenderBox.h:165
&gt;&gt; +    virtual void addFocusRingRects(Vector&lt;IntRect&gt;&amp;, const LayoutPoint&amp;, const RenderLayerModelObject*);
&gt; 
&gt; Ditto.

Done.

&gt;&gt; Source/WebCore/rendering/RenderInline.cpp:1368
&gt;&gt; +void RenderInline::addFocusRingRects(Vector&lt;IntRect&gt;&amp; rects, const LayoutPoint&amp; additionalOffset, const RenderLayerModelObject* repaintContainer)
&gt; 
&gt; repaintContainer-&gt;paintingRoot.

Changed to paintContainer.

&gt;&gt; Source/WebCore/rendering/RenderInline.h:84
&gt;&gt; +    virtual void addFocusRingRects(Vector&lt;IntRect&gt;&amp;, const LayoutPoint&amp;, const RenderLayerModelObject*);
&gt; 
&gt; Same here. If you&apos;re touching these functions, you might as well add OVERRIDE.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844265</commentid>
    <comment_count>19</comment_count>
      <attachid>190764</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2013-02-28 11:28:30 -0800</bug_when>
    <thetext>Created attachment 190764
Rebased. For landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844368</commentid>
    <comment_count>20</comment_count>
      <attachid>190764</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-28 12:40:19 -0800</bug_when>
    <thetext>Comment on attachment 190764
Rebased. For landing

Clearing flags on attachment: 190764

Committed r144350: &lt;http://trac.webkit.org/changeset/144350&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844369</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-28 12:40:25 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>190333</attachid>
            <date>2013-02-26 11:37:24 -0800</date>
            <delta_ts>2013-02-26 11:37:24 -0800</delta_ts>
            <desc>Test case</desc>
            <filename>focus-ring.html</filename>
            <type>text/html</type>
            <size>710</size>
            <attacher name="Xianzhu Wang">wangxianzhu</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KPHNjcmlwdD4KICBpZiAod2luZG93LmludGVy
bmFscykKICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0QWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0Zvck92ZXJmbG93U2Nyb2xsRW5hYmxlZCh0cnVlKTsKPC9zY3JpcHQ+CjwvaGVhZD4KPGJv
ZHk+CiAgPGRpdiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IDYwcHg7IGxlZnQ6IDEw
MHB4OyB3aWR0aDogNTAwcHg7IGhlaWdodDogMzAwcHg7IGJhY2tncm91bmQtY29sb3I6IHllbGxv
dyI+CiAgICA8ZGl2IHN0eWxlPSJvdmVyZmxvdzogYXV0bzsgd2lkdGg6IDEwMCU7IGhlaWdodDog
MTAwJSI+CiAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZSI+CiAgICAgICAgPGRp
diBzdHlsZT0ib3V0bGluZTogcmVkIGF1dG8gdGhpbjsgd2lkdGg6IDE1MHB4OyBoZWlnaHQ6IDUw
cHg7IGJhY2tncm91bmQtY29sb3I6IGxpZ2h0Z3JleSI+CiAgICAgICAgICA8ZGl2IHN0eWxlPSJw
b3NpdGlvbjogYWJzb2x1dGU7IGhlaWdodDogMjBweDsgd2lkdGg6IDgwcHg7IGhlaWdodDogNjBw
eDsgYmFja2dyb3VuZC1jb2xvcjogZ3JleSI+PC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwv
ZGl2PgogICAgICA8ZGl2IHN0eWxlPSJoZWlnaHQ6IDEwMDBweCI+PC9kaXY+CiAgICA8L2Rpdj4K
ICA8L2Rpdj4KPC9ib2R5Pgo8L2h0bWw+Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>190359</attachid>
            <date>2013-02-26 14:18:17 -0800</date>
            <delta_ts>2013-02-26 14:18:17 -0800</delta_ts>
            <desc>Simplified test case</desc>
            <filename>outline.html</filename>
            <type>text/html</type>
            <size>550</size>
            <attacher name="Xianzhu Wang">wangxianzhu</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KPHN0eWxlPgouY29tcG9zaXRlZCB7CiAgLXdl
YmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7Cn0KCi5vdXRlciB7CiAgcG9zaXRpb246IGFi
c29sdXRlOwogIHdpZHRoOiA1MDBweDsKICBoZWlnaHQ6IDMwMHB4OwogIHRvcDogNjBweDsKICBs
ZWZ0OiAxMDBweDsKICBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3c7Cn0KCi5vdXRsaW5lZCB7CiAg
b3V0bGluZTogcmVkIGF1dG8gdGhpbjsKICB3aWR0aDogMTUwcHg7CiAgaGVpZ2h0OiA1MHB4Owog
IGJhY2tncm91bmQtY29sb3I6IGxpZ2h0Z3JleTsKfQoKLmlubmVyIHsKICB3aWR0aDogODBweDsK
ICBoZWlnaHQ6IDYwcHg7CiAgYmFja2dyb3VuZC1jb2xvcjogZ3JleTsKfQo8L3N0eWxlPgo8L2hl
YWQ+Cjxib2R5PgogIDxkaXYgY2xhc3M9ImNvbXBvc2l0ZWQgb3V0ZXIiPgogICAgPGRpdiBjbGFz
cz0ib3V0bGluZWQiPgogICAgICA8ZGl2IGNsYXNzPSJjb21wb3NpdGVkIGlubmVyIj48L2Rpdj4K
ICAgIDwvZGl2PgogIDwvZGl2Pgo8L2JvZHk+CjwvaHRtbD4KCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190636</attachid>
            <date>2013-02-27 19:42:36 -0800</date>
            <delta_ts>2013-02-28 09:35:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110895-20130227193849.patch</filename>
            <type>text/plain</type>
            <size>38684</size>
            <attacher name="Xianzhu Wang">wangxianzhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0MDc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDlkYjIxZjA4NjJhMTc3
NmU1OTYwYzRhOWQ2YzI0ZjMwYzhlMTViYy4uMGI0ZmYwNDA0YjNjODQ5ZTUzOWY2MzE5YjE2MTMz
MWQ2OGUzOGM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDEzLTAyLTI3ICBYaWFu
emh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRm9jdXMgcmlu
ZyBmb3IgYSBjaGlsZCBsYXllciBpcyBpbmNvcnJlY3RseSBvZmZzZXQgYnkgYW5jZXN0b3IgY29t
cG9zaXRlZCBsYXllcidzIHBvc2l0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTA4OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUZXN0OiBjb21wb3NpdGluZy9zdWItbGF5ZXItZm9jdXMtcmluZy5o
dG1sCisKKyAgICAgICAgVGhlIHByb2JsZW0gb2NjdXJzIGluIFJlbmRlckJsb2NrOjphZGRGb2N1
c1JpbmdSZWN0cygpIHdoZXJlIHRoZSBhYnNvbHV0ZSBwb3NpdGlvbiBvZiBhIHN1Yi1sYXllciBp
cyB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgZm9jdXMgcmluZyByZWN0IG9mIHRoZSBsYXllci4KKyAg
ICAgICAgU2hvdWxkIHVzZSB0aGUgcmVsYXRpdmUgcG9zaXRpb24gdG8gdGhlIGN1cnJlbnQgcmVw
YWludENvbnRhaW5lciBpbnN0ZWFkLgorCisgICAgICAgIFRvIGZpeCB0aGUgaXNzdWU6CisgICAg
ICAgIC0gUmVuZGVyTGF5ZXIgcGFzc2VzIExheWVyUGFpbnRpbmdJbmZvLnJvb3RMYXllciB0byBQ
YWludEluZm8ucmVwYWludENvbnRhaW5lcgorICAgICAgICAtIExldCBSZW5kZXJPYmplY3Q6OnBh
aW50Rm9jdXNSaW5nKCkgYW5kIFJlbmRlck9iamVjdDo6cGFpbnRPdXRsaW5lKCkgdGFrZSBQYWlu
dEluZm8gaW5zdGVhZCBvZiBHcmFwaGljc0NvbnRleHQqIHNvIHRoYXQgdGhlIHJlcGFpbnRDb250
YWluZXIgY2FuIGJlIHBhc3NlZAorICAgICAgICAtIFJlbmRlckJsb2NrOjphZGRGb2N1c1JpbmdS
ZWN0cygpIHVzZXMgbG9jYWxUb0NvbnRhaW5lclBvaW50KEZsb2F0UG9pbnQoKSwgcmVwYWludENv
bnRhaW5lcikgaW5zdGVhZCBvZiBsb2NhbFRvQWJzb2x1dGUoKSB0byBjYWxjdWxhdGUgdGhlIGZv
Y3VzIHJpbmcgcmVjdCBvZiBhIHN1YmxheWVyLgorCisgICAgICAgICogcmVuZGVyaW5nL1BhaW50
SW5mby5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWludEluZm86
OlBhaW50SW5mbyk6IEFkZCBhIGZpZWxkIHJlcGFpbnRDb250YWluZXIgKHRoZSBSZW5kZXJMYXll
ck1vZGVsT2JqZWN0IHdoaWNoIG9yaWdpbmF0ZXMgdGhlIGN1cnJlbnQgcGFpbnRpbmcpCisgICAg
ICAgIChQYWludEluZm8pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cGFpbnRPYmplY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQmxvY2s6OnBhaW50Q29udGludWF0aW9uT3V0bGluZXMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2s6OmFkZEZvY3VzUmluZ1JlY3RzKTogVXNlIHRoZSBhZGRlZCBy
ZXBhaW50Q29udGFpbmVyIHBhcmFtZXRlciB0byBjYWxjdWxhdGUgdGhlIHJlbGF0aXZlIG9mZnNl
dCBvZiB0aGUgY2hpbGQgbGF5ZXIuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6
CisgICAgICAgIChSZW5kZXJCbG9jayk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmFkZEZvY3VzUmluZ1JlY3RzKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6CisgICAgICAgIChSZW5kZXJCb3gpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVySW5saW5lOjphZGRGb2N1c1JpbmdSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bmxpbmU6OnBhaW50T3V0bGluZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5o
OgorICAgICAgICAoUmVuZGVySW5saW5lKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50
cyk6IFBhc3MgTGF5ZXJQYWludGluZ0luZm8ucm9vdExheWVyIHRvIFBhaW50SW5mby5yZXBhaW50
Q29udGFpbmVyLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaW5lQm94TGlzdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaW5lQm94TGlzdDo6cGFpbnQpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RC
b3g6OmFkZEZvY3VzUmluZ1JlY3RzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEJv
eC5oOgorICAgICAgICAoUmVuZGVyTGlzdEJveCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnBhaW50Rm9jdXNS
aW5nKTogTm93IHRha2VzIFBhaW50SW5mbyBpbnN0ZWFkIG9mIEdyYXBoaWNzQ29udGV4dCouIFBh
c3MgcGFpbnRJbmZvLnJlcGFpbnRDb250YWluZXIgdG8gYWRkRm9jdXNSaW5nUmVjdHMoKS4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6cGFpbnRPdXRsaW5lKTogTm93IHRha2VzIFBh
aW50SW5mbyBpbnN0ZWFkIG9mIEdyYXBoaWNzQ29udGV4dCouCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJPYmplY3Q6OmFic29sdXRlRm9jdXNSaW5nUXVhZHMpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6YWRkRm9j
dXNSaW5nUmVjdHMpOiBBZGQgcmVwYWludENvbnRhaW5lciBwYXJhbWV0ZXIuCisgICAgICAgIChS
ZW5kZXJPYmplY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZXBsYWNlZDo6cGFpbnQpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6cGFp
bnRPYmplY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZVJvdzo6cGFpbnRPdXRsaW5lRm9yUm93SWZOZWVkZWQp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGFibGVTZWN0aW9uOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclRleHRDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250
cm9sOjphZGRGb2N1c1JpbmdSZWN0cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRD
b250cm9sLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0NvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdDb250
YWluZXI6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0NvbnRhaW5lcjo6YWRk
Rm9jdXNSaW5nUmVjdHMpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFp
bmVyLmg6CisgICAgICAgIChSZW5kZXJTVkdDb250YWluZXIpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1h
Z2U6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjphZGRGb2N1c1Jp
bmdSZWN0cyk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHU2hhcGU6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1No
YXBlOjphZGRGb2N1c1JpbmdSZWN0cyk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdTaGFwZS5oOgorICAgICAgICAoUmVuZGVyU1ZHU2hhcGUpOgorCiAyMDEzLTAyLTI2ICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgogCiAgICAgICAgIFtU
ZXhNYXBdIElnbm9yZSBsYXllciByZXBhaW50IHJlcXVlc3Qgd2hlbiBkcmF3c0NvbnRlbnQgaXMg
ZmFsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWludEluZm8uaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWludEluZm8uaAppbmRleCBjNTFiN2ZlNTU1MTVm
OWIwMWRjYjJhZjdhNzM5OWVmNmFhY2IyNmIxLi40YzRjMmVjYTcyMTE2NmVkZWIzMjM1MDJhZThh
OTA1NzRmYTc1ZGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRJ
bmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50SW5mby5oCkBAIC00Miw2
ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgT3ZlcmxhcFRlc3RSZXF1ZXN0
Q2xpZW50OwogY2xhc3MgUmVuZGVySW5saW5lOworY2xhc3MgUmVuZGVyTGF5ZXJNb2RlbE9iamVj
dDsKIGNsYXNzIFJlbmRlck9iamVjdDsKIGNsYXNzIFJlbmRlclJlZ2lvbjsKIApAQCAtNTMsOCAr
NTQsOCBAQCB0eXBlZGVmIEhhc2hNYXA8T3ZlcmxhcFRlc3RSZXF1ZXN0Q2xpZW50KiwgSW50UmVj
dD4gT3ZlcmxhcFRlc3RSZXF1ZXN0TWFwOwogICovCiBzdHJ1Y3QgUGFpbnRJbmZvIHsKICAgICBQ
YWludEluZm8oR3JhcGhpY3NDb250ZXh0KiBuZXdDb250ZXh0LCBjb25zdCBJbnRSZWN0JiBuZXdS
ZWN0LCBQYWludFBoYXNlIG5ld1BoYXNlLCBQYWludEJlaGF2aW9yIG5ld1BhaW50QmVoYXZpb3Is
Ci0gICAgICAgICAgICAgIFJlbmRlck9iamVjdCogbmV3UGFpbnRpbmdSb290ID0gMCwgUmVuZGVy
UmVnaW9uKiByZWdpb24gPSAwLCBMaXN0SGFzaFNldDxSZW5kZXJJbmxpbmUqPiogbmV3T3V0bGlu
ZU9iamVjdHMgPSAwLAotICAgICAgICAgICAgICBPdmVybGFwVGVzdFJlcXVlc3RNYXAqIG92ZXJs
YXBUZXN0UmVxdWVzdHMgPSAwKQorICAgICAgICBSZW5kZXJPYmplY3QqIG5ld1BhaW50aW5nUm9v
dCA9IDAsIFJlbmRlclJlZ2lvbiogcmVnaW9uID0gMCwgTGlzdEhhc2hTZXQ8UmVuZGVySW5saW5l
Kj4qIG5ld091dGxpbmVPYmplY3RzID0gMCwKKyAgICAgICAgT3ZlcmxhcFRlc3RSZXF1ZXN0TWFw
KiBvdmVybGFwVGVzdFJlcXVlc3RzID0gMCwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCog
bmV3UmVwYWludENvbnRhaW5lciA9IDApCiAgICAgICAgIDogY29udGV4dChuZXdDb250ZXh0KQog
ICAgICAgICAsIHJlY3QobmV3UmVjdCkKICAgICAgICAgLCBwaGFzZShuZXdQaGFzZSkKQEAgLTYz
LDYgKzY0LDcgQEAgc3RydWN0IFBhaW50SW5mbyB7CiAgICAgICAgICwgcmVuZGVyUmVnaW9uKHJl
Z2lvbikKICAgICAgICAgLCBvdXRsaW5lT2JqZWN0cyhuZXdPdXRsaW5lT2JqZWN0cykKICAgICAg
ICAgLCBvdmVybGFwVGVzdFJlcXVlc3RzKG92ZXJsYXBUZXN0UmVxdWVzdHMpCisgICAgICAgICwg
cmVwYWludENvbnRhaW5lcihuZXdSZXBhaW50Q29udGFpbmVyKQogICAgIHsKICAgICB9CiAKQEAg
LTExNCw2ICsxMTYsNyBAQCBzdHJ1Y3QgUGFpbnRJbmZvIHsKICAgICBSZW5kZXJSZWdpb24qIHJl
bmRlclJlZ2lvbjsKICAgICBMaXN0SGFzaFNldDxSZW5kZXJJbmxpbmUqPiogb3V0bGluZU9iamVj
dHM7IC8vIHVzZWQgdG8gbGlzdCBvdXRsaW5lcyB0aGF0IHNob3VsZCBiZSBwYWludGVkIGJ5IGEg
YmxvY2sgd2l0aCBpbmxpbmUgY2hpbGRyZW4KICAgICBPdmVybGFwVGVzdFJlcXVlc3RNYXAqIG92
ZXJsYXBUZXN0UmVxdWVzdHM7CisgICAgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVw
YWludENvbnRhaW5lcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IDVhYjQ3YTBmNmJlZTk5MWVhZjJjOWU2
YjU5ZDM2MzcxMzUzZmY2YjYuLjFhYzhiNzliNDg3ZWQ2NTg1NjkxZTE4NDUwNDk2NjEwNDE4OTA2
NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtMzE1NCw3
ICszMTU0LDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6cGFpbnRPYmplY3QoUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnMKIAogICAgIC8vIDUuIHBhaW50IG91
dGxpbmUuCiAgICAgaWYgKChwYWludFBoYXNlID09IFBhaW50UGhhc2VPdXRsaW5lIHx8IHBhaW50
UGhhc2UgPT0gUGFpbnRQaGFzZVNlbGZPdXRsaW5lKSAmJiBoYXNPdXRsaW5lKCkgJiYgc3R5bGUo
KS0+dmlzaWJpbGl0eSgpID09IFZJU0lCTEUpCi0gICAgICAgIHBhaW50T3V0bGluZShwYWludElu
Zm8uY29udGV4dCwgTGF5b3V0UmVjdChwYWludE9mZnNldCwgc2l6ZSgpKSk7CisgICAgICAgIHBh
aW50T3V0bGluZShwYWludEluZm8sIExheW91dFJlY3QocGFpbnRPZmZzZXQsIHNpemUoKSkpOwog
CiAgICAgLy8gNi4gcGFpbnQgY29udGludWF0aW9uIG91dGxpbmVzLgogICAgIGlmICgocGFpbnRQ
aGFzZSA9PSBQYWludFBoYXNlT3V0bGluZSB8fCBwYWludFBoYXNlID09IFBhaW50UGhhc2VDaGls
ZE91dGxpbmVzKSkgewpAQCAtMzE3Nyw3ICszMTc3LDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6cGFp
bnRPYmplY3QoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9m
ZnMKICAgICAgICAgICAgIGlmICghaW5saW5lRW5jbG9zZWRJblNlbGZQYWludGluZ0xheWVyICYm
ICFoYXNMYXllcigpKQogICAgICAgICAgICAgICAgIGNiLT5hZGRDb250aW51YXRpb25XaXRoT3V0
bGluZShpbmxpbmVSZW5kZXJlcik7CiAgICAgICAgICAgICBlbHNlIGlmICghaW5saW5lUmVuZGVy
ZXItPmZpcnN0TGluZUJveCgpIHx8ICghaW5saW5lRW5jbG9zZWRJblNlbGZQYWludGluZ0xheWVy
ICYmIGhhc0xheWVyKCkpKQotICAgICAgICAgICAgICAgIGlubGluZVJlbmRlcmVyLT5wYWludE91
dGxpbmUocGFpbnRJbmZvLmNvbnRleHQsIHBhaW50T2Zmc2V0IC0gbG9jYXRpb25PZmZzZXQoKSAr
IGlubGluZVJlbmRlcmVyLT5jb250YWluaW5nQmxvY2soKS0+bG9jYXRpb24oKSk7CisgICAgICAg
ICAgICAgICAgaW5saW5lUmVuZGVyZXItPnBhaW50T3V0bGluZShwYWludEluZm8sIHBhaW50T2Zm
c2V0IC0gbG9jYXRpb25PZmZzZXQoKSArIGlubGluZVJlbmRlcmVyLT5jb250YWluaW5nQmxvY2so
KS0+bG9jYXRpb24oKSk7CiAgICAgICAgIH0KICAgICAgICAgcGFpbnRDb250aW51YXRpb25PdXRs
aW5lcyhwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKICAgICB9CkBAIC0zMzA1LDcgKzMzMDUsNyBA
QCB2b2lkIFJlbmRlckJsb2NrOjpwYWludENvbnRpbnVhdGlvbk91dGxpbmVzKFBhaW50SW5mbyYg
aW5mbywgY29uc3QgTGF5b3V0UG9pbnQmCiAgICAgICAgIGZvciAoIDsgYmxvY2sgJiYgYmxvY2sg
IT0gdGhpczsgYmxvY2sgPSBibG9jay0+Y29udGFpbmluZ0Jsb2NrKCkpCiAgICAgICAgICAgICBh
Y2N1bXVsYXRlZFBhaW50T2Zmc2V0Lm1vdmVCeShibG9jay0+bG9jYXRpb24oKSk7CiAgICAgICAg
IEFTU0VSVChibG9jayk7ICAgCi0gICAgICAgIGZsb3ctPnBhaW50T3V0bGluZShpbmZvLmNvbnRl
eHQsIGFjY3VtdWxhdGVkUGFpbnRPZmZzZXQpOworICAgICAgICBmbG93LT5wYWludE91dGxpbmUo
aW5mbywgYWNjdW11bGF0ZWRQYWludE9mZnNldCk7CiAgICAgfQogfQogCkBAIC03MTEwLDcgKzcx
MTAsNyBAQCBMYXlvdXRSZWN0IFJlbmRlckJsb2NrOjpsb2NhbENhcmV0UmVjdChJbmxpbmVCb3gq
IGlubGluZUJveCwgaW50IGNhcmV0T2Zmc2V0LCBMYQogICAgIHJldHVybiBjYXJldFJlY3Q7CiB9
CiAKLXZvaWQgUmVuZGVyQmxvY2s6OmFkZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxJbnRSZWN0PiYg
cmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhZGRpdGlvbmFsT2Zmc2V0KQordm9pZCBSZW5kZXJC
bG9jazo6YWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgY29uc3QgTGF5
b3V0UG9pbnQmIGFkZGl0aW9uYWxPZmZzZXQsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3Qq
IHJlcGFpbnRDb250YWluZXIpCiB7CiAgICAgLy8gRm9yIGJsb2NrcyBpbnNpZGUgaW5saW5lcywg
d2UgZ28gYWhlYWQgYW5kIGluY2x1ZGUgbWFyZ2lucyBzbyB0aGF0IHdlIHJ1biByaWdodCB1cCB0
byB0aGUKICAgICAvLyBpbmxpbmUgYm94ZXMgYWJvdmUgYW5kIGJlbG93IHVzICh0aHVzIGdldHRp
bmcgbWVyZ2VkIHdpdGggdGhlbSB0byBmb3JtIGEgc2luZ2xlIGlycmVndWxhcgpAQCAtNzE0NSwx
NiArNzE0NSwxNiBAQCB2b2lkIFJlbmRlckJsb2NrOjphZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8
SW50UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYQogICAgICAgICAgICAgICAgIEZs
b2F0UG9pbnQgcG9zOwogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGRvZXNuJ3Qgd29y
ayBjb3JyZWN0bHkgd2l0aCB0cmFuc2Zvcm1zLgogICAgICAgICAgICAgICAgIGlmIChib3gtPmxh
eWVyKCkpIAotICAgICAgICAgICAgICAgICAgICBwb3MgPSBjdXJyLT5sb2NhbFRvQWJzb2x1dGUo
KTsKKyAgICAgICAgICAgICAgICAgICAgcG9zID0gY3Vyci0+bG9jYWxUb0NvbnRhaW5lclBvaW50
KEZsb2F0UG9pbnQoKSwgcmVwYWludENvbnRhaW5lcik7CiAgICAgICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgICAgICBwb3MgPSBGbG9hdFBvaW50KGFkZGl0aW9uYWxPZmZzZXQueCgp
ICsgYm94LT54KCksIGFkZGl0aW9uYWxPZmZzZXQueSgpICsgYm94LT55KCkpOwotICAgICAgICAg
ICAgICAgIGJveC0+YWRkRm9jdXNSaW5nUmVjdHMocmVjdHMsIGZsb29yZWRMYXlvdXRQb2ludChw
b3MpKTsKKyAgICAgICAgICAgICAgICBib3gtPmFkZEZvY3VzUmluZ1JlY3RzKHJlY3RzLCBmbG9v
cmVkTGF5b3V0UG9pbnQocG9zKSwgcmVwYWludENvbnRhaW5lcik7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoaW5saW5lRWxlbWVudENvbnRpbnVhdGlvbigpKQot
ICAgICAgICBpbmxpbmVFbGVtZW50Q29udGludWF0aW9uKCktPmFkZEZvY3VzUmluZ1JlY3RzKHJl
Y3RzLCBmbG9vcmVkTGF5b3V0UG9pbnQoYWRkaXRpb25hbE9mZnNldCArIGlubGluZUVsZW1lbnRD
b250aW51YXRpb24oKS0+Y29udGFpbmluZ0Jsb2NrKCktPmxvY2F0aW9uKCkgLSBsb2NhdGlvbigp
KSk7CisgICAgICAgIGlubGluZUVsZW1lbnRDb250aW51YXRpb24oKS0+YWRkRm9jdXNSaW5nUmVj
dHMocmVjdHMsIGZsb29yZWRMYXlvdXRQb2ludChhZGRpdGlvbmFsT2Zmc2V0ICsgaW5saW5lRWxl
bWVudENvbnRpbnVhdGlvbigpLT5jb250YWluaW5nQmxvY2soKS0+bG9jYXRpb24oKSAtIGxvY2F0
aW9uKCkpLCByZXBhaW50Q29udGFpbmVyKTsKIH0KIAogUmVuZGVyQm94KiBSZW5kZXJCbG9jazo6
Y3JlYXRlQW5vbnltb3VzQm94V2l0aFNhbWVUeXBlQXMoY29uc3QgUmVuZGVyT2JqZWN0KiBwYXJl
bnQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCmluZGV4IGJiMjkw
MWU2YzY4MzYxODNmZTRhYzAyNTBmNmEwYjAzNTNkZWQxODkuLjgyNWYwMDhiMDIzZDYyMmY4YWM4
ZGE0MjFmNjE0Yzg0M2VkYWVjNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
ay5oCkBAIC01MzUsNyArNTM1LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgYWRkT3ZlcmZsb3dG
cm9tSW5saW5lQ2hpbGRyZW4oKTsKICAgICB2b2lkIGFkZFZpc3VhbE92ZXJmbG93RnJvbVRoZW1l
KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPEludFJlY3Q+
JiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkRm9jdXNSaW5nUmVj
dHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJMYXll
ck1vZGVsT2JqZWN0Kik7CiAKICNpZiBFTkFCTEUoU1ZHKQogICAgIC8vIE9ubHkgdXNlZCBieSBS
ZW5kZXJTVkdUZXh0LCB3aGljaCBleHBsaWNpdGVseSBvdmVycmlkZXMgUmVuZGVyQmxvY2s6Omxh
eW91dEJsb2NrKCksIGRvIE5PVCB1c2UgZm9yIGFueXRoaW5nIGVsc2UuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IGY2ODUzNTk2ZjAzZmQyM2NiYTRkY2Q4YmEyMjlk
MDU2MDhiMmE5NzIuLmU3Yzk1Y2I3MzI2ODY3NjFiZTk0NzE1YmU2NmI0MDY0N2M0OTg5NDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC01NDEsNyArNTQxLDcgQEAg
TGF5b3V0UmVjdCBSZW5kZXJCb3g6Om91dGxpbmVCb3VuZHNGb3JSZXBhaW50KGNvbnN0IFJlbmRl
ckxheWVyTW9kZWxPYmplY3QqIHJlcGEKICAgICByZXR1cm4gYm94OwogfQogCi12b2lkIFJlbmRl
ckJveDo6YWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgY29uc3QgTGF5
b3V0UG9pbnQmIGFkZGl0aW9uYWxPZmZzZXQpCit2b2lkIFJlbmRlckJveDo6YWRkRm9jdXNSaW5n
UmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0aW9u
YWxPZmZzZXQsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqKQogewogICAgIGlmICghc2l6
ZSgpLmlzRW1wdHkoKSkKICAgICAgICAgcmVjdHMuYXBwZW5kKHBpeGVsU25hcHBlZEludFJlY3Qo
YWRkaXRpb25hbE9mZnNldCwgc2l6ZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmgKaW5kZXggODYxMzY3OGFhMTQ5ZjBlMWUyMGUwNDM1Yzk3YWU5OGIyMmMyOGYxMC4uNjMxYTdm
ODM3NWQzZDcxNDlhZTZlYjk3OGM0N2NhNzY5MTZmZmZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guaApAQCAtMTYyLDcgKzE2Miw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEJvdW5k
cyBvZiB0aGUgb3V0bGluZSBib3ggaW4gYWJzb2x1dGUgY29vcmRzLiBSZXNwZWN0cyB0cmFuc2Zv
cm1zCiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IG91dGxpbmVCb3VuZHNGb3JSZXBhaW50KGNvbnN0
IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIC8qcmVwYWludENvbnRhaW5lciovLCBjb25zdCBSZW5k
ZXJHZW9tZXRyeU1hcCopIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBhZGRGb2N1
c1JpbmdSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYpOworICAgIHZp
cnR1YWwgdm9pZCBhZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBMYXlv
dXRQb2ludCYsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqKTsKIAogICAgIC8vIFVzZSB0
aGlzIHdpdGggY2F1dGlvbiEgTm8gdHlwZSBjaGVja2luZyBpcyBkb25lIQogICAgIFJlbmRlckJv
eCogcHJldmlvdXNTaWJsaW5nQm94KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbmxpbmUuY3BwCmluZGV4IGViMTMwYzg1OTYwN2VkODkxNjZjMjBhZDc5MmJjNmY4MDM1
MTU1NjQuLmRkMjFmNDQ2ZTRmNTljOGVjYmU2MTI2YjhkYzgzYmFkY2NmMTg1MmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCkBAIC0xMzY1LDcgKzEzNjUsNyBA
QCB2b2lkIFJlbmRlcklubGluZTo6aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciwgY29uc3Qg
SW50UmVjdCopCiAgICAgcmVwYWludCgpOwogfQogCi12b2lkIFJlbmRlcklubGluZTo6YWRkRm9j
dXNSaW5nUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFk
ZGl0aW9uYWxPZmZzZXQpCit2b2lkIFJlbmRlcklubGluZTo6YWRkRm9jdXNSaW5nUmVjdHMoVmVj
dG9yPEludFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0aW9uYWxPZmZzZXQs
IGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpCiB7CiAgICAg
QWJzb2x1dGVSZWN0c0dlbmVyYXRvckNvbnRleHQgY29udGV4dChyZWN0cywgYWRkaXRpb25hbE9m
ZnNldCk7CiAgICAgZ2VuZXJhdGVMaW5lQm94UmVjdHMoY29udGV4dCk7CkBAIC0xMzc1LDIyICsx
Mzc1LDIyIEBAIHZvaWQgUmVuZGVySW5saW5lOjphZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8SW50
UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYKICAgICAgICAgICAgIEZsb2F0UG9pbnQg
cG9zKGFkZGl0aW9uYWxPZmZzZXQpOwogICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgZG9lc24n
dCB3b3JrIGNvcnJlY3RseSB3aXRoIHRyYW5zZm9ybXMuCiAgICAgICAgICAgICBpZiAoY3Vyci0+
aGFzTGF5ZXIoKSkgCi0gICAgICAgICAgICAgICAgcG9zID0gY3Vyci0+bG9jYWxUb0Fic29sdXRl
KCk7CisgICAgICAgICAgICAgICAgcG9zID0gY3Vyci0+bG9jYWxUb0NvbnRhaW5lclBvaW50KEZs
b2F0UG9pbnQoKSwgcmVwYWludENvbnRhaW5lcik7CiAgICAgICAgICAgICBlbHNlIGlmIChjdXJy
LT5pc0JveCgpKQogICAgICAgICAgICAgICAgIHBvcy5tb3ZlKHRvUmVuZGVyQm94KGN1cnIpLT5s
b2NhdGlvbk9mZnNldCgpKTsKLSAgICAgICAgICAgIGN1cnItPmFkZEZvY3VzUmluZ1JlY3RzKHJl
Y3RzLCBmbG9vcmVkSW50UG9pbnQocG9zKSk7CisgICAgICAgICAgICBjdXJyLT5hZGRGb2N1c1Jp
bmdSZWN0cyhyZWN0cywgZmxvb3JlZEludFBvaW50KHBvcyksIHJlcGFpbnRDb250YWluZXIpOwog
ICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKGNvbnRpbnVhdGlvbigpKSB7CiAgICAgICAgIGlm
IChjb250aW51YXRpb24oKS0+aXNJbmxpbmUoKSkKLSAgICAgICAgICAgIGNvbnRpbnVhdGlvbigp
LT5hZGRGb2N1c1JpbmdSZWN0cyhyZWN0cywgZmxvb3JlZExheW91dFBvaW50KGFkZGl0aW9uYWxP
ZmZzZXQgKyBjb250aW51YXRpb24oKS0+Y29udGFpbmluZ0Jsb2NrKCktPmxvY2F0aW9uKCkgLSBj
b250YWluaW5nQmxvY2soKS0+bG9jYXRpb24oKSkpOworICAgICAgICAgICAgY29udGludWF0aW9u
KCktPmFkZEZvY3VzUmluZ1JlY3RzKHJlY3RzLCBmbG9vcmVkTGF5b3V0UG9pbnQoYWRkaXRpb25h
bE9mZnNldCArIGNvbnRpbnVhdGlvbigpLT5jb250YWluaW5nQmxvY2soKS0+bG9jYXRpb24oKSAt
IGNvbnRhaW5pbmdCbG9jaygpLT5sb2NhdGlvbigpKSwgcmVwYWludENvbnRhaW5lcik7CiAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIGNvbnRpbnVhdGlvbigpLT5hZGRGb2N1c1JpbmdSZWN0cyhy
ZWN0cywgZmxvb3JlZExheW91dFBvaW50KGFkZGl0aW9uYWxPZmZzZXQgKyB0b1JlbmRlckJveChj
b250aW51YXRpb24oKSktPmxvY2F0aW9uKCkgLSBjb250YWluaW5nQmxvY2soKS0+bG9jYXRpb24o
KSkpOworICAgICAgICAgICAgY29udGludWF0aW9uKCktPmFkZEZvY3VzUmluZ1JlY3RzKHJlY3Rz
LCBmbG9vcmVkTGF5b3V0UG9pbnQoYWRkaXRpb25hbE9mZnNldCArIHRvUmVuZGVyQm94KGNvbnRp
bnVhdGlvbigpKS0+bG9jYXRpb24oKSAtIGNvbnRhaW5pbmdCbG9jaygpLT5sb2NhdGlvbigpKSwg
cmVwYWludENvbnRhaW5lcik7CiAgICAgfQogfQogCi12b2lkIFJlbmRlcklubGluZTo6cGFpbnRP
dXRsaW5lKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBMYXlvdXRQb2lu
dCYgcGFpbnRPZmZzZXQpCit2b2lkIFJlbmRlcklubGluZTo6cGFpbnRPdXRsaW5lKFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiB7CiAgICAgaWYg
KCFoYXNPdXRsaW5lKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTEzOTksMTAgKzEzOTksMTEgQEAg
dm9pZCBSZW5kZXJJbmxpbmU6OnBhaW50T3V0bGluZShHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNz
Q29udGV4dCwgY29uc3QgTGF5b3V0UG8KICAgICBpZiAoc3R5bGVUb1VzZS0+b3V0bGluZVN0eWxl
SXNBdXRvKCkgfHwgaGFzT3V0bGluZUFubm90YXRpb24oKSkgewogICAgICAgICBpZiAoIXRoZW1l
KCktPnN1cHBvcnRzRm9jdXNSaW5nKHN0eWxlVG9Vc2UpKSB7CiAgICAgICAgICAgICAvLyBPbmx5
IHBhaW50IHRoZSBmb2N1cyByaW5nIGJ5IGhhbmQgaWYgdGhlIHRoZW1lIGlzbid0IGFibGUgdG8g
ZHJhdyB0aGUgZm9jdXMgcmluZy4KLSAgICAgICAgICAgIHBhaW50Rm9jdXNSaW5nKGdyYXBoaWNz
Q29udGV4dCwgcGFpbnRPZmZzZXQsIHN0eWxlVG9Vc2UpOworICAgICAgICAgICAgcGFpbnRGb2N1
c1JpbmcocGFpbnRJbmZvLCBwYWludE9mZnNldCwgc3R5bGVUb1VzZSk7CiAgICAgICAgIH0KICAg
ICB9CiAKKyAgICBHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCA9IHBhaW50SW5mby5j
b250ZXh0OwogICAgIGlmIChncmFwaGljc0NvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW5saW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgKaW5k
ZXggMzk2MjBiNjVhMmZkOGY3ZmM4ZmZiMDFhZGJmZTIxNzhkZTgzNGJkOS4uMzNiMjg3NzNlZWIw
MjY1YmE5NGM5ZjlkN2VhYTMyMjAxZjZkOGE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcklubGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbmxpbmUuaApAQCAtODEsOCArODEsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgTGF5b3V0
U2l6ZSBvZmZzZXRGb3JJbkZsb3dQb3NpdGlvbmVkSW5saW5lKGNvbnN0IFJlbmRlckJveCogY2hp
bGQpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIGFkZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxJ
bnRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50Jik7Ci0gICAgdm9pZCBwYWludE91dGxpbmUoR3Jh
cGhpY3NDb250ZXh0KiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRk
Rm9jdXNSaW5nUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmLCBjb25z
dCBSZW5kZXJMYXllck1vZGVsT2JqZWN0Kik7CisgICAgdm9pZCBwYWludE91dGxpbmUoUGFpbnRJ
bmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKIAogICAgIHVzaW5nIFJlbmRlckJveE1vZGVsT2Jq
ZWN0Ojpjb250aW51YXRpb247CiAgICAgdXNpbmcgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnNldENv
bnRpbnVhdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4
IGQzZWY1ZWQwYWQwMGNlZjc1OGY1YmQ5NWFlNjhlYWYxNjhiZDEwMTguLmU0Yzg5OGRjMDAxZGQz
NzIwZDUyNGEzZWEzZWQ5NDcxNGE4MDMxNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmNwcApAQCAtMzgxOSw3ICszODE5LDkgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFp
bnRMYXllckNvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWlu
dGkKICAgICAgICAgICAgIAogICAgICAgICAgICAgUGFpbnRJbmZvIHBhaW50SW5mbyhjb250ZXh0
LCBwaXhlbFNuYXBwZWRJbnRSZWN0KGNsaXBSZWN0VG9BcHBseS5yZWN0KCkpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25Pbmx5ID8gUGFpbnRQaGFzZVNlbGVjdGlv
biA6IFBhaW50UGhhc2VDaGlsZEJsb2NrQmFja2dyb3VuZHMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZvcmNlQmxhY2tUZXh0ID8gKFBhaW50QmVoYXZpb3IpUGFpbnRCZWhhdmlv
ckZvcmNlQmxhY2tUZXh0IDogcGFpbnRCZWhhdmlvciwgcGFpbnRpbmdSb290Rm9yUmVuZGVyZXIs
IGxvY2FsUGFpbnRpbmdJbmZvLnJlZ2lvbik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZvcmNlQmxhY2tUZXh0ID8gKFBhaW50QmVoYXZpb3IpUGFpbnRCZWhhdmlvckZvcmNlQmxh
Y2tUZXh0IDogcGFpbnRCZWhhdmlvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cGFpbnRpbmdSb290Rm9yUmVuZGVyZXIsIGxvY2FsUGFpbnRpbmdJbmZvLnJlZ2lvbiwgMCwgMCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxQYWludGluZ0luZm8ucm9vdExh
eWVyLT5yZW5kZXJlcigpKTsKICAgICAgICAgICAgIHJlbmRlcmVyKCktPnBhaW50KHBhaW50SW5m
bywgcGFpbnRPZmZzZXQpOwogICAgICAgICAgICAgaWYgKCFzZWxlY3Rpb25Pbmx5KSB7CiAgICAg
ICAgICAgICAgICAgcGFpbnRJbmZvLnBoYXNlID0gUGFpbnRQaGFzZUZsb2F0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCb3hMaXN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQm94TGlzdC5jcHAKaW5kZXggZWI1NmRmZDEw
MTVjMTkzZGUyM2Q0Mjc4Zjk5YzU3MDFhNDcxYjE5OC4uN2I1NjJiNDI2YTczYzk1ZWRjYjU0NDli
ZDA3M2QwOGE3MzA4OTZmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxpbmVCb3hMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGluZUJveExpc3QuY3BwCkBAIC0yNjcsNyArMjY3LDcgQEAgdm9pZCBSZW5kZXJMaW5lQm94TGlz
dDo6cGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlbmRlcmVyLCBQYWludEluZm8mIHBhaW50
SW4KICAgICAgICAgTGlzdEhhc2hTZXQ8UmVuZGVySW5saW5lKj46Oml0ZXJhdG9yIGVuZCA9IGlu
Zm8ub3V0bGluZU9iamVjdHMtPmVuZCgpOwogICAgICAgICBmb3IgKExpc3RIYXNoU2V0PFJlbmRl
cklubGluZSo+OjppdGVyYXRvciBpdCA9IGluZm8ub3V0bGluZU9iamVjdHMtPmJlZ2luKCk7IGl0
ICE9IGVuZDsgKytpdCkgewogICAgICAgICAgICAgUmVuZGVySW5saW5lKiBmbG93ID0gKml0Owot
ICAgICAgICAgICAgZmxvdy0+cGFpbnRPdXRsaW5lKGluZm8uY29udGV4dCwgcGFpbnRPZmZzZXQp
OworICAgICAgICAgICAgZmxvdy0+cGFpbnRPdXRsaW5lKGluZm8sIHBhaW50T2Zmc2V0KTsKICAg
ICAgICAgfQogICAgICAgICBpbmZvLm91dGxpbmVPYmplY3RzLT5jbGVhcigpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAppbmRleCA1MWY4ZTQ2NGNh
ZjUwZTNmMzBlNmJmODY2Y2E2YjY2ZmFhZjJhMTAyLi42NWE1ZTcyNGZhZjVlZDA3M2IwZTdiMGUw
Njc0MTM4Y2U1ODQzMzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RC
b3guY3BwCkBAIC0zMjcsMTAgKzMyNywxMCBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OnBhaW50T2Jq
ZWN0KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZgogICAg
IH0KIH0KIAotdm9pZCBSZW5kZXJMaXN0Qm94OjphZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8SW50
UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYWRkaXRpb25hbE9mZnNldCkKK3ZvaWQg
UmVuZGVyTGlzdEJveDo6YWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywg
Y29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0aW9uYWxPZmZzZXQsIGNvbnN0IFJlbmRlckxheWVyTW9k
ZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpCiB7CiAgICAgaWYgKCFpc1NwYXRpYWxOYXZpZ2F0
aW9uRW5hYmxlZChmcmFtZSgpKSkKLSAgICAgICAgcmV0dXJuIFJlbmRlckJsb2NrOjphZGRGb2N1
c1JpbmdSZWN0cyhyZWN0cywgYWRkaXRpb25hbE9mZnNldCk7CisgICAgICAgIHJldHVybiBSZW5k
ZXJCbG9jazo6YWRkRm9jdXNSaW5nUmVjdHMocmVjdHMsIGFkZGl0aW9uYWxPZmZzZXQsIHJlcGFp
bnRDb250YWluZXIpOwogCiAgICAgSFRNTFNlbGVjdEVsZW1lbnQqIHNlbGVjdCA9IHNlbGVjdEVs
ZW1lbnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxp
c3RCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmgKaW5kZXgg
NDdhN2EzZDE0MDkzM2VkNTdiZTVlMDgxZjUyYTU4OWIyN2Q4MThlMS4uMGY3MjZkMTFiYjdmOGEy
YmUxODQxMjQ0ZmQ1MGMzMzAzNTQzYjBhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxpc3RCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGlzdEJveC5oCkBAIC04Miw3ICs4Miw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZv
aWQgbGF5b3V0KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9y
PEludFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkRm9j
dXNSaW5nUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBS
ZW5kZXJMYXllck1vZGVsT2JqZWN0Kik7CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuQmVQcm9ncmFt
YXRpY2FsbHlTY3JvbGxlZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZv
aWQgYXV0b3Njcm9sbChjb25zdCBJbnRQb2ludCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmNwcAppbmRleCA3YzRjMjkyMWU2OGFkM2MzOWVmYjcxMTY4NjFhYzNkY2M4
MGVhNWYxLi4xMzBkNWE5MTFjODQwODM0YTEyNjNmNWNiMzg5NGNmMTMxMzE0ODY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTA5MCwxNCArMTA5MCwx
NCBAQCB2b2lkIFJlbmRlck9iamVjdDo6ZHJhd0xpbmVGb3JCb3hTaWRlKEdyYXBoaWNzQ29udGV4
dCogZ3JhcGhpY3NDb250ZXh0LCBpbnQgeDEsCiAgICAgfQogfQogCi12b2lkIFJlbmRlck9iamVj
dDo6cGFpbnRGb2N1c1JpbmcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXlvdXRQ
b2ludCYgcGFpbnRPZmZzZXQsIFJlbmRlclN0eWxlKiBzdHlsZSkKK3ZvaWQgUmVuZGVyT2JqZWN0
OjpwYWludEZvY3VzUmluZyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQm
IHBhaW50T2Zmc2V0LCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAgICAgVmVjdG9yPEludFJlY3Q+
IGZvY3VzUmluZ1JlY3RzOwotICAgIGFkZEZvY3VzUmluZ1JlY3RzKGZvY3VzUmluZ1JlY3RzLCBw
YWludE9mZnNldCk7CisgICAgYWRkRm9jdXNSaW5nUmVjdHMoZm9jdXNSaW5nUmVjdHMsIHBhaW50
T2Zmc2V0LCBwYWludEluZm8ucmVwYWludENvbnRhaW5lcik7CiAgICAgaWYgKHN0eWxlLT5vdXRs
aW5lU3R5bGVJc0F1dG8oKSkKLSAgICAgICAgY29udGV4dC0+ZHJhd0ZvY3VzUmluZyhmb2N1c1Jp
bmdSZWN0cywgc3R5bGUtPm91dGxpbmVXaWR0aCgpLCBzdHlsZS0+b3V0bGluZU9mZnNldCgpLCBz
dHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5T3V0bGluZUNvbG9yKSk7Cisg
ICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3Rm9jdXNSaW5nKGZvY3VzUmluZ1JlY3RzLCBz
dHlsZS0+b3V0bGluZVdpZHRoKCksIHN0eWxlLT5vdXRsaW5lT2Zmc2V0KCksIHN0eWxlLT52aXNp
dGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3IpKTsKICAgICBlbHNlCi0g
ICAgICAgIGFkZFBERlVSTFJlY3QoY29udGV4dCwgdW5pb25SZWN0KGZvY3VzUmluZ1JlY3RzKSk7
CisgICAgICAgIGFkZFBERlVSTFJlY3QocGFpbnRJbmZvLmNvbnRleHQsIHVuaW9uUmVjdChmb2N1
c1JpbmdSZWN0cykpOwogfQogCiB2b2lkIFJlbmRlck9iamVjdDo6YWRkUERGVVJMUmVjdChHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIHJlY3QpCkBAIC0xMTEzLDIz
ICsxMTEzLDIwIEBAIHZvaWQgUmVuZGVyT2JqZWN0OjphZGRQREZVUkxSZWN0KEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgcmVjCiAgICAgY29udGV4dC0+c2V0VVJM
Rm9yUmVjdChuLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChocmVmKSwgcGl4ZWxTbmFwcGVkSW50
UmVjdChyZWN0KSk7CiB9CiAKLXZvaWQgUmVuZGVyT2JqZWN0OjpwYWludE91dGxpbmUoR3JhcGhp
Y3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIHBhaW50UmVjdCkK
K3ZvaWQgUmVuZGVyT2JqZWN0OjpwYWludE91dGxpbmUoUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IExheW91dFJlY3QmIHBhaW50UmVjdCkKIHsKICAgICBpZiAoIWhhc091dGxpbmUoKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgUmVuZGVyU3R5bGUqIHN0eWxlVG9Vc2UgPSBzdHlsZSgpOwog
ICAgIExheW91dFVuaXQgb3V0bGluZVdpZHRoID0gc3R5bGVUb1VzZS0+b3V0bGluZVdpZHRoKCk7
Ci0gICAgRUJvcmRlclN0eWxlIG91dGxpbmVTdHlsZSA9IHN0eWxlVG9Vc2UtPm91dGxpbmVTdHls
ZSgpOwotCi0gICAgQ29sb3Igb3V0bGluZUNvbG9yID0gc3R5bGVUb1VzZS0+dmlzaXRlZERlcGVu
ZGVudENvbG9yKENTU1Byb3BlcnR5T3V0bGluZUNvbG9yKTsKIAogICAgIGludCBvdXRsaW5lT2Zm
c2V0ID0gc3R5bGVUb1VzZS0+b3V0bGluZU9mZnNldCgpOwogCiAgICAgaWYgKHN0eWxlVG9Vc2Ut
Pm91dGxpbmVTdHlsZUlzQXV0bygpIHx8IGhhc091dGxpbmVBbm5vdGF0aW9uKCkpIHsKICAgICAg
ICAgaWYgKCF0aGVtZSgpLT5zdXBwb3J0c0ZvY3VzUmluZyhzdHlsZVRvVXNlKSkgewogICAgICAg
ICAgICAgLy8gT25seSBwYWludCB0aGUgZm9jdXMgcmluZyBieSBoYW5kIGlmIHRoZSB0aGVtZSBp
c24ndCBhYmxlIHRvIGRyYXcgdGhlIGZvY3VzIHJpbmcuCi0gICAgICAgICAgICBwYWludEZvY3Vz
UmluZyhncmFwaGljc0NvbnRleHQsIHBhaW50UmVjdC5sb2NhdGlvbigpLCBzdHlsZVRvVXNlKTsK
KyAgICAgICAgICAgIHBhaW50Rm9jdXNSaW5nKHBhaW50SW5mbywgcGFpbnRSZWN0LmxvY2F0aW9u
KCksIHN0eWxlVG9Vc2UpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMTQ2LDYgKzExNDMsMTAg
QEAgdm9pZCBSZW5kZXJPYmplY3Q6OnBhaW50T3V0bGluZShHcmFwaGljc0NvbnRleHQqIGdyYXBo
aWNzQ29udGV4dCwgY29uc3QgTGF5b3V0UmUKICAgICBpZiAob3V0ZXIuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm47CiAKKyAgICBFQm9yZGVyU3R5bGUgb3V0bGluZVN0eWxlID0gc3R5bGVUb1Vz
ZS0+b3V0bGluZVN0eWxlKCk7CisgICAgQ29sb3Igb3V0bGluZUNvbG9yID0gc3R5bGVUb1VzZS0+
dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5T3V0bGluZUNvbG9yKTsKKworICAgIEdy
YXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQ7CiAgICAg
Ym9vbCB1c2VUcmFuc3BhcmVuY3lMYXllciA9IG91dGxpbmVDb2xvci5oYXNBbHBoYSgpOwogICAg
IGlmICh1c2VUcmFuc3BhcmVuY3lMYXllcikgewogICAgICAgICBpZiAob3V0bGluZVN0eWxlID09
IFNPTElEKSB7CkBAIC0xMjE3LDggKzEyMTgsOCBAQCB2b2lkIFJlbmRlck9iamVjdDo6YWJzb2x1
dGVGb2N1c1JpbmdRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMpCiAgICAgLy8gaW1wbGlj
aXRseSBhc3N1bWVzIHRoYXQuIFRoaXMgZG9lc24ndCB3b3JrIGNvcnJlY3RseSB3aXRoIHRyYW5z
Zm9ybWVkCiAgICAgLy8gZGVzY2VuZGFudHMuCiAgICAgRmxvYXRQb2ludCBhYnNvbHV0ZVBvaW50
ID0gbG9jYWxUb0Fic29sdXRlKCk7Ci0gICAgYWRkRm9jdXNSaW5nUmVjdHMocmVjdHMsIGZsb29y
ZWRMYXlvdXRQb2ludChhYnNvbHV0ZVBvaW50KSk7Ci0gICAgc2l6ZV90IGNvdW50ID0gcmVjdHMu
c2l6ZSgpOyAKKyAgICBhZGRGb2N1c1JpbmdSZWN0cyhyZWN0cywgZmxvb3JlZExheW91dFBvaW50
KGFic29sdXRlUG9pbnQpLCAwKTsKKyAgICBzaXplX3QgY291bnQgPSByZWN0cy5zaXplKCk7CiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAgICAgICAgIEludFJlY3Qg
cmVjdCA9IHJlY3RzW2ldOwogICAgICAgICByZWN0Lm1vdmUoLWFic29sdXRlUG9pbnQueCgpLCAt
YWJzb2x1dGVQb2ludC55KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5o
CmluZGV4IDNjZmY1ZmE1NmMyZTgyNDA4OWQ2MWZmN2VkMDJiNWVhZjM3NzAwMWEuLjNmZGJlZGZh
ZTM4NTViMTMwNDY0MTE1ZmFkYzY3NDQ4ZDQxZmIxYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmgKQEAgLTk2Miw3ICs5NjIsNyBAQCBwdWJsaWM6CiAgICAgLy8gcmV0
dXJuIHRydWUgaWYgdGhpcyBvYmplY3QgcmVxdWlyZXMgYSBuZXcgc3RhY2tpbmcgY29udGV4dAog
ICAgIGJvb2wgY3JlYXRlc0dyb3VwKCkgY29uc3QgeyByZXR1cm4gaXNUcmFuc3BhcmVudCgpIHx8
IGhhc01hc2soKSB8fCBoYXNGaWx0ZXIoKSB8fCBoYXNCbGVuZE1vZGUoKTsgfSAKICAgICAKLSAg
ICB2aXJ0dWFsIHZvaWQgYWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3Qg
TGF5b3V0UG9pbnQmKSB7IH07CisgICAgdmlydHVhbCB2b2lkIGFkZEZvY3VzUmluZ1JlY3RzKFZl
Y3RvcjxJbnRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiAvKiBhZGRpdGlvbmFsT2Zmc2V0ICov
LCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiAvKiByZXBhaW50Q29udGFpbmVyICovKSB7
IH07CiAKICAgICBMYXlvdXRSZWN0IGFic29sdXRlT3V0bGluZUJvdW5kcygpIGNvbnN0CiAgICAg
ewpAQCAtOTg2LDggKzk4Niw4IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGRyYXdMaW5lRm9yQm94
U2lkZShHcmFwaGljc0NvbnRleHQqLCBpbnQgeDEsIGludCB5MSwgaW50IHgyLCBpbnQgeTIsIEJv
eFNpZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sb3IsIEVCb3JkZXJTdHlsZSwg
aW50IGFkamJ3MSwgaW50IGFkamJ3MiwgYm9vbCBhbnRpYWxpYXMgPSBmYWxzZSk7CiAKLSAgICB2
b2lkIHBhaW50Rm9jdXNSaW5nKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheW91dFBvaW50Jiwg
UmVuZGVyU3R5bGUqKTsKLSAgICB2b2lkIHBhaW50T3V0bGluZShHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBMYXlvdXRSZWN0Jik7CisgICAgdm9pZCBwYWludEZvY3VzUmluZyhQYWludEluZm8mLCBj
b25zdCBMYXlvdXRQb2ludCYsIFJlbmRlclN0eWxlKik7CisgICAgdm9pZCBwYWludE91dGxpbmUo
UGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UmVjdCYpOwogICAgIHZvaWQgYWRkUERGVVJMUmVjdChH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXlvdXRSZWN0Jik7CiAgICAgCiAgICAgdmlydHVhbCBM
YXlvdXRSZWN0IHZpZXdSZWN0KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclJlcGxhY2VkLmNwcAppbmRleCAzYmU5MWJiZjc5OTkzMzFlYjEzYTViM2Q1YmQ1ZDIwOGZl
Y2IxYzcxLi4xMTk5ZjBlYzkyZDcwZWIwMjkwNzc3M2Q1NmVmODZhYzI1ZDQ0YTZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKQEAgLTEyMyw3ICsxMjMs
NyBAQCB2b2lkIFJlbmRlclJlcGxhY2VkOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogCiAgICAgTGF5b3V0UmVjdCBwYWludFJlY3Qg
PSBMYXlvdXRSZWN0KGFkanVzdGVkUGFpbnRPZmZzZXQsIHNpemUoKSk7CiAgICAgaWYgKChwYWlu
dEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZU91dGxpbmUgfHwgcGFpbnRJbmZvLnBoYXNlID09IFBh
aW50UGhhc2VTZWxmT3V0bGluZSkgJiYgc3R5bGUoKS0+b3V0bGluZVdpZHRoKCkpCi0gICAgICAg
IHBhaW50T3V0bGluZShwYWludEluZm8uY29udGV4dCwgcGFpbnRSZWN0KTsKKyAgICAgICAgcGFp
bnRPdXRsaW5lKHBhaW50SW5mbywgcGFpbnRSZWN0KTsKICAgICAKICAgICBpZiAocGFpbnRJbmZv
LnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kICYmIHBhaW50SW5mby5waGFzZSAhPSBQYWlu
dFBoYXNlU2VsZWN0aW9uICYmICFjYW5IYXZlQ2hpbGRyZW4oKSkKICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKaW5kZXggMTI4YzBlMjVkMGY2
ODQ4NWIzM2EyMzk5NDFmZDVlMTYwNmI3ZTliYS4uMjFjY2Q5M2FmNjcyNGVmOTJjODRiNzg3MjU5
MzAxN2M4YzlkZGRmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3Bw
CkBAIC02NjQsNyArNjY0LDcgQEAgdm9pZCBSZW5kZXJUYWJsZTo6cGFpbnRPYmplY3QoUGFpbnRJ
bmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnMKIAogICAgIC8vIFBh
aW50IG91dGxpbmUuCiAgICAgaWYgKChwYWludFBoYXNlID09IFBhaW50UGhhc2VPdXRsaW5lIHx8
IHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZVNlbGZPdXRsaW5lKSAmJiBoYXNPdXRsaW5lKCkgJiYg
c3R5bGUoKS0+dmlzaWJpbGl0eSgpID09IFZJU0lCTEUpCi0gICAgICAgIHBhaW50T3V0bGluZShw
YWludEluZm8uY29udGV4dCwgTGF5b3V0UmVjdChwYWludE9mZnNldCwgc2l6ZSgpKSk7CisgICAg
ICAgIHBhaW50T3V0bGluZShwYWludEluZm8sIExheW91dFJlY3QocGFpbnRPZmZzZXQsIHNpemUo
KSkpOwogfQogCiB2b2lkIFJlbmRlclRhYmxlOjpzdWJ0cmFjdENhcHRpb25SZWN0KExheW91dFJl
Y3QmIHJlY3QpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGVSb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93
LmNwcAppbmRleCAyNWNjNmRjOTkwMDYyZWY5ZGIxYTQ3ODM5MzNhZGY0N2RlN2U2M2ExLi45M2Mz
ODRjY2RkNzEyNjE5MGIwODI2ZWFlNWMwZThlZWRlMjNiN2U5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5jcHAKQEAgLTIzOCw3ICsyMzgsNyBAQCB2b2lkIFJl
bmRlclRhYmxlUm93OjpwYWludE91dGxpbmVGb3JSb3dJZk5lZWRlZChQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgTGF5bwogICAgIExheW91dFBvaW50IGFkanVzdGVkUGFpbnRPZmZzZXQgPSBw
YWludE9mZnNldCArIGxvY2F0aW9uKCk7CiAgICAgUGFpbnRQaGFzZSBwYWludFBoYXNlID0gcGFp
bnRJbmZvLnBoYXNlOwogICAgIGlmICgocGFpbnRQaGFzZSA9PSBQYWludFBoYXNlT3V0bGluZSB8
fCBwYWludFBoYXNlID09IFBhaW50UGhhc2VTZWxmT3V0bGluZSkgJiYgc3R5bGUoKS0+dmlzaWJp
bGl0eSgpID09IFZJU0lCTEUpCi0gICAgICAgIHBhaW50T3V0bGluZShwYWludEluZm8uY29udGV4
dCwgTGF5b3V0UmVjdChhZGp1c3RlZFBhaW50T2Zmc2V0LCBzaXplKCkpKTsKKyAgICAgICAgcGFp
bnRPdXRsaW5lKHBhaW50SW5mbywgTGF5b3V0UmVjdChhZGp1c3RlZFBhaW50T2Zmc2V0LCBzaXpl
KCkpKTsKIH0KIAogdm9pZCBSZW5kZXJUYWJsZVJvdzo6cGFpbnQoUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKaW5kZXggOGIzZDczYjI5YzBjODUzYzBl
MmM4ZjBiNzY1MDA1NWE4MTI0NTRlNi4uNDZlN2Y1NzRiMjZmNGI3NjMyOWM2NmIwNDVmOTYxNDlj
NTYwNmU0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
U2VjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2Vj
dGlvbi5jcHAKQEAgLTkxNyw3ICs5MTcsNyBAQCB2b2lkIFJlbmRlclRhYmxlU2VjdGlvbjo6cGFp
bnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZgogICAg
ICAgICBwb3BDb250ZW50c0NsaXAocGFpbnRJbmZvLCBwaGFzZSwgYWRqdXN0ZWRQYWludE9mZnNl
dCk7CiAKICAgICBpZiAoKHBoYXNlID09IFBhaW50UGhhc2VPdXRsaW5lIHx8IHBoYXNlID09IFBh
aW50UGhhc2VTZWxmT3V0bGluZSkgJiYgc3R5bGUoKS0+dmlzaWJpbGl0eSgpID09IFZJU0lCTEUp
Ci0gICAgICAgIHBhaW50T3V0bGluZShwYWludEluZm8uY29udGV4dCwgTGF5b3V0UmVjdChhZGp1
c3RlZFBhaW50T2Zmc2V0LCBzaXplKCkpKTsKKyAgICAgICAgcGFpbnRPdXRsaW5lKHBhaW50SW5m
bywgTGF5b3V0UmVjdChhZGp1c3RlZFBhaW50T2Zmc2V0LCBzaXplKCkpKTsKIH0KIAogc3RhdGlj
IGlubGluZSBib29sIGNvbXBhcmVDZWxsUG9zaXRpb25zKFJlbmRlclRhYmxlQ2VsbCogZWxlbTEs
IFJlbmRlclRhYmxlQ2VsbCogZWxlbTIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHRDb250cm9sLmNwcAppbmRleCBjN2M1NzY4OTYwYmY4NGFiNDNjZDUyMWVjMDY3ZjQ5
MWQ1ZjA1ZDA0Li5mYzBlN2Q0ZmRlZWFhMmNiYTk2YTg4MTY0ZjliZWVjODk1NmJlOWY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKQEAgLTI5
Myw3ICsyOTMsNyBAQCB2b2lkIFJlbmRlclRleHRDb250cm9sOjpjb21wdXRlUHJlZmVycmVkTG9n
aWNhbFdpZHRocygpCiAgICAgc2V0UHJlZmVycmVkTG9naWNhbFdpZHRoc0RpcnR5KGZhbHNlKTsK
IH0KIAotdm9pZCBSZW5kZXJUZXh0Q29udHJvbDo6YWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPElu
dFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0aW9uYWxPZmZzZXQpCit2b2lk
IFJlbmRlclRleHRDb250cm9sOjphZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJl
Y3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYWRkaXRpb25hbE9mZnNldCwgY29uc3QgUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdCopCiB7CiAgICAgaWYgKCFzaXplKCkuaXNFbXB0eSgpKQogICAgICAgICBy
ZWN0cy5hcHBlbmQocGl4ZWxTbmFwcGVkSW50UmVjdChhZGRpdGlvbmFsT2Zmc2V0LCBzaXplKCkp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJv
bC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgKaW5kZXgg
ZjFmNTkyZTVjYzAyYjZhYjhjNjNkNmIzZjI0MmVkODA0YzNmYzRjZS4uZGVkNmRjODcyMTUzYjY0
ZDY2ZjdjNmE5NWE1NTIxYzIxM2JiYjQzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHRDb250cm9sLmgKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIGJvb2wgY2FuSGF2ZUdlbmVyYXRlZENoaWxkcmVuKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1
cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgY2FuQmVSZXBsYWNlZFdpdGhJbmxpbmVSdW5J
bigpIGNvbnN0IE9WRVJSSURFOwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBhZGRGb2N1c1JpbmdS
ZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYpOworICAgIHZpcnR1YWwg
dm9pZCBhZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBMYXlvdXRQb2lu
dCYsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqKTsKIAogICAgIHZpcnR1YWwgYm9vbCBj
YW5CZVByb2dyYW1hdGljYWxseVNjcm9sbGVkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCmluZGV4IGMwNzY4MWYxZWY5
Mjk3MjA2YmUwNWY3YzBjZjUzMjU3NWZkOGVjNWIuLjRhZDZlYzQyOTgzODFjNjdjZTQ1NGYzZTU0
OTg1NmYyNjk2ZTNlMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJXaWRnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQu
Y3BwCkBAIC0yODQsNyArMjg0LDcgQEAgdm9pZCBSZW5kZXJXaWRnZXQ6OnBhaW50KFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiAgICAgfQogCiAg
ICAgaWYgKChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZU91dGxpbmUgfHwgcGFpbnRJbmZv
LnBoYXNlID09IFBhaW50UGhhc2VTZWxmT3V0bGluZSkgJiYgaGFzT3V0bGluZSgpKQotICAgICAg
ICBwYWludE91dGxpbmUocGFpbnRJbmZvLmNvbnRleHQsIExheW91dFJlY3QoYWRqdXN0ZWRQYWlu
dE9mZnNldCwgc2l6ZSgpKSk7CisgICAgICAgIHBhaW50T3V0bGluZShwYWludEluZm8sIExheW91
dFJlY3QoYWRqdXN0ZWRQYWludE9mZnNldCwgc2l6ZSgpKSk7CiAKICAgICBpZiAoIW1fZnJhbWVW
aWV3IHx8IHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZCkKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdD
b250YWluZXIuY3BwCmluZGV4IDUwNjlmNDFhYTgzNzE4YjhkNmY3Njk4ZjdmYTA1NzRjYmE4ZDc0
N2UuLjZmMDM5MTA5YWQ4NjdhN2IwNmQ5YWU0MDdjYzY3ODdlYTMyMDZkMzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAKQEAg
LTE1MCwxMiArMTUwLDEyIEBAIHZvaWQgUmVuZGVyU1ZHQ29udGFpbmVyOjpwYWludChQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmKQogICAgIC8vIFdlIHNob3VsZCBpbnN0
ZWFkIGRpc2FibGUgb3VyIGNsaXAgZHVyaW5nIFBhaW50UGhhc2VPdXRsaW5lCiAgICAgaWYgKChw
YWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZU91dGxpbmUgfHwgcGFpbnRJbmZvLnBoYXNlID09
IFBhaW50UGhhc2VTZWxmT3V0bGluZSkgJiYgc3R5bGUoKS0+b3V0bGluZVdpZHRoKCkgJiYgc3R5
bGUoKS0+dmlzaWJpbGl0eSgpID09IFZJU0lCTEUpIHsKICAgICAgICAgSW50UmVjdCBwYWludFJl
Y3RJblBhcmVudCA9IGVuY2xvc2luZ0ludFJlY3QobG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpLm1h
cFJlY3QocmVwYWludFJlY3QpKTsKLSAgICAgICAgcGFpbnRPdXRsaW5lKHBhaW50SW5mby5jb250
ZXh0LCBwYWludFJlY3RJblBhcmVudCk7CisgICAgICAgIHBhaW50T3V0bGluZShwYWludEluZm8s
IHBhaW50UmVjdEluUGFyZW50KTsKICAgICB9CiB9CiAKIC8vIGFkZEZvY3VzUmluZ1JlY3RzIGlz
IGNhbGxlZCBmcm9tIHBhaW50T3V0bGluZSBhbmQgbmVlZHMgdG8gYmUgaW4gdGhlIHNhbWUgY29v
cmRpbmF0ZXMgYXMgdGhlIHBhaW50T3VsaW5lIGNhbGwKLXZvaWQgUmVuZGVyU1ZHQ29udGFpbmVy
OjphZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQ
b2ludCYpCit2b2lkIFJlbmRlclNWR0NvbnRhaW5lcjo6YWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9y
PEludFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJMYXllck1v
ZGVsT2JqZWN0KikKIHsKICAgICBJbnRSZWN0IHBhaW50UmVjdEluUGFyZW50ID0gZW5jbG9zaW5n
SW50UmVjdChsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkubWFwUmVjdChyZXBhaW50UmVjdEluTG9j
YWxDb29yZGluYXRlcygpKSk7CiAgICAgaWYgKCFwYWludFJlY3RJblBhcmVudC5pc0VtcHR5KCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRh
aW5lci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIu
aAppbmRleCA0ZDIxYjc5NjAxZDg5ZDNlZGQwZmMzODYyNTIwM2NlN2ZmNGUyMTg5Li4wMTk5YWY3
ZjljYWY3YmFjYzBiZDA1MTg3OWEyOGJjNTZmZTg0NThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmgKQEAgLTU5LDcgKzU5LDcgQEAg
cHJvdGVjdGVkOgogCiAgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVjdCogY2hp
bGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IHZvaWQgcmVtb3ZlQ2hpbGQoUmVuZGVyT2JqZWN0KikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2
b2lkIGFkZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50
Jik7CisgICAgdmlydHVhbCB2b2lkIGFkZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxJbnRSZWN0PiYs
IGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCopOwogCiAg
ICAgdmlydHVhbCBGbG9hdFJlY3Qgb2JqZWN0Qm91bmRpbmdCb3goKSBjb25zdCB7IHJldHVybiBt
X29iamVjdEJvdW5kaW5nQm94OyB9CiAgICAgdmlydHVhbCBGbG9hdFJlY3Qgc3Ryb2tlQm91bmRp
bmdCb3goKSBjb25zdCB7IHJldHVybiBtX3N0cm9rZUJvdW5kaW5nQm94OyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCmluZGV4IDQ1ZGI5NTRk
ZjQ1MmY0YTBjZDM0MzQxOGJjZjBhNjdjMDNjZjVkYWEuLmM5NjRjMTg5NTI4OTJiZTk5YmQxZTIx
YjZkZmJiYzBjMzdlYjkzZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHSW1hZ2UuY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBSZW5kZXJTVkdJbWFn
ZTo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JikKICAgICAg
ICAgfQogCiAgICAgICAgIGlmIChkcmF3c091dGxpbmUpCi0gICAgICAgICAgICBwYWludE91dGxp
bmUoY2hpbGRQYWludEluZm8uY29udGV4dCwgSW50UmVjdChib3VuZGluZ0JveCkpOworICAgICAg
ICAgICAgcGFpbnRPdXRsaW5lKGNoaWxkUGFpbnRJbmZvLCBJbnRSZWN0KGJvdW5kaW5nQm94KSk7
CiAgICAgfQogfQogCkBAIC0xOTEsNyArMTkxLDcgQEAgdm9pZCBSZW5kZXJTVkdJbWFnZTo6aW1h
Z2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciwgY29uc3QgSW50UmVjdCopCiAgICAgcmVwYWludCgp
OwogfQogCi12b2lkIFJlbmRlclNWR0ltYWdlOjphZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8SW50
UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYpCit2b2lkIFJlbmRlclNWR0ltYWdlOjph
ZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2lu
dCYsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqKQogewogICAgIC8vIHRoaXMgaXMgY2Fs
bGVkIGZyb20gcGFpbnQoKSBhZnRlciB0aGUgbG9jYWxUcmFuc2Zvcm0gaGFzIGFscmVhZHkgYmVl
biBhcHBsaWVkCiAgICAgSW50UmVjdCBjb250ZW50UmVjdCA9IGVuY2xvc2luZ0ludFJlY3QocmVw
YWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0ltYWdlLmgKaW5kZXggMjMyYWQ4Mzc3ZDA3NTQwZmYyMWY0NTlmYzI1
YzBhMzg4ZWY4Zjk4NC4uNTRmYmYwYWY2MGZjZDhkY2M4MTMxOGZmMzJkZmY5M2ZlNDhiZmFlYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuaApAQCAt
NjAsNyArNjAsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgRmxvYXRSZWN0IHJlcGFpbnRSZWN0
SW5Mb2NhbENvb3JkaW5hdGVzKCkgY29uc3QgeyByZXR1cm4gbV9yZXBhaW50Qm91bmRpbmdCb3g7
IH0KICAgICB2aXJ0dWFsIEZsb2F0UmVjdCByZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlc0V4
Y2x1ZGluZ1NWR1NoYWRvdygpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fcmVwYWludEJvdW5k
aW5nQm94RXhjbHVkaW5nU2hhZG93OyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkRm9jdXNSaW5n
UmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgYWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9p
bnQmLCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0Kik7CiAKICAgICB2aXJ0dWFsIHZvaWQg
aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciwgY29uc3QgSW50UmVjdCogPSAwKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcAppbmRleCBk
ZGE5NzJlNmQ3YmRmNGY5YzdjMTI3YTc1Nzc1YmIxMDc2NDFmMzFiLi4zNDI1NTEzYzk2ZDI2YmMy
YTlmNGYyZmI1ZWNiMTdlMDNiN2YyNWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcApAQCAtMjk3LDEzICsyOTcsMTMgQEAgdm9pZCBSZW5k
ZXJTVkdTaGFwZTo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50
JikKICAgICAgICAgfQogCiAgICAgICAgIGlmIChkcmF3c091dGxpbmUpCi0gICAgICAgICAgICBw
YWludE91dGxpbmUoY2hpbGRQYWludEluZm8uY29udGV4dCwgSW50UmVjdChib3VuZGluZ0JveCkp
OworICAgICAgICAgICAgcGFpbnRPdXRsaW5lKGNoaWxkUGFpbnRJbmZvLCBJbnRSZWN0KGJvdW5k
aW5nQm94KSk7CiAgICAgfQogfQogCiAvLyBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgZnJvbSBpbnNp
ZGUgcGFpbnRPdXRsaW5lKCkgc2luY2Ugd2UgY2FsbCBwYWludE91dGxpbmUoKQogLy8gd2hpbGUg
dHJhbnNmb3JtZWQgdG8gb3VyIGNvb3JkIHN5c3RlbSwgcmV0dXJuIGxvY2FsIGNvb3Jkcwotdm9p
ZCBSZW5kZXJTVkdTaGFwZTo6YWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0
cywgY29uc3QgTGF5b3V0UG9pbnQmKQordm9pZCBSZW5kZXJTVkdTaGFwZTo6YWRkRm9jdXNSaW5n
UmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBS
ZW5kZXJMYXllck1vZGVsT2JqZWN0KikKIHsKICAgICBJbnRSZWN0IHJlY3QgPSBlbmNsb3NpbmdJ
bnRSZWN0KHJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCkpOwogICAgIGlmICghcmVjdC5p
c0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1NoYXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBl
LmgKaW5kZXggNDRhM2I0YTEwYWM3NDU5NGZhMmM0ZDMwMDJkZmRiYmZjNTYwMDJmOS4uOTQwMDVl
ODljYzJmMjM4NmVjNjhjYThkNGQ2OTliMTg0MGJmOWZhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuaApAQCAtMTE0LDcgKzExNCw3IEBAIHByaXZh
dGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50
KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7Ci0gICAgdmlydHVhbCB2b2lkIGFkZEZv
Y3VzUmluZ1JlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50Jik7CisgICAg
dmlydHVhbCB2b2lkIGFkZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0IExh
eW91dFBvaW50JiwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCopOwogCiAgICAgdmlydHVh
bCBib29sIG5vZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVz
dWx0JiwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnRJblBhcmVudCwgSGl0VGVzdEFjdGlvbik7CiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhODViNmZjNGQzMjNlMjM1NTQ1MGM4NjFhNTMxMDkwZDk3NWIzMDEzLi4xZjg4M2Y2
ODM0OTJkM2JjOTgyNGJkNjdjMGRjOGNjZDQ3NWY3YzgyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTMtMDItMjcgIFhpYW56aHUgV2FuZyAgPHdhbmd4aWFuemh1QGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBGb2N1cyByaW5nIGZvciBhIGNoaWxkIGxheWVyIGlzIGluY29ycmVjdGx5IG9mZnNl
dCBieSBhbmNlc3RvciBjb21wb3NpdGVkIGxheWVyJ3MgcG9zaXRpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDg5NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5ldyByZWYgdGVzdCBmb3IgdGhlIGJ1
Zy4KKworICAgICAgICAqIGNvbXBvc2l0aW5nL3N1Yi1sYXllci1mb2N1cy1yaW5nLWV4cGVjdGVk
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGNvbXBvc2l0aW5nL3N1Yi1sYXllci1mb2N1cy1yaW5n
Lmh0bWw6IEFkZGVkLgorCiAyMDEzLTAyLTI2ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdh
bGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGdhcmRlbmluZy4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2NvbXBvc2l0aW5nL3N1Yi1sYXllci1mb2N1cy1yaW5nLWV4cGVjdGVkLmh0bWwg
Yi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9zdWItbGF5ZXItZm9jdXMtcmluZy1leHBlY3RlZC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjdmN2RmMTU1ZWU3YTQxZjM2N2EwODVmZDI4NmRjNDZjOTk4ODlmZDEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9zdWItbGF5ZXItZm9j
dXMtcmluZy1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsNDAgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKy5jb21wb3NpdGVkIHsKKyAgLXdlYmtpdC10cmFuc2Zv
cm06IHRyYW5zbGF0ZVooMCk7Cit9CisKKy5vdXRlciB7CisgIHBvc2l0aW9uOiBhYnNvbHV0ZTsK
KyAgd2lkdGg6IDUwMHB4OworICBoZWlnaHQ6IDMwMHB4OworICB0b3A6IDYwcHg7CisgIGxlZnQ6
IDEwMHB4OworICBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3c7Cit9CisKKy5vdXRsaW5lZCB7Cisg
IG91dGxpbmU6IHJlZCBhdXRvIHRoaW47CisgIHdpZHRoOiAxNTBweDsKKyAgaGVpZ2h0OiA1MHB4
OworICBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGdyZXk7Cit9CisKKy5pbm5lciB7CisgIHdpZHRo
OiA4MHB4OworICBoZWlnaHQ6IDEwMHB4OworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5Pgor
ICA8IS0tIFN0aWxsIGxldCBvdXRlciBsYXllciBjb21wb3NpdGVkIHRvIGF2b2lkIHRoZSBtaW5v
ciBlZGdlIHBpeGVsIGRpZmZzLiAtLT4KKyAgPGRpdiBjbGFzcz0iY29tcG9zaXRlZCBvdXRlciI+
CisgICAgPGRpdiBjbGFzcz0ib3V0bGluZWQiPgorICAgICAgPGRpdiBjbGFzcz0iaW5uZXIiPjwv
ZGl2PgorICAgIDwvZGl2PgorICA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvc3ViLWxheWVyLWZvY3VzLXJpbmcuaHRtbCBiL0xh
eW91dFRlc3RzL2NvbXBvc2l0aW5nL3N1Yi1sYXllci1mb2N1cy1yaW5nLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYmU0MWU5MGRhZmU1NjFhYmFkYjY2ZjczODI4MTdkYzJkZWFhNmMxMwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3N1Yi1sYXllci1mb2N1cy1yaW5nLmh0bWwK
QEAgLTAsMCArMSw0MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxl
PgorLmNvbXBvc2l0ZWQgeworICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTsKK30K
KworLm91dGVyIHsKKyAgcG9zaXRpb246IGFic29sdXRlOworICB3aWR0aDogNTAwcHg7CisgIGhl
aWdodDogMzAwcHg7CisgIHRvcDogNjBweDsKKyAgbGVmdDogMTAwcHg7CisgIGJhY2tncm91bmQt
Y29sb3I6IHllbGxvdzsKK30KKworLm91dGxpbmVkIHsKKyAgb3V0bGluZTogcmVkIGF1dG8gdGhp
bjsKKyAgd2lkdGg6IDE1MHB4OworICBoZWlnaHQ6IDUwcHg7CisgIGJhY2tncm91bmQtY29sb3I6
IGxpZ2h0Z3JleTsKK30KKworLmlubmVyIHsKKyAgd2lkdGg6IDgwcHg7CisgIGhlaWdodDogMTAw
cHg7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgIDwhLS0gVGhlIGZvY3VzIHJpbmcg
cGFydHMgZm9yIHRoZSBzdWItbGF5ZXJzIHNob3VsZCBiZSBhdCBjb3JyZWN0IHBvc2l0aW9uLAor
ICAgICAgIHJlZ2FyZGxlc3Mgd2hldGhlciB0aGUgaW5uZXIgbGF5ZXIgaXMgY29tcG9zaXRlZC4g
LS0+CisgIDxkaXYgY2xhc3M9ImNvbXBvc2l0ZWQgb3V0ZXIiPgorICAgIDxkaXYgY2xhc3M9Im91
dGxpbmVkIj4KKyAgICAgIDxkaXYgY2xhc3M9ImNvbXBvc2l0ZWQgaW5uZXIiPjwvZGl2PgorICAg
IDwvZGl2PgorICA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190739</attachid>
            <date>2013-02-28 09:33:56 -0800</date>
            <delta_ts>2013-02-28 11:28:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110895-20130228093009.patch</filename>
            <type>text/plain</type>
            <size>37008</size>
            <attacher name="Xianzhu Wang">wangxianzhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0MDc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDlkYjIxZjA4NjJhMTc3
NmU1OTYwYzRhOWQ2YzI0ZjMwYzhlMTViYy4uNzQyNmJkZTQwNjEyODFmZWMzNDY1YjEwMWZmNjAz
ZTk2Y2FjZmU1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEzLTAyLTI3ICBYaWFu
emh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRm9jdXMgcmlu
ZyBmb3IgYSBjaGlsZCBsYXllciBpcyBpbmNvcnJlY3RseSBvZmZzZXQgYnkgYW5jZXN0b3IgY29t
cG9zaXRlZCBsYXllcidzIHBvc2l0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTA4OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUZXN0OiBjb21wb3NpdGluZy9zdWItbGF5ZXItZm9jdXMtcmluZy5o
dG1sCisKKyAgICAgICAgVGhlIHByb2JsZW0gb2NjdXJzIGluIFJlbmRlckJsb2NrOjphZGRGb2N1
c1JpbmdSZWN0cygpIHdoZXJlIHRoZSBhYnNvbHV0ZSBwb3NpdGlvbiBvZiBhIHN1Yi1sYXllciBp
cyB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgZm9jdXMgcmluZyByZWN0IG9mIHRoZSBsYXllci4KKyAg
ICAgICAgU2hvdWxkIHVzZSB0aGUgcmVsYXRpdmUgcG9zaXRpb24gdG8gdGhlIGN1cnJlbnQgcGFp
bnRDb250YWluZXIgaW5zdGVhZC4KKworICAgICAgICBUbyBmaXggdGhlIGlzc3VlOgorICAgICAg
ICAtIFJlbmRlckxheWVyIHBhc3NlcyBMYXllclBhaW50aW5nSW5mby5yb290TGF5ZXIgdG8gUGFp
bnRJbmZvLnBhaW50Q29udGFpbmVyCisgICAgICAgIC0gTGV0IFJlbmRlck9iamVjdDo6cGFpbnRG
b2N1c1JpbmcoKSBhbmQgUmVuZGVyT2JqZWN0OjpwYWludE91dGxpbmUoKSB0YWtlIFBhaW50SW5m
byBpbnN0ZWFkIG9mIEdyYXBoaWNzQ29udGV4dCogc28gdGhhdCB0aGUgcGFpbnRDb250YWluZXIg
Y2FuIGJlIHBhc3NlZAorICAgICAgICAtIFJlbmRlckJsb2NrOjphZGRGb2N1c1JpbmdSZWN0cygp
IHVzZXMgbG9jYWxUb0NvbnRhaW5lclBvaW50KEZsb2F0UG9pbnQoKSwgcGFpbnRDb250YWluZXIp
IGluc3RlYWQgb2YgbG9jYWxUb0Fic29sdXRlKCkgdG8gY2FsY3VsYXRlIHRoZSBmb2N1cyByaW5n
IHJlY3Qgb2YgYSBzdWJsYXllci4KKworICAgICAgICAqIHJlbmRlcmluZy9QYWludEluZm8uaDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UGFpbnRJbmZvOjpQYWludElu
Zm8pOiBBZGQgYSBmaWVsZCBwYWludENvbnRhaW5lciAodGhlIFJlbmRlckxheWVyTW9kZWxPYmpl
Y3Qgd2hpY2ggb3JpZ2luYXRlcyB0aGUgY3VycmVudCBwYWludGluZykKKyAgICAgICAgKFBhaW50
SW5mbyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJsb2NrOjpwYWludE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCbG9jazo6cGFpbnRDb250aW51YXRpb25PdXRsaW5lcyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9jazo6YWRkRm9jdXNSaW5nUmVjdHMpOiBVc2UgdGhlIGFkZGVkIHBhaW50Q29udGFp
bmVyIHBhcmFtZXRlciB0byBjYWxjdWxhdGUgdGhlIHJlbGF0aXZlIG9mZnNldCBvZiB0aGUgY2hp
bGQgbGF5ZXIuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVudHMpOiBQYXNzIExheWVyUGFp
bnRpbmdJbmZvLnJvb3RMYXllciB0byBQYWludEluZm8ucGFpbnRDb250YWluZXIuCisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJP
YmplY3Q6OnBhaW50Rm9jdXNSaW5nKTogTm93IHRha2VzIFBhaW50SW5mbyBpbnN0ZWFkIG9mIEdy
YXBoaWNzQ29udGV4dCouIFBhc3MgcGFpbnRJbmZvLnBhaW50Q29udGFpbmVyIHRvIGFkZEZvY3Vz
UmluZ1JlY3RzKCkuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnBhaW50T3V0bGlu
ZSk6IE5vdyB0YWtlcyBQYWludEluZm8gaW5zdGVhZCBvZiBHcmFwaGljc0NvbnRleHQqLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjphYnNvbHV0ZUZvY3VzUmluZ1F1YWRzKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJPYmplY3Q6OmFkZEZvY3VzUmluZ1JlY3RzKTogQWRkIHBhaW50Q29udGFpbmVyIHBhcmFtZXRl
ci4KKwogMjAxMy0wMi0yNiAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRp
Z2lhLmNvbT4KIAogICAgICAgICBbVGV4TWFwXSBJZ25vcmUgbGF5ZXIgcmVwYWludCByZXF1ZXN0
IHdoZW4gZHJhd3NDb250ZW50IGlzIGZhbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUGFpbnRJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRJbmZv
LmgKaW5kZXggYzUxYjdmZTU1NTE1ZjliMDFkY2IyYWY3YTczOTllZjZhYWNiMjZiMS4uODIwOWVh
YTViNTA3NDk0MzdhZGI4MDg5MDk0NjdmOWE1ZmNhNmVmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1BhaW50SW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9QYWludEluZm8uaApAQCAtNDIsNiArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIE92ZXJsYXBUZXN0UmVxdWVzdENsaWVudDsKIGNsYXNzIFJlbmRlcklubGluZTsKK2NsYXNz
IFJlbmRlckxheWVyTW9kZWxPYmplY3Q7CiBjbGFzcyBSZW5kZXJPYmplY3Q7CiBjbGFzcyBSZW5k
ZXJSZWdpb247CiAKQEAgLTUzLDggKzU0LDggQEAgdHlwZWRlZiBIYXNoTWFwPE92ZXJsYXBUZXN0
UmVxdWVzdENsaWVudCosIEludFJlY3Q+IE92ZXJsYXBUZXN0UmVxdWVzdE1hcDsKICAqLwogc3Ry
dWN0IFBhaW50SW5mbyB7CiAgICAgUGFpbnRJbmZvKEdyYXBoaWNzQ29udGV4dCogbmV3Q29udGV4
dCwgY29uc3QgSW50UmVjdCYgbmV3UmVjdCwgUGFpbnRQaGFzZSBuZXdQaGFzZSwgUGFpbnRCZWhh
dmlvciBuZXdQYWludEJlaGF2aW9yLAotICAgICAgICAgICAgICBSZW5kZXJPYmplY3QqIG5ld1Bh
aW50aW5nUm9vdCA9IDAsIFJlbmRlclJlZ2lvbiogcmVnaW9uID0gMCwgTGlzdEhhc2hTZXQ8UmVu
ZGVySW5saW5lKj4qIG5ld091dGxpbmVPYmplY3RzID0gMCwKLSAgICAgICAgICAgICAgT3Zlcmxh
cFRlc3RSZXF1ZXN0TWFwKiBvdmVybGFwVGVzdFJlcXVlc3RzID0gMCkKKyAgICAgICAgUmVuZGVy
T2JqZWN0KiBuZXdQYWludGluZ1Jvb3QgPSAwLCBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9IDAsIExp
c3RIYXNoU2V0PFJlbmRlcklubGluZSo+KiBuZXdPdXRsaW5lT2JqZWN0cyA9IDAsCisgICAgICAg
IE92ZXJsYXBUZXN0UmVxdWVzdE1hcCogb3ZlcmxhcFRlc3RSZXF1ZXN0cyA9IDAsIGNvbnN0IFJl
bmRlckxheWVyTW9kZWxPYmplY3QqIG5ld1BhaW50Q29udGFpbmVyID0gMCkKICAgICAgICAgOiBj
b250ZXh0KG5ld0NvbnRleHQpCiAgICAgICAgICwgcmVjdChuZXdSZWN0KQogICAgICAgICAsIHBo
YXNlKG5ld1BoYXNlKQpAQCAtNjMsNiArNjQsNyBAQCBzdHJ1Y3QgUGFpbnRJbmZvIHsKICAgICAg
ICAgLCByZW5kZXJSZWdpb24ocmVnaW9uKQogICAgICAgICAsIG91dGxpbmVPYmplY3RzKG5ld091
dGxpbmVPYmplY3RzKQogICAgICAgICAsIG92ZXJsYXBUZXN0UmVxdWVzdHMob3ZlcmxhcFRlc3RS
ZXF1ZXN0cykKKyAgICAgICAgLCBwYWludENvbnRhaW5lcihuZXdQYWludENvbnRhaW5lcikKICAg
ICB7CiAgICAgfQogCkBAIC0xMTQsNiArMTE2LDcgQEAgc3RydWN0IFBhaW50SW5mbyB7CiAgICAg
UmVuZGVyUmVnaW9uKiByZW5kZXJSZWdpb247CiAgICAgTGlzdEhhc2hTZXQ8UmVuZGVySW5saW5l
Kj4qIG91dGxpbmVPYmplY3RzOyAvLyB1c2VkIHRvIGxpc3Qgb3V0bGluZXMgdGhhdCBzaG91bGQg
YmUgcGFpbnRlZCBieSBhIGJsb2NrIHdpdGggaW5saW5lIGNoaWxkcmVuCiAgICAgT3ZlcmxhcFRl
c3RSZXF1ZXN0TWFwKiBvdmVybGFwVGVzdFJlcXVlc3RzOworICAgIGNvbnN0IFJlbmRlckxheWVy
TW9kZWxPYmplY3QqIHBhaW50Q29udGFpbmVyOyAvLyB0aGUgbGF5ZXIgb2JqZWN0IHRoYXQgb3Jp
Z2luYXRlcyB0aGUgY3VycmVudCBwYWludGluZwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggNWFiNDdhMGY2
YmVlOTkxZWFmMmM5ZTZiNTlkMzYzNzEzNTNmZjZiNi4uYzFlZTRiNDhkYTg1OGU1MThkZGIzYTdh
N2E4Mzg3ZWY2YWM2YTgyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2su
Y3BwCkBAIC0zMTU0LDcgKzMxNTQsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpwYWludE9iamVjdChQ
YWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2ZmcwogCiAgICAg
Ly8gNS4gcGFpbnQgb3V0bGluZS4KICAgICBpZiAoKHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZU91
dGxpbmUgfHwgcGFpbnRQaGFzZSA9PSBQYWludFBoYXNlU2VsZk91dGxpbmUpICYmIGhhc091dGxp
bmUoKSAmJiBzdHlsZSgpLT52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSkKLSAgICAgICAgcGFpbnRP
dXRsaW5lKHBhaW50SW5mby5jb250ZXh0LCBMYXlvdXRSZWN0KHBhaW50T2Zmc2V0LCBzaXplKCkp
KTsKKyAgICAgICAgcGFpbnRPdXRsaW5lKHBhaW50SW5mbywgTGF5b3V0UmVjdChwYWludE9mZnNl
dCwgc2l6ZSgpKSk7CiAKICAgICAvLyA2LiBwYWludCBjb250aW51YXRpb24gb3V0bGluZXMuCiAg
ICAgaWYgKChwYWludFBoYXNlID09IFBhaW50UGhhc2VPdXRsaW5lIHx8IHBhaW50UGhhc2UgPT0g
UGFpbnRQaGFzZUNoaWxkT3V0bGluZXMpKSB7CkBAIC0zMTc3LDcgKzMxNzcsNyBAQCB2b2lkIFJl
bmRlckJsb2NrOjpwYWludE9iamVjdChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0
UG9pbnQmIHBhaW50T2ZmcwogICAgICAgICAgICAgaWYgKCFpbmxpbmVFbmNsb3NlZEluU2VsZlBh
aW50aW5nTGF5ZXIgJiYgIWhhc0xheWVyKCkpCiAgICAgICAgICAgICAgICAgY2ItPmFkZENvbnRp
bnVhdGlvbldpdGhPdXRsaW5lKGlubGluZVJlbmRlcmVyKTsKICAgICAgICAgICAgIGVsc2UgaWYg
KCFpbmxpbmVSZW5kZXJlci0+Zmlyc3RMaW5lQm94KCkgfHwgKCFpbmxpbmVFbmNsb3NlZEluU2Vs
ZlBhaW50aW5nTGF5ZXIgJiYgaGFzTGF5ZXIoKSkpCi0gICAgICAgICAgICAgICAgaW5saW5lUmVu
ZGVyZXItPnBhaW50T3V0bGluZShwYWludEluZm8uY29udGV4dCwgcGFpbnRPZmZzZXQgLSBsb2Nh
dGlvbk9mZnNldCgpICsgaW5saW5lUmVuZGVyZXItPmNvbnRhaW5pbmdCbG9jaygpLT5sb2NhdGlv
bigpKTsKKyAgICAgICAgICAgICAgICBpbmxpbmVSZW5kZXJlci0+cGFpbnRPdXRsaW5lKHBhaW50
SW5mbywgcGFpbnRPZmZzZXQgLSBsb2NhdGlvbk9mZnNldCgpICsgaW5saW5lUmVuZGVyZXItPmNv
bnRhaW5pbmdCbG9jaygpLT5sb2NhdGlvbigpKTsKICAgICAgICAgfQogICAgICAgICBwYWludENv
bnRpbnVhdGlvbk91dGxpbmVzKHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOwogICAgIH0KQEAgLTMz
MDUsNyArMzMwNSw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnBhaW50Q29udGludWF0aW9uT3V0bGlu
ZXMoUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRQb2ludCYKICAgICAgICAgZm9yICggOyBi
bG9jayAmJiBibG9jayAhPSB0aGlzOyBibG9jayA9IGJsb2NrLT5jb250YWluaW5nQmxvY2soKSkK
ICAgICAgICAgICAgIGFjY3VtdWxhdGVkUGFpbnRPZmZzZXQubW92ZUJ5KGJsb2NrLT5sb2NhdGlv
bigpKTsKICAgICAgICAgQVNTRVJUKGJsb2NrKTsgICAKLSAgICAgICAgZmxvdy0+cGFpbnRPdXRs
aW5lKGluZm8uY29udGV4dCwgYWNjdW11bGF0ZWRQYWludE9mZnNldCk7CisgICAgICAgIGZsb3ct
PnBhaW50T3V0bGluZShpbmZvLCBhY2N1bXVsYXRlZFBhaW50T2Zmc2V0KTsKICAgICB9CiB9CiAK
QEAgLTcxMTAsNyArNzExMCw3IEBAIExheW91dFJlY3QgUmVuZGVyQmxvY2s6OmxvY2FsQ2FyZXRS
ZWN0KElubGluZUJveCogaW5saW5lQm94LCBpbnQgY2FyZXRPZmZzZXQsIExhCiAgICAgcmV0dXJu
IGNhcmV0UmVjdDsKIH0KIAotdm9pZCBSZW5kZXJCbG9jazo6YWRkRm9jdXNSaW5nUmVjdHMoVmVj
dG9yPEludFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0aW9uYWxPZmZzZXQp
Cit2b2lkIFJlbmRlckJsb2NrOjphZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJl
Y3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYWRkaXRpb25hbE9mZnNldCwgY29uc3QgUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdCogcGFpbnRDb250YWluZXIpCiB7CiAgICAgLy8gRm9yIGJsb2NrcyBpbnNp
ZGUgaW5saW5lcywgd2UgZ28gYWhlYWQgYW5kIGluY2x1ZGUgbWFyZ2lucyBzbyB0aGF0IHdlIHJ1
biByaWdodCB1cCB0byB0aGUKICAgICAvLyBpbmxpbmUgYm94ZXMgYWJvdmUgYW5kIGJlbG93IHVz
ICh0aHVzIGdldHRpbmcgbWVyZ2VkIHdpdGggdGhlbSB0byBmb3JtIGEgc2luZ2xlIGlycmVndWxh
cgpAQCAtNzE0NSwxNiArNzE0NSwxNiBAQCB2b2lkIFJlbmRlckJsb2NrOjphZGRGb2N1c1JpbmdS
ZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYQogICAgICAg
ICAgICAgICAgIEZsb2F0UG9pbnQgcG9zOwogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlz
IGRvZXNuJ3Qgd29yayBjb3JyZWN0bHkgd2l0aCB0cmFuc2Zvcm1zLgogICAgICAgICAgICAgICAg
IGlmIChib3gtPmxheWVyKCkpIAotICAgICAgICAgICAgICAgICAgICBwb3MgPSBjdXJyLT5sb2Nh
bFRvQWJzb2x1dGUoKTsKKyAgICAgICAgICAgICAgICAgICAgcG9zID0gY3Vyci0+bG9jYWxUb0Nv
bnRhaW5lclBvaW50KEZsb2F0UG9pbnQoKSwgcGFpbnRDb250YWluZXIpOwogICAgICAgICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgcG9zID0gRmxvYXRQb2ludChhZGRpdGlvbmFs
T2Zmc2V0LngoKSArIGJveC0+eCgpLCBhZGRpdGlvbmFsT2Zmc2V0LnkoKSArIGJveC0+eSgpKTsK
LSAgICAgICAgICAgICAgICBib3gtPmFkZEZvY3VzUmluZ1JlY3RzKHJlY3RzLCBmbG9vcmVkTGF5
b3V0UG9pbnQocG9zKSk7CisgICAgICAgICAgICAgICAgYm94LT5hZGRGb2N1c1JpbmdSZWN0cyhy
ZWN0cywgZmxvb3JlZExheW91dFBvaW50KHBvcyksIHBhaW50Q29udGFpbmVyKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChpbmxpbmVFbGVtZW50Q29udGludWF0
aW9uKCkpCi0gICAgICAgIGlubGluZUVsZW1lbnRDb250aW51YXRpb24oKS0+YWRkRm9jdXNSaW5n
UmVjdHMocmVjdHMsIGZsb29yZWRMYXlvdXRQb2ludChhZGRpdGlvbmFsT2Zmc2V0ICsgaW5saW5l
RWxlbWVudENvbnRpbnVhdGlvbigpLT5jb250YWluaW5nQmxvY2soKS0+bG9jYXRpb24oKSAtIGxv
Y2F0aW9uKCkpKTsKKyAgICAgICAgaW5saW5lRWxlbWVudENvbnRpbnVhdGlvbigpLT5hZGRGb2N1
c1JpbmdSZWN0cyhyZWN0cywgZmxvb3JlZExheW91dFBvaW50KGFkZGl0aW9uYWxPZmZzZXQgKyBp
bmxpbmVFbGVtZW50Q29udGludWF0aW9uKCktPmNvbnRhaW5pbmdCbG9jaygpLT5sb2NhdGlvbigp
IC0gbG9jYXRpb24oKSksIHBhaW50Q29udGFpbmVyKTsKIH0KIAogUmVuZGVyQm94KiBSZW5kZXJC
bG9jazo6Y3JlYXRlQW5vbnltb3VzQm94V2l0aFNhbWVUeXBlQXMoY29uc3QgUmVuZGVyT2JqZWN0
KiBwYXJlbnQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCmluZGV4
IGJiMjkwMWU2YzY4MzYxODNmZTRhYzAyNTBmNmEwYjAzNTNkZWQxODkuLjdhZjE1M2VkZTE1OTU5
MDlkZDMyZjhkNjE5MGI1YTIxNzQ0YmZmNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9jay5oCkBAIC01MzUsNyArNTM1LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgYWRkT3Zl
cmZsb3dGcm9tSW5saW5lQ2hpbGRyZW4oKTsKICAgICB2b2lkIGFkZFZpc3VhbE92ZXJmbG93RnJv
bVRoZW1lKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPElu
dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkRm9jdXNS
aW5nUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0aW9uYWxP
ZmZzZXQsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHBhaW50Q29udGFpbmVyID0gMCkg
T1ZFUlJJREU7CiAKICNpZiBFTkFCTEUoU1ZHKQogICAgIC8vIE9ubHkgdXNlZCBieSBSZW5kZXJT
VkdUZXh0LCB3aGljaCBleHBsaWNpdGVseSBvdmVycmlkZXMgUmVuZGVyQmxvY2s6OmxheW91dEJs
b2NrKCksIGRvIE5PVCB1c2UgZm9yIGFueXRoaW5nIGVsc2UuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guY3BwCmluZGV4IGY2ODUzNTk2ZjAzZmQyM2NiYTRkY2Q4YmEyMjlkMDU2MDhi
MmE5NzIuLmU3Yzk1Y2I3MzI2ODY3NjFiZTk0NzE1YmU2NmI0MDY0N2M0OTg5NDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC01NDEsNyArNTQxLDcgQEAgTGF5b3V0
UmVjdCBSZW5kZXJCb3g6Om91dGxpbmVCb3VuZHNGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVy
TW9kZWxPYmplY3QqIHJlcGEKICAgICByZXR1cm4gYm94OwogfQogCi12b2lkIFJlbmRlckJveDo6
YWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9p
bnQmIGFkZGl0aW9uYWxPZmZzZXQpCit2b2lkIFJlbmRlckJveDo6YWRkRm9jdXNSaW5nUmVjdHMo
VmVjdG9yPEludFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0aW9uYWxPZmZz
ZXQsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqKQogewogICAgIGlmICghc2l6ZSgpLmlz
RW1wdHkoKSkKICAgICAgICAgcmVjdHMuYXBwZW5kKHBpeGVsU25hcHBlZEludFJlY3QoYWRkaXRp
b25hbE9mZnNldCwgc2l6ZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5k
ZXggODYxMzY3OGFhMTQ5ZjBlMWUyMGUwNDM1Yzk3YWU5OGIyMmMyOGYxMC4uNzI1ZmRjN2M0Zjkx
NGM1NTA2MWNjYjY1NzM4MTJlNGEzMDk1ZThhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guaApAQCAtMTYyLDcgKzE2Miw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEJvdW5kcyBvZiB0
aGUgb3V0bGluZSBib3ggaW4gYWJzb2x1dGUgY29vcmRzLiBSZXNwZWN0cyB0cmFuc2Zvcm1zCiAg
ICAgdmlydHVhbCBMYXlvdXRSZWN0IG91dGxpbmVCb3VuZHNGb3JSZXBhaW50KGNvbnN0IFJlbmRl
ckxheWVyTW9kZWxPYmplY3QqIC8qcmVwYWludENvbnRhaW5lciovLCBjb25zdCBSZW5kZXJHZW9t
ZXRyeU1hcCopIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBhZGRGb2N1c1JpbmdS
ZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYpOworICAgIHZpcnR1YWwg
dm9pZCBhZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBMYXlvdXRQb2lu
dCYgYWRkaXRpb25hbE9mZnNldCwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcGFpbnRD
b250YWluZXIgPSAwKSBPVkVSUklERTsKIAogICAgIC8vIFVzZSB0aGlzIHdpdGggY2F1dGlvbiEg
Tm8gdHlwZSBjaGVja2luZyBpcyBkb25lIQogICAgIFJlbmRlckJveCogcHJldmlvdXNTaWJsaW5n
Qm94KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW5saW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCmlu
ZGV4IGViMTMwYzg1OTYwN2VkODkxNjZjMjBhZDc5MmJjNmY4MDM1MTU1NjQuLjg4ZjgxOWZiYTY3
MjQ5ZGNhMmUxMzk0YTA0MTFkYjM0MzI4YmYyOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbmxpbmUuY3BwCkBAIC0xMzY1LDcgKzEzNjUsNyBAQCB2b2lkIFJlbmRlcklubGlu
ZTo6aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciwgY29uc3QgSW50UmVjdCopCiAgICAgcmVw
YWludCgpOwogfQogCi12b2lkIFJlbmRlcklubGluZTo6YWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9y
PEludFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0aW9uYWxPZmZzZXQpCit2
b2lkIFJlbmRlcklubGluZTo6YWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0
cywgY29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0aW9uYWxPZmZzZXQsIGNvbnN0IFJlbmRlckxheWVy
TW9kZWxPYmplY3QqIHBhaW50Q29udGFpbmVyKQogewogICAgIEFic29sdXRlUmVjdHNHZW5lcmF0
b3JDb250ZXh0IGNvbnRleHQocmVjdHMsIGFkZGl0aW9uYWxPZmZzZXQpOwogICAgIGdlbmVyYXRl
TGluZUJveFJlY3RzKGNvbnRleHQpOwpAQCAtMTM3NSwyMiArMTM3NSwyMiBAQCB2b2lkIFJlbmRl
cklubGluZTo6YWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgY29uc3Qg
TGF5b3V0UG9pbnQmCiAgICAgICAgICAgICBGbG9hdFBvaW50IHBvcyhhZGRpdGlvbmFsT2Zmc2V0
KTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGRvZXNuJ3Qgd29yayBjb3JyZWN0bHkgd2l0
aCB0cmFuc2Zvcm1zLgogICAgICAgICAgICAgaWYgKGN1cnItPmhhc0xheWVyKCkpIAotICAgICAg
ICAgICAgICAgIHBvcyA9IGN1cnItPmxvY2FsVG9BYnNvbHV0ZSgpOworICAgICAgICAgICAgICAg
IHBvcyA9IGN1cnItPmxvY2FsVG9Db250YWluZXJQb2ludChGbG9hdFBvaW50KCksIHBhaW50Q29u
dGFpbmVyKTsKICAgICAgICAgICAgIGVsc2UgaWYgKGN1cnItPmlzQm94KCkpCiAgICAgICAgICAg
ICAgICAgcG9zLm1vdmUodG9SZW5kZXJCb3goY3VyciktPmxvY2F0aW9uT2Zmc2V0KCkpOwotICAg
ICAgICAgICAgY3Vyci0+YWRkRm9jdXNSaW5nUmVjdHMocmVjdHMsIGZsb29yZWRJbnRQb2ludChw
b3MpKTsKKyAgICAgICAgICAgIGN1cnItPmFkZEZvY3VzUmluZ1JlY3RzKHJlY3RzLCBmbG9vcmVk
SW50UG9pbnQocG9zKSwgcGFpbnRDb250YWluZXIpOwogICAgICAgICB9CiAgICAgfQogCiAgICAg
aWYgKGNvbnRpbnVhdGlvbigpKSB7CiAgICAgICAgIGlmIChjb250aW51YXRpb24oKS0+aXNJbmxp
bmUoKSkKLSAgICAgICAgICAgIGNvbnRpbnVhdGlvbigpLT5hZGRGb2N1c1JpbmdSZWN0cyhyZWN0
cywgZmxvb3JlZExheW91dFBvaW50KGFkZGl0aW9uYWxPZmZzZXQgKyBjb250aW51YXRpb24oKS0+
Y29udGFpbmluZ0Jsb2NrKCktPmxvY2F0aW9uKCkgLSBjb250YWluaW5nQmxvY2soKS0+bG9jYXRp
b24oKSkpOworICAgICAgICAgICAgY29udGludWF0aW9uKCktPmFkZEZvY3VzUmluZ1JlY3RzKHJl
Y3RzLCBmbG9vcmVkTGF5b3V0UG9pbnQoYWRkaXRpb25hbE9mZnNldCArIGNvbnRpbnVhdGlvbigp
LT5jb250YWluaW5nQmxvY2soKS0+bG9jYXRpb24oKSAtIGNvbnRhaW5pbmdCbG9jaygpLT5sb2Nh
dGlvbigpKSwgcGFpbnRDb250YWluZXIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb250
aW51YXRpb24oKS0+YWRkRm9jdXNSaW5nUmVjdHMocmVjdHMsIGZsb29yZWRMYXlvdXRQb2ludChh
ZGRpdGlvbmFsT2Zmc2V0ICsgdG9SZW5kZXJCb3goY29udGludWF0aW9uKCkpLT5sb2NhdGlvbigp
IC0gY29udGFpbmluZ0Jsb2NrKCktPmxvY2F0aW9uKCkpKTsKKyAgICAgICAgICAgIGNvbnRpbnVh
dGlvbigpLT5hZGRGb2N1c1JpbmdSZWN0cyhyZWN0cywgZmxvb3JlZExheW91dFBvaW50KGFkZGl0
aW9uYWxPZmZzZXQgKyB0b1JlbmRlckJveChjb250aW51YXRpb24oKSktPmxvY2F0aW9uKCkgLSBj
b250YWluaW5nQmxvY2soKS0+bG9jYXRpb24oKSksIHBhaW50Q29udGFpbmVyKTsKICAgICB9CiB9
CiAKLXZvaWQgUmVuZGVySW5saW5lOjpwYWludE91dGxpbmUoR3JhcGhpY3NDb250ZXh0KiBncmFw
aGljc0NvbnRleHQsIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKK3ZvaWQgUmVuZGVy
SW5saW5lOjpwYWludE91dGxpbmUoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBv
aW50JiBwYWludE9mZnNldCkKIHsKICAgICBpZiAoIWhhc091dGxpbmUoKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtMTM5OSwxMCArMTM5OSwxMSBAQCB2b2lkIFJlbmRlcklubGluZTo6cGFpbnRPdXRs
aW5lKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBMYXlvdXRQbwogICAg
IGlmIChzdHlsZVRvVXNlLT5vdXRsaW5lU3R5bGVJc0F1dG8oKSB8fCBoYXNPdXRsaW5lQW5ub3Rh
dGlvbigpKSB7CiAgICAgICAgIGlmICghdGhlbWUoKS0+c3VwcG9ydHNGb2N1c1Jpbmcoc3R5bGVU
b1VzZSkpIHsKICAgICAgICAgICAgIC8vIE9ubHkgcGFpbnQgdGhlIGZvY3VzIHJpbmcgYnkgaGFu
ZCBpZiB0aGUgdGhlbWUgaXNuJ3QgYWJsZSB0byBkcmF3IHRoZSBmb2N1cyByaW5nLgotICAgICAg
ICAgICAgcGFpbnRGb2N1c1JpbmcoZ3JhcGhpY3NDb250ZXh0LCBwYWludE9mZnNldCwgc3R5bGVU
b1VzZSk7CisgICAgICAgICAgICBwYWludEZvY3VzUmluZyhwYWludEluZm8sIHBhaW50T2Zmc2V0
LCBzdHlsZVRvVXNlKTsKICAgICAgICAgfQogICAgIH0KIAorICAgIEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQ7CiAgICAgaWYgKGdyYXBoaWNzQ29u
dGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAppbmRleCAzOTYyMGI2NWEyZmQ4ZjdmYzhmZmIwMWFk
YmZlMjE3OGRlODM0YmQ5Li5iNTRhYWE4OGVlMDZkMWY1N2NkMmJkZWRmOGQ5NzllZWUyMjliNDAy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCkBAIC04MSw4ICs4MSw4
IEBAIHB1YmxpYzoKICAgICAKICAgICBMYXlvdXRTaXplIG9mZnNldEZvckluRmxvd1Bvc2l0aW9u
ZWRJbmxpbmUoY29uc3QgUmVuZGVyQm94KiBjaGlsZCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgYWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQm
KTsKLSAgICB2b2lkIHBhaW50T3V0bGluZShHcmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXlvdXRQ
b2ludCYpOworICAgIHZpcnR1YWwgdm9pZCBhZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8SW50UmVj
dD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWRkaXRpb25hbE9mZnNldCwgY29uc3QgUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdCogcGFpbnRDb250YWluZXIgPSAwKSBPVkVSUklERTsKKyAgICB2b2lkIHBh
aW50T3V0bGluZShQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwogCiAgICAgdXNpbmcg
UmVuZGVyQm94TW9kZWxPYmplY3Q6OmNvbnRpbnVhdGlvbjsKICAgICB1c2luZyBSZW5kZXJCb3hN
b2RlbE9iamVjdDo6c2V0Q29udGludWF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHAKaW5kZXggZDNlZjVlZDBhZDAwY2VmNzU4ZjViZDk1YWU2OGVhZjE2OGJkMTAx
OC4uZTRjODk4ZGMwMDFkZDM3MjBkNTI0YTNlYTNlZDk0NzE0YTgwMzE1MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0zODE5LDcgKzM4MTksOSBAQCB2b2lk
IFJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVudHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBMYXllclBhaW50aQogICAgICAgICAgICAgCiAgICAgICAgICAgICBQYWludEluZm8g
cGFpbnRJbmZvKGNvbnRleHQsIHBpeGVsU25hcHBlZEludFJlY3QoY2xpcFJlY3RUb0FwcGx5LnJl
Y3QoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbk9ubHkgPyBQ
YWludFBoYXNlU2VsZWN0aW9uIDogUGFpbnRQaGFzZUNoaWxkQmxvY2tCYWNrZ3JvdW5kcywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yY2VCbGFja1RleHQgPyAoUGFpbnRCZWhh
dmlvcilQYWludEJlaGF2aW9yRm9yY2VCbGFja1RleHQgOiBwYWludEJlaGF2aW9yLCBwYWludGlu
Z1Jvb3RGb3JSZW5kZXJlciwgbG9jYWxQYWludGluZ0luZm8ucmVnaW9uKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZm9yY2VCbGFja1RleHQgPyAoUGFpbnRCZWhhdmlvcilQYWlu
dEJlaGF2aW9yRm9yY2VCbGFja1RleHQgOiBwYWludEJlaGF2aW9yLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwYWludGluZ1Jvb3RGb3JSZW5kZXJlciwgbG9jYWxQYWludGluZ0lu
Zm8ucmVnaW9uLCAwLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbFBh
aW50aW5nSW5mby5yb290TGF5ZXItPnJlbmRlcmVyKCkpOwogICAgICAgICAgICAgcmVuZGVyZXIo
KS0+cGFpbnQocGFpbnRJbmZvLCBwYWludE9mZnNldCk7CiAgICAgICAgICAgICBpZiAoIXNlbGVj
dGlvbk9ubHkpIHsKICAgICAgICAgICAgICAgICBwYWludEluZm8ucGhhc2UgPSBQYWludFBoYXNl
RmxvYXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJv
eExpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCb3hMaXN0LmNw
cAppbmRleCBlYjU2ZGZkMTAxNWMxOTNkZTIzZDQyNzhmOTljNTcwMWE0NzFiMTk4Li43YjU2MmI0
MjZhNzNjOTVlZGNiNTQ0OWJkMDczZDA4YTczMDg5NmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJveExpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaW5lQm94TGlzdC5jcHAKQEAgLTI2Nyw3ICsyNjcsNyBAQCB2b2lk
IFJlbmRlckxpbmVCb3hMaXN0OjpwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVuZGVyZXIs
IFBhaW50SW5mbyYgcGFpbnRJbgogICAgICAgICBMaXN0SGFzaFNldDxSZW5kZXJJbmxpbmUqPjo6
aXRlcmF0b3IgZW5kID0gaW5mby5vdXRsaW5lT2JqZWN0cy0+ZW5kKCk7CiAgICAgICAgIGZvciAo
TGlzdEhhc2hTZXQ8UmVuZGVySW5saW5lKj46Oml0ZXJhdG9yIGl0ID0gaW5mby5vdXRsaW5lT2Jq
ZWN0cy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgICAgICBSZW5kZXJJbmxp
bmUqIGZsb3cgPSAqaXQ7Ci0gICAgICAgICAgICBmbG93LT5wYWludE91dGxpbmUoaW5mby5jb250
ZXh0LCBwYWludE9mZnNldCk7CisgICAgICAgICAgICBmbG93LT5wYWludE91dGxpbmUoaW5mbywg
cGFpbnRPZmZzZXQpOwogICAgICAgICB9CiAgICAgICAgIGluZm8ub3V0bGluZU9iamVjdHMtPmNs
ZWFyKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3Bw
CmluZGV4IDUxZjhlNDY0Y2FmNTBlM2YzMGU2YmY4NjZjYTZiNjZmYWFmMmExMDIuLmY0NWZkYTNi
YWIyMWEzMTIyNDhmYWE1NmI1Y2U3NjA2YWFmNDJlYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKQEAgLTMyNywxMCArMzI3LDEwIEBAIHZvaWQgUmVuZGVy
TGlzdEJveDo6cGFpbnRPYmplY3QoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBv
aW50JiBwYWludE9mCiAgICAgfQogfQogCi12b2lkIFJlbmRlckxpc3RCb3g6OmFkZEZvY3VzUmlu
Z1JlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhZGRpdGlv
bmFsT2Zmc2V0KQordm9pZCBSZW5kZXJMaXN0Qm94OjphZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8
SW50UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYWRkaXRpb25hbE9mZnNldCwgY29u
c3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcGFpbnRDb250YWluZXIpCiB7CiAgICAgaWYgKCFp
c1NwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZChmcmFtZSgpKSkKLSAgICAgICAgcmV0dXJuIFJlbmRl
ckJsb2NrOjphZGRGb2N1c1JpbmdSZWN0cyhyZWN0cywgYWRkaXRpb25hbE9mZnNldCk7CisgICAg
ICAgIHJldHVybiBSZW5kZXJCbG9jazo6YWRkRm9jdXNSaW5nUmVjdHMocmVjdHMsIGFkZGl0aW9u
YWxPZmZzZXQsIHBhaW50Q29udGFpbmVyKTsKIAogICAgIEhUTUxTZWxlY3RFbGVtZW50KiBzZWxl
Y3QgPSBzZWxlY3RFbGVtZW50KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaXN0Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlz
dEJveC5oCmluZGV4IDQ3YTdhM2QxNDA5MzNlZDU3YmU1ZTA4MWY1MmE1ODliMjdkODE4ZTEuLjZl
YTdjM2I1MTMzNDI4OGFhODRkYzYzMmM5NTc1MTdjMzcxMDdlNjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaApAQCAtODIsNyArODIsNyBAQCBwcml2YXRlOgogCiAg
ICAgdmlydHVhbCB2b2lkIGxheW91dCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGFkZEZvY3VzUmlu
Z1JlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50Jik7CisgICAgdmlydHVh
bCB2b2lkIGFkZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0IExheW91dFBv
aW50JiBhZGRpdGlvbmFsT2Zmc2V0LCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBwYWlu
dENvbnRhaW5lciA9IDApIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBib29sIGNhbkJlUHJvZ3Jh
bWF0aWNhbGx5U2Nyb2xsZWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2
b2lkIGF1dG9zY3JvbGwoY29uc3QgSW50UG9pbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5jcHAKaW5kZXggN2M0YzI5MjFlNjhhZDNjMzllZmI3MTE2ODYxYWMzZGNj
ODBlYTVmMS4uMDljNjk5YmNkMzc4N2U3YjgzYWZlMzk4OTdhNDRjYzM2OWM2NTAyYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTEwOTAsMTQgKzEwOTAs
MTQgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmRyYXdMaW5lRm9yQm94U2lkZShHcmFwaGljc0NvbnRl
eHQqIGdyYXBoaWNzQ29udGV4dCwgaW50IHgxLAogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJPYmpl
Y3Q6OnBhaW50Rm9jdXNSaW5nKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0
UG9pbnQmIHBhaW50T2Zmc2V0LCBSZW5kZXJTdHlsZSogc3R5bGUpCit2b2lkIFJlbmRlck9iamVj
dDo6cGFpbnRGb2N1c1JpbmcoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50
JiBwYWludE9mZnNldCwgUmVuZGVyU3R5bGUqIHN0eWxlKQogewogICAgIFZlY3RvcjxJbnRSZWN0
PiBmb2N1c1JpbmdSZWN0czsKLSAgICBhZGRGb2N1c1JpbmdSZWN0cyhmb2N1c1JpbmdSZWN0cywg
cGFpbnRPZmZzZXQpOworICAgIGFkZEZvY3VzUmluZ1JlY3RzKGZvY3VzUmluZ1JlY3RzLCBwYWlu
dE9mZnNldCwgcGFpbnRJbmZvLnBhaW50Q29udGFpbmVyKTsKICAgICBpZiAoc3R5bGUtPm91dGxp
bmVTdHlsZUlzQXV0bygpKQotICAgICAgICBjb250ZXh0LT5kcmF3Rm9jdXNSaW5nKGZvY3VzUmlu
Z1JlY3RzLCBzdHlsZS0+b3V0bGluZVdpZHRoKCksIHN0eWxlLT5vdXRsaW5lT2Zmc2V0KCksIHN0
eWxlLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3IpKTsKKyAg
ICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmRyYXdGb2N1c1JpbmcoZm9jdXNSaW5nUmVjdHMsIHN0
eWxlLT5vdXRsaW5lV2lkdGgoKSwgc3R5bGUtPm91dGxpbmVPZmZzZXQoKSwgc3R5bGUtPnZpc2l0
ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eU91dGxpbmVDb2xvcikpOwogICAgIGVsc2UKLSAg
ICAgICAgYWRkUERGVVJMUmVjdChjb250ZXh0LCB1bmlvblJlY3QoZm9jdXNSaW5nUmVjdHMpKTsK
KyAgICAgICAgYWRkUERGVVJMUmVjdChwYWludEluZm8uY29udGV4dCwgdW5pb25SZWN0KGZvY3Vz
UmluZ1JlY3RzKSk7CiB9CiAKIHZvaWQgUmVuZGVyT2JqZWN0OjphZGRQREZVUkxSZWN0KEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkKQEAgLTExMTMsMjMg
KzExMTMsMjAgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmFkZFBERlVSTFJlY3QoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiByZWMKICAgICBjb250ZXh0LT5zZXRVUkxG
b3JSZWN0KG4tPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKGhyZWYpLCBwaXhlbFNuYXBwZWRJbnRS
ZWN0KHJlY3QpKTsKIH0KIAotdm9pZCBSZW5kZXJPYmplY3Q6OnBhaW50T3V0bGluZShHcmFwaGlj
c0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgcGFpbnRSZWN0KQor
dm9pZCBSZW5kZXJPYmplY3Q6OnBhaW50T3V0bGluZShQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgTGF5b3V0UmVjdCYgcGFpbnRSZWN0KQogewogICAgIGlmICghaGFzT3V0bGluZSgpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBSZW5kZXJTdHlsZSogc3R5bGVUb1VzZSA9IHN0eWxlKCk7CiAg
ICAgTGF5b3V0VW5pdCBvdXRsaW5lV2lkdGggPSBzdHlsZVRvVXNlLT5vdXRsaW5lV2lkdGgoKTsK
LSAgICBFQm9yZGVyU3R5bGUgb3V0bGluZVN0eWxlID0gc3R5bGVUb1VzZS0+b3V0bGluZVN0eWxl
KCk7Ci0KLSAgICBDb2xvciBvdXRsaW5lQ29sb3IgPSBzdHlsZVRvVXNlLT52aXNpdGVkRGVwZW5k
ZW50Q29sb3IoQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3IpOwogCiAgICAgaW50IG91dGxpbmVPZmZz
ZXQgPSBzdHlsZVRvVXNlLT5vdXRsaW5lT2Zmc2V0KCk7CiAKICAgICBpZiAoc3R5bGVUb1VzZS0+
b3V0bGluZVN0eWxlSXNBdXRvKCkgfHwgaGFzT3V0bGluZUFubm90YXRpb24oKSkgewogICAgICAg
ICBpZiAoIXRoZW1lKCktPnN1cHBvcnRzRm9jdXNSaW5nKHN0eWxlVG9Vc2UpKSB7CiAgICAgICAg
ICAgICAvLyBPbmx5IHBhaW50IHRoZSBmb2N1cyByaW5nIGJ5IGhhbmQgaWYgdGhlIHRoZW1lIGlz
bid0IGFibGUgdG8gZHJhdyB0aGUgZm9jdXMgcmluZy4KLSAgICAgICAgICAgIHBhaW50Rm9jdXNS
aW5nKGdyYXBoaWNzQ29udGV4dCwgcGFpbnRSZWN0LmxvY2F0aW9uKCksIHN0eWxlVG9Vc2UpOwor
ICAgICAgICAgICAgcGFpbnRGb2N1c1JpbmcocGFpbnRJbmZvLCBwYWludFJlY3QubG9jYXRpb24o
KSwgc3R5bGVUb1VzZSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTExNDYsNiArMTE0MywxMCBA
QCB2b2lkIFJlbmRlck9iamVjdDo6cGFpbnRPdXRsaW5lKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhp
Y3NDb250ZXh0LCBjb25zdCBMYXlvdXRSZQogICAgIGlmIChvdXRlci5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybjsKIAorICAgIEVCb3JkZXJTdHlsZSBvdXRsaW5lU3R5bGUgPSBzdHlsZVRvVXNl
LT5vdXRsaW5lU3R5bGUoKTsKKyAgICBDb2xvciBvdXRsaW5lQ29sb3IgPSBzdHlsZVRvVXNlLT52
aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3IpOworCisgICAgR3Jh
cGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQgPSBwYWludEluZm8uY29udGV4dDsKICAgICBi
b29sIHVzZVRyYW5zcGFyZW5jeUxheWVyID0gb3V0bGluZUNvbG9yLmhhc0FscGhhKCk7CiAgICAg
aWYgKHVzZVRyYW5zcGFyZW5jeUxheWVyKSB7CiAgICAgICAgIGlmIChvdXRsaW5lU3R5bGUgPT0g
U09MSUQpIHsKQEAgLTEyMTgsNyArMTIxOSw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjphYnNvbHV0
ZUZvY3VzUmluZ1F1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcykKICAgICAvLyBkZXNjZW5k
YW50cy4KICAgICBGbG9hdFBvaW50IGFic29sdXRlUG9pbnQgPSBsb2NhbFRvQWJzb2x1dGUoKTsK
ICAgICBhZGRGb2N1c1JpbmdSZWN0cyhyZWN0cywgZmxvb3JlZExheW91dFBvaW50KGFic29sdXRl
UG9pbnQpKTsKLSAgICBzaXplX3QgY291bnQgPSByZWN0cy5zaXplKCk7IAorICAgIHNpemVfdCBj
b3VudCA9IHJlY3RzLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyAr
K2kpIHsKICAgICAgICAgSW50UmVjdCByZWN0ID0gcmVjdHNbaV07CiAgICAgICAgIHJlY3QubW92
ZSgtYWJzb2x1dGVQb2ludC54KCksIC1hYnNvbHV0ZVBvaW50LnkoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKaW5kZXggM2NmZjVmYTU2YzJlODI0MDg5ZDYxZmY3ZWQw
MmI1ZWFmMzc3MDAxYS4uNTEwYzMzNTc5MDVlY2M0NzExNDVjNzNlY2IwZGVmZjhhNjA1Y2EyMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaApAQCAtOTYyLDcgKzk2Miw3
IEBAIHB1YmxpYzoKICAgICAvLyByZXR1cm4gdHJ1ZSBpZiB0aGlzIG9iamVjdCByZXF1aXJlcyBh
IG5ldyBzdGFja2luZyBjb250ZXh0CiAgICAgYm9vbCBjcmVhdGVzR3JvdXAoKSBjb25zdCB7IHJl
dHVybiBpc1RyYW5zcGFyZW50KCkgfHwgaGFzTWFzaygpIHx8IGhhc0ZpbHRlcigpIHx8IGhhc0Js
ZW5kTW9kZSgpOyB9IAogICAgIAotICAgIHZpcnR1YWwgdm9pZCBhZGRGb2N1c1JpbmdSZWN0cyhW
ZWN0b3I8SW50UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYpIHsgfTsKKyAgICB2aXJ0dWFsIHZv
aWQgYWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQm
IC8qIGFkZGl0aW9uYWxPZmZzZXQgKi8sIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIC8q
IHBhaW50Q29udGFpbmVyICovID0gMCkgeyB9OwogCiAgICAgTGF5b3V0UmVjdCBhYnNvbHV0ZU91
dGxpbmVCb3VuZHMoKSBjb25zdAogICAgIHsKQEAgLTk4Niw4ICs5ODYsOCBAQCBwcm90ZWN0ZWQ6
CiAgICAgdm9pZCBkcmF3TGluZUZvckJveFNpZGUoR3JhcGhpY3NDb250ZXh0KiwgaW50IHgxLCBp
bnQgeTEsIGludCB4MiwgaW50IHkyLCBCb3hTaWRlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIENvbG9yLCBFQm9yZGVyU3R5bGUsIGludCBhZGpidzEsIGludCBhZGpidzIsIGJvb2wgYW50
aWFsaWFzID0gZmFsc2UpOwogCi0gICAgdm9pZCBwYWludEZvY3VzUmluZyhHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBMYXlvdXRQb2ludCYsIFJlbmRlclN0eWxlKik7Ci0gICAgdm9pZCBwYWludE91
dGxpbmUoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5b3V0UmVjdCYpOworICAgIHZvaWQgcGFp
bnRGb2N1c1JpbmcoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBSZW5kZXJTdHlsZSop
OworICAgIHZvaWQgcGFpbnRPdXRsaW5lKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFJlY3QmKTsK
ICAgICB2b2lkIGFkZFBERlVSTFJlY3QoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5b3V0UmVj
dCYpOwogICAgIAogICAgIHZpcnR1YWwgTGF5b3V0UmVjdCB2aWV3UmVjdCgpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKaW5kZXggM2JlOTFiYmY3
OTk5MzMxZWIxM2E1YjNkNWJkNWQyMDhmZWNiMWM3MS4uMTE5OWYwZWM5MmQ3MGViMDI5MDc3NzNk
NTZlZjg2YWMyNWQ0NGE2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclJlcGxhY2VkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVw
bGFjZWQuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBSZW5kZXJSZXBsYWNlZDo6cGFpbnQo
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKIAog
ICAgIExheW91dFJlY3QgcGFpbnRSZWN0ID0gTGF5b3V0UmVjdChhZGp1c3RlZFBhaW50T2Zmc2V0
LCBzaXplKCkpOwogICAgIGlmICgocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VPdXRsaW5l
IHx8IHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlU2VsZk91dGxpbmUpICYmIHN0eWxlKCkt
Pm91dGxpbmVXaWR0aCgpKQotICAgICAgICBwYWludE91dGxpbmUocGFpbnRJbmZvLmNvbnRleHQs
IHBhaW50UmVjdCk7CisgICAgICAgIHBhaW50T3V0bGluZShwYWludEluZm8sIHBhaW50UmVjdCk7
CiAgICAgCiAgICAgaWYgKHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZCAm
JiBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZVNlbGVjdGlvbiAmJiAhY2FuSGF2ZUNoaWxk
cmVuKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGUuY3BwCmluZGV4IDEyOGMwZTI1ZDBmNjg0ODViMzNhMjM5OTQxZmQ1ZTE2MDZiN2U5YmEuLjIx
Y2NkOTNhZjY3MjRlZjkyYzg0Yjc4NzI1OTMwMTdjOGM5ZGRkZmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcApAQCAtNjY0LDcgKzY2NCw3IEBAIHZvaWQgUmVuZGVy
VGFibGU6OnBhaW50T2JqZWN0KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2lu
dCYgcGFpbnRPZmZzCiAKICAgICAvLyBQYWludCBvdXRsaW5lLgogICAgIGlmICgocGFpbnRQaGFz
ZSA9PSBQYWludFBoYXNlT3V0bGluZSB8fCBwYWludFBoYXNlID09IFBhaW50UGhhc2VTZWxmT3V0
bGluZSkgJiYgaGFzT3V0bGluZSgpICYmIHN0eWxlKCktPnZpc2liaWxpdHkoKSA9PSBWSVNJQkxF
KQotICAgICAgICBwYWludE91dGxpbmUocGFpbnRJbmZvLmNvbnRleHQsIExheW91dFJlY3QocGFp
bnRPZmZzZXQsIHNpemUoKSkpOworICAgICAgICBwYWludE91dGxpbmUocGFpbnRJbmZvLCBMYXlv
dXRSZWN0KHBhaW50T2Zmc2V0LCBzaXplKCkpKTsKIH0KIAogdm9pZCBSZW5kZXJUYWJsZTo6c3Vi
dHJhY3RDYXB0aW9uUmVjdChMYXlvdXRSZWN0JiByZWN0KSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5jcHAKaW5kZXggMjVjYzZkYzk5MDA2MmVmOWRiMWE0
NzgzOTMzYWRmNDdkZTdlNjNhMS4uOTNjMzg0Y2NkZDcxMjYxOTBiMDgyNmVhZTVjMGU4ZWVkZTIz
YjdlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuY3BwCkBA
IC0yMzgsNyArMjM4LDcgQEAgdm9pZCBSZW5kZXJUYWJsZVJvdzo6cGFpbnRPdXRsaW5lRm9yUm93
SWZOZWVkZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW8KICAgICBMYXlvdXRQb2lu
dCBhZGp1c3RlZFBhaW50T2Zmc2V0ID0gcGFpbnRPZmZzZXQgKyBsb2NhdGlvbigpOwogICAgIFBh
aW50UGhhc2UgcGFpbnRQaGFzZSA9IHBhaW50SW5mby5waGFzZTsKICAgICBpZiAoKHBhaW50UGhh
c2UgPT0gUGFpbnRQaGFzZU91dGxpbmUgfHwgcGFpbnRQaGFzZSA9PSBQYWludFBoYXNlU2VsZk91
dGxpbmUpICYmIHN0eWxlKCktPnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKQotICAgICAgICBwYWlu
dE91dGxpbmUocGFpbnRJbmZvLmNvbnRleHQsIExheW91dFJlY3QoYWRqdXN0ZWRQYWludE9mZnNl
dCwgc2l6ZSgpKSk7CisgICAgICAgIHBhaW50T3V0bGluZShwYWludEluZm8sIExheW91dFJlY3Qo
YWRqdXN0ZWRQYWludE9mZnNldCwgc2l6ZSgpKSk7CiB9CiAKIHZvaWQgUmVuZGVyVGFibGVSb3c6
OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZz
ZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3Bw
CmluZGV4IDhiM2Q3M2IyOWMwYzg1M2MwZTJjOGYwYjc2NTAwNTVhODEyNDU0ZTYuLjQ2ZTdmNTc0
YjI2ZjRiNzYzMjljNjZiMDQ1Zjk2MTQ5YzU2MDZlNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCkBAIC05MTcsNyArOTE3LDcgQEAgdm9p
ZCBSZW5kZXJUYWJsZVNlY3Rpb246OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYgcGFpbnRPZmYKICAgICAgICAgcG9wQ29udGVudHNDbGlwKHBhaW50SW5mbywg
cGhhc2UsIGFkanVzdGVkUGFpbnRPZmZzZXQpOwogCiAgICAgaWYgKChwaGFzZSA9PSBQYWludFBo
YXNlT3V0bGluZSB8fCBwaGFzZSA9PSBQYWludFBoYXNlU2VsZk91dGxpbmUpICYmIHN0eWxlKCkt
PnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKQotICAgICAgICBwYWludE91dGxpbmUocGFpbnRJbmZv
LmNvbnRleHQsIExheW91dFJlY3QoYWRqdXN0ZWRQYWludE9mZnNldCwgc2l6ZSgpKSk7CisgICAg
ICAgIHBhaW50T3V0bGluZShwYWludEluZm8sIExheW91dFJlY3QoYWRqdXN0ZWRQYWludE9mZnNl
dCwgc2l6ZSgpKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBjb21wYXJlQ2VsbFBvc2l0aW9u
cyhSZW5kZXJUYWJsZUNlbGwqIGVsZW0xLCBSZW5kZXJUYWJsZUNlbGwqIGVsZW0yKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKaW5kZXggYzdjNTc2
ODk2MGJmODRhYjQzY2Q1MjFlYzA2N2Y0OTFkNWYwNWQwNC4uZmMwZTdkNGZkZWVhYTJjYmE5NmE4
ODE2NGY5YmVlYzg5NTZiZTlmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHRDb250cm9sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dENvbnRyb2wuY3BwCkBAIC0yOTMsNyArMjkzLDcgQEAgdm9pZCBSZW5kZXJUZXh0Q29u
dHJvbDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKQogICAgIHNldFByZWZlcnJlZExv
Z2ljYWxXaWR0aHNEaXJ0eShmYWxzZSk7CiB9CiAKLXZvaWQgUmVuZGVyVGV4dENvbnRyb2w6OmFk
ZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50
JiBhZGRpdGlvbmFsT2Zmc2V0KQordm9pZCBSZW5kZXJUZXh0Q29udHJvbDo6YWRkRm9jdXNSaW5n
UmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0aW9u
YWxPZmZzZXQsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqKQogewogICAgIGlmICghc2l6
ZSgpLmlzRW1wdHkoKSkKICAgICAgICAgcmVjdHMuYXBwZW5kKHBpeGVsU25hcHBlZEludFJlY3Qo
YWRkaXRpb25hbE9mZnNldCwgc2l6ZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0Q29udHJvbC5oCmluZGV4IGYxZjU5MmU1Y2MwMmI2YWI4YzYzZDZiM2YyNDJlZDgw
NGMzZmM0Y2UuLjdhODkzZmExMTM3MjUwM2U0MmU3Y2I5ZWQ2YjE5YjQ2ZmI0ODM5YzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oCkBAIC03NSw3ICs3
NSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGNhbkhhdmVHZW5lcmF0ZWRDaGlsZHJl
bigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGNh
bkJlUmVwbGFjZWRXaXRoSW5saW5lUnVuSW4oKSBjb25zdCBPVkVSUklERTsKICAgICAKLSAgICB2
aXJ0dWFsIHZvaWQgYWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3QgTGF5
b3V0UG9pbnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPElu
dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0aW9uYWxPZmZzZXQsIGNvbnN0IFJlbmRl
ckxheWVyTW9kZWxPYmplY3QqIHBhaW50Q29udGFpbmVyID0gMCkgT1ZFUlJJREU7CiAKICAgICB2
aXJ0dWFsIGJvb2wgY2FuQmVQcm9ncmFtYXRpY2FsbHlTY3JvbGxlZCgpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldp
ZGdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAppbmRl
eCBjMDc2ODFmMWVmOTI5NzIwNmJlMDVmN2MwY2Y1MzI1NzVmZDhlYzViLi40YWQ2ZWM0Mjk4Mzgx
YzY3Y2U0NTRmM2U1NDk4NTZmMjY5NmUzZTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyV2lkZ2V0LmNwcApAQCAtMjg0LDcgKzI4NCw3IEBAIHZvaWQgUmVuZGVyV2lkZ2V0Ojpw
YWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0
KQogICAgIH0KIAogICAgIGlmICgocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VPdXRsaW5l
IHx8IHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlU2VsZk91dGxpbmUpICYmIGhhc091dGxp
bmUoKSkKLSAgICAgICAgcGFpbnRPdXRsaW5lKHBhaW50SW5mby5jb250ZXh0LCBMYXlvdXRSZWN0
KGFkanVzdGVkUGFpbnRPZmZzZXQsIHNpemUoKSkpOworICAgICAgICBwYWludE91dGxpbmUocGFp
bnRJbmZvLCBMYXlvdXRSZWN0KGFkanVzdGVkUGFpbnRPZmZzZXQsIHNpemUoKSkpOwogCiAgICAg
aWYgKCFtX2ZyYW1lVmlldyB8fCBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZUZvcmVncm91
bmQpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcAppbmRleCA1MDY5ZjQxYWE4MzcxOGI4ZDZmNzY5OGY3
ZmEwNTc0Y2JhOGQ3NDdlLi42ZjAzOTEwOWFkODY3YTdiMDZkOWFlNDA3Y2M2Nzg3ZWEzMjA2ZDM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRh
aW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250
YWluZXIuY3BwCkBAIC0xNTAsMTIgKzE1MCwxMiBAQCB2b2lkIFJlbmRlclNWR0NvbnRhaW5lcjo6
cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JikKICAgICAvLyBX
ZSBzaG91bGQgaW5zdGVhZCBkaXNhYmxlIG91ciBjbGlwIGR1cmluZyBQYWludFBoYXNlT3V0bGlu
ZQogICAgIGlmICgocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VPdXRsaW5lIHx8IHBhaW50
SW5mby5waGFzZSA9PSBQYWludFBoYXNlU2VsZk91dGxpbmUpICYmIHN0eWxlKCktPm91dGxpbmVX
aWR0aCgpICYmIHN0eWxlKCktPnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKSB7CiAgICAgICAgIElu
dFJlY3QgcGFpbnRSZWN0SW5QYXJlbnQgPSBlbmNsb3NpbmdJbnRSZWN0KGxvY2FsVG9QYXJlbnRU
cmFuc2Zvcm0oKS5tYXBSZWN0KHJlcGFpbnRSZWN0KSk7Ci0gICAgICAgIHBhaW50T3V0bGluZShw
YWludEluZm8uY29udGV4dCwgcGFpbnRSZWN0SW5QYXJlbnQpOworICAgICAgICBwYWludE91dGxp
bmUocGFpbnRJbmZvLCBwYWludFJlY3RJblBhcmVudCk7CiAgICAgfQogfQogCiAvLyBhZGRGb2N1
c1JpbmdSZWN0cyBpcyBjYWxsZWQgZnJvbSBwYWludE91dGxpbmUgYW5kIG5lZWRzIHRvIGJlIGlu
IHRoZSBzYW1lIGNvb3JkaW5hdGVzIGFzIHRoZSBwYWludE91bGluZSBjYWxsCi12b2lkIFJlbmRl
clNWR0NvbnRhaW5lcjo6YWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywg
Y29uc3QgTGF5b3V0UG9pbnQmKQordm9pZCBSZW5kZXJTVkdDb250YWluZXI6OmFkZEZvY3VzUmlu
Z1JlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiwgY29uc3Qg
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdCopCiB7CiAgICAgSW50UmVjdCBwYWludFJlY3RJblBhcmVu
dCA9IGVuY2xvc2luZ0ludFJlY3QobG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpLm1hcFJlY3QocmVw
YWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKSkpOwogICAgIGlmICghcGFpbnRSZWN0SW5QYXJl
bnQuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdDb250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHQ29udGFpbmVyLmgKaW5kZXggNGQyMWI3OTYwMWQ4OWQzZWRkMGZjMzg2MjUyMDNjZTdmZjRl
MjE4OS4uNzBlMWVjOGQ1Yjk1MWU2NGM5YjJhYjVhOTRlOGZiOTBhNTQ0ODdmNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5oCkBAIC01
OSw3ICs1OSw3IEBAIHByb3RlY3RlZDoKIAogICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChSZW5k
ZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCkgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUNoaWxkKFJlbmRlck9iamVjdCopIE9WRVJSSURFOwot
ICAgIHZpcnR1YWwgdm9pZCBhZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBjb25z
dCBMYXlvdXRQb2ludCYpOworICAgIHZpcnR1YWwgdm9pZCBhZGRGb2N1c1JpbmdSZWN0cyhWZWN0
b3I8SW50UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWRkaXRpb25hbE9mZnNldCwgY29uc3Qg
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcGFpbnRDb250YWluZXIgPSAwKSBPVkVSUklERTsKIAog
ICAgIHZpcnR1YWwgRmxvYXRSZWN0IG9iamVjdEJvdW5kaW5nQm94KCkgY29uc3QgeyByZXR1cm4g
bV9vYmplY3RCb3VuZGluZ0JveDsgfQogICAgIHZpcnR1YWwgRmxvYXRSZWN0IHN0cm9rZUJvdW5k
aW5nQm94KCkgY29uc3QgeyByZXR1cm4gbV9zdHJva2VCb3VuZGluZ0JveDsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcAppbmRleCA0NWRiOTU0
ZGY0NTJmNGEwY2QzNDM0MThiY2YwYTY3YzAzY2Y1ZGFhLi5jOTY0YzE4OTUyODkyYmU5OWJkMWUy
MWI2ZGZiYmMwYzM3ZWI5M2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0ltYWdlLmNwcApAQCAtMTQ0LDcgKzE0NCw3IEBAIHZvaWQgUmVuZGVyU1ZHSW1h
Z2U6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYpCiAgICAg
ICAgIH0KIAogICAgICAgICBpZiAoZHJhd3NPdXRsaW5lKQotICAgICAgICAgICAgcGFpbnRPdXRs
aW5lKGNoaWxkUGFpbnRJbmZvLmNvbnRleHQsIEludFJlY3QoYm91bmRpbmdCb3gpKTsKKyAgICAg
ICAgICAgIHBhaW50T3V0bGluZShjaGlsZFBhaW50SW5mbywgSW50UmVjdChib3VuZGluZ0JveCkp
OwogICAgIH0KIH0KIApAQCAtMTkxLDcgKzE5MSw3IEBAIHZvaWQgUmVuZGVyU1ZHSW1hZ2U6Omlt
YWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IEludFJlY3QqKQogICAgIHJlcGFpbnQo
KTsKIH0KIAotdm9pZCBSZW5kZXJTVkdJbWFnZTo6YWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPElu
dFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmKQordm9pZCBSZW5kZXJTVkdJbWFnZTo6
YWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9p
bnQmLCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KikKIHsKICAgICAvLyB0aGlzIGlzIGNh
bGxlZCBmcm9tIHBhaW50KCkgYWZ0ZXIgdGhlIGxvY2FsVHJhbnNmb3JtIGhhcyBhbHJlYWR5IGJl
ZW4gYXBwbGllZAogICAgIEludFJlY3QgY29udGVudFJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KHJl
cGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5oCmluZGV4IDIzMmFkODM3N2QwNzU0MGZmMjFmNDU5ZmMy
NWMwYTM4OGVmOGY5ODQuLjllMDViMGFjZjU4MjVkMWQ4NmUzYzdlMzM5Yjk1NTZjM2JhOTU0MmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmgKQEAg
LTYwLDcgKzYwLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIEZsb2F0UmVjdCByZXBhaW50UmVj
dEluTG9jYWxDb29yZGluYXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fcmVwYWludEJvdW5kaW5nQm94
OyB9CiAgICAgdmlydHVhbCBGbG9hdFJlY3QgcmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXNF
eGNsdWRpbmdTVkdTaGFkb3coKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX3JlcGFpbnRCb3Vu
ZGluZ0JveEV4Y2x1ZGluZ1NoYWRvdzsgfQogCi0gICAgdmlydHVhbCB2b2lkIGFkZEZvY3VzUmlu
Z1JlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50Jik7CisgICAgdmlydHVh
bCB2b2lkIGFkZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0IExheW91dFBv
aW50JiBhZGRpdGlvbmFsT2Zmc2V0LCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBwYWlu
dENvbnRhaW5lciA9IDApIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIGltYWdlQ2hhbmdl
ZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IEludFJlY3QqID0gMCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKaW5kZXggZGRhOTcyZTZkN2Jk
ZjRmOWM3YzEyN2E3NTc3NWJiMTA3NjQxZjMxYi4uMzQyNTUxM2M5NmQyNmJjMmE5ZjRmMmZiNWVj
YjE3ZTAzYjdmMjVmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdTaGFwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdTaGFwZS5jcHAKQEAgLTI5NywxMyArMjk3LDEzIEBAIHZvaWQgUmVuZGVyU1ZHU2hhcGU6
OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYpCiAgICAgICAg
IH0KIAogICAgICAgICBpZiAoZHJhd3NPdXRsaW5lKQotICAgICAgICAgICAgcGFpbnRPdXRsaW5l
KGNoaWxkUGFpbnRJbmZvLmNvbnRleHQsIEludFJlY3QoYm91bmRpbmdCb3gpKTsKKyAgICAgICAg
ICAgIHBhaW50T3V0bGluZShjaGlsZFBhaW50SW5mbywgSW50UmVjdChib3VuZGluZ0JveCkpOwog
ICAgIH0KIH0KIAogLy8gVGhpcyBtZXRob2QgaXMgY2FsbGVkIGZyb20gaW5zaWRlIHBhaW50T3V0
bGluZSgpIHNpbmNlIHdlIGNhbGwgcGFpbnRPdXRsaW5lKCkKIC8vIHdoaWxlIHRyYW5zZm9ybWVk
IHRvIG91ciBjb29yZCBzeXN0ZW0sIHJldHVybiBsb2NhbCBjb29yZHMKLXZvaWQgUmVuZGVyU1ZH
U2hhcGU6OmFkZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGNvbnN0IExh
eW91dFBvaW50JikKK3ZvaWQgUmVuZGVyU1ZHU2hhcGU6OmFkZEZvY3VzUmluZ1JlY3RzKFZlY3Rv
cjxJbnRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdCopCiB7CiAgICAgSW50UmVjdCByZWN0ID0gZW5jbG9zaW5nSW50UmVjdChyZXBh
aW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpKTsKICAgICBpZiAoIXJlY3QuaXNFbXB0eSgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5oCmluZGV4IDQ0
YTNiNGExMGFjNzQ1OTRmYTJjNGQzMDAyZGZkYmJmYzU2MDAyZjkuLjQ3OWRhNjZlMzA2MTZkYmVj
ZmU1NzViZThjMjBlYTAyZGU4M2NmNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1NoYXBlLmgKQEAgLTExNCw3ICsxMTQsNyBAQCBwcml2YXRlOgogCiAgICAg
dmlydHVhbCB2b2lkIGxheW91dCgpOwogICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8m
LCBjb25zdCBMYXlvdXRQb2ludCYpOwotICAgIHZpcnR1YWwgdm9pZCBhZGRGb2N1c1JpbmdSZWN0
cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYpOworICAgIHZpcnR1YWwgdm9p
ZCBhZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYg
YWRkaXRpb25hbE9mZnNldCwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcGFpbnRDb250
YWluZXIgPSAwKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgYm9vbCBub2RlQXRGbG9hdFBvaW50
KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEZsb2F0UG9pbnQm
IHBvaW50SW5QYXJlbnQsIEhpdFRlc3RBY3Rpb24pOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYTg1YjZmYzRkMzIzZTIz
NTU0NTBjODYxYTUzMTA5MGQ5NzViMzAxMy4uMWY4ODNmNjgzNDkyZDNiYzk4MjRiZDY3YzBkYzhj
Y2Q0NzVmN2M4MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEzLTAyLTI3ICBYaWFuemh1IFdh
bmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRm9jdXMgcmluZyBmb3Ig
YSBjaGlsZCBsYXllciBpcyBpbmNvcnJlY3RseSBvZmZzZXQgYnkgYW5jZXN0b3IgY29tcG9zaXRl
ZCBsYXllcidzIHBvc2l0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMTA4OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBOZXcgcmVmIHRlc3QgZm9yIHRoZSBidWcuCisKKyAgICAgICAgKiBjb21wb3Np
dGluZy9zdWItbGF5ZXItZm9jdXMtcmluZy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBjb21wb3NpdGluZy9zdWItbGF5ZXItZm9jdXMtcmluZy5odG1sOiBBZGRlZC4KKwogMjAxMy0w
Mi0yNiAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5y
ZXZpZXdlZCBnYXJkZW5pbmcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9z
dWItbGF5ZXItZm9jdXMtcmluZy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRp
bmcvc3ViLWxheWVyLWZvY3VzLXJpbmctZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZjdkZjE1
NWVlN2E0MWYzNjdhMDg1ZmQyODZkYzQ2Yzk5ODg5ZmQxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvY29tcG9zaXRpbmcvc3ViLWxheWVyLWZvY3VzLXJpbmctZXhwZWN0ZWQuaHRtbApA
QCAtMCwwICsxLDQwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+
CisuY29tcG9zaXRlZCB7CisgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApOworfQor
Cisub3V0ZXIgeworICBwb3NpdGlvbjogYWJzb2x1dGU7CisgIHdpZHRoOiA1MDBweDsKKyAgaGVp
Z2h0OiAzMDBweDsKKyAgdG9wOiA2MHB4OworICBsZWZ0OiAxMDBweDsKKyAgYmFja2dyb3VuZC1j
b2xvcjogeWVsbG93OworfQorCisub3V0bGluZWQgeworICBvdXRsaW5lOiByZWQgYXV0byB0aGlu
OworICB3aWR0aDogMTUwcHg7CisgIGhlaWdodDogNTBweDsKKyAgYmFja2dyb3VuZC1jb2xvcjog
bGlnaHRncmV5OworfQorCisuaW5uZXIgeworICB3aWR0aDogODBweDsKKyAgaGVpZ2h0OiAxMDBw
eDsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPCEtLSBTdGlsbCBsZXQgb3V0ZXIg
bGF5ZXIgY29tcG9zaXRlZCB0byBhdm9pZCB0aGUgbWlub3IgZWRnZSBwaXhlbCBkaWZmcy4gLS0+
CisgIDxkaXYgY2xhc3M9ImNvbXBvc2l0ZWQgb3V0ZXIiPgorICAgIDxkaXYgY2xhc3M9Im91dGxp
bmVkIj4KKyAgICAgIDxkaXYgY2xhc3M9ImlubmVyIj48L2Rpdj4KKyAgICA8L2Rpdj4KKyAgPC9k
aXY+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0
aW5nL3N1Yi1sYXllci1mb2N1cy1yaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9z
dWItbGF5ZXItZm9jdXMtcmluZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJlNDFlOTBkYWZlNTYxYWJhZGI2
NmY3MzgyODE3ZGMyZGVhYTZjMTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb21w
b3NpdGluZy9zdWItbGF5ZXItZm9jdXMtcmluZy5odG1sCkBAIC0wLDAgKzEsNDEgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKy5jb21wb3NpdGVkIHsKKyAgLXdl
YmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7Cit9CisKKy5vdXRlciB7CisgIHBvc2l0aW9u
OiBhYnNvbHV0ZTsKKyAgd2lkdGg6IDUwMHB4OworICBoZWlnaHQ6IDMwMHB4OworICB0b3A6IDYw
cHg7CisgIGxlZnQ6IDEwMHB4OworICBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3c7Cit9CisKKy5v
dXRsaW5lZCB7CisgIG91dGxpbmU6IHJlZCBhdXRvIHRoaW47CisgIHdpZHRoOiAxNTBweDsKKyAg
aGVpZ2h0OiA1MHB4OworICBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGdyZXk7Cit9CisKKy5pbm5l
ciB7CisgIHdpZHRoOiA4MHB4OworICBoZWlnaHQ6IDEwMHB4OworfQorPC9zdHlsZT4KKzwvaGVh
ZD4KKzxib2R5PgorICA8IS0tIFRoZSBmb2N1cyByaW5nIHBhcnRzIGZvciB0aGUgc3ViLWxheWVy
cyBzaG91bGQgYmUgYXQgY29ycmVjdCBwb3NpdGlvbiwKKyAgICAgICByZWdhcmRsZXNzIHdoZXRo
ZXIgdGhlIGlubmVyIGxheWVyIGlzIGNvbXBvc2l0ZWQuIC0tPgorICA8ZGl2IGNsYXNzPSJjb21w
b3NpdGVkIG91dGVyIj4KKyAgICA8ZGl2IGNsYXNzPSJvdXRsaW5lZCI+CisgICAgICA8ZGl2IGNs
YXNzPSJjb21wb3NpdGVkIGlubmVyIj48L2Rpdj4KKyAgICA8L2Rpdj4KKyAgPC9kaXY+Cis8L2Jv
ZHk+Cis8L2h0bWw+CisK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190764</attachid>
            <date>2013-02-28 11:28:30 -0800</date>
            <delta_ts>2013-02-28 12:40:19 -0800</delta_ts>
            <desc>Rebased. For landing</desc>
            <filename>bug-110895-20130228112443.patch</filename>
            <type>text/plain</type>
            <size>39983</size>
            <attacher name="Xianzhu Wang">wangxianzhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0MzMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDdlMGEwMzE4NTYyMWE0
OTc4MDlmNjA0ZDVkYjkyM2U0MmMxOWNlNC4uZmE3MmVkZjE5Mzc5NTMyMzVkZWY3NTljODAyMmYy
YTYyZjFjNWZmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEzLTAyLTI3ICBYaWFu
emh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRm9jdXMgcmlu
ZyBmb3IgYSBjaGlsZCBsYXllciBpcyBpbmNvcnJlY3RseSBvZmZzZXQgYnkgYW5jZXN0b3IgY29t
cG9zaXRlZCBsYXllcidzIHBvc2l0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTA4OTUKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFz
ZXIuCisKKyAgICAgICAgVGVzdDogY29tcG9zaXRpbmcvc3ViLWxheWVyLWZvY3VzLXJpbmcuaHRt
bAorCisgICAgICAgIFRoZSBwcm9ibGVtIG9jY3VycyBpbiBSZW5kZXJCbG9jazo6YWRkRm9jdXNS
aW5nUmVjdHMoKSB3aGVyZSB0aGUgYWJzb2x1dGUgcG9zaXRpb24gb2YgYSBzdWItbGF5ZXIgaXMg
dXNlZCB0byBjYWxjdWxhdGUgdGhlIGZvY3VzIHJpbmcgcmVjdCBvZiB0aGUgbGF5ZXIuCisgICAg
ICAgIFNob3VsZCB1c2UgdGhlIHJlbGF0aXZlIHBvc2l0aW9uIHRvIHRoZSBjdXJyZW50IHBhaW50
Q29udGFpbmVyIGluc3RlYWQuCisKKyAgICAgICAgVG8gZml4IHRoZSBpc3N1ZToKKyAgICAgICAg
LSBSZW5kZXJMYXllciBwYXNzZXMgTGF5ZXJQYWludGluZ0luZm8ucm9vdExheWVyIHRvIFBhaW50
SW5mby5wYWludENvbnRhaW5lcgorICAgICAgICAtIExldCBSZW5kZXJPYmplY3Q6OnBhaW50Rm9j
dXNSaW5nKCkgYW5kIFJlbmRlck9iamVjdDo6cGFpbnRPdXRsaW5lKCkgdGFrZSBQYWludEluZm8g
aW5zdGVhZCBvZiBHcmFwaGljc0NvbnRleHQqIHNvIHRoYXQgdGhlIHBhaW50Q29udGFpbmVyIGNh
biBiZSBwYXNzZWQKKyAgICAgICAgLSBSZW5kZXJCbG9jazo6YWRkRm9jdXNSaW5nUmVjdHMoKSB1
c2VzIGxvY2FsVG9Db250YWluZXJQb2ludChGbG9hdFBvaW50KCksIHBhaW50Q29udGFpbmVyKSBp
bnN0ZWFkIG9mIGxvY2FsVG9BYnNvbHV0ZSgpIHRvIGNhbGN1bGF0ZSB0aGUgZm9jdXMgcmluZyBy
ZWN0IG9mIGEgc3VibGF5ZXIuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUGFpbnRJbmZvLmg6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhaW50SW5mbzo6UGFpbnRJbmZv
KTogQWRkIGEgZmllbGQgcGFpbnRDb250YWluZXIgKHRoZSBSZW5kZXJMYXllck1vZGVsT2JqZWN0
IHdoaWNoIG9yaWdpbmF0ZXMgdGhlIGN1cnJlbnQgcGFpbnRpbmcpCisgICAgICAgIChQYWludElu
Zm8pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9jazo6cGFpbnRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
QmxvY2s6OnBhaW50Q29udGludWF0aW9uT3V0bGluZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2s6OmFkZEZvY3VzUmluZ1JlY3RzKTogVXNlIHRoZSBhZGRlZCBwYWludENvbnRhaW5l
ciBwYXJhbWV0ZXIgdG8gY2FsY3VsYXRlIHRoZSByZWxhdGl2ZSBvZmZzZXQgb2YgdGhlIGNoaWxk
IGxheWVyLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRCYWNrZ3JvdW5kRm9yRnJhZ21lbnRzKTogUGFzcyBM
YXllclBhaW50aW5nSW5mby5yb290TGF5ZXIgdG8gUGFpbnRJbmZvLnBhaW50Q29udGFpbmVyLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50Rm9yZWdyb3VuZEZvckZyYWdtZW50
c1dpdGhQaGFzZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50
T3V0bGluZUZvckZyYWdtZW50cyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXI6OnBhaW50TWFza0ZvckZyYWdtZW50cyk6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnBhaW50Rm9jdXNSaW5nKTogTm93IHRha2Vz
IFBhaW50SW5mbyBpbnN0ZWFkIG9mIEdyYXBoaWNzQ29udGV4dCouIFBhc3MgcGFpbnRJbmZvLnBh
aW50Q29udGFpbmVyIHRvIGFkZEZvY3VzUmluZ1JlY3RzKCkuCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJPYmplY3Q6OnBhaW50T3V0bGluZSk6IE5vdyB0YWtlcyBQYWludEluZm8gaW5zdGVhZCBv
ZiBHcmFwaGljc0NvbnRleHQqLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjphYnNv
bHV0ZUZvY3VzUmluZ1F1YWRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmFkZEZvY3VzUmluZ1JlY3RzKTogQWRk
IHBhaW50Q29udGFpbmVyIHBhcmFtZXRlci4KKwogMjAxMy0wMi0yOCAgRGF2aWQgR3JvZ2FuICA8
ZGdyb2dhbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSW5kZXhlZERCOiBIaXN0b2dyYW0gYWxs
IGV4aXRzIGZyb20gSURCQmFja2luZ1N0b3JlOjpvcGVuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUGFpbnRJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFp
bnRJbmZvLmgKaW5kZXggYzUxYjdmZTU1NTE1ZjliMDFkY2IyYWY3YTczOTllZjZhYWNiMjZiMS4u
ODIwOWVhYTViNTA3NDk0MzdhZGI4MDg5MDk0NjdmOWE1ZmNhNmVmZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50SW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9QYWludEluZm8uaApAQCAtNDIsNiArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIE92ZXJsYXBUZXN0UmVxdWVzdENsaWVudDsKIGNsYXNzIFJlbmRlcklubGluZTsK
K2NsYXNzIFJlbmRlckxheWVyTW9kZWxPYmplY3Q7CiBjbGFzcyBSZW5kZXJPYmplY3Q7CiBjbGFz
cyBSZW5kZXJSZWdpb247CiAKQEAgLTUzLDggKzU0LDggQEAgdHlwZWRlZiBIYXNoTWFwPE92ZXJs
YXBUZXN0UmVxdWVzdENsaWVudCosIEludFJlY3Q+IE92ZXJsYXBUZXN0UmVxdWVzdE1hcDsKICAq
Lwogc3RydWN0IFBhaW50SW5mbyB7CiAgICAgUGFpbnRJbmZvKEdyYXBoaWNzQ29udGV4dCogbmV3
Q29udGV4dCwgY29uc3QgSW50UmVjdCYgbmV3UmVjdCwgUGFpbnRQaGFzZSBuZXdQaGFzZSwgUGFp
bnRCZWhhdmlvciBuZXdQYWludEJlaGF2aW9yLAotICAgICAgICAgICAgICBSZW5kZXJPYmplY3Qq
IG5ld1BhaW50aW5nUm9vdCA9IDAsIFJlbmRlclJlZ2lvbiogcmVnaW9uID0gMCwgTGlzdEhhc2hT
ZXQ8UmVuZGVySW5saW5lKj4qIG5ld091dGxpbmVPYmplY3RzID0gMCwKLSAgICAgICAgICAgICAg
T3ZlcmxhcFRlc3RSZXF1ZXN0TWFwKiBvdmVybGFwVGVzdFJlcXVlc3RzID0gMCkKKyAgICAgICAg
UmVuZGVyT2JqZWN0KiBuZXdQYWludGluZ1Jvb3QgPSAwLCBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9
IDAsIExpc3RIYXNoU2V0PFJlbmRlcklubGluZSo+KiBuZXdPdXRsaW5lT2JqZWN0cyA9IDAsCisg
ICAgICAgIE92ZXJsYXBUZXN0UmVxdWVzdE1hcCogb3ZlcmxhcFRlc3RSZXF1ZXN0cyA9IDAsIGNv
bnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIG5ld1BhaW50Q29udGFpbmVyID0gMCkKICAgICAg
ICAgOiBjb250ZXh0KG5ld0NvbnRleHQpCiAgICAgICAgICwgcmVjdChuZXdSZWN0KQogICAgICAg
ICAsIHBoYXNlKG5ld1BoYXNlKQpAQCAtNjMsNiArNjQsNyBAQCBzdHJ1Y3QgUGFpbnRJbmZvIHsK
ICAgICAgICAgLCByZW5kZXJSZWdpb24ocmVnaW9uKQogICAgICAgICAsIG91dGxpbmVPYmplY3Rz
KG5ld091dGxpbmVPYmplY3RzKQogICAgICAgICAsIG92ZXJsYXBUZXN0UmVxdWVzdHMob3Zlcmxh
cFRlc3RSZXF1ZXN0cykKKyAgICAgICAgLCBwYWludENvbnRhaW5lcihuZXdQYWludENvbnRhaW5l
cikKICAgICB7CiAgICAgfQogCkBAIC0xMTQsNiArMTE2LDcgQEAgc3RydWN0IFBhaW50SW5mbyB7
CiAgICAgUmVuZGVyUmVnaW9uKiByZW5kZXJSZWdpb247CiAgICAgTGlzdEhhc2hTZXQ8UmVuZGVy
SW5saW5lKj4qIG91dGxpbmVPYmplY3RzOyAvLyB1c2VkIHRvIGxpc3Qgb3V0bGluZXMgdGhhdCBz
aG91bGQgYmUgcGFpbnRlZCBieSBhIGJsb2NrIHdpdGggaW5saW5lIGNoaWxkcmVuCiAgICAgT3Zl
cmxhcFRlc3RSZXF1ZXN0TWFwKiBvdmVybGFwVGVzdFJlcXVlc3RzOworICAgIGNvbnN0IFJlbmRl
ckxheWVyTW9kZWxPYmplY3QqIHBhaW50Q29udGFpbmVyOyAvLyB0aGUgbGF5ZXIgb2JqZWN0IHRo
YXQgb3JpZ2luYXRlcyB0aGUgY3VycmVudCBwYWludGluZwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggZDdh
MjM0YWFiZGM0ZWRlM2ZiOGJmY2VkYmY3Zjg4MjMwYmFhYjczZi4uODE0NWI0OGM1NTk0OGU3Zjcw
MGMyY2I4Yzk2ZjM0MzFiYTc4OTdkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2suY3BwCkBAIC0zMTU2LDcgKzMxNTYsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpwYWludE9i
amVjdChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmcwog
CiAgICAgLy8gNS4gcGFpbnQgb3V0bGluZS4KICAgICBpZiAoKHBhaW50UGhhc2UgPT0gUGFpbnRQ
aGFzZU91dGxpbmUgfHwgcGFpbnRQaGFzZSA9PSBQYWludFBoYXNlU2VsZk91dGxpbmUpICYmIGhh
c091dGxpbmUoKSAmJiBzdHlsZSgpLT52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSkKLSAgICAgICAg
cGFpbnRPdXRsaW5lKHBhaW50SW5mby5jb250ZXh0LCBMYXlvdXRSZWN0KHBhaW50T2Zmc2V0LCBz
aXplKCkpKTsKKyAgICAgICAgcGFpbnRPdXRsaW5lKHBhaW50SW5mbywgTGF5b3V0UmVjdChwYWlu
dE9mZnNldCwgc2l6ZSgpKSk7CiAKICAgICAvLyA2LiBwYWludCBjb250aW51YXRpb24gb3V0bGlu
ZXMuCiAgICAgaWYgKChwYWludFBoYXNlID09IFBhaW50UGhhc2VPdXRsaW5lIHx8IHBhaW50UGhh
c2UgPT0gUGFpbnRQaGFzZUNoaWxkT3V0bGluZXMpKSB7CkBAIC0zMTc5LDcgKzMxNzksNyBAQCB2
b2lkIFJlbmRlckJsb2NrOjpwYWludE9iamVjdChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmIHBhaW50T2ZmcwogICAgICAgICAgICAgaWYgKCFpbmxpbmVFbmNsb3NlZElu
U2VsZlBhaW50aW5nTGF5ZXIgJiYgIWhhc0xheWVyKCkpCiAgICAgICAgICAgICAgICAgY2ItPmFk
ZENvbnRpbnVhdGlvbldpdGhPdXRsaW5lKGlubGluZVJlbmRlcmVyKTsKICAgICAgICAgICAgIGVs
c2UgaWYgKCFpbmxpbmVSZW5kZXJlci0+Zmlyc3RMaW5lQm94KCkgfHwgKCFpbmxpbmVFbmNsb3Nl
ZEluU2VsZlBhaW50aW5nTGF5ZXIgJiYgaGFzTGF5ZXIoKSkpCi0gICAgICAgICAgICAgICAgaW5s
aW5lUmVuZGVyZXItPnBhaW50T3V0bGluZShwYWludEluZm8uY29udGV4dCwgcGFpbnRPZmZzZXQg
LSBsb2NhdGlvbk9mZnNldCgpICsgaW5saW5lUmVuZGVyZXItPmNvbnRhaW5pbmdCbG9jaygpLT5s
b2NhdGlvbigpKTsKKyAgICAgICAgICAgICAgICBpbmxpbmVSZW5kZXJlci0+cGFpbnRPdXRsaW5l
KHBhaW50SW5mbywgcGFpbnRPZmZzZXQgLSBsb2NhdGlvbk9mZnNldCgpICsgaW5saW5lUmVuZGVy
ZXItPmNvbnRhaW5pbmdCbG9jaygpLT5sb2NhdGlvbigpKTsKICAgICAgICAgfQogICAgICAgICBw
YWludENvbnRpbnVhdGlvbk91dGxpbmVzKHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOwogICAgIH0K
QEAgLTMzMDcsNyArMzMwNyw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnBhaW50Q29udGludWF0aW9u
T3V0bGluZXMoUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRQb2ludCYKICAgICAgICAgZm9y
ICggOyBibG9jayAmJiBibG9jayAhPSB0aGlzOyBibG9jayA9IGJsb2NrLT5jb250YWluaW5nQmxv
Y2soKSkKICAgICAgICAgICAgIGFjY3VtdWxhdGVkUGFpbnRPZmZzZXQubW92ZUJ5KGJsb2NrLT5s
b2NhdGlvbigpKTsKICAgICAgICAgQVNTRVJUKGJsb2NrKTsgICAKLSAgICAgICAgZmxvdy0+cGFp
bnRPdXRsaW5lKGluZm8uY29udGV4dCwgYWNjdW11bGF0ZWRQYWludE9mZnNldCk7CisgICAgICAg
IGZsb3ctPnBhaW50T3V0bGluZShpbmZvLCBhY2N1bXVsYXRlZFBhaW50T2Zmc2V0KTsKICAgICB9
CiB9CiAKQEAgLTcxMTIsNyArNzExMiw3IEBAIExheW91dFJlY3QgUmVuZGVyQmxvY2s6OmxvY2Fs
Q2FyZXRSZWN0KElubGluZUJveCogaW5saW5lQm94LCBpbnQgY2FyZXRPZmZzZXQsIExhCiAgICAg
cmV0dXJuIGNhcmV0UmVjdDsKIH0KIAotdm9pZCBSZW5kZXJCbG9jazo6YWRkRm9jdXNSaW5nUmVj
dHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0aW9uYWxP
ZmZzZXQpCit2b2lkIFJlbmRlckJsb2NrOjphZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8SW50UmVj
dD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYWRkaXRpb25hbE9mZnNldCwgY29uc3QgUmVu
ZGVyTGF5ZXJNb2RlbE9iamVjdCogcGFpbnRDb250YWluZXIpCiB7CiAgICAgLy8gRm9yIGJsb2Nr
cyBpbnNpZGUgaW5saW5lcywgd2UgZ28gYWhlYWQgYW5kIGluY2x1ZGUgbWFyZ2lucyBzbyB0aGF0
IHdlIHJ1biByaWdodCB1cCB0byB0aGUKICAgICAvLyBpbmxpbmUgYm94ZXMgYWJvdmUgYW5kIGJl
bG93IHVzICh0aHVzIGdldHRpbmcgbWVyZ2VkIHdpdGggdGhlbSB0byBmb3JtIGEgc2luZ2xlIGly
cmVndWxhcgpAQCAtNzE0NywxNiArNzE0NywxNiBAQCB2b2lkIFJlbmRlckJsb2NrOjphZGRGb2N1
c1JpbmdSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYQog
ICAgICAgICAgICAgICAgIEZsb2F0UG9pbnQgcG9zOwogICAgICAgICAgICAgICAgIC8vIEZJWE1F
OiBUaGlzIGRvZXNuJ3Qgd29yayBjb3JyZWN0bHkgd2l0aCB0cmFuc2Zvcm1zLgogICAgICAgICAg
ICAgICAgIGlmIChib3gtPmxheWVyKCkpIAotICAgICAgICAgICAgICAgICAgICBwb3MgPSBjdXJy
LT5sb2NhbFRvQWJzb2x1dGUoKTsKKyAgICAgICAgICAgICAgICAgICAgcG9zID0gY3Vyci0+bG9j
YWxUb0NvbnRhaW5lclBvaW50KEZsb2F0UG9pbnQoKSwgcGFpbnRDb250YWluZXIpOwogICAgICAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgcG9zID0gRmxvYXRQb2ludChhZGRp
dGlvbmFsT2Zmc2V0LngoKSArIGJveC0+eCgpLCBhZGRpdGlvbmFsT2Zmc2V0LnkoKSArIGJveC0+
eSgpKTsKLSAgICAgICAgICAgICAgICBib3gtPmFkZEZvY3VzUmluZ1JlY3RzKHJlY3RzLCBmbG9v
cmVkTGF5b3V0UG9pbnQocG9zKSk7CisgICAgICAgICAgICAgICAgYm94LT5hZGRGb2N1c1JpbmdS
ZWN0cyhyZWN0cywgZmxvb3JlZExheW91dFBvaW50KHBvcyksIHBhaW50Q29udGFpbmVyKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChpbmxpbmVFbGVtZW50Q29u
dGludWF0aW9uKCkpCi0gICAgICAgIGlubGluZUVsZW1lbnRDb250aW51YXRpb24oKS0+YWRkRm9j
dXNSaW5nUmVjdHMocmVjdHMsIGZsb29yZWRMYXlvdXRQb2ludChhZGRpdGlvbmFsT2Zmc2V0ICsg
aW5saW5lRWxlbWVudENvbnRpbnVhdGlvbigpLT5jb250YWluaW5nQmxvY2soKS0+bG9jYXRpb24o
KSAtIGxvY2F0aW9uKCkpKTsKKyAgICAgICAgaW5saW5lRWxlbWVudENvbnRpbnVhdGlvbigpLT5h
ZGRGb2N1c1JpbmdSZWN0cyhyZWN0cywgZmxvb3JlZExheW91dFBvaW50KGFkZGl0aW9uYWxPZmZz
ZXQgKyBpbmxpbmVFbGVtZW50Q29udGludWF0aW9uKCktPmNvbnRhaW5pbmdCbG9jaygpLT5sb2Nh
dGlvbigpIC0gbG9jYXRpb24oKSksIHBhaW50Q29udGFpbmVyKTsKIH0KIAogUmVuZGVyQm94KiBS
ZW5kZXJCbG9jazo6Y3JlYXRlQW5vbnltb3VzQm94V2l0aFNhbWVUeXBlQXMoY29uc3QgUmVuZGVy
T2JqZWN0KiBwYXJlbnQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5o
CmluZGV4IGJiMjkwMWU2YzY4MzYxODNmZTRhYzAyNTBmNmEwYjAzNTNkZWQxODkuLjdhZjE1M2Vk
ZTE1OTU5MDlkZDMyZjhkNjE5MGI1YTIxNzQ0YmZmNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5oCkBAIC01MzUsNyArNTM1LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQg
YWRkT3ZlcmZsb3dGcm9tSW5saW5lQ2hpbGRyZW4oKTsKICAgICB2b2lkIGFkZFZpc3VhbE92ZXJm
bG93RnJvbVRoZW1lKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkRm9jdXNSaW5nUmVjdHMoVmVj
dG9yPEludFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRk
Rm9jdXNSaW5nUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0
aW9uYWxPZmZzZXQsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHBhaW50Q29udGFpbmVy
ID0gMCkgT1ZFUlJJREU7CiAKICNpZiBFTkFCTEUoU1ZHKQogICAgIC8vIE9ubHkgdXNlZCBieSBS
ZW5kZXJTVkdUZXh0LCB3aGljaCBleHBsaWNpdGVseSBvdmVycmlkZXMgUmVuZGVyQmxvY2s6Omxh
eW91dEJsb2NrKCksIGRvIE5PVCB1c2UgZm9yIGFueXRoaW5nIGVsc2UuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IGY2ODUzNTk2ZjAzZmQyM2NiYTRkY2Q4YmEyMjlk
MDU2MDhiMmE5NzIuLmU3Yzk1Y2I3MzI2ODY3NjFiZTk0NzE1YmU2NmI0MDY0N2M0OTg5NDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC01NDEsNyArNTQxLDcgQEAg
TGF5b3V0UmVjdCBSZW5kZXJCb3g6Om91dGxpbmVCb3VuZHNGb3JSZXBhaW50KGNvbnN0IFJlbmRl
ckxheWVyTW9kZWxPYmplY3QqIHJlcGEKICAgICByZXR1cm4gYm94OwogfQogCi12b2lkIFJlbmRl
ckJveDo6YWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgY29uc3QgTGF5
b3V0UG9pbnQmIGFkZGl0aW9uYWxPZmZzZXQpCit2b2lkIFJlbmRlckJveDo6YWRkRm9jdXNSaW5n
UmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0aW9u
YWxPZmZzZXQsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqKQogewogICAgIGlmICghc2l6
ZSgpLmlzRW1wdHkoKSkKICAgICAgICAgcmVjdHMuYXBwZW5kKHBpeGVsU25hcHBlZEludFJlY3Qo
YWRkaXRpb25hbE9mZnNldCwgc2l6ZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmgKaW5kZXggODYxMzY3OGFhMTQ5ZjBlMWUyMGUwNDM1Yzk3YWU5OGIyMmMyOGYxMC4uNzI1ZmRj
N2M0ZjkxNGM1NTA2MWNjYjY1NzM4MTJlNGEzMDk1ZThhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guaApAQCAtMTYyLDcgKzE2Miw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEJvdW5k
cyBvZiB0aGUgb3V0bGluZSBib3ggaW4gYWJzb2x1dGUgY29vcmRzLiBSZXNwZWN0cyB0cmFuc2Zv
cm1zCiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IG91dGxpbmVCb3VuZHNGb3JSZXBhaW50KGNvbnN0
IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIC8qcmVwYWludENvbnRhaW5lciovLCBjb25zdCBSZW5k
ZXJHZW9tZXRyeU1hcCopIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBhZGRGb2N1
c1JpbmdSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYpOworICAgIHZp
cnR1YWwgdm9pZCBhZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBMYXlv
dXRQb2ludCYgYWRkaXRpb25hbE9mZnNldCwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCog
cGFpbnRDb250YWluZXIgPSAwKSBPVkVSUklERTsKIAogICAgIC8vIFVzZSB0aGlzIHdpdGggY2F1
dGlvbiEgTm8gdHlwZSBjaGVja2luZyBpcyBkb25lIQogICAgIFJlbmRlckJveCogcHJldmlvdXNT
aWJsaW5nQm94KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW5saW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUu
Y3BwCmluZGV4IGViMTMwYzg1OTYwN2VkODkxNjZjMjBhZDc5MmJjNmY4MDM1MTU1NjQuLjg4Zjgx
OWZiYTY3MjQ5ZGNhMmUxMzk0YTA0MTFkYjM0MzI4YmYyOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCkBAIC0xMzY1LDcgKzEzNjUsNyBAQCB2b2lkIFJlbmRl
cklubGluZTo6aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciwgY29uc3QgSW50UmVjdCopCiAg
ICAgcmVwYWludCgpOwogfQogCi12b2lkIFJlbmRlcklubGluZTo6YWRkRm9jdXNSaW5nUmVjdHMo
VmVjdG9yPEludFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0aW9uYWxPZmZz
ZXQpCit2b2lkIFJlbmRlcklubGluZTo6YWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPEludFJlY3Q+
JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0aW9uYWxPZmZzZXQsIGNvbnN0IFJlbmRl
ckxheWVyTW9kZWxPYmplY3QqIHBhaW50Q29udGFpbmVyKQogewogICAgIEFic29sdXRlUmVjdHNH
ZW5lcmF0b3JDb250ZXh0IGNvbnRleHQocmVjdHMsIGFkZGl0aW9uYWxPZmZzZXQpOwogICAgIGdl
bmVyYXRlTGluZUJveFJlY3RzKGNvbnRleHQpOwpAQCAtMTM3NSwyMiArMTM3NSwyMiBAQCB2b2lk
IFJlbmRlcklubGluZTo6YWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywg
Y29uc3QgTGF5b3V0UG9pbnQmCiAgICAgICAgICAgICBGbG9hdFBvaW50IHBvcyhhZGRpdGlvbmFs
T2Zmc2V0KTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGRvZXNuJ3Qgd29yayBjb3JyZWN0
bHkgd2l0aCB0cmFuc2Zvcm1zLgogICAgICAgICAgICAgaWYgKGN1cnItPmhhc0xheWVyKCkpIAot
ICAgICAgICAgICAgICAgIHBvcyA9IGN1cnItPmxvY2FsVG9BYnNvbHV0ZSgpOworICAgICAgICAg
ICAgICAgIHBvcyA9IGN1cnItPmxvY2FsVG9Db250YWluZXJQb2ludChGbG9hdFBvaW50KCksIHBh
aW50Q29udGFpbmVyKTsKICAgICAgICAgICAgIGVsc2UgaWYgKGN1cnItPmlzQm94KCkpCiAgICAg
ICAgICAgICAgICAgcG9zLm1vdmUodG9SZW5kZXJCb3goY3VyciktPmxvY2F0aW9uT2Zmc2V0KCkp
OwotICAgICAgICAgICAgY3Vyci0+YWRkRm9jdXNSaW5nUmVjdHMocmVjdHMsIGZsb29yZWRJbnRQ
b2ludChwb3MpKTsKKyAgICAgICAgICAgIGN1cnItPmFkZEZvY3VzUmluZ1JlY3RzKHJlY3RzLCBm
bG9vcmVkSW50UG9pbnQocG9zKSwgcGFpbnRDb250YWluZXIpOwogICAgICAgICB9CiAgICAgfQog
CiAgICAgaWYgKGNvbnRpbnVhdGlvbigpKSB7CiAgICAgICAgIGlmIChjb250aW51YXRpb24oKS0+
aXNJbmxpbmUoKSkKLSAgICAgICAgICAgIGNvbnRpbnVhdGlvbigpLT5hZGRGb2N1c1JpbmdSZWN0
cyhyZWN0cywgZmxvb3JlZExheW91dFBvaW50KGFkZGl0aW9uYWxPZmZzZXQgKyBjb250aW51YXRp
b24oKS0+Y29udGFpbmluZ0Jsb2NrKCktPmxvY2F0aW9uKCkgLSBjb250YWluaW5nQmxvY2soKS0+
bG9jYXRpb24oKSkpOworICAgICAgICAgICAgY29udGludWF0aW9uKCktPmFkZEZvY3VzUmluZ1Jl
Y3RzKHJlY3RzLCBmbG9vcmVkTGF5b3V0UG9pbnQoYWRkaXRpb25hbE9mZnNldCArIGNvbnRpbnVh
dGlvbigpLT5jb250YWluaW5nQmxvY2soKS0+bG9jYXRpb24oKSAtIGNvbnRhaW5pbmdCbG9jaygp
LT5sb2NhdGlvbigpKSwgcGFpbnRDb250YWluZXIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBjb250aW51YXRpb24oKS0+YWRkRm9jdXNSaW5nUmVjdHMocmVjdHMsIGZsb29yZWRMYXlvdXRQ
b2ludChhZGRpdGlvbmFsT2Zmc2V0ICsgdG9SZW5kZXJCb3goY29udGludWF0aW9uKCkpLT5sb2Nh
dGlvbigpIC0gY29udGFpbmluZ0Jsb2NrKCktPmxvY2F0aW9uKCkpKTsKKyAgICAgICAgICAgIGNv
bnRpbnVhdGlvbigpLT5hZGRGb2N1c1JpbmdSZWN0cyhyZWN0cywgZmxvb3JlZExheW91dFBvaW50
KGFkZGl0aW9uYWxPZmZzZXQgKyB0b1JlbmRlckJveChjb250aW51YXRpb24oKSktPmxvY2F0aW9u
KCkgLSBjb250YWluaW5nQmxvY2soKS0+bG9jYXRpb24oKSksIHBhaW50Q29udGFpbmVyKTsKICAg
ICB9CiB9CiAKLXZvaWQgUmVuZGVySW5saW5lOjpwYWludE91dGxpbmUoR3JhcGhpY3NDb250ZXh0
KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKK3ZvaWQg
UmVuZGVySW5saW5lOjpwYWludE91dGxpbmUoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExh
eW91dFBvaW50JiBwYWludE9mZnNldCkKIHsKICAgICBpZiAoIWhhc091dGxpbmUoKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTM5OSwxMCArMTM5OSwxMSBAQCB2b2lkIFJlbmRlcklubGluZTo6cGFp
bnRPdXRsaW5lKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBMYXlvdXRQ
bwogICAgIGlmIChzdHlsZVRvVXNlLT5vdXRsaW5lU3R5bGVJc0F1dG8oKSB8fCBoYXNPdXRsaW5l
QW5ub3RhdGlvbigpKSB7CiAgICAgICAgIGlmICghdGhlbWUoKS0+c3VwcG9ydHNGb2N1c1Jpbmco
c3R5bGVUb1VzZSkpIHsKICAgICAgICAgICAgIC8vIE9ubHkgcGFpbnQgdGhlIGZvY3VzIHJpbmcg
YnkgaGFuZCBpZiB0aGUgdGhlbWUgaXNuJ3QgYWJsZSB0byBkcmF3IHRoZSBmb2N1cyByaW5nLgot
ICAgICAgICAgICAgcGFpbnRGb2N1c1JpbmcoZ3JhcGhpY3NDb250ZXh0LCBwYWludE9mZnNldCwg
c3R5bGVUb1VzZSk7CisgICAgICAgICAgICBwYWludEZvY3VzUmluZyhwYWludEluZm8sIHBhaW50
T2Zmc2V0LCBzdHlsZVRvVXNlKTsKICAgICAgICAgfQogICAgIH0KIAorICAgIEdyYXBoaWNzQ29u
dGV4dCogZ3JhcGhpY3NDb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQ7CiAgICAgaWYgKGdyYXBo
aWNzQ29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAppbmRleCAzOTYyMGI2NWEyZmQ4ZjdmYzhm
ZmIwMWFkYmZlMjE3OGRlODM0YmQ5Li5iNTRhYWE4OGVlMDZkMWY1N2NkMmJkZWRmOGQ5NzllZWUy
MjliNDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5l
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCkBAIC04MSw4
ICs4MSw4IEBAIHB1YmxpYzoKICAgICAKICAgICBMYXlvdXRTaXplIG9mZnNldEZvckluRmxvd1Bv
c2l0aW9uZWRJbmxpbmUoY29uc3QgUmVuZGVyQm94KiBjaGlsZCkgY29uc3Q7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgYWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3QgTGF5b3V0
UG9pbnQmKTsKLSAgICB2b2lkIHBhaW50T3V0bGluZShHcmFwaGljc0NvbnRleHQqLCBjb25zdCBM
YXlvdXRQb2ludCYpOworICAgIHZpcnR1YWwgdm9pZCBhZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8
SW50UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWRkaXRpb25hbE9mZnNldCwgY29uc3QgUmVu
ZGVyTGF5ZXJNb2RlbE9iamVjdCogcGFpbnRDb250YWluZXIgPSAwKSBPVkVSUklERTsKKyAgICB2
b2lkIHBhaW50T3V0bGluZShQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwogCiAgICAg
dXNpbmcgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNvbnRpbnVhdGlvbjsKICAgICB1c2luZyBSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6c2V0Q29udGludWF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAKaW5kZXggNDMyMjhkYjY1NTdiOGIzOTE2ZTYzNGFkYWRhZjZhMmMx
Yjg4OTUyMC4uMzZjODU1ZWQzM2M1MDhmNDY3ZjhmOTVmODUwMGRhZTQyNjhjODQzMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC00MDI3LDcgKzQwMjcsNyBA
QCB2b2lkIFJlbmRlckxheWVyOjpwYWludEJhY2tncm91bmRGb3JGcmFnbWVudHMoY29uc3QgTGF5
ZXJGcmFnbWVudHMmIGxheWVyRnJhZ21lbgogICAgICAgICAKICAgICAgICAgLy8gUGFpbnQgdGhl
IGJhY2tncm91bmQuCiAgICAgICAgIC8vIEZJWE1FOiBFdmVudHVhbGx5IHdlIHdpbGwgY29sbGVj
dCB0aGUgcmVnaW9uIGZyb20gdGhlIGZyYWdtZW50IGl0c2VsZiBpbnN0ZWFkIG9mIGp1c3QgZnJv
bSB0aGUgcGFpbnQgaW5mby4KLSAgICAgICAgUGFpbnRJbmZvIHBhaW50SW5mbyhjb250ZXh0LCBw
aXhlbFNuYXBwZWRJbnRSZWN0KGZyYWdtZW50LmJhY2tncm91bmRSZWN0LnJlY3QoKSksIFBhaW50
UGhhc2VCbG9ja0JhY2tncm91bmQsIHBhaW50QmVoYXZpb3IsIHBhaW50aW5nUm9vdEZvclJlbmRl
cmVyLCBsb2NhbFBhaW50aW5nSW5mby5yZWdpb24pOworICAgICAgICBQYWludEluZm8gcGFpbnRJ
bmZvKGNvbnRleHQsIHBpeGVsU25hcHBlZEludFJlY3QoZnJhZ21lbnQuYmFja2dyb3VuZFJlY3Qu
cmVjdCgpKSwgUGFpbnRQaGFzZUJsb2NrQmFja2dyb3VuZCwgcGFpbnRCZWhhdmlvciwgcGFpbnRp
bmdSb290Rm9yUmVuZGVyZXIsIGxvY2FsUGFpbnRpbmdJbmZvLnJlZ2lvbiwgMCwgMCwgbG9jYWxQ
YWludGluZ0luZm8ucm9vdExheWVyLT5yZW5kZXJlcigpKTsKICAgICAgICAgcmVuZGVyZXIoKS0+
cGFpbnQocGFpbnRJbmZvLCB0b1BvaW50KGZyYWdtZW50LmxheWVyQm91bmRzLmxvY2F0aW9uKCkg
LSByZW5kZXJCb3hMb2NhdGlvbigpICsgbG9jYWxQYWludGluZ0luZm8uc3ViUGl4ZWxBY2N1bXVs
YXRpb24pKTsKIAogICAgICAgICBpZiAobG9jYWxQYWludGluZ0luZm8uY2xpcFRvRGlydHlSZWN0
KQpAQCAtNDA4NSw3ICs0MDg1LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRGb3JlZ3JvdW5k
Rm9yRnJhZ21lbnRzV2l0aFBoYXNlKFBhaW50UGhhc2UgcGhhc2UsIGNvbnN0IEwKICAgICAgICAg
aWYgKHNob3VsZENsaXApCiAgICAgICAgICAgICBjbGlwVG9SZWN0KGxvY2FsUGFpbnRpbmdJbmZv
LnJvb3RMYXllciwgY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8ucGFpbnREaXJ0eVJlY3QsIGZy
YWdtZW50LmZvcmVncm91bmRSZWN0KTsKICAgICAKLSAgICAgICAgUGFpbnRJbmZvIHBhaW50SW5m
byhjb250ZXh0LCBwaXhlbFNuYXBwZWRJbnRSZWN0KGZyYWdtZW50LmZvcmVncm91bmRSZWN0LnJl
Y3QoKSksIHBoYXNlLCBwYWludEJlaGF2aW9yLCBwYWludGluZ1Jvb3RGb3JSZW5kZXJlciwgbG9j
YWxQYWludGluZ0luZm8ucmVnaW9uKTsKKyAgICAgICAgUGFpbnRJbmZvIHBhaW50SW5mbyhjb250
ZXh0LCBwaXhlbFNuYXBwZWRJbnRSZWN0KGZyYWdtZW50LmZvcmVncm91bmRSZWN0LnJlY3QoKSks
IHBoYXNlLCBwYWludEJlaGF2aW9yLCBwYWludGluZ1Jvb3RGb3JSZW5kZXJlciwgbG9jYWxQYWlu
dGluZ0luZm8ucmVnaW9uLCAwLCAwLCBsb2NhbFBhaW50aW5nSW5mby5yb290TGF5ZXItPnJlbmRl
cmVyKCkpOwogICAgICAgICBpZiAocGhhc2UgPT0gUGFpbnRQaGFzZUZvcmVncm91bmQpCiAgICAg
ICAgICAgICBwYWludEluZm8ub3ZlcmxhcFRlc3RSZXF1ZXN0cyA9IGxvY2FsUGFpbnRpbmdJbmZv
Lm92ZXJsYXBUZXN0UmVxdWVzdHM7CiAgICAgICAgIHJlbmRlcmVyKCktPnBhaW50KHBhaW50SW5m
bywgdG9Qb2ludChmcmFnbWVudC5sYXllckJvdW5kcy5sb2NhdGlvbigpIC0gcmVuZGVyQm94TG9j
YXRpb24oKSArIGxvY2FsUGFpbnRpbmdJbmZvLnN1YlBpeGVsQWNjdW11bGF0aW9uKSk7CkBAIC00
MTA0LDcgKzQxMDQsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludE91dGxpbmVGb3JGcmFnbWVu
dHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmIGxheWVyRnJhZ21lbnRzLAogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgCiAgICAgICAgIC8vIFBhaW50IG91ciBvd24gb3V0bGluZQotICAgICAgICBQ
YWludEluZm8gcGFpbnRJbmZvKGNvbnRleHQsIHBpeGVsU25hcHBlZEludFJlY3QoZnJhZ21lbnQu
b3V0bGluZVJlY3QucmVjdCgpKSwgUGFpbnRQaGFzZVNlbGZPdXRsaW5lLCBwYWludEJlaGF2aW9y
LCBwYWludGluZ1Jvb3RGb3JSZW5kZXJlciwgbG9jYWxQYWludGluZ0luZm8ucmVnaW9uKTsKKyAg
ICAgICAgUGFpbnRJbmZvIHBhaW50SW5mbyhjb250ZXh0LCBwaXhlbFNuYXBwZWRJbnRSZWN0KGZy
YWdtZW50Lm91dGxpbmVSZWN0LnJlY3QoKSksIFBhaW50UGhhc2VTZWxmT3V0bGluZSwgcGFpbnRC
ZWhhdmlvciwgcGFpbnRpbmdSb290Rm9yUmVuZGVyZXIsIGxvY2FsUGFpbnRpbmdJbmZvLnJlZ2lv
biwgMCwgMCwgbG9jYWxQYWludGluZ0luZm8ucm9vdExheWVyLT5yZW5kZXJlcigpKTsKICAgICAg
ICAgY2xpcFRvUmVjdChsb2NhbFBhaW50aW5nSW5mby5yb290TGF5ZXIsIGNvbnRleHQsIGxvY2Fs
UGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0LCBmcmFnbWVudC5vdXRsaW5lUmVjdCwgRG9Ob3RJ
bmNsdWRlU2VsZkZvckJvcmRlclJhZGl1cyk7CiAgICAgICAgIHJlbmRlcmVyKCktPnBhaW50KHBh
aW50SW5mbywgdG9Qb2ludChmcmFnbWVudC5sYXllckJvdW5kcy5sb2NhdGlvbigpIC0gcmVuZGVy
Qm94TG9jYXRpb24oKSArIGxvY2FsUGFpbnRpbmdJbmZvLnN1YlBpeGVsQWNjdW11bGF0aW9uKSk7
CiAgICAgICAgIHJlc3RvcmVDbGlwKGNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLnBhaW50RGly
dHlSZWN0LCBmcmFnbWVudC5vdXRsaW5lUmVjdCk7CkBAIC00MTI0LDcgKzQxMjQsNyBAQCB2b2lk
IFJlbmRlckxheWVyOjpwYWludE1hc2tGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMm
IGxheWVyRnJhZ21lbnRzLCBHcgogICAgICAgICAKICAgICAgICAgLy8gUGFpbnQgdGhlIG1hc2su
CiAgICAgICAgIC8vIEZJWE1FOiBFdmVudHVhbGx5IHdlIHdpbGwgY29sbGVjdCB0aGUgcmVnaW9u
IGZyb20gdGhlIGZyYWdtZW50IGl0c2VsZiBpbnN0ZWFkIG9mIGp1c3QgZnJvbSB0aGUgcGFpbnQg
aW5mby4KLSAgICAgICAgUGFpbnRJbmZvIHBhaW50SW5mbyhjb250ZXh0LCBwaXhlbFNuYXBwZWRJ
bnRSZWN0KGZyYWdtZW50LmJhY2tncm91bmRSZWN0LnJlY3QoKSksIFBhaW50UGhhc2VNYXNrLCBQ
YWludEJlaGF2aW9yTm9ybWFsLCBwYWludGluZ1Jvb3RGb3JSZW5kZXJlciwgbG9jYWxQYWludGlu
Z0luZm8ucmVnaW9uKTsKKyAgICAgICAgUGFpbnRJbmZvIHBhaW50SW5mbyhjb250ZXh0LCBwaXhl
bFNuYXBwZWRJbnRSZWN0KGZyYWdtZW50LmJhY2tncm91bmRSZWN0LnJlY3QoKSksIFBhaW50UGhh
c2VNYXNrLCBQYWludEJlaGF2aW9yTm9ybWFsLCBwYWludGluZ1Jvb3RGb3JSZW5kZXJlciwgbG9j
YWxQYWludGluZ0luZm8ucmVnaW9uLCAwLCAwLCBsb2NhbFBhaW50aW5nSW5mby5yb290TGF5ZXIt
PnJlbmRlcmVyKCkpOwogICAgICAgICByZW5kZXJlcigpLT5wYWludChwYWludEluZm8sIHRvUG9p
bnQoZnJhZ21lbnQubGF5ZXJCb3VuZHMubG9jYXRpb24oKSAtIHJlbmRlckJveExvY2F0aW9uKCkg
KyBsb2NhbFBhaW50aW5nSW5mby5zdWJQaXhlbEFjY3VtdWxhdGlvbikpOwogICAgICAgICAKICAg
ICAgICAgaWYgKGxvY2FsUGFpbnRpbmdJbmZvLmNsaXBUb0RpcnR5UmVjdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQm94TGlzdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJveExpc3QuY3BwCmluZGV4IGViNTZkZmQxMDE1
YzE5M2RlMjNkNDI3OGY5OWM1NzAxYTQ3MWIxOTguLjdiNTYyYjQyNmE3M2M5NWVkY2I1NDQ5YmQw
NzNkMDhhNzMwODk2ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaW5lQm94TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxp
bmVCb3hMaXN0LmNwcApAQCAtMjY3LDcgKzI2Nyw3IEBAIHZvaWQgUmVuZGVyTGluZUJveExpc3Q6
OnBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZW5kZXJlciwgUGFpbnRJbmZvJiBwYWludElu
CiAgICAgICAgIExpc3RIYXNoU2V0PFJlbmRlcklubGluZSo+OjppdGVyYXRvciBlbmQgPSBpbmZv
Lm91dGxpbmVPYmplY3RzLT5lbmQoKTsKICAgICAgICAgZm9yIChMaXN0SGFzaFNldDxSZW5kZXJJ
bmxpbmUqPjo6aXRlcmF0b3IgaXQgPSBpbmZvLm91dGxpbmVPYmplY3RzLT5iZWdpbigpOyBpdCAh
PSBlbmQ7ICsraXQpIHsKICAgICAgICAgICAgIFJlbmRlcklubGluZSogZmxvdyA9ICppdDsKLSAg
ICAgICAgICAgIGZsb3ctPnBhaW50T3V0bGluZShpbmZvLmNvbnRleHQsIHBhaW50T2Zmc2V0KTsK
KyAgICAgICAgICAgIGZsb3ctPnBhaW50T3V0bGluZShpbmZvLCBwYWludE9mZnNldCk7CiAgICAg
ICAgIH0KICAgICAgICAgaW5mby5vdXRsaW5lT2JqZWN0cy0+Y2xlYXIoKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKaW5kZXggNTFmOGU0NjRjYWY1
MGUzZjMwZTZiZjg2NmNhNmI2NmZhYWYyYTEwMi4uZjQ1ZmRhM2JhYjIxYTMxMjI0OGZhYTU2YjVj
ZTc2MDZhYWY0MmVhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxpc3RCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94
LmNwcApAQCAtMzI3LDEwICszMjcsMTAgQEAgdm9pZCBSZW5kZXJMaXN0Qm94OjpwYWludE9iamVj
dChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2YKICAgICB9
CiB9CiAKLXZvaWQgUmVuZGVyTGlzdEJveDo6YWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPEludFJl
Y3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0aW9uYWxPZmZzZXQpCit2b2lkIFJl
bmRlckxpc3RCb3g6OmFkZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGNv
bnN0IExheW91dFBvaW50JiBhZGRpdGlvbmFsT2Zmc2V0LCBjb25zdCBSZW5kZXJMYXllck1vZGVs
T2JqZWN0KiBwYWludENvbnRhaW5lcikKIHsKICAgICBpZiAoIWlzU3BhdGlhbE5hdmlnYXRpb25F
bmFibGVkKGZyYW1lKCkpKQotICAgICAgICByZXR1cm4gUmVuZGVyQmxvY2s6OmFkZEZvY3VzUmlu
Z1JlY3RzKHJlY3RzLCBhZGRpdGlvbmFsT2Zmc2V0KTsKKyAgICAgICAgcmV0dXJuIFJlbmRlckJs
b2NrOjphZGRGb2N1c1JpbmdSZWN0cyhyZWN0cywgYWRkaXRpb25hbE9mZnNldCwgcGFpbnRDb250
YWluZXIpOwogCiAgICAgSFRNTFNlbGVjdEVsZW1lbnQqIHNlbGVjdCA9IHNlbGVjdEVsZW1lbnQo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3gu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmgKaW5kZXggNDdhN2Ez
ZDE0MDkzM2VkNTdiZTVlMDgxZjUyYTU4OWIyN2Q4MThlMS4uNmVhN2MzYjUxMzM0Mjg4YWE4NGRj
NjMyYzk1NzUxN2MzNzEwN2U2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxpc3RCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlz
dEJveC5oCkBAIC04Miw3ICs4Miw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgbGF5
b3V0KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPEludFJl
Y3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkRm9jdXNSaW5n
UmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0aW9uYWxPZmZz
ZXQsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHBhaW50Q29udGFpbmVyID0gMCkgT1ZF
UlJJREU7CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuQmVQcm9ncmFtYXRpY2FsbHlTY3JvbGxlZCgp
IGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgYXV0b3Njcm9sbChjb25z
dCBJbnRQb2ludCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApp
bmRleCA1MzA5YTIyZmM4YWU4OTY2YmU0YjcwOGQ2ZmUxN2E0YjgyMmQ1MWQ3Li5hZWZkYjQ2NjI1
MTYwOTkyZGQ4MzcwODRiZjNlMzljNDc3ZDFiMjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTA5MCwxNCArMTA5MCwxNCBAQCB2b2lkIFJlbmRlck9i
amVjdDo6ZHJhd0xpbmVGb3JCb3hTaWRlKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0
LCBpbnQgeDEsCiAgICAgfQogfQogCi12b2lkIFJlbmRlck9iamVjdDo6cGFpbnRGb2N1c1Jpbmco
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQs
IFJlbmRlclN0eWxlKiBzdHlsZSkKK3ZvaWQgUmVuZGVyT2JqZWN0OjpwYWludEZvY3VzUmluZyhQ
YWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBSZW5k
ZXJTdHlsZSogc3R5bGUpCiB7CiAgICAgVmVjdG9yPEludFJlY3Q+IGZvY3VzUmluZ1JlY3RzOwot
ICAgIGFkZEZvY3VzUmluZ1JlY3RzKGZvY3VzUmluZ1JlY3RzLCBwYWludE9mZnNldCk7CisgICAg
YWRkRm9jdXNSaW5nUmVjdHMoZm9jdXNSaW5nUmVjdHMsIHBhaW50T2Zmc2V0LCBwYWludEluZm8u
cGFpbnRDb250YWluZXIpOwogICAgIGlmIChzdHlsZS0+b3V0bGluZVN0eWxlSXNBdXRvKCkpCi0g
ICAgICAgIGNvbnRleHQtPmRyYXdGb2N1c1JpbmcoZm9jdXNSaW5nUmVjdHMsIHN0eWxlLT5vdXRs
aW5lV2lkdGgoKSwgc3R5bGUtPm91dGxpbmVPZmZzZXQoKSwgc3R5bGUtPnZpc2l0ZWREZXBlbmRl
bnRDb2xvcihDU1NQcm9wZXJ0eU91dGxpbmVDb2xvcikpOworICAgICAgICBwYWludEluZm8uY29u
dGV4dC0+ZHJhd0ZvY3VzUmluZyhmb2N1c1JpbmdSZWN0cywgc3R5bGUtPm91dGxpbmVXaWR0aCgp
LCBzdHlsZS0+b3V0bGluZU9mZnNldCgpLCBzdHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENT
U1Byb3BlcnR5T3V0bGluZUNvbG9yKSk7CiAgICAgZWxzZQotICAgICAgICBhZGRQREZVUkxSZWN0
KGNvbnRleHQsIHVuaW9uUmVjdChmb2N1c1JpbmdSZWN0cykpOworICAgICAgICBhZGRQREZVUkxS
ZWN0KHBhaW50SW5mby5jb250ZXh0LCB1bmlvblJlY3QoZm9jdXNSaW5nUmVjdHMpKTsKIH0KIAog
dm9pZCBSZW5kZXJPYmplY3Q6OmFkZFBERlVSTFJlY3QoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBMYXlvdXRSZWN0JiByZWN0KQpAQCAtMTExMywyMyArMTExMywyMCBAQCB2b2lkIFJl
bmRlck9iamVjdDo6YWRkUERGVVJMUmVjdChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IExheW91dFJlY3QmIHJlYwogICAgIGNvbnRleHQtPnNldFVSTEZvclJlY3Qobi0+ZG9jdW1lbnQo
KS0+Y29tcGxldGVVUkwoaHJlZiksIHBpeGVsU25hcHBlZEludFJlY3QocmVjdCkpOwogfQogCi12
b2lkIFJlbmRlck9iamVjdDo6cGFpbnRPdXRsaW5lKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3ND
b250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiBwYWludFJlY3QpCit2b2lkIFJlbmRlck9iamVjdDo6
cGFpbnRPdXRsaW5lKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRSZWN0JiBwYWlu
dFJlY3QpCiB7CiAgICAgaWYgKCFoYXNPdXRsaW5lKCkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IFJlbmRlclN0eWxlKiBzdHlsZVRvVXNlID0gc3R5bGUoKTsKICAgICBMYXlvdXRVbml0IG91dGxp
bmVXaWR0aCA9IHN0eWxlVG9Vc2UtPm91dGxpbmVXaWR0aCgpOwotICAgIEVCb3JkZXJTdHlsZSBv
dXRsaW5lU3R5bGUgPSBzdHlsZVRvVXNlLT5vdXRsaW5lU3R5bGUoKTsKLQotICAgIENvbG9yIG91
dGxpbmVDb2xvciA9IHN0eWxlVG9Vc2UtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0
eU91dGxpbmVDb2xvcik7CiAKICAgICBpbnQgb3V0bGluZU9mZnNldCA9IHN0eWxlVG9Vc2UtPm91
dGxpbmVPZmZzZXQoKTsKIAogICAgIGlmIChzdHlsZVRvVXNlLT5vdXRsaW5lU3R5bGVJc0F1dG8o
KSB8fCBoYXNPdXRsaW5lQW5ub3RhdGlvbigpKSB7CiAgICAgICAgIGlmICghdGhlbWUoKS0+c3Vw
cG9ydHNGb2N1c1Jpbmcoc3R5bGVUb1VzZSkpIHsKICAgICAgICAgICAgIC8vIE9ubHkgcGFpbnQg
dGhlIGZvY3VzIHJpbmcgYnkgaGFuZCBpZiB0aGUgdGhlbWUgaXNuJ3QgYWJsZSB0byBkcmF3IHRo
ZSBmb2N1cyByaW5nLgotICAgICAgICAgICAgcGFpbnRGb2N1c1JpbmcoZ3JhcGhpY3NDb250ZXh0
LCBwYWludFJlY3QubG9jYXRpb24oKSwgc3R5bGVUb1VzZSk7CisgICAgICAgICAgICBwYWludEZv
Y3VzUmluZyhwYWludEluZm8sIHBhaW50UmVjdC5sb2NhdGlvbigpLCBzdHlsZVRvVXNlKTsKICAg
ICAgICAgfQogICAgIH0KIApAQCAtMTE0Niw2ICsxMTQzLDEwIEBAIHZvaWQgUmVuZGVyT2JqZWN0
OjpwYWludE91dGxpbmUoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IExh
eW91dFJlCiAgICAgaWYgKG91dGVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAg
RUJvcmRlclN0eWxlIG91dGxpbmVTdHlsZSA9IHN0eWxlVG9Vc2UtPm91dGxpbmVTdHlsZSgpOwor
ICAgIENvbG9yIG91dGxpbmVDb2xvciA9IHN0eWxlVG9Vc2UtPnZpc2l0ZWREZXBlbmRlbnRDb2xv
cihDU1NQcm9wZXJ0eU91dGxpbmVDb2xvcik7CisKKyAgICBHcmFwaGljc0NvbnRleHQqIGdyYXBo
aWNzQ29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0OwogICAgIGJvb2wgdXNlVHJhbnNwYXJlbmN5
TGF5ZXIgPSBvdXRsaW5lQ29sb3IuaGFzQWxwaGEoKTsKICAgICBpZiAodXNlVHJhbnNwYXJlbmN5
TGF5ZXIpIHsKICAgICAgICAgaWYgKG91dGxpbmVTdHlsZSA9PSBTT0xJRCkgewpAQCAtMTIxOCw3
ICsxMjE5LDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmFic29sdXRlRm9jdXNSaW5nUXVhZHMoVmVj
dG9yPEZsb2F0UXVhZD4mIHF1YWRzKQogICAgIC8vIGRlc2NlbmRhbnRzLgogICAgIEZsb2F0UG9p
bnQgYWJzb2x1dGVQb2ludCA9IGxvY2FsVG9BYnNvbHV0ZSgpOwogICAgIGFkZEZvY3VzUmluZ1Jl
Y3RzKHJlY3RzLCBmbG9vcmVkTGF5b3V0UG9pbnQoYWJzb2x1dGVQb2ludCkpOwotICAgIHNpemVf
dCBjb3VudCA9IHJlY3RzLnNpemUoKTsgCisgICAgc2l6ZV90IGNvdW50ID0gcmVjdHMuc2l6ZSgp
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICBJbnRS
ZWN0IHJlY3QgPSByZWN0c1tpXTsKICAgICAgICAgcmVjdC5tb3ZlKC1hYnNvbHV0ZVBvaW50Lngo
KSwgLWFic29sdXRlUG9pbnQueSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuaAppbmRleCAxYzc1MzIzYTIxNWVjZjU4Mzk0ZTlkNGQ1ZDkxYTEwOTBhNDVlODMwLi42OTll
Y2NhMjQxMDAzNTFmYmE4ODI4NDgwOGY0NmY5NmNmNzBlNmEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC05NjMsNyArOTYzLDcgQEAgcHVibGljOgogICAgIC8v
IHJldHVybiB0cnVlIGlmIHRoaXMgb2JqZWN0IHJlcXVpcmVzIGEgbmV3IHN0YWNraW5nIGNvbnRl
eHQKICAgICBib29sIGNyZWF0ZXNHcm91cCgpIGNvbnN0IHsgcmV0dXJuIGlzVHJhbnNwYXJlbnQo
KSB8fCBoYXNNYXNrKCkgfHwgaGFzRmlsdGVyKCkgfHwgaGFzQmxlbmRNb2RlKCk7IH0gCiAgICAg
Ci0gICAgdmlydHVhbCB2b2lkIGFkZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNv
bnN0IExheW91dFBvaW50JikgeyB9OworICAgIHZpcnR1YWwgdm9pZCBhZGRGb2N1c1JpbmdSZWN0
cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgLyogYWRkaXRpb25hbE9mZnNl
dCAqLywgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogLyogcGFpbnRDb250YWluZXIgKi8g
PSAwKSB7IH07CiAKICAgICBMYXlvdXRSZWN0IGFic29sdXRlT3V0bGluZUJvdW5kcygpIGNvbnN0
CiAgICAgewpAQCAtOTg3LDggKzk4Nyw4IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGRyYXdMaW5l
Rm9yQm94U2lkZShHcmFwaGljc0NvbnRleHQqLCBpbnQgeDEsIGludCB5MSwgaW50IHgyLCBpbnQg
eTIsIEJveFNpZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sb3IsIEVCb3JkZXJT
dHlsZSwgaW50IGFkamJ3MSwgaW50IGFkamJ3MiwgYm9vbCBhbnRpYWxpYXMgPSBmYWxzZSk7CiAK
LSAgICB2b2lkIHBhaW50Rm9jdXNSaW5nKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheW91dFBv
aW50JiwgUmVuZGVyU3R5bGUqKTsKLSAgICB2b2lkIHBhaW50T3V0bGluZShHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBMYXlvdXRSZWN0Jik7CisgICAgdm9pZCBwYWludEZvY3VzUmluZyhQYWludElu
Zm8mLCBjb25zdCBMYXlvdXRQb2ludCYsIFJlbmRlclN0eWxlKik7CisgICAgdm9pZCBwYWludE91
dGxpbmUoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UmVjdCYpOwogICAgIHZvaWQgYWRkUERGVVJM
UmVjdChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXlvdXRSZWN0Jik7CiAgICAgCiAgICAgdmly
dHVhbCBMYXlvdXRSZWN0IHZpZXdSZWN0KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJlcGxhY2VkLmNwcAppbmRleCAzYmU5MWJiZjc5OTkzMzFlYjEzYTViM2Q1YmQ1
ZDIwOGZlY2IxYzcxLi4xMTk5ZjBlYzkyZDcwZWIwMjkwNzc3M2Q1NmVmODZhYzI1ZDQ0YTZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKQEAgLTEyMyw3
ICsxMjMsNyBAQCB2b2lkIFJlbmRlclJlcGxhY2VkOjpwYWludChQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogCiAgICAgTGF5b3V0UmVjdCBwYWlu
dFJlY3QgPSBMYXlvdXRSZWN0KGFkanVzdGVkUGFpbnRPZmZzZXQsIHNpemUoKSk7CiAgICAgaWYg
KChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZU91dGxpbmUgfHwgcGFpbnRJbmZvLnBoYXNl
ID09IFBhaW50UGhhc2VTZWxmT3V0bGluZSkgJiYgc3R5bGUoKS0+b3V0bGluZVdpZHRoKCkpCi0g
ICAgICAgIHBhaW50T3V0bGluZShwYWludEluZm8uY29udGV4dCwgcGFpbnRSZWN0KTsKKyAgICAg
ICAgcGFpbnRPdXRsaW5lKHBhaW50SW5mbywgcGFpbnRSZWN0KTsKICAgICAKICAgICBpZiAocGFp
bnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kICYmIHBhaW50SW5mby5waGFzZSAh
PSBQYWludFBoYXNlU2VsZWN0aW9uICYmICFjYW5IYXZlQ2hpbGRyZW4oKSkKICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKaW5kZXggMTI4YzBl
MjVkMGY2ODQ4NWIzM2EyMzk5NDFmZDVlMTYwNmI3ZTliYS4uMjFjY2Q5M2FmNjcyNGVmOTJjODRi
Nzg3MjU5MzAxN2M4YzlkZGRmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGUuY3BwCkBAIC02NjQsNyArNjY0LDcgQEAgdm9pZCBSZW5kZXJUYWJsZTo6cGFpbnRPYmplY3Qo
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnMKIAogICAg
IC8vIFBhaW50IG91dGxpbmUuCiAgICAgaWYgKChwYWludFBoYXNlID09IFBhaW50UGhhc2VPdXRs
aW5lIHx8IHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZVNlbGZPdXRsaW5lKSAmJiBoYXNPdXRsaW5l
KCkgJiYgc3R5bGUoKS0+dmlzaWJpbGl0eSgpID09IFZJU0lCTEUpCi0gICAgICAgIHBhaW50T3V0
bGluZShwYWludEluZm8uY29udGV4dCwgTGF5b3V0UmVjdChwYWludE9mZnNldCwgc2l6ZSgpKSk7
CisgICAgICAgIHBhaW50T3V0bGluZShwYWludEluZm8sIExheW91dFJlY3QocGFpbnRPZmZzZXQs
IHNpemUoKSkpOwogfQogCiB2b2lkIFJlbmRlclRhYmxlOjpzdWJ0cmFjdENhcHRpb25SZWN0KExh
eW91dFJlY3QmIHJlY3QpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGVSb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRh
YmxlUm93LmNwcAppbmRleCAyNWNjNmRjOTkwMDYyZWY5ZGIxYTQ3ODM5MzNhZGY0N2RlN2U2M2Ex
Li45M2MzODRjY2RkNzEyNjE5MGIwODI2ZWFlNWMwZThlZWRlMjNiN2U5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5jcHAKQEAgLTIzOCw3ICsyMzgsNyBAQCB2
b2lkIFJlbmRlclRhYmxlUm93OjpwYWludE91dGxpbmVGb3JSb3dJZk5lZWRlZChQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgTGF5bwogICAgIExheW91dFBvaW50IGFkanVzdGVkUGFpbnRPZmZz
ZXQgPSBwYWludE9mZnNldCArIGxvY2F0aW9uKCk7CiAgICAgUGFpbnRQaGFzZSBwYWludFBoYXNl
ID0gcGFpbnRJbmZvLnBoYXNlOwogICAgIGlmICgocGFpbnRQaGFzZSA9PSBQYWludFBoYXNlT3V0
bGluZSB8fCBwYWludFBoYXNlID09IFBhaW50UGhhc2VTZWxmT3V0bGluZSkgJiYgc3R5bGUoKS0+
dmlzaWJpbGl0eSgpID09IFZJU0lCTEUpCi0gICAgICAgIHBhaW50T3V0bGluZShwYWludEluZm8u
Y29udGV4dCwgTGF5b3V0UmVjdChhZGp1c3RlZFBhaW50T2Zmc2V0LCBzaXplKCkpKTsKKyAgICAg
ICAgcGFpbnRPdXRsaW5lKHBhaW50SW5mbywgTGF5b3V0UmVjdChhZGp1c3RlZFBhaW50T2Zmc2V0
LCBzaXplKCkpKTsKIH0KIAogdm9pZCBSZW5kZXJUYWJsZVJvdzo6cGFpbnQoUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKaW5kZXggOGIzZDczYjI5YzBj
ODUzYzBlMmM4ZjBiNzY1MDA1NWE4MTI0NTRlNi4uNDZlN2Y1NzRiMjZmNGI3NjMyOWM2NmIwNDVm
OTYxNDljNTYwNmU0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlU2VjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRh
YmxlU2VjdGlvbi5jcHAKQEAgLTkxNyw3ICs5MTcsNyBAQCB2b2lkIFJlbmRlclRhYmxlU2VjdGlv
bjo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9m
ZgogICAgICAgICBwb3BDb250ZW50c0NsaXAocGFpbnRJbmZvLCBwaGFzZSwgYWRqdXN0ZWRQYWlu
dE9mZnNldCk7CiAKICAgICBpZiAoKHBoYXNlID09IFBhaW50UGhhc2VPdXRsaW5lIHx8IHBoYXNl
ID09IFBhaW50UGhhc2VTZWxmT3V0bGluZSkgJiYgc3R5bGUoKS0+dmlzaWJpbGl0eSgpID09IFZJ
U0lCTEUpCi0gICAgICAgIHBhaW50T3V0bGluZShwYWludEluZm8uY29udGV4dCwgTGF5b3V0UmVj
dChhZGp1c3RlZFBhaW50T2Zmc2V0LCBzaXplKCkpKTsKKyAgICAgICAgcGFpbnRPdXRsaW5lKHBh
aW50SW5mbywgTGF5b3V0UmVjdChhZGp1c3RlZFBhaW50T2Zmc2V0LCBzaXplKCkpKTsKIH0KIAog
c3RhdGljIGlubGluZSBib29sIGNvbXBhcmVDZWxsUG9zaXRpb25zKFJlbmRlclRhYmxlQ2VsbCog
ZWxlbTEsIFJlbmRlclRhYmxlQ2VsbCogZWxlbTIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRleHRDb250cm9sLmNwcAppbmRleCBjN2M1NzY4OTYwYmY4NGFiNDNjZDUyMWVj
MDY3ZjQ5MWQ1ZjA1ZDA0Li5mYzBlN2Q0ZmRlZWFhMmNiYTk2YTg4MTY0ZjliZWVjODk1NmJlOWY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAK
QEAgLTI5Myw3ICsyOTMsNyBAQCB2b2lkIFJlbmRlclRleHRDb250cm9sOjpjb21wdXRlUHJlZmVy
cmVkTG9naWNhbFdpZHRocygpCiAgICAgc2V0UHJlZmVycmVkTG9naWNhbFdpZHRoc0RpcnR5KGZh
bHNlKTsKIH0KIAotdm9pZCBSZW5kZXJUZXh0Q29udHJvbDo6YWRkRm9jdXNSaW5nUmVjdHMoVmVj
dG9yPEludFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0aW9uYWxPZmZzZXQp
Cit2b2lkIFJlbmRlclRleHRDb250cm9sOjphZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8SW50UmVj
dD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYWRkaXRpb25hbE9mZnNldCwgY29uc3QgUmVu
ZGVyTGF5ZXJNb2RlbE9iamVjdCopCiB7CiAgICAgaWYgKCFzaXplKCkuaXNFbXB0eSgpKQogICAg
ICAgICByZWN0cy5hcHBlbmQocGl4ZWxTbmFwcGVkSW50UmVjdChhZGRpdGlvbmFsT2Zmc2V0LCBz
aXplKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
Q29udHJvbC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgK
aW5kZXggZjFmNTkyZTVjYzAyYjZhYjhjNjNkNmIzZjI0MmVkODA0YzNmYzRjZS4uN2E4OTNmYTEx
MzcyNTAzZTQyZTdjYjllZDZiMTliNDZmYjQ4MzljMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIGJvb2wgY2FuSGF2ZUdlbmVyYXRlZENoaWxkcmVuKCkgY29uc3QgT1ZFUlJJREUg
eyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgY2FuQmVSZXBsYWNlZFdpdGhJbmxp
bmVSdW5JbigpIGNvbnN0IE9WRVJSSURFOwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBhZGRGb2N1
c1JpbmdSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYpOworICAgIHZp
cnR1YWwgdm9pZCBhZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBMYXlv
dXRQb2ludCYgYWRkaXRpb25hbE9mZnNldCwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCog
cGFpbnRDb250YWluZXIgPSAwKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgYm9vbCBjYW5CZVBy
b2dyYW1hdGljYWxseVNjcm9sbGVkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCmluZGV4IGM4ZGM1ZGE5M2M5ODVkNjAx
MzE4ZGJiOTA0YTlmODkxYzQxNjBmMTIuLmMyMGZiYmIwN2FiYzkyM2NjYjQwNjNkODZiZjhhZjUw
ZTk3MjI1NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRn
ZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCkBA
IC0yODcsNyArMjg3LDcgQEAgdm9pZCBSZW5kZXJXaWRnZXQ6OnBhaW50KFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiAgICAgfQogCiAgICAgaWYg
KChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZU91dGxpbmUgfHwgcGFpbnRJbmZvLnBoYXNl
ID09IFBhaW50UGhhc2VTZWxmT3V0bGluZSkgJiYgaGFzT3V0bGluZSgpKQotICAgICAgICBwYWlu
dE91dGxpbmUocGFpbnRJbmZvLmNvbnRleHQsIExheW91dFJlY3QoYWRqdXN0ZWRQYWludE9mZnNl
dCwgc2l6ZSgpKSk7CisgICAgICAgIHBhaW50T3V0bGluZShwYWludEluZm8sIExheW91dFJlY3Qo
YWRqdXN0ZWRQYWludE9mZnNldCwgc2l6ZSgpKSk7CiAKICAgICBpZiAoIW1fZnJhbWVWaWV3IHx8
IHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZCkKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250
YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWlu
ZXIuY3BwCmluZGV4IDUwNjlmNDFhYTgzNzE4YjhkNmY3Njk4ZjdmYTA1NzRjYmE4ZDc0N2UuLjZm
MDM5MTA5YWQ4NjdhN2IwNmQ5YWU0MDdjYzY3ODdlYTMyMDZkMzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAKQEAgLTE1MCwx
MiArMTUwLDEyIEBAIHZvaWQgUmVuZGVyU1ZHQ29udGFpbmVyOjpwYWludChQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmKQogICAgIC8vIFdlIHNob3VsZCBpbnN0ZWFkIGRp
c2FibGUgb3VyIGNsaXAgZHVyaW5nIFBhaW50UGhhc2VPdXRsaW5lCiAgICAgaWYgKChwYWludElu
Zm8ucGhhc2UgPT0gUGFpbnRQaGFzZU91dGxpbmUgfHwgcGFpbnRJbmZvLnBoYXNlID09IFBhaW50
UGhhc2VTZWxmT3V0bGluZSkgJiYgc3R5bGUoKS0+b3V0bGluZVdpZHRoKCkgJiYgc3R5bGUoKS0+
dmlzaWJpbGl0eSgpID09IFZJU0lCTEUpIHsKICAgICAgICAgSW50UmVjdCBwYWludFJlY3RJblBh
cmVudCA9IGVuY2xvc2luZ0ludFJlY3QobG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpLm1hcFJlY3Qo
cmVwYWludFJlY3QpKTsKLSAgICAgICAgcGFpbnRPdXRsaW5lKHBhaW50SW5mby5jb250ZXh0LCBw
YWludFJlY3RJblBhcmVudCk7CisgICAgICAgIHBhaW50T3V0bGluZShwYWludEluZm8sIHBhaW50
UmVjdEluUGFyZW50KTsKICAgICB9CiB9CiAKIC8vIGFkZEZvY3VzUmluZ1JlY3RzIGlzIGNhbGxl
ZCBmcm9tIHBhaW50T3V0bGluZSBhbmQgbmVlZHMgdG8gYmUgaW4gdGhlIHNhbWUgY29vcmRpbmF0
ZXMgYXMgdGhlIHBhaW50T3VsaW5lIGNhbGwKLXZvaWQgUmVuZGVyU1ZHQ29udGFpbmVyOjphZGRG
b2N1c1JpbmdSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYp
Cit2b2lkIFJlbmRlclNWR0NvbnRhaW5lcjo6YWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPEludFJl
Y3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2Jq
ZWN0KikKIHsKICAgICBJbnRSZWN0IHBhaW50UmVjdEluUGFyZW50ID0gZW5jbG9zaW5nSW50UmVj
dChsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkubWFwUmVjdChyZXBhaW50UmVjdEluTG9jYWxDb29y
ZGluYXRlcygpKSk7CiAgICAgaWYgKCFwYWludFJlY3RJblBhcmVudC5pc0VtcHR5KCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuaAppbmRl
eCA0ZDIxYjc5NjAxZDg5ZDNlZGQwZmMzODYyNTIwM2NlN2ZmNGUyMTg5Li43MGUxZWM4ZDViOTUx
ZTY0YzliMmFiNWE5NGU4ZmI5MGE1NDQ4N2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmgKQEAgLTU5LDcgKzU5LDcgQEAgcHJvdGVj
dGVkOgogCiAgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJl
bmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlQ2hpbGQoUmVuZGVyT2JqZWN0KikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGFk
ZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50Jik7Cisg
ICAgdmlydHVhbCB2b2lkIGFkZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0
IExheW91dFBvaW50JiBhZGRpdGlvbmFsT2Zmc2V0LCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2Jq
ZWN0KiBwYWludENvbnRhaW5lciA9IDApIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBGbG9hdFJl
Y3Qgb2JqZWN0Qm91bmRpbmdCb3goKSBjb25zdCB7IHJldHVybiBtX29iamVjdEJvdW5kaW5nQm94
OyB9CiAgICAgdmlydHVhbCBGbG9hdFJlY3Qgc3Ryb2tlQm91bmRpbmdCb3goKSBjb25zdCB7IHJl
dHVybiBtX3N0cm9rZUJvdW5kaW5nQm94OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCmluZGV4IDQ1ZGI5NTRkZjQ1MmY0YTBjZDM0MzQxOGJj
ZjBhNjdjMDNjZjVkYWEuLmM5NjRjMTg5NTI4OTJiZTk5YmQxZTIxYjZkZmJiYzBjMzdlYjkzZDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3Bw
CkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBSZW5kZXJTVkdJbWFnZTo6cGFpbnQoUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JikKICAgICAgICAgfQogCiAgICAgICAgIGlm
IChkcmF3c091dGxpbmUpCi0gICAgICAgICAgICBwYWludE91dGxpbmUoY2hpbGRQYWludEluZm8u
Y29udGV4dCwgSW50UmVjdChib3VuZGluZ0JveCkpOworICAgICAgICAgICAgcGFpbnRPdXRsaW5l
KGNoaWxkUGFpbnRJbmZvLCBJbnRSZWN0KGJvdW5kaW5nQm94KSk7CiAgICAgfQogfQogCkBAIC0x
OTEsNyArMTkxLDcgQEAgdm9pZCBSZW5kZXJTVkdJbWFnZTo6aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJ
bWFnZVB0ciwgY29uc3QgSW50UmVjdCopCiAgICAgcmVwYWludCgpOwogfQogCi12b2lkIFJlbmRl
clNWR0ltYWdlOjphZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBjb25z
dCBMYXlvdXRQb2ludCYpCit2b2lkIFJlbmRlclNWR0ltYWdlOjphZGRGb2N1c1JpbmdSZWN0cyhW
ZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IFJlbmRlckxh
eWVyTW9kZWxPYmplY3QqKQogewogICAgIC8vIHRoaXMgaXMgY2FsbGVkIGZyb20gcGFpbnQoKSBh
ZnRlciB0aGUgbG9jYWxUcmFuc2Zvcm0gaGFzIGFscmVhZHkgYmVlbiBhcHBsaWVkCiAgICAgSW50
UmVjdCBjb250ZW50UmVjdCA9IGVuY2xvc2luZ0ludFJlY3QocmVwYWludFJlY3RJbkxvY2FsQ29v
cmRpbmF0ZXMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lt
YWdlLmgKaW5kZXggMjMyYWQ4Mzc3ZDA3NTQwZmYyMWY0NTlmYzI1YzBhMzg4ZWY4Zjk4NC4uOWUw
NWIwYWNmNTgyNWQxZDg2ZTNjN2UzMzliOTU1NmMzYmE5NTQyYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuaApAQCAtNjAsNyArNjAsNyBAQCBwcml2
YXRlOgogICAgIHZpcnR1YWwgRmxvYXRSZWN0IHJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVz
KCkgY29uc3QgeyByZXR1cm4gbV9yZXBhaW50Qm91bmRpbmdCb3g7IH0KICAgICB2aXJ0dWFsIEZs
b2F0UmVjdCByZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlc0V4Y2x1ZGluZ1NWR1NoYWRvdygp
IGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fcmVwYWludEJvdW5kaW5nQm94RXhjbHVkaW5nU2hh
ZG93OyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPEludFJl
Y3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkRm9jdXNSaW5n
UmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0aW9uYWxPZmZz
ZXQsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHBhaW50Q29udGFpbmVyID0gMCkgT1ZF
UlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciwg
Y29uc3QgSW50UmVjdCogPSAwKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1NoYXBlLmNwcAppbmRleCBkZGE5NzJlNmQ3YmRmNGY5YzdjMTI3YTc1Nzc1YmIx
MDc2NDFmMzFiLi4zNDI1NTEzYzk2ZDI2YmMyYTlmNGYyZmI1ZWNiMTdlMDNiN2YyNWZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcApAQCAt
Mjk3LDEzICsyOTcsMTMgQEAgdm9pZCBSZW5kZXJTVkdTaGFwZTo6cGFpbnQoUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IExheW91dFBvaW50JikKICAgICAgICAgfQogCiAgICAgICAgIGlmIChk
cmF3c091dGxpbmUpCi0gICAgICAgICAgICBwYWludE91dGxpbmUoY2hpbGRQYWludEluZm8uY29u
dGV4dCwgSW50UmVjdChib3VuZGluZ0JveCkpOworICAgICAgICAgICAgcGFpbnRPdXRsaW5lKGNo
aWxkUGFpbnRJbmZvLCBJbnRSZWN0KGJvdW5kaW5nQm94KSk7CiAgICAgfQogfQogCiAvLyBUaGlz
IG1ldGhvZCBpcyBjYWxsZWQgZnJvbSBpbnNpZGUgcGFpbnRPdXRsaW5lKCkgc2luY2Ugd2UgY2Fs
bCBwYWludE91dGxpbmUoKQogLy8gd2hpbGUgdHJhbnNmb3JtZWQgdG8gb3VyIGNvb3JkIHN5c3Rl
bSwgcmV0dXJuIGxvY2FsIGNvb3Jkcwotdm9pZCBSZW5kZXJTVkdTaGFwZTo6YWRkRm9jdXNSaW5n
UmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmKQordm9pZCBS
ZW5kZXJTVkdTaGFwZTo6YWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywg
Y29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KikKIHsKICAg
ICBJbnRSZWN0IHJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KHJlcGFpbnRSZWN0SW5Mb2NhbENvb3Jk
aW5hdGVzKCkpOwogICAgIGlmICghcmVjdC5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmgKaW5kZXggNDRhM2I0YTEwYWM3NDU5NGZhMmM0
ZDMwMDJkZmRiYmZjNTYwMDJmOS4uNDc5ZGE2NmUzMDYxNmRiZWNmZTU3NWJlOGMyMGVhMDJkZTgz
Y2Y0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdT
aGFwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUu
aApAQCAtMTE0LDcgKzExNCw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0
KCk7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50
Jik7Ci0gICAgdmlydHVhbCB2b2lkIGFkZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxJbnRSZWN0PiYs
IGNvbnN0IExheW91dFBvaW50Jik7CisgICAgdmlydHVhbCB2b2lkIGFkZEZvY3VzUmluZ1JlY3Rz
KFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhZGRpdGlvbmFsT2Zmc2V0LCBj
b25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBwYWludENvbnRhaW5lciA9IDApIE9WRVJSSURF
OwogCiAgICAgdmlydHVhbCBib29sIG5vZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVl
c3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnRJblBhcmVudCwgSGl0
VGVzdEFjdGlvbik7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1OTM4NGQzOGRiMWIzZDkzZjBiNmE1YTA2OWQ3NWEwYjNm
ODgzYjhlLi5iOGIxMDQxNzhmMWY1Yjk5MzMyODdlMjcwNTJkOTgyYTYzMDQzNzkzIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTMtMDItMjcgIFhpYW56aHUgV2FuZyAgPHdhbmd4aWFuemh1QGNo
cm9taXVtLm9yZz4KKworICAgICAgICBGb2N1cyByaW5nIGZvciBhIGNoaWxkIGxheWVyIGlzIGlu
Y29ycmVjdGx5IG9mZnNldCBieSBhbmNlc3RvciBjb21wb3NpdGVkIGxheWVyJ3MgcG9zaXRpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDg5NQor
CisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBOZXcgcmVmIHRl
c3QgZm9yIHRoZSBidWcuCisKKyAgICAgICAgKiBjb21wb3NpdGluZy9zdWItbGF5ZXItZm9jdXMt
cmluZy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9zdWItbGF5
ZXItZm9jdXMtcmluZy5odG1sOiBBZGRlZC4KKwogMjAxMy0wMi0yOCAgU3RlcGhlbiBDaGVubmV5
ICA8c2NoZW5uZXlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gTWFya2luZyBv
bmUgbW9yZSBodG1sNSB0ZXN0IGFzIHRpbWVvdXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Nv
bXBvc2l0aW5nL3N1Yi1sYXllci1mb2N1cy1yaW5nLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0
cy9jb21wb3NpdGluZy9zdWItbGF5ZXItZm9jdXMtcmluZy1leHBlY3RlZC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjdmN2RmMTU1ZWU3YTQxZjM2N2EwODVmZDI4NmRjNDZjOTk4ODlmZDEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9zdWItbGF5ZXItZm9jdXMtcmluZy1leHBl
Y3RlZC5odG1sCkBAIC0wLDAgKzEsNDAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxzdHlsZT4KKy5jb21wb3NpdGVkIHsKKyAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0
ZVooMCk7Cit9CisKKy5vdXRlciB7CisgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgd2lkdGg6IDUw
MHB4OworICBoZWlnaHQ6IDMwMHB4OworICB0b3A6IDYwcHg7CisgIGxlZnQ6IDEwMHB4OworICBi
YWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3c7Cit9CisKKy5vdXRsaW5lZCB7CisgIG91dGxpbmU6IHJl
ZCBhdXRvIHRoaW47CisgIHdpZHRoOiAxNTBweDsKKyAgaGVpZ2h0OiA1MHB4OworICBiYWNrZ3Jv
dW5kLWNvbG9yOiBsaWdodGdyZXk7Cit9CisKKy5pbm5lciB7CisgIHdpZHRoOiA4MHB4OworICBo
ZWlnaHQ6IDEwMHB4OworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICA8IS0tIFN0aWxs
IGxldCBvdXRlciBsYXllciBjb21wb3NpdGVkIHRvIGF2b2lkIHRoZSBtaW5vciBlZGdlIHBpeGVs
IGRpZmZzLiAtLT4KKyAgPGRpdiBjbGFzcz0iY29tcG9zaXRlZCBvdXRlciI+CisgICAgPGRpdiBj
bGFzcz0ib3V0bGluZWQiPgorICAgICAgPGRpdiBjbGFzcz0iaW5uZXIiPjwvZGl2PgorICAgIDwv
ZGl2PgorICA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvY29tcG9zaXRpbmcvc3ViLWxheWVyLWZvY3VzLXJpbmcuaHRtbCBiL0xheW91dFRlc3RzL2Nv
bXBvc2l0aW5nL3N1Yi1sYXllci1mb2N1cy1yaW5nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmU0MWU5MGRh
ZmU1NjFhYmFkYjY2ZjczODI4MTdkYzJkZWFhNmMxMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2NvbXBvc2l0aW5nL3N1Yi1sYXllci1mb2N1cy1yaW5nLmh0bWwKQEAgLTAsMCArMSw0
MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorLmNvbXBvc2l0
ZWQgeworICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTsKK30KKworLm91dGVyIHsK
KyAgcG9zaXRpb246IGFic29sdXRlOworICB3aWR0aDogNTAwcHg7CisgIGhlaWdodDogMzAwcHg7
CisgIHRvcDogNjBweDsKKyAgbGVmdDogMTAwcHg7CisgIGJhY2tncm91bmQtY29sb3I6IHllbGxv
dzsKK30KKworLm91dGxpbmVkIHsKKyAgb3V0bGluZTogcmVkIGF1dG8gdGhpbjsKKyAgd2lkdGg6
IDE1MHB4OworICBoZWlnaHQ6IDUwcHg7CisgIGJhY2tncm91bmQtY29sb3I6IGxpZ2h0Z3JleTsK
K30KKworLmlubmVyIHsKKyAgd2lkdGg6IDgwcHg7CisgIGhlaWdodDogMTAwcHg7Cit9Cis8L3N0
eWxlPgorPC9oZWFkPgorPGJvZHk+CisgIDwhLS0gVGhlIGZvY3VzIHJpbmcgcGFydHMgZm9yIHRo
ZSBzdWItbGF5ZXJzIHNob3VsZCBiZSBhdCBjb3JyZWN0IHBvc2l0aW9uLAorICAgICAgIHJlZ2Fy
ZGxlc3Mgd2hldGhlciB0aGUgaW5uZXIgbGF5ZXIgaXMgY29tcG9zaXRlZC4gLS0+CisgIDxkaXYg
Y2xhc3M9ImNvbXBvc2l0ZWQgb3V0ZXIiPgorICAgIDxkaXYgY2xhc3M9Im91dGxpbmVkIj4KKyAg
ICAgIDxkaXYgY2xhc3M9ImNvbXBvc2l0ZWQgaW5uZXIiPjwvZGl2PgorICAgIDwvZGl2PgorICA8
L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KKwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>