<?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>91878</bug_id>
          
          <creation_ts>2012-07-20 10:17:58 -0700</creation_ts>
          <short_desc>[CSS Exclusions] Enable shape-inside for multiple-segment polygons</short_desc>
          <delta_ts>2012-12-05 12:18:31 -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>CSS</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>
          <dependson>100039</dependson>
          <blocked>89256</blocked>
    
    <blocked>89707</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Bear Travis">betravis</reporter>
          <assigned_to name="Bear Travis">betravis</assigned_to>
          <cc>achicu</cc>
    
    <cc>dglazkov</cc>
    
    <cc>donggwan.kim</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>ojan</cc>
    
    <cc>peter+ews</cc>
    
    <cc>philn</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>674680</commentid>
    <comment_count>0</comment_count>
    <who name="Bear Travis">betravis</who>
    <bug_when>2012-07-20 10:17:58 -0700</bug_when>
    <thetext>Add support for shape-insides that have multiple segments per line (eg, an &quot;H&quot; shaped polygon)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748130</commentid>
    <comment_count>1</comment_count>
      <attachid>170038</attachid>
    <who name="Bear Travis">betravis</who>
    <bug_when>2012-10-22 17:45:44 -0700</bug_when>
    <thetext>Created attachment 170038
Initial Patch

Uploading a patch for critique on the general approach. It still needs additional testing, and will not work completely until bug 100039 is fixed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748136</commentid>
    <comment_count>2</comment_count>
      <attachid>170038</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-10-22 17:52:32 -0700</bug_when>
    <thetext>Comment on attachment 170038
Initial Patch

Attachment 170038 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/14505235</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748139</commentid>
    <comment_count>3</comment_count>
      <attachid>170038</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-10-22 17:56:56 -0700</bug_when>
    <thetext>Comment on attachment 170038
Initial Patch

Attachment 170038 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14481779</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748140</commentid>
    <comment_count>4</comment_count>
      <attachid>170038</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-22 17:57:53 -0700</bug_when>
    <thetext>Comment on attachment 170038
Initial Patch

Attachment 170038 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14489733</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748149</commentid>
    <comment_count>5</comment_count>
      <attachid>170038</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-22 18:11:43 -0700</bug_when>
    <thetext>Comment on attachment 170038
Initial Patch

Attachment 170038 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14484731</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748158</commentid>
    <comment_count>6</comment_count>
      <attachid>170038</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-22 18:25:35 -0700</bug_when>
    <thetext>Comment on attachment 170038
Initial Patch

Attachment 170038 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14492695</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748166</commentid>
    <comment_count>7</comment_count>
      <attachid>170038</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-10-22 18:46:58 -0700</bug_when>
    <thetext>Comment on attachment 170038
Initial Patch

Attachment 170038 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/14505249</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748167</commentid>
    <comment_count>8</comment_count>
      <attachid>170038</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-10-22 18:47:59 -0700</bug_when>
    <thetext>Comment on attachment 170038
Initial Patch

Attachment 170038 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14489744</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749160</commentid>
    <comment_count>9</comment_count>
      <attachid>170278</attachid>
    <who name="Bear Travis">betravis</who>
    <bug_when>2012-10-23 17:35:56 -0700</bug_when>
    <thetext>Created attachment 170278
Updating patch

Fixing build issues and problems with the other shape-inside tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749771</commentid>
    <comment_count>10</comment_count>
      <attachid>170278</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-24 10:16:35 -0700</bug_when>
    <thetext>Comment on attachment 170278
Updating patch

Attachment 170278 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14564242</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749969</commentid>
    <comment_count>11</comment_count>
      <attachid>170278</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-24 13:17:28 -0700</bug_when>
    <thetext>Comment on attachment 170278
Updating patch

Attachment 170278 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14569294

New failing tests:
fast/exclusions/shape-inside/shape-inside-multiple-segments-001.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750163</commentid>
    <comment_count>12</comment_count>
      <attachid>170278</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-10-24 16:08:41 -0700</bug_when>
    <thetext>Comment on attachment 170278
Updating patch

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

Looks good! In general I think you can add more comments in the code to explain the magic around multi-line segment splitting. I understand the code now, but I&apos;m not sure we will remember all the decisions we made in a couple of months from now.

I think we will need a bit more code/testing around. Maybe in different patches.
1. The hyphenation on multi-segments. 
2. Modes of alignments: left, right, center, justify

&gt; Source/WebCore/rendering/ExclusionShapeInsideInfo.h:91
&gt; +    SegmentRangeList&amp; segmentRanges()
&gt; +    {
&gt; +        return m_segmentRanges;
&gt; +    }

nit: You can keep this on a single line.

&gt; Source/WebCore/rendering/RenderBlockLineLayout.cpp:91
&gt;          // FIXME: Bug 91878: Add support for multiple segments, currently we only support one

I think you can remove the fixme.

&gt; Source/WebCore/rendering/RenderBlockLineLayout.cpp:93
&gt; +            m_segment = &amp;exclusionShapeInsideInfo-&gt;segments()[exclusionShapeInsideInfo-&gt;segmentRanges().size()];

I would move &quot;exclusionShapeInsideInfo-&gt;segments()[exclusionShapeInsideInfo-&gt;segmentRanges().size()]&quot; to a method inside the ExclusionShapeInsideInfo.

currentSegment() const { return hasSegments() ? m_segments[m_segmentsRanges.size()] : 0; }

&gt; Source/WebCore/rendering/RenderBlockLineLayout.cpp:481
&gt; +        bool canUseExistingParentBox = parentBox &amp;&amp; !parentIsConstructedOrHaveNext(parentBox) &amp;&amp; (!startNewSegment || parentBox-&gt;isRootInlineBox());

Put the value of (!startNewSegment || parentBox-&gt;isRootInlineBox()) into a variable of its own and explain why it&apos;s needed.

&gt; Source/WebCore/rendering/RenderBlockLineLayout.cpp:579
&gt; +        if (!parentBox || parentBox-&gt;renderer() != r-&gt;m_object-&gt;parent() || r-&gt;m_startsSegment)

Add a comment explaining why the first bidirun in a segment needs to create parent boxes all the way up to the root line.

&gt; Source/WebCore/rendering/RenderBlockLineLayout.cpp:816
&gt; +        if (r-&gt;m_startsSegment)

ditto: add a comment explaining what happens with the rest of the bidiruns.

&gt; Source/WebCore/rendering/RenderBlockLineLayout.cpp:922
&gt; +            segmentStart = newSegmentStart-&gt;next();

Add a comment explaining that you jump over the &quot;barrier&quot; bidi-run.

&gt; Source/WebCore/rendering/RenderBlockLineLayout.cpp:926
&gt; +        if (lineBox-&gt;knownToHaveNoOverflow() &amp;&amp; (minLogicalLeft &lt; startLogicalLeft || maxLogicalRight &gt; endLogicalRight))
&gt; +            lineBox-&gt;clearKnownToHaveNoOverflow();

I don&apos;t know why this is needed here. It wasn&apos;t here in the original function and it is only done for exclusions.

&gt; Source/WebCore/rendering/RenderBlockLineLayout.cpp:951
&gt; +        if (r-&gt;m_startsSegment)

Add a comment explaining that the caller will call again for the rest of the bidi-runs.

&gt; Source/WebCore/rendering/RenderBlockLineLayout.cpp:1231
&gt; +            BidiRun* midPoint = createRun(segmentStart.m_pos, segmentStart.m_pos, segmentStart.m_obj, topResolver);

I think we should use a different name for this. MidPoint makes me think at the midpoints used for spacing, but this one is just a marker or barrier that we will use later to separate the bidi-runs.

&gt; Source/WebCore/rendering/RenderBlockLineLayout.cpp:1234
&gt; +            topResolver.midpointState().betweenMidpoints = false;

Add a comment about the need to reset the midpoint state. I assume that the following segment will have it&apos;s own set of midpoints and that&apos;s why we need to reset it.

&gt; Source/WebCore/rendering/RenderBlockLineLayout.cpp:2421
&gt; +            if (lineInfo.previousLineBrokeCleanly()) {

I think you need a test for this check.

&gt; LayoutTests/fast/exclusions/resources/multi-segment-polygon.js:36
&gt; +function simulateWithPolygon(width, height, points) {

Is anyone calling this method?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751163</commentid>
    <comment_count>13</comment_count>
      <attachid>170722</attachid>
    <who name="Bear Travis">betravis</who>
    <bug_when>2012-10-25 13:29:50 -0700</bug_when>
    <thetext>Created attachment 170722
Incorporating feedback

Updating patch to include Alex&apos;s feedback. Only exception is that the knownToHaveNoOverflow remains and has been factored into endPlacingBoxRangesInInlineDirection.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751171</commentid>
    <comment_count>14</comment_count>
      <attachid>170722</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-10-25 13:35:10 -0700</bug_when>
    <thetext>Comment on attachment 170722
Incorporating feedback

Attachment 170722 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/14564707</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751173</commentid>
    <comment_count>15</comment_count>
      <attachid>170722</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-10-25 13:39:28 -0700</bug_when>
    <thetext>Comment on attachment 170722
Incorporating feedback

Attachment 170722 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14562704</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751215</commentid>
    <comment_count>16</comment_count>
      <attachid>170722</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-25 14:34:36 -0700</bug_when>
    <thetext>Comment on attachment 170722
Incorporating feedback

Attachment 170722 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14555751</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751237</commentid>
    <comment_count>17</comment_count>
      <attachid>170722</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-10-25 14:56:01 -0700</bug_when>
    <thetext>Comment on attachment 170722
Incorporating feedback

Attachment 170722 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/14563728</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751309</commentid>
    <comment_count>18</comment_count>
      <attachid>170757</attachid>
    <who name="Bear Travis">betravis</who>
    <bug_when>2012-10-25 15:58:29 -0700</bug_when>
    <thetext>Created attachment 170757
Fixing inline function issues</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751437</commentid>
    <comment_count>19</comment_count>
      <attachid>170757</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-25 18:56:00 -0700</bug_when>
    <thetext>Comment on attachment 170757
Fixing inline function issues

Attachment 170757 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14569811

New failing tests:
fast/exclusions/shape-inside/shape-inside-multiple-segments-003.html
fast/exclusions/shape-inside/shape-inside-multiple-segments-002.html
fast/exclusions/shape-inside/shape-inside-multiple-segments-001.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751611</commentid>
    <comment_count>20</comment_count>
      <attachid>170757</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-25 23:52:16 -0700</bug_when>
    <thetext>Comment on attachment 170757
Fixing inline function issues

Attachment 170757 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14559941

New failing tests:
fast/exclusions/shape-inside/shape-inside-multiple-segments-003.html
fast/exclusions/shape-inside/shape-inside-multiple-segments-002.html
fast/exclusions/shape-inside/shape-inside-multiple-segments-001.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755525</commentid>
    <comment_count>21</comment_count>
      <attachid>171699</attachid>
    <who name="Bear Travis">betravis</who>
    <bug_when>2012-10-31 12:08:43 -0700</bug_when>
    <thetext>Created attachment 171699
Updating patch

Updating now that bug 100039 has landed. Small tweak in shape-inside-multiple-segments-002 to account for bug 100874</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757555</commentid>
    <comment_count>22</comment_count>
      <attachid>172132</attachid>
    <who name="Bear Travis">betravis</who>
    <bug_when>2012-11-02 13:59:48 -0700</bug_when>
    <thetext>Created attachment 172132
Including span tests

Based on feedback from dhyatt, including span tests (with some varying line heights). Also linking to bug 101086 to track text alignment issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764826</commentid>
    <comment_count>23</comment_count>
      <attachid>173725</attachid>
    <who name="Bear Travis">betravis</who>
    <bug_when>2012-11-12 14:23:09 -0800</bug_when>
    <thetext>Created attachment 173725
Merging with trunk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779245</commentid>
    <comment_count>24</comment_count>
      <attachid>173725</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2012-11-29 11:35:49 -0800</bug_when>
    <thetext>Comment on attachment 173725
Merging with trunk

r-

ifdef BidiRun please. Everything else looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779400</commentid>
    <comment_count>25</comment_count>
      <attachid>176807</attachid>
    <who name="Bear Travis">betravis</who>
    <bug_when>2012-11-29 13:35:22 -0800</bug_when>
    <thetext>Created attachment 176807
Conditionally compiling BidiRun::m_startsSegment &amp; minimizing its size

m_startsSegment should only be added when exclusions are enabled. Also moving m_startsSegment to be a bitfield on BidiCharacterRun to avoid adding an entire field.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779422</commentid>
    <comment_count>26</comment_count>
      <attachid>176815</attachid>
    <who name="Bear Travis">betravis</who>
    <bug_when>2012-11-29 14:11:53 -0800</bug_when>
    <thetext>Created attachment 176815
Fixing compile guard bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781897</commentid>
    <comment_count>27</comment_count>
      <attachid>176815</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-12-03 14:42:25 -0800</bug_when>
    <thetext>Comment on attachment 176815
Fixing compile guard bug

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

&gt; Source/WebCore/ChangeLog:32
&gt; +        (WebCore):

Those lines should be removed as they don&apos;t add anything.

&gt; Source/WebCore/ChangeLog:54
&gt; +        * rendering/RenderBlock.cpp:
&gt; +        (WebCore::RenderBlock::exclusionShapeInsideInfoInternal): Factored out calls
&gt; +        to ExclusionShapeInsideInfo to the .cpp file, as ExclusionShapeInsideInfo
&gt; +        requires InlineIterator.h, which would create a circular dependency in
&gt; +        ExclusionShapeInsideInfo.h.
&gt; +        (WebCore):
&gt; +        * rendering/RenderBlock.h:
&gt; +        (WebCore):
&gt; +        (WebCore::RenderBlock::exclusionShapeInsideInfo): Modified to call
&gt; +        exclusionShapeInsideInfoInternal.

I don&apos;t think that&apos;s the right way to go. You should just de-inline exclusionShapeInsideInfo as there is only one caller to exclusionShapeInsideInfoInternal.

&gt; Source/WebCore/platform/text/BidiResolver.h:153
&gt; +    bool m_startsSegment:1; // See above.

Nit: There is normally a space before and after the &apos;:&apos; though I can&apos;t recall this being in our style guide.

Also I would disambiguate the &apos;see above&apos; as it&apos;s not clear which one it refers to:

// Same comment as m_hasHyphen.

&gt; Source/WebCore/rendering/ExclusionShapeInsideInfo.h:82
&gt; +    SegmentRangeList&amp; segmentRanges() { return m_segmentRanges; }

We should probably have 2 versions of this function a const and non-const.

&gt; Source/WebCore/rendering/InlineFlowBox.h:177
&gt; +    void beginPlacingBoxRangesInInlineDirection(float logicalLeft) { setLogicalLeft(logicalLeft); }

This function makes the code less readable as:
* it&apos;s basically calling setLogicalLeft (a one liner)
* its name is just not saying anything about what it does.

Let&apos;s just remove it.

&gt; Source/WebCore/rendering/InlineFlowBox.h:178
&gt; +    void endPlacingBoxRangesInInlineDirection(float logicalLeft, float logicalRight, float minLogicalLeft, float maxLogicalRight)

Let&apos;s rename it to something more descriptive like updateLogicalWidthAndOverflow (feel free to adapt).

&gt; Source/WebCore/rendering/RenderBlock.h:787
&gt; +    InlineFlowBox* createLineBoxes(RenderObject*, const LineInfo&amp;, InlineBox* childBox, bool startsNewSegmnet);

typo: startsNewSegmnet.

We prefer code to use enums instead of booleans as they make the caller a lot more readable. Here it&apos;s not that clear cut but I would still prefer an enum.

&gt; Source/WebCore/rendering/RenderBlockLineLayout.cpp:475
&gt; +        bool mustCreateBoxesToRoot = startNewSegment &amp;&amp; !(parentBox &amp;&amp; parentBox-&gt;isRootInlineBox());

I tried to understand what this variable means but couldn&apos;t really.

&gt; Source/WebCore/rendering/RenderBlockLineLayout.cpp:580
&gt; +        bool runStartsSegment =
&gt; +#if ENABLE(CSS_EXCLUSIONS)
&gt; +            r-&gt;m_startsSegment;
&gt; +#else
&gt; +            false;
&gt; +#endif

Probably more readable if you put the runStartSegment definition into the 2 #if branches.

&gt; Source/WebCore/rendering/RenderBlockLineLayout.cpp:818
&gt; +        // The calculation is separate for each segment

I would put that inside the #if and explain more, technically you should give some &apos;why&apos; explanation (but I couldn&apos;t find any apart that it felt natural):

// We need to justify each segment in an exclusion separately.

This doesn&apos;t seem covered by the tests.

&gt; Source/WebCore/rendering/RenderBlockLineLayout.cpp:901
&gt; +    bool needsWordSpacing;

What&apos;s the need to define needsWordSpacing here as you never use the value outside of the exclusion branch?

&gt; Source/WebCore/rendering/RenderBlockLineLayout.cpp:954
&gt; +        // Do not pass the marker for the next segment

Why? &lt;- a &apos;why&apos; comment would be a lot better here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782045</commentid>
    <comment_count>28</comment_count>
      <attachid>177374</attachid>
    <who name="Bear Travis">betravis</who>
    <bug_when>2012-12-03 16:56:18 -0800</bug_when>
    <thetext>Created attachment 177374
Updating patch

Incorporating feedback from Julien. Making most of the changes suggested above. Still considering how best to address the following:
begin/endPlacingBoxRanges methods are in place because they should ideally be called before/after box ranges are placed. I would still like to emphasize this, even if renaming the methods.
I would like to avoid adding an enumeration for m_startsSegment, as its use is infrequent, and callers either used a passed-in value, or BidiRun::m_startsSegment itself.
needsWordSpacing is used at the end of computeInlineDirectionPositionsForLine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783964</commentid>
    <comment_count>29</comment_count>
      <attachid>177374</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2012-12-05 12:07:28 -0800</bug_when>
    <thetext>Comment on attachment 177374
Updating patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783977</commentid>
    <comment_count>30</comment_count>
      <attachid>177374</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-05 12:18:25 -0800</bug_when>
    <thetext>Comment on attachment 177374
Updating patch

Clearing flags on attachment: 177374

Committed r136729: &lt;http://trac.webkit.org/changeset/136729&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783978</commentid>
    <comment_count>31</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-05 12:18:31 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170038</attachid>
            <date>2012-10-22 17:45:44 -0700</date>
            <delta_ts>2012-10-23 17:35:54 -0700</delta_ts>
            <desc>Initial Patch</desc>
            <filename>bug-91878-20121022174422.patch</filename>
            <type>text/plain</type>
            <size>33243</size>
            <attacher name="Bear Travis">betravis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyMTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTNiOTI2NDkyYTcwNzQz
Y2EzNGVmMzAzMDY1ODZiZDU0NjNlNmI4OS4uNDUwNDVjMDE0MjU4MzJkYzE0OGMzYzhhNmUyZmQ0
ZjExMjQ0NjViZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDEyLTEwLTIyICBCZWFy
IFRyYXZpcyAgPGJldHJhdmlzQGFkb2JlLmNvbT4KKworICAgICAgICBbQ1NTIEV4Y2x1c2lvbnNd
IEVuYWJsZSBzaGFwZS1pbnNpZGUgZm9yIG11bHRpcGxlLXNlZ21lbnQgcG9seWdvbnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxODc4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGF0Y2ggYWRkaW5nIHN1
cHBvcnQgZm9yIG11bHRpcGxlLXNlZ21lbnQgcG9seWdvbnMgZm9yIHNoYXBlLWluc2lkZXMgZnJv
bQorICAgICAgICB0aGUgQ1NTIEV4Y2x1c2lvbnMgc3BlY2lmaWNhdGlvbi4gVGhlIGxheW91dCBj
b2RlIGhhcyBiZWVuIG1vZGlmaWVkIHRvIGZpcnN0CisgICAgICAgIHN1cHBvcnQgZGl2aWRpbmcg
dGV4dCBpbnRvIG11bHRpcGxlIHNlZ21lbnRzIHBlciBsaW5lLCBhbmQgdGhlbiB0byBsYXkgb3V0
CisgICAgICAgIG11bHRpcGxlIHNlZ21lbnRzIHBlciBsaW5lIGJveC4KKworICAgICAgICBUZXN0
OiBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1zZWdt
ZW50cy0wMDEuaHRtbAorCisgICAgICAgICogcmVuZGVyaW5nL0JpZGlSdW4uaDoKKyAgICAgICAg
KFdlYkNvcmU6OkJpZGlSdW46OkJpZGlSdW4pOgorICAgICAgICAoQmlkaVJ1bik6IEFkZGVkIGEg
J3N0YXJ0c1NlZ21lbnQnIGJvb2xlYW4gdG8gdHJhY2sgd2hldGhlciBhIHJ1biBiZWdpbnMKKyAg
ICAgICAgYSBuZXcgc2VnbWVudC4KKyAgICAgICAgKiByZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGVJ
bnNpZGVJbmZvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4Y2x1c2lvblNoYXBlSW5zaWRlSW5m
bzo6Y29tcHV0ZVNlZ21lbnRzRm9yTGluZSk6IENsZWFyIHRoZQorICAgICAgICBzZWdtZW50IHJh
bmdlcyB3aGVuIGNvbXB1dGluZyBzZWdtZW50cyBmb3IgYSBuZXcgbGluZS4KKyAgICAgICAgKiBy
ZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLmg6CisgICAgICAgIChMaW5lU2VnbWVu
dFJhbmdlKTogQWRkZWQgYSBuZXcgdHlwZSB0byB0cmFjayBzZWdtZW50IG9mZnNldHMuCisgICAg
ICAgIChXZWJDb3JlOjpMaW5lU2VnbWVudFJhbmdlOjpMaW5lU2VnbWVudFJhbmdlKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZv
OjpzZWdtZW50UmFuZ2VzKTogQWRkZWQgYSBnZXR0ZXIgZm9yCisgICAgICAgIHRoZSBsaW5lIHNl
Z21lbnQgcmFuZ2VzIHZlY3Rvci4KKyAgICAgICAgKEV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbyk6
CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5saW5lRmxvd0JveDo6cGxhY2VCb3hlc0luSW5saW5lRGlyZWN0aW9uKTogTW9kaWZpZWQg
dG8gY2FsbAorICAgICAgICBhIHJlZmFjdG9yZWQgYm94IHBsYWNlbWVudCBhbGdvcml0aG0gdGhh
dCB0YWtlcyBhIGJlZ2lubmluZyBhbmQgZW5kIHBvc2l0aW9uLgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpwbGFjZUJveFJhbmdlSW5JbmxpbmVE
aXJlY3Rpb24pOiBTaW1pbGFyIHRvIHRoZQorICAgICAgICBwbGFjZUJveGVzIG1ldGhvZCwgYnV0
IHRha2VzIGFuIGVuZCBwb3NpdGlvbiB0aGF0IG1heSBvY2N1ciBiZWZvcmUgdGhlIGVuZAorICAg
ICAgICBvZiB0aGUgbGluZS4KKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oOgor
ICAgICAgICAoSW5saW5lRmxvd0JveCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2Nr
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpleGNsdXNpb25TaGFwZUluc2lk
ZUluZm9JbnRlcm5hbCk6IEZhY3RvcmVkIG91dCBjYWxscworICAgICAgICB0byBFeGNsdXNpb25T
aGFwZUluc2lkZUluZm8gdG8gdGhlIC5jcHAgZmlsZSwgYXMgRXhjbHVzaW9uU2hhcGVJbnNpZGVJ
bmZvCisgICAgICAgIHJlcXVpcmVzIElubGluZUl0ZXJhdG9yLmgsIHdoaWNoIHdvdWxkIGNyZWF0
ZSBhIGNpcmN1bGFyIGRlcGVuZGVuY3kgaW4KKyAgICAgICAgRXhjbHVzaW9uU2hhcGVJbnNpZGVJ
bmZvLmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxv
Y2suaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6
OmV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbyk6IE1vZGlmaWVkIHRvIGNhbGwKKyAgICAgICAgZXhj
bHVzaW9uU2hhcGVJbnNpZGVJbmZvSW50ZXJuYWwuCisgICAgICAgIChSZW5kZXJCbG9jayk6Cisg
ICAgICAgIChMaW5lQnJlYWtlcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrTGlu
ZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaW5lV2lkdGg6OkxpbmVXaWR0aCk6IExp
bmVXaWR0aCBub3cgdXNlcyB0aGUgbnVtYmVyIG9mIGNvbXB1dGVkCisgICAgICAgIHNlZ21lbnRS
YW5nZXMgdG8gZGV0ZXJtaW5lIHdoaWNoIExpbmVTZWdtZW50IHRvIHVzZSB3aGVuIGNhbGN1bGF0
aW5nIHdpZHRoLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmNyZWF0ZUxpbmVCb3hl
cyk6IE5vdyB0YWtlcyBhIGJvb2xlYW4gdG8gZGV0ZXJtaW5lCisgICAgICAgIHdoZXRoZXIgb3Ig
bm90IGl0IGNhbiBzaGFyZSB0aGUgc2FtZSBwYXJlbnRCb3ggYXMgaXRzIHNpYmxpbmdzIChzZWdt
ZW50cworICAgICAgICBtdXN0IGJlIGFibGUgdG8gcG9zaXRpb24gdGhlbXNlbHZlcyBzZXBhcmF0
ZWx5IGluIHRoZSBSb290SW5saW5lQm94KS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2Nr
Ojpjb25zdHJ1Y3RMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVFeHBhbnNpb25Gb3JK
dXN0aWZpZWRUZXh0KTogRG8gaW5jbHVkZSBydW5zIHRoYXQgc3RhcnQgbmV3CisgICAgICAgIHNl
Z21lbnRzIHdoZW4gY2FsY3VsYXRpbmcganVzdGlmaWNhdGlvbiBmb3IgdGhlIGN1cnJlbnQgc2Vn
bWVudC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjb21wdXRlSW5saW5lRGlyZWN0
aW9uUG9zaXRpb25zRm9yTGluZSk6IE1vZGlmaWVkIHRvCisgICAgICAgIHVzZSB0aGUgY29tcHV0
ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0ZvckxpbmVIZWxwZXIsIHdoaWNoIGNhbiBwb3NpdGlv
bgorICAgICAgICBtdWx0aXBsZSBzZWdtZW50cyBvZiB0ZXh0IHBlciBsaW5lLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2s6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlvbnNGb3JM
aW5lSGVscGVyKTogUG9zaXRpb25zCisgICAgICAgIHRoZSBnaXZlbiBzZWdtZW50IG9mIHRleHQg
YW5kIGNhbGN1bGF0ZXMgaXRzIGxheW91dCBvZmZzZXRzLgorICAgICAgICAoV2ViQ29yZTo6Y29u
c3RydWN0QmlkaVJ1bnMpOiBNb2RpZmllZCBzb21lIHZhcmlhYmxlcyBmcm9tICdlbmRPZkxpbmUn
IHRvICdlbmRPZlNlZ21lbnQnLgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0QmlkaVJ1bnNG
b3JMaW5lKTogQ29uc3RydWN0IHRoZSBiaWRpIHJ1bnMgZm9yIGVhY2ggc2VnbWVudCBpbgorICAg
ICAgICB0aGUgZ2l2ZW4gbGluZS4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQmxvY2s6OmxheW91dFJ1bnNBbmRGbG9hdHNJblJhbmdlKTogQ2FsbCBjb25zdHJ1
Y3RCaWRpUnVuc0ZvckxpbmUuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6TGluZUJy
ZWFrZXI6Om5leHRMaW5lQnJlYWspOiBNb3ZlZCB0aGUgbGluZSBicmVha2luZyBjb2RlCisgICAg
ICAgIHRvIGJyZWFrIHNlZ21lbnRzLCB3aXRoIG5leHRMaW5lQnJlYWsgaXRlcmF0aW5nIG92ZXIg
c2VnbWVudCBicmVha3MgZm9yIHRoZSBlbnRpcmUgbGluZS4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJsb2NrOjpMaW5lQnJlYWtlcjo6bmV4dFNlZ21lbnRCcmVhayk6IENhbGN1bGF0ZXMgaG93
IG11Y2ggdGV4dCBhCisgICAgICAgIHNlZ21lbnQgY2FuIGhvbGQuIFRoaXMgY29kZSB3YXMgb3Jp
Z2luYWxseSBpbiBuZXh0TGluZUJyZWFrLgorCiAyMDEyLTEwLTIyICBNaWtlIFdlc3QgIDxta3dz
dEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgJ2ltYWdlL3BqcGVnJyBzaG91bGQgYmUgdHJlYXRl
ZCBhcyBhbiBpbWFnZSBieSBXZWIgSW5zcGVjdG9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0JpZGlSdW4uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9CaWRpUnVu
LmgKaW5kZXggZjUwZmExOTZmZjZlMmU1YWZlOGZiY2UzNzg1OWFkOTRkOThkNmMxMS4uOTliMmFh
ZWM1NmQxMTc0NTAyMTBkOWZkYmYyZGM4ZWUxNWIyMjJmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0JpZGlSdW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
QmlkaVJ1bi5oCkBAIC0zOSw2ICszOSw3IEBAIHN0cnVjdCBCaWRpUnVuIDogQmlkaUNoYXJhY3Rl
clJ1biB7CiAgICAgICAgICwgbV9vYmplY3Qob2JqZWN0KQogICAgICAgICAsIG1fYm94KDApCiAg
ICAgICAgICwgbV9oYXNIeXBoZW4oZmFsc2UpCisgICAgICAgICwgbV9zdGFydHNTZWdtZW50KGZh
bHNlKQogICAgIHsKICAgICB9CiAKQEAgLTYxLDYgKzYyLDcgQEAgcHVibGljOgogICAgIFJlbmRl
ck9iamVjdCogbV9vYmplY3Q7CiAgICAgSW5saW5lQm94KiBtX2JveDsKICAgICBib29sIG1faGFz
SHlwaGVuOworICAgIGJvb2wgbV9zdGFydHNTZWdtZW50OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLmNwcAppbmRl
eCBiNzgzMGYxMGVmNmJlNGMzOTIzMDc4MzUzYzRkMDk4N2Q3NzFhMGRmLi5mZGIxMGY5MzMzOWY3
NmVkMzEwODMxYmRmZDc2ZTg4YmM4NTc0YWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLmNwcApAQCAtMTA2LDYgKzEwNiw3
IEBAIGJvb2wgRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvOjpjb21wdXRlU2VnbWVudHNGb3JMaW5l
KExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0CiAgICAgbV9saW5lVG9wID0gbGluZVRvcDsKICAg
ICBtX2xpbmVIZWlnaHQgPSBsaW5lSGVpZ2h0OwogICAgIG1fc2VnbWVudHMuY2xlYXIoKTsKKyAg
ICBtX3NlZ21lbnRSYW5nZXMuY2xlYXIoKTsKIAogICAgIGlmIChsaW5lT3ZlcmxhcHNTaGFwZUJv
dW5kcygpKSB7CiAgICAgICAgIEFTU0VSVChtX3NoYXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25TaGFwZUluc2lkZUluZm8uaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9FeGNsdXNpb25TaGFwZUluc2lkZUluZm8uaAppbmRleCBiZWEyYjQ1YTAz
MTc1ZGI4YTAzYTU4NzBhNDk4OTI3NGJiZGQwY2E5Li4zMzNmNjI2ZmE2ZTAzOGYzMDhlYTg2NzA4
MDdhNjY1MTI3MDc1M2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhj
bHVzaW9uU2hhcGVJbnNpZGVJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4
Y2x1c2lvblNoYXBlSW5zaWRlSW5mby5oCkBAIC0zNCw2ICszNCw3IEBACiAKICNpbmNsdWRlICJF
eGNsdXNpb25TaGFwZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIklubGlu
ZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTGF5b3V0VHlwZXNJbmxpbmVNZXRob2RzLmgiCiAjaW5j
bHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CkBAIC00Myw2
ICs0NCwxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlckJsb2NrOwogCitz
dHJ1Y3QgTGluZVNlZ21lbnRSYW5nZSB7CisgICAgSW5saW5lSXRlcmF0b3Igc3RhcnQ7CisgICAg
SW5saW5lSXRlcmF0b3IgZW5kOworICAgIExpbmVTZWdtZW50UmFuZ2UoSW5saW5lSXRlcmF0b3Ig
c3RhcnQsIElubGluZUl0ZXJhdG9yIGVuZCkKKyAgICAgICAgOiBzdGFydChzdGFydCkKKyAgICAg
ICAgLCBlbmQoZW5kKQorICAgIHsKKyAgICB9Cit9OwordHlwZWRlZiBWZWN0b3I8TGluZVNlZ21l
bnRSYW5nZT4gU2VnbWVudFJhbmdlTGlzdDsKKwogY2xhc3MgRXhjbHVzaW9uU2hhcGVJbnNpZGVJ
bmZvIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTczLDYgKzg1
LDEwIEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKGhhc1NlZ21lbnRzKCkpOwogICAgICAgICBy
ZXR1cm4gbV9zZWdtZW50czsKICAgICB9CisgICAgU2VnbWVudFJhbmdlTGlzdCYgc2VnbWVudFJh
bmdlcygpCisgICAgeworICAgICAgICByZXR1cm4gbV9zZWdtZW50UmFuZ2VzOworICAgIH0KICAg
ICBib29sIGNvbXB1dGVTZWdtZW50c0ZvckxpbmUoTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRV
bml0IGxpbmVIZWlnaHQpOwogICAgIGJvb2wgbGluZU92ZXJsYXBzU2hhcGVCb3VuZHMoKSBjb25z
dDsKICAgICB2b2lkIGNvbXB1dGVTaGFwZVNpemUoTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgsIExh
eW91dFVuaXQgbG9naWNhbEhlaWdodCk7CkBAIC05MCw2ICsxMDYsNyBAQCBwcml2YXRlOgogICAg
IExheW91dFVuaXQgbV9sb2dpY2FsSGVpZ2h0OwogCiAgICAgU2VnbWVudExpc3QgbV9zZWdtZW50
czsKKyAgICBTZWdtZW50UmFuZ2VMaXN0IG1fc2VnbWVudFJhbmdlczsKICAgICBib29sIG1fc2hh
cGVTaXplRGlydHk7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lRmxvd0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0Jv
eC5jcHAKaW5kZXggNjZiYzExZTA5NDcyNjE5NTZjYTllMmE4YmE1MmIxMDU5NjcwNGZlNS4uMTdh
YjJhMmVlYzZkMDJiYWViNThjOTAyZGViNDZlNDU1NWEwMTdhYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcApAQCAtMzc3LDcgKzM3NywxOCBAQCBmbG9hdCBJ
bmxpbmVGbG93Qm94OjpwbGFjZUJveGVzSW5JbmxpbmVEaXJlY3Rpb24oZmxvYXQgbG9naWNhbExl
ZnQsIGJvb2wmIG5lZWRzVwogICAgIGZsb2F0IG1pbkxvZ2ljYWxMZWZ0ID0gc3RhcnRMb2dpY2Fs
TGVmdDsKICAgICBmbG9hdCBtYXhMb2dpY2FsUmlnaHQgPSBsb2dpY2FsTGVmdDsKIAotICAgIGZv
ciAoSW5saW5lQm94KiBjdXJyID0gZmlyc3RDaGlsZCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4
dE9uTGluZSgpKSB7CisgICAgcGxhY2VCb3hSYW5nZUluSW5saW5lRGlyZWN0aW9uKGZpcnN0Q2hp
bGQoKSwgMCwgbG9naWNhbExlZnQsIG1pbkxvZ2ljYWxMZWZ0LCBtYXhMb2dpY2FsUmlnaHQsIG5l
ZWRzV29yZFNwYWNpbmcsIHRleHRCb3hEYXRhTWFwKTsKKworICAgIGxvZ2ljYWxMZWZ0ICs9IGJv
cmRlckxvZ2ljYWxSaWdodCgpICsgcGFkZGluZ0xvZ2ljYWxSaWdodCgpOworICAgIHNldExvZ2lj
YWxXaWR0aChsb2dpY2FsTGVmdCAtIHN0YXJ0TG9naWNhbExlZnQpOworICAgIGlmIChrbm93blRv
SGF2ZU5vT3ZlcmZsb3coKSAmJiAobWluTG9naWNhbExlZnQgPCBzdGFydExvZ2ljYWxMZWZ0IHx8
IG1heExvZ2ljYWxSaWdodCA+IGxvZ2ljYWxMZWZ0KSkKKyAgICAgICAgY2xlYXJLbm93blRvSGF2
ZU5vT3ZlcmZsb3coKTsKKyAgICByZXR1cm4gbG9naWNhbExlZnQ7Cit9CisKK2Zsb2F0IElubGlu
ZUZsb3dCb3g6OnBsYWNlQm94UmFuZ2VJbklubGluZURpcmVjdGlvbihJbmxpbmVCb3gqIGZpcnN0
Q2hpbGQsIElubGluZUJveCogbGFzdENoaWxkLCBmbG9hdCYgbG9naWNhbExlZnQsIGZsb2F0JiBt
aW5Mb2dpY2FsTGVmdCwgZmxvYXQmIG1heExvZ2ljYWxSaWdodCwgYm9vbCYgbmVlZHNXb3JkU3Bh
Y2luZywgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXAmIHRleHRCb3hEYXRhTWFwKQor
eworICAgIGZvciAoSW5saW5lQm94KiBjdXJyID0gZmlyc3RDaGlsZDsgY3VyciAmJiBjdXJyICE9
IGxhc3RDaGlsZDsgY3VyciA9IGN1cnItPm5leHRPbkxpbmUoKSkgewogICAgICAgICBpZiAoY3Vy
ci0+cmVuZGVyZXIoKS0+aXNUZXh0KCkpIHsKICAgICAgICAgICAgIElubGluZVRleHRCb3gqIHRl
eHQgPSB0b0lubGluZVRleHRCb3goY3Vycik7CiAgICAgICAgICAgICBSZW5kZXJUZXh0KiBydCA9
IHRvUmVuZGVyVGV4dCh0ZXh0LT5yZW5kZXJlcigpKTsKQEAgLTQyOSwxMSArNDQwLDYgQEAgZmxv
YXQgSW5saW5lRmxvd0JveDo6cGxhY2VCb3hlc0luSW5saW5lRGlyZWN0aW9uKGZsb2F0IGxvZ2lj
YWxMZWZ0LCBib29sJiBuZWVkc1cKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLQot
ICAgIGxvZ2ljYWxMZWZ0ICs9IGJvcmRlckxvZ2ljYWxSaWdodCgpICsgcGFkZGluZ0xvZ2ljYWxS
aWdodCgpOwotICAgIHNldExvZ2ljYWxXaWR0aChsb2dpY2FsTGVmdCAtIHN0YXJ0TG9naWNhbExl
ZnQpOwotICAgIGlmIChrbm93blRvSGF2ZU5vT3ZlcmZsb3coKSAmJiAobWluTG9naWNhbExlZnQg
PCBzdGFydExvZ2ljYWxMZWZ0IHx8IG1heExvZ2ljYWxSaWdodCA+IGxvZ2ljYWxMZWZ0KSkKLSAg
ICAgICAgY2xlYXJLbm93blRvSGF2ZU5vT3ZlcmZsb3coKTsKICAgICByZXR1cm4gbG9naWNhbExl
ZnQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93
Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oCmluZGV4IDQ4
YjcyMGM3NWRkNTNlN2QyMDk3ODJkZDRiYTJmMzFhNDUyMTUwMGUuLjU1M2QzYmQwN2VkYWEyOTc2
ZTE2NDdjMzJmYmI0NzAzYjUzMzViNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9JbmxpbmVGbG93Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZUZsb3dCb3guaApAQCAtMTc0LDYgKzE3NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRldGVybWlu
ZVNwYWNpbmdGb3JGbG93Qm94ZXMoYm9vbCBsYXN0TGluZSwgYm9vbCBpc0xvZ2ljYWxseUxhc3RS
dW5XcmFwcGVkLCBSZW5kZXJPYmplY3QqIGxvZ2ljYWxseUxhc3RSdW5SZW5kZXJlcik7CiAgICAg
TGF5b3V0VW5pdCBnZXRGbG93U3BhY2luZ0xvZ2ljYWxXaWR0aCgpOwogICAgIGZsb2F0IHBsYWNl
Qm94ZXNJbklubGluZURpcmVjdGlvbihmbG9hdCBsb2dpY2FsTGVmdCwgYm9vbCYgbmVlZHNXb3Jk
U3BhY2luZywgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXAmKTsKKyAgICBmbG9hdCBw
bGFjZUJveFJhbmdlSW5JbmxpbmVEaXJlY3Rpb24oSW5saW5lQm94KiBmaXJzdENoaWxkLCBJbmxp
bmVCb3gqIGxhc3RDaGlsZCwgZmxvYXQmIGxvZ2ljYWxMZWZ0LCBmbG9hdCYgbWluTG9naWNhbExl
ZnQsIGZsb2F0JiBtYXhMb2dpY2FsUmlnaHQsIGJvb2wmIG5lZWRzV29yZFNwYWNpbmcsIEdseXBo
T3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwJik7CiAgICAgdm9pZCBjb21wdXRlTG9naWNhbEJv
eEhlaWdodHMoUm9vdElubGluZUJveCosIExheW91dFVuaXQmIG1heFBvc2l0aW9uVG9wLCBMYXlv
dXRVbml0JiBtYXhQb3NpdGlvbkJvdHRvbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQmIG1heEFzY2VudCwgaW50JiBtYXhEZXNjZW50LCBib29sJiBzZXRNYXhBc2NlbnQs
IGJvb2wmIHNldE1heERlc2NlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBzdHJpY3RNb2RlLCBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcCYsIEZvbnRC
YXNlbGluZSwgVmVydGljYWxQb3NpdGlvbkNhY2hlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmNwcAppbmRleCBmMzQyYjFhYjk4ZDMxNzBkYTdjMjY0OWFiNDRhNmI3ODk2
YTBmYWUxLi4wNzVkMDFmMjYwMjI4N2I5NDEyMTdlMjZjMmFlMzAwMmRjNmMxNDY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTEzOTAsNiArMTM5MCwxMSBA
QCB2b2lkIFJlbmRlckJsb2NrOjpsYXlvdXQoKQogfQogCiAjaWYgRU5BQkxFKENTU19FWENMVVNJ
T05TKQorRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvKiBSZW5kZXJCbG9jazo6ZXhjbHVzaW9uU2hh
cGVJbnNpZGVJbmZvSW50ZXJuYWwoKSBjb25zdAoreworICAgIHJldHVybiBFeGNsdXNpb25TaGFw
ZUluc2lkZUluZm86OmlzRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvRW5hYmxlZEZvclJlbmRlckJs
b2NrKHRoaXMpID8gRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvOjpleGNsdXNpb25TaGFwZUluc2lk
ZUluZm9Gb3JSZW5kZXJCbG9jayh0aGlzKSA6IDA7Cit9CisKIHZvaWQgUmVuZGVyQmxvY2s6OnVw
ZGF0ZUV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mb0FmdGVyU3R5bGVDaGFuZ2UoY29uc3QgQmFzaWNT
aGFwZSogc2hhcGVJbnNpZGUsIGNvbnN0IEJhc2ljU2hhcGUqIG9sZFNoYXBlSW5zaWRlKQogewog
ICAgIC8vIEZJWE1FOiBBIGZ1dHVyZSBvcHRpbWl6YXRpb24gd291bGQgZG8gYSBkZWVwIGNvbXBh
cmlzb24gZm9yIGVxdWFsaXR5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaApp
bmRleCA1NjdkN2RjYjRjM2VhYTAyODE0OTg2NDQxOTgyZGJhY2ZkMjAwM2JlLi4wMTU3NDJjMDhm
NmVjNzAwNjBlNGZlNGUxY2FkYjc2NjM1MDAzY2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2suaApAQCAtMzQsMTAgKzM0LDYgQEAKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAKLSNpZiBFTkFCTEUoQ1NTX0VYQ0xVU0lP
TlMpCi0jaW5jbHVkZSAiRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLmgiCi0jZW5kaWYKLQogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBCaWRpQ29udGV4dDsKQEAgLTUyLDYgKzQ4LDEwIEBA
IHN0cnVjdCBCaWRpUnVuOwogc3RydWN0IFBhaW50SW5mbzsKIGNsYXNzIExpbmVJbmZvOwogY2xh
c3MgUmVuZGVyUnVieVJ1bjsKKyNpZiBFTkFCTEUoQ1NTX0VYQ0xVU0lPTlMpCitjbGFzcyBCYXNp
Y1NoYXBlOworY2xhc3MgRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvOworI2VuZGlmCiBjbGFzcyBU
ZXh0TGF5b3V0OwogY2xhc3MgV29yZE1lYXN1cmVtZW50OwogCkBAIC00MjAsNyArNDIwLDcgQEAg
cHVibGljOgogI2lmIEVOQUJMRShDU1NfRVhDTFVTSU9OUykKICAgICBFeGNsdXNpb25TaGFwZUlu
c2lkZUluZm8qIGV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbygpIGNvbnN0CiAgICAgewotICAgICAg
ICByZXR1cm4gc3R5bGUoKS0+c2hhcGVJbnNpZGUoKSAmJiBFeGNsdXNpb25TaGFwZUluc2lkZUlu
Zm86OmlzRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvRW5hYmxlZEZvclJlbmRlckJsb2NrKHRoaXMp
ID8gRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvOjpleGNsdXNpb25TaGFwZUluc2lkZUluZm9Gb3JS
ZW5kZXJCbG9jayh0aGlzKSA6IDA7CisgICAgICAgIHJldHVybiBzdHlsZSgpLT5zaGFwZUluc2lk
ZSgpID8gZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvSW50ZXJuYWwoKSA6IDA7CiAgICAgfQogI2Vu
ZGlmCiAKQEAgLTUxNyw2ICs1MTcsNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAjaWYgRU5B
QkxFKENTU19FWENMVVNJT05TKQorICAgIEV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbyogZXhjbHVz
aW9uU2hhcGVJbnNpZGVJbmZvSW50ZXJuYWwoKSBjb25zdDsKICAgICB2b2lkIGNvbXB1dGVFeGNs
dXNpb25TaGFwZVNpemUoKTsKICAgICB2b2lkIHVwZGF0ZUV4Y2x1c2lvblNoYXBlSW5zaWRlSW5m
b0FmdGVyU3R5bGVDaGFuZ2UoY29uc3QgQmFzaWNTaGFwZSosIGNvbnN0IEJhc2ljU2hhcGUqIG9s
ZFdyYXBTaGFwZSk7CiAjZW5kaWYKQEAgLTc1NCw2ICs3NTUsNyBAQCBwcml2YXRlOgogICAgIHBy
aXZhdGU6CiAgICAgICAgIHZvaWQgcmVzZXQoKTsKICAgICAgICAgCisgICAgICAgIElubGluZUl0
ZXJhdG9yIG5leHRTZWdtZW50QnJlYWsoSW5saW5lQmlkaVJlc29sdmVyJiwgTGluZUluZm8mLCBS
ZW5kZXJUZXh0SW5mbyYsIEZsb2F0aW5nT2JqZWN0KiBsYXN0RmxvYXRGcm9tUHJldmlvdXNMaW5l
LCB1bnNpZ25lZCBjb25zZWN1dGl2ZUh5cGhlbmF0ZWRMaW5lcywgV29yZE1lYXN1cmVtZW50cyYp
OwogICAgICAgICB2b2lkIHNraXBUcmFpbGluZ1doaXRlc3BhY2UoSW5saW5lSXRlcmF0b3ImLCBj
b25zdCBMaW5lSW5mbyYpOwogICAgICAgICB2b2lkIHNraXBMZWFkaW5nV2hpdGVzcGFjZShJbmxp
bmVCaWRpUmVzb2x2ZXImLCBMaW5lSW5mbyYsIEZsb2F0aW5nT2JqZWN0KiBsYXN0RmxvYXRGcm9t
UHJldmlvdXNMaW5lLCBMaW5lV2lkdGgmKTsKICAgICAgICAgCkBAIC03NzAsMTAgKzc3MiwxMiBA
QCBwcml2YXRlOgogICAgIGJvb2wgY2hlY2tQYWdpbmF0aW9uQW5kRmxvYXRzQXRFbmRMaW5lKExp
bmVMYXlvdXRTdGF0ZSYpOwogICAgIAogICAgIFJvb3RJbmxpbmVCb3gqIGNvbnN0cnVjdExpbmUo
QmlkaVJ1bkxpc3Q8QmlkaVJ1bj4mLCBjb25zdCBMaW5lSW5mbyYpOwotICAgIElubGluZUZsb3dC
b3gqIGNyZWF0ZUxpbmVCb3hlcyhSZW5kZXJPYmplY3QqLCBjb25zdCBMaW5lSW5mbyYsIElubGlu
ZUJveCogY2hpbGRCb3gpOworICAgIElubGluZUZsb3dCb3gqIGNyZWF0ZUxpbmVCb3hlcyhSZW5k
ZXJPYmplY3QqLCBjb25zdCBMaW5lSW5mbyYsIElubGluZUJveCogY2hpbGRCb3gsIGJvb2wgc3Rh
cnRzTmV3U2VnbW5ldCk7CiAKICAgICB2b2lkIHNldE1hcmdpbnNGb3JSdWJ5UnVuKEJpZGlSdW4q
LCBSZW5kZXJSdWJ5UnVuKiwgUmVuZGVyT2JqZWN0KiwgY29uc3QgTGluZUluZm8mKTsKIAorICAg
IEJpZGlSdW4qIGNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlvbnNGb3JMaW5lSGVscGVyKFJv
b3RJbmxpbmVCb3gqLCBjb25zdCBMaW5lSW5mbyYsIEVUZXh0QWxpZ24sIGZsb2F0JiBsb2dpY2Fs
TGVmdCwKKyAgICAgICAgZmxvYXQmIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwgQmlkaVJ1biogZmly
c3RSdW4sIEJpZGlSdW4qIHRyYWlsaW5nU3BhY2VSdW4sIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFj
a0ZvbnRzTWFwJiB0ZXh0Qm94RGF0YU1hcCwgVmVydGljYWxQb3NpdGlvbkNhY2hlJiwgV29yZE1l
YXN1cmVtZW50cyYpOwogICAgIHZvaWQgY29tcHV0ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0Zv
ckxpbmUoUm9vdElubGluZUJveCosIGNvbnN0IExpbmVJbmZvJiwgQmlkaVJ1biogZmlyc3RSdW4s
IEJpZGlSdW4qIHRyYWlsaW5nU3BhY2VSdW4sIGJvb2wgcmVhY2hlZEVuZCwgR2x5cGhPdmVyZmxv
d0FuZEZhbGxiYWNrRm9udHNNYXAmLCBWZXJ0aWNhbFBvc2l0aW9uQ2FjaGUmLCBXb3JkTWVhc3Vy
ZW1lbnRzJik7CiAgICAgdm9pZCBjb21wdXRlQmxvY2tEaXJlY3Rpb25Qb3NpdGlvbnNGb3JMaW5l
KFJvb3RJbmxpbmVCb3gqLCBCaWRpUnVuKiwgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNN
YXAmLCBWZXJ0aWNhbFBvc2l0aW9uQ2FjaGUmKTsKICAgICB2b2lkIGRlbGV0ZUVsbGlwc2lzTGlu
ZUJveGVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2tMaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xp
bmVMYXlvdXQuY3BwCmluZGV4IDc1NmEzYzMxZWMzYjM3MzE3YjBmNGI2ZWM0OGI4MDZlMmU4ZmUw
ZmUuLmY0MDliOTQ2YmFiYjc0Zjg5MjcwY2Y1ZWQzMzhjM2YyYWI0MzI4MWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCkBAIC05
MCw3ICs5MCw3IEBAIHB1YmxpYzoKICAgICAgICAgRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvKiBl
eGNsdXNpb25TaGFwZUluc2lkZUluZm8gPSBsYXlvdXRFeGNsdXNpb25TaGFwZUluc2lkZUluZm8o
bV9ibG9jayk7CiAgICAgICAgIC8vIEZJWE1FOiBCdWcgOTE4Nzg6IEFkZCBzdXBwb3J0IGZvciBt
dWx0aXBsZSBzZWdtZW50cywgY3VycmVudGx5IHdlIG9ubHkgc3VwcG9ydCBvbmUKICAgICAgICAg
aWYgKGV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbyAmJiBleGNsdXNpb25TaGFwZUluc2lkZUluZm8t
Pmhhc1NlZ21lbnRzKCkpCi0gICAgICAgICAgICBtX3NlZ21lbnQgPSAmZXhjbHVzaW9uU2hhcGVJ
bnNpZGVJbmZvLT5zZWdtZW50cygpWzBdOworICAgICAgICAgICAgbV9zZWdtZW50ID0gJmV4Y2x1
c2lvblNoYXBlSW5zaWRlSW5mby0+c2VnbWVudHMoKVtleGNsdXNpb25TaGFwZUluc2lkZUluZm8t
PnNlZ21lbnRSYW5nZXMoKS5zaXplKCldOwogI2VuZGlmCiAgICAgICAgIHVwZGF0ZUF2YWlsYWJs
ZVdpZHRoKCk7CiAgICAgfQpAQCAtNDU1LDcgKzQ1NSw3IEBAIHN0YXRpYyBib29sIHBhcmVudElz
Q29uc3RydWN0ZWRPckhhdmVOZXh0KElubGluZUZsb3dCb3gqIHBhcmVudEJveCkKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLUlubGluZUZsb3dCb3gqIFJlbmRlckJsb2NrOjpjcmVhdGVMaW5lQm94
ZXMoUmVuZGVyT2JqZWN0KiBvYmosIGNvbnN0IExpbmVJbmZvJiBsaW5lSW5mbywgSW5saW5lQm94
KiBjaGlsZEJveCkKK0lubGluZUZsb3dCb3gqIFJlbmRlckJsb2NrOjpjcmVhdGVMaW5lQm94ZXMo
UmVuZGVyT2JqZWN0KiBvYmosIGNvbnN0IExpbmVJbmZvJiBsaW5lSW5mbywgSW5saW5lQm94KiBj
aGlsZEJveCwgYm9vbCBzdGFydE5ld1NlZ21lbnQpCiB7CiAgICAgLy8gU2VlIGlmIHdlIGhhdmUg
YW4gdW5jb25zdHJ1Y3RlZCBsaW5lIGJveCBmb3IgdGhpcyBvYmplY3QgdGhhdCBpcyBhbHNvCiAg
ICAgLy8gdGhlIGxhc3QgaXRlbSBvbiB0aGUgbGluZS4KQEAgLTQ3OCw3ICs0NzgsNyBAQCBJbmxp
bmVGbG93Qm94KiBSZW5kZXJCbG9jazo6Y3JlYXRlTGluZUJveGVzKFJlbmRlck9iamVjdCogb2Jq
LCBjb25zdCBMaW5lSW5mbyYgbAogICAgICAgICAvLyB0aGUgc2FtZSBsaW5lICh0aGlzIGNhbiBo
YXBwZW4gd2l0aCB2ZXJ5IGZhbmN5IGxhbmd1YWdlIG1peHR1cmVzKS4KICAgICAgICAgYm9vbCBj
b25zdHJ1Y3RlZE5ld0JveCA9IGZhbHNlOwogICAgICAgICBib29sIGFsbG93ZWRUb0NvbnN0cnVj
dE5ld0JveCA9ICFoYXNEZWZhdWx0TGluZUJveENvbnRhaW4gfHwgIWlubGluZUZsb3cgfHwgaW5s
aW5lRmxvdy0+YWx3YXlzQ3JlYXRlTGluZUJveGVzKCk7Ci0gICAgICAgIGJvb2wgY2FuVXNlRXhp
c3RpbmdQYXJlbnRCb3ggPSBwYXJlbnRCb3ggJiYgIXBhcmVudElzQ29uc3RydWN0ZWRPckhhdmVO
ZXh0KHBhcmVudEJveCk7CisgICAgICAgIGJvb2wgY2FuVXNlRXhpc3RpbmdQYXJlbnRCb3ggPSBw
YXJlbnRCb3ggJiYgIXBhcmVudElzQ29uc3RydWN0ZWRPckhhdmVOZXh0KHBhcmVudEJveCkgJiYg
KCFzdGFydE5ld1NlZ21lbnQgfHwgcGFyZW50Qm94LT5pc1Jvb3RJbmxpbmVCb3goKSk7CiAgICAg
ICAgIGlmIChhbGxvd2VkVG9Db25zdHJ1Y3ROZXdCb3ggJiYgIWNhblVzZUV4aXN0aW5nUGFyZW50
Qm94KSB7CiAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIG1ha2UgYSBuZXcgYm94IGZvciB0aGlz
IHJlbmRlciBvYmplY3QuICBPbmNlCiAgICAgICAgICAgICAvLyBtYWRlLCB3ZSBuZWVkIHRvIHBs
YWNlIGl0IGF0IHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgbGluZS4KQEAgLTU3Niw5ICs1NzYsOSBA
QCBSb290SW5saW5lQm94KiBSZW5kZXJCbG9jazo6Y29uc3RydWN0TGluZShCaWRpUnVuTGlzdDxC
aWRpUnVuPiYgYmlkaVJ1bnMsIGNvbnN0CiAgICAgICAgIC8vIElmIHdlIGhhdmUgbm8gcGFyZW50
IGJveCB5ZXQsIG9yIGlmIHRoZSBydW4gaXMgbm90IHNpbXBseSBhIHNpYmxpbmcsCiAgICAgICAg
IC8vIHRoZW4gd2UgbmVlZCB0byBjb25zdHJ1Y3QgaW5saW5lIGJveGVzIGFzIG5lY2Vzc2FyeSB0
byBwcm9wZXJseSBlbmNsb3NlIHRoZQogICAgICAgICAvLyBydW4ncyBpbmxpbmUgYm94LgotICAg
ICAgICBpZiAoIXBhcmVudEJveCB8fCBwYXJlbnRCb3gtPnJlbmRlcmVyKCkgIT0gci0+bV9vYmpl
Y3QtPnBhcmVudCgpKQorICAgICAgICBpZiAoIXBhcmVudEJveCB8fCBwYXJlbnRCb3gtPnJlbmRl
cmVyKCkgIT0gci0+bV9vYmplY3QtPnBhcmVudCgpIHx8IHItPm1fc3RhcnRzU2VnbWVudCkKICAg
ICAgICAgICAgIC8vIENyZWF0ZSBuZXcgaW5saW5lIGJveGVzIGFsbCB0aGUgd2F5IGJhY2sgdG8g
dGhlIGFwcHJvcHJpYXRlIGluc2VydGlvbiBwb2ludC4KLSAgICAgICAgICAgIHBhcmVudEJveCA9
IGNyZWF0ZUxpbmVCb3hlcyhyLT5tX29iamVjdC0+cGFyZW50KCksIGxpbmVJbmZvLCBib3gpOwor
ICAgICAgICAgICAgcGFyZW50Qm94ID0gY3JlYXRlTGluZUJveGVzKHItPm1fb2JqZWN0LT5wYXJl
bnQoKSwgbGluZUluZm8sIGJveCwgci0+bV9zdGFydHNTZWdtZW50KTsKICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICAvLyBBcHBlbmQgdGhlIGlubGluZSBib3ggdG8gdGhpcyBsaW5lLgogICAg
ICAgICAgICAgcGFyZW50Qm94LT5hZGRUb0xpbmUoYm94KTsKQEAgLTgxMyw2ICs4MTMsOCBAQCBz
dGF0aWMgaW5saW5lIHZvaWQgY29tcHV0ZUV4cGFuc2lvbkZvckp1c3RpZmllZFRleHQoQmlkaVJ1
biogZmlyc3RSdW4sIEJpZGlSdW4qCiAKICAgICBzaXplX3QgaSA9IDA7CiAgICAgZm9yIChCaWRp
UnVuKiByID0gZmlyc3RSdW47IHI7IHIgPSByLT5uZXh0KCkpIHsKKyAgICAgICAgaWYgKHItPm1f
c3RhcnRzU2VnbWVudCkKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBpZiAoIXItPm1fYm94
IHx8IHIgPT0gdHJhaWxpbmdTcGFjZVJ1bikKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAKQEAgLTg4OCwxNyArODkwLDU5IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmNvbXB1dGVJbmxpbmVE
aXJlY3Rpb25Qb3NpdGlvbnNGb3JMaW5lKFJvb3RJbmxpbmVCb3gqIGxpbmVCb3gsCiAgICAgLy8g
Q1NTIDIuMTogIidUZXh0LWluZGVudCcgb25seSBhZmZlY3RzIGEgbGluZSBpZiBpdCBpcyB0aGUg
Zmlyc3QgZm9ybWF0dGVkIGxpbmUgb2YgYW4gZWxlbWVudC4gRm9yIGV4YW1wbGUsIHRoZSBmaXJz
dCBsaW5lIG9mIGFuIGFub255bW91cyBibG9jayAKICAgICAvLyBib3ggaXMgb25seSBhZmZlY3Rl
ZCBpZiBpdCBpcyB0aGUgZmlyc3QgY2hpbGQgb2YgaXRzIHBhcmVudCBlbGVtZW50LiIKICAgICBi
b29sIGZpcnN0TGluZSA9IGxpbmVJbmZvLmlzRmlyc3RMaW5lKCkgJiYgIShpc0Fub255bW91c0Js
b2NrKCkgJiYgcGFyZW50KCktPmZpcnN0Q2hpbGQoKSAhPSB0aGlzKTsKKwogICAgIGZsb2F0IGxv
Z2ljYWxMZWZ0ID0gcGl4ZWxTbmFwcGVkTG9naWNhbExlZnRPZmZzZXRGb3JMaW5lKGxvZ2ljYWxI
ZWlnaHQoKSwgZmlyc3RMaW5lLCBsaW5lTG9naWNhbEhlaWdodCk7CiAgICAgZmxvYXQgbG9naWNh
bFJpZ2h0ID0gcGl4ZWxTbmFwcGVkTG9naWNhbFJpZ2h0T2Zmc2V0Rm9yTGluZShsb2dpY2FsSGVp
Z2h0KCksIGZpcnN0TGluZSwgbGluZUxvZ2ljYWxIZWlnaHQpOworICAgIGZsb2F0IGF2YWlsYWJs
ZUxvZ2ljYWxXaWR0aDsKKyAgICBib29sIG5lZWRzV29yZFNwYWNpbmc7CiAjaWYgRU5BQkxFKENT
U19FWENMVVNJT05TKQorICAgIGZsb2F0IGxpbmVMb2dpY2FsTGVmdCA9IGxvZ2ljYWxMZWZ0Owor
ICAgIGZsb2F0IGxpbmVMb2dpY2FsUmlnaHQgPSBsb2dpY2FsUmlnaHQ7CiAgICAgRXhjbHVzaW9u
U2hhcGVJbnNpZGVJbmZvKiBleGNsdXNpb25TaGFwZUluc2lkZUluZm8gPSBsYXlvdXRFeGNsdXNp
b25TaGFwZUluc2lkZUluZm8odGhpcyk7CisKICAgICBpZiAoZXhjbHVzaW9uU2hhcGVJbnNpZGVJ
bmZvICYmIGV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby0+aGFzU2VnbWVudHMoKSkgewotICAgICAg
ICBsb2dpY2FsTGVmdCA9IG1heDxmbG9hdD4ocm91bmRUb0ludChleGNsdXNpb25TaGFwZUluc2lk
ZUluZm8tPnNlZ21lbnRzKClbMF0ubG9naWNhbExlZnQpLCBsb2dpY2FsTGVmdCk7Ci0gICAgICAg
IGxvZ2ljYWxSaWdodCA9IG1pbjxmbG9hdD4oZmxvb3JUb0ludChleGNsdXNpb25TaGFwZUluc2lk
ZUluZm8tPnNlZ21lbnRzKClbMF0ubG9naWNhbFJpZ2h0KSwgbG9naWNhbFJpZ2h0KTsKKyAgICAg
ICAgQmlkaVJ1biogc2VnbWVudFN0YXJ0ID0gZmlyc3RSdW47CisgICAgICAgIGNvbnN0IFNlZ21l
bnRMaXN0JiBzZWdtZW50cyA9IGV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby0+c2VnbWVudHMoKTsK
KyAgICAgICAgZmxvYXQgc3RhcnRMb2dpY2FsTGVmdCA9IDA7CisgICAgICAgIGZsb2F0IGVuZExv
Z2ljYWxSaWdodCA9IDA7CisgICAgICAgIGZsb2F0IG1pbkxvZ2ljYWxMZWZ0ID0gMDsKKyAgICAg
ICAgZmxvYXQgbWF4TG9naWNhbFJpZ2h0ID0gMDsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzZWdtZW50cy5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgZmxvYXQgbG9naWNhbExl
ZnQgPSBtYXg8ZmxvYXQ+KHJvdW5kVG9JbnQoc2VnbWVudHNbaV0ubG9naWNhbExlZnQpLCBsaW5l
TG9naWNhbExlZnQpOworICAgICAgICAgICAgZmxvYXQgbG9naWNhbFJpZ2h0ID0gbWluPGZsb2F0
PihmbG9vclRvSW50KHNlZ21lbnRzW2ldLmxvZ2ljYWxSaWdodCksIGxpbmVMb2dpY2FsUmlnaHQp
OworICAgICAgICAgICAgYXZhaWxhYmxlTG9naWNhbFdpZHRoID0gbG9naWNhbFJpZ2h0IC0gbG9n
aWNhbExlZnQ7CisgICAgICAgICAgICBCaWRpUnVuKiBuZXdTZWdtZW50U3RhcnQgPSBjb21wdXRl
SW5saW5lRGlyZWN0aW9uUG9zaXRpb25zRm9yTGluZUhlbHBlcihsaW5lQm94LCBsaW5lSW5mbywg
dGV4dEFsaWduLCBsb2dpY2FsTGVmdCwgYXZhaWxhYmxlTG9naWNhbFdpZHRoLCBzZWdtZW50U3Rh
cnQsIHRyYWlsaW5nU3BhY2VSdW4sIHRleHRCb3hEYXRhTWFwLCB2ZXJ0aWNhbFBvc2l0aW9uQ2Fj
aGUsIHdvcmRNZWFzdXJlbWVudHMpOworICAgICAgICAgICAgaWYgKCFpKSB7CisgICAgICAgICAg
ICAgICAgbGluZUJveC0+c2V0TG9naWNhbExlZnQobG9naWNhbExlZnQpOworICAgICAgICAgICAg
ICAgIHN0YXJ0TG9naWNhbExlZnQgPSBsb2dpY2FsTGVmdDsKKyAgICAgICAgICAgICAgICBtaW5M
b2dpY2FsTGVmdCA9IGxvZ2ljYWxMZWZ0OworICAgICAgICAgICAgICAgIG1heExvZ2ljYWxSaWdo
dCA9IGxvZ2ljYWxMZWZ0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgbmVlZHNXb3JkU3Bh
Y2luZyA9IGZhbHNlOworICAgICAgICAgICAgZW5kTG9naWNhbFJpZ2h0ID0gbGluZUJveC0+cGxh
Y2VCb3hlc1JhbmdlSW5JbmxpbmVEaXJlY3Rpb24oc2VnbWVudFN0YXJ0LT5tX2JveCwgbmV3U2Vn
bWVudFN0YXJ0ID8gbmV3U2VnbWVudFN0YXJ0LT5tX2JveCA6IDAsIGxvZ2ljYWxMZWZ0LCBtaW5M
b2dpY2FsTGVmdCwgbWF4TG9naWNhbFJpZ2h0LCBuZWVkc1dvcmRTcGFjaW5nLCB0ZXh0Qm94RGF0
YU1hcCk7CisgICAgICAgICAgICBpZiAoIW5ld1NlZ21lbnRTdGFydCB8fCAhbmV3U2VnbWVudFN0
YXJ0LT5uZXh0KCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBBU1NFUlQo
bmV3U2VnbWVudFN0YXJ0LT5tX3N0YXJ0c1NlZ21lbnQpOworICAgICAgICAgICAgc2VnbWVudFN0
YXJ0ID0gbmV3U2VnbWVudFN0YXJ0LT5uZXh0KCk7CisgICAgICAgIH0KKyAgICAgICAgbGluZUJv
eC0+c2V0TG9naWNhbFdpZHRoKGVuZExvZ2ljYWxSaWdodCAtIHN0YXJ0TG9naWNhbExlZnQpOwor
ICAgICAgICBpZiAobGluZUJveC0+a25vd25Ub0hhdmVOb092ZXJmbG93KCkgJiYgKG1pbkxvZ2lj
YWxMZWZ0IDwgc3RhcnRMb2dpY2FsTGVmdCB8fCBtYXhMb2dpY2FsUmlnaHQgPiBlbmRMb2dpY2Fs
UmlnaHQpKQorICAgICAgICAgICAgbGluZUJveC0+Y2xlYXJLbm93blRvSGF2ZU5vT3ZlcmZsb3co
KTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgotICAgIGZsb2F0IGF2YWlsYWJsZUxv
Z2ljYWxXaWR0aCA9IGxvZ2ljYWxSaWdodCAtIGxvZ2ljYWxMZWZ0OworICAgIGF2YWlsYWJsZUxv
Z2ljYWxXaWR0aCA9IGxpbmVMb2dpY2FsUmlnaHQgLSBsaW5lTG9naWNhbExlZnQ7CisgICAgY29t
cHV0ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0ZvckxpbmVIZWxwZXIobGluZUJveCwgbGluZUlu
Zm8sIHRleHRBbGlnbiwgbGluZUxvZ2ljYWxMZWZ0LCBhdmFpbGFibGVMb2dpY2FsV2lkdGgsIGZp
cnN0UnVuLCAgdHJhaWxpbmdTcGFjZVJ1biwgdGV4dEJveERhdGFNYXAsIHZlcnRpY2FsUG9zaXRp
b25DYWNoZSwgd29yZE1lYXN1cmVtZW50cyk7CisgICAgLy8gVGhlIHdpZHRocyBvZiBhbGwgcnVu
cyBhcmUgbm93IGtub3duLiBXZSBjYW4gbm93IHBsYWNlIGV2ZXJ5IGlubGluZSBib3ggKGFuZAor
ICAgIC8vIGNvbXB1dGUgYWNjdXJhdGUgd2lkdGhzIGZvciB0aGUgaW5saW5lIGZsb3cgYm94ZXMp
LgorICAgIG5lZWRzV29yZFNwYWNpbmcgPSBmYWxzZTsKKyAgICBsaW5lQm94LT5wbGFjZUJveGVz
SW5JbmxpbmVEaXJlY3Rpb24obGluZUxvZ2ljYWxMZWZ0LCBuZWVkc1dvcmRTcGFjaW5nLCB0ZXh0
Qm94RGF0YU1hcCk7Cit9CiAKK0JpZGlSdW4qIFJlbmRlckJsb2NrOjpjb21wdXRlSW5saW5lRGly
ZWN0aW9uUG9zaXRpb25zRm9yTGluZUhlbHBlcihSb290SW5saW5lQm94KiBsaW5lQm94LCBjb25z
dCBMaW5lSW5mbyYgbGluZUluZm8sIEVUZXh0QWxpZ24gdGV4dEFsaWduLCBmbG9hdCYgbG9naWNh
bExlZnQsCisgICAgZmxvYXQmIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwgQmlkaVJ1biogZmlyc3RS
dW4sIEJpZGlSdW4qIHRyYWlsaW5nU3BhY2VSdW4sIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0Zv
bnRzTWFwJiB0ZXh0Qm94RGF0YU1hcCwgVmVydGljYWxQb3NpdGlvbkNhY2hlJiB2ZXJ0aWNhbFBv
c2l0aW9uQ2FjaGUsCisgICAgV29yZE1lYXN1cmVtZW50cyYgd29yZE1lYXN1cmVtZW50cykKK3sK
ICAgICBib29sIG5lZWRzV29yZFNwYWNpbmcgPSBmYWxzZTsKICAgICBmbG9hdCB0b3RhbExvZ2lj
YWxXaWR0aCA9IGxpbmVCb3gtPmdldEZsb3dTcGFjaW5nTG9naWNhbFdpZHRoKCk7CiAgICAgdW5z
aWduZWQgZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudCA9IDA7CkBAIC05MDYsNyArOTUwLDEwIEBA
IHZvaWQgUmVuZGVyQmxvY2s6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlvbnNGb3JMaW5l
KFJvb3RJbmxpbmVCb3gqIGxpbmVCb3gsCiAgICAgVmVjdG9yPHVuc2lnbmVkLCAxNj4gZXhwYW5z
aW9uT3Bwb3J0dW5pdGllczsKICAgICBSZW5kZXJPYmplY3QqIHByZXZpb3VzT2JqZWN0ID0gMDsK
IAotICAgIGZvciAoQmlkaVJ1biogciA9IGZpcnN0UnVuOyByOyByID0gci0+bmV4dCgpKSB7Cisg
ICAgQmlkaVJ1biogciA9IGZpcnN0UnVuOworICAgIGZvciAoOyByOyByID0gci0+bmV4dCgpKSB7
CisgICAgICAgIGlmIChyLT5tX3N0YXJ0c1NlZ21lbnQpCisgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgaWYgKCFyLT5tX2JveCB8fCByLT5tX29iamVjdC0+aXNPdXRPZkZsb3dQb3NpdGlvbmVk
KCkgfHwgci0+bV9ib3gtPmlzTGluZUJyZWFrKCkpCiAgICAgICAgICAgICBjb250aW51ZTsgLy8g
UG9zaXRpb25lZCBvYmplY3RzIGFyZSBvbmx5IHBhcnRpY2lwYXRpbmcgdG8gZmlndXJlIG91dCB0
aGVpcgogICAgICAgICAgICAgICAgICAgICAgIC8vIGNvcnJlY3Qgc3RhdGljIHggcG9zaXRpb24u
ICBUaGV5IGhhdmUgbm8gZWZmZWN0IG9uIHRoZSB3aWR0aC4KQEAgLTk1NiwxMCArMTAwMyw3IEBA
IHZvaWQgUmVuZGVyQmxvY2s6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlvbnNGb3JMaW5l
KFJvb3RJbmxpbmVCb3gqIGxpbmVCb3gsCiAKICAgICBjb21wdXRlRXhwYW5zaW9uRm9ySnVzdGlm
aWVkVGV4dChmaXJzdFJ1biwgdHJhaWxpbmdTcGFjZVJ1biwgZXhwYW5zaW9uT3Bwb3J0dW5pdGll
cywgZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudCwgdG90YWxMb2dpY2FsV2lkdGgsIGF2YWlsYWJs
ZUxvZ2ljYWxXaWR0aCk7CiAKLSAgICAvLyBUaGUgd2lkdGhzIG9mIGFsbCBydW5zIGFyZSBub3cg
a25vd24uICBXZSBjYW4gbm93IHBsYWNlIGV2ZXJ5IGlubGluZSBib3ggKGFuZAotICAgIC8vIGNv
bXB1dGUgYWNjdXJhdGUgd2lkdGhzIGZvciB0aGUgaW5saW5lIGZsb3cgYm94ZXMpLgotICAgIG5l
ZWRzV29yZFNwYWNpbmcgPSBmYWxzZTsKLSAgICBsaW5lQm94LT5wbGFjZUJveGVzSW5JbmxpbmVE
aXJlY3Rpb24obG9naWNhbExlZnQsIG5lZWRzV29yZFNwYWNpbmcsIHRleHRCb3hEYXRhTWFwKTsK
KyAgICByZXR1cm4gcjsKIH0KIAogdm9pZCBSZW5kZXJCbG9jazo6Y29tcHV0ZUJsb2NrRGlyZWN0
aW9uUG9zaXRpb25zRm9yTGluZShSb290SW5saW5lQm94KiBsaW5lQm94LCBCaWRpUnVuKiBmaXJz
dFJ1biwgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXAmIHRleHRCb3hEYXRhTWFwLApA
QCAtMTEwNiwxMyArMTE1MCwxMyBAQCBzdGF0aWMgaW5saW5lIEJpZGlTdGF0dXMgc3RhdHVzV2l0
aERpcmVjdGlvbihUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24sIGJvb2wgaQogfQogCiAvLyBG
SVhNRTogQmlkaVJlc29sdmVyIHNob3VsZCBoYXZlIHRoaXMgbG9naWMuCi1zdGF0aWMgaW5saW5l
IHZvaWQgY29uc3RydWN0QmlkaVJ1bnMoSW5saW5lQmlkaVJlc29sdmVyJiB0b3BSZXNvbHZlciwg
QmlkaVJ1bkxpc3Q8QmlkaVJ1bj4mIGJpZGlSdW5zLCBjb25zdCBJbmxpbmVJdGVyYXRvciYgZW5k
T2ZMaW5lLCBWaXN1YWxEaXJlY3Rpb25PdmVycmlkZSBvdmVycmlkZSwgYm9vbCBwcmV2aW91c0xp
bmVCcm9rZUNsZWFubHkpCitzdGF0aWMgaW5saW5lIHZvaWQgY29uc3RydWN0QmlkaVJ1bnMoSW5s
aW5lQmlkaVJlc29sdmVyJiB0b3BSZXNvbHZlciwgQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4mIGJpZGlS
dW5zLCBjb25zdCBJbmxpbmVJdGVyYXRvciYgZW5kT2ZSdW5zLCBWaXN1YWxEaXJlY3Rpb25PdmVy
cmlkZSBvdmVycmlkZSwgYm9vbCBwcmV2aW91c0xpbmVCcm9rZUNsZWFubHkpCiB7CiAgICAgLy8g
RklYTUU6IFdlIHNob3VsZCBwYXNzIGEgQmlkaVJ1bkxpc3QgaW50byBjcmVhdGVCaWRpUnVuc0Zv
ckxpbmUgaW5zdGVhZAogICAgIC8vIG9mIHRoZSByZXNvbHZlciBvd25pbmcgdGhlIHJ1bnMuCiAg
ICAgQVNTRVJUKCZ0b3BSZXNvbHZlci5ydW5zKCkgPT0gJmJpZGlSdW5zKTsKICAgICBSZW5kZXJP
YmplY3QqIGN1cnJlbnRSb290ID0gdG9wUmVzb2x2ZXIucG9zaXRpb24oKS5yb290KCk7Ci0gICAg
dG9wUmVzb2x2ZXIuY3JlYXRlQmlkaVJ1bnNGb3JMaW5lKGVuZE9mTGluZSwgb3ZlcnJpZGUsIHBy
ZXZpb3VzTGluZUJyb2tlQ2xlYW5seSk7CisgICAgdG9wUmVzb2x2ZXIuY3JlYXRlQmlkaVJ1bnNG
b3JMaW5lKGVuZE9mUnVucywgb3ZlcnJpZGUsIHByZXZpb3VzTGluZUJyb2tlQ2xlYW5seSk7CiAK
ICAgICB3aGlsZSAoIXRvcFJlc29sdmVyLmlzb2xhdGVkUnVucygpLmlzRW1wdHkoKSkgewogICAg
ICAgICAvLyBJdCBkb2VzIG5vdCBtYXR0ZXIgd2hpY2ggb3JkZXIgd2UgcmVzb2x2ZSB0aGUgcnVu
cyBhcyBsb25nIGFzIHdlIHJlc29sdmUgdGhlbSBhbGwuCkBAIC0xMTUyLDcgKzExOTYsNyBAQCBz
dGF0aWMgaW5saW5lIHZvaWQgY29uc3RydWN0QmlkaVJ1bnMoSW5saW5lQmlkaVJlc29sdmVyJiB0
b3BSZXNvbHZlciwgQmlkaVJ1bkxpcwogICAgICAgICAvLyBXZSBzdG9wIGF0IHRoZSBuZXh0IGVu
ZCBvZiBsaW5lOyB3ZSBtYXkgcmUtZW50ZXIgdGhpcyBpc29sYXRlIGluIHRoZSBuZXh0IGNhbGwg
dG8gY29uc3RydWN0QmlkaVJ1bnMoKS4KICAgICAgICAgLy8gRklYTUU6IFdoYXQgc2hvdWxkIGVu
ZCBhbmQgcHJldmlvdXNMaW5lQnJva2VDbGVhbmx5IGJlPwogICAgICAgICAvLyBybml3YSBzYXlz
IHByZXZpb3VzTGluZUJyb2tlQ2xlYW5seSBpcyBqdXN0IGEgV2luSUUgaGFjayBhbmQgY291bGQg
YWx3YXlzIGJlIGZhbHNlIGhlcmU/Ci0gICAgICAgIGlzb2xhdGVkUmVzb2x2ZXIuY3JlYXRlQmlk
aVJ1bnNGb3JMaW5lKGVuZE9mTGluZSwgTm9WaXN1YWxPdmVycmlkZSwgcHJldmlvdXNMaW5lQnJv
a2VDbGVhbmx5KTsKKyAgICAgICAgaXNvbGF0ZWRSZXNvbHZlci5jcmVhdGVCaWRpUnVuc0Zvckxp
bmUoZW5kT2ZSdW5zLCBOb1Zpc3VhbE92ZXJyaWRlLCBwcmV2aW91c0xpbmVCcm9rZUNsZWFubHkp
OwogICAgICAgICAvLyBOb3RlIHRoYXQgd2UgZG8gbm90IGRlbGV0ZSB0aGUgcnVucyBmcm9tIHRo
ZSByZXNvbHZlci4KICAgICAgICAgLy8gV2UncmUgbm90IGd1YXJhbnRlZWQgdG8gZ2V0IGFueSBC
aWRpUnVucyBpbiB0aGUgcHJldmlvdXMgc3RlcC4gSWYgd2UgZG9uJ3QsIHdlIGFsbG93IHRoZSBw
bGFjZWhvbGRlcgogICAgICAgICAvLyBpdHNlbGYgdG8gYmUgdHVybmVkIGludG8gYW4gSW5saW5l
Qm94LiBXZSBjYW4ndCByZW1vdmUgaXQgaGVyZSB3aXRob3V0IHBvdGVudGlhbGx5IGxvc2luZyB0
cmFjayBvZgpAQCAtMTE2OSw2ICsxMjEzLDM2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBjb25zdHJ1
Y3RCaWRpUnVucyhJbmxpbmVCaWRpUmVzb2x2ZXImIHRvcFJlc29sdmVyLCBCaWRpUnVuTGlzCiAg
ICAgfQogfQogCitzdGF0aWMgaW5saW5lIHZvaWQgY29uc3RydWN0QmlkaVJ1bnNGb3JMaW5lKGNv
bnN0IFJlbmRlckJsb2NrKiBibG9jaywgSW5saW5lQmlkaVJlc29sdmVyJiB0b3BSZXNvbHZlciwg
QmlkaVJ1bkxpc3Q8QmlkaVJ1bj4mIGJpZGlSdW5zLCBjb25zdCBJbmxpbmVJdGVyYXRvciYgZW5k
T2ZMaW5lLCBWaXN1YWxEaXJlY3Rpb25PdmVycmlkZSBvdmVycmlkZSwgYm9vbCBwcmV2aW91c0xp
bmVCcm9rZUNsZWFubHkpCit7CisjaWYgIUVOQUJMRShDU1NfRVhDTFVTSU9OUykKKyAgICBjb25z
dHJ1Y3RCaWRpUnVucyh0b3BSZXNvbHZlciwgYmlkaVJ1bnMsIGVuZE9mTGluZSwgb3ZlcnJpZGUs
IHByZXZpb3VzbGluZUJyb2tlQ2xlYW5seSk7CisjZWxzZQorICAgIEV4Y2x1c2lvblNoYXBlSW5z
aWRlSW5mbyogZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvID0gbGF5b3V0RXhjbHVzaW9uU2hhcGVJ
bnNpZGVJbmZvKGJsb2NrKTsKKyAgICBpZiAoIWV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbyB8fCAh
ZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLT5oYXNTZWdtZW50cygpKSB7CisgICAgICAgIGNvbnN0
cnVjdEJpZGlSdW5zKHRvcFJlc29sdmVyLCBiaWRpUnVucywgZW5kT2ZMaW5lLCBvdmVycmlkZSwg
cHJldmlvdXNMaW5lQnJva2VDbGVhbmx5KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGNvbnN0IFNlZ21lbnRSYW5nZUxpc3QmIHNlZ21lbnRSYW5nZXMgPSBleGNsdXNpb25TaGFwZUlu
c2lkZUluZm8tPnNlZ21lbnRSYW5nZXMoKTsKKyAgICBBU1NFUlQoc2VnbWVudFJhbmdlcy5zaXpl
KCkpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzZWdtZW50UmFuZ2VzLnNpemUoKTsg
aSsrKSB7CisgICAgICAgIElubGluZUl0ZXJhdG9yIHNlZ21lbnRTdGFydCA9IHNlZ21lbnRSYW5n
ZXNbaV0uc3RhcnQ7CisgICAgICAgIElubGluZUl0ZXJhdG9yIHNlZ21lbnRFbmQgPSBzZWdtZW50
UmFuZ2VzW2ldLmVuZDsKKyAgICAgICAgaWYgKGkpIHsKKyAgICAgICAgICAgIEFTU0VSVChzZWdt
ZW50U3RhcnQubV9vYmopOworICAgICAgICAgICAgQmlkaVJ1biogbWlkUG9pbnQgPSBjcmVhdGVS
dW4oc2VnbWVudFN0YXJ0Lm1fcG9zLCBzZWdtZW50U3RhcnQubV9wb3MsIHNlZ21lbnRTdGFydC5t
X29iaiwgdG9wUmVzb2x2ZXIpOworICAgICAgICAgICAgbWlkUG9pbnQtPm1fc3RhcnRzU2VnbWVu
dCA9IHRydWU7CisgICAgICAgICAgICBiaWRpUnVucy5hZGRSdW4obWlkUG9pbnQpOworICAgICAg
ICAgICAgdG9wUmVzb2x2ZXIubWlkcG9pbnRTdGF0ZSgpLmJldHdlZW5NaWRwb2ludHMgPSBmYWxz
ZTsKKyAgICAgICAgfQorICAgICAgICB0b3BSZXNvbHZlci5zZXRQb3NpdGlvbihzZWdtZW50U3Rh
cnQsIG51bWJlck9mSXNvbGF0ZUFuY2VzdG9ycyhzZWdtZW50U3RhcnQpKTsKKyAgICAgICAgY29u
c3RydWN0QmlkaVJ1bnModG9wUmVzb2x2ZXIsIGJpZGlSdW5zLCBzZWdtZW50RW5kLCBvdmVycmlk
ZSwgcHJldmlvdXNMaW5lQnJva2VDbGVhbmx5KTsKKyAgICB9CisjZW5kaWYKK30KKwogLy8gVGhp
cyBmdW5jdGlvbiBjb25zdHJ1Y3RzIGxpbmUgYm94ZXMgZm9yIGFsbCBvZiB0aGUgdGV4dCBydW5z
IGluIHRoZSByZXNvbHZlciBhbmQgY29tcHV0ZXMgdGhlaXIgcG9zaXRpb24uCiBSb290SW5saW5l
Qm94KiBSZW5kZXJCbG9jazo6Y3JlYXRlTGluZUJveGVzRnJvbUJpZGlSdW5zKEJpZGlSdW5MaXN0
PEJpZGlSdW4+JiBiaWRpUnVucywgY29uc3QgSW5saW5lSXRlcmF0b3ImIGVuZCwgTGluZUluZm8m
IGxpbmVJbmZvLCBWZXJ0aWNhbFBvc2l0aW9uQ2FjaGUmIHZlcnRpY2FsUG9zaXRpb25DYWNoZSwg
QmlkaVJ1biogdHJhaWxpbmdTcGFjZVJ1biwgV29yZE1lYXN1cmVtZW50cyYgd29yZE1lYXN1cmVt
ZW50cykKIHsKQEAgLTE0NjYsNyArMTU0MCw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmxheW91dFJ1
bnNBbmRGbG9hdHNJblJhbmdlKExpbmVMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIElubGluCiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBvd25lcnNoaXAgaXMgcmV2
ZXJzZWQuIFdlIHNob3VsZCBvd24gdGhlIEJpZGlSdW5MaXN0IGFuZCBwYXNzIGl0IHRvIGNyZWF0
ZUJpZGlSdW5zRm9yTGluZS4KICAgICAgICAgICAgIEJpZGlSdW5MaXN0PEJpZGlSdW4+JiBiaWRp
UnVucyA9IHJlc29sdmVyLnJ1bnMoKTsKLSAgICAgICAgICAgIGNvbnN0cnVjdEJpZGlSdW5zKHJl
c29sdmVyLCBiaWRpUnVucywgZW5kLCBvdmVycmlkZSwgbGF5b3V0U3RhdGUubGluZUluZm8oKS5w
cmV2aW91c0xpbmVCcm9rZUNsZWFubHkoKSk7CisgICAgICAgICAgICBjb25zdHJ1Y3RCaWRpUnVu
c0ZvckxpbmUodGhpcywgcmVzb2x2ZXIsIGJpZGlSdW5zLCBlbmQsIG92ZXJyaWRlLCBsYXlvdXRT
dGF0ZS5saW5lSW5mbygpLnByZXZpb3VzTGluZUJyb2tlQ2xlYW5seSgpKTsKICAgICAgICAgICAg
IEFTU0VSVChyZXNvbHZlci5wb3NpdGlvbigpID09IGVuZCk7CiAKICAgICAgICAgICAgIEJpZGlS
dW4qIHRyYWlsaW5nU3BhY2VSdW4gPSAhbGF5b3V0U3RhdGUubGluZUluZm8oKS5wcmV2aW91c0xp
bmVCcm9rZUNsZWFubHkoKSA/IGhhbmRsZVRyYWlsaW5nU3BhY2VzKGJpZGlSdW5zLCByZXNvbHZl
ci5jb250ZXh0KCkpIDogMDsKQEAgLTIzMTksNiArMjM5Myw0NCBAQCB2b2lkIFJlbmRlckJsb2Nr
OjpMaW5lQnJlYWtlcjo6cmVzZXQoKQogCiBJbmxpbmVJdGVyYXRvciBSZW5kZXJCbG9jazo6TGlu
ZUJyZWFrZXI6Om5leHRMaW5lQnJlYWsoSW5saW5lQmlkaVJlc29sdmVyJiByZXNvbHZlciwgTGlu
ZUluZm8mIGxpbmVJbmZvLCBSZW5kZXJUZXh0SW5mbyYgcmVuZGVyVGV4dEluZm8sIEZsb2F0aW5n
T2JqZWN0KiBsYXN0RmxvYXRGcm9tUHJldmlvdXNMaW5lLCB1bnNpZ25lZCBjb25zZWN1dGl2ZUh5
cGhlbmF0ZWRMaW5lcywgV29yZE1lYXN1cmVtZW50cyYgd29yZE1lYXN1cmVtZW50cykKIHsKKyNp
ZiAhRU5BQkxFKENTU19FWENMVVNJT05TKQorICAgIHJldHVybiBuZXh0U2VnbWVudEJyZWFrKHJl
c29sdmVyLCBsYXlvdXRTdGF0ZS5saW5lSW5mbygpLCBsYXN0RmxvYXRGcm9tUHJldmlvdXNMaW5l
LCBjb25zZWN1dGl2ZUh5cGhlbmF0ZWRMaW5lcyk7CisjZWxzZQorICAgIEV4Y2x1c2lvblNoYXBl
SW5zaWRlSW5mbyogZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvID0gbGF5b3V0RXhjbHVzaW9uU2hh
cGVJbnNpZGVJbmZvKG1fYmxvY2spOworICAgIGlmICghZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZv
IHx8ICFleGNsdXNpb25TaGFwZUluc2lkZUluZm8tPmhhc1NlZ21lbnRzKCkpCisgICAgICAgIHJl
dHVybiBuZXh0U2VnbWVudEJyZWFrKHJlc29sdmVyLCBsaW5lSW5mbywgcmVuZGVyVGV4dEluZm8s
IGxhc3RGbG9hdEZyb21QcmV2aW91c0xpbmUsIGNvbnNlY3V0aXZlSHlwaGVuYXRlZExpbmVzLCB3
b3JkTWVhc3VyZW1lbnRzKTsKKworICAgIElubGluZUl0ZXJhdG9yIGVuZCA9IHJlc29sdmVyLnBv
c2l0aW9uKCk7CisgICAgSW5saW5lSXRlcmF0b3Igb2xkRW5kID0gZW5kOworCisgICAgY29uc3Qg
U2VnbWVudExpc3QmIHNlZ21lbnRzID0gZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLT5zZWdtZW50
cygpOworICAgIFNlZ21lbnRSYW5nZUxpc3QmIHNlZ21lbnRSYW5nZXMgPSBleGNsdXNpb25TaGFw
ZUluc2lkZUluZm8tPnNlZ21lbnRSYW5nZXMoKTsKKyAgICBzZWdtZW50UmFuZ2VzLmNsZWFyKCk7
CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2VnbWVudHMuc2l6ZSgpOyBpKyspIHsK
KyAgICAgICAgSW5saW5lSXRlcmF0b3Igc2VnbWVudFN0YXJ0ID0gcmVzb2x2ZXIucG9zaXRpb24o
KTsKKyAgICAgICAgZW5kID0gbmV4dFNlZ21lbnRCcmVhayhyZXNvbHZlciwgbGluZUluZm8sIHJl
bmRlclRleHRJbmZvLCBsYXN0RmxvYXRGcm9tUHJldmlvdXNMaW5lLCBjb25zZWN1dGl2ZUh5cGhl
bmF0ZWRMaW5lcywgd29yZE1lYXN1cmVtZW50cyk7CisKKyAgICAgICAgLy8gTm90ZSB0aGF0IHJl
c29sdmVyLnBvc2l0aW9uIGlzIGFscmVhZHkgc2tpcHBpbmcgc29tZSBvZiB0aGUgd2hpdGUgc3Bh
Y2UgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbGluZSwKKyAgICAgICAgLy8gc28gdGhhdCdzIHdo
eSBzZWdtZW50U3RhcnQgbWlnaHQgYmUgZGlmZmVyZW50IHRoYW4gcmVzb2x2ZXIucG9zaXRpb24o
KS4KKyAgICAgICAgQVNTRVJUKHNlZ21lbnRSYW5nZXMuc2l6ZSgpID09IGkpOworICAgICAgICBM
aW5lU2VnbWVudFJhbmdlIHJhbmdlKHNlZ21lbnRTdGFydCwgZW5kKTsKKyAgICAgICAgc2VnbWVu
dFJhbmdlcy5hcHBlbmQocmFuZ2UpOworCisgICAgICAgIHJlc29sdmVyLnNldFBvc2l0aW9uKGVu
ZCwgbnVtYmVyT2ZJc29sYXRlQW5jZXN0b3JzKGVuZCkpOworCisgICAgICAgIGlmIChsaW5lSW5m
by5wcmV2aW91c0xpbmVCcm9rZUNsZWFubHkoKSkgeworICAgICAgICAgICAgLy8gSWYgd2UgaGl0
IGEgbmV3IGxpbmUgYnJlYWssIGp1c3Qgc3RvcCBhZGRpbmcgYW55dGhpbmcgdG8gdGhpcyBsaW5l
LgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgcmVzb2x2ZXIuc2V0
UG9zaXRpb25JZ25vcmluZ05lc3RlZElzb2xhdGVzKG9sZEVuZCk7CisjZW5kaWYKKyAgICByZXR1
cm4gZW5kOworfQorCitJbmxpbmVJdGVyYXRvciBSZW5kZXJCbG9jazo6TGluZUJyZWFrZXI6Om5l
eHRTZWdtZW50QnJlYWsoSW5saW5lQmlkaVJlc29sdmVyJiByZXNvbHZlciwgTGluZUluZm8mIGxp
bmVJbmZvLCBSZW5kZXJUZXh0SW5mbyYgcmVuZGVyVGV4dEluZm8sIEZsb2F0aW5nT2JqZWN0KiBs
YXN0RmxvYXRGcm9tUHJldmlvdXNMaW5lLCB1bnNpZ25lZCBjb25zZWN1dGl2ZUh5cGhlbmF0ZWRM
aW5lcywgV29yZE1lYXN1cmVtZW50cyYgd29yZE1lYXN1cmVtZW50cykKK3sKICAgICByZXNldCgp
OwogCiAgICAgQVNTRVJUKHJlc29sdmVyLnBvc2l0aW9uKCkucm9vdCgpID09IG1fYmxvY2spOwpA
QCAtMjkwMCw2ICszMDEyLDggQEAgSW5saW5lSXRlcmF0b3IgUmVuZGVyQmxvY2s6OkxpbmVCcmVh
a2VyOjpuZXh0TGluZUJyZWFrKElubGluZUJpZGlSZXNvbHZlciYgcmVzb2wKICAgICAgICAgfQog
ICAgIH0KIAorICAgIC8vIEZJWE1FIEJ1ZyAxMDAwNDk6IFdlIGRvIG5vdCBuZWVkIHRvIGNvbnN1
bWUgaW5wdXQgaW4gYSBtdWx0aS1zZWdtZW50IGxpbmUKKyAgICAvLyB1bmxlc3Mgbm8gc2VnbWVu
dCB3aWxsLgogICAgIC8vIG1ha2Ugc3VyZSB3ZSBjb25zdW1lIGF0IGxlYXN0IG9uZSBjaGFyL29i
amVjdC4KICAgICBpZiAobEJyZWFrID09IHJlc29sdmVyLnBvc2l0aW9uKCkpCiAgICAgICAgIGxC
cmVhay5pbmNyZW1lbnQoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmYTE1NzBhNDQxMzk2MDcwYWY5Y2Y0MmM1MGU2NWJl
NTYyOTQ2YmVmLi45ZTU5ZWQ0M2Q2YzUxODliNWYzNjk3ZDliNzQ1YmUxMzRjMjU0ZDNiIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMTAtMjIgIEJlYXIgVHJhdmlzICA8YmV0cmF2aXNAYWRv
YmUuY29tPgorCisgICAgICAgIFtDU1MgRXhjbHVzaW9uc10gRW5hYmxlIHNoYXBlLWluc2lkZSBm
b3IgbXVsdGlwbGUtc2VnbWVudCBwb2x5Z29ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE4NzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgYSBzaW1wbGUgdGVzdCB0byBlbnN1cmUgbXVsdGlw
bGUgc2VnbWVudHMgZnVuY3Rpb25hbGl0eSBpcyB3b3JraW5nLiBBZGRpdGlvbmFsCisgICAgICAg
IHRlc3Rpbmcgd2lsbCBmb2xsb3cgaW4gc3Vic2VxdWVudCBwYXRjaGVzLgorCisgICAgICAgICog
ZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVu
dHMtMDAxLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXhjbHVzaW9ucy9z
aGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNlZ21lbnRzLTAwMS5odG1sOiBBZGRl
ZC4KKwogMjAxMi0xMC0yMiAgRW1pbCBBIEVrbHVuZCAgPGVhZUBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCBjaHJvbWl1bSB0ZXN0IGV4cGVjdGF0aW9ucyB1cGRhdGUuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWlu
c2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDEtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNlZ21lbnRz
LTAwMS1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFjOThmYjE4OWE1YzA3YTczYjg5NzdiNzhh
MWU1OGY2YmE2ZTZhNTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1
c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDEtZXhw
ZWN0ZWQuaHRtbApAQCAtMCwwICsxLDE4IEBACis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorICAg
ICNzaGFwZS1pbnNpZGUgeworICAgICAgICBmb250OiA1MHB4LzEgQWhlbSwgc2Fucy1zZXJpZjsK
KyAgICAgICAgY29sb3I6IGdyZWVuOworICAgICAgICB3aWR0aDogMjUwcHg7CisgICAgICAgIGhl
aWdodDogMTAwcHg7CisgICAgICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDsKKyAgICB9Cis8L3N0
eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJzaGFwZS1pbnNpZGUiPlhYIFhYIFhYWFhY
PC9kaXY+CitUaGlzIHRlc3QgcmVxdWlyZXMgdGhlIEFoZW0gZm9udCwgYW5kIHNob3VsZCBkaXNw
bGF5IGEgNXgyIGdyaWQgb2YgZ3JlZW4gc3F1YXJlcywgd2l0aCBvbmUgbWlzc2luZyBpbiB0aGUg
Y2VudGVyIG9mIHRoZSB0b3Agcm93LgorSXQgdGVzdHMgdGhhdCBhIGxpbmUgbWF5IGNvbnRhaW4g
bXVsdGlwbGUgc2VnbWVudHMgb2YgdGV4dC4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMv
c2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDEuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRp
cGxlLXNlZ21lbnRzLTAwMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjExMDYyNDc0ZTdhZjY5YTlkNjk3ZjFl
MTllZjkzY2E0OWE5MmU2N2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V4
Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDEu
aHRtbApAQCAtMCwwICsxLDE5IEBACis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorICAgICNzaGFw
ZS1pbnNpZGUgeworICAgICAgICBmb250OiA1MHB4LzEgQWhlbSwgc2Fucy1zZXJpZjsKKyAgICAg
ICAgY29sb3I6IGdyZWVuOworICAgICAgICB3aWR0aDogMjUwcHg7CisgICAgICAgIGhlaWdodDog
MTAwcHg7CisgICAgICAgIC13ZWJraXQtc2hhcGUtaW5zaWRlOiBwb2x5Z29uKDAgMCwgMTAwcHgg
MCwgMTAwcHggMjVweCwgMTUwcHggMjVweCwgMTUwcHggMCwgMjUwcHggMCwgMjUwcHggMTAwcHgs
IDAgMTAwcHgpOworICAgICAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7CisgICAgfQorPC9zdHls
ZT4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0ic2hhcGUtaW5zaWRlIj5YWFhYWFhYWFg8L2Rp
dj4KK1RoaXMgdGVzdCByZXF1aXJlcyB0aGUgQWhlbSBmb250LCBhbmQgc2hvdWxkIGRpc3BsYXkg
YSA1eDIgZ3JpZCBvZiBncmVlbiBzcXVhcmVzLCB3aXRoIG9uZSBtaXNzaW5nIGluIHRoZSBjZW50
ZXIgb2YgdGhlIHRvcCByb3cuCitJdCB0ZXN0cyB0aGF0IGEgbGluZSBtYXkgY29udGFpbiBtdWx0
aXBsZSBzZWdtZW50cyBvZiB0ZXh0LgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170278</attachid>
            <date>2012-10-23 17:35:56 -0700</date>
            <delta_ts>2012-10-25 13:29:47 -0700</delta_ts>
            <desc>Updating patch</desc>
            <filename>bug-91878-20121023173433.patch</filename>
            <type>text/plain</type>
            <size>38005</size>
            <attacher name="Bear Travis">betravis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyMjgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmQwYzM5N2Y1OTZhYTE0
MDk2Y2M4ZWVkMGYyM2NkY2UxMmY1ZTY3NS4uMWU5NTUxYTE4NzEzMmUyMDBjMDMwMjY2MDQ0ZGUz
YWQzYmViMTA5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDEyLTEwLTIzICBCZWFy
IFRyYXZpcyAgPGJldHJhdmlzQGFkb2JlLmNvbT4KKworICAgICAgICBbQ1NTIEV4Y2x1c2lvbnNd
IEVuYWJsZSBzaGFwZS1pbnNpZGUgZm9yIG11bHRpcGxlLXNlZ21lbnQgcG9seWdvbnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxODc4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGF0Y2ggYWRkaW5nIHN1
cHBvcnQgZm9yIG11bHRpcGxlLXNlZ21lbnQgcG9seWdvbnMgZm9yIHNoYXBlLWluc2lkZXMgZnJv
bQorICAgICAgICB0aGUgQ1NTIEV4Y2x1c2lvbnMgc3BlY2lmaWNhdGlvbi4gVGhlIGxheW91dCBj
b2RlIGhhcyBiZWVuIG1vZGlmaWVkIHRvIGZpcnN0CisgICAgICAgIHN1cHBvcnQgZGl2aWRpbmcg
dGV4dCBpbnRvIG11bHRpcGxlIHNlZ21lbnRzIHBlciBsaW5lLCBhbmQgdGhlbiB0byBsYXkgb3V0
CisgICAgICAgIG11bHRpcGxlIHNlZ21lbnRzIHBlciBsaW5lIGJveC4KKworICAgICAgICBUZXN0
czogIGZhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNl
Z21lbnRzLTAwMS5odG1sCisgICAgICAgICAgICAgICAgZmFzdC9leGNsdXNpb25zL3NoYXBlLWlu
c2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAyLmh0bWwKKworICAgICAgICAq
IHJlbmRlcmluZy9CaWRpUnVuLmg6CisgICAgICAgIChXZWJDb3JlOjpCaWRpUnVuOjpCaWRpUnVu
KToKKyAgICAgICAgKEJpZGlSdW4pOiBBZGRlZCBhICdzdGFydHNTZWdtZW50JyBib29sZWFuIHRv
IHRyYWNrIHdoZXRoZXIgYSBydW4gYmVnaW5zCisgICAgICAgIGEgbmV3IHNlZ21lbnQuCisgICAg
ICAgICogcmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFeGNsdXNpb25TaGFwZUluc2lkZUluZm86OmNvbXB1dGVTZWdtZW50c0ZvckxpbmUp
OiBDbGVhciB0aGUKKyAgICAgICAgc2VnbWVudCByYW5nZXMgd2hlbiBjb21wdXRpbmcgc2VnbWVu
dHMgZm9yIGEgbmV3IGxpbmUuCisgICAgICAgICogcmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlSW5z
aWRlSW5mby5oOgorICAgICAgICAoTGluZVNlZ21lbnRSYW5nZSk6IEFkZGVkIGEgbmV3IHR5cGUg
dG8gdHJhY2sgc2VnbWVudCBvZmZzZXRzLgorICAgICAgICAoV2ViQ29yZTo6TGluZVNlZ21lbnRS
YW5nZTo6TGluZVNlZ21lbnRSYW5nZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbzo6c2VnbWVudFJhbmdlcyk6IEFkZGVkIGEg
Z2V0dGVyIGZvcgorICAgICAgICB0aGUgbGluZSBzZWdtZW50IHJhbmdlcyB2ZWN0b3IuCisgICAg
ICAgIChFeGNsdXNpb25TaGFwZUluc2lkZUluZm8pOgorICAgICAgICAqIHJlbmRlcmluZy9Jbmxp
bmVGbG93Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OnBsYWNlQm94
ZXNJbklubGluZURpcmVjdGlvbik6IE1vZGlmaWVkIHRvIGNhbGwKKyAgICAgICAgYSByZWZhY3Rv
cmVkIGJveCBwbGFjZW1lbnQgYWxnb3JpdGhtIHRoYXQgdGFrZXMgYSBiZWdpbm5pbmcgYW5kIGVu
ZCBwb3NpdGlvbi4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5l
Rmxvd0JveDo6cGxhY2VCb3hSYW5nZUluSW5saW5lRGlyZWN0aW9uKTogU2ltaWxhciB0byB0aGUK
KyAgICAgICAgcGxhY2VCb3hlcyBtZXRob2QsIGJ1dCB0YWtlcyBhbiBlbmQgcG9zaXRpb24gdGhh
dCBtYXkgb2NjdXIgYmVmb3JlIHRoZSBlbmQKKyAgICAgICAgb2YgdGhlIGxpbmUuCisgICAgICAg
ICogcmVuZGVyaW5nL0lubGluZUZsb3dCb3guaDoKKyAgICAgICAgKElubGluZUZsb3dCb3gpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9jazo6ZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvSW50ZXJuYWwpOiBGYWN0b3JlZCBv
dXQgY2FsbHMKKyAgICAgICAgdG8gRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvIHRvIHRoZSAuY3Bw
IGZpbGUsIGFzIEV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbworICAgICAgICByZXF1aXJlcyBJbmxp
bmVJdGVyYXRvci5oLCB3aGljaCB3b3VsZCBjcmVhdGUgYSBjaXJjdWxhciBkZXBlbmRlbmN5IGlu
CisgICAgICAgIEV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby5oLgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpleGNsdXNpb25TaGFwZUluc2lkZUluZm8p
OiBNb2RpZmllZCB0byBjYWxsCisgICAgICAgIGV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mb0ludGVy
bmFsLgorICAgICAgICAoUmVuZGVyQmxvY2spOgorICAgICAgICAoTGluZUJyZWFrZXIpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGluZVdpZHRoOjpMaW5lV2lkdGgpOiBMaW5lV2lkdGggbm93IHVzZXMgdGhlIG51bWJl
ciBvZiBjb21wdXRlZAorICAgICAgICBzZWdtZW50UmFuZ2VzIHRvIGRldGVybWluZSB3aGljaCBM
aW5lU2VnbWVudCB0byB1c2Ugd2hlbiBjYWxjdWxhdGluZyB3aWR0aC4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJsb2NrOjpjcmVhdGVMaW5lQm94ZXMpOiBOb3cgdGFrZXMgYSBib29sZWFuIHRv
IGRldGVybWluZQorICAgICAgICB3aGV0aGVyIG9yIG5vdCBpdCBjYW4gc2hhcmUgdGhlIHNhbWUg
cGFyZW50Qm94IGFzIGl0cyBzaWJsaW5ncyAoc2VnbWVudHMKKyAgICAgICAgbXVzdCBiZSBhYmxl
IHRvIHBvc2l0aW9uIHRoZW1zZWx2ZXMgc2VwYXJhdGVseSBpbiB0aGUgUm9vdElubGluZUJveCku
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y29uc3RydWN0TGluZSk6CisgICAgICAg
IChXZWJDb3JlOjpjb21wdXRlRXhwYW5zaW9uRm9ySnVzdGlmaWVkVGV4dCk6IERvIGluY2x1ZGUg
cnVucyB0aGF0IHN0YXJ0IG5ldworICAgICAgICBzZWdtZW50cyB3aGVuIGNhbGN1bGF0aW5nIGp1
c3RpZmljYXRpb24gZm9yIHRoZSBjdXJyZW50IHNlZ21lbnQuCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9jazo6Y29tcHV0ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0ZvckxpbmUpOiBNb2Rp
ZmllZCB0bworICAgICAgICB1c2UgdGhlIGNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlvbnNG
b3JMaW5lSGVscGVyLCB3aGljaCBjYW4gcG9zaXRpb24KKyAgICAgICAgbXVsdGlwbGUgc2VnbWVu
dHMgb2YgdGV4dCBwZXIgbGluZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjb21w
dXRlSW5saW5lRGlyZWN0aW9uUG9zaXRpb25zRm9yTGluZUhlbHBlcik6IFBvc2l0aW9ucworICAg
ICAgICB0aGUgZ2l2ZW4gc2VnbWVudCBvZiB0ZXh0IGFuZCBjYWxjdWxhdGVzIGl0cyBsYXlvdXQg
b2Zmc2V0cy4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEJpZGlSdW5zKTogTW9kaWZpZWQg
c29tZSB2YXJpYWJsZXMgZnJvbSAnZW5kT2ZMaW5lJyB0byAnZW5kT2ZTZWdtZW50Jy4KKyAgICAg
ICAgKFdlYkNvcmU6OmNvbnN0cnVjdEJpZGlSdW5zRm9yTGluZSk6IENvbnN0cnVjdCB0aGUgYmlk
aSBydW5zIGZvciBlYWNoIHNlZ21lbnQgaW4KKyAgICAgICAgdGhlIGdpdmVuIGxpbmUuCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpsYXlvdXRSdW5z
QW5kRmxvYXRzSW5SYW5nZSk6IENhbGwgY29uc3RydWN0QmlkaVJ1bnNGb3JMaW5lLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OkxpbmVCcmVha2VyOjpuZXh0TGluZUJyZWFrKTogTW92
ZWQgdGhlIGxpbmUgYnJlYWtpbmcgY29kZQorICAgICAgICB0byBicmVhayBzZWdtZW50cywgd2l0
aCBuZXh0TGluZUJyZWFrIGl0ZXJhdGluZyBvdmVyIHNlZ21lbnQgYnJlYWtzIGZvciB0aGUgZW50
aXJlIGxpbmUuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6TGluZUJyZWFrZXI6Om5l
eHRTZWdtZW50QnJlYWspOiBDYWxjdWxhdGVzIGhvdyBtdWNoIHRleHQgYQorICAgICAgICBzZWdt
ZW50IGNhbiBob2xkLiBUaGlzIGNvZGUgd2FzIG9yaWdpbmFsbHkgaW4gbmV4dExpbmVCcmVhay4K
KwogMjAxMi0xMC0yMyAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAg
W1dlYktpdDIgQVBJXSBBZGQgcHJvcGVydGllcyB0byBnZXQgdGV4dFJlY3RzIGZyb20gYSBXS0RP
TVJhbmdlIG9yIFdLRE9NTm9kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0JpZGlSdW4uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9CaWRpUnVuLmgKaW5kZXggZjUw
ZmExOTZmZjZlMmU1YWZlOGZiY2UzNzg1OWFkOTRkOThkNmMxMS4uOTliMmFhZWM1NmQxMTc0NTAy
MTBkOWZkYmYyZGM4ZWUxNWIyMjJmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0JpZGlSdW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQmlkaVJ1bi5oCkBA
IC0zOSw2ICszOSw3IEBAIHN0cnVjdCBCaWRpUnVuIDogQmlkaUNoYXJhY3RlclJ1biB7CiAgICAg
ICAgICwgbV9vYmplY3Qob2JqZWN0KQogICAgICAgICAsIG1fYm94KDApCiAgICAgICAgICwgbV9o
YXNIeXBoZW4oZmFsc2UpCisgICAgICAgICwgbV9zdGFydHNTZWdtZW50KGZhbHNlKQogICAgIHsK
ICAgICB9CiAKQEAgLTYxLDYgKzYyLDcgQEAgcHVibGljOgogICAgIFJlbmRlck9iamVjdCogbV9v
YmplY3Q7CiAgICAgSW5saW5lQm94KiBtX2JveDsKICAgICBib29sIG1faGFzSHlwaGVuOworICAg
IGJvb2wgbV9zdGFydHNTZWdtZW50OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLmNwcAppbmRleCBiNzgzMGYxMGVm
NmJlNGMzOTIzMDc4MzUzYzRkMDk4N2Q3NzFhMGRmLi5mZGIxMGY5MzMzOWY3NmVkMzEwODMxYmRm
ZDc2ZTg4YmM4NTc0YWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhj
bHVzaW9uU2hhcGVJbnNpZGVJbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
RXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLmNwcApAQCAtMTA2LDYgKzEwNiw3IEBAIGJvb2wgRXhj
bHVzaW9uU2hhcGVJbnNpZGVJbmZvOjpjb21wdXRlU2VnbWVudHNGb3JMaW5lKExheW91dFVuaXQg
bGluZVRvcCwgTGF5b3V0CiAgICAgbV9saW5lVG9wID0gbGluZVRvcDsKICAgICBtX2xpbmVIZWln
aHQgPSBsaW5lSGVpZ2h0OwogICAgIG1fc2VnbWVudHMuY2xlYXIoKTsKKyAgICBtX3NlZ21lbnRS
YW5nZXMuY2xlYXIoKTsKIAogICAgIGlmIChsaW5lT3ZlcmxhcHNTaGFwZUJvdW5kcygpKSB7CiAg
ICAgICAgIEFTU0VSVChtX3NoYXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9FeGNsdXNpb25TaGFwZUluc2lkZUluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9FeGNsdXNpb25TaGFwZUluc2lkZUluZm8uaAppbmRleCBiZWEyYjQ1YTAzMTc1ZGI4YTAzYTU4
NzBhNDk4OTI3NGJiZGQwY2E5Li4zMzNmNjI2ZmE2ZTAzOGYzMDhlYTg2NzA4MDdhNjY1MTI3MDc1
M2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGVJ
bnNpZGVJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBl
SW5zaWRlSW5mby5oCkBAIC0zNCw2ICszNCw3IEBACiAKICNpbmNsdWRlICJFeGNsdXNpb25TaGFw
ZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yLmgi
CiAjaW5jbHVkZSAiTGF5b3V0VHlwZXNJbmxpbmVNZXRob2RzLmgiCiAjaW5jbHVkZSA8d3RmL093
blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CkBAIC00Myw2ICs0NCwxNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlckJsb2NrOwogCitzdHJ1Y3QgTGluZVNl
Z21lbnRSYW5nZSB7CisgICAgSW5saW5lSXRlcmF0b3Igc3RhcnQ7CisgICAgSW5saW5lSXRlcmF0
b3IgZW5kOworICAgIExpbmVTZWdtZW50UmFuZ2UoSW5saW5lSXRlcmF0b3Igc3RhcnQsIElubGlu
ZUl0ZXJhdG9yIGVuZCkKKyAgICAgICAgOiBzdGFydChzdGFydCkKKyAgICAgICAgLCBlbmQoZW5k
KQorICAgIHsKKyAgICB9Cit9OwordHlwZWRlZiBWZWN0b3I8TGluZVNlZ21lbnRSYW5nZT4gU2Vn
bWVudFJhbmdlTGlzdDsKKwogY2xhc3MgRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvIHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTczLDYgKzg1LDEwIEBAIHB1Ymxp
YzoKICAgICAgICAgQVNTRVJUKGhhc1NlZ21lbnRzKCkpOwogICAgICAgICByZXR1cm4gbV9zZWdt
ZW50czsKICAgICB9CisgICAgU2VnbWVudFJhbmdlTGlzdCYgc2VnbWVudFJhbmdlcygpCisgICAg
eworICAgICAgICByZXR1cm4gbV9zZWdtZW50UmFuZ2VzOworICAgIH0KICAgICBib29sIGNvbXB1
dGVTZWdtZW50c0ZvckxpbmUoTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVIZWln
aHQpOwogICAgIGJvb2wgbGluZU92ZXJsYXBzU2hhcGVCb3VuZHMoKSBjb25zdDsKICAgICB2b2lk
IGNvbXB1dGVTaGFwZVNpemUoTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgsIExheW91dFVuaXQgbG9n
aWNhbEhlaWdodCk7CkBAIC05MCw2ICsxMDYsNyBAQCBwcml2YXRlOgogICAgIExheW91dFVuaXQg
bV9sb2dpY2FsSGVpZ2h0OwogCiAgICAgU2VnbWVudExpc3QgbV9zZWdtZW50czsKKyAgICBTZWdt
ZW50UmFuZ2VMaXN0IG1fc2VnbWVudFJhbmdlczsKICAgICBib29sIG1fc2hhcGVTaXplRGlydHk7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0Jv
eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKaW5kZXgg
NjZiYzExZTA5NDcyNjE5NTZjYTllMmE4YmE1MmIxMDU5NjcwNGZlNS4uMTdhYjJhMmVlYzZkMDJi
YWViNThjOTAyZGViNDZlNDU1NWEwMTdhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9J
bmxpbmVGbG93Qm94LmNwcApAQCAtMzc3LDcgKzM3NywxOCBAQCBmbG9hdCBJbmxpbmVGbG93Qm94
OjpwbGFjZUJveGVzSW5JbmxpbmVEaXJlY3Rpb24oZmxvYXQgbG9naWNhbExlZnQsIGJvb2wmIG5l
ZWRzVwogICAgIGZsb2F0IG1pbkxvZ2ljYWxMZWZ0ID0gc3RhcnRMb2dpY2FsTGVmdDsKICAgICBm
bG9hdCBtYXhMb2dpY2FsUmlnaHQgPSBsb2dpY2FsTGVmdDsKIAotICAgIGZvciAoSW5saW5lQm94
KiBjdXJyID0gZmlyc3RDaGlsZCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4dE9uTGluZSgpKSB7
CisgICAgcGxhY2VCb3hSYW5nZUluSW5saW5lRGlyZWN0aW9uKGZpcnN0Q2hpbGQoKSwgMCwgbG9n
aWNhbExlZnQsIG1pbkxvZ2ljYWxMZWZ0LCBtYXhMb2dpY2FsUmlnaHQsIG5lZWRzV29yZFNwYWNp
bmcsIHRleHRCb3hEYXRhTWFwKTsKKworICAgIGxvZ2ljYWxMZWZ0ICs9IGJvcmRlckxvZ2ljYWxS
aWdodCgpICsgcGFkZGluZ0xvZ2ljYWxSaWdodCgpOworICAgIHNldExvZ2ljYWxXaWR0aChsb2dp
Y2FsTGVmdCAtIHN0YXJ0TG9naWNhbExlZnQpOworICAgIGlmIChrbm93blRvSGF2ZU5vT3ZlcmZs
b3coKSAmJiAobWluTG9naWNhbExlZnQgPCBzdGFydExvZ2ljYWxMZWZ0IHx8IG1heExvZ2ljYWxS
aWdodCA+IGxvZ2ljYWxMZWZ0KSkKKyAgICAgICAgY2xlYXJLbm93blRvSGF2ZU5vT3ZlcmZsb3co
KTsKKyAgICByZXR1cm4gbG9naWNhbExlZnQ7Cit9CisKK2Zsb2F0IElubGluZUZsb3dCb3g6OnBs
YWNlQm94UmFuZ2VJbklubGluZURpcmVjdGlvbihJbmxpbmVCb3gqIGZpcnN0Q2hpbGQsIElubGlu
ZUJveCogbGFzdENoaWxkLCBmbG9hdCYgbG9naWNhbExlZnQsIGZsb2F0JiBtaW5Mb2dpY2FsTGVm
dCwgZmxvYXQmIG1heExvZ2ljYWxSaWdodCwgYm9vbCYgbmVlZHNXb3JkU3BhY2luZywgR2x5cGhP
dmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXAmIHRleHRCb3hEYXRhTWFwKQoreworICAgIGZvciAo
SW5saW5lQm94KiBjdXJyID0gZmlyc3RDaGlsZDsgY3VyciAmJiBjdXJyICE9IGxhc3RDaGlsZDsg
Y3VyciA9IGN1cnItPm5leHRPbkxpbmUoKSkgewogICAgICAgICBpZiAoY3Vyci0+cmVuZGVyZXIo
KS0+aXNUZXh0KCkpIHsKICAgICAgICAgICAgIElubGluZVRleHRCb3gqIHRleHQgPSB0b0lubGlu
ZVRleHRCb3goY3Vycik7CiAgICAgICAgICAgICBSZW5kZXJUZXh0KiBydCA9IHRvUmVuZGVyVGV4
dCh0ZXh0LT5yZW5kZXJlcigpKTsKQEAgLTQyOSwxMSArNDQwLDYgQEAgZmxvYXQgSW5saW5lRmxv
d0JveDo6cGxhY2VCb3hlc0luSW5saW5lRGlyZWN0aW9uKGZsb2F0IGxvZ2ljYWxMZWZ0LCBib29s
JiBuZWVkc1cKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLQotICAgIGxvZ2ljYWxM
ZWZ0ICs9IGJvcmRlckxvZ2ljYWxSaWdodCgpICsgcGFkZGluZ0xvZ2ljYWxSaWdodCgpOwotICAg
IHNldExvZ2ljYWxXaWR0aChsb2dpY2FsTGVmdCAtIHN0YXJ0TG9naWNhbExlZnQpOwotICAgIGlm
IChrbm93blRvSGF2ZU5vT3ZlcmZsb3coKSAmJiAobWluTG9naWNhbExlZnQgPCBzdGFydExvZ2lj
YWxMZWZ0IHx8IG1heExvZ2ljYWxSaWdodCA+IGxvZ2ljYWxMZWZ0KSkKLSAgICAgICAgY2xlYXJL
bm93blRvSGF2ZU5vT3ZlcmZsb3coKTsKICAgICByZXR1cm4gbG9naWNhbExlZnQ7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oCmluZGV4IDQ4YjcyMGM3NWRkNTNl
N2QyMDk3ODJkZDRiYTJmMzFhNDUyMTUwMGUuLjU1M2QzYmQwN2VkYWEyOTc2ZTE2NDdjMzJmYmI0
NzAzYjUzMzViNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVG
bG93Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guaApA
QCAtMTc0LDYgKzE3NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRldGVybWluZVNwYWNpbmdGb3JG
bG93Qm94ZXMoYm9vbCBsYXN0TGluZSwgYm9vbCBpc0xvZ2ljYWxseUxhc3RSdW5XcmFwcGVkLCBS
ZW5kZXJPYmplY3QqIGxvZ2ljYWxseUxhc3RSdW5SZW5kZXJlcik7CiAgICAgTGF5b3V0VW5pdCBn
ZXRGbG93U3BhY2luZ0xvZ2ljYWxXaWR0aCgpOwogICAgIGZsb2F0IHBsYWNlQm94ZXNJbklubGlu
ZURpcmVjdGlvbihmbG9hdCBsb2dpY2FsTGVmdCwgYm9vbCYgbmVlZHNXb3JkU3BhY2luZywgR2x5
cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXAmKTsKKyAgICBmbG9hdCBwbGFjZUJveFJhbmdl
SW5JbmxpbmVEaXJlY3Rpb24oSW5saW5lQm94KiBmaXJzdENoaWxkLCBJbmxpbmVCb3gqIGxhc3RD
aGlsZCwgZmxvYXQmIGxvZ2ljYWxMZWZ0LCBmbG9hdCYgbWluTG9naWNhbExlZnQsIGZsb2F0JiBt
YXhMb2dpY2FsUmlnaHQsIGJvb2wmIG5lZWRzV29yZFNwYWNpbmcsIEdseXBoT3ZlcmZsb3dBbmRG
YWxsYmFja0ZvbnRzTWFwJik7CiAgICAgdm9pZCBjb21wdXRlTG9naWNhbEJveEhlaWdodHMoUm9v
dElubGluZUJveCosIExheW91dFVuaXQmIG1heFBvc2l0aW9uVG9wLCBMYXlvdXRVbml0JiBtYXhQ
b3NpdGlvbkJvdHRvbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQmIG1h
eEFzY2VudCwgaW50JiBtYXhEZXNjZW50LCBib29sJiBzZXRNYXhBc2NlbnQsIGJvb2wmIHNldE1h
eERlc2NlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzdHJpY3RN
b2RlLCBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcCYsIEZvbnRCYXNlbGluZSwgVmVy
dGljYWxQb3NpdGlvbkNhY2hlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
LmNwcAppbmRleCBkYWQ0ZWMwN2Y1YjkyMjBiNDI5Nzg3MTE4ZGIwYWQwMTMzODgyNGQxLi5iMGI4
MTI1NjhiN2M1NmJiM2U0MWZlYjUzOWE5NzQ0ZWEwNjE1ZjcyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTEzODgsNiArMTM4OCwxMSBAQCB2b2lkIFJlbmRl
ckJsb2NrOjpsYXlvdXQoKQogfQogCiAjaWYgRU5BQkxFKENTU19FWENMVVNJT05TKQorRXhjbHVz
aW9uU2hhcGVJbnNpZGVJbmZvKiBSZW5kZXJCbG9jazo6ZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZv
SW50ZXJuYWwoKSBjb25zdAoreworICAgIHJldHVybiBFeGNsdXNpb25TaGFwZUluc2lkZUluZm86
OmlzRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvRW5hYmxlZEZvclJlbmRlckJsb2NrKHRoaXMpID8g
RXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvOjpleGNsdXNpb25TaGFwZUluc2lkZUluZm9Gb3JSZW5k
ZXJCbG9jayh0aGlzKSA6IDA7Cit9CisKIHZvaWQgUmVuZGVyQmxvY2s6OnVwZGF0ZUV4Y2x1c2lv
blNoYXBlSW5zaWRlSW5mb0FmdGVyU3R5bGVDaGFuZ2UoY29uc3QgQmFzaWNTaGFwZSogc2hhcGVJ
bnNpZGUsIGNvbnN0IEJhc2ljU2hhcGUqIG9sZFNoYXBlSW5zaWRlKQogewogICAgIC8vIEZJWE1F
OiBBIGZ1dHVyZSBvcHRpbWl6YXRpb24gd291bGQgZG8gYSBkZWVwIGNvbXBhcmlzb24gZm9yIGVx
dWFsaXR5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAppbmRleCA1NjdkN2Rj
YjRjM2VhYTAyODE0OTg2NDQxOTgyZGJhY2ZkMjAwM2JlLi4wMTU3NDJjMDhmNmVjNzAwNjBlNGZl
NGUxY2FkYjc2NjM1MDAzY2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2su
aApAQCAtMzQsMTAgKzM0LDYgQEAKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL0xpc3RIYXNoU2V0Lmg+CiAKLSNpZiBFTkFCTEUoQ1NTX0VYQ0xVU0lPTlMpCi0jaW5jbHVk
ZSAiRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLmgiCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBCaWRpQ29udGV4dDsKQEAgLTUyLDYgKzQ4LDEwIEBAIHN0cnVjdCBCaWRp
UnVuOwogc3RydWN0IFBhaW50SW5mbzsKIGNsYXNzIExpbmVJbmZvOwogY2xhc3MgUmVuZGVyUnVi
eVJ1bjsKKyNpZiBFTkFCTEUoQ1NTX0VYQ0xVU0lPTlMpCitjbGFzcyBCYXNpY1NoYXBlOworY2xh
c3MgRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvOworI2VuZGlmCiBjbGFzcyBUZXh0TGF5b3V0Owog
Y2xhc3MgV29yZE1lYXN1cmVtZW50OwogCkBAIC00MjAsNyArNDIwLDcgQEAgcHVibGljOgogI2lm
IEVOQUJMRShDU1NfRVhDTFVTSU9OUykKICAgICBFeGNsdXNpb25TaGFwZUluc2lkZUluZm8qIGV4
Y2x1c2lvblNoYXBlSW5zaWRlSW5mbygpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gc3R5
bGUoKS0+c2hhcGVJbnNpZGUoKSAmJiBFeGNsdXNpb25TaGFwZUluc2lkZUluZm86OmlzRXhjbHVz
aW9uU2hhcGVJbnNpZGVJbmZvRW5hYmxlZEZvclJlbmRlckJsb2NrKHRoaXMpID8gRXhjbHVzaW9u
U2hhcGVJbnNpZGVJbmZvOjpleGNsdXNpb25TaGFwZUluc2lkZUluZm9Gb3JSZW5kZXJCbG9jayh0
aGlzKSA6IDA7CisgICAgICAgIHJldHVybiBzdHlsZSgpLT5zaGFwZUluc2lkZSgpID8gZXhjbHVz
aW9uU2hhcGVJbnNpZGVJbmZvSW50ZXJuYWwoKSA6IDA7CiAgICAgfQogI2VuZGlmCiAKQEAgLTUx
Nyw2ICs1MTcsNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAjaWYgRU5BQkxFKENTU19FWENM
VVNJT05TKQorICAgIEV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbyogZXhjbHVzaW9uU2hhcGVJbnNp
ZGVJbmZvSW50ZXJuYWwoKSBjb25zdDsKICAgICB2b2lkIGNvbXB1dGVFeGNsdXNpb25TaGFwZVNp
emUoKTsKICAgICB2b2lkIHVwZGF0ZUV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mb0FmdGVyU3R5bGVD
aGFuZ2UoY29uc3QgQmFzaWNTaGFwZSosIGNvbnN0IEJhc2ljU2hhcGUqIG9sZFdyYXBTaGFwZSk7
CiAjZW5kaWYKQEAgLTc1NCw2ICs3NTUsNyBAQCBwcml2YXRlOgogICAgIHByaXZhdGU6CiAgICAg
ICAgIHZvaWQgcmVzZXQoKTsKICAgICAgICAgCisgICAgICAgIElubGluZUl0ZXJhdG9yIG5leHRT
ZWdtZW50QnJlYWsoSW5saW5lQmlkaVJlc29sdmVyJiwgTGluZUluZm8mLCBSZW5kZXJUZXh0SW5m
byYsIEZsb2F0aW5nT2JqZWN0KiBsYXN0RmxvYXRGcm9tUHJldmlvdXNMaW5lLCB1bnNpZ25lZCBj
b25zZWN1dGl2ZUh5cGhlbmF0ZWRMaW5lcywgV29yZE1lYXN1cmVtZW50cyYpOwogICAgICAgICB2
b2lkIHNraXBUcmFpbGluZ1doaXRlc3BhY2UoSW5saW5lSXRlcmF0b3ImLCBjb25zdCBMaW5lSW5m
byYpOwogICAgICAgICB2b2lkIHNraXBMZWFkaW5nV2hpdGVzcGFjZShJbmxpbmVCaWRpUmVzb2x2
ZXImLCBMaW5lSW5mbyYsIEZsb2F0aW5nT2JqZWN0KiBsYXN0RmxvYXRGcm9tUHJldmlvdXNMaW5l
LCBMaW5lV2lkdGgmKTsKICAgICAgICAgCkBAIC03NzAsMTAgKzc3MiwxMiBAQCBwcml2YXRlOgog
ICAgIGJvb2wgY2hlY2tQYWdpbmF0aW9uQW5kRmxvYXRzQXRFbmRMaW5lKExpbmVMYXlvdXRTdGF0
ZSYpOwogICAgIAogICAgIFJvb3RJbmxpbmVCb3gqIGNvbnN0cnVjdExpbmUoQmlkaVJ1bkxpc3Q8
QmlkaVJ1bj4mLCBjb25zdCBMaW5lSW5mbyYpOwotICAgIElubGluZUZsb3dCb3gqIGNyZWF0ZUxp
bmVCb3hlcyhSZW5kZXJPYmplY3QqLCBjb25zdCBMaW5lSW5mbyYsIElubGluZUJveCogY2hpbGRC
b3gpOworICAgIElubGluZUZsb3dCb3gqIGNyZWF0ZUxpbmVCb3hlcyhSZW5kZXJPYmplY3QqLCBj
b25zdCBMaW5lSW5mbyYsIElubGluZUJveCogY2hpbGRCb3gsIGJvb2wgc3RhcnRzTmV3U2VnbW5l
dCk7CiAKICAgICB2b2lkIHNldE1hcmdpbnNGb3JSdWJ5UnVuKEJpZGlSdW4qLCBSZW5kZXJSdWJ5
UnVuKiwgUmVuZGVyT2JqZWN0KiwgY29uc3QgTGluZUluZm8mKTsKIAorICAgIEJpZGlSdW4qIGNv
bXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlvbnNGb3JMaW5lSGVscGVyKFJvb3RJbmxpbmVCb3gq
LCBjb25zdCBMaW5lSW5mbyYsIEVUZXh0QWxpZ24sIGZsb2F0JiBsb2dpY2FsTGVmdCwKKyAgICAg
ICAgZmxvYXQmIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwgQmlkaVJ1biogZmlyc3RSdW4sIEJpZGlS
dW4qIHRyYWlsaW5nU3BhY2VSdW4sIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwJiB0
ZXh0Qm94RGF0YU1hcCwgVmVydGljYWxQb3NpdGlvbkNhY2hlJiwgV29yZE1lYXN1cmVtZW50cyYp
OwogICAgIHZvaWQgY29tcHV0ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0ZvckxpbmUoUm9vdElu
bGluZUJveCosIGNvbnN0IExpbmVJbmZvJiwgQmlkaVJ1biogZmlyc3RSdW4sIEJpZGlSdW4qIHRy
YWlsaW5nU3BhY2VSdW4sIGJvb2wgcmVhY2hlZEVuZCwgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNr
Rm9udHNNYXAmLCBWZXJ0aWNhbFBvc2l0aW9uQ2FjaGUmLCBXb3JkTWVhc3VyZW1lbnRzJik7CiAg
ICAgdm9pZCBjb21wdXRlQmxvY2tEaXJlY3Rpb25Qb3NpdGlvbnNGb3JMaW5lKFJvb3RJbmxpbmVC
b3gqLCBCaWRpUnVuKiwgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXAmLCBWZXJ0aWNh
bFBvc2l0aW9uQ2FjaGUmKTsKICAgICB2b2lkIGRlbGV0ZUVsbGlwc2lzTGluZUJveGVzKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3Bw
CmluZGV4IDc1NmEzYzMxZWMzYjM3MzE3YjBmNGI2ZWM0OGI4MDZlMmU4ZmUwZmUuLjk0Yzk2MDU3
MDQyMzYzMzg5MjA1NzFjNjM2MjFiNjFjNjAyMjM1MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCkBAIC05MCw3ICs5MCw3IEBA
IHB1YmxpYzoKICAgICAgICAgRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvKiBleGNsdXNpb25TaGFw
ZUluc2lkZUluZm8gPSBsYXlvdXRFeGNsdXNpb25TaGFwZUluc2lkZUluZm8obV9ibG9jayk7CiAg
ICAgICAgIC8vIEZJWE1FOiBCdWcgOTE4Nzg6IEFkZCBzdXBwb3J0IGZvciBtdWx0aXBsZSBzZWdt
ZW50cywgY3VycmVudGx5IHdlIG9ubHkgc3VwcG9ydCBvbmUKICAgICAgICAgaWYgKGV4Y2x1c2lv
blNoYXBlSW5zaWRlSW5mbyAmJiBleGNsdXNpb25TaGFwZUluc2lkZUluZm8tPmhhc1NlZ21lbnRz
KCkpCi0gICAgICAgICAgICBtX3NlZ21lbnQgPSAmZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLT5z
ZWdtZW50cygpWzBdOworICAgICAgICAgICAgbV9zZWdtZW50ID0gJmV4Y2x1c2lvblNoYXBlSW5z
aWRlSW5mby0+c2VnbWVudHMoKVtleGNsdXNpb25TaGFwZUluc2lkZUluZm8tPnNlZ21lbnRSYW5n
ZXMoKS5zaXplKCldOwogI2VuZGlmCiAgICAgICAgIHVwZGF0ZUF2YWlsYWJsZVdpZHRoKCk7CiAg
ICAgfQpAQCAtNDU1LDcgKzQ1NSw3IEBAIHN0YXRpYyBib29sIHBhcmVudElzQ29uc3RydWN0ZWRP
ckhhdmVOZXh0KElubGluZUZsb3dCb3gqIHBhcmVudEJveCkKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLUlubGluZUZsb3dCb3gqIFJlbmRlckJsb2NrOjpjcmVhdGVMaW5lQm94ZXMoUmVuZGVyT2Jq
ZWN0KiBvYmosIGNvbnN0IExpbmVJbmZvJiBsaW5lSW5mbywgSW5saW5lQm94KiBjaGlsZEJveCkK
K0lubGluZUZsb3dCb3gqIFJlbmRlckJsb2NrOjpjcmVhdGVMaW5lQm94ZXMoUmVuZGVyT2JqZWN0
KiBvYmosIGNvbnN0IExpbmVJbmZvJiBsaW5lSW5mbywgSW5saW5lQm94KiBjaGlsZEJveCwgYm9v
bCBzdGFydE5ld1NlZ21lbnQpCiB7CiAgICAgLy8gU2VlIGlmIHdlIGhhdmUgYW4gdW5jb25zdHJ1
Y3RlZCBsaW5lIGJveCBmb3IgdGhpcyBvYmplY3QgdGhhdCBpcyBhbHNvCiAgICAgLy8gdGhlIGxh
c3QgaXRlbSBvbiB0aGUgbGluZS4KQEAgLTQ3OCw3ICs0NzgsNyBAQCBJbmxpbmVGbG93Qm94KiBS
ZW5kZXJCbG9jazo6Y3JlYXRlTGluZUJveGVzKFJlbmRlck9iamVjdCogb2JqLCBjb25zdCBMaW5l
SW5mbyYgbAogICAgICAgICAvLyB0aGUgc2FtZSBsaW5lICh0aGlzIGNhbiBoYXBwZW4gd2l0aCB2
ZXJ5IGZhbmN5IGxhbmd1YWdlIG1peHR1cmVzKS4KICAgICAgICAgYm9vbCBjb25zdHJ1Y3RlZE5l
d0JveCA9IGZhbHNlOwogICAgICAgICBib29sIGFsbG93ZWRUb0NvbnN0cnVjdE5ld0JveCA9ICFo
YXNEZWZhdWx0TGluZUJveENvbnRhaW4gfHwgIWlubGluZUZsb3cgfHwgaW5saW5lRmxvdy0+YWx3
YXlzQ3JlYXRlTGluZUJveGVzKCk7Ci0gICAgICAgIGJvb2wgY2FuVXNlRXhpc3RpbmdQYXJlbnRC
b3ggPSBwYXJlbnRCb3ggJiYgIXBhcmVudElzQ29uc3RydWN0ZWRPckhhdmVOZXh0KHBhcmVudEJv
eCk7CisgICAgICAgIGJvb2wgY2FuVXNlRXhpc3RpbmdQYXJlbnRCb3ggPSBwYXJlbnRCb3ggJiYg
IXBhcmVudElzQ29uc3RydWN0ZWRPckhhdmVOZXh0KHBhcmVudEJveCkgJiYgKCFzdGFydE5ld1Nl
Z21lbnQgfHwgcGFyZW50Qm94LT5pc1Jvb3RJbmxpbmVCb3goKSk7CiAgICAgICAgIGlmIChhbGxv
d2VkVG9Db25zdHJ1Y3ROZXdCb3ggJiYgIWNhblVzZUV4aXN0aW5nUGFyZW50Qm94KSB7CiAgICAg
ICAgICAgICAvLyBXZSBuZWVkIHRvIG1ha2UgYSBuZXcgYm94IGZvciB0aGlzIHJlbmRlciBvYmpl
Y3QuICBPbmNlCiAgICAgICAgICAgICAvLyBtYWRlLCB3ZSBuZWVkIHRvIHBsYWNlIGl0IGF0IHRo
ZSBlbmQgb2YgdGhlIGN1cnJlbnQgbGluZS4KQEAgLTU3Niw5ICs1NzYsOSBAQCBSb290SW5saW5l
Qm94KiBSZW5kZXJCbG9jazo6Y29uc3RydWN0TGluZShCaWRpUnVuTGlzdDxCaWRpUnVuPiYgYmlk
aVJ1bnMsIGNvbnN0CiAgICAgICAgIC8vIElmIHdlIGhhdmUgbm8gcGFyZW50IGJveCB5ZXQsIG9y
IGlmIHRoZSBydW4gaXMgbm90IHNpbXBseSBhIHNpYmxpbmcsCiAgICAgICAgIC8vIHRoZW4gd2Ug
bmVlZCB0byBjb25zdHJ1Y3QgaW5saW5lIGJveGVzIGFzIG5lY2Vzc2FyeSB0byBwcm9wZXJseSBl
bmNsb3NlIHRoZQogICAgICAgICAvLyBydW4ncyBpbmxpbmUgYm94LgotICAgICAgICBpZiAoIXBh
cmVudEJveCB8fCBwYXJlbnRCb3gtPnJlbmRlcmVyKCkgIT0gci0+bV9vYmplY3QtPnBhcmVudCgp
KQorICAgICAgICBpZiAoIXBhcmVudEJveCB8fCBwYXJlbnRCb3gtPnJlbmRlcmVyKCkgIT0gci0+
bV9vYmplY3QtPnBhcmVudCgpIHx8IHItPm1fc3RhcnRzU2VnbWVudCkKICAgICAgICAgICAgIC8v
IENyZWF0ZSBuZXcgaW5saW5lIGJveGVzIGFsbCB0aGUgd2F5IGJhY2sgdG8gdGhlIGFwcHJvcHJp
YXRlIGluc2VydGlvbiBwb2ludC4KLSAgICAgICAgICAgIHBhcmVudEJveCA9IGNyZWF0ZUxpbmVC
b3hlcyhyLT5tX29iamVjdC0+cGFyZW50KCksIGxpbmVJbmZvLCBib3gpOworICAgICAgICAgICAg
cGFyZW50Qm94ID0gY3JlYXRlTGluZUJveGVzKHItPm1fb2JqZWN0LT5wYXJlbnQoKSwgbGluZUlu
Zm8sIGJveCwgci0+bV9zdGFydHNTZWdtZW50KTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
ICAvLyBBcHBlbmQgdGhlIGlubGluZSBib3ggdG8gdGhpcyBsaW5lLgogICAgICAgICAgICAgcGFy
ZW50Qm94LT5hZGRUb0xpbmUoYm94KTsKQEAgLTgxMyw2ICs4MTMsOCBAQCBzdGF0aWMgaW5saW5l
IHZvaWQgY29tcHV0ZUV4cGFuc2lvbkZvckp1c3RpZmllZFRleHQoQmlkaVJ1biogZmlyc3RSdW4s
IEJpZGlSdW4qCiAKICAgICBzaXplX3QgaSA9IDA7CiAgICAgZm9yIChCaWRpUnVuKiByID0gZmly
c3RSdW47IHI7IHIgPSByLT5uZXh0KCkpIHsKKyAgICAgICAgaWYgKHItPm1fc3RhcnRzU2VnbWVu
dCkKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBpZiAoIXItPm1fYm94IHx8IHIgPT0gdHJh
aWxpbmdTcGFjZVJ1bikKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAKQEAgLTg4OCwx
NyArODkwLDU1IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3Np
dGlvbnNGb3JMaW5lKFJvb3RJbmxpbmVCb3gqIGxpbmVCb3gsCiAgICAgLy8gQ1NTIDIuMTogIidU
ZXh0LWluZGVudCcgb25seSBhZmZlY3RzIGEgbGluZSBpZiBpdCBpcyB0aGUgZmlyc3QgZm9ybWF0
dGVkIGxpbmUgb2YgYW4gZWxlbWVudC4gRm9yIGV4YW1wbGUsIHRoZSBmaXJzdCBsaW5lIG9mIGFu
IGFub255bW91cyBibG9jayAKICAgICAvLyBib3ggaXMgb25seSBhZmZlY3RlZCBpZiBpdCBpcyB0
aGUgZmlyc3QgY2hpbGQgb2YgaXRzIHBhcmVudCBlbGVtZW50LiIKICAgICBib29sIGZpcnN0TGlu
ZSA9IGxpbmVJbmZvLmlzRmlyc3RMaW5lKCkgJiYgIShpc0Fub255bW91c0Jsb2NrKCkgJiYgcGFy
ZW50KCktPmZpcnN0Q2hpbGQoKSAhPSB0aGlzKTsKLSAgICBmbG9hdCBsb2dpY2FsTGVmdCA9IHBp
eGVsU25hcHBlZExvZ2ljYWxMZWZ0T2Zmc2V0Rm9yTGluZShsb2dpY2FsSGVpZ2h0KCksIGZpcnN0
TGluZSwgbGluZUxvZ2ljYWxIZWlnaHQpOwotICAgIGZsb2F0IGxvZ2ljYWxSaWdodCA9IHBpeGVs
U25hcHBlZExvZ2ljYWxSaWdodE9mZnNldEZvckxpbmUobG9naWNhbEhlaWdodCgpLCBmaXJzdExp
bmUsIGxpbmVMb2dpY2FsSGVpZ2h0KTsKKyAgICBmbG9hdCBsaW5lTG9naWNhbExlZnQgPSBwaXhl
bFNuYXBwZWRMb2dpY2FsTGVmdE9mZnNldEZvckxpbmUobG9naWNhbEhlaWdodCgpLCBmaXJzdExp
bmUsIGxpbmVMb2dpY2FsSGVpZ2h0KTsKKyAgICBmbG9hdCBsaW5lTG9naWNhbFJpZ2h0ID0gcGl4
ZWxTbmFwcGVkTG9naWNhbFJpZ2h0T2Zmc2V0Rm9yTGluZShsb2dpY2FsSGVpZ2h0KCksIGZpcnN0
TGluZSwgbGluZUxvZ2ljYWxIZWlnaHQpOworICAgIGZsb2F0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0
aDsKKyAgICBib29sIG5lZWRzV29yZFNwYWNpbmc7CiAjaWYgRU5BQkxFKENTU19FWENMVVNJT05T
KQogICAgIEV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbyogZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZv
ID0gbGF5b3V0RXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvKHRoaXMpOwogICAgIGlmIChleGNsdXNp
b25TaGFwZUluc2lkZUluZm8gJiYgZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLT5oYXNTZWdtZW50
cygpKSB7Ci0gICAgICAgIGxvZ2ljYWxMZWZ0ID0gbWF4PGZsb2F0Pihyb3VuZFRvSW50KGV4Y2x1
c2lvblNoYXBlSW5zaWRlSW5mby0+c2VnbWVudHMoKVswXS5sb2dpY2FsTGVmdCksIGxvZ2ljYWxM
ZWZ0KTsKLSAgICAgICAgbG9naWNhbFJpZ2h0ID0gbWluPGZsb2F0PihmbG9vclRvSW50KGV4Y2x1
c2lvblNoYXBlSW5zaWRlSW5mby0+c2VnbWVudHMoKVswXS5sb2dpY2FsUmlnaHQpLCBsb2dpY2Fs
UmlnaHQpOworICAgICAgICBCaWRpUnVuKiBzZWdtZW50U3RhcnQgPSBmaXJzdFJ1bjsKKyAgICAg
ICAgY29uc3QgU2VnbWVudExpc3QmIHNlZ21lbnRzID0gZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZv
LT5zZWdtZW50cygpOworICAgICAgICBmbG9hdCBzdGFydExvZ2ljYWxMZWZ0ID0gMDsKKyAgICAg
ICAgZmxvYXQgZW5kTG9naWNhbFJpZ2h0ID0gMDsKKyAgICAgICAgZmxvYXQgbWluTG9naWNhbExl
ZnQgPSAwOworICAgICAgICBmbG9hdCBtYXhMb2dpY2FsUmlnaHQgPSAwOworICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHNlZ21lbnRzLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICBm
bG9hdCBsb2dpY2FsTGVmdCA9IG1heDxmbG9hdD4ocm91bmRUb0ludChzZWdtZW50c1tpXS5sb2dp
Y2FsTGVmdCksIGxpbmVMb2dpY2FsTGVmdCk7CisgICAgICAgICAgICBmbG9hdCBsb2dpY2FsUmln
aHQgPSBtaW48ZmxvYXQ+KGZsb29yVG9JbnQoc2VnbWVudHNbaV0ubG9naWNhbFJpZ2h0KSwgbGlu
ZUxvZ2ljYWxSaWdodCk7CisgICAgICAgICAgICBhdmFpbGFibGVMb2dpY2FsV2lkdGggPSBsb2dp
Y2FsUmlnaHQgLSBsb2dpY2FsTGVmdDsKKyAgICAgICAgICAgIEJpZGlSdW4qIG5ld1NlZ21lbnRT
dGFydCA9IGNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlvbnNGb3JMaW5lSGVscGVyKGxpbmVC
b3gsIGxpbmVJbmZvLCB0ZXh0QWxpZ24sIGxvZ2ljYWxMZWZ0LCBhdmFpbGFibGVMb2dpY2FsV2lk
dGgsIHNlZ21lbnRTdGFydCwgdHJhaWxpbmdTcGFjZVJ1biwgdGV4dEJveERhdGFNYXAsIHZlcnRp
Y2FsUG9zaXRpb25DYWNoZSwgd29yZE1lYXN1cmVtZW50cyk7CisgICAgICAgICAgICBpZiAoIWkp
IHsKKyAgICAgICAgICAgICAgICBsaW5lQm94LT5zZXRMb2dpY2FsTGVmdChsb2dpY2FsTGVmdCk7
CisgICAgICAgICAgICAgICAgc3RhcnRMb2dpY2FsTGVmdCA9IGxvZ2ljYWxMZWZ0OworICAgICAg
ICAgICAgICAgIG1pbkxvZ2ljYWxMZWZ0ID0gbG9naWNhbExlZnQ7CisgICAgICAgICAgICAgICAg
bWF4TG9naWNhbFJpZ2h0ID0gbG9naWNhbExlZnQ7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBuZWVkc1dvcmRTcGFjaW5nID0gZmFsc2U7CisgICAgICAgICAgICBlbmRMb2dpY2FsUmlnaHQg
PSBsaW5lQm94LT5wbGFjZUJveFJhbmdlSW5JbmxpbmVEaXJlY3Rpb24oc2VnbWVudFN0YXJ0LT5t
X2JveCwgbmV3U2VnbWVudFN0YXJ0ID8gbmV3U2VnbWVudFN0YXJ0LT5tX2JveCA6IDAsIGxvZ2lj
YWxMZWZ0LCBtaW5Mb2dpY2FsTGVmdCwgbWF4TG9naWNhbFJpZ2h0LCBuZWVkc1dvcmRTcGFjaW5n
LCB0ZXh0Qm94RGF0YU1hcCk7CisgICAgICAgICAgICBpZiAoIW5ld1NlZ21lbnRTdGFydCB8fCAh
bmV3U2VnbWVudFN0YXJ0LT5uZXh0KCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBBU1NFUlQobmV3U2VnbWVudFN0YXJ0LT5tX3N0YXJ0c1NlZ21lbnQpOworICAgICAgICAg
ICAgc2VnbWVudFN0YXJ0ID0gbmV3U2VnbWVudFN0YXJ0LT5uZXh0KCk7CisgICAgICAgIH0KKyAg
ICAgICAgbGluZUJveC0+c2V0TG9naWNhbFdpZHRoKGVuZExvZ2ljYWxSaWdodCAtIHN0YXJ0TG9n
aWNhbExlZnQpOworICAgICAgICBpZiAobGluZUJveC0+a25vd25Ub0hhdmVOb092ZXJmbG93KCkg
JiYgKG1pbkxvZ2ljYWxMZWZ0IDwgc3RhcnRMb2dpY2FsTGVmdCB8fCBtYXhMb2dpY2FsUmlnaHQg
PiBlbmRMb2dpY2FsUmlnaHQpKQorICAgICAgICAgICAgbGluZUJveC0+Y2xlYXJLbm93blRvSGF2
ZU5vT3ZlcmZsb3coKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgotICAgIGZsb2F0
IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCA9IGxvZ2ljYWxSaWdodCAtIGxvZ2ljYWxMZWZ0OworICAg
IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCA9IGxpbmVMb2dpY2FsUmlnaHQgLSBsaW5lTG9naWNhbExl
ZnQ7CisgICAgY29tcHV0ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0ZvckxpbmVIZWxwZXIobGlu
ZUJveCwgbGluZUluZm8sIHRleHRBbGlnbiwgbGluZUxvZ2ljYWxMZWZ0LCBhdmFpbGFibGVMb2dp
Y2FsV2lkdGgsIGZpcnN0UnVuLCAgdHJhaWxpbmdTcGFjZVJ1biwgdGV4dEJveERhdGFNYXAsIHZl
cnRpY2FsUG9zaXRpb25DYWNoZSwgd29yZE1lYXN1cmVtZW50cyk7CisgICAgLy8gVGhlIHdpZHRo
cyBvZiBhbGwgcnVucyBhcmUgbm93IGtub3duLiBXZSBjYW4gbm93IHBsYWNlIGV2ZXJ5IGlubGlu
ZSBib3ggKGFuZAorICAgIC8vIGNvbXB1dGUgYWNjdXJhdGUgd2lkdGhzIGZvciB0aGUgaW5saW5l
IGZsb3cgYm94ZXMpLgorICAgIG5lZWRzV29yZFNwYWNpbmcgPSBmYWxzZTsKKyAgICBsaW5lQm94
LT5wbGFjZUJveGVzSW5JbmxpbmVEaXJlY3Rpb24obGluZUxvZ2ljYWxMZWZ0LCBuZWVkc1dvcmRT
cGFjaW5nLCB0ZXh0Qm94RGF0YU1hcCk7Cit9CiAKK0JpZGlSdW4qIFJlbmRlckJsb2NrOjpjb21w
dXRlSW5saW5lRGlyZWN0aW9uUG9zaXRpb25zRm9yTGluZUhlbHBlcihSb290SW5saW5lQm94KiBs
aW5lQm94LCBjb25zdCBMaW5lSW5mbyYgbGluZUluZm8sIEVUZXh0QWxpZ24gdGV4dEFsaWduLCBm
bG9hdCYgbG9naWNhbExlZnQsCisgICAgZmxvYXQmIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwgQmlk
aVJ1biogZmlyc3RSdW4sIEJpZGlSdW4qIHRyYWlsaW5nU3BhY2VSdW4sIEdseXBoT3ZlcmZsb3dB
bmRGYWxsYmFja0ZvbnRzTWFwJiB0ZXh0Qm94RGF0YU1hcCwgVmVydGljYWxQb3NpdGlvbkNhY2hl
JiB2ZXJ0aWNhbFBvc2l0aW9uQ2FjaGUsCisgICAgV29yZE1lYXN1cmVtZW50cyYgd29yZE1lYXN1
cmVtZW50cykKK3sKICAgICBib29sIG5lZWRzV29yZFNwYWNpbmcgPSBmYWxzZTsKICAgICBmbG9h
dCB0b3RhbExvZ2ljYWxXaWR0aCA9IGxpbmVCb3gtPmdldEZsb3dTcGFjaW5nTG9naWNhbFdpZHRo
KCk7CiAgICAgdW5zaWduZWQgZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudCA9IDA7CkBAIC05MDYs
NyArOTQ2LDEwIEBAIHZvaWQgUmVuZGVyQmxvY2s6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3Np
dGlvbnNGb3JMaW5lKFJvb3RJbmxpbmVCb3gqIGxpbmVCb3gsCiAgICAgVmVjdG9yPHVuc2lnbmVk
LCAxNj4gZXhwYW5zaW9uT3Bwb3J0dW5pdGllczsKICAgICBSZW5kZXJPYmplY3QqIHByZXZpb3Vz
T2JqZWN0ID0gMDsKIAotICAgIGZvciAoQmlkaVJ1biogciA9IGZpcnN0UnVuOyByOyByID0gci0+
bmV4dCgpKSB7CisgICAgQmlkaVJ1biogciA9IGZpcnN0UnVuOworICAgIGZvciAoOyByOyByID0g
ci0+bmV4dCgpKSB7CisgICAgICAgIGlmIChyLT5tX3N0YXJ0c1NlZ21lbnQpCisgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgaWYgKCFyLT5tX2JveCB8fCByLT5tX29iamVjdC0+aXNPdXRPZkZs
b3dQb3NpdGlvbmVkKCkgfHwgci0+bV9ib3gtPmlzTGluZUJyZWFrKCkpCiAgICAgICAgICAgICBj
b250aW51ZTsgLy8gUG9zaXRpb25lZCBvYmplY3RzIGFyZSBvbmx5IHBhcnRpY2lwYXRpbmcgdG8g
ZmlndXJlIG91dCB0aGVpcgogICAgICAgICAgICAgICAgICAgICAgIC8vIGNvcnJlY3Qgc3RhdGlj
IHggcG9zaXRpb24uICBUaGV5IGhhdmUgbm8gZWZmZWN0IG9uIHRoZSB3aWR0aC4KQEAgLTk1Niwx
MCArOTk5LDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6Y29tcHV0ZUlubGluZURpcmVjdGlvblBvc2l0
aW9uc0ZvckxpbmUoUm9vdElubGluZUJveCogbGluZUJveCwKIAogICAgIGNvbXB1dGVFeHBhbnNp
b25Gb3JKdXN0aWZpZWRUZXh0KGZpcnN0UnVuLCB0cmFpbGluZ1NwYWNlUnVuLCBleHBhbnNpb25P
cHBvcnR1bml0aWVzLCBleHBhbnNpb25PcHBvcnR1bml0eUNvdW50LCB0b3RhbExvZ2ljYWxXaWR0
aCwgYXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKIAotICAgIC8vIFRoZSB3aWR0aHMgb2YgYWxsIHJ1
bnMgYXJlIG5vdyBrbm93bi4gIFdlIGNhbiBub3cgcGxhY2UgZXZlcnkgaW5saW5lIGJveCAoYW5k
Ci0gICAgLy8gY29tcHV0ZSBhY2N1cmF0ZSB3aWR0aHMgZm9yIHRoZSBpbmxpbmUgZmxvdyBib3hl
cykuCi0gICAgbmVlZHNXb3JkU3BhY2luZyA9IGZhbHNlOwotICAgIGxpbmVCb3gtPnBsYWNlQm94
ZXNJbklubGluZURpcmVjdGlvbihsb2dpY2FsTGVmdCwgbmVlZHNXb3JkU3BhY2luZywgdGV4dEJv
eERhdGFNYXApOworICAgIHJldHVybiByOwogfQogCiB2b2lkIFJlbmRlckJsb2NrOjpjb21wdXRl
QmxvY2tEaXJlY3Rpb25Qb3NpdGlvbnNGb3JMaW5lKFJvb3RJbmxpbmVCb3gqIGxpbmVCb3gsIEJp
ZGlSdW4qIGZpcnN0UnVuLCBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcCYgdGV4dEJv
eERhdGFNYXAsCkBAIC0xMTA2LDEzICsxMTQ2LDEzIEBAIHN0YXRpYyBpbmxpbmUgQmlkaVN0YXR1
cyBzdGF0dXNXaXRoRGlyZWN0aW9uKFRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbiwgYm9vbCBp
CiB9CiAKIC8vIEZJWE1FOiBCaWRpUmVzb2x2ZXIgc2hvdWxkIGhhdmUgdGhpcyBsb2dpYy4KLXN0
YXRpYyBpbmxpbmUgdm9pZCBjb25zdHJ1Y3RCaWRpUnVucyhJbmxpbmVCaWRpUmVzb2x2ZXImIHRv
cFJlc29sdmVyLCBCaWRpUnVuTGlzdDxCaWRpUnVuPiYgYmlkaVJ1bnMsIGNvbnN0IElubGluZUl0
ZXJhdG9yJiBlbmRPZkxpbmUsIFZpc3VhbERpcmVjdGlvbk92ZXJyaWRlIG92ZXJyaWRlLCBib29s
IHByZXZpb3VzTGluZUJyb2tlQ2xlYW5seSkKK3N0YXRpYyBpbmxpbmUgdm9pZCBjb25zdHJ1Y3RC
aWRpUnVucyhJbmxpbmVCaWRpUmVzb2x2ZXImIHRvcFJlc29sdmVyLCBCaWRpUnVuTGlzdDxCaWRp
UnVuPiYgYmlkaVJ1bnMsIGNvbnN0IElubGluZUl0ZXJhdG9yJiBlbmRPZlJ1bnMsIFZpc3VhbERp
cmVjdGlvbk92ZXJyaWRlIG92ZXJyaWRlLCBib29sIHByZXZpb3VzTGluZUJyb2tlQ2xlYW5seSkK
IHsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHBhc3MgYSBCaWRpUnVuTGlzdCBpbnRvIGNyZWF0
ZUJpZGlSdW5zRm9yTGluZSBpbnN0ZWFkCiAgICAgLy8gb2YgdGhlIHJlc29sdmVyIG93bmluZyB0
aGUgcnVucy4KICAgICBBU1NFUlQoJnRvcFJlc29sdmVyLnJ1bnMoKSA9PSAmYmlkaVJ1bnMpOwog
ICAgIFJlbmRlck9iamVjdCogY3VycmVudFJvb3QgPSB0b3BSZXNvbHZlci5wb3NpdGlvbigpLnJv
b3QoKTsKLSAgICB0b3BSZXNvbHZlci5jcmVhdGVCaWRpUnVuc0ZvckxpbmUoZW5kT2ZMaW5lLCBv
dmVycmlkZSwgcHJldmlvdXNMaW5lQnJva2VDbGVhbmx5KTsKKyAgICB0b3BSZXNvbHZlci5jcmVh
dGVCaWRpUnVuc0ZvckxpbmUoZW5kT2ZSdW5zLCBvdmVycmlkZSwgcHJldmlvdXNMaW5lQnJva2VD
bGVhbmx5KTsKIAogICAgIHdoaWxlICghdG9wUmVzb2x2ZXIuaXNvbGF0ZWRSdW5zKCkuaXNFbXB0
eSgpKSB7CiAgICAgICAgIC8vIEl0IGRvZXMgbm90IG1hdHRlciB3aGljaCBvcmRlciB3ZSByZXNv
bHZlIHRoZSBydW5zIGFzIGxvbmcgYXMgd2UgcmVzb2x2ZSB0aGVtIGFsbC4KQEAgLTExNTIsNyAr
MTE5Miw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBjb25zdHJ1Y3RCaWRpUnVucyhJbmxpbmVCaWRp
UmVzb2x2ZXImIHRvcFJlc29sdmVyLCBCaWRpUnVuTGlzCiAgICAgICAgIC8vIFdlIHN0b3AgYXQg
dGhlIG5leHQgZW5kIG9mIGxpbmU7IHdlIG1heSByZS1lbnRlciB0aGlzIGlzb2xhdGUgaW4gdGhl
IG5leHQgY2FsbCB0byBjb25zdHJ1Y3RCaWRpUnVucygpLgogICAgICAgICAvLyBGSVhNRTogV2hh
dCBzaG91bGQgZW5kIGFuZCBwcmV2aW91c0xpbmVCcm9rZUNsZWFubHkgYmU/CiAgICAgICAgIC8v
IHJuaXdhIHNheXMgcHJldmlvdXNMaW5lQnJva2VDbGVhbmx5IGlzIGp1c3QgYSBXaW5JRSBoYWNr
IGFuZCBjb3VsZCBhbHdheXMgYmUgZmFsc2UgaGVyZT8KLSAgICAgICAgaXNvbGF0ZWRSZXNvbHZl
ci5jcmVhdGVCaWRpUnVuc0ZvckxpbmUoZW5kT2ZMaW5lLCBOb1Zpc3VhbE92ZXJyaWRlLCBwcmV2
aW91c0xpbmVCcm9rZUNsZWFubHkpOworICAgICAgICBpc29sYXRlZFJlc29sdmVyLmNyZWF0ZUJp
ZGlSdW5zRm9yTGluZShlbmRPZlJ1bnMsIE5vVmlzdWFsT3ZlcnJpZGUsIHByZXZpb3VzTGluZUJy
b2tlQ2xlYW5seSk7CiAgICAgICAgIC8vIE5vdGUgdGhhdCB3ZSBkbyBub3QgZGVsZXRlIHRoZSBy
dW5zIGZyb20gdGhlIHJlc29sdmVyLgogICAgICAgICAvLyBXZSdyZSBub3QgZ3VhcmFudGVlZCB0
byBnZXQgYW55IEJpZGlSdW5zIGluIHRoZSBwcmV2aW91cyBzdGVwLiBJZiB3ZSBkb24ndCwgd2Ug
YWxsb3cgdGhlIHBsYWNlaG9sZGVyCiAgICAgICAgIC8vIGl0c2VsZiB0byBiZSB0dXJuZWQgaW50
byBhbiBJbmxpbmVCb3guIFdlIGNhbid0IHJlbW92ZSBpdCBoZXJlIHdpdGhvdXQgcG90ZW50aWFs
bHkgbG9zaW5nIHRyYWNrIG9mCkBAIC0xMTY5LDYgKzEyMDksMzYgQEAgc3RhdGljIGlubGluZSB2
b2lkIGNvbnN0cnVjdEJpZGlSdW5zKElubGluZUJpZGlSZXNvbHZlciYgdG9wUmVzb2x2ZXIsIEJp
ZGlSdW5MaXMKICAgICB9CiB9CiAKK3N0YXRpYyBpbmxpbmUgdm9pZCBjb25zdHJ1Y3RCaWRpUnVu
c0ZvckxpbmUoY29uc3QgUmVuZGVyQmxvY2sqIGJsb2NrLCBJbmxpbmVCaWRpUmVzb2x2ZXImIHRv
cFJlc29sdmVyLCBCaWRpUnVuTGlzdDxCaWRpUnVuPiYgYmlkaVJ1bnMsIGNvbnN0IElubGluZUl0
ZXJhdG9yJiBlbmRPZkxpbmUsIFZpc3VhbERpcmVjdGlvbk92ZXJyaWRlIG92ZXJyaWRlLCBib29s
IHByZXZpb3VzTGluZUJyb2tlQ2xlYW5seSkKK3sKKyNpZiAhRU5BQkxFKENTU19FWENMVVNJT05T
KQorICAgIGNvbnN0cnVjdEJpZGlSdW5zKHRvcFJlc29sdmVyLCBiaWRpUnVucywgZW5kT2ZMaW5l
LCBvdmVycmlkZSwgcHJldmlvdXNsaW5lQnJva2VDbGVhbmx5KTsKKyNlbHNlCisgICAgRXhjbHVz
aW9uU2hhcGVJbnNpZGVJbmZvKiBleGNsdXNpb25TaGFwZUluc2lkZUluZm8gPSBsYXlvdXRFeGNs
dXNpb25TaGFwZUluc2lkZUluZm8oYmxvY2spOworICAgIGlmICghZXhjbHVzaW9uU2hhcGVJbnNp
ZGVJbmZvIHx8ICFleGNsdXNpb25TaGFwZUluc2lkZUluZm8tPmhhc1NlZ21lbnRzKCkpIHsKKyAg
ICAgICAgY29uc3RydWN0QmlkaVJ1bnModG9wUmVzb2x2ZXIsIGJpZGlSdW5zLCBlbmRPZkxpbmUs
IG92ZXJyaWRlLCBwcmV2aW91c0xpbmVCcm9rZUNsZWFubHkpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgY29uc3QgU2VnbWVudFJhbmdlTGlzdCYgc2VnbWVudFJhbmdlcyA9IGV4Y2x1
c2lvblNoYXBlSW5zaWRlSW5mby0+c2VnbWVudFJhbmdlcygpOworICAgIEFTU0VSVChzZWdtZW50
UmFuZ2VzLnNpemUoKSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNlZ21lbnRSYW5n
ZXMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgSW5saW5lSXRlcmF0b3Igc2VnbWVudFN0YXJ0ID0g
c2VnbWVudFJhbmdlc1tpXS5zdGFydDsKKyAgICAgICAgSW5saW5lSXRlcmF0b3Igc2VnbWVudEVu
ZCA9IHNlZ21lbnRSYW5nZXNbaV0uZW5kOworICAgICAgICBpZiAoaSkgeworICAgICAgICAgICAg
QVNTRVJUKHNlZ21lbnRTdGFydC5tX29iaik7CisgICAgICAgICAgICBCaWRpUnVuKiBtaWRQb2lu
dCA9IGNyZWF0ZVJ1bihzZWdtZW50U3RhcnQubV9wb3MsIHNlZ21lbnRTdGFydC5tX3Bvcywgc2Vn
bWVudFN0YXJ0Lm1fb2JqLCB0b3BSZXNvbHZlcik7CisgICAgICAgICAgICBtaWRQb2ludC0+bV9z
dGFydHNTZWdtZW50ID0gdHJ1ZTsKKyAgICAgICAgICAgIGJpZGlSdW5zLmFkZFJ1bihtaWRQb2lu
dCk7CisgICAgICAgICAgICB0b3BSZXNvbHZlci5taWRwb2ludFN0YXRlKCkuYmV0d2Vlbk1pZHBv
aW50cyA9IGZhbHNlOworICAgICAgICB9CisgICAgICAgIHRvcFJlc29sdmVyLnNldFBvc2l0aW9u
KHNlZ21lbnRTdGFydCwgbnVtYmVyT2ZJc29sYXRlQW5jZXN0b3JzKHNlZ21lbnRTdGFydCkpOwor
ICAgICAgICBjb25zdHJ1Y3RCaWRpUnVucyh0b3BSZXNvbHZlciwgYmlkaVJ1bnMsIHNlZ21lbnRF
bmQsIG92ZXJyaWRlLCBwcmV2aW91c0xpbmVCcm9rZUNsZWFubHkpOworICAgIH0KKyNlbmRpZgor
fQorCiAvLyBUaGlzIGZ1bmN0aW9uIGNvbnN0cnVjdHMgbGluZSBib3hlcyBmb3IgYWxsIG9mIHRo
ZSB0ZXh0IHJ1bnMgaW4gdGhlIHJlc29sdmVyIGFuZCBjb21wdXRlcyB0aGVpciBwb3NpdGlvbi4K
IFJvb3RJbmxpbmVCb3gqIFJlbmRlckJsb2NrOjpjcmVhdGVMaW5lQm94ZXNGcm9tQmlkaVJ1bnMo
QmlkaVJ1bkxpc3Q8QmlkaVJ1bj4mIGJpZGlSdW5zLCBjb25zdCBJbmxpbmVJdGVyYXRvciYgZW5k
LCBMaW5lSW5mbyYgbGluZUluZm8sIFZlcnRpY2FsUG9zaXRpb25DYWNoZSYgdmVydGljYWxQb3Np
dGlvbkNhY2hlLCBCaWRpUnVuKiB0cmFpbGluZ1NwYWNlUnVuLCBXb3JkTWVhc3VyZW1lbnRzJiB3
b3JkTWVhc3VyZW1lbnRzKQogewpAQCAtMTQ2Niw3ICsxNTM2LDcgQEAgdm9pZCBSZW5kZXJCbG9j
azo6bGF5b3V0UnVuc0FuZEZsb2F0c0luUmFuZ2UoTGluZUxheW91dFN0YXRlJiBsYXlvdXRTdGF0
ZSwgSW5saW4KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIG93bmVy
c2hpcCBpcyByZXZlcnNlZC4gV2Ugc2hvdWxkIG93biB0aGUgQmlkaVJ1bkxpc3QgYW5kIHBhc3Mg
aXQgdG8gY3JlYXRlQmlkaVJ1bnNGb3JMaW5lLgogICAgICAgICAgICAgQmlkaVJ1bkxpc3Q8Qmlk
aVJ1bj4mIGJpZGlSdW5zID0gcmVzb2x2ZXIucnVucygpOwotICAgICAgICAgICAgY29uc3RydWN0
QmlkaVJ1bnMocmVzb2x2ZXIsIGJpZGlSdW5zLCBlbmQsIG92ZXJyaWRlLCBsYXlvdXRTdGF0ZS5s
aW5lSW5mbygpLnByZXZpb3VzTGluZUJyb2tlQ2xlYW5seSgpKTsKKyAgICAgICAgICAgIGNvbnN0
cnVjdEJpZGlSdW5zRm9yTGluZSh0aGlzLCByZXNvbHZlciwgYmlkaVJ1bnMsIGVuZCwgb3ZlcnJp
ZGUsIGxheW91dFN0YXRlLmxpbmVJbmZvKCkucHJldmlvdXNMaW5lQnJva2VDbGVhbmx5KCkpOwog
ICAgICAgICAgICAgQVNTRVJUKHJlc29sdmVyLnBvc2l0aW9uKCkgPT0gZW5kKTsKIAogICAgICAg
ICAgICAgQmlkaVJ1biogdHJhaWxpbmdTcGFjZVJ1biA9ICFsYXlvdXRTdGF0ZS5saW5lSW5mbygp
LnByZXZpb3VzTGluZUJyb2tlQ2xlYW5seSgpID8gaGFuZGxlVHJhaWxpbmdTcGFjZXMoYmlkaVJ1
bnMsIHJlc29sdmVyLmNvbnRleHQoKSkgOiAwOwpAQCAtMjMxOSw2ICsyMzg5LDQ4IEBAIHZvaWQg
UmVuZGVyQmxvY2s6OkxpbmVCcmVha2VyOjpyZXNldCgpCiAKIElubGluZUl0ZXJhdG9yIFJlbmRl
ckJsb2NrOjpMaW5lQnJlYWtlcjo6bmV4dExpbmVCcmVhayhJbmxpbmVCaWRpUmVzb2x2ZXImIHJl
c29sdmVyLCBMaW5lSW5mbyYgbGluZUluZm8sIFJlbmRlclRleHRJbmZvJiByZW5kZXJUZXh0SW5m
bywgRmxvYXRpbmdPYmplY3QqIGxhc3RGbG9hdEZyb21QcmV2aW91c0xpbmUsIHVuc2lnbmVkIGNv
bnNlY3V0aXZlSHlwaGVuYXRlZExpbmVzLCBXb3JkTWVhc3VyZW1lbnRzJiB3b3JkTWVhc3VyZW1l
bnRzKQogeworI2lmICFFTkFCTEUoQ1NTX0VYQ0xVU0lPTlMpCisgICAgcmV0dXJuIG5leHRTZWdt
ZW50QnJlYWsocmVzb2x2ZXIsIGxheW91dFN0YXRlLmxpbmVJbmZvKCksIGxhc3RGbG9hdEZyb21Q
cmV2aW91c0xpbmUsIGNvbnNlY3V0aXZlSHlwaGVuYXRlZExpbmVzKTsKKyNlbHNlCisgICAgRXhj
bHVzaW9uU2hhcGVJbnNpZGVJbmZvKiBleGNsdXNpb25TaGFwZUluc2lkZUluZm8gPSBsYXlvdXRF
eGNsdXNpb25TaGFwZUluc2lkZUluZm8obV9ibG9jayk7CisgICAgaWYgKCFleGNsdXNpb25TaGFw
ZUluc2lkZUluZm8gfHwgIWV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby0+aGFzU2VnbWVudHMoKSkK
KyAgICAgICAgcmV0dXJuIG5leHRTZWdtZW50QnJlYWsocmVzb2x2ZXIsIGxpbmVJbmZvLCByZW5k
ZXJUZXh0SW5mbywgbGFzdEZsb2F0RnJvbVByZXZpb3VzTGluZSwgY29uc2VjdXRpdmVIeXBoZW5h
dGVkTGluZXMsIHdvcmRNZWFzdXJlbWVudHMpOworCisgICAgSW5saW5lSXRlcmF0b3IgZW5kID0g
cmVzb2x2ZXIucG9zaXRpb24oKTsKKyAgICBJbmxpbmVJdGVyYXRvciBvbGRFbmQgPSBlbmQ7CisK
KyAgICBjb25zdCBTZWdtZW50TGlzdCYgc2VnbWVudHMgPSBleGNsdXNpb25TaGFwZUluc2lkZUlu
Zm8tPnNlZ21lbnRzKCk7CisgICAgU2VnbWVudFJhbmdlTGlzdCYgc2VnbWVudFJhbmdlcyA9IGV4
Y2x1c2lvblNoYXBlSW5zaWRlSW5mby0+c2VnbWVudFJhbmdlcygpOworCisgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHNlZ21lbnRzLnNpemUoKTsgaSsrKSB7CisgICAgICAgIElubGluZUl0
ZXJhdG9yIHNlZ21lbnRTdGFydCA9IHJlc29sdmVyLnBvc2l0aW9uKCk7CisgICAgICAgIGVuZCA9
IG5leHRTZWdtZW50QnJlYWsocmVzb2x2ZXIsIGxpbmVJbmZvLCByZW5kZXJUZXh0SW5mbywgbGFz
dEZsb2F0RnJvbVByZXZpb3VzTGluZSwgY29uc2VjdXRpdmVIeXBoZW5hdGVkTGluZXMsIHdvcmRN
ZWFzdXJlbWVudHMpOworCisgICAgICAgIEFTU0VSVChzZWdtZW50UmFuZ2VzLnNpemUoKSA9PSBp
KTsKKyAgICAgICAgaWYgKHJlc29sdmVyLnBvc2l0aW9uKCkgPT0gZW5kKSB7CisgICAgICAgICAg
ICAvLyBOb3RoaW5nIGZpdCB0aGlzIHNlZ21lbnQKKyAgICAgICAgICAgIHNlZ21lbnRSYW5nZXMu
YXBwZW5kKExpbmVTZWdtZW50UmFuZ2Uoc2VnbWVudFN0YXJ0LCBzZWdtZW50U3RhcnQpKTsKKyAg
ICAgICAgICAgIHJlc29sdmVyLnNldFBvc2l0aW9uSWdub3JpbmdOZXN0ZWRJc29sYXRlcyhzZWdt
ZW50U3RhcnQpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHJl
c29sdmVyLnBvc2l0aW9uIGlzIGFscmVhZHkgc2tpcHBpbmcgc29tZSBvZiB0aGUgd2hpdGUgc3Bh
Y2UgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbGluZSwKKyAgICAgICAgICAgIC8vIHNvIHRoYXQn
cyB3aHkgc2VnbWVudFN0YXJ0IG1pZ2h0IGJlIGRpZmZlcmVudCB0aGFuIHJlc29sdmVyLnBvc2l0
aW9uKCkuCisgICAgICAgICAgICBMaW5lU2VnbWVudFJhbmdlIHJhbmdlKHJlc29sdmVyLnBvc2l0
aW9uKCksIGVuZCk7CisgICAgICAgICAgICBzZWdtZW50UmFuZ2VzLmFwcGVuZChyYW5nZSk7Cisg
ICAgICAgICAgICByZXNvbHZlci5zZXRQb3NpdGlvbihlbmQsIG51bWJlck9mSXNvbGF0ZUFuY2Vz
dG9ycyhlbmQpKTsKKworICAgICAgICAgICAgaWYgKGxpbmVJbmZvLnByZXZpb3VzTGluZUJyb2tl
Q2xlYW5seSgpKSB7CisgICAgICAgICAgICAgICAgLy8gSWYgd2UgaGl0IGEgbmV3IGxpbmUgYnJl
YWssIGp1c3Qgc3RvcCBhZGRpbmcgYW55dGhpbmcgdG8gdGhpcyBsaW5lLgorICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJlc29sdmVy
LnNldFBvc2l0aW9uSWdub3JpbmdOZXN0ZWRJc29sYXRlcyhvbGRFbmQpOworI2VuZGlmCisgICAg
cmV0dXJuIGVuZDsKK30KKworSW5saW5lSXRlcmF0b3IgUmVuZGVyQmxvY2s6OkxpbmVCcmVha2Vy
OjpuZXh0U2VnbWVudEJyZWFrKElubGluZUJpZGlSZXNvbHZlciYgcmVzb2x2ZXIsIExpbmVJbmZv
JiBsaW5lSW5mbywgUmVuZGVyVGV4dEluZm8mIHJlbmRlclRleHRJbmZvLCBGbG9hdGluZ09iamVj
dCogbGFzdEZsb2F0RnJvbVByZXZpb3VzTGluZSwgdW5zaWduZWQgY29uc2VjdXRpdmVIeXBoZW5h
dGVkTGluZXMsIFdvcmRNZWFzdXJlbWVudHMmIHdvcmRNZWFzdXJlbWVudHMpCit7CiAgICAgcmVz
ZXQoKTsKIAogICAgIEFTU0VSVChyZXNvbHZlci5wb3NpdGlvbigpLnJvb3QoKSA9PSBtX2Jsb2Nr
KTsKQEAgLTI5MDAsNiArMzAxMiw4IEBAIElubGluZUl0ZXJhdG9yIFJlbmRlckJsb2NrOjpMaW5l
QnJlYWtlcjo6bmV4dExpbmVCcmVhayhJbmxpbmVCaWRpUmVzb2x2ZXImIHJlc29sCiAgICAgICAg
IH0KICAgICB9CiAKKyAgICAvLyBGSVhNRSBCdWcgMTAwMDQ5OiBXZSBkbyBub3QgbmVlZCB0byBj
b25zdW1lIGlucHV0IGluIGEgbXVsdGktc2VnbWVudCBsaW5lCisgICAgLy8gdW5sZXNzIG5vIHNl
Z21lbnQgd2lsbC4KICAgICAvLyBtYWtlIHN1cmUgd2UgY29uc3VtZSBhdCBsZWFzdCBvbmUgY2hh
ci9vYmplY3QuCiAgICAgaWYgKGxCcmVhayA9PSByZXNvbHZlci5wb3NpdGlvbigpKQogICAgICAg
ICBsQnJlYWsuaW5jcmVtZW50KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMjMxZTE5MzJjYTIyZDMxMzc3NzI4ZDdhMmVh
YmI0M2MyN2E5YTc5Zi4uNmVjNzZmNjg1MGIyODAxMWMyYTgxN2VkMzY4NTNkZjIwYWVkZDY1YSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTEwLTIzICBCZWFyIFRyYXZpcyAgPGJldHJhdmlz
QGFkb2JlLmNvbT4KKworICAgICAgICBbQ1NTIEV4Y2x1c2lvbnNdIEVuYWJsZSBzaGFwZS1pbnNp
ZGUgZm9yIG11bHRpcGxlLXNlZ21lbnQgcG9seWdvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxODc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaW5nIGEgc2ltcGxlIHRlc3QgdG8gZW5zdXJlIG11
bHRpcGxlIHNlZ21lbnRzIGZ1bmN0aW9uYWxpdHkgaXMgd29ya2luZy4gQWRkaXRpb25hbAorICAg
ICAgICB0ZXN0aW5nIHdpbGwgZm9sbG93IGluIHN1YnNlcXVlbnQgcGF0Y2hlcy4KKworICAgICAg
ICAqIGZhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNl
Z21lbnRzLTAwMS1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lv
bnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDEuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNp
ZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAyLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNlZ21l
bnRzLTAwMi5odG1sOiBBZGRlZC4KKwogMjAxMi0xMC0yMyAgTGV2aSBXZWludHJhdWIgIDxsZXZp
d0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVGhlIHJlc3Qgb2YgdGhlIGJhc2VsaW5lcyBoYXZl
IGxhbmRlZCEgU2hvdWxkIGdyZWVuIHRoZSBNYWMgYm90cyBmb3IgTWF0aE1MIGFmdGVyIHIxMzIy
NjQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvcmVzb3VyY2VzL211
bHRpLXNlZ21lbnQtcG9seWdvbi5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9yZXNv
dXJjZXMvbXVsdGktc2VnbWVudC1wb2x5Z29uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE1ZDU1YjhmM2FhYTRk
MjVlNjg3MTVkNmYyOGIyNGZlNDg1Mjg2ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2V4Y2x1c2lvbnMvcmVzb3VyY2VzL211bHRpLXNlZ21lbnQtcG9seWdvbi5qcwpAQCAt
MCwwICsxLDUxIEBACitmdW5jdGlvbiBnZW5lcmF0ZVBvbHlnb24od2lkdGgsIGhlaWdodCwgZm9u
dFNpemUsIHBvaW50cywgY29udGVudCkgeworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAg
ICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldENTU0V4Y2x1c2lvbnNFbmFibGVkKHRy
dWUpOworICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB2
YXIgcG9seWdvbiA9IHBvaW50cy5tYXAoZnVuY3Rpb24oZWxlbSwgaW5kZXgsIGFycmF5KSB7Cisg
ICAgICAgIHJldHVybiBlbGVtLnRvU3RyaW5nKCkgKyAncHgnICsgKGluZGV4IDwgYXJyYXkubGVu
Z3RoIC0gMSAmJiBpbmRleCAlIDIgPT0gMSA/ICcsJyA6ICcnKTsKKyAgICB9KS5qb2luKCcgJyk7
CisgICAgcG9seWdvbiA9ICdwb2x5Z29uKCcgKyBwb2x5Z29uICsgJyknOworICAgIGRpdi5zdHls
ZS5zZXRQcm9wZXJ0eSgnLXdlYmtpdC1zaGFwZS1pbnNpZGUnLCBwb2x5Z29uKTsKKyAgICBkaXYu
c3R5bGUuc2V0UHJvcGVydHkoJ3dpZHRoJywgd2lkdGggKyAncHgnKTsKKyAgICBkaXYuc3R5bGUu
c2V0UHJvcGVydHkoJ2hlaWdodCcsIGhlaWdodCArICdweCcpOworICAgIGRpdi5zdHlsZS5zZXRQ
cm9wZXJ0eSgnZm9udCcsIGZvbnRTaXplICsgJ3B4LzEgQWhlbSwgc2Fucy1zZXJpZicpOworICAg
IGRpdi5zdHlsZS5zZXRQcm9wZXJ0eSgnY29sb3InLCAnZ3JlZW4nKTsKKyAgICBkaXYuc3R5bGUu
c2V0UHJvcGVydHkoJ3dvcmQtd3JhcCcsICdicmVhay13b3JkJyk7CisgICAgZGl2LmlubmVySFRN
TCA9IGNvbnRlbnQ7CisgICAgaWYgKGRvY3VtZW50LmJvZHkuY2hpbGROb2Rlcy5sZW5ndGgpCisg
ICAgICAgIGRvY3VtZW50LmJvZHkuaW5zZXJ0QmVmb3JlKGRpdiwgZG9jdW1lbnQuYm9keS5jaGls
ZE5vZGVzWzBdKTsKKyAgICBlbHNlCisgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo
ZGl2KTsKK30KKworZnVuY3Rpb24gc2ltdWxhdGVXaXRoVGV4dCh3aWR0aCwgaGVpZ2h0LCBmb250
U2l6ZSwgY29udGVudCkgeworICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdk
aXYnKTsKKyAgICBkaXYuc3R5bGUuc2V0UHJvcGVydHkoJ3dpZHRoJywgd2lkdGggKyAncHgnKTsK
KyAgICBkaXYuc3R5bGUuc2V0UHJvcGVydHkoJ2hlaWdodCcsIGhlaWdodCArICdweCcpOworICAg
IGRpdi5zdHlsZS5zZXRQcm9wZXJ0eSgnZm9udCcsIGZvbnRTaXplICsgJ3B4LzEgQWhlbSwgc2Fu
cy1zZXJpZicpOworICAgIGRpdi5zdHlsZS5zZXRQcm9wZXJ0eSgnY29sb3InLCAnZ3JlZW4nKTsK
KyAgICBkaXYuaW5uZXJIVE1MID0gY29udGVudDsKKyAgICBpZiAoZG9jdW1lbnQuYm9keS5jaGls
ZE5vZGVzLmxlbmd0aCkKKyAgICAgICAgZG9jdW1lbnQuYm9keS5pbnNlcnRCZWZvcmUoZGl2LCBk
b2N1bWVudC5ib2R5LmNoaWxkTm9kZXNbMF0pOworICAgIGVsc2UKKyAgICAgICAgZG9jdW1lbnQu
Ym9keS5hcHBlbmRDaGlsZChkaXYpOworCit9CisKK2Z1bmN0aW9uIHNpbXVsYXRlV2l0aFBvbHln
b24od2lkdGgsIGhlaWdodCwgcG9pbnRzKSB7CisgICAgdmFyIHN2ZyA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLCAnc3ZnJyk7CisgICAgc3Zn
LnNldEF0dHJpYnV0ZSgnd2lkdGgnLCB3aWR0aCArICdweCcpOworICAgIHN2Zy5zZXRBdHRyaWJ1
dGUoJ2hlaWdodCcsIGhlaWdodCArICdweCcpOworICAgIHZhciBwb2ludHMgPSBwb2ludHMucmVk
dWNlKGZ1bmN0aW9uKHByZXYsIGN1cnIsIGluZGV4LCBhcnJheSkgeworICAgICAgICByZXR1cm4g
cHJldiArIGN1cnIgKyAoaW5kZXggJSAyID09IDAgPyAnLCcgOiAnICcpOworICAgIH0sICcnKTsK
KyAgICB2YXIgcG9seWdvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmcnLCdwb2x5Z29uJyk7CisgICAgcG9seWdvbi5zZXRBdHRyaWJ1dGVOUyhu
dWxsLCAnZmlsbCcsICdncmVlbicpOworICAgIHBvbHlnb24uc2V0QXR0cmlidXRlTlMobnVsbCwg
J3BvaW50cycsIHBvaW50cyk7CisgICAgc3ZnLmFwcGVuZENoaWxkKHBvbHlnb24pOworICAgIGlm
IChkb2N1bWVudC5ib2R5LmNoaWxkTm9kZXMubGVuZ3RoKQorICAgICAgICBkb2N1bWVudC5ib2R5
Lmluc2VydEJlZm9yZShzdmcsIGRvY3VtZW50LmJvZHkuY2hpbGROb2Rlc1swXSk7CisgICAgZWxz
ZQorICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHN2Zyk7Cit9ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25z
L3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAxLWV4cGVjdGVk
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWlu
c2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDEtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMTg5
ZTNmNDI4Nzg0YWE1YzIyYWJlMzBlM2UwZTZlNGNkNTUzYjVhCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtbXVs
dGlwbGUtc2VnbWVudHMtMDAxLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSw5IEBACis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Jy4uL3Jlc291cmNlcy9tdWx0aS1zZWdtZW50LXBvbHlnb24u
anMnPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJzaW11bGF0ZVdpdGhUZXh0KDI1
MCwgMTAwLCA1MCwgJ1hYIFhYIFhYWFhYJykiPgorVGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBBaGVt
IGZvbnQsIGFuZCBzaG91bGQgZGlzcGxheSBhIDV4MiBncmlkIG9mIGdyZWVuIHNxdWFyZXMsIHdp
dGggb25lIG1pc3NpbmcgaW4gdGhlIGNlbnRlciBvZiB0aGUgdG9wIHJvdy4KK0l0IHRlc3RzIHRo
YXQgYSBsaW5lIG1heSBjb250YWluIG11bHRpcGxlIHNlZ21lbnRzIG9mIHRleHQuCis8L2JvZHk+
Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUt
c2VnbWVudHMtMDAxLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5z
aWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDEuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
YjZlNmUxZDg4YzdkZWRiOWUzZWRkMzMxZTM2MTZlZTA5N2ZiZmUzCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUt
bXVsdGlwbGUtc2VnbWVudHMtMDAxLmh0bWwKQEAgLTAsMCArMSw5IEBACis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9Jy4uL3Jlc291cmNlcy9tdWx0aS1zZWdtZW50LXBvbHlnb24uanMnPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJnZW5lcmF0ZVBvbHlnb24oMjUwLCAxMDAs
IDUwLCBbMCwwLDEwMCwwLDEwMCwyNSwxNTAsMjUsMTUwLDAsMjUwLDAsMjUwLDEwMCwwLDEwMF0s
ICdYWFhYWFhYWFgnKSI+CitUaGlzIHRlc3QgcmVxdWlyZXMgdGhlIEFoZW0gZm9udCwgYW5kIHNo
b3VsZCBkaXNwbGF5IGEgNXgyIGdyaWQgb2YgZ3JlZW4gc3F1YXJlcywgd2l0aCBvbmUgbWlzc2lu
ZyBpbiB0aGUgY2VudGVyIG9mIHRoZSB0b3Agcm93LgorSXQgdGVzdHMgdGhhdCBhIGxpbmUgbWF5
IGNvbnRhaW4gbXVsdGlwbGUgc2VnbWVudHMgb2YgdGV4dC4KKzwvYm9keT4KKzwvaHRtbD4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4
Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDIt
ZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUv
c2hhcGUtaW5zaWRlLW11bHRpcGxlLXNlZ21lbnRzLTAwMi1leHBlY3RlZC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE2YmRhZTJiYjhjYTE1MGE2OGRhZGI4M2NlMmM0MTI5N2Y4Y2VkMDUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWlu
c2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDItZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDkgQEAK
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0nLi4vcmVzb3VyY2VzL211bHRpLXNlZ21lbnQt
cG9seWdvbi5qcyc+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InNpbXVsYXRlV2l0
aFRleHQoMjUwLCAxMDAsIDUwLCAnWFhYWFggWFggWFgnKSI+CitUaGlzIHRlc3QgcmVxdWlyZXMg
dGhlIEFoZW0gZm9udCwgYW5kIHNob3VsZCBkaXNwbGF5IGEgNXgyIGdyaWQgb2YgZ3JlZW4gc3F1
YXJlcywgd2l0aCBvbmUgbWlzc2luZyBpbiB0aGUgY2VudGVyIG9mIHRoZSBib3R0b20gcm93Lgor
SXQgdGVzdHMgdGhhdCBhIGxpbmUgbWF5IGNvbnRhaW4gbXVsdGlwbGUgc2VnbWVudHMgb2YgdGV4
dC4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lk
ZS1tdWx0aXBsZS1zZWdtZW50cy0wMDIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9u
cy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNlZ21lbnRzLTAwMi5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmQ0NDM1YTk4M2JiNDllODdmNWRmNmJjNzVhN2E5YWYwMTk5ZWFhMzMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3No
YXBlLWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDIuaHRtbApAQCAtMCwwICsxLDkgQEAKKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0nLi4vcmVzb3VyY2VzL211bHRpLXNlZ21lbnQtcG9s
eWdvbi5qcyc+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9ImdlbmVyYXRlUG9seWdv
bigyNTAsIDEwMCwgNTAsIFswLDAsMjUwLDAsMjUwLDEwMCwxNTAsMTAwLDE1MCw3NSwxMDAsNzUs
MTAwLDEwMCwwLDEwMF0sICdYWFhYWFhYWFgnKSI+CitUaGlzIHRlc3QgcmVxdWlyZXMgdGhlIEFo
ZW0gZm9udCwgYW5kIHNob3VsZCBkaXNwbGF5IGEgNXgyIGdyaWQgb2YgZ3JlZW4gc3F1YXJlcywg
d2l0aCBvbmUgbWlzc2luZyBpbiB0aGUgY2VudGVyIG9mIHRoZSBib3R0b20gcm93LgorSXQgdGVz
dHMgdGhhdCBhIGxpbmUgbWF5IGNvbnRhaW4gbXVsdGlwbGUgc2VnbWVudHMgb2YgdGV4dC4KKzwv
Ym9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170722</attachid>
            <date>2012-10-25 13:29:50 -0700</date>
            <delta_ts>2012-10-25 15:58:26 -0700</delta_ts>
            <desc>Incorporating feedback</desc>
            <filename>bug-91878-20121025132824.patch</filename>
            <type>text/plain</type>
            <size>40597</size>
            <attacher name="Bear Travis">betravis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyNTI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGJlMjUwZWY5MThjMGMx
ZTdkZDZkNDFiMGEzZTY1YmU2M2E0ZGMwZC4uMmMxZjA3MWNlZTQ3YWY5ZGMxN2MwZmE1OTk2N2Nm
MDgyYmZmZWY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDEyLTEwLTI1ICBCZWFy
IFRyYXZpcyAgPGJldHJhdmlzQGFkb2JlLmNvbT4KKworICAgICAgICBbQ1NTIEV4Y2x1c2lvbnNd
IEVuYWJsZSBzaGFwZS1pbnNpZGUgZm9yIG11bHRpcGxlLXNlZ21lbnQgcG9seWdvbnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxODc4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGF0Y2ggYWRkaW5nIHN1
cHBvcnQgZm9yIG11bHRpcGxlLXNlZ21lbnQgcG9seWdvbnMgZm9yIHNoYXBlLWluc2lkZXMgZnJv
bQorICAgICAgICB0aGUgQ1NTIEV4Y2x1c2lvbnMgc3BlY2lmaWNhdGlvbi4gVGhlIGxheW91dCBj
b2RlIGhhcyBiZWVuIG1vZGlmaWVkIHRvIGZpcnN0CisgICAgICAgIHN1cHBvcnQgZGl2aWRpbmcg
dGV4dCBpbnRvIG11bHRpcGxlIHNlZ21lbnRzIHBlciBsaW5lLCBhbmQgdGhlbiB0byBsYXkgb3V0
CisgICAgICAgIG11bHRpcGxlIHNlZ21lbnRzIHBlciBsaW5lIGJveC4KKworICAgICAgICBUZXN0
czogIGZhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNl
Z21lbnRzLTAwMS5odG1sCisgICAgICAgICAgICAgICAgZmFzdC9leGNsdXNpb25zL3NoYXBlLWlu
c2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAyLmh0bWwKKworICAgICAgICAq
IHJlbmRlcmluZy9CaWRpUnVuLmg6CisgICAgICAgIChXZWJDb3JlOjpCaWRpUnVuOjpCaWRpUnVu
KToKKyAgICAgICAgKEJpZGlSdW4pOiBBZGRlZCBhICdzdGFydHNTZWdtZW50JyBib29sZWFuIHRv
IHRyYWNrIHdoZXRoZXIgYSBydW4gYmVnaW5zCisgICAgICAgIGEgbmV3IHNlZ21lbnQuCisgICAg
ICAgICogcmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFeGNsdXNpb25TaGFwZUluc2lkZUluZm86OmNvbXB1dGVTZWdtZW50c0ZvckxpbmUp
OiBDbGVhciB0aGUKKyAgICAgICAgc2VnbWVudCByYW5nZXMgd2hlbiBjb21wdXRpbmcgc2VnbWVu
dHMgZm9yIGEgbmV3IGxpbmUuCisgICAgICAgICogcmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlSW5z
aWRlSW5mby5oOgorICAgICAgICAoTGluZVNlZ21lbnRSYW5nZSk6IEFkZGVkIGEgbmV3IHR5cGUg
dG8gdHJhY2sgc2VnbWVudCBvZmZzZXRzLgorICAgICAgICAoV2ViQ29yZTo6TGluZVNlZ21lbnRS
YW5nZTo6TGluZVNlZ21lbnRSYW5nZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbzo6c2VnbWVudFJhbmdlcyk6IEFkZGVkIGEg
Z2V0dGVyIGZvcgorICAgICAgICB0aGUgbGluZSBzZWdtZW50IHJhbmdlcyB2ZWN0b3IuCisgICAg
ICAgIChFeGNsdXNpb25TaGFwZUluc2lkZUluZm8pOgorICAgICAgICAqIHJlbmRlcmluZy9Jbmxp
bmVGbG93Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OnBsYWNlQm94
ZXNJbklubGluZURpcmVjdGlvbik6IE1vZGlmaWVkIHRvIGNhbGwKKyAgICAgICAgYSByZWZhY3Rv
cmVkIGJveCBwbGFjZW1lbnQgYWxnb3JpdGhtIHRoYXQgdGFrZXMgYSBiZWdpbm5pbmcgYW5kIGVu
ZCBwb3NpdGlvbi4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5l
Rmxvd0JveDo6cGxhY2VCb3hSYW5nZUluSW5saW5lRGlyZWN0aW9uKTogU2ltaWxhciB0byB0aGUK
KyAgICAgICAgcGxhY2VCb3hlcyBtZXRob2QsIGJ1dCB0YWtlcyBhbiBlbmQgcG9zaXRpb24gdGhh
dCBtYXkgb2NjdXIgYmVmb3JlIHRoZSBlbmQKKyAgICAgICAgb2YgdGhlIGxpbmUuCisgICAgICAg
ICogcmVuZGVyaW5nL0lubGluZUZsb3dCb3guaDoKKyAgICAgICAgKElubGluZUZsb3dCb3gpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9jazo6ZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvSW50ZXJuYWwpOiBGYWN0b3JlZCBv
dXQgY2FsbHMKKyAgICAgICAgdG8gRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvIHRvIHRoZSAuY3Bw
IGZpbGUsIGFzIEV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbworICAgICAgICByZXF1aXJlcyBJbmxp
bmVJdGVyYXRvci5oLCB3aGljaCB3b3VsZCBjcmVhdGUgYSBjaXJjdWxhciBkZXBlbmRlbmN5IGlu
CisgICAgICAgIEV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby5oLgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpleGNsdXNpb25TaGFwZUluc2lkZUluZm8p
OiBNb2RpZmllZCB0byBjYWxsCisgICAgICAgIGV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mb0ludGVy
bmFsLgorICAgICAgICAoUmVuZGVyQmxvY2spOgorICAgICAgICAoTGluZUJyZWFrZXIpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGluZVdpZHRoOjpMaW5lV2lkdGgpOiBMaW5lV2lkdGggbm93IHVzZXMgdGhlIG51bWJl
ciBvZiBjb21wdXRlZAorICAgICAgICBzZWdtZW50UmFuZ2VzIHRvIGRldGVybWluZSB3aGljaCBM
aW5lU2VnbWVudCB0byB1c2Ugd2hlbiBjYWxjdWxhdGluZyB3aWR0aC4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJsb2NrOjpjcmVhdGVMaW5lQm94ZXMpOiBOb3cgdGFrZXMgYSBib29sZWFuIHRv
IGRldGVybWluZQorICAgICAgICB3aGV0aGVyIG9yIG5vdCBpdCBjYW4gc2hhcmUgdGhlIHNhbWUg
cGFyZW50Qm94IGFzIGl0cyBzaWJsaW5ncyAoc2VnbWVudHMKKyAgICAgICAgbXVzdCBiZSBhYmxl
IHRvIHBvc2l0aW9uIHRoZW1zZWx2ZXMgc2VwYXJhdGVseSBpbiB0aGUgUm9vdElubGluZUJveCku
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y29uc3RydWN0TGluZSk6CisgICAgICAg
IChXZWJDb3JlOjpjb21wdXRlRXhwYW5zaW9uRm9ySnVzdGlmaWVkVGV4dCk6IERvIGluY2x1ZGUg
cnVucyB0aGF0IHN0YXJ0IG5ldworICAgICAgICBzZWdtZW50cyB3aGVuIGNhbGN1bGF0aW5nIGp1
c3RpZmljYXRpb24gZm9yIHRoZSBjdXJyZW50IHNlZ21lbnQuCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9jazo6Y29tcHV0ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0ZvckxpbmUpOiBNb2Rp
ZmllZCB0bworICAgICAgICB1c2UgdGhlIGNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlvbnNG
b3JTZWdtZW50LCB3aGljaCBjYW4gcG9zaXRpb24KKyAgICAgICAgbXVsdGlwbGUgc2VnbWVudHMg
b2YgdGV4dCBwZXIgbGluZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjb21wdXRl
SW5saW5lRGlyZWN0aW9uUG9zaXRpb25zRm9yU2VnbWVudCk6IFBvc2l0aW9ucworICAgICAgICB0
aGUgZ2l2ZW4gc2VnbWVudCBvZiB0ZXh0IGFuZCBjYWxjdWxhdGVzIGl0cyBsYXlvdXQgb2Zmc2V0
cy4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEJpZGlSdW5zKTogTW9kaWZpZWQgc29tZSB2
YXJpYWJsZXMgZnJvbSAnZW5kT2ZMaW5lJyB0byAnZW5kT2ZTZWdtZW50Jy4KKyAgICAgICAgKFdl
YkNvcmU6OmNvbnN0cnVjdEJpZGlSdW5zRm9yTGluZSk6IENvbnN0cnVjdCB0aGUgYmlkaSBydW5z
IGZvciBlYWNoIHNlZ21lbnQgaW4KKyAgICAgICAgdGhlIGdpdmVuIGxpbmUuCisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpsYXlvdXRSdW5zQW5kRmxv
YXRzSW5SYW5nZSk6IENhbGwgY29uc3RydWN0QmlkaVJ1bnNGb3JMaW5lLgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQmxvY2s6OkxpbmVCcmVha2VyOjpuZXh0TGluZUJyZWFrKTogTW92ZWQgdGhl
IGxpbmUgYnJlYWtpbmcgY29kZQorICAgICAgICB0byBicmVhayBzZWdtZW50cywgd2l0aCBuZXh0
TGluZUJyZWFrIGl0ZXJhdGluZyBvdmVyIHNlZ21lbnQgYnJlYWtzIGZvciB0aGUgZW50aXJlIGxp
bmUuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6TGluZUJyZWFrZXI6Om5leHRTZWdt
ZW50QnJlYWspOiBDYWxjdWxhdGVzIGhvdyBtdWNoIHRleHQgYQorICAgICAgICBzZWdtZW50IGNh
biBob2xkLiBUaGlzIGNvZGUgd2FzIG9yaWdpbmFsbHkgaW4gbmV4dExpbmVCcmVhay4KKwogMjAx
Mi0xMC0yNSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBMb2cgdGhlIHRpbGUgY2FjaGUgdGlsZSBzaXplIGluIHRlc3Qgb3V0cHV0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQmlkaVJ1bi5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0JpZGlSdW4uaAppbmRleCBmNTBmYTE5NmZmNmUyZTVhZmU4ZmJjZTM3ODU5YWQ5NGQ5
OGQ2YzExLi45OWIyYWFlYzU2ZDExNzQ1MDIxMGQ5ZmRiZjJkYzhlZTE1YjIyMmZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQmlkaVJ1bi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9CaWRpUnVuLmgKQEAgLTM5LDYgKzM5LDcgQEAgc3RydWN0IEJpZGlSdW4g
OiBCaWRpQ2hhcmFjdGVyUnVuIHsKICAgICAgICAgLCBtX29iamVjdChvYmplY3QpCiAgICAgICAg
ICwgbV9ib3goMCkKICAgICAgICAgLCBtX2hhc0h5cGhlbihmYWxzZSkKKyAgICAgICAgLCBtX3N0
YXJ0c1NlZ21lbnQoZmFsc2UpCiAgICAgewogICAgIH0KIApAQCAtNjEsNiArNjIsNyBAQCBwdWJs
aWM6CiAgICAgUmVuZGVyT2JqZWN0KiBtX29iamVjdDsKICAgICBJbmxpbmVCb3gqIG1fYm94Owog
ICAgIGJvb2wgbV9oYXNIeXBoZW47CisgICAgYm9vbCBtX3N0YXJ0c1NlZ21lbnQ7CiB9OwogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGVJbnNp
ZGVJbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25TaGFwZUluc2lk
ZUluZm8uY3BwCmluZGV4IGI3ODMwZjEwZWY2YmU0YzM5MjMwNzgzNTNjNGQwOTg3ZDc3MWEwZGYu
LmZkYjEwZjkzMzM5Zjc2ZWQzMTA4MzFiZGZkNzZlODhiYzg1NzRhYTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25TaGFwZUluc2lkZUluZm8uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25TaGFwZUluc2lkZUluZm8uY3BwCkBA
IC0xMDYsNiArMTA2LDcgQEAgYm9vbCBFeGNsdXNpb25TaGFwZUluc2lkZUluZm86OmNvbXB1dGVT
ZWdtZW50c0ZvckxpbmUoTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXQKICAgICBtX2xpbmVUb3Ag
PSBsaW5lVG9wOwogICAgIG1fbGluZUhlaWdodCA9IGxpbmVIZWlnaHQ7CiAgICAgbV9zZWdtZW50
cy5jbGVhcigpOworICAgIG1fc2VnbWVudFJhbmdlcy5jbGVhcigpOwogCiAgICAgaWYgKGxpbmVP
dmVybGFwc1NoYXBlQm91bmRzKCkpIHsKICAgICAgICAgQVNTRVJUKG1fc2hhcGUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby5oCmlu
ZGV4IGJlYTJiNDVhMDMxNzVkYjhhMDNhNTg3MGE0OTg5Mjc0YmJkZDBjYTkuLmIzMzQ5ODAyZTE3
Y2NjYTQyYzY0OTY1ZTA1MjE1MzBlMWY5NmEwZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9FeGNsdXNpb25TaGFwZUluc2lkZUluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLmgKQEAgLTM0LDYgKzM0LDcgQEAK
IAogI2luY2x1ZGUgIkV4Y2x1c2lvblNoYXBlLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisj
aW5jbHVkZSAiSW5saW5lSXRlcmF0b3IuaCIKICNpbmNsdWRlICJMYXlvdXRUeXBlc0lubGluZU1l
dGhvZHMuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KQEAgLTQzLDYgKzQ0LDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVu
ZGVyQmxvY2s7CiAKK3N0cnVjdCBMaW5lU2VnbWVudFJhbmdlIHsKKyAgICBJbmxpbmVJdGVyYXRv
ciBzdGFydDsKKyAgICBJbmxpbmVJdGVyYXRvciBlbmQ7CisgICAgTGluZVNlZ21lbnRSYW5nZShJ
bmxpbmVJdGVyYXRvciBzdGFydCwgSW5saW5lSXRlcmF0b3IgZW5kKQorICAgICAgICA6IHN0YXJ0
KHN0YXJ0KQorICAgICAgICAsIGVuZChlbmQpCisgICAgeworICAgIH0KK307Cit0eXBlZGVmIFZl
Y3RvcjxMaW5lU2VnbWVudFJhbmdlPiBTZWdtZW50UmFuZ2VMaXN0OworCiBjbGFzcyBFeGNsdXNp
b25TaGFwZUluc2lkZUluZm8gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgpAQCAtNzMsNiArODUsMTQgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoaGFzU2VnbWVudHMo
KSk7CiAgICAgICAgIHJldHVybiBtX3NlZ21lbnRzOwogICAgIH0KKyAgICBTZWdtZW50UmFuZ2VM
aXN0JiBzZWdtZW50UmFuZ2VzKCkgeyByZXR1cm4gbV9zZWdtZW50UmFuZ2VzOyB9CisgICAgY29u
c3QgTGluZVNlZ21lbnQqIGN1cnJlbnRTZWdtZW50KCkgY29uc3QKKyAgICB7CisgICAgICAgIGlm
ICghaGFzU2VnbWVudHMoKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBBU1NFUlQo
bV9zZWdtZW50UmFuZ2VzLnNpemUoKSA8IG1fc2VnbWVudHMuc2l6ZSgpKTsKKyAgICAgICAgcmV0
dXJuICZtX3NlZ21lbnRzW21fc2VnbWVudFJhbmdlcy5zaXplKCldOworICAgIH0KICAgICBib29s
IGNvbXB1dGVTZWdtZW50c0ZvckxpbmUoTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxp
bmVIZWlnaHQpOwogICAgIGJvb2wgbGluZU92ZXJsYXBzU2hhcGVCb3VuZHMoKSBjb25zdDsKICAg
ICB2b2lkIGNvbXB1dGVTaGFwZVNpemUoTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgsIExheW91dFVu
aXQgbG9naWNhbEhlaWdodCk7CkBAIC05MCw2ICsxMTAsNyBAQCBwcml2YXRlOgogICAgIExheW91
dFVuaXQgbV9sb2dpY2FsSGVpZ2h0OwogCiAgICAgU2VnbWVudExpc3QgbV9zZWdtZW50czsKKyAg
ICBTZWdtZW50UmFuZ2VMaXN0IG1fc2VnbWVudFJhbmdlczsKICAgICBib29sIG1fc2hhcGVTaXpl
RGlydHk7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5l
Rmxvd0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAK
aW5kZXggNjZiYzExZTA5NDcyNjE5NTZjYTllMmE4YmE1MmIxMDU5NjcwNGZlNS4uMzI4MzVjZjBi
NDAzOGI2NjBkZTkzNzkzOTRjMGFjMTViNjIwZWRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9JbmxpbmVGbG93Qm94LmNwcApAQCAtMzY5LDE1ICszNjksMzYgQEAgdm9pZCBJbmxpbmVG
bG93Qm94OjpkZXRlcm1pbmVTcGFjaW5nRm9yRmxvd0JveGVzKGJvb2wgbGFzdExpbmUsIGJvb2wg
aXNMb2dpY2FsbHkKIGZsb2F0IElubGluZUZsb3dCb3g6OnBsYWNlQm94ZXNJbklubGluZURpcmVj
dGlvbihmbG9hdCBsb2dpY2FsTGVmdCwgYm9vbCYgbmVlZHNXb3JkU3BhY2luZywgR2x5cGhPdmVy
Zmxvd0FuZEZhbGxiYWNrRm9udHNNYXAmIHRleHRCb3hEYXRhTWFwKQogewogICAgIC8vIFNldCBv
dXIgeCBwb3NpdGlvbi4KLSAgICBzZXRMb2dpY2FsTGVmdChsb2dpY2FsTGVmdCk7Ci0gIAorICAg
IGJlZ2luUGxhY2luZ0JveFJhbmdlc0luSW5saW5lRGlyZWN0aW9uKGxvZ2ljYWxMZWZ0KTsKKwog
ICAgIGZsb2F0IHN0YXJ0TG9naWNhbExlZnQgPSBsb2dpY2FsTGVmdDsKICAgICBsb2dpY2FsTGVm
dCArPSBib3JkZXJMb2dpY2FsTGVmdCgpICsgcGFkZGluZ0xvZ2ljYWxMZWZ0KCk7CiAKICAgICBm
bG9hdCBtaW5Mb2dpY2FsTGVmdCA9IHN0YXJ0TG9naWNhbExlZnQ7CiAgICAgZmxvYXQgbWF4TG9n
aWNhbFJpZ2h0ID0gbG9naWNhbExlZnQ7CiAKLSAgICBmb3IgKElubGluZUJveCogY3VyciA9IGZp
cnN0Q2hpbGQoKTsgY3VycjsgY3VyciA9IGN1cnItPm5leHRPbkxpbmUoKSkgeworICAgIHBsYWNl
Qm94UmFuZ2VJbklubGluZURpcmVjdGlvbihmaXJzdENoaWxkKCksIDAsIGxvZ2ljYWxMZWZ0LCBt
aW5Mb2dpY2FsTGVmdCwgbWF4TG9naWNhbFJpZ2h0LCBuZWVkc1dvcmRTcGFjaW5nLCB0ZXh0Qm94
RGF0YU1hcCk7CisKKyAgICBsb2dpY2FsTGVmdCArPSBib3JkZXJMb2dpY2FsUmlnaHQoKSArIHBh
ZGRpbmdMb2dpY2FsUmlnaHQoKTsKKyAgICBlbmRQbGFjaW5nQm94UmFuZ2VzSW5JbmxpbmVEaXJl
Y3Rpb24oc3RhcnRMb2dpY2FsTGVmdCwgbG9naWNhbExlZnQsIG1pbkxvZ2ljYWxMZWZ0LCBtYXhM
b2dpY2FsUmlnaHQpOworICAgIHJldHVybiBsb2dpY2FsTGVmdDsKK30KKworaW5saW5lIHZvaWQg
SW5saW5lRmxvd0JveDo6YmVnaW5QbGFjaW5nQm94UmFuZ2VzSW5JbmxpbmVEaXJlY3Rpb24oZmxv
YXQgbG9naWNhbExlZnQpCit7CisgICAgc2V0TG9naWNhbExlZnQobG9naWNhbExlZnQpOworfQor
CitpbmxpbmUgdm9pZCBJbmxpbmVGbG93Qm94OjplbmRQbGFjaW5nQm94UmFuZ2VzSW5JbmxpbmVE
aXJlY3Rpb24oZmxvYXQgbG9naWNhbExlZnQsIGZsb2F0IGxvZ2ljYWxSaWdodCwgZmxvYXQgbWlu
TG9naWNhbExlZnQsIGZsb2F0IG1heExvZ2ljYWxSaWdodCkKK3sKKyAgICBzZXRMb2dpY2FsV2lk
dGgobG9naWNhbFJpZ2h0IC0gbG9naWNhbExlZnQpOworICAgIGlmIChrbm93blRvSGF2ZU5vT3Zl
cmZsb3coKSAmJiAobWluTG9naWNhbExlZnQgPCBsb2dpY2FsTGVmdCB8fCBtYXhMb2dpY2FsUmln
aHQgPiBsb2dpY2FsUmlnaHQpKQorICAgICAgICBjbGVhcktub3duVG9IYXZlTm9PdmVyZmxvdygp
OworfQorCitmbG9hdCBJbmxpbmVGbG93Qm94OjpwbGFjZUJveFJhbmdlSW5JbmxpbmVEaXJlY3Rp
b24oSW5saW5lQm94KiBmaXJzdENoaWxkLCBJbmxpbmVCb3gqIGxhc3RDaGlsZCwgZmxvYXQmIGxv
Z2ljYWxMZWZ0LCBmbG9hdCYgbWluTG9naWNhbExlZnQsIGZsb2F0JiBtYXhMb2dpY2FsUmlnaHQs
IGJvb2wmIG5lZWRzV29yZFNwYWNpbmcsIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFw
JiB0ZXh0Qm94RGF0YU1hcCkKK3sKKyAgICBmb3IgKElubGluZUJveCogY3VyciA9IGZpcnN0Q2hp
bGQ7IGN1cnIgJiYgY3VyciAhPSBsYXN0Q2hpbGQ7IGN1cnIgPSBjdXJyLT5uZXh0T25MaW5lKCkp
IHsKICAgICAgICAgaWYgKGN1cnItPnJlbmRlcmVyKCktPmlzVGV4dCgpKSB7CiAgICAgICAgICAg
ICBJbmxpbmVUZXh0Qm94KiB0ZXh0ID0gdG9JbmxpbmVUZXh0Qm94KGN1cnIpOwogICAgICAgICAg
ICAgUmVuZGVyVGV4dCogcnQgPSB0b1JlbmRlclRleHQodGV4dC0+cmVuZGVyZXIoKSk7CkBAIC00
MjksMTEgKzQ1MCw2IEBAIGZsb2F0IElubGluZUZsb3dCb3g6OnBsYWNlQm94ZXNJbklubGluZURp
cmVjdGlvbihmbG9hdCBsb2dpY2FsTGVmdCwgYm9vbCYgbmVlZHNXCiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICB9Ci0KLSAgICBsb2dpY2FsTGVmdCArPSBib3JkZXJMb2dpY2FsUmlnaHQo
KSArIHBhZGRpbmdMb2dpY2FsUmlnaHQoKTsKLSAgICBzZXRMb2dpY2FsV2lkdGgobG9naWNhbExl
ZnQgLSBzdGFydExvZ2ljYWxMZWZ0KTsKLSAgICBpZiAoa25vd25Ub0hhdmVOb092ZXJmbG93KCkg
JiYgKG1pbkxvZ2ljYWxMZWZ0IDwgc3RhcnRMb2dpY2FsTGVmdCB8fCBtYXhMb2dpY2FsUmlnaHQg
PiBsb2dpY2FsTGVmdCkpCi0gICAgICAgIGNsZWFyS25vd25Ub0hhdmVOb092ZXJmbG93KCk7CiAg
ICAgcmV0dXJuIGxvZ2ljYWxMZWZ0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZUZsb3dCb3guaAppbmRleCA0OGI3MjBjNzVkZDUzZTdkMjA5NzgyZGQ0YmEyZjMxYTQ1MjE1MDBl
Li40NDcyYWU1NDU2ODEyMGIzN2FjMzA4ZTZiYTM3NmYzNzY2MzExMmI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmgKQEAgLTE3NCw2ICsxNzQsMTAgQEAgcHVibGlj
OgogICAgIHZvaWQgZGV0ZXJtaW5lU3BhY2luZ0ZvckZsb3dCb3hlcyhib29sIGxhc3RMaW5lLCBi
b29sIGlzTG9naWNhbGx5TGFzdFJ1bldyYXBwZWQsIFJlbmRlck9iamVjdCogbG9naWNhbGx5TGFz
dFJ1blJlbmRlcmVyKTsKICAgICBMYXlvdXRVbml0IGdldEZsb3dTcGFjaW5nTG9naWNhbFdpZHRo
KCk7CiAgICAgZmxvYXQgcGxhY2VCb3hlc0luSW5saW5lRGlyZWN0aW9uKGZsb2F0IGxvZ2ljYWxM
ZWZ0LCBib29sJiBuZWVkc1dvcmRTcGFjaW5nLCBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250
c01hcCYpOworICAgIGZsb2F0IHBsYWNlQm94UmFuZ2VJbklubGluZURpcmVjdGlvbihJbmxpbmVC
b3gqIGZpcnN0Q2hpbGQsIElubGluZUJveCogbGFzdENoaWxkLCBmbG9hdCYgbG9naWNhbExlZnQs
IGZsb2F0JiBtaW5Mb2dpY2FsTGVmdCwgZmxvYXQmIG1heExvZ2ljYWxSaWdodCwgYm9vbCYgbmVl
ZHNXb3JkU3BhY2luZywgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXAmKTsKKyAgICB2
b2lkIGJlZ2luUGxhY2luZ0JveFJhbmdlc0luSW5saW5lRGlyZWN0aW9uKGZsb2F0IGxvZ2ljYWxM
ZWZ0KTsKKyAgICB2b2lkIGVuZFBsYWNpbmdCb3hSYW5nZXNJbklubGluZURpcmVjdGlvbihmbG9h
dCBsb2dpY2FsTGVmdCwgZmxvYXQgbG9naWNhbFJpZ2h0LCBmbG9hdCBtaW5Mb2dpY2FsTGVmdCwg
ZmxvYXQgbWF4TG9naWNhbFJpZ2h0KTsKKwogICAgIHZvaWQgY29tcHV0ZUxvZ2ljYWxCb3hIZWln
aHRzKFJvb3RJbmxpbmVCb3gqLCBMYXlvdXRVbml0JiBtYXhQb3NpdGlvblRvcCwgTGF5b3V0VW5p
dCYgbWF4UG9zaXRpb25Cb3R0b20sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50JiBtYXhBc2NlbnQsIGludCYgbWF4RGVzY2VudCwgYm9vbCYgc2V0TWF4QXNjZW50LCBib29s
JiBzZXRNYXhEZXNjZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
c3RyaWN0TW9kZSwgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXAmLCBGb250QmFzZWxp
bmUsIFZlcnRpY2FsUG9zaXRpb25DYWNoZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9jay5jcHAKaW5kZXggMTIxODZkMWU4NjZjNTQ4MjQ2NmM1M2M2NDNkNTE3MzI4MmZmYmI0
NC4uNWE1Y2E2NDFiMjJhYzA0NTRmZTE3MDY0YThlYWJiZTAxYjdiNjllYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0xMzk1LDYgKzEzOTUsMTEgQEAgdm9p
ZCBSZW5kZXJCbG9jazo6bGF5b3V0KCkKIH0KIAogI2lmIEVOQUJMRShDU1NfRVhDTFVTSU9OUykK
K0V4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbyogUmVuZGVyQmxvY2s6OmV4Y2x1c2lvblNoYXBlSW5z
aWRlSW5mb0ludGVybmFsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gRXhjbHVzaW9uU2hhcGVJbnNp
ZGVJbmZvOjppc0V4Y2x1c2lvblNoYXBlSW5zaWRlSW5mb0VuYWJsZWRGb3JSZW5kZXJCbG9jayh0
aGlzKSA/IEV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbzo6ZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZv
Rm9yUmVuZGVyQmxvY2sodGhpcykgOiAwOworfQorCiB2b2lkIFJlbmRlckJsb2NrOjp1cGRhdGVF
eGNsdXNpb25TaGFwZUluc2lkZUluZm9BZnRlclN0eWxlQ2hhbmdlKGNvbnN0IEJhc2ljU2hhcGUq
IHNoYXBlSW5zaWRlLCBjb25zdCBCYXNpY1NoYXBlKiBvbGRTaGFwZUluc2lkZSkKIHsKICAgICAv
LyBGSVhNRTogQSBmdXR1cmUgb3B0aW1pemF0aW9uIHdvdWxkIGRvIGEgZGVlcCBjb21wYXJpc29u
IGZvciBlcXVhbGl0eS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKaW5kZXgg
NTY3ZDdkY2I0YzNlYWEwMjgxNDk4NjQ0MTk4MmRiYWNmZDIwMDNiZS4uNjJmNWY0NTFiNTYxZGQ4
NTlkYjE2ZjA3ZWNlZmFjMzA0ZWIwNGNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrLmgKQEAgLTM0LDEwICszNCw2IEBACiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogCi0jaWYgRU5BQkxFKENTU19FWENMVVNJT05TKQot
I2luY2x1ZGUgIkV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby5oIgotI2VuZGlmCi0KIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgQmlkaUNvbnRleHQ7CkBAIC01Miw2ICs0OCwxMCBAQCBzdHJ1
Y3QgQmlkaVJ1bjsKIHN0cnVjdCBQYWludEluZm87CiBjbGFzcyBMaW5lSW5mbzsKIGNsYXNzIFJl
bmRlclJ1YnlSdW47CisjaWYgRU5BQkxFKENTU19FWENMVVNJT05TKQorY2xhc3MgQmFzaWNTaGFw
ZTsKK2NsYXNzIEV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbzsKKyNlbmRpZgogY2xhc3MgVGV4dExh
eW91dDsKIGNsYXNzIFdvcmRNZWFzdXJlbWVudDsKIApAQCAtNDIwLDcgKzQyMCw3IEBAIHB1Ymxp
YzoKICNpZiBFTkFCTEUoQ1NTX0VYQ0xVU0lPTlMpCiAgICAgRXhjbHVzaW9uU2hhcGVJbnNpZGVJ
bmZvKiBleGNsdXNpb25TaGFwZUluc2lkZUluZm8oKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0
dXJuIHN0eWxlKCktPnNoYXBlSW5zaWRlKCkgJiYgRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvOjpp
c0V4Y2x1c2lvblNoYXBlSW5zaWRlSW5mb0VuYWJsZWRGb3JSZW5kZXJCbG9jayh0aGlzKSA/IEV4
Y2x1c2lvblNoYXBlSW5zaWRlSW5mbzo6ZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvRm9yUmVuZGVy
QmxvY2sodGhpcykgOiAwOworICAgICAgICByZXR1cm4gc3R5bGUoKS0+c2hhcGVJbnNpZGUoKSA/
IGV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mb0ludGVybmFsKCkgOiAwOwogICAgIH0KICNlbmRpZgog
CkBAIC01MTcsNiArNTE3LDcgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogI2lmIEVOQUJMRShD
U1NfRVhDTFVTSU9OUykKKyAgICBFeGNsdXNpb25TaGFwZUluc2lkZUluZm8qIGV4Y2x1c2lvblNo
YXBlSW5zaWRlSW5mb0ludGVybmFsKCkgY29uc3Q7CiAgICAgdm9pZCBjb21wdXRlRXhjbHVzaW9u
U2hhcGVTaXplKCk7CiAgICAgdm9pZCB1cGRhdGVFeGNsdXNpb25TaGFwZUluc2lkZUluZm9BZnRl
clN0eWxlQ2hhbmdlKGNvbnN0IEJhc2ljU2hhcGUqLCBjb25zdCBCYXNpY1NoYXBlKiBvbGRXcmFw
U2hhcGUpOwogI2VuZGlmCkBAIC03NTQsNiArNzU1LDcgQEAgcHJpdmF0ZToKICAgICBwcml2YXRl
OgogICAgICAgICB2b2lkIHJlc2V0KCk7CiAgICAgICAgIAorICAgICAgICBJbmxpbmVJdGVyYXRv
ciBuZXh0U2VnbWVudEJyZWFrKElubGluZUJpZGlSZXNvbHZlciYsIExpbmVJbmZvJiwgUmVuZGVy
VGV4dEluZm8mLCBGbG9hdGluZ09iamVjdCogbGFzdEZsb2F0RnJvbVByZXZpb3VzTGluZSwgdW5z
aWduZWQgY29uc2VjdXRpdmVIeXBoZW5hdGVkTGluZXMsIFdvcmRNZWFzdXJlbWVudHMmKTsKICAg
ICAgICAgdm9pZCBza2lwVHJhaWxpbmdXaGl0ZXNwYWNlKElubGluZUl0ZXJhdG9yJiwgY29uc3Qg
TGluZUluZm8mKTsKICAgICAgICAgdm9pZCBza2lwTGVhZGluZ1doaXRlc3BhY2UoSW5saW5lQmlk
aVJlc29sdmVyJiwgTGluZUluZm8mLCBGbG9hdGluZ09iamVjdCogbGFzdEZsb2F0RnJvbVByZXZp
b3VzTGluZSwgTGluZVdpZHRoJik7CiAgICAgICAgIApAQCAtNzcwLDEwICs3NzIsMTIgQEAgcHJp
dmF0ZToKICAgICBib29sIGNoZWNrUGFnaW5hdGlvbkFuZEZsb2F0c0F0RW5kTGluZShMaW5lTGF5
b3V0U3RhdGUmKTsKICAgICAKICAgICBSb290SW5saW5lQm94KiBjb25zdHJ1Y3RMaW5lKEJpZGlS
dW5MaXN0PEJpZGlSdW4+JiwgY29uc3QgTGluZUluZm8mKTsKLSAgICBJbmxpbmVGbG93Qm94KiBj
cmVhdGVMaW5lQm94ZXMoUmVuZGVyT2JqZWN0KiwgY29uc3QgTGluZUluZm8mLCBJbmxpbmVCb3gq
IGNoaWxkQm94KTsKKyAgICBJbmxpbmVGbG93Qm94KiBjcmVhdGVMaW5lQm94ZXMoUmVuZGVyT2Jq
ZWN0KiwgY29uc3QgTGluZUluZm8mLCBJbmxpbmVCb3gqIGNoaWxkQm94LCBib29sIHN0YXJ0c05l
d1NlZ21uZXQpOwogCiAgICAgdm9pZCBzZXRNYXJnaW5zRm9yUnVieVJ1bihCaWRpUnVuKiwgUmVu
ZGVyUnVieVJ1biosIFJlbmRlck9iamVjdCosIGNvbnN0IExpbmVJbmZvJik7CiAKKyAgICBCaWRp
UnVuKiBjb21wdXRlSW5saW5lRGlyZWN0aW9uUG9zaXRpb25zRm9yU2VnbWVudChSb290SW5saW5l
Qm94KiwgY29uc3QgTGluZUluZm8mLCBFVGV4dEFsaWduLCBmbG9hdCYgbG9naWNhbExlZnQsCisg
ICAgICAgIGZsb2F0JiBhdmFpbGFibGVMb2dpY2FsV2lkdGgsIEJpZGlSdW4qIGZpcnN0UnVuLCBC
aWRpUnVuKiB0cmFpbGluZ1NwYWNlUnVuLCBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01h
cCYgdGV4dEJveERhdGFNYXAsIFZlcnRpY2FsUG9zaXRpb25DYWNoZSYsIFdvcmRNZWFzdXJlbWVu
dHMmKTsKICAgICB2b2lkIGNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlvbnNGb3JMaW5lKFJv
b3RJbmxpbmVCb3gqLCBjb25zdCBMaW5lSW5mbyYsIEJpZGlSdW4qIGZpcnN0UnVuLCBCaWRpUnVu
KiB0cmFpbGluZ1NwYWNlUnVuLCBib29sIHJlYWNoZWRFbmQsIEdseXBoT3ZlcmZsb3dBbmRGYWxs
YmFja0ZvbnRzTWFwJiwgVmVydGljYWxQb3NpdGlvbkNhY2hlJiwgV29yZE1lYXN1cmVtZW50cyYp
OwogICAgIHZvaWQgY29tcHV0ZUJsb2NrRGlyZWN0aW9uUG9zaXRpb25zRm9yTGluZShSb290SW5s
aW5lQm94KiwgQmlkaVJ1biosIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwJiwgVmVy
dGljYWxQb3NpdGlvbkNhY2hlJik7CiAgICAgdm9pZCBkZWxldGVFbGxpcHNpc0xpbmVCb3hlcygp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxh
eW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0
LmNwcAppbmRleCA3NTZhM2MzMWVjM2IzNzMxN2IwZjRiNmVjNDhiODA2ZTJlOGZlMGZlLi5mNjM4
YWI2MzBkYjIxMWFmMmE4NTllOGFiMWI2NzUzYzE1NWYwMzg5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcApAQCAtODgsOSArODgs
OCBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChibG9jayk7CiAjaWYgRU5BQkxFKENTU19FWENM
VVNJT05TKQogICAgICAgICBFeGNsdXNpb25TaGFwZUluc2lkZUluZm8qIGV4Y2x1c2lvblNoYXBl
SW5zaWRlSW5mbyA9IGxheW91dEV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbyhtX2Jsb2NrKTsKLSAg
ICAgICAgLy8gRklYTUU6IEJ1ZyA5MTg3ODogQWRkIHN1cHBvcnQgZm9yIG11bHRpcGxlIHNlZ21l
bnRzLCBjdXJyZW50bHkgd2Ugb25seSBzdXBwb3J0IG9uZQotICAgICAgICBpZiAoZXhjbHVzaW9u
U2hhcGVJbnNpZGVJbmZvICYmIGV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby0+aGFzU2VnbWVudHMo
KSkKLSAgICAgICAgICAgIG1fc2VnbWVudCA9ICZleGNsdXNpb25TaGFwZUluc2lkZUluZm8tPnNl
Z21lbnRzKClbMF07CisgICAgICAgIGlmIChleGNsdXNpb25TaGFwZUluc2lkZUluZm8pCisgICAg
ICAgICAgICBtX3NlZ21lbnQgPSBleGNsdXNpb25TaGFwZUluc2lkZUluZm8tPmN1cnJlbnRTZWdt
ZW50KCk7CiAjZW5kaWYKICAgICAgICAgdXBkYXRlQXZhaWxhYmxlV2lkdGgoKTsKICAgICB9CkBA
IC00NTUsNyArNDU0LDcgQEAgc3RhdGljIGJvb2wgcGFyZW50SXNDb25zdHJ1Y3RlZE9ySGF2ZU5l
eHQoSW5saW5lRmxvd0JveCogcGFyZW50Qm94KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotSW5s
aW5lRmxvd0JveCogUmVuZGVyQmxvY2s6OmNyZWF0ZUxpbmVCb3hlcyhSZW5kZXJPYmplY3QqIG9i
aiwgY29uc3QgTGluZUluZm8mIGxpbmVJbmZvLCBJbmxpbmVCb3gqIGNoaWxkQm94KQorSW5saW5l
Rmxvd0JveCogUmVuZGVyQmxvY2s6OmNyZWF0ZUxpbmVCb3hlcyhSZW5kZXJPYmplY3QqIG9iaiwg
Y29uc3QgTGluZUluZm8mIGxpbmVJbmZvLCBJbmxpbmVCb3gqIGNoaWxkQm94LCBib29sIHN0YXJ0
TmV3U2VnbWVudCkKIHsKICAgICAvLyBTZWUgaWYgd2UgaGF2ZSBhbiB1bmNvbnN0cnVjdGVkIGxp
bmUgYm94IGZvciB0aGlzIG9iamVjdCB0aGF0IGlzIGFsc28KICAgICAvLyB0aGUgbGFzdCBpdGVt
IG9uIHRoZSBsaW5lLgpAQCAtNDc4LDcgKzQ3Nyw4IEBAIElubGluZUZsb3dCb3gqIFJlbmRlckJs
b2NrOjpjcmVhdGVMaW5lQm94ZXMoUmVuZGVyT2JqZWN0KiBvYmosIGNvbnN0IExpbmVJbmZvJiBs
CiAgICAgICAgIC8vIHRoZSBzYW1lIGxpbmUgKHRoaXMgY2FuIGhhcHBlbiB3aXRoIHZlcnkgZmFu
Y3kgbGFuZ3VhZ2UgbWl4dHVyZXMpLgogICAgICAgICBib29sIGNvbnN0cnVjdGVkTmV3Qm94ID0g
ZmFsc2U7CiAgICAgICAgIGJvb2wgYWxsb3dlZFRvQ29uc3RydWN0TmV3Qm94ID0gIWhhc0RlZmF1
bHRMaW5lQm94Q29udGFpbiB8fCAhaW5saW5lRmxvdyB8fCBpbmxpbmVGbG93LT5hbHdheXNDcmVh
dGVMaW5lQm94ZXMoKTsKLSAgICAgICAgYm9vbCBjYW5Vc2VFeGlzdGluZ1BhcmVudEJveCA9IHBh
cmVudEJveCAmJiAhcGFyZW50SXNDb25zdHJ1Y3RlZE9ySGF2ZU5leHQocGFyZW50Qm94KTsKKyAg
ICAgICAgYm9vbCBtdXN0Q3JlYXRlQm94ZXNUb1Jvb3QgPSBzdGFydE5ld1NlZ21lbnQgJiYgIXBh
cmVudEJveC0+aXNSb290SW5saW5lQm94KCk7CisgICAgICAgIGJvb2wgY2FuVXNlRXhpc3RpbmdQ
YXJlbnRCb3ggPSBwYXJlbnRCb3ggJiYgIXBhcmVudElzQ29uc3RydWN0ZWRPckhhdmVOZXh0KHBh
cmVudEJveCkgJiYgIW11c3RDcmVhdGVCb3hlc1RvUm9vdDsKICAgICAgICAgaWYgKGFsbG93ZWRU
b0NvbnN0cnVjdE5ld0JveCAmJiAhY2FuVXNlRXhpc3RpbmdQYXJlbnRCb3gpIHsKICAgICAgICAg
ICAgIC8vIFdlIG5lZWQgdG8gbWFrZSBhIG5ldyBib3ggZm9yIHRoaXMgcmVuZGVyIG9iamVjdC4g
IE9uY2UKICAgICAgICAgICAgIC8vIG1hZGUsIHdlIG5lZWQgdG8gcGxhY2UgaXQgYXQgdGhlIGVu
ZCBvZiB0aGUgY3VycmVudCBsaW5lLgpAQCAtNTc1LDEwICs1NzUsMTEgQEAgUm9vdElubGluZUJv
eCogUmVuZGVyQmxvY2s6OmNvbnN0cnVjdExpbmUoQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4mIGJpZGlS
dW5zLCBjb25zdAogCiAgICAgICAgIC8vIElmIHdlIGhhdmUgbm8gcGFyZW50IGJveCB5ZXQsIG9y
IGlmIHRoZSBydW4gaXMgbm90IHNpbXBseSBhIHNpYmxpbmcsCiAgICAgICAgIC8vIHRoZW4gd2Ug
bmVlZCB0byBjb25zdHJ1Y3QgaW5saW5lIGJveGVzIGFzIG5lY2Vzc2FyeSB0byBwcm9wZXJseSBl
bmNsb3NlIHRoZQotICAgICAgICAvLyBydW4ncyBpbmxpbmUgYm94LgotICAgICAgICBpZiAoIXBh
cmVudEJveCB8fCBwYXJlbnRCb3gtPnJlbmRlcmVyKCkgIT0gci0+bV9vYmplY3QtPnBhcmVudCgp
KQorICAgICAgICAvLyBydW4ncyBpbmxpbmUgYm94LiBTZWdtZW50cyBjYW4gb25seSBiZSBzaWJs
aW5ncyBhdCB0aGUgcm9vdCBsZXZlbCwgYXMKKyAgICAgICAgLy8gdGhleSBhcmUgcG9zaXRpb25l
ZCBzZXBhcmF0ZWx5LgorICAgICAgICBpZiAoIXBhcmVudEJveCB8fCBwYXJlbnRCb3gtPnJlbmRl
cmVyKCkgIT0gci0+bV9vYmplY3QtPnBhcmVudCgpIHx8IHItPm1fc3RhcnRzU2VnbWVudCkKICAg
ICAgICAgICAgIC8vIENyZWF0ZSBuZXcgaW5saW5lIGJveGVzIGFsbCB0aGUgd2F5IGJhY2sgdG8g
dGhlIGFwcHJvcHJpYXRlIGluc2VydGlvbiBwb2ludC4KLSAgICAgICAgICAgIHBhcmVudEJveCA9
IGNyZWF0ZUxpbmVCb3hlcyhyLT5tX29iamVjdC0+cGFyZW50KCksIGxpbmVJbmZvLCBib3gpOwor
ICAgICAgICAgICAgcGFyZW50Qm94ID0gY3JlYXRlTGluZUJveGVzKHItPm1fb2JqZWN0LT5wYXJl
bnQoKSwgbGluZUluZm8sIGJveCwgci0+bV9zdGFydHNTZWdtZW50KTsKICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICAvLyBBcHBlbmQgdGhlIGlubGluZSBib3ggdG8gdGhpcyBsaW5lLgogICAg
ICAgICAgICAgcGFyZW50Qm94LT5hZGRUb0xpbmUoYm94KTsKQEAgLTgxMyw2ICs4MTQsOSBAQCBz
dGF0aWMgaW5saW5lIHZvaWQgY29tcHV0ZUV4cGFuc2lvbkZvckp1c3RpZmllZFRleHQoQmlkaVJ1
biogZmlyc3RSdW4sIEJpZGlSdW4qCiAKICAgICBzaXplX3QgaSA9IDA7CiAgICAgZm9yIChCaWRp
UnVuKiByID0gZmlyc3RSdW47IHI7IHIgPSByLT5uZXh0KCkpIHsKKyAgICAgICAgLy8gVGhlIGNh
bGN1bGF0aW9uIGlzIHNlcGFyYXRlIGZvciBlYWNoIHNlZ21lbnQKKyAgICAgICAgaWYgKHItPm1f
c3RhcnRzU2VnbWVudCkKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBpZiAoIXItPm1fYm94
IHx8IHIgPT0gdHJhaWxpbmdTcGFjZVJ1bikKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAKQEAgLTg4OCwxNyArODkyLDUzIEBAIHZvaWQgUmVuZGVyQmxvY2s6OmNvbXB1dGVJbmxpbmVE
aXJlY3Rpb25Qb3NpdGlvbnNGb3JMaW5lKFJvb3RJbmxpbmVCb3gqIGxpbmVCb3gsCiAgICAgLy8g
Q1NTIDIuMTogIidUZXh0LWluZGVudCcgb25seSBhZmZlY3RzIGEgbGluZSBpZiBpdCBpcyB0aGUg
Zmlyc3QgZm9ybWF0dGVkIGxpbmUgb2YgYW4gZWxlbWVudC4gRm9yIGV4YW1wbGUsIHRoZSBmaXJz
dCBsaW5lIG9mIGFuIGFub255bW91cyBibG9jayAKICAgICAvLyBib3ggaXMgb25seSBhZmZlY3Rl
ZCBpZiBpdCBpcyB0aGUgZmlyc3QgY2hpbGQgb2YgaXRzIHBhcmVudCBlbGVtZW50LiIKICAgICBi
b29sIGZpcnN0TGluZSA9IGxpbmVJbmZvLmlzRmlyc3RMaW5lKCkgJiYgIShpc0Fub255bW91c0Js
b2NrKCkgJiYgcGFyZW50KCktPmZpcnN0Q2hpbGQoKSAhPSB0aGlzKTsKLSAgICBmbG9hdCBsb2dp
Y2FsTGVmdCA9IHBpeGVsU25hcHBlZExvZ2ljYWxMZWZ0T2Zmc2V0Rm9yTGluZShsb2dpY2FsSGVp
Z2h0KCksIGZpcnN0TGluZSwgbGluZUxvZ2ljYWxIZWlnaHQpOwotICAgIGZsb2F0IGxvZ2ljYWxS
aWdodCA9IHBpeGVsU25hcHBlZExvZ2ljYWxSaWdodE9mZnNldEZvckxpbmUobG9naWNhbEhlaWdo
dCgpLCBmaXJzdExpbmUsIGxpbmVMb2dpY2FsSGVpZ2h0KTsKKyAgICBmbG9hdCBsaW5lTG9naWNh
bExlZnQgPSBwaXhlbFNuYXBwZWRMb2dpY2FsTGVmdE9mZnNldEZvckxpbmUobG9naWNhbEhlaWdo
dCgpLCBmaXJzdExpbmUsIGxpbmVMb2dpY2FsSGVpZ2h0KTsKKyAgICBmbG9hdCBsaW5lTG9naWNh
bFJpZ2h0ID0gcGl4ZWxTbmFwcGVkTG9naWNhbFJpZ2h0T2Zmc2V0Rm9yTGluZShsb2dpY2FsSGVp
Z2h0KCksIGZpcnN0TGluZSwgbGluZUxvZ2ljYWxIZWlnaHQpOworICAgIGZsb2F0IGF2YWlsYWJs
ZUxvZ2ljYWxXaWR0aDsKKyAgICBib29sIG5lZWRzV29yZFNwYWNpbmc7CiAjaWYgRU5BQkxFKENT
U19FWENMVVNJT05TKQogICAgIEV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbyogZXhjbHVzaW9uU2hh
cGVJbnNpZGVJbmZvID0gbGF5b3V0RXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvKHRoaXMpOwogICAg
IGlmIChleGNsdXNpb25TaGFwZUluc2lkZUluZm8gJiYgZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZv
LT5oYXNTZWdtZW50cygpKSB7Ci0gICAgICAgIGxvZ2ljYWxMZWZ0ID0gbWF4PGZsb2F0Pihyb3Vu
ZFRvSW50KGV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby0+c2VnbWVudHMoKVswXS5sb2dpY2FsTGVm
dCksIGxvZ2ljYWxMZWZ0KTsKLSAgICAgICAgbG9naWNhbFJpZ2h0ID0gbWluPGZsb2F0PihmbG9v
clRvSW50KGV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby0+c2VnbWVudHMoKVswXS5sb2dpY2FsUmln
aHQpLCBsb2dpY2FsUmlnaHQpOworICAgICAgICBCaWRpUnVuKiBzZWdtZW50U3RhcnQgPSBmaXJz
dFJ1bjsKKyAgICAgICAgY29uc3QgU2VnbWVudExpc3QmIHNlZ21lbnRzID0gZXhjbHVzaW9uU2hh
cGVJbnNpZGVJbmZvLT5zZWdtZW50cygpOworICAgICAgICBmbG9hdCBsb2dpY2FsTGVmdCA9IG1h
eDxmbG9hdD4ocm91bmRUb0ludChzZWdtZW50c1swXS5sb2dpY2FsTGVmdCksIGxpbmVMb2dpY2Fs
TGVmdCk7CisgICAgICAgIGZsb2F0IGxvZ2ljYWxSaWdodCA9IG1pbjxmbG9hdD4oZmxvb3JUb0lu
dChzZWdtZW50c1swXS5sb2dpY2FsUmlnaHQpLCBsaW5lTG9naWNhbFJpZ2h0KTsKKyAgICAgICAg
ZmxvYXQgc3RhcnRMb2dpY2FsTGVmdCA9IGxvZ2ljYWxMZWZ0OworICAgICAgICBmbG9hdCBlbmRM
b2dpY2FsUmlnaHQgPSBsb2dpY2FsTGVmdDsKKyAgICAgICAgZmxvYXQgbWluTG9naWNhbExlZnQg
PSBsb2dpY2FsTGVmdDsKKyAgICAgICAgZmxvYXQgbWF4TG9naWNhbFJpZ2h0ID0gbG9naWNhbExl
ZnQ7CisgICAgICAgIGxpbmVCb3gtPmJlZ2luUGxhY2luZ0JveFJhbmdlc0luSW5saW5lRGlyZWN0
aW9uKGxvZ2ljYWxMZWZ0KTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzZWdtZW50
cy5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgaWYgKGkpIHsKKyAgICAgICAgICAgICAgICBs
b2dpY2FsTGVmdCA9IG1heDxmbG9hdD4ocm91bmRUb0ludChzZWdtZW50c1swXS5sb2dpY2FsTGVm
dCksIGxpbmVMb2dpY2FsTGVmdCk7CisgICAgICAgICAgICAgICAgbG9naWNhbFJpZ2h0ID0gbWlu
PGZsb2F0PihmbG9vclRvSW50KHNlZ21lbnRzWzBdLmxvZ2ljYWxSaWdodCksIGxpbmVMb2dpY2Fs
UmlnaHQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYXZhaWxhYmxlTG9naWNhbFdpZHRo
ID0gbG9naWNhbFJpZ2h0IC0gbG9naWNhbExlZnQ7CisgICAgICAgICAgICBCaWRpUnVuKiBuZXdT
ZWdtZW50U3RhcnQgPSBjb21wdXRlSW5saW5lRGlyZWN0aW9uUG9zaXRpb25zRm9yU2VnbWVudChs
aW5lQm94LCBsaW5lSW5mbywgdGV4dEFsaWduLCBsb2dpY2FsTGVmdCwgYXZhaWxhYmxlTG9naWNh
bFdpZHRoLCBzZWdtZW50U3RhcnQsIHRyYWlsaW5nU3BhY2VSdW4sIHRleHRCb3hEYXRhTWFwLCB2
ZXJ0aWNhbFBvc2l0aW9uQ2FjaGUsIHdvcmRNZWFzdXJlbWVudHMpOworICAgICAgICAgICAgbmVl
ZHNXb3JkU3BhY2luZyA9IGZhbHNlOworICAgICAgICAgICAgZW5kTG9naWNhbFJpZ2h0ID0gbGlu
ZUJveC0+cGxhY2VCb3hSYW5nZUluSW5saW5lRGlyZWN0aW9uKHNlZ21lbnRTdGFydC0+bV9ib3gs
IG5ld1NlZ21lbnRTdGFydCA/IG5ld1NlZ21lbnRTdGFydC0+bV9ib3ggOiAwLCBsb2dpY2FsTGVm
dCwgbWluTG9naWNhbExlZnQsIG1heExvZ2ljYWxSaWdodCwgbmVlZHNXb3JkU3BhY2luZywgdGV4
dEJveERhdGFNYXApOworICAgICAgICAgICAgaWYgKCFuZXdTZWdtZW50U3RhcnQgfHwgIW5ld1Nl
Z21lbnRTdGFydC0+bmV4dCgpKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
QVNTRVJUKG5ld1NlZ21lbnRTdGFydC0+bV9zdGFydHNTZWdtZW50KTsKKyAgICAgICAgICAgIC8v
IERpc2NhcmQgdGhlIGVtcHR5IHNlZ21lbnQgc3RhcnQgbWFya2VyIGJpZGkgcnVucworICAgICAg
ICAgICAgc2VnbWVudFN0YXJ0ID0gbmV3U2VnbWVudFN0YXJ0LT5uZXh0KCk7CisgICAgICAgIH0K
KyAgICAgICAgbGluZUJveC0+ZW5kUGxhY2luZ0JveFJhbmdlc0luSW5saW5lRGlyZWN0aW9uKHN0
YXJ0TG9naWNhbExlZnQsIGVuZExvZ2ljYWxSaWdodCwgbWluTG9naWNhbExlZnQsIG1heExvZ2lj
YWxSaWdodCk7CisgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKLSAgICBmbG9hdCBhdmFp
bGFibGVMb2dpY2FsV2lkdGggPSBsb2dpY2FsUmlnaHQgLSBsb2dpY2FsTGVmdDsKKyAgICBhdmFp
bGFibGVMb2dpY2FsV2lkdGggPSBsaW5lTG9naWNhbFJpZ2h0IC0gbGluZUxvZ2ljYWxMZWZ0Owor
ICAgIGNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlvbnNGb3JTZWdtZW50KGxpbmVCb3gsIGxp
bmVJbmZvLCB0ZXh0QWxpZ24sIGxpbmVMb2dpY2FsTGVmdCwgYXZhaWxhYmxlTG9naWNhbFdpZHRo
LCBmaXJzdFJ1biwgIHRyYWlsaW5nU3BhY2VSdW4sIHRleHRCb3hEYXRhTWFwLCB2ZXJ0aWNhbFBv
c2l0aW9uQ2FjaGUsIHdvcmRNZWFzdXJlbWVudHMpOworICAgIC8vIFRoZSB3aWR0aHMgb2YgYWxs
IHJ1bnMgYXJlIG5vdyBrbm93bi4gV2UgY2FuIG5vdyBwbGFjZSBldmVyeSBpbmxpbmUgYm94IChh
bmQKKyAgICAvLyBjb21wdXRlIGFjY3VyYXRlIHdpZHRocyBmb3IgdGhlIGlubGluZSBmbG93IGJv
eGVzKS4KKyAgICBuZWVkc1dvcmRTcGFjaW5nID0gZmFsc2U7CisgICAgbGluZUJveC0+cGxhY2VC
b3hlc0luSW5saW5lRGlyZWN0aW9uKGxpbmVMb2dpY2FsTGVmdCwgbmVlZHNXb3JkU3BhY2luZywg
dGV4dEJveERhdGFNYXApOworfQogCitCaWRpUnVuKiBSZW5kZXJCbG9jazo6Y29tcHV0ZUlubGlu
ZURpcmVjdGlvblBvc2l0aW9uc0ZvclNlZ21lbnQoUm9vdElubGluZUJveCogbGluZUJveCwgY29u
c3QgTGluZUluZm8mIGxpbmVJbmZvLCBFVGV4dEFsaWduIHRleHRBbGlnbiwgZmxvYXQmIGxvZ2lj
YWxMZWZ0LAorICAgIGZsb2F0JiBhdmFpbGFibGVMb2dpY2FsV2lkdGgsIEJpZGlSdW4qIGZpcnN0
UnVuLCBCaWRpUnVuKiB0cmFpbGluZ1NwYWNlUnVuLCBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tG
b250c01hcCYgdGV4dEJveERhdGFNYXAsIFZlcnRpY2FsUG9zaXRpb25DYWNoZSYgdmVydGljYWxQ
b3NpdGlvbkNhY2hlLAorICAgIFdvcmRNZWFzdXJlbWVudHMmIHdvcmRNZWFzdXJlbWVudHMpCit7
CiAgICAgYm9vbCBuZWVkc1dvcmRTcGFjaW5nID0gZmFsc2U7CiAgICAgZmxvYXQgdG90YWxMb2dp
Y2FsV2lkdGggPSBsaW5lQm94LT5nZXRGbG93U3BhY2luZ0xvZ2ljYWxXaWR0aCgpOwogICAgIHVu
c2lnbmVkIGV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQgPSAwOwpAQCAtOTA2LDcgKzk0NiwxMSBA
QCB2b2lkIFJlbmRlckJsb2NrOjpjb21wdXRlSW5saW5lRGlyZWN0aW9uUG9zaXRpb25zRm9yTGlu
ZShSb290SW5saW5lQm94KiBsaW5lQm94LAogICAgIFZlY3Rvcjx1bnNpZ25lZCwgMTY+IGV4cGFu
c2lvbk9wcG9ydHVuaXRpZXM7CiAgICAgUmVuZGVyT2JqZWN0KiBwcmV2aW91c09iamVjdCA9IDA7
CiAKLSAgICBmb3IgKEJpZGlSdW4qIHIgPSBmaXJzdFJ1bjsgcjsgciA9IHItPm5leHQoKSkgewor
ICAgIEJpZGlSdW4qIHIgPSBmaXJzdFJ1bjsKKyAgICBmb3IgKDsgcjsgciA9IHItPm5leHQoKSkg
eworICAgICAgICAvLyBEbyBub3QgcGFzcyB0aGUgbWFya2VyIGZvciB0aGUgbmV4dCBzZWdtZW50
CisgICAgICAgIGlmIChyLT5tX3N0YXJ0c1NlZ21lbnQpCisgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgaWYgKCFyLT5tX2JveCB8fCByLT5tX29iamVjdC0+aXNPdXRPZkZsb3dQb3NpdGlvbmVk
KCkgfHwgci0+bV9ib3gtPmlzTGluZUJyZWFrKCkpCiAgICAgICAgICAgICBjb250aW51ZTsgLy8g
UG9zaXRpb25lZCBvYmplY3RzIGFyZSBvbmx5IHBhcnRpY2lwYXRpbmcgdG8gZmlndXJlIG91dCB0
aGVpcgogICAgICAgICAgICAgICAgICAgICAgIC8vIGNvcnJlY3Qgc3RhdGljIHggcG9zaXRpb24u
ICBUaGV5IGhhdmUgbm8gZWZmZWN0IG9uIHRoZSB3aWR0aC4KQEAgLTk1NiwxMCArMTAwMCw3IEBA
IHZvaWQgUmVuZGVyQmxvY2s6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlvbnNGb3JMaW5l
KFJvb3RJbmxpbmVCb3gqIGxpbmVCb3gsCiAKICAgICBjb21wdXRlRXhwYW5zaW9uRm9ySnVzdGlm
aWVkVGV4dChmaXJzdFJ1biwgdHJhaWxpbmdTcGFjZVJ1biwgZXhwYW5zaW9uT3Bwb3J0dW5pdGll
cywgZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudCwgdG90YWxMb2dpY2FsV2lkdGgsIGF2YWlsYWJs
ZUxvZ2ljYWxXaWR0aCk7CiAKLSAgICAvLyBUaGUgd2lkdGhzIG9mIGFsbCBydW5zIGFyZSBub3cg
a25vd24uICBXZSBjYW4gbm93IHBsYWNlIGV2ZXJ5IGlubGluZSBib3ggKGFuZAotICAgIC8vIGNv
bXB1dGUgYWNjdXJhdGUgd2lkdGhzIGZvciB0aGUgaW5saW5lIGZsb3cgYm94ZXMpLgotICAgIG5l
ZWRzV29yZFNwYWNpbmcgPSBmYWxzZTsKLSAgICBsaW5lQm94LT5wbGFjZUJveGVzSW5JbmxpbmVE
aXJlY3Rpb24obG9naWNhbExlZnQsIG5lZWRzV29yZFNwYWNpbmcsIHRleHRCb3hEYXRhTWFwKTsK
KyAgICByZXR1cm4gcjsKIH0KIAogdm9pZCBSZW5kZXJCbG9jazo6Y29tcHV0ZUJsb2NrRGlyZWN0
aW9uUG9zaXRpb25zRm9yTGluZShSb290SW5saW5lQm94KiBsaW5lQm94LCBCaWRpUnVuKiBmaXJz
dFJ1biwgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXAmIHRleHRCb3hEYXRhTWFwLApA
QCAtMTEwNiwxMyArMTE0NywxMyBAQCBzdGF0aWMgaW5saW5lIEJpZGlTdGF0dXMgc3RhdHVzV2l0
aERpcmVjdGlvbihUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24sIGJvb2wgaQogfQogCiAvLyBG
SVhNRTogQmlkaVJlc29sdmVyIHNob3VsZCBoYXZlIHRoaXMgbG9naWMuCi1zdGF0aWMgaW5saW5l
IHZvaWQgY29uc3RydWN0QmlkaVJ1bnMoSW5saW5lQmlkaVJlc29sdmVyJiB0b3BSZXNvbHZlciwg
QmlkaVJ1bkxpc3Q8QmlkaVJ1bj4mIGJpZGlSdW5zLCBjb25zdCBJbmxpbmVJdGVyYXRvciYgZW5k
T2ZMaW5lLCBWaXN1YWxEaXJlY3Rpb25PdmVycmlkZSBvdmVycmlkZSwgYm9vbCBwcmV2aW91c0xp
bmVCcm9rZUNsZWFubHkpCitzdGF0aWMgaW5saW5lIHZvaWQgY29uc3RydWN0QmlkaVJ1bnNGb3JT
ZWdtZW50KElubGluZUJpZGlSZXNvbHZlciYgdG9wUmVzb2x2ZXIsIEJpZGlSdW5MaXN0PEJpZGlS
dW4+JiBiaWRpUnVucywgY29uc3QgSW5saW5lSXRlcmF0b3ImIGVuZE9mUnVucywgVmlzdWFsRGly
ZWN0aW9uT3ZlcnJpZGUgb3ZlcnJpZGUsIGJvb2wgcHJldmlvdXNMaW5lQnJva2VDbGVhbmx5KQog
ewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcGFzcyBhIEJpZGlSdW5MaXN0IGludG8gY3JlYXRl
QmlkaVJ1bnNGb3JMaW5lIGluc3RlYWQKICAgICAvLyBvZiB0aGUgcmVzb2x2ZXIgb3duaW5nIHRo
ZSBydW5zLgogICAgIEFTU0VSVCgmdG9wUmVzb2x2ZXIucnVucygpID09ICZiaWRpUnVucyk7CiAg
ICAgUmVuZGVyT2JqZWN0KiBjdXJyZW50Um9vdCA9IHRvcFJlc29sdmVyLnBvc2l0aW9uKCkucm9v
dCgpOwotICAgIHRvcFJlc29sdmVyLmNyZWF0ZUJpZGlSdW5zRm9yTGluZShlbmRPZkxpbmUsIG92
ZXJyaWRlLCBwcmV2aW91c0xpbmVCcm9rZUNsZWFubHkpOworICAgIHRvcFJlc29sdmVyLmNyZWF0
ZUJpZGlSdW5zRm9yTGluZShlbmRPZlJ1bnMsIG92ZXJyaWRlLCBwcmV2aW91c0xpbmVCcm9rZUNs
ZWFubHkpOwogCiAgICAgd2hpbGUgKCF0b3BSZXNvbHZlci5pc29sYXRlZFJ1bnMoKS5pc0VtcHR5
KCkpIHsKICAgICAgICAgLy8gSXQgZG9lcyBub3QgbWF0dGVyIHdoaWNoIG9yZGVyIHdlIHJlc29s
dmUgdGhlIHJ1bnMgYXMgbG9uZyBhcyB3ZSByZXNvbHZlIHRoZW0gYWxsLgpAQCAtMTE1Miw3ICsx
MTkzLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGNvbnN0cnVjdEJpZGlSdW5zKElubGluZUJpZGlS
ZXNvbHZlciYgdG9wUmVzb2x2ZXIsIEJpZGlSdW5MaXMKICAgICAgICAgLy8gV2Ugc3RvcCBhdCB0
aGUgbmV4dCBlbmQgb2YgbGluZTsgd2UgbWF5IHJlLWVudGVyIHRoaXMgaXNvbGF0ZSBpbiB0aGUg
bmV4dCBjYWxsIHRvIGNvbnN0cnVjdEJpZGlSdW5zKCkuCiAgICAgICAgIC8vIEZJWE1FOiBXaGF0
IHNob3VsZCBlbmQgYW5kIHByZXZpb3VzTGluZUJyb2tlQ2xlYW5seSBiZT8KICAgICAgICAgLy8g
cm5pd2Egc2F5cyBwcmV2aW91c0xpbmVCcm9rZUNsZWFubHkgaXMganVzdCBhIFdpbklFIGhhY2sg
YW5kIGNvdWxkIGFsd2F5cyBiZSBmYWxzZSBoZXJlPwotICAgICAgICBpc29sYXRlZFJlc29sdmVy
LmNyZWF0ZUJpZGlSdW5zRm9yTGluZShlbmRPZkxpbmUsIE5vVmlzdWFsT3ZlcnJpZGUsIHByZXZp
b3VzTGluZUJyb2tlQ2xlYW5seSk7CisgICAgICAgIGlzb2xhdGVkUmVzb2x2ZXIuY3JlYXRlQmlk
aVJ1bnNGb3JMaW5lKGVuZE9mUnVucywgTm9WaXN1YWxPdmVycmlkZSwgcHJldmlvdXNMaW5lQnJv
a2VDbGVhbmx5KTsKICAgICAgICAgLy8gTm90ZSB0aGF0IHdlIGRvIG5vdCBkZWxldGUgdGhlIHJ1
bnMgZnJvbSB0aGUgcmVzb2x2ZXIuCiAgICAgICAgIC8vIFdlJ3JlIG5vdCBndWFyYW50ZWVkIHRv
IGdldCBhbnkgQmlkaVJ1bnMgaW4gdGhlIHByZXZpb3VzIHN0ZXAuIElmIHdlIGRvbid0LCB3ZSBh
bGxvdyB0aGUgcGxhY2Vob2xkZXIKICAgICAgICAgLy8gaXRzZWxmIHRvIGJlIHR1cm5lZCBpbnRv
IGFuIElubGluZUJveC4gV2UgY2FuJ3QgcmVtb3ZlIGl0IGhlcmUgd2l0aG91dCBwb3RlbnRpYWxs
eSBsb3NpbmcgdHJhY2sgb2YKQEAgLTExNjksNiArMTIxMCwzNyBAQCBzdGF0aWMgaW5saW5lIHZv
aWQgY29uc3RydWN0QmlkaVJ1bnMoSW5saW5lQmlkaVJlc29sdmVyJiB0b3BSZXNvbHZlciwgQmlk
aVJ1bkxpcwogICAgIH0KIH0KIAorc3RhdGljIGlubGluZSB2b2lkIGNvbnN0cnVjdEJpZGlSdW5z
Rm9yTGluZShjb25zdCBSZW5kZXJCbG9jayogYmxvY2ssIElubGluZUJpZGlSZXNvbHZlciYgdG9w
UmVzb2x2ZXIsIEJpZGlSdW5MaXN0PEJpZGlSdW4+JiBiaWRpUnVucywgY29uc3QgSW5saW5lSXRl
cmF0b3ImIGVuZE9mTGluZSwgVmlzdWFsRGlyZWN0aW9uT3ZlcnJpZGUgb3ZlcnJpZGUsIGJvb2wg
cHJldmlvdXNMaW5lQnJva2VDbGVhbmx5KQoreworI2lmICFFTkFCTEUoQ1NTX0VYQ0xVU0lPTlMp
CisgICAgY29uc3RydWN0QmlkaVJ1bnNGb3JTZWdtZW50KHRvcFJlc29sdmVyLCBiaWRpUnVucywg
ZW5kT2ZMaW5lLCBvdmVycmlkZSwgcHJldmlvdXNMaW5lQnJva2VDbGVhbmx5KTsKKyNlbHNlCisg
ICAgRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvKiBleGNsdXNpb25TaGFwZUluc2lkZUluZm8gPSBs
YXlvdXRFeGNsdXNpb25TaGFwZUluc2lkZUluZm8oYmxvY2spOworICAgIGlmICghZXhjbHVzaW9u
U2hhcGVJbnNpZGVJbmZvIHx8ICFleGNsdXNpb25TaGFwZUluc2lkZUluZm8tPmhhc1NlZ21lbnRz
KCkpIHsKKyAgICAgICAgY29uc3RydWN0QmlkaVJ1bnNGb3JTZWdtZW50KHRvcFJlc29sdmVyLCBi
aWRpUnVucywgZW5kT2ZMaW5lLCBvdmVycmlkZSwgcHJldmlvdXNMaW5lQnJva2VDbGVhbmx5KTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbnN0IFNlZ21lbnRSYW5nZUxpc3QmIHNl
Z21lbnRSYW5nZXMgPSBleGNsdXNpb25TaGFwZUluc2lkZUluZm8tPnNlZ21lbnRSYW5nZXMoKTsK
KyAgICBBU1NFUlQoc2VnbWVudFJhbmdlcy5zaXplKCkpOworCisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBzZWdtZW50UmFuZ2VzLnNpemUoKTsgaSsrKSB7CisgICAgICAgIElubGluZUl0ZXJh
dG9yIHNlZ21lbnRTdGFydCA9IHNlZ21lbnRSYW5nZXNbaV0uc3RhcnQ7CisgICAgICAgIElubGlu
ZUl0ZXJhdG9yIHNlZ21lbnRFbmQgPSBzZWdtZW50UmFuZ2VzW2ldLmVuZDsKKyAgICAgICAgaWYg
KGkpIHsKKyAgICAgICAgICAgIEFTU0VSVChzZWdtZW50U3RhcnQubV9vYmopOworICAgICAgICAg
ICAgQmlkaVJ1biogc2VnbWVudE1hcmtlciA9IGNyZWF0ZVJ1bihzZWdtZW50U3RhcnQubV9wb3Ms
IHNlZ21lbnRTdGFydC5tX3Bvcywgc2VnbWVudFN0YXJ0Lm1fb2JqLCB0b3BSZXNvbHZlcik7Cisg
ICAgICAgICAgICBzZWdtZW50TWFya2VyLT5tX3N0YXJ0c1NlZ21lbnQgPSB0cnVlOworICAgICAg
ICAgICAgYmlkaVJ1bnMuYWRkUnVuKHNlZ21lbnRNYXJrZXIpOworICAgICAgICAgICAgLy8gRG8g
bm90IGNvbGxhcHNlIG1pZHBvaW50cyBiZXR3ZWVuIHNlZ21lbnRzCisgICAgICAgICAgICB0b3BS
ZXNvbHZlci5taWRwb2ludFN0YXRlKCkuYmV0d2Vlbk1pZHBvaW50cyA9IGZhbHNlOworICAgICAg
ICB9CisgICAgICAgIHRvcFJlc29sdmVyLnNldFBvc2l0aW9uKHNlZ21lbnRTdGFydCwgbnVtYmVy
T2ZJc29sYXRlQW5jZXN0b3JzKHNlZ21lbnRTdGFydCkpOworICAgICAgICBjb25zdHJ1Y3RCaWRp
UnVuc0ZvclNlZ21lbnQodG9wUmVzb2x2ZXIsIGJpZGlSdW5zLCBzZWdtZW50RW5kLCBvdmVycmlk
ZSwgcHJldmlvdXNMaW5lQnJva2VDbGVhbmx5KTsKKyAgICB9CisjZW5kaWYKK30KKwogLy8gVGhp
cyBmdW5jdGlvbiBjb25zdHJ1Y3RzIGxpbmUgYm94ZXMgZm9yIGFsbCBvZiB0aGUgdGV4dCBydW5z
IGluIHRoZSByZXNvbHZlciBhbmQgY29tcHV0ZXMgdGhlaXIgcG9zaXRpb24uCiBSb290SW5saW5l
Qm94KiBSZW5kZXJCbG9jazo6Y3JlYXRlTGluZUJveGVzRnJvbUJpZGlSdW5zKEJpZGlSdW5MaXN0
PEJpZGlSdW4+JiBiaWRpUnVucywgY29uc3QgSW5saW5lSXRlcmF0b3ImIGVuZCwgTGluZUluZm8m
IGxpbmVJbmZvLCBWZXJ0aWNhbFBvc2l0aW9uQ2FjaGUmIHZlcnRpY2FsUG9zaXRpb25DYWNoZSwg
QmlkaVJ1biogdHJhaWxpbmdTcGFjZVJ1biwgV29yZE1lYXN1cmVtZW50cyYgd29yZE1lYXN1cmVt
ZW50cykKIHsKQEAgLTE0NjYsNyArMTUzOCw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmxheW91dFJ1
bnNBbmRGbG9hdHNJblJhbmdlKExpbmVMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIElubGluCiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBvd25lcnNoaXAgaXMgcmV2
ZXJzZWQuIFdlIHNob3VsZCBvd24gdGhlIEJpZGlSdW5MaXN0IGFuZCBwYXNzIGl0IHRvIGNyZWF0
ZUJpZGlSdW5zRm9yTGluZS4KICAgICAgICAgICAgIEJpZGlSdW5MaXN0PEJpZGlSdW4+JiBiaWRp
UnVucyA9IHJlc29sdmVyLnJ1bnMoKTsKLSAgICAgICAgICAgIGNvbnN0cnVjdEJpZGlSdW5zKHJl
c29sdmVyLCBiaWRpUnVucywgZW5kLCBvdmVycmlkZSwgbGF5b3V0U3RhdGUubGluZUluZm8oKS5w
cmV2aW91c0xpbmVCcm9rZUNsZWFubHkoKSk7CisgICAgICAgICAgICBjb25zdHJ1Y3RCaWRpUnVu
c0ZvckxpbmUodGhpcywgcmVzb2x2ZXIsIGJpZGlSdW5zLCBlbmQsIG92ZXJyaWRlLCBsYXlvdXRT
dGF0ZS5saW5lSW5mbygpLnByZXZpb3VzTGluZUJyb2tlQ2xlYW5seSgpKTsKICAgICAgICAgICAg
IEFTU0VSVChyZXNvbHZlci5wb3NpdGlvbigpID09IGVuZCk7CiAKICAgICAgICAgICAgIEJpZGlS
dW4qIHRyYWlsaW5nU3BhY2VSdW4gPSAhbGF5b3V0U3RhdGUubGluZUluZm8oKS5wcmV2aW91c0xp
bmVCcm9rZUNsZWFubHkoKSA/IGhhbmRsZVRyYWlsaW5nU3BhY2VzKGJpZGlSdW5zLCByZXNvbHZl
ci5jb250ZXh0KCkpIDogMDsKQEAgLTIzMTksNiArMjM5MSw0OCBAQCB2b2lkIFJlbmRlckJsb2Nr
OjpMaW5lQnJlYWtlcjo6cmVzZXQoKQogCiBJbmxpbmVJdGVyYXRvciBSZW5kZXJCbG9jazo6TGlu
ZUJyZWFrZXI6Om5leHRMaW5lQnJlYWsoSW5saW5lQmlkaVJlc29sdmVyJiByZXNvbHZlciwgTGlu
ZUluZm8mIGxpbmVJbmZvLCBSZW5kZXJUZXh0SW5mbyYgcmVuZGVyVGV4dEluZm8sIEZsb2F0aW5n
T2JqZWN0KiBsYXN0RmxvYXRGcm9tUHJldmlvdXNMaW5lLCB1bnNpZ25lZCBjb25zZWN1dGl2ZUh5
cGhlbmF0ZWRMaW5lcywgV29yZE1lYXN1cmVtZW50cyYgd29yZE1lYXN1cmVtZW50cykKIHsKKyNp
ZiAhRU5BQkxFKENTU19FWENMVVNJT05TKQorICAgIHJldHVybiBuZXh0U2VnbWVudEJyZWFrKHJl
c29sdmVyLCBsaW5lSW5mbywgcmVuZGVyVGV4dEluZm8sIGxhc3RGbG9hdEZyb21QcmV2aW91c0xp
bmUsIGNvbnNlY3V0aXZlSHlwaGVuYXRlZExpbmVzLCB3b3JkTWVhc3VyZW1lbnRzKTsKKyNlbHNl
CisgICAgRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvKiBleGNsdXNpb25TaGFwZUluc2lkZUluZm8g
PSBsYXlvdXRFeGNsdXNpb25TaGFwZUluc2lkZUluZm8obV9ibG9jayk7CisgICAgaWYgKCFleGNs
dXNpb25TaGFwZUluc2lkZUluZm8gfHwgIWV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby0+aGFzU2Vn
bWVudHMoKSkKKyAgICAgICAgcmV0dXJuIG5leHRTZWdtZW50QnJlYWsocmVzb2x2ZXIsIGxpbmVJ
bmZvLCByZW5kZXJUZXh0SW5mbywgbGFzdEZsb2F0RnJvbVByZXZpb3VzTGluZSwgY29uc2VjdXRp
dmVIeXBoZW5hdGVkTGluZXMsIHdvcmRNZWFzdXJlbWVudHMpOworCisgICAgSW5saW5lSXRlcmF0
b3IgZW5kID0gcmVzb2x2ZXIucG9zaXRpb24oKTsKKyAgICBJbmxpbmVJdGVyYXRvciBvbGRFbmQg
PSBlbmQ7CisKKyAgICBjb25zdCBTZWdtZW50TGlzdCYgc2VnbWVudHMgPSBleGNsdXNpb25TaGFw
ZUluc2lkZUluZm8tPnNlZ21lbnRzKCk7CisgICAgU2VnbWVudFJhbmdlTGlzdCYgc2VnbWVudFJh
bmdlcyA9IGV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby0+c2VnbWVudFJhbmdlcygpOworCisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNlZ21lbnRzLnNpemUoKTsgaSsrKSB7CisgICAgICAg
IElubGluZUl0ZXJhdG9yIHNlZ21lbnRTdGFydCA9IHJlc29sdmVyLnBvc2l0aW9uKCk7CisgICAg
ICAgIGVuZCA9IG5leHRTZWdtZW50QnJlYWsocmVzb2x2ZXIsIGxpbmVJbmZvLCByZW5kZXJUZXh0
SW5mbywgbGFzdEZsb2F0RnJvbVByZXZpb3VzTGluZSwgY29uc2VjdXRpdmVIeXBoZW5hdGVkTGlu
ZXMsIHdvcmRNZWFzdXJlbWVudHMpOworCisgICAgICAgIEFTU0VSVChzZWdtZW50UmFuZ2VzLnNp
emUoKSA9PSBpKTsKKyAgICAgICAgaWYgKHJlc29sdmVyLnBvc2l0aW9uKCkgPT0gZW5kKSB7Cisg
ICAgICAgICAgICAvLyBOb3RoaW5nIGZpdCB0aGlzIHNlZ21lbnQKKyAgICAgICAgICAgIHNlZ21l
bnRSYW5nZXMuYXBwZW5kKExpbmVTZWdtZW50UmFuZ2Uoc2VnbWVudFN0YXJ0LCBzZWdtZW50U3Rh
cnQpKTsKKyAgICAgICAgICAgIHJlc29sdmVyLnNldFBvc2l0aW9uSWdub3JpbmdOZXN0ZWRJc29s
YXRlcyhzZWdtZW50U3RhcnQpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gTm90
ZSB0aGF0IHJlc29sdmVyLnBvc2l0aW9uIGlzIGFscmVhZHkgc2tpcHBpbmcgc29tZSBvZiB0aGUg
d2hpdGUgc3BhY2UgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbGluZSwKKyAgICAgICAgICAgIC8v
IHNvIHRoYXQncyB3aHkgc2VnbWVudFN0YXJ0IG1pZ2h0IGJlIGRpZmZlcmVudCB0aGFuIHJlc29s
dmVyLnBvc2l0aW9uKCkuCisgICAgICAgICAgICBMaW5lU2VnbWVudFJhbmdlIHJhbmdlKHJlc29s
dmVyLnBvc2l0aW9uKCksIGVuZCk7CisgICAgICAgICAgICBzZWdtZW50UmFuZ2VzLmFwcGVuZChy
YW5nZSk7CisgICAgICAgICAgICByZXNvbHZlci5zZXRQb3NpdGlvbihlbmQsIG51bWJlck9mSXNv
bGF0ZUFuY2VzdG9ycyhlbmQpKTsKKworICAgICAgICAgICAgaWYgKGxpbmVJbmZvLnByZXZpb3Vz
TGluZUJyb2tlQ2xlYW5seSgpKSB7CisgICAgICAgICAgICAgICAgLy8gSWYgd2UgaGl0IGEgbmV3
IGxpbmUgYnJlYWssIGp1c3Qgc3RvcCBhZGRpbmcgYW55dGhpbmcgdG8gdGhpcyBsaW5lLgorICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAg
IHJlc29sdmVyLnNldFBvc2l0aW9uSWdub3JpbmdOZXN0ZWRJc29sYXRlcyhvbGRFbmQpOworICAg
IHJldHVybiBlbmQ7CisjZW5kaWYKK30KKworSW5saW5lSXRlcmF0b3IgUmVuZGVyQmxvY2s6Okxp
bmVCcmVha2VyOjpuZXh0U2VnbWVudEJyZWFrKElubGluZUJpZGlSZXNvbHZlciYgcmVzb2x2ZXIs
IExpbmVJbmZvJiBsaW5lSW5mbywgUmVuZGVyVGV4dEluZm8mIHJlbmRlclRleHRJbmZvLCBGbG9h
dGluZ09iamVjdCogbGFzdEZsb2F0RnJvbVByZXZpb3VzTGluZSwgdW5zaWduZWQgY29uc2VjdXRp
dmVIeXBoZW5hdGVkTGluZXMsIFdvcmRNZWFzdXJlbWVudHMmIHdvcmRNZWFzdXJlbWVudHMpCit7
CiAgICAgcmVzZXQoKTsKIAogICAgIEFTU0VSVChyZXNvbHZlci5wb3NpdGlvbigpLnJvb3QoKSA9
PSBtX2Jsb2NrKTsKQEAgLTI5MDAsNiArMzAxNCw4IEBAIElubGluZUl0ZXJhdG9yIFJlbmRlckJs
b2NrOjpMaW5lQnJlYWtlcjo6bmV4dExpbmVCcmVhayhJbmxpbmVCaWRpUmVzb2x2ZXImIHJlc29s
CiAgICAgICAgIH0KICAgICB9CiAKKyAgICAvLyBGSVhNRSBCdWcgMTAwMDQ5OiBXZSBkbyBub3Qg
bmVlZCB0byBjb25zdW1lIGlucHV0IGluIGEgbXVsdGktc2VnbWVudCBsaW5lCisgICAgLy8gdW5s
ZXNzIG5vIHNlZ21lbnQgd2lsbC4KICAgICAvLyBtYWtlIHN1cmUgd2UgY29uc3VtZSBhdCBsZWFz
dCBvbmUgY2hhci9vYmplY3QuCiAgICAgaWYgKGxCcmVhayA9PSByZXNvbHZlci5wb3NpdGlvbigp
KQogICAgICAgICBsQnJlYWsuaW5jcmVtZW50KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggODA0OGYyOGY4NTQ5Njg3NmJl
OGZlZjU3ZmMyMDM3NDViMjYxNzYyZi4uN2JlMDMxOWRlNjQzZmQ2ZjhlYzQzMzlkOTE4MDBkZTBj
NGI0NTgwYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTEwLTI1ICBCZWFyIFRyYXZpcyAg
PGJldHJhdmlzQGFkb2JlLmNvbT4KKworICAgICAgICBbQ1NTIEV4Y2x1c2lvbnNdIEVuYWJsZSBz
aGFwZS1pbnNpZGUgZm9yIG11bHRpcGxlLXNlZ21lbnQgcG9seWdvbnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxODc4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaW5nIGEgc2ltcGxlIHRlc3QgdG8g
ZW5zdXJlIG11bHRpcGxlIHNlZ21lbnRzIGZ1bmN0aW9uYWxpdHkgaXMgd29ya2luZy4gQWRkaXRp
b25hbAorICAgICAgICB0ZXN0aW5nIHdpbGwgZm9sbG93IGluIHN1YnNlcXVlbnQgcGF0Y2hlcy4K
KworICAgICAgICAqIGZhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11
bHRpcGxlLXNlZ21lbnRzLTAwMS1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0w
MDEuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9z
aGFwZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAyLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRp
cGxlLXNlZ21lbnRzLTAwMi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMv
c2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDMtZXhwZWN0ZWQu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFw
ZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAzLmh0bWw6IEFkZGVkLgorCisKIDIwMTItMTAt
MjUgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgTG9n
IHRoZSB0aWxlIGNhY2hlIHRpbGUgc2l6ZSBpbiB0ZXN0IG91dHB1dApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3Jlc291cmNlcy9tdWx0aS1zZWdtZW50LXBvbHlnb24u
anMgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvcmVzb3VyY2VzL211bHRpLXNlZ21lbnQt
cG9seWdvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YmM2ODUwZWY3NTVkM2IwYTI2OGY4ZjA2M2ZiNmYzMTVk
NjJkZGU1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3Jl
c291cmNlcy9tdWx0aS1zZWdtZW50LXBvbHlnb24uanMKQEAgLTAsMCArMSwzNCBAQAorZnVuY3Rp
b24gZ2VuZXJhdGVQb2x5Z29uKHdpZHRoLCBoZWlnaHQsIGZvbnRTaXplLCBwb2ludHMsIGNvbnRl
bnQpIHsKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgd2luZG93LmludGVybmFs
cy5zZXR0aW5ncy5zZXRDU1NFeGNsdXNpb25zRW5hYmxlZCh0cnVlKTsKKyAgICB2YXIgZGl2ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgdmFyIHBvbHlnb24gPSBwb2ludHMu
bWFwKGZ1bmN0aW9uKGVsZW0sIGluZGV4LCBhcnJheSkgeworICAgICAgICByZXR1cm4gZWxlbS50
b1N0cmluZygpICsgJ3B4JyArIChpbmRleCA8IGFycmF5Lmxlbmd0aCAtIDEgJiYgaW5kZXggJSAy
ID09IDEgPyAnLCcgOiAnJyk7CisgICAgfSkuam9pbignICcpOworICAgIHBvbHlnb24gPSAncG9s
eWdvbignICsgcG9seWdvbiArICcpJzsKKyAgICBkaXYuc3R5bGUuc2V0UHJvcGVydHkoJy13ZWJr
aXQtc2hhcGUtaW5zaWRlJywgcG9seWdvbik7CisgICAgZGl2LnN0eWxlLnNldFByb3BlcnR5KCd3
aWR0aCcsIHdpZHRoICsgJ3B4Jyk7CisgICAgZGl2LnN0eWxlLnNldFByb3BlcnR5KCdoZWlnaHQn
LCBoZWlnaHQgKyAncHgnKTsKKyAgICBkaXYuc3R5bGUuc2V0UHJvcGVydHkoJ2ZvbnQnLCBmb250
U2l6ZSArICdweC8xIEFoZW0sIHNhbnMtc2VyaWYnKTsKKyAgICBkaXYuc3R5bGUuc2V0UHJvcGVy
dHkoJ2NvbG9yJywgJ2dyZWVuJyk7CisgICAgZGl2LnN0eWxlLnNldFByb3BlcnR5KCd3b3JkLXdy
YXAnLCAnYnJlYWstd29yZCcpOworICAgIGRpdi5pbm5lckhUTUwgPSBjb250ZW50OworICAgIGlm
IChkb2N1bWVudC5ib2R5LmNoaWxkTm9kZXMubGVuZ3RoKQorICAgICAgICBkb2N1bWVudC5ib2R5
Lmluc2VydEJlZm9yZShkaXYsIGRvY3VtZW50LmJvZHkuY2hpbGROb2Rlc1swXSk7CisgICAgZWxz
ZQorICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRpdik7Cit9CisKK2Z1bmN0aW9u
IHNpbXVsYXRlV2l0aFRleHQod2lkdGgsIGhlaWdodCwgZm9udFNpemUsIGNvbnRlbnQpIHsKKyAg
ICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgZGl2LnN0eWxl
LnNldFByb3BlcnR5KCd3aWR0aCcsIHdpZHRoICsgJ3B4Jyk7CisgICAgZGl2LnN0eWxlLnNldFBy
b3BlcnR5KCdoZWlnaHQnLCBoZWlnaHQgKyAncHgnKTsKKyAgICBkaXYuc3R5bGUuc2V0UHJvcGVy
dHkoJ2ZvbnQnLCBmb250U2l6ZSArICdweC8xIEFoZW0sIHNhbnMtc2VyaWYnKTsKKyAgICBkaXYu
c3R5bGUuc2V0UHJvcGVydHkoJ2NvbG9yJywgJ2dyZWVuJyk7CisgICAgZGl2LmlubmVySFRNTCA9
IGNvbnRlbnQ7CisgICAgaWYgKGRvY3VtZW50LmJvZHkuY2hpbGROb2Rlcy5sZW5ndGgpCisgICAg
ICAgIGRvY3VtZW50LmJvZHkuaW5zZXJ0QmVmb3JlKGRpdiwgZG9jdW1lbnQuYm9keS5jaGlsZE5v
ZGVzWzBdKTsKKyAgICBlbHNlCisgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGl2
KTsKKworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWlu
c2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAxLWV4cGVjdGVkLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0
aXBsZS1zZWdtZW50cy0wMDEtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMTg5ZTNmNDI4Nzg0
YWE1YzIyYWJlMzBlM2UwZTZlNGNkNTUzYjVhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUtc2Vn
bWVudHMtMDAxLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSw5IEBACis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCBzcmM9Jy4uL3Jlc291cmNlcy9tdWx0aS1zZWdtZW50LXBvbHlnb24uanMnPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJzaW11bGF0ZVdpdGhUZXh0KDI1MCwgMTAwLCA1
MCwgJ1hYIFhYIFhYWFhYJykiPgorVGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBBaGVtIGZvbnQsIGFu
ZCBzaG91bGQgZGlzcGxheSBhIDV4MiBncmlkIG9mIGdyZWVuIHNxdWFyZXMsIHdpdGggb25lIG1p
c3NpbmcgaW4gdGhlIGNlbnRlciBvZiB0aGUgdG9wIHJvdy4KK0l0IHRlc3RzIHRoYXQgYSBsaW5l
IG1heSBjb250YWluIG11bHRpcGxlIHNlZ21lbnRzIG9mIHRleHQuCis8L2JvZHk+Cis8L2h0bWw+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMt
MDAxLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBl
LWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYjZlNmUxZDg4
YzdkZWRiOWUzZWRkMzMxZTM2MTZlZTA5N2ZiZmUzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUt
c2VnbWVudHMtMDAxLmh0bWwKQEAgLTAsMCArMSw5IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCBzcmM9Jy4uL3Jlc291cmNlcy9tdWx0aS1zZWdtZW50LXBvbHlnb24uanMnPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHkgb25sb2FkPSJnZW5lcmF0ZVBvbHlnb24oMjUwLCAxMDAsIDUwLCBbMCww
LDEwMCwwLDEwMCwyNSwxNTAsMjUsMTUwLDAsMjUwLDAsMjUwLDEwMCwwLDEwMF0sICdYWFhYWFhY
WFgnKSI+CitUaGlzIHRlc3QgcmVxdWlyZXMgdGhlIEFoZW0gZm9udCwgYW5kIHNob3VsZCBkaXNw
bGF5IGEgNXgyIGdyaWQgb2YgZ3JlZW4gc3F1YXJlcywgd2l0aCBvbmUgbWlzc2luZyBpbiB0aGUg
Y2VudGVyIG9mIHRoZSB0b3Agcm93LgorSXQgdGVzdHMgdGhhdCBhIGxpbmUgbWF5IGNvbnRhaW4g
bXVsdGlwbGUgc2VnbWVudHMgb2YgdGV4dC4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMv
c2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDItZXhwZWN0ZWQu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5z
aWRlLW11bHRpcGxlLXNlZ21lbnRzLTAwMi1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE2YmRh
ZTJiYjhjYTE1MGE2OGRhZGI4M2NlMmM0MTI5N2Y4Y2VkMDUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0
aXBsZS1zZWdtZW50cy0wMDItZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDkgQEAKKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0nLi4vcmVzb3VyY2VzL211bHRpLXNlZ21lbnQtcG9seWdvbi5q
cyc+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InNpbXVsYXRlV2l0aFRleHQoMjUw
LCAxMDAsIDUwLCAnWFhYWFggWFggWFgnKSI+CitUaGlzIHRlc3QgcmVxdWlyZXMgdGhlIEFoZW0g
Zm9udCwgYW5kIHNob3VsZCBkaXNwbGF5IGEgNXgyIGdyaWQgb2YgZ3JlZW4gc3F1YXJlcywgd2l0
aCBvbmUgbWlzc2luZyBpbiB0aGUgY2VudGVyIG9mIHRoZSBib3R0b20gcm93LgorSXQgdGVzdHMg
dGhhdCBhIGxpbmUgbWF5IGNvbnRhaW4gbXVsdGlwbGUgc2VnbWVudHMgb2YgdGV4dC4KKzwvYm9k
eT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBs
ZS1zZWdtZW50cy0wMDIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1p
bnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNlZ21lbnRzLTAwMi5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmQ0NDM1YTk4M2JiNDllODdmNWRmNmJjNzVhN2E5YWYwMTk5ZWFhMzMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lk
ZS1tdWx0aXBsZS1zZWdtZW50cy0wMDIuaHRtbApAQCAtMCwwICsxLDkgQEAKKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0nLi4vcmVzb3VyY2VzL211bHRpLXNlZ21lbnQtcG9seWdvbi5qcyc+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9ImdlbmVyYXRlUG9seWdvbigyNTAsIDEw
MCwgNTAsIFswLDAsMjUwLDAsMjUwLDEwMCwxNTAsMTAwLDE1MCw3NSwxMDAsNzUsMTAwLDEwMCww
LDEwMF0sICdYWFhYWFhYWFgnKSI+CitUaGlzIHRlc3QgcmVxdWlyZXMgdGhlIEFoZW0gZm9udCwg
YW5kIHNob3VsZCBkaXNwbGF5IGEgNXgyIGdyaWQgb2YgZ3JlZW4gc3F1YXJlcywgd2l0aCBvbmUg
bWlzc2luZyBpbiB0aGUgY2VudGVyIG9mIHRoZSBib3R0b20gcm93LgorSXQgdGVzdHMgdGhhdCBh
IGxpbmUgbWF5IGNvbnRhaW4gbXVsdGlwbGUgc2VnbWVudHMgb2YgdGV4dC4KKzwvYm9keT4KKzwv
aHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1zZWdt
ZW50cy0wMDMtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFw
ZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNlZ21lbnRzLTAwMy1leHBlY3RlZC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjA1NTFkNWNmMTlkZGE2MWNkY2FiNGNmNDJmMTNkNjJiMWY4NWVhNjAKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRl
L3NoYXBlLWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDMtZXhwZWN0ZWQuaHRtbApAQCAtMCww
ICsxLDkgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0nLi4vcmVzb3VyY2VzL211bHRp
LXNlZ21lbnQtcG9seWdvbi5qcyc+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InNp
bXVsYXRlV2l0aFRleHQoMjUwLCAxMDAsIDUwLCAnWFg8YnIvPlhYJykiPgorVGhpcyB0ZXN0IHJl
cXVpcmVzIHRoZSBBaGVtIGZvbnQsIGFuZCBzaG91bGQgZGlzcGxheSBhIDJ4MiBncmVlbiBzcXVh
cmUuCitJdCB0ZXN0cyB0aGF0IGEgbGluZSBicmVhayBtb3ZlcyB0ZXh0IGRvd24sIG5vdCBqdXN0
IHRvIHRoZSBuZXh0IHNlZ21lbnQuCis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBl
LWluc2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAzLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1z
ZWdtZW50cy0wMDMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNTE1OTgyODIwZDBlYTJmMzM1MjUxZWYzNDc0
ZGE0MDEyMDNlNjg5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNp
b25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAzLmh0bWwK
QEAgLTAsMCArMSw5IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Jy4uL3Jlc291cmNl
cy9tdWx0aS1zZWdtZW50LXBvbHlnb24uanMnPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25s
b2FkPSJnZW5lcmF0ZVBvbHlnb24oMjUwLCAxMDAsIDUwLCBbMCwwLDEwMCwwLDEwMCwyNSwxNTAs
MjUsMTUwLDAsMjUwLDAsMjUwLDEwMCwwLDEwMF0sICdYWDxici8+WFgnKSI+CitUaGlzIHRlc3Qg
cmVxdWlyZXMgdGhlIEFoZW0gZm9udCwgYW5kIHNob3VsZCBkaXNwbGF5IGEgMngyIGdyZWVuIHNx
dWFyZS4KK0l0IHRlc3RzIHRoYXQgYSBsaW5lIGJyZWFrIG1vdmVzIHRleHQgZG93biwgbm90IGp1
c3QgdG8gdGhlIG5leHQgc2VnbWVudC4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170757</attachid>
            <date>2012-10-25 15:58:29 -0700</date>
            <delta_ts>2012-10-31 12:08:39 -0700</delta_ts>
            <desc>Fixing inline function issues</desc>
            <filename>bug-91878-20121025155702.patch</filename>
            <type>text/plain</type>
            <size>40404</size>
            <attacher name="Bear Travis">betravis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyNTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDdiYWIxMTI1YzI3YjQ5
NDBhMzA3MmRmMGRhMjM1ZjY4MjhhMzc3Ni4uNWU5MDYzZjcxODIxNWFjZWMwNWNkYWE5YWU5ODJk
NmMyODBmOTg0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDEyLTEwLTI1ICBCZWFy
IFRyYXZpcyAgPGJldHJhdmlzQGFkb2JlLmNvbT4KKworICAgICAgICBbQ1NTIEV4Y2x1c2lvbnNd
IEVuYWJsZSBzaGFwZS1pbnNpZGUgZm9yIG11bHRpcGxlLXNlZ21lbnQgcG9seWdvbnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxODc4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGF0Y2ggYWRkaW5nIHN1
cHBvcnQgZm9yIG11bHRpcGxlLXNlZ21lbnQgcG9seWdvbnMgZm9yIHNoYXBlLWluc2lkZXMgZnJv
bQorICAgICAgICB0aGUgQ1NTIEV4Y2x1c2lvbnMgc3BlY2lmaWNhdGlvbi4gVGhlIGxheW91dCBj
b2RlIGhhcyBiZWVuIG1vZGlmaWVkIHRvIGZpcnN0CisgICAgICAgIHN1cHBvcnQgZGl2aWRpbmcg
dGV4dCBpbnRvIG11bHRpcGxlIHNlZ21lbnRzIHBlciBsaW5lLCBhbmQgdGhlbiB0byBsYXkgb3V0
CisgICAgICAgIG11bHRpcGxlIHNlZ21lbnRzIHBlciBsaW5lIGJveC4KKworICAgICAgICBUZXN0
czogIGZhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNl
Z21lbnRzLTAwMS5odG1sCisgICAgICAgICAgICAgICAgZmFzdC9leGNsdXNpb25zL3NoYXBlLWlu
c2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAyLmh0bWwKKworICAgICAgICAq
IHJlbmRlcmluZy9CaWRpUnVuLmg6CisgICAgICAgIChXZWJDb3JlOjpCaWRpUnVuOjpCaWRpUnVu
KToKKyAgICAgICAgKEJpZGlSdW4pOiBBZGRlZCBhICdzdGFydHNTZWdtZW50JyBib29sZWFuIHRv
IHRyYWNrIHdoZXRoZXIgYSBydW4gYmVnaW5zCisgICAgICAgIGEgbmV3IHNlZ21lbnQuCisgICAg
ICAgICogcmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFeGNsdXNpb25TaGFwZUluc2lkZUluZm86OmNvbXB1dGVTZWdtZW50c0ZvckxpbmUp
OiBDbGVhciB0aGUKKyAgICAgICAgc2VnbWVudCByYW5nZXMgd2hlbiBjb21wdXRpbmcgc2VnbWVu
dHMgZm9yIGEgbmV3IGxpbmUuCisgICAgICAgICogcmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlSW5z
aWRlSW5mby5oOgorICAgICAgICAoTGluZVNlZ21lbnRSYW5nZSk6IEFkZGVkIGEgbmV3IHR5cGUg
dG8gdHJhY2sgc2VnbWVudCBvZmZzZXRzLgorICAgICAgICAoV2ViQ29yZTo6TGluZVNlZ21lbnRS
YW5nZTo6TGluZVNlZ21lbnRSYW5nZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbzo6c2VnbWVudFJhbmdlcyk6IEFkZGVkIGEg
Z2V0dGVyIGZvcgorICAgICAgICB0aGUgbGluZSBzZWdtZW50IHJhbmdlcyB2ZWN0b3IuCisgICAg
ICAgIChFeGNsdXNpb25TaGFwZUluc2lkZUluZm8pOgorICAgICAgICAqIHJlbmRlcmluZy9Jbmxp
bmVGbG93Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OnBsYWNlQm94
ZXNJbklubGluZURpcmVjdGlvbik6IE1vZGlmaWVkIHRvIGNhbGwKKyAgICAgICAgYSByZWZhY3Rv
cmVkIGJveCBwbGFjZW1lbnQgYWxnb3JpdGhtIHRoYXQgdGFrZXMgYSBiZWdpbm5pbmcgYW5kIGVu
ZCBwb3NpdGlvbi4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5l
Rmxvd0JveDo6cGxhY2VCb3hSYW5nZUluSW5saW5lRGlyZWN0aW9uKTogU2ltaWxhciB0byB0aGUK
KyAgICAgICAgcGxhY2VCb3hlcyBtZXRob2QsIGJ1dCB0YWtlcyBhbiBlbmQgcG9zaXRpb24gdGhh
dCBtYXkgb2NjdXIgYmVmb3JlIHRoZSBlbmQKKyAgICAgICAgb2YgdGhlIGxpbmUuCisgICAgICAg
ICogcmVuZGVyaW5nL0lubGluZUZsb3dCb3guaDoKKyAgICAgICAgKElubGluZUZsb3dCb3gpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9jazo6ZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvSW50ZXJuYWwpOiBGYWN0b3JlZCBv
dXQgY2FsbHMKKyAgICAgICAgdG8gRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvIHRvIHRoZSAuY3Bw
IGZpbGUsIGFzIEV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbworICAgICAgICByZXF1aXJlcyBJbmxp
bmVJdGVyYXRvci5oLCB3aGljaCB3b3VsZCBjcmVhdGUgYSBjaXJjdWxhciBkZXBlbmRlbmN5IGlu
CisgICAgICAgIEV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby5oLgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpleGNsdXNpb25TaGFwZUluc2lkZUluZm8p
OiBNb2RpZmllZCB0byBjYWxsCisgICAgICAgIGV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mb0ludGVy
bmFsLgorICAgICAgICAoUmVuZGVyQmxvY2spOgorICAgICAgICAoTGluZUJyZWFrZXIpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGluZVdpZHRoOjpMaW5lV2lkdGgpOiBMaW5lV2lkdGggbm93IHVzZXMgdGhlIG51bWJl
ciBvZiBjb21wdXRlZAorICAgICAgICBzZWdtZW50UmFuZ2VzIHRvIGRldGVybWluZSB3aGljaCBM
aW5lU2VnbWVudCB0byB1c2Ugd2hlbiBjYWxjdWxhdGluZyB3aWR0aC4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJsb2NrOjpjcmVhdGVMaW5lQm94ZXMpOiBOb3cgdGFrZXMgYSBib29sZWFuIHRv
IGRldGVybWluZQorICAgICAgICB3aGV0aGVyIG9yIG5vdCBpdCBjYW4gc2hhcmUgdGhlIHNhbWUg
cGFyZW50Qm94IGFzIGl0cyBzaWJsaW5ncyAoc2VnbWVudHMKKyAgICAgICAgbXVzdCBiZSBhYmxl
IHRvIHBvc2l0aW9uIHRoZW1zZWx2ZXMgc2VwYXJhdGVseSBpbiB0aGUgUm9vdElubGluZUJveCku
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y29uc3RydWN0TGluZSk6CisgICAgICAg
IChXZWJDb3JlOjpjb21wdXRlRXhwYW5zaW9uRm9ySnVzdGlmaWVkVGV4dCk6IERvIGluY2x1ZGUg
cnVucyB0aGF0IHN0YXJ0IG5ldworICAgICAgICBzZWdtZW50cyB3aGVuIGNhbGN1bGF0aW5nIGp1
c3RpZmljYXRpb24gZm9yIHRoZSBjdXJyZW50IHNlZ21lbnQuCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9jazo6Y29tcHV0ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0ZvckxpbmUpOiBNb2Rp
ZmllZCB0bworICAgICAgICB1c2UgdGhlIGNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlvbnNG
b3JTZWdtZW50LCB3aGljaCBjYW4gcG9zaXRpb24KKyAgICAgICAgbXVsdGlwbGUgc2VnbWVudHMg
b2YgdGV4dCBwZXIgbGluZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjb21wdXRl
SW5saW5lRGlyZWN0aW9uUG9zaXRpb25zRm9yU2VnbWVudCk6IFBvc2l0aW9ucworICAgICAgICB0
aGUgZ2l2ZW4gc2VnbWVudCBvZiB0ZXh0IGFuZCBjYWxjdWxhdGVzIGl0cyBsYXlvdXQgb2Zmc2V0
cy4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEJpZGlSdW5zKTogTW9kaWZpZWQgc29tZSB2
YXJpYWJsZXMgZnJvbSAnZW5kT2ZMaW5lJyB0byAnZW5kT2ZTZWdtZW50Jy4KKyAgICAgICAgKFdl
YkNvcmU6OmNvbnN0cnVjdEJpZGlSdW5zRm9yTGluZSk6IENvbnN0cnVjdCB0aGUgYmlkaSBydW5z
IGZvciBlYWNoIHNlZ21lbnQgaW4KKyAgICAgICAgdGhlIGdpdmVuIGxpbmUuCisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpsYXlvdXRSdW5zQW5kRmxv
YXRzSW5SYW5nZSk6IENhbGwgY29uc3RydWN0QmlkaVJ1bnNGb3JMaW5lLgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQmxvY2s6OkxpbmVCcmVha2VyOjpuZXh0TGluZUJyZWFrKTogTW92ZWQgdGhl
IGxpbmUgYnJlYWtpbmcgY29kZQorICAgICAgICB0byBicmVhayBzZWdtZW50cywgd2l0aCBuZXh0
TGluZUJyZWFrIGl0ZXJhdGluZyBvdmVyIHNlZ21lbnQgYnJlYWtzIGZvciB0aGUgZW50aXJlIGxp
bmUuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6TGluZUJyZWFrZXI6Om5leHRTZWdt
ZW50QnJlYWspOiBDYWxjdWxhdGVzIGhvdyBtdWNoIHRleHQgYQorICAgICAgICBzZWdtZW50IGNh
biBob2xkLiBUaGlzIGNvZGUgd2FzIG9yaWdpbmFsbHkgaW4gbmV4dExpbmVCcmVhay4KKwogMjAx
Mi0xMC0yNSAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIGZpeCB0aGUgYnVpbGQgb24gTWFjLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0JpZGlSdW4uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9CaWRpUnVuLmgK
aW5kZXggZjUwZmExOTZmZjZlMmU1YWZlOGZiY2UzNzg1OWFkOTRkOThkNmMxMS4uOTliMmFhZWM1
NmQxMTc0NTAyMTBkOWZkYmYyZGM4ZWUxNWIyMjJmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0JpZGlSdW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQmlk
aVJ1bi5oCkBAIC0zOSw2ICszOSw3IEBAIHN0cnVjdCBCaWRpUnVuIDogQmlkaUNoYXJhY3RlclJ1
biB7CiAgICAgICAgICwgbV9vYmplY3Qob2JqZWN0KQogICAgICAgICAsIG1fYm94KDApCiAgICAg
ICAgICwgbV9oYXNIeXBoZW4oZmFsc2UpCisgICAgICAgICwgbV9zdGFydHNTZWdtZW50KGZhbHNl
KQogICAgIHsKICAgICB9CiAKQEAgLTYxLDYgKzYyLDcgQEAgcHVibGljOgogICAgIFJlbmRlck9i
amVjdCogbV9vYmplY3Q7CiAgICAgSW5saW5lQm94KiBtX2JveDsKICAgICBib29sIG1faGFzSHlw
aGVuOworICAgIGJvb2wgbV9zdGFydHNTZWdtZW50OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLmNwcAppbmRleCBi
NzgzMGYxMGVmNmJlNGMzOTIzMDc4MzUzYzRkMDk4N2Q3NzFhMGRmLi5mZGIxMGY5MzMzOWY3NmVk
MzEwODMxYmRmZDc2ZTg4YmM4NTc0YWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLmNwcApAQCAtMTA2LDYgKzEwNiw3IEBA
IGJvb2wgRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvOjpjb21wdXRlU2VnbWVudHNGb3JMaW5lKExh
eW91dFVuaXQgbGluZVRvcCwgTGF5b3V0CiAgICAgbV9saW5lVG9wID0gbGluZVRvcDsKICAgICBt
X2xpbmVIZWlnaHQgPSBsaW5lSGVpZ2h0OwogICAgIG1fc2VnbWVudHMuY2xlYXIoKTsKKyAgICBt
X3NlZ21lbnRSYW5nZXMuY2xlYXIoKTsKIAogICAgIGlmIChsaW5lT3ZlcmxhcHNTaGFwZUJvdW5k
cygpKSB7CiAgICAgICAgIEFTU0VSVChtX3NoYXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9FeGNsdXNpb25TaGFwZUluc2lkZUluZm8uaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9FeGNsdXNpb25TaGFwZUluc2lkZUluZm8uaAppbmRleCBiZWEyYjQ1YTAzMTc1
ZGI4YTAzYTU4NzBhNDk4OTI3NGJiZGQwY2E5Li5iMzM0OTgwMmUxN2NjY2E0MmM2NDk2NWUwNTIx
NTMwZTFmOTZhMGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVz
aW9uU2hhcGVJbnNpZGVJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1
c2lvblNoYXBlSW5zaWRlSW5mby5oCkBAIC0zNCw2ICszNCw3IEBACiAKICNpbmNsdWRlICJFeGNs
dXNpb25TaGFwZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIklubGluZUl0
ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTGF5b3V0VHlwZXNJbmxpbmVNZXRob2RzLmgiCiAjaW5jbHVk
ZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CkBAIC00Myw2ICs0
NCwxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlckJsb2NrOwogCitzdHJ1
Y3QgTGluZVNlZ21lbnRSYW5nZSB7CisgICAgSW5saW5lSXRlcmF0b3Igc3RhcnQ7CisgICAgSW5s
aW5lSXRlcmF0b3IgZW5kOworICAgIExpbmVTZWdtZW50UmFuZ2UoSW5saW5lSXRlcmF0b3Igc3Rh
cnQsIElubGluZUl0ZXJhdG9yIGVuZCkKKyAgICAgICAgOiBzdGFydChzdGFydCkKKyAgICAgICAg
LCBlbmQoZW5kKQorICAgIHsKKyAgICB9Cit9OwordHlwZWRlZiBWZWN0b3I8TGluZVNlZ21lbnRS
YW5nZT4gU2VnbWVudFJhbmdlTGlzdDsKKwogY2xhc3MgRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZv
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTczLDYgKzg1LDE0
IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKGhhc1NlZ21lbnRzKCkpOwogICAgICAgICByZXR1
cm4gbV9zZWdtZW50czsKICAgICB9CisgICAgU2VnbWVudFJhbmdlTGlzdCYgc2VnbWVudFJhbmdl
cygpIHsgcmV0dXJuIG1fc2VnbWVudFJhbmdlczsgfQorICAgIGNvbnN0IExpbmVTZWdtZW50KiBj
dXJyZW50U2VnbWVudCgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoIWhhc1NlZ21lbnRzKCkp
CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgQVNTRVJUKG1fc2VnbWVudFJhbmdlcy5z
aXplKCkgPCBtX3NlZ21lbnRzLnNpemUoKSk7CisgICAgICAgIHJldHVybiAmbV9zZWdtZW50c1tt
X3NlZ21lbnRSYW5nZXMuc2l6ZSgpXTsKKyAgICB9CiAgICAgYm9vbCBjb21wdXRlU2VnbWVudHNG
b3JMaW5lKExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lSGVpZ2h0KTsKICAgICBi
b29sIGxpbmVPdmVybGFwc1NoYXBlQm91bmRzKCkgY29uc3Q7CiAgICAgdm9pZCBjb21wdXRlU2hh
cGVTaXplKExheW91dFVuaXQgbG9naWNhbFdpZHRoLCBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQp
OwpAQCAtOTAsNiArMTEwLDcgQEAgcHJpdmF0ZToKICAgICBMYXlvdXRVbml0IG1fbG9naWNhbEhl
aWdodDsKIAogICAgIFNlZ21lbnRMaXN0IG1fc2VnbWVudHM7CisgICAgU2VnbWVudFJhbmdlTGlz
dCBtX3NlZ21lbnRSYW5nZXM7CiAgICAgYm9vbCBtX3NoYXBlU2l6ZURpcnR5OwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCmluZGV4IDY2YmMxMWUwOTQ3
MjYxOTU2Y2E5ZTJhOGJhNTJiMTA1OTY3MDRmZTUuLmIyYzI1NmY2NTkzMWI1Y2I5N2IyNjJmZTdl
ODIxMzBhYWIwZDQwYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Jbmxp
bmVGbG93Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0Jv
eC5jcHAKQEAgLTM2OSwxNSArMzY5LDI0IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6ZGV0ZXJtaW5l
U3BhY2luZ0ZvckZsb3dCb3hlcyhib29sIGxhc3RMaW5lLCBib29sIGlzTG9naWNhbGx5CiBmbG9h
dCBJbmxpbmVGbG93Qm94OjpwbGFjZUJveGVzSW5JbmxpbmVEaXJlY3Rpb24oZmxvYXQgbG9naWNh
bExlZnQsIGJvb2wmIG5lZWRzV29yZFNwYWNpbmcsIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0Zv
bnRzTWFwJiB0ZXh0Qm94RGF0YU1hcCkKIHsKICAgICAvLyBTZXQgb3VyIHggcG9zaXRpb24uCi0g
ICAgc2V0TG9naWNhbExlZnQobG9naWNhbExlZnQpOwotICAKKyAgICBiZWdpblBsYWNpbmdCb3hS
YW5nZXNJbklubGluZURpcmVjdGlvbihsb2dpY2FsTGVmdCk7CisKICAgICBmbG9hdCBzdGFydExv
Z2ljYWxMZWZ0ID0gbG9naWNhbExlZnQ7CiAgICAgbG9naWNhbExlZnQgKz0gYm9yZGVyTG9naWNh
bExlZnQoKSArIHBhZGRpbmdMb2dpY2FsTGVmdCgpOwogCiAgICAgZmxvYXQgbWluTG9naWNhbExl
ZnQgPSBzdGFydExvZ2ljYWxMZWZ0OwogICAgIGZsb2F0IG1heExvZ2ljYWxSaWdodCA9IGxvZ2lj
YWxMZWZ0OwogCi0gICAgZm9yIChJbmxpbmVCb3gqIGN1cnIgPSBmaXJzdENoaWxkKCk7IGN1cnI7
IGN1cnIgPSBjdXJyLT5uZXh0T25MaW5lKCkpIHsKKyAgICBwbGFjZUJveFJhbmdlSW5JbmxpbmVE
aXJlY3Rpb24oZmlyc3RDaGlsZCgpLCAwLCBsb2dpY2FsTGVmdCwgbWluTG9naWNhbExlZnQsIG1h
eExvZ2ljYWxSaWdodCwgbmVlZHNXb3JkU3BhY2luZywgdGV4dEJveERhdGFNYXApOworCisgICAg
bG9naWNhbExlZnQgKz0gYm9yZGVyTG9naWNhbFJpZ2h0KCkgKyBwYWRkaW5nTG9naWNhbFJpZ2h0
KCk7CisgICAgZW5kUGxhY2luZ0JveFJhbmdlc0luSW5saW5lRGlyZWN0aW9uKHN0YXJ0TG9naWNh
bExlZnQsIGxvZ2ljYWxMZWZ0LCBtaW5Mb2dpY2FsTGVmdCwgbWF4TG9naWNhbFJpZ2h0KTsKKyAg
ICByZXR1cm4gbG9naWNhbExlZnQ7Cit9CisKK2Zsb2F0IElubGluZUZsb3dCb3g6OnBsYWNlQm94
UmFuZ2VJbklubGluZURpcmVjdGlvbihJbmxpbmVCb3gqIGZpcnN0Q2hpbGQsIElubGluZUJveCog
bGFzdENoaWxkLCBmbG9hdCYgbG9naWNhbExlZnQsIGZsb2F0JiBtaW5Mb2dpY2FsTGVmdCwgZmxv
YXQmIG1heExvZ2ljYWxSaWdodCwgYm9vbCYgbmVlZHNXb3JkU3BhY2luZywgR2x5cGhPdmVyZmxv
d0FuZEZhbGxiYWNrRm9udHNNYXAmIHRleHRCb3hEYXRhTWFwKQoreworICAgIGZvciAoSW5saW5l
Qm94KiBjdXJyID0gZmlyc3RDaGlsZDsgY3VyciAmJiBjdXJyICE9IGxhc3RDaGlsZDsgY3VyciA9
IGN1cnItPm5leHRPbkxpbmUoKSkgewogICAgICAgICBpZiAoY3Vyci0+cmVuZGVyZXIoKS0+aXNU
ZXh0KCkpIHsKICAgICAgICAgICAgIElubGluZVRleHRCb3gqIHRleHQgPSB0b0lubGluZVRleHRC
b3goY3Vycik7CiAgICAgICAgICAgICBSZW5kZXJUZXh0KiBydCA9IHRvUmVuZGVyVGV4dCh0ZXh0
LT5yZW5kZXJlcigpKTsKQEAgLTQyOSwxMSArNDM4LDYgQEAgZmxvYXQgSW5saW5lRmxvd0JveDo6
cGxhY2VCb3hlc0luSW5saW5lRGlyZWN0aW9uKGZsb2F0IGxvZ2ljYWxMZWZ0LCBib29sJiBuZWVk
c1cKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLQotICAgIGxvZ2ljYWxMZWZ0ICs9
IGJvcmRlckxvZ2ljYWxSaWdodCgpICsgcGFkZGluZ0xvZ2ljYWxSaWdodCgpOwotICAgIHNldExv
Z2ljYWxXaWR0aChsb2dpY2FsTGVmdCAtIHN0YXJ0TG9naWNhbExlZnQpOwotICAgIGlmIChrbm93
blRvSGF2ZU5vT3ZlcmZsb3coKSAmJiAobWluTG9naWNhbExlZnQgPCBzdGFydExvZ2ljYWxMZWZ0
IHx8IG1heExvZ2ljYWxSaWdodCA+IGxvZ2ljYWxMZWZ0KSkKLSAgICAgICAgY2xlYXJLbm93blRv
SGF2ZU5vT3ZlcmZsb3coKTsKICAgICByZXR1cm4gbG9naWNhbExlZnQ7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oCmluZGV4IDQ4YjcyMGM3NWRkNTNlN2QyMDk3
ODJkZDRiYTJmMzFhNDUyMTUwMGUuLmRiZjAxMzViYzQxMDhiM2Y3ZjNjNmIyNGNmNDM4ZmRkYjU2
YTM2MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guaApAQCAtMTc0
LDYgKzE3NCwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZXRlcm1pbmVTcGFjaW5nRm9yRmxvd0Jv
eGVzKGJvb2wgbGFzdExpbmUsIGJvb2wgaXNMb2dpY2FsbHlMYXN0UnVuV3JhcHBlZCwgUmVuZGVy
T2JqZWN0KiBsb2dpY2FsbHlMYXN0UnVuUmVuZGVyZXIpOwogICAgIExheW91dFVuaXQgZ2V0Rmxv
d1NwYWNpbmdMb2dpY2FsV2lkdGgoKTsKICAgICBmbG9hdCBwbGFjZUJveGVzSW5JbmxpbmVEaXJl
Y3Rpb24oZmxvYXQgbG9naWNhbExlZnQsIGJvb2wmIG5lZWRzV29yZFNwYWNpbmcsIEdseXBoT3Zl
cmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwJik7CisgICAgZmxvYXQgcGxhY2VCb3hSYW5nZUluSW5s
aW5lRGlyZWN0aW9uKElubGluZUJveCogZmlyc3RDaGlsZCwgSW5saW5lQm94KiBsYXN0Q2hpbGQs
IGZsb2F0JiBsb2dpY2FsTGVmdCwgZmxvYXQmIG1pbkxvZ2ljYWxMZWZ0LCBmbG9hdCYgbWF4TG9n
aWNhbFJpZ2h0LCBib29sJiBuZWVkc1dvcmRTcGFjaW5nLCBHbHlwaE92ZXJmbG93QW5kRmFsbGJh
Y2tGb250c01hcCYpOworICAgIHZvaWQgYmVnaW5QbGFjaW5nQm94UmFuZ2VzSW5JbmxpbmVEaXJl
Y3Rpb24oZmxvYXQgbG9naWNhbExlZnQpIHsgc2V0TG9naWNhbExlZnQobG9naWNhbExlZnQpOyB9
CisgICAgdm9pZCBlbmRQbGFjaW5nQm94UmFuZ2VzSW5JbmxpbmVEaXJlY3Rpb24oZmxvYXQgbG9n
aWNhbExlZnQsIGZsb2F0IGxvZ2ljYWxSaWdodCwgZmxvYXQgbWluTG9naWNhbExlZnQsIGZsb2F0
IG1heExvZ2ljYWxSaWdodCkKKyAgICB7CisgICAgICAgIHNldExvZ2ljYWxXaWR0aChsb2dpY2Fs
UmlnaHQgLSBsb2dpY2FsTGVmdCk7CisgICAgICAgIGlmIChrbm93blRvSGF2ZU5vT3ZlcmZsb3co
KSAmJiAobWluTG9naWNhbExlZnQgPCBsb2dpY2FsTGVmdCB8fCBtYXhMb2dpY2FsUmlnaHQgPiBs
b2dpY2FsUmlnaHQpKQorICAgICAgICAgICAgY2xlYXJLbm93blRvSGF2ZU5vT3ZlcmZsb3coKTsK
KyAgICB9CisKICAgICB2b2lkIGNvbXB1dGVMb2dpY2FsQm94SGVpZ2h0cyhSb290SW5saW5lQm94
KiwgTGF5b3V0VW5pdCYgbWF4UG9zaXRpb25Ub3AsIExheW91dFVuaXQmIG1heFBvc2l0aW9uQm90
dG9tLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCYgbWF4QXNjZW50LCBp
bnQmIG1heERlc2NlbnQsIGJvb2wmIHNldE1heEFzY2VudCwgYm9vbCYgc2V0TWF4RGVzY2VudCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHN0cmljdE1vZGUsIEdseXBo
T3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwJiwgRm9udEJhc2VsaW5lLCBWZXJ0aWNhbFBvc2l0
aW9uQ2FjaGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4
IDBlYzY5ODhhMGFjYTc5ZGIxOWFhMTRmOWQ3ZDQwNjY1OGQzMjFjMzguLjMxZDhiMTFlMDUzNTk4
YzNjMGJhNjVhNjllZTUwMWRkOGI2YjgyYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcApAQCAtMTM5NSw2ICsxMzk1LDExIEBAIHZvaWQgUmVuZGVyQmxvY2s6Omxh
eW91dCgpCiB9CiAKICNpZiBFTkFCTEUoQ1NTX0VYQ0xVU0lPTlMpCitFeGNsdXNpb25TaGFwZUlu
c2lkZUluZm8qIFJlbmRlckJsb2NrOjpleGNsdXNpb25TaGFwZUluc2lkZUluZm9JbnRlcm5hbCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIEV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbzo6aXNFeGNsdXNp
b25TaGFwZUluc2lkZUluZm9FbmFibGVkRm9yUmVuZGVyQmxvY2sodGhpcykgPyBFeGNsdXNpb25T
aGFwZUluc2lkZUluZm86OmV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mb0ZvclJlbmRlckJsb2NrKHRo
aXMpIDogMDsKK30KKwogdm9pZCBSZW5kZXJCbG9jazo6dXBkYXRlRXhjbHVzaW9uU2hhcGVJbnNp
ZGVJbmZvQWZ0ZXJTdHlsZUNoYW5nZShjb25zdCBCYXNpY1NoYXBlKiBzaGFwZUluc2lkZSwgY29u
c3QgQmFzaWNTaGFwZSogb2xkU2hhcGVJbnNpZGUpCiB7CiAgICAgLy8gRklYTUU6IEEgZnV0dXJl
IG9wdGltaXphdGlvbiB3b3VsZCBkbyBhIGRlZXAgY29tcGFyaXNvbiBmb3IgZXF1YWxpdHkuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCmluZGV4IDU2N2Q3ZGNiNGMzZWFhMDI4
MTQ5ODY0NDE5ODJkYmFjZmQyMDAzYmUuLjYyZjVmNDUxYjU2MWRkODU5ZGIxNmYwN2VjZWZhYzMw
NGViMDRjZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
ay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCkBAIC0zNCwx
MCArMzQsNiBAQAogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvTGlzdEhh
c2hTZXQuaD4KIAotI2lmIEVOQUJMRShDU1NfRVhDTFVTSU9OUykKLSNpbmNsdWRlICJFeGNsdXNp
b25TaGFwZUluc2lkZUluZm8uaCIKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEJpZGlDb250ZXh0OwpAQCAtNTIsNiArNDgsMTAgQEAgc3RydWN0IEJpZGlSdW47CiBzdHJ1
Y3QgUGFpbnRJbmZvOwogY2xhc3MgTGluZUluZm87CiBjbGFzcyBSZW5kZXJSdWJ5UnVuOworI2lm
IEVOQUJMRShDU1NfRVhDTFVTSU9OUykKK2NsYXNzIEJhc2ljU2hhcGU7CitjbGFzcyBFeGNsdXNp
b25TaGFwZUluc2lkZUluZm87CisjZW5kaWYKIGNsYXNzIFRleHRMYXlvdXQ7CiBjbGFzcyBXb3Jk
TWVhc3VyZW1lbnQ7CiAKQEAgLTQyMCw3ICs0MjAsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKENT
U19FWENMVVNJT05TKQogICAgIEV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbyogZXhjbHVzaW9uU2hh
cGVJbnNpZGVJbmZvKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBzdHlsZSgpLT5zaGFw
ZUluc2lkZSgpICYmIEV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbzo6aXNFeGNsdXNpb25TaGFwZUlu
c2lkZUluZm9FbmFibGVkRm9yUmVuZGVyQmxvY2sodGhpcykgPyBFeGNsdXNpb25TaGFwZUluc2lk
ZUluZm86OmV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mb0ZvclJlbmRlckJsb2NrKHRoaXMpIDogMDsK
KyAgICAgICAgcmV0dXJuIHN0eWxlKCktPnNoYXBlSW5zaWRlKCkgPyBleGNsdXNpb25TaGFwZUlu
c2lkZUluZm9JbnRlcm5hbCgpIDogMDsKICAgICB9CiAjZW5kaWYKIApAQCAtNTE3LDYgKzUxNyw3
IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICNpZiBFTkFCTEUoQ1NTX0VYQ0xVU0lPTlMpCisg
ICAgRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvKiBleGNsdXNpb25TaGFwZUluc2lkZUluZm9JbnRl
cm5hbCgpIGNvbnN0OwogICAgIHZvaWQgY29tcHV0ZUV4Y2x1c2lvblNoYXBlU2l6ZSgpOwogICAg
IHZvaWQgdXBkYXRlRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvQWZ0ZXJTdHlsZUNoYW5nZShjb25z
dCBCYXNpY1NoYXBlKiwgY29uc3QgQmFzaWNTaGFwZSogb2xkV3JhcFNoYXBlKTsKICNlbmRpZgpA
QCAtNzU0LDYgKzc1NSw3IEBAIHByaXZhdGU6CiAgICAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBy
ZXNldCgpOwogICAgICAgICAKKyAgICAgICAgSW5saW5lSXRlcmF0b3IgbmV4dFNlZ21lbnRCcmVh
ayhJbmxpbmVCaWRpUmVzb2x2ZXImLCBMaW5lSW5mbyYsIFJlbmRlclRleHRJbmZvJiwgRmxvYXRp
bmdPYmplY3QqIGxhc3RGbG9hdEZyb21QcmV2aW91c0xpbmUsIHVuc2lnbmVkIGNvbnNlY3V0aXZl
SHlwaGVuYXRlZExpbmVzLCBXb3JkTWVhc3VyZW1lbnRzJik7CiAgICAgICAgIHZvaWQgc2tpcFRy
YWlsaW5nV2hpdGVzcGFjZShJbmxpbmVJdGVyYXRvciYsIGNvbnN0IExpbmVJbmZvJik7CiAgICAg
ICAgIHZvaWQgc2tpcExlYWRpbmdXaGl0ZXNwYWNlKElubGluZUJpZGlSZXNvbHZlciYsIExpbmVJ
bmZvJiwgRmxvYXRpbmdPYmplY3QqIGxhc3RGbG9hdEZyb21QcmV2aW91c0xpbmUsIExpbmVXaWR0
aCYpOwogICAgICAgICAKQEAgLTc3MCwxMCArNzcyLDEyIEBAIHByaXZhdGU6CiAgICAgYm9vbCBj
aGVja1BhZ2luYXRpb25BbmRGbG9hdHNBdEVuZExpbmUoTGluZUxheW91dFN0YXRlJik7CiAgICAg
CiAgICAgUm9vdElubGluZUJveCogY29uc3RydWN0TGluZShCaWRpUnVuTGlzdDxCaWRpUnVuPiYs
IGNvbnN0IExpbmVJbmZvJik7Ci0gICAgSW5saW5lRmxvd0JveCogY3JlYXRlTGluZUJveGVzKFJl
bmRlck9iamVjdCosIGNvbnN0IExpbmVJbmZvJiwgSW5saW5lQm94KiBjaGlsZEJveCk7CisgICAg
SW5saW5lRmxvd0JveCogY3JlYXRlTGluZUJveGVzKFJlbmRlck9iamVjdCosIGNvbnN0IExpbmVJ
bmZvJiwgSW5saW5lQm94KiBjaGlsZEJveCwgYm9vbCBzdGFydHNOZXdTZWdtbmV0KTsKIAogICAg
IHZvaWQgc2V0TWFyZ2luc0ZvclJ1YnlSdW4oQmlkaVJ1biosIFJlbmRlclJ1YnlSdW4qLCBSZW5k
ZXJPYmplY3QqLCBjb25zdCBMaW5lSW5mbyYpOwogCisgICAgQmlkaVJ1biogY29tcHV0ZUlubGlu
ZURpcmVjdGlvblBvc2l0aW9uc0ZvclNlZ21lbnQoUm9vdElubGluZUJveCosIGNvbnN0IExpbmVJ
bmZvJiwgRVRleHRBbGlnbiwgZmxvYXQmIGxvZ2ljYWxMZWZ0LAorICAgICAgICBmbG9hdCYgYXZh
aWxhYmxlTG9naWNhbFdpZHRoLCBCaWRpUnVuKiBmaXJzdFJ1biwgQmlkaVJ1biogdHJhaWxpbmdT
cGFjZVJ1biwgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXAmIHRleHRCb3hEYXRhTWFw
LCBWZXJ0aWNhbFBvc2l0aW9uQ2FjaGUmLCBXb3JkTWVhc3VyZW1lbnRzJik7CiAgICAgdm9pZCBj
b21wdXRlSW5saW5lRGlyZWN0aW9uUG9zaXRpb25zRm9yTGluZShSb290SW5saW5lQm94KiwgY29u
c3QgTGluZUluZm8mLCBCaWRpUnVuKiBmaXJzdFJ1biwgQmlkaVJ1biogdHJhaWxpbmdTcGFjZVJ1
biwgYm9vbCByZWFjaGVkRW5kLCBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcCYsIFZl
cnRpY2FsUG9zaXRpb25DYWNoZSYsIFdvcmRNZWFzdXJlbWVudHMmKTsKICAgICB2b2lkIGNvbXB1
dGVCbG9ja0RpcmVjdGlvblBvc2l0aW9uc0ZvckxpbmUoUm9vdElubGluZUJveCosIEJpZGlSdW4q
LCBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcCYsIFZlcnRpY2FsUG9zaXRpb25DYWNo
ZSYpOwogICAgIHZvaWQgZGVsZXRlRWxsaXBzaXNMaW5lQm94ZXMoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKaW5kZXggNzU2YTNj
MzFlYzNiMzczMTdiMGY0YjZlYzQ4YjgwNmUyZThmZTBmZS4uZjYzOGFiNjMwZGIyMTFhZjJhODU5
ZThhYjFiNjc1M2MxNTVmMDM4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKQEAgLTg4LDkgKzg4LDggQEAgcHVibGljOgogICAg
ICAgICBBU1NFUlQoYmxvY2spOwogI2lmIEVOQUJMRShDU1NfRVhDTFVTSU9OUykKICAgICAgICAg
RXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvKiBleGNsdXNpb25TaGFwZUluc2lkZUluZm8gPSBsYXlv
dXRFeGNsdXNpb25TaGFwZUluc2lkZUluZm8obV9ibG9jayk7Ci0gICAgICAgIC8vIEZJWE1FOiBC
dWcgOTE4Nzg6IEFkZCBzdXBwb3J0IGZvciBtdWx0aXBsZSBzZWdtZW50cywgY3VycmVudGx5IHdl
IG9ubHkgc3VwcG9ydCBvbmUKLSAgICAgICAgaWYgKGV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbyAm
JiBleGNsdXNpb25TaGFwZUluc2lkZUluZm8tPmhhc1NlZ21lbnRzKCkpCi0gICAgICAgICAgICBt
X3NlZ21lbnQgPSAmZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLT5zZWdtZW50cygpWzBdOworICAg
ICAgICBpZiAoZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvKQorICAgICAgICAgICAgbV9zZWdtZW50
ID0gZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLT5jdXJyZW50U2VnbWVudCgpOwogI2VuZGlmCiAg
ICAgICAgIHVwZGF0ZUF2YWlsYWJsZVdpZHRoKCk7CiAgICAgfQpAQCAtNDU1LDcgKzQ1NCw3IEBA
IHN0YXRpYyBib29sIHBhcmVudElzQ29uc3RydWN0ZWRPckhhdmVOZXh0KElubGluZUZsb3dCb3gq
IHBhcmVudEJveCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLUlubGluZUZsb3dCb3gqIFJlbmRl
ckJsb2NrOjpjcmVhdGVMaW5lQm94ZXMoUmVuZGVyT2JqZWN0KiBvYmosIGNvbnN0IExpbmVJbmZv
JiBsaW5lSW5mbywgSW5saW5lQm94KiBjaGlsZEJveCkKK0lubGluZUZsb3dCb3gqIFJlbmRlckJs
b2NrOjpjcmVhdGVMaW5lQm94ZXMoUmVuZGVyT2JqZWN0KiBvYmosIGNvbnN0IExpbmVJbmZvJiBs
aW5lSW5mbywgSW5saW5lQm94KiBjaGlsZEJveCwgYm9vbCBzdGFydE5ld1NlZ21lbnQpCiB7CiAg
ICAgLy8gU2VlIGlmIHdlIGhhdmUgYW4gdW5jb25zdHJ1Y3RlZCBsaW5lIGJveCBmb3IgdGhpcyBv
YmplY3QgdGhhdCBpcyBhbHNvCiAgICAgLy8gdGhlIGxhc3QgaXRlbSBvbiB0aGUgbGluZS4KQEAg
LTQ3OCw3ICs0NzcsOCBAQCBJbmxpbmVGbG93Qm94KiBSZW5kZXJCbG9jazo6Y3JlYXRlTGluZUJv
eGVzKFJlbmRlck9iamVjdCogb2JqLCBjb25zdCBMaW5lSW5mbyYgbAogICAgICAgICAvLyB0aGUg
c2FtZSBsaW5lICh0aGlzIGNhbiBoYXBwZW4gd2l0aCB2ZXJ5IGZhbmN5IGxhbmd1YWdlIG1peHR1
cmVzKS4KICAgICAgICAgYm9vbCBjb25zdHJ1Y3RlZE5ld0JveCA9IGZhbHNlOwogICAgICAgICBi
b29sIGFsbG93ZWRUb0NvbnN0cnVjdE5ld0JveCA9ICFoYXNEZWZhdWx0TGluZUJveENvbnRhaW4g
fHwgIWlubGluZUZsb3cgfHwgaW5saW5lRmxvdy0+YWx3YXlzQ3JlYXRlTGluZUJveGVzKCk7Ci0g
ICAgICAgIGJvb2wgY2FuVXNlRXhpc3RpbmdQYXJlbnRCb3ggPSBwYXJlbnRCb3ggJiYgIXBhcmVu
dElzQ29uc3RydWN0ZWRPckhhdmVOZXh0KHBhcmVudEJveCk7CisgICAgICAgIGJvb2wgbXVzdENy
ZWF0ZUJveGVzVG9Sb290ID0gc3RhcnROZXdTZWdtZW50ICYmICFwYXJlbnRCb3gtPmlzUm9vdElu
bGluZUJveCgpOworICAgICAgICBib29sIGNhblVzZUV4aXN0aW5nUGFyZW50Qm94ID0gcGFyZW50
Qm94ICYmICFwYXJlbnRJc0NvbnN0cnVjdGVkT3JIYXZlTmV4dChwYXJlbnRCb3gpICYmICFtdXN0
Q3JlYXRlQm94ZXNUb1Jvb3Q7CiAgICAgICAgIGlmIChhbGxvd2VkVG9Db25zdHJ1Y3ROZXdCb3gg
JiYgIWNhblVzZUV4aXN0aW5nUGFyZW50Qm94KSB7CiAgICAgICAgICAgICAvLyBXZSBuZWVkIHRv
IG1ha2UgYSBuZXcgYm94IGZvciB0aGlzIHJlbmRlciBvYmplY3QuICBPbmNlCiAgICAgICAgICAg
ICAvLyBtYWRlLCB3ZSBuZWVkIHRvIHBsYWNlIGl0IGF0IHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQg
bGluZS4KQEAgLTU3NSwxMCArNTc1LDExIEBAIFJvb3RJbmxpbmVCb3gqIFJlbmRlckJsb2NrOjpj
b25zdHJ1Y3RMaW5lKEJpZGlSdW5MaXN0PEJpZGlSdW4+JiBiaWRpUnVucywgY29uc3QKIAogICAg
ICAgICAvLyBJZiB3ZSBoYXZlIG5vIHBhcmVudCBib3ggeWV0LCBvciBpZiB0aGUgcnVuIGlzIG5v
dCBzaW1wbHkgYSBzaWJsaW5nLAogICAgICAgICAvLyB0aGVuIHdlIG5lZWQgdG8gY29uc3RydWN0
IGlubGluZSBib3hlcyBhcyBuZWNlc3NhcnkgdG8gcHJvcGVybHkgZW5jbG9zZSB0aGUKLSAgICAg
ICAgLy8gcnVuJ3MgaW5saW5lIGJveC4KLSAgICAgICAgaWYgKCFwYXJlbnRCb3ggfHwgcGFyZW50
Qm94LT5yZW5kZXJlcigpICE9IHItPm1fb2JqZWN0LT5wYXJlbnQoKSkKKyAgICAgICAgLy8gcnVu
J3MgaW5saW5lIGJveC4gU2VnbWVudHMgY2FuIG9ubHkgYmUgc2libGluZ3MgYXQgdGhlIHJvb3Qg
bGV2ZWwsIGFzCisgICAgICAgIC8vIHRoZXkgYXJlIHBvc2l0aW9uZWQgc2VwYXJhdGVseS4KKyAg
ICAgICAgaWYgKCFwYXJlbnRCb3ggfHwgcGFyZW50Qm94LT5yZW5kZXJlcigpICE9IHItPm1fb2Jq
ZWN0LT5wYXJlbnQoKSB8fCByLT5tX3N0YXJ0c1NlZ21lbnQpCiAgICAgICAgICAgICAvLyBDcmVh
dGUgbmV3IGlubGluZSBib3hlcyBhbGwgdGhlIHdheSBiYWNrIHRvIHRoZSBhcHByb3ByaWF0ZSBp
bnNlcnRpb24gcG9pbnQuCi0gICAgICAgICAgICBwYXJlbnRCb3ggPSBjcmVhdGVMaW5lQm94ZXMo
ci0+bV9vYmplY3QtPnBhcmVudCgpLCBsaW5lSW5mbywgYm94KTsKKyAgICAgICAgICAgIHBhcmVu
dEJveCA9IGNyZWF0ZUxpbmVCb3hlcyhyLT5tX29iamVjdC0+cGFyZW50KCksIGxpbmVJbmZvLCBi
b3gsIHItPm1fc3RhcnRzU2VnbWVudCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgLy8g
QXBwZW5kIHRoZSBpbmxpbmUgYm94IHRvIHRoaXMgbGluZS4KICAgICAgICAgICAgIHBhcmVudEJv
eC0+YWRkVG9MaW5lKGJveCk7CkBAIC04MTMsNiArODE0LDkgQEAgc3RhdGljIGlubGluZSB2b2lk
IGNvbXB1dGVFeHBhbnNpb25Gb3JKdXN0aWZpZWRUZXh0KEJpZGlSdW4qIGZpcnN0UnVuLCBCaWRp
UnVuKgogCiAgICAgc2l6ZV90IGkgPSAwOwogICAgIGZvciAoQmlkaVJ1biogciA9IGZpcnN0UnVu
OyByOyByID0gci0+bmV4dCgpKSB7CisgICAgICAgIC8vIFRoZSBjYWxjdWxhdGlvbiBpcyBzZXBh
cmF0ZSBmb3IgZWFjaCBzZWdtZW50CisgICAgICAgIGlmIChyLT5tX3N0YXJ0c1NlZ21lbnQpCisg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgaWYgKCFyLT5tX2JveCB8fCByID09IHRyYWlsaW5n
U3BhY2VSdW4pCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgCkBAIC04ODgsMTcgKzg5
Miw1MyBAQCB2b2lkIFJlbmRlckJsb2NrOjpjb21wdXRlSW5saW5lRGlyZWN0aW9uUG9zaXRpb25z
Rm9yTGluZShSb290SW5saW5lQm94KiBsaW5lQm94LAogICAgIC8vIENTUyAyLjE6ICInVGV4dC1p
bmRlbnQnIG9ubHkgYWZmZWN0cyBhIGxpbmUgaWYgaXQgaXMgdGhlIGZpcnN0IGZvcm1hdHRlZCBs
aW5lIG9mIGFuIGVsZW1lbnQuIEZvciBleGFtcGxlLCB0aGUgZmlyc3QgbGluZSBvZiBhbiBhbm9u
eW1vdXMgYmxvY2sgCiAgICAgLy8gYm94IGlzIG9ubHkgYWZmZWN0ZWQgaWYgaXQgaXMgdGhlIGZp
cnN0IGNoaWxkIG9mIGl0cyBwYXJlbnQgZWxlbWVudC4iCiAgICAgYm9vbCBmaXJzdExpbmUgPSBs
aW5lSW5mby5pc0ZpcnN0TGluZSgpICYmICEoaXNBbm9ueW1vdXNCbG9jaygpICYmIHBhcmVudCgp
LT5maXJzdENoaWxkKCkgIT0gdGhpcyk7Ci0gICAgZmxvYXQgbG9naWNhbExlZnQgPSBwaXhlbFNu
YXBwZWRMb2dpY2FsTGVmdE9mZnNldEZvckxpbmUobG9naWNhbEhlaWdodCgpLCBmaXJzdExpbmUs
IGxpbmVMb2dpY2FsSGVpZ2h0KTsKLSAgICBmbG9hdCBsb2dpY2FsUmlnaHQgPSBwaXhlbFNuYXBw
ZWRMb2dpY2FsUmlnaHRPZmZzZXRGb3JMaW5lKGxvZ2ljYWxIZWlnaHQoKSwgZmlyc3RMaW5lLCBs
aW5lTG9naWNhbEhlaWdodCk7CisgICAgZmxvYXQgbGluZUxvZ2ljYWxMZWZ0ID0gcGl4ZWxTbmFw
cGVkTG9naWNhbExlZnRPZmZzZXRGb3JMaW5lKGxvZ2ljYWxIZWlnaHQoKSwgZmlyc3RMaW5lLCBs
aW5lTG9naWNhbEhlaWdodCk7CisgICAgZmxvYXQgbGluZUxvZ2ljYWxSaWdodCA9IHBpeGVsU25h
cHBlZExvZ2ljYWxSaWdodE9mZnNldEZvckxpbmUobG9naWNhbEhlaWdodCgpLCBmaXJzdExpbmUs
IGxpbmVMb2dpY2FsSGVpZ2h0KTsKKyAgICBmbG9hdCBhdmFpbGFibGVMb2dpY2FsV2lkdGg7Cisg
ICAgYm9vbCBuZWVkc1dvcmRTcGFjaW5nOwogI2lmIEVOQUJMRShDU1NfRVhDTFVTSU9OUykKICAg
ICBFeGNsdXNpb25TaGFwZUluc2lkZUluZm8qIGV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbyA9IGxh
eW91dEV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbyh0aGlzKTsKICAgICBpZiAoZXhjbHVzaW9uU2hh
cGVJbnNpZGVJbmZvICYmIGV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby0+aGFzU2VnbWVudHMoKSkg
ewotICAgICAgICBsb2dpY2FsTGVmdCA9IG1heDxmbG9hdD4ocm91bmRUb0ludChleGNsdXNpb25T
aGFwZUluc2lkZUluZm8tPnNlZ21lbnRzKClbMF0ubG9naWNhbExlZnQpLCBsb2dpY2FsTGVmdCk7
Ci0gICAgICAgIGxvZ2ljYWxSaWdodCA9IG1pbjxmbG9hdD4oZmxvb3JUb0ludChleGNsdXNpb25T
aGFwZUluc2lkZUluZm8tPnNlZ21lbnRzKClbMF0ubG9naWNhbFJpZ2h0KSwgbG9naWNhbFJpZ2h0
KTsKKyAgICAgICAgQmlkaVJ1biogc2VnbWVudFN0YXJ0ID0gZmlyc3RSdW47CisgICAgICAgIGNv
bnN0IFNlZ21lbnRMaXN0JiBzZWdtZW50cyA9IGV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby0+c2Vn
bWVudHMoKTsKKyAgICAgICAgZmxvYXQgbG9naWNhbExlZnQgPSBtYXg8ZmxvYXQ+KHJvdW5kVG9J
bnQoc2VnbWVudHNbMF0ubG9naWNhbExlZnQpLCBsaW5lTG9naWNhbExlZnQpOworICAgICAgICBm
bG9hdCBsb2dpY2FsUmlnaHQgPSBtaW48ZmxvYXQ+KGZsb29yVG9JbnQoc2VnbWVudHNbMF0ubG9n
aWNhbFJpZ2h0KSwgbGluZUxvZ2ljYWxSaWdodCk7CisgICAgICAgIGZsb2F0IHN0YXJ0TG9naWNh
bExlZnQgPSBsb2dpY2FsTGVmdDsKKyAgICAgICAgZmxvYXQgZW5kTG9naWNhbFJpZ2h0ID0gbG9n
aWNhbExlZnQ7CisgICAgICAgIGZsb2F0IG1pbkxvZ2ljYWxMZWZ0ID0gbG9naWNhbExlZnQ7Cisg
ICAgICAgIGZsb2F0IG1heExvZ2ljYWxSaWdodCA9IGxvZ2ljYWxMZWZ0OworICAgICAgICBsaW5l
Qm94LT5iZWdpblBsYWNpbmdCb3hSYW5nZXNJbklubGluZURpcmVjdGlvbihsb2dpY2FsTGVmdCk7
CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2VnbWVudHMuc2l6ZSgpOyBpKyspIHsK
KyAgICAgICAgICAgIGlmIChpKSB7CisgICAgICAgICAgICAgICAgbG9naWNhbExlZnQgPSBtYXg8
ZmxvYXQ+KHJvdW5kVG9JbnQoc2VnbWVudHNbMF0ubG9naWNhbExlZnQpLCBsaW5lTG9naWNhbExl
ZnQpOworICAgICAgICAgICAgICAgIGxvZ2ljYWxSaWdodCA9IG1pbjxmbG9hdD4oZmxvb3JUb0lu
dChzZWdtZW50c1swXS5sb2dpY2FsUmlnaHQpLCBsaW5lTG9naWNhbFJpZ2h0KTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCA9IGxvZ2ljYWxSaWdodCAt
IGxvZ2ljYWxMZWZ0OworICAgICAgICAgICAgQmlkaVJ1biogbmV3U2VnbWVudFN0YXJ0ID0gY29t
cHV0ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0ZvclNlZ21lbnQobGluZUJveCwgbGluZUluZm8s
IHRleHRBbGlnbiwgbG9naWNhbExlZnQsIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwgc2VnbWVudFN0
YXJ0LCB0cmFpbGluZ1NwYWNlUnVuLCB0ZXh0Qm94RGF0YU1hcCwgdmVydGljYWxQb3NpdGlvbkNh
Y2hlLCB3b3JkTWVhc3VyZW1lbnRzKTsKKyAgICAgICAgICAgIG5lZWRzV29yZFNwYWNpbmcgPSBm
YWxzZTsKKyAgICAgICAgICAgIGVuZExvZ2ljYWxSaWdodCA9IGxpbmVCb3gtPnBsYWNlQm94UmFu
Z2VJbklubGluZURpcmVjdGlvbihzZWdtZW50U3RhcnQtPm1fYm94LCBuZXdTZWdtZW50U3RhcnQg
PyBuZXdTZWdtZW50U3RhcnQtPm1fYm94IDogMCwgbG9naWNhbExlZnQsIG1pbkxvZ2ljYWxMZWZ0
LCBtYXhMb2dpY2FsUmlnaHQsIG5lZWRzV29yZFNwYWNpbmcsIHRleHRCb3hEYXRhTWFwKTsKKyAg
ICAgICAgICAgIGlmICghbmV3U2VnbWVudFN0YXJ0IHx8ICFuZXdTZWdtZW50U3RhcnQtPm5leHQo
KSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIEFTU0VSVChuZXdTZWdtZW50
U3RhcnQtPm1fc3RhcnRzU2VnbWVudCk7CisgICAgICAgICAgICAvLyBEaXNjYXJkIHRoZSBlbXB0
eSBzZWdtZW50IHN0YXJ0IG1hcmtlciBiaWRpIHJ1bnMKKyAgICAgICAgICAgIHNlZ21lbnRTdGFy
dCA9IG5ld1NlZ21lbnRTdGFydC0+bmV4dCgpOworICAgICAgICB9CisgICAgICAgIGxpbmVCb3gt
PmVuZFBsYWNpbmdCb3hSYW5nZXNJbklubGluZURpcmVjdGlvbihzdGFydExvZ2ljYWxMZWZ0LCBl
bmRMb2dpY2FsUmlnaHQsIG1pbkxvZ2ljYWxMZWZ0LCBtYXhMb2dpY2FsUmlnaHQpOworICAgICAg
ICByZXR1cm47CiAgICAgfQogI2VuZGlmCi0gICAgZmxvYXQgYXZhaWxhYmxlTG9naWNhbFdpZHRo
ID0gbG9naWNhbFJpZ2h0IC0gbG9naWNhbExlZnQ7CisgICAgYXZhaWxhYmxlTG9naWNhbFdpZHRo
ID0gbGluZUxvZ2ljYWxSaWdodCAtIGxpbmVMb2dpY2FsTGVmdDsKKyAgICBjb21wdXRlSW5saW5l
RGlyZWN0aW9uUG9zaXRpb25zRm9yU2VnbWVudChsaW5lQm94LCBsaW5lSW5mbywgdGV4dEFsaWdu
LCBsaW5lTG9naWNhbExlZnQsIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwgZmlyc3RSdW4sICB0cmFp
bGluZ1NwYWNlUnVuLCB0ZXh0Qm94RGF0YU1hcCwgdmVydGljYWxQb3NpdGlvbkNhY2hlLCB3b3Jk
TWVhc3VyZW1lbnRzKTsKKyAgICAvLyBUaGUgd2lkdGhzIG9mIGFsbCBydW5zIGFyZSBub3cga25v
d24uIFdlIGNhbiBub3cgcGxhY2UgZXZlcnkgaW5saW5lIGJveCAoYW5kCisgICAgLy8gY29tcHV0
ZSBhY2N1cmF0ZSB3aWR0aHMgZm9yIHRoZSBpbmxpbmUgZmxvdyBib3hlcykuCisgICAgbmVlZHNX
b3JkU3BhY2luZyA9IGZhbHNlOworICAgIGxpbmVCb3gtPnBsYWNlQm94ZXNJbklubGluZURpcmVj
dGlvbihsaW5lTG9naWNhbExlZnQsIG5lZWRzV29yZFNwYWNpbmcsIHRleHRCb3hEYXRhTWFwKTsK
K30KIAorQmlkaVJ1biogUmVuZGVyQmxvY2s6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlv
bnNGb3JTZWdtZW50KFJvb3RJbmxpbmVCb3gqIGxpbmVCb3gsIGNvbnN0IExpbmVJbmZvJiBsaW5l
SW5mbywgRVRleHRBbGlnbiB0ZXh0QWxpZ24sIGZsb2F0JiBsb2dpY2FsTGVmdCwKKyAgICBmbG9h
dCYgYXZhaWxhYmxlTG9naWNhbFdpZHRoLCBCaWRpUnVuKiBmaXJzdFJ1biwgQmlkaVJ1biogdHJh
aWxpbmdTcGFjZVJ1biwgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXAmIHRleHRCb3hE
YXRhTWFwLCBWZXJ0aWNhbFBvc2l0aW9uQ2FjaGUmIHZlcnRpY2FsUG9zaXRpb25DYWNoZSwKKyAg
ICBXb3JkTWVhc3VyZW1lbnRzJiB3b3JkTWVhc3VyZW1lbnRzKQorewogICAgIGJvb2wgbmVlZHNX
b3JkU3BhY2luZyA9IGZhbHNlOwogICAgIGZsb2F0IHRvdGFsTG9naWNhbFdpZHRoID0gbGluZUJv
eC0+Z2V0Rmxvd1NwYWNpbmdMb2dpY2FsV2lkdGgoKTsKICAgICB1bnNpZ25lZCBleHBhbnNpb25P
cHBvcnR1bml0eUNvdW50ID0gMDsKQEAgLTkwNiw3ICs5NDYsMTEgQEAgdm9pZCBSZW5kZXJCbG9j
azo6Y29tcHV0ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0ZvckxpbmUoUm9vdElubGluZUJveCog
bGluZUJveCwKICAgICBWZWN0b3I8dW5zaWduZWQsIDE2PiBleHBhbnNpb25PcHBvcnR1bml0aWVz
OwogICAgIFJlbmRlck9iamVjdCogcHJldmlvdXNPYmplY3QgPSAwOwogCi0gICAgZm9yIChCaWRp
UnVuKiByID0gZmlyc3RSdW47IHI7IHIgPSByLT5uZXh0KCkpIHsKKyAgICBCaWRpUnVuKiByID0g
Zmlyc3RSdW47CisgICAgZm9yICg7IHI7IHIgPSByLT5uZXh0KCkpIHsKKyAgICAgICAgLy8gRG8g
bm90IHBhc3MgdGhlIG1hcmtlciBmb3IgdGhlIG5leHQgc2VnbWVudAorICAgICAgICBpZiAoci0+
bV9zdGFydHNTZWdtZW50KQorICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGlmICghci0+bV9i
b3ggfHwgci0+bV9vYmplY3QtPmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpIHx8IHItPm1fYm94LT5p
c0xpbmVCcmVhaygpKQogICAgICAgICAgICAgY29udGludWU7IC8vIFBvc2l0aW9uZWQgb2JqZWN0
cyBhcmUgb25seSBwYXJ0aWNpcGF0aW5nIHRvIGZpZ3VyZSBvdXQgdGhlaXIKICAgICAgICAgICAg
ICAgICAgICAgICAvLyBjb3JyZWN0IHN0YXRpYyB4IHBvc2l0aW9uLiAgVGhleSBoYXZlIG5vIGVm
ZmVjdCBvbiB0aGUgd2lkdGguCkBAIC05NTYsMTAgKzEwMDAsNyBAQCB2b2lkIFJlbmRlckJsb2Nr
Ojpjb21wdXRlSW5saW5lRGlyZWN0aW9uUG9zaXRpb25zRm9yTGluZShSb290SW5saW5lQm94KiBs
aW5lQm94LAogCiAgICAgY29tcHV0ZUV4cGFuc2lvbkZvckp1c3RpZmllZFRleHQoZmlyc3RSdW4s
IHRyYWlsaW5nU3BhY2VSdW4sIGV4cGFuc2lvbk9wcG9ydHVuaXRpZXMsIGV4cGFuc2lvbk9wcG9y
dHVuaXR5Q291bnQsIHRvdGFsTG9naWNhbFdpZHRoLCBhdmFpbGFibGVMb2dpY2FsV2lkdGgpOwog
Ci0gICAgLy8gVGhlIHdpZHRocyBvZiBhbGwgcnVucyBhcmUgbm93IGtub3duLiAgV2UgY2FuIG5v
dyBwbGFjZSBldmVyeSBpbmxpbmUgYm94IChhbmQKLSAgICAvLyBjb21wdXRlIGFjY3VyYXRlIHdp
ZHRocyBmb3IgdGhlIGlubGluZSBmbG93IGJveGVzKS4KLSAgICBuZWVkc1dvcmRTcGFjaW5nID0g
ZmFsc2U7Ci0gICAgbGluZUJveC0+cGxhY2VCb3hlc0luSW5saW5lRGlyZWN0aW9uKGxvZ2ljYWxM
ZWZ0LCBuZWVkc1dvcmRTcGFjaW5nLCB0ZXh0Qm94RGF0YU1hcCk7CisgICAgcmV0dXJuIHI7CiB9
CiAKIHZvaWQgUmVuZGVyQmxvY2s6OmNvbXB1dGVCbG9ja0RpcmVjdGlvblBvc2l0aW9uc0Zvckxp
bmUoUm9vdElubGluZUJveCogbGluZUJveCwgQmlkaVJ1biogZmlyc3RSdW4sIEdseXBoT3ZlcmZs
b3dBbmRGYWxsYmFja0ZvbnRzTWFwJiB0ZXh0Qm94RGF0YU1hcCwKQEAgLTExMDYsMTMgKzExNDcs
MTMgQEAgc3RhdGljIGlubGluZSBCaWRpU3RhdHVzIHN0YXR1c1dpdGhEaXJlY3Rpb24oVGV4dERp
cmVjdGlvbiB0ZXh0RGlyZWN0aW9uLCBib29sIGkKIH0KIAogLy8gRklYTUU6IEJpZGlSZXNvbHZl
ciBzaG91bGQgaGF2ZSB0aGlzIGxvZ2ljLgotc3RhdGljIGlubGluZSB2b2lkIGNvbnN0cnVjdEJp
ZGlSdW5zKElubGluZUJpZGlSZXNvbHZlciYgdG9wUmVzb2x2ZXIsIEJpZGlSdW5MaXN0PEJpZGlS
dW4+JiBiaWRpUnVucywgY29uc3QgSW5saW5lSXRlcmF0b3ImIGVuZE9mTGluZSwgVmlzdWFsRGly
ZWN0aW9uT3ZlcnJpZGUgb3ZlcnJpZGUsIGJvb2wgcHJldmlvdXNMaW5lQnJva2VDbGVhbmx5KQor
c3RhdGljIGlubGluZSB2b2lkIGNvbnN0cnVjdEJpZGlSdW5zRm9yU2VnbWVudChJbmxpbmVCaWRp
UmVzb2x2ZXImIHRvcFJlc29sdmVyLCBCaWRpUnVuTGlzdDxCaWRpUnVuPiYgYmlkaVJ1bnMsIGNv
bnN0IElubGluZUl0ZXJhdG9yJiBlbmRPZlJ1bnMsIFZpc3VhbERpcmVjdGlvbk92ZXJyaWRlIG92
ZXJyaWRlLCBib29sIHByZXZpb3VzTGluZUJyb2tlQ2xlYW5seSkKIHsKICAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIHBhc3MgYSBCaWRpUnVuTGlzdCBpbnRvIGNyZWF0ZUJpZGlSdW5zRm9yTGluZSBp
bnN0ZWFkCiAgICAgLy8gb2YgdGhlIHJlc29sdmVyIG93bmluZyB0aGUgcnVucy4KICAgICBBU1NF
UlQoJnRvcFJlc29sdmVyLnJ1bnMoKSA9PSAmYmlkaVJ1bnMpOwogICAgIFJlbmRlck9iamVjdCog
Y3VycmVudFJvb3QgPSB0b3BSZXNvbHZlci5wb3NpdGlvbigpLnJvb3QoKTsKLSAgICB0b3BSZXNv
bHZlci5jcmVhdGVCaWRpUnVuc0ZvckxpbmUoZW5kT2ZMaW5lLCBvdmVycmlkZSwgcHJldmlvdXNM
aW5lQnJva2VDbGVhbmx5KTsKKyAgICB0b3BSZXNvbHZlci5jcmVhdGVCaWRpUnVuc0ZvckxpbmUo
ZW5kT2ZSdW5zLCBvdmVycmlkZSwgcHJldmlvdXNMaW5lQnJva2VDbGVhbmx5KTsKIAogICAgIHdo
aWxlICghdG9wUmVzb2x2ZXIuaXNvbGF0ZWRSdW5zKCkuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8v
IEl0IGRvZXMgbm90IG1hdHRlciB3aGljaCBvcmRlciB3ZSByZXNvbHZlIHRoZSBydW5zIGFzIGxv
bmcgYXMgd2UgcmVzb2x2ZSB0aGVtIGFsbC4KQEAgLTExNTIsNyArMTE5Myw3IEBAIHN0YXRpYyBp
bmxpbmUgdm9pZCBjb25zdHJ1Y3RCaWRpUnVucyhJbmxpbmVCaWRpUmVzb2x2ZXImIHRvcFJlc29s
dmVyLCBCaWRpUnVuTGlzCiAgICAgICAgIC8vIFdlIHN0b3AgYXQgdGhlIG5leHQgZW5kIG9mIGxp
bmU7IHdlIG1heSByZS1lbnRlciB0aGlzIGlzb2xhdGUgaW4gdGhlIG5leHQgY2FsbCB0byBjb25z
dHJ1Y3RCaWRpUnVucygpLgogICAgICAgICAvLyBGSVhNRTogV2hhdCBzaG91bGQgZW5kIGFuZCBw
cmV2aW91c0xpbmVCcm9rZUNsZWFubHkgYmU/CiAgICAgICAgIC8vIHJuaXdhIHNheXMgcHJldmlv
dXNMaW5lQnJva2VDbGVhbmx5IGlzIGp1c3QgYSBXaW5JRSBoYWNrIGFuZCBjb3VsZCBhbHdheXMg
YmUgZmFsc2UgaGVyZT8KLSAgICAgICAgaXNvbGF0ZWRSZXNvbHZlci5jcmVhdGVCaWRpUnVuc0Zv
ckxpbmUoZW5kT2ZMaW5lLCBOb1Zpc3VhbE92ZXJyaWRlLCBwcmV2aW91c0xpbmVCcm9rZUNsZWFu
bHkpOworICAgICAgICBpc29sYXRlZFJlc29sdmVyLmNyZWF0ZUJpZGlSdW5zRm9yTGluZShlbmRP
ZlJ1bnMsIE5vVmlzdWFsT3ZlcnJpZGUsIHByZXZpb3VzTGluZUJyb2tlQ2xlYW5seSk7CiAgICAg
ICAgIC8vIE5vdGUgdGhhdCB3ZSBkbyBub3QgZGVsZXRlIHRoZSBydW5zIGZyb20gdGhlIHJlc29s
dmVyLgogICAgICAgICAvLyBXZSdyZSBub3QgZ3VhcmFudGVlZCB0byBnZXQgYW55IEJpZGlSdW5z
IGluIHRoZSBwcmV2aW91cyBzdGVwLiBJZiB3ZSBkb24ndCwgd2UgYWxsb3cgdGhlIHBsYWNlaG9s
ZGVyCiAgICAgICAgIC8vIGl0c2VsZiB0byBiZSB0dXJuZWQgaW50byBhbiBJbmxpbmVCb3guIFdl
IGNhbid0IHJlbW92ZSBpdCBoZXJlIHdpdGhvdXQgcG90ZW50aWFsbHkgbG9zaW5nIHRyYWNrIG9m
CkBAIC0xMTY5LDYgKzEyMTAsMzcgQEAgc3RhdGljIGlubGluZSB2b2lkIGNvbnN0cnVjdEJpZGlS
dW5zKElubGluZUJpZGlSZXNvbHZlciYgdG9wUmVzb2x2ZXIsIEJpZGlSdW5MaXMKICAgICB9CiB9
CiAKK3N0YXRpYyBpbmxpbmUgdm9pZCBjb25zdHJ1Y3RCaWRpUnVuc0ZvckxpbmUoY29uc3QgUmVu
ZGVyQmxvY2sqIGJsb2NrLCBJbmxpbmVCaWRpUmVzb2x2ZXImIHRvcFJlc29sdmVyLCBCaWRpUnVu
TGlzdDxCaWRpUnVuPiYgYmlkaVJ1bnMsIGNvbnN0IElubGluZUl0ZXJhdG9yJiBlbmRPZkxpbmUs
IFZpc3VhbERpcmVjdGlvbk92ZXJyaWRlIG92ZXJyaWRlLCBib29sIHByZXZpb3VzTGluZUJyb2tl
Q2xlYW5seSkKK3sKKyNpZiAhRU5BQkxFKENTU19FWENMVVNJT05TKQorICAgIGNvbnN0cnVjdEJp
ZGlSdW5zRm9yU2VnbWVudCh0b3BSZXNvbHZlciwgYmlkaVJ1bnMsIGVuZE9mTGluZSwgb3ZlcnJp
ZGUsIHByZXZpb3VzTGluZUJyb2tlQ2xlYW5seSk7CisjZWxzZQorICAgIEV4Y2x1c2lvblNoYXBl
SW5zaWRlSW5mbyogZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvID0gbGF5b3V0RXhjbHVzaW9uU2hh
cGVJbnNpZGVJbmZvKGJsb2NrKTsKKyAgICBpZiAoIWV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbyB8
fCAhZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLT5oYXNTZWdtZW50cygpKSB7CisgICAgICAgIGNv
bnN0cnVjdEJpZGlSdW5zRm9yU2VnbWVudCh0b3BSZXNvbHZlciwgYmlkaVJ1bnMsIGVuZE9mTGlu
ZSwgb3ZlcnJpZGUsIHByZXZpb3VzTGluZUJyb2tlQ2xlYW5seSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBjb25zdCBTZWdtZW50UmFuZ2VMaXN0JiBzZWdtZW50UmFuZ2VzID0gZXhj
bHVzaW9uU2hhcGVJbnNpZGVJbmZvLT5zZWdtZW50UmFuZ2VzKCk7CisgICAgQVNTRVJUKHNlZ21l
bnRSYW5nZXMuc2l6ZSgpKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2VnbWVudFJh
bmdlcy5zaXplKCk7IGkrKykgeworICAgICAgICBJbmxpbmVJdGVyYXRvciBzZWdtZW50U3RhcnQg
PSBzZWdtZW50UmFuZ2VzW2ldLnN0YXJ0OworICAgICAgICBJbmxpbmVJdGVyYXRvciBzZWdtZW50
RW5kID0gc2VnbWVudFJhbmdlc1tpXS5lbmQ7CisgICAgICAgIGlmIChpKSB7CisgICAgICAgICAg
ICBBU1NFUlQoc2VnbWVudFN0YXJ0Lm1fb2JqKTsKKyAgICAgICAgICAgIEJpZGlSdW4qIHNlZ21l
bnRNYXJrZXIgPSBjcmVhdGVSdW4oc2VnbWVudFN0YXJ0Lm1fcG9zLCBzZWdtZW50U3RhcnQubV9w
b3MsIHNlZ21lbnRTdGFydC5tX29iaiwgdG9wUmVzb2x2ZXIpOworICAgICAgICAgICAgc2VnbWVu
dE1hcmtlci0+bV9zdGFydHNTZWdtZW50ID0gdHJ1ZTsKKyAgICAgICAgICAgIGJpZGlSdW5zLmFk
ZFJ1bihzZWdtZW50TWFya2VyKTsKKyAgICAgICAgICAgIC8vIERvIG5vdCBjb2xsYXBzZSBtaWRw
b2ludHMgYmV0d2VlbiBzZWdtZW50cworICAgICAgICAgICAgdG9wUmVzb2x2ZXIubWlkcG9pbnRT
dGF0ZSgpLmJldHdlZW5NaWRwb2ludHMgPSBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICB0b3BS
ZXNvbHZlci5zZXRQb3NpdGlvbihzZWdtZW50U3RhcnQsIG51bWJlck9mSXNvbGF0ZUFuY2VzdG9y
cyhzZWdtZW50U3RhcnQpKTsKKyAgICAgICAgY29uc3RydWN0QmlkaVJ1bnNGb3JTZWdtZW50KHRv
cFJlc29sdmVyLCBiaWRpUnVucywgc2VnbWVudEVuZCwgb3ZlcnJpZGUsIHByZXZpb3VzTGluZUJy
b2tlQ2xlYW5seSk7CisgICAgfQorI2VuZGlmCit9CisKIC8vIFRoaXMgZnVuY3Rpb24gY29uc3Ry
dWN0cyBsaW5lIGJveGVzIGZvciBhbGwgb2YgdGhlIHRleHQgcnVucyBpbiB0aGUgcmVzb2x2ZXIg
YW5kIGNvbXB1dGVzIHRoZWlyIHBvc2l0aW9uLgogUm9vdElubGluZUJveCogUmVuZGVyQmxvY2s6
OmNyZWF0ZUxpbmVCb3hlc0Zyb21CaWRpUnVucyhCaWRpUnVuTGlzdDxCaWRpUnVuPiYgYmlkaVJ1
bnMsIGNvbnN0IElubGluZUl0ZXJhdG9yJiBlbmQsIExpbmVJbmZvJiBsaW5lSW5mbywgVmVydGlj
YWxQb3NpdGlvbkNhY2hlJiB2ZXJ0aWNhbFBvc2l0aW9uQ2FjaGUsIEJpZGlSdW4qIHRyYWlsaW5n
U3BhY2VSdW4sIFdvcmRNZWFzdXJlbWVudHMmIHdvcmRNZWFzdXJlbWVudHMpCiB7CkBAIC0xNDY2
LDcgKzE1MzgsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpsYXlvdXRSdW5zQW5kRmxvYXRzSW5SYW5n
ZShMaW5lTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBJbmxpbgogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgLy8gRklYTUU6IFRoaXMgb3duZXJzaGlwIGlzIHJldmVyc2VkLiBXZSBzaG91bGQg
b3duIHRoZSBCaWRpUnVuTGlzdCBhbmQgcGFzcyBpdCB0byBjcmVhdGVCaWRpUnVuc0ZvckxpbmUu
CiAgICAgICAgICAgICBCaWRpUnVuTGlzdDxCaWRpUnVuPiYgYmlkaVJ1bnMgPSByZXNvbHZlci5y
dW5zKCk7Ci0gICAgICAgICAgICBjb25zdHJ1Y3RCaWRpUnVucyhyZXNvbHZlciwgYmlkaVJ1bnMs
IGVuZCwgb3ZlcnJpZGUsIGxheW91dFN0YXRlLmxpbmVJbmZvKCkucHJldmlvdXNMaW5lQnJva2VD
bGVhbmx5KCkpOworICAgICAgICAgICAgY29uc3RydWN0QmlkaVJ1bnNGb3JMaW5lKHRoaXMsIHJl
c29sdmVyLCBiaWRpUnVucywgZW5kLCBvdmVycmlkZSwgbGF5b3V0U3RhdGUubGluZUluZm8oKS5w
cmV2aW91c0xpbmVCcm9rZUNsZWFubHkoKSk7CiAgICAgICAgICAgICBBU1NFUlQocmVzb2x2ZXIu
cG9zaXRpb24oKSA9PSBlbmQpOwogCiAgICAgICAgICAgICBCaWRpUnVuKiB0cmFpbGluZ1NwYWNl
UnVuID0gIWxheW91dFN0YXRlLmxpbmVJbmZvKCkucHJldmlvdXNMaW5lQnJva2VDbGVhbmx5KCkg
PyBoYW5kbGVUcmFpbGluZ1NwYWNlcyhiaWRpUnVucywgcmVzb2x2ZXIuY29udGV4dCgpKSA6IDA7
CkBAIC0yMzE5LDYgKzIzOTEsNDggQEAgdm9pZCBSZW5kZXJCbG9jazo6TGluZUJyZWFrZXI6OnJl
c2V0KCkKIAogSW5saW5lSXRlcmF0b3IgUmVuZGVyQmxvY2s6OkxpbmVCcmVha2VyOjpuZXh0TGlu
ZUJyZWFrKElubGluZUJpZGlSZXNvbHZlciYgcmVzb2x2ZXIsIExpbmVJbmZvJiBsaW5lSW5mbywg
UmVuZGVyVGV4dEluZm8mIHJlbmRlclRleHRJbmZvLCBGbG9hdGluZ09iamVjdCogbGFzdEZsb2F0
RnJvbVByZXZpb3VzTGluZSwgdW5zaWduZWQgY29uc2VjdXRpdmVIeXBoZW5hdGVkTGluZXMsIFdv
cmRNZWFzdXJlbWVudHMmIHdvcmRNZWFzdXJlbWVudHMpCiB7CisjaWYgIUVOQUJMRShDU1NfRVhD
TFVTSU9OUykKKyAgICByZXR1cm4gbmV4dFNlZ21lbnRCcmVhayhyZXNvbHZlciwgbGluZUluZm8s
IHJlbmRlclRleHRJbmZvLCBsYXN0RmxvYXRGcm9tUHJldmlvdXNMaW5lLCBjb25zZWN1dGl2ZUh5
cGhlbmF0ZWRMaW5lcywgd29yZE1lYXN1cmVtZW50cyk7CisjZWxzZQorICAgIEV4Y2x1c2lvblNo
YXBlSW5zaWRlSW5mbyogZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvID0gbGF5b3V0RXhjbHVzaW9u
U2hhcGVJbnNpZGVJbmZvKG1fYmxvY2spOworICAgIGlmICghZXhjbHVzaW9uU2hhcGVJbnNpZGVJ
bmZvIHx8ICFleGNsdXNpb25TaGFwZUluc2lkZUluZm8tPmhhc1NlZ21lbnRzKCkpCisgICAgICAg
IHJldHVybiBuZXh0U2VnbWVudEJyZWFrKHJlc29sdmVyLCBsaW5lSW5mbywgcmVuZGVyVGV4dElu
Zm8sIGxhc3RGbG9hdEZyb21QcmV2aW91c0xpbmUsIGNvbnNlY3V0aXZlSHlwaGVuYXRlZExpbmVz
LCB3b3JkTWVhc3VyZW1lbnRzKTsKKworICAgIElubGluZUl0ZXJhdG9yIGVuZCA9IHJlc29sdmVy
LnBvc2l0aW9uKCk7CisgICAgSW5saW5lSXRlcmF0b3Igb2xkRW5kID0gZW5kOworCisgICAgY29u
c3QgU2VnbWVudExpc3QmIHNlZ21lbnRzID0gZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLT5zZWdt
ZW50cygpOworICAgIFNlZ21lbnRSYW5nZUxpc3QmIHNlZ21lbnRSYW5nZXMgPSBleGNsdXNpb25T
aGFwZUluc2lkZUluZm8tPnNlZ21lbnRSYW5nZXMoKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBzZWdtZW50cy5zaXplKCk7IGkrKykgeworICAgICAgICBJbmxpbmVJdGVyYXRvciBz
ZWdtZW50U3RhcnQgPSByZXNvbHZlci5wb3NpdGlvbigpOworICAgICAgICBlbmQgPSBuZXh0U2Vn
bWVudEJyZWFrKHJlc29sdmVyLCBsaW5lSW5mbywgcmVuZGVyVGV4dEluZm8sIGxhc3RGbG9hdEZy
b21QcmV2aW91c0xpbmUsIGNvbnNlY3V0aXZlSHlwaGVuYXRlZExpbmVzLCB3b3JkTWVhc3VyZW1l
bnRzKTsKKworICAgICAgICBBU1NFUlQoc2VnbWVudFJhbmdlcy5zaXplKCkgPT0gaSk7CisgICAg
ICAgIGlmIChyZXNvbHZlci5wb3NpdGlvbigpID09IGVuZCkgeworICAgICAgICAgICAgLy8gTm90
aGluZyBmaXQgdGhpcyBzZWdtZW50CisgICAgICAgICAgICBzZWdtZW50UmFuZ2VzLmFwcGVuZChM
aW5lU2VnbWVudFJhbmdlKHNlZ21lbnRTdGFydCwgc2VnbWVudFN0YXJ0KSk7CisgICAgICAgICAg
ICByZXNvbHZlci5zZXRQb3NpdGlvbklnbm9yaW5nTmVzdGVkSXNvbGF0ZXMoc2VnbWVudFN0YXJ0
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIE5vdGUgdGhhdCByZXNvbHZlci5w
b3NpdGlvbiBpcyBhbHJlYWR5IHNraXBwaW5nIHNvbWUgb2YgdGhlIHdoaXRlIHNwYWNlIGF0IHRo
ZSBiZWdpbm5pbmcgb2YgdGhlIGxpbmUsCisgICAgICAgICAgICAvLyBzbyB0aGF0J3Mgd2h5IHNl
Z21lbnRTdGFydCBtaWdodCBiZSBkaWZmZXJlbnQgdGhhbiByZXNvbHZlci5wb3NpdGlvbigpLgor
ICAgICAgICAgICAgTGluZVNlZ21lbnRSYW5nZSByYW5nZShyZXNvbHZlci5wb3NpdGlvbigpLCBl
bmQpOworICAgICAgICAgICAgc2VnbWVudFJhbmdlcy5hcHBlbmQocmFuZ2UpOworICAgICAgICAg
ICAgcmVzb2x2ZXIuc2V0UG9zaXRpb24oZW5kLCBudW1iZXJPZklzb2xhdGVBbmNlc3RvcnMoZW5k
KSk7CisKKyAgICAgICAgICAgIGlmIChsaW5lSW5mby5wcmV2aW91c0xpbmVCcm9rZUNsZWFubHko
KSkgeworICAgICAgICAgICAgICAgIC8vIElmIHdlIGhpdCBhIG5ldyBsaW5lIGJyZWFrLCBqdXN0
IHN0b3AgYWRkaW5nIGFueXRoaW5nIHRvIHRoaXMgbGluZS4KKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXNvbHZlci5zZXRQb3Np
dGlvbklnbm9yaW5nTmVzdGVkSXNvbGF0ZXMob2xkRW5kKTsKKyAgICByZXR1cm4gZW5kOworI2Vu
ZGlmCit9CisKK0lubGluZUl0ZXJhdG9yIFJlbmRlckJsb2NrOjpMaW5lQnJlYWtlcjo6bmV4dFNl
Z21lbnRCcmVhayhJbmxpbmVCaWRpUmVzb2x2ZXImIHJlc29sdmVyLCBMaW5lSW5mbyYgbGluZUlu
Zm8sIFJlbmRlclRleHRJbmZvJiByZW5kZXJUZXh0SW5mbywgRmxvYXRpbmdPYmplY3QqIGxhc3RG
bG9hdEZyb21QcmV2aW91c0xpbmUsIHVuc2lnbmVkIGNvbnNlY3V0aXZlSHlwaGVuYXRlZExpbmVz
LCBXb3JkTWVhc3VyZW1lbnRzJiB3b3JkTWVhc3VyZW1lbnRzKQorewogICAgIHJlc2V0KCk7CiAK
ICAgICBBU1NFUlQocmVzb2x2ZXIucG9zaXRpb24oKS5yb290KCkgPT0gbV9ibG9jayk7CkBAIC0y
OTAwLDYgKzMwMTQsOCBAQCBJbmxpbmVJdGVyYXRvciBSZW5kZXJCbG9jazo6TGluZUJyZWFrZXI6
Om5leHRMaW5lQnJlYWsoSW5saW5lQmlkaVJlc29sdmVyJiByZXNvbAogICAgICAgICB9CiAgICAg
fQogCisgICAgLy8gRklYTUUgQnVnIDEwMDA0OTogV2UgZG8gbm90IG5lZWQgdG8gY29uc3VtZSBp
bnB1dCBpbiBhIG11bHRpLXNlZ21lbnQgbGluZQorICAgIC8vIHVubGVzcyBubyBzZWdtZW50IHdp
bGwuCiAgICAgLy8gbWFrZSBzdXJlIHdlIGNvbnN1bWUgYXQgbGVhc3Qgb25lIGNoYXIvb2JqZWN0
LgogICAgIGlmIChsQnJlYWsgPT0gcmVzb2x2ZXIucG9zaXRpb24oKSkKICAgICAgICAgbEJyZWFr
LmluY3JlbWVudCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGE2NmM5OGRjZmI0MjU5ZDdiOTBjNDVhNjk5MTdiYTI2OGZj
NWVhMDMuLjcwYmQ1YTY5MmU0Y2RlY2UzMDFiNDM4MDVmNjI2ZmQ0YjY4NTVjMWUgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyMSBAQAorMjAxMi0xMC0yNSAgQmVhciBUcmF2aXMgIDxiZXRyYXZpc0BhZG9iZS5j
b20+CisKKyAgICAgICAgW0NTUyBFeGNsdXNpb25zXSBFbmFibGUgc2hhcGUtaW5zaWRlIGZvciBt
dWx0aXBsZS1zZWdtZW50IHBvbHlnb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05MTg3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZGluZyBhIHNpbXBsZSB0ZXN0IHRvIGVuc3VyZSBtdWx0aXBsZSBz
ZWdtZW50cyBmdW5jdGlvbmFsaXR5IGlzIHdvcmtpbmcuIEFkZGl0aW9uYWwKKyAgICAgICAgdGVz
dGluZyB3aWxsIGZvbGxvdyBpbiBzdWJzZXF1ZW50IHBhdGNoZXMuCisKKyAgICAgICAgKiBmYXN0
L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0w
MDEtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBl
LWluc2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAxLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRp
cGxlLXNlZ21lbnRzLTAwMi1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V4
Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDIu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFw
ZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAzLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxl
LXNlZ21lbnRzLTAwMy5odG1sOiBBZGRlZC4KKworCiAyMDEyLTEwLTI1ICBTaW1vbiBGcmFzZXIg
IDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlcG9ydCB0aGUgdGlsZSBjb3Zl
cmFnZSByZWN0IGluIGxheWVyIGNvb3JkcywgYW5kIGFkZCBzb21lIHRlc3RzIGZvciB0aWxlZCBi
YWNraW5nIGFuZCB6b29taW5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lv
bnMvcmVzb3VyY2VzL211bHRpLXNlZ21lbnQtcG9seWdvbi5qcyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZXhjbHVzaW9ucy9yZXNvdXJjZXMvbXVsdGktc2VnbWVudC1wb2x5Z29uLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjViYzY4NTBlZjc1NWQzYjBhMjY4ZjhmMDYzZmI2ZjMxNWQ2MmRkZTUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvcmVzb3VyY2VzL211bHRpLXNlZ21lbnQt
cG9seWdvbi5qcwpAQCAtMCwwICsxLDM0IEBACitmdW5jdGlvbiBnZW5lcmF0ZVBvbHlnb24od2lk
dGgsIGhlaWdodCwgZm9udFNpemUsIHBvaW50cywgY29udGVudCkgeworICAgIGlmICh3aW5kb3cu
aW50ZXJuYWxzKQorICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldENTU0V4Y2x1
c2lvbnNFbmFibGVkKHRydWUpOworICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnKTsKKyAgICB2YXIgcG9seWdvbiA9IHBvaW50cy5tYXAoZnVuY3Rpb24oZWxlbSwgaW5k
ZXgsIGFycmF5KSB7CisgICAgICAgIHJldHVybiBlbGVtLnRvU3RyaW5nKCkgKyAncHgnICsgKGlu
ZGV4IDwgYXJyYXkubGVuZ3RoIC0gMSAmJiBpbmRleCAlIDIgPT0gMSA/ICcsJyA6ICcnKTsKKyAg
ICB9KS5qb2luKCcgJyk7CisgICAgcG9seWdvbiA9ICdwb2x5Z29uKCcgKyBwb2x5Z29uICsgJykn
OworICAgIGRpdi5zdHlsZS5zZXRQcm9wZXJ0eSgnLXdlYmtpdC1zaGFwZS1pbnNpZGUnLCBwb2x5
Z29uKTsKKyAgICBkaXYuc3R5bGUuc2V0UHJvcGVydHkoJ3dpZHRoJywgd2lkdGggKyAncHgnKTsK
KyAgICBkaXYuc3R5bGUuc2V0UHJvcGVydHkoJ2hlaWdodCcsIGhlaWdodCArICdweCcpOworICAg
IGRpdi5zdHlsZS5zZXRQcm9wZXJ0eSgnZm9udCcsIGZvbnRTaXplICsgJ3B4LzEgQWhlbSwgc2Fu
cy1zZXJpZicpOworICAgIGRpdi5zdHlsZS5zZXRQcm9wZXJ0eSgnY29sb3InLCAnZ3JlZW4nKTsK
KyAgICBkaXYuc3R5bGUuc2V0UHJvcGVydHkoJ3dvcmQtd3JhcCcsICdicmVhay13b3JkJyk7Cisg
ICAgZGl2LmlubmVySFRNTCA9IGNvbnRlbnQ7CisgICAgaWYgKGRvY3VtZW50LmJvZHkuY2hpbGRO
b2Rlcy5sZW5ndGgpCisgICAgICAgIGRvY3VtZW50LmJvZHkuaW5zZXJ0QmVmb3JlKGRpdiwgZG9j
dW1lbnQuYm9keS5jaGlsZE5vZGVzWzBdKTsKKyAgICBlbHNlCisgICAgICAgIGRvY3VtZW50LmJv
ZHkuYXBwZW5kQ2hpbGQoZGl2KTsKK30KKworZnVuY3Rpb24gc2ltdWxhdGVXaXRoVGV4dCh3aWR0
aCwgaGVpZ2h0LCBmb250U2l6ZSwgY29udGVudCkgeworICAgIHZhciBkaXYgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICBkaXYuc3R5bGUuc2V0UHJvcGVydHkoJ3dpZHRoJywg
d2lkdGggKyAncHgnKTsKKyAgICBkaXYuc3R5bGUuc2V0UHJvcGVydHkoJ2hlaWdodCcsIGhlaWdo
dCArICdweCcpOworICAgIGRpdi5zdHlsZS5zZXRQcm9wZXJ0eSgnZm9udCcsIGZvbnRTaXplICsg
J3B4LzEgQWhlbSwgc2Fucy1zZXJpZicpOworICAgIGRpdi5zdHlsZS5zZXRQcm9wZXJ0eSgnY29s
b3InLCAnZ3JlZW4nKTsKKyAgICBkaXYuaW5uZXJIVE1MID0gY29udGVudDsKKyAgICBpZiAoZG9j
dW1lbnQuYm9keS5jaGlsZE5vZGVzLmxlbmd0aCkKKyAgICAgICAgZG9jdW1lbnQuYm9keS5pbnNl
cnRCZWZvcmUoZGl2LCBkb2N1bWVudC5ib2R5LmNoaWxkTm9kZXNbMF0pOworICAgIGVsc2UKKyAg
ICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkaXYpOworCit9CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0
aXBsZS1zZWdtZW50cy0wMDEtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVz
aW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNlZ21lbnRzLTAwMS1leHBl
Y3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIxODllM2Y0Mjg3ODRhYTVjMjJhYmUzMGUzZTBlNmU0Y2Q1
NTNiNWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hh
cGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDEtZXhwZWN0ZWQuaHRt
bApAQCAtMCwwICsxLDkgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0nLi4vcmVzb3Vy
Y2VzL211bHRpLXNlZ21lbnQtcG9seWdvbi5qcyc+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBv
bmxvYWQ9InNpbXVsYXRlV2l0aFRleHQoMjUwLCAxMDAsIDUwLCAnWFggWFggWFhYWFgnKSI+CitU
aGlzIHRlc3QgcmVxdWlyZXMgdGhlIEFoZW0gZm9udCwgYW5kIHNob3VsZCBkaXNwbGF5IGEgNXgy
IGdyaWQgb2YgZ3JlZW4gc3F1YXJlcywgd2l0aCBvbmUgbWlzc2luZyBpbiB0aGUgY2VudGVyIG9m
IHRoZSB0b3Agcm93LgorSXQgdGVzdHMgdGhhdCBhIGxpbmUgbWF5IGNvbnRhaW4gbXVsdGlwbGUg
c2VnbWVudHMgb2YgdGV4dC4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5z
aWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDEuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNlZ21l
bnRzLTAwMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiNmU2ZTFkODhjN2RlZGI5ZTNlZGQzMzFlMzYxNmVl
MDk3ZmJmZTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMv
c2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDEuaHRtbApAQCAt
MCwwICsxLDkgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0nLi4vcmVzb3VyY2VzL211
bHRpLXNlZ21lbnQtcG9seWdvbi5qcyc+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9
ImdlbmVyYXRlUG9seWdvbigyNTAsIDEwMCwgNTAsIFswLDAsMTAwLDAsMTAwLDI1LDE1MCwyNSwx
NTAsMCwyNTAsMCwyNTAsMTAwLDAsMTAwXSwgJ1hYWFhYWFhYWCcpIj4KK1RoaXMgdGVzdCByZXF1
aXJlcyB0aGUgQWhlbSBmb250LCBhbmQgc2hvdWxkIGRpc3BsYXkgYSA1eDIgZ3JpZCBvZiBncmVl
biBzcXVhcmVzLCB3aXRoIG9uZSBtaXNzaW5nIGluIHRoZSBjZW50ZXIgb2YgdGhlIHRvcCByb3cu
CitJdCB0ZXN0cyB0aGF0IGEgbGluZSBtYXkgY29udGFpbiBtdWx0aXBsZSBzZWdtZW50cyBvZiB0
ZXh0LgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5z
aWRlLW11bHRpcGxlLXNlZ21lbnRzLTAwMi1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMt
MDAyLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTZiZGFlMmJiOGNhMTUwYTY4ZGFkYjgzY2Uy
YzQxMjk3ZjhjZWQwNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVz
aW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNlZ21lbnRzLTAwMi1leHBl
Y3RlZC5odG1sCkBAIC0wLDAgKzEsOSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPScu
Li9yZXNvdXJjZXMvbXVsdGktc2VnbWVudC1wb2x5Z29uLmpzJz48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5IG9ubG9hZD0ic2ltdWxhdGVXaXRoVGV4dCgyNTAsIDEwMCwgNTAsICdYWFhYWCBYWCBY
WCcpIj4KK1RoaXMgdGVzdCByZXF1aXJlcyB0aGUgQWhlbSBmb250LCBhbmQgc2hvdWxkIGRpc3Bs
YXkgYSA1eDIgZ3JpZCBvZiBncmVlbiBzcXVhcmVzLCB3aXRoIG9uZSBtaXNzaW5nIGluIHRoZSBj
ZW50ZXIgb2YgdGhlIGJvdHRvbSByb3cuCitJdCB0ZXN0cyB0aGF0IGEgbGluZSBtYXkgY29udGFp
biBtdWx0aXBsZSBzZWdtZW50cyBvZiB0ZXh0LgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9u
cy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNlZ21lbnRzLTAwMi5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtbXVs
dGlwbGUtc2VnbWVudHMtMDAyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDQ0MzVhOTgzYmI0OWU4N2Y1ZGY2
YmM3NWE3YTlhZjAxOTllYWEzMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNlZ21lbnRzLTAw
Mi5odG1sCkBAIC0wLDAgKzEsOSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPScuLi9y
ZXNvdXJjZXMvbXVsdGktc2VnbWVudC1wb2x5Z29uLmpzJz48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5IG9ubG9hZD0iZ2VuZXJhdGVQb2x5Z29uKDI1MCwgMTAwLCA1MCwgWzAsMCwyNTAsMCwyNTAs
MTAwLDE1MCwxMDAsMTUwLDc1LDEwMCw3NSwxMDAsMTAwLDAsMTAwXSwgJ1hYWFhYWFhYWCcpIj4K
K1RoaXMgdGVzdCByZXF1aXJlcyB0aGUgQWhlbSBmb250LCBhbmQgc2hvdWxkIGRpc3BsYXkgYSA1
eDIgZ3JpZCBvZiBncmVlbiBzcXVhcmVzLCB3aXRoIG9uZSBtaXNzaW5nIGluIHRoZSBjZW50ZXIg
b2YgdGhlIGJvdHRvbSByb3cuCitJdCB0ZXN0cyB0aGF0IGEgbGluZSBtYXkgY29udGFpbiBtdWx0
aXBsZSBzZWdtZW50cyBvZiB0ZXh0LgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFw
ZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNlZ21lbnRzLTAwMy1leHBlY3RlZC5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUt
bXVsdGlwbGUtc2VnbWVudHMtMDAzLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDU1MWQ1Y2Yx
OWRkYTYxY2RjYWI0Y2Y0MmYxM2Q2MmIxZjg1ZWE2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxl
LXNlZ21lbnRzLTAwMy1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsOSBAQAorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQgc3JjPScuLi9yZXNvdXJjZXMvbXVsdGktc2VnbWVudC1wb2x5Z29uLmpzJz48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ic2ltdWxhdGVXaXRoVGV4dCgyNTAsIDEw
MCwgNTAsICdYWDxici8+WFgnKSI+CitUaGlzIHRlc3QgcmVxdWlyZXMgdGhlIEFoZW0gZm9udCwg
YW5kIHNob3VsZCBkaXNwbGF5IGEgMngyIGdyZWVuIHNxdWFyZS4KK0l0IHRlc3RzIHRoYXQgYSBs
aW5lIGJyZWFrIG1vdmVzIHRleHQgZG93biwgbm90IGp1c3QgdG8gdGhlIG5leHQgc2VnbWVudC4K
KzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1t
dWx0aXBsZS1zZWdtZW50cy0wMDMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9z
aGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNlZ21lbnRzLTAwMy5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmQ1MTU5ODI4MjBkMGVhMmYzMzUyNTFlZjM0NzRkYTQwMTIwM2U2ODkKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBl
LWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDMuaHRtbApAQCAtMCwwICsxLDkgQEAKKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0nLi4vcmVzb3VyY2VzL211bHRpLXNlZ21lbnQtcG9seWdv
bi5qcyc+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9ImdlbmVyYXRlUG9seWdvbigy
NTAsIDEwMCwgNTAsIFswLDAsMTAwLDAsMTAwLDI1LDE1MCwyNSwxNTAsMCwyNTAsMCwyNTAsMTAw
LDAsMTAwXSwgJ1hYPGJyLz5YWCcpIj4KK1RoaXMgdGVzdCByZXF1aXJlcyB0aGUgQWhlbSBmb250
LCBhbmQgc2hvdWxkIGRpc3BsYXkgYSAyeDIgZ3JlZW4gc3F1YXJlLgorSXQgdGVzdHMgdGhhdCBh
IGxpbmUgYnJlYWsgbW92ZXMgdGV4dCBkb3duLCBub3QganVzdCB0byB0aGUgbmV4dCBzZWdtZW50
LgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171699</attachid>
            <date>2012-10-31 12:08:43 -0700</date>
            <delta_ts>2012-11-02 13:59:45 -0700</delta_ts>
            <desc>Updating patch</desc>
            <filename>bug-91878-20121031120706.patch</filename>
            <type>text/plain</type>
            <size>40426</size>
            <attacher name="Bear Travis">betravis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzMDQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGQxNzBhNGYxMGVhNzI3
YjM0OGI3M2NmM2U4OGI5N2FhMGUwMjFiYy4uNzU0M2JjM2FkMGIzYTg0MWQzNzE4ZTY2MDc3ZGU5
ODA2ZWM1MWJhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDEyLTEwLTMxICBCZWFy
IFRyYXZpcyAgPGJldHJhdmlzQGFkb2JlLmNvbT4KKworICAgICAgICBbQ1NTIEV4Y2x1c2lvbnNd
IEVuYWJsZSBzaGFwZS1pbnNpZGUgZm9yIG11bHRpcGxlLXNlZ21lbnQgcG9seWdvbnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxODc4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGF0Y2ggYWRkaW5nIHN1
cHBvcnQgZm9yIG11bHRpcGxlLXNlZ21lbnQgcG9seWdvbnMgZm9yIHNoYXBlLWluc2lkZXMgZnJv
bQorICAgICAgICB0aGUgQ1NTIEV4Y2x1c2lvbnMgc3BlY2lmaWNhdGlvbi4gVGhlIGxheW91dCBj
b2RlIGhhcyBiZWVuIG1vZGlmaWVkIHRvIGZpcnN0CisgICAgICAgIHN1cHBvcnQgZGl2aWRpbmcg
dGV4dCBpbnRvIG11bHRpcGxlIHNlZ21lbnRzIHBlciBsaW5lLCBhbmQgdGhlbiB0byBsYXkgb3V0
CisgICAgICAgIG11bHRpcGxlIHNlZ21lbnRzIHBlciBsaW5lIGJveC4KKworICAgICAgICBUZXN0
czogIGZhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNl
Z21lbnRzLTAwMS5odG1sCisgICAgICAgICAgICAgICAgZmFzdC9leGNsdXNpb25zL3NoYXBlLWlu
c2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAyLmh0bWwKKworICAgICAgICAq
IHJlbmRlcmluZy9CaWRpUnVuLmg6CisgICAgICAgIChXZWJDb3JlOjpCaWRpUnVuOjpCaWRpUnVu
KToKKyAgICAgICAgKEJpZGlSdW4pOiBBZGRlZCBhICdzdGFydHNTZWdtZW50JyBib29sZWFuIHRv
IHRyYWNrIHdoZXRoZXIgYSBydW4gYmVnaW5zCisgICAgICAgIGEgbmV3IHNlZ21lbnQuCisgICAg
ICAgICogcmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFeGNsdXNpb25TaGFwZUluc2lkZUluZm86OmNvbXB1dGVTZWdtZW50c0ZvckxpbmUp
OiBDbGVhciB0aGUKKyAgICAgICAgc2VnbWVudCByYW5nZXMgd2hlbiBjb21wdXRpbmcgc2VnbWVu
dHMgZm9yIGEgbmV3IGxpbmUuCisgICAgICAgICogcmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlSW5z
aWRlSW5mby5oOgorICAgICAgICAoTGluZVNlZ21lbnRSYW5nZSk6IEFkZGVkIGEgbmV3IHR5cGUg
dG8gdHJhY2sgc2VnbWVudCBvZmZzZXRzLgorICAgICAgICAoV2ViQ29yZTo6TGluZVNlZ21lbnRS
YW5nZTo6TGluZVNlZ21lbnRSYW5nZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbzo6c2VnbWVudFJhbmdlcyk6IEFkZGVkIGEg
Z2V0dGVyIGZvcgorICAgICAgICB0aGUgbGluZSBzZWdtZW50IHJhbmdlcyB2ZWN0b3IuCisgICAg
ICAgIChFeGNsdXNpb25TaGFwZUluc2lkZUluZm8pOgorICAgICAgICAqIHJlbmRlcmluZy9Jbmxp
bmVGbG93Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OnBsYWNlQm94
ZXNJbklubGluZURpcmVjdGlvbik6IE1vZGlmaWVkIHRvIGNhbGwKKyAgICAgICAgYSByZWZhY3Rv
cmVkIGJveCBwbGFjZW1lbnQgYWxnb3JpdGhtIHRoYXQgdGFrZXMgYSBiZWdpbm5pbmcgYW5kIGVu
ZCBwb3NpdGlvbi4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5l
Rmxvd0JveDo6cGxhY2VCb3hSYW5nZUluSW5saW5lRGlyZWN0aW9uKTogU2ltaWxhciB0byB0aGUK
KyAgICAgICAgcGxhY2VCb3hlcyBtZXRob2QsIGJ1dCB0YWtlcyBhbiBlbmQgcG9zaXRpb24gdGhh
dCBtYXkgb2NjdXIgYmVmb3JlIHRoZSBlbmQKKyAgICAgICAgb2YgdGhlIGxpbmUuCisgICAgICAg
ICogcmVuZGVyaW5nL0lubGluZUZsb3dCb3guaDoKKyAgICAgICAgKElubGluZUZsb3dCb3gpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9jazo6ZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvSW50ZXJuYWwpOiBGYWN0b3JlZCBv
dXQgY2FsbHMKKyAgICAgICAgdG8gRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvIHRvIHRoZSAuY3Bw
IGZpbGUsIGFzIEV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbworICAgICAgICByZXF1aXJlcyBJbmxp
bmVJdGVyYXRvci5oLCB3aGljaCB3b3VsZCBjcmVhdGUgYSBjaXJjdWxhciBkZXBlbmRlbmN5IGlu
CisgICAgICAgIEV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby5oLgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpleGNsdXNpb25TaGFwZUluc2lkZUluZm8p
OiBNb2RpZmllZCB0byBjYWxsCisgICAgICAgIGV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mb0ludGVy
bmFsLgorICAgICAgICAoUmVuZGVyQmxvY2spOgorICAgICAgICAoTGluZUJyZWFrZXIpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGluZVdpZHRoOjpMaW5lV2lkdGgpOiBMaW5lV2lkdGggbm93IHVzZXMgdGhlIG51bWJl
ciBvZiBjb21wdXRlZAorICAgICAgICBzZWdtZW50UmFuZ2VzIHRvIGRldGVybWluZSB3aGljaCBM
aW5lU2VnbWVudCB0byB1c2Ugd2hlbiBjYWxjdWxhdGluZyB3aWR0aC4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJsb2NrOjpjcmVhdGVMaW5lQm94ZXMpOiBOb3cgdGFrZXMgYSBib29sZWFuIHRv
IGRldGVybWluZQorICAgICAgICB3aGV0aGVyIG9yIG5vdCBpdCBjYW4gc2hhcmUgdGhlIHNhbWUg
cGFyZW50Qm94IGFzIGl0cyBzaWJsaW5ncyAoc2VnbWVudHMKKyAgICAgICAgbXVzdCBiZSBhYmxl
IHRvIHBvc2l0aW9uIHRoZW1zZWx2ZXMgc2VwYXJhdGVseSBpbiB0aGUgUm9vdElubGluZUJveCku
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y29uc3RydWN0TGluZSk6CisgICAgICAg
IChXZWJDb3JlOjpjb21wdXRlRXhwYW5zaW9uRm9ySnVzdGlmaWVkVGV4dCk6IERvIGluY2x1ZGUg
cnVucyB0aGF0IHN0YXJ0IG5ldworICAgICAgICBzZWdtZW50cyB3aGVuIGNhbGN1bGF0aW5nIGp1
c3RpZmljYXRpb24gZm9yIHRoZSBjdXJyZW50IHNlZ21lbnQuCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9jazo6Y29tcHV0ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0ZvckxpbmUpOiBNb2Rp
ZmllZCB0bworICAgICAgICB1c2UgdGhlIGNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlvbnNG
b3JTZWdtZW50LCB3aGljaCBjYW4gcG9zaXRpb24KKyAgICAgICAgbXVsdGlwbGUgc2VnbWVudHMg
b2YgdGV4dCBwZXIgbGluZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjb21wdXRl
SW5saW5lRGlyZWN0aW9uUG9zaXRpb25zRm9yU2VnbWVudCk6IFBvc2l0aW9ucworICAgICAgICB0
aGUgZ2l2ZW4gc2VnbWVudCBvZiB0ZXh0IGFuZCBjYWxjdWxhdGVzIGl0cyBsYXlvdXQgb2Zmc2V0
cy4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEJpZGlSdW5zKTogTW9kaWZpZWQgc29tZSB2
YXJpYWJsZXMgZnJvbSAnZW5kT2ZMaW5lJyB0byAnZW5kT2ZTZWdtZW50Jy4KKyAgICAgICAgKFdl
YkNvcmU6OmNvbnN0cnVjdEJpZGlSdW5zRm9yTGluZSk6IENvbnN0cnVjdCB0aGUgYmlkaSBydW5z
IGZvciBlYWNoIHNlZ21lbnQgaW4KKyAgICAgICAgdGhlIGdpdmVuIGxpbmUuCisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpsYXlvdXRSdW5zQW5kRmxv
YXRzSW5SYW5nZSk6IENhbGwgY29uc3RydWN0QmlkaVJ1bnNGb3JMaW5lLgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQmxvY2s6OkxpbmVCcmVha2VyOjpuZXh0TGluZUJyZWFrKTogTW92ZWQgdGhl
IGxpbmUgYnJlYWtpbmcgY29kZQorICAgICAgICB0byBicmVhayBzZWdtZW50cywgd2l0aCBuZXh0
TGluZUJyZWFrIGl0ZXJhdGluZyBvdmVyIHNlZ21lbnQgYnJlYWtzIGZvciB0aGUgZW50aXJlIGxp
bmUuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6TGluZUJyZWFrZXI6Om5leHRTZWdt
ZW50QnJlYWspOiBDYWxjdWxhdGVzIGhvdyBtdWNoIHRleHQgYQorICAgICAgICBzZWdtZW50IGNh
biBob2xkLiBUaGlzIGNvZGUgd2FzIG9yaWdpbmFsbHkgaW4gbmV4dExpbmVCcmVhay4KKwogMjAx
Mi0xMC0zMSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFtWOF0g
R2FyYmFnZSBjb2xsZWN0aW9uIHNob3VsZCB1c2Ugb3BhcXVlIHJvb3RzIHJhdGhlciB0aGFuIGlt
cGxpY2l0IHJlZmVyZW5jZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9C
aWRpUnVuLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQmlkaVJ1bi5oCmluZGV4IGY1MGZh
MTk2ZmY2ZTJlNWFmZThmYmNlMzc4NTlhZDk0ZDk4ZDZjMTEuLjk5YjJhYWVjNTZkMTE3NDUwMjEw
ZDlmZGJmMmRjOGVlMTViMjIyZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9CaWRpUnVuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0JpZGlSdW4uaApAQCAt
MzksNiArMzksNyBAQCBzdHJ1Y3QgQmlkaVJ1biA6IEJpZGlDaGFyYWN0ZXJSdW4gewogICAgICAg
ICAsIG1fb2JqZWN0KG9iamVjdCkKICAgICAgICAgLCBtX2JveCgwKQogICAgICAgICAsIG1faGFz
SHlwaGVuKGZhbHNlKQorICAgICAgICAsIG1fc3RhcnRzU2VnbWVudChmYWxzZSkKICAgICB7CiAg
ICAgfQogCkBAIC02MSw2ICs2Miw3IEBAIHB1YmxpYzoKICAgICBSZW5kZXJPYmplY3QqIG1fb2Jq
ZWN0OwogICAgIElubGluZUJveCogbV9ib3g7CiAgICAgYm9vbCBtX2hhc0h5cGhlbjsKKyAgICBi
b29sIG1fc3RhcnRzU2VnbWVudDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9FeGNsdXNpb25TaGFwZUluc2lkZUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby5jcHAKaW5kZXggYjc4MzBmMTBlZjZi
ZTRjMzkyMzA3ODM1M2M0ZDA5ODdkNzcxYTBkZi4uZmRiMTBmOTMzMzlmNzZlZDMxMDgzMWJkZmQ3
NmU4OGJjODU3NGFhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1
c2lvblNoYXBlSW5zaWRlSW5mby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4
Y2x1c2lvblNoYXBlSW5zaWRlSW5mby5jcHAKQEAgLTEwNiw2ICsxMDYsNyBAQCBib29sIEV4Y2x1
c2lvblNoYXBlSW5zaWRlSW5mbzo6Y29tcHV0ZVNlZ21lbnRzRm9yTGluZShMYXlvdXRVbml0IGxp
bmVUb3AsIExheW91dAogICAgIG1fbGluZVRvcCA9IGxpbmVUb3A7CiAgICAgbV9saW5lSGVpZ2h0
ID0gbGluZUhlaWdodDsKICAgICBtX3NlZ21lbnRzLmNsZWFyKCk7CisgICAgbV9zZWdtZW50UmFu
Z2VzLmNsZWFyKCk7CiAKICAgICBpZiAobGluZU92ZXJsYXBzU2hhcGVCb3VuZHMoKSkgewogICAg
ICAgICBBU1NFUlQobV9zaGFwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
RXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLmgKaW5kZXggYmVhMmI0NWEwMzE3NWRiOGEwM2E1ODcw
YTQ5ODkyNzRiYmRkMGNhOS4uYjMzNDk4MDJlMTdjY2NhNDJjNjQ5NjVlMDUyMTUzMGUxZjk2YTBk
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlSW5z
aWRlSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25TaGFwZUlu
c2lkZUluZm8uaApAQCAtMzQsNiArMzQsNyBAQAogCiAjaW5jbHVkZSAiRXhjbHVzaW9uU2hhcGUu
aCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJJbmxpbmVJdGVyYXRvci5oIgog
I2luY2x1ZGUgIkxheW91dFR5cGVzSW5saW5lTWV0aG9kcy5oIgogI2luY2x1ZGUgPHd0Zi9Pd25Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgpAQCAtNDMsNiArNDQsMTcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZW5kZXJCbG9jazsKIAorc3RydWN0IExpbmVTZWdt
ZW50UmFuZ2UgeworICAgIElubGluZUl0ZXJhdG9yIHN0YXJ0OworICAgIElubGluZUl0ZXJhdG9y
IGVuZDsKKyAgICBMaW5lU2VnbWVudFJhbmdlKElubGluZUl0ZXJhdG9yIHN0YXJ0LCBJbmxpbmVJ
dGVyYXRvciBlbmQpCisgICAgICAgIDogc3RhcnQoc3RhcnQpCisgICAgICAgICwgZW5kKGVuZCkK
KyAgICB7CisgICAgfQorfTsKK3R5cGVkZWYgVmVjdG9yPExpbmVTZWdtZW50UmFuZ2U+IFNlZ21l
bnRSYW5nZUxpc3Q7CisKIGNsYXNzIEV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbyB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC03Myw2ICs4NSwxNCBAQCBwdWJsaWM6
CiAgICAgICAgIEFTU0VSVChoYXNTZWdtZW50cygpKTsKICAgICAgICAgcmV0dXJuIG1fc2VnbWVu
dHM7CiAgICAgfQorICAgIFNlZ21lbnRSYW5nZUxpc3QmIHNlZ21lbnRSYW5nZXMoKSB7IHJldHVy
biBtX3NlZ21lbnRSYW5nZXM7IH0KKyAgICBjb25zdCBMaW5lU2VnbWVudCogY3VycmVudFNlZ21l
bnQoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKCFoYXNTZWdtZW50cygpKQorICAgICAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIEFTU0VSVChtX3NlZ21lbnRSYW5nZXMuc2l6ZSgpIDwgbV9z
ZWdtZW50cy5zaXplKCkpOworICAgICAgICByZXR1cm4gJm1fc2VnbWVudHNbbV9zZWdtZW50UmFu
Z2VzLnNpemUoKV07CisgICAgfQogICAgIGJvb2wgY29tcHV0ZVNlZ21lbnRzRm9yTGluZShMYXlv
dXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUhlaWdodCk7CiAgICAgYm9vbCBsaW5lT3Zl
cmxhcHNTaGFwZUJvdW5kcygpIGNvbnN0OwogICAgIHZvaWQgY29tcHV0ZVNoYXBlU2l6ZShMYXlv
dXRVbml0IGxvZ2ljYWxXaWR0aCwgTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0KTsKQEAgLTkwLDYg
KzExMCw3IEBAIHByaXZhdGU6CiAgICAgTGF5b3V0VW5pdCBtX2xvZ2ljYWxIZWlnaHQ7CiAKICAg
ICBTZWdtZW50TGlzdCBtX3NlZ21lbnRzOworICAgIFNlZ21lbnRSYW5nZUxpc3QgbV9zZWdtZW50
UmFuZ2VzOwogICAgIGJvb2wgbV9zaGFwZVNpemVEaXJ0eTsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcAppbmRleCA2NmJjMTFlMDk0NzI2MTk1NmNhOWUy
YThiYTUyYjEwNTk2NzA0ZmU1Li5iMmMyNTZmNjU5MzFiNWNiOTdiMjYyZmU3ZTgyMTMwYWFiMGQ0
MGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCkBAIC0z
NjksMTUgKzM2OSwyNCBAQCB2b2lkIElubGluZUZsb3dCb3g6OmRldGVybWluZVNwYWNpbmdGb3JG
bG93Qm94ZXMoYm9vbCBsYXN0TGluZSwgYm9vbCBpc0xvZ2ljYWxseQogZmxvYXQgSW5saW5lRmxv
d0JveDo6cGxhY2VCb3hlc0luSW5saW5lRGlyZWN0aW9uKGZsb2F0IGxvZ2ljYWxMZWZ0LCBib29s
JiBuZWVkc1dvcmRTcGFjaW5nLCBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcCYgdGV4
dEJveERhdGFNYXApCiB7CiAgICAgLy8gU2V0IG91ciB4IHBvc2l0aW9uLgotICAgIHNldExvZ2lj
YWxMZWZ0KGxvZ2ljYWxMZWZ0KTsKLSAgCisgICAgYmVnaW5QbGFjaW5nQm94UmFuZ2VzSW5Jbmxp
bmVEaXJlY3Rpb24obG9naWNhbExlZnQpOworCiAgICAgZmxvYXQgc3RhcnRMb2dpY2FsTGVmdCA9
IGxvZ2ljYWxMZWZ0OwogICAgIGxvZ2ljYWxMZWZ0ICs9IGJvcmRlckxvZ2ljYWxMZWZ0KCkgKyBw
YWRkaW5nTG9naWNhbExlZnQoKTsKIAogICAgIGZsb2F0IG1pbkxvZ2ljYWxMZWZ0ID0gc3RhcnRM
b2dpY2FsTGVmdDsKICAgICBmbG9hdCBtYXhMb2dpY2FsUmlnaHQgPSBsb2dpY2FsTGVmdDsKIAot
ICAgIGZvciAoSW5saW5lQm94KiBjdXJyID0gZmlyc3RDaGlsZCgpOyBjdXJyOyBjdXJyID0gY3Vy
ci0+bmV4dE9uTGluZSgpKSB7CisgICAgcGxhY2VCb3hSYW5nZUluSW5saW5lRGlyZWN0aW9uKGZp
cnN0Q2hpbGQoKSwgMCwgbG9naWNhbExlZnQsIG1pbkxvZ2ljYWxMZWZ0LCBtYXhMb2dpY2FsUmln
aHQsIG5lZWRzV29yZFNwYWNpbmcsIHRleHRCb3hEYXRhTWFwKTsKKworICAgIGxvZ2ljYWxMZWZ0
ICs9IGJvcmRlckxvZ2ljYWxSaWdodCgpICsgcGFkZGluZ0xvZ2ljYWxSaWdodCgpOworICAgIGVu
ZFBsYWNpbmdCb3hSYW5nZXNJbklubGluZURpcmVjdGlvbihzdGFydExvZ2ljYWxMZWZ0LCBsb2dp
Y2FsTGVmdCwgbWluTG9naWNhbExlZnQsIG1heExvZ2ljYWxSaWdodCk7CisgICAgcmV0dXJuIGxv
Z2ljYWxMZWZ0OworfQorCitmbG9hdCBJbmxpbmVGbG93Qm94OjpwbGFjZUJveFJhbmdlSW5Jbmxp
bmVEaXJlY3Rpb24oSW5saW5lQm94KiBmaXJzdENoaWxkLCBJbmxpbmVCb3gqIGxhc3RDaGlsZCwg
ZmxvYXQmIGxvZ2ljYWxMZWZ0LCBmbG9hdCYgbWluTG9naWNhbExlZnQsIGZsb2F0JiBtYXhMb2dp
Y2FsUmlnaHQsIGJvb2wmIG5lZWRzV29yZFNwYWNpbmcsIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFj
a0ZvbnRzTWFwJiB0ZXh0Qm94RGF0YU1hcCkKK3sKKyAgICBmb3IgKElubGluZUJveCogY3VyciA9
IGZpcnN0Q2hpbGQ7IGN1cnIgJiYgY3VyciAhPSBsYXN0Q2hpbGQ7IGN1cnIgPSBjdXJyLT5uZXh0
T25MaW5lKCkpIHsKICAgICAgICAgaWYgKGN1cnItPnJlbmRlcmVyKCktPmlzVGV4dCgpKSB7CiAg
ICAgICAgICAgICBJbmxpbmVUZXh0Qm94KiB0ZXh0ID0gdG9JbmxpbmVUZXh0Qm94KGN1cnIpOwog
ICAgICAgICAgICAgUmVuZGVyVGV4dCogcnQgPSB0b1JlbmRlclRleHQodGV4dC0+cmVuZGVyZXIo
KSk7CkBAIC00MjksMTEgKzQzOCw2IEBAIGZsb2F0IElubGluZUZsb3dCb3g6OnBsYWNlQm94ZXNJ
bklubGluZURpcmVjdGlvbihmbG9hdCBsb2dpY2FsTGVmdCwgYm9vbCYgbmVlZHNXCiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0KLSAgICBsb2dpY2FsTGVmdCArPSBib3JkZXJMb2dp
Y2FsUmlnaHQoKSArIHBhZGRpbmdMb2dpY2FsUmlnaHQoKTsKLSAgICBzZXRMb2dpY2FsV2lkdGgo
bG9naWNhbExlZnQgLSBzdGFydExvZ2ljYWxMZWZ0KTsKLSAgICBpZiAoa25vd25Ub0hhdmVOb092
ZXJmbG93KCkgJiYgKG1pbkxvZ2ljYWxMZWZ0IDwgc3RhcnRMb2dpY2FsTGVmdCB8fCBtYXhMb2dp
Y2FsUmlnaHQgPiBsb2dpY2FsTGVmdCkpCi0gICAgICAgIGNsZWFyS25vd25Ub0hhdmVOb092ZXJm
bG93KCk7CiAgICAgcmV0dXJuIGxvZ2ljYWxMZWZ0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0lubGluZUZsb3dCb3guaAppbmRleCA0OGI3MjBjNzVkZDUzZTdkMjA5NzgyZGQ0YmEyZjMx
YTQ1MjE1MDBlLi5kYmYwMTM1YmM0MTA4YjNmN2YzYzZiMjRjZjQzOGZkZGI1NmEzNjI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmgKQEAgLTE3NCw2ICsxNzQsMTUg
QEAgcHVibGljOgogICAgIHZvaWQgZGV0ZXJtaW5lU3BhY2luZ0ZvckZsb3dCb3hlcyhib29sIGxh
c3RMaW5lLCBib29sIGlzTG9naWNhbGx5TGFzdFJ1bldyYXBwZWQsIFJlbmRlck9iamVjdCogbG9n
aWNhbGx5TGFzdFJ1blJlbmRlcmVyKTsKICAgICBMYXlvdXRVbml0IGdldEZsb3dTcGFjaW5nTG9n
aWNhbFdpZHRoKCk7CiAgICAgZmxvYXQgcGxhY2VCb3hlc0luSW5saW5lRGlyZWN0aW9uKGZsb2F0
IGxvZ2ljYWxMZWZ0LCBib29sJiBuZWVkc1dvcmRTcGFjaW5nLCBHbHlwaE92ZXJmbG93QW5kRmFs
bGJhY2tGb250c01hcCYpOworICAgIGZsb2F0IHBsYWNlQm94UmFuZ2VJbklubGluZURpcmVjdGlv
bihJbmxpbmVCb3gqIGZpcnN0Q2hpbGQsIElubGluZUJveCogbGFzdENoaWxkLCBmbG9hdCYgbG9n
aWNhbExlZnQsIGZsb2F0JiBtaW5Mb2dpY2FsTGVmdCwgZmxvYXQmIG1heExvZ2ljYWxSaWdodCwg
Ym9vbCYgbmVlZHNXb3JkU3BhY2luZywgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXAm
KTsKKyAgICB2b2lkIGJlZ2luUGxhY2luZ0JveFJhbmdlc0luSW5saW5lRGlyZWN0aW9uKGZsb2F0
IGxvZ2ljYWxMZWZ0KSB7IHNldExvZ2ljYWxMZWZ0KGxvZ2ljYWxMZWZ0KTsgfQorICAgIHZvaWQg
ZW5kUGxhY2luZ0JveFJhbmdlc0luSW5saW5lRGlyZWN0aW9uKGZsb2F0IGxvZ2ljYWxMZWZ0LCBm
bG9hdCBsb2dpY2FsUmlnaHQsIGZsb2F0IG1pbkxvZ2ljYWxMZWZ0LCBmbG9hdCBtYXhMb2dpY2Fs
UmlnaHQpCisgICAgeworICAgICAgICBzZXRMb2dpY2FsV2lkdGgobG9naWNhbFJpZ2h0IC0gbG9n
aWNhbExlZnQpOworICAgICAgICBpZiAoa25vd25Ub0hhdmVOb092ZXJmbG93KCkgJiYgKG1pbkxv
Z2ljYWxMZWZ0IDwgbG9naWNhbExlZnQgfHwgbWF4TG9naWNhbFJpZ2h0ID4gbG9naWNhbFJpZ2h0
KSkKKyAgICAgICAgICAgIGNsZWFyS25vd25Ub0hhdmVOb092ZXJmbG93KCk7CisgICAgfQorCiAg
ICAgdm9pZCBjb21wdXRlTG9naWNhbEJveEhlaWdodHMoUm9vdElubGluZUJveCosIExheW91dFVu
aXQmIG1heFBvc2l0aW9uVG9wLCBMYXlvdXRVbml0JiBtYXhQb3NpdGlvbkJvdHRvbSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQmIG1heEFzY2VudCwgaW50JiBtYXhEZXNj
ZW50LCBib29sJiBzZXRNYXhBc2NlbnQsIGJvb2wmIHNldE1heERlc2NlbnQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzdHJpY3RNb2RlLCBHbHlwaE92ZXJmbG93QW5k
RmFsbGJhY2tGb250c01hcCYsIEZvbnRCYXNlbGluZSwgVmVydGljYWxQb3NpdGlvbkNhY2hlJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCBjZGE5ZDQyN2Jk
OTRiZDk3ZDQ4YTRiOGYzMTdmNzkwODNhMDc5ZTMyLi5hNDEyZDZkYzMwMjAyZTI5NThiMDg0YTZi
MWZjZDMzYzAzNjg1YjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5j
cHAKQEAgLTEzOTUsNiArMTM5NSwxMSBAQCB2b2lkIFJlbmRlckJsb2NrOjpsYXlvdXQoKQogfQog
CiAjaWYgRU5BQkxFKENTU19FWENMVVNJT05TKQorRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvKiBS
ZW5kZXJCbG9jazo6ZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvSW50ZXJuYWwoKSBjb25zdAorewor
ICAgIHJldHVybiBFeGNsdXNpb25TaGFwZUluc2lkZUluZm86OmlzRXhjbHVzaW9uU2hhcGVJbnNp
ZGVJbmZvRW5hYmxlZEZvclJlbmRlckJsb2NrKHRoaXMpID8gRXhjbHVzaW9uU2hhcGVJbnNpZGVJ
bmZvOjpleGNsdXNpb25TaGFwZUluc2lkZUluZm9Gb3JSZW5kZXJCbG9jayh0aGlzKSA6IDA7Cit9
CisKIHZvaWQgUmVuZGVyQmxvY2s6OnVwZGF0ZUV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mb0FmdGVy
U3R5bGVDaGFuZ2UoY29uc3QgQmFzaWNTaGFwZSogc2hhcGVJbnNpZGUsIGNvbnN0IEJhc2ljU2hh
cGUqIG9sZFNoYXBlSW5zaWRlKQogewogICAgIC8vIEZJWE1FOiBBIGZ1dHVyZSBvcHRpbWl6YXRp
b24gd291bGQgZG8gYSBkZWVwIGNvbXBhcmlzb24gZm9yIGVxdWFsaXR5LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2suaAppbmRleCAyY2JjNmQzNDBhODc5OTExYjQ5MWE1OTZmNjE0
ZWM5NjAzMDQ2ODczLi44MmY4YjQ3NjEzM2JlY2Y5YTc5YmUyMWFmMGFmMGU0MDIwNzVmMDMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaApAQCAtMzQsMTAgKzM0LDYgQEAK
ICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAK
LSNpZiBFTkFCTEUoQ1NTX0VYQ0xVU0lPTlMpCi0jaW5jbHVkZSAiRXhjbHVzaW9uU2hhcGVJbnNp
ZGVJbmZvLmgiCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBCaWRpQ29u
dGV4dDsKQEAgLTUyLDYgKzQ4LDEwIEBAIHN0cnVjdCBCaWRpUnVuOwogc3RydWN0IFBhaW50SW5m
bzsKIGNsYXNzIExpbmVJbmZvOwogY2xhc3MgUmVuZGVyUnVieVJ1bjsKKyNpZiBFTkFCTEUoQ1NT
X0VYQ0xVU0lPTlMpCitjbGFzcyBCYXNpY1NoYXBlOworY2xhc3MgRXhjbHVzaW9uU2hhcGVJbnNp
ZGVJbmZvOworI2VuZGlmCiBjbGFzcyBUZXh0TGF5b3V0OwogY2xhc3MgV29yZE1lYXN1cmVtZW50
OwogCkBAIC00MjMsNyArNDIzLDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShDU1NfRVhDTFVTSU9O
UykKICAgICBFeGNsdXNpb25TaGFwZUluc2lkZUluZm8qIGV4Y2x1c2lvblNoYXBlSW5zaWRlSW5m
bygpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gc3R5bGUoKS0+c2hhcGVJbnNpZGUoKSAm
JiBFeGNsdXNpb25TaGFwZUluc2lkZUluZm86OmlzRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvRW5h
YmxlZEZvclJlbmRlckJsb2NrKHRoaXMpID8gRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvOjpleGNs
dXNpb25TaGFwZUluc2lkZUluZm9Gb3JSZW5kZXJCbG9jayh0aGlzKSA6IDA7CisgICAgICAgIHJl
dHVybiBzdHlsZSgpLT5zaGFwZUluc2lkZSgpID8gZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvSW50
ZXJuYWwoKSA6IDA7CiAgICAgfQogI2VuZGlmCiAKQEAgLTUyMCw2ICs1MjAsNyBAQCBwcm90ZWN0
ZWQ6CiAKIHByaXZhdGU6CiAjaWYgRU5BQkxFKENTU19FWENMVVNJT05TKQorICAgIEV4Y2x1c2lv
blNoYXBlSW5zaWRlSW5mbyogZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvSW50ZXJuYWwoKSBjb25z
dDsKICAgICB2b2lkIGNvbXB1dGVFeGNsdXNpb25TaGFwZVNpemUoKTsKICAgICB2b2lkIHVwZGF0
ZUV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mb0FmdGVyU3R5bGVDaGFuZ2UoY29uc3QgQmFzaWNTaGFw
ZSosIGNvbnN0IEJhc2ljU2hhcGUqIG9sZFdyYXBTaGFwZSk7CiAjZW5kaWYKQEAgLTc1Nyw2ICs3
NTgsNyBAQCBwcml2YXRlOgogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgcmVzZXQoKTsKICAg
ICAgICAgCisgICAgICAgIElubGluZUl0ZXJhdG9yIG5leHRTZWdtZW50QnJlYWsoSW5saW5lQmlk
aVJlc29sdmVyJiwgTGluZUluZm8mLCBSZW5kZXJUZXh0SW5mbyYsIEZsb2F0aW5nT2JqZWN0KiBs
YXN0RmxvYXRGcm9tUHJldmlvdXNMaW5lLCB1bnNpZ25lZCBjb25zZWN1dGl2ZUh5cGhlbmF0ZWRM
aW5lcywgV29yZE1lYXN1cmVtZW50cyYpOwogICAgICAgICB2b2lkIHNraXBUcmFpbGluZ1doaXRl
c3BhY2UoSW5saW5lSXRlcmF0b3ImLCBjb25zdCBMaW5lSW5mbyYpOwogICAgICAgICB2b2lkIHNr
aXBMZWFkaW5nV2hpdGVzcGFjZShJbmxpbmVCaWRpUmVzb2x2ZXImLCBMaW5lSW5mbyYsIEZsb2F0
aW5nT2JqZWN0KiBsYXN0RmxvYXRGcm9tUHJldmlvdXNMaW5lLCBMaW5lV2lkdGgmKTsKICAgICAg
ICAgCkBAIC03NzMsMTAgKzc3NSwxMiBAQCBwcml2YXRlOgogICAgIGJvb2wgY2hlY2tQYWdpbmF0
aW9uQW5kRmxvYXRzQXRFbmRMaW5lKExpbmVMYXlvdXRTdGF0ZSYpOwogICAgIAogICAgIFJvb3RJ
bmxpbmVCb3gqIGNvbnN0cnVjdExpbmUoQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4mLCBjb25zdCBMaW5l
SW5mbyYpOwotICAgIElubGluZUZsb3dCb3gqIGNyZWF0ZUxpbmVCb3hlcyhSZW5kZXJPYmplY3Qq
LCBjb25zdCBMaW5lSW5mbyYsIElubGluZUJveCogY2hpbGRCb3gpOworICAgIElubGluZUZsb3dC
b3gqIGNyZWF0ZUxpbmVCb3hlcyhSZW5kZXJPYmplY3QqLCBjb25zdCBMaW5lSW5mbyYsIElubGlu
ZUJveCogY2hpbGRCb3gsIGJvb2wgc3RhcnRzTmV3U2VnbW5ldCk7CiAKICAgICB2b2lkIHNldE1h
cmdpbnNGb3JSdWJ5UnVuKEJpZGlSdW4qLCBSZW5kZXJSdWJ5UnVuKiwgUmVuZGVyT2JqZWN0Kiwg
Y29uc3QgTGluZUluZm8mKTsKIAorICAgIEJpZGlSdW4qIGNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Q
b3NpdGlvbnNGb3JTZWdtZW50KFJvb3RJbmxpbmVCb3gqLCBjb25zdCBMaW5lSW5mbyYsIEVUZXh0
QWxpZ24sIGZsb2F0JiBsb2dpY2FsTGVmdCwKKyAgICAgICAgZmxvYXQmIGF2YWlsYWJsZUxvZ2lj
YWxXaWR0aCwgQmlkaVJ1biogZmlyc3RSdW4sIEJpZGlSdW4qIHRyYWlsaW5nU3BhY2VSdW4sIEds
eXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwJiB0ZXh0Qm94RGF0YU1hcCwgVmVydGljYWxQ
b3NpdGlvbkNhY2hlJiwgV29yZE1lYXN1cmVtZW50cyYpOwogICAgIHZvaWQgY29tcHV0ZUlubGlu
ZURpcmVjdGlvblBvc2l0aW9uc0ZvckxpbmUoUm9vdElubGluZUJveCosIGNvbnN0IExpbmVJbmZv
JiwgQmlkaVJ1biogZmlyc3RSdW4sIEJpZGlSdW4qIHRyYWlsaW5nU3BhY2VSdW4sIGJvb2wgcmVh
Y2hlZEVuZCwgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXAmLCBWZXJ0aWNhbFBvc2l0
aW9uQ2FjaGUmLCBXb3JkTWVhc3VyZW1lbnRzJik7CiAgICAgdm9pZCBjb21wdXRlQmxvY2tEaXJl
Y3Rpb25Qb3NpdGlvbnNGb3JMaW5lKFJvb3RJbmxpbmVCb3gqLCBCaWRpUnVuKiwgR2x5cGhPdmVy
Zmxvd0FuZEZhbGxiYWNrRm9udHNNYXAmLCBWZXJ0aWNhbFBvc2l0aW9uQ2FjaGUmKTsKICAgICB2
b2lkIGRlbGV0ZUVsbGlwc2lzTGluZUJveGVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCmluZGV4IDNiMjdhYmQ2ZjA2Y2JmMzdh
MzM4ODM5N2VkODU4ZGZkMDBmOWQ1ZDUuLmFlODY4MWM2MGY3YzYyYThiNzlhYzg2NGYzYTc3MTU5
MTJkNGE5Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
a0xpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
a0xpbmVMYXlvdXQuY3BwCkBAIC04OCw5ICs4OCw4IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJU
KGJsb2NrKTsKICNpZiBFTkFCTEUoQ1NTX0VYQ0xVU0lPTlMpCiAgICAgICAgIEV4Y2x1c2lvblNo
YXBlSW5zaWRlSW5mbyogZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvID0gbGF5b3V0RXhjbHVzaW9u
U2hhcGVJbnNpZGVJbmZvKG1fYmxvY2spOwotICAgICAgICAvLyBGSVhNRTogQnVnIDkxODc4OiBB
ZGQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgc2VnbWVudHMsIGN1cnJlbnRseSB3ZSBvbmx5IHN1cHBv
cnQgb25lCi0gICAgICAgIGlmIChleGNsdXNpb25TaGFwZUluc2lkZUluZm8gJiYgZXhjbHVzaW9u
U2hhcGVJbnNpZGVJbmZvLT5oYXNTZWdtZW50cygpKQotICAgICAgICAgICAgbV9zZWdtZW50ID0g
JmV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby0+c2VnbWVudHMoKVswXTsKKyAgICAgICAgaWYgKGV4
Y2x1c2lvblNoYXBlSW5zaWRlSW5mbykKKyAgICAgICAgICAgIG1fc2VnbWVudCA9IGV4Y2x1c2lv
blNoYXBlSW5zaWRlSW5mby0+Y3VycmVudFNlZ21lbnQoKTsKICNlbmRpZgogICAgICAgICB1cGRh
dGVBdmFpbGFibGVXaWR0aCgpOwogICAgIH0KQEAgLTQ1MCw3ICs0NDksNyBAQCBzdGF0aWMgYm9v
bCBwYXJlbnRJc0NvbnN0cnVjdGVkT3JIYXZlTmV4dChJbmxpbmVGbG93Qm94KiBwYXJlbnRCb3gp
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1JbmxpbmVGbG93Qm94KiBSZW5kZXJCbG9jazo6Y3Jl
YXRlTGluZUJveGVzKFJlbmRlck9iamVjdCogb2JqLCBjb25zdCBMaW5lSW5mbyYgbGluZUluZm8s
IElubGluZUJveCogY2hpbGRCb3gpCitJbmxpbmVGbG93Qm94KiBSZW5kZXJCbG9jazo6Y3JlYXRl
TGluZUJveGVzKFJlbmRlck9iamVjdCogb2JqLCBjb25zdCBMaW5lSW5mbyYgbGluZUluZm8sIElu
bGluZUJveCogY2hpbGRCb3gsIGJvb2wgc3RhcnROZXdTZWdtZW50KQogewogICAgIC8vIFNlZSBp
ZiB3ZSBoYXZlIGFuIHVuY29uc3RydWN0ZWQgbGluZSBib3ggZm9yIHRoaXMgb2JqZWN0IHRoYXQg
aXMgYWxzbwogICAgIC8vIHRoZSBsYXN0IGl0ZW0gb24gdGhlIGxpbmUuCkBAIC00NzMsNyArNDcy
LDggQEAgSW5saW5lRmxvd0JveCogUmVuZGVyQmxvY2s6OmNyZWF0ZUxpbmVCb3hlcyhSZW5kZXJP
YmplY3QqIG9iaiwgY29uc3QgTGluZUluZm8mIGwKICAgICAgICAgLy8gdGhlIHNhbWUgbGluZSAo
dGhpcyBjYW4gaGFwcGVuIHdpdGggdmVyeSBmYW5jeSBsYW5ndWFnZSBtaXh0dXJlcykuCiAgICAg
ICAgIGJvb2wgY29uc3RydWN0ZWROZXdCb3ggPSBmYWxzZTsKICAgICAgICAgYm9vbCBhbGxvd2Vk
VG9Db25zdHJ1Y3ROZXdCb3ggPSAhaGFzRGVmYXVsdExpbmVCb3hDb250YWluIHx8ICFpbmxpbmVG
bG93IHx8IGlubGluZUZsb3ctPmFsd2F5c0NyZWF0ZUxpbmVCb3hlcygpOwotICAgICAgICBib29s
IGNhblVzZUV4aXN0aW5nUGFyZW50Qm94ID0gcGFyZW50Qm94ICYmICFwYXJlbnRJc0NvbnN0cnVj
dGVkT3JIYXZlTmV4dChwYXJlbnRCb3gpOworICAgICAgICBib29sIG11c3RDcmVhdGVCb3hlc1Rv
Um9vdCA9IHN0YXJ0TmV3U2VnbWVudCAmJiAhcGFyZW50Qm94LT5pc1Jvb3RJbmxpbmVCb3goKTsK
KyAgICAgICAgYm9vbCBjYW5Vc2VFeGlzdGluZ1BhcmVudEJveCA9IHBhcmVudEJveCAmJiAhcGFy
ZW50SXNDb25zdHJ1Y3RlZE9ySGF2ZU5leHQocGFyZW50Qm94KSAmJiAhbXVzdENyZWF0ZUJveGVz
VG9Sb290OwogICAgICAgICBpZiAoYWxsb3dlZFRvQ29uc3RydWN0TmV3Qm94ICYmICFjYW5Vc2VF
eGlzdGluZ1BhcmVudEJveCkgewogICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBtYWtlIGEgbmV3
IGJveCBmb3IgdGhpcyByZW5kZXIgb2JqZWN0LiAgT25jZQogICAgICAgICAgICAgLy8gbWFkZSwg
d2UgbmVlZCB0byBwbGFjZSBpdCBhdCB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IGxpbmUuCkBAIC01
NzAsMTAgKzU3MCwxMSBAQCBSb290SW5saW5lQm94KiBSZW5kZXJCbG9jazo6Y29uc3RydWN0TGlu
ZShCaWRpUnVuTGlzdDxCaWRpUnVuPiYgYmlkaVJ1bnMsIGNvbnN0CiAKICAgICAgICAgLy8gSWYg
d2UgaGF2ZSBubyBwYXJlbnQgYm94IHlldCwgb3IgaWYgdGhlIHJ1biBpcyBub3Qgc2ltcGx5IGEg
c2libGluZywKICAgICAgICAgLy8gdGhlbiB3ZSBuZWVkIHRvIGNvbnN0cnVjdCBpbmxpbmUgYm94
ZXMgYXMgbmVjZXNzYXJ5IHRvIHByb3Blcmx5IGVuY2xvc2UgdGhlCi0gICAgICAgIC8vIHJ1bidz
IGlubGluZSBib3guCi0gICAgICAgIGlmICghcGFyZW50Qm94IHx8IHBhcmVudEJveC0+cmVuZGVy
ZXIoKSAhPSByLT5tX29iamVjdC0+cGFyZW50KCkpCisgICAgICAgIC8vIHJ1bidzIGlubGluZSBi
b3guIFNlZ21lbnRzIGNhbiBvbmx5IGJlIHNpYmxpbmdzIGF0IHRoZSByb290IGxldmVsLCBhcwor
ICAgICAgICAvLyB0aGV5IGFyZSBwb3NpdGlvbmVkIHNlcGFyYXRlbHkuCisgICAgICAgIGlmICgh
cGFyZW50Qm94IHx8IHBhcmVudEJveC0+cmVuZGVyZXIoKSAhPSByLT5tX29iamVjdC0+cGFyZW50
KCkgfHwgci0+bV9zdGFydHNTZWdtZW50KQogICAgICAgICAgICAgLy8gQ3JlYXRlIG5ldyBpbmxp
bmUgYm94ZXMgYWxsIHRoZSB3YXkgYmFjayB0byB0aGUgYXBwcm9wcmlhdGUgaW5zZXJ0aW9uIHBv
aW50LgotICAgICAgICAgICAgcGFyZW50Qm94ID0gY3JlYXRlTGluZUJveGVzKHItPm1fb2JqZWN0
LT5wYXJlbnQoKSwgbGluZUluZm8sIGJveCk7CisgICAgICAgICAgICBwYXJlbnRCb3ggPSBjcmVh
dGVMaW5lQm94ZXMoci0+bV9vYmplY3QtPnBhcmVudCgpLCBsaW5lSW5mbywgYm94LCByLT5tX3N0
YXJ0c1NlZ21lbnQpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIC8vIEFwcGVuZCB0aGUg
aW5saW5lIGJveCB0byB0aGlzIGxpbmUuCiAgICAgICAgICAgICBwYXJlbnRCb3gtPmFkZFRvTGlu
ZShib3gpOwpAQCAtODA4LDYgKzgwOSw5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBjb21wdXRlRXhw
YW5zaW9uRm9ySnVzdGlmaWVkVGV4dChCaWRpUnVuKiBmaXJzdFJ1biwgQmlkaVJ1bioKIAogICAg
IHNpemVfdCBpID0gMDsKICAgICBmb3IgKEJpZGlSdW4qIHIgPSBmaXJzdFJ1bjsgcjsgciA9IHIt
Pm5leHQoKSkgeworICAgICAgICAvLyBUaGUgY2FsY3VsYXRpb24gaXMgc2VwYXJhdGUgZm9yIGVh
Y2ggc2VnbWVudAorICAgICAgICBpZiAoci0+bV9zdGFydHNTZWdtZW50KQorICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGlmICghci0+bV9ib3ggfHwgciA9PSB0cmFpbGluZ1NwYWNlUnVuKQog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIApAQCAtODgzLDE3ICs4ODcsNTMgQEAgdm9p
ZCBSZW5kZXJCbG9jazo6Y29tcHV0ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0ZvckxpbmUoUm9v
dElubGluZUJveCogbGluZUJveCwKICAgICAvLyBDU1MgMi4xOiAiJ1RleHQtaW5kZW50JyBvbmx5
IGFmZmVjdHMgYSBsaW5lIGlmIGl0IGlzIHRoZSBmaXJzdCBmb3JtYXR0ZWQgbGluZSBvZiBhbiBl
bGVtZW50LiBGb3IgZXhhbXBsZSwgdGhlIGZpcnN0IGxpbmUgb2YgYW4gYW5vbnltb3VzIGJsb2Nr
IAogICAgIC8vIGJveCBpcyBvbmx5IGFmZmVjdGVkIGlmIGl0IGlzIHRoZSBmaXJzdCBjaGlsZCBv
ZiBpdHMgcGFyZW50IGVsZW1lbnQuIgogICAgIGJvb2wgZmlyc3RMaW5lID0gbGluZUluZm8uaXNG
aXJzdExpbmUoKSAmJiAhKGlzQW5vbnltb3VzQmxvY2soKSAmJiBwYXJlbnQoKS0+Zmlyc3RDaGls
ZCgpICE9IHRoaXMpOwotICAgIGZsb2F0IGxvZ2ljYWxMZWZ0ID0gcGl4ZWxTbmFwcGVkTG9naWNh
bExlZnRPZmZzZXRGb3JMaW5lKGxvZ2ljYWxIZWlnaHQoKSwgZmlyc3RMaW5lLCBsaW5lTG9naWNh
bEhlaWdodCk7Ci0gICAgZmxvYXQgbG9naWNhbFJpZ2h0ID0gcGl4ZWxTbmFwcGVkTG9naWNhbFJp
Z2h0T2Zmc2V0Rm9yTGluZShsb2dpY2FsSGVpZ2h0KCksIGZpcnN0TGluZSwgbGluZUxvZ2ljYWxI
ZWlnaHQpOworICAgIGZsb2F0IGxpbmVMb2dpY2FsTGVmdCA9IHBpeGVsU25hcHBlZExvZ2ljYWxM
ZWZ0T2Zmc2V0Rm9yTGluZShsb2dpY2FsSGVpZ2h0KCksIGZpcnN0TGluZSwgbGluZUxvZ2ljYWxI
ZWlnaHQpOworICAgIGZsb2F0IGxpbmVMb2dpY2FsUmlnaHQgPSBwaXhlbFNuYXBwZWRMb2dpY2Fs
UmlnaHRPZmZzZXRGb3JMaW5lKGxvZ2ljYWxIZWlnaHQoKSwgZmlyc3RMaW5lLCBsaW5lTG9naWNh
bEhlaWdodCk7CisgICAgZmxvYXQgYXZhaWxhYmxlTG9naWNhbFdpZHRoOworICAgIGJvb2wgbmVl
ZHNXb3JkU3BhY2luZzsKICNpZiBFTkFCTEUoQ1NTX0VYQ0xVU0lPTlMpCiAgICAgRXhjbHVzaW9u
U2hhcGVJbnNpZGVJbmZvKiBleGNsdXNpb25TaGFwZUluc2lkZUluZm8gPSBsYXlvdXRFeGNsdXNp
b25TaGFwZUluc2lkZUluZm8odGhpcyk7CiAgICAgaWYgKGV4Y2x1c2lvblNoYXBlSW5zaWRlSW5m
byAmJiBleGNsdXNpb25TaGFwZUluc2lkZUluZm8tPmhhc1NlZ21lbnRzKCkpIHsKLSAgICAgICAg
bG9naWNhbExlZnQgPSBtYXg8ZmxvYXQ+KHJvdW5kVG9JbnQoZXhjbHVzaW9uU2hhcGVJbnNpZGVJ
bmZvLT5zZWdtZW50cygpWzBdLmxvZ2ljYWxMZWZ0KSwgbG9naWNhbExlZnQpOwotICAgICAgICBs
b2dpY2FsUmlnaHQgPSBtaW48ZmxvYXQ+KGZsb29yVG9JbnQoZXhjbHVzaW9uU2hhcGVJbnNpZGVJ
bmZvLT5zZWdtZW50cygpWzBdLmxvZ2ljYWxSaWdodCksIGxvZ2ljYWxSaWdodCk7CisgICAgICAg
IEJpZGlSdW4qIHNlZ21lbnRTdGFydCA9IGZpcnN0UnVuOworICAgICAgICBjb25zdCBTZWdtZW50
TGlzdCYgc2VnbWVudHMgPSBleGNsdXNpb25TaGFwZUluc2lkZUluZm8tPnNlZ21lbnRzKCk7Cisg
ICAgICAgIGZsb2F0IGxvZ2ljYWxMZWZ0ID0gbWF4PGZsb2F0Pihyb3VuZFRvSW50KHNlZ21lbnRz
WzBdLmxvZ2ljYWxMZWZ0KSwgbGluZUxvZ2ljYWxMZWZ0KTsKKyAgICAgICAgZmxvYXQgbG9naWNh
bFJpZ2h0ID0gbWluPGZsb2F0PihmbG9vclRvSW50KHNlZ21lbnRzWzBdLmxvZ2ljYWxSaWdodCks
IGxpbmVMb2dpY2FsUmlnaHQpOworICAgICAgICBmbG9hdCBzdGFydExvZ2ljYWxMZWZ0ID0gbG9n
aWNhbExlZnQ7CisgICAgICAgIGZsb2F0IGVuZExvZ2ljYWxSaWdodCA9IGxvZ2ljYWxMZWZ0Owor
ICAgICAgICBmbG9hdCBtaW5Mb2dpY2FsTGVmdCA9IGxvZ2ljYWxMZWZ0OworICAgICAgICBmbG9h
dCBtYXhMb2dpY2FsUmlnaHQgPSBsb2dpY2FsTGVmdDsKKyAgICAgICAgbGluZUJveC0+YmVnaW5Q
bGFjaW5nQm94UmFuZ2VzSW5JbmxpbmVEaXJlY3Rpb24obG9naWNhbExlZnQpOworICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHNlZ21lbnRzLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAg
ICBpZiAoaSkgeworICAgICAgICAgICAgICAgIGxvZ2ljYWxMZWZ0ID0gbWF4PGZsb2F0Pihyb3Vu
ZFRvSW50KHNlZ21lbnRzW2ldLmxvZ2ljYWxMZWZ0KSwgbGluZUxvZ2ljYWxMZWZ0KTsKKyAgICAg
ICAgICAgICAgICBsb2dpY2FsUmlnaHQgPSBtaW48ZmxvYXQ+KGZsb29yVG9JbnQoc2VnbWVudHNb
aV0ubG9naWNhbFJpZ2h0KSwgbGluZUxvZ2ljYWxSaWdodCk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBhdmFpbGFibGVMb2dpY2FsV2lkdGggPSBsb2dpY2FsUmlnaHQgLSBsb2dpY2FsTGVm
dDsKKyAgICAgICAgICAgIEJpZGlSdW4qIG5ld1NlZ21lbnRTdGFydCA9IGNvbXB1dGVJbmxpbmVE
aXJlY3Rpb25Qb3NpdGlvbnNGb3JTZWdtZW50KGxpbmVCb3gsIGxpbmVJbmZvLCB0ZXh0QWxpZ24s
IGxvZ2ljYWxMZWZ0LCBhdmFpbGFibGVMb2dpY2FsV2lkdGgsIHNlZ21lbnRTdGFydCwgdHJhaWxp
bmdTcGFjZVJ1biwgdGV4dEJveERhdGFNYXAsIHZlcnRpY2FsUG9zaXRpb25DYWNoZSwgd29yZE1l
YXN1cmVtZW50cyk7CisgICAgICAgICAgICBuZWVkc1dvcmRTcGFjaW5nID0gZmFsc2U7CisgICAg
ICAgICAgICBlbmRMb2dpY2FsUmlnaHQgPSBsaW5lQm94LT5wbGFjZUJveFJhbmdlSW5JbmxpbmVE
aXJlY3Rpb24oc2VnbWVudFN0YXJ0LT5tX2JveCwgbmV3U2VnbWVudFN0YXJ0ID8gbmV3U2VnbWVu
dFN0YXJ0LT5tX2JveCA6IDAsIGxvZ2ljYWxMZWZ0LCBtaW5Mb2dpY2FsTGVmdCwgbWF4TG9naWNh
bFJpZ2h0LCBuZWVkc1dvcmRTcGFjaW5nLCB0ZXh0Qm94RGF0YU1hcCk7CisgICAgICAgICAgICBp
ZiAoIW5ld1NlZ21lbnRTdGFydCB8fCAhbmV3U2VnbWVudFN0YXJ0LT5uZXh0KCkpCisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBBU1NFUlQobmV3U2VnbWVudFN0YXJ0LT5tX3N0
YXJ0c1NlZ21lbnQpOworICAgICAgICAgICAgLy8gRGlzY2FyZCB0aGUgZW1wdHkgc2VnbWVudCBz
dGFydCBtYXJrZXIgYmlkaSBydW5zCisgICAgICAgICAgICBzZWdtZW50U3RhcnQgPSBuZXdTZWdt
ZW50U3RhcnQtPm5leHQoKTsKKyAgICAgICAgfQorICAgICAgICBsaW5lQm94LT5lbmRQbGFjaW5n
Qm94UmFuZ2VzSW5JbmxpbmVEaXJlY3Rpb24oc3RhcnRMb2dpY2FsTGVmdCwgZW5kTG9naWNhbFJp
Z2h0LCBtaW5Mb2dpY2FsTGVmdCwgbWF4TG9naWNhbFJpZ2h0KTsKKyAgICAgICAgcmV0dXJuOwog
ICAgIH0KICNlbmRpZgotICAgIGZsb2F0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCA9IGxvZ2ljYWxS
aWdodCAtIGxvZ2ljYWxMZWZ0OworICAgIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCA9IGxpbmVMb2dp
Y2FsUmlnaHQgLSBsaW5lTG9naWNhbExlZnQ7CisgICAgY29tcHV0ZUlubGluZURpcmVjdGlvblBv
c2l0aW9uc0ZvclNlZ21lbnQobGluZUJveCwgbGluZUluZm8sIHRleHRBbGlnbiwgbGluZUxvZ2lj
YWxMZWZ0LCBhdmFpbGFibGVMb2dpY2FsV2lkdGgsIGZpcnN0UnVuLCAgdHJhaWxpbmdTcGFjZVJ1
biwgdGV4dEJveERhdGFNYXAsIHZlcnRpY2FsUG9zaXRpb25DYWNoZSwgd29yZE1lYXN1cmVtZW50
cyk7CisgICAgLy8gVGhlIHdpZHRocyBvZiBhbGwgcnVucyBhcmUgbm93IGtub3duLiBXZSBjYW4g
bm93IHBsYWNlIGV2ZXJ5IGlubGluZSBib3ggKGFuZAorICAgIC8vIGNvbXB1dGUgYWNjdXJhdGUg
d2lkdGhzIGZvciB0aGUgaW5saW5lIGZsb3cgYm94ZXMpLgorICAgIG5lZWRzV29yZFNwYWNpbmcg
PSBmYWxzZTsKKyAgICBsaW5lQm94LT5wbGFjZUJveGVzSW5JbmxpbmVEaXJlY3Rpb24obGluZUxv
Z2ljYWxMZWZ0LCBuZWVkc1dvcmRTcGFjaW5nLCB0ZXh0Qm94RGF0YU1hcCk7Cit9CiAKK0JpZGlS
dW4qIFJlbmRlckJsb2NrOjpjb21wdXRlSW5saW5lRGlyZWN0aW9uUG9zaXRpb25zRm9yU2VnbWVu
dChSb290SW5saW5lQm94KiBsaW5lQm94LCBjb25zdCBMaW5lSW5mbyYgbGluZUluZm8sIEVUZXh0
QWxpZ24gdGV4dEFsaWduLCBmbG9hdCYgbG9naWNhbExlZnQsCisgICAgZmxvYXQmIGF2YWlsYWJs
ZUxvZ2ljYWxXaWR0aCwgQmlkaVJ1biogZmlyc3RSdW4sIEJpZGlSdW4qIHRyYWlsaW5nU3BhY2VS
dW4sIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwJiB0ZXh0Qm94RGF0YU1hcCwgVmVy
dGljYWxQb3NpdGlvbkNhY2hlJiB2ZXJ0aWNhbFBvc2l0aW9uQ2FjaGUsCisgICAgV29yZE1lYXN1
cmVtZW50cyYgd29yZE1lYXN1cmVtZW50cykKK3sKICAgICBib29sIG5lZWRzV29yZFNwYWNpbmcg
PSBmYWxzZTsKICAgICBmbG9hdCB0b3RhbExvZ2ljYWxXaWR0aCA9IGxpbmVCb3gtPmdldEZsb3dT
cGFjaW5nTG9naWNhbFdpZHRoKCk7CiAgICAgdW5zaWduZWQgZXhwYW5zaW9uT3Bwb3J0dW5pdHlD
b3VudCA9IDA7CkBAIC05MDEsNyArOTQxLDExIEBAIHZvaWQgUmVuZGVyQmxvY2s6OmNvbXB1dGVJ
bmxpbmVEaXJlY3Rpb25Qb3NpdGlvbnNGb3JMaW5lKFJvb3RJbmxpbmVCb3gqIGxpbmVCb3gsCiAg
ICAgVmVjdG9yPHVuc2lnbmVkLCAxNj4gZXhwYW5zaW9uT3Bwb3J0dW5pdGllczsKICAgICBSZW5k
ZXJPYmplY3QqIHByZXZpb3VzT2JqZWN0ID0gMDsKIAotICAgIGZvciAoQmlkaVJ1biogciA9IGZp
cnN0UnVuOyByOyByID0gci0+bmV4dCgpKSB7CisgICAgQmlkaVJ1biogciA9IGZpcnN0UnVuOwor
ICAgIGZvciAoOyByOyByID0gci0+bmV4dCgpKSB7CisgICAgICAgIC8vIERvIG5vdCBwYXNzIHRo
ZSBtYXJrZXIgZm9yIHRoZSBuZXh0IHNlZ21lbnQKKyAgICAgICAgaWYgKHItPm1fc3RhcnRzU2Vn
bWVudCkKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBpZiAoIXItPm1fYm94IHx8IHItPm1f
b2JqZWN0LT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSB8fCByLT5tX2JveC0+aXNMaW5lQnJlYWso
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBQb3NpdGlvbmVkIG9iamVjdHMgYXJlIG9ubHkg
cGFydGljaXBhdGluZyB0byBmaWd1cmUgb3V0IHRoZWlyCiAgICAgICAgICAgICAgICAgICAgICAg
Ly8gY29ycmVjdCBzdGF0aWMgeCBwb3NpdGlvbi4gIFRoZXkgaGF2ZSBubyBlZmZlY3Qgb24gdGhl
IHdpZHRoLgpAQCAtOTUxLDEwICs5OTUsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpjb21wdXRlSW5s
aW5lRGlyZWN0aW9uUG9zaXRpb25zRm9yTGluZShSb290SW5saW5lQm94KiBsaW5lQm94LAogCiAg
ICAgY29tcHV0ZUV4cGFuc2lvbkZvckp1c3RpZmllZFRleHQoZmlyc3RSdW4sIHRyYWlsaW5nU3Bh
Y2VSdW4sIGV4cGFuc2lvbk9wcG9ydHVuaXRpZXMsIGV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQs
IHRvdGFsTG9naWNhbFdpZHRoLCBhdmFpbGFibGVMb2dpY2FsV2lkdGgpOwogCi0gICAgLy8gVGhl
IHdpZHRocyBvZiBhbGwgcnVucyBhcmUgbm93IGtub3duLiAgV2UgY2FuIG5vdyBwbGFjZSBldmVy
eSBpbmxpbmUgYm94IChhbmQKLSAgICAvLyBjb21wdXRlIGFjY3VyYXRlIHdpZHRocyBmb3IgdGhl
IGlubGluZSBmbG93IGJveGVzKS4KLSAgICBuZWVkc1dvcmRTcGFjaW5nID0gZmFsc2U7Ci0gICAg
bGluZUJveC0+cGxhY2VCb3hlc0luSW5saW5lRGlyZWN0aW9uKGxvZ2ljYWxMZWZ0LCBuZWVkc1dv
cmRTcGFjaW5nLCB0ZXh0Qm94RGF0YU1hcCk7CisgICAgcmV0dXJuIHI7CiB9CiAKIHZvaWQgUmVu
ZGVyQmxvY2s6OmNvbXB1dGVCbG9ja0RpcmVjdGlvblBvc2l0aW9uc0ZvckxpbmUoUm9vdElubGlu
ZUJveCogbGluZUJveCwgQmlkaVJ1biogZmlyc3RSdW4sIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFj
a0ZvbnRzTWFwJiB0ZXh0Qm94RGF0YU1hcCwKQEAgLTExMDEsMTMgKzExNDIsMTMgQEAgc3RhdGlj
IGlubGluZSBCaWRpU3RhdHVzIHN0YXR1c1dpdGhEaXJlY3Rpb24oVGV4dERpcmVjdGlvbiB0ZXh0
RGlyZWN0aW9uLCBib29sIGkKIH0KIAogLy8gRklYTUU6IEJpZGlSZXNvbHZlciBzaG91bGQgaGF2
ZSB0aGlzIGxvZ2ljLgotc3RhdGljIGlubGluZSB2b2lkIGNvbnN0cnVjdEJpZGlSdW5zKElubGlu
ZUJpZGlSZXNvbHZlciYgdG9wUmVzb2x2ZXIsIEJpZGlSdW5MaXN0PEJpZGlSdW4+JiBiaWRpUnVu
cywgY29uc3QgSW5saW5lSXRlcmF0b3ImIGVuZE9mTGluZSwgVmlzdWFsRGlyZWN0aW9uT3ZlcnJp
ZGUgb3ZlcnJpZGUsIGJvb2wgcHJldmlvdXNMaW5lQnJva2VDbGVhbmx5KQorc3RhdGljIGlubGlu
ZSB2b2lkIGNvbnN0cnVjdEJpZGlSdW5zRm9yU2VnbWVudChJbmxpbmVCaWRpUmVzb2x2ZXImIHRv
cFJlc29sdmVyLCBCaWRpUnVuTGlzdDxCaWRpUnVuPiYgYmlkaVJ1bnMsIGNvbnN0IElubGluZUl0
ZXJhdG9yJiBlbmRPZlJ1bnMsIFZpc3VhbERpcmVjdGlvbk92ZXJyaWRlIG92ZXJyaWRlLCBib29s
IHByZXZpb3VzTGluZUJyb2tlQ2xlYW5seSkKIHsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHBh
c3MgYSBCaWRpUnVuTGlzdCBpbnRvIGNyZWF0ZUJpZGlSdW5zRm9yTGluZSBpbnN0ZWFkCiAgICAg
Ly8gb2YgdGhlIHJlc29sdmVyIG93bmluZyB0aGUgcnVucy4KICAgICBBU1NFUlQoJnRvcFJlc29s
dmVyLnJ1bnMoKSA9PSAmYmlkaVJ1bnMpOwogICAgIFJlbmRlck9iamVjdCogY3VycmVudFJvb3Qg
PSB0b3BSZXNvbHZlci5wb3NpdGlvbigpLnJvb3QoKTsKLSAgICB0b3BSZXNvbHZlci5jcmVhdGVC
aWRpUnVuc0ZvckxpbmUoZW5kT2ZMaW5lLCBvdmVycmlkZSwgcHJldmlvdXNMaW5lQnJva2VDbGVh
bmx5KTsKKyAgICB0b3BSZXNvbHZlci5jcmVhdGVCaWRpUnVuc0ZvckxpbmUoZW5kT2ZSdW5zLCBv
dmVycmlkZSwgcHJldmlvdXNMaW5lQnJva2VDbGVhbmx5KTsKIAogICAgIHdoaWxlICghdG9wUmVz
b2x2ZXIuaXNvbGF0ZWRSdW5zKCkuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIEl0IGRvZXMgbm90
IG1hdHRlciB3aGljaCBvcmRlciB3ZSByZXNvbHZlIHRoZSBydW5zIGFzIGxvbmcgYXMgd2UgcmVz
b2x2ZSB0aGVtIGFsbC4KQEAgLTExNDcsNyArMTE4OCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBj
b25zdHJ1Y3RCaWRpUnVucyhJbmxpbmVCaWRpUmVzb2x2ZXImIHRvcFJlc29sdmVyLCBCaWRpUnVu
TGlzCiAgICAgICAgIC8vIFdlIHN0b3AgYXQgdGhlIG5leHQgZW5kIG9mIGxpbmU7IHdlIG1heSBy
ZS1lbnRlciB0aGlzIGlzb2xhdGUgaW4gdGhlIG5leHQgY2FsbCB0byBjb25zdHJ1Y3RCaWRpUnVu
cygpLgogICAgICAgICAvLyBGSVhNRTogV2hhdCBzaG91bGQgZW5kIGFuZCBwcmV2aW91c0xpbmVC
cm9rZUNsZWFubHkgYmU/CiAgICAgICAgIC8vIHJuaXdhIHNheXMgcHJldmlvdXNMaW5lQnJva2VD
bGVhbmx5IGlzIGp1c3QgYSBXaW5JRSBoYWNrIGFuZCBjb3VsZCBhbHdheXMgYmUgZmFsc2UgaGVy
ZT8KLSAgICAgICAgaXNvbGF0ZWRSZXNvbHZlci5jcmVhdGVCaWRpUnVuc0ZvckxpbmUoZW5kT2ZM
aW5lLCBOb1Zpc3VhbE92ZXJyaWRlLCBwcmV2aW91c0xpbmVCcm9rZUNsZWFubHkpOworICAgICAg
ICBpc29sYXRlZFJlc29sdmVyLmNyZWF0ZUJpZGlSdW5zRm9yTGluZShlbmRPZlJ1bnMsIE5vVmlz
dWFsT3ZlcnJpZGUsIHByZXZpb3VzTGluZUJyb2tlQ2xlYW5seSk7CiAgICAgICAgIC8vIE5vdGUg
dGhhdCB3ZSBkbyBub3QgZGVsZXRlIHRoZSBydW5zIGZyb20gdGhlIHJlc29sdmVyLgogICAgICAg
ICAvLyBXZSdyZSBub3QgZ3VhcmFudGVlZCB0byBnZXQgYW55IEJpZGlSdW5zIGluIHRoZSBwcmV2
aW91cyBzdGVwLiBJZiB3ZSBkb24ndCwgd2UgYWxsb3cgdGhlIHBsYWNlaG9sZGVyCiAgICAgICAg
IC8vIGl0c2VsZiB0byBiZSB0dXJuZWQgaW50byBhbiBJbmxpbmVCb3guIFdlIGNhbid0IHJlbW92
ZSBpdCBoZXJlIHdpdGhvdXQgcG90ZW50aWFsbHkgbG9zaW5nIHRyYWNrIG9mCkBAIC0xMTY0LDYg
KzEyMDUsMzcgQEAgc3RhdGljIGlubGluZSB2b2lkIGNvbnN0cnVjdEJpZGlSdW5zKElubGluZUJp
ZGlSZXNvbHZlciYgdG9wUmVzb2x2ZXIsIEJpZGlSdW5MaXMKICAgICB9CiB9CiAKK3N0YXRpYyBp
bmxpbmUgdm9pZCBjb25zdHJ1Y3RCaWRpUnVuc0ZvckxpbmUoY29uc3QgUmVuZGVyQmxvY2sqIGJs
b2NrLCBJbmxpbmVCaWRpUmVzb2x2ZXImIHRvcFJlc29sdmVyLCBCaWRpUnVuTGlzdDxCaWRpUnVu
PiYgYmlkaVJ1bnMsIGNvbnN0IElubGluZUl0ZXJhdG9yJiBlbmRPZkxpbmUsIFZpc3VhbERpcmVj
dGlvbk92ZXJyaWRlIG92ZXJyaWRlLCBib29sIHByZXZpb3VzTGluZUJyb2tlQ2xlYW5seSkKK3sK
KyNpZiAhRU5BQkxFKENTU19FWENMVVNJT05TKQorICAgIGNvbnN0cnVjdEJpZGlSdW5zRm9yU2Vn
bWVudCh0b3BSZXNvbHZlciwgYmlkaVJ1bnMsIGVuZE9mTGluZSwgb3ZlcnJpZGUsIHByZXZpb3Vz
TGluZUJyb2tlQ2xlYW5seSk7CisjZWxzZQorICAgIEV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbyog
ZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvID0gbGF5b3V0RXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZv
KGJsb2NrKTsKKyAgICBpZiAoIWV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbyB8fCAhZXhjbHVzaW9u
U2hhcGVJbnNpZGVJbmZvLT5oYXNTZWdtZW50cygpKSB7CisgICAgICAgIGNvbnN0cnVjdEJpZGlS
dW5zRm9yU2VnbWVudCh0b3BSZXNvbHZlciwgYmlkaVJ1bnMsIGVuZE9mTGluZSwgb3ZlcnJpZGUs
IHByZXZpb3VzTGluZUJyb2tlQ2xlYW5seSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBjb25zdCBTZWdtZW50UmFuZ2VMaXN0JiBzZWdtZW50UmFuZ2VzID0gZXhjbHVzaW9uU2hhcGVJ
bnNpZGVJbmZvLT5zZWdtZW50UmFuZ2VzKCk7CisgICAgQVNTRVJUKHNlZ21lbnRSYW5nZXMuc2l6
ZSgpKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2VnbWVudFJhbmdlcy5zaXplKCk7
IGkrKykgeworICAgICAgICBJbmxpbmVJdGVyYXRvciBzZWdtZW50U3RhcnQgPSBzZWdtZW50UmFu
Z2VzW2ldLnN0YXJ0OworICAgICAgICBJbmxpbmVJdGVyYXRvciBzZWdtZW50RW5kID0gc2VnbWVu
dFJhbmdlc1tpXS5lbmQ7CisgICAgICAgIGlmIChpKSB7CisgICAgICAgICAgICBBU1NFUlQoc2Vn
bWVudFN0YXJ0Lm1fb2JqKTsKKyAgICAgICAgICAgIEJpZGlSdW4qIHNlZ21lbnRNYXJrZXIgPSBj
cmVhdGVSdW4oc2VnbWVudFN0YXJ0Lm1fcG9zLCBzZWdtZW50U3RhcnQubV9wb3MsIHNlZ21lbnRT
dGFydC5tX29iaiwgdG9wUmVzb2x2ZXIpOworICAgICAgICAgICAgc2VnbWVudE1hcmtlci0+bV9z
dGFydHNTZWdtZW50ID0gdHJ1ZTsKKyAgICAgICAgICAgIGJpZGlSdW5zLmFkZFJ1bihzZWdtZW50
TWFya2VyKTsKKyAgICAgICAgICAgIC8vIERvIG5vdCBjb2xsYXBzZSBtaWRwb2ludHMgYmV0d2Vl
biBzZWdtZW50cworICAgICAgICAgICAgdG9wUmVzb2x2ZXIubWlkcG9pbnRTdGF0ZSgpLmJldHdl
ZW5NaWRwb2ludHMgPSBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICB0b3BSZXNvbHZlci5zZXRQ
b3NpdGlvbihzZWdtZW50U3RhcnQsIG51bWJlck9mSXNvbGF0ZUFuY2VzdG9ycyhzZWdtZW50U3Rh
cnQpKTsKKyAgICAgICAgY29uc3RydWN0QmlkaVJ1bnNGb3JTZWdtZW50KHRvcFJlc29sdmVyLCBi
aWRpUnVucywgc2VnbWVudEVuZCwgb3ZlcnJpZGUsIHByZXZpb3VzTGluZUJyb2tlQ2xlYW5seSk7
CisgICAgfQorI2VuZGlmCit9CisKIC8vIFRoaXMgZnVuY3Rpb24gY29uc3RydWN0cyBsaW5lIGJv
eGVzIGZvciBhbGwgb2YgdGhlIHRleHQgcnVucyBpbiB0aGUgcmVzb2x2ZXIgYW5kIGNvbXB1dGVz
IHRoZWlyIHBvc2l0aW9uLgogUm9vdElubGluZUJveCogUmVuZGVyQmxvY2s6OmNyZWF0ZUxpbmVC
b3hlc0Zyb21CaWRpUnVucyhCaWRpUnVuTGlzdDxCaWRpUnVuPiYgYmlkaVJ1bnMsIGNvbnN0IElu
bGluZUl0ZXJhdG9yJiBlbmQsIExpbmVJbmZvJiBsaW5lSW5mbywgVmVydGljYWxQb3NpdGlvbkNh
Y2hlJiB2ZXJ0aWNhbFBvc2l0aW9uQ2FjaGUsIEJpZGlSdW4qIHRyYWlsaW5nU3BhY2VSdW4sIFdv
cmRNZWFzdXJlbWVudHMmIHdvcmRNZWFzdXJlbWVudHMpCiB7CkBAIC0xNDYxLDcgKzE1MzMsNyBA
QCB2b2lkIFJlbmRlckJsb2NrOjpsYXlvdXRSdW5zQW5kRmxvYXRzSW5SYW5nZShMaW5lTGF5b3V0
U3RhdGUmIGxheW91dFN0YXRlLCBJbmxpbgogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8g
RklYTUU6IFRoaXMgb3duZXJzaGlwIGlzIHJldmVyc2VkLiBXZSBzaG91bGQgb3duIHRoZSBCaWRp
UnVuTGlzdCBhbmQgcGFzcyBpdCB0byBjcmVhdGVCaWRpUnVuc0ZvckxpbmUuCiAgICAgICAgICAg
ICBCaWRpUnVuTGlzdDxCaWRpUnVuPiYgYmlkaVJ1bnMgPSByZXNvbHZlci5ydW5zKCk7Ci0gICAg
ICAgICAgICBjb25zdHJ1Y3RCaWRpUnVucyhyZXNvbHZlciwgYmlkaVJ1bnMsIGVuZCwgb3ZlcnJp
ZGUsIGxheW91dFN0YXRlLmxpbmVJbmZvKCkucHJldmlvdXNMaW5lQnJva2VDbGVhbmx5KCkpOwor
ICAgICAgICAgICAgY29uc3RydWN0QmlkaVJ1bnNGb3JMaW5lKHRoaXMsIHJlc29sdmVyLCBiaWRp
UnVucywgZW5kLCBvdmVycmlkZSwgbGF5b3V0U3RhdGUubGluZUluZm8oKS5wcmV2aW91c0xpbmVC
cm9rZUNsZWFubHkoKSk7CiAgICAgICAgICAgICBBU1NFUlQocmVzb2x2ZXIucG9zaXRpb24oKSA9
PSBlbmQpOwogCiAgICAgICAgICAgICBCaWRpUnVuKiB0cmFpbGluZ1NwYWNlUnVuID0gIWxheW91
dFN0YXRlLmxpbmVJbmZvKCkucHJldmlvdXNMaW5lQnJva2VDbGVhbmx5KCkgPyBoYW5kbGVUcmFp
bGluZ1NwYWNlcyhiaWRpUnVucywgcmVzb2x2ZXIuY29udGV4dCgpKSA6IDA7CkBAIC0yMzE0LDYg
KzIzODYsNDggQEAgdm9pZCBSZW5kZXJCbG9jazo6TGluZUJyZWFrZXI6OnJlc2V0KCkKIAogSW5s
aW5lSXRlcmF0b3IgUmVuZGVyQmxvY2s6OkxpbmVCcmVha2VyOjpuZXh0TGluZUJyZWFrKElubGlu
ZUJpZGlSZXNvbHZlciYgcmVzb2x2ZXIsIExpbmVJbmZvJiBsaW5lSW5mbywgUmVuZGVyVGV4dElu
Zm8mIHJlbmRlclRleHRJbmZvLCBGbG9hdGluZ09iamVjdCogbGFzdEZsb2F0RnJvbVByZXZpb3Vz
TGluZSwgdW5zaWduZWQgY29uc2VjdXRpdmVIeXBoZW5hdGVkTGluZXMsIFdvcmRNZWFzdXJlbWVu
dHMmIHdvcmRNZWFzdXJlbWVudHMpCiB7CisjaWYgIUVOQUJMRShDU1NfRVhDTFVTSU9OUykKKyAg
ICByZXR1cm4gbmV4dFNlZ21lbnRCcmVhayhyZXNvbHZlciwgbGluZUluZm8sIHJlbmRlclRleHRJ
bmZvLCBsYXN0RmxvYXRGcm9tUHJldmlvdXNMaW5lLCBjb25zZWN1dGl2ZUh5cGhlbmF0ZWRMaW5l
cywgd29yZE1lYXN1cmVtZW50cyk7CisjZWxzZQorICAgIEV4Y2x1c2lvblNoYXBlSW5zaWRlSW5m
byogZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvID0gbGF5b3V0RXhjbHVzaW9uU2hhcGVJbnNpZGVJ
bmZvKG1fYmxvY2spOworICAgIGlmICghZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvIHx8ICFleGNs
dXNpb25TaGFwZUluc2lkZUluZm8tPmhhc1NlZ21lbnRzKCkpCisgICAgICAgIHJldHVybiBuZXh0
U2VnbWVudEJyZWFrKHJlc29sdmVyLCBsaW5lSW5mbywgcmVuZGVyVGV4dEluZm8sIGxhc3RGbG9h
dEZyb21QcmV2aW91c0xpbmUsIGNvbnNlY3V0aXZlSHlwaGVuYXRlZExpbmVzLCB3b3JkTWVhc3Vy
ZW1lbnRzKTsKKworICAgIElubGluZUl0ZXJhdG9yIGVuZCA9IHJlc29sdmVyLnBvc2l0aW9uKCk7
CisgICAgSW5saW5lSXRlcmF0b3Igb2xkRW5kID0gZW5kOworCisgICAgY29uc3QgU2VnbWVudExp
c3QmIHNlZ21lbnRzID0gZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLT5zZWdtZW50cygpOworICAg
IFNlZ21lbnRSYW5nZUxpc3QmIHNlZ21lbnRSYW5nZXMgPSBleGNsdXNpb25TaGFwZUluc2lkZUlu
Zm8tPnNlZ21lbnRSYW5nZXMoKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzZWdt
ZW50cy5zaXplKCk7IGkrKykgeworICAgICAgICBJbmxpbmVJdGVyYXRvciBzZWdtZW50U3RhcnQg
PSByZXNvbHZlci5wb3NpdGlvbigpOworICAgICAgICBlbmQgPSBuZXh0U2VnbWVudEJyZWFrKHJl
c29sdmVyLCBsaW5lSW5mbywgcmVuZGVyVGV4dEluZm8sIGxhc3RGbG9hdEZyb21QcmV2aW91c0xp
bmUsIGNvbnNlY3V0aXZlSHlwaGVuYXRlZExpbmVzLCB3b3JkTWVhc3VyZW1lbnRzKTsKKworICAg
ICAgICBBU1NFUlQoc2VnbWVudFJhbmdlcy5zaXplKCkgPT0gaSk7CisgICAgICAgIGlmIChyZXNv
bHZlci5wb3NpdGlvbigpID09IGVuZCkgeworICAgICAgICAgICAgLy8gTm90aGluZyBmaXQgdGhp
cyBzZWdtZW50CisgICAgICAgICAgICBzZWdtZW50UmFuZ2VzLmFwcGVuZChMaW5lU2VnbWVudFJh
bmdlKHNlZ21lbnRTdGFydCwgc2VnbWVudFN0YXJ0KSk7CisgICAgICAgICAgICByZXNvbHZlci5z
ZXRQb3NpdGlvbklnbm9yaW5nTmVzdGVkSXNvbGF0ZXMoc2VnbWVudFN0YXJ0KTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIC8vIE5vdGUgdGhhdCByZXNvbHZlci5wb3NpdGlvbiBpcyBh
bHJlYWR5IHNraXBwaW5nIHNvbWUgb2YgdGhlIHdoaXRlIHNwYWNlIGF0IHRoZSBiZWdpbm5pbmcg
b2YgdGhlIGxpbmUsCisgICAgICAgICAgICAvLyBzbyB0aGF0J3Mgd2h5IHNlZ21lbnRTdGFydCBt
aWdodCBiZSBkaWZmZXJlbnQgdGhhbiByZXNvbHZlci5wb3NpdGlvbigpLgorICAgICAgICAgICAg
TGluZVNlZ21lbnRSYW5nZSByYW5nZShyZXNvbHZlci5wb3NpdGlvbigpLCBlbmQpOworICAgICAg
ICAgICAgc2VnbWVudFJhbmdlcy5hcHBlbmQocmFuZ2UpOworICAgICAgICAgICAgcmVzb2x2ZXIu
c2V0UG9zaXRpb24oZW5kLCBudW1iZXJPZklzb2xhdGVBbmNlc3RvcnMoZW5kKSk7CisKKyAgICAg
ICAgICAgIGlmIChsaW5lSW5mby5wcmV2aW91c0xpbmVCcm9rZUNsZWFubHkoKSkgeworICAgICAg
ICAgICAgICAgIC8vIElmIHdlIGhpdCBhIG5ldyBsaW5lIGJyZWFrLCBqdXN0IHN0b3AgYWRkaW5n
IGFueXRoaW5nIHRvIHRoaXMgbGluZS4KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXNvbHZlci5zZXRQb3NpdGlvbklnbm9yaW5n
TmVzdGVkSXNvbGF0ZXMob2xkRW5kKTsKKyAgICByZXR1cm4gZW5kOworI2VuZGlmCit9CisKK0lu
bGluZUl0ZXJhdG9yIFJlbmRlckJsb2NrOjpMaW5lQnJlYWtlcjo6bmV4dFNlZ21lbnRCcmVhayhJ
bmxpbmVCaWRpUmVzb2x2ZXImIHJlc29sdmVyLCBMaW5lSW5mbyYgbGluZUluZm8sIFJlbmRlclRl
eHRJbmZvJiByZW5kZXJUZXh0SW5mbywgRmxvYXRpbmdPYmplY3QqIGxhc3RGbG9hdEZyb21QcmV2
aW91c0xpbmUsIHVuc2lnbmVkIGNvbnNlY3V0aXZlSHlwaGVuYXRlZExpbmVzLCBXb3JkTWVhc3Vy
ZW1lbnRzJiB3b3JkTWVhc3VyZW1lbnRzKQorewogICAgIHJlc2V0KCk7CiAKICAgICBBU1NFUlQo
cmVzb2x2ZXIucG9zaXRpb24oKS5yb290KCkgPT0gbV9ibG9jayk7CkBAIC0yODk1LDYgKzMwMDks
OCBAQCBJbmxpbmVJdGVyYXRvciBSZW5kZXJCbG9jazo6TGluZUJyZWFrZXI6Om5leHRMaW5lQnJl
YWsoSW5saW5lQmlkaVJlc29sdmVyJiByZXNvbAogICAgICAgICB9CiAgICAgfQogCisgICAgLy8g
RklYTUUgQnVnIDEwMDA0OTogV2UgZG8gbm90IG5lZWQgdG8gY29uc3VtZSBpbnB1dCBpbiBhIG11
bHRpLXNlZ21lbnQgbGluZQorICAgIC8vIHVubGVzcyBubyBzZWdtZW50IHdpbGwuCiAgICAgLy8g
bWFrZSBzdXJlIHdlIGNvbnN1bWUgYXQgbGVhc3Qgb25lIGNoYXIvb2JqZWN0LgogICAgIGlmIChs
QnJlYWsgPT0gcmVzb2x2ZXIucG9zaXRpb24oKSkKICAgICAgICAgbEJyZWFrLmluY3JlbWVudCgp
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDcyOTIwZDZjYWYzMTNiOWE5Yjg3YmI3Y2UyM2MyMjY3NjY1NWZjZWIuLjk4NmQx
OWFmOTY0Y2JmYTQyYzc0ZGZkOTJjMjg4NDM3ZDllYTFiZmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBA
QAorMjAxMi0xMC0zMSAgQmVhciBUcmF2aXMgIDxiZXRyYXZpc0BhZG9iZS5jb20+CisKKyAgICAg
ICAgW0NTUyBFeGNsdXNpb25zXSBFbmFibGUgc2hhcGUtaW5zaWRlIGZvciBtdWx0aXBsZS1zZWdt
ZW50IHBvbHlnb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05MTg3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZGluZyBhIHNpbXBsZSB0ZXN0IHRvIGVuc3VyZSBtdWx0aXBsZSBzZWdtZW50cyBmdW5j
dGlvbmFsaXR5IGlzIHdvcmtpbmcuIEFkZGl0aW9uYWwKKyAgICAgICAgdGVzdGluZyB3aWxsIGZv
bGxvdyBpbiBzdWJzZXF1ZW50IHBhdGNoZXMuCisKKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMv
c2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDEtZXhwZWN0ZWQu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFw
ZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAxLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNlZ21lbnRz
LTAwMi1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hh
cGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDIuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtbXVs
dGlwbGUtc2VnbWVudHMtMDAzLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNlZ21lbnRzLTAw
My5odG1sOiBBZGRlZC4KKworCiAyMDEyLTEwLTMxICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgW1Y4XSBHYXJiYWdlIGNvbGxlY3Rpb24gc2hvdWxkIHVzZSBvcGFx
dWUgcm9vdHMgcmF0aGVyIHRoYW4gaW1wbGljaXQgcmVmZXJlbmNlcwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3Jlc291cmNlcy9tdWx0aS1zZWdtZW50LXBvbHlnb24u
anMgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvcmVzb3VyY2VzL211bHRpLXNlZ21lbnQt
cG9seWdvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YmM2ODUwZWY3NTVkM2IwYTI2OGY4ZjA2M2ZiNmYzMTVk
NjJkZGU1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3Jl
c291cmNlcy9tdWx0aS1zZWdtZW50LXBvbHlnb24uanMKQEAgLTAsMCArMSwzNCBAQAorZnVuY3Rp
b24gZ2VuZXJhdGVQb2x5Z29uKHdpZHRoLCBoZWlnaHQsIGZvbnRTaXplLCBwb2ludHMsIGNvbnRl
bnQpIHsKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgd2luZG93LmludGVybmFs
cy5zZXR0aW5ncy5zZXRDU1NFeGNsdXNpb25zRW5hYmxlZCh0cnVlKTsKKyAgICB2YXIgZGl2ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgdmFyIHBvbHlnb24gPSBwb2ludHMu
bWFwKGZ1bmN0aW9uKGVsZW0sIGluZGV4LCBhcnJheSkgeworICAgICAgICByZXR1cm4gZWxlbS50
b1N0cmluZygpICsgJ3B4JyArIChpbmRleCA8IGFycmF5Lmxlbmd0aCAtIDEgJiYgaW5kZXggJSAy
ID09IDEgPyAnLCcgOiAnJyk7CisgICAgfSkuam9pbignICcpOworICAgIHBvbHlnb24gPSAncG9s
eWdvbignICsgcG9seWdvbiArICcpJzsKKyAgICBkaXYuc3R5bGUuc2V0UHJvcGVydHkoJy13ZWJr
aXQtc2hhcGUtaW5zaWRlJywgcG9seWdvbik7CisgICAgZGl2LnN0eWxlLnNldFByb3BlcnR5KCd3
aWR0aCcsIHdpZHRoICsgJ3B4Jyk7CisgICAgZGl2LnN0eWxlLnNldFByb3BlcnR5KCdoZWlnaHQn
LCBoZWlnaHQgKyAncHgnKTsKKyAgICBkaXYuc3R5bGUuc2V0UHJvcGVydHkoJ2ZvbnQnLCBmb250
U2l6ZSArICdweC8xIEFoZW0sIHNhbnMtc2VyaWYnKTsKKyAgICBkaXYuc3R5bGUuc2V0UHJvcGVy
dHkoJ2NvbG9yJywgJ2dyZWVuJyk7CisgICAgZGl2LnN0eWxlLnNldFByb3BlcnR5KCd3b3JkLXdy
YXAnLCAnYnJlYWstd29yZCcpOworICAgIGRpdi5pbm5lckhUTUwgPSBjb250ZW50OworICAgIGlm
IChkb2N1bWVudC5ib2R5LmNoaWxkTm9kZXMubGVuZ3RoKQorICAgICAgICBkb2N1bWVudC5ib2R5
Lmluc2VydEJlZm9yZShkaXYsIGRvY3VtZW50LmJvZHkuY2hpbGROb2Rlc1swXSk7CisgICAgZWxz
ZQorICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRpdik7Cit9CisKK2Z1bmN0aW9u
IHNpbXVsYXRlV2l0aFRleHQod2lkdGgsIGhlaWdodCwgZm9udFNpemUsIGNvbnRlbnQpIHsKKyAg
ICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgZGl2LnN0eWxl
LnNldFByb3BlcnR5KCd3aWR0aCcsIHdpZHRoICsgJ3B4Jyk7CisgICAgZGl2LnN0eWxlLnNldFBy
b3BlcnR5KCdoZWlnaHQnLCBoZWlnaHQgKyAncHgnKTsKKyAgICBkaXYuc3R5bGUuc2V0UHJvcGVy
dHkoJ2ZvbnQnLCBmb250U2l6ZSArICdweC8xIEFoZW0sIHNhbnMtc2VyaWYnKTsKKyAgICBkaXYu
c3R5bGUuc2V0UHJvcGVydHkoJ2NvbG9yJywgJ2dyZWVuJyk7CisgICAgZGl2LmlubmVySFRNTCA9
IGNvbnRlbnQ7CisgICAgaWYgKGRvY3VtZW50LmJvZHkuY2hpbGROb2Rlcy5sZW5ndGgpCisgICAg
ICAgIGRvY3VtZW50LmJvZHkuaW5zZXJ0QmVmb3JlKGRpdiwgZG9jdW1lbnQuYm9keS5jaGlsZE5v
ZGVzWzBdKTsKKyAgICBlbHNlCisgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGl2
KTsKKworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWlu
c2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAxLWV4cGVjdGVkLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0
aXBsZS1zZWdtZW50cy0wMDEtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMTg5ZTNmNDI4Nzg0
YWE1YzIyYWJlMzBlM2UwZTZlNGNkNTUzYjVhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUtc2Vn
bWVudHMtMDAxLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSw5IEBACis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCBzcmM9Jy4uL3Jlc291cmNlcy9tdWx0aS1zZWdtZW50LXBvbHlnb24uanMnPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJzaW11bGF0ZVdpdGhUZXh0KDI1MCwgMTAwLCA1
MCwgJ1hYIFhYIFhYWFhYJykiPgorVGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBBaGVtIGZvbnQsIGFu
ZCBzaG91bGQgZGlzcGxheSBhIDV4MiBncmlkIG9mIGdyZWVuIHNxdWFyZXMsIHdpdGggb25lIG1p
c3NpbmcgaW4gdGhlIGNlbnRlciBvZiB0aGUgdG9wIHJvdy4KK0l0IHRlc3RzIHRoYXQgYSBsaW5l
IG1heSBjb250YWluIG11bHRpcGxlIHNlZ21lbnRzIG9mIHRleHQuCis8L2JvZHk+Cis8L2h0bWw+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMt
MDAxLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBl
LWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYjZlNmUxZDg4
YzdkZWRiOWUzZWRkMzMxZTM2MTZlZTA5N2ZiZmUzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUt
c2VnbWVudHMtMDAxLmh0bWwKQEAgLTAsMCArMSw5IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCBzcmM9Jy4uL3Jlc291cmNlcy9tdWx0aS1zZWdtZW50LXBvbHlnb24uanMnPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHkgb25sb2FkPSJnZW5lcmF0ZVBvbHlnb24oMjUwLCAxMDAsIDUwLCBbMCww
LDEwMCwwLDEwMCwyNSwxNTAsMjUsMTUwLDAsMjUwLDAsMjUwLDEwMCwwLDEwMF0sICdYWFhYWFhY
WFgnKSI+CitUaGlzIHRlc3QgcmVxdWlyZXMgdGhlIEFoZW0gZm9udCwgYW5kIHNob3VsZCBkaXNw
bGF5IGEgNXgyIGdyaWQgb2YgZ3JlZW4gc3F1YXJlcywgd2l0aCBvbmUgbWlzc2luZyBpbiB0aGUg
Y2VudGVyIG9mIHRoZSB0b3Agcm93LgorSXQgdGVzdHMgdGhhdCBhIGxpbmUgbWF5IGNvbnRhaW4g
bXVsdGlwbGUgc2VnbWVudHMgb2YgdGV4dC4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMv
c2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDItZXhwZWN0ZWQu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5z
aWRlLW11bHRpcGxlLXNlZ21lbnRzLTAwMi1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE2YmRh
ZTJiYjhjYTE1MGE2OGRhZGI4M2NlMmM0MTI5N2Y4Y2VkMDUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0
aXBsZS1zZWdtZW50cy0wMDItZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDkgQEAKKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0nLi4vcmVzb3VyY2VzL211bHRpLXNlZ21lbnQtcG9seWdvbi5q
cyc+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InNpbXVsYXRlV2l0aFRleHQoMjUw
LCAxMDAsIDUwLCAnWFhYWFggWFggWFgnKSI+CitUaGlzIHRlc3QgcmVxdWlyZXMgdGhlIEFoZW0g
Zm9udCwgYW5kIHNob3VsZCBkaXNwbGF5IGEgNXgyIGdyaWQgb2YgZ3JlZW4gc3F1YXJlcywgd2l0
aCBvbmUgbWlzc2luZyBpbiB0aGUgY2VudGVyIG9mIHRoZSBib3R0b20gcm93LgorSXQgdGVzdHMg
dGhhdCBhIGxpbmUgbWF5IGNvbnRhaW4gbXVsdGlwbGUgc2VnbWVudHMgb2YgdGV4dC4KKzwvYm9k
eT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBs
ZS1zZWdtZW50cy0wMDIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1p
bnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNlZ21lbnRzLTAwMi5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjY1MTFiNjlmZDcxNzI2NjBhYmFkMjU0OTY5MzM3Yjk0ZWMzZTViYWUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lk
ZS1tdWx0aXBsZS1zZWdtZW50cy0wMDIuaHRtbApAQCAtMCwwICsxLDkgQEAKKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0nLi4vcmVzb3VyY2VzL211bHRpLXNlZ21lbnQtcG9seWdvbi5qcyc+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9ImdlbmVyYXRlUG9seWdvbigyNTAsIDEw
MCwgNTAsIFswLDAsMjUwLDAsMjUwLDEwMSwxNTAsMTAxLDE1MCw3NSwxMDAsNzUsMTAwLDEwMSww
LDEwMV0sICdYWFhYWFhYWFgnKSI+CitUaGlzIHRlc3QgcmVxdWlyZXMgdGhlIEFoZW0gZm9udCwg
YW5kIHNob3VsZCBkaXNwbGF5IGEgNXgyIGdyaWQgb2YgZ3JlZW4gc3F1YXJlcywgd2l0aCBvbmUg
bWlzc2luZyBpbiB0aGUgY2VudGVyIG9mIHRoZSBib3R0b20gcm93LgorSXQgdGVzdHMgdGhhdCBh
IGxpbmUgbWF5IGNvbnRhaW4gbXVsdGlwbGUgc2VnbWVudHMgb2YgdGV4dC4KKzwvYm9keT4KKzwv
aHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1zZWdt
ZW50cy0wMDMtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFw
ZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNlZ21lbnRzLTAwMy1leHBlY3RlZC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjA1NTFkNWNmMTlkZGE2MWNkY2FiNGNmNDJmMTNkNjJiMWY4NWVhNjAKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRl
L3NoYXBlLWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDMtZXhwZWN0ZWQuaHRtbApAQCAtMCww
ICsxLDkgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0nLi4vcmVzb3VyY2VzL211bHRp
LXNlZ21lbnQtcG9seWdvbi5qcyc+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InNp
bXVsYXRlV2l0aFRleHQoMjUwLCAxMDAsIDUwLCAnWFg8YnIvPlhYJykiPgorVGhpcyB0ZXN0IHJl
cXVpcmVzIHRoZSBBaGVtIGZvbnQsIGFuZCBzaG91bGQgZGlzcGxheSBhIDJ4MiBncmVlbiBzcXVh
cmUuCitJdCB0ZXN0cyB0aGF0IGEgbGluZSBicmVhayBtb3ZlcyB0ZXh0IGRvd24sIG5vdCBqdXN0
IHRvIHRoZSBuZXh0IHNlZ21lbnQuCis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBl
LWluc2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAzLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1z
ZWdtZW50cy0wMDMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNTE1OTgyODIwZDBlYTJmMzM1MjUxZWYzNDc0
ZGE0MDEyMDNlNjg5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNp
b25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAzLmh0bWwK
QEAgLTAsMCArMSw5IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Jy4uL3Jlc291cmNl
cy9tdWx0aS1zZWdtZW50LXBvbHlnb24uanMnPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25s
b2FkPSJnZW5lcmF0ZVBvbHlnb24oMjUwLCAxMDAsIDUwLCBbMCwwLDEwMCwwLDEwMCwyNSwxNTAs
MjUsMTUwLDAsMjUwLDAsMjUwLDEwMCwwLDEwMF0sICdYWDxici8+WFgnKSI+CitUaGlzIHRlc3Qg
cmVxdWlyZXMgdGhlIEFoZW0gZm9udCwgYW5kIHNob3VsZCBkaXNwbGF5IGEgMngyIGdyZWVuIHNx
dWFyZS4KK0l0IHRlc3RzIHRoYXQgYSBsaW5lIGJyZWFrIG1vdmVzIHRleHQgZG93biwgbm90IGp1
c3QgdG8gdGhlIG5leHQgc2VnbWVudC4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172132</attachid>
            <date>2012-11-02 13:59:48 -0700</date>
            <delta_ts>2012-11-12 14:23:06 -0800</delta_ts>
            <desc>Including span tests</desc>
            <filename>bug-91878-20121102135807.patch</filename>
            <type>text/plain</type>
            <size>44046</size>
            <attacher name="Bear Travis">betravis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzMzM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTcyYTNjYjMzMjlhMmQ0
MDFhM2YxZTg1YzZiNWFhZGM4MGQzZTM3Mi4uZjdhYTk0NzRlODRjNjA3NDQzNTZiMmM5ZDk5NTNi
YWNhMDVmMjlmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDEyLTExLTAyICBCZWFy
IFRyYXZpcyAgPGJldHJhdmlzQGFkb2JlLmNvbT4KKworICAgICAgICBbQ1NTIEV4Y2x1c2lvbnNd
IEVuYWJsZSBzaGFwZS1pbnNpZGUgZm9yIG11bHRpcGxlLXNlZ21lbnQgcG9seWdvbnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxODc4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGF0Y2ggYWRkaW5nIHN1
cHBvcnQgZm9yIG11bHRpcGxlLXNlZ21lbnQgcG9seWdvbnMgZm9yIHNoYXBlLWluc2lkZXMgZnJv
bQorICAgICAgICB0aGUgQ1NTIEV4Y2x1c2lvbnMgc3BlY2lmaWNhdGlvbi4gVGhlIGxheW91dCBj
b2RlIGhhcyBiZWVuIG1vZGlmaWVkIHRvIGZpcnN0CisgICAgICAgIHN1cHBvcnQgZGl2aWRpbmcg
dGV4dCBpbnRvIG11bHRpcGxlIHNlZ21lbnRzIHBlciBsaW5lLCBhbmQgdGhlbiB0byBsYXkgb3V0
CisgICAgICAgIG11bHRpcGxlIHNlZ21lbnRzIHBlciBsaW5lIGJveC4KKworICAgICAgICBUZXN0
czogIGZhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNl
Z21lbnRzLTAwMS5odG1sCisgICAgICAgICAgICAgICAgZmFzdC9leGNsdXNpb25zL3NoYXBlLWlu
c2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAyLmh0bWwKKyAgICAgICAgICAg
ICAgICBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1z
ZWdtZW50cy0wMDMuaHRtbAorICAgICAgICAgICAgICAgIGZhc3QvZXhjbHVzaW9ucy9zaGFwZS1p
bnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNlZ21lbnRzLTAwNC5odG1sCisKKyAgICAgICAg
KiByZW5kZXJpbmcvQmlkaVJ1bi5oOgorICAgICAgICAoV2ViQ29yZTo6QmlkaVJ1bjo6QmlkaVJ1
bik6CisgICAgICAgIChCaWRpUnVuKTogQWRkZWQgYSAnc3RhcnRzU2VnbWVudCcgYm9vbGVhbiB0
byB0cmFjayB3aGV0aGVyIGEgcnVuIGJlZ2lucworICAgICAgICBhIG5ldyBzZWdtZW50LgorICAg
ICAgICAqIHJlbmRlcmluZy9FeGNsdXNpb25TaGFwZUluc2lkZUluZm8uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvOjpjb21wdXRlU2VnbWVudHNGb3JMaW5l
KTogQ2xlYXIgdGhlCisgICAgICAgIHNlZ21lbnQgcmFuZ2VzIHdoZW4gY29tcHV0aW5nIHNlZ21l
bnRzIGZvciBhIG5ldyBsaW5lLgorICAgICAgICAqIHJlbmRlcmluZy9FeGNsdXNpb25TaGFwZUlu
c2lkZUluZm8uaDoKKyAgICAgICAgKExpbmVTZWdtZW50UmFuZ2UpOiBBZGRlZCBhIG5ldyB0eXBl
IHRvIHRyYWNrIHNlZ21lbnQgb2Zmc2V0cy4KKyAgICAgICAgKFdlYkNvcmU6OkxpbmVTZWdtZW50
UmFuZ2U6OkxpbmVTZWdtZW50UmFuZ2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpFeGNsdXNpb25TaGFwZUluc2lkZUluZm86OnNlZ21lbnRSYW5nZXMpOiBBZGRlZCBh
IGdldHRlciBmb3IKKyAgICAgICAgdGhlIGxpbmUgc2VnbWVudCByYW5nZXMgdmVjdG9yLgorICAg
ICAgICAoRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvKToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5s
aW5lRmxvd0JveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpwbGFjZUJv
eGVzSW5JbmxpbmVEaXJlY3Rpb24pOiBNb2RpZmllZCB0byBjYWxsCisgICAgICAgIGEgcmVmYWN0
b3JlZCBib3ggcGxhY2VtZW50IGFsZ29yaXRobSB0aGF0IHRha2VzIGEgYmVnaW5uaW5nIGFuZCBl
bmQgcG9zaXRpb24uCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklubGlu
ZUZsb3dCb3g6OnBsYWNlQm94UmFuZ2VJbklubGluZURpcmVjdGlvbik6IFNpbWlsYXIgdG8gdGhl
CisgICAgICAgIHBsYWNlQm94ZXMgbWV0aG9kLCBidXQgdGFrZXMgYW4gZW5kIHBvc2l0aW9uIHRo
YXQgbWF5IG9jY3VyIGJlZm9yZSB0aGUgZW5kCisgICAgICAgIG9mIHRoZSBsaW5lLgorICAgICAg
ICAqIHJlbmRlcmluZy9JbmxpbmVGbG93Qm94Lmg6CisgICAgICAgIChJbmxpbmVGbG93Qm94KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQmxvY2s6OmV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mb0ludGVybmFsKTogRmFjdG9yZWQg
b3V0IGNhbGxzCisgICAgICAgIHRvIEV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbyB0byB0aGUgLmNw
cCBmaWxlLCBhcyBFeGNsdXNpb25TaGFwZUluc2lkZUluZm8KKyAgICAgICAgcmVxdWlyZXMgSW5s
aW5lSXRlcmF0b3IuaCwgd2hpY2ggd291bGQgY3JlYXRlIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSBp
bgorICAgICAgICBFeGNsdXNpb25TaGFwZUluc2lkZUluZm8uaC4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5oOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6ZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZv
KTogTW9kaWZpZWQgdG8gY2FsbAorICAgICAgICBleGNsdXNpb25TaGFwZUluc2lkZUluZm9JbnRl
cm5hbC4KKyAgICAgICAgKFJlbmRlckJsb2NrKToKKyAgICAgICAgKExpbmVCcmVha2VyKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxpbmVXaWR0aDo6TGluZVdpZHRoKTogTGluZVdpZHRoIG5vdyB1c2VzIHRoZSBudW1i
ZXIgb2YgY29tcHV0ZWQKKyAgICAgICAgc2VnbWVudFJhbmdlcyB0byBkZXRlcm1pbmUgd2hpY2gg
TGluZVNlZ21lbnQgdG8gdXNlIHdoZW4gY2FsY3VsYXRpbmcgd2lkdGguCisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9jazo6Y3JlYXRlTGluZUJveGVzKTogTm93IHRha2VzIGEgYm9vbGVhbiB0
byBkZXRlcm1pbmUKKyAgICAgICAgd2hldGhlciBvciBub3QgaXQgY2FuIHNoYXJlIHRoZSBzYW1l
IHBhcmVudEJveCBhcyBpdHMgc2libGluZ3MgKHNlZ21lbnRzCisgICAgICAgIG11c3QgYmUgYWJs
ZSB0byBwb3NpdGlvbiB0aGVtc2VsdmVzIHNlcGFyYXRlbHkgaW4gdGhlIFJvb3RJbmxpbmVCb3gp
LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmNvbnN0cnVjdExpbmUpOgorICAgICAg
ICAoV2ViQ29yZTo6Y29tcHV0ZUV4cGFuc2lvbkZvckp1c3RpZmllZFRleHQpOiBEbyBpbmNsdWRl
IHJ1bnMgdGhhdCBzdGFydCBuZXcKKyAgICAgICAgc2VnbWVudHMgd2hlbiBjYWxjdWxhdGluZyBq
dXN0aWZpY2F0aW9uIGZvciB0aGUgY3VycmVudCBzZWdtZW50LgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQmxvY2s6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlvbnNGb3JMaW5lKTogTW9k
aWZpZWQgdG8KKyAgICAgICAgdXNlIHRoZSBjb21wdXRlSW5saW5lRGlyZWN0aW9uUG9zaXRpb25z
Rm9yU2VnbWVudCwgd2hpY2ggY2FuIHBvc2l0aW9uCisgICAgICAgIG11bHRpcGxlIHNlZ21lbnRz
IG9mIHRleHQgcGVyIGxpbmUuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y29tcHV0
ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0ZvclNlZ21lbnQpOiBQb3NpdGlvbnMKKyAgICAgICAg
dGhlIGdpdmVuIHNlZ21lbnQgb2YgdGV4dCBhbmQgY2FsY3VsYXRlcyBpdHMgbGF5b3V0IG9mZnNl
dHMuCisgICAgICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RCaWRpUnVucyk6IE1vZGlmaWVkIHNvbWUg
dmFyaWFibGVzIGZyb20gJ2VuZE9mTGluZScgdG8gJ2VuZE9mU2VnbWVudCcuCisgICAgICAgIChX
ZWJDb3JlOjpjb25zdHJ1Y3RCaWRpUnVuc0ZvckxpbmUpOiBDb25zdHJ1Y3QgdGhlIGJpZGkgcnVu
cyBmb3IgZWFjaCBzZWdtZW50IGluCisgICAgICAgIHRoZSBnaXZlbiBsaW5lLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bGF5b3V0UnVuc0FuZEZs
b2F0c0luUmFuZ2UpOiBDYWxsIGNvbnN0cnVjdEJpZGlSdW5zRm9yTGluZS4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJsb2NrOjpMaW5lQnJlYWtlcjo6bmV4dExpbmVCcmVhayk6IE1vdmVkIHRo
ZSBsaW5lIGJyZWFraW5nIGNvZGUKKyAgICAgICAgdG8gYnJlYWsgc2VnbWVudHMsIHdpdGggbmV4
dExpbmVCcmVhayBpdGVyYXRpbmcgb3ZlciBzZWdtZW50IGJyZWFrcyBmb3IgdGhlIGVudGlyZSBs
aW5lLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OkxpbmVCcmVha2VyOjpuZXh0U2Vn
bWVudEJyZWFrKTogQ2FsY3VsYXRlcyBob3cgbXVjaCB0ZXh0IGEKKyAgICAgICAgc2VnbWVudCBj
YW4gaG9sZC4gVGhpcyBjb2RlIHdhcyBvcmlnaW5hbGx5IGluIG5leHRMaW5lQnJlYWsuCisKIDIw
MTItMTEtMDIgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBZGQgYSBQbHVnaW5JbmFjdGl2ZSBwbHVnLWluIHVuYXZhaWxhYmlsaXR5IHJlYXNvbgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0JpZGlSdW4uaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9CaWRpUnVuLmgKaW5kZXggZjUwZmExOTZmZjZlMmU1YWZlOGZiY2UzNzg1
OWFkOTRkOThkNmMxMS4uOTliMmFhZWM1NmQxMTc0NTAyMTBkOWZkYmYyZGM4ZWUxNWIyMjJmYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0JpZGlSdW4uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvQmlkaVJ1bi5oCkBAIC0zOSw2ICszOSw3IEBAIHN0cnVjdCBC
aWRpUnVuIDogQmlkaUNoYXJhY3RlclJ1biB7CiAgICAgICAgICwgbV9vYmplY3Qob2JqZWN0KQog
ICAgICAgICAsIG1fYm94KDApCiAgICAgICAgICwgbV9oYXNIeXBoZW4oZmFsc2UpCisgICAgICAg
ICwgbV9zdGFydHNTZWdtZW50KGZhbHNlKQogICAgIHsKICAgICB9CiAKQEAgLTYxLDYgKzYyLDcg
QEAgcHVibGljOgogICAgIFJlbmRlck9iamVjdCogbV9vYmplY3Q7CiAgICAgSW5saW5lQm94KiBt
X2JveDsKICAgICBib29sIG1faGFzSHlwaGVuOworICAgIGJvb2wgbV9zdGFydHNTZWdtZW50Owog
fTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblNo
YXBlSW5zaWRlSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uU2hh
cGVJbnNpZGVJbmZvLmNwcAppbmRleCBiNzgzMGYxMGVmNmJlNGMzOTIzMDc4MzUzYzRkMDk4N2Q3
NzFhMGRmLi5mZGIxMGY5MzMzOWY3NmVkMzEwODMxYmRmZDc2ZTg4YmM4NTc0YWExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZv
LmNwcApAQCAtMTA2LDYgKzEwNiw3IEBAIGJvb2wgRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvOjpj
b21wdXRlU2VnbWVudHNGb3JMaW5lKExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0CiAgICAgbV9s
aW5lVG9wID0gbGluZVRvcDsKICAgICBtX2xpbmVIZWlnaHQgPSBsaW5lSGVpZ2h0OwogICAgIG1f
c2VnbWVudHMuY2xlYXIoKTsKKyAgICBtX3NlZ21lbnRSYW5nZXMuY2xlYXIoKTsKIAogICAgIGlm
IChsaW5lT3ZlcmxhcHNTaGFwZUJvdW5kcygpKSB7CiAgICAgICAgIEFTU0VSVChtX3NoYXBlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25TaGFwZUluc2lk
ZUluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25TaGFwZUluc2lkZUlu
Zm8uaAppbmRleCBiZWEyYjQ1YTAzMTc1ZGI4YTAzYTU4NzBhNDk4OTI3NGJiZGQwY2E5Li5iMzM0
OTgwMmUxN2NjY2E0MmM2NDk2NWUwNTIxNTMwZTFmOTZhMGRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby5oCkBAIC0zNCw2ICsz
NCw3IEBACiAKICNpbmNsdWRlICJFeGNsdXNpb25TaGFwZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVj
dC5oIgorI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTGF5b3V0VHlwZXNJ
bmxpbmVNZXRob2RzLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+CkBAIC00Myw2ICs0NCwxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIFJlbmRlckJsb2NrOwogCitzdHJ1Y3QgTGluZVNlZ21lbnRSYW5nZSB7CisgICAgSW5saW5l
SXRlcmF0b3Igc3RhcnQ7CisgICAgSW5saW5lSXRlcmF0b3IgZW5kOworICAgIExpbmVTZWdtZW50
UmFuZ2UoSW5saW5lSXRlcmF0b3Igc3RhcnQsIElubGluZUl0ZXJhdG9yIGVuZCkKKyAgICAgICAg
OiBzdGFydChzdGFydCkKKyAgICAgICAgLCBlbmQoZW5kKQorICAgIHsKKyAgICB9Cit9OwordHlw
ZWRlZiBWZWN0b3I8TGluZVNlZ21lbnRSYW5nZT4gU2VnbWVudFJhbmdlTGlzdDsKKwogY2xhc3Mg
RXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKQEAgLTczLDYgKzg1LDE0IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKGhhc1Nl
Z21lbnRzKCkpOwogICAgICAgICByZXR1cm4gbV9zZWdtZW50czsKICAgICB9CisgICAgU2VnbWVu
dFJhbmdlTGlzdCYgc2VnbWVudFJhbmdlcygpIHsgcmV0dXJuIG1fc2VnbWVudFJhbmdlczsgfQor
ICAgIGNvbnN0IExpbmVTZWdtZW50KiBjdXJyZW50U2VnbWVudCgpIGNvbnN0CisgICAgeworICAg
ICAgICBpZiAoIWhhc1NlZ21lbnRzKCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
QVNTRVJUKG1fc2VnbWVudFJhbmdlcy5zaXplKCkgPCBtX3NlZ21lbnRzLnNpemUoKSk7CisgICAg
ICAgIHJldHVybiAmbV9zZWdtZW50c1ttX3NlZ21lbnRSYW5nZXMuc2l6ZSgpXTsKKyAgICB9CiAg
ICAgYm9vbCBjb21wdXRlU2VnbWVudHNGb3JMaW5lKExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0
VW5pdCBsaW5lSGVpZ2h0KTsKICAgICBib29sIGxpbmVPdmVybGFwc1NoYXBlQm91bmRzKCkgY29u
c3Q7CiAgICAgdm9pZCBjb21wdXRlU2hhcGVTaXplKExheW91dFVuaXQgbG9naWNhbFdpZHRoLCBM
YXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQpOwpAQCAtOTAsNiArMTEwLDcgQEAgcHJpdmF0ZToKICAg
ICBMYXlvdXRVbml0IG1fbG9naWNhbEhlaWdodDsKIAogICAgIFNlZ21lbnRMaXN0IG1fc2VnbWVu
dHM7CisgICAgU2VnbWVudFJhbmdlTGlzdCBtX3NlZ21lbnRSYW5nZXM7CiAgICAgYm9vbCBtX3No
YXBlU2l6ZURpcnR5OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0lubGluZUZsb3dCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dC
b3guY3BwCmluZGV4IDY2YmMxMWUwOTQ3MjYxOTU2Y2E5ZTJhOGJhNTJiMTA1OTY3MDRmZTUuLmIy
YzI1NmY2NTkzMWI1Y2I5N2IyNjJmZTdlODIxMzBhYWIwZDQwYjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKQEAgLTM2OSwxNSArMzY5LDI0IEBAIHZvaWQg
SW5saW5lRmxvd0JveDo6ZGV0ZXJtaW5lU3BhY2luZ0ZvckZsb3dCb3hlcyhib29sIGxhc3RMaW5l
LCBib29sIGlzTG9naWNhbGx5CiBmbG9hdCBJbmxpbmVGbG93Qm94OjpwbGFjZUJveGVzSW5Jbmxp
bmVEaXJlY3Rpb24oZmxvYXQgbG9naWNhbExlZnQsIGJvb2wmIG5lZWRzV29yZFNwYWNpbmcsIEds
eXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwJiB0ZXh0Qm94RGF0YU1hcCkKIHsKICAgICAv
LyBTZXQgb3VyIHggcG9zaXRpb24uCi0gICAgc2V0TG9naWNhbExlZnQobG9naWNhbExlZnQpOwot
ICAKKyAgICBiZWdpblBsYWNpbmdCb3hSYW5nZXNJbklubGluZURpcmVjdGlvbihsb2dpY2FsTGVm
dCk7CisKICAgICBmbG9hdCBzdGFydExvZ2ljYWxMZWZ0ID0gbG9naWNhbExlZnQ7CiAgICAgbG9n
aWNhbExlZnQgKz0gYm9yZGVyTG9naWNhbExlZnQoKSArIHBhZGRpbmdMb2dpY2FsTGVmdCgpOwog
CiAgICAgZmxvYXQgbWluTG9naWNhbExlZnQgPSBzdGFydExvZ2ljYWxMZWZ0OwogICAgIGZsb2F0
IG1heExvZ2ljYWxSaWdodCA9IGxvZ2ljYWxMZWZ0OwogCi0gICAgZm9yIChJbmxpbmVCb3gqIGN1
cnIgPSBmaXJzdENoaWxkKCk7IGN1cnI7IGN1cnIgPSBjdXJyLT5uZXh0T25MaW5lKCkpIHsKKyAg
ICBwbGFjZUJveFJhbmdlSW5JbmxpbmVEaXJlY3Rpb24oZmlyc3RDaGlsZCgpLCAwLCBsb2dpY2Fs
TGVmdCwgbWluTG9naWNhbExlZnQsIG1heExvZ2ljYWxSaWdodCwgbmVlZHNXb3JkU3BhY2luZywg
dGV4dEJveERhdGFNYXApOworCisgICAgbG9naWNhbExlZnQgKz0gYm9yZGVyTG9naWNhbFJpZ2h0
KCkgKyBwYWRkaW5nTG9naWNhbFJpZ2h0KCk7CisgICAgZW5kUGxhY2luZ0JveFJhbmdlc0luSW5s
aW5lRGlyZWN0aW9uKHN0YXJ0TG9naWNhbExlZnQsIGxvZ2ljYWxMZWZ0LCBtaW5Mb2dpY2FsTGVm
dCwgbWF4TG9naWNhbFJpZ2h0KTsKKyAgICByZXR1cm4gbG9naWNhbExlZnQ7Cit9CisKK2Zsb2F0
IElubGluZUZsb3dCb3g6OnBsYWNlQm94UmFuZ2VJbklubGluZURpcmVjdGlvbihJbmxpbmVCb3gq
IGZpcnN0Q2hpbGQsIElubGluZUJveCogbGFzdENoaWxkLCBmbG9hdCYgbG9naWNhbExlZnQsIGZs
b2F0JiBtaW5Mb2dpY2FsTGVmdCwgZmxvYXQmIG1heExvZ2ljYWxSaWdodCwgYm9vbCYgbmVlZHNX
b3JkU3BhY2luZywgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXAmIHRleHRCb3hEYXRh
TWFwKQoreworICAgIGZvciAoSW5saW5lQm94KiBjdXJyID0gZmlyc3RDaGlsZDsgY3VyciAmJiBj
dXJyICE9IGxhc3RDaGlsZDsgY3VyciA9IGN1cnItPm5leHRPbkxpbmUoKSkgewogICAgICAgICBp
ZiAoY3Vyci0+cmVuZGVyZXIoKS0+aXNUZXh0KCkpIHsKICAgICAgICAgICAgIElubGluZVRleHRC
b3gqIHRleHQgPSB0b0lubGluZVRleHRCb3goY3Vycik7CiAgICAgICAgICAgICBSZW5kZXJUZXh0
KiBydCA9IHRvUmVuZGVyVGV4dCh0ZXh0LT5yZW5kZXJlcigpKTsKQEAgLTQyOSwxMSArNDM4LDYg
QEAgZmxvYXQgSW5saW5lRmxvd0JveDo6cGxhY2VCb3hlc0luSW5saW5lRGlyZWN0aW9uKGZsb2F0
IGxvZ2ljYWxMZWZ0LCBib29sJiBuZWVkc1cKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
IH0KLQotICAgIGxvZ2ljYWxMZWZ0ICs9IGJvcmRlckxvZ2ljYWxSaWdodCgpICsgcGFkZGluZ0xv
Z2ljYWxSaWdodCgpOwotICAgIHNldExvZ2ljYWxXaWR0aChsb2dpY2FsTGVmdCAtIHN0YXJ0TG9n
aWNhbExlZnQpOwotICAgIGlmIChrbm93blRvSGF2ZU5vT3ZlcmZsb3coKSAmJiAobWluTG9naWNh
bExlZnQgPCBzdGFydExvZ2ljYWxMZWZ0IHx8IG1heExvZ2ljYWxSaWdodCA+IGxvZ2ljYWxMZWZ0
KSkKLSAgICAgICAgY2xlYXJLbm93blRvSGF2ZU5vT3ZlcmZsb3coKTsKICAgICByZXR1cm4gbG9n
aWNhbExlZnQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Jbmxp
bmVGbG93Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oCmlu
ZGV4IDQ4YjcyMGM3NWRkNTNlN2QyMDk3ODJkZDRiYTJmMzFhNDUyMTUwMGUuLmRiZjAxMzViYzQx
MDhiM2Y3ZjNjNmIyNGNmNDM4ZmRkYjU2YTM2MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0lubGluZUZsb3dCb3guaApAQCAtMTc0LDYgKzE3NCwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBk
ZXRlcm1pbmVTcGFjaW5nRm9yRmxvd0JveGVzKGJvb2wgbGFzdExpbmUsIGJvb2wgaXNMb2dpY2Fs
bHlMYXN0UnVuV3JhcHBlZCwgUmVuZGVyT2JqZWN0KiBsb2dpY2FsbHlMYXN0UnVuUmVuZGVyZXIp
OwogICAgIExheW91dFVuaXQgZ2V0Rmxvd1NwYWNpbmdMb2dpY2FsV2lkdGgoKTsKICAgICBmbG9h
dCBwbGFjZUJveGVzSW5JbmxpbmVEaXJlY3Rpb24oZmxvYXQgbG9naWNhbExlZnQsIGJvb2wmIG5l
ZWRzV29yZFNwYWNpbmcsIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwJik7CisgICAg
ZmxvYXQgcGxhY2VCb3hSYW5nZUluSW5saW5lRGlyZWN0aW9uKElubGluZUJveCogZmlyc3RDaGls
ZCwgSW5saW5lQm94KiBsYXN0Q2hpbGQsIGZsb2F0JiBsb2dpY2FsTGVmdCwgZmxvYXQmIG1pbkxv
Z2ljYWxMZWZ0LCBmbG9hdCYgbWF4TG9naWNhbFJpZ2h0LCBib29sJiBuZWVkc1dvcmRTcGFjaW5n
LCBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcCYpOworICAgIHZvaWQgYmVnaW5QbGFj
aW5nQm94UmFuZ2VzSW5JbmxpbmVEaXJlY3Rpb24oZmxvYXQgbG9naWNhbExlZnQpIHsgc2V0TG9n
aWNhbExlZnQobG9naWNhbExlZnQpOyB9CisgICAgdm9pZCBlbmRQbGFjaW5nQm94UmFuZ2VzSW5J
bmxpbmVEaXJlY3Rpb24oZmxvYXQgbG9naWNhbExlZnQsIGZsb2F0IGxvZ2ljYWxSaWdodCwgZmxv
YXQgbWluTG9naWNhbExlZnQsIGZsb2F0IG1heExvZ2ljYWxSaWdodCkKKyAgICB7CisgICAgICAg
IHNldExvZ2ljYWxXaWR0aChsb2dpY2FsUmlnaHQgLSBsb2dpY2FsTGVmdCk7CisgICAgICAgIGlm
IChrbm93blRvSGF2ZU5vT3ZlcmZsb3coKSAmJiAobWluTG9naWNhbExlZnQgPCBsb2dpY2FsTGVm
dCB8fCBtYXhMb2dpY2FsUmlnaHQgPiBsb2dpY2FsUmlnaHQpKQorICAgICAgICAgICAgY2xlYXJL
bm93blRvSGF2ZU5vT3ZlcmZsb3coKTsKKyAgICB9CisKICAgICB2b2lkIGNvbXB1dGVMb2dpY2Fs
Qm94SGVpZ2h0cyhSb290SW5saW5lQm94KiwgTGF5b3V0VW5pdCYgbWF4UG9zaXRpb25Ub3AsIExh
eW91dFVuaXQmIG1heFBvc2l0aW9uQm90dG9tLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCYgbWF4QXNjZW50LCBpbnQmIG1heERlc2NlbnQsIGJvb2wmIHNldE1heEFzY2Vu
dCwgYm9vbCYgc2V0TWF4RGVzY2VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIHN0cmljdE1vZGUsIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwJiwgRm9u
dEJhc2VsaW5lLCBWZXJ0aWNhbFBvc2l0aW9uQ2FjaGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IDcxNzVjMjgzMWNiZjEzOWJjNzEzMjVjYjdhZmIwNGZk
MTU2OGM2YzcuLjk5Yzk0Yzc0OGMzY2QxYzQwMjg5MzI4MzMwZjg1ZDFmYWE4ODZkN2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtMTM5NSw2ICsxMzk1LDEx
IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmxheW91dCgpCiB9CiAKICNpZiBFTkFCTEUoQ1NTX0VYQ0xV
U0lPTlMpCitFeGNsdXNpb25TaGFwZUluc2lkZUluZm8qIFJlbmRlckJsb2NrOjpleGNsdXNpb25T
aGFwZUluc2lkZUluZm9JbnRlcm5hbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIEV4Y2x1c2lvblNo
YXBlSW5zaWRlSW5mbzo6aXNFeGNsdXNpb25TaGFwZUluc2lkZUluZm9FbmFibGVkRm9yUmVuZGVy
QmxvY2sodGhpcykgPyBFeGNsdXNpb25TaGFwZUluc2lkZUluZm86OmV4Y2x1c2lvblNoYXBlSW5z
aWRlSW5mb0ZvclJlbmRlckJsb2NrKHRoaXMpIDogMDsKK30KKwogdm9pZCBSZW5kZXJCbG9jazo6
dXBkYXRlRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvQWZ0ZXJTdHlsZUNoYW5nZShjb25zdCBCYXNp
Y1NoYXBlKiBzaGFwZUluc2lkZSwgY29uc3QgQmFzaWNTaGFwZSogb2xkU2hhcGVJbnNpZGUpCiB7
CiAgICAgLy8gRklYTUU6IEEgZnV0dXJlIG9wdGltaXphdGlvbiB3b3VsZCBkbyBhIGRlZXAgY29t
cGFyaXNvbiBmb3IgZXF1YWxpdHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5o
CmluZGV4IGNiNDE1OGIwMDA2ZGQ3YzZlODllMjIwMzY3ZWY0MGEyMjc2MzM2YjcuLjM2MGM4Mjg0
NzBjZGQ1NDI4YTk2YTFhYTVmZmFjZTdiODU3MjQ0MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5oCkBAIC0zNCwxMCArMzQsNiBAQAogI2luY2x1ZGUgPHd0Zi9Pd25QdHIu
aD4KICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KIAotI2lmIEVOQUJMRShDU1NfRVhDTFVT
SU9OUykKLSNpbmNsdWRlICJFeGNsdXNpb25TaGFwZUluc2lkZUluZm8uaCIKLSNlbmRpZgotCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJpZGlDb250ZXh0OwpAQCAtNTIsNiArNDgsMTAg
QEAgc3RydWN0IEJpZGlSdW47CiBzdHJ1Y3QgUGFpbnRJbmZvOwogY2xhc3MgTGluZUluZm87CiBj
bGFzcyBSZW5kZXJSdWJ5UnVuOworI2lmIEVOQUJMRShDU1NfRVhDTFVTSU9OUykKK2NsYXNzIEJh
c2ljU2hhcGU7CitjbGFzcyBFeGNsdXNpb25TaGFwZUluc2lkZUluZm87CisjZW5kaWYKIGNsYXNz
IFRleHRMYXlvdXQ7CiBjbGFzcyBXb3JkTWVhc3VyZW1lbnQ7CiAKQEAgLTQyMyw3ICs0MjMsNyBA
QCBwdWJsaWM6CiAjaWYgRU5BQkxFKENTU19FWENMVVNJT05TKQogICAgIEV4Y2x1c2lvblNoYXBl
SW5zaWRlSW5mbyogZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvKCkgY29uc3QKICAgICB7Ci0gICAg
ICAgIHJldHVybiBzdHlsZSgpLT5zaGFwZUluc2lkZSgpICYmIEV4Y2x1c2lvblNoYXBlSW5zaWRl
SW5mbzo6aXNFeGNsdXNpb25TaGFwZUluc2lkZUluZm9FbmFibGVkRm9yUmVuZGVyQmxvY2sodGhp
cykgPyBFeGNsdXNpb25TaGFwZUluc2lkZUluZm86OmV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mb0Zv
clJlbmRlckJsb2NrKHRoaXMpIDogMDsKKyAgICAgICAgcmV0dXJuIHN0eWxlKCktPnNoYXBlSW5z
aWRlKCkgPyBleGNsdXNpb25TaGFwZUluc2lkZUluZm9JbnRlcm5hbCgpIDogMDsKICAgICB9CiAj
ZW5kaWYKIApAQCAtNTIwLDYgKzUyMCw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICNpZiBF
TkFCTEUoQ1NTX0VYQ0xVU0lPTlMpCisgICAgRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvKiBleGNs
dXNpb25TaGFwZUluc2lkZUluZm9JbnRlcm5hbCgpIGNvbnN0OwogICAgIHZvaWQgY29tcHV0ZUV4
Y2x1c2lvblNoYXBlU2l6ZSgpOwogICAgIHZvaWQgdXBkYXRlRXhjbHVzaW9uU2hhcGVJbnNpZGVJ
bmZvQWZ0ZXJTdHlsZUNoYW5nZShjb25zdCBCYXNpY1NoYXBlKiwgY29uc3QgQmFzaWNTaGFwZSog
b2xkV3JhcFNoYXBlKTsKICNlbmRpZgpAQCAtNzU5LDYgKzc2MCw3IEBAIHByaXZhdGU6CiAgICAg
cHJpdmF0ZToKICAgICAgICAgdm9pZCByZXNldCgpOwogICAgICAgICAKKyAgICAgICAgSW5saW5l
SXRlcmF0b3IgbmV4dFNlZ21lbnRCcmVhayhJbmxpbmVCaWRpUmVzb2x2ZXImLCBMaW5lSW5mbyYs
IFJlbmRlclRleHRJbmZvJiwgRmxvYXRpbmdPYmplY3QqIGxhc3RGbG9hdEZyb21QcmV2aW91c0xp
bmUsIHVuc2lnbmVkIGNvbnNlY3V0aXZlSHlwaGVuYXRlZExpbmVzLCBXb3JkTWVhc3VyZW1lbnRz
Jik7CiAgICAgICAgIHZvaWQgc2tpcFRyYWlsaW5nV2hpdGVzcGFjZShJbmxpbmVJdGVyYXRvciYs
IGNvbnN0IExpbmVJbmZvJik7CiAgICAgICAgIHZvaWQgc2tpcExlYWRpbmdXaGl0ZXNwYWNlKElu
bGluZUJpZGlSZXNvbHZlciYsIExpbmVJbmZvJiwgRmxvYXRpbmdPYmplY3QqIGxhc3RGbG9hdEZy
b21QcmV2aW91c0xpbmUsIExpbmVXaWR0aCYpOwogICAgICAgICAKQEAgLTc3NSwxMCArNzc3LDEy
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBjaGVja1BhZ2luYXRpb25BbmRGbG9hdHNBdEVuZExpbmUo
TGluZUxheW91dFN0YXRlJik7CiAgICAgCiAgICAgUm9vdElubGluZUJveCogY29uc3RydWN0TGlu
ZShCaWRpUnVuTGlzdDxCaWRpUnVuPiYsIGNvbnN0IExpbmVJbmZvJik7Ci0gICAgSW5saW5lRmxv
d0JveCogY3JlYXRlTGluZUJveGVzKFJlbmRlck9iamVjdCosIGNvbnN0IExpbmVJbmZvJiwgSW5s
aW5lQm94KiBjaGlsZEJveCk7CisgICAgSW5saW5lRmxvd0JveCogY3JlYXRlTGluZUJveGVzKFJl
bmRlck9iamVjdCosIGNvbnN0IExpbmVJbmZvJiwgSW5saW5lQm94KiBjaGlsZEJveCwgYm9vbCBz
dGFydHNOZXdTZWdtbmV0KTsKIAogICAgIHZvaWQgc2V0TWFyZ2luc0ZvclJ1YnlSdW4oQmlkaVJ1
biosIFJlbmRlclJ1YnlSdW4qLCBSZW5kZXJPYmplY3QqLCBjb25zdCBMaW5lSW5mbyYpOwogCisg
ICAgQmlkaVJ1biogY29tcHV0ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0ZvclNlZ21lbnQoUm9v
dElubGluZUJveCosIGNvbnN0IExpbmVJbmZvJiwgRVRleHRBbGlnbiwgZmxvYXQmIGxvZ2ljYWxM
ZWZ0LAorICAgICAgICBmbG9hdCYgYXZhaWxhYmxlTG9naWNhbFdpZHRoLCBCaWRpUnVuKiBmaXJz
dFJ1biwgQmlkaVJ1biogdHJhaWxpbmdTcGFjZVJ1biwgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNr
Rm9udHNNYXAmIHRleHRCb3hEYXRhTWFwLCBWZXJ0aWNhbFBvc2l0aW9uQ2FjaGUmLCBXb3JkTWVh
c3VyZW1lbnRzJik7CiAgICAgdm9pZCBjb21wdXRlSW5saW5lRGlyZWN0aW9uUG9zaXRpb25zRm9y
TGluZShSb290SW5saW5lQm94KiwgY29uc3QgTGluZUluZm8mLCBCaWRpUnVuKiBmaXJzdFJ1biwg
QmlkaVJ1biogdHJhaWxpbmdTcGFjZVJ1biwgYm9vbCByZWFjaGVkRW5kLCBHbHlwaE92ZXJmbG93
QW5kRmFsbGJhY2tGb250c01hcCYsIFZlcnRpY2FsUG9zaXRpb25DYWNoZSYsIFdvcmRNZWFzdXJl
bWVudHMmKTsKICAgICB2b2lkIGNvbXB1dGVCbG9ja0RpcmVjdGlvblBvc2l0aW9uc0ZvckxpbmUo
Um9vdElubGluZUJveCosIEJpZGlSdW4qLCBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01h
cCYsIFZlcnRpY2FsUG9zaXRpb25DYWNoZSYpOwogICAgIHZvaWQgZGVsZXRlRWxsaXBzaXNMaW5l
Qm94ZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
a0xpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGlu
ZUxheW91dC5jcHAKaW5kZXggM2IyN2FiZDZmMDZjYmYzN2EzMzg4Mzk3ZWQ4NThkZmQwMGY5ZDVk
NS4uNzViZGI4MTI5MzhmNDlhYmNjYmE2ZTMyN2U2ZDZlNTViMmQ5NWMwMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKQEAgLTg4
LDkgKzg4LDggQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoYmxvY2spOwogI2lmIEVOQUJMRShD
U1NfRVhDTFVTSU9OUykKICAgICAgICAgRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvKiBleGNsdXNp
b25TaGFwZUluc2lkZUluZm8gPSBsYXlvdXRFeGNsdXNpb25TaGFwZUluc2lkZUluZm8obV9ibG9j
ayk7Ci0gICAgICAgIC8vIEZJWE1FOiBCdWcgOTE4Nzg6IEFkZCBzdXBwb3J0IGZvciBtdWx0aXBs
ZSBzZWdtZW50cywgY3VycmVudGx5IHdlIG9ubHkgc3VwcG9ydCBvbmUKLSAgICAgICAgaWYgKGV4
Y2x1c2lvblNoYXBlSW5zaWRlSW5mbyAmJiBleGNsdXNpb25TaGFwZUluc2lkZUluZm8tPmhhc1Nl
Z21lbnRzKCkpCi0gICAgICAgICAgICBtX3NlZ21lbnQgPSAmZXhjbHVzaW9uU2hhcGVJbnNpZGVJ
bmZvLT5zZWdtZW50cygpWzBdOworICAgICAgICBpZiAoZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZv
KQorICAgICAgICAgICAgbV9zZWdtZW50ID0gZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLT5jdXJy
ZW50U2VnbWVudCgpOwogI2VuZGlmCiAgICAgICAgIHVwZGF0ZUF2YWlsYWJsZVdpZHRoKCk7CiAg
ICAgfQpAQCAtNDUwLDcgKzQ0OSw3IEBAIHN0YXRpYyBib29sIHBhcmVudElzQ29uc3RydWN0ZWRP
ckhhdmVOZXh0KElubGluZUZsb3dCb3gqIHBhcmVudEJveCkKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLUlubGluZUZsb3dCb3gqIFJlbmRlckJsb2NrOjpjcmVhdGVMaW5lQm94ZXMoUmVuZGVyT2Jq
ZWN0KiBvYmosIGNvbnN0IExpbmVJbmZvJiBsaW5lSW5mbywgSW5saW5lQm94KiBjaGlsZEJveCkK
K0lubGluZUZsb3dCb3gqIFJlbmRlckJsb2NrOjpjcmVhdGVMaW5lQm94ZXMoUmVuZGVyT2JqZWN0
KiBvYmosIGNvbnN0IExpbmVJbmZvJiBsaW5lSW5mbywgSW5saW5lQm94KiBjaGlsZEJveCwgYm9v
bCBzdGFydE5ld1NlZ21lbnQpCiB7CiAgICAgLy8gU2VlIGlmIHdlIGhhdmUgYW4gdW5jb25zdHJ1
Y3RlZCBsaW5lIGJveCBmb3IgdGhpcyBvYmplY3QgdGhhdCBpcyBhbHNvCiAgICAgLy8gdGhlIGxh
c3QgaXRlbSBvbiB0aGUgbGluZS4KQEAgLTQ3Myw3ICs0NzIsOCBAQCBJbmxpbmVGbG93Qm94KiBS
ZW5kZXJCbG9jazo6Y3JlYXRlTGluZUJveGVzKFJlbmRlck9iamVjdCogb2JqLCBjb25zdCBMaW5l
SW5mbyYgbAogICAgICAgICAvLyB0aGUgc2FtZSBsaW5lICh0aGlzIGNhbiBoYXBwZW4gd2l0aCB2
ZXJ5IGZhbmN5IGxhbmd1YWdlIG1peHR1cmVzKS4KICAgICAgICAgYm9vbCBjb25zdHJ1Y3RlZE5l
d0JveCA9IGZhbHNlOwogICAgICAgICBib29sIGFsbG93ZWRUb0NvbnN0cnVjdE5ld0JveCA9ICFo
YXNEZWZhdWx0TGluZUJveENvbnRhaW4gfHwgIWlubGluZUZsb3cgfHwgaW5saW5lRmxvdy0+YWx3
YXlzQ3JlYXRlTGluZUJveGVzKCk7Ci0gICAgICAgIGJvb2wgY2FuVXNlRXhpc3RpbmdQYXJlbnRC
b3ggPSBwYXJlbnRCb3ggJiYgIXBhcmVudElzQ29uc3RydWN0ZWRPckhhdmVOZXh0KHBhcmVudEJv
eCk7CisgICAgICAgIGJvb2wgbXVzdENyZWF0ZUJveGVzVG9Sb290ID0gc3RhcnROZXdTZWdtZW50
ICYmICEocGFyZW50Qm94ICYmIHBhcmVudEJveC0+aXNSb290SW5saW5lQm94KCkpOworICAgICAg
ICBib29sIGNhblVzZUV4aXN0aW5nUGFyZW50Qm94ID0gcGFyZW50Qm94ICYmICFwYXJlbnRJc0Nv
bnN0cnVjdGVkT3JIYXZlTmV4dChwYXJlbnRCb3gpICYmICFtdXN0Q3JlYXRlQm94ZXNUb1Jvb3Q7
CiAgICAgICAgIGlmIChhbGxvd2VkVG9Db25zdHJ1Y3ROZXdCb3ggJiYgIWNhblVzZUV4aXN0aW5n
UGFyZW50Qm94KSB7CiAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIG1ha2UgYSBuZXcgYm94IGZv
ciB0aGlzIHJlbmRlciBvYmplY3QuICBPbmNlCiAgICAgICAgICAgICAvLyBtYWRlLCB3ZSBuZWVk
IHRvIHBsYWNlIGl0IGF0IHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgbGluZS4KQEAgLTU3MCwxMCAr
NTcwLDExIEBAIFJvb3RJbmxpbmVCb3gqIFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RMaW5lKEJpZGlS
dW5MaXN0PEJpZGlSdW4+JiBiaWRpUnVucywgY29uc3QKIAogICAgICAgICAvLyBJZiB3ZSBoYXZl
IG5vIHBhcmVudCBib3ggeWV0LCBvciBpZiB0aGUgcnVuIGlzIG5vdCBzaW1wbHkgYSBzaWJsaW5n
LAogICAgICAgICAvLyB0aGVuIHdlIG5lZWQgdG8gY29uc3RydWN0IGlubGluZSBib3hlcyBhcyBu
ZWNlc3NhcnkgdG8gcHJvcGVybHkgZW5jbG9zZSB0aGUKLSAgICAgICAgLy8gcnVuJ3MgaW5saW5l
IGJveC4KLSAgICAgICAgaWYgKCFwYXJlbnRCb3ggfHwgcGFyZW50Qm94LT5yZW5kZXJlcigpICE9
IHItPm1fb2JqZWN0LT5wYXJlbnQoKSkKKyAgICAgICAgLy8gcnVuJ3MgaW5saW5lIGJveC4gU2Vn
bWVudHMgY2FuIG9ubHkgYmUgc2libGluZ3MgYXQgdGhlIHJvb3QgbGV2ZWwsIGFzCisgICAgICAg
IC8vIHRoZXkgYXJlIHBvc2l0aW9uZWQgc2VwYXJhdGVseS4KKyAgICAgICAgaWYgKCFwYXJlbnRC
b3ggfHwgcGFyZW50Qm94LT5yZW5kZXJlcigpICE9IHItPm1fb2JqZWN0LT5wYXJlbnQoKSB8fCBy
LT5tX3N0YXJ0c1NlZ21lbnQpCiAgICAgICAgICAgICAvLyBDcmVhdGUgbmV3IGlubGluZSBib3hl
cyBhbGwgdGhlIHdheSBiYWNrIHRvIHRoZSBhcHByb3ByaWF0ZSBpbnNlcnRpb24gcG9pbnQuCi0g
ICAgICAgICAgICBwYXJlbnRCb3ggPSBjcmVhdGVMaW5lQm94ZXMoci0+bV9vYmplY3QtPnBhcmVu
dCgpLCBsaW5lSW5mbywgYm94KTsKKyAgICAgICAgICAgIHBhcmVudEJveCA9IGNyZWF0ZUxpbmVC
b3hlcyhyLT5tX29iamVjdC0+cGFyZW50KCksIGxpbmVJbmZvLCBib3gsIHItPm1fc3RhcnRzU2Vn
bWVudCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgLy8gQXBwZW5kIHRoZSBpbmxpbmUg
Ym94IHRvIHRoaXMgbGluZS4KICAgICAgICAgICAgIHBhcmVudEJveC0+YWRkVG9MaW5lKGJveCk7
CkBAIC04MDgsNiArODA5LDkgQEAgc3RhdGljIGlubGluZSB2b2lkIGNvbXB1dGVFeHBhbnNpb25G
b3JKdXN0aWZpZWRUZXh0KEJpZGlSdW4qIGZpcnN0UnVuLCBCaWRpUnVuKgogCiAgICAgc2l6ZV90
IGkgPSAwOwogICAgIGZvciAoQmlkaVJ1biogciA9IGZpcnN0UnVuOyByOyByID0gci0+bmV4dCgp
KSB7CisgICAgICAgIC8vIFRoZSBjYWxjdWxhdGlvbiBpcyBzZXBhcmF0ZSBmb3IgZWFjaCBzZWdt
ZW50CisgICAgICAgIGlmIChyLT5tX3N0YXJ0c1NlZ21lbnQpCisgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgaWYgKCFyLT5tX2JveCB8fCByID09IHRyYWlsaW5nU3BhY2VSdW4pCiAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgCkBAIC04ODMsMTcgKzg4Nyw1MyBAQCB2b2lkIFJlbmRl
ckJsb2NrOjpjb21wdXRlSW5saW5lRGlyZWN0aW9uUG9zaXRpb25zRm9yTGluZShSb290SW5saW5l
Qm94KiBsaW5lQm94LAogICAgIC8vIENTUyAyLjE6ICInVGV4dC1pbmRlbnQnIG9ubHkgYWZmZWN0
cyBhIGxpbmUgaWYgaXQgaXMgdGhlIGZpcnN0IGZvcm1hdHRlZCBsaW5lIG9mIGFuIGVsZW1lbnQu
IEZvciBleGFtcGxlLCB0aGUgZmlyc3QgbGluZSBvZiBhbiBhbm9ueW1vdXMgYmxvY2sgCiAgICAg
Ly8gYm94IGlzIG9ubHkgYWZmZWN0ZWQgaWYgaXQgaXMgdGhlIGZpcnN0IGNoaWxkIG9mIGl0cyBw
YXJlbnQgZWxlbWVudC4iCiAgICAgYm9vbCBmaXJzdExpbmUgPSBsaW5lSW5mby5pc0ZpcnN0TGlu
ZSgpICYmICEoaXNBbm9ueW1vdXNCbG9jaygpICYmIHBhcmVudCgpLT5maXJzdENoaWxkKCkgIT0g
dGhpcyk7Ci0gICAgZmxvYXQgbG9naWNhbExlZnQgPSBwaXhlbFNuYXBwZWRMb2dpY2FsTGVmdE9m
ZnNldEZvckxpbmUobG9naWNhbEhlaWdodCgpLCBmaXJzdExpbmUsIGxpbmVMb2dpY2FsSGVpZ2h0
KTsKLSAgICBmbG9hdCBsb2dpY2FsUmlnaHQgPSBwaXhlbFNuYXBwZWRMb2dpY2FsUmlnaHRPZmZz
ZXRGb3JMaW5lKGxvZ2ljYWxIZWlnaHQoKSwgZmlyc3RMaW5lLCBsaW5lTG9naWNhbEhlaWdodCk7
CisgICAgZmxvYXQgbGluZUxvZ2ljYWxMZWZ0ID0gcGl4ZWxTbmFwcGVkTG9naWNhbExlZnRPZmZz
ZXRGb3JMaW5lKGxvZ2ljYWxIZWlnaHQoKSwgZmlyc3RMaW5lLCBsaW5lTG9naWNhbEhlaWdodCk7
CisgICAgZmxvYXQgbGluZUxvZ2ljYWxSaWdodCA9IHBpeGVsU25hcHBlZExvZ2ljYWxSaWdodE9m
ZnNldEZvckxpbmUobG9naWNhbEhlaWdodCgpLCBmaXJzdExpbmUsIGxpbmVMb2dpY2FsSGVpZ2h0
KTsKKyAgICBmbG9hdCBhdmFpbGFibGVMb2dpY2FsV2lkdGg7CisgICAgYm9vbCBuZWVkc1dvcmRT
cGFjaW5nOwogI2lmIEVOQUJMRShDU1NfRVhDTFVTSU9OUykKICAgICBFeGNsdXNpb25TaGFwZUlu
c2lkZUluZm8qIGV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbyA9IGxheW91dEV4Y2x1c2lvblNoYXBl
SW5zaWRlSW5mbyh0aGlzKTsKICAgICBpZiAoZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvICYmIGV4
Y2x1c2lvblNoYXBlSW5zaWRlSW5mby0+aGFzU2VnbWVudHMoKSkgewotICAgICAgICBsb2dpY2Fs
TGVmdCA9IG1heDxmbG9hdD4ocm91bmRUb0ludChleGNsdXNpb25TaGFwZUluc2lkZUluZm8tPnNl
Z21lbnRzKClbMF0ubG9naWNhbExlZnQpLCBsb2dpY2FsTGVmdCk7Ci0gICAgICAgIGxvZ2ljYWxS
aWdodCA9IG1pbjxmbG9hdD4oZmxvb3JUb0ludChleGNsdXNpb25TaGFwZUluc2lkZUluZm8tPnNl
Z21lbnRzKClbMF0ubG9naWNhbFJpZ2h0KSwgbG9naWNhbFJpZ2h0KTsKKyAgICAgICAgQmlkaVJ1
biogc2VnbWVudFN0YXJ0ID0gZmlyc3RSdW47CisgICAgICAgIGNvbnN0IFNlZ21lbnRMaXN0JiBz
ZWdtZW50cyA9IGV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby0+c2VnbWVudHMoKTsKKyAgICAgICAg
ZmxvYXQgbG9naWNhbExlZnQgPSBtYXg8ZmxvYXQ+KHJvdW5kVG9JbnQoc2VnbWVudHNbMF0ubG9n
aWNhbExlZnQpLCBsaW5lTG9naWNhbExlZnQpOworICAgICAgICBmbG9hdCBsb2dpY2FsUmlnaHQg
PSBtaW48ZmxvYXQ+KGZsb29yVG9JbnQoc2VnbWVudHNbMF0ubG9naWNhbFJpZ2h0KSwgbGluZUxv
Z2ljYWxSaWdodCk7CisgICAgICAgIGZsb2F0IHN0YXJ0TG9naWNhbExlZnQgPSBsb2dpY2FsTGVm
dDsKKyAgICAgICAgZmxvYXQgZW5kTG9naWNhbFJpZ2h0ID0gbG9naWNhbExlZnQ7CisgICAgICAg
IGZsb2F0IG1pbkxvZ2ljYWxMZWZ0ID0gbG9naWNhbExlZnQ7CisgICAgICAgIGZsb2F0IG1heExv
Z2ljYWxSaWdodCA9IGxvZ2ljYWxMZWZ0OworICAgICAgICBsaW5lQm94LT5iZWdpblBsYWNpbmdC
b3hSYW5nZXNJbklubGluZURpcmVjdGlvbihsb2dpY2FsTGVmdCk7CisgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgc2VnbWVudHMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChp
KSB7CisgICAgICAgICAgICAgICAgbG9naWNhbExlZnQgPSBtYXg8ZmxvYXQ+KHJvdW5kVG9JbnQo
c2VnbWVudHNbaV0ubG9naWNhbExlZnQpLCBsaW5lTG9naWNhbExlZnQpOworICAgICAgICAgICAg
ICAgIGxvZ2ljYWxSaWdodCA9IG1pbjxmbG9hdD4oZmxvb3JUb0ludChzZWdtZW50c1tpXS5sb2dp
Y2FsUmlnaHQpLCBsaW5lTG9naWNhbFJpZ2h0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCA9IGxvZ2ljYWxSaWdodCAtIGxvZ2ljYWxMZWZ0OworICAg
ICAgICAgICAgQmlkaVJ1biogbmV3U2VnbWVudFN0YXJ0ID0gY29tcHV0ZUlubGluZURpcmVjdGlv
blBvc2l0aW9uc0ZvclNlZ21lbnQobGluZUJveCwgbGluZUluZm8sIHRleHRBbGlnbiwgbG9naWNh
bExlZnQsIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwgc2VnbWVudFN0YXJ0LCB0cmFpbGluZ1NwYWNl
UnVuLCB0ZXh0Qm94RGF0YU1hcCwgdmVydGljYWxQb3NpdGlvbkNhY2hlLCB3b3JkTWVhc3VyZW1l
bnRzKTsKKyAgICAgICAgICAgIG5lZWRzV29yZFNwYWNpbmcgPSBmYWxzZTsKKyAgICAgICAgICAg
IGVuZExvZ2ljYWxSaWdodCA9IGxpbmVCb3gtPnBsYWNlQm94UmFuZ2VJbklubGluZURpcmVjdGlv
bihzZWdtZW50U3RhcnQtPm1fYm94LCBuZXdTZWdtZW50U3RhcnQgPyBuZXdTZWdtZW50U3RhcnQt
Pm1fYm94IDogMCwgbG9naWNhbExlZnQsIG1pbkxvZ2ljYWxMZWZ0LCBtYXhMb2dpY2FsUmlnaHQs
IG5lZWRzV29yZFNwYWNpbmcsIHRleHRCb3hEYXRhTWFwKTsKKyAgICAgICAgICAgIGlmICghbmV3
U2VnbWVudFN0YXJ0IHx8ICFuZXdTZWdtZW50U3RhcnQtPm5leHQoKSkKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIEFTU0VSVChuZXdTZWdtZW50U3RhcnQtPm1fc3RhcnRzU2Vn
bWVudCk7CisgICAgICAgICAgICAvLyBEaXNjYXJkIHRoZSBlbXB0eSBzZWdtZW50IHN0YXJ0IG1h
cmtlciBiaWRpIHJ1bnMKKyAgICAgICAgICAgIHNlZ21lbnRTdGFydCA9IG5ld1NlZ21lbnRTdGFy
dC0+bmV4dCgpOworICAgICAgICB9CisgICAgICAgIGxpbmVCb3gtPmVuZFBsYWNpbmdCb3hSYW5n
ZXNJbklubGluZURpcmVjdGlvbihzdGFydExvZ2ljYWxMZWZ0LCBlbmRMb2dpY2FsUmlnaHQsIG1p
bkxvZ2ljYWxMZWZ0LCBtYXhMb2dpY2FsUmlnaHQpOworICAgICAgICByZXR1cm47CiAgICAgfQog
I2VuZGlmCi0gICAgZmxvYXQgYXZhaWxhYmxlTG9naWNhbFdpZHRoID0gbG9naWNhbFJpZ2h0IC0g
bG9naWNhbExlZnQ7CisgICAgYXZhaWxhYmxlTG9naWNhbFdpZHRoID0gbGluZUxvZ2ljYWxSaWdo
dCAtIGxpbmVMb2dpY2FsTGVmdDsKKyAgICBjb21wdXRlSW5saW5lRGlyZWN0aW9uUG9zaXRpb25z
Rm9yU2VnbWVudChsaW5lQm94LCBsaW5lSW5mbywgdGV4dEFsaWduLCBsaW5lTG9naWNhbExlZnQs
IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwgZmlyc3RSdW4sICB0cmFpbGluZ1NwYWNlUnVuLCB0ZXh0
Qm94RGF0YU1hcCwgdmVydGljYWxQb3NpdGlvbkNhY2hlLCB3b3JkTWVhc3VyZW1lbnRzKTsKKyAg
ICAvLyBUaGUgd2lkdGhzIG9mIGFsbCBydW5zIGFyZSBub3cga25vd24uIFdlIGNhbiBub3cgcGxh
Y2UgZXZlcnkgaW5saW5lIGJveCAoYW5kCisgICAgLy8gY29tcHV0ZSBhY2N1cmF0ZSB3aWR0aHMg
Zm9yIHRoZSBpbmxpbmUgZmxvdyBib3hlcykuCisgICAgbmVlZHNXb3JkU3BhY2luZyA9IGZhbHNl
OworICAgIGxpbmVCb3gtPnBsYWNlQm94ZXNJbklubGluZURpcmVjdGlvbihsaW5lTG9naWNhbExl
ZnQsIG5lZWRzV29yZFNwYWNpbmcsIHRleHRCb3hEYXRhTWFwKTsKK30KIAorQmlkaVJ1biogUmVu
ZGVyQmxvY2s6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlvbnNGb3JTZWdtZW50KFJvb3RJ
bmxpbmVCb3gqIGxpbmVCb3gsIGNvbnN0IExpbmVJbmZvJiBsaW5lSW5mbywgRVRleHRBbGlnbiB0
ZXh0QWxpZ24sIGZsb2F0JiBsb2dpY2FsTGVmdCwKKyAgICBmbG9hdCYgYXZhaWxhYmxlTG9naWNh
bFdpZHRoLCBCaWRpUnVuKiBmaXJzdFJ1biwgQmlkaVJ1biogdHJhaWxpbmdTcGFjZVJ1biwgR2x5
cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXAmIHRleHRCb3hEYXRhTWFwLCBWZXJ0aWNhbFBv
c2l0aW9uQ2FjaGUmIHZlcnRpY2FsUG9zaXRpb25DYWNoZSwKKyAgICBXb3JkTWVhc3VyZW1lbnRz
JiB3b3JkTWVhc3VyZW1lbnRzKQorewogICAgIGJvb2wgbmVlZHNXb3JkU3BhY2luZyA9IGZhbHNl
OwogICAgIGZsb2F0IHRvdGFsTG9naWNhbFdpZHRoID0gbGluZUJveC0+Z2V0Rmxvd1NwYWNpbmdM
b2dpY2FsV2lkdGgoKTsKICAgICB1bnNpZ25lZCBleHBhbnNpb25PcHBvcnR1bml0eUNvdW50ID0g
MDsKQEAgLTkwMSw3ICs5NDEsMTEgQEAgdm9pZCBSZW5kZXJCbG9jazo6Y29tcHV0ZUlubGluZURp
cmVjdGlvblBvc2l0aW9uc0ZvckxpbmUoUm9vdElubGluZUJveCogbGluZUJveCwKICAgICBWZWN0
b3I8dW5zaWduZWQsIDE2PiBleHBhbnNpb25PcHBvcnR1bml0aWVzOwogICAgIFJlbmRlck9iamVj
dCogcHJldmlvdXNPYmplY3QgPSAwOwogCi0gICAgZm9yIChCaWRpUnVuKiByID0gZmlyc3RSdW47
IHI7IHIgPSByLT5uZXh0KCkpIHsKKyAgICBCaWRpUnVuKiByID0gZmlyc3RSdW47CisgICAgZm9y
ICg7IHI7IHIgPSByLT5uZXh0KCkpIHsKKyAgICAgICAgLy8gRG8gbm90IHBhc3MgdGhlIG1hcmtl
ciBmb3IgdGhlIG5leHQgc2VnbWVudAorICAgICAgICBpZiAoci0+bV9zdGFydHNTZWdtZW50KQor
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGlmICghci0+bV9ib3ggfHwgci0+bV9vYmplY3Qt
PmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpIHx8IHItPm1fYm94LT5pc0xpbmVCcmVhaygpKQogICAg
ICAgICAgICAgY29udGludWU7IC8vIFBvc2l0aW9uZWQgb2JqZWN0cyBhcmUgb25seSBwYXJ0aWNp
cGF0aW5nIHRvIGZpZ3VyZSBvdXQgdGhlaXIKICAgICAgICAgICAgICAgICAgICAgICAvLyBjb3Jy
ZWN0IHN0YXRpYyB4IHBvc2l0aW9uLiAgVGhleSBoYXZlIG5vIGVmZmVjdCBvbiB0aGUgd2lkdGgu
CkBAIC05NTEsMTAgKzk5NSw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmNvbXB1dGVJbmxpbmVEaXJl
Y3Rpb25Qb3NpdGlvbnNGb3JMaW5lKFJvb3RJbmxpbmVCb3gqIGxpbmVCb3gsCiAKICAgICBjb21w
dXRlRXhwYW5zaW9uRm9ySnVzdGlmaWVkVGV4dChmaXJzdFJ1biwgdHJhaWxpbmdTcGFjZVJ1biwg
ZXhwYW5zaW9uT3Bwb3J0dW5pdGllcywgZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudCwgdG90YWxM
b2dpY2FsV2lkdGgsIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CiAKLSAgICAvLyBUaGUgd2lkdGhz
IG9mIGFsbCBydW5zIGFyZSBub3cga25vd24uICBXZSBjYW4gbm93IHBsYWNlIGV2ZXJ5IGlubGlu
ZSBib3ggKGFuZAotICAgIC8vIGNvbXB1dGUgYWNjdXJhdGUgd2lkdGhzIGZvciB0aGUgaW5saW5l
IGZsb3cgYm94ZXMpLgotICAgIG5lZWRzV29yZFNwYWNpbmcgPSBmYWxzZTsKLSAgICBsaW5lQm94
LT5wbGFjZUJveGVzSW5JbmxpbmVEaXJlY3Rpb24obG9naWNhbExlZnQsIG5lZWRzV29yZFNwYWNp
bmcsIHRleHRCb3hEYXRhTWFwKTsKKyAgICByZXR1cm4gcjsKIH0KIAogdm9pZCBSZW5kZXJCbG9j
azo6Y29tcHV0ZUJsb2NrRGlyZWN0aW9uUG9zaXRpb25zRm9yTGluZShSb290SW5saW5lQm94KiBs
aW5lQm94LCBCaWRpUnVuKiBmaXJzdFJ1biwgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNN
YXAmIHRleHRCb3hEYXRhTWFwLApAQCAtMTEwMSwxMyArMTE0MiwxMyBAQCBzdGF0aWMgaW5saW5l
IEJpZGlTdGF0dXMgc3RhdHVzV2l0aERpcmVjdGlvbihUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rp
b24sIGJvb2wgaQogfQogCiAvLyBGSVhNRTogQmlkaVJlc29sdmVyIHNob3VsZCBoYXZlIHRoaXMg
bG9naWMuCi1zdGF0aWMgaW5saW5lIHZvaWQgY29uc3RydWN0QmlkaVJ1bnMoSW5saW5lQmlkaVJl
c29sdmVyJiB0b3BSZXNvbHZlciwgQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4mIGJpZGlSdW5zLCBjb25z
dCBJbmxpbmVJdGVyYXRvciYgZW5kT2ZMaW5lLCBWaXN1YWxEaXJlY3Rpb25PdmVycmlkZSBvdmVy
cmlkZSwgYm9vbCBwcmV2aW91c0xpbmVCcm9rZUNsZWFubHkpCitzdGF0aWMgaW5saW5lIHZvaWQg
Y29uc3RydWN0QmlkaVJ1bnNGb3JTZWdtZW50KElubGluZUJpZGlSZXNvbHZlciYgdG9wUmVzb2x2
ZXIsIEJpZGlSdW5MaXN0PEJpZGlSdW4+JiBiaWRpUnVucywgY29uc3QgSW5saW5lSXRlcmF0b3Im
IGVuZE9mUnVucywgVmlzdWFsRGlyZWN0aW9uT3ZlcnJpZGUgb3ZlcnJpZGUsIGJvb2wgcHJldmlv
dXNMaW5lQnJva2VDbGVhbmx5KQogewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcGFzcyBhIEJp
ZGlSdW5MaXN0IGludG8gY3JlYXRlQmlkaVJ1bnNGb3JMaW5lIGluc3RlYWQKICAgICAvLyBvZiB0
aGUgcmVzb2x2ZXIgb3duaW5nIHRoZSBydW5zLgogICAgIEFTU0VSVCgmdG9wUmVzb2x2ZXIucnVu
cygpID09ICZiaWRpUnVucyk7CiAgICAgUmVuZGVyT2JqZWN0KiBjdXJyZW50Um9vdCA9IHRvcFJl
c29sdmVyLnBvc2l0aW9uKCkucm9vdCgpOwotICAgIHRvcFJlc29sdmVyLmNyZWF0ZUJpZGlSdW5z
Rm9yTGluZShlbmRPZkxpbmUsIG92ZXJyaWRlLCBwcmV2aW91c0xpbmVCcm9rZUNsZWFubHkpOwor
ICAgIHRvcFJlc29sdmVyLmNyZWF0ZUJpZGlSdW5zRm9yTGluZShlbmRPZlJ1bnMsIG92ZXJyaWRl
LCBwcmV2aW91c0xpbmVCcm9rZUNsZWFubHkpOwogCiAgICAgd2hpbGUgKCF0b3BSZXNvbHZlci5p
c29sYXRlZFJ1bnMoKS5pc0VtcHR5KCkpIHsKICAgICAgICAgLy8gSXQgZG9lcyBub3QgbWF0dGVy
IHdoaWNoIG9yZGVyIHdlIHJlc29sdmUgdGhlIHJ1bnMgYXMgbG9uZyBhcyB3ZSByZXNvbHZlIHRo
ZW0gYWxsLgpAQCAtMTE0Nyw3ICsxMTg4LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGNvbnN0cnVj
dEJpZGlSdW5zKElubGluZUJpZGlSZXNvbHZlciYgdG9wUmVzb2x2ZXIsIEJpZGlSdW5MaXMKICAg
ICAgICAgLy8gV2Ugc3RvcCBhdCB0aGUgbmV4dCBlbmQgb2YgbGluZTsgd2UgbWF5IHJlLWVudGVy
IHRoaXMgaXNvbGF0ZSBpbiB0aGUgbmV4dCBjYWxsIHRvIGNvbnN0cnVjdEJpZGlSdW5zKCkuCiAg
ICAgICAgIC8vIEZJWE1FOiBXaGF0IHNob3VsZCBlbmQgYW5kIHByZXZpb3VzTGluZUJyb2tlQ2xl
YW5seSBiZT8KICAgICAgICAgLy8gcm5pd2Egc2F5cyBwcmV2aW91c0xpbmVCcm9rZUNsZWFubHkg
aXMganVzdCBhIFdpbklFIGhhY2sgYW5kIGNvdWxkIGFsd2F5cyBiZSBmYWxzZSBoZXJlPwotICAg
ICAgICBpc29sYXRlZFJlc29sdmVyLmNyZWF0ZUJpZGlSdW5zRm9yTGluZShlbmRPZkxpbmUsIE5v
VmlzdWFsT3ZlcnJpZGUsIHByZXZpb3VzTGluZUJyb2tlQ2xlYW5seSk7CisgICAgICAgIGlzb2xh
dGVkUmVzb2x2ZXIuY3JlYXRlQmlkaVJ1bnNGb3JMaW5lKGVuZE9mUnVucywgTm9WaXN1YWxPdmVy
cmlkZSwgcHJldmlvdXNMaW5lQnJva2VDbGVhbmx5KTsKICAgICAgICAgLy8gTm90ZSB0aGF0IHdl
IGRvIG5vdCBkZWxldGUgdGhlIHJ1bnMgZnJvbSB0aGUgcmVzb2x2ZXIuCiAgICAgICAgIC8vIFdl
J3JlIG5vdCBndWFyYW50ZWVkIHRvIGdldCBhbnkgQmlkaVJ1bnMgaW4gdGhlIHByZXZpb3VzIHN0
ZXAuIElmIHdlIGRvbid0LCB3ZSBhbGxvdyB0aGUgcGxhY2Vob2xkZXIKICAgICAgICAgLy8gaXRz
ZWxmIHRvIGJlIHR1cm5lZCBpbnRvIGFuIElubGluZUJveC4gV2UgY2FuJ3QgcmVtb3ZlIGl0IGhl
cmUgd2l0aG91dCBwb3RlbnRpYWxseSBsb3NpbmcgdHJhY2sgb2YKQEAgLTExNjQsNiArMTIwNSwz
NyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgY29uc3RydWN0QmlkaVJ1bnMoSW5saW5lQmlkaVJlc29s
dmVyJiB0b3BSZXNvbHZlciwgQmlkaVJ1bkxpcwogICAgIH0KIH0KIAorc3RhdGljIGlubGluZSB2
b2lkIGNvbnN0cnVjdEJpZGlSdW5zRm9yTGluZShjb25zdCBSZW5kZXJCbG9jayogYmxvY2ssIElu
bGluZUJpZGlSZXNvbHZlciYgdG9wUmVzb2x2ZXIsIEJpZGlSdW5MaXN0PEJpZGlSdW4+JiBiaWRp
UnVucywgY29uc3QgSW5saW5lSXRlcmF0b3ImIGVuZE9mTGluZSwgVmlzdWFsRGlyZWN0aW9uT3Zl
cnJpZGUgb3ZlcnJpZGUsIGJvb2wgcHJldmlvdXNMaW5lQnJva2VDbGVhbmx5KQoreworI2lmICFF
TkFCTEUoQ1NTX0VYQ0xVU0lPTlMpCisgICAgY29uc3RydWN0QmlkaVJ1bnNGb3JTZWdtZW50KHRv
cFJlc29sdmVyLCBiaWRpUnVucywgZW5kT2ZMaW5lLCBvdmVycmlkZSwgcHJldmlvdXNMaW5lQnJv
a2VDbGVhbmx5KTsKKyNlbHNlCisgICAgRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvKiBleGNsdXNp
b25TaGFwZUluc2lkZUluZm8gPSBsYXlvdXRFeGNsdXNpb25TaGFwZUluc2lkZUluZm8oYmxvY2sp
OworICAgIGlmICghZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvIHx8ICFleGNsdXNpb25TaGFwZUlu
c2lkZUluZm8tPmhhc1NlZ21lbnRzKCkpIHsKKyAgICAgICAgY29uc3RydWN0QmlkaVJ1bnNGb3JT
ZWdtZW50KHRvcFJlc29sdmVyLCBiaWRpUnVucywgZW5kT2ZMaW5lLCBvdmVycmlkZSwgcHJldmlv
dXNMaW5lQnJva2VDbGVhbmx5KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbnN0
IFNlZ21lbnRSYW5nZUxpc3QmIHNlZ21lbnRSYW5nZXMgPSBleGNsdXNpb25TaGFwZUluc2lkZUlu
Zm8tPnNlZ21lbnRSYW5nZXMoKTsKKyAgICBBU1NFUlQoc2VnbWVudFJhbmdlcy5zaXplKCkpOwor
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzZWdtZW50UmFuZ2VzLnNpemUoKTsgaSsrKSB7
CisgICAgICAgIElubGluZUl0ZXJhdG9yIHNlZ21lbnRTdGFydCA9IHNlZ21lbnRSYW5nZXNbaV0u
c3RhcnQ7CisgICAgICAgIElubGluZUl0ZXJhdG9yIHNlZ21lbnRFbmQgPSBzZWdtZW50UmFuZ2Vz
W2ldLmVuZDsKKyAgICAgICAgaWYgKGkpIHsKKyAgICAgICAgICAgIEFTU0VSVChzZWdtZW50U3Rh
cnQubV9vYmopOworICAgICAgICAgICAgQmlkaVJ1biogc2VnbWVudE1hcmtlciA9IGNyZWF0ZVJ1
bihzZWdtZW50U3RhcnQubV9wb3MsIHNlZ21lbnRTdGFydC5tX3Bvcywgc2VnbWVudFN0YXJ0Lm1f
b2JqLCB0b3BSZXNvbHZlcik7CisgICAgICAgICAgICBzZWdtZW50TWFya2VyLT5tX3N0YXJ0c1Nl
Z21lbnQgPSB0cnVlOworICAgICAgICAgICAgYmlkaVJ1bnMuYWRkUnVuKHNlZ21lbnRNYXJrZXIp
OworICAgICAgICAgICAgLy8gRG8gbm90IGNvbGxhcHNlIG1pZHBvaW50cyBiZXR3ZWVuIHNlZ21l
bnRzCisgICAgICAgICAgICB0b3BSZXNvbHZlci5taWRwb2ludFN0YXRlKCkuYmV0d2Vlbk1pZHBv
aW50cyA9IGZhbHNlOworICAgICAgICB9CisgICAgICAgIHRvcFJlc29sdmVyLnNldFBvc2l0aW9u
KHNlZ21lbnRTdGFydCwgbnVtYmVyT2ZJc29sYXRlQW5jZXN0b3JzKHNlZ21lbnRTdGFydCkpOwor
ICAgICAgICBjb25zdHJ1Y3RCaWRpUnVuc0ZvclNlZ21lbnQodG9wUmVzb2x2ZXIsIGJpZGlSdW5z
LCBzZWdtZW50RW5kLCBvdmVycmlkZSwgcHJldmlvdXNMaW5lQnJva2VDbGVhbmx5KTsKKyAgICB9
CisjZW5kaWYKK30KKwogLy8gVGhpcyBmdW5jdGlvbiBjb25zdHJ1Y3RzIGxpbmUgYm94ZXMgZm9y
IGFsbCBvZiB0aGUgdGV4dCBydW5zIGluIHRoZSByZXNvbHZlciBhbmQgY29tcHV0ZXMgdGhlaXIg
cG9zaXRpb24uCiBSb290SW5saW5lQm94KiBSZW5kZXJCbG9jazo6Y3JlYXRlTGluZUJveGVzRnJv
bUJpZGlSdW5zKEJpZGlSdW5MaXN0PEJpZGlSdW4+JiBiaWRpUnVucywgY29uc3QgSW5saW5lSXRl
cmF0b3ImIGVuZCwgTGluZUluZm8mIGxpbmVJbmZvLCBWZXJ0aWNhbFBvc2l0aW9uQ2FjaGUmIHZl
cnRpY2FsUG9zaXRpb25DYWNoZSwgQmlkaVJ1biogdHJhaWxpbmdTcGFjZVJ1biwgV29yZE1lYXN1
cmVtZW50cyYgd29yZE1lYXN1cmVtZW50cykKIHsKQEAgLTE0NjEsNyArMTUzMyw3IEBAIHZvaWQg
UmVuZGVyQmxvY2s6OmxheW91dFJ1bnNBbmRGbG9hdHNJblJhbmdlKExpbmVMYXlvdXRTdGF0ZSYg
bGF5b3V0U3RhdGUsIElubGluCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBGSVhNRTog
VGhpcyBvd25lcnNoaXAgaXMgcmV2ZXJzZWQuIFdlIHNob3VsZCBvd24gdGhlIEJpZGlSdW5MaXN0
IGFuZCBwYXNzIGl0IHRvIGNyZWF0ZUJpZGlSdW5zRm9yTGluZS4KICAgICAgICAgICAgIEJpZGlS
dW5MaXN0PEJpZGlSdW4+JiBiaWRpUnVucyA9IHJlc29sdmVyLnJ1bnMoKTsKLSAgICAgICAgICAg
IGNvbnN0cnVjdEJpZGlSdW5zKHJlc29sdmVyLCBiaWRpUnVucywgZW5kLCBvdmVycmlkZSwgbGF5
b3V0U3RhdGUubGluZUluZm8oKS5wcmV2aW91c0xpbmVCcm9rZUNsZWFubHkoKSk7CisgICAgICAg
ICAgICBjb25zdHJ1Y3RCaWRpUnVuc0ZvckxpbmUodGhpcywgcmVzb2x2ZXIsIGJpZGlSdW5zLCBl
bmQsIG92ZXJyaWRlLCBsYXlvdXRTdGF0ZS5saW5lSW5mbygpLnByZXZpb3VzTGluZUJyb2tlQ2xl
YW5seSgpKTsKICAgICAgICAgICAgIEFTU0VSVChyZXNvbHZlci5wb3NpdGlvbigpID09IGVuZCk7
CiAKICAgICAgICAgICAgIEJpZGlSdW4qIHRyYWlsaW5nU3BhY2VSdW4gPSAhbGF5b3V0U3RhdGUu
bGluZUluZm8oKS5wcmV2aW91c0xpbmVCcm9rZUNsZWFubHkoKSA/IGhhbmRsZVRyYWlsaW5nU3Bh
Y2VzKGJpZGlSdW5zLCByZXNvbHZlci5jb250ZXh0KCkpIDogMDsKQEAgLTIzMTQsNiArMjM4Niw0
OCBAQCB2b2lkIFJlbmRlckJsb2NrOjpMaW5lQnJlYWtlcjo6cmVzZXQoKQogCiBJbmxpbmVJdGVy
YXRvciBSZW5kZXJCbG9jazo6TGluZUJyZWFrZXI6Om5leHRMaW5lQnJlYWsoSW5saW5lQmlkaVJl
c29sdmVyJiByZXNvbHZlciwgTGluZUluZm8mIGxpbmVJbmZvLCBSZW5kZXJUZXh0SW5mbyYgcmVu
ZGVyVGV4dEluZm8sIEZsb2F0aW5nT2JqZWN0KiBsYXN0RmxvYXRGcm9tUHJldmlvdXNMaW5lLCB1
bnNpZ25lZCBjb25zZWN1dGl2ZUh5cGhlbmF0ZWRMaW5lcywgV29yZE1lYXN1cmVtZW50cyYgd29y
ZE1lYXN1cmVtZW50cykKIHsKKyNpZiAhRU5BQkxFKENTU19FWENMVVNJT05TKQorICAgIHJldHVy
biBuZXh0U2VnbWVudEJyZWFrKHJlc29sdmVyLCBsaW5lSW5mbywgcmVuZGVyVGV4dEluZm8sIGxh
c3RGbG9hdEZyb21QcmV2aW91c0xpbmUsIGNvbnNlY3V0aXZlSHlwaGVuYXRlZExpbmVzLCB3b3Jk
TWVhc3VyZW1lbnRzKTsKKyNlbHNlCisgICAgRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvKiBleGNs
dXNpb25TaGFwZUluc2lkZUluZm8gPSBsYXlvdXRFeGNsdXNpb25TaGFwZUluc2lkZUluZm8obV9i
bG9jayk7CisgICAgaWYgKCFleGNsdXNpb25TaGFwZUluc2lkZUluZm8gfHwgIWV4Y2x1c2lvblNo
YXBlSW5zaWRlSW5mby0+aGFzU2VnbWVudHMoKSkKKyAgICAgICAgcmV0dXJuIG5leHRTZWdtZW50
QnJlYWsocmVzb2x2ZXIsIGxpbmVJbmZvLCByZW5kZXJUZXh0SW5mbywgbGFzdEZsb2F0RnJvbVBy
ZXZpb3VzTGluZSwgY29uc2VjdXRpdmVIeXBoZW5hdGVkTGluZXMsIHdvcmRNZWFzdXJlbWVudHMp
OworCisgICAgSW5saW5lSXRlcmF0b3IgZW5kID0gcmVzb2x2ZXIucG9zaXRpb24oKTsKKyAgICBJ
bmxpbmVJdGVyYXRvciBvbGRFbmQgPSBlbmQ7CisKKyAgICBjb25zdCBTZWdtZW50TGlzdCYgc2Vn
bWVudHMgPSBleGNsdXNpb25TaGFwZUluc2lkZUluZm8tPnNlZ21lbnRzKCk7CisgICAgU2VnbWVu
dFJhbmdlTGlzdCYgc2VnbWVudFJhbmdlcyA9IGV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby0+c2Vn
bWVudFJhbmdlcygpOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNlZ21lbnRzLnNp
emUoKTsgaSsrKSB7CisgICAgICAgIElubGluZUl0ZXJhdG9yIHNlZ21lbnRTdGFydCA9IHJlc29s
dmVyLnBvc2l0aW9uKCk7CisgICAgICAgIGVuZCA9IG5leHRTZWdtZW50QnJlYWsocmVzb2x2ZXIs
IGxpbmVJbmZvLCByZW5kZXJUZXh0SW5mbywgbGFzdEZsb2F0RnJvbVByZXZpb3VzTGluZSwgY29u
c2VjdXRpdmVIeXBoZW5hdGVkTGluZXMsIHdvcmRNZWFzdXJlbWVudHMpOworCisgICAgICAgIEFT
U0VSVChzZWdtZW50UmFuZ2VzLnNpemUoKSA9PSBpKTsKKyAgICAgICAgaWYgKHJlc29sdmVyLnBv
c2l0aW9uKCkgPT0gZW5kKSB7CisgICAgICAgICAgICAvLyBOb3RoaW5nIGZpdCB0aGlzIHNlZ21l
bnQKKyAgICAgICAgICAgIHNlZ21lbnRSYW5nZXMuYXBwZW5kKExpbmVTZWdtZW50UmFuZ2Uoc2Vn
bWVudFN0YXJ0LCBzZWdtZW50U3RhcnQpKTsKKyAgICAgICAgICAgIHJlc29sdmVyLnNldFBvc2l0
aW9uSWdub3JpbmdOZXN0ZWRJc29sYXRlcyhzZWdtZW50U3RhcnQpOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHJlc29sdmVyLnBvc2l0aW9uIGlzIGFscmVhZHkg
c2tpcHBpbmcgc29tZSBvZiB0aGUgd2hpdGUgc3BhY2UgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUg
bGluZSwKKyAgICAgICAgICAgIC8vIHNvIHRoYXQncyB3aHkgc2VnbWVudFN0YXJ0IG1pZ2h0IGJl
IGRpZmZlcmVudCB0aGFuIHJlc29sdmVyLnBvc2l0aW9uKCkuCisgICAgICAgICAgICBMaW5lU2Vn
bWVudFJhbmdlIHJhbmdlKHJlc29sdmVyLnBvc2l0aW9uKCksIGVuZCk7CisgICAgICAgICAgICBz
ZWdtZW50UmFuZ2VzLmFwcGVuZChyYW5nZSk7CisgICAgICAgICAgICByZXNvbHZlci5zZXRQb3Np
dGlvbihlbmQsIG51bWJlck9mSXNvbGF0ZUFuY2VzdG9ycyhlbmQpKTsKKworICAgICAgICAgICAg
aWYgKGxpbmVJbmZvLnByZXZpb3VzTGluZUJyb2tlQ2xlYW5seSgpKSB7CisgICAgICAgICAgICAg
ICAgLy8gSWYgd2UgaGl0IGEgbmV3IGxpbmUgYnJlYWssIGp1c3Qgc3RvcCBhZGRpbmcgYW55dGhp
bmcgdG8gdGhpcyBsaW5lLgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorICAgIHJlc29sdmVyLnNldFBvc2l0aW9uSWdub3JpbmdOZXN0ZWRJ
c29sYXRlcyhvbGRFbmQpOworICAgIHJldHVybiBlbmQ7CisjZW5kaWYKK30KKworSW5saW5lSXRl
cmF0b3IgUmVuZGVyQmxvY2s6OkxpbmVCcmVha2VyOjpuZXh0U2VnbWVudEJyZWFrKElubGluZUJp
ZGlSZXNvbHZlciYgcmVzb2x2ZXIsIExpbmVJbmZvJiBsaW5lSW5mbywgUmVuZGVyVGV4dEluZm8m
IHJlbmRlclRleHRJbmZvLCBGbG9hdGluZ09iamVjdCogbGFzdEZsb2F0RnJvbVByZXZpb3VzTGlu
ZSwgdW5zaWduZWQgY29uc2VjdXRpdmVIeXBoZW5hdGVkTGluZXMsIFdvcmRNZWFzdXJlbWVudHMm
IHdvcmRNZWFzdXJlbWVudHMpCit7CiAgICAgcmVzZXQoKTsKIAogICAgIEFTU0VSVChyZXNvbHZl
ci5wb3NpdGlvbigpLnJvb3QoKSA9PSBtX2Jsb2NrKTsKQEAgLTI4OTUsNiArMzAwOSw4IEBAIElu
bGluZUl0ZXJhdG9yIFJlbmRlckJsb2NrOjpMaW5lQnJlYWtlcjo6bmV4dExpbmVCcmVhayhJbmxp
bmVCaWRpUmVzb2x2ZXImIHJlc29sCiAgICAgICAgIH0KICAgICB9CiAKKyAgICAvLyBGSVhNRSBC
dWcgMTAwMDQ5OiBXZSBkbyBub3QgbmVlZCB0byBjb25zdW1lIGlucHV0IGluIGEgbXVsdGktc2Vn
bWVudCBsaW5lCisgICAgLy8gdW5sZXNzIG5vIHNlZ21lbnQgd2lsbC4KICAgICAvLyBtYWtlIHN1
cmUgd2UgY29uc3VtZSBhdCBsZWFzdCBvbmUgY2hhci9vYmplY3QuCiAgICAgaWYgKGxCcmVhayA9
PSByZXNvbHZlci5wb3NpdGlvbigpKQogICAgICAgICBsQnJlYWsuaW5jcmVtZW50KCk7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggNzhhNTg0ZTI2M2I3NWE2MWZhNzJhMWNmODNjNWYzYjU4MWE5OTBiNS4uMDQzOGM2NGYyYzAw
OTVhMTZmZTg3OTAwMjY5NTA0YTJkNDQ2NTRmMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEy
LTExLTAyICBCZWFyIFRyYXZpcyAgPGJldHJhdmlzQGFkb2JlLmNvbT4KKworICAgICAgICBbQ1NT
IEV4Y2x1c2lvbnNdIEVuYWJsZSBzaGFwZS1pbnNpZGUgZm9yIG11bHRpcGxlLXNlZ21lbnQgcG9s
eWdvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkx
ODc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
aW5nIHRlc3RzIGZvciBtdWx0aXBsZSBzZWdtZW50IHBvbHlnb25zLiBUaGVzZSB0ZXN0cyBtYWtl
IHN1cmUgdGhhdCB0ZXh0IGNhbiBiZQorICAgICAgICBwcm9wZXJseSBicm9rZW4gdXAgaW50byBt
dWx0aXBsZSBzZWdtZW50cyBwZXIgbGluZSB0byBmaXQgaW50byBhIHNoYXBlLWluc2lkZS4KKwor
ICAgICAgICAqIGZhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRp
cGxlLXNlZ21lbnRzLTAwMS1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V4
Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDEu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFw
ZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAyLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxl
LXNlZ21lbnRzLTAwMi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hh
cGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDMtZXhwZWN0ZWQuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1p
bnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNlZ21lbnRzLTAw
NC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUt
aW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDQuaHRtbDogQWRkZWQuCisK
IDIwMTItMTEtMDIgIElhbiBWb2xsaWNrICA8dm9sbGlja0BjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgU3VwcG9ydCBpbnZhbGlkYXRpb24gdHJhY2tpbmcgZm9yIGNvbXBvc2l0ZWQgbGF5ZXJzCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvcmVzb3VyY2VzL211bHRpLXNl
Z21lbnQtcG9seWdvbi5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9yZXNvdXJjZXMv
bXVsdGktc2VnbWVudC1wb2x5Z29uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2MzQ2ZTE2ODE2NzAwZTk1N2Iy
MjQ3MDViNTk2NTBlNmM2NjkzZmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2V4Y2x1c2lvbnMvcmVzb3VyY2VzL211bHRpLXNlZ21lbnQtcG9seWdvbi5qcwpAQCAtMCwwICsx
LDM3IEBACitmdW5jdGlvbiBnZW5lcmF0ZVBvbHlnb24od2lkdGgsIGhlaWdodCwgZm9udFNpemUs
IHBvaW50cywgY29udGVudCwgZWxlbWVudElkKSB7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMp
CisgICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0Q1NTRXhjbHVzaW9uc0VuYWJs
ZWQodHJ1ZSk7CisgICAgdmFyIGRpdiA9IGNyZWF0ZU9ySW5zZXJ0KGVsZW1lbnRJZCk7CisgICAg
dmFyIHBvbHlnb24gPSBwb2ludHMubWFwKGZ1bmN0aW9uKGVsZW0sIGluZGV4LCBhcnJheSkgewor
ICAgICAgICByZXR1cm4gZWxlbS50b1N0cmluZygpICsgJ3B4JyArIChpbmRleCA8IGFycmF5Lmxl
bmd0aCAtIDEgJiYgaW5kZXggJSAyID09IDEgPyAnLCcgOiAnJyk7CisgICAgfSkuam9pbignICcp
OworICAgIHBvbHlnb24gPSAncG9seWdvbignICsgcG9seWdvbiArICcpJzsKKyAgICBkaXYuc3R5
bGUuc2V0UHJvcGVydHkoJy13ZWJraXQtc2hhcGUtaW5zaWRlJywgcG9seWdvbik7CisgICAgZGl2
LnN0eWxlLnNldFByb3BlcnR5KCd3aWR0aCcsIHdpZHRoICsgJ3B4Jyk7CisgICAgZGl2LnN0eWxl
LnNldFByb3BlcnR5KCdoZWlnaHQnLCBoZWlnaHQgKyAncHgnKTsKKyAgICBkaXYuc3R5bGUuc2V0
UHJvcGVydHkoJ2ZvbnQnLCBmb250U2l6ZSArICdweC8xIEFoZW0sIHNhbnMtc2VyaWYnKTsKKyAg
ICBkaXYuc3R5bGUuc2V0UHJvcGVydHkoJ2NvbG9yJywgJ2dyZWVuJyk7CisgICAgZGl2LnN0eWxl
LnNldFByb3BlcnR5KCd3b3JkLXdyYXAnLCAnYnJlYWstd29yZCcpOworICAgIGRpdi5pbm5lckhU
TUwgPSBjb250ZW50OworfQorCitmdW5jdGlvbiBzaW11bGF0ZVdpdGhUZXh0KHdpZHRoLCBoZWln
aHQsIGZvbnRTaXplLCBjb250ZW50LCBlbGVtZW50SWQpIHsKKyAgICB2YXIgZGl2ID0gY3JlYXRl
T3JJbnNlcnQoZWxlbWVudElkKTsKKyAgICBkaXYuc3R5bGUuc2V0UHJvcGVydHkoJ3dpZHRoJywg
d2lkdGggKyAncHgnKTsKKyAgICBkaXYuc3R5bGUuc2V0UHJvcGVydHkoJ2hlaWdodCcsIGhlaWdo
dCArICdweCcpOworICAgIGRpdi5zdHlsZS5zZXRQcm9wZXJ0eSgnZm9udCcsIGZvbnRTaXplICsg
J3B4LzEgQWhlbSwgc2Fucy1zZXJpZicpOworICAgIGRpdi5zdHlsZS5zZXRQcm9wZXJ0eSgnY29s
b3InLCAnZ3JlZW4nKTsKKyAgICBkaXYuaW5uZXJIVE1MID0gY29udGVudDsKK30KKworZnVuY3Rp
b24gY3JlYXRlT3JJbnNlcnQoZWxlbWVudElkKSB7CisgICAgaWYgKGVsZW1lbnRJZCkKKyAgICAg
ICAgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCk7CisKKyAgICB2YXIg
ZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgaWYgKGRvY3VtZW50LmJv
ZHkuY2hpbGROb2Rlcy5sZW5ndGgpCisgICAgICAgIGRvY3VlbW50LmJvZHkuaW5zZXJ0QmVmb3Jl
KGRpdiwgZG9jdW1lbnQuYm9keS5jaGlsZE5vZGVzWzBdKTsKKyAgICBlbHNlCisgICAgICAgIGRv
Y3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGl2KTsKKyAgICByZXR1cm4gZGl2OworfQpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVz
aW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNlZ21lbnRzLTAwMS1leHBl
Y3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFw
ZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAxLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MjE4OWUzZjQyODc4NGFhNWMyMmFiZTMwZTNlMGU2ZTRjZDU1M2I1YQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRl
LW11bHRpcGxlLXNlZ21lbnRzLTAwMS1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsOSBAQAorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPScuLi9yZXNvdXJjZXMvbXVsdGktc2VnbWVudC1wb2x5
Z29uLmpzJz48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ic2ltdWxhdGVXaXRoVGV4
dCgyNTAsIDEwMCwgNTAsICdYWCBYWCBYWFhYWCcpIj4KK1RoaXMgdGVzdCByZXF1aXJlcyB0aGUg
QWhlbSBmb250LCBhbmQgc2hvdWxkIGRpc3BsYXkgYSA1eDIgZ3JpZCBvZiBncmVlbiBzcXVhcmVz
LCB3aXRoIG9uZSBtaXNzaW5nIGluIHRoZSBjZW50ZXIgb2YgdGhlIHRvcCByb3cuCitJdCB0ZXN0
cyB0aGF0IGEgbGluZSBtYXkgY29udGFpbiBtdWx0aXBsZSBzZWdtZW50cyBvZiB0ZXh0LgorPC9i
b2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRp
cGxlLXNlZ21lbnRzLTAwMS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBl
LWluc2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAxLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMGI2ZTZlMWQ4OGM3ZGVkYjllM2VkZDMzMWUzNjE2ZWUwOTdmYmZlMwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5z
aWRlLW11bHRpcGxlLXNlZ21lbnRzLTAwMS5odG1sCkBAIC0wLDAgKzEsOSBAQAorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQgc3JjPScuLi9yZXNvdXJjZXMvbXVsdGktc2VnbWVudC1wb2x5Z29uLmpz
Jz48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0iZ2VuZXJhdGVQb2x5Z29uKDI1MCwg
MTAwLCA1MCwgWzAsMCwxMDAsMCwxMDAsMjUsMTUwLDI1LDE1MCwwLDI1MCwwLDI1MCwxMDAsMCwx
MDBdLCAnWFhYWFhYWFhYJykiPgorVGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBBaGVtIGZvbnQsIGFu
ZCBzaG91bGQgZGlzcGxheSBhIDV4MiBncmlkIG9mIGdyZWVuIHNxdWFyZXMsIHdpdGggb25lIG1p
c3NpbmcgaW4gdGhlIGNlbnRlciBvZiB0aGUgdG9wIHJvdy4KK0l0IHRlc3RzIHRoYXQgYSBsaW5l
IG1heSBjb250YWluIG11bHRpcGxlIHNlZ21lbnRzIG9mIHRleHQuCis8L2JvZHk+Cis8L2h0bWw+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMt
MDAyLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5z
aWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDItZXhwZWN0ZWQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xNmJkYWUyYmI4Y2ExNTBhNjhkYWRiODNjZTJjNDEyOTdmOGNlZDA1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFw
ZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAyLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSw5
IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Jy4uL3Jlc291cmNlcy9tdWx0aS1zZWdt
ZW50LXBvbHlnb24uanMnPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJzaW11bGF0
ZVdpdGhUZXh0KDI1MCwgMTAwLCA1MCwgJ1hYWFhYIFhYIFhYJykiPgorVGhpcyB0ZXN0IHJlcXVp
cmVzIHRoZSBBaGVtIGZvbnQsIGFuZCBzaG91bGQgZGlzcGxheSBhIDV4MiBncmlkIG9mIGdyZWVu
IHNxdWFyZXMsIHdpdGggb25lIG1pc3NpbmcgaW4gdGhlIGNlbnRlciBvZiB0aGUgYm90dG9tIHJv
dy4KK0l0IHRlc3RzIHRoYXQgYSBsaW5lIG1heSBjb250YWluIG11bHRpcGxlIHNlZ21lbnRzIG9m
IHRleHQuCis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1p
bnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1
c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDIuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42NTExYjY5ZmQ3MTcyNjYwYWJhZDI1NDk2OTMzN2I5NGVjM2U1YmFlCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lk
ZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAyLmh0bWwKQEAgLTAsMCArMSw5IEBA
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Jy4uL3Jlc291cmNlcy9tdWx0aS1zZWdtZW50
LXBvbHlnb24uanMnPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJnZW5lcmF0ZVBv
bHlnb24oMjUwLCAxMDAsIDUwLCBbMCwwLDI1MCwwLDI1MCwxMDEsMTUwLDEwMSwxNTAsNzUsMTAw
LDc1LDEwMCwxMDEsMCwxMDFdLCAnWFhYWFhYWFhYJykiPgorVGhpcyB0ZXN0IHJlcXVpcmVzIHRo
ZSBBaGVtIGZvbnQsIGFuZCBzaG91bGQgZGlzcGxheSBhIDV4MiBncmlkIG9mIGdyZWVuIHNxdWFy
ZXMsIHdpdGggb25lIG1pc3NpbmcgaW4gdGhlIGNlbnRlciBvZiB0aGUgYm90dG9tIHJvdy4KK0l0
IHRlc3RzIHRoYXQgYSBsaW5lIG1heSBjb250YWluIG11bHRpcGxlIHNlZ21lbnRzIG9mIHRleHQu
Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUt
bXVsdGlwbGUtc2VnbWVudHMtMDAzLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V4
Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDMt
ZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNTUxZDVjZjE5ZGRhNjFjZGNhYjRjZjQyZjEzZDYy
YjFmODVlYTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25z
L3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAzLWV4cGVjdGVk
Lmh0bWwKQEAgLTAsMCArMSw5IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Jy4uL3Jl
c291cmNlcy9tdWx0aS1zZWdtZW50LXBvbHlnb24uanMnPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHkgb25sb2FkPSJzaW11bGF0ZVdpdGhUZXh0KDI1MCwgMTAwLCA1MCwgJ1hYPGJyLz5YWCcpIj4K
K1RoaXMgdGVzdCByZXF1aXJlcyB0aGUgQWhlbSBmb250LCBhbmQgc2hvdWxkIGRpc3BsYXkgYSAy
eDIgZ3JlZW4gc3F1YXJlLgorSXQgdGVzdHMgdGhhdCBhIGxpbmUgYnJlYWsgbW92ZXMgdGV4dCBk
b3duLCBub3QganVzdCB0byB0aGUgbmV4dCBzZWdtZW50LgorPC9ib2R5PgorPC9odG1sPgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXhj
bHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNlZ21lbnRzLTAwMy5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNp
ZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDUxNTk4MjgyMGQwZWEy
ZjMzNTI1MWVmMzQ3NGRhNDAxMjAzZTY4OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNlZ21l
bnRzLTAwMy5odG1sCkBAIC0wLDAgKzEsOSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PScuLi9yZXNvdXJjZXMvbXVsdGktc2VnbWVudC1wb2x5Z29uLmpzJz48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5IG9ubG9hZD0iZ2VuZXJhdGVQb2x5Z29uKDI1MCwgMTAwLCA1MCwgWzAsMCwxMDAs
MCwxMDAsMjUsMTUwLDI1LDE1MCwwLDI1MCwwLDI1MCwxMDAsMCwxMDBdLCAnWFg8YnIvPlhYJyki
PgorVGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBBaGVtIGZvbnQsIGFuZCBzaG91bGQgZGlzcGxheSBh
IDJ4MiBncmVlbiBzcXVhcmUuCitJdCB0ZXN0cyB0aGF0IGEgbGluZSBicmVhayBtb3ZlcyB0ZXh0
IGRvd24sIG5vdCBqdXN0IHRvIHRoZSBuZXh0IHNlZ21lbnQuCis8L2JvZHk+Cis8L2h0bWw+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9l
eGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDA0
LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRl
L3NoYXBlLWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDQtZXhwZWN0ZWQuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42YmQ1OGQyNWI0ZGY5NDE5MDYyZTI2N2RiZTNkNTFjMzYwY2RjMDllCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1p
bnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDA0LWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwyOCBA
QAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPScuLi9yZXNvdXJjZXMvbXVsdGktc2VnbWVu
dC1wb2x5Z29uLmpzJz48L3NjcmlwdD4KKzxzY3JpcHQ+CisgICAgd2luZG93Lm9ubG9hZCA9IGZ1
bmN0aW9uKCkgeworICAgICAgICBzaW11bGF0ZVdpdGhUZXh0KDI1MCwgMTAwLCAxMDAsICJYPHNw
YW4gc3R5bGU9J2ZvbnQtc2l6ZTouNWVtJz4gPC9zcGFuPlgiLCAnc2hhcGUxJyk7CisgICAgICAg
IHNpbXVsYXRlV2l0aFRleHQoMjUwLCAxMDAsIDUwLCAiPHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToy
ZW0nPlg8L3NwYW4+IFhYIiwgJ3NoYXBlMicpOworICAgICAgICBzaW11bGF0ZVdpdGhUZXh0KDI1
MCwgMTAwLCA1MCwgIlhYIDxzcGFuIHN0eWxlPSdmb250LXNpemU6MmVtJz5YPC9zcGFuPiIsICdz
aGFwZTMnKTsKKyAgICB9Cis8L3NjcmlwdD4KKzxzdHlsZT4KKyAgICAjc2hhcGUxLCAjc2hhcGUy
LCAjc2hhcGUzIHsKKyAgICAgICAgbWFyZ2luOiAxMHB4IDA7CisgICAgICAgIHZlcnRpY2FsLWFs
aWduOiBib3R0b207CisgICAgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIFRoaXMg
dGVzdCByZXF1aXJlcyB0aGUgQWhlbSBmb250LCBhbmQgdGVzdHMgc2hvdWxkIGFsbCBkaXNwbGF5
IG9uIGEgNXgyIGdyaWQgb2YgZ3JlZW4KKyAgICBzcXVhcmVzLiBUaGVzZSB0ZXN0cyBjaGVjayB0
aGUgaW50ZXJhY3Rpb24gb2Ygc2hhcGUtaW5zaWRlIHdpdGggc3BhbnMuCisgICAgPGRpdiBpZD0n
c2hhcGUxJz48L2Rpdj4KKyAgICBUaGlzIHRlc3Qgc2hvdWxkIGRpc3BsYXkgdHdvIDJ4MiBncmVl
biBzcXVhcmVzLCBzZXBhcmF0ZWQgYnkgYSAxIHVuaXQgc3BhY2UuCisgICAgPGRpdiBpZD0nc2hh
cGUyJz48L2Rpdj4KKyAgICBUaGlzIHRlc3Qgc2hvdWxkIGRpc3BsYXkgYSAyeDIgZ3JlZW4gc3F1
YXJlLCBhbmQgYSAyeDEgcmVjdGFuZ2xlIHNlcGFyYXRlZCBieSBhIDEgdW5pdCBzcGFjZS4KKyAg
ICA8ZGl2IGlkPSdzaGFwZTMnPjwvZGl2PgorICAgIFRoaXMgdGVzdCBzaG91bGQgZGlzcGxheSBh
IDJ4MSBncmVlbiByZWN0YW5nbGUsIGFuZCBhIDJ4MiBzcXVhcmUgc2VwYXJhdGVkIGJ5IGEgMSB1
bml0IHNwYWNlLgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hh
cGUtaW5zaWRlLW11bHRpcGxlLXNlZ21lbnRzLTAwNC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9l
eGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDA0
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNDNmNTkyYmRmMTQyNDMyYWE2NWFmOWYyZDEzYzg4MWViZjg0MTU5
MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1p
bnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNlZ21lbnRzLTAwNC5odG1sCkBAIC0wLDAgKzEs
MjkgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0nLi4vcmVzb3VyY2VzL211bHRpLXNl
Z21lbnQtcG9seWdvbi5qcyc+PC9zY3JpcHQ+Cis8c2NyaXB0PgorICAgIHdpbmRvdy5vbmxvYWQg
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIHBvbHlnb24gPSBbMCwwLDEwMCwwLDEwMCwyNSwx
NTAsMjUsMTUwLDAsMjUwLDAsMjUwLDEwMCwwLDEwMF07CisgICAgICAgIGdlbmVyYXRlUG9seWdv
bigyNTAsIDEwMCwgNTAsIHBvbHlnb24sICI8c3BhbiBzdHlsZT0nZm9udC1zaXplOjJlbSc+WFg8
L3NwYW4+IiwgJ3NoYXBlMScpOworICAgICAgICBnZW5lcmF0ZVBvbHlnb24oMjUwLCAxMDAsIDUw
LCBwb2x5Z29uLCAiPHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToyZW0nPlg8L3NwYW4+WFgiLCAnc2hh
cGUyJyk7CisgICAgICAgIGdlbmVyYXRlUG9seWdvbigyNTAsIDEwMCwgNTAsIHBvbHlnb24sICJY
WDxzcGFuIHN0eWxlPSdmb250LXNpemU6MmVtJz5YPC9zcGFuPiIsICdzaGFwZTMnKTsKKyAgICB9
Cis8L3NjcmlwdD4KKzxzdHlsZT4KKyAgICAjc2hhcGUxLCAjc2hhcGUyLCAjc2hhcGUzIHsKKyAg
ICAgICAgbWFyZ2luOiAxMHB4IDA7CisgICAgICAgIHZlcnRpY2FsLWFsaWduOiBib3R0b207Cisg
ICAgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIFRoaXMgdGVzdCByZXF1aXJlcyB0
aGUgQWhlbSBmb250LCBhbmQgdGVzdHMgc2hvdWxkIGFsbCBkaXNwbGF5IG9uIGEgNXgyIGdyaWQg
b2YgZ3JlZW4KKyAgICBzcXVhcmVzLiBUaGVzZSB0ZXN0cyBjaGVjayB0aGUgaW50ZXJhY3Rpb24g
b2Ygc2hhcGUtaW5zaWRlIHdpdGggc3BhbnMuCisgICAgPGRpdiBpZD0nc2hhcGUxJz48L2Rpdj4K
KyAgICBUaGlzIHRlc3Qgc2hvdWxkIGRpc3BsYXkgdHdvIDJ4MiBncmVlbiBzcXVhcmVzLCBzZXBh
cmF0ZWQgYnkgYSAxIHVuaXQgc3BhY2UuCisgICAgPGRpdiBpZD0nc2hhcGUyJz48L2Rpdj4KKyAg
ICBUaGlzIHRlc3Qgc2hvdWxkIGRpc3BsYXkgYSAyeDIgZ3JlZW4gc3F1YXJlLCBhbmQgYSAyeDEg
cmVjdGFuZ2xlIHNlcGFyYXRlZCBieSBhIDEgdW5pdCBzcGFjZS4KKyAgICA8ZGl2IGlkPSdzaGFw
ZTMnPjwvZGl2PgorICAgIFRoaXMgdGVzdCBzaG91bGQgZGlzcGxheSBhIDJ4MSBncmVlbiByZWN0
YW5nbGUsIGFuZCBhIDJ4MiBzcXVhcmUgc2VwYXJhdGVkIGJ5IGEgMSB1bml0IHNwYWNlLgorPC9i
b2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173725</attachid>
            <date>2012-11-12 14:23:09 -0800</date>
            <delta_ts>2012-11-29 13:35:19 -0800</delta_ts>
            <desc>Merging with trunk</desc>
            <filename>bug-91878-20121112142111.patch</filename>
            <type>text/plain</type>
            <size>44123</size>
            <attacher name="Bear Travis">betravis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0Mjk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjgyN2Y0ZGFkODk1MTNl
NTg3MDcyMDUxNGFlN2RlODA1ZDAyOGRjNi4uNjc5NDFlMzI1YTZhODliZjJkZmYyYjMzZWZiNTVj
ODQ4MjRlOTFiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDEyLTExLTEyICBCZWFy
IFRyYXZpcyAgPGJldHJhdmlzQGFkb2JlLmNvbT4KKworICAgICAgICBbQ1NTIEV4Y2x1c2lvbnNd
IEVuYWJsZSBzaGFwZS1pbnNpZGUgZm9yIG11bHRpcGxlLXNlZ21lbnQgcG9seWdvbnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxODc4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGF0Y2ggYWRkaW5nIHN1
cHBvcnQgZm9yIG11bHRpcGxlLXNlZ21lbnQgcG9seWdvbnMgZm9yIHNoYXBlLWluc2lkZXMgZnJv
bQorICAgICAgICB0aGUgQ1NTIEV4Y2x1c2lvbnMgc3BlY2lmaWNhdGlvbi4gVGhlIGxheW91dCBj
b2RlIGhhcyBiZWVuIG1vZGlmaWVkIHRvIGZpcnN0CisgICAgICAgIHN1cHBvcnQgZGl2aWRpbmcg
dGV4dCBpbnRvIG11bHRpcGxlIHNlZ21lbnRzIHBlciBsaW5lLCBhbmQgdGhlbiB0byBsYXkgb3V0
CisgICAgICAgIG11bHRpcGxlIHNlZ21lbnRzIHBlciBsaW5lIGJveC4KKworICAgICAgICBUZXN0
czogIGZhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNl
Z21lbnRzLTAwMS5odG1sCisgICAgICAgICAgICAgICAgZmFzdC9leGNsdXNpb25zL3NoYXBlLWlu
c2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAyLmh0bWwKKyAgICAgICAgICAg
ICAgICBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1z
ZWdtZW50cy0wMDMuaHRtbAorICAgICAgICAgICAgICAgIGZhc3QvZXhjbHVzaW9ucy9zaGFwZS1p
bnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNlZ21lbnRzLTAwNC5odG1sCisKKyAgICAgICAg
KiByZW5kZXJpbmcvQmlkaVJ1bi5oOgorICAgICAgICAoV2ViQ29yZTo6QmlkaVJ1bjo6QmlkaVJ1
bik6CisgICAgICAgIChCaWRpUnVuKTogQWRkZWQgYSAnc3RhcnRzU2VnbWVudCcgYm9vbGVhbiB0
byB0cmFjayB3aGV0aGVyIGEgcnVuIGJlZ2lucworICAgICAgICBhIG5ldyBzZWdtZW50LgorICAg
ICAgICAqIHJlbmRlcmluZy9FeGNsdXNpb25TaGFwZUluc2lkZUluZm8uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvOjpjb21wdXRlU2VnbWVudHNGb3JMaW5l
KTogQ2xlYXIgdGhlCisgICAgICAgIHNlZ21lbnQgcmFuZ2VzIHdoZW4gY29tcHV0aW5nIHNlZ21l
bnRzIGZvciBhIG5ldyBsaW5lLgorICAgICAgICAqIHJlbmRlcmluZy9FeGNsdXNpb25TaGFwZUlu
c2lkZUluZm8uaDoKKyAgICAgICAgKExpbmVTZWdtZW50UmFuZ2UpOiBBZGRlZCBhIG5ldyB0eXBl
IHRvIHRyYWNrIHNlZ21lbnQgb2Zmc2V0cy4KKyAgICAgICAgKFdlYkNvcmU6OkxpbmVTZWdtZW50
UmFuZ2U6OkxpbmVTZWdtZW50UmFuZ2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpFeGNsdXNpb25TaGFwZUluc2lkZUluZm86OnNlZ21lbnRSYW5nZXMpOiBBZGRlZCBh
IGdldHRlciBmb3IKKyAgICAgICAgdGhlIGxpbmUgc2VnbWVudCByYW5nZXMgdmVjdG9yLgorICAg
ICAgICAoRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvKToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5s
aW5lRmxvd0JveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpwbGFjZUJv
eGVzSW5JbmxpbmVEaXJlY3Rpb24pOiBNb2RpZmllZCB0byBjYWxsCisgICAgICAgIGEgcmVmYWN0
b3JlZCBib3ggcGxhY2VtZW50IGFsZ29yaXRobSB0aGF0IHRha2VzIGEgYmVnaW5uaW5nIGFuZCBl
bmQgcG9zaXRpb24uCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklubGlu
ZUZsb3dCb3g6OnBsYWNlQm94UmFuZ2VJbklubGluZURpcmVjdGlvbik6IFNpbWlsYXIgdG8gdGhl
CisgICAgICAgIHBsYWNlQm94ZXMgbWV0aG9kLCBidXQgdGFrZXMgYW4gZW5kIHBvc2l0aW9uIHRo
YXQgbWF5IG9jY3VyIGJlZm9yZSB0aGUgZW5kCisgICAgICAgIG9mIHRoZSBsaW5lLgorICAgICAg
ICAqIHJlbmRlcmluZy9JbmxpbmVGbG93Qm94Lmg6CisgICAgICAgIChJbmxpbmVGbG93Qm94KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQmxvY2s6OmV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mb0ludGVybmFsKTogRmFjdG9yZWQg
b3V0IGNhbGxzCisgICAgICAgIHRvIEV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbyB0byB0aGUgLmNw
cCBmaWxlLCBhcyBFeGNsdXNpb25TaGFwZUluc2lkZUluZm8KKyAgICAgICAgcmVxdWlyZXMgSW5s
aW5lSXRlcmF0b3IuaCwgd2hpY2ggd291bGQgY3JlYXRlIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSBp
bgorICAgICAgICBFeGNsdXNpb25TaGFwZUluc2lkZUluZm8uaC4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5oOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6ZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZv
KTogTW9kaWZpZWQgdG8gY2FsbAorICAgICAgICBleGNsdXNpb25TaGFwZUluc2lkZUluZm9JbnRl
cm5hbC4KKyAgICAgICAgKFJlbmRlckJsb2NrKToKKyAgICAgICAgKExpbmVCcmVha2VyKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxpbmVXaWR0aDo6TGluZVdpZHRoKTogTGluZVdpZHRoIG5vdyB1c2VzIHRoZSBudW1i
ZXIgb2YgY29tcHV0ZWQKKyAgICAgICAgc2VnbWVudFJhbmdlcyB0byBkZXRlcm1pbmUgd2hpY2gg
TGluZVNlZ21lbnQgdG8gdXNlIHdoZW4gY2FsY3VsYXRpbmcgd2lkdGguCisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9jazo6Y3JlYXRlTGluZUJveGVzKTogTm93IHRha2VzIGEgYm9vbGVhbiB0
byBkZXRlcm1pbmUKKyAgICAgICAgd2hldGhlciBvciBub3QgaXQgY2FuIHNoYXJlIHRoZSBzYW1l
IHBhcmVudEJveCBhcyBpdHMgc2libGluZ3MgKHNlZ21lbnRzCisgICAgICAgIG11c3QgYmUgYWJs
ZSB0byBwb3NpdGlvbiB0aGVtc2VsdmVzIHNlcGFyYXRlbHkgaW4gdGhlIFJvb3RJbmxpbmVCb3gp
LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmNvbnN0cnVjdExpbmUpOgorICAgICAg
ICAoV2ViQ29yZTo6Y29tcHV0ZUV4cGFuc2lvbkZvckp1c3RpZmllZFRleHQpOiBEbyBpbmNsdWRl
IHJ1bnMgdGhhdCBzdGFydCBuZXcKKyAgICAgICAgc2VnbWVudHMgd2hlbiBjYWxjdWxhdGluZyBq
dXN0aWZpY2F0aW9uIGZvciB0aGUgY3VycmVudCBzZWdtZW50LgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQmxvY2s6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlvbnNGb3JMaW5lKTogTW9k
aWZpZWQgdG8KKyAgICAgICAgdXNlIHRoZSBjb21wdXRlSW5saW5lRGlyZWN0aW9uUG9zaXRpb25z
Rm9yU2VnbWVudCwgd2hpY2ggY2FuIHBvc2l0aW9uCisgICAgICAgIG11bHRpcGxlIHNlZ21lbnRz
IG9mIHRleHQgcGVyIGxpbmUuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y29tcHV0
ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0ZvclNlZ21lbnQpOiBQb3NpdGlvbnMKKyAgICAgICAg
dGhlIGdpdmVuIHNlZ21lbnQgb2YgdGV4dCBhbmQgY2FsY3VsYXRlcyBpdHMgbGF5b3V0IG9mZnNl
dHMuCisgICAgICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RCaWRpUnVucyk6IE1vZGlmaWVkIHNvbWUg
dmFyaWFibGVzIGZyb20gJ2VuZE9mTGluZScgdG8gJ2VuZE9mU2VnbWVudCcuCisgICAgICAgIChX
ZWJDb3JlOjpjb25zdHJ1Y3RCaWRpUnVuc0ZvckxpbmUpOiBDb25zdHJ1Y3QgdGhlIGJpZGkgcnVu
cyBmb3IgZWFjaCBzZWdtZW50IGluCisgICAgICAgIHRoZSBnaXZlbiBsaW5lLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bGF5b3V0UnVuc0FuZEZs
b2F0c0luUmFuZ2UpOiBDYWxsIGNvbnN0cnVjdEJpZGlSdW5zRm9yTGluZS4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJsb2NrOjpMaW5lQnJlYWtlcjo6bmV4dExpbmVCcmVhayk6IE1vdmVkIHRo
ZSBsaW5lIGJyZWFraW5nIGNvZGUKKyAgICAgICAgdG8gYnJlYWsgc2VnbWVudHMsIHdpdGggbmV4
dExpbmVCcmVhayBpdGVyYXRpbmcgb3ZlciBzZWdtZW50IGJyZWFrcyBmb3IgdGhlIGVudGlyZSBs
aW5lLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OkxpbmVCcmVha2VyOjpuZXh0U2Vn
bWVudEJyZWFrKTogQ2FsY3VsYXRlcyBob3cgbXVjaCB0ZXh0IGEKKyAgICAgICAgc2VnbWVudCBj
YW4gaG9sZC4gVGhpcyBjb2RlIHdhcyBvcmlnaW5hbGx5IGluIG5leHRMaW5lQnJlYWsuCisKIDIw
MTItMTEtMTIgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4K
IAogICAgICAgICBGaXggbWVtb3J5IGxlYWsgaW4gY3JlYXRlU3VyZmFjZUZvckJhY2tpbmdTdG9y
ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQmlkaVJ1bi5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0JpZGlSdW4uaAppbmRleCA2OTRjYmNhNzc2M2JkMGUyOGNm
NDhkMWFiZTAyZjZhMTBjMDFkZGE1Li5mZjRlYzM0OGJkN2EwYWUwNzY1MzA2Njk2ZmFhNTQyNjI2
Y2QxNGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQmlkaVJ1bi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9CaWRpUnVuLmgKQEAgLTM4LDYgKzM4LDcgQEAg
c3RydWN0IEJpZGlSdW4gOiBCaWRpQ2hhcmFjdGVyUnVuIHsKICAgICAgICAgOiBCaWRpQ2hhcmFj
dGVyUnVuKHN0YXJ0LCBzdG9wLCBjb250ZXh0LCBkaXIpCiAgICAgICAgICwgbV9vYmplY3Qob2Jq
ZWN0KQogICAgICAgICAsIG1fYm94KDApCisgICAgICAgICwgbV9zdGFydHNTZWdtZW50KGZhbHNl
KQogICAgIHsKICAgICAgICAgbV9oYXNIeXBoZW4gPSBmYWxzZTsgLy8gU3RvcmVkIGluIGJhc2Ug
Y2xhc3MgdG8gc2F2ZSBzcGFjZS4KICAgICB9CkBAIC02MCw2ICs2MSw3IEBAIHByaXZhdGU6CiBw
dWJsaWM6CiAgICAgUmVuZGVyT2JqZWN0KiBtX29iamVjdDsKICAgICBJbmxpbmVCb3gqIG1fYm94
OworICAgIGJvb2wgbV9zdGFydHNTZWdtZW50OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLmNwcAppbmRleCBiNzgz
MGYxMGVmNmJlNGMzOTIzMDc4MzUzYzRkMDk4N2Q3NzFhMGRmLi5mZGIxMGY5MzMzOWY3NmVkMzEw
ODMxYmRmZDc2ZTg4YmM4NTc0YWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLmNwcApAQCAtMTA2LDYgKzEwNiw3IEBAIGJv
b2wgRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvOjpjb21wdXRlU2VnbWVudHNGb3JMaW5lKExheW91
dFVuaXQgbGluZVRvcCwgTGF5b3V0CiAgICAgbV9saW5lVG9wID0gbGluZVRvcDsKICAgICBtX2xp
bmVIZWlnaHQgPSBsaW5lSGVpZ2h0OwogICAgIG1fc2VnbWVudHMuY2xlYXIoKTsKKyAgICBtX3Nl
Z21lbnRSYW5nZXMuY2xlYXIoKTsKIAogICAgIGlmIChsaW5lT3ZlcmxhcHNTaGFwZUJvdW5kcygp
KSB7CiAgICAgICAgIEFTU0VSVChtX3NoYXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9FeGNsdXNpb25TaGFwZUluc2lkZUluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9FeGNsdXNpb25TaGFwZUluc2lkZUluZm8uaAppbmRleCA4YmUxMTRkNGIyY2EzYzAx
YTFkNDI3ODNkZThmZmQ5YmE3ODFlMTNjLi5lNzc4YmVkNDNhOTA3MThmMmY1MTU1ZjhmNDNmNGIw
Mjc0ZDllYjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9u
U2hhcGVJbnNpZGVJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lv
blNoYXBlSW5zaWRlSW5mby5oCkBAIC0zNCw2ICszNCw3IEBACiAKICNpbmNsdWRlICJFeGNsdXNp
b25TaGFwZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIklubGluZUl0ZXJh
dG9yLmgiCiAjaW5jbHVkZSAiTGF5b3V0VW5pdC5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgpAQCAtNDMsNiArNDQsMTcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBSZW5kZXJCbG9jazsKIAorc3RydWN0IExpbmVTZWdtZW50UmFu
Z2UgeworICAgIElubGluZUl0ZXJhdG9yIHN0YXJ0OworICAgIElubGluZUl0ZXJhdG9yIGVuZDsK
KyAgICBMaW5lU2VnbWVudFJhbmdlKElubGluZUl0ZXJhdG9yIHN0YXJ0LCBJbmxpbmVJdGVyYXRv
ciBlbmQpCisgICAgICAgIDogc3RhcnQoc3RhcnQpCisgICAgICAgICwgZW5kKGVuZCkKKyAgICB7
CisgICAgfQorfTsKK3R5cGVkZWYgVmVjdG9yPExpbmVTZWdtZW50UmFuZ2U+IFNlZ21lbnRSYW5n
ZUxpc3Q7CisKIGNsYXNzIEV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbyB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC02Nyw2ICs3OSwxNCBAQCBwdWJsaWM6CiAgICAg
ICAgIEFTU0VSVChoYXNTZWdtZW50cygpKTsKICAgICAgICAgcmV0dXJuIG1fc2VnbWVudHM7CiAg
ICAgfQorICAgIFNlZ21lbnRSYW5nZUxpc3QmIHNlZ21lbnRSYW5nZXMoKSB7IHJldHVybiBtX3Nl
Z21lbnRSYW5nZXM7IH0KKyAgICBjb25zdCBMaW5lU2VnbWVudCogY3VycmVudFNlZ21lbnQoKSBj
b25zdAorICAgIHsKKyAgICAgICAgaWYgKCFoYXNTZWdtZW50cygpKQorICAgICAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIEFTU0VSVChtX3NlZ21lbnRSYW5nZXMuc2l6ZSgpIDwgbV9zZWdtZW50
cy5zaXplKCkpOworICAgICAgICByZXR1cm4gJm1fc2VnbWVudHNbbV9zZWdtZW50UmFuZ2VzLnNp
emUoKV07CisgICAgfQogICAgIGJvb2wgY29tcHV0ZVNlZ21lbnRzRm9yTGluZShMYXlvdXRVbml0
IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUhlaWdodCk7CiAgICAgdm9pZCBjb21wdXRlU2hhcGVT
aXplKExheW91dFVuaXQgbG9naWNhbFdpZHRoLCBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQpOwog
ICAgIHZvaWQgZGlydHlTaGFwZVNpemUoKSB7IG1fc2hhcGVTaXplRGlydHkgPSB0cnVlOyB9CkBA
IC05Nyw2ICsxMTcsNyBAQCBwcml2YXRlOgogICAgIExheW91dFVuaXQgbV9sb2dpY2FsSGVpZ2h0
OwogCiAgICAgU2VnbWVudExpc3QgbV9zZWdtZW50czsKKyAgICBTZWdtZW50UmFuZ2VMaXN0IG1f
c2VnbWVudFJhbmdlczsKICAgICBib29sIG1fc2hhcGVTaXplRGlydHk7CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKaW5kZXggNjMzZmQxYWZiMjJlZGRj
ZWJjNzExODFkNjEzMTY2ZmNhYWYyODM2Ni4uYjY2YzdhZWI2MDI2MWY2ZGIxMjBiYjZjZmE2ZmI1
YjliMzFkZGRiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZs
b3dCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNw
cApAQCAtMzY5LDE1ICszNjksMjQgQEAgdm9pZCBJbmxpbmVGbG93Qm94OjpkZXRlcm1pbmVTcGFj
aW5nRm9yRmxvd0JveGVzKGJvb2wgbGFzdExpbmUsIGJvb2wgaXNMb2dpY2FsbHkKIGZsb2F0IElu
bGluZUZsb3dCb3g6OnBsYWNlQm94ZXNJbklubGluZURpcmVjdGlvbihmbG9hdCBsb2dpY2FsTGVm
dCwgYm9vbCYgbmVlZHNXb3JkU3BhY2luZywgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNN
YXAmIHRleHRCb3hEYXRhTWFwKQogewogICAgIC8vIFNldCBvdXIgeCBwb3NpdGlvbi4KLSAgICBz
ZXRMb2dpY2FsTGVmdChsb2dpY2FsTGVmdCk7Ci0gIAorICAgIGJlZ2luUGxhY2luZ0JveFJhbmdl
c0luSW5saW5lRGlyZWN0aW9uKGxvZ2ljYWxMZWZ0KTsKKwogICAgIGZsb2F0IHN0YXJ0TG9naWNh
bExlZnQgPSBsb2dpY2FsTGVmdDsKICAgICBsb2dpY2FsTGVmdCArPSBib3JkZXJMb2dpY2FsTGVm
dCgpICsgcGFkZGluZ0xvZ2ljYWxMZWZ0KCk7CiAKICAgICBmbG9hdCBtaW5Mb2dpY2FsTGVmdCA9
IHN0YXJ0TG9naWNhbExlZnQ7CiAgICAgZmxvYXQgbWF4TG9naWNhbFJpZ2h0ID0gbG9naWNhbExl
ZnQ7CiAKLSAgICBmb3IgKElubGluZUJveCogY3VyciA9IGZpcnN0Q2hpbGQoKTsgY3VycjsgY3Vy
ciA9IGN1cnItPm5leHRPbkxpbmUoKSkgeworICAgIHBsYWNlQm94UmFuZ2VJbklubGluZURpcmVj
dGlvbihmaXJzdENoaWxkKCksIDAsIGxvZ2ljYWxMZWZ0LCBtaW5Mb2dpY2FsTGVmdCwgbWF4TG9n
aWNhbFJpZ2h0LCBuZWVkc1dvcmRTcGFjaW5nLCB0ZXh0Qm94RGF0YU1hcCk7CisKKyAgICBsb2dp
Y2FsTGVmdCArPSBib3JkZXJMb2dpY2FsUmlnaHQoKSArIHBhZGRpbmdMb2dpY2FsUmlnaHQoKTsK
KyAgICBlbmRQbGFjaW5nQm94UmFuZ2VzSW5JbmxpbmVEaXJlY3Rpb24oc3RhcnRMb2dpY2FsTGVm
dCwgbG9naWNhbExlZnQsIG1pbkxvZ2ljYWxMZWZ0LCBtYXhMb2dpY2FsUmlnaHQpOworICAgIHJl
dHVybiBsb2dpY2FsTGVmdDsKK30KKworZmxvYXQgSW5saW5lRmxvd0JveDo6cGxhY2VCb3hSYW5n
ZUluSW5saW5lRGlyZWN0aW9uKElubGluZUJveCogZmlyc3RDaGlsZCwgSW5saW5lQm94KiBsYXN0
Q2hpbGQsIGZsb2F0JiBsb2dpY2FsTGVmdCwgZmxvYXQmIG1pbkxvZ2ljYWxMZWZ0LCBmbG9hdCYg
bWF4TG9naWNhbFJpZ2h0LCBib29sJiBuZWVkc1dvcmRTcGFjaW5nLCBHbHlwaE92ZXJmbG93QW5k
RmFsbGJhY2tGb250c01hcCYgdGV4dEJveERhdGFNYXApCit7CisgICAgZm9yIChJbmxpbmVCb3gq
IGN1cnIgPSBmaXJzdENoaWxkOyBjdXJyICYmIGN1cnIgIT0gbGFzdENoaWxkOyBjdXJyID0gY3Vy
ci0+bmV4dE9uTGluZSgpKSB7CiAgICAgICAgIGlmIChjdXJyLT5yZW5kZXJlcigpLT5pc1RleHQo
KSkgewogICAgICAgICAgICAgSW5saW5lVGV4dEJveCogdGV4dCA9IHRvSW5saW5lVGV4dEJveChj
dXJyKTsKICAgICAgICAgICAgIFJlbmRlclRleHQqIHJ0ID0gdG9SZW5kZXJUZXh0KHRleHQtPnJl
bmRlcmVyKCkpOwpAQCAtNDI5LDExICs0MzgsNiBAQCBmbG9hdCBJbmxpbmVGbG93Qm94OjpwbGFj
ZUJveGVzSW5JbmxpbmVEaXJlY3Rpb24oZmxvYXQgbG9naWNhbExlZnQsIGJvb2wmIG5lZWRzVwog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotCi0gICAgbG9naWNhbExlZnQgKz0gYm9y
ZGVyTG9naWNhbFJpZ2h0KCkgKyBwYWRkaW5nTG9naWNhbFJpZ2h0KCk7Ci0gICAgc2V0TG9naWNh
bFdpZHRoKGxvZ2ljYWxMZWZ0IC0gc3RhcnRMb2dpY2FsTGVmdCk7Ci0gICAgaWYgKGtub3duVG9I
YXZlTm9PdmVyZmxvdygpICYmIChtaW5Mb2dpY2FsTGVmdCA8IHN0YXJ0TG9naWNhbExlZnQgfHwg
bWF4TG9naWNhbFJpZ2h0ID4gbG9naWNhbExlZnQpKQotICAgICAgICBjbGVhcktub3duVG9IYXZl
Tm9PdmVyZmxvdygpOwogICAgIHJldHVybiBsb2dpY2FsTGVmdDsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmgKaW5kZXggNDhiNzIwYzc1ZGQ1M2U3ZDIwOTc4MmRk
NGJhMmYzMWE0NTIxNTAwZS4uZGJmMDEzNWJjNDEwOGIzZjdmM2M2YjI0Y2Y0MzhmZGRiNTZhMzYy
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oCkBAIC0xNzQsNiAr
MTc0LDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIGRldGVybWluZVNwYWNpbmdGb3JGbG93Qm94ZXMo
Ym9vbCBsYXN0TGluZSwgYm9vbCBpc0xvZ2ljYWxseUxhc3RSdW5XcmFwcGVkLCBSZW5kZXJPYmpl
Y3QqIGxvZ2ljYWxseUxhc3RSdW5SZW5kZXJlcik7CiAgICAgTGF5b3V0VW5pdCBnZXRGbG93U3Bh
Y2luZ0xvZ2ljYWxXaWR0aCgpOwogICAgIGZsb2F0IHBsYWNlQm94ZXNJbklubGluZURpcmVjdGlv
bihmbG9hdCBsb2dpY2FsTGVmdCwgYm9vbCYgbmVlZHNXb3JkU3BhY2luZywgR2x5cGhPdmVyZmxv
d0FuZEZhbGxiYWNrRm9udHNNYXAmKTsKKyAgICBmbG9hdCBwbGFjZUJveFJhbmdlSW5JbmxpbmVE
aXJlY3Rpb24oSW5saW5lQm94KiBmaXJzdENoaWxkLCBJbmxpbmVCb3gqIGxhc3RDaGlsZCwgZmxv
YXQmIGxvZ2ljYWxMZWZ0LCBmbG9hdCYgbWluTG9naWNhbExlZnQsIGZsb2F0JiBtYXhMb2dpY2Fs
UmlnaHQsIGJvb2wmIG5lZWRzV29yZFNwYWNpbmcsIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0Zv
bnRzTWFwJik7CisgICAgdm9pZCBiZWdpblBsYWNpbmdCb3hSYW5nZXNJbklubGluZURpcmVjdGlv
bihmbG9hdCBsb2dpY2FsTGVmdCkgeyBzZXRMb2dpY2FsTGVmdChsb2dpY2FsTGVmdCk7IH0KKyAg
ICB2b2lkIGVuZFBsYWNpbmdCb3hSYW5nZXNJbklubGluZURpcmVjdGlvbihmbG9hdCBsb2dpY2Fs
TGVmdCwgZmxvYXQgbG9naWNhbFJpZ2h0LCBmbG9hdCBtaW5Mb2dpY2FsTGVmdCwgZmxvYXQgbWF4
TG9naWNhbFJpZ2h0KQorICAgIHsKKyAgICAgICAgc2V0TG9naWNhbFdpZHRoKGxvZ2ljYWxSaWdo
dCAtIGxvZ2ljYWxMZWZ0KTsKKyAgICAgICAgaWYgKGtub3duVG9IYXZlTm9PdmVyZmxvdygpICYm
IChtaW5Mb2dpY2FsTGVmdCA8IGxvZ2ljYWxMZWZ0IHx8IG1heExvZ2ljYWxSaWdodCA+IGxvZ2lj
YWxSaWdodCkpCisgICAgICAgICAgICBjbGVhcktub3duVG9IYXZlTm9PdmVyZmxvdygpOworICAg
IH0KKwogICAgIHZvaWQgY29tcHV0ZUxvZ2ljYWxCb3hIZWlnaHRzKFJvb3RJbmxpbmVCb3gqLCBM
YXlvdXRVbml0JiBtYXhQb3NpdGlvblRvcCwgTGF5b3V0VW5pdCYgbWF4UG9zaXRpb25Cb3R0b20s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50JiBtYXhBc2NlbnQsIGludCYg
bWF4RGVzY2VudCwgYm9vbCYgc2V0TWF4QXNjZW50LCBib29sJiBzZXRNYXhEZXNjZW50LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc3RyaWN0TW9kZSwgR2x5cGhPdmVy
Zmxvd0FuZEZhbGxiYWNrRm9udHNNYXAmLCBGb250QmFzZWxpbmUsIFZlcnRpY2FsUG9zaXRpb25D
YWNoZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggOTgy
YjA5NTE5OWI0MzFiMTBhZjNkOGNmZGYzNWIwZmU1ODVhZTVkMy4uZGVjYWUzNDVhNzIzMWRkMjYy
YmU0OTM1ZjFjNjdiNjRhZmMyMGVhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2suY3BwCkBAIC0xMzk4LDYgKzEzOTgsMTEgQEAgdm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0
KCkKIH0KIAogI2lmIEVOQUJMRShDU1NfRVhDTFVTSU9OUykKK0V4Y2x1c2lvblNoYXBlSW5zaWRl
SW5mbyogUmVuZGVyQmxvY2s6OmV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mb0ludGVybmFsKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvOjppc0V4Y2x1c2lvblNo
YXBlSW5zaWRlSW5mb0VuYWJsZWRGb3JSZW5kZXJCbG9jayh0aGlzKSA/IEV4Y2x1c2lvblNoYXBl
SW5zaWRlSW5mbzo6ZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvRm9yUmVuZGVyQmxvY2sodGhpcykg
OiAwOworfQorCiB2b2lkIFJlbmRlckJsb2NrOjp1cGRhdGVFeGNsdXNpb25TaGFwZUluc2lkZUlu
Zm9BZnRlclN0eWxlQ2hhbmdlKGNvbnN0IEJhc2ljU2hhcGUqIHNoYXBlSW5zaWRlLCBjb25zdCBC
YXNpY1NoYXBlKiBvbGRTaGFwZUluc2lkZSkKIHsKICAgICAvLyBGSVhNRTogQSBmdXR1cmUgb3B0
aW1pemF0aW9uIHdvdWxkIGRvIGEgZGVlcCBjb21wYXJpc29uIGZvciBlcXVhbGl0eS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKaW5kZXggNTVhMDAxZjYxYzRjYjNhMTIyZWFl
OWRhNzhjZmZhMjBjOTY3NDIyNy4uZTNlNTgwMjJhNzhlYWUzNDk1M2IyMjZkOTk2NjY0ZTIyMjZj
ODljOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKQEAgLTM0LDEwICsz
NCw2IEBACiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNl
dC5oPgogCi0jaWYgRU5BQkxFKENTU19FWENMVVNJT05TKQotI2luY2x1ZGUgIkV4Y2x1c2lvblNo
YXBlSW5zaWRlSW5mby5oIgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
QmlkaUNvbnRleHQ7CkBAIC01Miw2ICs0OCwxMCBAQCBzdHJ1Y3QgQmlkaVJ1bjsKIHN0cnVjdCBQ
YWludEluZm87CiBjbGFzcyBMaW5lSW5mbzsKIGNsYXNzIFJlbmRlclJ1YnlSdW47CisjaWYgRU5B
QkxFKENTU19FWENMVVNJT05TKQorY2xhc3MgQmFzaWNTaGFwZTsKK2NsYXNzIEV4Y2x1c2lvblNo
YXBlSW5zaWRlSW5mbzsKKyNlbmRpZgogY2xhc3MgVGV4dExheW91dDsKIGNsYXNzIFdvcmRNZWFz
dXJlbWVudDsKIApAQCAtNDIzLDcgKzQyMyw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoQ1NTX0VY
Q0xVU0lPTlMpCiAgICAgRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvKiBleGNsdXNpb25TaGFwZUlu
c2lkZUluZm8oKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0eWxlKCktPnNoYXBlSW5z
aWRlKCkgJiYgRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvOjppc0V4Y2x1c2lvblNoYXBlSW5zaWRl
SW5mb0VuYWJsZWRGb3JSZW5kZXJCbG9jayh0aGlzKSA/IEV4Y2x1c2lvblNoYXBlSW5zaWRlSW5m
bzo6ZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvRm9yUmVuZGVyQmxvY2sodGhpcykgOiAwOworICAg
ICAgICByZXR1cm4gc3R5bGUoKS0+c2hhcGVJbnNpZGUoKSA/IGV4Y2x1c2lvblNoYXBlSW5zaWRl
SW5mb0ludGVybmFsKCkgOiAwOwogICAgIH0KICNlbmRpZgogCkBAIC01MjAsNiArNTIwLDcgQEAg
cHJvdGVjdGVkOgogCiBwcml2YXRlOgogI2lmIEVOQUJMRShDU1NfRVhDTFVTSU9OUykKKyAgICBF
eGNsdXNpb25TaGFwZUluc2lkZUluZm8qIGV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mb0ludGVybmFs
KCkgY29uc3Q7CiAgICAgdm9pZCBjb21wdXRlRXhjbHVzaW9uU2hhcGVTaXplKCk7CiAgICAgdm9p
ZCB1cGRhdGVFeGNsdXNpb25TaGFwZUluc2lkZUluZm9BZnRlclN0eWxlQ2hhbmdlKGNvbnN0IEJh
c2ljU2hhcGUqLCBjb25zdCBCYXNpY1NoYXBlKiBvbGRXcmFwU2hhcGUpOwogI2VuZGlmCkBAIC03
NTksNiArNzYwLDcgQEAgcHJpdmF0ZToKICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIHJlc2V0
KCk7CiAgICAgICAgIAorICAgICAgICBJbmxpbmVJdGVyYXRvciBuZXh0U2VnbWVudEJyZWFrKElu
bGluZUJpZGlSZXNvbHZlciYsIExpbmVJbmZvJiwgUmVuZGVyVGV4dEluZm8mLCBGbG9hdGluZ09i
amVjdCogbGFzdEZsb2F0RnJvbVByZXZpb3VzTGluZSwgdW5zaWduZWQgY29uc2VjdXRpdmVIeXBo
ZW5hdGVkTGluZXMsIFdvcmRNZWFzdXJlbWVudHMmKTsKICAgICAgICAgdm9pZCBza2lwVHJhaWxp
bmdXaGl0ZXNwYWNlKElubGluZUl0ZXJhdG9yJiwgY29uc3QgTGluZUluZm8mKTsKICAgICAgICAg
dm9pZCBza2lwTGVhZGluZ1doaXRlc3BhY2UoSW5saW5lQmlkaVJlc29sdmVyJiwgTGluZUluZm8m
LCBGbG9hdGluZ09iamVjdCogbGFzdEZsb2F0RnJvbVByZXZpb3VzTGluZSwgTGluZVdpZHRoJik7
CiAgICAgICAgIApAQCAtNzc1LDEwICs3NzcsMTIgQEAgcHJpdmF0ZToKICAgICBib29sIGNoZWNr
UGFnaW5hdGlvbkFuZEZsb2F0c0F0RW5kTGluZShMaW5lTGF5b3V0U3RhdGUmKTsKICAgICAKICAg
ICBSb290SW5saW5lQm94KiBjb25zdHJ1Y3RMaW5lKEJpZGlSdW5MaXN0PEJpZGlSdW4+JiwgY29u
c3QgTGluZUluZm8mKTsKLSAgICBJbmxpbmVGbG93Qm94KiBjcmVhdGVMaW5lQm94ZXMoUmVuZGVy
T2JqZWN0KiwgY29uc3QgTGluZUluZm8mLCBJbmxpbmVCb3gqIGNoaWxkQm94KTsKKyAgICBJbmxp
bmVGbG93Qm94KiBjcmVhdGVMaW5lQm94ZXMoUmVuZGVyT2JqZWN0KiwgY29uc3QgTGluZUluZm8m
LCBJbmxpbmVCb3gqIGNoaWxkQm94LCBib29sIHN0YXJ0c05ld1NlZ21uZXQpOwogCiAgICAgdm9p
ZCBzZXRNYXJnaW5zRm9yUnVieVJ1bihCaWRpUnVuKiwgUmVuZGVyUnVieVJ1biosIFJlbmRlck9i
amVjdCosIGNvbnN0IExpbmVJbmZvJik7CiAKKyAgICBCaWRpUnVuKiBjb21wdXRlSW5saW5lRGly
ZWN0aW9uUG9zaXRpb25zRm9yU2VnbWVudChSb290SW5saW5lQm94KiwgY29uc3QgTGluZUluZm8m
LCBFVGV4dEFsaWduLCBmbG9hdCYgbG9naWNhbExlZnQsCisgICAgICAgIGZsb2F0JiBhdmFpbGFi
bGVMb2dpY2FsV2lkdGgsIEJpZGlSdW4qIGZpcnN0UnVuLCBCaWRpUnVuKiB0cmFpbGluZ1NwYWNl
UnVuLCBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcCYgdGV4dEJveERhdGFNYXAsIFZl
cnRpY2FsUG9zaXRpb25DYWNoZSYsIFdvcmRNZWFzdXJlbWVudHMmKTsKICAgICB2b2lkIGNvbXB1
dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlvbnNGb3JMaW5lKFJvb3RJbmxpbmVCb3gqLCBjb25zdCBM
aW5lSW5mbyYsIEJpZGlSdW4qIGZpcnN0UnVuLCBCaWRpUnVuKiB0cmFpbGluZ1NwYWNlUnVuLCBi
b29sIHJlYWNoZWRFbmQsIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwJiwgVmVydGlj
YWxQb3NpdGlvbkNhY2hlJiwgV29yZE1lYXN1cmVtZW50cyYpOwogICAgIHZvaWQgY29tcHV0ZUJs
b2NrRGlyZWN0aW9uUG9zaXRpb25zRm9yTGluZShSb290SW5saW5lQm94KiwgQmlkaVJ1biosIEds
eXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwJiwgVmVydGljYWxQb3NpdGlvbkNhY2hlJik7
CiAgICAgdm9pZCBkZWxldGVFbGxpcHNpc0xpbmVCb3hlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAppbmRleCAyZTU4ZWE2Nzcx
MTYzOWQxODE4ZTNjYTgyOTZmOWZmOTljYTBkODI2Li4yODE1MjkzYzg2MjI4MmRkYjkyZTgwZTI4
NmZjZWNlMzdlNTM1MGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2tMaW5lTGF5b3V0LmNwcApAQCAtODgsOSArODgsOCBAQCBwdWJsaWM6CiAgICAgICAg
IEFTU0VSVChibG9jayk7CiAjaWYgRU5BQkxFKENTU19FWENMVVNJT05TKQogICAgICAgICBFeGNs
dXNpb25TaGFwZUluc2lkZUluZm8qIGV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbyA9IGxheW91dEV4
Y2x1c2lvblNoYXBlSW5zaWRlSW5mbyhtX2Jsb2NrKTsKLSAgICAgICAgLy8gRklYTUU6IEJ1ZyA5
MTg3ODogQWRkIHN1cHBvcnQgZm9yIG11bHRpcGxlIHNlZ21lbnRzLCBjdXJyZW50bHkgd2Ugb25s
eSBzdXBwb3J0IG9uZQotICAgICAgICBpZiAoZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvICYmIGV4
Y2x1c2lvblNoYXBlSW5zaWRlSW5mby0+aGFzU2VnbWVudHMoKSkKLSAgICAgICAgICAgIG1fc2Vn
bWVudCA9ICZleGNsdXNpb25TaGFwZUluc2lkZUluZm8tPnNlZ21lbnRzKClbMF07CisgICAgICAg
IGlmIChleGNsdXNpb25TaGFwZUluc2lkZUluZm8pCisgICAgICAgICAgICBtX3NlZ21lbnQgPSBl
eGNsdXNpb25TaGFwZUluc2lkZUluZm8tPmN1cnJlbnRTZWdtZW50KCk7CiAjZW5kaWYKICAgICAg
ICAgdXBkYXRlQXZhaWxhYmxlV2lkdGgoKTsKICAgICB9CkBAIC00NTAsNyArNDQ5LDcgQEAgc3Rh
dGljIGJvb2wgcGFyZW50SXNDb25zdHJ1Y3RlZE9ySGF2ZU5leHQoSW5saW5lRmxvd0JveCogcGFy
ZW50Qm94KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotSW5saW5lRmxvd0JveCogUmVuZGVyQmxv
Y2s6OmNyZWF0ZUxpbmVCb3hlcyhSZW5kZXJPYmplY3QqIG9iaiwgY29uc3QgTGluZUluZm8mIGxp
bmVJbmZvLCBJbmxpbmVCb3gqIGNoaWxkQm94KQorSW5saW5lRmxvd0JveCogUmVuZGVyQmxvY2s6
OmNyZWF0ZUxpbmVCb3hlcyhSZW5kZXJPYmplY3QqIG9iaiwgY29uc3QgTGluZUluZm8mIGxpbmVJ
bmZvLCBJbmxpbmVCb3gqIGNoaWxkQm94LCBib29sIHN0YXJ0TmV3U2VnbWVudCkKIHsKICAgICAv
LyBTZWUgaWYgd2UgaGF2ZSBhbiB1bmNvbnN0cnVjdGVkIGxpbmUgYm94IGZvciB0aGlzIG9iamVj
dCB0aGF0IGlzIGFsc28KICAgICAvLyB0aGUgbGFzdCBpdGVtIG9uIHRoZSBsaW5lLgpAQCAtNDcz
LDcgKzQ3Miw4IEBAIElubGluZUZsb3dCb3gqIFJlbmRlckJsb2NrOjpjcmVhdGVMaW5lQm94ZXMo
UmVuZGVyT2JqZWN0KiBvYmosIGNvbnN0IExpbmVJbmZvJiBsCiAgICAgICAgIC8vIHRoZSBzYW1l
IGxpbmUgKHRoaXMgY2FuIGhhcHBlbiB3aXRoIHZlcnkgZmFuY3kgbGFuZ3VhZ2UgbWl4dHVyZXMp
LgogICAgICAgICBib29sIGNvbnN0cnVjdGVkTmV3Qm94ID0gZmFsc2U7CiAgICAgICAgIGJvb2wg
YWxsb3dlZFRvQ29uc3RydWN0TmV3Qm94ID0gIWhhc0RlZmF1bHRMaW5lQm94Q29udGFpbiB8fCAh
aW5saW5lRmxvdyB8fCBpbmxpbmVGbG93LT5hbHdheXNDcmVhdGVMaW5lQm94ZXMoKTsKLSAgICAg
ICAgYm9vbCBjYW5Vc2VFeGlzdGluZ1BhcmVudEJveCA9IHBhcmVudEJveCAmJiAhcGFyZW50SXND
b25zdHJ1Y3RlZE9ySGF2ZU5leHQocGFyZW50Qm94KTsKKyAgICAgICAgYm9vbCBtdXN0Q3JlYXRl
Qm94ZXNUb1Jvb3QgPSBzdGFydE5ld1NlZ21lbnQgJiYgIShwYXJlbnRCb3ggJiYgcGFyZW50Qm94
LT5pc1Jvb3RJbmxpbmVCb3goKSk7CisgICAgICAgIGJvb2wgY2FuVXNlRXhpc3RpbmdQYXJlbnRC
b3ggPSBwYXJlbnRCb3ggJiYgIXBhcmVudElzQ29uc3RydWN0ZWRPckhhdmVOZXh0KHBhcmVudEJv
eCkgJiYgIW11c3RDcmVhdGVCb3hlc1RvUm9vdDsKICAgICAgICAgaWYgKGFsbG93ZWRUb0NvbnN0
cnVjdE5ld0JveCAmJiAhY2FuVXNlRXhpc3RpbmdQYXJlbnRCb3gpIHsKICAgICAgICAgICAgIC8v
IFdlIG5lZWQgdG8gbWFrZSBhIG5ldyBib3ggZm9yIHRoaXMgcmVuZGVyIG9iamVjdC4gIE9uY2UK
ICAgICAgICAgICAgIC8vIG1hZGUsIHdlIG5lZWQgdG8gcGxhY2UgaXQgYXQgdGhlIGVuZCBvZiB0
aGUgY3VycmVudCBsaW5lLgpAQCAtNTcwLDEwICs1NzAsMTEgQEAgUm9vdElubGluZUJveCogUmVu
ZGVyQmxvY2s6OmNvbnN0cnVjdExpbmUoQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4mIGJpZGlSdW5zLCBj
b25zdAogCiAgICAgICAgIC8vIElmIHdlIGhhdmUgbm8gcGFyZW50IGJveCB5ZXQsIG9yIGlmIHRo
ZSBydW4gaXMgbm90IHNpbXBseSBhIHNpYmxpbmcsCiAgICAgICAgIC8vIHRoZW4gd2UgbmVlZCB0
byBjb25zdHJ1Y3QgaW5saW5lIGJveGVzIGFzIG5lY2Vzc2FyeSB0byBwcm9wZXJseSBlbmNsb3Nl
IHRoZQotICAgICAgICAvLyBydW4ncyBpbmxpbmUgYm94LgotICAgICAgICBpZiAoIXBhcmVudEJv
eCB8fCBwYXJlbnRCb3gtPnJlbmRlcmVyKCkgIT0gci0+bV9vYmplY3QtPnBhcmVudCgpKQorICAg
ICAgICAvLyBydW4ncyBpbmxpbmUgYm94LiBTZWdtZW50cyBjYW4gb25seSBiZSBzaWJsaW5ncyBh
dCB0aGUgcm9vdCBsZXZlbCwgYXMKKyAgICAgICAgLy8gdGhleSBhcmUgcG9zaXRpb25lZCBzZXBh
cmF0ZWx5LgorICAgICAgICBpZiAoIXBhcmVudEJveCB8fCBwYXJlbnRCb3gtPnJlbmRlcmVyKCkg
IT0gci0+bV9vYmplY3QtPnBhcmVudCgpIHx8IHItPm1fc3RhcnRzU2VnbWVudCkKICAgICAgICAg
ICAgIC8vIENyZWF0ZSBuZXcgaW5saW5lIGJveGVzIGFsbCB0aGUgd2F5IGJhY2sgdG8gdGhlIGFw
cHJvcHJpYXRlIGluc2VydGlvbiBwb2ludC4KLSAgICAgICAgICAgIHBhcmVudEJveCA9IGNyZWF0
ZUxpbmVCb3hlcyhyLT5tX29iamVjdC0+cGFyZW50KCksIGxpbmVJbmZvLCBib3gpOworICAgICAg
ICAgICAgcGFyZW50Qm94ID0gY3JlYXRlTGluZUJveGVzKHItPm1fb2JqZWN0LT5wYXJlbnQoKSwg
bGluZUluZm8sIGJveCwgci0+bV9zdGFydHNTZWdtZW50KTsKICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICAvLyBBcHBlbmQgdGhlIGlubGluZSBib3ggdG8gdGhpcyBsaW5lLgogICAgICAgICAg
ICAgcGFyZW50Qm94LT5hZGRUb0xpbmUoYm94KTsKQEAgLTgwOCw2ICs4MDksOSBAQCBzdGF0aWMg
aW5saW5lIHZvaWQgY29tcHV0ZUV4cGFuc2lvbkZvckp1c3RpZmllZFRleHQoQmlkaVJ1biogZmly
c3RSdW4sIEJpZGlSdW4qCiAKICAgICBzaXplX3QgaSA9IDA7CiAgICAgZm9yIChCaWRpUnVuKiBy
ID0gZmlyc3RSdW47IHI7IHIgPSByLT5uZXh0KCkpIHsKKyAgICAgICAgLy8gVGhlIGNhbGN1bGF0
aW9uIGlzIHNlcGFyYXRlIGZvciBlYWNoIHNlZ21lbnQKKyAgICAgICAgaWYgKHItPm1fc3RhcnRz
U2VnbWVudCkKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBpZiAoIXItPm1fYm94IHx8IHIg
PT0gdHJhaWxpbmdTcGFjZVJ1bikKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAKQEAg
LTg4MywxNyArODg3LDUzIEBAIHZvaWQgUmVuZGVyQmxvY2s6OmNvbXB1dGVJbmxpbmVEaXJlY3Rp
b25Qb3NpdGlvbnNGb3JMaW5lKFJvb3RJbmxpbmVCb3gqIGxpbmVCb3gsCiAgICAgLy8gQ1NTIDIu
MTogIidUZXh0LWluZGVudCcgb25seSBhZmZlY3RzIGEgbGluZSBpZiBpdCBpcyB0aGUgZmlyc3Qg
Zm9ybWF0dGVkIGxpbmUgb2YgYW4gZWxlbWVudC4gRm9yIGV4YW1wbGUsIHRoZSBmaXJzdCBsaW5l
IG9mIGFuIGFub255bW91cyBibG9jayAKICAgICAvLyBib3ggaXMgb25seSBhZmZlY3RlZCBpZiBp
dCBpcyB0aGUgZmlyc3QgY2hpbGQgb2YgaXRzIHBhcmVudCBlbGVtZW50LiIKICAgICBib29sIGZp
cnN0TGluZSA9IGxpbmVJbmZvLmlzRmlyc3RMaW5lKCkgJiYgIShpc0Fub255bW91c0Jsb2NrKCkg
JiYgcGFyZW50KCktPmZpcnN0Q2hpbGQoKSAhPSB0aGlzKTsKLSAgICBmbG9hdCBsb2dpY2FsTGVm
dCA9IHBpeGVsU25hcHBlZExvZ2ljYWxMZWZ0T2Zmc2V0Rm9yTGluZShsb2dpY2FsSGVpZ2h0KCks
IGZpcnN0TGluZSwgbGluZUxvZ2ljYWxIZWlnaHQpOwotICAgIGZsb2F0IGxvZ2ljYWxSaWdodCA9
IHBpeGVsU25hcHBlZExvZ2ljYWxSaWdodE9mZnNldEZvckxpbmUobG9naWNhbEhlaWdodCgpLCBm
aXJzdExpbmUsIGxpbmVMb2dpY2FsSGVpZ2h0KTsKKyAgICBmbG9hdCBsaW5lTG9naWNhbExlZnQg
PSBwaXhlbFNuYXBwZWRMb2dpY2FsTGVmdE9mZnNldEZvckxpbmUobG9naWNhbEhlaWdodCgpLCBm
aXJzdExpbmUsIGxpbmVMb2dpY2FsSGVpZ2h0KTsKKyAgICBmbG9hdCBsaW5lTG9naWNhbFJpZ2h0
ID0gcGl4ZWxTbmFwcGVkTG9naWNhbFJpZ2h0T2Zmc2V0Rm9yTGluZShsb2dpY2FsSGVpZ2h0KCks
IGZpcnN0TGluZSwgbGluZUxvZ2ljYWxIZWlnaHQpOworICAgIGZsb2F0IGF2YWlsYWJsZUxvZ2lj
YWxXaWR0aDsKKyAgICBib29sIG5lZWRzV29yZFNwYWNpbmc7CiAjaWYgRU5BQkxFKENTU19FWENM
VVNJT05TKQogICAgIEV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbyogZXhjbHVzaW9uU2hhcGVJbnNp
ZGVJbmZvID0gbGF5b3V0RXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvKHRoaXMpOwogICAgIGlmIChl
eGNsdXNpb25TaGFwZUluc2lkZUluZm8gJiYgZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLT5oYXNT
ZWdtZW50cygpKSB7Ci0gICAgICAgIGxvZ2ljYWxMZWZ0ID0gbWF4PGZsb2F0Pihyb3VuZFRvSW50
KGV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby0+c2VnbWVudHMoKVswXS5sb2dpY2FsTGVmdCksIGxv
Z2ljYWxMZWZ0KTsKLSAgICAgICAgbG9naWNhbFJpZ2h0ID0gbWluPGZsb2F0PihmbG9vclRvSW50
KGV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby0+c2VnbWVudHMoKVswXS5sb2dpY2FsUmlnaHQpLCBs
b2dpY2FsUmlnaHQpOworICAgICAgICBCaWRpUnVuKiBzZWdtZW50U3RhcnQgPSBmaXJzdFJ1bjsK
KyAgICAgICAgY29uc3QgU2VnbWVudExpc3QmIHNlZ21lbnRzID0gZXhjbHVzaW9uU2hhcGVJbnNp
ZGVJbmZvLT5zZWdtZW50cygpOworICAgICAgICBmbG9hdCBsb2dpY2FsTGVmdCA9IG1heDxmbG9h
dD4ocm91bmRUb0ludChzZWdtZW50c1swXS5sb2dpY2FsTGVmdCksIGxpbmVMb2dpY2FsTGVmdCk7
CisgICAgICAgIGZsb2F0IGxvZ2ljYWxSaWdodCA9IG1pbjxmbG9hdD4oZmxvb3JUb0ludChzZWdt
ZW50c1swXS5sb2dpY2FsUmlnaHQpLCBsaW5lTG9naWNhbFJpZ2h0KTsKKyAgICAgICAgZmxvYXQg
c3RhcnRMb2dpY2FsTGVmdCA9IGxvZ2ljYWxMZWZ0OworICAgICAgICBmbG9hdCBlbmRMb2dpY2Fs
UmlnaHQgPSBsb2dpY2FsTGVmdDsKKyAgICAgICAgZmxvYXQgbWluTG9naWNhbExlZnQgPSBsb2dp
Y2FsTGVmdDsKKyAgICAgICAgZmxvYXQgbWF4TG9naWNhbFJpZ2h0ID0gbG9naWNhbExlZnQ7Cisg
ICAgICAgIGxpbmVCb3gtPmJlZ2luUGxhY2luZ0JveFJhbmdlc0luSW5saW5lRGlyZWN0aW9uKGxv
Z2ljYWxMZWZ0KTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzZWdtZW50cy5zaXpl
KCk7IGkrKykgeworICAgICAgICAgICAgaWYgKGkpIHsKKyAgICAgICAgICAgICAgICBsb2dpY2Fs
TGVmdCA9IG1heDxmbG9hdD4ocm91bmRUb0ludChzZWdtZW50c1tpXS5sb2dpY2FsTGVmdCksIGxp
bmVMb2dpY2FsTGVmdCk7CisgICAgICAgICAgICAgICAgbG9naWNhbFJpZ2h0ID0gbWluPGZsb2F0
PihmbG9vclRvSW50KHNlZ21lbnRzW2ldLmxvZ2ljYWxSaWdodCksIGxpbmVMb2dpY2FsUmlnaHQp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgYXZhaWxhYmxlTG9naWNhbFdpZHRoID0gbG9n
aWNhbFJpZ2h0IC0gbG9naWNhbExlZnQ7CisgICAgICAgICAgICBCaWRpUnVuKiBuZXdTZWdtZW50
U3RhcnQgPSBjb21wdXRlSW5saW5lRGlyZWN0aW9uUG9zaXRpb25zRm9yU2VnbWVudChsaW5lQm94
LCBsaW5lSW5mbywgdGV4dEFsaWduLCBsb2dpY2FsTGVmdCwgYXZhaWxhYmxlTG9naWNhbFdpZHRo
LCBzZWdtZW50U3RhcnQsIHRyYWlsaW5nU3BhY2VSdW4sIHRleHRCb3hEYXRhTWFwLCB2ZXJ0aWNh
bFBvc2l0aW9uQ2FjaGUsIHdvcmRNZWFzdXJlbWVudHMpOworICAgICAgICAgICAgbmVlZHNXb3Jk
U3BhY2luZyA9IGZhbHNlOworICAgICAgICAgICAgZW5kTG9naWNhbFJpZ2h0ID0gbGluZUJveC0+
cGxhY2VCb3hSYW5nZUluSW5saW5lRGlyZWN0aW9uKHNlZ21lbnRTdGFydC0+bV9ib3gsIG5ld1Nl
Z21lbnRTdGFydCA/IG5ld1NlZ21lbnRTdGFydC0+bV9ib3ggOiAwLCBsb2dpY2FsTGVmdCwgbWlu
TG9naWNhbExlZnQsIG1heExvZ2ljYWxSaWdodCwgbmVlZHNXb3JkU3BhY2luZywgdGV4dEJveERh
dGFNYXApOworICAgICAgICAgICAgaWYgKCFuZXdTZWdtZW50U3RhcnQgfHwgIW5ld1NlZ21lbnRT
dGFydC0+bmV4dCgpKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgQVNTRVJU
KG5ld1NlZ21lbnRTdGFydC0+bV9zdGFydHNTZWdtZW50KTsKKyAgICAgICAgICAgIC8vIERpc2Nh
cmQgdGhlIGVtcHR5IHNlZ21lbnQgc3RhcnQgbWFya2VyIGJpZGkgcnVucworICAgICAgICAgICAg
c2VnbWVudFN0YXJ0ID0gbmV3U2VnbWVudFN0YXJ0LT5uZXh0KCk7CisgICAgICAgIH0KKyAgICAg
ICAgbGluZUJveC0+ZW5kUGxhY2luZ0JveFJhbmdlc0luSW5saW5lRGlyZWN0aW9uKHN0YXJ0TG9n
aWNhbExlZnQsIGVuZExvZ2ljYWxSaWdodCwgbWluTG9naWNhbExlZnQsIG1heExvZ2ljYWxSaWdo
dCk7CisgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKLSAgICBmbG9hdCBhdmFpbGFibGVM
b2dpY2FsV2lkdGggPSBsb2dpY2FsUmlnaHQgLSBsb2dpY2FsTGVmdDsKKyAgICBhdmFpbGFibGVM
b2dpY2FsV2lkdGggPSBsaW5lTG9naWNhbFJpZ2h0IC0gbGluZUxvZ2ljYWxMZWZ0OworICAgIGNv
bXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlvbnNGb3JTZWdtZW50KGxpbmVCb3gsIGxpbmVJbmZv
LCB0ZXh0QWxpZ24sIGxpbmVMb2dpY2FsTGVmdCwgYXZhaWxhYmxlTG9naWNhbFdpZHRoLCBmaXJz
dFJ1biwgIHRyYWlsaW5nU3BhY2VSdW4sIHRleHRCb3hEYXRhTWFwLCB2ZXJ0aWNhbFBvc2l0aW9u
Q2FjaGUsIHdvcmRNZWFzdXJlbWVudHMpOworICAgIC8vIFRoZSB3aWR0aHMgb2YgYWxsIHJ1bnMg
YXJlIG5vdyBrbm93bi4gV2UgY2FuIG5vdyBwbGFjZSBldmVyeSBpbmxpbmUgYm94IChhbmQKKyAg
ICAvLyBjb21wdXRlIGFjY3VyYXRlIHdpZHRocyBmb3IgdGhlIGlubGluZSBmbG93IGJveGVzKS4K
KyAgICBuZWVkc1dvcmRTcGFjaW5nID0gZmFsc2U7CisgICAgbGluZUJveC0+cGxhY2VCb3hlc0lu
SW5saW5lRGlyZWN0aW9uKGxpbmVMb2dpY2FsTGVmdCwgbmVlZHNXb3JkU3BhY2luZywgdGV4dEJv
eERhdGFNYXApOworfQogCitCaWRpUnVuKiBSZW5kZXJCbG9jazo6Y29tcHV0ZUlubGluZURpcmVj
dGlvblBvc2l0aW9uc0ZvclNlZ21lbnQoUm9vdElubGluZUJveCogbGluZUJveCwgY29uc3QgTGlu
ZUluZm8mIGxpbmVJbmZvLCBFVGV4dEFsaWduIHRleHRBbGlnbiwgZmxvYXQmIGxvZ2ljYWxMZWZ0
LAorICAgIGZsb2F0JiBhdmFpbGFibGVMb2dpY2FsV2lkdGgsIEJpZGlSdW4qIGZpcnN0UnVuLCBC
aWRpUnVuKiB0cmFpbGluZ1NwYWNlUnVuLCBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01h
cCYgdGV4dEJveERhdGFNYXAsIFZlcnRpY2FsUG9zaXRpb25DYWNoZSYgdmVydGljYWxQb3NpdGlv
bkNhY2hlLAorICAgIFdvcmRNZWFzdXJlbWVudHMmIHdvcmRNZWFzdXJlbWVudHMpCit7CiAgICAg
Ym9vbCBuZWVkc1dvcmRTcGFjaW5nID0gZmFsc2U7CiAgICAgZmxvYXQgdG90YWxMb2dpY2FsV2lk
dGggPSBsaW5lQm94LT5nZXRGbG93U3BhY2luZ0xvZ2ljYWxXaWR0aCgpOwogICAgIHVuc2lnbmVk
IGV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQgPSAwOwpAQCAtOTAxLDcgKzk0MSwxMSBAQCB2b2lk
IFJlbmRlckJsb2NrOjpjb21wdXRlSW5saW5lRGlyZWN0aW9uUG9zaXRpb25zRm9yTGluZShSb290
SW5saW5lQm94KiBsaW5lQm94LAogICAgIFZlY3Rvcjx1bnNpZ25lZCwgMTY+IGV4cGFuc2lvbk9w
cG9ydHVuaXRpZXM7CiAgICAgUmVuZGVyT2JqZWN0KiBwcmV2aW91c09iamVjdCA9IDA7CiAKLSAg
ICBmb3IgKEJpZGlSdW4qIHIgPSBmaXJzdFJ1bjsgcjsgciA9IHItPm5leHQoKSkgeworICAgIEJp
ZGlSdW4qIHIgPSBmaXJzdFJ1bjsKKyAgICBmb3IgKDsgcjsgciA9IHItPm5leHQoKSkgeworICAg
ICAgICAvLyBEbyBub3QgcGFzcyB0aGUgbWFya2VyIGZvciB0aGUgbmV4dCBzZWdtZW50CisgICAg
ICAgIGlmIChyLT5tX3N0YXJ0c1NlZ21lbnQpCisgICAgICAgICAgICBicmVhazsKICAgICAgICAg
aWYgKCFyLT5tX2JveCB8fCByLT5tX29iamVjdC0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgfHwg
ci0+bV9ib3gtPmlzTGluZUJyZWFrKCkpCiAgICAgICAgICAgICBjb250aW51ZTsgLy8gUG9zaXRp
b25lZCBvYmplY3RzIGFyZSBvbmx5IHBhcnRpY2lwYXRpbmcgdG8gZmlndXJlIG91dCB0aGVpcgog
ICAgICAgICAgICAgICAgICAgICAgIC8vIGNvcnJlY3Qgc3RhdGljIHggcG9zaXRpb24uICBUaGV5
IGhhdmUgbm8gZWZmZWN0IG9uIHRoZSB3aWR0aC4KQEAgLTk1MSwxMCArOTk1LDcgQEAgdm9pZCBS
ZW5kZXJCbG9jazo6Y29tcHV0ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0ZvckxpbmUoUm9vdElu
bGluZUJveCogbGluZUJveCwKIAogICAgIGNvbXB1dGVFeHBhbnNpb25Gb3JKdXN0aWZpZWRUZXh0
KGZpcnN0UnVuLCB0cmFpbGluZ1NwYWNlUnVuLCBleHBhbnNpb25PcHBvcnR1bml0aWVzLCBleHBh
bnNpb25PcHBvcnR1bml0eUNvdW50LCB0b3RhbExvZ2ljYWxXaWR0aCwgYXZhaWxhYmxlTG9naWNh
bFdpZHRoKTsKIAotICAgIC8vIFRoZSB3aWR0aHMgb2YgYWxsIHJ1bnMgYXJlIG5vdyBrbm93bi4g
IFdlIGNhbiBub3cgcGxhY2UgZXZlcnkgaW5saW5lIGJveCAoYW5kCi0gICAgLy8gY29tcHV0ZSBh
Y2N1cmF0ZSB3aWR0aHMgZm9yIHRoZSBpbmxpbmUgZmxvdyBib3hlcykuCi0gICAgbmVlZHNXb3Jk
U3BhY2luZyA9IGZhbHNlOwotICAgIGxpbmVCb3gtPnBsYWNlQm94ZXNJbklubGluZURpcmVjdGlv
bihsb2dpY2FsTGVmdCwgbmVlZHNXb3JkU3BhY2luZywgdGV4dEJveERhdGFNYXApOworICAgIHJl
dHVybiByOwogfQogCiB2b2lkIFJlbmRlckJsb2NrOjpjb21wdXRlQmxvY2tEaXJlY3Rpb25Qb3Np
dGlvbnNGb3JMaW5lKFJvb3RJbmxpbmVCb3gqIGxpbmVCb3gsIEJpZGlSdW4qIGZpcnN0UnVuLCBH
bHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcCYgdGV4dEJveERhdGFNYXAsCkBAIC0xMTAx
LDEzICsxMTQyLDEzIEBAIHN0YXRpYyBpbmxpbmUgQmlkaVN0YXR1cyBzdGF0dXNXaXRoRGlyZWN0
aW9uKFRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbiwgYm9vbCBpCiB9CiAKIC8vIEZJWE1FOiBC
aWRpUmVzb2x2ZXIgc2hvdWxkIGhhdmUgdGhpcyBsb2dpYy4KLXN0YXRpYyBpbmxpbmUgdm9pZCBj
b25zdHJ1Y3RCaWRpUnVucyhJbmxpbmVCaWRpUmVzb2x2ZXImIHRvcFJlc29sdmVyLCBCaWRpUnVu
TGlzdDxCaWRpUnVuPiYgYmlkaVJ1bnMsIGNvbnN0IElubGluZUl0ZXJhdG9yJiBlbmRPZkxpbmUs
IFZpc3VhbERpcmVjdGlvbk92ZXJyaWRlIG92ZXJyaWRlLCBib29sIHByZXZpb3VzTGluZUJyb2tl
Q2xlYW5seSkKK3N0YXRpYyBpbmxpbmUgdm9pZCBjb25zdHJ1Y3RCaWRpUnVuc0ZvclNlZ21lbnQo
SW5saW5lQmlkaVJlc29sdmVyJiB0b3BSZXNvbHZlciwgQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4mIGJp
ZGlSdW5zLCBjb25zdCBJbmxpbmVJdGVyYXRvciYgZW5kT2ZSdW5zLCBWaXN1YWxEaXJlY3Rpb25P
dmVycmlkZSBvdmVycmlkZSwgYm9vbCBwcmV2aW91c0xpbmVCcm9rZUNsZWFubHkpCiB7CiAgICAg
Ly8gRklYTUU6IFdlIHNob3VsZCBwYXNzIGEgQmlkaVJ1bkxpc3QgaW50byBjcmVhdGVCaWRpUnVu
c0ZvckxpbmUgaW5zdGVhZAogICAgIC8vIG9mIHRoZSByZXNvbHZlciBvd25pbmcgdGhlIHJ1bnMu
CiAgICAgQVNTRVJUKCZ0b3BSZXNvbHZlci5ydW5zKCkgPT0gJmJpZGlSdW5zKTsKICAgICBSZW5k
ZXJPYmplY3QqIGN1cnJlbnRSb290ID0gdG9wUmVzb2x2ZXIucG9zaXRpb24oKS5yb290KCk7Ci0g
ICAgdG9wUmVzb2x2ZXIuY3JlYXRlQmlkaVJ1bnNGb3JMaW5lKGVuZE9mTGluZSwgb3ZlcnJpZGUs
IHByZXZpb3VzTGluZUJyb2tlQ2xlYW5seSk7CisgICAgdG9wUmVzb2x2ZXIuY3JlYXRlQmlkaVJ1
bnNGb3JMaW5lKGVuZE9mUnVucywgb3ZlcnJpZGUsIHByZXZpb3VzTGluZUJyb2tlQ2xlYW5seSk7
CiAKICAgICB3aGlsZSAoIXRvcFJlc29sdmVyLmlzb2xhdGVkUnVucygpLmlzRW1wdHkoKSkgewog
ICAgICAgICAvLyBJdCBkb2VzIG5vdCBtYXR0ZXIgd2hpY2ggb3JkZXIgd2UgcmVzb2x2ZSB0aGUg
cnVucyBhcyBsb25nIGFzIHdlIHJlc29sdmUgdGhlbSBhbGwuCkBAIC0xMTQ3LDcgKzExODgsNyBA
QCBzdGF0aWMgaW5saW5lIHZvaWQgY29uc3RydWN0QmlkaVJ1bnMoSW5saW5lQmlkaVJlc29sdmVy
JiB0b3BSZXNvbHZlciwgQmlkaVJ1bkxpcwogICAgICAgICAvLyBXZSBzdG9wIGF0IHRoZSBuZXh0
IGVuZCBvZiBsaW5lOyB3ZSBtYXkgcmUtZW50ZXIgdGhpcyBpc29sYXRlIGluIHRoZSBuZXh0IGNh
bGwgdG8gY29uc3RydWN0QmlkaVJ1bnMoKS4KICAgICAgICAgLy8gRklYTUU6IFdoYXQgc2hvdWxk
IGVuZCBhbmQgcHJldmlvdXNMaW5lQnJva2VDbGVhbmx5IGJlPwogICAgICAgICAvLyBybml3YSBz
YXlzIHByZXZpb3VzTGluZUJyb2tlQ2xlYW5seSBpcyBqdXN0IGEgV2luSUUgaGFjayBhbmQgY291
bGQgYWx3YXlzIGJlIGZhbHNlIGhlcmU/Ci0gICAgICAgIGlzb2xhdGVkUmVzb2x2ZXIuY3JlYXRl
QmlkaVJ1bnNGb3JMaW5lKGVuZE9mTGluZSwgTm9WaXN1YWxPdmVycmlkZSwgcHJldmlvdXNMaW5l
QnJva2VDbGVhbmx5KTsKKyAgICAgICAgaXNvbGF0ZWRSZXNvbHZlci5jcmVhdGVCaWRpUnVuc0Zv
ckxpbmUoZW5kT2ZSdW5zLCBOb1Zpc3VhbE92ZXJyaWRlLCBwcmV2aW91c0xpbmVCcm9rZUNsZWFu
bHkpOwogICAgICAgICAvLyBOb3RlIHRoYXQgd2UgZG8gbm90IGRlbGV0ZSB0aGUgcnVucyBmcm9t
IHRoZSByZXNvbHZlci4KICAgICAgICAgLy8gV2UncmUgbm90IGd1YXJhbnRlZWQgdG8gZ2V0IGFu
eSBCaWRpUnVucyBpbiB0aGUgcHJldmlvdXMgc3RlcC4gSWYgd2UgZG9uJ3QsIHdlIGFsbG93IHRo
ZSBwbGFjZWhvbGRlcgogICAgICAgICAvLyBpdHNlbGYgdG8gYmUgdHVybmVkIGludG8gYW4gSW5s
aW5lQm94LiBXZSBjYW4ndCByZW1vdmUgaXQgaGVyZSB3aXRob3V0IHBvdGVudGlhbGx5IGxvc2lu
ZyB0cmFjayBvZgpAQCAtMTE2NCw2ICsxMjA1LDM3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBjb25z
dHJ1Y3RCaWRpUnVucyhJbmxpbmVCaWRpUmVzb2x2ZXImIHRvcFJlc29sdmVyLCBCaWRpUnVuTGlz
CiAgICAgfQogfQogCitzdGF0aWMgaW5saW5lIHZvaWQgY29uc3RydWN0QmlkaVJ1bnNGb3JMaW5l
KGNvbnN0IFJlbmRlckJsb2NrKiBibG9jaywgSW5saW5lQmlkaVJlc29sdmVyJiB0b3BSZXNvbHZl
ciwgQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4mIGJpZGlSdW5zLCBjb25zdCBJbmxpbmVJdGVyYXRvciYg
ZW5kT2ZMaW5lLCBWaXN1YWxEaXJlY3Rpb25PdmVycmlkZSBvdmVycmlkZSwgYm9vbCBwcmV2aW91
c0xpbmVCcm9rZUNsZWFubHkpCit7CisjaWYgIUVOQUJMRShDU1NfRVhDTFVTSU9OUykKKyAgICBj
b25zdHJ1Y3RCaWRpUnVuc0ZvclNlZ21lbnQodG9wUmVzb2x2ZXIsIGJpZGlSdW5zLCBlbmRPZkxp
bmUsIG92ZXJyaWRlLCBwcmV2aW91c0xpbmVCcm9rZUNsZWFubHkpOworI2Vsc2UKKyAgICBFeGNs
dXNpb25TaGFwZUluc2lkZUluZm8qIGV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbyA9IGxheW91dEV4
Y2x1c2lvblNoYXBlSW5zaWRlSW5mbyhibG9jayk7CisgICAgaWYgKCFleGNsdXNpb25TaGFwZUlu
c2lkZUluZm8gfHwgIWV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby0+aGFzU2VnbWVudHMoKSkgewor
ICAgICAgICBjb25zdHJ1Y3RCaWRpUnVuc0ZvclNlZ21lbnQodG9wUmVzb2x2ZXIsIGJpZGlSdW5z
LCBlbmRPZkxpbmUsIG92ZXJyaWRlLCBwcmV2aW91c0xpbmVCcm9rZUNsZWFubHkpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgY29uc3QgU2VnbWVudFJhbmdlTGlzdCYgc2VnbWVudFJh
bmdlcyA9IGV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby0+c2VnbWVudFJhbmdlcygpOworICAgIEFT
U0VSVChzZWdtZW50UmFuZ2VzLnNpemUoKSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHNlZ21lbnRSYW5nZXMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgSW5saW5lSXRlcmF0b3Igc2Vn
bWVudFN0YXJ0ID0gc2VnbWVudFJhbmdlc1tpXS5zdGFydDsKKyAgICAgICAgSW5saW5lSXRlcmF0
b3Igc2VnbWVudEVuZCA9IHNlZ21lbnRSYW5nZXNbaV0uZW5kOworICAgICAgICBpZiAoaSkgewor
ICAgICAgICAgICAgQVNTRVJUKHNlZ21lbnRTdGFydC5tX29iaik7CisgICAgICAgICAgICBCaWRp
UnVuKiBzZWdtZW50TWFya2VyID0gY3JlYXRlUnVuKHNlZ21lbnRTdGFydC5tX3Bvcywgc2VnbWVu
dFN0YXJ0Lm1fcG9zLCBzZWdtZW50U3RhcnQubV9vYmosIHRvcFJlc29sdmVyKTsKKyAgICAgICAg
ICAgIHNlZ21lbnRNYXJrZXItPm1fc3RhcnRzU2VnbWVudCA9IHRydWU7CisgICAgICAgICAgICBi
aWRpUnVucy5hZGRSdW4oc2VnbWVudE1hcmtlcik7CisgICAgICAgICAgICAvLyBEbyBub3QgY29s
bGFwc2UgbWlkcG9pbnRzIGJldHdlZW4gc2VnbWVudHMKKyAgICAgICAgICAgIHRvcFJlc29sdmVy
Lm1pZHBvaW50U3RhdGUoKS5iZXR3ZWVuTWlkcG9pbnRzID0gZmFsc2U7CisgICAgICAgIH0KKyAg
ICAgICAgdG9wUmVzb2x2ZXIuc2V0UG9zaXRpb24oc2VnbWVudFN0YXJ0LCBudW1iZXJPZklzb2xh
dGVBbmNlc3RvcnMoc2VnbWVudFN0YXJ0KSk7CisgICAgICAgIGNvbnN0cnVjdEJpZGlSdW5zRm9y
U2VnbWVudCh0b3BSZXNvbHZlciwgYmlkaVJ1bnMsIHNlZ21lbnRFbmQsIG92ZXJyaWRlLCBwcmV2
aW91c0xpbmVCcm9rZUNsZWFubHkpOworICAgIH0KKyNlbmRpZgorfQorCiAvLyBUaGlzIGZ1bmN0
aW9uIGNvbnN0cnVjdHMgbGluZSBib3hlcyBmb3IgYWxsIG9mIHRoZSB0ZXh0IHJ1bnMgaW4gdGhl
IHJlc29sdmVyIGFuZCBjb21wdXRlcyB0aGVpciBwb3NpdGlvbi4KIFJvb3RJbmxpbmVCb3gqIFJl
bmRlckJsb2NrOjpjcmVhdGVMaW5lQm94ZXNGcm9tQmlkaVJ1bnMoQmlkaVJ1bkxpc3Q8QmlkaVJ1
bj4mIGJpZGlSdW5zLCBjb25zdCBJbmxpbmVJdGVyYXRvciYgZW5kLCBMaW5lSW5mbyYgbGluZUlu
Zm8sIFZlcnRpY2FsUG9zaXRpb25DYWNoZSYgdmVydGljYWxQb3NpdGlvbkNhY2hlLCBCaWRpUnVu
KiB0cmFpbGluZ1NwYWNlUnVuLCBXb3JkTWVhc3VyZW1lbnRzJiB3b3JkTWVhc3VyZW1lbnRzKQog
ewpAQCAtMTQ2MSw3ICsxNTMzLDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0UnVuc0FuZEZs
b2F0c0luUmFuZ2UoTGluZUxheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgSW5saW4KICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIG93bmVyc2hpcCBpcyByZXZlcnNlZC4g
V2Ugc2hvdWxkIG93biB0aGUgQmlkaVJ1bkxpc3QgYW5kIHBhc3MgaXQgdG8gY3JlYXRlQmlkaVJ1
bnNGb3JMaW5lLgogICAgICAgICAgICAgQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4mIGJpZGlSdW5zID0g
cmVzb2x2ZXIucnVucygpOwotICAgICAgICAgICAgY29uc3RydWN0QmlkaVJ1bnMocmVzb2x2ZXIs
IGJpZGlSdW5zLCBlbmQsIG92ZXJyaWRlLCBsYXlvdXRTdGF0ZS5saW5lSW5mbygpLnByZXZpb3Vz
TGluZUJyb2tlQ2xlYW5seSgpKTsKKyAgICAgICAgICAgIGNvbnN0cnVjdEJpZGlSdW5zRm9yTGlu
ZSh0aGlzLCByZXNvbHZlciwgYmlkaVJ1bnMsIGVuZCwgb3ZlcnJpZGUsIGxheW91dFN0YXRlLmxp
bmVJbmZvKCkucHJldmlvdXNMaW5lQnJva2VDbGVhbmx5KCkpOwogICAgICAgICAgICAgQVNTRVJU
KHJlc29sdmVyLnBvc2l0aW9uKCkgPT0gZW5kKTsKIAogICAgICAgICAgICAgQmlkaVJ1biogdHJh
aWxpbmdTcGFjZVJ1biA9ICFsYXlvdXRTdGF0ZS5saW5lSW5mbygpLnByZXZpb3VzTGluZUJyb2tl
Q2xlYW5seSgpID8gaGFuZGxlVHJhaWxpbmdTcGFjZXMoYmlkaVJ1bnMsIHJlc29sdmVyLmNvbnRl
eHQoKSkgOiAwOwpAQCAtMjMxNCw2ICsyMzg2LDQ4IEBAIHZvaWQgUmVuZGVyQmxvY2s6OkxpbmVC
cmVha2VyOjpyZXNldCgpCiAKIElubGluZUl0ZXJhdG9yIFJlbmRlckJsb2NrOjpMaW5lQnJlYWtl
cjo6bmV4dExpbmVCcmVhayhJbmxpbmVCaWRpUmVzb2x2ZXImIHJlc29sdmVyLCBMaW5lSW5mbyYg
bGluZUluZm8sIFJlbmRlclRleHRJbmZvJiByZW5kZXJUZXh0SW5mbywgRmxvYXRpbmdPYmplY3Qq
IGxhc3RGbG9hdEZyb21QcmV2aW91c0xpbmUsIHVuc2lnbmVkIGNvbnNlY3V0aXZlSHlwaGVuYXRl
ZExpbmVzLCBXb3JkTWVhc3VyZW1lbnRzJiB3b3JkTWVhc3VyZW1lbnRzKQogeworI2lmICFFTkFC
TEUoQ1NTX0VYQ0xVU0lPTlMpCisgICAgcmV0dXJuIG5leHRTZWdtZW50QnJlYWsocmVzb2x2ZXIs
IGxpbmVJbmZvLCByZW5kZXJUZXh0SW5mbywgbGFzdEZsb2F0RnJvbVByZXZpb3VzTGluZSwgY29u
c2VjdXRpdmVIeXBoZW5hdGVkTGluZXMsIHdvcmRNZWFzdXJlbWVudHMpOworI2Vsc2UKKyAgICBF
eGNsdXNpb25TaGFwZUluc2lkZUluZm8qIGV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbyA9IGxheW91
dEV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbyhtX2Jsb2NrKTsKKyAgICBpZiAoIWV4Y2x1c2lvblNo
YXBlSW5zaWRlSW5mbyB8fCAhZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLT5oYXNTZWdtZW50cygp
KQorICAgICAgICByZXR1cm4gbmV4dFNlZ21lbnRCcmVhayhyZXNvbHZlciwgbGluZUluZm8sIHJl
bmRlclRleHRJbmZvLCBsYXN0RmxvYXRGcm9tUHJldmlvdXNMaW5lLCBjb25zZWN1dGl2ZUh5cGhl
bmF0ZWRMaW5lcywgd29yZE1lYXN1cmVtZW50cyk7CisKKyAgICBJbmxpbmVJdGVyYXRvciBlbmQg
PSByZXNvbHZlci5wb3NpdGlvbigpOworICAgIElubGluZUl0ZXJhdG9yIG9sZEVuZCA9IGVuZDsK
KworICAgIGNvbnN0IFNlZ21lbnRMaXN0JiBzZWdtZW50cyA9IGV4Y2x1c2lvblNoYXBlSW5zaWRl
SW5mby0+c2VnbWVudHMoKTsKKyAgICBTZWdtZW50UmFuZ2VMaXN0JiBzZWdtZW50UmFuZ2VzID0g
ZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLT5zZWdtZW50UmFuZ2VzKCk7CisKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgc2VnbWVudHMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgSW5saW5l
SXRlcmF0b3Igc2VnbWVudFN0YXJ0ID0gcmVzb2x2ZXIucG9zaXRpb24oKTsKKyAgICAgICAgZW5k
ID0gbmV4dFNlZ21lbnRCcmVhayhyZXNvbHZlciwgbGluZUluZm8sIHJlbmRlclRleHRJbmZvLCBs
YXN0RmxvYXRGcm9tUHJldmlvdXNMaW5lLCBjb25zZWN1dGl2ZUh5cGhlbmF0ZWRMaW5lcywgd29y
ZE1lYXN1cmVtZW50cyk7CisKKyAgICAgICAgQVNTRVJUKHNlZ21lbnRSYW5nZXMuc2l6ZSgpID09
IGkpOworICAgICAgICBpZiAocmVzb2x2ZXIucG9zaXRpb24oKSA9PSBlbmQpIHsKKyAgICAgICAg
ICAgIC8vIE5vdGhpbmcgZml0IHRoaXMgc2VnbWVudAorICAgICAgICAgICAgc2VnbWVudFJhbmdl
cy5hcHBlbmQoTGluZVNlZ21lbnRSYW5nZShzZWdtZW50U3RhcnQsIHNlZ21lbnRTdGFydCkpOwor
ICAgICAgICAgICAgcmVzb2x2ZXIuc2V0UG9zaXRpb25JZ25vcmluZ05lc3RlZElzb2xhdGVzKHNl
Z21lbnRTdGFydCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBOb3RlIHRoYXQg
cmVzb2x2ZXIucG9zaXRpb24gaXMgYWxyZWFkeSBza2lwcGluZyBzb21lIG9mIHRoZSB3aGl0ZSBz
cGFjZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsaW5lLAorICAgICAgICAgICAgLy8gc28gdGhh
dCdzIHdoeSBzZWdtZW50U3RhcnQgbWlnaHQgYmUgZGlmZmVyZW50IHRoYW4gcmVzb2x2ZXIucG9z
aXRpb24oKS4KKyAgICAgICAgICAgIExpbmVTZWdtZW50UmFuZ2UgcmFuZ2UocmVzb2x2ZXIucG9z
aXRpb24oKSwgZW5kKTsKKyAgICAgICAgICAgIHNlZ21lbnRSYW5nZXMuYXBwZW5kKHJhbmdlKTsK
KyAgICAgICAgICAgIHJlc29sdmVyLnNldFBvc2l0aW9uKGVuZCwgbnVtYmVyT2ZJc29sYXRlQW5j
ZXN0b3JzKGVuZCkpOworCisgICAgICAgICAgICBpZiAobGluZUluZm8ucHJldmlvdXNMaW5lQnJv
a2VDbGVhbmx5KCkpIHsKKyAgICAgICAgICAgICAgICAvLyBJZiB3ZSBoaXQgYSBuZXcgbGluZSBi
cmVhaywganVzdCBzdG9wIGFkZGluZyBhbnl0aGluZyB0byB0aGlzIGxpbmUuCisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmVzb2x2
ZXIuc2V0UG9zaXRpb25JZ25vcmluZ05lc3RlZElzb2xhdGVzKG9sZEVuZCk7CisgICAgcmV0dXJu
IGVuZDsKKyNlbmRpZgorfQorCitJbmxpbmVJdGVyYXRvciBSZW5kZXJCbG9jazo6TGluZUJyZWFr
ZXI6Om5leHRTZWdtZW50QnJlYWsoSW5saW5lQmlkaVJlc29sdmVyJiByZXNvbHZlciwgTGluZUlu
Zm8mIGxpbmVJbmZvLCBSZW5kZXJUZXh0SW5mbyYgcmVuZGVyVGV4dEluZm8sIEZsb2F0aW5nT2Jq
ZWN0KiBsYXN0RmxvYXRGcm9tUHJldmlvdXNMaW5lLCB1bnNpZ25lZCBjb25zZWN1dGl2ZUh5cGhl
bmF0ZWRMaW5lcywgV29yZE1lYXN1cmVtZW50cyYgd29yZE1lYXN1cmVtZW50cykKK3sKICAgICBy
ZXNldCgpOwogCiAgICAgQVNTRVJUKHJlc29sdmVyLnBvc2l0aW9uKCkucm9vdCgpID09IG1fYmxv
Y2spOwpAQCAtMjg5NSw2ICszMDA5LDggQEAgSW5saW5lSXRlcmF0b3IgUmVuZGVyQmxvY2s6Okxp
bmVCcmVha2VyOjpuZXh0TGluZUJyZWFrKElubGluZUJpZGlSZXNvbHZlciYgcmVzb2wKICAgICAg
ICAgfQogICAgIH0KIAorICAgIC8vIEZJWE1FIEJ1ZyAxMDAwNDk6IFdlIGRvIG5vdCBuZWVkIHRv
IGNvbnN1bWUgaW5wdXQgaW4gYSBtdWx0aS1zZWdtZW50IGxpbmUKKyAgICAvLyB1bmxlc3Mgbm8g
c2VnbWVudCB3aWxsLgogICAgIC8vIG1ha2Ugc3VyZSB3ZSBjb25zdW1lIGF0IGxlYXN0IG9uZSBj
aGFyL29iamVjdC4KICAgICBpZiAobEJyZWFrID09IHJlc29sdmVyLnBvc2l0aW9uKCkpCiAgICAg
ICAgIGxCcmVhay5pbmNyZW1lbnQoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmZGVlMDJjN2NhMTc0MWI5MTBkMWY3MDEy
MmRiZWE3MzgwMmFiNGI5Li5hM2QxZmJiNDc0YzYxNWZlMGE0NWU0NzZjMWViM2U3ZjhjYzdkZmU5
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTItMTEtMTIgIEJlYXIgVHJhdmlzICA8YmV0cmF2
aXNAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1MgRXhjbHVzaW9uc10gRW5hYmxlIHNoYXBlLWlu
c2lkZSBmb3IgbXVsdGlwbGUtc2VnbWVudCBwb2x5Z29ucworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE4NzgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgdGVzdHMgZm9yIG11bHRpcGxlIHNlZ21l
bnQgcG9seWdvbnMuIFRoZXNlIHRlc3RzIG1ha2Ugc3VyZSB0aGF0IHRleHQgY2FuIGJlCisgICAg
ICAgIHByb3Blcmx5IGJyb2tlbiB1cCBpbnRvIG11bHRpcGxlIHNlZ21lbnRzIHBlciBsaW5lIHRv
IGZpdCBpbnRvIGEgc2hhcGUtaW5zaWRlLgorCisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3No
YXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAxLWV4cGVjdGVkLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUt
aW5zaWRlLW11bHRpcGxlLXNlZ21lbnRzLTAwMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0w
MDItZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBl
LWluc2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAyLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRp
cGxlLXNlZ21lbnRzLTAwMy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V4
Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDMu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFw
ZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDA0LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxl
LXNlZ21lbnRzLTAwNC5odG1sOiBBZGRlZC4KKwogMjAxMi0xMS0xMiAgSWFuIFZvbGxpY2sgIDx2
b2xsaWNrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCB1cGRhdGUgY2hyb21p
dW0tbWFjIGJhc2VsaW5lcy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9u
cy9yZXNvdXJjZXMvbXVsdGktc2VnbWVudC1wb2x5Z29uLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9l
eGNsdXNpb25zL3Jlc291cmNlcy9tdWx0aS1zZWdtZW50LXBvbHlnb24uanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ODYzNDZlMTY4MTY3MDBlOTU3YjIyNDcwNWI1OTY1MGU2YzY2OTNmYQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9yZXNvdXJjZXMvbXVsdGktc2VnbWVudC1w
b2x5Z29uLmpzCkBAIC0wLDAgKzEsMzcgQEAKK2Z1bmN0aW9uIGdlbmVyYXRlUG9seWdvbih3aWR0
aCwgaGVpZ2h0LCBmb250U2l6ZSwgcG9pbnRzLCBjb250ZW50LCBlbGVtZW50SWQpIHsKKyAgICBp
ZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5z
ZXRDU1NFeGNsdXNpb25zRW5hYmxlZCh0cnVlKTsKKyAgICB2YXIgZGl2ID0gY3JlYXRlT3JJbnNl
cnQoZWxlbWVudElkKTsKKyAgICB2YXIgcG9seWdvbiA9IHBvaW50cy5tYXAoZnVuY3Rpb24oZWxl
bSwgaW5kZXgsIGFycmF5KSB7CisgICAgICAgIHJldHVybiBlbGVtLnRvU3RyaW5nKCkgKyAncHgn
ICsgKGluZGV4IDwgYXJyYXkubGVuZ3RoIC0gMSAmJiBpbmRleCAlIDIgPT0gMSA/ICcsJyA6ICcn
KTsKKyAgICB9KS5qb2luKCcgJyk7CisgICAgcG9seWdvbiA9ICdwb2x5Z29uKCcgKyBwb2x5Z29u
ICsgJyknOworICAgIGRpdi5zdHlsZS5zZXRQcm9wZXJ0eSgnLXdlYmtpdC1zaGFwZS1pbnNpZGUn
LCBwb2x5Z29uKTsKKyAgICBkaXYuc3R5bGUuc2V0UHJvcGVydHkoJ3dpZHRoJywgd2lkdGggKyAn
cHgnKTsKKyAgICBkaXYuc3R5bGUuc2V0UHJvcGVydHkoJ2hlaWdodCcsIGhlaWdodCArICdweCcp
OworICAgIGRpdi5zdHlsZS5zZXRQcm9wZXJ0eSgnZm9udCcsIGZvbnRTaXplICsgJ3B4LzEgQWhl
bSwgc2Fucy1zZXJpZicpOworICAgIGRpdi5zdHlsZS5zZXRQcm9wZXJ0eSgnY29sb3InLCAnZ3Jl
ZW4nKTsKKyAgICBkaXYuc3R5bGUuc2V0UHJvcGVydHkoJ3dvcmQtd3JhcCcsICdicmVhay13b3Jk
Jyk7CisgICAgZGl2LmlubmVySFRNTCA9IGNvbnRlbnQ7Cit9CisKK2Z1bmN0aW9uIHNpbXVsYXRl
V2l0aFRleHQod2lkdGgsIGhlaWdodCwgZm9udFNpemUsIGNvbnRlbnQsIGVsZW1lbnRJZCkgewor
ICAgIHZhciBkaXYgPSBjcmVhdGVPckluc2VydChlbGVtZW50SWQpOworICAgIGRpdi5zdHlsZS5z
ZXRQcm9wZXJ0eSgnd2lkdGgnLCB3aWR0aCArICdweCcpOworICAgIGRpdi5zdHlsZS5zZXRQcm9w
ZXJ0eSgnaGVpZ2h0JywgaGVpZ2h0ICsgJ3B4Jyk7CisgICAgZGl2LnN0eWxlLnNldFByb3BlcnR5
KCdmb250JywgZm9udFNpemUgKyAncHgvMSBBaGVtLCBzYW5zLXNlcmlmJyk7CisgICAgZGl2LnN0
eWxlLnNldFByb3BlcnR5KCdjb2xvcicsICdncmVlbicpOworICAgIGRpdi5pbm5lckhUTUwgPSBj
b250ZW50OworfQorCitmdW5jdGlvbiBjcmVhdGVPckluc2VydChlbGVtZW50SWQpIHsKKyAgICBp
ZiAoZWxlbWVudElkKQorICAgICAgICByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxl
bWVudElkKTsKKworICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsK
KyAgICBpZiAoZG9jdW1lbnQuYm9keS5jaGlsZE5vZGVzLmxlbmd0aCkKKyAgICAgICAgZG9jdWVt
bnQuYm9keS5pbnNlcnRCZWZvcmUoZGl2LCBkb2N1bWVudC5ib2R5LmNoaWxkTm9kZXNbMF0pOwor
ICAgIGVsc2UKKyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkaXYpOworICAgIHJl
dHVybiBkaXY7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlw
bGUtc2VnbWVudHMtMDAxLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lv
bnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDEtZXhwZWN0
ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yMTg5ZTNmNDI4Nzg0YWE1YzIyYWJlMzBlM2UwZTZlNGNkNTUz
YjVhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBl
LWluc2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAxLWV4cGVjdGVkLmh0bWwK
QEAgLTAsMCArMSw5IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Jy4uL3Jlc291cmNl
cy9tdWx0aS1zZWdtZW50LXBvbHlnb24uanMnPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25s
b2FkPSJzaW11bGF0ZVdpdGhUZXh0KDI1MCwgMTAwLCA1MCwgJ1hYIFhYIFhYWFhYJykiPgorVGhp
cyB0ZXN0IHJlcXVpcmVzIHRoZSBBaGVtIGZvbnQsIGFuZCBzaG91bGQgZGlzcGxheSBhIDV4MiBn
cmlkIG9mIGdyZWVuIHNxdWFyZXMsIHdpdGggb25lIG1pc3NpbmcgaW4gdGhlIGNlbnRlciBvZiB0
aGUgdG9wIHJvdy4KK0l0IHRlc3RzIHRoYXQgYSBsaW5lIG1heSBjb250YWluIG11bHRpcGxlIHNl
Z21lbnRzIG9mIHRleHQuCis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lk
ZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAxLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1zZWdtZW50
cy0wMDEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYjZlNmUxZDg4YzdkZWRiOWUzZWRkMzMxZTM2MTZlZTA5
N2ZiZmUzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3No
YXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAxLmh0bWwKQEAgLTAs
MCArMSw5IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Jy4uL3Jlc291cmNlcy9tdWx0
aS1zZWdtZW50LXBvbHlnb24uanMnPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJn
ZW5lcmF0ZVBvbHlnb24oMjUwLCAxMDAsIDUwLCBbMCwwLDEwMCwwLDEwMCwyNSwxNTAsMjUsMTUw
LDAsMjUwLDAsMjUwLDEwMCwwLDEwMF0sICdYWFhYWFhYWFgnKSI+CitUaGlzIHRlc3QgcmVxdWly
ZXMgdGhlIEFoZW0gZm9udCwgYW5kIHNob3VsZCBkaXNwbGF5IGEgNXgyIGdyaWQgb2YgZ3JlZW4g
c3F1YXJlcywgd2l0aCBvbmUgbWlzc2luZyBpbiB0aGUgY2VudGVyIG9mIHRoZSB0b3Agcm93Lgor
SXQgdGVzdHMgdGhhdCBhIGxpbmUgbWF5IGNvbnRhaW4gbXVsdGlwbGUgc2VnbWVudHMgb2YgdGV4
dC4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lk
ZS1tdWx0aXBsZS1zZWdtZW50cy0wMDItZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNlZ21lbnRzLTAw
Mi1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE2YmRhZTJiYjhjYTE1MGE2OGRhZGI4M2NlMmM0
MTI5N2Y4Y2VkMDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lv
bnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDItZXhwZWN0
ZWQuaHRtbApAQCAtMCwwICsxLDkgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0nLi4v
cmVzb3VyY2VzL211bHRpLXNlZ21lbnQtcG9seWdvbi5qcyc+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keSBvbmxvYWQ9InNpbXVsYXRlV2l0aFRleHQoMjUwLCAxMDAsIDUwLCAnWFhYWFggWFggWFgn
KSI+CitUaGlzIHRlc3QgcmVxdWlyZXMgdGhlIEFoZW0gZm9udCwgYW5kIHNob3VsZCBkaXNwbGF5
IGEgNXgyIGdyaWQgb2YgZ3JlZW4gc3F1YXJlcywgd2l0aCBvbmUgbWlzc2luZyBpbiB0aGUgY2Vu
dGVyIG9mIHRoZSBib3R0b20gcm93LgorSXQgdGVzdHMgdGhhdCBhIGxpbmUgbWF5IGNvbnRhaW4g
bXVsdGlwbGUgc2VnbWVudHMgb2YgdGV4dC4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMv
c2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDIuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRp
cGxlLXNlZ21lbnRzLTAwMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1MTFiNjlmZDcxNzI2NjBhYmFkMjU0
OTY5MzM3Yjk0ZWMzZTViYWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V4
Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDIu
aHRtbApAQCAtMCwwICsxLDkgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0nLi4vcmVz
b3VyY2VzL211bHRpLXNlZ21lbnQtcG9seWdvbi5qcyc+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eSBvbmxvYWQ9ImdlbmVyYXRlUG9seWdvbigyNTAsIDEwMCwgNTAsIFswLDAsMjUwLDAsMjUwLDEw
MSwxNTAsMTAxLDE1MCw3NSwxMDAsNzUsMTAwLDEwMSwwLDEwMV0sICdYWFhYWFhYWFgnKSI+CitU
aGlzIHRlc3QgcmVxdWlyZXMgdGhlIEFoZW0gZm9udCwgYW5kIHNob3VsZCBkaXNwbGF5IGEgNXgy
IGdyaWQgb2YgZ3JlZW4gc3F1YXJlcywgd2l0aCBvbmUgbWlzc2luZyBpbiB0aGUgY2VudGVyIG9m
IHRoZSBib3R0b20gcm93LgorSXQgdGVzdHMgdGhhdCBhIGxpbmUgbWF5IGNvbnRhaW4gbXVsdGlw
bGUgc2VnbWVudHMgb2YgdGV4dC4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUt
aW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDMtZXhwZWN0ZWQuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11
bHRpcGxlLXNlZ21lbnRzLTAwMy1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1NTFkNWNmMTlk
ZGE2MWNkY2FiNGNmNDJmMTNkNjJiMWY4NWVhNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1z
ZWdtZW50cy0wMDMtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDkgQEAKKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0nLi4vcmVzb3VyY2VzL211bHRpLXNlZ21lbnQtcG9seWdvbi5qcyc+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InNpbXVsYXRlV2l0aFRleHQoMjUwLCAxMDAs
IDUwLCAnWFg8YnIvPlhYJykiPgorVGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBBaGVtIGZvbnQsIGFu
ZCBzaG91bGQgZGlzcGxheSBhIDJ4MiBncmVlbiBzcXVhcmUuCitJdCB0ZXN0cyB0aGF0IGEgbGlu
ZSBicmVhayBtb3ZlcyB0ZXh0IGRvd24sIG5vdCBqdXN0IHRvIHRoZSBuZXh0IHNlZ21lbnQuCis8
L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtbXVs
dGlwbGUtc2VnbWVudHMtMDAzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hh
cGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDMuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kNTE1OTgyODIwZDBlYTJmMzM1MjUxZWYzNDc0ZGE0MDEyMDNlNjg5Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1p
bnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAzLmh0bWwKQEAgLTAsMCArMSw5IEBACis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Jy4uL3Jlc291cmNlcy9tdWx0aS1zZWdtZW50LXBvbHlnb24u
anMnPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJnZW5lcmF0ZVBvbHlnb24oMjUw
LCAxMDAsIDUwLCBbMCwwLDEwMCwwLDEwMCwyNSwxNTAsMjUsMTUwLDAsMjUwLDAsMjUwLDEwMCww
LDEwMF0sICdYWDxici8+WFgnKSI+CitUaGlzIHRlc3QgcmVxdWlyZXMgdGhlIEFoZW0gZm9udCwg
YW5kIHNob3VsZCBkaXNwbGF5IGEgMngyIGdyZWVuIHNxdWFyZS4KK0l0IHRlc3RzIHRoYXQgYSBs
aW5lIGJyZWFrIG1vdmVzIHRleHQgZG93biwgbm90IGp1c3QgdG8gdGhlIG5leHQgc2VnbWVudC4K
KzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1t
dWx0aXBsZS1zZWdtZW50cy0wMDQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXhj
bHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNlZ21lbnRzLTAwNC1l
eHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZiZDU4ZDI1YjRkZjk0MTkwNjJlMjY3ZGJlM2Q1MWMz
NjBjZGMwOWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMv
c2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDQtZXhwZWN0ZWQu
aHRtbApAQCAtMCwwICsxLDI4IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Jy4uL3Jl
c291cmNlcy9tdWx0aS1zZWdtZW50LXBvbHlnb24uanMnPjwvc2NyaXB0PgorPHNjcmlwdD4KKyAg
ICB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHNpbXVsYXRlV2l0aFRleHQo
MjUwLCAxMDAsIDEwMCwgIlg8c3BhbiBzdHlsZT0nZm9udC1zaXplOi41ZW0nPiA8L3NwYW4+WCIs
ICdzaGFwZTEnKTsKKyAgICAgICAgc2ltdWxhdGVXaXRoVGV4dCgyNTAsIDEwMCwgNTAsICI8c3Bh
biBzdHlsZT0nZm9udC1zaXplOjJlbSc+WDwvc3Bhbj4gWFgiLCAnc2hhcGUyJyk7CisgICAgICAg
IHNpbXVsYXRlV2l0aFRleHQoMjUwLCAxMDAsIDUwLCAiWFggPHNwYW4gc3R5bGU9J2ZvbnQtc2l6
ZToyZW0nPlg8L3NwYW4+IiwgJ3NoYXBlMycpOworICAgIH0KKzwvc2NyaXB0PgorPHN0eWxlPgor
ICAgICNzaGFwZTEsICNzaGFwZTIsICNzaGFwZTMgeworICAgICAgICBtYXJnaW46IDEwcHggMDsK
KyAgICAgICAgdmVydGljYWwtYWxpZ246IGJvdHRvbTsKKyAgICB9Cis8L3N0eWxlPgorPC9oZWFk
PgorPGJvZHk+CisgICAgVGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBBaGVtIGZvbnQsIGFuZCB0ZXN0
cyBzaG91bGQgYWxsIGRpc3BsYXkgb24gYSA1eDIgZ3JpZCBvZiBncmVlbgorICAgIHNxdWFyZXMu
IFRoZXNlIHRlc3RzIGNoZWNrIHRoZSBpbnRlcmFjdGlvbiBvZiBzaGFwZS1pbnNpZGUgd2l0aCBz
cGFucy4KKyAgICA8ZGl2IGlkPSdzaGFwZTEnPjwvZGl2PgorICAgIFRoaXMgdGVzdCBzaG91bGQg
ZGlzcGxheSB0d28gMngyIGdyZWVuIHNxdWFyZXMsIHNlcGFyYXRlZCBieSBhIDEgdW5pdCBzcGFj
ZS4KKyAgICA8ZGl2IGlkPSdzaGFwZTInPjwvZGl2PgorICAgIFRoaXMgdGVzdCBzaG91bGQgZGlz
cGxheSBhIDJ4MiBncmVlbiBzcXVhcmUsIGFuZCBhIDJ4MSByZWN0YW5nbGUgc2VwYXJhdGVkIGJ5
IGEgMSB1bml0IHNwYWNlLgorICAgIDxkaXYgaWQ9J3NoYXBlMyc+PC9kaXY+CisgICAgVGhpcyB0
ZXN0IHNob3VsZCBkaXNwbGF5IGEgMngxIGdyZWVuIHJlY3RhbmdsZSwgYW5kIGEgMngyIHNxdWFy
ZSBzZXBhcmF0ZWQgYnkgYSAxIHVuaXQgc3BhY2UuCis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNp
b25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDA0Lmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1t
dWx0aXBsZS1zZWdtZW50cy0wMDQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40M2Y1OTJiZGYxNDI0MzJhYTY1
YWY5ZjJkMTNjODgxZWJmODQxNTkwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMt
MDA0Lmh0bWwKQEAgLTAsMCArMSwyOSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPScu
Li9yZXNvdXJjZXMvbXVsdGktc2VnbWVudC1wb2x5Z29uLmpzJz48L3NjcmlwdD4KKzxzY3JpcHQ+
CisgICAgd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgcG9seWdvbiA9
IFswLDAsMTAwLDAsMTAwLDI1LDE1MCwyNSwxNTAsMCwyNTAsMCwyNTAsMTAwLDAsMTAwXTsKKyAg
ICAgICAgZ2VuZXJhdGVQb2x5Z29uKDI1MCwgMTAwLCA1MCwgcG9seWdvbiwgIjxzcGFuIHN0eWxl
PSdmb250LXNpemU6MmVtJz5YWDwvc3Bhbj4iLCAnc2hhcGUxJyk7CisgICAgICAgIGdlbmVyYXRl
UG9seWdvbigyNTAsIDEwMCwgNTAsIHBvbHlnb24sICI8c3BhbiBzdHlsZT0nZm9udC1zaXplOjJl
bSc+WDwvc3Bhbj5YWCIsICdzaGFwZTInKTsKKyAgICAgICAgZ2VuZXJhdGVQb2x5Z29uKDI1MCwg
MTAwLCA1MCwgcG9seWdvbiwgIlhYPHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToyZW0nPlg8L3NwYW4+
IiwgJ3NoYXBlMycpOworICAgIH0KKzwvc2NyaXB0PgorPHN0eWxlPgorICAgICNzaGFwZTEsICNz
aGFwZTIsICNzaGFwZTMgeworICAgICAgICBtYXJnaW46IDEwcHggMDsKKyAgICAgICAgdmVydGlj
YWwtYWxpZ246IGJvdHRvbTsKKyAgICB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgICAg
VGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBBaGVtIGZvbnQsIGFuZCB0ZXN0cyBzaG91bGQgYWxsIGRp
c3BsYXkgb24gYSA1eDIgZ3JpZCBvZiBncmVlbgorICAgIHNxdWFyZXMuIFRoZXNlIHRlc3RzIGNo
ZWNrIHRoZSBpbnRlcmFjdGlvbiBvZiBzaGFwZS1pbnNpZGUgd2l0aCBzcGFucy4KKyAgICA8ZGl2
IGlkPSdzaGFwZTEnPjwvZGl2PgorICAgIFRoaXMgdGVzdCBzaG91bGQgZGlzcGxheSB0d28gMngy
IGdyZWVuIHNxdWFyZXMsIHNlcGFyYXRlZCBieSBhIDEgdW5pdCBzcGFjZS4KKyAgICA8ZGl2IGlk
PSdzaGFwZTInPjwvZGl2PgorICAgIFRoaXMgdGVzdCBzaG91bGQgZGlzcGxheSBhIDJ4MiBncmVl
biBzcXVhcmUsIGFuZCBhIDJ4MSByZWN0YW5nbGUgc2VwYXJhdGVkIGJ5IGEgMSB1bml0IHNwYWNl
LgorICAgIDxkaXYgaWQ9J3NoYXBlMyc+PC9kaXY+CisgICAgVGhpcyB0ZXN0IHNob3VsZCBkaXNw
bGF5IGEgMngxIGdyZWVuIHJlY3RhbmdsZSwgYW5kIGEgMngyIHNxdWFyZSBzZXBhcmF0ZWQgYnkg
YSAxIHVuaXQgc3BhY2UuCis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176807</attachid>
            <date>2012-11-29 13:35:22 -0800</date>
            <delta_ts>2012-11-29 14:11:49 -0800</delta_ts>
            <desc>Conditionally compiling BidiRun::m_startsSegment &amp; minimizing its size</desc>
            <filename>bug-91878-20121129133257.patch</filename>
            <type>text/plain</type>
            <size>45360</size>
            <attacher name="Bear Travis">betravis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2MTQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmY1Njc5ODkwMjgzMWEw
ZjRiYTg3MDA5OGUwNmU2ZDRkNzZkNjRhYS4uM2UxMDNhYzA0NGFlNTE4MTNlMTI1NjMyNGZlYjMw
ZjI1MzcwZmYwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDEyLTExLTI5ICBCZWFy
IFRyYXZpcyAgPGJldHJhdmlzQGFkb2JlLmNvbT4KKworICAgICAgICBbQ1NTIEV4Y2x1c2lvbnNd
IEVuYWJsZSBzaGFwZS1pbnNpZGUgZm9yIG11bHRpcGxlLXNlZ21lbnQgcG9seWdvbnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxODc4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGF0Y2ggYWRkaW5nIHN1
cHBvcnQgZm9yIG11bHRpcGxlLXNlZ21lbnQgcG9seWdvbnMgZm9yIHNoYXBlLWluc2lkZXMgZnJv
bQorICAgICAgICB0aGUgQ1NTIEV4Y2x1c2lvbnMgc3BlY2lmaWNhdGlvbi4gVGhlIGxheW91dCBj
b2RlIGhhcyBiZWVuIG1vZGlmaWVkIHRvIGZpcnN0CisgICAgICAgIHN1cHBvcnQgZGl2aWRpbmcg
dGV4dCBpbnRvIG11bHRpcGxlIHNlZ21lbnRzIHBlciBsaW5lLCBhbmQgdGhlbiB0byBsYXkgb3V0
CisgICAgICAgIG11bHRpcGxlIHNlZ21lbnRzIHBlciBsaW5lIGJveC4KKworICAgICAgICBUZXN0
czogIGZhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNl
Z21lbnRzLTAwMS5odG1sCisgICAgICAgICAgICAgICAgZmFzdC9leGNsdXNpb25zL3NoYXBlLWlu
c2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAyLmh0bWwKKyAgICAgICAgICAg
ICAgICBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1z
ZWdtZW50cy0wMDMuaHRtbAorICAgICAgICAgICAgICAgIGZhc3QvZXhjbHVzaW9ucy9zaGFwZS1p
bnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNlZ21lbnRzLTAwNC5odG1sCisKKyAgICAgICAg
KiBwbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oOgorICAgICAgICAoV2ViQ29yZTo6QmlkaUNo
YXJhY3RlclJ1bjo6QmlkaUNoYXJhY3RlclJ1bik6CisgICAgICAgIChCaWRpQ2hhcmFjdGVyUnVu
KTogQWRkZWQgYSAnc3RhcnRzU2VnbWVudCcgYml0ZmllbGQgdG8gdHJhY2sgd2hldGhlciBhCisg
ICAgICAgIHJ1biBiZWdpbnMgYSBuZXcgc2VnbWVudC4gVGhlIGZpZWxkIGlzIGhlcmUsIHJhdGhl
ciB0aGFuIGluIEJpZGlSdW4sIGluCisgICAgICAgIG9yZGVyIHRvIHNhdmUgc3BhY2UuIFNlZSBC
dWcgMTAwMTczLgorICAgICAgICAqIHJlbmRlcmluZy9CaWRpUnVuLmg6CisgICAgICAgIChXZWJD
b3JlOjpCaWRpUnVuOjpCaWRpUnVuKToKKyAgICAgICAgKEJpZGlSdW4pOiBTZXQgdGhlIGluaXRp
YWwgdmFsdWUgZm9yICdzdGFydHNTZWdtZW50Jy4KKyAgICAgICAgKiByZW5kZXJpbmcvRXhjbHVz
aW9uU2hhcGVJbnNpZGVJbmZvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4Y2x1c2lvblNoYXBl
SW5zaWRlSW5mbzo6Y29tcHV0ZVNlZ21lbnRzRm9yTGluZSk6IENsZWFyIHRoZQorICAgICAgICBz
ZWdtZW50IHJhbmdlcyB3aGVuIGNvbXB1dGluZyBzZWdtZW50cyBmb3IgYSBuZXcgbGluZS4KKyAg
ICAgICAgKiByZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLmg6CisgICAgICAgIChM
aW5lU2VnbWVudFJhbmdlKTogQWRkZWQgYSBuZXcgdHlwZSB0byB0cmFjayBzZWdtZW50IG9mZnNl
dHMuCisgICAgICAgIChXZWJDb3JlOjpMaW5lU2VnbWVudFJhbmdlOjpMaW5lU2VnbWVudFJhbmdl
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RXhjbHVzaW9uU2hhcGVJ
bnNpZGVJbmZvOjpzZWdtZW50UmFuZ2VzKTogQWRkZWQgYSBnZXR0ZXIgZm9yCisgICAgICAgIHRo
ZSBsaW5lIHNlZ21lbnQgcmFuZ2VzIHZlY3Rvci4KKyAgICAgICAgKEV4Y2x1c2lvblNoYXBlSW5z
aWRlSW5mbyk6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6cGxhY2VCb3hlc0luSW5saW5lRGlyZWN0aW9uKTog
TW9kaWZpZWQgdG8gY2FsbAorICAgICAgICBhIHJlZmFjdG9yZWQgYm94IHBsYWNlbWVudCBhbGdv
cml0aG0gdGhhdCB0YWtlcyBhIGJlZ2lubmluZyBhbmQgZW5kIHBvc2l0aW9uLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpwbGFjZUJveFJhbmdl
SW5JbmxpbmVEaXJlY3Rpb24pOiBTaW1pbGFyIHRvIHRoZQorICAgICAgICBwbGFjZUJveGVzIG1l
dGhvZCwgYnV0IHRha2VzIGFuIGVuZCBwb3NpdGlvbiB0aGF0IG1heSBvY2N1ciBiZWZvcmUgdGhl
IGVuZAorICAgICAgICBvZiB0aGUgbGluZS4KKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lRmxv
d0JveC5oOgorICAgICAgICAoSW5saW5lRmxvd0JveCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpleGNsdXNpb25T
aGFwZUluc2lkZUluZm9JbnRlcm5hbCk6IEZhY3RvcmVkIG91dCBjYWxscworICAgICAgICB0byBF
eGNsdXNpb25TaGFwZUluc2lkZUluZm8gdG8gdGhlIC5jcHAgZmlsZSwgYXMgRXhjbHVzaW9uU2hh
cGVJbnNpZGVJbmZvCisgICAgICAgIHJlcXVpcmVzIElubGluZUl0ZXJhdG9yLmgsIHdoaWNoIHdv
dWxkIGNyZWF0ZSBhIGNpcmN1bGFyIGRlcGVuZGVuY3kgaW4KKyAgICAgICAgRXhjbHVzaW9uU2hh
cGVJbnNpZGVJbmZvLmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQmxvY2suaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2s6OmV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbyk6IE1vZGlmaWVkIHRvIGNhbGwKKyAg
ICAgICAgZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvSW50ZXJuYWwuCisgICAgICAgIChSZW5kZXJC
bG9jayk6CisgICAgICAgIChMaW5lQnJlYWtlcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckJsb2NrTGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaW5lV2lkdGg6OkxpbmVX
aWR0aCk6IExpbmVXaWR0aCBub3cgdXNlcyB0aGUgbnVtYmVyIG9mIGNvbXB1dGVkCisgICAgICAg
IHNlZ21lbnRSYW5nZXMgdG8gZGV0ZXJtaW5lIHdoaWNoIExpbmVTZWdtZW50IHRvIHVzZSB3aGVu
IGNhbGN1bGF0aW5nIHdpZHRoLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmNyZWF0
ZUxpbmVCb3hlcyk6IE5vdyB0YWtlcyBhIGJvb2xlYW4gdG8gZGV0ZXJtaW5lCisgICAgICAgIHdo
ZXRoZXIgb3Igbm90IGl0IGNhbiBzaGFyZSB0aGUgc2FtZSBwYXJlbnRCb3ggYXMgaXRzIHNpYmxp
bmdzIChzZWdtZW50cworICAgICAgICBtdXN0IGJlIGFibGUgdG8gcG9zaXRpb24gdGhlbXNlbHZl
cyBzZXBhcmF0ZWx5IGluIHRoZSBSb290SW5saW5lQm94KS4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJsb2NrOjpjb25zdHJ1Y3RMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVFeHBh
bnNpb25Gb3JKdXN0aWZpZWRUZXh0KTogRG8gaW5jbHVkZSBydW5zIHRoYXQgc3RhcnQgbmV3Cisg
ICAgICAgIHNlZ21lbnRzIHdoZW4gY2FsY3VsYXRpbmcganVzdGlmaWNhdGlvbiBmb3IgdGhlIGN1
cnJlbnQgc2VnbWVudC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjb21wdXRlSW5s
aW5lRGlyZWN0aW9uUG9zaXRpb25zRm9yTGluZSk6IE1vZGlmaWVkIHRvCisgICAgICAgIHVzZSB0
aGUgY29tcHV0ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0ZvclNlZ21lbnQsIHdoaWNoIGNhbiBw
b3NpdGlvbgorICAgICAgICBtdWx0aXBsZSBzZWdtZW50cyBvZiB0ZXh0IHBlciBsaW5lLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlv
bnNGb3JTZWdtZW50KTogUG9zaXRpb25zCisgICAgICAgIHRoZSBnaXZlbiBzZWdtZW50IG9mIHRl
eHQgYW5kIGNhbGN1bGF0ZXMgaXRzIGxheW91dCBvZmZzZXRzLgorICAgICAgICAoV2ViQ29yZTo6
Y29uc3RydWN0QmlkaVJ1bnMpOiBNb2RpZmllZCBzb21lIHZhcmlhYmxlcyBmcm9tICdlbmRPZkxp
bmUnIHRvICdlbmRPZlNlZ21lbnQnLgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0QmlkaVJ1
bnNGb3JMaW5lKTogQ29uc3RydWN0IHRoZSBiaWRpIHJ1bnMgZm9yIGVhY2ggc2VnbWVudCBpbgor
ICAgICAgICB0aGUgZ2l2ZW4gbGluZS4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQmxvY2s6OmxheW91dFJ1bnNBbmRGbG9hdHNJblJhbmdlKTogQ2FsbCBjb25z
dHJ1Y3RCaWRpUnVuc0ZvckxpbmUuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6TGlu
ZUJyZWFrZXI6Om5leHRMaW5lQnJlYWspOiBNb3ZlZCB0aGUgbGluZSBicmVha2luZyBjb2RlCisg
ICAgICAgIHRvIGJyZWFrIHNlZ21lbnRzLCB3aXRoIG5leHRMaW5lQnJlYWsgaXRlcmF0aW5nIG92
ZXIgc2VnbWVudCBicmVha3MgZm9yIHRoZSBlbnRpcmUgbGluZS4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJsb2NrOjpMaW5lQnJlYWtlcjo6bmV4dFNlZ21lbnRCcmVhayk6IENhbGN1bGF0ZXMg
aG93IG11Y2ggdGV4dCBhCisgICAgICAgIHNlZ21lbnQgY2FuIGhvbGQuIFRoaXMgY29kZSB3YXMg
b3JpZ2luYWxseSBpbiBuZXh0TGluZUJyZWFrLgorCiAyMDEyLTExLTI5ICBEYW4gQmVybnN0ZWlu
ICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyNzcxODg1PiBT
dXBwb3J0IHJ1YnktcG9zaXRpb246IHtiZWZvcmUsIGFmdGVyfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvQmlkaVJlc29sdmVyLmgKaW5kZXggYzhlMjc2Yzk5ZDQ1OTZlNDlkNTFiZjBj
N2JkNzJlYjNlMTQ1MTg3Mi4uNWNjZGUxNzE1M2Q1OGM1OTQxMTcyOGJmN2NiZDMwZTIxZGJlOGNj
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpUmVzb2x2ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oCkBAIC0x
NDksNiArMTQ5LDkgQEAgc3RydWN0IEJpZGlDaGFyYWN0ZXJSdW4gewogICAgIC8vIERvIG5vdCBh
ZGQgYW55dGhpbmcgYXBhcnQgZnJvbSBiaXRmaWVsZHMgdW50aWwgYWZ0ZXIgbV9uZXh0LiBTZWUg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDE3MwogICAgIGJvb2wg
bV9vdmVycmlkZToxOwogICAgIGJvb2wgbV9oYXNIeXBoZW46MTsgLy8gVXNlZCBieSBCaWRpUnVu
IHN1YmNsYXNzIHdoaWNoIGlzIGEgbGF5ZXJpbmcgdmlvbGF0aW9uIGJ1dCBlbmFibGVzIHVzIHRv
IHNhdmUgOCBieXRlcyBwZXIgb2JqZWN0IG9uIDY0LWJpdC4KKyNpZiBFTkFCTEUoQ1NTX0VYQ0xV
U0lPTlMpCisgICAgYm9vbCBtX3N0YXJ0c1NlZ21lbnQ6MTsgLy8gU2VlIGFib3ZlLgorI2VuZGlm
CiAgICAgdW5zaWduZWQgY2hhciBtX2xldmVsOwogICAgIEJpZGlDaGFyYWN0ZXJSdW4qIG1fbmV4
dDsKICAgICBpbnQgbV9zdGFydDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9CaWRpUnVuLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQmlkaVJ1bi5oCmluZGV4IDY5
NGNiY2E3NzYzYmQwZTI4Y2Y0OGQxYWJlMDJmNmExMGMwMWRkYTUuLjc2Y2U0YjY5MTE4MzYyOGRi
MDY0ZmM0ZDdjNDg4YjY0NGJmZDM3YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9CaWRpUnVuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0JpZGlSdW4uaApA
QCAtMzksNyArMzksMTEgQEAgc3RydWN0IEJpZGlSdW4gOiBCaWRpQ2hhcmFjdGVyUnVuIHsKICAg
ICAgICAgLCBtX29iamVjdChvYmplY3QpCiAgICAgICAgICwgbV9ib3goMCkKICAgICB7Ci0gICAg
ICAgIG1faGFzSHlwaGVuID0gZmFsc2U7IC8vIFN0b3JlZCBpbiBiYXNlIGNsYXNzIHRvIHNhdmUg
c3BhY2UuCisgICAgICAgIC8vIFN0b3JlZCBpbiBiYXNlIGNsYXNzIHRvIHNhdmUgc3BhY2UuCisg
ICAgICAgIG1faGFzSHlwaGVuID0gZmFsc2U7CisjaWYgRU5BQkxFKENTU19FWENMVVNJT05TKQor
ICAgICAgICBtX3N0YXJ0c1NlZ21lbnQgPSBmYWxzZTsKKyNlbmRpZgogICAgIH0KIAogICAgIHZv
aWQgZGVzdHJveSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1
c2lvblNoYXBlSW5zaWRlSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVz
aW9uU2hhcGVJbnNpZGVJbmZvLmNwcAppbmRleCA5MzRlM2YyOTlmNDAzYTQxMGQ2ZjU4NjliNDY2
NzRmYWVmMzMyMmE2Li4yYjY3YzEzODkyY2EzNjNkNDMxNzdkYTdjMjcyY2ExMWFlMjYxYmI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGVJbnNpZGVJ
bmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGVJbnNp
ZGVJbmZvLmNwcApAQCAtMTA5LDYgKzEwOSw3IEBAIGJvb2wgRXhjbHVzaW9uU2hhcGVJbnNpZGVJ
bmZvOjpjb21wdXRlU2VnbWVudHNGb3JMaW5lKExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0CiAg
ICAgbV9saW5lVG9wID0gbGluZVRvcDsKICAgICBtX2xpbmVIZWlnaHQgPSBsaW5lSGVpZ2h0Owog
ICAgIG1fc2VnbWVudHMuY2xlYXIoKTsKKyAgICBtX3NlZ21lbnRSYW5nZXMuY2xlYXIoKTsKIAog
ICAgIGlmIChsaW5lT3ZlcmxhcHNTaGFwZUJvdW5kcygpKSB7CiAgICAgICAgIEFTU0VSVChtX3No
YXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25TaGFw
ZUluc2lkZUluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25TaGFwZUlu
c2lkZUluZm8uaAppbmRleCA4YmUxMTRkNGIyY2EzYzAxYTFkNDI3ODNkZThmZmQ5YmE3ODFlMTNj
Li5lNzc4YmVkNDNhOTA3MThmMmY1MTU1ZjhmNDNmNGIwMjc0ZDllYjNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby5oCkBAIC0z
NCw2ICszNCw3IEBACiAKICNpbmNsdWRlICJFeGNsdXNpb25TaGFwZS5oIgogI2luY2x1ZGUgIkZs
b2F0UmVjdC5oIgorI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTGF5b3V0
VW5pdC5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgpAQCAtNDMsNiArNDQsMTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZW5k
ZXJCbG9jazsKIAorc3RydWN0IExpbmVTZWdtZW50UmFuZ2UgeworICAgIElubGluZUl0ZXJhdG9y
IHN0YXJ0OworICAgIElubGluZUl0ZXJhdG9yIGVuZDsKKyAgICBMaW5lU2VnbWVudFJhbmdlKElu
bGluZUl0ZXJhdG9yIHN0YXJ0LCBJbmxpbmVJdGVyYXRvciBlbmQpCisgICAgICAgIDogc3RhcnQo
c3RhcnQpCisgICAgICAgICwgZW5kKGVuZCkKKyAgICB7CisgICAgfQorfTsKK3R5cGVkZWYgVmVj
dG9yPExpbmVTZWdtZW50UmFuZ2U+IFNlZ21lbnRSYW5nZUxpc3Q7CisKIGNsYXNzIEV4Y2x1c2lv
blNoYXBlSW5zaWRlSW5mbyB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CkBAIC02Nyw2ICs3OSwxNCBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChoYXNTZWdtZW50cygp
KTsKICAgICAgICAgcmV0dXJuIG1fc2VnbWVudHM7CiAgICAgfQorICAgIFNlZ21lbnRSYW5nZUxp
c3QmIHNlZ21lbnRSYW5nZXMoKSB7IHJldHVybiBtX3NlZ21lbnRSYW5nZXM7IH0KKyAgICBjb25z
dCBMaW5lU2VnbWVudCogY3VycmVudFNlZ21lbnQoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYg
KCFoYXNTZWdtZW50cygpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIEFTU0VSVCht
X3NlZ21lbnRSYW5nZXMuc2l6ZSgpIDwgbV9zZWdtZW50cy5zaXplKCkpOworICAgICAgICByZXR1
cm4gJm1fc2VnbWVudHNbbV9zZWdtZW50UmFuZ2VzLnNpemUoKV07CisgICAgfQogICAgIGJvb2wg
Y29tcHV0ZVNlZ21lbnRzRm9yTGluZShMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGlu
ZUhlaWdodCk7CiAgICAgdm9pZCBjb21wdXRlU2hhcGVTaXplKExheW91dFVuaXQgbG9naWNhbFdp
ZHRoLCBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQpOwogICAgIHZvaWQgZGlydHlTaGFwZVNpemUo
KSB7IG1fc2hhcGVTaXplRGlydHkgPSB0cnVlOyB9CkBAIC05Nyw2ICsxMTcsNyBAQCBwcml2YXRl
OgogICAgIExheW91dFVuaXQgbV9sb2dpY2FsSGVpZ2h0OwogCiAgICAgU2VnbWVudExpc3QgbV9z
ZWdtZW50czsKKyAgICBTZWdtZW50UmFuZ2VMaXN0IG1fc2VnbWVudFJhbmdlczsKICAgICBib29s
IG1fc2hhcGVTaXplRGlydHk7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvSW5saW5lRmxvd0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5l
Rmxvd0JveC5jcHAKaW5kZXggYTBlZjNjNmMzMzRlY2M0ZmE4NWEzMzMyNTNhZjdhN2E1YWU3MTcy
Yy4uYzNjNDg4M2Y0MThlZWU5ZTdmYjI1MGFhNjJjNmNlOWRjOTYxN2EzZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcApAQCAtMzY5LDE1ICszNjksMjQgQEAg
dm9pZCBJbmxpbmVGbG93Qm94OjpkZXRlcm1pbmVTcGFjaW5nRm9yRmxvd0JveGVzKGJvb2wgbGFz
dExpbmUsIGJvb2wgaXNMb2dpY2FsbHkKIGZsb2F0IElubGluZUZsb3dCb3g6OnBsYWNlQm94ZXNJ
bklubGluZURpcmVjdGlvbihmbG9hdCBsb2dpY2FsTGVmdCwgYm9vbCYgbmVlZHNXb3JkU3BhY2lu
ZywgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXAmIHRleHRCb3hEYXRhTWFwKQogewog
ICAgIC8vIFNldCBvdXIgeCBwb3NpdGlvbi4KLSAgICBzZXRMb2dpY2FsTGVmdChsb2dpY2FsTGVm
dCk7Ci0gIAorICAgIGJlZ2luUGxhY2luZ0JveFJhbmdlc0luSW5saW5lRGlyZWN0aW9uKGxvZ2lj
YWxMZWZ0KTsKKwogICAgIGZsb2F0IHN0YXJ0TG9naWNhbExlZnQgPSBsb2dpY2FsTGVmdDsKICAg
ICBsb2dpY2FsTGVmdCArPSBib3JkZXJMb2dpY2FsTGVmdCgpICsgcGFkZGluZ0xvZ2ljYWxMZWZ0
KCk7CiAKICAgICBmbG9hdCBtaW5Mb2dpY2FsTGVmdCA9IHN0YXJ0TG9naWNhbExlZnQ7CiAgICAg
ZmxvYXQgbWF4TG9naWNhbFJpZ2h0ID0gbG9naWNhbExlZnQ7CiAKLSAgICBmb3IgKElubGluZUJv
eCogY3VyciA9IGZpcnN0Q2hpbGQoKTsgY3VycjsgY3VyciA9IGN1cnItPm5leHRPbkxpbmUoKSkg
eworICAgIHBsYWNlQm94UmFuZ2VJbklubGluZURpcmVjdGlvbihmaXJzdENoaWxkKCksIDAsIGxv
Z2ljYWxMZWZ0LCBtaW5Mb2dpY2FsTGVmdCwgbWF4TG9naWNhbFJpZ2h0LCBuZWVkc1dvcmRTcGFj
aW5nLCB0ZXh0Qm94RGF0YU1hcCk7CisKKyAgICBsb2dpY2FsTGVmdCArPSBib3JkZXJMb2dpY2Fs
UmlnaHQoKSArIHBhZGRpbmdMb2dpY2FsUmlnaHQoKTsKKyAgICBlbmRQbGFjaW5nQm94UmFuZ2Vz
SW5JbmxpbmVEaXJlY3Rpb24oc3RhcnRMb2dpY2FsTGVmdCwgbG9naWNhbExlZnQsIG1pbkxvZ2lj
YWxMZWZ0LCBtYXhMb2dpY2FsUmlnaHQpOworICAgIHJldHVybiBsb2dpY2FsTGVmdDsKK30KKwor
ZmxvYXQgSW5saW5lRmxvd0JveDo6cGxhY2VCb3hSYW5nZUluSW5saW5lRGlyZWN0aW9uKElubGlu
ZUJveCogZmlyc3RDaGlsZCwgSW5saW5lQm94KiBsYXN0Q2hpbGQsIGZsb2F0JiBsb2dpY2FsTGVm
dCwgZmxvYXQmIG1pbkxvZ2ljYWxMZWZ0LCBmbG9hdCYgbWF4TG9naWNhbFJpZ2h0LCBib29sJiBu
ZWVkc1dvcmRTcGFjaW5nLCBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcCYgdGV4dEJv
eERhdGFNYXApCit7CisgICAgZm9yIChJbmxpbmVCb3gqIGN1cnIgPSBmaXJzdENoaWxkOyBjdXJy
ICYmIGN1cnIgIT0gbGFzdENoaWxkOyBjdXJyID0gY3Vyci0+bmV4dE9uTGluZSgpKSB7CiAgICAg
ICAgIGlmIChjdXJyLT5yZW5kZXJlcigpLT5pc1RleHQoKSkgewogICAgICAgICAgICAgSW5saW5l
VGV4dEJveCogdGV4dCA9IHRvSW5saW5lVGV4dEJveChjdXJyKTsKICAgICAgICAgICAgIFJlbmRl
clRleHQqIHJ0ID0gdG9SZW5kZXJUZXh0KHRleHQtPnJlbmRlcmVyKCkpOwpAQCAtNDI5LDExICs0
MzgsNiBAQCBmbG9hdCBJbmxpbmVGbG93Qm94OjpwbGFjZUJveGVzSW5JbmxpbmVEaXJlY3Rpb24o
ZmxvYXQgbG9naWNhbExlZnQsIGJvb2wmIG5lZWRzVwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgfQotCi0gICAgbG9naWNhbExlZnQgKz0gYm9yZGVyTG9naWNhbFJpZ2h0KCkgKyBwYWRk
aW5nTG9naWNhbFJpZ2h0KCk7Ci0gICAgc2V0TG9naWNhbFdpZHRoKGxvZ2ljYWxMZWZ0IC0gc3Rh
cnRMb2dpY2FsTGVmdCk7Ci0gICAgaWYgKGtub3duVG9IYXZlTm9PdmVyZmxvdygpICYmIChtaW5M
b2dpY2FsTGVmdCA8IHN0YXJ0TG9naWNhbExlZnQgfHwgbWF4TG9naWNhbFJpZ2h0ID4gbG9naWNh
bExlZnQpKQotICAgICAgICBjbGVhcktub3duVG9IYXZlTm9PdmVyZmxvdygpOwogICAgIHJldHVy
biBsb2dpY2FsTGVmdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0lubGluZUZsb3dCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94
LmgKaW5kZXggMzZkNDhkYzg3YmIxNTI2ZjM1MzJmMzFmYWEwMmNlNjExZTE1MWRjYi4uYzQyNjRi
YmE2ZmJlYmNlOGRiNDYxZDBlODFjZjNkZDRjMWYwMmViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvSW5saW5lRmxvd0JveC5oCkBAIC0xNzMsNiArMTczLDE1IEBAIHB1YmxpYzoKICAgICB2
b2lkIGRldGVybWluZVNwYWNpbmdGb3JGbG93Qm94ZXMoYm9vbCBsYXN0TGluZSwgYm9vbCBpc0xv
Z2ljYWxseUxhc3RSdW5XcmFwcGVkLCBSZW5kZXJPYmplY3QqIGxvZ2ljYWxseUxhc3RSdW5SZW5k
ZXJlcik7CiAgICAgTGF5b3V0VW5pdCBnZXRGbG93U3BhY2luZ0xvZ2ljYWxXaWR0aCgpOwogICAg
IGZsb2F0IHBsYWNlQm94ZXNJbklubGluZURpcmVjdGlvbihmbG9hdCBsb2dpY2FsTGVmdCwgYm9v
bCYgbmVlZHNXb3JkU3BhY2luZywgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXAmKTsK
KyAgICBmbG9hdCBwbGFjZUJveFJhbmdlSW5JbmxpbmVEaXJlY3Rpb24oSW5saW5lQm94KiBmaXJz
dENoaWxkLCBJbmxpbmVCb3gqIGxhc3RDaGlsZCwgZmxvYXQmIGxvZ2ljYWxMZWZ0LCBmbG9hdCYg
bWluTG9naWNhbExlZnQsIGZsb2F0JiBtYXhMb2dpY2FsUmlnaHQsIGJvb2wmIG5lZWRzV29yZFNw
YWNpbmcsIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwJik7CisgICAgdm9pZCBiZWdp
blBsYWNpbmdCb3hSYW5nZXNJbklubGluZURpcmVjdGlvbihmbG9hdCBsb2dpY2FsTGVmdCkgeyBz
ZXRMb2dpY2FsTGVmdChsb2dpY2FsTGVmdCk7IH0KKyAgICB2b2lkIGVuZFBsYWNpbmdCb3hSYW5n
ZXNJbklubGluZURpcmVjdGlvbihmbG9hdCBsb2dpY2FsTGVmdCwgZmxvYXQgbG9naWNhbFJpZ2h0
LCBmbG9hdCBtaW5Mb2dpY2FsTGVmdCwgZmxvYXQgbWF4TG9naWNhbFJpZ2h0KQorICAgIHsKKyAg
ICAgICAgc2V0TG9naWNhbFdpZHRoKGxvZ2ljYWxSaWdodCAtIGxvZ2ljYWxMZWZ0KTsKKyAgICAg
ICAgaWYgKGtub3duVG9IYXZlTm9PdmVyZmxvdygpICYmIChtaW5Mb2dpY2FsTGVmdCA8IGxvZ2lj
YWxMZWZ0IHx8IG1heExvZ2ljYWxSaWdodCA+IGxvZ2ljYWxSaWdodCkpCisgICAgICAgICAgICBj
bGVhcktub3duVG9IYXZlTm9PdmVyZmxvdygpOworICAgIH0KKwogICAgIHZvaWQgY29tcHV0ZUxv
Z2ljYWxCb3hIZWlnaHRzKFJvb3RJbmxpbmVCb3gqLCBMYXlvdXRVbml0JiBtYXhQb3NpdGlvblRv
cCwgTGF5b3V0VW5pdCYgbWF4UG9zaXRpb25Cb3R0b20sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50JiBtYXhBc2NlbnQsIGludCYgbWF4RGVzY2VudCwgYm9vbCYgc2V0TWF4
QXNjZW50LCBib29sJiBzZXRNYXhEZXNjZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgc3RyaWN0TW9kZSwgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXAm
LCBGb250QmFzZWxpbmUsIFZlcnRpY2FsUG9zaXRpb25DYWNoZSYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggOGM2MjQ5NzY1OWVkZjk1Y2JjYjMxMTlhNWM5
ZmNlNzFiMGQzMDUzYS4uMmRlMzQ5NDllNmI2MDI0YzRjOTdlYzk2NzU1NmFhNmQ4NDNlYTZkYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0xMzk5LDYgKzEz
OTksMTEgQEAgdm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0KCkKIH0KIAogI2lmIEVOQUJMRShDU1Nf
RVhDTFVTSU9OUykKK0V4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbyogUmVuZGVyQmxvY2s6OmV4Y2x1
c2lvblNoYXBlSW5zaWRlSW5mb0ludGVybmFsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gRXhjbHVz
aW9uU2hhcGVJbnNpZGVJbmZvOjppc0V4Y2x1c2lvblNoYXBlSW5zaWRlSW5mb0VuYWJsZWRGb3JS
ZW5kZXJCbG9jayh0aGlzKSA/IEV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbzo6ZXhjbHVzaW9uU2hh
cGVJbnNpZGVJbmZvRm9yUmVuZGVyQmxvY2sodGhpcykgOiAwOworfQorCiB2b2lkIFJlbmRlckJs
b2NrOjp1cGRhdGVFeGNsdXNpb25TaGFwZUluc2lkZUluZm9BZnRlclN0eWxlQ2hhbmdlKGNvbnN0
IEV4Y2x1c2lvblNoYXBlVmFsdWUqIHNoYXBlSW5zaWRlLCBjb25zdCBFeGNsdXNpb25TaGFwZVZh
bHVlKiBvbGRTaGFwZUluc2lkZSkKIHsKICAgICAvLyBGSVhNRTogQSBmdXR1cmUgb3B0aW1pemF0
aW9uIHdvdWxkIGRvIGEgZGVlcCBjb21wYXJpc29uIGZvciBlcXVhbGl0eS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKaW5kZXggOWYwMDg0NzdiYzRjMGJkOWI4NDIyODFiZTgy
MDRiNmM1ODc1NjBhYy4uZDExMTU0N2VmZWVmM2JiYTBjZmNiM2Y5YzgzNzRlNzBiMDkxN2RiNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKQEAgLTM1LDcgKzM1LDYgQEAK
ICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KIAogI2lmIEVOQUJMRShDU1NfRVhDTFVTSU9O
UykKLSNpbmNsdWRlICJFeGNsdXNpb25TaGFwZUluc2lkZUluZm8uaCIKICNpbmNsdWRlICJFeGNs
dXNpb25TaGFwZVZhbHVlLmgiCiAjZW5kaWYKIApAQCAtNTMsNiArNTIsMTAgQEAgc3RydWN0IEJp
ZGlSdW47CiBzdHJ1Y3QgUGFpbnRJbmZvOwogY2xhc3MgTGluZUluZm87CiBjbGFzcyBSZW5kZXJS
dWJ5UnVuOworI2lmIEVOQUJMRShDU1NfRVhDTFVTSU9OUykKK2NsYXNzIEJhc2ljU2hhcGU7Citj
bGFzcyBFeGNsdXNpb25TaGFwZUluc2lkZUluZm87CisjZW5kaWYKIGNsYXNzIFRleHRMYXlvdXQ7
CiBjbGFzcyBXb3JkTWVhc3VyZW1lbnQ7CiAKQEAgLTQyNyw3ICs0MzAsNyBAQCBwdWJsaWM6CiAj
aWYgRU5BQkxFKENTU19FWENMVVNJT05TKQogICAgIEV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbyog
ZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBz
dHlsZSgpLT5zaGFwZUluc2lkZSgpICYmIEV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbzo6aXNFeGNs
dXNpb25TaGFwZUluc2lkZUluZm9FbmFibGVkRm9yUmVuZGVyQmxvY2sodGhpcykgPyBFeGNsdXNp
b25TaGFwZUluc2lkZUluZm86OmV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mb0ZvclJlbmRlckJsb2Nr
KHRoaXMpIDogMDsKKyAgICAgICAgcmV0dXJuIHN0eWxlKCktPnNoYXBlSW5zaWRlKCkgPyBleGNs
dXNpb25TaGFwZUluc2lkZUluZm9JbnRlcm5hbCgpIDogMDsKICAgICB9CiAjZW5kaWYKIApAQCAt
NTI0LDYgKzUyNyw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICNpZiBFTkFCTEUoQ1NTX0VY
Q0xVU0lPTlMpCisgICAgRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvKiBleGNsdXNpb25TaGFwZUlu
c2lkZUluZm9JbnRlcm5hbCgpIGNvbnN0OwogICAgIHZvaWQgY29tcHV0ZUV4Y2x1c2lvblNoYXBl
U2l6ZSgpOwogICAgIHZvaWQgdXBkYXRlRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvQWZ0ZXJTdHls
ZUNoYW5nZShjb25zdCBFeGNsdXNpb25TaGFwZVZhbHVlKiwgY29uc3QgRXhjbHVzaW9uU2hhcGVW
YWx1ZSogb2xkRXhjbHVzaW9uU2hhcGUpOwogI2VuZGlmCkBAIC03NjMsNiArNzY3LDcgQEAgcHJp
dmF0ZToKICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIHJlc2V0KCk7CiAgICAgICAgIAorICAg
ICAgICBJbmxpbmVJdGVyYXRvciBuZXh0U2VnbWVudEJyZWFrKElubGluZUJpZGlSZXNvbHZlciYs
IExpbmVJbmZvJiwgUmVuZGVyVGV4dEluZm8mLCBGbG9hdGluZ09iamVjdCogbGFzdEZsb2F0RnJv
bVByZXZpb3VzTGluZSwgdW5zaWduZWQgY29uc2VjdXRpdmVIeXBoZW5hdGVkTGluZXMsIFdvcmRN
ZWFzdXJlbWVudHMmKTsKICAgICAgICAgdm9pZCBza2lwVHJhaWxpbmdXaGl0ZXNwYWNlKElubGlu
ZUl0ZXJhdG9yJiwgY29uc3QgTGluZUluZm8mKTsKICAgICAgICAgdm9pZCBza2lwTGVhZGluZ1do
aXRlc3BhY2UoSW5saW5lQmlkaVJlc29sdmVyJiwgTGluZUluZm8mLCBGbG9hdGluZ09iamVjdCog
bGFzdEZsb2F0RnJvbVByZXZpb3VzTGluZSwgTGluZVdpZHRoJik7CiAgICAgICAgIApAQCAtNzc5
LDEwICs3ODQsMTIgQEAgcHJpdmF0ZToKICAgICBib29sIGNoZWNrUGFnaW5hdGlvbkFuZEZsb2F0
c0F0RW5kTGluZShMaW5lTGF5b3V0U3RhdGUmKTsKICAgICAKICAgICBSb290SW5saW5lQm94KiBj
b25zdHJ1Y3RMaW5lKEJpZGlSdW5MaXN0PEJpZGlSdW4+JiwgY29uc3QgTGluZUluZm8mKTsKLSAg
ICBJbmxpbmVGbG93Qm94KiBjcmVhdGVMaW5lQm94ZXMoUmVuZGVyT2JqZWN0KiwgY29uc3QgTGlu
ZUluZm8mLCBJbmxpbmVCb3gqIGNoaWxkQm94KTsKKyAgICBJbmxpbmVGbG93Qm94KiBjcmVhdGVM
aW5lQm94ZXMoUmVuZGVyT2JqZWN0KiwgY29uc3QgTGluZUluZm8mLCBJbmxpbmVCb3gqIGNoaWxk
Qm94LCBib29sIHN0YXJ0c05ld1NlZ21uZXQpOwogCiAgICAgdm9pZCBzZXRNYXJnaW5zRm9yUnVi
eVJ1bihCaWRpUnVuKiwgUmVuZGVyUnVieVJ1biosIFJlbmRlck9iamVjdCosIGNvbnN0IExpbmVJ
bmZvJik7CiAKKyAgICBCaWRpUnVuKiBjb21wdXRlSW5saW5lRGlyZWN0aW9uUG9zaXRpb25zRm9y
U2VnbWVudChSb290SW5saW5lQm94KiwgY29uc3QgTGluZUluZm8mLCBFVGV4dEFsaWduLCBmbG9h
dCYgbG9naWNhbExlZnQsCisgICAgICAgIGZsb2F0JiBhdmFpbGFibGVMb2dpY2FsV2lkdGgsIEJp
ZGlSdW4qIGZpcnN0UnVuLCBCaWRpUnVuKiB0cmFpbGluZ1NwYWNlUnVuLCBHbHlwaE92ZXJmbG93
QW5kRmFsbGJhY2tGb250c01hcCYgdGV4dEJveERhdGFNYXAsIFZlcnRpY2FsUG9zaXRpb25DYWNo
ZSYsIFdvcmRNZWFzdXJlbWVudHMmKTsKICAgICB2b2lkIGNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Q
b3NpdGlvbnNGb3JMaW5lKFJvb3RJbmxpbmVCb3gqLCBjb25zdCBMaW5lSW5mbyYsIEJpZGlSdW4q
IGZpcnN0UnVuLCBCaWRpUnVuKiB0cmFpbGluZ1NwYWNlUnVuLCBib29sIHJlYWNoZWRFbmQsIEds
eXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwJiwgVmVydGljYWxQb3NpdGlvbkNhY2hlJiwg
V29yZE1lYXN1cmVtZW50cyYpOwogICAgIHZvaWQgY29tcHV0ZUJsb2NrRGlyZWN0aW9uUG9zaXRp
b25zRm9yTGluZShSb290SW5saW5lQm94KiwgQmlkaVJ1biosIEdseXBoT3ZlcmZsb3dBbmRGYWxs
YmFja0ZvbnRzTWFwJiwgVmVydGljYWxQb3NpdGlvbkNhY2hlJik7CiAgICAgdm9pZCBkZWxldGVF
bGxpcHNpc0xpbmVCb3hlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAppbmRleCA5NzBmYmMzNDZiZThkODc5MjY3Y2MxZTQyNjY0
NDg3NjZjMDAwMjE4Li5lNDBmMTc1NTY2NTdmYjVjZmYxYTljY2M0NjU5YTczN2Y3YjI1ZDcyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0
LmNwcApAQCAtODgsOSArODgsOCBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChibG9jayk7CiAj
aWYgRU5BQkxFKENTU19FWENMVVNJT05TKQogICAgICAgICBFeGNsdXNpb25TaGFwZUluc2lkZUlu
Zm8qIGV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbyA9IGxheW91dEV4Y2x1c2lvblNoYXBlSW5zaWRl
SW5mbyhtX2Jsb2NrKTsKLSAgICAgICAgLy8gRklYTUU6IEJ1ZyA5MTg3ODogQWRkIHN1cHBvcnQg
Zm9yIG11bHRpcGxlIHNlZ21lbnRzLCBjdXJyZW50bHkgd2Ugb25seSBzdXBwb3J0IG9uZQotICAg
ICAgICBpZiAoZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvICYmIGV4Y2x1c2lvblNoYXBlSW5zaWRl
SW5mby0+aGFzU2VnbWVudHMoKSkKLSAgICAgICAgICAgIG1fc2VnbWVudCA9ICZleGNsdXNpb25T
aGFwZUluc2lkZUluZm8tPnNlZ21lbnRzKClbMF07CisgICAgICAgIGlmIChleGNsdXNpb25TaGFw
ZUluc2lkZUluZm8pCisgICAgICAgICAgICBtX3NlZ21lbnQgPSBleGNsdXNpb25TaGFwZUluc2lk
ZUluZm8tPmN1cnJlbnRTZWdtZW50KCk7CiAjZW5kaWYKICAgICAgICAgdXBkYXRlQXZhaWxhYmxl
V2lkdGgoKTsKICAgICB9CkBAIC00NTAsNyArNDQ5LDcgQEAgc3RhdGljIGJvb2wgcGFyZW50SXND
b25zdHJ1Y3RlZE9ySGF2ZU5leHQoSW5saW5lRmxvd0JveCogcGFyZW50Qm94KQogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotSW5saW5lRmxvd0JveCogUmVuZGVyQmxvY2s6OmNyZWF0ZUxpbmVCb3hl
cyhSZW5kZXJPYmplY3QqIG9iaiwgY29uc3QgTGluZUluZm8mIGxpbmVJbmZvLCBJbmxpbmVCb3gq
IGNoaWxkQm94KQorSW5saW5lRmxvd0JveCogUmVuZGVyQmxvY2s6OmNyZWF0ZUxpbmVCb3hlcyhS
ZW5kZXJPYmplY3QqIG9iaiwgY29uc3QgTGluZUluZm8mIGxpbmVJbmZvLCBJbmxpbmVCb3gqIGNo
aWxkQm94LCBib29sIHN0YXJ0TmV3U2VnbWVudCkKIHsKICAgICAvLyBTZWUgaWYgd2UgaGF2ZSBh
biB1bmNvbnN0cnVjdGVkIGxpbmUgYm94IGZvciB0aGlzIG9iamVjdCB0aGF0IGlzIGFsc28KICAg
ICAvLyB0aGUgbGFzdCBpdGVtIG9uIHRoZSBsaW5lLgpAQCAtNDczLDcgKzQ3Miw4IEBAIElubGlu
ZUZsb3dCb3gqIFJlbmRlckJsb2NrOjpjcmVhdGVMaW5lQm94ZXMoUmVuZGVyT2JqZWN0KiBvYmos
IGNvbnN0IExpbmVJbmZvJiBsCiAgICAgICAgIC8vIHRoZSBzYW1lIGxpbmUgKHRoaXMgY2FuIGhh
cHBlbiB3aXRoIHZlcnkgZmFuY3kgbGFuZ3VhZ2UgbWl4dHVyZXMpLgogICAgICAgICBib29sIGNv
bnN0cnVjdGVkTmV3Qm94ID0gZmFsc2U7CiAgICAgICAgIGJvb2wgYWxsb3dlZFRvQ29uc3RydWN0
TmV3Qm94ID0gIWhhc0RlZmF1bHRMaW5lQm94Q29udGFpbiB8fCAhaW5saW5lRmxvdyB8fCBpbmxp
bmVGbG93LT5hbHdheXNDcmVhdGVMaW5lQm94ZXMoKTsKLSAgICAgICAgYm9vbCBjYW5Vc2VFeGlz
dGluZ1BhcmVudEJveCA9IHBhcmVudEJveCAmJiAhcGFyZW50SXNDb25zdHJ1Y3RlZE9ySGF2ZU5l
eHQocGFyZW50Qm94KTsKKyAgICAgICAgYm9vbCBtdXN0Q3JlYXRlQm94ZXNUb1Jvb3QgPSBzdGFy
dE5ld1NlZ21lbnQgJiYgIShwYXJlbnRCb3ggJiYgcGFyZW50Qm94LT5pc1Jvb3RJbmxpbmVCb3go
KSk7CisgICAgICAgIGJvb2wgY2FuVXNlRXhpc3RpbmdQYXJlbnRCb3ggPSBwYXJlbnRCb3ggJiYg
IXBhcmVudElzQ29uc3RydWN0ZWRPckhhdmVOZXh0KHBhcmVudEJveCkgJiYgIW11c3RDcmVhdGVC
b3hlc1RvUm9vdDsKICAgICAgICAgaWYgKGFsbG93ZWRUb0NvbnN0cnVjdE5ld0JveCAmJiAhY2Fu
VXNlRXhpc3RpbmdQYXJlbnRCb3gpIHsKICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gbWFrZSBh
IG5ldyBib3ggZm9yIHRoaXMgcmVuZGVyIG9iamVjdC4gIE9uY2UKICAgICAgICAgICAgIC8vIG1h
ZGUsIHdlIG5lZWQgdG8gcGxhY2UgaXQgYXQgdGhlIGVuZCBvZiB0aGUgY3VycmVudCBsaW5lLgpA
QCAtNTcwLDEwICs1NzAsMTcgQEAgUm9vdElubGluZUJveCogUmVuZGVyQmxvY2s6OmNvbnN0cnVj
dExpbmUoQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4mIGJpZGlSdW5zLCBjb25zdAogCiAgICAgICAgIC8v
IElmIHdlIGhhdmUgbm8gcGFyZW50IGJveCB5ZXQsIG9yIGlmIHRoZSBydW4gaXMgbm90IHNpbXBs
eSBhIHNpYmxpbmcsCiAgICAgICAgIC8vIHRoZW4gd2UgbmVlZCB0byBjb25zdHJ1Y3QgaW5saW5l
IGJveGVzIGFzIG5lY2Vzc2FyeSB0byBwcm9wZXJseSBlbmNsb3NlIHRoZQotICAgICAgICAvLyBy
dW4ncyBpbmxpbmUgYm94LgotICAgICAgICBpZiAoIXBhcmVudEJveCB8fCBwYXJlbnRCb3gtPnJl
bmRlcmVyKCkgIT0gci0+bV9vYmplY3QtPnBhcmVudCgpKQorICAgICAgICAvLyBydW4ncyBpbmxp
bmUgYm94LiBTZWdtZW50cyBjYW4gb25seSBiZSBzaWJsaW5ncyBhdCB0aGUgcm9vdCBsZXZlbCwg
YXMKKyAgICAgICAgLy8gdGhleSBhcmUgcG9zaXRpb25lZCBzZXBhcmF0ZWx5LgorICAgICAgICBi
b29sIHJ1blN0YXJ0c1NlZ21lbnQgPQorI2lmIEVOQUJMRShDU1NfRVhDTFVTSU9OUykKKyAgICAg
ICAgICAgIGZhbHNlOworI2Vsc2UKKyAgICAgICAgICAgIHItPm1fc3RhcnRzU2VnbWVudDsKKyNl
bmRpZgorICAgICAgICBpZiAoIXBhcmVudEJveCB8fCBwYXJlbnRCb3gtPnJlbmRlcmVyKCkgIT0g
ci0+bV9vYmplY3QtPnBhcmVudCgpIHx8IHJ1blN0YXJ0c1NlZ21lbnQpCiAgICAgICAgICAgICAv
LyBDcmVhdGUgbmV3IGlubGluZSBib3hlcyBhbGwgdGhlIHdheSBiYWNrIHRvIHRoZSBhcHByb3By
aWF0ZSBpbnNlcnRpb24gcG9pbnQuCi0gICAgICAgICAgICBwYXJlbnRCb3ggPSBjcmVhdGVMaW5l
Qm94ZXMoci0+bV9vYmplY3QtPnBhcmVudCgpLCBsaW5lSW5mbywgYm94KTsKKyAgICAgICAgICAg
IHBhcmVudEJveCA9IGNyZWF0ZUxpbmVCb3hlcyhyLT5tX29iamVjdC0+cGFyZW50KCksIGxpbmVJ
bmZvLCBib3gsIHJ1blN0YXJ0c1NlZ21lbnQpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAg
IC8vIEFwcGVuZCB0aGUgaW5saW5lIGJveCB0byB0aGlzIGxpbmUuCiAgICAgICAgICAgICBwYXJl
bnRCb3gtPmFkZFRvTGluZShib3gpOwpAQCAtODA4LDYgKzgxNSwxMSBAQCBzdGF0aWMgaW5saW5l
IHZvaWQgY29tcHV0ZUV4cGFuc2lvbkZvckp1c3RpZmllZFRleHQoQmlkaVJ1biogZmlyc3RSdW4s
IEJpZGlSdW4qCiAKICAgICBzaXplX3QgaSA9IDA7CiAgICAgZm9yIChCaWRpUnVuKiByID0gZmly
c3RSdW47IHI7IHIgPSByLT5uZXh0KCkpIHsKKyAgICAgICAgLy8gVGhlIGNhbGN1bGF0aW9uIGlz
IHNlcGFyYXRlIGZvciBlYWNoIHNlZ21lbnQKKyNpZiBFTkFCTEUoQ1NTX0VYQ0xVU0lPTlMpCisg
ICAgICAgIGlmIChyLT5tX3N0YXJ0c1NlZ21lbnQpCisgICAgICAgICAgICBicmVhazsKKyNlbmRp
ZgogICAgICAgICBpZiAoIXItPm1fYm94IHx8IHIgPT0gdHJhaWxpbmdTcGFjZVJ1bikKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICAKQEAgLTg4MywxNyArODk1LDUzIEBAIHZvaWQgUmVu
ZGVyQmxvY2s6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlvbnNGb3JMaW5lKFJvb3RJbmxp
bmVCb3gqIGxpbmVCb3gsCiAgICAgLy8gQ1NTIDIuMTogIidUZXh0LWluZGVudCcgb25seSBhZmZl
Y3RzIGEgbGluZSBpZiBpdCBpcyB0aGUgZmlyc3QgZm9ybWF0dGVkIGxpbmUgb2YgYW4gZWxlbWVu
dC4gRm9yIGV4YW1wbGUsIHRoZSBmaXJzdCBsaW5lIG9mIGFuIGFub255bW91cyBibG9jayAKICAg
ICAvLyBib3ggaXMgb25seSBhZmZlY3RlZCBpZiBpdCBpcyB0aGUgZmlyc3QgY2hpbGQgb2YgaXRz
IHBhcmVudCBlbGVtZW50LiIKICAgICBib29sIGZpcnN0TGluZSA9IGxpbmVJbmZvLmlzRmlyc3RM
aW5lKCkgJiYgIShpc0Fub255bW91c0Jsb2NrKCkgJiYgcGFyZW50KCktPmZpcnN0Q2hpbGQoKSAh
PSB0aGlzKTsKLSAgICBmbG9hdCBsb2dpY2FsTGVmdCA9IHBpeGVsU25hcHBlZExvZ2ljYWxMZWZ0
T2Zmc2V0Rm9yTGluZShsb2dpY2FsSGVpZ2h0KCksIGZpcnN0TGluZSwgbGluZUxvZ2ljYWxIZWln
aHQpOwotICAgIGZsb2F0IGxvZ2ljYWxSaWdodCA9IHBpeGVsU25hcHBlZExvZ2ljYWxSaWdodE9m
ZnNldEZvckxpbmUobG9naWNhbEhlaWdodCgpLCBmaXJzdExpbmUsIGxpbmVMb2dpY2FsSGVpZ2h0
KTsKKyAgICBmbG9hdCBsaW5lTG9naWNhbExlZnQgPSBwaXhlbFNuYXBwZWRMb2dpY2FsTGVmdE9m
ZnNldEZvckxpbmUobG9naWNhbEhlaWdodCgpLCBmaXJzdExpbmUsIGxpbmVMb2dpY2FsSGVpZ2h0
KTsKKyAgICBmbG9hdCBsaW5lTG9naWNhbFJpZ2h0ID0gcGl4ZWxTbmFwcGVkTG9naWNhbFJpZ2h0
T2Zmc2V0Rm9yTGluZShsb2dpY2FsSGVpZ2h0KCksIGZpcnN0TGluZSwgbGluZUxvZ2ljYWxIZWln
aHQpOworICAgIGZsb2F0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aDsKKyAgICBib29sIG5lZWRzV29y
ZFNwYWNpbmc7CiAjaWYgRU5BQkxFKENTU19FWENMVVNJT05TKQogICAgIEV4Y2x1c2lvblNoYXBl
SW5zaWRlSW5mbyogZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvID0gbGF5b3V0RXhjbHVzaW9uU2hh
cGVJbnNpZGVJbmZvKHRoaXMpOwogICAgIGlmIChleGNsdXNpb25TaGFwZUluc2lkZUluZm8gJiYg
ZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLT5oYXNTZWdtZW50cygpKSB7Ci0gICAgICAgIGxvZ2lj
YWxMZWZ0ID0gbWF4PGZsb2F0Pihyb3VuZFRvSW50KGV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby0+
c2VnbWVudHMoKVswXS5sb2dpY2FsTGVmdCksIGxvZ2ljYWxMZWZ0KTsKLSAgICAgICAgbG9naWNh
bFJpZ2h0ID0gbWluPGZsb2F0PihmbG9vclRvSW50KGV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby0+
c2VnbWVudHMoKVswXS5sb2dpY2FsUmlnaHQpLCBsb2dpY2FsUmlnaHQpOworICAgICAgICBCaWRp
UnVuKiBzZWdtZW50U3RhcnQgPSBmaXJzdFJ1bjsKKyAgICAgICAgY29uc3QgU2VnbWVudExpc3Qm
IHNlZ21lbnRzID0gZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLT5zZWdtZW50cygpOworICAgICAg
ICBmbG9hdCBsb2dpY2FsTGVmdCA9IG1heDxmbG9hdD4ocm91bmRUb0ludChzZWdtZW50c1swXS5s
b2dpY2FsTGVmdCksIGxpbmVMb2dpY2FsTGVmdCk7CisgICAgICAgIGZsb2F0IGxvZ2ljYWxSaWdo
dCA9IG1pbjxmbG9hdD4oZmxvb3JUb0ludChzZWdtZW50c1swXS5sb2dpY2FsUmlnaHQpLCBsaW5l
TG9naWNhbFJpZ2h0KTsKKyAgICAgICAgZmxvYXQgc3RhcnRMb2dpY2FsTGVmdCA9IGxvZ2ljYWxM
ZWZ0OworICAgICAgICBmbG9hdCBlbmRMb2dpY2FsUmlnaHQgPSBsb2dpY2FsTGVmdDsKKyAgICAg
ICAgZmxvYXQgbWluTG9naWNhbExlZnQgPSBsb2dpY2FsTGVmdDsKKyAgICAgICAgZmxvYXQgbWF4
TG9naWNhbFJpZ2h0ID0gbG9naWNhbExlZnQ7CisgICAgICAgIGxpbmVCb3gtPmJlZ2luUGxhY2lu
Z0JveFJhbmdlc0luSW5saW5lRGlyZWN0aW9uKGxvZ2ljYWxMZWZ0KTsKKyAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBzZWdtZW50cy5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgaWYg
KGkpIHsKKyAgICAgICAgICAgICAgICBsb2dpY2FsTGVmdCA9IG1heDxmbG9hdD4ocm91bmRUb0lu
dChzZWdtZW50c1tpXS5sb2dpY2FsTGVmdCksIGxpbmVMb2dpY2FsTGVmdCk7CisgICAgICAgICAg
ICAgICAgbG9naWNhbFJpZ2h0ID0gbWluPGZsb2F0PihmbG9vclRvSW50KHNlZ21lbnRzW2ldLmxv
Z2ljYWxSaWdodCksIGxpbmVMb2dpY2FsUmlnaHQpOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgYXZhaWxhYmxlTG9naWNhbFdpZHRoID0gbG9naWNhbFJpZ2h0IC0gbG9naWNhbExlZnQ7Cisg
ICAgICAgICAgICBCaWRpUnVuKiBuZXdTZWdtZW50U3RhcnQgPSBjb21wdXRlSW5saW5lRGlyZWN0
aW9uUG9zaXRpb25zRm9yU2VnbWVudChsaW5lQm94LCBsaW5lSW5mbywgdGV4dEFsaWduLCBsb2dp
Y2FsTGVmdCwgYXZhaWxhYmxlTG9naWNhbFdpZHRoLCBzZWdtZW50U3RhcnQsIHRyYWlsaW5nU3Bh
Y2VSdW4sIHRleHRCb3hEYXRhTWFwLCB2ZXJ0aWNhbFBvc2l0aW9uQ2FjaGUsIHdvcmRNZWFzdXJl
bWVudHMpOworICAgICAgICAgICAgbmVlZHNXb3JkU3BhY2luZyA9IGZhbHNlOworICAgICAgICAg
ICAgZW5kTG9naWNhbFJpZ2h0ID0gbGluZUJveC0+cGxhY2VCb3hSYW5nZUluSW5saW5lRGlyZWN0
aW9uKHNlZ21lbnRTdGFydC0+bV9ib3gsIG5ld1NlZ21lbnRTdGFydCA/IG5ld1NlZ21lbnRTdGFy
dC0+bV9ib3ggOiAwLCBsb2dpY2FsTGVmdCwgbWluTG9naWNhbExlZnQsIG1heExvZ2ljYWxSaWdo
dCwgbmVlZHNXb3JkU3BhY2luZywgdGV4dEJveERhdGFNYXApOworICAgICAgICAgICAgaWYgKCFu
ZXdTZWdtZW50U3RhcnQgfHwgIW5ld1NlZ21lbnRTdGFydC0+bmV4dCgpKQorICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgQVNTRVJUKG5ld1NlZ21lbnRTdGFydC0+bV9zdGFydHNT
ZWdtZW50KTsKKyAgICAgICAgICAgIC8vIERpc2NhcmQgdGhlIGVtcHR5IHNlZ21lbnQgc3RhcnQg
bWFya2VyIGJpZGkgcnVucworICAgICAgICAgICAgc2VnbWVudFN0YXJ0ID0gbmV3U2VnbWVudFN0
YXJ0LT5uZXh0KCk7CisgICAgICAgIH0KKyAgICAgICAgbGluZUJveC0+ZW5kUGxhY2luZ0JveFJh
bmdlc0luSW5saW5lRGlyZWN0aW9uKHN0YXJ0TG9naWNhbExlZnQsIGVuZExvZ2ljYWxSaWdodCwg
bWluTG9naWNhbExlZnQsIG1heExvZ2ljYWxSaWdodCk7CisgICAgICAgIHJldHVybjsKICAgICB9
CiAjZW5kaWYKLSAgICBmbG9hdCBhdmFpbGFibGVMb2dpY2FsV2lkdGggPSBsb2dpY2FsUmlnaHQg
LSBsb2dpY2FsTGVmdDsKKyAgICBhdmFpbGFibGVMb2dpY2FsV2lkdGggPSBsaW5lTG9naWNhbFJp
Z2h0IC0gbGluZUxvZ2ljYWxMZWZ0OworICAgIGNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlv
bnNGb3JTZWdtZW50KGxpbmVCb3gsIGxpbmVJbmZvLCB0ZXh0QWxpZ24sIGxpbmVMb2dpY2FsTGVm
dCwgYXZhaWxhYmxlTG9naWNhbFdpZHRoLCBmaXJzdFJ1biwgIHRyYWlsaW5nU3BhY2VSdW4sIHRl
eHRCb3hEYXRhTWFwLCB2ZXJ0aWNhbFBvc2l0aW9uQ2FjaGUsIHdvcmRNZWFzdXJlbWVudHMpOwor
ICAgIC8vIFRoZSB3aWR0aHMgb2YgYWxsIHJ1bnMgYXJlIG5vdyBrbm93bi4gV2UgY2FuIG5vdyBw
bGFjZSBldmVyeSBpbmxpbmUgYm94IChhbmQKKyAgICAvLyBjb21wdXRlIGFjY3VyYXRlIHdpZHRo
cyBmb3IgdGhlIGlubGluZSBmbG93IGJveGVzKS4KKyAgICBuZWVkc1dvcmRTcGFjaW5nID0gZmFs
c2U7CisgICAgbGluZUJveC0+cGxhY2VCb3hlc0luSW5saW5lRGlyZWN0aW9uKGxpbmVMb2dpY2Fs
TGVmdCwgbmVlZHNXb3JkU3BhY2luZywgdGV4dEJveERhdGFNYXApOworfQogCitCaWRpUnVuKiBS
ZW5kZXJCbG9jazo6Y29tcHV0ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0ZvclNlZ21lbnQoUm9v
dElubGluZUJveCogbGluZUJveCwgY29uc3QgTGluZUluZm8mIGxpbmVJbmZvLCBFVGV4dEFsaWdu
IHRleHRBbGlnbiwgZmxvYXQmIGxvZ2ljYWxMZWZ0LAorICAgIGZsb2F0JiBhdmFpbGFibGVMb2dp
Y2FsV2lkdGgsIEJpZGlSdW4qIGZpcnN0UnVuLCBCaWRpUnVuKiB0cmFpbGluZ1NwYWNlUnVuLCBH
bHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcCYgdGV4dEJveERhdGFNYXAsIFZlcnRpY2Fs
UG9zaXRpb25DYWNoZSYgdmVydGljYWxQb3NpdGlvbkNhY2hlLAorICAgIFdvcmRNZWFzdXJlbWVu
dHMmIHdvcmRNZWFzdXJlbWVudHMpCit7CiAgICAgYm9vbCBuZWVkc1dvcmRTcGFjaW5nID0gZmFs
c2U7CiAgICAgZmxvYXQgdG90YWxMb2dpY2FsV2lkdGggPSBsaW5lQm94LT5nZXRGbG93U3BhY2lu
Z0xvZ2ljYWxXaWR0aCgpOwogICAgIHVuc2lnbmVkIGV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQg
PSAwOwpAQCAtOTAxLDcgKzk0OSwxMyBAQCB2b2lkIFJlbmRlckJsb2NrOjpjb21wdXRlSW5saW5l
RGlyZWN0aW9uUG9zaXRpb25zRm9yTGluZShSb290SW5saW5lQm94KiBsaW5lQm94LAogICAgIFZl
Y3Rvcjx1bnNpZ25lZCwgMTY+IGV4cGFuc2lvbk9wcG9ydHVuaXRpZXM7CiAgICAgUmVuZGVyT2Jq
ZWN0KiBwcmV2aW91c09iamVjdCA9IDA7CiAKLSAgICBmb3IgKEJpZGlSdW4qIHIgPSBmaXJzdFJ1
bjsgcjsgciA9IHItPm5leHQoKSkgeworICAgIEJpZGlSdW4qIHIgPSBmaXJzdFJ1bjsKKyAgICBm
b3IgKDsgcjsgciA9IHItPm5leHQoKSkgeworICAgICAgICAvLyBEbyBub3QgcGFzcyB0aGUgbWFy
a2VyIGZvciB0aGUgbmV4dCBzZWdtZW50CisjaWYgRU5BQkxFKENTU19FWENMVVNJT05TKQorICAg
ICAgICBpZiAoci0+bV9zdGFydHNTZWdtZW50KQorICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYK
ICAgICAgICAgaWYgKCFyLT5tX2JveCB8fCByLT5tX29iamVjdC0+aXNPdXRPZkZsb3dQb3NpdGlv
bmVkKCkgfHwgci0+bV9ib3gtPmlzTGluZUJyZWFrKCkpCiAgICAgICAgICAgICBjb250aW51ZTsg
Ly8gUG9zaXRpb25lZCBvYmplY3RzIGFyZSBvbmx5IHBhcnRpY2lwYXRpbmcgdG8gZmlndXJlIG91
dCB0aGVpcgogICAgICAgICAgICAgICAgICAgICAgIC8vIGNvcnJlY3Qgc3RhdGljIHggcG9zaXRp
b24uICBUaGV5IGhhdmUgbm8gZWZmZWN0IG9uIHRoZSB3aWR0aC4KQEAgLTk1MSwxMCArMTAwNSw3
IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlvbnNGb3JM
aW5lKFJvb3RJbmxpbmVCb3gqIGxpbmVCb3gsCiAKICAgICBjb21wdXRlRXhwYW5zaW9uRm9ySnVz
dGlmaWVkVGV4dChmaXJzdFJ1biwgdHJhaWxpbmdTcGFjZVJ1biwgZXhwYW5zaW9uT3Bwb3J0dW5p
dGllcywgZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudCwgdG90YWxMb2dpY2FsV2lkdGgsIGF2YWls
YWJsZUxvZ2ljYWxXaWR0aCk7CiAKLSAgICAvLyBUaGUgd2lkdGhzIG9mIGFsbCBydW5zIGFyZSBu
b3cga25vd24uICBXZSBjYW4gbm93IHBsYWNlIGV2ZXJ5IGlubGluZSBib3ggKGFuZAotICAgIC8v
IGNvbXB1dGUgYWNjdXJhdGUgd2lkdGhzIGZvciB0aGUgaW5saW5lIGZsb3cgYm94ZXMpLgotICAg
IG5lZWRzV29yZFNwYWNpbmcgPSBmYWxzZTsKLSAgICBsaW5lQm94LT5wbGFjZUJveGVzSW5Jbmxp
bmVEaXJlY3Rpb24obG9naWNhbExlZnQsIG5lZWRzV29yZFNwYWNpbmcsIHRleHRCb3hEYXRhTWFw
KTsKKyAgICByZXR1cm4gcjsKIH0KIAogdm9pZCBSZW5kZXJCbG9jazo6Y29tcHV0ZUJsb2NrRGly
ZWN0aW9uUG9zaXRpb25zRm9yTGluZShSb290SW5saW5lQm94KiBsaW5lQm94LCBCaWRpUnVuKiBm
aXJzdFJ1biwgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXAmIHRleHRCb3hEYXRhTWFw
LApAQCAtMTEwMSwxMyArMTE1MiwxMyBAQCBzdGF0aWMgaW5saW5lIEJpZGlTdGF0dXMgc3RhdHVz
V2l0aERpcmVjdGlvbihUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24sIGJvb2wgaQogfQogCiAv
LyBGSVhNRTogQmlkaVJlc29sdmVyIHNob3VsZCBoYXZlIHRoaXMgbG9naWMuCi1zdGF0aWMgaW5s
aW5lIHZvaWQgY29uc3RydWN0QmlkaVJ1bnMoSW5saW5lQmlkaVJlc29sdmVyJiB0b3BSZXNvbHZl
ciwgQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4mIGJpZGlSdW5zLCBjb25zdCBJbmxpbmVJdGVyYXRvciYg
ZW5kT2ZMaW5lLCBWaXN1YWxEaXJlY3Rpb25PdmVycmlkZSBvdmVycmlkZSwgYm9vbCBwcmV2aW91
c0xpbmVCcm9rZUNsZWFubHkpCitzdGF0aWMgaW5saW5lIHZvaWQgY29uc3RydWN0QmlkaVJ1bnNG
b3JTZWdtZW50KElubGluZUJpZGlSZXNvbHZlciYgdG9wUmVzb2x2ZXIsIEJpZGlSdW5MaXN0PEJp
ZGlSdW4+JiBiaWRpUnVucywgY29uc3QgSW5saW5lSXRlcmF0b3ImIGVuZE9mUnVucywgVmlzdWFs
RGlyZWN0aW9uT3ZlcnJpZGUgb3ZlcnJpZGUsIGJvb2wgcHJldmlvdXNMaW5lQnJva2VDbGVhbmx5
KQogewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcGFzcyBhIEJpZGlSdW5MaXN0IGludG8gY3Jl
YXRlQmlkaVJ1bnNGb3JMaW5lIGluc3RlYWQKICAgICAvLyBvZiB0aGUgcmVzb2x2ZXIgb3duaW5n
IHRoZSBydW5zLgogICAgIEFTU0VSVCgmdG9wUmVzb2x2ZXIucnVucygpID09ICZiaWRpUnVucyk7
CiAgICAgUmVuZGVyT2JqZWN0KiBjdXJyZW50Um9vdCA9IHRvcFJlc29sdmVyLnBvc2l0aW9uKCku
cm9vdCgpOwotICAgIHRvcFJlc29sdmVyLmNyZWF0ZUJpZGlSdW5zRm9yTGluZShlbmRPZkxpbmUs
IG92ZXJyaWRlLCBwcmV2aW91c0xpbmVCcm9rZUNsZWFubHkpOworICAgIHRvcFJlc29sdmVyLmNy
ZWF0ZUJpZGlSdW5zRm9yTGluZShlbmRPZlJ1bnMsIG92ZXJyaWRlLCBwcmV2aW91c0xpbmVCcm9r
ZUNsZWFubHkpOwogCiAgICAgd2hpbGUgKCF0b3BSZXNvbHZlci5pc29sYXRlZFJ1bnMoKS5pc0Vt
cHR5KCkpIHsKICAgICAgICAgLy8gSXQgZG9lcyBub3QgbWF0dGVyIHdoaWNoIG9yZGVyIHdlIHJl
c29sdmUgdGhlIHJ1bnMgYXMgbG9uZyBhcyB3ZSByZXNvbHZlIHRoZW0gYWxsLgpAQCAtMTE0Nyw3
ICsxMTk4LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGNvbnN0cnVjdEJpZGlSdW5zKElubGluZUJp
ZGlSZXNvbHZlciYgdG9wUmVzb2x2ZXIsIEJpZGlSdW5MaXMKICAgICAgICAgLy8gV2Ugc3RvcCBh
dCB0aGUgbmV4dCBlbmQgb2YgbGluZTsgd2UgbWF5IHJlLWVudGVyIHRoaXMgaXNvbGF0ZSBpbiB0
aGUgbmV4dCBjYWxsIHRvIGNvbnN0cnVjdEJpZGlSdW5zKCkuCiAgICAgICAgIC8vIEZJWE1FOiBX
aGF0IHNob3VsZCBlbmQgYW5kIHByZXZpb3VzTGluZUJyb2tlQ2xlYW5seSBiZT8KICAgICAgICAg
Ly8gcm5pd2Egc2F5cyBwcmV2aW91c0xpbmVCcm9rZUNsZWFubHkgaXMganVzdCBhIFdpbklFIGhh
Y2sgYW5kIGNvdWxkIGFsd2F5cyBiZSBmYWxzZSBoZXJlPwotICAgICAgICBpc29sYXRlZFJlc29s
dmVyLmNyZWF0ZUJpZGlSdW5zRm9yTGluZShlbmRPZkxpbmUsIE5vVmlzdWFsT3ZlcnJpZGUsIHBy
ZXZpb3VzTGluZUJyb2tlQ2xlYW5seSk7CisgICAgICAgIGlzb2xhdGVkUmVzb2x2ZXIuY3JlYXRl
QmlkaVJ1bnNGb3JMaW5lKGVuZE9mUnVucywgTm9WaXN1YWxPdmVycmlkZSwgcHJldmlvdXNMaW5l
QnJva2VDbGVhbmx5KTsKICAgICAgICAgLy8gTm90ZSB0aGF0IHdlIGRvIG5vdCBkZWxldGUgdGhl
IHJ1bnMgZnJvbSB0aGUgcmVzb2x2ZXIuCiAgICAgICAgIC8vIFdlJ3JlIG5vdCBndWFyYW50ZWVk
IHRvIGdldCBhbnkgQmlkaVJ1bnMgaW4gdGhlIHByZXZpb3VzIHN0ZXAuIElmIHdlIGRvbid0LCB3
ZSBhbGxvdyB0aGUgcGxhY2Vob2xkZXIKICAgICAgICAgLy8gaXRzZWxmIHRvIGJlIHR1cm5lZCBp
bnRvIGFuIElubGluZUJveC4gV2UgY2FuJ3QgcmVtb3ZlIGl0IGhlcmUgd2l0aG91dCBwb3RlbnRp
YWxseSBsb3NpbmcgdHJhY2sgb2YKQEAgLTExNjQsNiArMTIxNSwzNyBAQCBzdGF0aWMgaW5saW5l
IHZvaWQgY29uc3RydWN0QmlkaVJ1bnMoSW5saW5lQmlkaVJlc29sdmVyJiB0b3BSZXNvbHZlciwg
QmlkaVJ1bkxpcwogICAgIH0KIH0KIAorc3RhdGljIGlubGluZSB2b2lkIGNvbnN0cnVjdEJpZGlS
dW5zRm9yTGluZShjb25zdCBSZW5kZXJCbG9jayogYmxvY2ssIElubGluZUJpZGlSZXNvbHZlciYg
dG9wUmVzb2x2ZXIsIEJpZGlSdW5MaXN0PEJpZGlSdW4+JiBiaWRpUnVucywgY29uc3QgSW5saW5l
SXRlcmF0b3ImIGVuZE9mTGluZSwgVmlzdWFsRGlyZWN0aW9uT3ZlcnJpZGUgb3ZlcnJpZGUsIGJv
b2wgcHJldmlvdXNMaW5lQnJva2VDbGVhbmx5KQoreworI2lmICFFTkFCTEUoQ1NTX0VYQ0xVU0lP
TlMpCisgICAgY29uc3RydWN0QmlkaVJ1bnNGb3JTZWdtZW50KHRvcFJlc29sdmVyLCBiaWRpUnVu
cywgZW5kT2ZMaW5lLCBvdmVycmlkZSwgcHJldmlvdXNMaW5lQnJva2VDbGVhbmx5KTsKKyNlbHNl
CisgICAgRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvKiBleGNsdXNpb25TaGFwZUluc2lkZUluZm8g
PSBsYXlvdXRFeGNsdXNpb25TaGFwZUluc2lkZUluZm8oYmxvY2spOworICAgIGlmICghZXhjbHVz
aW9uU2hhcGVJbnNpZGVJbmZvIHx8ICFleGNsdXNpb25TaGFwZUluc2lkZUluZm8tPmhhc1NlZ21l
bnRzKCkpIHsKKyAgICAgICAgY29uc3RydWN0QmlkaVJ1bnNGb3JTZWdtZW50KHRvcFJlc29sdmVy
LCBiaWRpUnVucywgZW5kT2ZMaW5lLCBvdmVycmlkZSwgcHJldmlvdXNMaW5lQnJva2VDbGVhbmx5
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbnN0IFNlZ21lbnRSYW5nZUxpc3Qm
IHNlZ21lbnRSYW5nZXMgPSBleGNsdXNpb25TaGFwZUluc2lkZUluZm8tPnNlZ21lbnRSYW5nZXMo
KTsKKyAgICBBU1NFUlQoc2VnbWVudFJhbmdlcy5zaXplKCkpOworCisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBzZWdtZW50UmFuZ2VzLnNpemUoKTsgaSsrKSB7CisgICAgICAgIElubGluZUl0
ZXJhdG9yIHNlZ21lbnRTdGFydCA9IHNlZ21lbnRSYW5nZXNbaV0uc3RhcnQ7CisgICAgICAgIElu
bGluZUl0ZXJhdG9yIHNlZ21lbnRFbmQgPSBzZWdtZW50UmFuZ2VzW2ldLmVuZDsKKyAgICAgICAg
aWYgKGkpIHsKKyAgICAgICAgICAgIEFTU0VSVChzZWdtZW50U3RhcnQubV9vYmopOworICAgICAg
ICAgICAgQmlkaVJ1biogc2VnbWVudE1hcmtlciA9IGNyZWF0ZVJ1bihzZWdtZW50U3RhcnQubV9w
b3MsIHNlZ21lbnRTdGFydC5tX3Bvcywgc2VnbWVudFN0YXJ0Lm1fb2JqLCB0b3BSZXNvbHZlcik7
CisgICAgICAgICAgICBzZWdtZW50TWFya2VyLT5tX3N0YXJ0c1NlZ21lbnQgPSB0cnVlOworICAg
ICAgICAgICAgYmlkaVJ1bnMuYWRkUnVuKHNlZ21lbnRNYXJrZXIpOworICAgICAgICAgICAgLy8g
RG8gbm90IGNvbGxhcHNlIG1pZHBvaW50cyBiZXR3ZWVuIHNlZ21lbnRzCisgICAgICAgICAgICB0
b3BSZXNvbHZlci5taWRwb2ludFN0YXRlKCkuYmV0d2Vlbk1pZHBvaW50cyA9IGZhbHNlOworICAg
ICAgICB9CisgICAgICAgIHRvcFJlc29sdmVyLnNldFBvc2l0aW9uKHNlZ21lbnRTdGFydCwgbnVt
YmVyT2ZJc29sYXRlQW5jZXN0b3JzKHNlZ21lbnRTdGFydCkpOworICAgICAgICBjb25zdHJ1Y3RC
aWRpUnVuc0ZvclNlZ21lbnQodG9wUmVzb2x2ZXIsIGJpZGlSdW5zLCBzZWdtZW50RW5kLCBvdmVy
cmlkZSwgcHJldmlvdXNMaW5lQnJva2VDbGVhbmx5KTsKKyAgICB9CisjZW5kaWYKK30KKwogLy8g
VGhpcyBmdW5jdGlvbiBjb25zdHJ1Y3RzIGxpbmUgYm94ZXMgZm9yIGFsbCBvZiB0aGUgdGV4dCBy
dW5zIGluIHRoZSByZXNvbHZlciBhbmQgY29tcHV0ZXMgdGhlaXIgcG9zaXRpb24uCiBSb290SW5s
aW5lQm94KiBSZW5kZXJCbG9jazo6Y3JlYXRlTGluZUJveGVzRnJvbUJpZGlSdW5zKEJpZGlSdW5M
aXN0PEJpZGlSdW4+JiBiaWRpUnVucywgY29uc3QgSW5saW5lSXRlcmF0b3ImIGVuZCwgTGluZUlu
Zm8mIGxpbmVJbmZvLCBWZXJ0aWNhbFBvc2l0aW9uQ2FjaGUmIHZlcnRpY2FsUG9zaXRpb25DYWNo
ZSwgQmlkaVJ1biogdHJhaWxpbmdTcGFjZVJ1biwgV29yZE1lYXN1cmVtZW50cyYgd29yZE1lYXN1
cmVtZW50cykKIHsKQEAgLTE0NjEsNyArMTU0Myw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmxheW91
dFJ1bnNBbmRGbG9hdHNJblJhbmdlKExpbmVMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIElubGlu
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBvd25lcnNoaXAgaXMg
cmV2ZXJzZWQuIFdlIHNob3VsZCBvd24gdGhlIEJpZGlSdW5MaXN0IGFuZCBwYXNzIGl0IHRvIGNy
ZWF0ZUJpZGlSdW5zRm9yTGluZS4KICAgICAgICAgICAgIEJpZGlSdW5MaXN0PEJpZGlSdW4+JiBi
aWRpUnVucyA9IHJlc29sdmVyLnJ1bnMoKTsKLSAgICAgICAgICAgIGNvbnN0cnVjdEJpZGlSdW5z
KHJlc29sdmVyLCBiaWRpUnVucywgZW5kLCBvdmVycmlkZSwgbGF5b3V0U3RhdGUubGluZUluZm8o
KS5wcmV2aW91c0xpbmVCcm9rZUNsZWFubHkoKSk7CisgICAgICAgICAgICBjb25zdHJ1Y3RCaWRp
UnVuc0ZvckxpbmUodGhpcywgcmVzb2x2ZXIsIGJpZGlSdW5zLCBlbmQsIG92ZXJyaWRlLCBsYXlv
dXRTdGF0ZS5saW5lSW5mbygpLnByZXZpb3VzTGluZUJyb2tlQ2xlYW5seSgpKTsKICAgICAgICAg
ICAgIEFTU0VSVChyZXNvbHZlci5wb3NpdGlvbigpID09IGVuZCk7CiAKICAgICAgICAgICAgIEJp
ZGlSdW4qIHRyYWlsaW5nU3BhY2VSdW4gPSAhbGF5b3V0U3RhdGUubGluZUluZm8oKS5wcmV2aW91
c0xpbmVCcm9rZUNsZWFubHkoKSA/IGhhbmRsZVRyYWlsaW5nU3BhY2VzKGJpZGlSdW5zLCByZXNv
bHZlci5jb250ZXh0KCkpIDogMDsKQEAgLTIzMjMsNiArMjQwNSw0OCBAQCB2b2lkIFJlbmRlckJs
b2NrOjpMaW5lQnJlYWtlcjo6cmVzZXQoKQogCiBJbmxpbmVJdGVyYXRvciBSZW5kZXJCbG9jazo6
TGluZUJyZWFrZXI6Om5leHRMaW5lQnJlYWsoSW5saW5lQmlkaVJlc29sdmVyJiByZXNvbHZlciwg
TGluZUluZm8mIGxpbmVJbmZvLCBSZW5kZXJUZXh0SW5mbyYgcmVuZGVyVGV4dEluZm8sIEZsb2F0
aW5nT2JqZWN0KiBsYXN0RmxvYXRGcm9tUHJldmlvdXNMaW5lLCB1bnNpZ25lZCBjb25zZWN1dGl2
ZUh5cGhlbmF0ZWRMaW5lcywgV29yZE1lYXN1cmVtZW50cyYgd29yZE1lYXN1cmVtZW50cykKIHsK
KyNpZiAhRU5BQkxFKENTU19FWENMVVNJT05TKQorICAgIHJldHVybiBuZXh0U2VnbWVudEJyZWFr
KHJlc29sdmVyLCBsaW5lSW5mbywgcmVuZGVyVGV4dEluZm8sIGxhc3RGbG9hdEZyb21QcmV2aW91
c0xpbmUsIGNvbnNlY3V0aXZlSHlwaGVuYXRlZExpbmVzLCB3b3JkTWVhc3VyZW1lbnRzKTsKKyNl
bHNlCisgICAgRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvKiBleGNsdXNpb25TaGFwZUluc2lkZUlu
Zm8gPSBsYXlvdXRFeGNsdXNpb25TaGFwZUluc2lkZUluZm8obV9ibG9jayk7CisgICAgaWYgKCFl
eGNsdXNpb25TaGFwZUluc2lkZUluZm8gfHwgIWV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby0+aGFz
U2VnbWVudHMoKSkKKyAgICAgICAgcmV0dXJuIG5leHRTZWdtZW50QnJlYWsocmVzb2x2ZXIsIGxp
bmVJbmZvLCByZW5kZXJUZXh0SW5mbywgbGFzdEZsb2F0RnJvbVByZXZpb3VzTGluZSwgY29uc2Vj
dXRpdmVIeXBoZW5hdGVkTGluZXMsIHdvcmRNZWFzdXJlbWVudHMpOworCisgICAgSW5saW5lSXRl
cmF0b3IgZW5kID0gcmVzb2x2ZXIucG9zaXRpb24oKTsKKyAgICBJbmxpbmVJdGVyYXRvciBvbGRF
bmQgPSBlbmQ7CisKKyAgICBjb25zdCBTZWdtZW50TGlzdCYgc2VnbWVudHMgPSBleGNsdXNpb25T
aGFwZUluc2lkZUluZm8tPnNlZ21lbnRzKCk7CisgICAgU2VnbWVudFJhbmdlTGlzdCYgc2VnbWVu
dFJhbmdlcyA9IGV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby0+c2VnbWVudFJhbmdlcygpOworCisg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNlZ21lbnRzLnNpemUoKTsgaSsrKSB7CisgICAg
ICAgIElubGluZUl0ZXJhdG9yIHNlZ21lbnRTdGFydCA9IHJlc29sdmVyLnBvc2l0aW9uKCk7Cisg
ICAgICAgIGVuZCA9IG5leHRTZWdtZW50QnJlYWsocmVzb2x2ZXIsIGxpbmVJbmZvLCByZW5kZXJU
ZXh0SW5mbywgbGFzdEZsb2F0RnJvbVByZXZpb3VzTGluZSwgY29uc2VjdXRpdmVIeXBoZW5hdGVk
TGluZXMsIHdvcmRNZWFzdXJlbWVudHMpOworCisgICAgICAgIEFTU0VSVChzZWdtZW50UmFuZ2Vz
LnNpemUoKSA9PSBpKTsKKyAgICAgICAgaWYgKHJlc29sdmVyLnBvc2l0aW9uKCkgPT0gZW5kKSB7
CisgICAgICAgICAgICAvLyBOb3RoaW5nIGZpdCB0aGlzIHNlZ21lbnQKKyAgICAgICAgICAgIHNl
Z21lbnRSYW5nZXMuYXBwZW5kKExpbmVTZWdtZW50UmFuZ2Uoc2VnbWVudFN0YXJ0LCBzZWdtZW50
U3RhcnQpKTsKKyAgICAgICAgICAgIHJlc29sdmVyLnNldFBvc2l0aW9uSWdub3JpbmdOZXN0ZWRJ
c29sYXRlcyhzZWdtZW50U3RhcnQpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8g
Tm90ZSB0aGF0IHJlc29sdmVyLnBvc2l0aW9uIGlzIGFscmVhZHkgc2tpcHBpbmcgc29tZSBvZiB0
aGUgd2hpdGUgc3BhY2UgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbGluZSwKKyAgICAgICAgICAg
IC8vIHNvIHRoYXQncyB3aHkgc2VnbWVudFN0YXJ0IG1pZ2h0IGJlIGRpZmZlcmVudCB0aGFuIHJl
c29sdmVyLnBvc2l0aW9uKCkuCisgICAgICAgICAgICBMaW5lU2VnbWVudFJhbmdlIHJhbmdlKHJl
c29sdmVyLnBvc2l0aW9uKCksIGVuZCk7CisgICAgICAgICAgICBzZWdtZW50UmFuZ2VzLmFwcGVu
ZChyYW5nZSk7CisgICAgICAgICAgICByZXNvbHZlci5zZXRQb3NpdGlvbihlbmQsIG51bWJlck9m
SXNvbGF0ZUFuY2VzdG9ycyhlbmQpKTsKKworICAgICAgICAgICAgaWYgKGxpbmVJbmZvLnByZXZp
b3VzTGluZUJyb2tlQ2xlYW5seSgpKSB7CisgICAgICAgICAgICAgICAgLy8gSWYgd2UgaGl0IGEg
bmV3IGxpbmUgYnJlYWssIGp1c3Qgc3RvcCBhZGRpbmcgYW55dGhpbmcgdG8gdGhpcyBsaW5lLgor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
ICAgIHJlc29sdmVyLnNldFBvc2l0aW9uSWdub3JpbmdOZXN0ZWRJc29sYXRlcyhvbGRFbmQpOwor
ICAgIHJldHVybiBlbmQ7CisjZW5kaWYKK30KKworSW5saW5lSXRlcmF0b3IgUmVuZGVyQmxvY2s6
OkxpbmVCcmVha2VyOjpuZXh0U2VnbWVudEJyZWFrKElubGluZUJpZGlSZXNvbHZlciYgcmVzb2x2
ZXIsIExpbmVJbmZvJiBsaW5lSW5mbywgUmVuZGVyVGV4dEluZm8mIHJlbmRlclRleHRJbmZvLCBG
bG9hdGluZ09iamVjdCogbGFzdEZsb2F0RnJvbVByZXZpb3VzTGluZSwgdW5zaWduZWQgY29uc2Vj
dXRpdmVIeXBoZW5hdGVkTGluZXMsIFdvcmRNZWFzdXJlbWVudHMmIHdvcmRNZWFzdXJlbWVudHMp
Cit7CiAgICAgcmVzZXQoKTsKIAogICAgIEFTU0VSVChyZXNvbHZlci5wb3NpdGlvbigpLnJvb3Qo
KSA9PSBtX2Jsb2NrKTsKQEAgLTI5MDQsNiArMzAyOCw4IEBAIElubGluZUl0ZXJhdG9yIFJlbmRl
ckJsb2NrOjpMaW5lQnJlYWtlcjo6bmV4dExpbmVCcmVhayhJbmxpbmVCaWRpUmVzb2x2ZXImIHJl
c29sCiAgICAgICAgIH0KICAgICB9CiAKKyAgICAvLyBGSVhNRSBCdWcgMTAwMDQ5OiBXZSBkbyBu
b3QgbmVlZCB0byBjb25zdW1lIGlucHV0IGluIGEgbXVsdGktc2VnbWVudCBsaW5lCisgICAgLy8g
dW5sZXNzIG5vIHNlZ21lbnQgd2lsbC4KICAgICAvLyBtYWtlIHN1cmUgd2UgY29uc3VtZSBhdCBs
ZWFzdCBvbmUgY2hhci9vYmplY3QuCiAgICAgaWYgKGxCcmVhayA9PSByZXNvbHZlci5wb3NpdGlv
bigpKQogICAgICAgICBsQnJlYWsuaW5jcmVtZW50KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNzlhNWZmNmYxMjZhNjVm
OGEzM2RlZjllYzc3YTk3ZDkxOWVjZDI5Ny4uNGM4NzM3MDUwMWQ2MjM0NTA4Zjk4OWI0YWMwOTA3
ZmUxM2FlOGUxOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTExLTI5ICBCZWFyIFRyYXZp
cyAgPGJldHJhdmlzQGFkb2JlLmNvbT4KKworICAgICAgICBbQ1NTIEV4Y2x1c2lvbnNdIEVuYWJs
ZSBzaGFwZS1pbnNpZGUgZm9yIG11bHRpcGxlLXNlZ21lbnQgcG9seWdvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxODc4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaW5nIHRlc3RzIGZvciBtdWx0
aXBsZSBzZWdtZW50IHBvbHlnb25zLiBUaGVzZSB0ZXN0cyBtYWtlIHN1cmUgdGhhdCB0ZXh0IGNh
biBiZQorICAgICAgICBwcm9wZXJseSBicm9rZW4gdXAgaW50byBtdWx0aXBsZSBzZWdtZW50cyBw
ZXIgbGluZSB0byBmaXQgaW50byBhIHNoYXBlLWluc2lkZS4KKworICAgICAgICAqIGZhc3QvZXhj
bHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNlZ21lbnRzLTAwMS1l
eHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5z
aWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDEuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUt
c2VnbWVudHMtMDAyLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXhjbHVz
aW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNlZ21lbnRzLTAwMi5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWlu
c2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDMtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUtc2Vn
bWVudHMtMDAzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXhjbHVzaW9ucy9zaGFwZS1p
bnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNlZ21lbnRzLTAwNC1leHBlY3RlZC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lk
ZS1tdWx0aXBsZS1zZWdtZW50cy0wMDQuaHRtbDogQWRkZWQuCisKIDIwMTItMTEtMjggIERhbmll
bCBCYXRlcyAgPGRiYXRlc0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gTGF5b3V0
VGVzdHMvZmFzdC9qcy9zdHJpbmctcmVwbGFjZW1lbnQtb3V0b2ZtZW1vcnkuaHRtbCBjcmFzaGVz
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvcmVzb3VyY2VzL211bHRp
LXNlZ21lbnQtcG9seWdvbi5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9yZXNvdXJj
ZXMvbXVsdGktc2VnbWVudC1wb2x5Z29uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2MzQ2ZTE2ODE2NzAwZTk1
N2IyMjQ3MDViNTk2NTBlNmM2NjkzZmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2V4Y2x1c2lvbnMvcmVzb3VyY2VzL211bHRpLXNlZ21lbnQtcG9seWdvbi5qcwpAQCAtMCww
ICsxLDM3IEBACitmdW5jdGlvbiBnZW5lcmF0ZVBvbHlnb24od2lkdGgsIGhlaWdodCwgZm9udFNp
emUsIHBvaW50cywgY29udGVudCwgZWxlbWVudElkKSB7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5h
bHMpCisgICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0Q1NTRXhjbHVzaW9uc0Vu
YWJsZWQodHJ1ZSk7CisgICAgdmFyIGRpdiA9IGNyZWF0ZU9ySW5zZXJ0KGVsZW1lbnRJZCk7Cisg
ICAgdmFyIHBvbHlnb24gPSBwb2ludHMubWFwKGZ1bmN0aW9uKGVsZW0sIGluZGV4LCBhcnJheSkg
eworICAgICAgICByZXR1cm4gZWxlbS50b1N0cmluZygpICsgJ3B4JyArIChpbmRleCA8IGFycmF5
Lmxlbmd0aCAtIDEgJiYgaW5kZXggJSAyID09IDEgPyAnLCcgOiAnJyk7CisgICAgfSkuam9pbign
ICcpOworICAgIHBvbHlnb24gPSAncG9seWdvbignICsgcG9seWdvbiArICcpJzsKKyAgICBkaXYu
c3R5bGUuc2V0UHJvcGVydHkoJy13ZWJraXQtc2hhcGUtaW5zaWRlJywgcG9seWdvbik7CisgICAg
ZGl2LnN0eWxlLnNldFByb3BlcnR5KCd3aWR0aCcsIHdpZHRoICsgJ3B4Jyk7CisgICAgZGl2LnN0
eWxlLnNldFByb3BlcnR5KCdoZWlnaHQnLCBoZWlnaHQgKyAncHgnKTsKKyAgICBkaXYuc3R5bGUu
c2V0UHJvcGVydHkoJ2ZvbnQnLCBmb250U2l6ZSArICdweC8xIEFoZW0sIHNhbnMtc2VyaWYnKTsK
KyAgICBkaXYuc3R5bGUuc2V0UHJvcGVydHkoJ2NvbG9yJywgJ2dyZWVuJyk7CisgICAgZGl2LnN0
eWxlLnNldFByb3BlcnR5KCd3b3JkLXdyYXAnLCAnYnJlYWstd29yZCcpOworICAgIGRpdi5pbm5l
ckhUTUwgPSBjb250ZW50OworfQorCitmdW5jdGlvbiBzaW11bGF0ZVdpdGhUZXh0KHdpZHRoLCBo
ZWlnaHQsIGZvbnRTaXplLCBjb250ZW50LCBlbGVtZW50SWQpIHsKKyAgICB2YXIgZGl2ID0gY3Jl
YXRlT3JJbnNlcnQoZWxlbWVudElkKTsKKyAgICBkaXYuc3R5bGUuc2V0UHJvcGVydHkoJ3dpZHRo
Jywgd2lkdGggKyAncHgnKTsKKyAgICBkaXYuc3R5bGUuc2V0UHJvcGVydHkoJ2hlaWdodCcsIGhl
aWdodCArICdweCcpOworICAgIGRpdi5zdHlsZS5zZXRQcm9wZXJ0eSgnZm9udCcsIGZvbnRTaXpl
ICsgJ3B4LzEgQWhlbSwgc2Fucy1zZXJpZicpOworICAgIGRpdi5zdHlsZS5zZXRQcm9wZXJ0eSgn
Y29sb3InLCAnZ3JlZW4nKTsKKyAgICBkaXYuaW5uZXJIVE1MID0gY29udGVudDsKK30KKworZnVu
Y3Rpb24gY3JlYXRlT3JJbnNlcnQoZWxlbWVudElkKSB7CisgICAgaWYgKGVsZW1lbnRJZCkKKyAg
ICAgICAgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCk7CisKKyAgICB2
YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgaWYgKGRvY3VtZW50
LmJvZHkuY2hpbGROb2Rlcy5sZW5ndGgpCisgICAgICAgIGRvY3VlbW50LmJvZHkuaW5zZXJ0QmVm
b3JlKGRpdiwgZG9jdW1lbnQuYm9keS5jaGlsZE5vZGVzWzBdKTsKKyAgICBlbHNlCisgICAgICAg
IGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGl2KTsKKyAgICByZXR1cm4gZGl2OworfQpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXhj
bHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNlZ21lbnRzLTAwMS1l
eHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9z
aGFwZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAxLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjE4OWUzZjQyODc4NGFhNWMyMmFiZTMwZTNlMGU2ZTRjZDU1M2I1YQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5z
aWRlLW11bHRpcGxlLXNlZ21lbnRzLTAwMS1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsOSBAQAor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPScuLi9yZXNvdXJjZXMvbXVsdGktc2VnbWVudC1w
b2x5Z29uLmpzJz48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ic2ltdWxhdGVXaXRo
VGV4dCgyNTAsIDEwMCwgNTAsICdYWCBYWCBYWFhYWCcpIj4KK1RoaXMgdGVzdCByZXF1aXJlcyB0
aGUgQWhlbSBmb250LCBhbmQgc2hvdWxkIGRpc3BsYXkgYSA1eDIgZ3JpZCBvZiBncmVlbiBzcXVh
cmVzLCB3aXRoIG9uZSBtaXNzaW5nIGluIHRoZSBjZW50ZXIgb2YgdGhlIHRvcCByb3cuCitJdCB0
ZXN0cyB0aGF0IGEgbGluZSBtYXkgY29udGFpbiBtdWx0aXBsZSBzZWdtZW50cyBvZiB0ZXh0Lgor
PC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11
bHRpcGxlLXNlZ21lbnRzLTAwMS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3No
YXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAxLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMGI2ZTZlMWQ4OGM3ZGVkYjllM2VkZDMzMWUzNjE2ZWUwOTdmYmZlMwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUt
aW5zaWRlLW11bHRpcGxlLXNlZ21lbnRzLTAwMS5odG1sCkBAIC0wLDAgKzEsOSBAQAorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPScuLi9yZXNvdXJjZXMvbXVsdGktc2VnbWVudC1wb2x5Z29u
LmpzJz48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0iZ2VuZXJhdGVQb2x5Z29uKDI1
MCwgMTAwLCA1MCwgWzAsMCwxMDAsMCwxMDAsMjUsMTUwLDI1LDE1MCwwLDI1MCwwLDI1MCwxMDAs
MCwxMDBdLCAnWFhYWFhYWFhYJykiPgorVGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBBaGVtIGZvbnQs
IGFuZCBzaG91bGQgZGlzcGxheSBhIDV4MiBncmlkIG9mIGdyZWVuIHNxdWFyZXMsIHdpdGggb25l
IG1pc3NpbmcgaW4gdGhlIGNlbnRlciBvZiB0aGUgdG9wIHJvdy4KK0l0IHRlc3RzIHRoYXQgYSBs
aW5lIG1heSBjb250YWluIG11bHRpcGxlIHNlZ21lbnRzIG9mIHRleHQuCis8L2JvZHk+Cis8L2h0
bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVu
dHMtMDAyLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUt
aW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDItZXhwZWN0ZWQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xNmJkYWUyYmI4Y2ExNTBhNjhkYWRiODNjZTJjNDEyOTdmOGNlZDA1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9z
aGFwZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAyLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCAr
MSw5IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Jy4uL3Jlc291cmNlcy9tdWx0aS1z
ZWdtZW50LXBvbHlnb24uanMnPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJzaW11
bGF0ZVdpdGhUZXh0KDI1MCwgMTAwLCA1MCwgJ1hYWFhYIFhYIFhYJykiPgorVGhpcyB0ZXN0IHJl
cXVpcmVzIHRoZSBBaGVtIGZvbnQsIGFuZCBzaG91bGQgZGlzcGxheSBhIDV4MiBncmlkIG9mIGdy
ZWVuIHNxdWFyZXMsIHdpdGggb25lIG1pc3NpbmcgaW4gdGhlIGNlbnRlciBvZiB0aGUgYm90dG9t
IHJvdy4KK0l0IHRlc3RzIHRoYXQgYSBsaW5lIG1heSBjb250YWluIG11bHRpcGxlIHNlZ21lbnRz
IG9mIHRleHQuCis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFw
ZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V4
Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDIu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42NTExYjY5ZmQ3MTcyNjYwYWJhZDI1NDk2OTMzN2I5NGVjM2U1YmFl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWlu
c2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAyLmh0bWwKQEAgLTAsMCArMSw5
IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Jy4uL3Jlc291cmNlcy9tdWx0aS1zZWdt
ZW50LXBvbHlnb24uanMnPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJnZW5lcmF0
ZVBvbHlnb24oMjUwLCAxMDAsIDUwLCBbMCwwLDI1MCwwLDI1MCwxMDEsMTUwLDEwMSwxNTAsNzUs
MTAwLDc1LDEwMCwxMDEsMCwxMDFdLCAnWFhYWFhYWFhYJykiPgorVGhpcyB0ZXN0IHJlcXVpcmVz
IHRoZSBBaGVtIGZvbnQsIGFuZCBzaG91bGQgZGlzcGxheSBhIDV4MiBncmlkIG9mIGdyZWVuIHNx
dWFyZXMsIHdpdGggb25lIG1pc3NpbmcgaW4gdGhlIGNlbnRlciBvZiB0aGUgYm90dG9tIHJvdy4K
K0l0IHRlc3RzIHRoYXQgYSBsaW5lIG1heSBjb250YWluIG11bHRpcGxlIHNlZ21lbnRzIG9mIHRl
eHQuCis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNp
ZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAzLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0w
MDMtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNTUxZDVjZjE5ZGRhNjFjZGNhYjRjZjQyZjEz
ZDYyYjFmODVlYTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNp
b25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAzLWV4cGVj
dGVkLmh0bWwKQEAgLTAsMCArMSw5IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Jy4u
L3Jlc291cmNlcy9tdWx0aS1zZWdtZW50LXBvbHlnb24uanMnPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHkgb25sb2FkPSJzaW11bGF0ZVdpdGhUZXh0KDI1MCwgMTAwLCA1MCwgJ1hYPGJyLz5YWCcp
Ij4KK1RoaXMgdGVzdCByZXF1aXJlcyB0aGUgQWhlbSBmb250LCBhbmQgc2hvdWxkIGRpc3BsYXkg
YSAyeDIgZ3JlZW4gc3F1YXJlLgorSXQgdGVzdHMgdGhhdCBhIGxpbmUgYnJlYWsgbW92ZXMgdGV4
dCBkb3duLCBub3QganVzdCB0byB0aGUgbmV4dCBzZWdtZW50LgorPC9ib2R5PgorPC9odG1sPgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNlZ21lbnRzLTAw
My5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1p
bnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDUxNTk4MjgyMGQw
ZWEyZjMzNTI1MWVmMzQ3NGRhNDAxMjAzZTY4OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNl
Z21lbnRzLTAwMy5odG1sCkBAIC0wLDAgKzEsOSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPScuLi9yZXNvdXJjZXMvbXVsdGktc2VnbWVudC1wb2x5Z29uLmpzJz48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5IG9ubG9hZD0iZ2VuZXJhdGVQb2x5Z29uKDI1MCwgMTAwLCA1MCwgWzAsMCwx
MDAsMCwxMDAsMjUsMTUwLDI1LDE1MCwwLDI1MCwwLDI1MCwxMDAsMCwxMDBdLCAnWFg8YnIvPlhY
JykiPgorVGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBBaGVtIGZvbnQsIGFuZCBzaG91bGQgZGlzcGxh
eSBhIDJ4MiBncmVlbiBzcXVhcmUuCitJdCB0ZXN0cyB0aGF0IGEgbGluZSBicmVhayBtb3ZlcyB0
ZXh0IGRvd24sIG5vdCBqdXN0IHRvIHRoZSBuZXh0IHNlZ21lbnQuCis8L2JvZHk+Cis8L2h0bWw+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMt
MDA0LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5z
aWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDQtZXhwZWN0ZWQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42YmQ1OGQyNWI0ZGY5NDE5MDYyZTI2N2RiZTNkNTFjMzYwY2RjMDllCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFw
ZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDA0LWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwy
OCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPScuLi9yZXNvdXJjZXMvbXVsdGktc2Vn
bWVudC1wb2x5Z29uLmpzJz48L3NjcmlwdD4KKzxzY3JpcHQ+CisgICAgd2luZG93Lm9ubG9hZCA9
IGZ1bmN0aW9uKCkgeworICAgICAgICBzaW11bGF0ZVdpdGhUZXh0KDI1MCwgMTAwLCAxMDAsICJY
PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZTouNWVtJz4gPC9zcGFuPlgiLCAnc2hhcGUxJyk7CisgICAg
ICAgIHNpbXVsYXRlV2l0aFRleHQoMjUwLCAxMDAsIDUwLCAiPHNwYW4gc3R5bGU9J2ZvbnQtc2l6
ZToyZW0nPlg8L3NwYW4+IFhYIiwgJ3NoYXBlMicpOworICAgICAgICBzaW11bGF0ZVdpdGhUZXh0
KDI1MCwgMTAwLCA1MCwgIlhYIDxzcGFuIHN0eWxlPSdmb250LXNpemU6MmVtJz5YPC9zcGFuPiIs
ICdzaGFwZTMnKTsKKyAgICB9Cis8L3NjcmlwdD4KKzxzdHlsZT4KKyAgICAjc2hhcGUxLCAjc2hh
cGUyLCAjc2hhcGUzIHsKKyAgICAgICAgbWFyZ2luOiAxMHB4IDA7CisgICAgICAgIHZlcnRpY2Fs
LWFsaWduOiBib3R0b207CisgICAgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIFRo
aXMgdGVzdCByZXF1aXJlcyB0aGUgQWhlbSBmb250LCBhbmQgdGVzdHMgc2hvdWxkIGFsbCBkaXNw
bGF5IG9uIGEgNXgyIGdyaWQgb2YgZ3JlZW4KKyAgICBzcXVhcmVzLiBUaGVzZSB0ZXN0cyBjaGVj
ayB0aGUgaW50ZXJhY3Rpb24gb2Ygc2hhcGUtaW5zaWRlIHdpdGggc3BhbnMuCisgICAgPGRpdiBp
ZD0nc2hhcGUxJz48L2Rpdj4KKyAgICBUaGlzIHRlc3Qgc2hvdWxkIGRpc3BsYXkgdHdvIDJ4MiBn
cmVlbiBzcXVhcmVzLCBzZXBhcmF0ZWQgYnkgYSAxIHVuaXQgc3BhY2UuCisgICAgPGRpdiBpZD0n
c2hhcGUyJz48L2Rpdj4KKyAgICBUaGlzIHRlc3Qgc2hvdWxkIGRpc3BsYXkgYSAyeDIgZ3JlZW4g
c3F1YXJlLCBhbmQgYSAyeDEgcmVjdGFuZ2xlIHNlcGFyYXRlZCBieSBhIDEgdW5pdCBzcGFjZS4K
KyAgICA8ZGl2IGlkPSdzaGFwZTMnPjwvZGl2PgorICAgIFRoaXMgdGVzdCBzaG91bGQgZGlzcGxh
eSBhIDJ4MSBncmVlbiByZWN0YW5nbGUsIGFuZCBhIDJ4MiBzcXVhcmUgc2VwYXJhdGVkIGJ5IGEg
MSB1bml0IHNwYWNlLgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUv
c2hhcGUtaW5zaWRlLW11bHRpcGxlLXNlZ21lbnRzLTAwNC5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMt
MDA0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNDNmNTkyYmRmMTQyNDMyYWE2NWFmOWYyZDEzYzg4MWViZjg0
MTU5MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFw
ZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNlZ21lbnRzLTAwNC5odG1sCkBAIC0wLDAg
KzEsMjkgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0nLi4vcmVzb3VyY2VzL211bHRp
LXNlZ21lbnQtcG9seWdvbi5qcyc+PC9zY3JpcHQ+Cis8c2NyaXB0PgorICAgIHdpbmRvdy5vbmxv
YWQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIHBvbHlnb24gPSBbMCwwLDEwMCwwLDEwMCwy
NSwxNTAsMjUsMTUwLDAsMjUwLDAsMjUwLDEwMCwwLDEwMF07CisgICAgICAgIGdlbmVyYXRlUG9s
eWdvbigyNTAsIDEwMCwgNTAsIHBvbHlnb24sICI8c3BhbiBzdHlsZT0nZm9udC1zaXplOjJlbSc+
WFg8L3NwYW4+IiwgJ3NoYXBlMScpOworICAgICAgICBnZW5lcmF0ZVBvbHlnb24oMjUwLCAxMDAs
IDUwLCBwb2x5Z29uLCAiPHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToyZW0nPlg8L3NwYW4+WFgiLCAn
c2hhcGUyJyk7CisgICAgICAgIGdlbmVyYXRlUG9seWdvbigyNTAsIDEwMCwgNTAsIHBvbHlnb24s
ICJYWDxzcGFuIHN0eWxlPSdmb250LXNpemU6MmVtJz5YPC9zcGFuPiIsICdzaGFwZTMnKTsKKyAg
ICB9Cis8L3NjcmlwdD4KKzxzdHlsZT4KKyAgICAjc2hhcGUxLCAjc2hhcGUyLCAjc2hhcGUzIHsK
KyAgICAgICAgbWFyZ2luOiAxMHB4IDA7CisgICAgICAgIHZlcnRpY2FsLWFsaWduOiBib3R0b207
CisgICAgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIFRoaXMgdGVzdCByZXF1aXJl
cyB0aGUgQWhlbSBmb250LCBhbmQgdGVzdHMgc2hvdWxkIGFsbCBkaXNwbGF5IG9uIGEgNXgyIGdy
aWQgb2YgZ3JlZW4KKyAgICBzcXVhcmVzLiBUaGVzZSB0ZXN0cyBjaGVjayB0aGUgaW50ZXJhY3Rp
b24gb2Ygc2hhcGUtaW5zaWRlIHdpdGggc3BhbnMuCisgICAgPGRpdiBpZD0nc2hhcGUxJz48L2Rp
dj4KKyAgICBUaGlzIHRlc3Qgc2hvdWxkIGRpc3BsYXkgdHdvIDJ4MiBncmVlbiBzcXVhcmVzLCBz
ZXBhcmF0ZWQgYnkgYSAxIHVuaXQgc3BhY2UuCisgICAgPGRpdiBpZD0nc2hhcGUyJz48L2Rpdj4K
KyAgICBUaGlzIHRlc3Qgc2hvdWxkIGRpc3BsYXkgYSAyeDIgZ3JlZW4gc3F1YXJlLCBhbmQgYSAy
eDEgcmVjdGFuZ2xlIHNlcGFyYXRlZCBieSBhIDEgdW5pdCBzcGFjZS4KKyAgICA8ZGl2IGlkPSdz
aGFwZTMnPjwvZGl2PgorICAgIFRoaXMgdGVzdCBzaG91bGQgZGlzcGxheSBhIDJ4MSBncmVlbiBy
ZWN0YW5nbGUsIGFuZCBhIDJ4MiBzcXVhcmUgc2VwYXJhdGVkIGJ5IGEgMSB1bml0IHNwYWNlLgor
PC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176815</attachid>
            <date>2012-11-29 14:11:53 -0800</date>
            <delta_ts>2012-12-03 16:56:14 -0800</delta_ts>
            <desc>Fixing compile guard bug</desc>
            <filename>bug-91878-20121129140928.patch</filename>
            <type>text/plain</type>
            <size>45386</size>
            <attacher name="Bear Travis">betravis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2MTQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmY1Njc5ODkwMjgzMWEw
ZjRiYTg3MDA5OGUwNmU2ZDRkNzZkNjRhYS4uM2UxMDNhYzA0NGFlNTE4MTNlMTI1NjMyNGZlYjMw
ZjI1MzcwZmYwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDEyLTExLTI5ICBCZWFy
IFRyYXZpcyAgPGJldHJhdmlzQGFkb2JlLmNvbT4KKworICAgICAgICBbQ1NTIEV4Y2x1c2lvbnNd
IEVuYWJsZSBzaGFwZS1pbnNpZGUgZm9yIG11bHRpcGxlLXNlZ21lbnQgcG9seWdvbnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxODc4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGF0Y2ggYWRkaW5nIHN1
cHBvcnQgZm9yIG11bHRpcGxlLXNlZ21lbnQgcG9seWdvbnMgZm9yIHNoYXBlLWluc2lkZXMgZnJv
bQorICAgICAgICB0aGUgQ1NTIEV4Y2x1c2lvbnMgc3BlY2lmaWNhdGlvbi4gVGhlIGxheW91dCBj
b2RlIGhhcyBiZWVuIG1vZGlmaWVkIHRvIGZpcnN0CisgICAgICAgIHN1cHBvcnQgZGl2aWRpbmcg
dGV4dCBpbnRvIG11bHRpcGxlIHNlZ21lbnRzIHBlciBsaW5lLCBhbmQgdGhlbiB0byBsYXkgb3V0
CisgICAgICAgIG11bHRpcGxlIHNlZ21lbnRzIHBlciBsaW5lIGJveC4KKworICAgICAgICBUZXN0
czogIGZhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNl
Z21lbnRzLTAwMS5odG1sCisgICAgICAgICAgICAgICAgZmFzdC9leGNsdXNpb25zL3NoYXBlLWlu
c2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAyLmh0bWwKKyAgICAgICAgICAg
ICAgICBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1z
ZWdtZW50cy0wMDMuaHRtbAorICAgICAgICAgICAgICAgIGZhc3QvZXhjbHVzaW9ucy9zaGFwZS1p
bnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNlZ21lbnRzLTAwNC5odG1sCisKKyAgICAgICAg
KiBwbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oOgorICAgICAgICAoV2ViQ29yZTo6QmlkaUNo
YXJhY3RlclJ1bjo6QmlkaUNoYXJhY3RlclJ1bik6CisgICAgICAgIChCaWRpQ2hhcmFjdGVyUnVu
KTogQWRkZWQgYSAnc3RhcnRzU2VnbWVudCcgYml0ZmllbGQgdG8gdHJhY2sgd2hldGhlciBhCisg
ICAgICAgIHJ1biBiZWdpbnMgYSBuZXcgc2VnbWVudC4gVGhlIGZpZWxkIGlzIGhlcmUsIHJhdGhl
ciB0aGFuIGluIEJpZGlSdW4sIGluCisgICAgICAgIG9yZGVyIHRvIHNhdmUgc3BhY2UuIFNlZSBC
dWcgMTAwMTczLgorICAgICAgICAqIHJlbmRlcmluZy9CaWRpUnVuLmg6CisgICAgICAgIChXZWJD
b3JlOjpCaWRpUnVuOjpCaWRpUnVuKToKKyAgICAgICAgKEJpZGlSdW4pOiBTZXQgdGhlIGluaXRp
YWwgdmFsdWUgZm9yICdzdGFydHNTZWdtZW50Jy4KKyAgICAgICAgKiByZW5kZXJpbmcvRXhjbHVz
aW9uU2hhcGVJbnNpZGVJbmZvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4Y2x1c2lvblNoYXBl
SW5zaWRlSW5mbzo6Y29tcHV0ZVNlZ21lbnRzRm9yTGluZSk6IENsZWFyIHRoZQorICAgICAgICBz
ZWdtZW50IHJhbmdlcyB3aGVuIGNvbXB1dGluZyBzZWdtZW50cyBmb3IgYSBuZXcgbGluZS4KKyAg
ICAgICAgKiByZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLmg6CisgICAgICAgIChM
aW5lU2VnbWVudFJhbmdlKTogQWRkZWQgYSBuZXcgdHlwZSB0byB0cmFjayBzZWdtZW50IG9mZnNl
dHMuCisgICAgICAgIChXZWJDb3JlOjpMaW5lU2VnbWVudFJhbmdlOjpMaW5lU2VnbWVudFJhbmdl
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RXhjbHVzaW9uU2hhcGVJ
bnNpZGVJbmZvOjpzZWdtZW50UmFuZ2VzKTogQWRkZWQgYSBnZXR0ZXIgZm9yCisgICAgICAgIHRo
ZSBsaW5lIHNlZ21lbnQgcmFuZ2VzIHZlY3Rvci4KKyAgICAgICAgKEV4Y2x1c2lvblNoYXBlSW5z
aWRlSW5mbyk6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6cGxhY2VCb3hlc0luSW5saW5lRGlyZWN0aW9uKTog
TW9kaWZpZWQgdG8gY2FsbAorICAgICAgICBhIHJlZmFjdG9yZWQgYm94IHBsYWNlbWVudCBhbGdv
cml0aG0gdGhhdCB0YWtlcyBhIGJlZ2lubmluZyBhbmQgZW5kIHBvc2l0aW9uLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpwbGFjZUJveFJhbmdl
SW5JbmxpbmVEaXJlY3Rpb24pOiBTaW1pbGFyIHRvIHRoZQorICAgICAgICBwbGFjZUJveGVzIG1l
dGhvZCwgYnV0IHRha2VzIGFuIGVuZCBwb3NpdGlvbiB0aGF0IG1heSBvY2N1ciBiZWZvcmUgdGhl
IGVuZAorICAgICAgICBvZiB0aGUgbGluZS4KKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lRmxv
d0JveC5oOgorICAgICAgICAoSW5saW5lRmxvd0JveCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpleGNsdXNpb25T
aGFwZUluc2lkZUluZm9JbnRlcm5hbCk6IEZhY3RvcmVkIG91dCBjYWxscworICAgICAgICB0byBF
eGNsdXNpb25TaGFwZUluc2lkZUluZm8gdG8gdGhlIC5jcHAgZmlsZSwgYXMgRXhjbHVzaW9uU2hh
cGVJbnNpZGVJbmZvCisgICAgICAgIHJlcXVpcmVzIElubGluZUl0ZXJhdG9yLmgsIHdoaWNoIHdv
dWxkIGNyZWF0ZSBhIGNpcmN1bGFyIGRlcGVuZGVuY3kgaW4KKyAgICAgICAgRXhjbHVzaW9uU2hh
cGVJbnNpZGVJbmZvLmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQmxvY2suaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2s6OmV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbyk6IE1vZGlmaWVkIHRvIGNhbGwKKyAg
ICAgICAgZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvSW50ZXJuYWwuCisgICAgICAgIChSZW5kZXJC
bG9jayk6CisgICAgICAgIChMaW5lQnJlYWtlcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckJsb2NrTGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaW5lV2lkdGg6OkxpbmVX
aWR0aCk6IExpbmVXaWR0aCBub3cgdXNlcyB0aGUgbnVtYmVyIG9mIGNvbXB1dGVkCisgICAgICAg
IHNlZ21lbnRSYW5nZXMgdG8gZGV0ZXJtaW5lIHdoaWNoIExpbmVTZWdtZW50IHRvIHVzZSB3aGVu
IGNhbGN1bGF0aW5nIHdpZHRoLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmNyZWF0
ZUxpbmVCb3hlcyk6IE5vdyB0YWtlcyBhIGJvb2xlYW4gdG8gZGV0ZXJtaW5lCisgICAgICAgIHdo
ZXRoZXIgb3Igbm90IGl0IGNhbiBzaGFyZSB0aGUgc2FtZSBwYXJlbnRCb3ggYXMgaXRzIHNpYmxp
bmdzIChzZWdtZW50cworICAgICAgICBtdXN0IGJlIGFibGUgdG8gcG9zaXRpb24gdGhlbXNlbHZl
cyBzZXBhcmF0ZWx5IGluIHRoZSBSb290SW5saW5lQm94KS4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJsb2NrOjpjb25zdHJ1Y3RMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVFeHBh
bnNpb25Gb3JKdXN0aWZpZWRUZXh0KTogRG8gaW5jbHVkZSBydW5zIHRoYXQgc3RhcnQgbmV3Cisg
ICAgICAgIHNlZ21lbnRzIHdoZW4gY2FsY3VsYXRpbmcganVzdGlmaWNhdGlvbiBmb3IgdGhlIGN1
cnJlbnQgc2VnbWVudC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjb21wdXRlSW5s
aW5lRGlyZWN0aW9uUG9zaXRpb25zRm9yTGluZSk6IE1vZGlmaWVkIHRvCisgICAgICAgIHVzZSB0
aGUgY29tcHV0ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0ZvclNlZ21lbnQsIHdoaWNoIGNhbiBw
b3NpdGlvbgorICAgICAgICBtdWx0aXBsZSBzZWdtZW50cyBvZiB0ZXh0IHBlciBsaW5lLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlv
bnNGb3JTZWdtZW50KTogUG9zaXRpb25zCisgICAgICAgIHRoZSBnaXZlbiBzZWdtZW50IG9mIHRl
eHQgYW5kIGNhbGN1bGF0ZXMgaXRzIGxheW91dCBvZmZzZXRzLgorICAgICAgICAoV2ViQ29yZTo6
Y29uc3RydWN0QmlkaVJ1bnMpOiBNb2RpZmllZCBzb21lIHZhcmlhYmxlcyBmcm9tICdlbmRPZkxp
bmUnIHRvICdlbmRPZlNlZ21lbnQnLgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0QmlkaVJ1
bnNGb3JMaW5lKTogQ29uc3RydWN0IHRoZSBiaWRpIHJ1bnMgZm9yIGVhY2ggc2VnbWVudCBpbgor
ICAgICAgICB0aGUgZ2l2ZW4gbGluZS4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQmxvY2s6OmxheW91dFJ1bnNBbmRGbG9hdHNJblJhbmdlKTogQ2FsbCBjb25z
dHJ1Y3RCaWRpUnVuc0ZvckxpbmUuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6TGlu
ZUJyZWFrZXI6Om5leHRMaW5lQnJlYWspOiBNb3ZlZCB0aGUgbGluZSBicmVha2luZyBjb2RlCisg
ICAgICAgIHRvIGJyZWFrIHNlZ21lbnRzLCB3aXRoIG5leHRMaW5lQnJlYWsgaXRlcmF0aW5nIG92
ZXIgc2VnbWVudCBicmVha3MgZm9yIHRoZSBlbnRpcmUgbGluZS4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJsb2NrOjpMaW5lQnJlYWtlcjo6bmV4dFNlZ21lbnRCcmVhayk6IENhbGN1bGF0ZXMg
aG93IG11Y2ggdGV4dCBhCisgICAgICAgIHNlZ21lbnQgY2FuIGhvbGQuIFRoaXMgY29kZSB3YXMg
b3JpZ2luYWxseSBpbiBuZXh0TGluZUJyZWFrLgorCiAyMDEyLTExLTI5ICBEYW4gQmVybnN0ZWlu
ICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyNzcxODg1PiBT
dXBwb3J0IHJ1YnktcG9zaXRpb246IHtiZWZvcmUsIGFmdGVyfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvQmlkaVJlc29sdmVyLmgKaW5kZXggYzhlMjc2Yzk5ZDQ1OTZlNDlkNTFiZjBj
N2JkNzJlYjNlMTQ1MTg3Mi4uNWNjZGUxNzE1M2Q1OGM1OTQxMTcyOGJmN2NiZDMwZTIxZGJlOGNj
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpUmVzb2x2ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oCkBAIC0x
NDksNiArMTQ5LDkgQEAgc3RydWN0IEJpZGlDaGFyYWN0ZXJSdW4gewogICAgIC8vIERvIG5vdCBh
ZGQgYW55dGhpbmcgYXBhcnQgZnJvbSBiaXRmaWVsZHMgdW50aWwgYWZ0ZXIgbV9uZXh0LiBTZWUg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDE3MwogICAgIGJvb2wg
bV9vdmVycmlkZToxOwogICAgIGJvb2wgbV9oYXNIeXBoZW46MTsgLy8gVXNlZCBieSBCaWRpUnVu
IHN1YmNsYXNzIHdoaWNoIGlzIGEgbGF5ZXJpbmcgdmlvbGF0aW9uIGJ1dCBlbmFibGVzIHVzIHRv
IHNhdmUgOCBieXRlcyBwZXIgb2JqZWN0IG9uIDY0LWJpdC4KKyNpZiBFTkFCTEUoQ1NTX0VYQ0xV
U0lPTlMpCisgICAgYm9vbCBtX3N0YXJ0c1NlZ21lbnQ6MTsgLy8gU2VlIGFib3ZlLgorI2VuZGlm
CiAgICAgdW5zaWduZWQgY2hhciBtX2xldmVsOwogICAgIEJpZGlDaGFyYWN0ZXJSdW4qIG1fbmV4
dDsKICAgICBpbnQgbV9zdGFydDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9CaWRpUnVuLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQmlkaVJ1bi5oCmluZGV4IDY5
NGNiY2E3NzYzYmQwZTI4Y2Y0OGQxYWJlMDJmNmExMGMwMWRkYTUuLjc2Y2U0YjY5MTE4MzYyOGRi
MDY0ZmM0ZDdjNDg4YjY0NGJmZDM3YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9CaWRpUnVuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0JpZGlSdW4uaApA
QCAtMzksNyArMzksMTEgQEAgc3RydWN0IEJpZGlSdW4gOiBCaWRpQ2hhcmFjdGVyUnVuIHsKICAg
ICAgICAgLCBtX29iamVjdChvYmplY3QpCiAgICAgICAgICwgbV9ib3goMCkKICAgICB7Ci0gICAg
ICAgIG1faGFzSHlwaGVuID0gZmFsc2U7IC8vIFN0b3JlZCBpbiBiYXNlIGNsYXNzIHRvIHNhdmUg
c3BhY2UuCisgICAgICAgIC8vIFN0b3JlZCBpbiBiYXNlIGNsYXNzIHRvIHNhdmUgc3BhY2UuCisg
ICAgICAgIG1faGFzSHlwaGVuID0gZmFsc2U7CisjaWYgRU5BQkxFKENTU19FWENMVVNJT05TKQor
ICAgICAgICBtX3N0YXJ0c1NlZ21lbnQgPSBmYWxzZTsKKyNlbmRpZgogICAgIH0KIAogICAgIHZv
aWQgZGVzdHJveSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1
c2lvblNoYXBlSW5zaWRlSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVz
aW9uU2hhcGVJbnNpZGVJbmZvLmNwcAppbmRleCA5MzRlM2YyOTlmNDAzYTQxMGQ2ZjU4NjliNDY2
NzRmYWVmMzMyMmE2Li4yYjY3YzEzODkyY2EzNjNkNDMxNzdkYTdjMjcyY2ExMWFlMjYxYmI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGVJbnNpZGVJ
bmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGVJbnNp
ZGVJbmZvLmNwcApAQCAtMTA5LDYgKzEwOSw3IEBAIGJvb2wgRXhjbHVzaW9uU2hhcGVJbnNpZGVJ
bmZvOjpjb21wdXRlU2VnbWVudHNGb3JMaW5lKExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0CiAg
ICAgbV9saW5lVG9wID0gbGluZVRvcDsKICAgICBtX2xpbmVIZWlnaHQgPSBsaW5lSGVpZ2h0Owog
ICAgIG1fc2VnbWVudHMuY2xlYXIoKTsKKyAgICBtX3NlZ21lbnRSYW5nZXMuY2xlYXIoKTsKIAog
ICAgIGlmIChsaW5lT3ZlcmxhcHNTaGFwZUJvdW5kcygpKSB7CiAgICAgICAgIEFTU0VSVChtX3No
YXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25TaGFw
ZUluc2lkZUluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25TaGFwZUlu
c2lkZUluZm8uaAppbmRleCA4YmUxMTRkNGIyY2EzYzAxYTFkNDI3ODNkZThmZmQ5YmE3ODFlMTNj
Li5lNzc4YmVkNDNhOTA3MThmMmY1MTU1ZjhmNDNmNGIwMjc0ZDllYjNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby5oCkBAIC0z
NCw2ICszNCw3IEBACiAKICNpbmNsdWRlICJFeGNsdXNpb25TaGFwZS5oIgogI2luY2x1ZGUgIkZs
b2F0UmVjdC5oIgorI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTGF5b3V0
VW5pdC5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgpAQCAtNDMsNiArNDQsMTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZW5k
ZXJCbG9jazsKIAorc3RydWN0IExpbmVTZWdtZW50UmFuZ2UgeworICAgIElubGluZUl0ZXJhdG9y
IHN0YXJ0OworICAgIElubGluZUl0ZXJhdG9yIGVuZDsKKyAgICBMaW5lU2VnbWVudFJhbmdlKElu
bGluZUl0ZXJhdG9yIHN0YXJ0LCBJbmxpbmVJdGVyYXRvciBlbmQpCisgICAgICAgIDogc3RhcnQo
c3RhcnQpCisgICAgICAgICwgZW5kKGVuZCkKKyAgICB7CisgICAgfQorfTsKK3R5cGVkZWYgVmVj
dG9yPExpbmVTZWdtZW50UmFuZ2U+IFNlZ21lbnRSYW5nZUxpc3Q7CisKIGNsYXNzIEV4Y2x1c2lv
blNoYXBlSW5zaWRlSW5mbyB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CkBAIC02Nyw2ICs3OSwxNCBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChoYXNTZWdtZW50cygp
KTsKICAgICAgICAgcmV0dXJuIG1fc2VnbWVudHM7CiAgICAgfQorICAgIFNlZ21lbnRSYW5nZUxp
c3QmIHNlZ21lbnRSYW5nZXMoKSB7IHJldHVybiBtX3NlZ21lbnRSYW5nZXM7IH0KKyAgICBjb25z
dCBMaW5lU2VnbWVudCogY3VycmVudFNlZ21lbnQoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYg
KCFoYXNTZWdtZW50cygpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIEFTU0VSVCht
X3NlZ21lbnRSYW5nZXMuc2l6ZSgpIDwgbV9zZWdtZW50cy5zaXplKCkpOworICAgICAgICByZXR1
cm4gJm1fc2VnbWVudHNbbV9zZWdtZW50UmFuZ2VzLnNpemUoKV07CisgICAgfQogICAgIGJvb2wg
Y29tcHV0ZVNlZ21lbnRzRm9yTGluZShMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGlu
ZUhlaWdodCk7CiAgICAgdm9pZCBjb21wdXRlU2hhcGVTaXplKExheW91dFVuaXQgbG9naWNhbFdp
ZHRoLCBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQpOwogICAgIHZvaWQgZGlydHlTaGFwZVNpemUo
KSB7IG1fc2hhcGVTaXplRGlydHkgPSB0cnVlOyB9CkBAIC05Nyw2ICsxMTcsNyBAQCBwcml2YXRl
OgogICAgIExheW91dFVuaXQgbV9sb2dpY2FsSGVpZ2h0OwogCiAgICAgU2VnbWVudExpc3QgbV9z
ZWdtZW50czsKKyAgICBTZWdtZW50UmFuZ2VMaXN0IG1fc2VnbWVudFJhbmdlczsKICAgICBib29s
IG1fc2hhcGVTaXplRGlydHk7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvSW5saW5lRmxvd0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5l
Rmxvd0JveC5jcHAKaW5kZXggYTBlZjNjNmMzMzRlY2M0ZmE4NWEzMzMyNTNhZjdhN2E1YWU3MTcy
Yy4uYzNjNDg4M2Y0MThlZWU5ZTdmYjI1MGFhNjJjNmNlOWRjOTYxN2EzZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcApAQCAtMzY5LDE1ICszNjksMjQgQEAg
dm9pZCBJbmxpbmVGbG93Qm94OjpkZXRlcm1pbmVTcGFjaW5nRm9yRmxvd0JveGVzKGJvb2wgbGFz
dExpbmUsIGJvb2wgaXNMb2dpY2FsbHkKIGZsb2F0IElubGluZUZsb3dCb3g6OnBsYWNlQm94ZXNJ
bklubGluZURpcmVjdGlvbihmbG9hdCBsb2dpY2FsTGVmdCwgYm9vbCYgbmVlZHNXb3JkU3BhY2lu
ZywgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXAmIHRleHRCb3hEYXRhTWFwKQogewog
ICAgIC8vIFNldCBvdXIgeCBwb3NpdGlvbi4KLSAgICBzZXRMb2dpY2FsTGVmdChsb2dpY2FsTGVm
dCk7Ci0gIAorICAgIGJlZ2luUGxhY2luZ0JveFJhbmdlc0luSW5saW5lRGlyZWN0aW9uKGxvZ2lj
YWxMZWZ0KTsKKwogICAgIGZsb2F0IHN0YXJ0TG9naWNhbExlZnQgPSBsb2dpY2FsTGVmdDsKICAg
ICBsb2dpY2FsTGVmdCArPSBib3JkZXJMb2dpY2FsTGVmdCgpICsgcGFkZGluZ0xvZ2ljYWxMZWZ0
KCk7CiAKICAgICBmbG9hdCBtaW5Mb2dpY2FsTGVmdCA9IHN0YXJ0TG9naWNhbExlZnQ7CiAgICAg
ZmxvYXQgbWF4TG9naWNhbFJpZ2h0ID0gbG9naWNhbExlZnQ7CiAKLSAgICBmb3IgKElubGluZUJv
eCogY3VyciA9IGZpcnN0Q2hpbGQoKTsgY3VycjsgY3VyciA9IGN1cnItPm5leHRPbkxpbmUoKSkg
eworICAgIHBsYWNlQm94UmFuZ2VJbklubGluZURpcmVjdGlvbihmaXJzdENoaWxkKCksIDAsIGxv
Z2ljYWxMZWZ0LCBtaW5Mb2dpY2FsTGVmdCwgbWF4TG9naWNhbFJpZ2h0LCBuZWVkc1dvcmRTcGFj
aW5nLCB0ZXh0Qm94RGF0YU1hcCk7CisKKyAgICBsb2dpY2FsTGVmdCArPSBib3JkZXJMb2dpY2Fs
UmlnaHQoKSArIHBhZGRpbmdMb2dpY2FsUmlnaHQoKTsKKyAgICBlbmRQbGFjaW5nQm94UmFuZ2Vz
SW5JbmxpbmVEaXJlY3Rpb24oc3RhcnRMb2dpY2FsTGVmdCwgbG9naWNhbExlZnQsIG1pbkxvZ2lj
YWxMZWZ0LCBtYXhMb2dpY2FsUmlnaHQpOworICAgIHJldHVybiBsb2dpY2FsTGVmdDsKK30KKwor
ZmxvYXQgSW5saW5lRmxvd0JveDo6cGxhY2VCb3hSYW5nZUluSW5saW5lRGlyZWN0aW9uKElubGlu
ZUJveCogZmlyc3RDaGlsZCwgSW5saW5lQm94KiBsYXN0Q2hpbGQsIGZsb2F0JiBsb2dpY2FsTGVm
dCwgZmxvYXQmIG1pbkxvZ2ljYWxMZWZ0LCBmbG9hdCYgbWF4TG9naWNhbFJpZ2h0LCBib29sJiBu
ZWVkc1dvcmRTcGFjaW5nLCBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcCYgdGV4dEJv
eERhdGFNYXApCit7CisgICAgZm9yIChJbmxpbmVCb3gqIGN1cnIgPSBmaXJzdENoaWxkOyBjdXJy
ICYmIGN1cnIgIT0gbGFzdENoaWxkOyBjdXJyID0gY3Vyci0+bmV4dE9uTGluZSgpKSB7CiAgICAg
ICAgIGlmIChjdXJyLT5yZW5kZXJlcigpLT5pc1RleHQoKSkgewogICAgICAgICAgICAgSW5saW5l
VGV4dEJveCogdGV4dCA9IHRvSW5saW5lVGV4dEJveChjdXJyKTsKICAgICAgICAgICAgIFJlbmRl
clRleHQqIHJ0ID0gdG9SZW5kZXJUZXh0KHRleHQtPnJlbmRlcmVyKCkpOwpAQCAtNDI5LDExICs0
MzgsNiBAQCBmbG9hdCBJbmxpbmVGbG93Qm94OjpwbGFjZUJveGVzSW5JbmxpbmVEaXJlY3Rpb24o
ZmxvYXQgbG9naWNhbExlZnQsIGJvb2wmIG5lZWRzVwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgfQotCi0gICAgbG9naWNhbExlZnQgKz0gYm9yZGVyTG9naWNhbFJpZ2h0KCkgKyBwYWRk
aW5nTG9naWNhbFJpZ2h0KCk7Ci0gICAgc2V0TG9naWNhbFdpZHRoKGxvZ2ljYWxMZWZ0IC0gc3Rh
cnRMb2dpY2FsTGVmdCk7Ci0gICAgaWYgKGtub3duVG9IYXZlTm9PdmVyZmxvdygpICYmIChtaW5M
b2dpY2FsTGVmdCA8IHN0YXJ0TG9naWNhbExlZnQgfHwgbWF4TG9naWNhbFJpZ2h0ID4gbG9naWNh
bExlZnQpKQotICAgICAgICBjbGVhcktub3duVG9IYXZlTm9PdmVyZmxvdygpOwogICAgIHJldHVy
biBsb2dpY2FsTGVmdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0lubGluZUZsb3dCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94
LmgKaW5kZXggMzZkNDhkYzg3YmIxNTI2ZjM1MzJmMzFmYWEwMmNlNjExZTE1MWRjYi4uYzQyNjRi
YmE2ZmJlYmNlOGRiNDYxZDBlODFjZjNkZDRjMWYwMmViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvSW5saW5lRmxvd0JveC5oCkBAIC0xNzMsNiArMTczLDE1IEBAIHB1YmxpYzoKICAgICB2
b2lkIGRldGVybWluZVNwYWNpbmdGb3JGbG93Qm94ZXMoYm9vbCBsYXN0TGluZSwgYm9vbCBpc0xv
Z2ljYWxseUxhc3RSdW5XcmFwcGVkLCBSZW5kZXJPYmplY3QqIGxvZ2ljYWxseUxhc3RSdW5SZW5k
ZXJlcik7CiAgICAgTGF5b3V0VW5pdCBnZXRGbG93U3BhY2luZ0xvZ2ljYWxXaWR0aCgpOwogICAg
IGZsb2F0IHBsYWNlQm94ZXNJbklubGluZURpcmVjdGlvbihmbG9hdCBsb2dpY2FsTGVmdCwgYm9v
bCYgbmVlZHNXb3JkU3BhY2luZywgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXAmKTsK
KyAgICBmbG9hdCBwbGFjZUJveFJhbmdlSW5JbmxpbmVEaXJlY3Rpb24oSW5saW5lQm94KiBmaXJz
dENoaWxkLCBJbmxpbmVCb3gqIGxhc3RDaGlsZCwgZmxvYXQmIGxvZ2ljYWxMZWZ0LCBmbG9hdCYg
bWluTG9naWNhbExlZnQsIGZsb2F0JiBtYXhMb2dpY2FsUmlnaHQsIGJvb2wmIG5lZWRzV29yZFNw
YWNpbmcsIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwJik7CisgICAgdm9pZCBiZWdp
blBsYWNpbmdCb3hSYW5nZXNJbklubGluZURpcmVjdGlvbihmbG9hdCBsb2dpY2FsTGVmdCkgeyBz
ZXRMb2dpY2FsTGVmdChsb2dpY2FsTGVmdCk7IH0KKyAgICB2b2lkIGVuZFBsYWNpbmdCb3hSYW5n
ZXNJbklubGluZURpcmVjdGlvbihmbG9hdCBsb2dpY2FsTGVmdCwgZmxvYXQgbG9naWNhbFJpZ2h0
LCBmbG9hdCBtaW5Mb2dpY2FsTGVmdCwgZmxvYXQgbWF4TG9naWNhbFJpZ2h0KQorICAgIHsKKyAg
ICAgICAgc2V0TG9naWNhbFdpZHRoKGxvZ2ljYWxSaWdodCAtIGxvZ2ljYWxMZWZ0KTsKKyAgICAg
ICAgaWYgKGtub3duVG9IYXZlTm9PdmVyZmxvdygpICYmIChtaW5Mb2dpY2FsTGVmdCA8IGxvZ2lj
YWxMZWZ0IHx8IG1heExvZ2ljYWxSaWdodCA+IGxvZ2ljYWxSaWdodCkpCisgICAgICAgICAgICBj
bGVhcktub3duVG9IYXZlTm9PdmVyZmxvdygpOworICAgIH0KKwogICAgIHZvaWQgY29tcHV0ZUxv
Z2ljYWxCb3hIZWlnaHRzKFJvb3RJbmxpbmVCb3gqLCBMYXlvdXRVbml0JiBtYXhQb3NpdGlvblRv
cCwgTGF5b3V0VW5pdCYgbWF4UG9zaXRpb25Cb3R0b20sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50JiBtYXhBc2NlbnQsIGludCYgbWF4RGVzY2VudCwgYm9vbCYgc2V0TWF4
QXNjZW50LCBib29sJiBzZXRNYXhEZXNjZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgc3RyaWN0TW9kZSwgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXAm
LCBGb250QmFzZWxpbmUsIFZlcnRpY2FsUG9zaXRpb25DYWNoZSYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggOGM2MjQ5NzY1OWVkZjk1Y2JjYjMxMTlhNWM5
ZmNlNzFiMGQzMDUzYS4uMmRlMzQ5NDllNmI2MDI0YzRjOTdlYzk2NzU1NmFhNmQ4NDNlYTZkYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0xMzk5LDYgKzEz
OTksMTEgQEAgdm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0KCkKIH0KIAogI2lmIEVOQUJMRShDU1Nf
RVhDTFVTSU9OUykKK0V4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbyogUmVuZGVyQmxvY2s6OmV4Y2x1
c2lvblNoYXBlSW5zaWRlSW5mb0ludGVybmFsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gRXhjbHVz
aW9uU2hhcGVJbnNpZGVJbmZvOjppc0V4Y2x1c2lvblNoYXBlSW5zaWRlSW5mb0VuYWJsZWRGb3JS
ZW5kZXJCbG9jayh0aGlzKSA/IEV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbzo6ZXhjbHVzaW9uU2hh
cGVJbnNpZGVJbmZvRm9yUmVuZGVyQmxvY2sodGhpcykgOiAwOworfQorCiB2b2lkIFJlbmRlckJs
b2NrOjp1cGRhdGVFeGNsdXNpb25TaGFwZUluc2lkZUluZm9BZnRlclN0eWxlQ2hhbmdlKGNvbnN0
IEV4Y2x1c2lvblNoYXBlVmFsdWUqIHNoYXBlSW5zaWRlLCBjb25zdCBFeGNsdXNpb25TaGFwZVZh
bHVlKiBvbGRTaGFwZUluc2lkZSkKIHsKICAgICAvLyBGSVhNRTogQSBmdXR1cmUgb3B0aW1pemF0
aW9uIHdvdWxkIGRvIGEgZGVlcCBjb21wYXJpc29uIGZvciBlcXVhbGl0eS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKaW5kZXggOWYwMDg0NzdiYzRjMGJkOWI4NDIyODFiZTgy
MDRiNmM1ODc1NjBhYy4uZDExMTU0N2VmZWVmM2JiYTBjZmNiM2Y5YzgzNzRlNzBiMDkxN2RiNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKQEAgLTM1LDcgKzM1LDYgQEAK
ICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KIAogI2lmIEVOQUJMRShDU1NfRVhDTFVTSU9O
UykKLSNpbmNsdWRlICJFeGNsdXNpb25TaGFwZUluc2lkZUluZm8uaCIKICNpbmNsdWRlICJFeGNs
dXNpb25TaGFwZVZhbHVlLmgiCiAjZW5kaWYKIApAQCAtNTMsNiArNTIsMTAgQEAgc3RydWN0IEJp
ZGlSdW47CiBzdHJ1Y3QgUGFpbnRJbmZvOwogY2xhc3MgTGluZUluZm87CiBjbGFzcyBSZW5kZXJS
dWJ5UnVuOworI2lmIEVOQUJMRShDU1NfRVhDTFVTSU9OUykKK2NsYXNzIEJhc2ljU2hhcGU7Citj
bGFzcyBFeGNsdXNpb25TaGFwZUluc2lkZUluZm87CisjZW5kaWYKIGNsYXNzIFRleHRMYXlvdXQ7
CiBjbGFzcyBXb3JkTWVhc3VyZW1lbnQ7CiAKQEAgLTQyNyw3ICs0MzAsNyBAQCBwdWJsaWM6CiAj
aWYgRU5BQkxFKENTU19FWENMVVNJT05TKQogICAgIEV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbyog
ZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBz
dHlsZSgpLT5zaGFwZUluc2lkZSgpICYmIEV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbzo6aXNFeGNs
dXNpb25TaGFwZUluc2lkZUluZm9FbmFibGVkRm9yUmVuZGVyQmxvY2sodGhpcykgPyBFeGNsdXNp
b25TaGFwZUluc2lkZUluZm86OmV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mb0ZvclJlbmRlckJsb2Nr
KHRoaXMpIDogMDsKKyAgICAgICAgcmV0dXJuIHN0eWxlKCktPnNoYXBlSW5zaWRlKCkgPyBleGNs
dXNpb25TaGFwZUluc2lkZUluZm9JbnRlcm5hbCgpIDogMDsKICAgICB9CiAjZW5kaWYKIApAQCAt
NTI0LDYgKzUyNyw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICNpZiBFTkFCTEUoQ1NTX0VY
Q0xVU0lPTlMpCisgICAgRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvKiBleGNsdXNpb25TaGFwZUlu
c2lkZUluZm9JbnRlcm5hbCgpIGNvbnN0OwogICAgIHZvaWQgY29tcHV0ZUV4Y2x1c2lvblNoYXBl
U2l6ZSgpOwogICAgIHZvaWQgdXBkYXRlRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvQWZ0ZXJTdHls
ZUNoYW5nZShjb25zdCBFeGNsdXNpb25TaGFwZVZhbHVlKiwgY29uc3QgRXhjbHVzaW9uU2hhcGVW
YWx1ZSogb2xkRXhjbHVzaW9uU2hhcGUpOwogI2VuZGlmCkBAIC03NjMsNiArNzY3LDcgQEAgcHJp
dmF0ZToKICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIHJlc2V0KCk7CiAgICAgICAgIAorICAg
ICAgICBJbmxpbmVJdGVyYXRvciBuZXh0U2VnbWVudEJyZWFrKElubGluZUJpZGlSZXNvbHZlciYs
IExpbmVJbmZvJiwgUmVuZGVyVGV4dEluZm8mLCBGbG9hdGluZ09iamVjdCogbGFzdEZsb2F0RnJv
bVByZXZpb3VzTGluZSwgdW5zaWduZWQgY29uc2VjdXRpdmVIeXBoZW5hdGVkTGluZXMsIFdvcmRN
ZWFzdXJlbWVudHMmKTsKICAgICAgICAgdm9pZCBza2lwVHJhaWxpbmdXaGl0ZXNwYWNlKElubGlu
ZUl0ZXJhdG9yJiwgY29uc3QgTGluZUluZm8mKTsKICAgICAgICAgdm9pZCBza2lwTGVhZGluZ1do
aXRlc3BhY2UoSW5saW5lQmlkaVJlc29sdmVyJiwgTGluZUluZm8mLCBGbG9hdGluZ09iamVjdCog
bGFzdEZsb2F0RnJvbVByZXZpb3VzTGluZSwgTGluZVdpZHRoJik7CiAgICAgICAgIApAQCAtNzc5
LDEwICs3ODQsMTIgQEAgcHJpdmF0ZToKICAgICBib29sIGNoZWNrUGFnaW5hdGlvbkFuZEZsb2F0
c0F0RW5kTGluZShMaW5lTGF5b3V0U3RhdGUmKTsKICAgICAKICAgICBSb290SW5saW5lQm94KiBj
b25zdHJ1Y3RMaW5lKEJpZGlSdW5MaXN0PEJpZGlSdW4+JiwgY29uc3QgTGluZUluZm8mKTsKLSAg
ICBJbmxpbmVGbG93Qm94KiBjcmVhdGVMaW5lQm94ZXMoUmVuZGVyT2JqZWN0KiwgY29uc3QgTGlu
ZUluZm8mLCBJbmxpbmVCb3gqIGNoaWxkQm94KTsKKyAgICBJbmxpbmVGbG93Qm94KiBjcmVhdGVM
aW5lQm94ZXMoUmVuZGVyT2JqZWN0KiwgY29uc3QgTGluZUluZm8mLCBJbmxpbmVCb3gqIGNoaWxk
Qm94LCBib29sIHN0YXJ0c05ld1NlZ21uZXQpOwogCiAgICAgdm9pZCBzZXRNYXJnaW5zRm9yUnVi
eVJ1bihCaWRpUnVuKiwgUmVuZGVyUnVieVJ1biosIFJlbmRlck9iamVjdCosIGNvbnN0IExpbmVJ
bmZvJik7CiAKKyAgICBCaWRpUnVuKiBjb21wdXRlSW5saW5lRGlyZWN0aW9uUG9zaXRpb25zRm9y
U2VnbWVudChSb290SW5saW5lQm94KiwgY29uc3QgTGluZUluZm8mLCBFVGV4dEFsaWduLCBmbG9h
dCYgbG9naWNhbExlZnQsCisgICAgICAgIGZsb2F0JiBhdmFpbGFibGVMb2dpY2FsV2lkdGgsIEJp
ZGlSdW4qIGZpcnN0UnVuLCBCaWRpUnVuKiB0cmFpbGluZ1NwYWNlUnVuLCBHbHlwaE92ZXJmbG93
QW5kRmFsbGJhY2tGb250c01hcCYgdGV4dEJveERhdGFNYXAsIFZlcnRpY2FsUG9zaXRpb25DYWNo
ZSYsIFdvcmRNZWFzdXJlbWVudHMmKTsKICAgICB2b2lkIGNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Q
b3NpdGlvbnNGb3JMaW5lKFJvb3RJbmxpbmVCb3gqLCBjb25zdCBMaW5lSW5mbyYsIEJpZGlSdW4q
IGZpcnN0UnVuLCBCaWRpUnVuKiB0cmFpbGluZ1NwYWNlUnVuLCBib29sIHJlYWNoZWRFbmQsIEds
eXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwJiwgVmVydGljYWxQb3NpdGlvbkNhY2hlJiwg
V29yZE1lYXN1cmVtZW50cyYpOwogICAgIHZvaWQgY29tcHV0ZUJsb2NrRGlyZWN0aW9uUG9zaXRp
b25zRm9yTGluZShSb290SW5saW5lQm94KiwgQmlkaVJ1biosIEdseXBoT3ZlcmZsb3dBbmRGYWxs
YmFja0ZvbnRzTWFwJiwgVmVydGljYWxQb3NpdGlvbkNhY2hlJik7CiAgICAgdm9pZCBkZWxldGVF
bGxpcHNpc0xpbmVCb3hlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAppbmRleCA5NzBmYmMzNDZiZThkODc5MjY3Y2MxZTQyNjY0
NDg3NjZjMDAwMjE4Li5mYTE4OGJmNzg0YjNhMzc0M2I5NjVmN2ZlYjVlNzZhYmUyNjJmNjAxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0
LmNwcApAQCAtODgsOSArODgsOCBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChibG9jayk7CiAj
aWYgRU5BQkxFKENTU19FWENMVVNJT05TKQogICAgICAgICBFeGNsdXNpb25TaGFwZUluc2lkZUlu
Zm8qIGV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbyA9IGxheW91dEV4Y2x1c2lvblNoYXBlSW5zaWRl
SW5mbyhtX2Jsb2NrKTsKLSAgICAgICAgLy8gRklYTUU6IEJ1ZyA5MTg3ODogQWRkIHN1cHBvcnQg
Zm9yIG11bHRpcGxlIHNlZ21lbnRzLCBjdXJyZW50bHkgd2Ugb25seSBzdXBwb3J0IG9uZQotICAg
ICAgICBpZiAoZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvICYmIGV4Y2x1c2lvblNoYXBlSW5zaWRl
SW5mby0+aGFzU2VnbWVudHMoKSkKLSAgICAgICAgICAgIG1fc2VnbWVudCA9ICZleGNsdXNpb25T
aGFwZUluc2lkZUluZm8tPnNlZ21lbnRzKClbMF07CisgICAgICAgIGlmIChleGNsdXNpb25TaGFw
ZUluc2lkZUluZm8pCisgICAgICAgICAgICBtX3NlZ21lbnQgPSBleGNsdXNpb25TaGFwZUluc2lk
ZUluZm8tPmN1cnJlbnRTZWdtZW50KCk7CiAjZW5kaWYKICAgICAgICAgdXBkYXRlQXZhaWxhYmxl
V2lkdGgoKTsKICAgICB9CkBAIC00NTAsNyArNDQ5LDcgQEAgc3RhdGljIGJvb2wgcGFyZW50SXND
b25zdHJ1Y3RlZE9ySGF2ZU5leHQoSW5saW5lRmxvd0JveCogcGFyZW50Qm94KQogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotSW5saW5lRmxvd0JveCogUmVuZGVyQmxvY2s6OmNyZWF0ZUxpbmVCb3hl
cyhSZW5kZXJPYmplY3QqIG9iaiwgY29uc3QgTGluZUluZm8mIGxpbmVJbmZvLCBJbmxpbmVCb3gq
IGNoaWxkQm94KQorSW5saW5lRmxvd0JveCogUmVuZGVyQmxvY2s6OmNyZWF0ZUxpbmVCb3hlcyhS
ZW5kZXJPYmplY3QqIG9iaiwgY29uc3QgTGluZUluZm8mIGxpbmVJbmZvLCBJbmxpbmVCb3gqIGNo
aWxkQm94LCBib29sIHN0YXJ0TmV3U2VnbWVudCkKIHsKICAgICAvLyBTZWUgaWYgd2UgaGF2ZSBh
biB1bmNvbnN0cnVjdGVkIGxpbmUgYm94IGZvciB0aGlzIG9iamVjdCB0aGF0IGlzIGFsc28KICAg
ICAvLyB0aGUgbGFzdCBpdGVtIG9uIHRoZSBsaW5lLgpAQCAtNDczLDcgKzQ3Miw4IEBAIElubGlu
ZUZsb3dCb3gqIFJlbmRlckJsb2NrOjpjcmVhdGVMaW5lQm94ZXMoUmVuZGVyT2JqZWN0KiBvYmos
IGNvbnN0IExpbmVJbmZvJiBsCiAgICAgICAgIC8vIHRoZSBzYW1lIGxpbmUgKHRoaXMgY2FuIGhh
cHBlbiB3aXRoIHZlcnkgZmFuY3kgbGFuZ3VhZ2UgbWl4dHVyZXMpLgogICAgICAgICBib29sIGNv
bnN0cnVjdGVkTmV3Qm94ID0gZmFsc2U7CiAgICAgICAgIGJvb2wgYWxsb3dlZFRvQ29uc3RydWN0
TmV3Qm94ID0gIWhhc0RlZmF1bHRMaW5lQm94Q29udGFpbiB8fCAhaW5saW5lRmxvdyB8fCBpbmxp
bmVGbG93LT5hbHdheXNDcmVhdGVMaW5lQm94ZXMoKTsKLSAgICAgICAgYm9vbCBjYW5Vc2VFeGlz
dGluZ1BhcmVudEJveCA9IHBhcmVudEJveCAmJiAhcGFyZW50SXNDb25zdHJ1Y3RlZE9ySGF2ZU5l
eHQocGFyZW50Qm94KTsKKyAgICAgICAgYm9vbCBtdXN0Q3JlYXRlQm94ZXNUb1Jvb3QgPSBzdGFy
dE5ld1NlZ21lbnQgJiYgIShwYXJlbnRCb3ggJiYgcGFyZW50Qm94LT5pc1Jvb3RJbmxpbmVCb3go
KSk7CisgICAgICAgIGJvb2wgY2FuVXNlRXhpc3RpbmdQYXJlbnRCb3ggPSBwYXJlbnRCb3ggJiYg
IXBhcmVudElzQ29uc3RydWN0ZWRPckhhdmVOZXh0KHBhcmVudEJveCkgJiYgIW11c3RDcmVhdGVC
b3hlc1RvUm9vdDsKICAgICAgICAgaWYgKGFsbG93ZWRUb0NvbnN0cnVjdE5ld0JveCAmJiAhY2Fu
VXNlRXhpc3RpbmdQYXJlbnRCb3gpIHsKICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gbWFrZSBh
IG5ldyBib3ggZm9yIHRoaXMgcmVuZGVyIG9iamVjdC4gIE9uY2UKICAgICAgICAgICAgIC8vIG1h
ZGUsIHdlIG5lZWQgdG8gcGxhY2UgaXQgYXQgdGhlIGVuZCBvZiB0aGUgY3VycmVudCBsaW5lLgpA
QCAtNTcwLDEwICs1NzAsMTcgQEAgUm9vdElubGluZUJveCogUmVuZGVyQmxvY2s6OmNvbnN0cnVj
dExpbmUoQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4mIGJpZGlSdW5zLCBjb25zdAogCiAgICAgICAgIC8v
IElmIHdlIGhhdmUgbm8gcGFyZW50IGJveCB5ZXQsIG9yIGlmIHRoZSBydW4gaXMgbm90IHNpbXBs
eSBhIHNpYmxpbmcsCiAgICAgICAgIC8vIHRoZW4gd2UgbmVlZCB0byBjb25zdHJ1Y3QgaW5saW5l
IGJveGVzIGFzIG5lY2Vzc2FyeSB0byBwcm9wZXJseSBlbmNsb3NlIHRoZQotICAgICAgICAvLyBy
dW4ncyBpbmxpbmUgYm94LgotICAgICAgICBpZiAoIXBhcmVudEJveCB8fCBwYXJlbnRCb3gtPnJl
bmRlcmVyKCkgIT0gci0+bV9vYmplY3QtPnBhcmVudCgpKQorICAgICAgICAvLyBydW4ncyBpbmxp
bmUgYm94LiBTZWdtZW50cyBjYW4gb25seSBiZSBzaWJsaW5ncyBhdCB0aGUgcm9vdCBsZXZlbCwg
YXMKKyAgICAgICAgLy8gdGhleSBhcmUgcG9zaXRpb25lZCBzZXBhcmF0ZWx5LgorICAgICAgICBi
b29sIHJ1blN0YXJ0c1NlZ21lbnQgPQorI2lmIEVOQUJMRShDU1NfRVhDTFVTSU9OUykKKyAgICAg
ICAgICAgIHItPm1fc3RhcnRzU2VnbWVudDsKKyNlbHNlCisgICAgICAgICAgICBmYWxzZTsKKyNl
bmRpZgorICAgICAgICBpZiAoIXBhcmVudEJveCB8fCBwYXJlbnRCb3gtPnJlbmRlcmVyKCkgIT0g
ci0+bV9vYmplY3QtPnBhcmVudCgpIHx8IHJ1blN0YXJ0c1NlZ21lbnQpCiAgICAgICAgICAgICAv
LyBDcmVhdGUgbmV3IGlubGluZSBib3hlcyBhbGwgdGhlIHdheSBiYWNrIHRvIHRoZSBhcHByb3By
aWF0ZSBpbnNlcnRpb24gcG9pbnQuCi0gICAgICAgICAgICBwYXJlbnRCb3ggPSBjcmVhdGVMaW5l
Qm94ZXMoci0+bV9vYmplY3QtPnBhcmVudCgpLCBsaW5lSW5mbywgYm94KTsKKyAgICAgICAgICAg
IHBhcmVudEJveCA9IGNyZWF0ZUxpbmVCb3hlcyhyLT5tX29iamVjdC0+cGFyZW50KCksIGxpbmVJ
bmZvLCBib3gsIHJ1blN0YXJ0c1NlZ21lbnQpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAg
IC8vIEFwcGVuZCB0aGUgaW5saW5lIGJveCB0byB0aGlzIGxpbmUuCiAgICAgICAgICAgICBwYXJl
bnRCb3gtPmFkZFRvTGluZShib3gpOwpAQCAtODA4LDYgKzgxNSwxMSBAQCBzdGF0aWMgaW5saW5l
IHZvaWQgY29tcHV0ZUV4cGFuc2lvbkZvckp1c3RpZmllZFRleHQoQmlkaVJ1biogZmlyc3RSdW4s
IEJpZGlSdW4qCiAKICAgICBzaXplX3QgaSA9IDA7CiAgICAgZm9yIChCaWRpUnVuKiByID0gZmly
c3RSdW47IHI7IHIgPSByLT5uZXh0KCkpIHsKKyAgICAgICAgLy8gVGhlIGNhbGN1bGF0aW9uIGlz
IHNlcGFyYXRlIGZvciBlYWNoIHNlZ21lbnQKKyNpZiBFTkFCTEUoQ1NTX0VYQ0xVU0lPTlMpCisg
ICAgICAgIGlmIChyLT5tX3N0YXJ0c1NlZ21lbnQpCisgICAgICAgICAgICBicmVhazsKKyNlbmRp
ZgogICAgICAgICBpZiAoIXItPm1fYm94IHx8IHIgPT0gdHJhaWxpbmdTcGFjZVJ1bikKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICAKQEAgLTg4MywxNyArODk1LDUzIEBAIHZvaWQgUmVu
ZGVyQmxvY2s6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlvbnNGb3JMaW5lKFJvb3RJbmxp
bmVCb3gqIGxpbmVCb3gsCiAgICAgLy8gQ1NTIDIuMTogIidUZXh0LWluZGVudCcgb25seSBhZmZl
Y3RzIGEgbGluZSBpZiBpdCBpcyB0aGUgZmlyc3QgZm9ybWF0dGVkIGxpbmUgb2YgYW4gZWxlbWVu
dC4gRm9yIGV4YW1wbGUsIHRoZSBmaXJzdCBsaW5lIG9mIGFuIGFub255bW91cyBibG9jayAKICAg
ICAvLyBib3ggaXMgb25seSBhZmZlY3RlZCBpZiBpdCBpcyB0aGUgZmlyc3QgY2hpbGQgb2YgaXRz
IHBhcmVudCBlbGVtZW50LiIKICAgICBib29sIGZpcnN0TGluZSA9IGxpbmVJbmZvLmlzRmlyc3RM
aW5lKCkgJiYgIShpc0Fub255bW91c0Jsb2NrKCkgJiYgcGFyZW50KCktPmZpcnN0Q2hpbGQoKSAh
PSB0aGlzKTsKLSAgICBmbG9hdCBsb2dpY2FsTGVmdCA9IHBpeGVsU25hcHBlZExvZ2ljYWxMZWZ0
T2Zmc2V0Rm9yTGluZShsb2dpY2FsSGVpZ2h0KCksIGZpcnN0TGluZSwgbGluZUxvZ2ljYWxIZWln
aHQpOwotICAgIGZsb2F0IGxvZ2ljYWxSaWdodCA9IHBpeGVsU25hcHBlZExvZ2ljYWxSaWdodE9m
ZnNldEZvckxpbmUobG9naWNhbEhlaWdodCgpLCBmaXJzdExpbmUsIGxpbmVMb2dpY2FsSGVpZ2h0
KTsKKyAgICBmbG9hdCBsaW5lTG9naWNhbExlZnQgPSBwaXhlbFNuYXBwZWRMb2dpY2FsTGVmdE9m
ZnNldEZvckxpbmUobG9naWNhbEhlaWdodCgpLCBmaXJzdExpbmUsIGxpbmVMb2dpY2FsSGVpZ2h0
KTsKKyAgICBmbG9hdCBsaW5lTG9naWNhbFJpZ2h0ID0gcGl4ZWxTbmFwcGVkTG9naWNhbFJpZ2h0
T2Zmc2V0Rm9yTGluZShsb2dpY2FsSGVpZ2h0KCksIGZpcnN0TGluZSwgbGluZUxvZ2ljYWxIZWln
aHQpOworICAgIGZsb2F0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aDsKKyAgICBib29sIG5lZWRzV29y
ZFNwYWNpbmc7CiAjaWYgRU5BQkxFKENTU19FWENMVVNJT05TKQogICAgIEV4Y2x1c2lvblNoYXBl
SW5zaWRlSW5mbyogZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvID0gbGF5b3V0RXhjbHVzaW9uU2hh
cGVJbnNpZGVJbmZvKHRoaXMpOwogICAgIGlmIChleGNsdXNpb25TaGFwZUluc2lkZUluZm8gJiYg
ZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLT5oYXNTZWdtZW50cygpKSB7Ci0gICAgICAgIGxvZ2lj
YWxMZWZ0ID0gbWF4PGZsb2F0Pihyb3VuZFRvSW50KGV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby0+
c2VnbWVudHMoKVswXS5sb2dpY2FsTGVmdCksIGxvZ2ljYWxMZWZ0KTsKLSAgICAgICAgbG9naWNh
bFJpZ2h0ID0gbWluPGZsb2F0PihmbG9vclRvSW50KGV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby0+
c2VnbWVudHMoKVswXS5sb2dpY2FsUmlnaHQpLCBsb2dpY2FsUmlnaHQpOworICAgICAgICBCaWRp
UnVuKiBzZWdtZW50U3RhcnQgPSBmaXJzdFJ1bjsKKyAgICAgICAgY29uc3QgU2VnbWVudExpc3Qm
IHNlZ21lbnRzID0gZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLT5zZWdtZW50cygpOworICAgICAg
ICBmbG9hdCBsb2dpY2FsTGVmdCA9IG1heDxmbG9hdD4ocm91bmRUb0ludChzZWdtZW50c1swXS5s
b2dpY2FsTGVmdCksIGxpbmVMb2dpY2FsTGVmdCk7CisgICAgICAgIGZsb2F0IGxvZ2ljYWxSaWdo
dCA9IG1pbjxmbG9hdD4oZmxvb3JUb0ludChzZWdtZW50c1swXS5sb2dpY2FsUmlnaHQpLCBsaW5l
TG9naWNhbFJpZ2h0KTsKKyAgICAgICAgZmxvYXQgc3RhcnRMb2dpY2FsTGVmdCA9IGxvZ2ljYWxM
ZWZ0OworICAgICAgICBmbG9hdCBlbmRMb2dpY2FsUmlnaHQgPSBsb2dpY2FsTGVmdDsKKyAgICAg
ICAgZmxvYXQgbWluTG9naWNhbExlZnQgPSBsb2dpY2FsTGVmdDsKKyAgICAgICAgZmxvYXQgbWF4
TG9naWNhbFJpZ2h0ID0gbG9naWNhbExlZnQ7CisgICAgICAgIGxpbmVCb3gtPmJlZ2luUGxhY2lu
Z0JveFJhbmdlc0luSW5saW5lRGlyZWN0aW9uKGxvZ2ljYWxMZWZ0KTsKKyAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBzZWdtZW50cy5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgaWYg
KGkpIHsKKyAgICAgICAgICAgICAgICBsb2dpY2FsTGVmdCA9IG1heDxmbG9hdD4ocm91bmRUb0lu
dChzZWdtZW50c1tpXS5sb2dpY2FsTGVmdCksIGxpbmVMb2dpY2FsTGVmdCk7CisgICAgICAgICAg
ICAgICAgbG9naWNhbFJpZ2h0ID0gbWluPGZsb2F0PihmbG9vclRvSW50KHNlZ21lbnRzW2ldLmxv
Z2ljYWxSaWdodCksIGxpbmVMb2dpY2FsUmlnaHQpOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgYXZhaWxhYmxlTG9naWNhbFdpZHRoID0gbG9naWNhbFJpZ2h0IC0gbG9naWNhbExlZnQ7Cisg
ICAgICAgICAgICBCaWRpUnVuKiBuZXdTZWdtZW50U3RhcnQgPSBjb21wdXRlSW5saW5lRGlyZWN0
aW9uUG9zaXRpb25zRm9yU2VnbWVudChsaW5lQm94LCBsaW5lSW5mbywgdGV4dEFsaWduLCBsb2dp
Y2FsTGVmdCwgYXZhaWxhYmxlTG9naWNhbFdpZHRoLCBzZWdtZW50U3RhcnQsIHRyYWlsaW5nU3Bh
Y2VSdW4sIHRleHRCb3hEYXRhTWFwLCB2ZXJ0aWNhbFBvc2l0aW9uQ2FjaGUsIHdvcmRNZWFzdXJl
bWVudHMpOworICAgICAgICAgICAgbmVlZHNXb3JkU3BhY2luZyA9IGZhbHNlOworICAgICAgICAg
ICAgZW5kTG9naWNhbFJpZ2h0ID0gbGluZUJveC0+cGxhY2VCb3hSYW5nZUluSW5saW5lRGlyZWN0
aW9uKHNlZ21lbnRTdGFydC0+bV9ib3gsIG5ld1NlZ21lbnRTdGFydCA/IG5ld1NlZ21lbnRTdGFy
dC0+bV9ib3ggOiAwLCBsb2dpY2FsTGVmdCwgbWluTG9naWNhbExlZnQsIG1heExvZ2ljYWxSaWdo
dCwgbmVlZHNXb3JkU3BhY2luZywgdGV4dEJveERhdGFNYXApOworICAgICAgICAgICAgaWYgKCFu
ZXdTZWdtZW50U3RhcnQgfHwgIW5ld1NlZ21lbnRTdGFydC0+bmV4dCgpKQorICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgQVNTRVJUKG5ld1NlZ21lbnRTdGFydC0+bV9zdGFydHNT
ZWdtZW50KTsKKyAgICAgICAgICAgIC8vIERpc2NhcmQgdGhlIGVtcHR5IHNlZ21lbnQgc3RhcnQg
bWFya2VyIGJpZGkgcnVucworICAgICAgICAgICAgc2VnbWVudFN0YXJ0ID0gbmV3U2VnbWVudFN0
YXJ0LT5uZXh0KCk7CisgICAgICAgIH0KKyAgICAgICAgbGluZUJveC0+ZW5kUGxhY2luZ0JveFJh
bmdlc0luSW5saW5lRGlyZWN0aW9uKHN0YXJ0TG9naWNhbExlZnQsIGVuZExvZ2ljYWxSaWdodCwg
bWluTG9naWNhbExlZnQsIG1heExvZ2ljYWxSaWdodCk7CisgICAgICAgIHJldHVybjsKICAgICB9
CiAjZW5kaWYKLSAgICBmbG9hdCBhdmFpbGFibGVMb2dpY2FsV2lkdGggPSBsb2dpY2FsUmlnaHQg
LSBsb2dpY2FsTGVmdDsKKyAgICBhdmFpbGFibGVMb2dpY2FsV2lkdGggPSBsaW5lTG9naWNhbFJp
Z2h0IC0gbGluZUxvZ2ljYWxMZWZ0OworICAgIGNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlv
bnNGb3JTZWdtZW50KGxpbmVCb3gsIGxpbmVJbmZvLCB0ZXh0QWxpZ24sIGxpbmVMb2dpY2FsTGVm
dCwgYXZhaWxhYmxlTG9naWNhbFdpZHRoLCBmaXJzdFJ1biwgIHRyYWlsaW5nU3BhY2VSdW4sIHRl
eHRCb3hEYXRhTWFwLCB2ZXJ0aWNhbFBvc2l0aW9uQ2FjaGUsIHdvcmRNZWFzdXJlbWVudHMpOwor
ICAgIC8vIFRoZSB3aWR0aHMgb2YgYWxsIHJ1bnMgYXJlIG5vdyBrbm93bi4gV2UgY2FuIG5vdyBw
bGFjZSBldmVyeSBpbmxpbmUgYm94IChhbmQKKyAgICAvLyBjb21wdXRlIGFjY3VyYXRlIHdpZHRo
cyBmb3IgdGhlIGlubGluZSBmbG93IGJveGVzKS4KKyAgICBuZWVkc1dvcmRTcGFjaW5nID0gZmFs
c2U7CisgICAgbGluZUJveC0+cGxhY2VCb3hlc0luSW5saW5lRGlyZWN0aW9uKGxpbmVMb2dpY2Fs
TGVmdCwgbmVlZHNXb3JkU3BhY2luZywgdGV4dEJveERhdGFNYXApOworfQogCitCaWRpUnVuKiBS
ZW5kZXJCbG9jazo6Y29tcHV0ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0ZvclNlZ21lbnQoUm9v
dElubGluZUJveCogbGluZUJveCwgY29uc3QgTGluZUluZm8mIGxpbmVJbmZvLCBFVGV4dEFsaWdu
IHRleHRBbGlnbiwgZmxvYXQmIGxvZ2ljYWxMZWZ0LAorICAgIGZsb2F0JiBhdmFpbGFibGVMb2dp
Y2FsV2lkdGgsIEJpZGlSdW4qIGZpcnN0UnVuLCBCaWRpUnVuKiB0cmFpbGluZ1NwYWNlUnVuLCBH
bHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcCYgdGV4dEJveERhdGFNYXAsIFZlcnRpY2Fs
UG9zaXRpb25DYWNoZSYgdmVydGljYWxQb3NpdGlvbkNhY2hlLAorICAgIFdvcmRNZWFzdXJlbWVu
dHMmIHdvcmRNZWFzdXJlbWVudHMpCit7CiAgICAgYm9vbCBuZWVkc1dvcmRTcGFjaW5nID0gZmFs
c2U7CiAgICAgZmxvYXQgdG90YWxMb2dpY2FsV2lkdGggPSBsaW5lQm94LT5nZXRGbG93U3BhY2lu
Z0xvZ2ljYWxXaWR0aCgpOwogICAgIHVuc2lnbmVkIGV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQg
PSAwOwpAQCAtOTAxLDcgKzk0OSwxMyBAQCB2b2lkIFJlbmRlckJsb2NrOjpjb21wdXRlSW5saW5l
RGlyZWN0aW9uUG9zaXRpb25zRm9yTGluZShSb290SW5saW5lQm94KiBsaW5lQm94LAogICAgIFZl
Y3Rvcjx1bnNpZ25lZCwgMTY+IGV4cGFuc2lvbk9wcG9ydHVuaXRpZXM7CiAgICAgUmVuZGVyT2Jq
ZWN0KiBwcmV2aW91c09iamVjdCA9IDA7CiAKLSAgICBmb3IgKEJpZGlSdW4qIHIgPSBmaXJzdFJ1
bjsgcjsgciA9IHItPm5leHQoKSkgeworICAgIEJpZGlSdW4qIHIgPSBmaXJzdFJ1bjsKKyAgICBm
b3IgKDsgcjsgciA9IHItPm5leHQoKSkgeworICAgICAgICAvLyBEbyBub3QgcGFzcyB0aGUgbWFy
a2VyIGZvciB0aGUgbmV4dCBzZWdtZW50CisjaWYgRU5BQkxFKENTU19FWENMVVNJT05TKQorICAg
ICAgICBpZiAoci0+bV9zdGFydHNTZWdtZW50KQorICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYK
ICAgICAgICAgaWYgKCFyLT5tX2JveCB8fCByLT5tX29iamVjdC0+aXNPdXRPZkZsb3dQb3NpdGlv
bmVkKCkgfHwgci0+bV9ib3gtPmlzTGluZUJyZWFrKCkpCiAgICAgICAgICAgICBjb250aW51ZTsg
Ly8gUG9zaXRpb25lZCBvYmplY3RzIGFyZSBvbmx5IHBhcnRpY2lwYXRpbmcgdG8gZmlndXJlIG91
dCB0aGVpcgogICAgICAgICAgICAgICAgICAgICAgIC8vIGNvcnJlY3Qgc3RhdGljIHggcG9zaXRp
b24uICBUaGV5IGhhdmUgbm8gZWZmZWN0IG9uIHRoZSB3aWR0aC4KQEAgLTk1MSwxMCArMTAwNSw3
IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlvbnNGb3JM
aW5lKFJvb3RJbmxpbmVCb3gqIGxpbmVCb3gsCiAKICAgICBjb21wdXRlRXhwYW5zaW9uRm9ySnVz
dGlmaWVkVGV4dChmaXJzdFJ1biwgdHJhaWxpbmdTcGFjZVJ1biwgZXhwYW5zaW9uT3Bwb3J0dW5p
dGllcywgZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudCwgdG90YWxMb2dpY2FsV2lkdGgsIGF2YWls
YWJsZUxvZ2ljYWxXaWR0aCk7CiAKLSAgICAvLyBUaGUgd2lkdGhzIG9mIGFsbCBydW5zIGFyZSBu
b3cga25vd24uICBXZSBjYW4gbm93IHBsYWNlIGV2ZXJ5IGlubGluZSBib3ggKGFuZAotICAgIC8v
IGNvbXB1dGUgYWNjdXJhdGUgd2lkdGhzIGZvciB0aGUgaW5saW5lIGZsb3cgYm94ZXMpLgotICAg
IG5lZWRzV29yZFNwYWNpbmcgPSBmYWxzZTsKLSAgICBsaW5lQm94LT5wbGFjZUJveGVzSW5Jbmxp
bmVEaXJlY3Rpb24obG9naWNhbExlZnQsIG5lZWRzV29yZFNwYWNpbmcsIHRleHRCb3hEYXRhTWFw
KTsKKyAgICByZXR1cm4gcjsKIH0KIAogdm9pZCBSZW5kZXJCbG9jazo6Y29tcHV0ZUJsb2NrRGly
ZWN0aW9uUG9zaXRpb25zRm9yTGluZShSb290SW5saW5lQm94KiBsaW5lQm94LCBCaWRpUnVuKiBm
aXJzdFJ1biwgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXAmIHRleHRCb3hEYXRhTWFw
LApAQCAtMTEwMSwxMyArMTE1MiwxMyBAQCBzdGF0aWMgaW5saW5lIEJpZGlTdGF0dXMgc3RhdHVz
V2l0aERpcmVjdGlvbihUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24sIGJvb2wgaQogfQogCiAv
LyBGSVhNRTogQmlkaVJlc29sdmVyIHNob3VsZCBoYXZlIHRoaXMgbG9naWMuCi1zdGF0aWMgaW5s
aW5lIHZvaWQgY29uc3RydWN0QmlkaVJ1bnMoSW5saW5lQmlkaVJlc29sdmVyJiB0b3BSZXNvbHZl
ciwgQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4mIGJpZGlSdW5zLCBjb25zdCBJbmxpbmVJdGVyYXRvciYg
ZW5kT2ZMaW5lLCBWaXN1YWxEaXJlY3Rpb25PdmVycmlkZSBvdmVycmlkZSwgYm9vbCBwcmV2aW91
c0xpbmVCcm9rZUNsZWFubHkpCitzdGF0aWMgaW5saW5lIHZvaWQgY29uc3RydWN0QmlkaVJ1bnNG
b3JTZWdtZW50KElubGluZUJpZGlSZXNvbHZlciYgdG9wUmVzb2x2ZXIsIEJpZGlSdW5MaXN0PEJp
ZGlSdW4+JiBiaWRpUnVucywgY29uc3QgSW5saW5lSXRlcmF0b3ImIGVuZE9mUnVucywgVmlzdWFs
RGlyZWN0aW9uT3ZlcnJpZGUgb3ZlcnJpZGUsIGJvb2wgcHJldmlvdXNMaW5lQnJva2VDbGVhbmx5
KQogewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcGFzcyBhIEJpZGlSdW5MaXN0IGludG8gY3Jl
YXRlQmlkaVJ1bnNGb3JMaW5lIGluc3RlYWQKICAgICAvLyBvZiB0aGUgcmVzb2x2ZXIgb3duaW5n
IHRoZSBydW5zLgogICAgIEFTU0VSVCgmdG9wUmVzb2x2ZXIucnVucygpID09ICZiaWRpUnVucyk7
CiAgICAgUmVuZGVyT2JqZWN0KiBjdXJyZW50Um9vdCA9IHRvcFJlc29sdmVyLnBvc2l0aW9uKCku
cm9vdCgpOwotICAgIHRvcFJlc29sdmVyLmNyZWF0ZUJpZGlSdW5zRm9yTGluZShlbmRPZkxpbmUs
IG92ZXJyaWRlLCBwcmV2aW91c0xpbmVCcm9rZUNsZWFubHkpOworICAgIHRvcFJlc29sdmVyLmNy
ZWF0ZUJpZGlSdW5zRm9yTGluZShlbmRPZlJ1bnMsIG92ZXJyaWRlLCBwcmV2aW91c0xpbmVCcm9r
ZUNsZWFubHkpOwogCiAgICAgd2hpbGUgKCF0b3BSZXNvbHZlci5pc29sYXRlZFJ1bnMoKS5pc0Vt
cHR5KCkpIHsKICAgICAgICAgLy8gSXQgZG9lcyBub3QgbWF0dGVyIHdoaWNoIG9yZGVyIHdlIHJl
c29sdmUgdGhlIHJ1bnMgYXMgbG9uZyBhcyB3ZSByZXNvbHZlIHRoZW0gYWxsLgpAQCAtMTE0Nyw3
ICsxMTk4LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGNvbnN0cnVjdEJpZGlSdW5zKElubGluZUJp
ZGlSZXNvbHZlciYgdG9wUmVzb2x2ZXIsIEJpZGlSdW5MaXMKICAgICAgICAgLy8gV2Ugc3RvcCBh
dCB0aGUgbmV4dCBlbmQgb2YgbGluZTsgd2UgbWF5IHJlLWVudGVyIHRoaXMgaXNvbGF0ZSBpbiB0
aGUgbmV4dCBjYWxsIHRvIGNvbnN0cnVjdEJpZGlSdW5zKCkuCiAgICAgICAgIC8vIEZJWE1FOiBX
aGF0IHNob3VsZCBlbmQgYW5kIHByZXZpb3VzTGluZUJyb2tlQ2xlYW5seSBiZT8KICAgICAgICAg
Ly8gcm5pd2Egc2F5cyBwcmV2aW91c0xpbmVCcm9rZUNsZWFubHkgaXMganVzdCBhIFdpbklFIGhh
Y2sgYW5kIGNvdWxkIGFsd2F5cyBiZSBmYWxzZSBoZXJlPwotICAgICAgICBpc29sYXRlZFJlc29s
dmVyLmNyZWF0ZUJpZGlSdW5zRm9yTGluZShlbmRPZkxpbmUsIE5vVmlzdWFsT3ZlcnJpZGUsIHBy
ZXZpb3VzTGluZUJyb2tlQ2xlYW5seSk7CisgICAgICAgIGlzb2xhdGVkUmVzb2x2ZXIuY3JlYXRl
QmlkaVJ1bnNGb3JMaW5lKGVuZE9mUnVucywgTm9WaXN1YWxPdmVycmlkZSwgcHJldmlvdXNMaW5l
QnJva2VDbGVhbmx5KTsKICAgICAgICAgLy8gTm90ZSB0aGF0IHdlIGRvIG5vdCBkZWxldGUgdGhl
IHJ1bnMgZnJvbSB0aGUgcmVzb2x2ZXIuCiAgICAgICAgIC8vIFdlJ3JlIG5vdCBndWFyYW50ZWVk
IHRvIGdldCBhbnkgQmlkaVJ1bnMgaW4gdGhlIHByZXZpb3VzIHN0ZXAuIElmIHdlIGRvbid0LCB3
ZSBhbGxvdyB0aGUgcGxhY2Vob2xkZXIKICAgICAgICAgLy8gaXRzZWxmIHRvIGJlIHR1cm5lZCBp
bnRvIGFuIElubGluZUJveC4gV2UgY2FuJ3QgcmVtb3ZlIGl0IGhlcmUgd2l0aG91dCBwb3RlbnRp
YWxseSBsb3NpbmcgdHJhY2sgb2YKQEAgLTExNjQsNiArMTIxNSwzOCBAQCBzdGF0aWMgaW5saW5l
IHZvaWQgY29uc3RydWN0QmlkaVJ1bnMoSW5saW5lQmlkaVJlc29sdmVyJiB0b3BSZXNvbHZlciwg
QmlkaVJ1bkxpcwogICAgIH0KIH0KIAorc3RhdGljIGlubGluZSB2b2lkIGNvbnN0cnVjdEJpZGlS
dW5zRm9yTGluZShjb25zdCBSZW5kZXJCbG9jayogYmxvY2ssIElubGluZUJpZGlSZXNvbHZlciYg
dG9wUmVzb2x2ZXIsIEJpZGlSdW5MaXN0PEJpZGlSdW4+JiBiaWRpUnVucywgY29uc3QgSW5saW5l
SXRlcmF0b3ImIGVuZE9mTGluZSwgVmlzdWFsRGlyZWN0aW9uT3ZlcnJpZGUgb3ZlcnJpZGUsIGJv
b2wgcHJldmlvdXNMaW5lQnJva2VDbGVhbmx5KQoreworI2lmICFFTkFCTEUoQ1NTX0VYQ0xVU0lP
TlMpCisgICAgVU5VU0VEX1BBUkFNKGJsb2NrKTsKKyAgICBjb25zdHJ1Y3RCaWRpUnVuc0ZvclNl
Z21lbnQodG9wUmVzb2x2ZXIsIGJpZGlSdW5zLCBlbmRPZkxpbmUsIG92ZXJyaWRlLCBwcmV2aW91
c0xpbmVCcm9rZUNsZWFubHkpOworI2Vsc2UKKyAgICBFeGNsdXNpb25TaGFwZUluc2lkZUluZm8q
IGV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbyA9IGxheW91dEV4Y2x1c2lvblNoYXBlSW5zaWRlSW5m
byhibG9jayk7CisgICAgaWYgKCFleGNsdXNpb25TaGFwZUluc2lkZUluZm8gfHwgIWV4Y2x1c2lv
blNoYXBlSW5zaWRlSW5mby0+aGFzU2VnbWVudHMoKSkgeworICAgICAgICBjb25zdHJ1Y3RCaWRp
UnVuc0ZvclNlZ21lbnQodG9wUmVzb2x2ZXIsIGJpZGlSdW5zLCBlbmRPZkxpbmUsIG92ZXJyaWRl
LCBwcmV2aW91c0xpbmVCcm9rZUNsZWFubHkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgY29uc3QgU2VnbWVudFJhbmdlTGlzdCYgc2VnbWVudFJhbmdlcyA9IGV4Y2x1c2lvblNoYXBl
SW5zaWRlSW5mby0+c2VnbWVudFJhbmdlcygpOworICAgIEFTU0VSVChzZWdtZW50UmFuZ2VzLnNp
emUoKSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNlZ21lbnRSYW5nZXMuc2l6ZSgp
OyBpKyspIHsKKyAgICAgICAgSW5saW5lSXRlcmF0b3Igc2VnbWVudFN0YXJ0ID0gc2VnbWVudFJh
bmdlc1tpXS5zdGFydDsKKyAgICAgICAgSW5saW5lSXRlcmF0b3Igc2VnbWVudEVuZCA9IHNlZ21l
bnRSYW5nZXNbaV0uZW5kOworICAgICAgICBpZiAoaSkgeworICAgICAgICAgICAgQVNTRVJUKHNl
Z21lbnRTdGFydC5tX29iaik7CisgICAgICAgICAgICBCaWRpUnVuKiBzZWdtZW50TWFya2VyID0g
Y3JlYXRlUnVuKHNlZ21lbnRTdGFydC5tX3Bvcywgc2VnbWVudFN0YXJ0Lm1fcG9zLCBzZWdtZW50
U3RhcnQubV9vYmosIHRvcFJlc29sdmVyKTsKKyAgICAgICAgICAgIHNlZ21lbnRNYXJrZXItPm1f
c3RhcnRzU2VnbWVudCA9IHRydWU7CisgICAgICAgICAgICBiaWRpUnVucy5hZGRSdW4oc2VnbWVu
dE1hcmtlcik7CisgICAgICAgICAgICAvLyBEbyBub3QgY29sbGFwc2UgbWlkcG9pbnRzIGJldHdl
ZW4gc2VnbWVudHMKKyAgICAgICAgICAgIHRvcFJlc29sdmVyLm1pZHBvaW50U3RhdGUoKS5iZXR3
ZWVuTWlkcG9pbnRzID0gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgdG9wUmVzb2x2ZXIuc2V0
UG9zaXRpb24oc2VnbWVudFN0YXJ0LCBudW1iZXJPZklzb2xhdGVBbmNlc3RvcnMoc2VnbWVudFN0
YXJ0KSk7CisgICAgICAgIGNvbnN0cnVjdEJpZGlSdW5zRm9yU2VnbWVudCh0b3BSZXNvbHZlciwg
YmlkaVJ1bnMsIHNlZ21lbnRFbmQsIG92ZXJyaWRlLCBwcmV2aW91c0xpbmVCcm9rZUNsZWFubHkp
OworICAgIH0KKyNlbmRpZgorfQorCiAvLyBUaGlzIGZ1bmN0aW9uIGNvbnN0cnVjdHMgbGluZSBi
b3hlcyBmb3IgYWxsIG9mIHRoZSB0ZXh0IHJ1bnMgaW4gdGhlIHJlc29sdmVyIGFuZCBjb21wdXRl
cyB0aGVpciBwb3NpdGlvbi4KIFJvb3RJbmxpbmVCb3gqIFJlbmRlckJsb2NrOjpjcmVhdGVMaW5l
Qm94ZXNGcm9tQmlkaVJ1bnMoQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4mIGJpZGlSdW5zLCBjb25zdCBJ
bmxpbmVJdGVyYXRvciYgZW5kLCBMaW5lSW5mbyYgbGluZUluZm8sIFZlcnRpY2FsUG9zaXRpb25D
YWNoZSYgdmVydGljYWxQb3NpdGlvbkNhY2hlLCBCaWRpUnVuKiB0cmFpbGluZ1NwYWNlUnVuLCBX
b3JkTWVhc3VyZW1lbnRzJiB3b3JkTWVhc3VyZW1lbnRzKQogewpAQCAtMTQ2MSw3ICsxNTQ0LDcg
QEAgdm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0UnVuc0FuZEZsb2F0c0luUmFuZ2UoTGluZUxheW91
dFN0YXRlJiBsYXlvdXRTdGF0ZSwgSW5saW4KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8v
IEZJWE1FOiBUaGlzIG93bmVyc2hpcCBpcyByZXZlcnNlZC4gV2Ugc2hvdWxkIG93biB0aGUgQmlk
aVJ1bkxpc3QgYW5kIHBhc3MgaXQgdG8gY3JlYXRlQmlkaVJ1bnNGb3JMaW5lLgogICAgICAgICAg
ICAgQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4mIGJpZGlSdW5zID0gcmVzb2x2ZXIucnVucygpOwotICAg
ICAgICAgICAgY29uc3RydWN0QmlkaVJ1bnMocmVzb2x2ZXIsIGJpZGlSdW5zLCBlbmQsIG92ZXJy
aWRlLCBsYXlvdXRTdGF0ZS5saW5lSW5mbygpLnByZXZpb3VzTGluZUJyb2tlQ2xlYW5seSgpKTsK
KyAgICAgICAgICAgIGNvbnN0cnVjdEJpZGlSdW5zRm9yTGluZSh0aGlzLCByZXNvbHZlciwgYmlk
aVJ1bnMsIGVuZCwgb3ZlcnJpZGUsIGxheW91dFN0YXRlLmxpbmVJbmZvKCkucHJldmlvdXNMaW5l
QnJva2VDbGVhbmx5KCkpOwogICAgICAgICAgICAgQVNTRVJUKHJlc29sdmVyLnBvc2l0aW9uKCkg
PT0gZW5kKTsKIAogICAgICAgICAgICAgQmlkaVJ1biogdHJhaWxpbmdTcGFjZVJ1biA9ICFsYXlv
dXRTdGF0ZS5saW5lSW5mbygpLnByZXZpb3VzTGluZUJyb2tlQ2xlYW5seSgpID8gaGFuZGxlVHJh
aWxpbmdTcGFjZXMoYmlkaVJ1bnMsIHJlc29sdmVyLmNvbnRleHQoKSkgOiAwOwpAQCAtMjMyMyw2
ICsyNDA2LDQ4IEBAIHZvaWQgUmVuZGVyQmxvY2s6OkxpbmVCcmVha2VyOjpyZXNldCgpCiAKIElu
bGluZUl0ZXJhdG9yIFJlbmRlckJsb2NrOjpMaW5lQnJlYWtlcjo6bmV4dExpbmVCcmVhayhJbmxp
bmVCaWRpUmVzb2x2ZXImIHJlc29sdmVyLCBMaW5lSW5mbyYgbGluZUluZm8sIFJlbmRlclRleHRJ
bmZvJiByZW5kZXJUZXh0SW5mbywgRmxvYXRpbmdPYmplY3QqIGxhc3RGbG9hdEZyb21QcmV2aW91
c0xpbmUsIHVuc2lnbmVkIGNvbnNlY3V0aXZlSHlwaGVuYXRlZExpbmVzLCBXb3JkTWVhc3VyZW1l
bnRzJiB3b3JkTWVhc3VyZW1lbnRzKQogeworI2lmICFFTkFCTEUoQ1NTX0VYQ0xVU0lPTlMpCisg
ICAgcmV0dXJuIG5leHRTZWdtZW50QnJlYWsocmVzb2x2ZXIsIGxpbmVJbmZvLCByZW5kZXJUZXh0
SW5mbywgbGFzdEZsb2F0RnJvbVByZXZpb3VzTGluZSwgY29uc2VjdXRpdmVIeXBoZW5hdGVkTGlu
ZXMsIHdvcmRNZWFzdXJlbWVudHMpOworI2Vsc2UKKyAgICBFeGNsdXNpb25TaGFwZUluc2lkZUlu
Zm8qIGV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbyA9IGxheW91dEV4Y2x1c2lvblNoYXBlSW5zaWRl
SW5mbyhtX2Jsb2NrKTsKKyAgICBpZiAoIWV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbyB8fCAhZXhj
bHVzaW9uU2hhcGVJbnNpZGVJbmZvLT5oYXNTZWdtZW50cygpKQorICAgICAgICByZXR1cm4gbmV4
dFNlZ21lbnRCcmVhayhyZXNvbHZlciwgbGluZUluZm8sIHJlbmRlclRleHRJbmZvLCBsYXN0Rmxv
YXRGcm9tUHJldmlvdXNMaW5lLCBjb25zZWN1dGl2ZUh5cGhlbmF0ZWRMaW5lcywgd29yZE1lYXN1
cmVtZW50cyk7CisKKyAgICBJbmxpbmVJdGVyYXRvciBlbmQgPSByZXNvbHZlci5wb3NpdGlvbigp
OworICAgIElubGluZUl0ZXJhdG9yIG9sZEVuZCA9IGVuZDsKKworICAgIGNvbnN0IFNlZ21lbnRM
aXN0JiBzZWdtZW50cyA9IGV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby0+c2VnbWVudHMoKTsKKyAg
ICBTZWdtZW50UmFuZ2VMaXN0JiBzZWdtZW50UmFuZ2VzID0gZXhjbHVzaW9uU2hhcGVJbnNpZGVJ
bmZvLT5zZWdtZW50UmFuZ2VzKCk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2Vn
bWVudHMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgSW5saW5lSXRlcmF0b3Igc2VnbWVudFN0YXJ0
ID0gcmVzb2x2ZXIucG9zaXRpb24oKTsKKyAgICAgICAgZW5kID0gbmV4dFNlZ21lbnRCcmVhayhy
ZXNvbHZlciwgbGluZUluZm8sIHJlbmRlclRleHRJbmZvLCBsYXN0RmxvYXRGcm9tUHJldmlvdXNM
aW5lLCBjb25zZWN1dGl2ZUh5cGhlbmF0ZWRMaW5lcywgd29yZE1lYXN1cmVtZW50cyk7CisKKyAg
ICAgICAgQVNTRVJUKHNlZ21lbnRSYW5nZXMuc2l6ZSgpID09IGkpOworICAgICAgICBpZiAocmVz
b2x2ZXIucG9zaXRpb24oKSA9PSBlbmQpIHsKKyAgICAgICAgICAgIC8vIE5vdGhpbmcgZml0IHRo
aXMgc2VnbWVudAorICAgICAgICAgICAgc2VnbWVudFJhbmdlcy5hcHBlbmQoTGluZVNlZ21lbnRS
YW5nZShzZWdtZW50U3RhcnQsIHNlZ21lbnRTdGFydCkpOworICAgICAgICAgICAgcmVzb2x2ZXIu
c2V0UG9zaXRpb25JZ25vcmluZ05lc3RlZElzb2xhdGVzKHNlZ21lbnRTdGFydCk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAvLyBOb3RlIHRoYXQgcmVzb2x2ZXIucG9zaXRpb24gaXMg
YWxyZWFkeSBza2lwcGluZyBzb21lIG9mIHRoZSB3aGl0ZSBzcGFjZSBhdCB0aGUgYmVnaW5uaW5n
IG9mIHRoZSBsaW5lLAorICAgICAgICAgICAgLy8gc28gdGhhdCdzIHdoeSBzZWdtZW50U3RhcnQg
bWlnaHQgYmUgZGlmZmVyZW50IHRoYW4gcmVzb2x2ZXIucG9zaXRpb24oKS4KKyAgICAgICAgICAg
IExpbmVTZWdtZW50UmFuZ2UgcmFuZ2UocmVzb2x2ZXIucG9zaXRpb24oKSwgZW5kKTsKKyAgICAg
ICAgICAgIHNlZ21lbnRSYW5nZXMuYXBwZW5kKHJhbmdlKTsKKyAgICAgICAgICAgIHJlc29sdmVy
LnNldFBvc2l0aW9uKGVuZCwgbnVtYmVyT2ZJc29sYXRlQW5jZXN0b3JzKGVuZCkpOworCisgICAg
ICAgICAgICBpZiAobGluZUluZm8ucHJldmlvdXNMaW5lQnJva2VDbGVhbmx5KCkpIHsKKyAgICAg
ICAgICAgICAgICAvLyBJZiB3ZSBoaXQgYSBuZXcgbGluZSBicmVhaywganVzdCBzdG9wIGFkZGlu
ZyBhbnl0aGluZyB0byB0aGlzIGxpbmUuCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmVzb2x2ZXIuc2V0UG9zaXRpb25JZ25vcmlu
Z05lc3RlZElzb2xhdGVzKG9sZEVuZCk7CisgICAgcmV0dXJuIGVuZDsKKyNlbmRpZgorfQorCitJ
bmxpbmVJdGVyYXRvciBSZW5kZXJCbG9jazo6TGluZUJyZWFrZXI6Om5leHRTZWdtZW50QnJlYWso
SW5saW5lQmlkaVJlc29sdmVyJiByZXNvbHZlciwgTGluZUluZm8mIGxpbmVJbmZvLCBSZW5kZXJU
ZXh0SW5mbyYgcmVuZGVyVGV4dEluZm8sIEZsb2F0aW5nT2JqZWN0KiBsYXN0RmxvYXRGcm9tUHJl
dmlvdXNMaW5lLCB1bnNpZ25lZCBjb25zZWN1dGl2ZUh5cGhlbmF0ZWRMaW5lcywgV29yZE1lYXN1
cmVtZW50cyYgd29yZE1lYXN1cmVtZW50cykKK3sKICAgICByZXNldCgpOwogCiAgICAgQVNTRVJU
KHJlc29sdmVyLnBvc2l0aW9uKCkucm9vdCgpID09IG1fYmxvY2spOwpAQCAtMjkwNCw2ICszMDI5
LDggQEAgSW5saW5lSXRlcmF0b3IgUmVuZGVyQmxvY2s6OkxpbmVCcmVha2VyOjpuZXh0TGluZUJy
ZWFrKElubGluZUJpZGlSZXNvbHZlciYgcmVzb2wKICAgICAgICAgfQogICAgIH0KIAorICAgIC8v
IEZJWE1FIEJ1ZyAxMDAwNDk6IFdlIGRvIG5vdCBuZWVkIHRvIGNvbnN1bWUgaW5wdXQgaW4gYSBt
dWx0aS1zZWdtZW50IGxpbmUKKyAgICAvLyB1bmxlc3Mgbm8gc2VnbWVudCB3aWxsLgogICAgIC8v
IG1ha2Ugc3VyZSB3ZSBjb25zdW1lIGF0IGxlYXN0IG9uZSBjaGFyL29iamVjdC4KICAgICBpZiAo
bEJyZWFrID09IHJlc29sdmVyLnBvc2l0aW9uKCkpCiAgICAgICAgIGxCcmVhay5pbmNyZW1lbnQo
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCA3OWE1ZmY2ZjEyNmE2NWY4YTMzZGVmOWVjNzdhOTdkOTE5ZWNkMjk3Li40Yzg3
MzcwNTAxZDYyMzQ1MDhmOTg5YjRhYzA5MDdmZTEzYWU4ZTE4IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIg
QEAKKzIwMTItMTEtMjkgIEJlYXIgVHJhdmlzICA8YmV0cmF2aXNAYWRvYmUuY29tPgorCisgICAg
ICAgIFtDU1MgRXhjbHVzaW9uc10gRW5hYmxlIHNoYXBlLWluc2lkZSBmb3IgbXVsdGlwbGUtc2Vn
bWVudCBwb2x5Z29ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTE4NzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGRpbmcgdGVzdHMgZm9yIG11bHRpcGxlIHNlZ21lbnQgcG9seWdvbnMuIFRoZXNlIHRl
c3RzIG1ha2Ugc3VyZSB0aGF0IHRleHQgY2FuIGJlCisgICAgICAgIHByb3Blcmx5IGJyb2tlbiB1
cCBpbnRvIG11bHRpcGxlIHNlZ21lbnRzIHBlciBsaW5lIHRvIGZpdCBpbnRvIGEgc2hhcGUtaW5z
aWRlLgorCisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNp
ZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAxLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNlZ21l
bnRzLTAwMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5z
aWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDItZXhwZWN0ZWQuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUt
bXVsdGlwbGUtc2VnbWVudHMtMDAyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXhjbHVz
aW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNlZ21lbnRzLTAwMy1leHBl
Y3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRl
L3NoYXBlLWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDMuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUtc2Vn
bWVudHMtMDA0LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXhjbHVzaW9u
cy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNlZ21lbnRzLTAwNC5odG1sOiBB
ZGRlZC4KKwogMjAxMi0xMS0yOCAgRGFuaWVsIEJhdGVzICA8ZGJhdGVzQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgW0Nocm9taXVtXSBMYXlvdXRUZXN0cy9mYXN0L2pzL3N0cmluZy1yZXBsYWNlbWVu
dC1vdXRvZm1lbW9yeS5odG1sIGNyYXNoZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZXhjbHVzaW9ucy9yZXNvdXJjZXMvbXVsdGktc2VnbWVudC1wb2x5Z29uLmpzIGIvTGF5b3V0VGVz
dHMvZmFzdC9leGNsdXNpb25zL3Jlc291cmNlcy9tdWx0aS1zZWdtZW50LXBvbHlnb24uanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODYzNDZlMTY4MTY3MDBlOTU3YjIyNDcwNWI1OTY1MGU2YzY2OTNmYQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9yZXNvdXJjZXMvbXVsdGkt
c2VnbWVudC1wb2x5Z29uLmpzCkBAIC0wLDAgKzEsMzcgQEAKK2Z1bmN0aW9uIGdlbmVyYXRlUG9s
eWdvbih3aWR0aCwgaGVpZ2h0LCBmb250U2l6ZSwgcG9pbnRzLCBjb250ZW50LCBlbGVtZW50SWQp
IHsKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgd2luZG93LmludGVybmFscy5z
ZXR0aW5ncy5zZXRDU1NFeGNsdXNpb25zRW5hYmxlZCh0cnVlKTsKKyAgICB2YXIgZGl2ID0gY3Jl
YXRlT3JJbnNlcnQoZWxlbWVudElkKTsKKyAgICB2YXIgcG9seWdvbiA9IHBvaW50cy5tYXAoZnVu
Y3Rpb24oZWxlbSwgaW5kZXgsIGFycmF5KSB7CisgICAgICAgIHJldHVybiBlbGVtLnRvU3RyaW5n
KCkgKyAncHgnICsgKGluZGV4IDwgYXJyYXkubGVuZ3RoIC0gMSAmJiBpbmRleCAlIDIgPT0gMSA/
ICcsJyA6ICcnKTsKKyAgICB9KS5qb2luKCcgJyk7CisgICAgcG9seWdvbiA9ICdwb2x5Z29uKCcg
KyBwb2x5Z29uICsgJyknOworICAgIGRpdi5zdHlsZS5zZXRQcm9wZXJ0eSgnLXdlYmtpdC1zaGFw
ZS1pbnNpZGUnLCBwb2x5Z29uKTsKKyAgICBkaXYuc3R5bGUuc2V0UHJvcGVydHkoJ3dpZHRoJywg
d2lkdGggKyAncHgnKTsKKyAgICBkaXYuc3R5bGUuc2V0UHJvcGVydHkoJ2hlaWdodCcsIGhlaWdo
dCArICdweCcpOworICAgIGRpdi5zdHlsZS5zZXRQcm9wZXJ0eSgnZm9udCcsIGZvbnRTaXplICsg
J3B4LzEgQWhlbSwgc2Fucy1zZXJpZicpOworICAgIGRpdi5zdHlsZS5zZXRQcm9wZXJ0eSgnY29s
b3InLCAnZ3JlZW4nKTsKKyAgICBkaXYuc3R5bGUuc2V0UHJvcGVydHkoJ3dvcmQtd3JhcCcsICdi
cmVhay13b3JkJyk7CisgICAgZGl2LmlubmVySFRNTCA9IGNvbnRlbnQ7Cit9CisKK2Z1bmN0aW9u
IHNpbXVsYXRlV2l0aFRleHQod2lkdGgsIGhlaWdodCwgZm9udFNpemUsIGNvbnRlbnQsIGVsZW1l
bnRJZCkgeworICAgIHZhciBkaXYgPSBjcmVhdGVPckluc2VydChlbGVtZW50SWQpOworICAgIGRp
di5zdHlsZS5zZXRQcm9wZXJ0eSgnd2lkdGgnLCB3aWR0aCArICdweCcpOworICAgIGRpdi5zdHls
ZS5zZXRQcm9wZXJ0eSgnaGVpZ2h0JywgaGVpZ2h0ICsgJ3B4Jyk7CisgICAgZGl2LnN0eWxlLnNl
dFByb3BlcnR5KCdmb250JywgZm9udFNpemUgKyAncHgvMSBBaGVtLCBzYW5zLXNlcmlmJyk7Cisg
ICAgZGl2LnN0eWxlLnNldFByb3BlcnR5KCdjb2xvcicsICdncmVlbicpOworICAgIGRpdi5pbm5l
ckhUTUwgPSBjb250ZW50OworfQorCitmdW5jdGlvbiBjcmVhdGVPckluc2VydChlbGVtZW50SWQp
IHsKKyAgICBpZiAoZWxlbWVudElkKQorICAgICAgICByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoZWxlbWVudElkKTsKKworICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnKTsKKyAgICBpZiAoZG9jdW1lbnQuYm9keS5jaGlsZE5vZGVzLmxlbmd0aCkKKyAgICAg
ICAgZG9jdWVtbnQuYm9keS5pbnNlcnRCZWZvcmUoZGl2LCBkb2N1bWVudC5ib2R5LmNoaWxkTm9k
ZXNbMF0pOworICAgIGVsc2UKKyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkaXYp
OworICAgIHJldHVybiBkaXY7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNp
ZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAxLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0w
MDEtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMTg5ZTNmNDI4Nzg0YWE1YzIyYWJlMzBlM2Uw
ZTZlNGNkNTUzYjVhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNp
b25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAxLWV4cGVj
dGVkLmh0bWwKQEAgLTAsMCArMSw5IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Jy4u
L3Jlc291cmNlcy9tdWx0aS1zZWdtZW50LXBvbHlnb24uanMnPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHkgb25sb2FkPSJzaW11bGF0ZVdpdGhUZXh0KDI1MCwgMTAwLCA1MCwgJ1hYIFhYIFhYWFhY
JykiPgorVGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBBaGVtIGZvbnQsIGFuZCBzaG91bGQgZGlzcGxh
eSBhIDV4MiBncmlkIG9mIGdyZWVuIHNxdWFyZXMsIHdpdGggb25lIG1pc3NpbmcgaW4gdGhlIGNl
bnRlciBvZiB0aGUgdG9wIHJvdy4KK0l0IHRlc3RzIHRoYXQgYSBsaW5lIG1heSBjb250YWluIG11
bHRpcGxlIHNlZ21lbnRzIG9mIHRleHQuCis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3No
YXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAxLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBs
ZS1zZWdtZW50cy0wMDEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYjZlNmUxZDg4YzdkZWRiOWUzZWRkMzMx
ZTM2MTZlZTA5N2ZiZmUzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNs
dXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAxLmh0
bWwKQEAgLTAsMCArMSw5IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Jy4uL3Jlc291
cmNlcy9tdWx0aS1zZWdtZW50LXBvbHlnb24uanMnPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkg
b25sb2FkPSJnZW5lcmF0ZVBvbHlnb24oMjUwLCAxMDAsIDUwLCBbMCwwLDEwMCwwLDEwMCwyNSwx
NTAsMjUsMTUwLDAsMjUwLDAsMjUwLDEwMCwwLDEwMF0sICdYWFhYWFhYWFgnKSI+CitUaGlzIHRl
c3QgcmVxdWlyZXMgdGhlIEFoZW0gZm9udCwgYW5kIHNob3VsZCBkaXNwbGF5IGEgNXgyIGdyaWQg
b2YgZ3JlZW4gc3F1YXJlcywgd2l0aCBvbmUgbWlzc2luZyBpbiB0aGUgY2VudGVyIG9mIHRoZSB0
b3Agcm93LgorSXQgdGVzdHMgdGhhdCBhIGxpbmUgbWF5IGNvbnRhaW4gbXVsdGlwbGUgc2VnbWVu
dHMgb2YgdGV4dC4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3No
YXBlLWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDItZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNl
Z21lbnRzLTAwMi1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE2YmRhZTJiYjhjYTE1MGE2OGRh
ZGI4M2NlMmM0MTI5N2Y4Y2VkMDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0w
MDItZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDkgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0nLi4vcmVzb3VyY2VzL211bHRpLXNlZ21lbnQtcG9seWdvbi5qcyc+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InNpbXVsYXRlV2l0aFRleHQoMjUwLCAxMDAsIDUwLCAnWFhY
WFggWFggWFgnKSI+CitUaGlzIHRlc3QgcmVxdWlyZXMgdGhlIEFoZW0gZm9udCwgYW5kIHNob3Vs
ZCBkaXNwbGF5IGEgNXgyIGdyaWQgb2YgZ3JlZW4gc3F1YXJlcywgd2l0aCBvbmUgbWlzc2luZyBp
biB0aGUgY2VudGVyIG9mIHRoZSBib3R0b20gcm93LgorSXQgdGVzdHMgdGhhdCBhIGxpbmUgbWF5
IGNvbnRhaW4gbXVsdGlwbGUgc2VnbWVudHMgb2YgdGV4dC4KKzwvYm9keT4KKzwvaHRtbD4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4
Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDIu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5z
aWRlLW11bHRpcGxlLXNlZ21lbnRzLTAwMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1MTFiNjlmZDcxNzI2
NjBhYmFkMjU0OTY5MzM3Yjk0ZWMzZTViYWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1zZWdt
ZW50cy0wMDIuaHRtbApAQCAtMCwwICsxLDkgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0nLi4vcmVzb3VyY2VzL211bHRpLXNlZ21lbnQtcG9seWdvbi5qcyc+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keSBvbmxvYWQ9ImdlbmVyYXRlUG9seWdvbigyNTAsIDEwMCwgNTAsIFswLDAsMjUw
LDAsMjUwLDEwMSwxNTAsMTAxLDE1MCw3NSwxMDAsNzUsMTAwLDEwMSwwLDEwMV0sICdYWFhYWFhY
WFgnKSI+CitUaGlzIHRlc3QgcmVxdWlyZXMgdGhlIEFoZW0gZm9udCwgYW5kIHNob3VsZCBkaXNw
bGF5IGEgNXgyIGdyaWQgb2YgZ3JlZW4gc3F1YXJlcywgd2l0aCBvbmUgbWlzc2luZyBpbiB0aGUg
Y2VudGVyIG9mIHRoZSBib3R0b20gcm93LgorSXQgdGVzdHMgdGhhdCBhIGxpbmUgbWF5IGNvbnRh
aW4gbXVsdGlwbGUgc2VnbWVudHMgb2YgdGV4dC4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lv
bnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDMtZXhwZWN0
ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUt
aW5zaWRlLW11bHRpcGxlLXNlZ21lbnRzLTAwMy1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1
NTFkNWNmMTlkZGE2MWNkY2FiNGNmNDJmMTNkNjJiMWY4NWVhNjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1t
dWx0aXBsZS1zZWdtZW50cy0wMDMtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDkgQEAKKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0nLi4vcmVzb3VyY2VzL211bHRpLXNlZ21lbnQtcG9seWdv
bi5qcyc+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InNpbXVsYXRlV2l0aFRleHQo
MjUwLCAxMDAsIDUwLCAnWFg8YnIvPlhYJykiPgorVGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBBaGVt
IGZvbnQsIGFuZCBzaG91bGQgZGlzcGxheSBhIDJ4MiBncmVlbiBzcXVhcmUuCitJdCB0ZXN0cyB0
aGF0IGEgbGluZSBicmVhayBtb3ZlcyB0ZXh0IGRvd24sIG5vdCBqdXN0IHRvIHRoZSBuZXh0IHNl
Z21lbnQuCis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1p
bnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1
c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDMuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kNTE1OTgyODIwZDBlYTJmMzM1MjUxZWYzNDc0ZGE0MDEyMDNlNjg5Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lk
ZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAzLmh0bWwKQEAgLTAsMCArMSw5IEBA
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Jy4uL3Jlc291cmNlcy9tdWx0aS1zZWdtZW50
LXBvbHlnb24uanMnPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJnZW5lcmF0ZVBv
bHlnb24oMjUwLCAxMDAsIDUwLCBbMCwwLDEwMCwwLDEwMCwyNSwxNTAsMjUsMTUwLDAsMjUwLDAs
MjUwLDEwMCwwLDEwMF0sICdYWDxici8+WFgnKSI+CitUaGlzIHRlc3QgcmVxdWlyZXMgdGhlIEFo
ZW0gZm9udCwgYW5kIHNob3VsZCBkaXNwbGF5IGEgMngyIGdyZWVuIHNxdWFyZS4KK0l0IHRlc3Rz
IHRoYXQgYSBsaW5lIGJyZWFrIG1vdmVzIHRleHQgZG93biwgbm90IGp1c3QgdG8gdGhlIG5leHQg
c2VnbWVudC4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBl
LWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNlZ21l
bnRzLTAwNC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZiZDU4ZDI1YjRkZjk0MTkwNjJlMjY3
ZGJlM2Q1MWMzNjBjZGMwOWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V4
Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDQt
ZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDI4IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9Jy4uL3Jlc291cmNlcy9tdWx0aS1zZWdtZW50LXBvbHlnb24uanMnPjwvc2NyaXB0PgorPHNj
cmlwdD4KKyAgICB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHNpbXVsYXRl
V2l0aFRleHQoMjUwLCAxMDAsIDEwMCwgIlg8c3BhbiBzdHlsZT0nZm9udC1zaXplOi41ZW0nPiA8
L3NwYW4+WCIsICdzaGFwZTEnKTsKKyAgICAgICAgc2ltdWxhdGVXaXRoVGV4dCgyNTAsIDEwMCwg
NTAsICI8c3BhbiBzdHlsZT0nZm9udC1zaXplOjJlbSc+WDwvc3Bhbj4gWFgiLCAnc2hhcGUyJyk7
CisgICAgICAgIHNpbXVsYXRlV2l0aFRleHQoMjUwLCAxMDAsIDUwLCAiWFggPHNwYW4gc3R5bGU9
J2ZvbnQtc2l6ZToyZW0nPlg8L3NwYW4+IiwgJ3NoYXBlMycpOworICAgIH0KKzwvc2NyaXB0Pgor
PHN0eWxlPgorICAgICNzaGFwZTEsICNzaGFwZTIsICNzaGFwZTMgeworICAgICAgICBtYXJnaW46
IDEwcHggMDsKKyAgICAgICAgdmVydGljYWwtYWxpZ246IGJvdHRvbTsKKyAgICB9Cis8L3N0eWxl
PgorPC9oZWFkPgorPGJvZHk+CisgICAgVGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBBaGVtIGZvbnQs
IGFuZCB0ZXN0cyBzaG91bGQgYWxsIGRpc3BsYXkgb24gYSA1eDIgZ3JpZCBvZiBncmVlbgorICAg
IHNxdWFyZXMuIFRoZXNlIHRlc3RzIGNoZWNrIHRoZSBpbnRlcmFjdGlvbiBvZiBzaGFwZS1pbnNp
ZGUgd2l0aCBzcGFucy4KKyAgICA8ZGl2IGlkPSdzaGFwZTEnPjwvZGl2PgorICAgIFRoaXMgdGVz
dCBzaG91bGQgZGlzcGxheSB0d28gMngyIGdyZWVuIHNxdWFyZXMsIHNlcGFyYXRlZCBieSBhIDEg
dW5pdCBzcGFjZS4KKyAgICA8ZGl2IGlkPSdzaGFwZTInPjwvZGl2PgorICAgIFRoaXMgdGVzdCBz
aG91bGQgZGlzcGxheSBhIDJ4MiBncmVlbiBzcXVhcmUsIGFuZCBhIDJ4MSByZWN0YW5nbGUgc2Vw
YXJhdGVkIGJ5IGEgMSB1bml0IHNwYWNlLgorICAgIDxkaXYgaWQ9J3NoYXBlMyc+PC9kaXY+Cisg
ICAgVGhpcyB0ZXN0IHNob3VsZCBkaXNwbGF5IGEgMngxIGdyZWVuIHJlY3RhbmdsZSwgYW5kIGEg
MngyIHNxdWFyZSBzZXBhcmF0ZWQgYnkgYSAxIHVuaXQgc3BhY2UuCis8L2JvZHk+Cis8L2h0bWw+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMt
MDA0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBl
LWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40M2Y1OTJiZGYx
NDI0MzJhYTY1YWY5ZjJkMTNjODgxZWJmODQxNTkwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUt
c2VnbWVudHMtMDA0Lmh0bWwKQEAgLTAsMCArMSwyOSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgc3JjPScuLi9yZXNvdXJjZXMvbXVsdGktc2VnbWVudC1wb2x5Z29uLmpzJz48L3NjcmlwdD4K
KzxzY3JpcHQ+CisgICAgd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIg
cG9seWdvbiA9IFswLDAsMTAwLDAsMTAwLDI1LDE1MCwyNSwxNTAsMCwyNTAsMCwyNTAsMTAwLDAs
MTAwXTsKKyAgICAgICAgZ2VuZXJhdGVQb2x5Z29uKDI1MCwgMTAwLCA1MCwgcG9seWdvbiwgIjxz
cGFuIHN0eWxlPSdmb250LXNpemU6MmVtJz5YWDwvc3Bhbj4iLCAnc2hhcGUxJyk7CisgICAgICAg
IGdlbmVyYXRlUG9seWdvbigyNTAsIDEwMCwgNTAsIHBvbHlnb24sICI8c3BhbiBzdHlsZT0nZm9u
dC1zaXplOjJlbSc+WDwvc3Bhbj5YWCIsICdzaGFwZTInKTsKKyAgICAgICAgZ2VuZXJhdGVQb2x5
Z29uKDI1MCwgMTAwLCA1MCwgcG9seWdvbiwgIlhYPHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToyZW0n
Plg8L3NwYW4+IiwgJ3NoYXBlMycpOworICAgIH0KKzwvc2NyaXB0PgorPHN0eWxlPgorICAgICNz
aGFwZTEsICNzaGFwZTIsICNzaGFwZTMgeworICAgICAgICBtYXJnaW46IDEwcHggMDsKKyAgICAg
ICAgdmVydGljYWwtYWxpZ246IGJvdHRvbTsKKyAgICB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJv
ZHk+CisgICAgVGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBBaGVtIGZvbnQsIGFuZCB0ZXN0cyBzaG91
bGQgYWxsIGRpc3BsYXkgb24gYSA1eDIgZ3JpZCBvZiBncmVlbgorICAgIHNxdWFyZXMuIFRoZXNl
IHRlc3RzIGNoZWNrIHRoZSBpbnRlcmFjdGlvbiBvZiBzaGFwZS1pbnNpZGUgd2l0aCBzcGFucy4K
KyAgICA8ZGl2IGlkPSdzaGFwZTEnPjwvZGl2PgorICAgIFRoaXMgdGVzdCBzaG91bGQgZGlzcGxh
eSB0d28gMngyIGdyZWVuIHNxdWFyZXMsIHNlcGFyYXRlZCBieSBhIDEgdW5pdCBzcGFjZS4KKyAg
ICA8ZGl2IGlkPSdzaGFwZTInPjwvZGl2PgorICAgIFRoaXMgdGVzdCBzaG91bGQgZGlzcGxheSBh
IDJ4MiBncmVlbiBzcXVhcmUsIGFuZCBhIDJ4MSByZWN0YW5nbGUgc2VwYXJhdGVkIGJ5IGEgMSB1
bml0IHNwYWNlLgorICAgIDxkaXYgaWQ9J3NoYXBlMyc+PC9kaXY+CisgICAgVGhpcyB0ZXN0IHNo
b3VsZCBkaXNwbGF5IGEgMngxIGdyZWVuIHJlY3RhbmdsZSwgYW5kIGEgMngyIHNxdWFyZSBzZXBh
cmF0ZWQgYnkgYSAxIHVuaXQgc3BhY2UuCis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177374</attachid>
            <date>2012-12-03 16:56:18 -0800</date>
            <delta_ts>2012-12-05 12:18:25 -0800</delta_ts>
            <desc>Updating patch</desc>
            <filename>bug-91878-20121203165344.patch</filename>
            <type>text/plain</type>
            <size>45174</size>
            <attacher name="Bear Travis">betravis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NDQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWJmN2JkM2ZmNWIyZDMz
NDMyMzIzNTBmOTQyNjNkYjY5OWFlNWEzMC4uMDBiY2M2MDA3MzYxNjY0MTFmZjYzNmE1ODQ3OGYy
YmFkZDQzNGY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDEyLTEyLTAzICBCZWFy
IFRyYXZpcyAgPGJldHJhdmlzQGFkb2JlLmNvbT4KKworICAgICAgICBbQ1NTIEV4Y2x1c2lvbnNd
IEVuYWJsZSBzaGFwZS1pbnNpZGUgZm9yIG11bHRpcGxlLXNlZ21lbnQgcG9seWdvbnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxODc4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGF0Y2ggYWRkaW5nIHN1
cHBvcnQgZm9yIG11bHRpcGxlLXNlZ21lbnQgcG9seWdvbnMgZm9yIHNoYXBlLWluc2lkZXMgZnJv
bQorICAgICAgICB0aGUgQ1NTIEV4Y2x1c2lvbnMgc3BlY2lmaWNhdGlvbi4gVGhlIGxheW91dCBj
b2RlIGhhcyBiZWVuIG1vZGlmaWVkIHRvIGZpcnN0CisgICAgICAgIHN1cHBvcnQgZGl2aWRpbmcg
dGV4dCBpbnRvIG11bHRpcGxlIHNlZ21lbnRzIHBlciBsaW5lLCBhbmQgdGhlbiB0byBsYXkgb3V0
CisgICAgICAgIG11bHRpcGxlIHNlZ21lbnRzIHBlciBsaW5lIGJveC4KKworICAgICAgICBUZXN0
czogIGZhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNl
Z21lbnRzLTAwMS5odG1sCisgICAgICAgICAgICAgICAgZmFzdC9leGNsdXNpb25zL3NoYXBlLWlu
c2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAyLmh0bWwKKyAgICAgICAgICAg
ICAgICBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1z
ZWdtZW50cy0wMDMuaHRtbAorICAgICAgICAgICAgICAgIGZhc3QvZXhjbHVzaW9ucy9zaGFwZS1p
bnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNlZ21lbnRzLTAwNC5odG1sCisKKyAgICAgICAg
KiBwbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oOgorICAgICAgICAoV2ViQ29yZTo6QmlkaUNo
YXJhY3RlclJ1bjo6QmlkaUNoYXJhY3RlclJ1bik6CisgICAgICAgIChCaWRpQ2hhcmFjdGVyUnVu
KTogQWRkZWQgYSAnc3RhcnRzU2VnbWVudCcgYml0ZmllbGQgdG8gdHJhY2sgd2hldGhlciBhCisg
ICAgICAgIHJ1biBiZWdpbnMgYSBuZXcgc2VnbWVudC4gVGhlIGZpZWxkIGlzIGhlcmUsIHJhdGhl
ciB0aGFuIGluIEJpZGlSdW4sIGluCisgICAgICAgIG9yZGVyIHRvIHNhdmUgc3BhY2UuIFNlZSBC
dWcgMTAwMTczLgorICAgICAgICAqIHJlbmRlcmluZy9CaWRpUnVuLmg6CisgICAgICAgIChXZWJD
b3JlOjpCaWRpUnVuOjpCaWRpUnVuKToKKyAgICAgICAgKEJpZGlSdW4pOiBTZXQgdGhlIGluaXRp
YWwgdmFsdWUgZm9yICdzdGFydHNTZWdtZW50Jy4KKyAgICAgICAgKiByZW5kZXJpbmcvRXhjbHVz
aW9uU2hhcGVJbnNpZGVJbmZvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4Y2x1c2lvblNoYXBl
SW5zaWRlSW5mbzo6Y29tcHV0ZVNlZ21lbnRzRm9yTGluZSk6IENsZWFyIHRoZQorICAgICAgICBz
ZWdtZW50IHJhbmdlcyB3aGVuIGNvbXB1dGluZyBzZWdtZW50cyBmb3IgYSBuZXcgbGluZS4KKyAg
ICAgICAgKiByZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLmg6CisgICAgICAgIChM
aW5lU2VnbWVudFJhbmdlKTogQWRkZWQgYSBuZXcgdHlwZSB0byB0cmFjayBzZWdtZW50IG9mZnNl
dHMuCisgICAgICAgIChXZWJDb3JlOjpFeGNsdXNpb25TaGFwZUluc2lkZUluZm86OnNlZ21lbnRS
YW5nZXMpOiBBZGRlZCBhIGdldHRlciBmb3IKKyAgICAgICAgdGhlIGxpbmUgc2VnbWVudCByYW5n
ZXMgdmVjdG9yLgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OnBsYWNlQm94ZXNJbklubGluZURpcmVjdGlvbik6
IE1vZGlmaWVkIHRvIGNhbGwKKyAgICAgICAgYSByZWZhY3RvcmVkIGJveCBwbGFjZW1lbnQgYWxn
b3JpdGhtIHRoYXQgdGFrZXMgYSBiZWdpbm5pbmcgYW5kIGVuZCBwb3NpdGlvbi4KKyAgICAgICAg
KFdlYkNvcmU6OklubGluZUZsb3dCb3g6OnBsYWNlQm94UmFuZ2VJbklubGluZURpcmVjdGlvbik6
IFNpbWlsYXIgdG8gdGhlCisgICAgICAgIHBsYWNlQm94ZXMgbWV0aG9kLCBidXQgdGFrZXMgYW4g
ZW5kIHBvc2l0aW9uIHRoYXQgbWF5IG9jY3VyIGJlZm9yZSB0aGUgZW5kCisgICAgICAgIG9mIHRo
ZSBsaW5lLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCbG9jazo6ZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvKTogRmFjdG9yZWQg
b3V0IGNhbGxzCisgICAgICAgIHRvIEV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbyB0byB0aGUgLmNw
cCBmaWxlLCBhcyBFeGNsdXNpb25TaGFwZUluc2lkZUluZm8KKyAgICAgICAgcmVxdWlyZXMgSW5s
aW5lSXRlcmF0b3IuaCwgd2hpY2ggd291bGQgY3JlYXRlIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSBp
bgorICAgICAgICBFeGNsdXNpb25TaGFwZUluc2lkZUluZm8uaC4KKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQmxvY2suaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpleGNsdXNp
b25TaGFwZUluc2lkZUluZm8pOiBNb2RpZmllZCB0byBjYWxsCisgICAgICAgIGV4Y2x1c2lvblNo
YXBlSW5zaWRlSW5mbyB0byBiZSBub24taW5saW5lLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJCbG9ja0xpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGluZVdpZHRoOjpMaW5l
V2lkdGgpOiBMaW5lV2lkdGggbm93IHVzZXMgdGhlIG51bWJlciBvZiBjb21wdXRlZAorICAgICAg
ICBzZWdtZW50UmFuZ2VzIHRvIGRldGVybWluZSB3aGljaCBMaW5lU2VnbWVudCB0byB1c2Ugd2hl
biBjYWxjdWxhdGluZyB3aWR0aC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjcmVh
dGVMaW5lQm94ZXMpOiBOb3cgdGFrZXMgYSBib29sZWFuIHRvIGRldGVybWluZQorICAgICAgICB3
aGV0aGVyIG9yIG5vdCBpdCBjYW4gc2hhcmUgdGhlIHNhbWUgcGFyZW50Qm94IGFzIGl0cyBzaWJs
aW5ncyAoc2VnbWVudHMKKyAgICAgICAgbXVzdCBiZSBhYmxlIHRvIHBvc2l0aW9uIHRoZW1zZWx2
ZXMgc2VwYXJhdGVseSBpbiB0aGUgUm9vdElubGluZUJveCkuCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9jazo6Y29uc3RydWN0TGluZSk6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlRXhw
YW5zaW9uRm9ySnVzdGlmaWVkVGV4dCk6IERvIGluY2x1ZGUgcnVucyB0aGF0IHN0YXJ0IG5ldwor
ICAgICAgICBzZWdtZW50cyB3aGVuIGNhbGN1bGF0aW5nIGp1c3RpZmljYXRpb24gZm9yIHRoZSBj
dXJyZW50IHNlZ21lbnQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y29tcHV0ZUlu
bGluZURpcmVjdGlvblBvc2l0aW9uc0ZvckxpbmUpOiBNb2RpZmllZCB0bworICAgICAgICB1c2Ug
dGhlIGNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlvbnNGb3JTZWdtZW50LCB3aGljaCBjYW4g
cG9zaXRpb24KKyAgICAgICAgbXVsdGlwbGUgc2VnbWVudHMgb2YgdGV4dCBwZXIgbGluZS4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjb21wdXRlSW5saW5lRGlyZWN0aW9uUG9zaXRp
b25zRm9yU2VnbWVudCk6IFBvc2l0aW9ucworICAgICAgICB0aGUgZ2l2ZW4gc2VnbWVudCBvZiB0
ZXh0IGFuZCBjYWxjdWxhdGVzIGl0cyBsYXlvdXQgb2Zmc2V0cy4KKyAgICAgICAgKFdlYkNvcmU6
OmNvbnN0cnVjdEJpZGlSdW5zKTogTW9kaWZpZWQgc29tZSB2YXJpYWJsZXMgZnJvbSAnZW5kT2ZM
aW5lJyB0byAnZW5kT2ZTZWdtZW50Jy4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEJpZGlS
dW5zRm9yTGluZSk6IENvbnN0cnVjdCB0aGUgYmlkaSBydW5zIGZvciBlYWNoIHNlZ21lbnQgaW4K
KyAgICAgICAgdGhlIGdpdmVuIGxpbmUuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6
bGF5b3V0UnVuc0FuZEZsb2F0c0luUmFuZ2UpOiBDYWxsIGNvbnN0cnVjdEJpZGlSdW5zRm9yTGlu
ZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpMaW5lQnJlYWtlcjo6bmV4dExpbmVC
cmVhayk6IE1vdmVkIHRoZSBsaW5lIGJyZWFraW5nIGNvZGUKKyAgICAgICAgdG8gYnJlYWsgc2Vn
bWVudHMsIHdpdGggbmV4dExpbmVCcmVhayBpdGVyYXRpbmcgb3ZlciBzZWdtZW50IGJyZWFrcyBm
b3IgdGhlIGVudGlyZSBsaW5lLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OkxpbmVC
cmVha2VyOjpuZXh0U2VnbWVudEJyZWFrKTogQ2FsY3VsYXRlcyBob3cgbXVjaCB0ZXh0IGEKKyAg
ICAgICAgc2VnbWVudCBjYW4gaG9sZC4gVGhpcyBjb2RlIHdhcyBvcmlnaW5hbGx5IGluIG5leHRM
aW5lQnJlYWsuCisKIDIwMTItMTEtMzAgIEphbWVzIFNpbW9uc2VuICA8c2ltb25qYW1AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFtSZXNvdXJjZSBUaW1pbmddIFJlY29yZCBhbmQgcmVwb3J0IGlu
aXRpYXRvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpUmVz
b2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaVJlc29sdmVyLmgKaW5k
ZXggYzhlMjc2Yzk5ZDQ1OTZlNDlkNTFiZjBjN2JkNzJlYjNlMTQ1MTg3Mi4uMTdiODAyNDhiNmIx
NzkxYTNhMDE2YTg5MmZkMjc5OWFmOGYyMWU0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9CaWRpUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L0JpZGlSZXNvbHZlci5oCkBAIC0xNDcsOCArMTQ3LDExIEBAIHN0cnVjdCBCaWRpQ2hh
cmFjdGVyUnVuIHsKICAgICB2b2lkIHNldE5leHQoQmlkaUNoYXJhY3RlclJ1biogbmV4dCkgeyBt
X25leHQgPSBuZXh0OyB9CiAKICAgICAvLyBEbyBub3QgYWRkIGFueXRoaW5nIGFwYXJ0IGZyb20g
Yml0ZmllbGRzIHVudGlsIGFmdGVyIG1fbmV4dC4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDAxNzMKLSAgICBib29sIG1fb3ZlcnJpZGU6MTsKLSAgICBib29s
IG1faGFzSHlwaGVuOjE7IC8vIFVzZWQgYnkgQmlkaVJ1biBzdWJjbGFzcyB3aGljaCBpcyBhIGxh
eWVyaW5nIHZpb2xhdGlvbiBidXQgZW5hYmxlcyB1cyB0byBzYXZlIDggYnl0ZXMgcGVyIG9iamVj
dCBvbiA2NC1iaXQuCisgICAgYm9vbCBtX292ZXJyaWRlIDogMTsKKyAgICBib29sIG1faGFzSHlw
aGVuIDogMTsgLy8gVXNlZCBieSBCaWRpUnVuIHN1YmNsYXNzIHdoaWNoIGlzIGEgbGF5ZXJpbmcg
dmlvbGF0aW9uIGJ1dCBlbmFibGVzIHVzIHRvIHNhdmUgOCBieXRlcyBwZXIgb2JqZWN0IG9uIDY0
LWJpdC4KKyNpZiBFTkFCTEUoQ1NTX0VYQ0xVU0lPTlMpCisgICAgYm9vbCBtX3N0YXJ0c1NlZ21l
bnQgOiAxOyAvLyBTYW1lIGNvbW1lbnQgYXMgbV9oYXNIeXBoZW4uCisjZW5kaWYKICAgICB1bnNp
Z25lZCBjaGFyIG1fbGV2ZWw7CiAgICAgQmlkaUNoYXJhY3RlclJ1biogbV9uZXh0OwogICAgIGlu
dCBtX3N0YXJ0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0JpZGlSdW4u
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9CaWRpUnVuLmgKaW5kZXggNjk0Y2JjYTc3NjNi
ZDBlMjhjZjQ4ZDFhYmUwMmY2YTEwYzAxZGRhNS4uNzZjZTRiNjkxMTgzNjI4ZGIwNjRmYzRkN2M0
ODhiNjQ0YmZkMzdiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0JpZGlS
dW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQmlkaVJ1bi5oCkBAIC0zOSw3ICsz
OSwxMSBAQCBzdHJ1Y3QgQmlkaVJ1biA6IEJpZGlDaGFyYWN0ZXJSdW4gewogICAgICAgICAsIG1f
b2JqZWN0KG9iamVjdCkKICAgICAgICAgLCBtX2JveCgwKQogICAgIHsKLSAgICAgICAgbV9oYXNI
eXBoZW4gPSBmYWxzZTsgLy8gU3RvcmVkIGluIGJhc2UgY2xhc3MgdG8gc2F2ZSBzcGFjZS4KKyAg
ICAgICAgLy8gU3RvcmVkIGluIGJhc2UgY2xhc3MgdG8gc2F2ZSBzcGFjZS4KKyAgICAgICAgbV9o
YXNIeXBoZW4gPSBmYWxzZTsKKyNpZiBFTkFCTEUoQ1NTX0VYQ0xVU0lPTlMpCisgICAgICAgIG1f
c3RhcnRzU2VnbWVudCA9IGZhbHNlOworI2VuZGlmCiAgICAgfQogCiAgICAgdm9pZCBkZXN0cm95
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGVJ
bnNpZGVJbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25TaGFwZUlu
c2lkZUluZm8uY3BwCmluZGV4IDkzNGUzZjI5OWY0MDNhNDEwZDZmNTg2OWI0NjY3NGZhZWYzMzIy
YTYuLjJiNjdjMTM4OTJjYTM2M2Q0MzE3N2RhN2MyNzJjYTExYWUyNjFiYjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25TaGFwZUluc2lkZUluZm8uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25TaGFwZUluc2lkZUluZm8uY3Bw
CkBAIC0xMDksNiArMTA5LDcgQEAgYm9vbCBFeGNsdXNpb25TaGFwZUluc2lkZUluZm86OmNvbXB1
dGVTZWdtZW50c0ZvckxpbmUoTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXQKICAgICBtX2xpbmVU
b3AgPSBsaW5lVG9wOwogICAgIG1fbGluZUhlaWdodCA9IGxpbmVIZWlnaHQ7CiAgICAgbV9zZWdt
ZW50cy5jbGVhcigpOworICAgIG1fc2VnbWVudFJhbmdlcy5jbGVhcigpOwogCiAgICAgaWYgKGxp
bmVPdmVybGFwc1NoYXBlQm91bmRzKCkpIHsKICAgICAgICAgQVNTRVJUKG1fc2hhcGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlSW5zaWRlSW5m
by5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby5o
CmluZGV4IDhiZTExNGQ0YjJjYTNjMDFhMWQ0Mjc4M2RlOGZmZDliYTc4MWUxM2MuLjg0YTZiYTJi
M2NmODQ4MTM4ZDNkZjY4Y2FmNjZjNmQwNzcxNmJjNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9FeGNsdXNpb25TaGFwZUluc2lkZUluZm8uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLmgKQEAgLTM0LDYgKzM0LDcg
QEAKIAogI2luY2x1ZGUgIkV4Y2x1c2lvblNoYXBlLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0Lmgi
CisjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3IuaCIKICNpbmNsdWRlICJMYXlvdXRVbml0LmgiCiAj
aW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CkBAIC00
Myw2ICs0NCwxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlckJsb2NrOwog
CitzdHJ1Y3QgTGluZVNlZ21lbnRSYW5nZSB7CisgICAgSW5saW5lSXRlcmF0b3Igc3RhcnQ7Cisg
ICAgSW5saW5lSXRlcmF0b3IgZW5kOworICAgIExpbmVTZWdtZW50UmFuZ2UoSW5saW5lSXRlcmF0
b3Igc3RhcnQsIElubGluZUl0ZXJhdG9yIGVuZCkKKyAgICAgICAgOiBzdGFydChzdGFydCkKKyAg
ICAgICAgLCBlbmQoZW5kKQorICAgIHsKKyAgICB9Cit9OwordHlwZWRlZiBWZWN0b3I8TGluZVNl
Z21lbnRSYW5nZT4gU2VnbWVudFJhbmdlTGlzdDsKKwogY2xhc3MgRXhjbHVzaW9uU2hhcGVJbnNp
ZGVJbmZvIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTY3LDYg
Kzc5LDE1IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKGhhc1NlZ21lbnRzKCkpOwogICAgICAg
ICByZXR1cm4gbV9zZWdtZW50czsKICAgICB9CisgICAgU2VnbWVudFJhbmdlTGlzdCYgc2VnbWVu
dFJhbmdlcygpIHsgcmV0dXJuIG1fc2VnbWVudFJhbmdlczsgfQorICAgIGNvbnN0IFNlZ21lbnRS
YW5nZUxpc3QmIHNlZ21lbnRSYW5nZXMoKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnRSYW5nZXM7
IH0KKyAgICBjb25zdCBMaW5lU2VnbWVudCogY3VycmVudFNlZ21lbnQoKSBjb25zdAorICAgIHsK
KyAgICAgICAgaWYgKCFoYXNTZWdtZW50cygpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIEFTU0VSVChtX3NlZ21lbnRSYW5nZXMuc2l6ZSgpIDwgbV9zZWdtZW50cy5zaXplKCkpOwor
ICAgICAgICByZXR1cm4gJm1fc2VnbWVudHNbbV9zZWdtZW50UmFuZ2VzLnNpemUoKV07CisgICAg
fQogICAgIGJvb2wgY29tcHV0ZVNlZ21lbnRzRm9yTGluZShMYXlvdXRVbml0IGxpbmVUb3AsIExh
eW91dFVuaXQgbGluZUhlaWdodCk7CiAgICAgdm9pZCBjb21wdXRlU2hhcGVTaXplKExheW91dFVu
aXQgbG9naWNhbFdpZHRoLCBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQpOwogICAgIHZvaWQgZGly
dHlTaGFwZVNpemUoKSB7IG1fc2hhcGVTaXplRGlydHkgPSB0cnVlOyB9CkBAIC05Nyw2ICsxMTgs
NyBAQCBwcml2YXRlOgogICAgIExheW91dFVuaXQgbV9sb2dpY2FsSGVpZ2h0OwogCiAgICAgU2Vn
bWVudExpc3QgbV9zZWdtZW50czsKKyAgICBTZWdtZW50UmFuZ2VMaXN0IG1fc2VnbWVudFJhbmdl
czsKICAgICBib29sIG1fc2hhcGVTaXplRGlydHk7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKaW5kZXggZjJlZWQ0Yjk1NWE0YmIyZmRhMDY0YzdmZWNm
ODAxMTcwOWE0YTUwMi4uNjIxMzYyNDMxZDFiODFjY2FhZmUzZjNiMzg0YzFhYTBmYjZjNzViNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcApAQCAtMzY5LDE1
ICszNjksMjQgQEAgdm9pZCBJbmxpbmVGbG93Qm94OjpkZXRlcm1pbmVTcGFjaW5nRm9yRmxvd0Jv
eGVzKGJvb2wgbGFzdExpbmUsIGJvb2wgaXNMb2dpY2FsbHkKIGZsb2F0IElubGluZUZsb3dCb3g6
OnBsYWNlQm94ZXNJbklubGluZURpcmVjdGlvbihmbG9hdCBsb2dpY2FsTGVmdCwgYm9vbCYgbmVl
ZHNXb3JkU3BhY2luZywgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXAmIHRleHRCb3hE
YXRhTWFwKQogewogICAgIC8vIFNldCBvdXIgeCBwb3NpdGlvbi4KLSAgICBzZXRMb2dpY2FsTGVm
dChsb2dpY2FsTGVmdCk7Ci0gIAorICAgIGJlZ2luUGxhY2luZ0JveFJhbmdlc0luSW5saW5lRGly
ZWN0aW9uKGxvZ2ljYWxMZWZ0KTsKKwogICAgIGZsb2F0IHN0YXJ0TG9naWNhbExlZnQgPSBsb2dp
Y2FsTGVmdDsKICAgICBsb2dpY2FsTGVmdCArPSBib3JkZXJMb2dpY2FsTGVmdCgpICsgcGFkZGlu
Z0xvZ2ljYWxMZWZ0KCk7CiAKICAgICBmbG9hdCBtaW5Mb2dpY2FsTGVmdCA9IHN0YXJ0TG9naWNh
bExlZnQ7CiAgICAgZmxvYXQgbWF4TG9naWNhbFJpZ2h0ID0gbG9naWNhbExlZnQ7CiAKLSAgICBm
b3IgKElubGluZUJveCogY3VyciA9IGZpcnN0Q2hpbGQoKTsgY3VycjsgY3VyciA9IGN1cnItPm5l
eHRPbkxpbmUoKSkgeworICAgIHBsYWNlQm94UmFuZ2VJbklubGluZURpcmVjdGlvbihmaXJzdENo
aWxkKCksIDAsIGxvZ2ljYWxMZWZ0LCBtaW5Mb2dpY2FsTGVmdCwgbWF4TG9naWNhbFJpZ2h0LCBu
ZWVkc1dvcmRTcGFjaW5nLCB0ZXh0Qm94RGF0YU1hcCk7CisKKyAgICBsb2dpY2FsTGVmdCArPSBi
b3JkZXJMb2dpY2FsUmlnaHQoKSArIHBhZGRpbmdMb2dpY2FsUmlnaHQoKTsKKyAgICBlbmRQbGFj
aW5nQm94UmFuZ2VzSW5JbmxpbmVEaXJlY3Rpb24oc3RhcnRMb2dpY2FsTGVmdCwgbG9naWNhbExl
ZnQsIG1pbkxvZ2ljYWxMZWZ0LCBtYXhMb2dpY2FsUmlnaHQpOworICAgIHJldHVybiBsb2dpY2Fs
TGVmdDsKK30KKworZmxvYXQgSW5saW5lRmxvd0JveDo6cGxhY2VCb3hSYW5nZUluSW5saW5lRGly
ZWN0aW9uKElubGluZUJveCogZmlyc3RDaGlsZCwgSW5saW5lQm94KiBsYXN0Q2hpbGQsIGZsb2F0
JiBsb2dpY2FsTGVmdCwgZmxvYXQmIG1pbkxvZ2ljYWxMZWZ0LCBmbG9hdCYgbWF4TG9naWNhbFJp
Z2h0LCBib29sJiBuZWVkc1dvcmRTcGFjaW5nLCBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250
c01hcCYgdGV4dEJveERhdGFNYXApCit7CisgICAgZm9yIChJbmxpbmVCb3gqIGN1cnIgPSBmaXJz
dENoaWxkOyBjdXJyICYmIGN1cnIgIT0gbGFzdENoaWxkOyBjdXJyID0gY3Vyci0+bmV4dE9uTGlu
ZSgpKSB7CiAgICAgICAgIGlmIChjdXJyLT5yZW5kZXJlcigpLT5pc1RleHQoKSkgewogICAgICAg
ICAgICAgSW5saW5lVGV4dEJveCogdGV4dCA9IHRvSW5saW5lVGV4dEJveChjdXJyKTsKICAgICAg
ICAgICAgIFJlbmRlclRleHQqIHJ0ID0gdG9SZW5kZXJUZXh0KHRleHQtPnJlbmRlcmVyKCkpOwpA
QCAtNDI5LDExICs0MzgsNiBAQCBmbG9hdCBJbmxpbmVGbG93Qm94OjpwbGFjZUJveGVzSW5Jbmxp
bmVEaXJlY3Rpb24oZmxvYXQgbG9naWNhbExlZnQsIGJvb2wmIG5lZWRzVwogICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgfQotCi0gICAgbG9naWNhbExlZnQgKz0gYm9yZGVyTG9naWNhbFJp
Z2h0KCkgKyBwYWRkaW5nTG9naWNhbFJpZ2h0KCk7Ci0gICAgc2V0TG9naWNhbFdpZHRoKGxvZ2lj
YWxMZWZ0IC0gc3RhcnRMb2dpY2FsTGVmdCk7Ci0gICAgaWYgKGtub3duVG9IYXZlTm9PdmVyZmxv
dygpICYmIChtaW5Mb2dpY2FsTGVmdCA8IHN0YXJ0TG9naWNhbExlZnQgfHwgbWF4TG9naWNhbFJp
Z2h0ID4gbG9naWNhbExlZnQpKQotICAgICAgICBjbGVhcktub3duVG9IYXZlTm9PdmVyZmxvdygp
OwogICAgIHJldHVybiBsb2dpY2FsTGVmdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9J
bmxpbmVGbG93Qm94LmgKaW5kZXggMzZkNDhkYzg3YmIxNTI2ZjM1MzJmMzFmYWEwMmNlNjExZTE1
MWRjYi4uYzQyNjRiYmE2ZmJlYmNlOGRiNDYxZDBlODFjZjNkZDRjMWYwMmViMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oCkBAIC0xNzMsNiArMTczLDE1IEBAIHB1
YmxpYzoKICAgICB2b2lkIGRldGVybWluZVNwYWNpbmdGb3JGbG93Qm94ZXMoYm9vbCBsYXN0TGlu
ZSwgYm9vbCBpc0xvZ2ljYWxseUxhc3RSdW5XcmFwcGVkLCBSZW5kZXJPYmplY3QqIGxvZ2ljYWxs
eUxhc3RSdW5SZW5kZXJlcik7CiAgICAgTGF5b3V0VW5pdCBnZXRGbG93U3BhY2luZ0xvZ2ljYWxX
aWR0aCgpOwogICAgIGZsb2F0IHBsYWNlQm94ZXNJbklubGluZURpcmVjdGlvbihmbG9hdCBsb2dp
Y2FsTGVmdCwgYm9vbCYgbmVlZHNXb3JkU3BhY2luZywgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNr
Rm9udHNNYXAmKTsKKyAgICBmbG9hdCBwbGFjZUJveFJhbmdlSW5JbmxpbmVEaXJlY3Rpb24oSW5s
aW5lQm94KiBmaXJzdENoaWxkLCBJbmxpbmVCb3gqIGxhc3RDaGlsZCwgZmxvYXQmIGxvZ2ljYWxM
ZWZ0LCBmbG9hdCYgbWluTG9naWNhbExlZnQsIGZsb2F0JiBtYXhMb2dpY2FsUmlnaHQsIGJvb2wm
IG5lZWRzV29yZFNwYWNpbmcsIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwJik7Cisg
ICAgdm9pZCBiZWdpblBsYWNpbmdCb3hSYW5nZXNJbklubGluZURpcmVjdGlvbihmbG9hdCBsb2dp
Y2FsTGVmdCkgeyBzZXRMb2dpY2FsTGVmdChsb2dpY2FsTGVmdCk7IH0KKyAgICB2b2lkIGVuZFBs
YWNpbmdCb3hSYW5nZXNJbklubGluZURpcmVjdGlvbihmbG9hdCBsb2dpY2FsTGVmdCwgZmxvYXQg
bG9naWNhbFJpZ2h0LCBmbG9hdCBtaW5Mb2dpY2FsTGVmdCwgZmxvYXQgbWF4TG9naWNhbFJpZ2h0
KQorICAgIHsKKyAgICAgICAgc2V0TG9naWNhbFdpZHRoKGxvZ2ljYWxSaWdodCAtIGxvZ2ljYWxM
ZWZ0KTsKKyAgICAgICAgaWYgKGtub3duVG9IYXZlTm9PdmVyZmxvdygpICYmIChtaW5Mb2dpY2Fs
TGVmdCA8IGxvZ2ljYWxMZWZ0IHx8IG1heExvZ2ljYWxSaWdodCA+IGxvZ2ljYWxSaWdodCkpCisg
ICAgICAgICAgICBjbGVhcktub3duVG9IYXZlTm9PdmVyZmxvdygpOworICAgIH0KKwogICAgIHZv
aWQgY29tcHV0ZUxvZ2ljYWxCb3hIZWlnaHRzKFJvb3RJbmxpbmVCb3gqLCBMYXlvdXRVbml0JiBt
YXhQb3NpdGlvblRvcCwgTGF5b3V0VW5pdCYgbWF4UG9zaXRpb25Cb3R0b20sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50JiBtYXhBc2NlbnQsIGludCYgbWF4RGVzY2VudCwg
Ym9vbCYgc2V0TWF4QXNjZW50LCBib29sJiBzZXRNYXhEZXNjZW50LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgc3RyaWN0TW9kZSwgR2x5cGhPdmVyZmxvd0FuZEZhbGxi
YWNrRm9udHNNYXAmLCBGb250QmFzZWxpbmUsIFZlcnRpY2FsUG9zaXRpb25DYWNoZSYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggYzFmNzZlMGIwNzdhNWUy
N2ExNGZhMDU4MmI0MjBkYTU5YTU0NDg0OS4uMzNlODU4OWQ5NTkyNTBmMWRjYmEwM2VmNDQ3NmM5
ODY5YmJmOWY0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBA
IC0xMzk3LDYgKzEzOTcsMTEgQEAgdm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0KCkKIH0KIAogI2lm
IEVOQUJMRShDU1NfRVhDTFVTSU9OUykKK0V4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbyogUmVuZGVy
QmxvY2s6OmV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0
eWxlKCktPnNoYXBlSW5zaWRlKCkgJiYgRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvOjppc0V4Y2x1
c2lvblNoYXBlSW5zaWRlSW5mb0VuYWJsZWRGb3JSZW5kZXJCbG9jayh0aGlzKSA/IEV4Y2x1c2lv
blNoYXBlSW5zaWRlSW5mbzo6ZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvRm9yUmVuZGVyQmxvY2so
dGhpcykgOiAwOworfQorCiB2b2lkIFJlbmRlckJsb2NrOjp1cGRhdGVFeGNsdXNpb25TaGFwZUlu
c2lkZUluZm9BZnRlclN0eWxlQ2hhbmdlKGNvbnN0IEV4Y2x1c2lvblNoYXBlVmFsdWUqIHNoYXBl
SW5zaWRlLCBjb25zdCBFeGNsdXNpb25TaGFwZVZhbHVlKiBvbGRTaGFwZUluc2lkZSkKIHsKICAg
ICAvLyBGSVhNRTogQSBmdXR1cmUgb3B0aW1pemF0aW9uIHdvdWxkIGRvIGEgZGVlcCBjb21wYXJp
c29uIGZvciBlcXVhbGl0eS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKaW5k
ZXggMDU0NjA4YjFmZTdiYzc0NzEwMDAxYTU0MjNkMjNkYjdkY2YyZmZiNy4uNGFhNTEzYWE4ODJm
ZWY0NTAzNzM1YWEwMDBkYmNhOTgzOTRmODUzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmgKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQu
aD4KIAogI2lmIEVOQUJMRShDU1NfRVhDTFVTSU9OUykKLSNpbmNsdWRlICJFeGNsdXNpb25TaGFw
ZUluc2lkZUluZm8uaCIKICNpbmNsdWRlICJFeGNsdXNpb25TaGFwZVZhbHVlLmgiCiAjZW5kaWYK
IApAQCAtNTMsNiArNTIsMTAgQEAgc3RydWN0IEJpZGlSdW47CiBzdHJ1Y3QgUGFpbnRJbmZvOwog
Y2xhc3MgTGluZUluZm87CiBjbGFzcyBSZW5kZXJSdWJ5UnVuOworI2lmIEVOQUJMRShDU1NfRVhD
TFVTSU9OUykKK2NsYXNzIEJhc2ljU2hhcGU7CitjbGFzcyBFeGNsdXNpb25TaGFwZUluc2lkZUlu
Zm87CisjZW5kaWYKIGNsYXNzIFRleHRMYXlvdXQ7CiBjbGFzcyBXb3JkTWVhc3VyZW1lbnQ7CiAK
QEAgLTQyNSwxMCArNDI4LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ1NTX0VY
Q0xVU0lPTlMpCi0gICAgRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvKiBleGNsdXNpb25TaGFwZUlu
c2lkZUluZm8oKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0eWxlKCktPnNoYXBlSW5z
aWRlKCkgJiYgRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvOjppc0V4Y2x1c2lvblNoYXBlSW5zaWRl
SW5mb0VuYWJsZWRGb3JSZW5kZXJCbG9jayh0aGlzKSA/IEV4Y2x1c2lvblNoYXBlSW5zaWRlSW5m
bzo6ZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvRm9yUmVuZGVyQmxvY2sodGhpcykgOiAwOwotICAg
IH0KKyAgICBFeGNsdXNpb25TaGFwZUluc2lkZUluZm8qIGV4Y2x1c2lvblNoYXBlSW5zaWRlSW5m
bygpIGNvbnN0OwogI2VuZGlmCiAKIHByb3RlY3RlZDoKQEAgLTc2Myw2ICs3NjMsNyBAQCBwcml2
YXRlOgogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgcmVzZXQoKTsKICAgICAgICAgCisgICAg
ICAgIElubGluZUl0ZXJhdG9yIG5leHRTZWdtZW50QnJlYWsoSW5saW5lQmlkaVJlc29sdmVyJiwg
TGluZUluZm8mLCBSZW5kZXJUZXh0SW5mbyYsIEZsb2F0aW5nT2JqZWN0KiBsYXN0RmxvYXRGcm9t
UHJldmlvdXNMaW5lLCB1bnNpZ25lZCBjb25zZWN1dGl2ZUh5cGhlbmF0ZWRMaW5lcywgV29yZE1l
YXN1cmVtZW50cyYpOwogICAgICAgICB2b2lkIHNraXBUcmFpbGluZ1doaXRlc3BhY2UoSW5saW5l
SXRlcmF0b3ImLCBjb25zdCBMaW5lSW5mbyYpOwogICAgICAgICB2b2lkIHNraXBMZWFkaW5nV2hp
dGVzcGFjZShJbmxpbmVCaWRpUmVzb2x2ZXImLCBMaW5lSW5mbyYsIEZsb2F0aW5nT2JqZWN0KiBs
YXN0RmxvYXRGcm9tUHJldmlvdXNMaW5lLCBMaW5lV2lkdGgmKTsKICAgICAgICAgCkBAIC03Nzks
MTAgKzc4MCwxMiBAQCBwcml2YXRlOgogICAgIGJvb2wgY2hlY2tQYWdpbmF0aW9uQW5kRmxvYXRz
QXRFbmRMaW5lKExpbmVMYXlvdXRTdGF0ZSYpOwogICAgIAogICAgIFJvb3RJbmxpbmVCb3gqIGNv
bnN0cnVjdExpbmUoQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4mLCBjb25zdCBMaW5lSW5mbyYpOwotICAg
IElubGluZUZsb3dCb3gqIGNyZWF0ZUxpbmVCb3hlcyhSZW5kZXJPYmplY3QqLCBjb25zdCBMaW5l
SW5mbyYsIElubGluZUJveCogY2hpbGRCb3gpOworICAgIElubGluZUZsb3dCb3gqIGNyZWF0ZUxp
bmVCb3hlcyhSZW5kZXJPYmplY3QqLCBjb25zdCBMaW5lSW5mbyYsIElubGluZUJveCogY2hpbGRC
b3gsIGJvb2wgc3RhcnRzTmV3U2VnbWVudCk7CiAKICAgICB2b2lkIHNldE1hcmdpbnNGb3JSdWJ5
UnVuKEJpZGlSdW4qLCBSZW5kZXJSdWJ5UnVuKiwgUmVuZGVyT2JqZWN0KiwgY29uc3QgTGluZUlu
Zm8mKTsKIAorICAgIEJpZGlSdW4qIGNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlvbnNGb3JT
ZWdtZW50KFJvb3RJbmxpbmVCb3gqLCBjb25zdCBMaW5lSW5mbyYsIEVUZXh0QWxpZ24sIGZsb2F0
JiBsb2dpY2FsTGVmdCwKKyAgICAgICAgZmxvYXQmIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwgQmlk
aVJ1biogZmlyc3RSdW4sIEJpZGlSdW4qIHRyYWlsaW5nU3BhY2VSdW4sIEdseXBoT3ZlcmZsb3dB
bmRGYWxsYmFja0ZvbnRzTWFwJiB0ZXh0Qm94RGF0YU1hcCwgVmVydGljYWxQb3NpdGlvbkNhY2hl
JiwgV29yZE1lYXN1cmVtZW50cyYpOwogICAgIHZvaWQgY29tcHV0ZUlubGluZURpcmVjdGlvblBv
c2l0aW9uc0ZvckxpbmUoUm9vdElubGluZUJveCosIGNvbnN0IExpbmVJbmZvJiwgQmlkaVJ1biog
Zmlyc3RSdW4sIEJpZGlSdW4qIHRyYWlsaW5nU3BhY2VSdW4sIGJvb2wgcmVhY2hlZEVuZCwgR2x5
cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXAmLCBWZXJ0aWNhbFBvc2l0aW9uQ2FjaGUmLCBX
b3JkTWVhc3VyZW1lbnRzJik7CiAgICAgdm9pZCBjb21wdXRlQmxvY2tEaXJlY3Rpb25Qb3NpdGlv
bnNGb3JMaW5lKFJvb3RJbmxpbmVCb3gqLCBCaWRpUnVuKiwgR2x5cGhPdmVyZmxvd0FuZEZhbGxi
YWNrRm9udHNNYXAmLCBWZXJ0aWNhbFBvc2l0aW9uQ2FjaGUmKTsKICAgICB2b2lkIGRlbGV0ZUVs
bGlwc2lzTGluZUJveGVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9ja0xpbmVMYXlvdXQuY3BwCmluZGV4IDk3MGZiYzM0NmJlOGQ4NzkyNjdjYzFlNDI2NjQ0
ODc2NmMwMDAyMTguLjllMGQ3Yjc3MzI2YjQ1YTIxYTljMmRjZTliN2VmMWE4ZWNlZTliY2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQu
Y3BwCkBAIC04OCw5ICs4OCw4IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKGJsb2NrKTsKICNp
ZiBFTkFCTEUoQ1NTX0VYQ0xVU0lPTlMpCiAgICAgICAgIEV4Y2x1c2lvblNoYXBlSW5zaWRlSW5m
byogZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvID0gbGF5b3V0RXhjbHVzaW9uU2hhcGVJbnNpZGVJ
bmZvKG1fYmxvY2spOwotICAgICAgICAvLyBGSVhNRTogQnVnIDkxODc4OiBBZGQgc3VwcG9ydCBm
b3IgbXVsdGlwbGUgc2VnbWVudHMsIGN1cnJlbnRseSB3ZSBvbmx5IHN1cHBvcnQgb25lCi0gICAg
ICAgIGlmIChleGNsdXNpb25TaGFwZUluc2lkZUluZm8gJiYgZXhjbHVzaW9uU2hhcGVJbnNpZGVJ
bmZvLT5oYXNTZWdtZW50cygpKQotICAgICAgICAgICAgbV9zZWdtZW50ID0gJmV4Y2x1c2lvblNo
YXBlSW5zaWRlSW5mby0+c2VnbWVudHMoKVswXTsKKyAgICAgICAgaWYgKGV4Y2x1c2lvblNoYXBl
SW5zaWRlSW5mbykKKyAgICAgICAgICAgIG1fc2VnbWVudCA9IGV4Y2x1c2lvblNoYXBlSW5zaWRl
SW5mby0+Y3VycmVudFNlZ21lbnQoKTsKICNlbmRpZgogICAgICAgICB1cGRhdGVBdmFpbGFibGVX
aWR0aCgpOwogICAgIH0KQEAgLTQ1MCw3ICs0NDksNyBAQCBzdGF0aWMgYm9vbCBwYXJlbnRJc0Nv
bnN0cnVjdGVkT3JIYXZlTmV4dChJbmxpbmVGbG93Qm94KiBwYXJlbnRCb3gpCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi1JbmxpbmVGbG93Qm94KiBSZW5kZXJCbG9jazo6Y3JlYXRlTGluZUJveGVz
KFJlbmRlck9iamVjdCogb2JqLCBjb25zdCBMaW5lSW5mbyYgbGluZUluZm8sIElubGluZUJveCog
Y2hpbGRCb3gpCitJbmxpbmVGbG93Qm94KiBSZW5kZXJCbG9jazo6Y3JlYXRlTGluZUJveGVzKFJl
bmRlck9iamVjdCogb2JqLCBjb25zdCBMaW5lSW5mbyYgbGluZUluZm8sIElubGluZUJveCogY2hp
bGRCb3gsIGJvb2wgc3RhcnROZXdTZWdtZW50KQogewogICAgIC8vIFNlZSBpZiB3ZSBoYXZlIGFu
IHVuY29uc3RydWN0ZWQgbGluZSBib3ggZm9yIHRoaXMgb2JqZWN0IHRoYXQgaXMgYWxzbwogICAg
IC8vIHRoZSBsYXN0IGl0ZW0gb24gdGhlIGxpbmUuCkBAIC00NzMsNyArNDcyLDggQEAgSW5saW5l
Rmxvd0JveCogUmVuZGVyQmxvY2s6OmNyZWF0ZUxpbmVCb3hlcyhSZW5kZXJPYmplY3QqIG9iaiwg
Y29uc3QgTGluZUluZm8mIGwKICAgICAgICAgLy8gdGhlIHNhbWUgbGluZSAodGhpcyBjYW4gaGFw
cGVuIHdpdGggdmVyeSBmYW5jeSBsYW5ndWFnZSBtaXh0dXJlcykuCiAgICAgICAgIGJvb2wgY29u
c3RydWN0ZWROZXdCb3ggPSBmYWxzZTsKICAgICAgICAgYm9vbCBhbGxvd2VkVG9Db25zdHJ1Y3RO
ZXdCb3ggPSAhaGFzRGVmYXVsdExpbmVCb3hDb250YWluIHx8ICFpbmxpbmVGbG93IHx8IGlubGlu
ZUZsb3ctPmFsd2F5c0NyZWF0ZUxpbmVCb3hlcygpOwotICAgICAgICBib29sIGNhblVzZUV4aXN0
aW5nUGFyZW50Qm94ID0gcGFyZW50Qm94ICYmICFwYXJlbnRJc0NvbnN0cnVjdGVkT3JIYXZlTmV4
dChwYXJlbnRCb3gpOworICAgICAgICBib29sIG11c3RDcmVhdGVCb3hlc1RvUm9vdCA9IHN0YXJ0
TmV3U2VnbWVudCAmJiAhKHBhcmVudEJveCAmJiBwYXJlbnRCb3gtPmlzUm9vdElubGluZUJveCgp
KTsKKyAgICAgICAgYm9vbCBjYW5Vc2VFeGlzdGluZ1BhcmVudEJveCA9IHBhcmVudEJveCAmJiAh
cGFyZW50SXNDb25zdHJ1Y3RlZE9ySGF2ZU5leHQocGFyZW50Qm94KSAmJiAhbXVzdENyZWF0ZUJv
eGVzVG9Sb290OwogICAgICAgICBpZiAoYWxsb3dlZFRvQ29uc3RydWN0TmV3Qm94ICYmICFjYW5V
c2VFeGlzdGluZ1BhcmVudEJveCkgewogICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBtYWtlIGEg
bmV3IGJveCBmb3IgdGhpcyByZW5kZXIgb2JqZWN0LiAgT25jZQogICAgICAgICAgICAgLy8gbWFk
ZSwgd2UgbmVlZCB0byBwbGFjZSBpdCBhdCB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IGxpbmUuCkBA
IC01NzAsMTAgKzU3MCwxNiBAQCBSb290SW5saW5lQm94KiBSZW5kZXJCbG9jazo6Y29uc3RydWN0
TGluZShCaWRpUnVuTGlzdDxCaWRpUnVuPiYgYmlkaVJ1bnMsIGNvbnN0CiAKICAgICAgICAgLy8g
SWYgd2UgaGF2ZSBubyBwYXJlbnQgYm94IHlldCwgb3IgaWYgdGhlIHJ1biBpcyBub3Qgc2ltcGx5
IGEgc2libGluZywKICAgICAgICAgLy8gdGhlbiB3ZSBuZWVkIHRvIGNvbnN0cnVjdCBpbmxpbmUg
Ym94ZXMgYXMgbmVjZXNzYXJ5IHRvIHByb3Blcmx5IGVuY2xvc2UgdGhlCi0gICAgICAgIC8vIHJ1
bidzIGlubGluZSBib3guCi0gICAgICAgIGlmICghcGFyZW50Qm94IHx8IHBhcmVudEJveC0+cmVu
ZGVyZXIoKSAhPSByLT5tX29iamVjdC0+cGFyZW50KCkpCisgICAgICAgIC8vIHJ1bidzIGlubGlu
ZSBib3guIFNlZ21lbnRzIGNhbiBvbmx5IGJlIHNpYmxpbmdzIGF0IHRoZSByb290IGxldmVsLCBh
cworICAgICAgICAvLyB0aGV5IGFyZSBwb3NpdGlvbmVkIHNlcGFyYXRlbHkuCisjaWYgRU5BQkxF
KENTU19FWENMVVNJT05TKQorICAgICAgICBib29sIHJ1blN0YXJ0c1NlZ21lbnQgPSByLT5tX3N0
YXJ0c1NlZ21lbnQ7CisjZWxzZQorICAgICAgICBib29sIHJ1blN0YXJ0c1NlZ21lbnQgPSBmYWxz
ZTsKKyNlbmRpZgorICAgICAgICBpZiAoIXBhcmVudEJveCB8fCBwYXJlbnRCb3gtPnJlbmRlcmVy
KCkgIT0gci0+bV9vYmplY3QtPnBhcmVudCgpIHx8IHJ1blN0YXJ0c1NlZ21lbnQpCiAgICAgICAg
ICAgICAvLyBDcmVhdGUgbmV3IGlubGluZSBib3hlcyBhbGwgdGhlIHdheSBiYWNrIHRvIHRoZSBh
cHByb3ByaWF0ZSBpbnNlcnRpb24gcG9pbnQuCi0gICAgICAgICAgICBwYXJlbnRCb3ggPSBjcmVh
dGVMaW5lQm94ZXMoci0+bV9vYmplY3QtPnBhcmVudCgpLCBsaW5lSW5mbywgYm94KTsKKyAgICAg
ICAgICAgIHBhcmVudEJveCA9IGNyZWF0ZUxpbmVCb3hlcyhyLT5tX29iamVjdC0+cGFyZW50KCks
IGxpbmVJbmZvLCBib3gsIHJ1blN0YXJ0c1NlZ21lbnQpOwogICAgICAgICBlbHNlIHsKICAgICAg
ICAgICAgIC8vIEFwcGVuZCB0aGUgaW5saW5lIGJveCB0byB0aGlzIGxpbmUuCiAgICAgICAgICAg
ICBwYXJlbnRCb3gtPmFkZFRvTGluZShib3gpOwpAQCAtODA4LDYgKzgxNCwxMSBAQCBzdGF0aWMg
aW5saW5lIHZvaWQgY29tcHV0ZUV4cGFuc2lvbkZvckp1c3RpZmllZFRleHQoQmlkaVJ1biogZmly
c3RSdW4sIEJpZGlSdW4qCiAKICAgICBzaXplX3QgaSA9IDA7CiAgICAgZm9yIChCaWRpUnVuKiBy
ID0gZmlyc3RSdW47IHI7IHIgPSByLT5uZXh0KCkpIHsKKyNpZiBFTkFCTEUoQ1NTX0VYQ0xVU0lP
TlMpCisgICAgICAgIC8vIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbmNlIHBlciBzZWdtZW50LCBk
byBub3QgbW92ZSBwYXN0IHRoZSBjdXJyZW50IHNlZ21lbnQuCisgICAgICAgIGlmIChyLT5tX3N0
YXJ0c1NlZ21lbnQpCisgICAgICAgICAgICBicmVhazsKKyNlbmRpZgogICAgICAgICBpZiAoIXIt
Pm1fYm94IHx8IHIgPT0gdHJhaWxpbmdTcGFjZVJ1bikKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAKQEAgLTg4MywxNyArODk0LDUzIEBAIHZvaWQgUmVuZGVyQmxvY2s6OmNvbXB1dGVJ
bmxpbmVEaXJlY3Rpb25Qb3NpdGlvbnNGb3JMaW5lKFJvb3RJbmxpbmVCb3gqIGxpbmVCb3gsCiAg
ICAgLy8gQ1NTIDIuMTogIidUZXh0LWluZGVudCcgb25seSBhZmZlY3RzIGEgbGluZSBpZiBpdCBp
cyB0aGUgZmlyc3QgZm9ybWF0dGVkIGxpbmUgb2YgYW4gZWxlbWVudC4gRm9yIGV4YW1wbGUsIHRo
ZSBmaXJzdCBsaW5lIG9mIGFuIGFub255bW91cyBibG9jayAKICAgICAvLyBib3ggaXMgb25seSBh
ZmZlY3RlZCBpZiBpdCBpcyB0aGUgZmlyc3QgY2hpbGQgb2YgaXRzIHBhcmVudCBlbGVtZW50LiIK
ICAgICBib29sIGZpcnN0TGluZSA9IGxpbmVJbmZvLmlzRmlyc3RMaW5lKCkgJiYgIShpc0Fub255
bW91c0Jsb2NrKCkgJiYgcGFyZW50KCktPmZpcnN0Q2hpbGQoKSAhPSB0aGlzKTsKLSAgICBmbG9h
dCBsb2dpY2FsTGVmdCA9IHBpeGVsU25hcHBlZExvZ2ljYWxMZWZ0T2Zmc2V0Rm9yTGluZShsb2dp
Y2FsSGVpZ2h0KCksIGZpcnN0TGluZSwgbGluZUxvZ2ljYWxIZWlnaHQpOwotICAgIGZsb2F0IGxv
Z2ljYWxSaWdodCA9IHBpeGVsU25hcHBlZExvZ2ljYWxSaWdodE9mZnNldEZvckxpbmUobG9naWNh
bEhlaWdodCgpLCBmaXJzdExpbmUsIGxpbmVMb2dpY2FsSGVpZ2h0KTsKKyAgICBmbG9hdCBsaW5l
TG9naWNhbExlZnQgPSBwaXhlbFNuYXBwZWRMb2dpY2FsTGVmdE9mZnNldEZvckxpbmUobG9naWNh
bEhlaWdodCgpLCBmaXJzdExpbmUsIGxpbmVMb2dpY2FsSGVpZ2h0KTsKKyAgICBmbG9hdCBsaW5l
TG9naWNhbFJpZ2h0ID0gcGl4ZWxTbmFwcGVkTG9naWNhbFJpZ2h0T2Zmc2V0Rm9yTGluZShsb2dp
Y2FsSGVpZ2h0KCksIGZpcnN0TGluZSwgbGluZUxvZ2ljYWxIZWlnaHQpOworICAgIGZsb2F0IGF2
YWlsYWJsZUxvZ2ljYWxXaWR0aDsKKyAgICBib29sIG5lZWRzV29yZFNwYWNpbmc7CiAjaWYgRU5B
QkxFKENTU19FWENMVVNJT05TKQogICAgIEV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbyogZXhjbHVz
aW9uU2hhcGVJbnNpZGVJbmZvID0gbGF5b3V0RXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvKHRoaXMp
OwogICAgIGlmIChleGNsdXNpb25TaGFwZUluc2lkZUluZm8gJiYgZXhjbHVzaW9uU2hhcGVJbnNp
ZGVJbmZvLT5oYXNTZWdtZW50cygpKSB7Ci0gICAgICAgIGxvZ2ljYWxMZWZ0ID0gbWF4PGZsb2F0
Pihyb3VuZFRvSW50KGV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby0+c2VnbWVudHMoKVswXS5sb2dp
Y2FsTGVmdCksIGxvZ2ljYWxMZWZ0KTsKLSAgICAgICAgbG9naWNhbFJpZ2h0ID0gbWluPGZsb2F0
PihmbG9vclRvSW50KGV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby0+c2VnbWVudHMoKVswXS5sb2dp
Y2FsUmlnaHQpLCBsb2dpY2FsUmlnaHQpOworICAgICAgICBCaWRpUnVuKiBzZWdtZW50U3RhcnQg
PSBmaXJzdFJ1bjsKKyAgICAgICAgY29uc3QgU2VnbWVudExpc3QmIHNlZ21lbnRzID0gZXhjbHVz
aW9uU2hhcGVJbnNpZGVJbmZvLT5zZWdtZW50cygpOworICAgICAgICBmbG9hdCBsb2dpY2FsTGVm
dCA9IG1heDxmbG9hdD4ocm91bmRUb0ludChzZWdtZW50c1swXS5sb2dpY2FsTGVmdCksIGxpbmVM
b2dpY2FsTGVmdCk7CisgICAgICAgIGZsb2F0IGxvZ2ljYWxSaWdodCA9IG1pbjxmbG9hdD4oZmxv
b3JUb0ludChzZWdtZW50c1swXS5sb2dpY2FsUmlnaHQpLCBsaW5lTG9naWNhbFJpZ2h0KTsKKyAg
ICAgICAgZmxvYXQgc3RhcnRMb2dpY2FsTGVmdCA9IGxvZ2ljYWxMZWZ0OworICAgICAgICBmbG9h
dCBlbmRMb2dpY2FsUmlnaHQgPSBsb2dpY2FsTGVmdDsKKyAgICAgICAgZmxvYXQgbWluTG9naWNh
bExlZnQgPSBsb2dpY2FsTGVmdDsKKyAgICAgICAgZmxvYXQgbWF4TG9naWNhbFJpZ2h0ID0gbG9n
aWNhbExlZnQ7CisgICAgICAgIGxpbmVCb3gtPmJlZ2luUGxhY2luZ0JveFJhbmdlc0luSW5saW5l
RGlyZWN0aW9uKGxvZ2ljYWxMZWZ0KTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBz
ZWdtZW50cy5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgaWYgKGkpIHsKKyAgICAgICAgICAg
ICAgICBsb2dpY2FsTGVmdCA9IG1heDxmbG9hdD4ocm91bmRUb0ludChzZWdtZW50c1tpXS5sb2dp
Y2FsTGVmdCksIGxpbmVMb2dpY2FsTGVmdCk7CisgICAgICAgICAgICAgICAgbG9naWNhbFJpZ2h0
ID0gbWluPGZsb2F0PihmbG9vclRvSW50KHNlZ21lbnRzW2ldLmxvZ2ljYWxSaWdodCksIGxpbmVM
b2dpY2FsUmlnaHQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYXZhaWxhYmxlTG9naWNh
bFdpZHRoID0gbG9naWNhbFJpZ2h0IC0gbG9naWNhbExlZnQ7CisgICAgICAgICAgICBCaWRpUnVu
KiBuZXdTZWdtZW50U3RhcnQgPSBjb21wdXRlSW5saW5lRGlyZWN0aW9uUG9zaXRpb25zRm9yU2Vn
bWVudChsaW5lQm94LCBsaW5lSW5mbywgdGV4dEFsaWduLCBsb2dpY2FsTGVmdCwgYXZhaWxhYmxl
TG9naWNhbFdpZHRoLCBzZWdtZW50U3RhcnQsIHRyYWlsaW5nU3BhY2VSdW4sIHRleHRCb3hEYXRh
TWFwLCB2ZXJ0aWNhbFBvc2l0aW9uQ2FjaGUsIHdvcmRNZWFzdXJlbWVudHMpOworICAgICAgICAg
ICAgbmVlZHNXb3JkU3BhY2luZyA9IGZhbHNlOworICAgICAgICAgICAgZW5kTG9naWNhbFJpZ2h0
ID0gbGluZUJveC0+cGxhY2VCb3hSYW5nZUluSW5saW5lRGlyZWN0aW9uKHNlZ21lbnRTdGFydC0+
bV9ib3gsIG5ld1NlZ21lbnRTdGFydCA/IG5ld1NlZ21lbnRTdGFydC0+bV9ib3ggOiAwLCBsb2dp
Y2FsTGVmdCwgbWluTG9naWNhbExlZnQsIG1heExvZ2ljYWxSaWdodCwgbmVlZHNXb3JkU3BhY2lu
ZywgdGV4dEJveERhdGFNYXApOworICAgICAgICAgICAgaWYgKCFuZXdTZWdtZW50U3RhcnQgfHwg
IW5ld1NlZ21lbnRTdGFydC0+bmV4dCgpKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgQVNTRVJUKG5ld1NlZ21lbnRTdGFydC0+bV9zdGFydHNTZWdtZW50KTsKKyAgICAgICAg
ICAgIC8vIERpc2NhcmQgdGhlIGVtcHR5IHNlZ21lbnQgc3RhcnQgbWFya2VyIGJpZGkgcnVucwor
ICAgICAgICAgICAgc2VnbWVudFN0YXJ0ID0gbmV3U2VnbWVudFN0YXJ0LT5uZXh0KCk7CisgICAg
ICAgIH0KKyAgICAgICAgbGluZUJveC0+ZW5kUGxhY2luZ0JveFJhbmdlc0luSW5saW5lRGlyZWN0
aW9uKHN0YXJ0TG9naWNhbExlZnQsIGVuZExvZ2ljYWxSaWdodCwgbWluTG9naWNhbExlZnQsIG1h
eExvZ2ljYWxSaWdodCk7CisgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKLSAgICBmbG9h
dCBhdmFpbGFibGVMb2dpY2FsV2lkdGggPSBsb2dpY2FsUmlnaHQgLSBsb2dpY2FsTGVmdDsKKyAg
ICBhdmFpbGFibGVMb2dpY2FsV2lkdGggPSBsaW5lTG9naWNhbFJpZ2h0IC0gbGluZUxvZ2ljYWxM
ZWZ0OworICAgIGNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlvbnNGb3JTZWdtZW50KGxpbmVC
b3gsIGxpbmVJbmZvLCB0ZXh0QWxpZ24sIGxpbmVMb2dpY2FsTGVmdCwgYXZhaWxhYmxlTG9naWNh
bFdpZHRoLCBmaXJzdFJ1biwgIHRyYWlsaW5nU3BhY2VSdW4sIHRleHRCb3hEYXRhTWFwLCB2ZXJ0
aWNhbFBvc2l0aW9uQ2FjaGUsIHdvcmRNZWFzdXJlbWVudHMpOworICAgIC8vIFRoZSB3aWR0aHMg
b2YgYWxsIHJ1bnMgYXJlIG5vdyBrbm93bi4gV2UgY2FuIG5vdyBwbGFjZSBldmVyeSBpbmxpbmUg
Ym94IChhbmQKKyAgICAvLyBjb21wdXRlIGFjY3VyYXRlIHdpZHRocyBmb3IgdGhlIGlubGluZSBm
bG93IGJveGVzKS4KKyAgICBuZWVkc1dvcmRTcGFjaW5nID0gZmFsc2U7CisgICAgbGluZUJveC0+
cGxhY2VCb3hlc0luSW5saW5lRGlyZWN0aW9uKGxpbmVMb2dpY2FsTGVmdCwgbmVlZHNXb3JkU3Bh
Y2luZywgdGV4dEJveERhdGFNYXApOworfQogCitCaWRpUnVuKiBSZW5kZXJCbG9jazo6Y29tcHV0
ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0ZvclNlZ21lbnQoUm9vdElubGluZUJveCogbGluZUJv
eCwgY29uc3QgTGluZUluZm8mIGxpbmVJbmZvLCBFVGV4dEFsaWduIHRleHRBbGlnbiwgZmxvYXQm
IGxvZ2ljYWxMZWZ0LAorICAgIGZsb2F0JiBhdmFpbGFibGVMb2dpY2FsV2lkdGgsIEJpZGlSdW4q
IGZpcnN0UnVuLCBCaWRpUnVuKiB0cmFpbGluZ1NwYWNlUnVuLCBHbHlwaE92ZXJmbG93QW5kRmFs
bGJhY2tGb250c01hcCYgdGV4dEJveERhdGFNYXAsIFZlcnRpY2FsUG9zaXRpb25DYWNoZSYgdmVy
dGljYWxQb3NpdGlvbkNhY2hlLAorICAgIFdvcmRNZWFzdXJlbWVudHMmIHdvcmRNZWFzdXJlbWVu
dHMpCit7CiAgICAgYm9vbCBuZWVkc1dvcmRTcGFjaW5nID0gZmFsc2U7CiAgICAgZmxvYXQgdG90
YWxMb2dpY2FsV2lkdGggPSBsaW5lQm94LT5nZXRGbG93U3BhY2luZ0xvZ2ljYWxXaWR0aCgpOwog
ICAgIHVuc2lnbmVkIGV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQgPSAwOwpAQCAtOTAxLDcgKzk0
OCwxNCBAQCB2b2lkIFJlbmRlckJsb2NrOjpjb21wdXRlSW5saW5lRGlyZWN0aW9uUG9zaXRpb25z
Rm9yTGluZShSb290SW5saW5lQm94KiBsaW5lQm94LAogICAgIFZlY3Rvcjx1bnNpZ25lZCwgMTY+
IGV4cGFuc2lvbk9wcG9ydHVuaXRpZXM7CiAgICAgUmVuZGVyT2JqZWN0KiBwcmV2aW91c09iamVj
dCA9IDA7CiAKLSAgICBmb3IgKEJpZGlSdW4qIHIgPSBmaXJzdFJ1bjsgcjsgciA9IHItPm5leHQo
KSkgeworICAgIEJpZGlSdW4qIHIgPSBmaXJzdFJ1bjsKKyAgICBmb3IgKDsgcjsgciA9IHItPm5l
eHQoKSkgeworI2lmIEVOQUJMRShDU1NfRVhDTFVTSU9OUykKKyAgICAgICAgLy8gT25jZSB3ZSBo
YXZlIHJlYWNoZWQgdGhlIHN0YXJ0IG9mIHRoZSBuZXh0IHNlZ21lbnQsIHdlIGhhdmUgZmluaXNo
ZWQKKyAgICAgICAgLy8gY29tcHV0aW5nIHRoZSBwb3NpdGlvbnMgZm9yIHRoaXMgc2VnbWVudCdz
IGNvbnRlbnRzLgorICAgICAgICBpZiAoci0+bV9zdGFydHNTZWdtZW50KQorICAgICAgICAgICAg
YnJlYWs7CisjZW5kaWYKICAgICAgICAgaWYgKCFyLT5tX2JveCB8fCByLT5tX29iamVjdC0+aXNP
dXRPZkZsb3dQb3NpdGlvbmVkKCkgfHwgci0+bV9ib3gtPmlzTGluZUJyZWFrKCkpCiAgICAgICAg
ICAgICBjb250aW51ZTsgLy8gUG9zaXRpb25lZCBvYmplY3RzIGFyZSBvbmx5IHBhcnRpY2lwYXRp
bmcgdG8gZmlndXJlIG91dCB0aGVpcgogICAgICAgICAgICAgICAgICAgICAgIC8vIGNvcnJlY3Qg
c3RhdGljIHggcG9zaXRpb24uICBUaGV5IGhhdmUgbm8gZWZmZWN0IG9uIHRoZSB3aWR0aC4KQEAg
LTk1MSwxMCArMTAwNSw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmNvbXB1dGVJbmxpbmVEaXJlY3Rp
b25Qb3NpdGlvbnNGb3JMaW5lKFJvb3RJbmxpbmVCb3gqIGxpbmVCb3gsCiAKICAgICBjb21wdXRl
RXhwYW5zaW9uRm9ySnVzdGlmaWVkVGV4dChmaXJzdFJ1biwgdHJhaWxpbmdTcGFjZVJ1biwgZXhw
YW5zaW9uT3Bwb3J0dW5pdGllcywgZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudCwgdG90YWxMb2dp
Y2FsV2lkdGgsIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CiAKLSAgICAvLyBUaGUgd2lkdGhzIG9m
IGFsbCBydW5zIGFyZSBub3cga25vd24uICBXZSBjYW4gbm93IHBsYWNlIGV2ZXJ5IGlubGluZSBi
b3ggKGFuZAotICAgIC8vIGNvbXB1dGUgYWNjdXJhdGUgd2lkdGhzIGZvciB0aGUgaW5saW5lIGZs
b3cgYm94ZXMpLgotICAgIG5lZWRzV29yZFNwYWNpbmcgPSBmYWxzZTsKLSAgICBsaW5lQm94LT5w
bGFjZUJveGVzSW5JbmxpbmVEaXJlY3Rpb24obG9naWNhbExlZnQsIG5lZWRzV29yZFNwYWNpbmcs
IHRleHRCb3hEYXRhTWFwKTsKKyAgICByZXR1cm4gcjsKIH0KIAogdm9pZCBSZW5kZXJCbG9jazo6
Y29tcHV0ZUJsb2NrRGlyZWN0aW9uUG9zaXRpb25zRm9yTGluZShSb290SW5saW5lQm94KiBsaW5l
Qm94LCBCaWRpUnVuKiBmaXJzdFJ1biwgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXAm
IHRleHRCb3hEYXRhTWFwLApAQCAtMTEwMSwxMyArMTE1MiwxMyBAQCBzdGF0aWMgaW5saW5lIEJp
ZGlTdGF0dXMgc3RhdHVzV2l0aERpcmVjdGlvbihUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24s
IGJvb2wgaQogfQogCiAvLyBGSVhNRTogQmlkaVJlc29sdmVyIHNob3VsZCBoYXZlIHRoaXMgbG9n
aWMuCi1zdGF0aWMgaW5saW5lIHZvaWQgY29uc3RydWN0QmlkaVJ1bnMoSW5saW5lQmlkaVJlc29s
dmVyJiB0b3BSZXNvbHZlciwgQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4mIGJpZGlSdW5zLCBjb25zdCBJ
bmxpbmVJdGVyYXRvciYgZW5kT2ZMaW5lLCBWaXN1YWxEaXJlY3Rpb25PdmVycmlkZSBvdmVycmlk
ZSwgYm9vbCBwcmV2aW91c0xpbmVCcm9rZUNsZWFubHkpCitzdGF0aWMgaW5saW5lIHZvaWQgY29u
c3RydWN0QmlkaVJ1bnNGb3JTZWdtZW50KElubGluZUJpZGlSZXNvbHZlciYgdG9wUmVzb2x2ZXIs
IEJpZGlSdW5MaXN0PEJpZGlSdW4+JiBiaWRpUnVucywgY29uc3QgSW5saW5lSXRlcmF0b3ImIGVu
ZE9mUnVucywgVmlzdWFsRGlyZWN0aW9uT3ZlcnJpZGUgb3ZlcnJpZGUsIGJvb2wgcHJldmlvdXNM
aW5lQnJva2VDbGVhbmx5KQogewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcGFzcyBhIEJpZGlS
dW5MaXN0IGludG8gY3JlYXRlQmlkaVJ1bnNGb3JMaW5lIGluc3RlYWQKICAgICAvLyBvZiB0aGUg
cmVzb2x2ZXIgb3duaW5nIHRoZSBydW5zLgogICAgIEFTU0VSVCgmdG9wUmVzb2x2ZXIucnVucygp
ID09ICZiaWRpUnVucyk7CiAgICAgUmVuZGVyT2JqZWN0KiBjdXJyZW50Um9vdCA9IHRvcFJlc29s
dmVyLnBvc2l0aW9uKCkucm9vdCgpOwotICAgIHRvcFJlc29sdmVyLmNyZWF0ZUJpZGlSdW5zRm9y
TGluZShlbmRPZkxpbmUsIG92ZXJyaWRlLCBwcmV2aW91c0xpbmVCcm9rZUNsZWFubHkpOworICAg
IHRvcFJlc29sdmVyLmNyZWF0ZUJpZGlSdW5zRm9yTGluZShlbmRPZlJ1bnMsIG92ZXJyaWRlLCBw
cmV2aW91c0xpbmVCcm9rZUNsZWFubHkpOwogCiAgICAgd2hpbGUgKCF0b3BSZXNvbHZlci5pc29s
YXRlZFJ1bnMoKS5pc0VtcHR5KCkpIHsKICAgICAgICAgLy8gSXQgZG9lcyBub3QgbWF0dGVyIHdo
aWNoIG9yZGVyIHdlIHJlc29sdmUgdGhlIHJ1bnMgYXMgbG9uZyBhcyB3ZSByZXNvbHZlIHRoZW0g
YWxsLgpAQCAtMTE0Nyw3ICsxMTk4LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGNvbnN0cnVjdEJp
ZGlSdW5zKElubGluZUJpZGlSZXNvbHZlciYgdG9wUmVzb2x2ZXIsIEJpZGlSdW5MaXMKICAgICAg
ICAgLy8gV2Ugc3RvcCBhdCB0aGUgbmV4dCBlbmQgb2YgbGluZTsgd2UgbWF5IHJlLWVudGVyIHRo
aXMgaXNvbGF0ZSBpbiB0aGUgbmV4dCBjYWxsIHRvIGNvbnN0cnVjdEJpZGlSdW5zKCkuCiAgICAg
ICAgIC8vIEZJWE1FOiBXaGF0IHNob3VsZCBlbmQgYW5kIHByZXZpb3VzTGluZUJyb2tlQ2xlYW5s
eSBiZT8KICAgICAgICAgLy8gcm5pd2Egc2F5cyBwcmV2aW91c0xpbmVCcm9rZUNsZWFubHkgaXMg
anVzdCBhIFdpbklFIGhhY2sgYW5kIGNvdWxkIGFsd2F5cyBiZSBmYWxzZSBoZXJlPwotICAgICAg
ICBpc29sYXRlZFJlc29sdmVyLmNyZWF0ZUJpZGlSdW5zRm9yTGluZShlbmRPZkxpbmUsIE5vVmlz
dWFsT3ZlcnJpZGUsIHByZXZpb3VzTGluZUJyb2tlQ2xlYW5seSk7CisgICAgICAgIGlzb2xhdGVk
UmVzb2x2ZXIuY3JlYXRlQmlkaVJ1bnNGb3JMaW5lKGVuZE9mUnVucywgTm9WaXN1YWxPdmVycmlk
ZSwgcHJldmlvdXNMaW5lQnJva2VDbGVhbmx5KTsKICAgICAgICAgLy8gTm90ZSB0aGF0IHdlIGRv
IG5vdCBkZWxldGUgdGhlIHJ1bnMgZnJvbSB0aGUgcmVzb2x2ZXIuCiAgICAgICAgIC8vIFdlJ3Jl
IG5vdCBndWFyYW50ZWVkIHRvIGdldCBhbnkgQmlkaVJ1bnMgaW4gdGhlIHByZXZpb3VzIHN0ZXAu
IElmIHdlIGRvbid0LCB3ZSBhbGxvdyB0aGUgcGxhY2Vob2xkZXIKICAgICAgICAgLy8gaXRzZWxm
IHRvIGJlIHR1cm5lZCBpbnRvIGFuIElubGluZUJveC4gV2UgY2FuJ3QgcmVtb3ZlIGl0IGhlcmUg
d2l0aG91dCBwb3RlbnRpYWxseSBsb3NpbmcgdHJhY2sgb2YKQEAgLTExNjQsNiArMTIxNSwzOCBA
QCBzdGF0aWMgaW5saW5lIHZvaWQgY29uc3RydWN0QmlkaVJ1bnMoSW5saW5lQmlkaVJlc29sdmVy
JiB0b3BSZXNvbHZlciwgQmlkaVJ1bkxpcwogICAgIH0KIH0KIAorc3RhdGljIGlubGluZSB2b2lk
IGNvbnN0cnVjdEJpZGlSdW5zRm9yTGluZShjb25zdCBSZW5kZXJCbG9jayogYmxvY2ssIElubGlu
ZUJpZGlSZXNvbHZlciYgdG9wUmVzb2x2ZXIsIEJpZGlSdW5MaXN0PEJpZGlSdW4+JiBiaWRpUnVu
cywgY29uc3QgSW5saW5lSXRlcmF0b3ImIGVuZE9mTGluZSwgVmlzdWFsRGlyZWN0aW9uT3ZlcnJp
ZGUgb3ZlcnJpZGUsIGJvb2wgcHJldmlvdXNMaW5lQnJva2VDbGVhbmx5KQoreworI2lmICFFTkFC
TEUoQ1NTX0VYQ0xVU0lPTlMpCisgICAgVU5VU0VEX1BBUkFNKGJsb2NrKTsKKyAgICBjb25zdHJ1
Y3RCaWRpUnVuc0ZvclNlZ21lbnQodG9wUmVzb2x2ZXIsIGJpZGlSdW5zLCBlbmRPZkxpbmUsIG92
ZXJyaWRlLCBwcmV2aW91c0xpbmVCcm9rZUNsZWFubHkpOworI2Vsc2UKKyAgICBFeGNsdXNpb25T
aGFwZUluc2lkZUluZm8qIGV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbyA9IGxheW91dEV4Y2x1c2lv
blNoYXBlSW5zaWRlSW5mbyhibG9jayk7CisgICAgaWYgKCFleGNsdXNpb25TaGFwZUluc2lkZUlu
Zm8gfHwgIWV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby0+aGFzU2VnbWVudHMoKSkgeworICAgICAg
ICBjb25zdHJ1Y3RCaWRpUnVuc0ZvclNlZ21lbnQodG9wUmVzb2x2ZXIsIGJpZGlSdW5zLCBlbmRP
ZkxpbmUsIG92ZXJyaWRlLCBwcmV2aW91c0xpbmVCcm9rZUNsZWFubHkpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgY29uc3QgU2VnbWVudFJhbmdlTGlzdCYgc2VnbWVudFJhbmdlcyA9
IGV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby0+c2VnbWVudFJhbmdlcygpOworICAgIEFTU0VSVChz
ZWdtZW50UmFuZ2VzLnNpemUoKSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNlZ21l
bnRSYW5nZXMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgSW5saW5lSXRlcmF0b3Igc2VnbWVudFN0
YXJ0ID0gc2VnbWVudFJhbmdlc1tpXS5zdGFydDsKKyAgICAgICAgSW5saW5lSXRlcmF0b3Igc2Vn
bWVudEVuZCA9IHNlZ21lbnRSYW5nZXNbaV0uZW5kOworICAgICAgICBpZiAoaSkgeworICAgICAg
ICAgICAgQVNTRVJUKHNlZ21lbnRTdGFydC5tX29iaik7CisgICAgICAgICAgICBCaWRpUnVuKiBz
ZWdtZW50TWFya2VyID0gY3JlYXRlUnVuKHNlZ21lbnRTdGFydC5tX3Bvcywgc2VnbWVudFN0YXJ0
Lm1fcG9zLCBzZWdtZW50U3RhcnQubV9vYmosIHRvcFJlc29sdmVyKTsKKyAgICAgICAgICAgIHNl
Z21lbnRNYXJrZXItPm1fc3RhcnRzU2VnbWVudCA9IHRydWU7CisgICAgICAgICAgICBiaWRpUnVu
cy5hZGRSdW4oc2VnbWVudE1hcmtlcik7CisgICAgICAgICAgICAvLyBEbyBub3QgY29sbGFwc2Ug
bWlkcG9pbnRzIGJldHdlZW4gc2VnbWVudHMKKyAgICAgICAgICAgIHRvcFJlc29sdmVyLm1pZHBv
aW50U3RhdGUoKS5iZXR3ZWVuTWlkcG9pbnRzID0gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAg
dG9wUmVzb2x2ZXIuc2V0UG9zaXRpb24oc2VnbWVudFN0YXJ0LCBudW1iZXJPZklzb2xhdGVBbmNl
c3RvcnMoc2VnbWVudFN0YXJ0KSk7CisgICAgICAgIGNvbnN0cnVjdEJpZGlSdW5zRm9yU2VnbWVu
dCh0b3BSZXNvbHZlciwgYmlkaVJ1bnMsIHNlZ21lbnRFbmQsIG92ZXJyaWRlLCBwcmV2aW91c0xp
bmVCcm9rZUNsZWFubHkpOworICAgIH0KKyNlbmRpZgorfQorCiAvLyBUaGlzIGZ1bmN0aW9uIGNv
bnN0cnVjdHMgbGluZSBib3hlcyBmb3IgYWxsIG9mIHRoZSB0ZXh0IHJ1bnMgaW4gdGhlIHJlc29s
dmVyIGFuZCBjb21wdXRlcyB0aGVpciBwb3NpdGlvbi4KIFJvb3RJbmxpbmVCb3gqIFJlbmRlckJs
b2NrOjpjcmVhdGVMaW5lQm94ZXNGcm9tQmlkaVJ1bnMoQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4mIGJp
ZGlSdW5zLCBjb25zdCBJbmxpbmVJdGVyYXRvciYgZW5kLCBMaW5lSW5mbyYgbGluZUluZm8sIFZl
cnRpY2FsUG9zaXRpb25DYWNoZSYgdmVydGljYWxQb3NpdGlvbkNhY2hlLCBCaWRpUnVuKiB0cmFp
bGluZ1NwYWNlUnVuLCBXb3JkTWVhc3VyZW1lbnRzJiB3b3JkTWVhc3VyZW1lbnRzKQogewpAQCAt
MTQ2MSw3ICsxNTQ0LDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0UnVuc0FuZEZsb2F0c0lu
UmFuZ2UoTGluZUxheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgSW5saW4KICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIG93bmVyc2hpcCBpcyByZXZlcnNlZC4gV2Ugc2hv
dWxkIG93biB0aGUgQmlkaVJ1bkxpc3QgYW5kIHBhc3MgaXQgdG8gY3JlYXRlQmlkaVJ1bnNGb3JM
aW5lLgogICAgICAgICAgICAgQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4mIGJpZGlSdW5zID0gcmVzb2x2
ZXIucnVucygpOwotICAgICAgICAgICAgY29uc3RydWN0QmlkaVJ1bnMocmVzb2x2ZXIsIGJpZGlS
dW5zLCBlbmQsIG92ZXJyaWRlLCBsYXlvdXRTdGF0ZS5saW5lSW5mbygpLnByZXZpb3VzTGluZUJy
b2tlQ2xlYW5seSgpKTsKKyAgICAgICAgICAgIGNvbnN0cnVjdEJpZGlSdW5zRm9yTGluZSh0aGlz
LCByZXNvbHZlciwgYmlkaVJ1bnMsIGVuZCwgb3ZlcnJpZGUsIGxheW91dFN0YXRlLmxpbmVJbmZv
KCkucHJldmlvdXNMaW5lQnJva2VDbGVhbmx5KCkpOwogICAgICAgICAgICAgQVNTRVJUKHJlc29s
dmVyLnBvc2l0aW9uKCkgPT0gZW5kKTsKIAogICAgICAgICAgICAgQmlkaVJ1biogdHJhaWxpbmdT
cGFjZVJ1biA9ICFsYXlvdXRTdGF0ZS5saW5lSW5mbygpLnByZXZpb3VzTGluZUJyb2tlQ2xlYW5s
eSgpID8gaGFuZGxlVHJhaWxpbmdTcGFjZXMoYmlkaVJ1bnMsIHJlc29sdmVyLmNvbnRleHQoKSkg
OiAwOwpAQCAtMjMyMyw2ICsyNDA2LDQ4IEBAIHZvaWQgUmVuZGVyQmxvY2s6OkxpbmVCcmVha2Vy
OjpyZXNldCgpCiAKIElubGluZUl0ZXJhdG9yIFJlbmRlckJsb2NrOjpMaW5lQnJlYWtlcjo6bmV4
dExpbmVCcmVhayhJbmxpbmVCaWRpUmVzb2x2ZXImIHJlc29sdmVyLCBMaW5lSW5mbyYgbGluZUlu
Zm8sIFJlbmRlclRleHRJbmZvJiByZW5kZXJUZXh0SW5mbywgRmxvYXRpbmdPYmplY3QqIGxhc3RG
bG9hdEZyb21QcmV2aW91c0xpbmUsIHVuc2lnbmVkIGNvbnNlY3V0aXZlSHlwaGVuYXRlZExpbmVz
LCBXb3JkTWVhc3VyZW1lbnRzJiB3b3JkTWVhc3VyZW1lbnRzKQogeworI2lmICFFTkFCTEUoQ1NT
X0VYQ0xVU0lPTlMpCisgICAgcmV0dXJuIG5leHRTZWdtZW50QnJlYWsocmVzb2x2ZXIsIGxpbmVJ
bmZvLCByZW5kZXJUZXh0SW5mbywgbGFzdEZsb2F0RnJvbVByZXZpb3VzTGluZSwgY29uc2VjdXRp
dmVIeXBoZW5hdGVkTGluZXMsIHdvcmRNZWFzdXJlbWVudHMpOworI2Vsc2UKKyAgICBFeGNsdXNp
b25TaGFwZUluc2lkZUluZm8qIGV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbyA9IGxheW91dEV4Y2x1
c2lvblNoYXBlSW5zaWRlSW5mbyhtX2Jsb2NrKTsKKyAgICBpZiAoIWV4Y2x1c2lvblNoYXBlSW5z
aWRlSW5mbyB8fCAhZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLT5oYXNTZWdtZW50cygpKQorICAg
ICAgICByZXR1cm4gbmV4dFNlZ21lbnRCcmVhayhyZXNvbHZlciwgbGluZUluZm8sIHJlbmRlclRl
eHRJbmZvLCBsYXN0RmxvYXRGcm9tUHJldmlvdXNMaW5lLCBjb25zZWN1dGl2ZUh5cGhlbmF0ZWRM
aW5lcywgd29yZE1lYXN1cmVtZW50cyk7CisKKyAgICBJbmxpbmVJdGVyYXRvciBlbmQgPSByZXNv
bHZlci5wb3NpdGlvbigpOworICAgIElubGluZUl0ZXJhdG9yIG9sZEVuZCA9IGVuZDsKKworICAg
IGNvbnN0IFNlZ21lbnRMaXN0JiBzZWdtZW50cyA9IGV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby0+
c2VnbWVudHMoKTsKKyAgICBTZWdtZW50UmFuZ2VMaXN0JiBzZWdtZW50UmFuZ2VzID0gZXhjbHVz
aW9uU2hhcGVJbnNpZGVJbmZvLT5zZWdtZW50UmFuZ2VzKCk7CisKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgc2VnbWVudHMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgSW5saW5lSXRlcmF0
b3Igc2VnbWVudFN0YXJ0ID0gcmVzb2x2ZXIucG9zaXRpb24oKTsKKyAgICAgICAgZW5kID0gbmV4
dFNlZ21lbnRCcmVhayhyZXNvbHZlciwgbGluZUluZm8sIHJlbmRlclRleHRJbmZvLCBsYXN0Rmxv
YXRGcm9tUHJldmlvdXNMaW5lLCBjb25zZWN1dGl2ZUh5cGhlbmF0ZWRMaW5lcywgd29yZE1lYXN1
cmVtZW50cyk7CisKKyAgICAgICAgQVNTRVJUKHNlZ21lbnRSYW5nZXMuc2l6ZSgpID09IGkpOwor
ICAgICAgICBpZiAocmVzb2x2ZXIucG9zaXRpb24oKSA9PSBlbmQpIHsKKyAgICAgICAgICAgIC8v
IE5vdGhpbmcgZml0IHRoaXMgc2VnbWVudAorICAgICAgICAgICAgc2VnbWVudFJhbmdlcy5hcHBl
bmQoTGluZVNlZ21lbnRSYW5nZShzZWdtZW50U3RhcnQsIHNlZ21lbnRTdGFydCkpOworICAgICAg
ICAgICAgcmVzb2x2ZXIuc2V0UG9zaXRpb25JZ25vcmluZ05lc3RlZElzb2xhdGVzKHNlZ21lbnRT
dGFydCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBOb3RlIHRoYXQgcmVzb2x2
ZXIucG9zaXRpb24gaXMgYWxyZWFkeSBza2lwcGluZyBzb21lIG9mIHRoZSB3aGl0ZSBzcGFjZSBh
dCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsaW5lLAorICAgICAgICAgICAgLy8gc28gdGhhdCdzIHdo
eSBzZWdtZW50U3RhcnQgbWlnaHQgYmUgZGlmZmVyZW50IHRoYW4gcmVzb2x2ZXIucG9zaXRpb24o
KS4KKyAgICAgICAgICAgIExpbmVTZWdtZW50UmFuZ2UgcmFuZ2UocmVzb2x2ZXIucG9zaXRpb24o
KSwgZW5kKTsKKyAgICAgICAgICAgIHNlZ21lbnRSYW5nZXMuYXBwZW5kKHJhbmdlKTsKKyAgICAg
ICAgICAgIHJlc29sdmVyLnNldFBvc2l0aW9uKGVuZCwgbnVtYmVyT2ZJc29sYXRlQW5jZXN0b3Jz
KGVuZCkpOworCisgICAgICAgICAgICBpZiAobGluZUluZm8ucHJldmlvdXNMaW5lQnJva2VDbGVh
bmx5KCkpIHsKKyAgICAgICAgICAgICAgICAvLyBJZiB3ZSBoaXQgYSBuZXcgbGluZSBicmVhaywg
anVzdCBzdG9wIGFkZGluZyBhbnl0aGluZyB0byB0aGlzIGxpbmUuCisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmVzb2x2ZXIuc2V0
UG9zaXRpb25JZ25vcmluZ05lc3RlZElzb2xhdGVzKG9sZEVuZCk7CisgICAgcmV0dXJuIGVuZDsK
KyNlbmRpZgorfQorCitJbmxpbmVJdGVyYXRvciBSZW5kZXJCbG9jazo6TGluZUJyZWFrZXI6Om5l
eHRTZWdtZW50QnJlYWsoSW5saW5lQmlkaVJlc29sdmVyJiByZXNvbHZlciwgTGluZUluZm8mIGxp
bmVJbmZvLCBSZW5kZXJUZXh0SW5mbyYgcmVuZGVyVGV4dEluZm8sIEZsb2F0aW5nT2JqZWN0KiBs
YXN0RmxvYXRGcm9tUHJldmlvdXNMaW5lLCB1bnNpZ25lZCBjb25zZWN1dGl2ZUh5cGhlbmF0ZWRM
aW5lcywgV29yZE1lYXN1cmVtZW50cyYgd29yZE1lYXN1cmVtZW50cykKK3sKICAgICByZXNldCgp
OwogCiAgICAgQVNTRVJUKHJlc29sdmVyLnBvc2l0aW9uKCkucm9vdCgpID09IG1fYmxvY2spOwpA
QCAtMjkwNCw2ICszMDI5LDggQEAgSW5saW5lSXRlcmF0b3IgUmVuZGVyQmxvY2s6OkxpbmVCcmVh
a2VyOjpuZXh0TGluZUJyZWFrKElubGluZUJpZGlSZXNvbHZlciYgcmVzb2wKICAgICAgICAgfQog
ICAgIH0KIAorICAgIC8vIEZJWE1FIEJ1ZyAxMDAwNDk6IFdlIGRvIG5vdCBuZWVkIHRvIGNvbnN1
bWUgaW5wdXQgaW4gYSBtdWx0aS1zZWdtZW50IGxpbmUKKyAgICAvLyB1bmxlc3Mgbm8gc2VnbWVu
dCB3aWxsLgogICAgIC8vIG1ha2Ugc3VyZSB3ZSBjb25zdW1lIGF0IGxlYXN0IG9uZSBjaGFyL29i
amVjdC4KICAgICBpZiAobEJyZWFrID09IHJlc29sdmVyLnBvc2l0aW9uKCkpCiAgICAgICAgIGxC
cmVhay5pbmNyZW1lbnQoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2MzEwYWVhMDQ3MDVhMjg0YmNkNDEzNmJlMDIzZmIw
OWQyOWIxNzMzLi4yZGE5ZDg2NzVkMTNiNjU4ZDQ0MzRhZjA1MWU0NDk4OGJlNDRiMmYzIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjIgQEAKKzIwMTItMTItMDMgIEJlYXIgVHJhdmlzICA8YmV0cmF2aXNAYWRv
YmUuY29tPgorCisgICAgICAgIFtDU1MgRXhjbHVzaW9uc10gRW5hYmxlIHNoYXBlLWluc2lkZSBm
b3IgbXVsdGlwbGUtc2VnbWVudCBwb2x5Z29ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE4NzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgdGVzdHMgZm9yIG11bHRpcGxlIHNlZ21lbnQgcG9s
eWdvbnMuIFRoZXNlIHRlc3RzIG1ha2Ugc3VyZSB0aGF0IHRleHQgY2FuIGJlCisgICAgICAgIHBy
b3Blcmx5IGJyb2tlbiB1cCBpbnRvIG11bHRpcGxlIHNlZ21lbnRzIHBlciBsaW5lIHRvIGZpdCBp
bnRvIGEgc2hhcGUtaW5zaWRlLgorCisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWlu
c2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAxLWV4cGVjdGVkLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRl
LW11bHRpcGxlLXNlZ21lbnRzLTAwMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V4Y2x1
c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDItZXhw
ZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lk
ZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAyLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNl
Z21lbnRzLTAwMy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lv
bnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDMuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNp
ZGUtbXVsdGlwbGUtc2VnbWVudHMtMDA0LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNlZ21l
bnRzLTAwNC5odG1sOiBBZGRlZC4KKwogMjAxMi0xMi0wMyAgWGFuIExvcGV6ICA8eGxvcGV6QGln
YWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBnYXJkZW5pbmcuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvcmVzb3VyY2VzL211bHRpLXNlZ21lbnQtcG9seWdv
bi5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9yZXNvdXJjZXMvbXVsdGktc2VnbWVu
dC1wb2x5Z29uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2MzQ2ZTE2ODE2NzAwZTk1N2IyMjQ3MDViNTk2NTBl
NmM2NjkzZmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMv
cmVzb3VyY2VzL211bHRpLXNlZ21lbnQtcG9seWdvbi5qcwpAQCAtMCwwICsxLDM3IEBACitmdW5j
dGlvbiBnZW5lcmF0ZVBvbHlnb24od2lkdGgsIGhlaWdodCwgZm9udFNpemUsIHBvaW50cywgY29u
dGVudCwgZWxlbWVudElkKSB7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIHdp
bmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0Q1NTRXhjbHVzaW9uc0VuYWJsZWQodHJ1ZSk7Cisg
ICAgdmFyIGRpdiA9IGNyZWF0ZU9ySW5zZXJ0KGVsZW1lbnRJZCk7CisgICAgdmFyIHBvbHlnb24g
PSBwb2ludHMubWFwKGZ1bmN0aW9uKGVsZW0sIGluZGV4LCBhcnJheSkgeworICAgICAgICByZXR1
cm4gZWxlbS50b1N0cmluZygpICsgJ3B4JyArIChpbmRleCA8IGFycmF5Lmxlbmd0aCAtIDEgJiYg
aW5kZXggJSAyID09IDEgPyAnLCcgOiAnJyk7CisgICAgfSkuam9pbignICcpOworICAgIHBvbHln
b24gPSAncG9seWdvbignICsgcG9seWdvbiArICcpJzsKKyAgICBkaXYuc3R5bGUuc2V0UHJvcGVy
dHkoJy13ZWJraXQtc2hhcGUtaW5zaWRlJywgcG9seWdvbik7CisgICAgZGl2LnN0eWxlLnNldFBy
b3BlcnR5KCd3aWR0aCcsIHdpZHRoICsgJ3B4Jyk7CisgICAgZGl2LnN0eWxlLnNldFByb3BlcnR5
KCdoZWlnaHQnLCBoZWlnaHQgKyAncHgnKTsKKyAgICBkaXYuc3R5bGUuc2V0UHJvcGVydHkoJ2Zv
bnQnLCBmb250U2l6ZSArICdweC8xIEFoZW0sIHNhbnMtc2VyaWYnKTsKKyAgICBkaXYuc3R5bGUu
c2V0UHJvcGVydHkoJ2NvbG9yJywgJ2dyZWVuJyk7CisgICAgZGl2LnN0eWxlLnNldFByb3BlcnR5
KCd3b3JkLXdyYXAnLCAnYnJlYWstd29yZCcpOworICAgIGRpdi5pbm5lckhUTUwgPSBjb250ZW50
OworfQorCitmdW5jdGlvbiBzaW11bGF0ZVdpdGhUZXh0KHdpZHRoLCBoZWlnaHQsIGZvbnRTaXpl
LCBjb250ZW50LCBlbGVtZW50SWQpIHsKKyAgICB2YXIgZGl2ID0gY3JlYXRlT3JJbnNlcnQoZWxl
bWVudElkKTsKKyAgICBkaXYuc3R5bGUuc2V0UHJvcGVydHkoJ3dpZHRoJywgd2lkdGggKyAncHgn
KTsKKyAgICBkaXYuc3R5bGUuc2V0UHJvcGVydHkoJ2hlaWdodCcsIGhlaWdodCArICdweCcpOwor
ICAgIGRpdi5zdHlsZS5zZXRQcm9wZXJ0eSgnZm9udCcsIGZvbnRTaXplICsgJ3B4LzEgQWhlbSwg
c2Fucy1zZXJpZicpOworICAgIGRpdi5zdHlsZS5zZXRQcm9wZXJ0eSgnY29sb3InLCAnZ3JlZW4n
KTsKKyAgICBkaXYuaW5uZXJIVE1MID0gY29udGVudDsKK30KKworZnVuY3Rpb24gY3JlYXRlT3JJ
bnNlcnQoZWxlbWVudElkKSB7CisgICAgaWYgKGVsZW1lbnRJZCkKKyAgICAgICAgcmV0dXJuIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCk7CisKKyAgICB2YXIgZGl2ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgaWYgKGRvY3VtZW50LmJvZHkuY2hpbGROb2Rl
cy5sZW5ndGgpCisgICAgICAgIGRvY3VlbW50LmJvZHkuaW5zZXJ0QmVmb3JlKGRpdiwgZG9jdW1l
bnQuYm9keS5jaGlsZE5vZGVzWzBdKTsKKyAgICBlbHNlCisgICAgICAgIGRvY3VtZW50LmJvZHku
YXBwZW5kQ2hpbGQoZGl2KTsKKyAgICByZXR1cm4gZGl2OworfQpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1p
bnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNlZ21lbnRzLTAwMS1leHBlY3RlZC5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtbXVs
dGlwbGUtc2VnbWVudHMtMDAxLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjE4OWUzZjQyODc4
NGFhNWMyMmFiZTMwZTNlMGU2ZTRjZDU1M2I1YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNl
Z21lbnRzLTAwMS1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsOSBAQAorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPScuLi9yZXNvdXJjZXMvbXVsdGktc2VnbWVudC1wb2x5Z29uLmpzJz48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ic2ltdWxhdGVXaXRoVGV4dCgyNTAsIDEwMCwg
NTAsICdYWCBYWCBYWFhYWCcpIj4KK1RoaXMgdGVzdCByZXF1aXJlcyB0aGUgQWhlbSBmb250LCBh
bmQgc2hvdWxkIGRpc3BsYXkgYSA1eDIgZ3JpZCBvZiBncmVlbiBzcXVhcmVzLCB3aXRoIG9uZSBt
aXNzaW5nIGluIHRoZSBjZW50ZXIgb2YgdGhlIHRvcCByb3cuCitJdCB0ZXN0cyB0aGF0IGEgbGlu
ZSBtYXkgY29udGFpbiBtdWx0aXBsZSBzZWdtZW50cyBvZiB0ZXh0LgorPC9ib2R5PgorPC9odG1s
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNlZ21lbnRz
LTAwMS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFw
ZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAxLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGI2ZTZlMWQ4
OGM3ZGVkYjllM2VkZDMzMWUzNjE2ZWUwOTdmYmZlMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxl
LXNlZ21lbnRzLTAwMS5odG1sCkBAIC0wLDAgKzEsOSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgc3JjPScuLi9yZXNvdXJjZXMvbXVsdGktc2VnbWVudC1wb2x5Z29uLmpzJz48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5IG9ubG9hZD0iZ2VuZXJhdGVQb2x5Z29uKDI1MCwgMTAwLCA1MCwgWzAs
MCwxMDAsMCwxMDAsMjUsMTUwLDI1LDE1MCwwLDI1MCwwLDI1MCwxMDAsMCwxMDBdLCAnWFhYWFhY
WFhYJykiPgorVGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBBaGVtIGZvbnQsIGFuZCBzaG91bGQgZGlz
cGxheSBhIDV4MiBncmlkIG9mIGdyZWVuIHNxdWFyZXMsIHdpdGggb25lIG1pc3NpbmcgaW4gdGhl
IGNlbnRlciBvZiB0aGUgdG9wIHJvdy4KK0l0IHRlc3RzIHRoYXQgYSBsaW5lIG1heSBjb250YWlu
IG11bHRpcGxlIHNlZ21lbnRzIG9mIHRleHQuCis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25z
L3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAyLWV4cGVjdGVk
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWlu
c2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDItZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNmJk
YWUyYmI4Y2ExNTBhNjhkYWRiODNjZTJjNDEyOTdmOGNlZDA1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtbXVs
dGlwbGUtc2VnbWVudHMtMDAyLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSw5IEBACis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Jy4uL3Jlc291cmNlcy9tdWx0aS1zZWdtZW50LXBvbHlnb24u
anMnPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJzaW11bGF0ZVdpdGhUZXh0KDI1
MCwgMTAwLCA1MCwgJ1hYWFhYIFhYIFhYJykiPgorVGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBBaGVt
IGZvbnQsIGFuZCBzaG91bGQgZGlzcGxheSBhIDV4MiBncmlkIG9mIGdyZWVuIHNxdWFyZXMsIHdp
dGggb25lIG1pc3NpbmcgaW4gdGhlIGNlbnRlciBvZiB0aGUgYm90dG9tIHJvdy4KK0l0IHRlc3Rz
IHRoYXQgYSBsaW5lIG1heSBjb250YWluIG11bHRpcGxlIHNlZ21lbnRzIG9mIHRleHQuCis8L2Jv
ZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlw
bGUtc2VnbWVudHMtMDAyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUt
aW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDIuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42NTExYjY5ZmQ3MTcyNjYwYWJhZDI1NDk2OTMzN2I5NGVjM2U1YmFlCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNp
ZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAyLmh0bWwKQEAgLTAsMCArMSw5IEBACis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Jy4uL3Jlc291cmNlcy9tdWx0aS1zZWdtZW50LXBvbHlnb24uanMn
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJnZW5lcmF0ZVBvbHlnb24oMjUwLCAx
MDAsIDUwLCBbMCwwLDI1MCwwLDI1MCwxMDEsMTUwLDEwMSwxNTAsNzUsMTAwLDc1LDEwMCwxMDEs
MCwxMDFdLCAnWFhYWFhYWFhYJykiPgorVGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBBaGVtIGZvbnQs
IGFuZCBzaG91bGQgZGlzcGxheSBhIDV4MiBncmlkIG9mIGdyZWVuIHNxdWFyZXMsIHdpdGggb25l
IG1pc3NpbmcgaW4gdGhlIGNlbnRlciBvZiB0aGUgYm90dG9tIHJvdy4KK0l0IHRlc3RzIHRoYXQg
YSBsaW5lIG1heSBjb250YWluIG11bHRpcGxlIHNlZ21lbnRzIG9mIHRleHQuCis8L2JvZHk+Cis8
L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUtc2Vn
bWVudHMtMDAzLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hh
cGUtaW5zaWRlL3NoYXBlLWluc2lkZS1tdWx0aXBsZS1zZWdtZW50cy0wMDMtZXhwZWN0ZWQuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wNTUxZDVjZjE5ZGRhNjFjZGNhYjRjZjQyZjEzZDYyYjFmODVlYTYwCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lk
ZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDAzLWV4cGVjdGVkLmh0bWwKQEAgLTAs
MCArMSw5IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Jy4uL3Jlc291cmNlcy9tdWx0
aS1zZWdtZW50LXBvbHlnb24uanMnPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJz
aW11bGF0ZVdpdGhUZXh0KDI1MCwgMTAwLCA1MCwgJ1hYPGJyLz5YWCcpIj4KK1RoaXMgdGVzdCBy
ZXF1aXJlcyB0aGUgQWhlbSBmb250LCBhbmQgc2hvdWxkIGRpc3BsYXkgYSAyeDIgZ3JlZW4gc3F1
YXJlLgorSXQgdGVzdHMgdGhhdCBhIGxpbmUgYnJlYWsgbW92ZXMgdGV4dCBkb3duLCBub3QganVz
dCB0byB0aGUgbmV4dCBzZWdtZW50LgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFw
ZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNlZ21lbnRzLTAwMy5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUt
c2VnbWVudHMtMDAzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDUxNTk4MjgyMGQwZWEyZjMzNTI1MWVmMzQ3
NGRhNDAxMjAzZTY4OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVz
aW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11bHRpcGxlLXNlZ21lbnRzLTAwMy5odG1s
CkBAIC0wLDAgKzEsOSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPScuLi9yZXNvdXJj
ZXMvbXVsdGktc2VnbWVudC1wb2x5Z29uLmpzJz48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9u
bG9hZD0iZ2VuZXJhdGVQb2x5Z29uKDI1MCwgMTAwLCA1MCwgWzAsMCwxMDAsMCwxMDAsMjUsMTUw
LDI1LDE1MCwwLDI1MCwwLDI1MCwxMDAsMCwxMDBdLCAnWFg8YnIvPlhYJykiPgorVGhpcyB0ZXN0
IHJlcXVpcmVzIHRoZSBBaGVtIGZvbnQsIGFuZCBzaG91bGQgZGlzcGxheSBhIDJ4MiBncmVlbiBz
cXVhcmUuCitJdCB0ZXN0cyB0aGF0IGEgbGluZSBicmVhayBtb3ZlcyB0ZXh0IGRvd24sIG5vdCBq
dXN0IHRvIHRoZSBuZXh0IHNlZ21lbnQuCis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3No
YXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDA0LWV4cGVjdGVkLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lk
ZS1tdWx0aXBsZS1zZWdtZW50cy0wMDQtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YmQ1OGQy
NWI0ZGY5NDE5MDYyZTI2N2RiZTNkNTFjMzYwY2RjMDllCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlw
bGUtc2VnbWVudHMtMDA0LWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwyOCBAQAorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQgc3JjPScuLi9yZXNvdXJjZXMvbXVsdGktc2VnbWVudC1wb2x5Z29uLmpz
Jz48L3NjcmlwdD4KKzxzY3JpcHQ+CisgICAgd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgewor
ICAgICAgICBzaW11bGF0ZVdpdGhUZXh0KDI1MCwgMTAwLCAxMDAsICJYPHNwYW4gc3R5bGU9J2Zv
bnQtc2l6ZTouNWVtJz4gPC9zcGFuPlgiLCAnc2hhcGUxJyk7CisgICAgICAgIHNpbXVsYXRlV2l0
aFRleHQoMjUwLCAxMDAsIDUwLCAiPHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToyZW0nPlg8L3NwYW4+
IFhYIiwgJ3NoYXBlMicpOworICAgICAgICBzaW11bGF0ZVdpdGhUZXh0KDI1MCwgMTAwLCA1MCwg
IlhYIDxzcGFuIHN0eWxlPSdmb250LXNpemU6MmVtJz5YPC9zcGFuPiIsICdzaGFwZTMnKTsKKyAg
ICB9Cis8L3NjcmlwdD4KKzxzdHlsZT4KKyAgICAjc2hhcGUxLCAjc2hhcGUyLCAjc2hhcGUzIHsK
KyAgICAgICAgbWFyZ2luOiAxMHB4IDA7CisgICAgICAgIHZlcnRpY2FsLWFsaWduOiBib3R0b207
CisgICAgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIFRoaXMgdGVzdCByZXF1aXJl
cyB0aGUgQWhlbSBmb250LCBhbmQgdGVzdHMgc2hvdWxkIGFsbCBkaXNwbGF5IG9uIGEgNXgyIGdy
aWQgb2YgZ3JlZW4KKyAgICBzcXVhcmVzLiBUaGVzZSB0ZXN0cyBjaGVjayB0aGUgaW50ZXJhY3Rp
b24gb2Ygc2hhcGUtaW5zaWRlIHdpdGggc3BhbnMuCisgICAgPGRpdiBpZD0nc2hhcGUxJz48L2Rp
dj4KKyAgICBUaGlzIHRlc3Qgc2hvdWxkIGRpc3BsYXkgdHdvIDJ4MiBncmVlbiBzcXVhcmVzLCBz
ZXBhcmF0ZWQgYnkgYSAxIHVuaXQgc3BhY2UuCisgICAgPGRpdiBpZD0nc2hhcGUyJz48L2Rpdj4K
KyAgICBUaGlzIHRlc3Qgc2hvdWxkIGRpc3BsYXkgYSAyeDIgZ3JlZW4gc3F1YXJlLCBhbmQgYSAy
eDEgcmVjdGFuZ2xlIHNlcGFyYXRlZCBieSBhIDEgdW5pdCBzcGFjZS4KKyAgICA8ZGl2IGlkPSdz
aGFwZTMnPjwvZGl2PgorICAgIFRoaXMgdGVzdCBzaG91bGQgZGlzcGxheSBhIDJ4MSBncmVlbiBy
ZWN0YW5nbGUsIGFuZCBhIDJ4MiBzcXVhcmUgc2VwYXJhdGVkIGJ5IGEgMSB1bml0IHNwYWNlLgor
PC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW11
bHRpcGxlLXNlZ21lbnRzLTAwNC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3No
YXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtbXVsdGlwbGUtc2VnbWVudHMtMDA0Lmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNDNmNTkyYmRmMTQyNDMyYWE2NWFmOWYyZDEzYzg4MWViZjg0MTU5MAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUt
aW5zaWRlLW11bHRpcGxlLXNlZ21lbnRzLTAwNC5odG1sCkBAIC0wLDAgKzEsMjkgQEAKKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0nLi4vcmVzb3VyY2VzL211bHRpLXNlZ21lbnQtcG9seWdv
bi5qcyc+PC9zY3JpcHQ+Cis8c2NyaXB0PgorICAgIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigp
IHsKKyAgICAgICAgdmFyIHBvbHlnb24gPSBbMCwwLDEwMCwwLDEwMCwyNSwxNTAsMjUsMTUwLDAs
MjUwLDAsMjUwLDEwMCwwLDEwMF07CisgICAgICAgIGdlbmVyYXRlUG9seWdvbigyNTAsIDEwMCwg
NTAsIHBvbHlnb24sICI8c3BhbiBzdHlsZT0nZm9udC1zaXplOjJlbSc+WFg8L3NwYW4+IiwgJ3No
YXBlMScpOworICAgICAgICBnZW5lcmF0ZVBvbHlnb24oMjUwLCAxMDAsIDUwLCBwb2x5Z29uLCAi
PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToyZW0nPlg8L3NwYW4+WFgiLCAnc2hhcGUyJyk7CisgICAg
ICAgIGdlbmVyYXRlUG9seWdvbigyNTAsIDEwMCwgNTAsIHBvbHlnb24sICJYWDxzcGFuIHN0eWxl
PSdmb250LXNpemU6MmVtJz5YPC9zcGFuPiIsICdzaGFwZTMnKTsKKyAgICB9Cis8L3NjcmlwdD4K
KzxzdHlsZT4KKyAgICAjc2hhcGUxLCAjc2hhcGUyLCAjc2hhcGUzIHsKKyAgICAgICAgbWFyZ2lu
OiAxMHB4IDA7CisgICAgICAgIHZlcnRpY2FsLWFsaWduOiBib3R0b207CisgICAgfQorPC9zdHls
ZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIFRoaXMgdGVzdCByZXF1aXJlcyB0aGUgQWhlbSBmb250
LCBhbmQgdGVzdHMgc2hvdWxkIGFsbCBkaXNwbGF5IG9uIGEgNXgyIGdyaWQgb2YgZ3JlZW4KKyAg
ICBzcXVhcmVzLiBUaGVzZSB0ZXN0cyBjaGVjayB0aGUgaW50ZXJhY3Rpb24gb2Ygc2hhcGUtaW5z
aWRlIHdpdGggc3BhbnMuCisgICAgPGRpdiBpZD0nc2hhcGUxJz48L2Rpdj4KKyAgICBUaGlzIHRl
c3Qgc2hvdWxkIGRpc3BsYXkgdHdvIDJ4MiBncmVlbiBzcXVhcmVzLCBzZXBhcmF0ZWQgYnkgYSAx
IHVuaXQgc3BhY2UuCisgICAgPGRpdiBpZD0nc2hhcGUyJz48L2Rpdj4KKyAgICBUaGlzIHRlc3Qg
c2hvdWxkIGRpc3BsYXkgYSAyeDIgZ3JlZW4gc3F1YXJlLCBhbmQgYSAyeDEgcmVjdGFuZ2xlIHNl
cGFyYXRlZCBieSBhIDEgdW5pdCBzcGFjZS4KKyAgICA8ZGl2IGlkPSdzaGFwZTMnPjwvZGl2Pgor
ICAgIFRoaXMgdGVzdCBzaG91bGQgZGlzcGxheSBhIDJ4MSBncmVlbiByZWN0YW5nbGUsIGFuZCBh
IDJ4MiBzcXVhcmUgc2VwYXJhdGVkIGJ5IGEgMSB1bml0IHNwYWNlLgorPC9ib2R5PgorPC9odG1s
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
      

    </bug>

</bugzilla>