<?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>105787</bug_id>
          
          <creation_ts>2012-12-27 02:41:16 -0800</creation_ts>
          <short_desc>[Texmap] Refactor code related to debug border and repaint count.</short_desc>
          <delta_ts>2013-02-03 17:11:35 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>105781</dependson>
    
    <dependson>107196</dependson>
          <blocked>108779</blocked>
    
    <blocked>107073</blocked>
    
    <blocked>107099</blocked>
    
    <blocked>107198</blocked>
    
    <blocked>107910</blocked>
    
    <blocked>107942</blocked>
    
    <blocked>108401</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dongseong Hwang">dongseong.hwang</reporter>
          <assigned_to name="Dongseong Hwang">dongseong.hwang</assigned_to>
          <cc>abecsi</cc>
    
    <cc>bruno.abinader</cc>
    
    <cc>cgarcia</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dino</cc>
    
    <cc>d-r</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kenneth</cc>
    
    <cc>menard</cc>
    
    <cc>mrobinson</cc>
    
    <cc>noam</cc>
    
    <cc>philn</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zarvai</cc>
    
    <cc>zeno</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>797486</commentid>
    <comment_count>0</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-27 02:41:16 -0800</bug_when>
    <thetext>Currently, TextureMapperBackingStore, CoordinatedBackingStore and
GraphicsLayerTextureMapper have duplicated code to draw debug border or repaint
count. This patch refactors that all platform layers draw debug border and repaint
count in the consistent way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797487</commentid>
    <comment_count>1</comment_count>
      <attachid>180783</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-27 02:47:58 -0800</bug_when>
    <thetext>Created attachment 180783
Patch : [TexMap] Refactor code related to debug border and repaint count. [1/2]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797488</commentid>
    <comment_count>2</comment_count>
      <attachid>180784</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-27 02:56:40 -0800</bug_when>
    <thetext>Created attachment 180784
WIP Patch : [TexMap] Refactor code related to debug border and repaint count. [2/2]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797491</commentid>
    <comment_count>3</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-27 03:07:43 -0800</bug_when>
    <thetext>Not for review: I need to test more.

I need feedback, especially how to deal with [QT_]WEBKIT_SHOW_COMPOSITING_DEBUG_VISUALS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797493</commentid>
    <comment_count>4</comment_count>
      <attachid>180785</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-27 03:17:34 -0800</bug_when>
    <thetext>Created attachment 180785
Patch : [TexMap] Refactor code related to debug border and repaint count. [2/2]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797551</commentid>
    <comment_count>5</comment_count>
      <attachid>180783</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-12-27 07:29:24 -0800</bug_when>
    <thetext>Comment on attachment 180783
Patch : [TexMap] Refactor code related to debug border and repaint count. [1/2]

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

I wanted to do this for ages but was lazy :)
However I have some comments.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:121
&gt; +    TextureMapperPaintParameters parameters;
&gt; +    parameters.modelViewMatrix = transform;
&gt; +    parameters.opacity = options.opacity;
&gt; +    parameters.mask = options.mask.get();

Parameters and options are colliding here.
We should move TextureMapperPaintOptions to be defined in TextureMapperLayer.cpp, and have an internal member of TextureMapperPaintParameters.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayer.h:32
&gt; +class TextureMapperPaintParameters {

This should be in TextureMapper.h, maybe later we&apos;d want to change the signature of TextureMapper functions to use it.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayer.h:34
&gt; +    TransformationMatrix modelViewMatrix;

transform instead of modelViewMatrix.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayer.h:36
&gt; +    BitmapTexture* mask;

RefPtr

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayer.h:38
&gt; +    TextureMapperPaintParameters()

Any reason why targetRect is left out?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797555</commentid>
    <comment_count>6</comment_count>
      <attachid>180785</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-12-27 07:42:52 -0800</bug_when>
    <thetext>Comment on attachment 180785
Patch : [TexMap] Refactor code related to debug border and repaint count. [2/2]

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

This is actually a big change to how we use repaint counters, which would make them slow and unusable since we draw text and upload it for every paint even if there is no update.

&gt; Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.cpp:402
&gt; +    updateDebugBorderAndRepaintCount();

This is wrong :)
repaint counter should be updated when the backing store is actually updated, not when the layer is flushed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797725</commentid>
    <comment_count>7</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-27 18:48:23 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 180785 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=180785&amp;action=review
&gt; 
&gt; This is actually a big change to how we use repaint counters, which would make them slow and unusable since we draw text and upload it for every paint even if there is no update.

Very valid concern. Currently CoordinatedBackingStore draws repaint count in this slow way. I apply this way to all platform layers. I think we can refactor later. And IMHO it would be not bad to draw debug visual slowly.

My later improvement idea is to prepare repaint count texture in TextureMapperLayer::flushCompositingStateForThisLayerOnly()

if (changeMask &amp; RepaintCountChange) {
    m_state.repaintCount = graphicsLayer-&gt;repaintCount();
    prepare texture!!
}


&gt; &gt; Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.cpp:402
&gt; &gt; +    updateDebugBorderAndRepaintCount();
&gt; 
&gt; This is wrong :)
&gt; repaint counter should be updated when the backing store is actually updated, not when the layer is flushed.

Yes, so I checked several conditions in updateDebugBorderAndRepaintCount().

// only WK1 increases repaint count at this point.
if (!m_hasOwnBackingStore)
    return;

// If the layer has a backing store and dirty rect, we increases repaint count.
bool needsToRepaint = shouldHaveBackingStore() &amp;&amp; (m_needsDisplay || !m_needsDisplayRect.isEmpty())</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797726</commentid>
    <comment_count>8</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-27 18:56:33 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 180783 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=180783&amp;action=review
&gt; 
&gt; I wanted to do this for ages but was lazy :)
&gt; However I have some comments.

While you improve overall performance of AC like background color, I can contribute like this readability refactoring :)

&gt; &gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:121
&gt; &gt; +    TextureMapperPaintParameters parameters;
&gt; &gt; +    parameters.modelViewMatrix = transform;
&gt; &gt; +    parameters.opacity = options.opacity;
&gt; &gt; +    parameters.mask = options.mask.get();
&gt; 
&gt; Parameters and options are colliding here.
&gt; We should move TextureMapperPaintOptions to be defined in TextureMapperLayer.cpp, and have an internal member of TextureMapperPaintParameters.

It is something like what I want to hear from you.

&gt; &gt; Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayer.h:38
&gt; &gt; +    TextureMapperPaintParameters()
&gt; 
&gt; Any reason why targetRect is left out?

For example, CoordinatedBackingStore needs to make new TextureMapperPaintParameters per tile if CoordinatedBackingStore stores targetRect.
However, we can store targetRect in TextureMapperPaintParameters if we want :)

And there is no reason TextureMapper is left out.

Do you think we should store all parameters including TextureMapper and targetRect in TextureMapperPaintParameters?



btw, could you review Bug 105760 and Bug 105781 firstly. This bug depends on both physically.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797809</commentid>
    <comment_count>9</comment_count>
      <attachid>180852</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-28 01:09:56 -0800</bug_when>
    <thetext>Created attachment 180852
Patch : [TexMap] Refactor code related to debug border and repaint count. [1/2]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797821</commentid>
    <comment_count>10</comment_count>
      <attachid>180852</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-28 01:43:38 -0800</bug_when>
    <thetext>Comment on attachment 180852
Patch : [TexMap] Refactor code related to debug border and repaint count. [1/2] 

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

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:33
&gt; +    TextureMapperPaintParameters parameters;

I don&apos;t store targetRect in TextureMapperPaintParameters because it is weird for TextureMapperPaintOptions to have targetRect as well as the tile related reason as I mentioned earlier.

btw, I encounter new problem. I will add new member into TextureMapperPaintParameters:
    bool showDebugBorders;
    Color debugBorderColor;
    float debugBorderWidth;
    bool showRepaintCounter;
    int repaintCount;

But it is weird for TextureMapperPaintOptions to have those new members.

IMO, TextureMapperPaintOptions has duplicated members although it collides TextureMapperPaintParameters because both class&apos;s purpose is different.
How do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797824</commentid>
    <comment_count>11</comment_count>
      <attachid>180856</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-28 01:48:47 -0800</bug_when>
    <thetext>Created attachment 180856
Not for Review(WIP) : [TexMap] Refactor code related to debug border and repaint count. [2/2]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797827</commentid>
    <comment_count>12</comment_count>
      <attachid>180856</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-28 01:51:54 -0800</bug_when>
    <thetext>Comment on attachment 180856
Not for Review(WIP) : [TexMap] Refactor code related to debug border and repaint count. [2/2] 

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

To clarify my problem, I submitted this WIP second patch.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapper.h:66
&gt; +    int repaintCount;

5 members is not needed by TextureMapperPaintOptions although TextureMapperPaintParameters is a member of TextureMapperPaintOptions.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:117
&gt; +    parameters.repaintCount = m_state.repaintCount;

This ugly code is still needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797831</commentid>
    <comment_count>13</comment_count>
      <attachid>180852</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-12-28 01:59:48 -0800</bug_when>
    <thetext>Comment on attachment 180852
Patch : [TexMap] Refactor code related to debug border and repaint count. [1/2] 

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

I&apos;m doing some work on mask code, which would make it so that we actually remove the &quot;mask&quot; parameter from textureMapperPlatformLayer.
I&apos;m thinking overloads of TextureMapperLayer should *always* support only transform and opacity, and for everything else they should provide a BitmapTexture and let TextureMapperLayer handle it.

&gt;&gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:33
&gt;&gt; +    TextureMapperPaintParameters parameters;
&gt; 
&gt; I don&apos;t store targetRect in TextureMapperPaintParameters because it is weird for TextureMapperPaintOptions to have targetRect as well as the tile related reason as I mentioned earlier.
&gt; 
&gt; btw, I encounter new problem. I will add new member into TextureMapperPaintParameters:
&gt;     bool showDebugBorders;
&gt;     Color debugBorderColor;
&gt;     float debugBorderWidth;
&gt;     bool showRepaintCounter;
&gt;     int repaintCount;
&gt; 
&gt; But it is weird for TextureMapperPaintOptions to have those new members.
&gt; 
&gt; IMO, TextureMapperPaintOptions has duplicated members although it collides TextureMapperPaintParameters because both class&apos;s purpose is different.
&gt; How do you think?

I think it&apos;s ok to have duplicated members. I meant they collide in a way where it&apos;s hard for a person reading the code to understand which is which.
Regarding the repaint counters - it should not be part of the paint parameters. It should be part of the &quot;updateContents&quot; process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799228</commentid>
    <comment_count>14</comment_count>
      <attachid>180852</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-02 21:01:07 -0800</bug_when>
    <thetext>Comment on attachment 180852
Patch : [TexMap] Refactor code related to debug border and repaint count. [1/2] 

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

&gt;&gt;&gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:33
&gt;&gt;&gt; +    TextureMapperPaintParameters parameters;
&gt;&gt; 
&gt;&gt; I don&apos;t store targetRect in TextureMapperPaintParameters because it is weird for TextureMapperPaintOptions to have targetRect as well as the tile related reason as I mentioned earlier.
&gt;&gt; 
&gt;&gt; btw, I encounter new problem. I will add new member into TextureMapperPaintParameters:
&gt;&gt;     bool showDebugBorders;
&gt;&gt;     Color debugBorderColor;
&gt;&gt;     float debugBorderWidth;
&gt;&gt;     bool showRepaintCounter;
&gt;&gt;     int repaintCount;
&gt;&gt; 
&gt;&gt; But it is weird for TextureMapperPaintOptions to have those new members.
&gt;&gt; 
&gt;&gt; IMO, TextureMapperPaintOptions has duplicated members although it collides TextureMapperPaintParameters because both class&apos;s purpose is different.
&gt;&gt; How do you think?
&gt; 
&gt; I think it&apos;s ok to have duplicated members. I meant they collide in a way where it&apos;s hard for a person reading the code to understand which is which.
&gt; Regarding the repaint counters - it should not be part of the paint parameters. It should be part of the &quot;updateContents&quot; process.

How about renaming from TextureMapperPaintParameters to TextureMapperPlatformLayerPaintOptions.

IMO it is natural for repaintCount to belong to the paint parameters because we count repaintCount based on GraphicsLayer, not backing store.
So TextureMapperLayer holds repaintCount and pass to backing store at painting time.
And then TextureMapperLayer draws repaintCount using TextureMapperGL.
As I mentioned earlier, we can prepare repaintCount texture at TextureMapperLayer::flushCompositingLayer process.

I think it is reasonable for backing store to count repaintCount at updateContents process but we don&apos;t have a single point which applies repaintCount logic to all platform layers. And it needs another huge refactoring.
If needed, we can make it in further refactoring.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799268</commentid>
    <comment_count>15</comment_count>
      <attachid>181151</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-02 22:22:09 -0800</bug_when>
    <thetext>Created attachment 181151
Patch : [TexMap] Refactor code related to debug border and repaint count. [1/2]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799269</commentid>
    <comment_count>16</comment_count>
      <attachid>181151</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-02 22:27:59 -0800</bug_when>
    <thetext>Comment on attachment 181151
Patch : [TexMap] Refactor code related to debug border and repaint count. [1/2] 

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

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:122
&gt; +    parameters.mask = options.mask.get();

TextureMapperPaintOptions has duplicated members to TextureMapperPlatformLayerPaintParameters because both classes have different purpose as we discussed.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayer.h:34
&gt; +class TextureMapperPlatformLayerPaintParameters {

Rename TextureMapperPlatformLayerPaintParameters to distinguish with TextureMapperPaintOptions.
Replace it in TextureMapperPlatformLayer.h because TextureMapperPlatformLayerPaintParameters is part of TextureMapperPlatformLayer API.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayer.h:40
&gt; +    BitmapTexture* mask;

Use BitmapTexture* instead of RefPtr&lt;BitmapTexture&gt; because I don&apos;t want &quot;#include &lt;BitmapTexture.h&gt;&quot;
I think after noamr refactors mask, he will remove the mask member.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804967</commentid>
    <comment_count>17</comment_count>
      <attachid>182266</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-10 22:12:55 -0800</bug_when>
    <thetext>Created attachment 182266
Patch : [TexMap] Refactor code related to debug border and repaint count. [1/2]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805055</commentid>
    <comment_count>18</comment_count>
      <attachid>182291</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-11 01:17:09 -0800</bug_when>
    <thetext>Created attachment 182291
Patch : [TexMap] Refactor code related to debug border and repaint count. [2/2]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805139</commentid>
    <comment_count>19</comment_count>
      <attachid>182317</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-11 03:35:01 -0800</bug_when>
    <thetext>Created attachment 182317
Patch : [TexMap] Refactor code related to debug border and repaint count. [2/2]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805141</commentid>
    <comment_count>20</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-11 03:37:20 -0800</bug_when>
    <thetext>ping.

IMO patch [1/2] has no problem. could you review the patch.

And I need more feedback for patch [2/2].</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805972</commentid>
    <comment_count>21</comment_count>
      <attachid>182266</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-01-13 07:42:40 -0800</bug_when>
    <thetext>Comment on attachment 182266
Patch : [TexMap] Refactor code related to debug border and repaint count. [1/2] 

In second thought, I think this is not a good direction.
By making it easy to add parameters to the paint functions, we make things easy to silently regress in subclasses of TextureMapperPlatformLayer if we add more parameters.

I prefer to even remove the mask parameters, and have that paint function always be paintToTextureMapper(tm, rect, transform, opacity), giving the reset of the control to the subclass, and add a TextureMapper::setMask/setDebugBorder etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806744</commentid>
    <comment_count>22</comment_count>
      <attachid>182652</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-14 16:26:15 -0800</bug_when>
    <thetext>Created attachment 182652
Patch : [Qt][EFL][GTK][TexMap] Refactor code related to debug border and repaint count.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806756</commentid>
    <comment_count>23</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-14 16:32:35 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; (From update of attachment 182266 [details])
&gt; In second thought, I think this is not a good direction.
&gt; By making it easy to add parameters to the paint functions, we make things easy to silently regress in subclasses of TextureMapperPlatformLayer if we add more parameters.
&gt; 
&gt; I prefer to even remove the mask parameters, and have that paint function always be paintToTextureMapper(tm, rect, transform, opacity), giving the reset of the control to the subclass, and add a TextureMapper::setMask/setDebugBorder etc.

I agree. I felt some weirdness when making. It seems to be because of your explanation.

I gave up drawing debug visual via piggy-backing paintToTextureMapper(). Now I explicitly calls drawDebugVisuals() from TextureMapperLayer.

I made this patch as prerequisite of actor model, because debug visuals make GraphicsLayerTextureMapper and TextureMapperLayer code complex currently. IMO this patch also helps you make actor model implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806762</commentid>
    <comment_count>24</comment_count>
      <attachid>182652</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-14 16:36:59 -0800</bug_when>
    <thetext>Comment on attachment 182652
Patch : [Qt][EFL][GTK][TexMap] Refactor code related to debug border and repaint count.

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

&gt; Source/WebCore/platform/graphics/texmap/TextureMapper.cpp:149
&gt; +void TextureMapper::drawDebugVisuals(const FloatRect&amp; targetRect, const TransformationMatrix&amp; transform, bool showDebugBorders, const Color&amp; borderColor, float borderWidth, bool showRepaintCounter, int repaintCount)

I will optimize this method later (in follow-up bug) via reusing repaint count texture. I will pass BitmapImage for repaintCount instead of repaintCount.
The BitmapImage will be created in TextureMapperLayer::flushCompositingStateForThisLayerOnly()
void TextureMapperLayer::flushCompositingStateForThisLayerOnly(GraphicsLayerTextureMapper* graphicsLayer)
{
    ....
    if (changeMask &amp; RepaintCountChange)
        m_state.repaintCount = graphicsLayer-&gt;repaintCount();       &lt;-- HERE
    ....
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806875</commentid>
    <comment_count>25</comment_count>
      <attachid>182677</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-14 18:44:35 -0800</bug_when>
    <thetext>Created attachment 182677
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807094</commentid>
    <comment_count>26</comment_count>
      <attachid>182677</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-01-15 01:18:39 -0800</bug_when>
    <thetext>Comment on attachment 182677
Patch

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

&gt; Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.cpp:369
&gt; +        if (isShowingRepaintCounter()) {
&gt; +            incrementRepaintCount();
&gt; +            m_changeMask |= TextureMapperLayer::RepaintCountChange;
&gt; +        }

This change seems a bit different; Maybe it should come in a different patch?

&gt; Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.cpp:427
&gt; +    // When this has its own backing store (i.e. Qt WK1), update the repaint count before calling TextureMapperLayer::flushCompositingStateForThisLayerOnly().

(i.e. Qt WK1) -&gt; you mean e.g.; GTK also uses ownBackingStore.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapper.h:136
&gt; +    void drawDebugVisuals(const FloatRect&amp;, const TransformationMatrix&amp;, bool showDebugBorders, const Color&amp;, float borderWidth, bool showRepaintCounter, int repaintCount);

bool showDebugBorders seems unnecessary; use a color with no alpha or borderWidth of zero. Same with repaintCount; if it&apos;s 0 there&apos;s no point in painting it.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:149
&gt; +        if (m_state.showDebugBorders || m_state.showRepaintCounter)
&gt; +            m_backingStore-&gt;drawDebugVisuals(options.textureMapper, layerRect(), transform, m_state.showDebugBorders, m_state.debugBorderColor, m_state.debugBorderWidth, m_state.showRepaintCounter, m_state.repaintCount);
&gt;      }
&gt;  
&gt;      if (m_contentsLayer) {
&gt;          ASSERT(!layerRect().isEmpty());
&gt;          m_contentsLayer-&gt;paintToTextureMapper(options.textureMapper, m_state.contentsRect, transform, opacity, mask.get());
&gt; +        if (m_state.showDebugBorders || m_state.showRepaintCounter)
&gt; +            m_contentsLayer-&gt;drawDebugVisuals(options.textureMapper, m_state.contentsRect, transform, m_state.showDebugBorders, m_state.debugBorderColor, m_state.debugBorderWidth, m_state.showRepaintCounter, m_state.repaintCount);

The API here seems a bit messy; Any particular reason to have drawDebugVisuals as one function with booleans instead of two functions?

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayer.cpp:38
&gt; +void TextureMapperPlatformLayer::drawDebugVisuals(TextureMapper* textureMapper, const FloatRect&amp; targetRect, const TransformationMatrix&amp; transform, bool showDebugBorders, const Color&amp; borderColor, float borderWidth, bool showRepaintCounter, int repaintCount)
&gt; +{
&gt; +    textureMapper-&gt;drawDebugVisuals(targetRect, transform, showDebugBorders, borderColor, borderWidth, showRepaintCounter, repaintCount);
&gt; +}

This can be done in the header file.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayer.h:39
&gt; +    virtual void drawDebugVisuals(TextureMapper*, const FloatRect&amp;, const TransformationMatrix&amp;, bool showDebugBorders, const Color&amp;, float borderWidth, bool showRepaintCounter, int repaintCount);

You really need it as a virtual function only for directly composited images; Otherwise you can use the layer transform normally. 
I think all this virtualization should be removed; We should draw the repaint counters only for the main backing store of the layer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807104</commentid>
    <comment_count>27</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-01-15 01:28:40 -0800</bug_when>
    <thetext>Wouldn&apos;t [TexMap][WK2] be enough tags for this bug? is it REALLY necessary to mention all the ports using texmap? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807179</commentid>
    <comment_count>28</comment_count>
      <attachid>182677</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-15 04:17:02 -0800</bug_when>
    <thetext>Comment on attachment 182677
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.cpp:369
&gt;&gt; +        }
&gt; 
&gt; This change seems a bit different; Maybe it should come in a different patch?

you&apos;re right. follow-up patch will contain it.

&gt;&gt; Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.cpp:427
&gt;&gt; +    // When this has its own backing store (i.e. Qt WK1), update the repaint count before calling TextureMapperLayer::flushCompositingStateForThisLayerOnly().
&gt; 
&gt; (i.e. Qt WK1) -&gt; you mean e.g.; GTK also uses ownBackingStore.

you&apos;re right. I was confused i.e. with e.g.

&gt;&gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:149
&gt;&gt; +            m_contentsLayer-&gt;drawDebugVisuals(options.textureMapper, m_state.contentsRect, transform, m_state.showDebugBorders, m_state.debugBorderColor, m_state.debugBorderWidth, m_state.showRepaintCounter, m_state.repaintCount);
&gt; 
&gt; The API here seems a bit messy; Any particular reason to have drawDebugVisuals as one function with booleans instead of two functions?

I wanted to handle it using only one kind of function.
TextureMapper::drawDebugVisuals() and TextureMapperPlatformLayer::drawDebugVisuals().

I agree this is a bit messy. I separate like
TextureMapper::drawDebugBorder() and TextureMapperPlatformLayer::drawDebugBorder().
TextureMapper::drawRepaintCounter() and TextureMapperPlatformLayer::drawRepaintCounter().

&gt;&gt; Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayer.cpp:38
&gt;&gt; +}
&gt; 
&gt; This can be done in the header file.

I think so. But I encountered build fail due to incomplete declaration of TextureMapper.
I&apos;ll try again.

&gt;&gt; Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayer.h:39
&gt;&gt; +    virtual void drawDebugVisuals(TextureMapper*, const FloatRect&amp;, const TransformationMatrix&amp;, bool showDebugBorders, const Color&amp;, float borderWidth, bool showRepaintCounter, int repaintCount);
&gt; 
&gt; You really need it as a virtual function only for directly composited images; Otherwise you can use the layer transform normally. 
&gt; I think all this virtualization should be removed; We should draw the repaint counters only for the main backing store of the layer.

I need it as a virtual function only for tiled platformLayer: CoordinatedBackingStore and TextureMapperTiledBackingStore.
I agree that only the main backing store of the layer should have repaint counter, but debug border is helpful for canvas, video, directed image and background color.

I need to rethink repaint count, and then I&apos;ll submit a patch again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807890</commentid>
    <comment_count>29</comment_count>
      <attachid>182890</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-15 18:19:16 -0800</bug_when>
    <thetext>Created attachment 182890
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807895</commentid>
    <comment_count>30</comment_count>
      <attachid>182890</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-01-15 18:24:44 -0800</bug_when>
    <thetext>Comment on attachment 182890
Patch

Attachment 182890 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/15902210</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807898</commentid>
    <comment_count>31</comment_count>
      <attachid>182890</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-01-15 18:25:44 -0800</bug_when>
    <thetext>Comment on attachment 182890
Patch

Attachment 182890 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15905181</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807899</commentid>
    <comment_count>32</comment_count>
      <attachid>182890</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-15 18:27:39 -0800</bug_when>
    <thetext>Comment on attachment 182890
Patch

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

&gt; Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.cpp:420
&gt; +        incrementRepaintCount();

increase repaint count for a backing store. see CoordinatedGraphicsLayer.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:145
&gt; +            m_backingStore-&gt;drawRepaintCounter(options.textureMapper, m_state.repaintCount, m_state.debugBorderColor, layerRect(), transform);

We draw the repaint count for only backing store. It means we draw only border for background color, webgl, composited image and video.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:-386
&gt; -    graphicsLayer-&gt;updateDebugIndicators();

This patch removes this line. After this patch, remained dependency on GraphicsLayer is only calling getter of GraphicsLayer.
It is why I want to land this patch before actor model.

&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp:738
&gt; +        m_coordinator-&gt;setRepaintCount(id(), incrementRepaintCount());

increase repaint count for a backing store.
Currently we keep repaint count in GraphicsLayer, not each tile.
Final goal would make Tile manage repaint count by itself, but it needs huge refactoring.
So I need to postpone refactoring of this as well as optimization.

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:2338
&gt; +#if PLATFORM(QT)

It is a bit messy. Is it ok?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807933</commentid>
    <comment_count>33</comment_count>
      <attachid>182903</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-15 19:05:45 -0800</bug_when>
    <thetext>Created attachment 182903
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807934</commentid>
    <comment_count>34</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-15 19:07:18 -0800</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807935</commentid>
    <comment_count>35</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-15 19:07:52 -0800</bug_when>
    <thetext>(In reply to comment #33)
&gt; Created an attachment (id=182903) [details]
&gt; Patch

Build fix
Don&apos;t change WebPage in WK2 not to be WK2 patch. Set preferences in each port file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808086</commentid>
    <comment_count>36</comment_count>
      <attachid>182903</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-01-15 23:37:13 -0800</bug_when>
    <thetext>Comment on attachment 182903
Patch

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

Getting there :)

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperBackingStore.cpp:147
&gt; +    TransformationMatrix adjustedTransform = transform;
&gt; +    adjustedTransform.multiply(TransformationMatrix::rectToRect(rect(), targetRect));

This needs to move to its own helper function.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:143
&gt; +        // Draw the repaint count of only a backing store.

// Only draw repaint count for the main backing store.

&gt; Source/WebKit2/UIProcess/CoordinatedGraphics/CoordinatedBackingStore.cpp:162
&gt; +    FloatRect rectOnContents(FloatPoint::zero(), m_size);
&gt; +    TransformationMatrix adjustedTransform = transform;
&gt; +    adjustedTransform.multiply(TransformationMatrix::rectToRect(rectOnContents, targetRect));

This needs to move to a helper function; Probably in TextureMapperBackingStore.

&gt; Source/WebKit2/UIProcess/CoordinatedGraphics/CoordinatedLayerTreeHostProxy.cpp:245
&gt; +void CoordinatedLayerTreeHostProxy::setRepaintCount(CoordinatedLayerID id, int value)

setLayerRepaintCount</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808106</commentid>
    <comment_count>37</comment_count>
      <attachid>182926</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-16 00:19:09 -0800</bug_when>
    <thetext>Created attachment 182926
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808110</commentid>
    <comment_count>38</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-16 00:21:56 -0800</bug_when>
    <thetext>(In reply to comment #36)
&gt; (From update of attachment 182903 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=182903&amp;action=review
&gt; 
&gt; Getting there :)

Wow! Thank you for your review :)

&gt; This needs to move to its own helper function.
&gt; // Only draw repaint count for the main backing store.
&gt; This needs to move to a helper function; Probably in TextureMapperBackingStore.
&gt; setLayerRepaintCount

all done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808117</commentid>
    <comment_count>39</comment_count>
      <attachid>182926</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-01-16 00:29:30 -0800</bug_when>
    <thetext>Comment on attachment 182926
Patch

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

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperBackingStore.cpp:36
&gt; +TransformationMatrix TextureMapperBackingStore::rectToRect(const TransformationMatrix&amp; transform, const FloatRect&amp; from, const FloatRect&amp; to)

I was thinking of calling it adjustedTransformForRect(const FloatRect&amp; targetRect), not pass the &quot;from&quot; rect since it&apos;s a member anyway.
And then at the calling site do something like adjustedTransform  = transform * adjustedTransformForRect(targetRect).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808137</commentid>
    <comment_count>40</comment_count>
      <attachid>182933</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-16 01:08:36 -0800</bug_when>
    <thetext>Created attachment 182933
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808138</commentid>
    <comment_count>41</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-16 01:09:35 -0800</bug_when>
    <thetext>(In reply to comment #39)
&gt; (From update of attachment 182926 [details])
&gt; I was thinking of calling it adjustedTransformForRect(const FloatRect&amp; targetRect), not pass the &quot;from&quot; rect since it&apos;s a member anyway.
&gt; And then at the calling site do something like adjustedTransform  = transform * adjustedTransformForRect(targetRect).

aha, good idea. done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809438</commentid>
    <comment_count>42</comment_count>
      <attachid>182933</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-01-17 10:21:29 -0800</bug_when>
    <thetext>Comment on attachment 182933
Patch

Can you separate the change to several patches? It&apos;s pretty big; Seems like at least the settings part is rather isolated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809949</commentid>
    <comment_count>43</comment_count>
      <attachid>183313</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-17 16:32:05 -0800</bug_when>
    <thetext>Created attachment 183313
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809952</commentid>
    <comment_count>44</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-17 16:33:33 -0800</bug_when>
    <thetext>(In reply to comment #42)
&gt; (From update of attachment 182933 [details])
&gt; Can you separate the change to several patches? It&apos;s pretty big; Seems like at least the settings part is rather isolated.

I extract two parts.
1. settings in Bug 107198
2. changes of CoordinatedTile in Bug 107196

I&apos;m looking forward review :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810498</commentid>
    <comment_count>45</comment_count>
      <attachid>183313</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-01-18 05:42:07 -0800</bug_when>
    <thetext>Comment on attachment 183313
Patch

This looks fine to me; Please ask a WebKit2 owner for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811029</commentid>
    <comment_count>46</comment_count>
      <attachid>183313</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-01-18 14:14:20 -0800</bug_when>
    <thetext>Comment on attachment 183313
Patch

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

That&apos;s a lot of code for a debugging helper! :)

Here are my nitpicks:

&gt; Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.cpp:407
&gt; +    if (m_hasOwnBackingStore)
&gt; +        updateDebugBorderAndRepaintCount();
&gt;      m_layer-&gt;flushCompositingStateForThisLayerOnly(this);
&gt; -    updateBackingStore();
&gt; +    if (m_hasOwnBackingStore)
&gt; +        updateBackingStore();
&gt;      didFlushCompositingState();

Why did you move the test for m_hasOwnBackingStore out of updateBackingStore() and replace it by an assertion?
This makes the code more fragile and is not explained in the ChangeLog.

&gt; Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.cpp:430
&gt; +    // The default values for GraphicsLayer debug borders are a little
&gt; +    // hard to see (some less than one pixel wide), so we double their size here.
&gt; +    m_debugBorderColor = color;
&gt; +    m_debugBorderWidth = width * 2;

This is odd. The minimum width of GraphicsLayer::getDebugBorderInfo() is 2. Why do you say some are less than one pixel wide?

What you should do instead of doubling the width here, is override GraphicsLayer::getDebugBorderInfo().

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperGL.cpp:315
&gt; +static inline RGBA32 convertABGRToARGB(RGBA32 pixel)
&gt;  {
&gt; +    return ((pixel &lt;&lt; 16) &amp; 0xff0000) | ((pixel &gt;&gt; 16) &amp; 0xff) | (pixel &amp; 0xff00ff00);
&gt; +}

This looks like type abuse.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperGL.cpp:319
&gt; +    static const int pointSize = 8;

Why is this static?

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperGL.cpp:336
&gt; -    painter.fillRect(sourceRect, Qt::blue); // Since we won&apos;t swap R+B for speed, this will paint red.
&gt; +    painter.fillRect(sourceRect, convertABGRToARGB(color.rgb())); // Since we won&apos;t swap R+B for speed, this will paint the given color.

I don&apos;t get any of this.
There is Color-&gt;QColor implicit conversion. Why use the RGBA32 value?

The comment is not helping.

It also looks like the defaultFormat thingy is premultiplied. While the input color is not. Why?

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayer.h:40
&gt; +    virtual void drawBorder(TextureMapper* textureMapper, const Color&amp; color, float borderWidth, const FloatRect&amp; targetRect, const TransformationMatrix&amp; transform)
&gt; +    {
&gt; +        textureMapper-&gt;drawBorder(color, borderWidth, targetRect, transform);
&gt; +    }

Virtual functions should not be implemented in headers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811262</commentid>
    <comment_count>47</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-18 19:26:30 -0800</bug_when>
    <thetext>(In reply to comment #46)
&gt; (From update of attachment 183313 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=183313&amp;action=review
&gt; 
&gt; That&apos;s a lot of code for a debugging helper! :)
Thank you for review!!

&gt; &gt; Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.cpp:407
&gt; &gt; +    if (m_hasOwnBackingStore)
&gt; &gt; +        updateDebugBorderAndRepaintCount();
&gt; &gt;      m_layer-&gt;flushCompositingStateForThisLayerOnly(this);
&gt; &gt; -    updateBackingStore();
&gt; &gt; +    if (m_hasOwnBackingStore)
&gt; &gt; +        updateBackingStore();
&gt; &gt;      didFlushCompositingState();
&gt; 
&gt; Why did you move the test for m_hasOwnBackingStore out of updateBackingStore() and replace it by an assertion?
&gt; This makes the code more fragile and is not explained in the ChangeLog.

m_hasOwnBackingStore is WK1 legacy and GraphicsLayerTextureMapper::flushCompositingStateForThisLayerOnly() is important function, so I want to highlight updateDebugBorderAndRepaintCount() and updateBackingStore() are only used in WK1 legacy.
There is no behavior change. I&apos;ll explain in the ChangeLog.

&gt; &gt; Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.cpp:430
&gt; &gt; +    // The default values for GraphicsLayer debug borders are a little
&gt; &gt; +    // hard to see (some less than one pixel wide), so we double their size here.
&gt; &gt; +    m_debugBorderColor = color;
&gt; &gt; +    m_debugBorderWidth = width * 2;
&gt; 
&gt; This is odd. The minimum width of GraphicsLayer::getDebugBorderInfo() is 2. Why do you say some are less than one pixel wide?
&gt; What you should do instead of doubling the width here, is override GraphicsLayer::getDebugBorderInfo().

I agree on you. It is existing code, not my code. But I correct this: remove comment as well as &quot;*2&quot;

&gt; &gt; Source/WebCore/platform/graphics/texmap/TextureMapperGL.cpp:315
&gt; &gt; +static inline RGBA32 convertABGRToARGB(RGBA32 pixel)
&gt; &gt;  {
&gt; &gt; +    return ((pixel &lt;&lt; 16) &amp; 0xff0000) | ((pixel &gt;&gt; 16) &amp; 0xff) | (pixel &amp; 0xff00ff00);
&gt; &gt; +}
&gt; 
&gt; This looks like type abuse.

Do you have good idea?

&gt; &gt; Source/WebCore/platform/graphics/texmap/TextureMapperGL.cpp:319
&gt; &gt; +    static const int pointSize = 8;
&gt; 
&gt; Why is this static?

static is not necessary. I think it is a bit faster than allocating stack in every time. I&apos;ll remove static.

&gt; &gt; Source/WebCore/platform/graphics/texmap/TextureMapperGL.cpp:336
&gt; &gt; -    painter.fillRect(sourceRect, Qt::blue); // Since we won&apos;t swap R+B for speed, this will paint red.
&gt; &gt; +    painter.fillRect(sourceRect, convertABGRToARGB(color.rgb())); // Since we won&apos;t swap R+B for speed, this will paint the given color.
&gt; 
&gt; I don&apos;t get any of this.
&gt; There is Color-&gt;QColor implicit conversion. Why use the RGBA32 value?
&gt; 
&gt; The comment is not helping.

This code is hack to upload buffer to texture without swizzling.
the buffer format of qpainter is ARGB but texture format of opengl es is ABGR.
So we consciously draw blue color into qpainter if we want red color. After we upload texture, we can see red color.

&gt; It also looks like the defaultFormat thingy is premultiplied. While the input color is not. Why?
Should Input color be converted to premultiplied when defaultFormat is premultiplied? I did not know that. I&apos;ll change.

&gt; &gt; Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayer.h:40
&gt; &gt; +    virtual void drawBorder(TextureMapper* textureMapper, const Color&amp; color, float borderWidth, const FloatRect&amp; targetRect, const TransformationMatrix&amp; transform)
&gt; &gt; +    {
&gt; &gt; +        textureMapper-&gt;drawBorder(color, borderWidth, targetRect, transform);
&gt; &gt; +    }
&gt; 
&gt; Virtual functions should not be implemented in headers.

Yes, I know. inline virtual does not make sense. but today compiler well handles it as just virtual. And we don&apos;t have TextureMapperPlatformLayer.cpp and we don&apos;t need to make TextureMapperPlatformLayer.cpp as noam mentioned in #c26</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811271</commentid>
    <comment_count>48</comment_count>
      <attachid>183594</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-18 20:03:40 -0800</bug_when>
    <thetext>Created attachment 183594
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811272</commentid>
    <comment_count>49</comment_count>
      <attachid>183594</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-18 20:07:23 -0800</bug_when>
    <thetext>Comment on attachment 183594
Patch

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

&gt; Source/WebCore/ChangeLog:33
&gt; +            and updateBackingStore() are only used in WK1.

Add comment.

&gt; Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.cpp:430
&gt; +}

Remove &quot;*2&quot;

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperGL.cpp:313
&gt; +static inline unsigned convertARGBToABGR(unsigned pixel)

replace RGBA32 to unsigned
rename from convertABGRToARGB to convertARGBToABGR

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperGL.cpp:338
&gt; +    painter.fillRect(sourceRect, convertARGBToABGR(premultipliedARGBFromColor(color))); // Since we won&apos;t swap R+B when uploading a texture, paint with the swapped R+B color.

convert to premultiplied
rephrase comment

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayer.h:40
&gt; +    }

Remain this code not to make TextureMapperPlatformLayer.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812221</commentid>
    <comment_count>50</comment_count>
    <who name="Bruno Abinader (history only)">bruno.abinader</who>
    <bug_when>2013-01-21 09:30:37 -0800</bug_when>
    <thetext>Since this patch is about a refactory, IMO it would be nice to unify the envvar name (ie. unprefix QT_ from WEBKIT_SHOW_COMPOSITING_DEBUG_VISUALS), what do you guys think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812404</commentid>
    <comment_count>51</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-21 14:51:40 -0800</bug_when>
    <thetext>(In reply to comment #50)
&gt; Since this patch is about a refactory, IMO it would be nice to unify the envvar name (ie. unprefix QT_ from WEBKIT_SHOW_COMPOSITING_DEBUG_VISUALS), what do you guys think?

I agree on you. We can unprefix QT_ in Bug 107198.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813641</commentid>
    <comment_count>52</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-22 18:11:39 -0800</bug_when>
    <thetext>Benjamin: ping

Could you review this bug? Thank you in advance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815162</commentid>
    <comment_count>53</comment_count>
      <attachid>183594</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-01-24 00:04:18 -0800</bug_when>
    <thetext>Comment on attachment 183594
Patch

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

I think this is an overkill for repaint counting. I don&apos;t want to add extra IPC messages for every repaint just for a debug feature. We already know of a repaint in the UI process, when UpdateTile is called, and we should use that information.

I think we should review the WK1 part separately (it looks quite OK to me), and then in WK2 call GraphicsLayerTextureMapper-&gt;incrementRepaintCount() when we get a createTile/updateTile message.

&gt;&gt; Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayer.h:40
&gt;&gt; +    }
&gt; 
&gt; Remain this code not to make TextureMapperPlatformLayer.cpp

I think it&apos;s OK if the default implementation did nothing. The tiled backing store itself should deal with drawing the border.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815979</commentid>
    <comment_count>54</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-24 16:45:12 -0800</bug_when>
    <thetext>(In reply to comment #53)
&gt; (From update of attachment 183594 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=183594&amp;action=review
&gt; 
&gt; I think this is an overkill for repaint counting. I don&apos;t want to add extra IPC messages for every repaint just for a debug feature. We already know of a repaint in the UI process, when UpdateTile is called, and we should use that information.

Ok, I agree.

&gt; I think we should review the WK1 part separately (it looks quite OK to me), and then in WK2 call GraphicsLayerTextureMapper-&gt;incrementRepaintCount() when we get a createTile/updateTile message.

Yes, right direction. Many bugs wait this bug. I&apos;ll separate soon!

&gt; I think it&apos;s OK if the default implementation did nothing. The tiled backing store itself should deal with drawing the border.

I don&apos;t think it is good idea for tiled backing store to draw the border. I&apos;m sure it is one of solutions.
But I feel that &quot;Compositor&quot; has responsibility to draw border. Currently, TBS does not care of border. I&apos;m wonder if it is necessary for TBS to deal with border. I want only compositor to deal with border.

In addition, it is not efficient for TBS to draw borders. For example, if users toggle &quot;showDebugBorder&quot; via web inspector, we must update whole tiles.
On the other hand, it is cheap for TexMap to draw border.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816013</commentid>
    <comment_count>55</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-24 17:10:08 -0800</bug_when>
    <thetext>(In reply to comment #53)
&gt; (From update of attachment 183594 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=183594&amp;action=review
&gt; 
&gt; I think this is an overkill for repaint counting. I don&apos;t want to add extra IPC messages for every repaint just for a debug feature. We already know of a repaint in the UI process, when UpdateTile is called, and we should use that information.
&gt; I think we should review the WK1 part separately (it looks quite OK to me), and then in WK2 call GraphicsLayerTextureMapper-&gt;incrementRepaintCount() when we get a createTile/updateTile message.

After rethinking, it is not good for WK2 to use GraphicsLayerTextureMapper-&gt;incrementRepaintCount(). It conflicts against removing GraphicsLayerTextureMapper from WK2.
In the short term, I need to make new overkill message to use [Coordinated]GraphicsLayer::incrementRepaintCount().

In the long term, we will get rid of code related to dealing with repaint count in GraphicsLayer. As we know, each tile should deal with each repaint count because each tile has different repaint count.
At that time, we will remove the overkill message.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816179</commentid>
    <comment_count>56</comment_count>
      <attachid>184656</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-24 21:28:13 -0800</bug_when>
    <thetext>Created attachment 184656
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816191</commentid>
    <comment_count>57</comment_count>
      <attachid>184656</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-24 21:38:03 -0800</bug_when>
    <thetext>Comment on attachment 184656
Patch

This patch can be compiled and run well without Bug 107910 (separated WK2 part).

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

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperGL.cpp:350
&gt; +    painter.fillRect(sourceRect, convertARGBToABGR(color.rgb())); // Since we won&apos;t swap R+B when uploading a texture, paint with the swapped R+B color.

It is correct to send unmultiplied color.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816315</commentid>
    <comment_count>58</comment_count>
      <attachid>184656</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-01-24 23:51:05 -0800</bug_when>
    <thetext>Comment on attachment 184656
Patch

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

Almost there.

&gt; Source/WebCore/ChangeLog:17
&gt; +        2. We use the same color and width to Mac port because we get both info using

both info -&gt; that info

&gt; Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.cpp:406
&gt; +    if (m_hasOwnBackingStore)
&gt; +        updateDebugBorderAndRepaintCount();

I think you should always call updateDebugBorderAndRepaintCountIfNeeded(), and return early if it doesn&apos;t have own backing store.

&gt; Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.cpp:409
&gt; +    if (m_hasOwnBackingStore)
&gt; +        updateBackingStore();

Ditto (updateBackingStoreIfNeeded)

&gt; Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.h:98
&gt; +

Remove line

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperBackingStore.h:45
&gt; +        ASSERT_NOT_REACHED();

I don&apos;t think it&apos;s necessary to have an ASSERT like this to a debug feature.

&gt;&gt; Source/WebCore/platform/graphics/texmap/TextureMapperGL.cpp:350
&gt;&gt; +    painter.fillRect(sourceRect, convertARGBToABGR(color.rgb())); // Since we won&apos;t swap R+B when uploading a texture, paint with the swapped R+B color.
&gt; 
&gt; It is correct to send unmultiplied color.

I would prefer to call
Color::createUnchecked(color.blue(), color.green(), color.red())</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816380</commentid>
    <comment_count>59</comment_count>
      <attachid>184656</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-01-25 01:38:13 -0800</bug_when>
    <thetext>Comment on attachment 184656
Patch

See comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816386</commentid>
    <comment_count>60</comment_count>
      <attachid>184700</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-25 01:48:32 -0800</bug_when>
    <thetext>Created attachment 184700
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816387</commentid>
    <comment_count>61</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-25 01:49:40 -0800</bug_when>
    <thetext>(In reply to comment #58)
&gt; (From update of attachment 184656 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=184656&amp;action=review

Thank you for review! all Done!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816491</commentid>
    <comment_count>62</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-25 04:50:51 -0800</bug_when>
    <thetext>Thank you!

Could you cq+? I don&apos;t have a committer authority yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816524</commentid>
    <comment_count>63</comment_count>
      <attachid>184700</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-25 05:52:27 -0800</bug_when>
    <thetext>Comment on attachment 184700
Patch

Clearing flags on attachment: 184700

Committed r140821: &lt;http://trac.webkit.org/changeset/140821&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816525</commentid>
    <comment_count>64</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-25 05:52:37 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817701</commentid>
    <comment_count>65</comment_count>
    <who name="Zoltan Arvai">zarvai</who>
    <bug_when>2013-01-28 05:08:14 -0800</bug_when>
    <thetext>After the patch committed in r140821 it seems the Qt5-WK1 and Qt5-WK2 layout test results are different with a

(usingTiledLayer 1)

http://build.webkit.org/results/Qt%20Linux%20Release/r140821%20%2856761%29/results.html

Can you help me find out what can cause this difference, please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818073</commentid>
    <comment_count>66</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-28 14:00:18 -0800</bug_when>
    <thetext>(In reply to comment #65)
&gt; After the patch committed in r140821 it seems the Qt5-WK1 and Qt5-WK2 layout test results are different with a
&gt; 
&gt; (usingTiledLayer 1)
&gt; 
&gt; http://build.webkit.org/results/Qt%20Linux%20Release/r140821%20%2856761%29/results.html
&gt; 
&gt; Can you help me find out what can cause this difference, please?

Thanks for reporting. I missed it.

In this patch, I set GraphicsLayer::m_usingTiledLayer to 1 when the layer has tiled backing.
So Qt1 layout test results were changed.

But Bug 107910 will apply the same thing to WK2, so now WK1 and WK2 results are different.

Are you ok if I update test results after Bug 107910 landing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818270</commentid>
    <comment_count>67</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-28 16:51:47 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818271</commentid>
    <comment_count>68</comment_count>
      <attachid>185105</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-28 16:51:59 -0800</bug_when>
    <thetext>Created attachment 185105
Patch : It is a follow-up patch not to change layout test results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818273</commentid>
    <comment_count>69</comment_count>
      <attachid>185105</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-28 16:54:01 -0800</bug_when>
    <thetext>Comment on attachment 185105
Patch : It is a follow-up patch not to change layout test results.

After re-surveying, only mac uses usingTiledLayer, so default expected results don&apos;t expect (usingTiledLayer 1).
So we (EFL GTK QT) don&apos;t set usingTiledLayer to true.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818507</commentid>
    <comment_count>70</comment_count>
      <attachid>185105</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-01-28 21:57:27 -0800</bug_when>
    <thetext>Comment on attachment 185105
Patch : It is a follow-up patch not to change layout test results.

Since we use tiled layers for everything, I think we should simply rebase our tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818512</commentid>
    <comment_count>71</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-01-28 22:01:00 -0800</bug_when>
    <thetext>(In reply to comment #70)
&gt; (From update of attachment 185105 [details])
&gt; Since we use tiled layers for everything, I think we should simply rebase our tests.

btw why do we set m_usingTiledLayer to true in the first place?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818522</commentid>
    <comment_count>72</comment_count>
      <attachid>185105</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-28 22:14:44 -0800</bug_when>
    <thetext>Comment on attachment 185105
Patch : It is a follow-up patch not to change layout test results.

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

&gt; Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.cpp:420
&gt; +        m_usingTiledLayer = false;

(In reply to comment #71)
&gt; (In reply to comment #70)
&gt; &gt; (From update of attachment 185105 [details] [details])
&gt; &gt; Since we use tiled layers for everything, I think we should simply rebase our tests.

Yes, we can just rebase, but I&apos;m afraid that it would be burden for gardening Qt and EFL port.

As I mentioned, default expected txt does not expect (usingTiledLayer 1).
For example, LayoutTest/compositing/tiling/rotated-tiled-preserve3d-clamped-expected.txt does not include (usingTiledLayer 1).
If we use m_usingTiledLayer, we must manage LayoutTest/platform/qt/compositing/tiling/rotated-tiled-preserve3d-clamped-expected.txt like LayoutTests/platform/mac/compositing/tiling/rotated-tiled-preserve3d-clamped-expected.txt
I think other maintainers don&apos;t like it.

&gt; btw why do we set m_usingTiledLayer to true in the first place?

updateDebugIndicators() return different color for a tiled backing. I want to match the color of texture mapper to safari.

I agree that my solution is a bit weird. I want to listen your opinion. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818524</commentid>
    <comment_count>73</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-01-28 22:17:05 -0800</bug_when>
    <thetext>
&gt; &gt; btw why do we set m_usingTiledLayer to true in the first place?
&gt; 
&gt; updateDebugIndicators() return different color for a tiled backing. I want to match the color of texture mapper to safari.
&gt; 
&gt; I agree that my solution is a bit weird. I want to listen your opinion. :)
Remove the useTiling flag for now. We can mess with the debug colors to match Safari in a different patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818525</commentid>
    <comment_count>74</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-28 22:19:20 -0800</bug_when>
    <thetext>(In reply to comment #73)
&gt; Remove the useTiling flag for now. We can mess with the debug colors to match Safari in a different patch.

ok. so simple and succinct solution :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818538</commentid>
    <comment_count>75</comment_count>
      <attachid>185156</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-28 22:27:58 -0800</bug_when>
    <thetext>Created attachment 185156
Patch : It is a follow-up patch not to change layout test results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818546</commentid>
    <comment_count>76</comment_count>
      <attachid>185156</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-01-28 22:37:21 -0800</bug_when>
    <thetext>Comment on attachment 185156
Patch : It is a follow-up patch not to change layout test results.

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

&gt; Source/WebCore/ChangeLog:10
&gt; +        The previous patch set GraphicsLayer::m_usingTiledLayer to true when using a

set -&gt; sets

&gt; Source/WebCore/ChangeLog:18
&gt; +        No new tests. Covered by existing tests.

Debug feature, not covered in tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818559</commentid>
    <comment_count>77</comment_count>
      <attachid>185163</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-28 22:44:49 -0800</bug_when>
    <thetext>Created attachment 185163
Patch for landing : It is a follow-up patch not to change layout test results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818626</commentid>
    <comment_count>78</comment_count>
      <attachid>185163</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-28 23:50:19 -0800</bug_when>
    <thetext>Comment on attachment 185163
Patch for landing : It is a follow-up patch not to change layout test results.

Clearing flags on attachment: 185163

Committed r141067: &lt;http://trac.webkit.org/changeset/141067&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818628</commentid>
    <comment_count>79</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-28 23:50:30 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180783</attachid>
            <date>2012-12-27 02:47:58 -0800</date>
            <delta_ts>2012-12-28 01:10:12 -0800</delta_ts>
            <desc>Patch : [TexMap] Refactor code related to debug border and repaint count. [1/2]</desc>
            <filename>bug-105787-20121227194509.patch</filename>
            <type>text/plain</type>
            <size>26303</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4NDg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDcwZGI4OWVjYzJhNzE3
NTRjMGM2MzE4NzVlYzcyYTQ0ZDY4OWQzMS4uNTI5YzlkODBjYjljZTg4NDY3Y2JlMDliZmU4Mjhk
YmU2MjI3NDE2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ4IEBACiAyMDEyLTEyLTI3ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCisgICAgICAgIFtUZXhNYXBd
IFJlZmFjdG9yIGNvZGUgcmVsYXRlZCB0byBkZWJ1ZyBib3JkZXIgYW5kIHJlcGFpbnQgY291bnQu
IFsxLzJdCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDU3ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
bnRyb2R1Y2UgVGV4dHVyZU1hcHBlclBhaW50UGFyYW1ldGVycyB0byByZWR1Y2UgdGhlIG51bWJl
ciBvZiBwYXJhbWV0ZXJzIG9mCisgICAgICAgIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyOjpw
YWludFRvVGV4dHVyZU1hcHBlcigpLgorICAgICAgICBOb3cgd2UgY2FuIGVhc2lseSBhZGQgbmV3
IGFyZ3VtZW50cyBpbnRvIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyOjpwYWludFRvVGV4dHVy
ZU1hcHBlcigpCisgICAgICAgIHdoZW4gbmVlZGVkLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4g
UmVmYWN0b3Jpbmcgb25seS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaDoKKyAgICAgICAgKEdy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZWZs
L0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHA6CisgICAgICAgIChHcmFwaGljc0NvbnRleHQz
RFByaXZhdGU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmg6CisgICAgICAgIChHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNz
Q29udGV4dDNEUXQuY3BwOgorICAgICAgICAoR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVN
YXBwZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L01lZGlhUGxheWVyUHJpdmF0
ZVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVF0OjpwYWludFRv
VGV4dHVyZU1hcHBlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvTWVkaWFQbGF5
ZXJQcml2YXRlUXQuaDoKKyAgICAgICAgKE1lZGlhUGxheWVyUHJpdmF0ZVF0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZTo6cGFp
bnRUb1RleHR1cmVNYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclRpbGVk
QmFja2luZ1N0b3JlOjpwYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKFRl
eHR1cmVNYXBwZXJCYWNraW5nU3RvcmUpOgorICAgICAgICAoVGV4dHVyZU1hcHBlclN1cmZhY2VC
YWNraW5nU3RvcmUpOgorICAgICAgICAoVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxmKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXIuaDoKKyAgICAgICAgKFRleHR1cmVNYXBwZXJQYWludFBhcmFtZXRlcnMpOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dHVyZU1hcHBlclBhaW50UGFyYW1ldGVyczo6VGV4dHVyZU1hcHBlclBhaW50
UGFyYW1ldGVycyk6CisgICAgICAgIChUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllcik6CisKKzIw
MTItMTItMjcgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CisKICAg
ICAgICAgW1RleE1hcF0gVXNlIGEgcHJlbXVsaXBsaWVkIGNvbG9yIGluIFRleHR1cmVNYXBwZXJH
TC4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTc4
NgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKaW5kZXggZjFmNmQ0YzlkNGYwYzMzYTE0OTEzZWM0NGJkMzM0YWUxMDZiZjEz
Yi4uZWUwODhjM2U5MjY0YzdiYTk4MTI1YmNhNTNhM2Y1ZjM3NmVjZGJiNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE5IEBACisyMDEyLTEyLTI3ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNv
bXBhbnkxMDAubmV0PgorCisgICAgICAgIFtUZXhNYXBdIFJlZmFjdG9yIGNvZGUgcmVsYXRlZCB0
byBkZWJ1ZyBib3JkZXIgYW5kIHJlcGFpbnQgY291bnQuIFsxLzJdCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU3ODcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGNoYW5nZXMgdGhlIHNp
Z25hdHVyZSBvZiBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllcjo6cGFpbnRUb1RleHR1cmVNYXBw
ZXIoKQorICAgICAgICBzbyBDb29yZGluYXRlZEJhY2tpbmdTdG9yZSBpcyBhbHNvIGNoYW5nZWQu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJh
Y2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3Jl
OjpwYWludFRpbGVzVG9UZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0
ZWRCYWNraW5nU3RvcmU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5oOgorICAgICAg
ICAoQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUpOgorCiAyMDEyLTEyLTI2ICBDc2FiYSBPc3p0cm9n
b27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBYbWFzIGJ1aWxk
Zml4IGFmdGVyIHIxMzg0NzkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcApp
bmRleCBjZDBlMDliODRlNzVkMTQzMTZlYzMyNzM2NzgxZGI1YWVkZWI5NjUyLi43ODU5ZDdkMmUy
MDdlYjQ3NGE1MzIzOWFlZjJhODMwZTkwNDlkNmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZS5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQz
RCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBsYXRmb3JtQ29udGV4dCgpCiB9CiAKICNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIFVTRShURVhUVVJFX01BUFBFUikKLXZvaWQg
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFw
cGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUq
IG1hc2spCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBw
ZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRS
ZWN0LCBjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewog
ICAgIGlmICghbV9nbENvbnRleHQpCiAgICAgICAgIHJldHVybjsKQEAgLTkxLDcgKzkxLDcgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1
cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIKICAgICBpZiAodGV4dHVyZU1hcHBlci0+YWNjZWxlcmF0
aW9uTW9kZSgpICE9IFRleHR1cmVNYXBwZXI6Ok9wZW5HTE1vZGUpIHsKICAgICAgICAgR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0ID0gdGV4dHVyZU1hcHBlci0+Z3JhcGhpY3NDb250ZXh0KCk7CiAg
ICAgICAgIGNvbnRleHQtPnNhdmUoKTsKLSAgICAgICAgY29udGV4dC0+cGxhdGZvcm1Db250ZXh0
KCktPnNldEdsb2JhbEFscGhhKG9wYWNpdHkpOworICAgICAgICBjb250ZXh0LT5wbGF0Zm9ybUNv
bnRleHQoKS0+c2V0R2xvYmFsQWxwaGEocGFyYW1ldGVycy5vcGFjaXR5KTsKIAogICAgICAgICBj
b25zdCBpbnQgaGVpZ2h0ID0gbV9jb250ZXh0LT5tX2N1cnJlbnRIZWlnaHQ7CiAgICAgICAgIGNv
bnN0IGludCB3aWR0aCA9IG1fY29udGV4dC0+bV9jdXJyZW50V2lkdGg7CkBAIC0xMDUsNyArMTA1
LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBhaW50VG9UZXh0dXJlTWFwcGVy
KFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIKICAgICAgICAgY29udGV4dC0+dHJhbnNsYXRl
KDAsIGhlaWdodCk7CiAgICAgICAgIGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOwog
Ci0gICAgICAgIGNvbnRleHQtPmNvbmNhdENUTShtYXRyaXgudG9BZmZpbmVUcmFuc2Zvcm0oKSk7
CisgICAgICAgIGNvbnRleHQtPmNvbmNhdENUTShwYXJhbWV0ZXJzLm1vZGVsVmlld01hdHJpeC50
b0FmZmluZVRyYW5zZm9ybSgpKTsKIAogICAgICAgICBtX2NvbnRleHQtPnJlYWRSZW5kZXJpbmdS
ZXN1bHRzKHBpeGVscy5nZXQoKSwgdG90YWxCeXRlcyk7CiAKQEAgLTE0Miw3ICsxNDIsNyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVy
ZU1hcHBlciogdGV4dHVyZU1hcHBlcgogICAgIFRleHR1cmVNYXBwZXJHTCogdGV4bWFwR0wgPSBz
dGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVyR0wqPih0ZXh0dXJlTWFwcGVyKTsKICAgICBUZXh0dXJl
TWFwcGVyR0w6OkZsYWdzIGZsYWdzID0gVGV4dHVyZU1hcHBlckdMOjpTaG91bGRGbGlwVGV4dHVy
ZSB8IChtX2NvbnRleHQtPm1fYXR0cnMuYWxwaGEgPyBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZEJs
ZW5kIDogMCk7CiAgICAgSW50U2l6ZSB0ZXh0dXJlU2l6ZShtX2NvbnRleHQtPm1fY3VycmVudFdp
ZHRoLCBtX2NvbnRleHQtPm1fY3VycmVudEhlaWdodCk7Ci0gICAgdGV4bWFwR0wtPmRyYXdUZXh0
dXJlKG1fY29udGV4dC0+bV90ZXh0dXJlLCBmbGFncywgdGV4dHVyZVNpemUsIHRhcmdldFJlY3Qs
IG1hdHJpeCwgb3BhY2l0eSwgbWFzayk7CisgICAgdGV4bWFwR0wtPmRyYXdUZXh0dXJlKG1fY29u
dGV4dC0+bV90ZXh0dXJlLCBmbGFncywgdGV4dHVyZVNpemUsIHRhcmdldFJlY3QsIHBhcmFtZXRl
cnMubW9kZWxWaWV3TWF0cml4LCBwYXJhbWV0ZXJzLm9wYWNpdHksIHBhcmFtZXRlcnMubWFzayk7
CiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HX0dMKQogfQogI2VuZGlmIC8v
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlLmgKaW5kZXggNjlkYWQ2NzU0NzIyYWM3YTg4MmNhODc2MTVhYjg4NTQ5NzlhZmJjNi4uOWI5
MjgyOTk3NDQ0MDNiN2RhOTljMDQyYzJmZmM1YTYyZjdiZDA0NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIEdyYXBoaWNz
Q29udGV4dDNEOjpSZW5kZXJTdHlsZSByZW5kZXJTdHlsZSgpIHsgcmV0dXJuIG1fcmVuZGVyU3R5
bGU7IH0KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYgVVNFKFRFWFRVUkVf
TUFQUEVSKQotICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFw
cGVyKiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiwgZmxvYXQgb3BhY2l0eSwgQml0bWFwVGV4dHVyZSogbWFzayk7CisgICAgdmlydHVhbCB2b2lk
IHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmIHRh
cmdldCwgY29uc3QgVGV4dHVyZU1hcHBlclBhaW50UGFyYW1ldGVycyYpOwogI2VuZGlmCiAKIHBy
aXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwv
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwCmluZGV4IGM4MDc5NjYzMzdm
MWY4OThmNzRmNzMwYmViZWM3ZWU0N2QzYTJmNWIuLjk2YjBmMjc3OGRiYTVhZjdlOGRhYjBiNmMw
YWJiMjNjM2FjNDc1NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2VmbC9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwCkBAIC0x
MTYsNyArMTE2LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6Om1ha2VDb250ZXh0
Q3VycmVudCgpCiB9CiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCi12b2lkIEdyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNv
bnN0IEZsb2F0UmVjdCYgLyogdGFyZ2V0ICovLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYs
IGZsb2F0IC8qIG9wYWNpdHkgKi8sIEJpdG1hcFRleHR1cmUqIC8qIG1hc2sgKi8pCit2b2lkIEdy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBl
ciosIGNvbnN0IEZsb2F0UmVjdCYgLyogdGFyZ2V0ICovLCBjb25zdCBUZXh0dXJlTWFwcGVyUGFp
bnRQYXJhbWV0ZXJzJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZS5oCmluZGV4IDJlYjJmNzU4NzFkMGRjZDkxNTJhMTg2NWJhZjA1NWU5NTQ2
MjA0YjUuLjE4NzdmNWUxNjIyMDUxNjRlNmRmY2RhZTljZWQzZDk4ZTZmMDI5M2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQz
RFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIFBs
YXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsKICNlbmRpZgogI2lmIFVTRShURVhU
VVJFX01BUFBFUl9HTCkKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4
dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0LCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYsIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUqIG1hc2spOworICAgIHZpcnR1
YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRS
ZWN0JiB0YXJnZXQsIGNvbnN0IFRleHR1cmVNYXBwZXJQYWludFBhcmFtZXRlcnMmKTsKICNlbmRp
ZgogI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQogICAgIHZpcnR1YWwgSW50U2l6ZSBwbGF0Zm9y
bUxheWVyU2l6ZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcAppbmRleCA2M2QzMTI1NTFk
ZjlkMmE4NTEyZDA2ODVkOGU0YzBkMDM1MDc5ZjFjLi4zZjc3OWFkY2QyZDAzZTJlYzAwNmE5NDc3
NDEzYTRiY2IyMWE5YTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcApAQCAtNjUsNyArNjUsNyBA
QCBwdWJsaWM6CiAgICAgfkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSgpOwogCiAjaWYgVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1h
cHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXQsIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgb3BhY2l0eSwgQml0bWFwVGV4dHVyZSogbWFzayk7Cisg
ICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25z
dCBGbG9hdFJlY3QmIHRhcmdldCwgY29uc3QgVGV4dHVyZU1hcHBlclBhaW50UGFyYW1ldGVycyYp
OwogI2VuZGlmCiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCiAgICAgdmlydHVhbCBJbnRTaXpl
IHBsYXRmb3JtTGF5ZXJTaXplKCkgY29uc3Q7CkBAIC0yMDgsNyArMjA4LDcgQEAgc3RhdGljIGlu
bGluZSBxdWludDMyIHN3YXBCZ3JUb1JnYihxdWludDMyIHBpeGVsKQogfQogCiAjaWYgVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotdm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBh
aW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZs
b2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwg
ZmxvYXQgb3BhY2l0eSwgQml0bWFwVGV4dHVyZSogbWFzaykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFw
cGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRleHR1cmVNYXBwZXJQYWlu
dFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7CiAgICAgbV9jb250ZXh0LT5tYXJrTGF5ZXJDb21w
b3NpdGVkKCk7CiAgICAgYmxpdE11bHRpc2FtcGxlRnJhbWVidWZmZXJBbmRSZXN0b3JlQ29udGV4
dCgpOwpAQCAtMjMwLDcgKzIzMCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpw
YWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyCiAgICAgICAg
IGN1cnJlbnRDb250ZXh0LT5tYWtlQ3VycmVudChjdXJyZW50U3VyZmFjZSk7CiAKICAgICAgICAg
VGV4dHVyZU1hcHBlckdMKiB0ZXhtYXBHTCA9IHN0YXRpY19jYXN0PFRleHR1cmVNYXBwZXJHTCo+
KHRleHR1cmVNYXBwZXIpOwotICAgICAgICBtX2dyYXBoaWNzU3VyZmFjZS0+cGFpbnRUb1RleHR1
cmVNYXBwZXIodGV4bWFwR0wsIHRhcmdldFJlY3QsIG1hdHJpeCwgb3BhY2l0eSwgbWFzayk7Cisg
ICAgICAgIG1fZ3JhcGhpY3NTdXJmYWNlLT5wYWludFRvVGV4dHVyZU1hcHBlcih0ZXhtYXBHTCwg
dGFyZ2V0UmVjdCwgcGFyYW1ldGVycy5tb2RlbFZpZXdNYXRyaXgsIHBhcmFtZXRlcnMub3BhY2l0
eSwgcGFyYW1ldGVycy5tYXNrKTsKICNlbmRpZgogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
MjM4LDggKzIzOCw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4
dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyCiAgICAgR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0ID0gdGV4dHVyZU1hcHBlci0+Z3JhcGhpY3NDb250ZXh0KCk7CiAgICAgUVBh
aW50ZXIqIHBhaW50ZXIgPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKICAgICBwYWludGVy
LT5zYXZlKCk7Ci0gICAgcGFpbnRlci0+c2V0VHJhbnNmb3JtKG1hdHJpeCk7Ci0gICAgcGFpbnRl
ci0+c2V0T3BhY2l0eShvcGFjaXR5KTsKKyAgICBwYWludGVyLT5zZXRUcmFuc2Zvcm0ocGFyYW1l
dGVycy5tb2RlbFZpZXdNYXRyaXgpOworICAgIHBhaW50ZXItPnNldE9wYWNpdHkocGFyYW1ldGVy
cy5vcGFjaXR5KTsKIAogICAgIGNvbnN0IGludCBoZWlnaHQgPSBtX2NvbnRleHQtPm1fY3VycmVu
dEhlaWdodDsKICAgICBjb25zdCBpbnQgd2lkdGggPSBtX2NvbnRleHQtPm1fY3VycmVudFdpZHRo
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvTWVkaWFQ
bGF5ZXJQcml2YXRlUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQv
TWVkaWFQbGF5ZXJQcml2YXRlUXQuY3BwCmluZGV4IGUwODNlMjk3MzJiYmI3OGYwZmU1MjM5MTMy
YWU1NGI3NDM0YzAwM2EuLjM1MzBjYTcxN2Y2ZmU4ODQ1NWU2MDMxODJjMWM3NDIyMDNlYzE4YTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L01lZGlhUGxh
eWVyUHJpdmF0ZVF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9x
dC9NZWRpYVBsYXllclByaXZhdGVRdC5jcHAKQEAgLTY0NSw3ICs2NDUsNyBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZVF0OjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsCiB9CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi12b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZVF0OjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVy
KiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUqKQor
dm9pZCBNZWRpYVBsYXllclByaXZhdGVRdDo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1h
cHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBU
ZXh0dXJlTWFwcGVyUGFpbnRQYXJhbWV0ZXJzJikKIHsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvTWVkaWFQbGF5ZXJQcml2YXRlUXQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L01lZGlhUGxheWVyUHJpdmF0
ZVF0LmgKaW5kZXggOGUzMWM5ZDZkYzgxM2Q2NDM5ZTMyMjRjMTUyMWVlMDAzMDQwZjU5NS4uMDM0
YzE2ZjRhNGJkMTgyNTdjY2I4NDZjNGZmYTk0YmMwYTM5YTg4NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvTWVkaWFQbGF5ZXJQcml2YXRlUXQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9NZWRpYVBsYXllclByaXZhdGVR
dC5oCkBAIC0xMDksNyArMTA5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBhY2NlbGVy
YXRlZFJlbmRlcmluZ1N0YXRlQ2hhbmdlZCgpIHsgfQogICAgIC8vIENvbnN0LWNhc3RpbmcgaGVy
ZSBpcyBzYWZlLCBzaW5jZSBhbGwgb2YgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIncyBmdW5j
dGlvbnMgYXJlIGNvbnN0LmcKICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5
ZXIoKSBjb25zdCB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJl
TWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgb3BhY2l0eSwgQml0bWFwVGV4dHVyZSogbWFz
ayk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIq
LCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRleHR1cmVNYXBwZXJQYWludFBh
cmFtZXRlcnMmKTsKICNlbmRpZgogCiAgICAgdmlydHVhbCBQbGF0Zm9ybU1lZGlhIHBsYXRmb3Jt
TWVkaWEoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmNwcApp
bmRleCBlODk5MjUzMWIyODdjNWI1OTc3OWU2NDc2ZTgwMWI4YjY5OTVjMmM3Li5lZGJjNjFiNGRi
YjY4OWNiMzY4ZDVjM2U3MDdjZGFiOTBkYmNiYjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJCYWNraW5nU3RvcmUuY3BwCkBAIC01MiwxMCArNTIsMTAgQEAgUGFzc1JlZlB0cjxCaXRtYXBU
ZXh0dXJlPiBUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZTo6dGV4dHVyZSgpIGNvbnN0
CiAgICAgcmV0dXJuIGVtcHR5VGV4dHVyZTsKIH0KIAotdm9pZCBUZXh0dXJlTWFwcGVyU3VyZmFj
ZUJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVy
ZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKQor
dm9pZCBUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVNYXBw
ZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRS
ZWN0LCBjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewog
ICAgIGlmIChtX2dyYXBoaWNzU3VyZmFjZSkKLSAgICAgICAgbV9ncmFwaGljc1N1cmZhY2UtPnBh
aW50VG9UZXh0dXJlTWFwcGVyKHRleHR1cmVNYXBwZXIsIHRhcmdldFJlY3QsIHRyYW5zZm9ybSwg
b3BhY2l0eSwgbWFzayk7CisgICAgICAgIG1fZ3JhcGhpY3NTdXJmYWNlLT5wYWludFRvVGV4dHVy
ZU1hcHBlcih0ZXh0dXJlTWFwcGVyLCB0YXJnZXRSZWN0LCBwYXJhbWV0ZXJzLm1vZGVsVmlld01h
dHJpeCwgcGFyYW1ldGVycy5vcGFjaXR5LCBwYXJhbWV0ZXJzLm1hc2spOwogfQogI2VuZGlmCiAK
QEAgLTEzMywxMyArMTMzLDEzIEBAIHVuc2lnbmVkIFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmU6
OmNhbGN1bGF0ZUV4cG9zZWRUaWxlRWRnZXMoY29uc3QgRmxvYXRSZWN0JiB0CiAgICAgcmV0dXJu
IGV4cG9zZWRFZGdlczsKIH0KIAotdm9pZCBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6
OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0
IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5z
Zm9ybSwgZmxvYXQgb3BhY2l0eSwgQml0bWFwVGV4dHVyZSogbWFzaykKK3ZvaWQgVGV4dHVyZU1h
cHBlclRpbGVkQmFja2luZ1N0b3JlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVy
KiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRleHR1
cmVNYXBwZXJQYWludFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7CiAgICAgdXBkYXRlQ29udGVu
dHNGcm9tSW1hZ2VJZk5lZWRlZCh0ZXh0dXJlTWFwcGVyKTsKLSAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBhZGp1c3RlZFRyYW5zZm9ybSA9IHRyYW5zZm9ybTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBhZGp1c3RlZFRyYW5zZm9ybSA9IHBhcmFtZXRlcnMubW9kZWxWaWV3TWF0cml4OwogICAg
IGFkanVzdGVkVHJhbnNmb3JtLm11bHRpcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4OjpyZWN0VG9S
ZWN0KHJlY3QoKSwgdGFyZ2V0UmVjdCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90
aWxlcy5zaXplKCk7ICsraSkgewotICAgICAgICBtX3RpbGVzW2ldLnBhaW50KHRleHR1cmVNYXBw
ZXIsIGFkanVzdGVkVHJhbnNmb3JtLCBvcGFjaXR5LCBtYXNrLCBjYWxjdWxhdGVFeHBvc2VkVGls
ZUVkZ2VzKHJlY3QoKSwgbV90aWxlc1tpXS5yZWN0KCkpKTsKKyAgICAgICAgbV90aWxlc1tpXS5w
YWludCh0ZXh0dXJlTWFwcGVyLCBhZGp1c3RlZFRyYW5zZm9ybSwgcGFyYW1ldGVycy5vcGFjaXR5
LCBwYXJhbWV0ZXJzLm1hc2ssIGNhbGN1bGF0ZUV4cG9zZWRUaWxlRWRnZXMocmVjdCgpLCBtX3Rp
bGVzW2ldLnJlY3QoKSkpOwogICAgICAgICBpZiAobV9kcmF3c0RlYnVnQm9yZGVycykKICAgICAg
ICAgICAgIHRleHR1cmVNYXBwZXItPmRyYXdCb3JkZXIobV9kZWJ1Z0JvcmRlckNvbG9yLCBtX2Rl
YnVnQm9yZGVyV2lkdGgsIG1fdGlsZXNbaV0ucmVjdCgpLCBhZGp1c3RlZFRyYW5zZm9ybSk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmgKaW5kZXggMGRkMmRmNGIx
OThiZDMxMWZkNDFjNTVhMzM3NzIxODRjZDE0YjM0YS4uZDYzMTA0ZjczZmQ3ZTIwNGM2NjliNzQw
N2RiMWYwNjlkMDdmMGEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5o
CkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIEdyYXBoaWNzTGF5ZXI7CiBjbGFzcyBUZXh0dXJlTWFw
cGVyQmFja2luZ1N0b3JlIDogcHVibGljIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLCBwdWJs
aWMgUmVmQ291bnRlZDxUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlPiB7CiBwdWJsaWM6CiAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUoKSBjb25zdCA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0LCBCaXRtYXBU
ZXh0dXJlKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0
dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVGV4dHVyZU1hcHBlclBhaW50UGFy
YW1ldGVycyYpID0gMDsKICAgICB2aXJ0dWFsIH5UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlKCkg
eyB9CiAKIHByb3RlY3RlZDoKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
R3JhcGhpY3NTdXJmYWNlKFBhc3NSZWZQdHI8R3JhcGhpY3NTdXJmYWNlPik7CiAgICAgdm9pZCBz
d2FwQnVmZmVyc0lmTmVlZGVkKHVpbnQzMl90IGZyb250QnVmZmVyKTsKICAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9p
ZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCwgQml0bWFwVGV4dHVyZSopOworICAg
IHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3Qg
RmxvYXRSZWN0JiwgY29uc3QgVGV4dHVyZU1hcHBlclBhaW50UGFyYW1ldGVycyYpOwogICAgIHZp
cnR1YWwgflRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlKCkgeyB9CiAKIHByaXZhdGU6
CkBAIC05Myw3ICs5Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5UZXh0dXJlTWFwcGVyVGls
ZWRCYWNraW5nU3RvcmUoKSB7IH0KIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0
dXJlPiB0ZXh0dXJlKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VG9U
ZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0LCBCaXRtYXBUZXh0dXJlKikgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRQYXJhbWV0ZXJzJikgT1ZFUlJJREU7
CiAgICAgdm9pZCB1cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVyKiwgSW1hZ2UqLCBjb25zdCBG
bG9hdFNpemUmLCBjb25zdCBJbnRSZWN0JiwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ29udGVudHNG
bGFnKTsKICAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqLCBHcmFwaGljc0xh
eWVyKiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW50UmVjdCYsIEJpdG1hcFRleHR1cmU6OlVw
ZGF0ZUNvbnRlbnRzRmxhZyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKaW5kZXggMzM0
Njc0ZTQ4NGY1MGQ0ZGNmYzAyZDRjZTYxNTk0MTA4MWQyODZkNi4uNTI0MzUxZWRjODY3NWViOTlh
MDg1MTk2MTc0YTQ3NTA1Yzk2OWUyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKQEAg
LTExNSw4ICsxMTUsMTAgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50U2VsZihjb25z
dCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBvcHRpb25zKQogICAgIHRyYW5zZm9ybS5tdWx0
aXBseShvcHRpb25zLnRyYW5zZm9ybSk7CiAgICAgdHJhbnNmb3JtLm11bHRpcGx5KG1fZWZmZWN0
aXZlVHJhbnNmb3JtLmNvbWJpbmVkKCkpOwogCi0gICAgZmxvYXQgb3BhY2l0eSA9IG9wdGlvbnMu
b3BhY2l0eTsKLSAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gbWFzayA9IG9wdGlvbnMubWFzazsK
KyAgICBUZXh0dXJlTWFwcGVyUGFpbnRQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CisgICAgcGFyYW1l
dGVycy5tb2RlbFZpZXdNYXRyaXggPSB0cmFuc2Zvcm07CisgICAgcGFyYW1ldGVycy5vcGFjaXR5
ID0gb3B0aW9ucy5vcGFjaXR5OworICAgIHBhcmFtZXRlcnMubWFzayA9IG9wdGlvbnMubWFzay5n
ZXQoKTsKIAogICAgIGlmIChtX3N0YXRlLnNvbGlkQ29sb3IuaXNWYWxpZCgpICYmICFtX3N0YXRl
LmNvbnRlbnRzUmVjdC5pc0VtcHR5KCkpIHsKICAgICAgICAgaWYgKCFtX3N0YXRlLnNvbGlkQ29s
b3IuYWxwaGEoKSkKQEAgLTEyNSwyMCArMTI3LDIwIEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVy
OjpwYWludFNlbGYoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucykKICAg
ICAgICAgQ29sb3IgY29sb3IgPSBtX3N0YXRlLnNvbGlkQ29sb3I7CiAgICAgICAgIGZsb2F0IHIs
IGcsIGIsIGE7CiAgICAgICAgIGNvbG9yLmdldFJHQkEociwgZywgYiwgYSk7Ci0gICAgICAgIGNv
bG9yID0gQ29sb3IociAqIG9wYWNpdHksIGcgKiBvcGFjaXR5LCBiICogb3BhY2l0eSwgYSAqIG9w
YWNpdHkpOwotICAgICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmRyYXdTb2xpZENvbG9yKG1f
c3RhdGUuY29udGVudHNSZWN0LCB0cmFuc2Zvcm0sIGNvbG9yKTsKKyAgICAgICAgY29sb3IgPSBD
b2xvcihyICogcGFyYW1ldGVycy5vcGFjaXR5LCBnICogcGFyYW1ldGVycy5vcGFjaXR5LCBiICog
cGFyYW1ldGVycy5vcGFjaXR5LCBhICogcGFyYW1ldGVycy5vcGFjaXR5KTsKKyAgICAgICAgb3B0
aW9ucy50ZXh0dXJlTWFwcGVyLT5kcmF3U29saWRDb2xvcihtX3N0YXRlLmNvbnRlbnRzUmVjdCwg
cGFyYW1ldGVycy5tb2RlbFZpZXdNYXRyaXgsIGNvbG9yKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAogICAgIGlmIChtX2JhY2tpbmdTdG9yZSkgewogICAgICAgICBBU1NFUlQobV9zdGF0ZS5k
cmF3c0NvbnRlbnQgJiYgbV9zdGF0ZS5jb250ZW50c1Zpc2libGUgJiYgIW1fc3RhdGUuc2l6ZS5p
c0VtcHR5KCkpOwogICAgICAgICBBU1NFUlQoIWxheWVyUmVjdCgpLmlzRW1wdHkoKSk7Ci0gICAg
ICAgIG1fYmFja2luZ1N0b3JlLT5wYWludFRvVGV4dHVyZU1hcHBlcihvcHRpb25zLnRleHR1cmVN
YXBwZXIsIGxheWVyUmVjdCgpLCB0cmFuc2Zvcm0sIG9wYWNpdHksIG1hc2suZ2V0KCkpOworICAg
ICAgICBtX2JhY2tpbmdTdG9yZS0+cGFpbnRUb1RleHR1cmVNYXBwZXIob3B0aW9ucy50ZXh0dXJl
TWFwcGVyLCBsYXllclJlY3QoKSwgcGFyYW1ldGVycyk7CiAgICAgfQogCiAgICAgaWYgKG1fY29u
dGVudHNMYXllcikgewogICAgICAgICBBU1NFUlQoIWxheWVyUmVjdCgpLmlzRW1wdHkoKSk7Ci0g
ICAgICAgIG1fY29udGVudHNMYXllci0+cGFpbnRUb1RleHR1cmVNYXBwZXIob3B0aW9ucy50ZXh0
dXJlTWFwcGVyLCBtX3N0YXRlLmNvbnRlbnRzUmVjdCwgdHJhbnNmb3JtLCBvcGFjaXR5LCBtYXNr
LmdldCgpKTsKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5wYWludFRvVGV4dHVyZU1hcHBlcihv
cHRpb25zLnRleHR1cmVNYXBwZXIsIG1fc3RhdGUuY29udGVudHNSZWN0LCBwYXJhbWV0ZXJzKTsK
ICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgKaW5kZXgg
MzhhZjAzZTg5YjYyNDgxYWJhZjMyMDk4YzNhODE3YWI0ZDAwMGMxZS4uNjdjNWRhZmVhMjczN2Y0
NjUzYjcyYmEwMTNmYTVmODE4YjFlMTNiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyLmgKQEAgLTI0LDE3ICsyNCwyNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzU3VyZmFj
ZS5oIgogI2VuZGlmCiAKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyLmgiCiAjaW5jbHVkZSAiVHJh
bnNmb3JtYXRpb25NYXRyaXguaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBUZXh0
dXJlTWFwcGVyOwotY2xhc3MgQml0bWFwVGV4dHVyZTsKK2NsYXNzIFRleHR1cmVNYXBwZXJQYWlu
dFBhcmFtZXRlcnMgeworcHVibGljOgorICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1vZGVsVmll
d01hdHJpeDsKKyAgICBmbG9hdCBvcGFjaXR5OworICAgIEJpdG1hcFRleHR1cmUqIG1hc2s7CisK
KyAgICBUZXh0dXJlTWFwcGVyUGFpbnRQYXJhbWV0ZXJzKCkKKyAgICAgICAgOiBvcGFjaXR5KDEp
CisgICAgICAgICwgbWFzaygwKQorICAgIHsgfQorfTsKIAogY2xhc3MgVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXIgewogcHVibGljOgogICAgIHZpcnR1YWwgflRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1
cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
bW9kZWxWaWV3TWF0cml4ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgZmxvYXQgb3BhY2l0eSA9
IDEuMCwgQml0bWFwVGV4dHVyZSogbWFzayA9IDApID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IFRleHR1cmVNYXBwZXJQYWludFBhcmFtZXRlcnMmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN3
YXBCdWZmZXJzKCkgeyB9CiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCiAgICAgdmlydHVhbCBJ
bnRTaXplIHBsYXRmb3JtTGF5ZXJTaXplKCkgY29uc3QgeyByZXR1cm4gSW50U2l6ZSgpOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAKaW5kZXggNGE3YmIx
MDg2ZWU3YTg2N2IyZDNmZDY4MGM1YTM3ZGIwNWI4YjdkOC4uMzIxNTNiNDkxM2FlZjg3OWY2ZTQ4
NjJlNzlkYjFkZmZlYjE2NmU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFj
a2luZ1N0b3JlLmNwcApAQCAtMTE5LDIxICsxMTksMjEgQEAgc3RhdGljIGJvb2wgc2hvdWxkU2hv
d1RpbGVEZWJ1Z1Zpc3VhbHMoKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBDb29yZGlu
YXRlZEJhY2tpbmdTdG9yZTo6cGFpbnRUaWxlc1RvVGV4dHVyZU1hcHBlcihWZWN0b3I8VGV4dHVy
ZU1hcHBlclRpbGUqPiYgdGlsZXMsIFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRl
eHR1cmUqIG1hc2ssIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKK3ZvaWQgQ29vcmRpbmF0ZWRCYWNr
aW5nU3RvcmU6OnBhaW50VGlsZXNUb1RleHR1cmVNYXBwZXIoVmVjdG9yPFRleHR1cmVNYXBwZXJU
aWxlKj4mIHRpbGVzLCBUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBUZXh0dXJl
TWFwcGVyUGFpbnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBGbG9hdFJlY3QmIHJlY3Qp
CiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0aWxlcy5zaXplKCk7ICsraSkgewogICAg
ICAgICBUZXh0dXJlTWFwcGVyVGlsZSogdGlsZSA9IHRpbGVzW2ldOwotICAgICAgICB0aWxlLT5w
YWludCh0ZXh0dXJlTWFwcGVyLCB0cmFuc2Zvcm0sIG9wYWNpdHksIG1hc2ssIGNhbGN1bGF0ZUV4
cG9zZWRUaWxlRWRnZXMocmVjdCwgdGlsZS0+cmVjdCgpKSk7CisgICAgICAgIHRpbGUtPnBhaW50
KHRleHR1cmVNYXBwZXIsIHBhcmFtZXRlcnMubW9kZWxWaWV3TWF0cml4LCBwYXJhbWV0ZXJzLm9w
YWNpdHksIHBhcmFtZXRlcnMubWFzaywgY2FsY3VsYXRlRXhwb3NlZFRpbGVFZGdlcyhyZWN0LCB0
aWxlLT5yZWN0KCkpKTsKICAgICAgICAgc3RhdGljIGJvb2wgc2hvdWxkRGVidWcgPSBzaG91bGRT
aG93VGlsZURlYnVnVmlzdWFscygpOwogICAgICAgICBpZiAoIXNob3VsZERlYnVnKQogICAgICAg
ICAgICAgY29udGludWU7CiAKLSAgICAgICAgdGV4dHVyZU1hcHBlci0+ZHJhd0JvcmRlcihDb2xv
cigweEZGLCAwLCAwKSwgMiwgdGlsZS0+cmVjdCgpLCB0cmFuc2Zvcm0pOwotICAgICAgICB0ZXh0
dXJlTWFwcGVyLT5kcmF3UmVwYWludENvdW50ZXIoc3RhdGljX2Nhc3Q8Q29vcmRpbmF0ZWRCYWNr
aW5nU3RvcmVUaWxlKj4odGlsZSktPnJlcGFpbnRDb3VudCgpLCA4LCB0aWxlLT5yZWN0KCkubG9j
YXRpb24oKSwgdHJhbnNmb3JtKTsKKyAgICAgICAgdGV4dHVyZU1hcHBlci0+ZHJhd0JvcmRlcihD
b2xvcigweEZGLCAwLCAwKSwgMiwgdGlsZS0+cmVjdCgpLCBwYXJhbWV0ZXJzLm1vZGVsVmlld01h
dHJpeCk7CisgICAgICAgIHRleHR1cmVNYXBwZXItPmRyYXdSZXBhaW50Q291bnRlcihzdGF0aWNf
Y2FzdDxDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGUqPih0aWxlKS0+cmVwYWludENvdW50KCks
IDgsIHRpbGUtPnJlY3QoKS5sb2NhdGlvbigpLCBwYXJhbWV0ZXJzLm1vZGVsVmlld01hdHJpeCk7
CiAgICAgfQogfQogCi12b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpwYWludFRvVGV4dHVy
ZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRh
cmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGZsb2F0IG9w
YWNpdHksIEJpdG1hcFRleHR1cmUqIG1hc2spCit2b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3Jl
OjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25z
dCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRleHR1cmVNYXBwZXJQYWludFBhcmFtZXRl
cnMmIHBhcmFtZXRlcnMpCiB7CiAgICAgaWYgKG1fdGlsZXMuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm47CkBAIC0xNTgsMjAgKzE1OCwyMCBAQCB2b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3Jl
OjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLAogCiAg
ICAgICAgIC8vIE9ubHkgc2hvdyB0aGUgcHJldmlvdXMgdGlsZSBpZiB0aGUgb3BhY2l0eSBpcyBo
aWdoLCBvdGhlcndpc2UgZWZmZWN0IGxvb2tzIGxpa2UgYSBidWcuCiAgICAgICAgIC8vIFdlIHNo
b3cgdGhlIHByZXZpb3VzLXNjYWxlIHRpbGUgYW55d2F5IGlmIGl0IGRvZXNuJ3QgaW50ZXJzZWN0
IHdpdGggYW55IGN1cnJlbnQtc2NhbGUgdGlsZS4KLSAgICAgICAgaWYgKG9wYWNpdHkgPCAwLjk1
ICYmIGNvdmVyZWRSZWN0LmludGVyc2VjdHModGlsZS5yZWN0KCkpKQorICAgICAgICBpZiAocGFy
YW1ldGVycy5vcGFjaXR5IDwgMC45NSAmJiBjb3ZlcmVkUmVjdC5pbnRlcnNlY3RzKHRpbGUucmVj
dCgpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIHByZXZpb3VzVGlsZXNUb1Bh
aW50LmFwcGVuZCgmdGlsZSk7CiAgICAgfQogCiAgICAgRmxvYXRSZWN0IHJlY3RPbkNvbnRlbnRz
KEZsb2F0UG9pbnQ6Onplcm8oKSwgbV9zaXplKTsKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBh
ZGp1c3RlZFRyYW5zZm9ybSA9IHRyYW5zZm9ybTsKKyAgICBUZXh0dXJlTWFwcGVyUGFpbnRQYXJh
bWV0ZXJzIGFkanVzdGVkUGFyYW1ldGVycyA9IHBhcmFtZXRlcnM7CiAgICAgLy8gdGFyZ2V0UmVj
dCBpcyBvbiB0aGUgY29udGVudHMgY29vcmRpbmF0ZSBzeXN0ZW0sIHNvIHdlIG11c3QgY29tcGFy
ZSB0d28gcmVjdHMgb24gdGhlIGNvbnRlbnRzIGNvb3JkaW5hdGUgc3lzdGVtLgogICAgIC8vIFNl
ZSBUaWxlZEJhY2tpbmdTdG9yZS4KLSAgICBhZGp1c3RlZFRyYW5zZm9ybS5tdWx0aXBseShUcmFu
c2Zvcm1hdGlvbk1hdHJpeDo6cmVjdFRvUmVjdChyZWN0T25Db250ZW50cywgdGFyZ2V0UmVjdCkp
OworICAgIGFkanVzdGVkUGFyYW1ldGVycy5tb2RlbFZpZXdNYXRyaXgubXVsdGlwbHkoVHJhbnNm
b3JtYXRpb25NYXRyaXg6OnJlY3RUb1JlY3QocmVjdE9uQ29udGVudHMsIHRhcmdldFJlY3QpKTsK
IAotICAgIHBhaW50VGlsZXNUb1RleHR1cmVNYXBwZXIocHJldmlvdXNUaWxlc1RvUGFpbnQsIHRl
eHR1cmVNYXBwZXIsIGFkanVzdGVkVHJhbnNmb3JtLCBvcGFjaXR5LCBtYXNrLCByZWN0T25Db250
ZW50cyk7Ci0gICAgcGFpbnRUaWxlc1RvVGV4dHVyZU1hcHBlcih0aWxlc1RvUGFpbnQsIHRleHR1
cmVNYXBwZXIsIGFkanVzdGVkVHJhbnNmb3JtLCBvcGFjaXR5LCBtYXNrLCByZWN0T25Db250ZW50
cyk7CisgICAgcGFpbnRUaWxlc1RvVGV4dHVyZU1hcHBlcihwcmV2aW91c1RpbGVzVG9QYWludCwg
dGV4dHVyZU1hcHBlciwgYWRqdXN0ZWRQYXJhbWV0ZXJzLCByZWN0T25Db250ZW50cyk7CisgICAg
cGFpbnRUaWxlc1RvVGV4dHVyZU1hcHBlcih0aWxlc1RvUGFpbnQsIHRleHR1cmVNYXBwZXIsIGFk
anVzdGVkUGFyYW1ldGVycywgcmVjdE9uQ29udGVudHMpOwogfQogCiB2b2lkIENvb3JkaW5hdGVk
QmFja2luZ1N0b3JlOjpjb21taXRUaWxlT3BlcmF0aW9ucyhUZXh0dXJlTWFwcGVyKiB0ZXh0dXJl
TWFwcGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmgKaW5kZXgg
YWU1YWY4ZDRmYTJmYzllYmQyMTE5NzI3ZmNhZGQ4NTk2MjMzMGY5OS4uZjY1NGIzNGI0YTcwYmJi
M2VkMzIxY2Q3MTllNjFkZWNmNWEwZDRiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZEJhY2tpbmdTdG9yZS5oCkBAIC02NSwxMyArNjUsMTMgQEAgcHVibGljOgogICAgIHZvaWQgY29t
bWl0VGlsZU9wZXJhdGlvbnMoV2ViQ29yZTo6VGV4dHVyZU1hcHBlciopOwogICAgIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0
U2l6ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRU
b1RleHR1cmVNYXBwZXIoV2ViQ29yZTo6VGV4dHVyZU1hcHBlciosIGNvbnN0IFdlYkNvcmU6OkZs
b2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQsIFdl
YkNvcmU6OkJpdG1hcFRleHR1cmUqKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVN
YXBwZXIoV2ViQ29yZTo6VGV4dHVyZU1hcHBlciosIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYs
IGNvbnN0IFdlYkNvcmU6OlRleHR1cmVNYXBwZXJQYWludFBhcmFtZXRlcnMmKTsKIAogcHJpdmF0
ZToKICAgICBDb29yZGluYXRlZEJhY2tpbmdTdG9yZSgpCiAgICAgICAgIDogbV9zY2FsZSgxLikK
ICAgICB7IH0KLSAgICB2b2lkIHBhaW50VGlsZXNUb1RleHR1cmVNYXBwZXIoVmVjdG9yPFdlYkNv
cmU6OlRleHR1cmVNYXBwZXJUaWxlKj4mLCBXZWJDb3JlOjpUZXh0dXJlTWFwcGVyKiwgY29uc3Qg
V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCwgV2ViQ29yZTo6Qml0bWFwVGV4
dHVyZSosIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpOworICAgIHZvaWQgcGFpbnRUaWxlc1Rv
VGV4dHVyZU1hcHBlcihWZWN0b3I8V2ViQ29yZTo6VGV4dHVyZU1hcHBlclRpbGUqPiYsIFdlYkNv
cmU6OlRleHR1cmVNYXBwZXIqLCBjb25zdCBXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGFpbnRQYXJh
bWV0ZXJzJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jik7CiAKICAgICBIYXNoTWFwPHVpbnQz
Ml90LCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGU+IG1fdGlsZXM7CiAgICAgSGFzaFNldDx1
aW50MzJfdD4gbV90aWxlc1RvUmVtb3ZlOwo=
</data>
<flag name="review"
          id="198183"
          type_id="1"
          status="-"
          setter="noam"
    />
    <flag name="commit-queue"
          id="198184"
          type_id="3"
          status="-"
          setter="noam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180784</attachid>
            <date>2012-12-27 02:56:40 -0800</date>
            <delta_ts>2012-12-27 03:17:49 -0800</delta_ts>
            <desc>WIP Patch : [TexMap] Refactor code related to debug border and repaint count. [2/2]</desc>
            <filename>bug-105787-20121227195351.patch</filename>
            <type>text/plain</type>
            <size>58587</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4NDg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTI5YzlkODBjYjljZTg4
NDY3Y2JlMDliZmU4MjhkYmU2MjI3NDE2OS4uMWNmYmMwODg4OWVmYzE3MDIzMWQ4MTc4M2NmNjNk
NzEwNGE3OWIwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDczIEBACiAyMDEyLTEyLTI3ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCisgICAgICAgIFtRdF1bRUZM
XVtHVEtdW1RleE1hcF0gUmVmYWN0b3IgY29kZSByZWxhdGVkIHRvIGRlYnVnIGJvcmRlciBhbmQg
cmVwYWludCBjb3VudC4gWzIvMl0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwNTc4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEN1cnJlbnRseSwgVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZSwgQ29vcmRp
bmF0ZWRCYWNraW5nU3RvcmUgYW5kCisgICAgICAgIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
IGhhdmUgZHVwbGljYXRlZCBjb2RlIHRvIGRyYXcgZGVidWcgYm9yZGVyIG9yIHJlcGFpbnQKKyAg
ICAgICAgY291bnQuIFRoaXMgcGF0Y2ggcmVmYWN0b3JzIHRoYXQgYWxsIHBsYXRmb3JtIGxheWVy
cyBkcmF3IGRlYnVnIGJvcmRlciBhbmQgcmVwYWludAorICAgICAgICBjb3VudCBpbiB0aGUgY29u
c2lzdGVudCB3YXkuCisKKyAgICAgICAgVGhlcmUgYXJlIHRocmVlIGJpZyBjaGFuZ2VzOgorICAg
ICAgICAxLiBUbyBlbmFibGUgb3IgZGlzYWJsZSB0aGlzIGZlYXR1cmUsIHdlIHVzZSBzZXRTaG93
RGVidWdCb3JkZXJzKGJvb2wpIGFuZAorICAgICAgICBzZXRTaG93UmVwYWludENvdW50ZXIoYm9v
bCkgaW4gU2V0dGluZ3MuCisgICAgICAgIEFzIHdlIGRpZCwgaWYgW1FUX11XRUJLSVRfU0hPV19D
T01QT1NJVElOR19ERUJVR19WSVNVQUxTIGlzIHNldCB0byAxLCBib3RoCisgICAgICAgIHNldHRp
bmdzIGFyZSBzZXQgdG8gdHJ1ZS4gSXQgbWVhbnMgdGhhdCBub3cgd2UgY2FuIHNlZSBkZWJ1Z2dp
bmcgdmlzdWFscyBpbiBXSzEKKyAgICAgICAgYXMgd2VsbCBhcyBXSzIuCisgICAgICAgIDIuIFRl
eHR1cmVNYXBwZXJMYXllciBoYXMgdGhlIGRlYnVnZ2luZyB2aXN1YWxzIGxpa2UgR3JhcGhpY3NM
YXllci4KKyAgICAgICAgV2hlbiBjYWxsaW5nIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyOjpw
YWludFRvVGV4dHVyZU1hcHBlcigpLCB3ZSBzZW5kIHRoZQorICAgICAgICBkZWJ1Z2dpbmcgdmlz
dWFscyB2aWEgVGV4dHVyZU1hcHBlclBhaW50UGFyYW1ldGVycyB0byB0aGUgcGxhdGZvcm0gbGF5
ZXIuIFRoZQorICAgICAgICBwbGF0Zm9ybSBsYXllciBkcmF3cyBkZWJ1ZyBib3JkZXIgYW5kIHJl
cGFpbnQgY291bnQgdXNpbmcgZHJhd0JvcmRlcigpIGFuZAorICAgICAgICBkcmF3UmVwYWludENv
dW50ZXIoKSBpbiBUZXh0dXJlTWFwcGVyLgorICAgICAgICAzLiBXZSB1c2UgdGhlIHNhbWUgY29s
b3IgYW5kIHdpZHRoIHRvIE1hYyBwb3J0IGJlY2F1c2Ugd2UgZ2V0IGJvdGggaW5mbyB1c2luZwor
ICAgICAgICBHcmFwaGljc0xheWVyOjp1cGRhdGVEZWJ1Z0luZGljYXRvcnMoKS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMuIFJlZmFjdG9yaW5nIG9ubHkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBhaW50VG9UZXh0dXJl
TWFwcGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXI6OnNldFNob3dEZWJ1Z0JvcmRlcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpmbHVzaENvbXBvc2l0aW5n
U3RhdGVGb3JUaGlzTGF5ZXJPbmx5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyOjp1cGRhdGVEZWJ1Z0JvcmRlckFuZFJlcGFpbnRDb3VudCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6cHJlcGFyZUJhY2tpbmdTdG9y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0UmVw
YWludENvdW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXIuaDoKKyAgICAgICAgKEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpkZWJ1Z0Jv
cmRlckNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
OjpkZWJ1Z0JvcmRlcldpZHRoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBw
ZXJTdXJmYWNlQmFja2luZ1N0b3JlOjpwYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OnBhaW50VG9UZXh0dXJlTWFw
cGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJh
Y2tpbmdTdG9yZS5oOgorICAgICAgICAoVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRBQkdSVG9BUkdCKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdMOjpkcmF3UmVwYWludENvdW50ZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVm
ZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1h
cHBlckltYWdlQnVmZmVyOjpkcmF3UmVwYWludENvdW50ZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxmKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHR1cmVNYXBwZXJMYXllcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVy
T25seSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJM
YXllci5oOgorICAgICAgICAoU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBl
ckxheWVyOjpTdGF0ZTo6U3RhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oOgorICAgICAgICAoVGV4dHVyZU1hcHBlclBh
aW50UGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGFpbnRQYXJh
bWV0ZXJzOjpUZXh0dXJlTWFwcGVyUGFpbnRQYXJhbWV0ZXJzKToKKworMjAxMi0xMi0yNyAgSHVh
bmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKwogICAgICAgICBbVGV4TWFw
XSBSZWZhY3RvciBjb2RlIHJlbGF0ZWQgdG8gZGVidWcgYm9yZGVyIGFuZCByZXBhaW50IGNvdW50
LiBbMS8yXQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTA1Nzg3CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCAzMTI1Y2M0YTM1MWQ4ZTk1MGJlNWI4NmU3MWY2
MmU4MDBhMWRhODkzLi41OWYwNjc0ZmE3OTU2MzM2NDQ0NmY3NjRjYjU0OTcxOWRhMTlhYzUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMTItMjcgIEh1YW5nIERvbmdz
dW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CisKKyAgICAgICAgW1F0XVtFRkxdW0dUS11b
VGV4TWFwXSBSZWZhY3RvciBjb2RlIHJlbGF0ZWQgdG8gZGVidWcgYm9yZGVyIGFuZCByZXBhaW50
IGNvdW50LiBbMi8yXQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTA1Nzg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSWYgV0VCS0lUX1NIT1dfQ09NUE9TSVRJTkdfREVCVUdfVklTVUFMUyBpcyBzZXQgdG8g
MSwgc2V0CisgICAgICAgIHNob3dEZWJ1Z0JvcmRlcnMgYW5kIHNob3dSZXBhaW50Q291bnRlciBp
biBTZXR0aW5ncyB0byB0cnVlLgorCisgICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKKyAgICAg
ICAgKF9ld2tfdmlld19wcml2X25ldyk6CisKIDIwMTItMTItMjMgIEFsZXhleSBQcm9za3VyeWFr
b3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyODA4Mzc3PiBO
ZXR3b3JrIHByb2Nlc3Mgc2hvdWxkIHJlc3BlY3QgY29va2llIGFjY2VwdCBwb2xpY3kKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0No
YW5nZUxvZwppbmRleCBiYTM5YjAwMzkxYzI0MTE4YjhkODQzYzRlNTU3YTIxM2RlZDcyMTkyLi41
NDEyMjczNmVkNDBiOTczMGEzNzQ4ZmI1NjZkYjM1Yzk0NjZhZmYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMTItMjcgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFA
Y29tcGFueTEwMC5uZXQ+CisKKyAgICAgICAgW1F0XVtFRkxdW0dUS11bVGV4TWFwXSBSZWZhY3Rv
ciBjb2RlIHJlbGF0ZWQgdG8gZGVidWcgYm9yZGVyIGFuZCByZXBhaW50IGNvdW50LiBbMi8yXQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1Nzg3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSWYgV0VCS0lU
X1NIT1dfQ09NUE9TSVRJTkdfREVCVUdfVklTVUFMUyBpcyBzZXQgdG8gMSwgc2V0CisgICAgICAg
IHNob3dEZWJ1Z0JvcmRlcnMgYW5kIHNob3dSZXBhaW50Q291bnRlciBpbiBTZXR0aW5ncyB0byB0
cnVlLgorCisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwOgorICAgICAgICAod2Vi
a2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aW5ncyk6CisKIDIwMTItMTItMjMgIEFsZXhleSBQcm9z
a3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyODA4
Mzc3PiBOZXR3b3JrIHByb2Nlc3Mgc2hvdWxkIHJlc3BlY3QgY29va2llIGFjY2VwdCBwb2xpY3kK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9x
dC9DaGFuZ2VMb2cKaW5kZXggM2UyOWEyZjI4MmI3NmY0MjEwMDg4OTJmYjJhM2Y3MjJiMzA5ZTk3
YS4uMDYwNTBhZDg0MjZjMTdiOTg4NThiMDNhN2YyNmUwMDhhNGY2YjA4OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0xMi0yNyAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxs
YUBjb21wYW55MTAwLm5ldD4KKworICAgICAgICBbUXRdW0VGTF1bR1RLXVtUZXhNYXBdIFJlZmFj
dG9yIGNvZGUgcmVsYXRlZCB0byBkZWJ1ZyBib3JkZXIgYW5kIHJlcGFpbnQgY291bnQuIFsyLzJd
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU3ODcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJZiBRVF9X
RUJLSVRfU0hPV19DT01QT1NJVElOR19ERUJVR19WSVNVQUxTIGlzIHNldCB0byAxLCBzZXQKKyAg
ICAgICAgc2hvd0RlYnVnQm9yZGVycyBhbmQgc2hvd1JlcGFpbnRDb3VudGVyIGluIFNldHRpbmdz
IHRvIHRydWUuCisKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKFFX
ZWJTZXR0aW5nc1ByaXZhdGU6OmFwcGx5KToKKwogMjAxMi0xMi0yNiAgSHVhbmcgRG9uZ3N1bmcg
IDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBbVGV4TWFwXSBSZW5hbWUgZWZm
ZWN0aXZlW1RyYW5zZm9ybXxPcGFjaXR5fEZpbHRlcnNdIGluIFRleHR1cmVNYXBwZXJMYXllci4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBlZTA4OGMzZTkyNjRjN2JhOTgxMjViY2E1M2EzZjVmMzc2ZWNkYmI0Li5h
OGY4NTY5ODBlYzA5YzcyNTI4NjlhYjNhYTc1Zjg5ZDhiOTExN2NhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDUgKzEsNTggQEAKIDIwMTItMTItMjcgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFu
eTEwMC5uZXQ+CiAKKyAgICAgICAgW1F0XVtFRkxdW0dUS11bVGV4TWFwXSBSZWZhY3RvciBjb2Rl
IHJlbGF0ZWQgdG8gZGVidWcgYm9yZGVyIGFuZCByZXBhaW50IGNvdW50LiBbMi8yXQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1Nzg3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlcmUgYXJlIHRocmVl
IGJpZyBjaGFuZ2VzOgorICAgICAgICAxLiBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIgc2VuZHMg
ZGVidWdnaW5nIHZpc3VhbHMgdG8gVUkgUHJvY2Vzcy4KKyAgICAgICAgMi4gSWYgW1FUX11XRUJL
SVRfU0hPV19DT01QT1NJVElOR19ERUJVR19WSVNVQUxTIGlzIHNldCB0byAxLCBzZXQKKyAgICAg
ICAgc2hvd0RlYnVnQm9yZGVycyBhbmQgc2hvd1JlcGFpbnRDb3VudGVyIGluIFNldHRpbmdzIHRv
IHRydWUuCisgICAgICAgIDMuIFdoZW4gdXBkYXRpbmcgYSBiYWNraW5nIHN0b3JlLCBhIGNvbXBv
c2l0ZWQgaW1hZ2Ugb3IgYSBwbGF0Zm9ybQorICAgICAgICBjYW52YXMgbGF5ZXIsIGluY3JlbWVu
dCBhIHJlcGFpbnQgY291bnQuCisKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZExheWVySW5mby5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnVwZGF0ZVRpbGUpOgorICAgICAgICAoV2ViS2l0OjpD
b29yZGluYXRlZEJhY2tpbmdTdG9yZTo6cGFpbnRUaWxlc1RvVGV4dHVyZU1hcHBlcik6CisgICAg
ICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3Rv
cmUuaDoKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlOjpDb29y
ZGluYXRlZEJhY2tpbmdTdG9yZVRpbGUpOgorICAgICAgICAoQ29vcmRpbmF0ZWRCYWNraW5nU3Rv
cmVUaWxlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdFByb3h5OjpzZXRSZXBhaW50Q291bnQpOgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVy
VHJlZUhvc3RQcm94eS5oOgorICAgICAgICAoQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdFByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGlu
YXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5
ZXJUcmVlUmVuZGVyZXI6OnNldFJlcGFpbnRDb3VudCk6CisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6c2V0TGF5ZXJTdGF0ZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaDoKKyAg
ICAgICAgKExheWVyVHJlZVJlbmRlcmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRTaG93RGVidWdCb3JkZXIp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXI6OnNldFNob3dSZXBhaW50Q291bnRlcik6CisgICAgICAgIChXZWJDb3JlOjpDb29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnN5bmNJbWFnZUJhY2tpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzeW5jTGF5ZXJTdGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnN5bmNDYW52YXMpOgorICAgICAgICAo
V2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp0aWxlZEJhY2tpbmdTdG9yZVBhaW50
RW5kKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKENvb3JkaW5hdGVkR3JhcGhpY3NM
YXllckNsaWVudCk6CisgICAgICAgIChDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dDo6c2V0UmVwYWludENvdW50KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRUaWxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRUaWxlOjp1cGRh
dGVCYWNrQnVmZmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKToKKworMjAxMi0x
Mi0yNyAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKwogICAgICAg
ICBbVGV4TWFwXSBSZWZhY3RvciBjb2RlIHJlbGF0ZWQgdG8gZGVidWcgYm9yZGVyIGFuZCByZXBh
aW50IGNvdW50LiBbMS8yXQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTA1Nzg3CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwCmlu
ZGV4IDc4NTlkN2QyZTIwN2ViNDc0YTUzMjM5YWVmMmE4MzBlOTA0OWQ2YTcuLmJhMmE4NGNhZGQx
MWE0YzNlZjNlNzkwOTIxNTkyNjljYmFmNDljMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlLmNwcApAQCAtMTIzLDYgKzEyMywxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBl
cgogICAgICAgICBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+ZHJhd1N1cmZhY2VUb0NvbnRl
eHQoaW1hZ2VTdXJmYWNlLmdldCgpLCB0YXJnZXRSZWN0LCBJbnRSZWN0KDAsIDAsIHdpZHRoLCBo
ZWlnaHQpLCBjb250ZXh0KTsKIAogICAgICAgICBjb250ZXh0LT5yZXN0b3JlKCk7CisKKyAgICAg
ICAgaWYgKHBhcmFtZXRlcnMuc2hvd0RlYnVnQm9yZGVycykKKyAgICAgICAgICAgIHRleHR1cmVN
YXBwZXItPmRyYXdCb3JkZXIocGFyYW1ldGVycy5kZWJ1Z0JvcmRlckNvbG9yLCBwYXJhbWV0ZXJz
LmRlYnVnQm9yZGVyV2lkdGgsIHRhcmdldFJlY3QsIHBhcmFtZXRlcnMubW9kZWxWaWV3TWF0cml4
KTsKKyAgICAgICAgaWYgKHBhcmFtZXRlcnMuc2hvd1JlcGFpbnRDb3VudGVyKQorICAgICAgICAg
ICAgdGV4dHVyZU1hcHBlci0+ZHJhd1JlcGFpbnRDb3VudGVyKHBhcmFtZXRlcnMucmVwYWludENv
dW50LCBwYXJhbWV0ZXJzLmRlYnVnQm9yZGVyQ29sb3IsIHRhcmdldFJlY3QubG9jYXRpb24oKSwg
cGFyYW1ldGVycy5tb2RlbFZpZXdNYXRyaXgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC0xNDMsNiArMTQ4LDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRv
VGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyCiAgICAgVGV4dHVyZU1h
cHBlckdMOjpGbGFncyBmbGFncyA9IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkRmxpcFRleHR1cmUg
fCAobV9jb250ZXh0LT5tX2F0dHJzLmFscGhhID8gVGV4dHVyZU1hcHBlckdMOjpTaG91bGRCbGVu
ZCA6IDApOwogICAgIEludFNpemUgdGV4dHVyZVNpemUobV9jb250ZXh0LT5tX2N1cnJlbnRXaWR0
aCwgbV9jb250ZXh0LT5tX2N1cnJlbnRIZWlnaHQpOwogICAgIHRleG1hcEdMLT5kcmF3VGV4dHVy
ZShtX2NvbnRleHQtPm1fdGV4dHVyZSwgZmxhZ3MsIHRleHR1cmVTaXplLCB0YXJnZXRSZWN0LCBw
YXJhbWV0ZXJzLm1vZGVsVmlld01hdHJpeCwgcGFyYW1ldGVycy5vcGFjaXR5LCBwYXJhbWV0ZXJz
Lm1hc2spOworCisgICAgaWYgKHBhcmFtZXRlcnMuc2hvd0RlYnVnQm9yZGVycykKKyAgICAgICAg
dGV4dHVyZU1hcHBlci0+ZHJhd0JvcmRlcihwYXJhbWV0ZXJzLmRlYnVnQm9yZGVyQ29sb3IsIHBh
cmFtZXRlcnMuZGVidWdCb3JkZXJXaWR0aCwgdGFyZ2V0UmVjdCwgcGFyYW1ldGVycy5tb2RlbFZp
ZXdNYXRyaXgpOworICAgIGlmIChwYXJhbWV0ZXJzLnNob3dSZXBhaW50Q291bnRlcikKKyAgICAg
ICAgdGV4dHVyZU1hcHBlci0+ZHJhd1JlcGFpbnRDb3VudGVyKHBhcmFtZXRlcnMucmVwYWludENv
dW50LCB0YXJnZXRSZWN0LmxvY2F0aW9uKCksIHBhcmFtZXRlcnMubW9kZWxWaWV3TWF0cml4KTsK
ICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkdfR0wpCiB9CiAjZW5kaWYgLy8g
VVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcAppbmRleCAz
Zjc3OWFkY2QyZDAzZTJlYzAwNmE5NDc3NDEzYTRiY2IyMWE5YTk4Li5mYmJkZGFhZTVkNDE4NmZl
ODE3MzQ4M2Y0MWMwZmUzNmZkMmQ2MTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcApAQCAtMjMx
LDYgKzIzMSwxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1RleHR1
cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlcgogCiAgICAgICAgIFRleHR1cmVN
YXBwZXJHTCogdGV4bWFwR0wgPSBzdGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVyR0wqPih0ZXh0dXJl
TWFwcGVyKTsKICAgICAgICAgbV9ncmFwaGljc1N1cmZhY2UtPnBhaW50VG9UZXh0dXJlTWFwcGVy
KHRleG1hcEdMLCB0YXJnZXRSZWN0LCBwYXJhbWV0ZXJzLm1vZGVsVmlld01hdHJpeCwgcGFyYW1l
dGVycy5vcGFjaXR5LCBwYXJhbWV0ZXJzLm1hc2spOworCisgICAgICAgIGlmIChwYXJhbWV0ZXJz
LnNob3dEZWJ1Z0JvcmRlcnMpCisgICAgICAgICAgICB0ZXh0dXJlTWFwcGVyLT5kcmF3Qm9yZGVy
KHBhcmFtZXRlcnMuZGVidWdCb3JkZXJDb2xvciwgcGFyYW1ldGVycy5kZWJ1Z0JvcmRlcldpZHRo
LCB0YXJnZXRSZWN0LCBwYXJhbWV0ZXJzLm1vZGVsVmlld01hdHJpeCk7CisgICAgICAgIGlmIChw
YXJhbWV0ZXJzLnNob3dSZXBhaW50Q291bnRlcikKKyAgICAgICAgICAgIHRleHR1cmVNYXBwZXIt
PmRyYXdSZXBhaW50Q291bnRlcihwYXJhbWV0ZXJzLnJlcGFpbnRDb3VudCwgcGFyYW1ldGVycy5k
ZWJ1Z0JvcmRlckNvbG9yLCB0YXJnZXRSZWN0LmxvY2F0aW9uKCksIHBhcmFtZXRlcnMubW9kZWxW
aWV3TWF0cml4KTsKICNlbmRpZgogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjc3LDYgKzI4
MiwxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBw
ZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlcgogCiAgICAgcGFpbnRlci0+ZHJhd0ltYWdl
KHRhcmdldFJlY3QsIG9mZnNjcmVlbkltYWdlKTsKICAgICBwYWludGVyLT5yZXN0b3JlKCk7CisK
KyAgICBpZiAocGFyYW1ldGVycy5zaG93RGVidWdCb3JkZXJzKQorICAgICAgICB0ZXh0dXJlTWFw
cGVyLT5kcmF3Qm9yZGVyKHBhcmFtZXRlcnMuZGVidWdCb3JkZXJDb2xvciwgcGFyYW1ldGVycy5k
ZWJ1Z0JvcmRlcldpZHRoLCB0YXJnZXRSZWN0LCBwYXJhbWV0ZXJzLm1vZGVsVmlld01hdHJpeCk7
CisgICAgaWYgKHBhcmFtZXRlcnMuc2hvd1JlcGFpbnRDb3VudGVyKQorICAgICAgICB0ZXh0dXJl
TWFwcGVyLT5kcmF3UmVwYWludENvdW50ZXIocGFyYW1ldGVycy5yZXBhaW50Q291bnQsIHBhcmFt
ZXRlcnMuZGVidWdCb3JkZXJDb2xvciwgdGFyZ2V0UmVjdC5sb2NhdGlvbigpLCBwYXJhbWV0ZXJz
Lm1vZGVsVmlld01hdHJpeCk7CiB9CiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAppbmRleCBl
OTYyOTZiYTUxZTRhYTcxMTVkYmEyMjZhYTU3ZmZlZjBlYzAxMjIyLi41ZTk3N2MwMjc2ZDRjZTQw
NmM1M2U0ZjM3MmIxNzA1MWQzYWJlNDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlci5jcHAKQEAgLTI0LDE0ICsyNCw4IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NMYXll
ckFuaW1hdGlvbi5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJGYWN0b3J5LmgiCiAjaW5jbHVk
ZSAiSW1hZ2VCdWZmZXIuaCIKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUg
PHd0Zi9DdXJyZW50VGltZS5oPgogCi0jaWYgVVNFKENBSVJPKQotI2luY2x1ZGUgIkNhaXJvVXRp
bGl0aWVzLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotI2VuZGlmCi0KIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogUGFzc093blB0cjxHcmFwaGljc0xheWVyPiBHcmFwaGljc0xheWVy
OjpjcmVhdGUoR3JhcGhpY3NMYXllckZhY3RvcnkqIGZhY3RvcnksIEdyYXBoaWNzTGF5ZXJDbGll
bnQqIGNsaWVudCkKQEAgLTM4MywxNSArMzc3LDM5IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXI6OnNldENvbnRlbnRzVG9NZWRpYShUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllcioK
ICAgICBtX2NvbnRlbnRzTGF5ZXIgPSBtZWRpYTsKIH0KIAordm9pZCBHcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlcjo6c2V0U2hvd0RlYnVnQm9yZGVyKGJvb2wgc2hvdykKK3sKKyAgICBpZiAoaXNT
aG93aW5nRGVidWdCb3JkZXIoKSA9PSBzaG93KQorICAgICAgICByZXR1cm47CisKKyAgICBHcmFw
aGljc0xheWVyOjpzZXRTaG93RGVidWdCb3JkZXIoc2hvdyk7Cit9CisKIC8qIFxyZWltcCAoR3Jh
cGhpY3NMYXllci5oKQogKi8KIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmZsdXNo
Q29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKQogeworICAgIHVwZGF0ZURlYnVnQm9y
ZGVyQW5kUmVwYWludENvdW50KCk7CiAgICAgbV9sYXllci0+Zmx1c2hDb21wb3NpdGluZ1N0YXRl
Rm9yVGhpc0xheWVyT25seSh0aGlzKTsKICAgICB1cGRhdGVCYWNraW5nU3RvcmUoKTsKICAgICBk
aWRGbHVzaENvbXBvc2l0aW5nU3RhdGUoKTsKIH0KIAordm9pZCBHcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlcjo6dXBkYXRlRGVidWdCb3JkZXJBbmRSZXBhaW50Q291bnQoKQoreworICAgIG1fdXNp
bmdUaWxlZExheWVyID0gc2hvdWxkSGF2ZUJhY2tpbmdTdG9yZSgpOworICAgIHVwZGF0ZURlYnVn
SW5kaWNhdG9ycygpOworCisgICAgaWYgKCFtX2hhc093bkJhY2tpbmdTdG9yZSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgYm9vbCBuZWVkc1RvUmVwYWludCA9IHNob3VsZEhhdmVCYWNraW5nU3Rv
cmUoKSAmJiAobV9uZWVkc0Rpc3BsYXkgfHwgIW1fbmVlZHNEaXNwbGF5UmVjdC5pc0VtcHR5KCkp
OworICAgIGlmIChpc1Nob3dpbmdSZXBhaW50Q291bnRlcigpICYmIG5lZWRzVG9SZXBhaW50KSB7
CisgICAgICAgIGluY3JlbWVudFJlcGFpbnRDb3VudCgpOworICAgICAgICBtX2NoYW5nZU1hc2sg
fD0gVGV4dHVyZU1hcHBlckxheWVyOjpSZXBhaW50Q291bnRDaGFuZ2U7CisgICAgfQorfQorCiAv
KiBccmVpbXAgKEdyYXBoaWNzTGF5ZXIuaCkKICovCiB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGUoY29uc3QgRmxvYXRSZWN0JiByZWN0KQpAQCAt
NDQ3LDM1ICs0NjUsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpwcmVwYXJl
QmFja2luZ1N0b3JlKCkKICAgICBBU1NFUlQoZHluYW1pY19jYXN0PFRleHR1cmVNYXBwZXJUaWxl
ZEJhY2tpbmdTdG9yZSo+KG1fYmFja2luZ1N0b3JlLmdldCgpKSk7CiAjZW5kaWYKICAgICBUZXh0
dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSA9IHN0YXRpY19jYXN0PFRl
eHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZSo+KG1fYmFja2luZ1N0b3JlLmdldCgpKTsKLQot
ICAgIGlmIChpc1Nob3dpbmdSZXBhaW50Q291bnRlcigpKQotICAgICAgICBpbmNyZW1lbnRSZXBh
aW50Q291bnQoKTsKLQotICAgIC8vIFBhaW50IGludG8gYW4gaW50ZXJtZWRpYXRlIGJ1ZmZlciB0
byBhdm9pZCBwYWludGluZyBjb250ZW50IG1vcmUgdGhhbiBvbmNlLgotICAgIGJvb2wgcGFpbnRP
bmNlID0gdHJ1ZTsKLSAgICBjb25zdCBJbnRTaXplIG1heFRleHR1cmVTaXplID0gdGV4dHVyZU1h
cHBlci0+bWF4VGV4dHVyZVNpemUoKTsKLSAgICAvLyBXZSBuZWVkIHRvIHBhaW50IGRpcmVjdGx5
IGlmIHRoZSBkaXJ0eSByZWN0IGV4Y2VlZHMgb25lIG9mIHRoZSBtYXhpbXVtIGRpbWVuc2lvbnMu
Ci0gICAgaWYgKGRpcnR5UmVjdC53aWR0aCgpID4gbWF4VGV4dHVyZVNpemUud2lkdGgoKSB8fCBk
aXJ0eVJlY3QuaGVpZ2h0KCkgPiBtYXhUZXh0dXJlU2l6ZS5oZWlnaHQoKSkKLSAgICAgICAgcGFp
bnRPbmNlID0gZmFsc2U7Ci0KLSAgICBpZiAocGFpbnRPbmNlKSB7Ci0gICAgICAgIE93blB0cjxJ
bWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGRpcnR5UmVjdC5z
aXplKCkpOwotICAgICAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBpbWFnZUJ1ZmZlci0+
Y29udGV4dCgpOwotICAgICAgICBjb250ZXh0LT5zZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5
KHRleHR1cmVNYXBwZXItPmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7Ci0gICAgICAgIGNv
bnRleHQtPnNldFRleHREcmF3aW5nTW9kZSh0ZXh0dXJlTWFwcGVyLT50ZXh0RHJhd2luZ01vZGUo
KSk7Ci0gICAgICAgIGNvbnRleHQtPnRyYW5zbGF0ZSgtZGlydHlSZWN0LngoKSwgLWRpcnR5UmVj
dC55KCkpOwotICAgICAgICBwYWludEdyYXBoaWNzTGF5ZXJDb250ZW50cygqY29udGV4dCwgZGly
dHlSZWN0KTsKLQotICAgICAgICBpZiAoaXNTaG93aW5nUmVwYWludENvdW50ZXIoKSkKLSAgICAg
ICAgICAgIGRyYXdSZXBhaW50Q291bnRlcihjb250ZXh0KTsKLQotICAgICAgICBSZWZQdHI8SW1h
Z2U+IGltYWdlID0gaW1hZ2VCdWZmZXItPmNvcHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7
Ci0gICAgICAgIGJhY2tpbmdTdG9yZS0+dXBkYXRlQ29udGVudHModGV4dHVyZU1hcHBlciwgaW1h
Z2UuZ2V0KCksIG1fc2l6ZSwgZGlydHlSZWN0LCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDYW5Nb2Rp
ZnlPcmlnaW5hbEltYWdlRGF0YSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIGJhY2tpbmdTdG9yZS0+
dXBkYXRlQ29udGVudHModGV4dHVyZU1hcHBlciwgdGhpcywgbV9zaXplLCBkaXJ0eVJlY3QsIEJp
dG1hcFRleHR1cmU6OlVwZGF0ZUNhbk1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRhKTsKLQotICAgIGJh
Y2tpbmdTdG9yZS0+c2V0U2hvd0RlYnVnQm9yZGVycyhpc1Nob3dpbmdEZWJ1Z0JvcmRlcigpKTsK
LSAgICBiYWNraW5nU3RvcmUtPnNldERlYnVnQm9yZGVyKG1fZGVidWdCb3JkZXJDb2xvciwgbV9k
ZWJ1Z0JvcmRlcldpZHRoKTsKKyAgICBiYWNraW5nU3RvcmUtPnVwZGF0ZUNvbnRlbnRzKHRleHR1
cmVNYXBwZXIsIHRoaXMsIG1fc2l6ZSwgZGlydHlSZWN0LCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVD
YW5Nb2RpZnlPcmlnaW5hbEltYWdlRGF0YSk7CiAKICAgICBtX25lZWRzRGlzcGxheSA9IGZhbHNl
OwogICAgIG1fbmVlZHNEaXNwbGF5UmVjdCA9IEludFJlY3QoKTsKQEAgLTQ4Niw0MCArNDc2LDYg
QEAgYm9vbCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2hvdWxkSGF2ZUJhY2tpbmdTdG9y
ZSgpIGNvbnN0CiAgICAgcmV0dXJuIGRyYXdzQ29udGVudCgpICYmIGNvbnRlbnRzQXJlVmlzaWJs
ZSgpICYmICFtX3NpemUuaXNFbXB0eSgpOwogfQogCi0jaWYgVVNFKENBSVJPKQotdm9pZCBHcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlcjo6ZHJhd1JlcGFpbnRDb3VudGVyKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCkKLXsKLSAgICBjYWlyb190KiBjciA9IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4
dCgpLT5jcigpOwotICAgIGNhaXJvX3NhdmUoY3IpOwotCi0gICAgQ1N0cmluZyByZXBhaW50Q291
bnQgPSBTdHJpbmc6OmZvcm1hdCgiJWkiLCB0aGlzLT5yZXBhaW50Q291bnQoKSkudXRmOCgpOwot
ICAgIGNhaXJvX3NlbGVjdF9mb250X2ZhY2UoY3IsICJzYW5zLXNlcmlmIiwgQ0FJUk9fRk9OVF9T
TEFOVF9OT1JNQUwsIENBSVJPX0ZPTlRfV0VJR0hUX0JPTEQpOwotICAgIGNhaXJvX3NldF9mb250
X3NpemUoY3IsIDE4KTsKLQotICAgIGNhaXJvX3RleHRfZXh0ZW50c190IHJlcGFpbnRUZXh0RXh0
ZW50czsKLSAgICBjYWlyb190ZXh0X2V4dGVudHMoY3IsIHJlcGFpbnRDb3VudC5kYXRhKCksICZy
ZXBhaW50VGV4dEV4dGVudHMpOwotCi0gICAgc3RhdGljIGNvbnN0IGludCByZXBhaW50Q291bnRC
b3JkZXJXaWR0aCA9IDEwOwotICAgIHNldFNvdXJjZVJHQkFGcm9tQ29sb3IoY3IsIGlzU2hvd2lu
Z0RlYnVnQm9yZGVyKCkgPyBtX2RlYnVnQm9yZGVyQ29sb3IgOiBDb2xvcigwLCAyNTUsIDAsIDEy
NykpOwotICAgIGNhaXJvX3JlY3RhbmdsZShjciwgMCwgMCwKLSAgICAgICAgcmVwYWludFRleHRF
eHRlbnRzLndpZHRoICsgKHJlcGFpbnRDb3VudEJvcmRlcldpZHRoICogMiksCi0gICAgICAgIHJl
cGFpbnRUZXh0RXh0ZW50cy5oZWlnaHQgKyAocmVwYWludENvdW50Qm9yZGVyV2lkdGggKiAyKSk7
Ci0gICAgY2Fpcm9fZmlsbChjcik7Ci0KLSAgICBjYWlyb19zZXRfc291cmNlX3JnYihjciwgMSwg
MSwgMSk7Ci0gICAgY2Fpcm9fbW92ZV90byhjciwgcmVwYWludENvdW50Qm9yZGVyV2lkdGgsIHJl
cGFpbnRUZXh0RXh0ZW50cy5oZWlnaHQgKyByZXBhaW50Q291bnRCb3JkZXJXaWR0aCk7Ci0gICAg
Y2Fpcm9fc2hvd190ZXh0KGNyLCByZXBhaW50Q291bnQuZGF0YSgpKTsKLQotICAgIGNhaXJvX3Jl
c3RvcmUoY3IpOwotfQotI2Vsc2UKLXZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmRy
YXdSZXBhaW50Q291bnRlcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCi17Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLX0KLQotI2VuZGlmCi0KIGJvb2wgR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXI6OmFkZEFuaW1hdGlvbihjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0LCBjb25z
dCBJbnRTaXplJiBib3hTaXplLCBjb25zdCBBbmltYXRpb24qIGFuaW0sIGNvbnN0IFN0cmluZyYg
a2V5ZnJhbWVzTmFtZSwgZG91YmxlIHRpbWVPZmZzZXQpCiB7CiAgICAgQVNTRVJUKCFrZXlmcmFt
ZXNOYW1lLmlzRW1wdHkoKSk7CkBAIC01NzcsNCArNTMzLDEwIEBAIGJvb2wgR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OnNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVy
cykKIH0KICNlbmRpZgogCit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRSZXBh
aW50Q291bnQoaW50IHZhbHVlKQoreworICAgIG1fcmVwYWludENvdW50ID0gdmFsdWU7CisgICAg
bm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6UmVwYWludENvdW50Q2hhbmdlKTsKK30K
KwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaAppbmRleCAxMmMzMTk1
OTFiNzI2YzdjOWYwYmEyYmRmZGY0Mzg0ZTdkZWExNzEzLi44MjgwNmM4OGRlOGQ4OGQzYWVmMmMy
MDEwY2Q3ZjUwNTIxMGM3ZTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXIuaApAQCAtMjAsNyArMjAsNiBAQAogI2lmbmRlZiBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
cl9oCiAjZGVmaW5lIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyX2gKIAotI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKICNpbmNsdWRlICJH
cmFwaGljc0xheWVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKQEAgLTY2LDYgKzY1LDcg
QEAgcHVibGljOgogICAgIENvbG9yIHNvbGlkQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX3NvbGlk
Q29sb3I7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNUb01lZGlhKFBsYXRmb3JtTGF5
ZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNUb0NhbnZhcyhQbGF0Zm9ybUxheWVy
KiBjYW52YXMpIHsgc2V0Q29udGVudHNUb01lZGlhKGNhbnZhcyk7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgc2V0U2hvd0RlYnVnQm9yZGVyKGJvb2wpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBm
bHVzaENvbXBvc2l0aW5nU3RhdGUoY29uc3QgRmxvYXRSZWN0Jik7CiAgICAgdmlydHVhbCB2b2lk
IGZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKTsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpOwpAQCAtOTMsMTAgKzkzLDE1IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldEZpeGVkVG9WaWV3cG9ydChib29sIGZpeGVkKSB7IG1fZml4ZWRUb1Zp
ZXdwb3J0ID0gZml4ZWQ7IH0KICAgICBib29sIGZpeGVkVG9WaWV3cG9ydCgpIGNvbnN0IHsgcmV0
dXJuIG1fZml4ZWRUb1ZpZXdwb3J0OyB9CiAKLSAgICB2b2lkIGRyYXdSZXBhaW50Q291bnRlcihH
cmFwaGljc0NvbnRleHQqKTsKKyAgICBDb2xvciBkZWJ1Z0JvcmRlckNvbG9yKCkgY29uc3QgeyBy
ZXR1cm4gbV9kZWJ1Z0JvcmRlckNvbG9yOyB9CisgICAgZmxvYXQgZGVidWdCb3JkZXJXaWR0aCgp
IGNvbnN0IHsgcmV0dXJuIG1fZGVidWdCb3JkZXJXaWR0aDsgfQorCisgICAgdm9pZCBzZXRSZXBh
aW50Q291bnQoaW50IHZhbHVlKTsKKwogcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEJl
RGVzdHJveWVkKCk7CiAgICAgdm9pZCBkaWRGbHVzaENvbXBvc2l0aW5nU3RhdGUoKTsKKyAgICB2
b2lkIHVwZGF0ZURlYnVnQm9yZGVyQW5kUmVwYWludENvdW50KCk7CiAgICAgdm9pZCB1cGRhdGVC
YWNraW5nU3RvcmUoKTsKICAgICB2b2lkIHByZXBhcmVCYWNraW5nU3RvcmUoKTsKICAgICBib29s
IHNob3VsZEhhdmVCYWNraW5nU3RvcmUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oCmluZGV4IGM3MjQx
YTZjOWE3MjJhNjQ1MmY3YzE4YzlkNjY5NzEyNzY2OTM2NmIuLjJhNTI3NmZkMmFmNzc4YTJkMWI0
YmJkNWU5YTAxNDY5YzhhNmU2NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaApAQCAtMTMxLDcgKzEzMSw3IEBA
IHB1YmxpYzoKICAgICB9OwogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdCb3JkZXIoY29uc3QgQ29s
b3ImLCBmbG9hdCBib3JkZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4ID0gVHJhbnNmb3JtYXRpb25N
YXRyaXgoKSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVwYWludENvdW50ZXIoaW50IHZh
bHVlLCBpbnQgcG9pbnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVyKGludCB2YWx1ZSwgY29uc3QgQ29s
b3ImLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVs
Vmlld01hdHJpeCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZHJhd1RleHR1cmUoY29uc3QgQml0bWFwVGV4dHVyZSYsIGNvbnN0IEZsb2F0UmVjdCYgdGFy
Z2V0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4ID0gVHJhbnNm
b3JtYXRpb25NYXRyaXgoKSwgZmxvYXQgb3BhY2l0eSA9IDEuMGYsIGNvbnN0IEJpdG1hcFRleHR1
cmUqIG1hc2tUZXh0dXJlID0gMCwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzID0gQWxsRWRnZXMpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1NvbGlkQ29sb3IoY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBDb2xvciYpID0gMDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJC
YWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuY3BwCmluZGV4IGVkYmM2MWI0ZGJiNjg5Y2IzNjhk
NWMzZTcwN2NkYWI5MGRiY2JiNjkuLjA0MjUzNzMyMjBiODgyNTIzZTFiN2JkYTgyOTdiYjBkZjg2
OGYwMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5jcHAKQEAgLTU0
LDggKzU0LDE0IEBAIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gVGV4dHVyZU1hcHBlclN1cmZh
Y2VCYWNraW5nU3RvcmU6OnRleHR1cmUoKSBjb25zdAogCiB2b2lkIFRleHR1cmVNYXBwZXJTdXJm
YWNlQmFja2luZ1N0b3JlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0
dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRleHR1cmVNYXBw
ZXJQYWludFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7Ci0gICAgaWYgKG1fZ3JhcGhpY3NTdXJm
YWNlKQotICAgICAgICBtX2dyYXBoaWNzU3VyZmFjZS0+cGFpbnRUb1RleHR1cmVNYXBwZXIodGV4
dHVyZU1hcHBlciwgdGFyZ2V0UmVjdCwgcGFyYW1ldGVycy5tb2RlbFZpZXdNYXRyaXgsIHBhcmFt
ZXRlcnMub3BhY2l0eSwgcGFyYW1ldGVycy5tYXNrKTsKKyAgICBpZiAoIW1fZ3JhcGhpY3NTdXJm
YWNlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2dyYXBoaWNzU3VyZmFjZS0+cGFpbnRUb1Rl
eHR1cmVNYXBwZXIodGV4dHVyZU1hcHBlciwgdGFyZ2V0UmVjdCwgcGFyYW1ldGVycy5tb2RlbFZp
ZXdNYXRyaXgsIHBhcmFtZXRlcnMub3BhY2l0eSwgcGFyYW1ldGVycy5tYXNrKTsKKyAgICBpZiAo
cGFyYW1ldGVycy5zaG93RGVidWdCb3JkZXJzKQorICAgICAgICB0ZXh0dXJlTWFwcGVyLT5kcmF3
Qm9yZGVyKHBhcmFtZXRlcnMuZGVidWdCb3JkZXJDb2xvciwgcGFyYW1ldGVycy5kZWJ1Z0JvcmRl
cldpZHRoLCB0YXJnZXRSZWN0LCBwYXJhbWV0ZXJzLm1vZGVsVmlld01hdHJpeCk7CisgICAgaWYg
KHBhcmFtZXRlcnMuc2hvd1JlcGFpbnRDb3VudGVyKQorICAgICAgICB0ZXh0dXJlTWFwcGVyLT5k
cmF3UmVwYWludENvdW50ZXIocGFyYW1ldGVycy5yZXBhaW50Q291bnQsIHBhcmFtZXRlcnMuZGVi
dWdCb3JkZXJDb2xvciwgdGFyZ2V0UmVjdC5sb2NhdGlvbigpLCBwYXJhbWV0ZXJzLm1vZGVsVmll
d01hdHJpeCk7CiB9CiAjZW5kaWYKIApAQCAtMTA2LDcgKzExMiw2IEBAIHZvaWQgVGV4dHVyZU1h
cHBlclRpbGU6OnBhaW50KFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uCiB9CiAKIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6VGV4dHVyZU1h
cHBlclRpbGVkQmFja2luZ1N0b3JlKCkKLSAgICA6IG1fZHJhd3NEZWJ1Z0JvcmRlcnMoZmFsc2Up
CiB7CiB9CiAKQEAgLTE0MCw4ICsxNDUsMTAgQEAgdm9pZCBUZXh0dXJlTWFwcGVyVGlsZWRCYWNr
aW5nU3RvcmU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmUKICAg
ICBhZGp1c3RlZFRyYW5zZm9ybS5tdWx0aXBseShUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6cmVjdFRv
UmVjdChyZWN0KCksIHRhcmdldFJlY3QpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1f
dGlsZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgbV90aWxlc1tpXS5wYWludCh0ZXh0dXJlTWFw
cGVyLCBhZGp1c3RlZFRyYW5zZm9ybSwgcGFyYW1ldGVycy5vcGFjaXR5LCBwYXJhbWV0ZXJzLm1h
c2ssIGNhbGN1bGF0ZUV4cG9zZWRUaWxlRWRnZXMocmVjdCgpLCBtX3RpbGVzW2ldLnJlY3QoKSkp
OwotICAgICAgICBpZiAobV9kcmF3c0RlYnVnQm9yZGVycykKLSAgICAgICAgICAgIHRleHR1cmVN
YXBwZXItPmRyYXdCb3JkZXIobV9kZWJ1Z0JvcmRlckNvbG9yLCBtX2RlYnVnQm9yZGVyV2lkdGgs
IG1fdGlsZXNbaV0ucmVjdCgpLCBhZGp1c3RlZFRyYW5zZm9ybSk7CisgICAgICAgIGlmIChwYXJh
bWV0ZXJzLnNob3dEZWJ1Z0JvcmRlcnMpCisgICAgICAgICAgICB0ZXh0dXJlTWFwcGVyLT5kcmF3
Qm9yZGVyKHBhcmFtZXRlcnMuZGVidWdCb3JkZXJDb2xvciwgcGFyYW1ldGVycy5kZWJ1Z0JvcmRl
cldpZHRoLCBtX3RpbGVzW2ldLnJlY3QoKSwgYWRqdXN0ZWRUcmFuc2Zvcm0pOworICAgICAgICBp
ZiAocGFyYW1ldGVycy5zaG93UmVwYWludENvdW50ZXIpCisgICAgICAgICAgICB0ZXh0dXJlTWFw
cGVyLT5kcmF3UmVwYWludENvdW50ZXIocGFyYW1ldGVycy5yZXBhaW50Q291bnQsIHBhcmFtZXRl
cnMuZGVidWdCb3JkZXJDb2xvciwgbV90aWxlc1tpXS5yZWN0KCkubG9jYXRpb24oKSwgYWRqdXN0
ZWRUcmFuc2Zvcm0pOwogICAgIH0KIH0KIApAQCAtMjM0LDExICsyNDEsNSBAQCBQYXNzUmVmUHRy
PEJpdG1hcFRleHR1cmU+IFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6dGV4dHVyZSgp
IGNvbnN0CiAgICAgcmV0dXJuIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4oKTsKIH0KIAotdm9p
ZCBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OnNldERlYnVnQm9yZGVyKGNvbnN0IENv
bG9yJiBjb2xvciwgZmxvYXQgd2lkdGgpCi17Ci0gICAgbV9kZWJ1Z0JvcmRlckNvbG9yID0gY29s
b3I7Ci0gICAgbV9kZWJ1Z0JvcmRlcldpZHRoID0gd2lkdGg7Ci19Ci0KIH0KICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmgKaW5kZXggZDYzMTA0ZjczZmQ3ZTIwNGM2
NjliNzQwN2RiMWYwNjlkMDdmMGEzOS4uMGU5ZTM4NDMxOTQ5MmU2Nzg0ZmQ5ZmUzNjViZTFhMjUy
ZDdlZTEwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oCkBAIC05OCw4
ICs5OCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIq
LCBHcmFwaGljc0xheWVyKiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW50UmVjdCYsIEJpdG1h
cFRleHR1cmU6OlVwZGF0ZUNvbnRlbnRzRmxhZyk7CiAKICAgICB2b2lkIHNldENvbnRlbnRzVG9J
bWFnZShJbWFnZSogaW1hZ2UpIHsgbV9pbWFnZSA9IGltYWdlOyB9Ci0gICAgdm9pZCBzZXRTaG93
RGVidWdCb3JkZXJzKGJvb2wgZHJhd3NEZWJ1Z0JvcmRlcnMpIHsgbV9kcmF3c0RlYnVnQm9yZGVy
cyA9IGRyYXdzRGVidWdCb3JkZXJzOyB9Ci0gICAgdm9pZCBzZXREZWJ1Z0JvcmRlcihjb25zdCBD
b2xvciYsIGZsb2F0IHdpZHRoKTsKIAogcHJpdmF0ZToKICAgICBUZXh0dXJlTWFwcGVyVGlsZWRC
YWNraW5nU3RvcmUoKTsKQEAgLTExMCwxMCArMTA4LDYgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8
VGV4dHVyZU1hcHBlclRpbGU+IG1fdGlsZXM7CiAgICAgRmxvYXRTaXplIG1fc2l6ZTsKICAgICBS
ZWZQdHI8SW1hZ2U+IG1faW1hZ2U7Ci0KLSAgICBib29sIG1fZHJhd3NEZWJ1Z0JvcmRlcnM7Ci0g
ICAgQ29sb3IgbV9kZWJ1Z0JvcmRlckNvbG9yOwotICAgIGZsb2F0IG1fZGVidWdCb3JkZXJXaWR0
aDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKaW5kZXggNTcxODRkN2I2NjJjYjMzY2I3
YWIyMDg5MmU0M2EzNTZhMDAwY2EzNS4uZTQzMGNhODk2YjE5NjRhNTkyN2JkMWU3ZGJiZmVlNjlj
Y2ZkNWFmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKQEAgLTMyOCw4ICszMjgsMTQgQEAgdm9p
ZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdCb3JkZXIoY29uc3QgQ29sb3ImIGNvbG9yLCBmbG9hdCB3
aWR0aCwgY29uc3QgRmxvYXRSZWMKICAgICBkcmF3UXVhZCh0YXJnZXRSZWN0LCBtb2RlbFZpZXdN
YXRyaXgsIHByb2dyYW0uZ2V0KCksIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FX0xPT1AsIGNvbG9y
Lmhhc0FscGhhKCkgPyBTaG91bGRCbGVuZCA6IDApOwogfQogCi12b2lkIFRleHR1cmVNYXBwZXJH
TDo6ZHJhd1JlcGFpbnRDb3VudGVyKGludCB2YWx1ZSwgaW50IHBvaW50U2l6ZSwgY29uc3QgRmxv
YXRQb2ludCYgdGFyZ2V0UG9pbnQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZp
ZXdNYXRyaXgpCitzdGF0aWMgaW5saW5lIFJHQkEzMiBjb252ZXJ0QUJHUlRvQVJHQihSR0JBMzIg
cGl4ZWwpCiB7CisgICAgcmV0dXJuICgocGl4ZWwgPDwgMTYpICYgMHhmZjAwMDApIHwgKChwaXhl
bCA+PiAxNikgJiAweGZmKSB8IChwaXhlbCAmIDB4ZmYwMGZmMDApOworfQorCit2b2lkIFRleHR1
cmVNYXBwZXJHTDo6ZHJhd1JlcGFpbnRDb3VudGVyKGludCB2YWx1ZSwgY29uc3QgQ29sb3ImIGNv
bG9yLCBjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRQb2ludCwgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIG1vZGVsVmlld01hdHJpeCkKK3sKKyAgICBzdGF0aWMgY29uc3QgaW50IHBvaW50U2l6
ZSA9IDg7CiAjaWYgUExBVEZPUk0oUVQpCiAgICAgUVN0cmluZyBjb3VudGVyU3RyaW5nID0gUVN0
cmluZzo6bnVtYmVyKHZhbHVlKTsKIApAQCAtMzQ2LDcgKzM1Miw3IEBAIHZvaWQgVGV4dHVyZU1h
cHBlckdMOjpkcmF3UmVwYWludENvdW50ZXIoaW50IHZhbHVlLCBpbnQgcG9pbnRTaXplLCBjb25z
dCBGbG9hdFBvCiAKICAgICBRSW1hZ2UgaW1hZ2Uoc2l6ZSwgTmF0aXZlSW1hZ2VRdDo6ZGVmYXVs
dEZvcm1hdEZvckFscGhhRW5hYmxlZEltYWdlcygpKTsKICAgICBRUGFpbnRlciBwYWludGVyKCZp
bWFnZSk7Ci0gICAgcGFpbnRlci5maWxsUmVjdChzb3VyY2VSZWN0LCBRdDo6Ymx1ZSk7IC8vIFNp
bmNlIHdlIHdvbid0IHN3YXAgUitCIGZvciBzcGVlZCwgdGhpcyB3aWxsIHBhaW50IHJlZC4KKyAg
ICBwYWludGVyLmZpbGxSZWN0KHNvdXJjZVJlY3QsIGNvbnZlcnRBQkdSVG9BUkdCKGNvbG9yLnJn
YigpKSk7IC8vIFNpbmNlIHdlIHdvbid0IHN3YXAgUitCIGZvciBzcGVlZCwgdGhpcyB3aWxsIHBh
aW50IHRoZSBnaXZlbiBjb2xvci4KICAgICBwYWludGVyLnNldEZvbnQoZm9udCk7CiAgICAgcGFp
bnRlci5zZXRQZW4oUXQ6OndoaXRlKTsKICAgICBwYWludGVyLmRyYXdUZXh0KDIsIGhlaWdodCAq
IDAuODUsIGNvdW50ZXJTdHJpbmcpOwpAQCAtMzY1LDcgKzM3MSw3IEBAIHZvaWQgVGV4dHVyZU1h
cHBlckdMOjpkcmF3UmVwYWludENvdW50ZXIoaW50IHZhbHVlLCBpbnQgcG9pbnRTaXplLCBjb25z
dCBGbG9hdFBvCiAgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlID0gY2Fpcm9faW1hZ2Vfc3Vy
ZmFjZV9jcmVhdGUoQ0FJUk9fRk9STUFUX0FSR0IzMiwgd2lkdGgsIGhlaWdodCk7CiAgICAgY2Fp
cm9fdCogY3IgPSBjYWlyb19jcmVhdGUoc3VyZmFjZSk7CiAKLSAgICBjYWlyb19zZXRfc291cmNl
X3JnYihjciwgMCwgMCwgMSk7IC8vIFNpbmNlIHdlIHdvbid0IHN3YXAgUitCIGZvciBzcGVlZCwg
dGhpcyB3aWxsIHBhaW50IHJlZC4KKyAgICBjYWlyb19zZXRfc291cmNlX3JnYmEoY3IsIGNvbG9y
LmJsdWUoKSwgY29sb3IuZ3JlZW4oKSwgY29sb3IucmVkKCksIGNvbG9yLmFscGhhKCkpOyAvLyBT
aW5jZSB3ZSB3b24ndCBzd2FwIFIrQiBmb3Igc3BlZWQsIHRoaXMgd2lsbCBwYWludCB0aGUgZ2l2
ZW4gY29sb3IuCiAgICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLCAwLCAwLCB3aWR0aCwgaGVpZ2h0KTsK
ICAgICBjYWlyb19maWxsKGNyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oCmluZGV4IDU5ZGIzZDM5Nzlj
MGQxMGJlNDE0ODE1ZTc4MjMxNWRmMDdjMzVhMTYuLjU3NWI4NjFiZDQyNmQ3YTJhY2VmNzJkMWQ3
NTU3YjA3MjhhNjBjZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVi
bGljOgogCiAgICAgLy8gVGV4dHVyZU1hcHBlciBpbXBsZW1lbnRhdGlvbgogICAgIHZpcnR1YWwg
dm9pZCBkcmF3Qm9yZGVyKGNvbnN0IENvbG9yJiwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZs
b2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmll
d01hdHJpeCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpIE9WRVJSSURFOwotICAgIHZpcnR1YWwg
dm9pZCBkcmF3UmVwYWludENvdW50ZXIoaW50IHZhbHVlLCBpbnQgcG9pbnRTaXplLCBjb25zdCBG
bG9hdFBvaW50JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCA9
IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkcmF3
UmVwYWludENvdW50ZXIoaW50IHZhbHVlLCBjb25zdCBDb2xvciYsIGNvbnN0IEZsb2F0UG9pbnQm
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4ID0gVHJhbnNmb3Jt
YXRpb25NYXRyaXgoKSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdUZXh0dXJlKGNv
bnN0IEJpdG1hcFRleHR1cmUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEJpdG1hcFRleHR1cmUqIG1hc2tUZXh0dXJl
LCB1bnNpZ25lZCBleHBvc2VkRWRnZXMpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3
VGV4dHVyZShQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUsIEZsYWdzLCBjb25zdCBJbnRTaXplJiB0
ZXh0dXJlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5LCBjb25zdCBCaXRtYXBU
ZXh0dXJlKiBtYXNrVGV4dHVyZSwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzID0gQWxsRWRnZXMpOwog
ICAgIHZpcnR1YWwgdm9pZCBkcmF3U29saWRDb2xvcihjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IENvbG9yJikgT1ZFUlJJREU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlcklt
YWdlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuY3BwCmluZGV4IDVlM2NjOTAzODQ3M2YxMDQwMDE5ZmY0
MDVjN2FlNDZkNjk3ZjU3MTYuLmY1ZDNkOWQyOWE3MDg0N2MwOWJkYmY1NDFhNmU0NWVhYjdmOGUz
ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuY3BwCkBAIC0yNiw2ICsy
NiwxMiBAQAogI2luY2x1ZGUgIk5hdGl2ZUltYWdlUXQuaCIKICNlbmRpZgogCisjaWYgVVNFKENB
SVJPKQorI2luY2x1ZGUgIkNhaXJvVXRpbGl0aWVzLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgorI2Vsc2UKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2VuZGlmCiAKICNp
ZiBVU0UoVEVYVFVSRV9NQVBQRVIpCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNjQsNiArMTcw
LDM4IEBAIHZvaWQgVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyOjpkcmF3U29saWRDb2xvcihjb25z
dCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IFRyYW5zCiAgICAgY29udGV4dC0+cmVzdG9yZSgpOwog
fQogCisjaWYgVVNFKENBSVJPKQordm9pZCBUZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXI6OmRyYXdS
ZXBhaW50Q291bnRlcihpbnQgdmFsdWUsIGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgRmxvYXRQ
b2ludCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgpCit7Cisg
ICAgc3RhdGljIGNvbnN0IGludCBwb2ludFNpemUgPSA4OworICAgIEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCA9IGN1cnJlbnRDb250ZXh0KCk7CisgICAgY2Fpcm9fdCogY3IgPSBjb250ZXh0LT5w
bGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKKyAgICBjYWlyb19zYXZlKGNyKTsKKworICAgIENTdHJp
bmcgY291bnRlclN0cmluZyA9IFN0cmluZzo6bnVtYmVyKHZhbHVlKS5hc2NpaSgpOworICAgIC8v
IGNhaXJvX3RleHRfZXh0ZW50cygpIHJlcXVpcmVzIGEgY2Fpcm9fdCwgc28gZGltZW5zaW9ucyBu
ZWVkIHRvIGJlIGd1ZXNzdGltYXRlZC4KKyAgICBpbnQgd2lkdGggPSBjb3VudGVyU3RyaW5nLmxl
bmd0aCgpICogcG9pbnRTaXplICogMS4yOworICAgIGludCBoZWlnaHQgPSBwb2ludFNpemUgKiAx
LjU7CisKKyAgICBzZXRTb3VyY2VSR0JBRnJvbUNvbG9yKGNyLCBjb2xvcik7CisgICAgY2Fpcm9f
cmVjdGFuZ2xlKGNyLCAwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICBjYWlyb19maWxsKGNyKTsK
KworICAgIGNhaXJvX3NlbGVjdF9mb250X2ZhY2UoY3IsICJNb25vc3BhY2UiLCBDQUlST19GT05U
X1NMQU5UX05PUk1BTCwgQ0FJUk9fRk9OVF9XRUlHSFRfQk9MRCk7CisgICAgY2Fpcm9fc2V0X2Zv
bnRfc2l6ZShjciwgcG9pbnRTaXplKTsKKyAgICBjYWlyb19zZXRfc291cmNlX3JnYihjciwgMSwg
MSwgMSk7CisgICAgY2Fpcm9fbW92ZV90byhjciwgMiwgcG9pbnRTaXplKTsKKyAgICBjYWlyb19z
aG93X3RleHQoY3IsIGNvdW50ZXJTdHJpbmcuZGF0YSgpKTsKKworICAgIGNhaXJvX3Jlc3RvcmUo
Y3IpOworfTsKKyNlbHNlCit2b2lkIFRleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlcjo6ZHJhd1JlcGFp
bnRDb3VudGVyKGludCAvKiB2YWx1ZSAqLywgY29uc3QgQ29sb3ImLCBjb25zdCBGbG9hdFBvaW50
JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9OworI2VuZGlmCisKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiBQYXNzUmVmUHRyPEJpdG1h
cFRleHR1cmU+IEJpdG1hcFRleHR1cmVJbWFnZUJ1ZmZlcjo6YXBwbHlGaWx0ZXJzKFRleHR1cmVN
YXBwZXIqLCBjb25zdCBCaXRtYXBUZXh0dXJlJiBjb250ZW50VGV4dHVyZSwgY29uc3QgRmlsdGVy
T3BlcmF0aW9ucyYgZmlsdGVycykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIu
aAppbmRleCA5ZGU2ZDRjYmQ1ZWIxN2U5MzQ4ODAxOGE2MmE3MTMxZDg5NzM4NGViLi4zNjc3YTNm
ZTAzM2M1MDhkMDBjZWY5ODYzNGFjOTQzZTM2YmQ3MmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJJbWFnZUJ1ZmZlci5oCkBAIC01NywxMCArNTcsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAg
ICBVTlVTRURfUEFSQU0obW9kZWxWaWV3TWF0cml4KTsKICAgICB9OwotICAgIHZpcnR1YWwgdm9p
ZCBkcmF3UmVwYWludENvdW50ZXIoaW50IC8qIHZhbHVlICovLCBpbnQgLyogcG9pbnRTaXplICov
LCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmll
d01hdHJpeCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpIE9WRVJSSURFCi0gICAgewotICAgICAg
ICBVTlVTRURfUEFSQU0obW9kZWxWaWV3TWF0cml4KTsKLSAgICB9OworICAgIHZpcnR1YWwgdm9p
ZCBkcmF3UmVwYWludENvdW50ZXIoaW50IHZhbHVlLCBjb25zdCBDb2xvciYsIGNvbnN0IEZsb2F0
UG9pbnQmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4ID0gVHJh
bnNmb3JtYXRpb25NYXRyaXgoKSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdUZXh0
dXJlKGNvbnN0IEJpdG1hcFRleHR1cmUmLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4
dHVyZSogbWFza1RleHR1cmUsIHVuc2lnbmVkIGV4cG9zZWRFZGdlcykgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIGRyYXdTb2xpZENvbG9yKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiwgY29uc3QgQ29sb3ImKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgYmVnaW5DbGlwKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgRmxvYXRSZWN0
JikgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCmluZGV4IDUyNDM1MWVkYzg2
NzVlYjk5YTA4NTE5NjE3NGE0NzUwNWM5NjllMjUuLjA0YWRmZTZmNWVhOTg2ZTg3N2VkNWJiMzVk
MTQyZmY4ZDFmMGNjYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCkBAIC0xMTksNiAr
MTE5LDExIEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpwYWludFNlbGYoY29uc3QgVGV4dHVy
ZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucykKICAgICBwYXJhbWV0ZXJzLm1vZGVsVmlld01h
dHJpeCA9IHRyYW5zZm9ybTsKICAgICBwYXJhbWV0ZXJzLm9wYWNpdHkgPSBvcHRpb25zLm9wYWNp
dHk7CiAgICAgcGFyYW1ldGVycy5tYXNrID0gb3B0aW9ucy5tYXNrLmdldCgpOworICAgIHBhcmFt
ZXRlcnMuc2hvd0RlYnVnQm9yZGVycyA9IG1fc3RhdGUuc2hvd0RlYnVnQm9yZGVyczsKKyAgICBw
YXJhbWV0ZXJzLmRlYnVnQm9yZGVyQ29sb3IgPSBtX3N0YXRlLmRlYnVnQm9yZGVyQ29sb3I7Cisg
ICAgcGFyYW1ldGVycy5kZWJ1Z0JvcmRlcldpZHRoID0gbV9zdGF0ZS5kZWJ1Z0JvcmRlcldpZHRo
OworICAgIHBhcmFtZXRlcnMuc2hvd1JlcGFpbnRDb3VudGVyID0gbV9zdGF0ZS5zaG93UmVwYWlu
dENvdW50ZXI7CisgICAgcGFyYW1ldGVycy5yZXBhaW50Q291bnQgPSBtX3N0YXRlLnJlcGFpbnRD
b3VudDsKIAogICAgIGlmIChtX3N0YXRlLnNvbGlkQ29sb3IuaXNWYWxpZCgpICYmICFtX3N0YXRl
LmNvbnRlbnRzUmVjdC5pc0VtcHR5KCkpIHsKICAgICAgICAgaWYgKCFtX3N0YXRlLnNvbGlkQ29s
b3IuYWxwaGEoKSkKQEAgLTEyOSw2ICsxMzQsMTEgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6
OnBhaW50U2VsZihjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBvcHRpb25zKQogICAg
ICAgICBjb2xvci5nZXRSR0JBKHIsIGcsIGIsIGEpOwogICAgICAgICBjb2xvciA9IENvbG9yKHIg
KiBwYXJhbWV0ZXJzLm9wYWNpdHksIGcgKiBwYXJhbWV0ZXJzLm9wYWNpdHksIGIgKiBwYXJhbWV0
ZXJzLm9wYWNpdHksIGEgKiBwYXJhbWV0ZXJzLm9wYWNpdHkpOwogICAgICAgICBvcHRpb25zLnRl
eHR1cmVNYXBwZXItPmRyYXdTb2xpZENvbG9yKG1fc3RhdGUuY29udGVudHNSZWN0LCBwYXJhbWV0
ZXJzLm1vZGVsVmlld01hdHJpeCwgY29sb3IpOworCisgICAgICAgIGlmIChwYXJhbWV0ZXJzLnNo
b3dEZWJ1Z0JvcmRlcnMpCisgICAgICAgICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmRyYXdC
b3JkZXIocGFyYW1ldGVycy5kZWJ1Z0JvcmRlckNvbG9yLCBwYXJhbWV0ZXJzLmRlYnVnQm9yZGVy
V2lkdGgsIGxheWVyUmVjdCgpLCBwYXJhbWV0ZXJzLm1vZGVsVmlld01hdHJpeCk7CisgICAgICAg
IGlmIChwYXJhbWV0ZXJzLnNob3dSZXBhaW50Q291bnRlcikKKyAgICAgICAgICAgIG9wdGlvbnMu
dGV4dHVyZU1hcHBlci0+ZHJhd1JlcGFpbnRDb3VudGVyKHBhcmFtZXRlcnMucmVwYWludENvdW50
LCBwYXJhbWV0ZXJzLmRlYnVnQm9yZGVyQ29sb3IsIGxheWVyUmVjdCgpLmxvY2F0aW9uKCksIHBh
cmFtZXRlcnMubW9kZWxWaWV3TWF0cml4KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAt
MzgzLDggKzM5Myw2IEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpmbHVzaENvbXBvc2l0aW5n
U3RhdGVGb3JUaGlzTGF5ZXJPbmx5KEdyYXBoaWNzTGF5ZXJUZXh0CiAgICAgaWYgKGNoYW5nZU1h
c2sgPT0gTm9DaGFuZ2VzICYmIGdyYXBoaWNzTGF5ZXItPm1fYW5pbWF0aW9ucy5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGdyYXBoaWNzTGF5ZXItPnVwZGF0ZURlYnVnSW5kaWNh
dG9ycygpOwotCiAgICAgaWYgKGNoYW5nZU1hc2sgJiBDaGlsZHJlbkNoYW5nZSkKICAgICAgICAg
c2V0Q2hpbGRyZW4oZ3JhcGhpY3NMYXllci0+Y2hpbGRyZW4oKSk7CiAKQEAgLTQwMSw2ICs0MDks
OSBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhp
c0xheWVyT25seShHcmFwaGljc0xheWVyVGV4dAogICAgIGlmIChjaGFuZ2VNYXNrICYgQW5pbWF0
aW9uQ2hhbmdlKQogICAgICAgICBtX2FuaW1hdGlvbnMgPSBncmFwaGljc0xheWVyLT5tX2FuaW1h
dGlvbnM7CiAKKyAgICBpZiAoY2hhbmdlTWFzayAmIFJlcGFpbnRDb3VudENoYW5nZSkKKyAgICAg
ICAgbV9zdGF0ZS5yZXBhaW50Q291bnQgPSBncmFwaGljc0xheWVyLT5yZXBhaW50Q291bnQoKTsK
KwogICAgIG1fc3RhdGUubWFza0xheWVyID0gdG9UZXh0dXJlTWFwcGVyTGF5ZXIoZ3JhcGhpY3NM
YXllci0+bWFza0xheWVyKCkpOwogICAgIG1fc3RhdGUucmVwbGljYUxheWVyID0gdG9UZXh0dXJl
TWFwcGVyTGF5ZXIoZ3JhcGhpY3NMYXllci0+cmVwbGljYUxheWVyKCkpOwogICAgIG1fc3RhdGUu
cG9zID0gZ3JhcGhpY3NMYXllci0+cG9zaXRpb24oKTsKQEAgLTQyMyw2ICs0MzQsMTEgQEAgdm9p
ZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9u
bHkoR3JhcGhpY3NMYXllclRleHQKICNlbmRpZgogICAgIG1fZml4ZWRUb1ZpZXdwb3J0ID0gZ3Jh
cGhpY3NMYXllci0+Zml4ZWRUb1ZpZXdwb3J0KCk7CiAKKyAgICBtX3N0YXRlLnNob3dEZWJ1Z0Jv
cmRlcnMgPSBncmFwaGljc0xheWVyLT5pc1Nob3dpbmdEZWJ1Z0JvcmRlcigpOworICAgIG1fc3Rh
dGUuZGVidWdCb3JkZXJDb2xvciA9IHRvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIoZ3JhcGhp
Y3NMYXllciktPmRlYnVnQm9yZGVyQ29sb3IoKTsKKyAgICBtX3N0YXRlLmRlYnVnQm9yZGVyV2lk
dGggPSB0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKGdyYXBoaWNzTGF5ZXIpLT5kZWJ1Z0Jv
cmRlcldpZHRoKCk7CisgICAgbV9zdGF0ZS5zaG93UmVwYWludENvdW50ZXIgPSBncmFwaGljc0xh
eWVyLT5pc1Nob3dpbmdSZXBhaW50Q291bnRlcigpOworCiAgICAgbV9jb250ZW50c0xheWVyID0g
Z3JhcGhpY3NMYXllci0+cGxhdGZvcm1MYXllcigpOwogCiAgICAgbV9lZmZlY3RpdmVUcmFuc2Zv
cm0uc2V0UG9zaXRpb24oYWRqdXN0ZWRQb3NpdGlvbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIu
aAppbmRleCA2MGRhM2UwMmFkZTI1MDBhMGRmYmI3OTM3NjNjZDNiNzlmMGExMDhhLi44ZTllNzlk
MGQyZjUyNGQ3YTU2ZjQxYWEyZGY1MDlhYWMxMjRjOTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXll
ci5oCkBAIC03MSw3ICs3MSw4IEBAIHB1YmxpYzoKIAogICAgICAgICBSZXBsaWNhTGF5ZXJDaGFu
Z2UgPSAgICAgICAgKDFMIDw8IDIxKSwKICAgICAgICAgQW5pbWF0aW9uQ2hhbmdlID0gICAgICAg
ICAgICgxTCA8PCAyMiksCi0gICAgICAgIEZpbHRlckNoYW5nZSA9ICAgICAgICAgICAgICAoMUwg
PDwgMjMpCisgICAgICAgIEZpbHRlckNoYW5nZSA9ICAgICAgICAgICAgICAoMUwgPDwgMjMpLAor
ICAgICAgICBSZXBhaW50Q291bnRDaGFuZ2UgPSAgICAgICAgKDFMIDw8IDI0KQogICAgIH07CiAK
ICAgICBUZXh0dXJlTWFwcGVyTGF5ZXIoKQpAQCAtMTc4LDYgKzE3OSw5IEBAIHByaXZhdGU6CiAj
aWYgRU5BQkxFKENTU19GSUxURVJTKQogICAgICAgICBGaWx0ZXJPcGVyYXRpb25zIGZpbHRlcnM7
CiAjZW5kaWYKKyAgICAgICAgQ29sb3IgZGVidWdCb3JkZXJDb2xvcjsKKyAgICAgICAgZmxvYXQg
ZGVidWdCb3JkZXJXaWR0aDsKKyAgICAgICAgaW50IHJlcGFpbnRDb3VudDsKIAogICAgICAgICBi
b29sIHByZXNlcnZlczNEIDogMTsKICAgICAgICAgYm9vbCBtYXNrc1RvQm91bmRzIDogMTsKQEAg
LTE4NiwxMSArMTkwLDE1IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgY29udGVudHNPcGFxdWUg
OiAxOwogICAgICAgICBib29sIGJhY2tmYWNlVmlzaWJpbGl0eSA6IDE7CiAgICAgICAgIGJvb2wg
dmlzaWJsZSA6IDE7CisgICAgICAgIGJvb2wgc2hvd0RlYnVnQm9yZGVycyA6IDE7CisgICAgICAg
IGJvb2wgc2hvd1JlcGFpbnRDb3VudGVyIDogMTsKIAogICAgICAgICBTdGF0ZSgpCiAgICAgICAg
ICAgICA6IG9wYWNpdHkoMSkKICAgICAgICAgICAgICwgbWFza0xheWVyKDApCiAgICAgICAgICAg
ICAsIHJlcGxpY2FMYXllcigwKQorICAgICAgICAgICAgLCBkZWJ1Z0JvcmRlcldpZHRoKDApCisg
ICAgICAgICAgICAsIHJlcGFpbnRDb3VudCgwKQogICAgICAgICAgICAgLCBwcmVzZXJ2ZXMzRChm
YWxzZSkKICAgICAgICAgICAgICwgbWFza3NUb0JvdW5kcyhmYWxzZSkKICAgICAgICAgICAgICwg
ZHJhd3NDb250ZW50KGZhbHNlKQpAQCAtMTk4LDYgKzIwNiw4IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAsIGNvbnRlbnRzT3BhcXVlKGZhbHNlKQogICAgICAgICAgICAgLCBiYWNrZmFjZVZpc2li
aWxpdHkoZmFsc2UpCiAgICAgICAgICAgICAsIHZpc2libGUodHJ1ZSkKKyAgICAgICAgICAgICwg
c2hvd0RlYnVnQm9yZGVycyhmYWxzZSkKKyAgICAgICAgICAgICwgc2hvd1JlcGFpbnRDb3VudGVy
KGZhbHNlKQogICAgICAgICB7CiAgICAgICAgIH0KICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXIuaAppbmRleCA2N2M1ZGFmZWEyNzM3ZjQ2NTNiNzJiYTAxM2ZhNWY4
MThiMWUxM2IzLi5iNDgzMzQxYzFjM2VmZmRhN2UxZWM1ZDlkMmY1ZWEzNTE4MDlkODYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaApAQCAtMzUsOSArMzUsMTkgQEAg
cHVibGljOgogICAgIGZsb2F0IG9wYWNpdHk7CiAgICAgQml0bWFwVGV4dHVyZSogbWFzazsKIAor
ICAgIGJvb2wgc2hvd0RlYnVnQm9yZGVyczsKKyAgICBDb2xvciBkZWJ1Z0JvcmRlckNvbG9yOwor
ICAgIGZsb2F0IGRlYnVnQm9yZGVyV2lkdGg7CisgICAgYm9vbCBzaG93UmVwYWludENvdW50ZXI7
CisgICAgaW50IHJlcGFpbnRDb3VudDsKKwogICAgIFRleHR1cmVNYXBwZXJQYWludFBhcmFtZXRl
cnMoKQogICAgICAgICA6IG9wYWNpdHkoMSkKICAgICAgICAgLCBtYXNrKDApCisgICAgICAgICwg
c2hvd0RlYnVnQm9yZGVycyhmYWxzZSkKKyAgICAgICAgLCBkZWJ1Z0JvcmRlcldpZHRoKDApCisg
ICAgICAgICwgc2hvd1JlcGFpbnRDb3VudGVyKGZhbHNlKQorICAgICAgICAsIHJlcGFpbnRDb3Vu
dCgwKQogICAgIHsgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKaW5kZXggZGVi
YjdmN2Q3MmEwZTgxYTU4MGYyNGUwMDQwYTExYjA4ZjYwM2ExMC4uZDEwYzA2Yzc4ZTRmZDE3MTI4
NDdmNjJlM2RlYWI3Njg2ZmZhNDllYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCkBA
IC04MzcsNiArODM3LDkgQEAgc3RhdGljIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogX2V3a192aWV3
X3ByaXZfbmV3KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKICAgICBwcml2LT5wYWdl
U2V0dGluZ3MtPnNldEludGVyYWN0aXZlRm9ybVZhbGlkYXRpb25FbmFibGVkKHRydWUpOwogI2lm
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBwcml2LT5wYWdlU2V0dGluZ3MtPnNl
dEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKGZhbHNlKTsKKyAgICBib29sIHNob3dEZWJ1
Z1Zpc3VhbHMgPSBTdHJpbmcoZ2V0ZW52KCJXRUJLSVRfU0hPV19DT01QT1NJVElOR19ERUJVR19W
SVNVQUxTIikpID09ICIxIjsKKyAgICBwcml2LT5wYWdlU2V0dGluZ3MtPi0+c2V0U2hvd0RlYnVn
Qm9yZGVycyhzaG93RGVidWdWaXN1YWxzKTsKKyAgICBwcml2LT5wYWdlU2V0dGluZ3MtPi0+c2V0
U2hvd1JlcGFpbnRDb3VudGVyKHNob3dEZWJ1Z1Zpc3VhbHMpOwogI2VuZGlmCiAKICAgICB1cmwg
PSBwcml2LT5wYWdlU2V0dGluZ3MtPnVzZXJTdHlsZVNoZWV0TG9jYXRpb24oKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAppbmRleCAyOTMxMGQ0ZTlmZTQ4MTQ1
NzAzZDk5NGY0ZDFlOWQwNzZhNDIwOGVlLi4yOGRkZjMxZDQwMTYxMzQwNjJjMWEzOGM3NDgyODU3
NWFmYjM4Njk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
dmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3Bw
CkBAIC0zNDM1LDYgKzM0MzUsOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfdXBkYXRl
X3NldHRpbmdzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAKICNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCiAgICAgY29yZVNldHRpbmdzLT5zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5n
RW5hYmxlZChzZXR0aW5nc1ByaXZhdGUtPmVuYWJsZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmcpOwor
ICAgIGJvb2wgc2hvd0RlYnVnVmlzdWFscyA9IFN0cmluZyhnZXRlbnYoIldFQktJVF9TSE9XX0NP
TVBPU0lUSU5HX0RFQlVHX1ZJU1VBTFMiKSkgPT0gIjEiOworICAgIGNvcmVTZXR0aW5ncy0+c2V0
U2hvd0RlYnVnQm9yZGVycyhzaG93RGVidWdWaXN1YWxzKTsKKyAgICBjb3JlU2V0dGluZ3MtPnNl
dFNob3dSZXBhaW50Q291bnRlcihzaG93RGVidWdWaXN1YWxzKTsKICNlbmRpZgogCiAjaWYgRU5B
QkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0
aW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwCmluZGV4IDlk
YjAxYjExZThkNDQ4ZGY1MWQ5MjQyYzcxYzdlMDU5Y2VlYTYyZDUuLjIzODE5ZjVhMDY2Njg5MWI2
ZGY5NWYyMjkzZmU5M2JjNjkyNzZmNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQXBp
L3F3ZWJzZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdz
LmNwcApAQCAtMTUwLDYgKzE1MCwxMCBAQCB2b2lkIFFXZWJTZXR0aW5nc1ByaXZhdGU6OmFwcGx5
KCkKICAgICAgICAgc2V0dGluZ3MtPnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JBbmltYXRp
b25FbmFibGVkKHZhbHVlKTsKICAgICAgICAgc2V0dGluZ3MtPnNldEFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdGb3JWaWRlb0VuYWJsZWQoZmFsc2UpOwogICAgICAgICBzZXR0aW5ncy0+c2V0QWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0ZvclBsdWdpbnNFbmFibGVkKGZhbHNlKTsKKworICAgICAgICBib29s
IHNob3dEZWJ1Z1Zpc3VhbHMgPSBxZ2V0ZW52KCJRVF9XRUJLSVRfU0hPV19DT01QT1NJVElOR19E
RUJVR19WSVNVQUxTIikgPT0gIjEiOworICAgICAgICBzZXR0aW5ncy0+c2V0U2hvd0RlYnVnQm9y
ZGVycyhzaG93RGVidWdWaXN1YWxzKTsKKyAgICAgICAgc2V0dGluZ3MtPnNldFNob3dSZXBhaW50
Q291bnRlcihzaG93RGVidWdWaXN1YWxzKTsKICNlbmRpZgogI2lmIEVOQUJMRShXRUJHTCkKICAg
ICAgICAgdmFsdWUgPSBhdHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0aW5nczo6V2ViR0xFbmFibGVk
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRMYXllckluZm8uaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJJbmZvLmgKaW5kZXggNjUyMDU2ZGQ4MTA0MjM2NDBm
Y2Y2OTY5MDVhN2RlNzM3ZDZkNGI5ZS4uMmVmOTllYzA2NzJmNzVhOTg2OTNlNWRiZDkwMWI0NzMz
YjcxMTY5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRMYXllckluZm8uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVySW5mby5oCkBAIC02OCw2ICs2OCw4
IEBAIHN0cnVjdCBDb29yZGluYXRlZExheWVySW5mbyB7CiAgICAgICAgICAgICBib29sIHByZXNl
cnZlczNEIDogMTsKICAgICAgICAgICAgIGJvb2wgaXNSb290TGF5ZXI6IDE7CiAgICAgICAgICAg
ICBib29sIGZpeGVkVG9WaWV3cG9ydCA6IDE7CisgICAgICAgICAgICBib29sIHNob3dEZWJ1Z0Jv
cmRlcnMgOiAxOworICAgICAgICAgICAgYm9vbCBzaG93UmVwYWludENvdW50ZXIgOiAxOwogICAg
ICAgICB9OwogICAgICAgICB1bnNpZ25lZCBmbGFnczsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNr
aW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwCmluZGV4IDMyMTUzYjQ5MTNhZWY4NzlmNmU0
ODYyZTc5ZGIxZGZmZWIxNjZlOGUuLjZmMDJhNWY4N2YzZTFkZWVlZjM0Nzk4MzljY2M3NjExYmU2
M2Q0YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAK
QEAgLTg4LDcgKzg4LDYgQEAgdm9pZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6dXBkYXRlVGls
ZSh1aW50MzJfdCBpZCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwKIHsKICAgICBIYXNoTWFw
PHVpbnQzMl90LCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGU+OjppdGVyYXRvciBpdCA9IG1f
dGlsZXMuZmluZChpZCk7CiAgICAgQVNTRVJUKGl0ICE9IG1fdGlsZXMuZW5kKCkpOwotICAgIGl0
LT52YWx1ZS5pbmNyZW1lbnRSZXBhaW50Q291bnQoKTsKICAgICBpdC0+dmFsdWUuc2V0QmFja0J1
ZmZlcih0aWxlUmVjdCwgc291cmNlUmVjdCwgYmFja0J1ZmZlciwgb2Zmc2V0KTsKIH0KIApAQCAt
MTA5LDI3ICsxMDgsMTYgQEAgdm9pZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6c2V0U2l6ZShj
b25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUpCiAgICAgbV9zaXplID0gc2l6ZTsKIH0KIAot
c3RhdGljIGJvb2wgc2hvdWxkU2hvd1RpbGVEZWJ1Z1Zpc3VhbHMoKQotewotI2lmIFBMQVRGT1JN
KFFUKQotICAgIHJldHVybiAocWdldGVudigiUVRfV0VCS0lUX1NIT1dfQ09NUE9TSVRJTkdfREVC
VUdfVklTVUFMUyIpID09ICIxIik7Ci0jZWxpZiBVU0UoQ0FJUk8pCi0gICAgcmV0dXJuIChTdHJp
bmcoZ2V0ZW52KCJXRUJLSVRfU0hPV19DT01QT1NJVElOR19ERUJVR19WSVNVQUxTIikpID09ICIx
Iik7Ci0jZW5kaWYKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIHZvaWQgQ29vcmRpbmF0ZWRCYWNr
aW5nU3RvcmU6OnBhaW50VGlsZXNUb1RleHR1cmVNYXBwZXIoVmVjdG9yPFRleHR1cmVNYXBwZXJU
aWxlKj4mIHRpbGVzLCBUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBUZXh0dXJl
TWFwcGVyUGFpbnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBGbG9hdFJlY3QmIHJlY3Qp
CiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0aWxlcy5zaXplKCk7ICsraSkgewogICAg
ICAgICBUZXh0dXJlTWFwcGVyVGlsZSogdGlsZSA9IHRpbGVzW2ldOwogICAgICAgICB0aWxlLT5w
YWludCh0ZXh0dXJlTWFwcGVyLCBwYXJhbWV0ZXJzLm1vZGVsVmlld01hdHJpeCwgcGFyYW1ldGVy
cy5vcGFjaXR5LCBwYXJhbWV0ZXJzLm1hc2ssIGNhbGN1bGF0ZUV4cG9zZWRUaWxlRWRnZXMocmVj
dCwgdGlsZS0+cmVjdCgpKSk7Ci0gICAgICAgIHN0YXRpYyBib29sIHNob3VsZERlYnVnID0gc2hv
dWxkU2hvd1RpbGVEZWJ1Z1Zpc3VhbHMoKTsKLSAgICAgICAgaWYgKCFzaG91bGREZWJ1ZykKLSAg
ICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIHRleHR1cmVNYXBwZXItPmRyYXdCb3JkZXIo
Q29sb3IoMHhGRiwgMCwgMCksIDIsIHRpbGUtPnJlY3QoKSwgcGFyYW1ldGVycy5tb2RlbFZpZXdN
YXRyaXgpOwotICAgICAgICB0ZXh0dXJlTWFwcGVyLT5kcmF3UmVwYWludENvdW50ZXIoc3RhdGlj
X2Nhc3Q8Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlKj4odGlsZSktPnJlcGFpbnRDb3VudCgp
LCA4LCB0aWxlLT5yZWN0KCkubG9jYXRpb24oKSwgcGFyYW1ldGVycy5tb2RlbFZpZXdNYXRyaXgp
OworICAgICAgICBpZiAocGFyYW1ldGVycy5zaG93RGVidWdCb3JkZXJzKQorICAgICAgICAgICAg
dGV4dHVyZU1hcHBlci0+ZHJhd0JvcmRlcihwYXJhbWV0ZXJzLmRlYnVnQm9yZGVyQ29sb3IsIHBh
cmFtZXRlcnMuZGVidWdCb3JkZXJXaWR0aCwgdGlsZS0+cmVjdCgpLCBwYXJhbWV0ZXJzLm1vZGVs
Vmlld01hdHJpeCk7CisgICAgICAgIGlmIChwYXJhbWV0ZXJzLnNob3dSZXBhaW50Q291bnRlcikK
KyAgICAgICAgICAgIHRleHR1cmVNYXBwZXItPmRyYXdSZXBhaW50Q291bnRlcihwYXJhbWV0ZXJz
LnJlcGFpbnRDb3VudCwgcGFyYW1ldGVycy5kZWJ1Z0JvcmRlckNvbG9yLCB0aWxlLT5yZWN0KCku
bG9jYXRpb24oKSwgcGFyYW1ldGVycy5tb2RlbFZpZXdNYXRyaXgpOwogICAgIH0KIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmgKaW5kZXggZjY1NGIzNGI0YTcw
YmJiM2VkMzIxY2Q3MTllNjFkZWNmNWEwZDRiMS4uYjhhMjdkMGYwOGMzMzczZTU3Y2MwNTA1MDcz
MzM4NWFlOTdlNDQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9y
ZS5oCkBAIC0zNiwxMyArMzYsMTAgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IENvb3JkaW5hdGVk
QmFja2luZ1N0b3JlVGlsZShmbG9hdCBzY2FsZSA9IDEpCiAgICAgICAgIDogVGV4dHVyZU1hcHBl
clRpbGUoV2ViQ29yZTo6RmxvYXRSZWN0KCkpCiAgICAgICAgICwgbV9zY2FsZShzY2FsZSkKLSAg
ICAgICAgLCBtX3JlcGFpbnRDb3VudCgwKQogICAgIHsKICAgICB9CiAKICAgICBpbmxpbmUgZmxv
YXQgc2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3NjYWxlOyB9Ci0gICAgaW5saW5lIHZvaWQgaW5j
cmVtZW50UmVwYWludENvdW50KCkgeyArK21fcmVwYWludENvdW50OyB9Ci0gICAgaW5saW5lIGlu
dCByZXBhaW50Q291bnQoKSBjb25zdCB7IHJldHVybiBtX3JlcGFpbnRDb3VudDsgfQogICAgIHZv
aWQgc3dhcEJ1ZmZlcnMoV2ViQ29yZTo6VGV4dHVyZU1hcHBlciopOwogICAgIHZvaWQgc2V0QmFj
a0J1ZmZlcihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYs
IFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBidWZmZXIsIGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50Jik7CiAKQEAgLTUyLDcgKzQ5LDYgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpJbnRS
ZWN0IG1fdGlsZVJlY3Q7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgbV9zdXJmYWNlT2Zmc2V0Owog
ICAgIGZsb2F0IG1fc2NhbGU7Ci0gICAgaW50IG1fcmVwYWludENvdW50OwogfTsKIAogY2xhc3Mg
Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmUgOiBwdWJsaWMgV2ViQ29yZTo6VGV4dHVyZU1hcHBlckJh
Y2tpbmdTdG9yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJl
ZUhvc3RQcm94eS5jcHAKaW5kZXggYmFhOGY2NTIzZGViZmRlYmJjNGU1MjJiNDc1ZTE0Y2MxOGZk
MmViNS4uZWY1ZTQ1ZmE5YmMyMzcwMTQ1Y2NjZDFkY2Y4OGM2YjQwNThhYTlhMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcApAQCAt
MjQyLDYgKzI0MiwxMSBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpkZXN0
cm95Q2FudmFzKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCkKIH0KICNlbmRpZgogCit2b2lkIENvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpzZXRSZXBhaW50Q291bnQoQ29vcmRpbmF0ZWRMYXll
cklEIGlkLCBpbnQgdmFsdWUpCit7CisgICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmTGF5ZXJUcmVl
UmVuZGVyZXI6OnNldFJlcGFpbnRDb3VudCwgbV9yZW5kZXJlci5nZXQoKSwgaWQsIHZhbHVlKSk7
Cit9CisKIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OnB1cmdlQmFja2luZ1N0
b3JlcygpCiB7CiAgICAgbV9zdXJmYWNlcy5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmgKaW5kZXggNzU5MWI4NDg1ZDM5ODg2ZWQ3
ZWQyY2QwNWQxMTYxM2ZlNjdmYWNkMy4uZjljYTE5MmMyYjA0MzIyNTlmODhjOWJiNWVjZTNlNDVh
M2M4YTY3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhv
c3RQcm94eS5oCkBAIC04NCw2ICs4NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN5bmNDYW52YXMo
Q29vcmRpbmF0ZWRMYXllcklELCB1aW50MzJfdCBmcm9udEJ1ZmZlcik7CiAgICAgdm9pZCBkZXN0
cm95Q2FudmFzKENvb3JkaW5hdGVkTGF5ZXJJRCk7CiAjZW5kaWYKKyAgICB2b2lkIHNldFJlcGFp
bnRDb3VudChDb29yZGluYXRlZExheWVySUQsIGludCB2YWx1ZSk7CiAgICAgdm9pZCBwdXJnZUJh
Y2tpbmdTdG9yZXMoKTsKICAgICBMYXllclRyZWVSZW5kZXJlciogbGF5ZXJUcmVlUmVuZGVyZXIo
KSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmVyLmdldCgpOyB9CiAgICAgdm9pZCBzZXRMYXllckFu
aW1hdGlvbnMoQ29vcmRpbmF0ZWRMYXllcklELCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVy
QW5pbWF0aW9ucyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZExheWVyVHJlZUhvc3RQcm94eS5tZXNzYWdlcy5pbgppbmRleCAxMzdkYWQ4MDc1MDBmNTVlNTlk
MjZjMjdjMWRlZGJhNDljNTUwOGEwLi4yNjhlZjFjZjk3MWY3ODhmM2RhN2MxOWNjNGMxNzJiZjRm
NjgzNmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExh
eWVyVHJlZUhvc3RQcm94eS5tZXNzYWdlcy5pbgpAQCAtNTUsNiArNTUsOCBAQCBtZXNzYWdlcyAt
PiBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eSB7CiAgICAgRGVzdHJveUNhbnZhcyh1aW50
MzJfdCBpZCkKICNlbmRpZgogCisgICAgU2V0UmVwYWludENvdW50KHVpbnQzMl90IGxheWVySUQs
IGludCB2YWx1ZSkKKwogICAgIFNldEJhY2tncm91bmRDb2xvcihXZWJDb3JlOjpDb2xvciBjb2xv
cikKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwCmluZGV4IDZl
OTczMDIxNjYyYjQwZDM2YTI4NGMzZmQxZDA0OWFiNjZhMjU5OTYuLjQzNGUxMzBiNWNlNWRkYjVl
Yjk5YjJhYjJiZmE5ZjY5ODRiNTI5MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJl
ci5jcHAKQEAgLTI1NSw2ICsyNTUsMTIgQEAgdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6ZGVzdHJv
eUNhbnZhcyhDb29yZGluYXRlZExheWVySUQgaWQpCiB9CiAjZW5kaWYKIAordm9pZCBMYXllclRy
ZWVSZW5kZXJlcjo6c2V0UmVwYWludENvdW50KENvb3JkaW5hdGVkTGF5ZXJJRCBpZCwgaW50IHZh
bHVlKQoreworICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyID0gbGF5ZXJCeUlEKGlkKTsKKyAgICB0
b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKGxheWVyKS0+c2V0UmVwYWludENvdW50KHZhbHVl
KTsKK30KKwogdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6c2V0TGF5ZXJDaGlsZHJlbihDb29yZGlu
YXRlZExheWVySUQgaWQsIGNvbnN0IFZlY3RvcjxDb29yZGluYXRlZExheWVySUQ+JiBjaGlsZElE
cykKIHsKICAgICBHcmFwaGljc0xheWVyKiBsYXllciA9IGxheWVyQnlJRChpZCk7CkBAIC0zMzMs
NiArMzM5LDggQEAgdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6c2V0TGF5ZXJTdGF0ZShDb29yZGlu
YXRlZExheWVySUQgaWQsIGNvbnN0IENvb3JkaW5hdGVkTGEKICAgICBsYXllci0+c2V0RHJhd3ND
b250ZW50KGxheWVySW5mby5kcmF3c0NvbnRlbnQpOwogICAgIGxheWVyLT5zZXRDb250ZW50c1Zp
c2libGUobGF5ZXJJbmZvLmNvbnRlbnRzVmlzaWJsZSk7CiAgICAgdG9HcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlcihsYXllciktPnNldEZpeGVkVG9WaWV3cG9ydChsYXllckluZm8uZml4ZWRUb1Zp
ZXdwb3J0KTsKKyAgICBsYXllci0+c2V0U2hvd0RlYnVnQm9yZGVyKGxheWVySW5mby5zaG93RGVi
dWdCb3JkZXJzKTsKKyAgICBsYXllci0+c2V0U2hvd1JlcGFpbnRDb3VudGVyKGxheWVySW5mby5z
aG93UmVwYWludENvdW50ZXIpOwogCiAgICAgaWYgKGxheWVySW5mby5maXhlZFRvVmlld3BvcnQp
CiAgICAgICAgIG1fZml4ZWRMYXllcnMuYWRkKGlkLCBsYXllcik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJl
ci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJU
cmVlUmVuZGVyZXIuaAppbmRleCA1M2VjYmUzOTQ5ODE4OTlkMmFiYmUwZjIxZDQ0NDM0NDIzOTM2
NDg4Li4xYTk1OTdmZWIzMDRiNjgzYTY4NzM5NThmNWE0NDc1MDljZGM5NTI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVS
ZW5kZXJlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBo
aWNzL0xheWVyVHJlZVJlbmRlcmVyLmgKQEAgLTc3LDYgKzc3LDcgQEAgcHVibGljOgogICAgIHZv
aWQgc3luY0NhbnZhcyhDb29yZGluYXRlZExheWVySUQsIHVpbnQzMl90IGZyb250QnVmZmVyKTsK
ICAgICB2b2lkIGRlc3Ryb3lDYW52YXMoQ29vcmRpbmF0ZWRMYXllcklEKTsKICNlbmRpZgorICAg
IHZvaWQgc2V0UmVwYWludENvdW50KENvb3JkaW5hdGVkTGF5ZXJJRCwgaW50IHZhbHVlKTsKIAog
ICAgIHZvaWQgZGV0YWNoKCk7CiAgICAgdm9pZCBhcHBlbmRVcGRhdGUoY29uc3QgRnVuY3Rpb248
dm9pZCgpPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkR3JhcGhpY3NMYXllci5jcHAKaW5kZXggMTc2MjgwMjY4NzcwMDExOWMyNzFmYmJhZjkyNzY0
MDY0NmFlNTQxMC4uNjBjZjY1OWU3ODZjYTQzNzdiN2FiZjNkOTRlMTc4ZGU1ZjUwYTQ2ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIuY3BwCkBAIC0zNjksNiArMzY5LDI2IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyOjpzZXRDb250ZW50c1RvU29saWRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiAgICAgZGlk
Q2hhbmdlTGF5ZXJTdGF0ZSgpOwogfQogCit2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6
c2V0U2hvd0RlYnVnQm9yZGVyKGJvb2wgc2hvdykKK3sKKyAgICBpZiAoaXNTaG93aW5nRGVidWdC
b3JkZXIoKSA9PSBzaG93KQorICAgICAgICByZXR1cm47CisKKyAgICBHcmFwaGljc0xheWVyOjpz
ZXRTaG93RGVidWdCb3JkZXIoc2hvdyk7CisKKyAgICBkaWRDaGFuZ2VMYXllclN0YXRlKCk7Cit9
CisKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRTaG93UmVwYWludENvdW50ZXIo
Ym9vbCBzaG93KQoreworICAgIGlmIChpc1Nob3dpbmdSZXBhaW50Q291bnRlcigpID09IHNob3cp
CisgICAgICAgIHJldHVybjsKKworICAgIEdyYXBoaWNzTGF5ZXI6OnNldFNob3dSZXBhaW50Q291
bnRlcihzaG93KTsKKworICAgIGRpZENoYW5nZUxheWVyU3RhdGUoKTsKK30KKwogdm9pZCBDb29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzVG9JbWFnZShJbWFnZSogaW1hZ2UpCiB7
CiAgICAgTmF0aXZlSW1hZ2VQdHIgbmV3TmF0aXZlSW1hZ2VQdHIgPSBpbWFnZSA/IGltYWdlLT5u
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIDogMDsKQEAgLTUxNCw2ICs1MzQsOCBAQCB2b2lk
IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c3luY0ltYWdlQmFja2luZygpCiAgICAgICAgIH0K
IAogICAgICAgICBtX2Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLT5tYXJrRGlydHkoKTsKKyAgICAg
ICAgaWYgKGlzU2hvd2luZ1JlcGFpbnRDb3VudGVyKCkpCisgICAgICAgICAgICBtX2Nvb3JkaW5h
dG9yLT5zZXRSZXBhaW50Q291bnQoaWQoKSwgaW5jcmVtZW50UmVwYWludENvdW50KCkpOwogICAg
IH0gZWxzZQogICAgICAgICByZWxlYXNlSW1hZ2VCYWNraW5nSWZOZWVkZWQoKTsKIApAQCAtNTI3
LDYgKzU0OSw4IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzeW5jTGF5ZXJTdGF0
ZSgpCiAgICAgICAgIHJldHVybjsKICAgICBtX3Nob3VsZFN5bmNMYXllclN0YXRlID0gZmFsc2U7
CiAgICAgbV9sYXllckluZm8uZml4ZWRUb1ZpZXdwb3J0ID0gZml4ZWRUb1ZpZXdwb3J0KCk7Cisg
ICAgbV9sYXllckluZm8uc2hvd0RlYnVnQm9yZGVycyA9IGlzU2hvd2luZ0RlYnVnQm9yZGVyKCk7
CisgICAgbV9sYXllckluZm8uc2hvd1JlcGFpbnRDb3VudGVyID0gaXNTaG93aW5nUmVwYWludENv
dW50ZXIoKTsKIAogICAgIG1fbGF5ZXJJbmZvLmJhY2tmYWNlVmlzaWJsZSA9IGJhY2tmYWNlVmlz
aWJpbGl0eSgpOwogICAgIG1fbGF5ZXJJbmZvLmNoaWxkcmVuVHJhbnNmb3JtID0gY2hpbGRyZW5U
cmFuc2Zvcm0oKTsKQEAgLTU3MCw2ICs1OTQsOCBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcjo6c3luY0NhbnZhcygpCiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCiAgICAgbV9jb29y
ZGluYXRvci0+c3luY0NhbnZhcyhtX2lkLCBtX2NhbnZhc1BsYXRmb3JtTGF5ZXIpOwogI2VuZGlm
CisgICAgaWYgKGlzU2hvd2luZ1JlcGFpbnRDb3VudGVyKCkpCisgICAgICAgIG1fY29vcmRpbmF0
b3ItPnNldFJlcGFpbnRDb3VudChpZCgpLCBpbmNyZW1lbnRSZXBhaW50Q291bnQoKSk7CiAgICAg
bV9jYW52YXNOZWVkc0Rpc3BsYXkgPSBmYWxzZTsKIH0KIApAQCAtNjkzLDggKzcxOSwxMCBAQCB2
b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dGlsZWRCYWNraW5nU3RvcmVQYWludChHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsCiAgICAgcGFpbnRHcmFwaGljc0xheWVyQ29udGVudHMoKmNv
bnRleHQsIHJlY3QpOwogfQogCi12b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dGlsZWRC
YWNraW5nU3RvcmVQYWludEVuZChjb25zdCBWZWN0b3I8SW50UmVjdD4mIC8qIHVwZGF0ZWRSZWN0
cyAqLykKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp0aWxlZEJhY2tpbmdTdG9yZVBh
aW50RW5kKGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgdXBkYXRlZFJlY3RzKQogeworICAgIGlmIChp
c1Nob3dpbmdSZXBhaW50Q291bnRlcigpICYmICF1cGRhdGVkUmVjdHMuaXNFbXB0eSgpKQorICAg
ICAgICBtX2Nvb3JkaW5hdG9yLT5zZXRSZXBhaW50Q291bnQoaWQoKSwgaW5jcmVtZW50UmVwYWlu
dENvdW50KCkpOwogfQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dGlsZWRCYWNr
aW5nU3RvcmVIYXNQZW5kaW5nVGlsZUNyZWF0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKaW5kZXggNmM0MzU4NWM3MGM4
ZTAzMDY1ZTRkY2FhMjdlNGYwZGEyZmEzNjk0Ni4uZTBlZDEyYmIyOWI1ODA2ODBlZjQzZDNiMGIx
MWNkMGYyYWEyMmNmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKQEAgLTcxLDYgKzcxLDggQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBkZXN0cm95Q2FudmFzKENvb3JkaW5hdGVkTGF5ZXJJRCkgPSAwOwogI2VuZGlm
CiAKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UmVwYWludENvdW50KENvb3JkaW5hdGVkTGF5ZXJJRCwg
aW50KSA9IDA7CisKICAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJBbmltYXRpb25zKENvb3JkaW5h
dGVkTGF5ZXJJRCwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllckFuaW1hdGlvbnMmKSA9IDA7
CiAKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoTGF5ZXIoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyKikgPSAwOwpAQCAtMTEyLDYgKzExNCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgc2V0Q29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0Q29udGVudHNUb0ltYWdlKEltYWdlKikgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIHNldENvbnRlbnRzVG9Tb2xpZENvbG9yKGNvbnN0IENvbG9yJikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIHNldFNob3dEZWJ1Z0JvcmRlcihib29sKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0U2hvd1JlcGFpbnRDb3VudGVyKGJvb2wpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgYm9vbCBzaG91bGREaXJlY3RseUNvbXBvc2l0ZUltYWdlKEltYWdlKikgY29uc3QgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9DYW52YXMoUGxhdGZvcm1MYXll
ciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRNYXNrTGF5ZXIoR3JhcGhpY3NMYXll
ciopIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggYmI5OTU1ZWQ4MGJkNDM1MzE0MjFiZGQxNTRl
ZjhjMjFiNmM3YmZjYy4uY2E0NDU3YmIxMmM5OTI4MzcyODZkZjQ3OGMxMmY4OTlhZjEyNTJjYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVy
VHJlZUhvc3QuY3BwCkBAIC0zOTIsNiArMzkyLDExIEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0OjpkZXN0cm95Q2FudmFzKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCkKIH0KICNlbmRpZgog
Cit2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0UmVwYWludENvdW50KENvb3JkaW5h
dGVkTGF5ZXJJRCBpZCwgaW50IHZhbHVlKQoreworICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdl
czo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OlNldFJlcGFpbnRDb3VudChpZCwgdmFs
dWUpKTsKK30KKwogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKIHZvaWQgQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0OjpzeW5jTGF5ZXJGaWx0ZXJzKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCwgY29uc3Qg
RmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKaW5kZXggNDgxOGVkOWYwMDBmOWI4
NDhkZWFmNmEyNjMxYjllNzYyMDhhNmJmNy4uOWVlMGQxYzQ3ZGEzYmIzM2YwNjNkZTc5NjA0OWNj
M2YwMjRmMTc1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0LmgKQEAgLTEwMSw2ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHN5bmNDYW52YXMoQ29vcmRpbmF0ZWRMYXllcklELCBXZWJDb3JlOjpQbGF0Zm9y
bUxheWVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3lDYW52YXMoQ29vcmRp
bmF0ZWRMYXllcklEKSBPVkVSUklERTsKICNlbmRpZgorICAgIHZpcnR1YWwgdm9pZCBzZXRSZXBh
aW50Q291bnQoQ29vcmRpbmF0ZWRMYXllcklELCBpbnQpOwogICAgIHZpcnR1YWwgdm9pZCBkZXRh
Y2hMYXllcihXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqKTsKICAgICB2aXJ0dWFs
IHZvaWQgc3luY0ZpeGVkTGF5ZXJzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkVGlsZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZFRpbGUuY3BwCmluZGV4IDc5OGQyYjc1ZjI1MGRhNjcyOWZmOWJjZTUwZTg4YzI5
MTI5NDBiOGUuLmFjMGI1NjYyNmU4MWYxMGIxODc2MmI5OGYzNjU4MDRmOGUzMjYxNjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkVGlsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRUaWxlLmNwcApAQCAtOTcsOCAr
OTcsMTAgQEAgVmVjdG9yPEludFJlY3Q+IENvb3JkaW5hdGVkVGlsZTo6dXBkYXRlQmFja0J1ZmZl
cigpCiAgICAgfSBlbHNlCiAgICAgICAgIG1fY2xpZW50LT51cGRhdGVUaWxlKG1fSUQsIHVwZGF0
ZUluZm8sIG1fcmVjdCk7CiAKKyAgICBWZWN0b3I8SW50UmVjdD4gdXBkYXRlZFJlY3RzOworICAg
IHVwZGF0ZWRSZWN0cy5hcHBlbmQobV9kaXJ0eVJlY3QpOwogICAgIG1fZGlydHlSZWN0ID0gSW50
UmVjdCgpOwotICAgIHJldHVybiBWZWN0b3I8SW50UmVjdD4oKTsKKyAgICByZXR1cm4gdXBkYXRl
ZFJlY3RzOwogfQogCiB2b2lkIENvb3JkaW5hdGVkVGlsZTo6c3dhcEJhY2tCdWZmZXJUb0Zyb250
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRl
eCA2OWY4ZmU5Y2ExNTFkNWUwYjNjNTQ3YWZhMTRjOWYxMzhlNWFjZmE0Li5kMGViNmMxNTAwNTAx
YTNjMWZmYWUwNDI0MTI1YThmZmE3NjcxZjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yMzE2LDggKzIzMTYsMTggQEAgdm9pZCBXZWJQ
YWdlOjp1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkK
ICAgICBzZXR0aW5ncy0+c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoc3RvcmUuZ2V0
Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjphY2NlbGVyYXRlZENvbXBvc2l0aW5n
RW5hYmxlZEtleSgpKSAmJiBMYXllclRyZWVIb3N0OjpzdXBwb3J0c0FjY2VsZXJhdGVkQ29tcG9z
aXRpbmcoKSk7CiAgICAgc2V0dGluZ3MtPnNldEFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQoc3Rv
cmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjphY2NlbGVyYXRlZERyYXdp
bmdFbmFibGVkS2V5KCkpICYmIExheWVyVHJlZUhvc3Q6OnN1cHBvcnRzQWNjZWxlcmF0ZWRDb21w
b3NpdGluZygpKTsKICAgICBzZXR0aW5ncy0+c2V0Q2FudmFzVXNlc0FjY2VsZXJhdGVkRHJhd2lu
ZyhzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmNhbnZhc1VzZXNB
Y2NlbGVyYXRlZERyYXdpbmdLZXkoKSkgJiYgTGF5ZXJUcmVlSG9zdDo6c3VwcG9ydHNBY2NlbGVy
YXRlZENvbXBvc2l0aW5nKCkpOworI2lmIFBMQVRGT1JNKFFUKQorICAgIGJvb2wgc2hvd0RlYnVn
VmlzdWFscyA9IHFnZXRlbnYoIlFUX1dFQktJVF9TSE9XX0NPTVBPU0lUSU5HX0RFQlVHX1ZJU1VB
TFMiKSA9PSAiMSI7CisgICAgc2V0dGluZ3MtPnNldFNob3dEZWJ1Z0JvcmRlcnMoc2hvd0RlYnVn
VmlzdWFscyk7CisgICAgc2V0dGluZ3MtPnNldFNob3dSZXBhaW50Q291bnRlcihzaG93RGVidWdW
aXN1YWxzKTsKKyNlbGlmIFVTRShDQUlSTykKKyAgICBib29sIHNob3dEZWJ1Z1Zpc3VhbHMgPSBT
dHJpbmcoZ2V0ZW52KCJXRUJLSVRfU0hPV19DT01QT1NJVElOR19ERUJVR19WSVNVQUxTIikpID09
ICIxIjsKKyAgICBzZXR0aW5ncy0+c2V0U2hvd0RlYnVnQm9yZGVycyhzaG93RGVidWdWaXN1YWxz
KTsKKyAgICBzZXR0aW5ncy0+c2V0U2hvd1JlcGFpbnRDb3VudGVyKHNob3dEZWJ1Z1Zpc3VhbHMp
OworI2Vsc2UKICAgICBzZXR0aW5ncy0+c2V0U2hvd0RlYnVnQm9yZGVycyhzdG9yZS5nZXRCb29s
VmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmNvbXBvc2l0aW5nQm9yZGVyc1Zpc2libGVL
ZXkoKSkpOwogICAgIHNldHRpbmdzLT5zZXRTaG93UmVwYWludENvdW50ZXIoc3RvcmUuZ2V0Qm9v
bFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojpjb21wb3NpdGluZ1JlcGFpbnRDb3VudGVy
c1Zpc2libGVLZXkoKSkpOworI2VuZGlmCiAgICAgc2V0dGluZ3MtPnNldFNob3dUaWxlZFNjcm9s
bGluZ0luZGljYXRvcihzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6
OnRpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yVmlzaWJsZUtleSgpKSk7CiAgICAgc2V0dGluZ3MtPnNl
dENTU0N1c3RvbUZpbHRlckVuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZl
cmVuY2VzS2V5Ojpjc3NDdXN0b21GaWx0ZXJFbmFibGVkS2V5KCkpKTsKICAgICBSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpzZXRDU1NSZWdpb25zRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JL
ZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmNzc1JlZ2lvbnNFbmFibGVkS2V5KCkpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180785</attachid>
            <date>2012-12-27 03:17:34 -0800</date>
            <delta_ts>2012-12-28 01:10:42 -0800</delta_ts>
            <desc>Patch : [TexMap] Refactor code related to debug border and repaint count. [2/2]</desc>
            <filename>bug-105787-20121227201445.patch</filename>
            <type>text/plain</type>
            <size>59067</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4NDg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTI5YzlkODBjYjljZTg4
NDY3Y2JlMDliZmU4MjhkYmU2MjI3NDE2OS4uYmM2MTlkZTI3ZGNlMGUyOTRjYjA0M2JhMTA2MDcx
NDUzMzMxOWVlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDc0IEBACiAyMDEyLTEyLTI3ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCisgICAgICAgIFtRdF1bRUZM
XVtHVEtdW1RleE1hcF0gUmVmYWN0b3IgY29kZSByZWxhdGVkIHRvIGRlYnVnIGJvcmRlciBhbmQg
cmVwYWludCBjb3VudC4gWzIvMl0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwNTc4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEN1cnJlbnRseSwgVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZSwgQ29vcmRp
bmF0ZWRCYWNraW5nU3RvcmUgYW5kCisgICAgICAgIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
IGhhdmUgZHVwbGljYXRlZCBjb2RlIHRvIGRyYXcgZGVidWcgYm9yZGVyIG9yIHJlcGFpbnQKKyAg
ICAgICAgY291bnQuIFRoaXMgcGF0Y2ggcmVmYWN0b3JzIHRoYXQgYWxsIHBsYXRmb3JtIGxheWVy
cyBkcmF3IGRlYnVnIGJvcmRlciBhbmQgcmVwYWludAorICAgICAgICBjb3VudCBpbiB0aGUgY29u
c2lzdGVudCB3YXkuCisKKyAgICAgICAgVGhlcmUgYXJlIHRocmVlIGJpZyBjaGFuZ2VzOgorICAg
ICAgICAxLiBUbyBlbmFibGUgb3IgZGlzYWJsZSB0aGlzIGZlYXR1cmUsIHdlIHVzZSBzZXRTaG93
RGVidWdCb3JkZXJzKGJvb2wpIGFuZAorICAgICAgICBzZXRTaG93UmVwYWludENvdW50ZXIoYm9v
bCkgaW4gU2V0dGluZ3MuCisgICAgICAgIEFzIHdlIGRpZCwgaWYgW1FUX11XRUJLSVRfU0hPV19D
T01QT1NJVElOR19ERUJVR19WSVNVQUxTIGlzIHNldCB0byAxLCBib3RoCisgICAgICAgIHNldHRp
bmdzIGFyZSBzZXQgdG8gdHJ1ZS4gSXQgbWVhbnMgdGhhdCBub3cgd2UgY2FuIHNlZSBkZWJ1Z2dp
bmcgdmlzdWFscyBpbiBXSzEKKyAgICAgICAgYXMgd2VsbCBhcyBXSzIuCisgICAgICAgIDIuIFRl
eHR1cmVNYXBwZXJMYXllciBoYXMgdGhlIGRlYnVnZ2luZyB2aXN1YWxzIGxpa2UgR3JhcGhpY3NM
YXllci4KKyAgICAgICAgV2hlbiBjYWxsaW5nIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyOjpw
YWludFRvVGV4dHVyZU1hcHBlcigpLCB3ZSBzZW5kIHRoZQorICAgICAgICBkZWJ1Z2dpbmcgdmlz
dWFscyB2aWEgVGV4dHVyZU1hcHBlclBhaW50UGFyYW1ldGVycyB0byB0aGUgcGxhdGZvcm0gbGF5
ZXIuIFRoZQorICAgICAgICBwbGF0Zm9ybSBsYXllciBkcmF3cyBkZWJ1ZyBib3JkZXIgYW5kIHJl
cGFpbnQgY291bnQgdXNpbmcgZHJhd0JvcmRlcigpIGFuZAorICAgICAgICBkcmF3UmVwYWludENv
dW50ZXIoKSBpbiBUZXh0dXJlTWFwcGVyLgorICAgICAgICAzLiBXZSB1c2UgdGhlIHNhbWUgY29s
b3IgYW5kIHdpZHRoIHRvIE1hYyBwb3J0IGJlY2F1c2Ugd2UgZ2V0IGJvdGggaW5mbyB1c2luZwor
ICAgICAgICBHcmFwaGljc0xheWVyOjp1cGRhdGVEZWJ1Z0luZGljYXRvcnMoKS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMuIFJlZmFjdG9yaW5nIG9ubHkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBhaW50VG9UZXh0dXJl
TWFwcGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXI6OnNldFNob3dEZWJ1Z0JvcmRlcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRTaG93UmVwYWludENv
dW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmZs
dXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnVwZGF0ZURlYnVnQm9yZGVyQW5kUmVwYWludENv
dW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpwcmVw
YXJlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpzZXRSZXBhaW50Q291bnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oOgorICAgICAgICAoR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXI6OmRlYnVnQm9yZGVyQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OmRlYnVnQm9yZGVyV2lkdGgpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU6OnBhaW50VG9UZXh0dXJlTWFwcGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6cGFp
bnRUb1RleHR1cmVNYXBwZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmg6CisgICAgICAgIChUZXh0dXJlTWFwcGVyVGlsZWRC
YWNraW5nU3RvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydEFCR1JUb0FSR0IpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRyYXdS
ZXBhaW50Q291bnRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVySW1hZ2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXI6OmRyYXdSZXBhaW50Q291bnRlcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpwYWludFNlbGYpOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpmbHVzaENvbXBvc2l0aW5nU3Rh
dGVGb3JUaGlzTGF5ZXJPbmx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckxheWVyLmg6CisgICAgICAgIChTdGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0dXJlTWFwcGVyTGF5ZXI6OlN0YXRlOjpTdGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmg6CisgICAgICAgIChU
ZXh0dXJlTWFwcGVyUGFpbnRQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVN
YXBwZXJQYWludFBhcmFtZXRlcnM6OlRleHR1cmVNYXBwZXJQYWludFBhcmFtZXRlcnMpOgorCisy
MDEyLTEyLTI3ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCiAg
ICAgICAgIFtUZXhNYXBdIFJlZmFjdG9yIGNvZGUgcmVsYXRlZCB0byBkZWJ1ZyBib3JkZXIgYW5k
IHJlcGFpbnQgY291bnQuIFsxLzJdCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDU3ODcKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IDMxMjVjYzRhMzUxZDhl
OTUwYmU1Yjg2ZTcxZjYyZTgwMGExZGE4OTMuLjU5ZjA2NzRmYTc5NTYzMzY0NDQ2Zjc2NGNiNTQ5
NzE5ZGExOWFjNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0xMi0y
NyAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKworICAgICAgICBb
UXRdW0VGTF1bR1RLXVtUZXhNYXBdIFJlZmFjdG9yIGNvZGUgcmVsYXRlZCB0byBkZWJ1ZyBib3Jk
ZXIgYW5kIHJlcGFpbnQgY291bnQuIFsyLzJdCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU3ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJZiBXRUJLSVRfU0hPV19DT01QT1NJVElOR19ERUJVR19WSVNV
QUxTIGlzIHNldCB0byAxLCBzZXQKKyAgICAgICAgc2hvd0RlYnVnQm9yZGVycyBhbmQgc2hvd1Jl
cGFpbnRDb3VudGVyIGluIFNldHRpbmdzIHRvIHRydWUuCisKKyAgICAgICAgKiBld2svZXdrX3Zp
ZXcuY3BwOgorICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKKwogMjAxMi0xMi0yMyAgQWxl
eGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMTI4MDgzNzc+IE5ldHdvcmsgcHJvY2VzcyBzaG91bGQgcmVzcGVjdCBjb29raWUgYWNjZXB0
IHBvbGljeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IGJhMzliMDAzOTFjMjQxMThiOGQ4NDNjNGU1NTdh
MjEzZGVkNzIxOTIuLjU0MTIyNzM2ZWQ0MGI5NzMwYTM3NDhmYjU2NmRiMzVjOTQ2NmFmZjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0xMi0yNyAgSHVhbmcgRG9uZ3N1
bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKworICAgICAgICBbUXRdW0VGTF1bR1RLXVtU
ZXhNYXBdIFJlZmFjdG9yIGNvZGUgcmVsYXRlZCB0byBkZWJ1ZyBib3JkZXIgYW5kIHJlcGFpbnQg
Y291bnQuIFsyLzJdCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDU3ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBJZiBXRUJLSVRfU0hPV19DT01QT1NJVElOR19ERUJVR19WSVNVQUxTIGlzIHNldCB0byAx
LCBzZXQKKyAgICAgICAgc2hvd0RlYnVnQm9yZGVycyBhbmQgc2hvd1JlcGFpbnRDb3VudGVyIGlu
IFNldHRpbmdzIHRvIHRydWUuCisKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6
CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfdXBkYXRlX3NldHRpbmdzKToKKwogMjAxMi0xMi0y
MyAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMTI4MDgzNzc+IE5ldHdvcmsgcHJvY2VzcyBzaG91bGQgcmVzcGVjdCBjb29raWUg
YWNjZXB0IHBvbGljeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCAzZTI5YTJmMjgyYjc2ZjQyMTAwODg5MmZi
MmEzZjcyMmIzMDllOTdhLi4wNjA1MGFkODQyNmMxN2I5ODg1OGIwM2E3ZjI2ZTAwOGE0ZjZiMDg4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTEyLTI3ICBIdWFuZyBEb25n
c3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFtRdF1bRUZMXVtHVEtd
W1RleE1hcF0gUmVmYWN0b3IgY29kZSByZWxhdGVkIHRvIGRlYnVnIGJvcmRlciBhbmQgcmVwYWlu
dCBjb3VudC4gWzIvMl0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwNTc4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIElmIFFUX1dFQktJVF9TSE9XX0NPTVBPU0lUSU5HX0RFQlVHX1ZJU1VBTFMgaXMgc2V0
IHRvIDEsIHNldAorICAgICAgICBzaG93RGVidWdCb3JkZXJzIGFuZCBzaG93UmVwYWludENvdW50
ZXIgaW4gU2V0dGluZ3MgdG8gdHJ1ZS4KKworICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuY3Bw
OgorICAgICAgICAoUVdlYlNldHRpbmdzUHJpdmF0ZTo6YXBwbHkpOgorCiAyMDEyLTEyLTI2ICBI
dWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCiAgICAgICAgIFtUZXhN
YXBdIFJlbmFtZSBlZmZlY3RpdmVbVHJhbnNmb3JtfE9wYWNpdHl8RmlsdGVyc10gaW4gVGV4dHVy
ZU1hcHBlckxheWVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGVlMDg4YzNlOTI2NGM3YmE5ODEyNWJjYTUzYTNm
NWYzNzZlY2RiYjQuLmE4Zjg1Njk4MGVjMDljNzI1Mjg2OWFiM2FhNzVmODlkOGI5MTE3Y2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKQEAgLTEsNSArMSw1OCBAQAogMjAxMi0xMi0yNyAgSHVhbmcgRG9uZ3N1bmcgIDxs
dXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAorICAgICAgICBbUXRdW0VGTF1bR1RLXVtUZXhNYXBd
IFJlZmFjdG9yIGNvZGUgcmVsYXRlZCB0byBkZWJ1ZyBib3JkZXIgYW5kIHJlcGFpbnQgY291bnQu
IFsyLzJdCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDU3ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGVyZSBhcmUgdGhyZWUgYmlnIGNoYW5nZXM6CisgICAgICAgIDEuIENvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllciBzZW5kcyBkZWJ1Z2dpbmcgdmlzdWFscyB0byBVSSBQcm9jZXNzLgorICAgICAgICAy
LiBJZiBbUVRfXVdFQktJVF9TSE9XX0NPTVBPU0lUSU5HX0RFQlVHX1ZJU1VBTFMgaXMgc2V0IHRv
IDEsIHNldAorICAgICAgICBzaG93RGVidWdCb3JkZXJzIGFuZCBzaG93UmVwYWludENvdW50ZXIg
aW4gU2V0dGluZ3MgdG8gdHJ1ZS4KKyAgICAgICAgMy4gV2hlbiB1cGRhdGluZyBhIGJhY2tpbmcg
c3RvcmUsIGEgY29tcG9zaXRlZCBpbWFnZSBvciBhIHBsYXRmb3JtCisgICAgICAgIGNhbnZhcyBs
YXllciwgaW5jcmVtZW50IGEgcmVwYWludCBjb3VudC4KKworICAgICAgICAqIFNoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJJbmZvLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6dXBkYXRlVGlsZSk6CisgICAg
ICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpwYWludFRpbGVzVG9UZXh0dXJl
TWFwcGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZEJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEJhY2tpbmdT
dG9yZVRpbGU6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZSk6CisgICAgICAgIChDb29yZGlu
YXRlZEJhY2tpbmdTdG9yZVRpbGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OnNldFJlcGFpbnRDb3VudCk6CisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5Lmg6CisgICAgICAgIChDb29yZGluYXRlZExheWVy
VHJlZUhvc3RQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6c2V0UmVwYWludENvdW50KToKKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjpzZXRMYXllclN0
YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVS
ZW5kZXJlci5oOgorICAgICAgICAoTGF5ZXJUcmVlUmVuZGVyZXIpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldFNo
b3dEZWJ1Z0JvcmRlcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
b3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0U2hvd1JlcGFpbnRDb3VudGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c3luY0ltYWdlQmFja2luZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnN5bmNMYXllclN0YXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c3luY0NhbnZh
cyk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnRpbGVkQmFj
a2luZ1N0b3JlUGFpbnRFbmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oOgorICAgICAgICAoQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyQ2xpZW50KToKKyAgICAgICAgKENvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0OjpzZXRSZXBhaW50Q291bnQpOgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZExheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZFRpbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb29yZGlu
YXRlZFRpbGU6OnVwZGF0ZUJhY2tCdWZmZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5j
ZXMpOgorCisyMDEyLTEyLTI3ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAu
bmV0PgorCiAgICAgICAgIFtUZXhNYXBdIFJlZmFjdG9yIGNvZGUgcmVsYXRlZCB0byBkZWJ1ZyBi
b3JkZXIgYW5kIHJlcGFpbnQgY291bnQuIFsxLzJdCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU3ODcKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZS5jcHAKaW5kZXggNzg1OWQ3ZDJlMjA3ZWI0NzRhNTMyMzlhZWYyYTgzMGU5MDQ5ZDZh
Ny4uYmEyYTg0Y2FkZDExYTRjM2VmM2U3OTA5MjE1OTI2OWNiYWY0OWMwOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9H
cmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwCkBAIC0xMjMsNiArMTIzLDExIEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVy
KiB0ZXh0dXJlTWFwcGVyCiAgICAgICAgIGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5kcmF3
U3VyZmFjZVRvQ29udGV4dChpbWFnZVN1cmZhY2UuZ2V0KCksIHRhcmdldFJlY3QsIEludFJlY3Qo
MCwgMCwgd2lkdGgsIGhlaWdodCksIGNvbnRleHQpOwogCiAgICAgICAgIGNvbnRleHQtPnJlc3Rv
cmUoKTsKKworICAgICAgICBpZiAocGFyYW1ldGVycy5zaG93RGVidWdCb3JkZXJzKQorICAgICAg
ICAgICAgdGV4dHVyZU1hcHBlci0+ZHJhd0JvcmRlcihwYXJhbWV0ZXJzLmRlYnVnQm9yZGVyQ29s
b3IsIHBhcmFtZXRlcnMuZGVidWdCb3JkZXJXaWR0aCwgdGFyZ2V0UmVjdCwgcGFyYW1ldGVycy5t
b2RlbFZpZXdNYXRyaXgpOworICAgICAgICBpZiAocGFyYW1ldGVycy5zaG93UmVwYWludENvdW50
ZXIpCisgICAgICAgICAgICB0ZXh0dXJlTWFwcGVyLT5kcmF3UmVwYWludENvdW50ZXIocGFyYW1l
dGVycy5yZXBhaW50Q291bnQsIHBhcmFtZXRlcnMuZGVidWdCb3JkZXJDb2xvciwgdGFyZ2V0UmVj
dC5sb2NhdGlvbigpLCBwYXJhbWV0ZXJzLm1vZGVsVmlld01hdHJpeCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTE0Myw2ICsxNDgsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIK
ICAgICBUZXh0dXJlTWFwcGVyR0w6OkZsYWdzIGZsYWdzID0gVGV4dHVyZU1hcHBlckdMOjpTaG91
bGRGbGlwVGV4dHVyZSB8IChtX2NvbnRleHQtPm1fYXR0cnMuYWxwaGEgPyBUZXh0dXJlTWFwcGVy
R0w6OlNob3VsZEJsZW5kIDogMCk7CiAgICAgSW50U2l6ZSB0ZXh0dXJlU2l6ZShtX2NvbnRleHQt
Pm1fY3VycmVudFdpZHRoLCBtX2NvbnRleHQtPm1fY3VycmVudEhlaWdodCk7CiAgICAgdGV4bWFw
R0wtPmRyYXdUZXh0dXJlKG1fY29udGV4dC0+bV90ZXh0dXJlLCBmbGFncywgdGV4dHVyZVNpemUs
IHRhcmdldFJlY3QsIHBhcmFtZXRlcnMubW9kZWxWaWV3TWF0cml4LCBwYXJhbWV0ZXJzLm9wYWNp
dHksIHBhcmFtZXRlcnMubWFzayk7CisKKyAgICBpZiAocGFyYW1ldGVycy5zaG93RGVidWdCb3Jk
ZXJzKQorICAgICAgICB0ZXh0dXJlTWFwcGVyLT5kcmF3Qm9yZGVyKHBhcmFtZXRlcnMuZGVidWdC
b3JkZXJDb2xvciwgcGFyYW1ldGVycy5kZWJ1Z0JvcmRlcldpZHRoLCB0YXJnZXRSZWN0LCBwYXJh
bWV0ZXJzLm1vZGVsVmlld01hdHJpeCk7CisgICAgaWYgKHBhcmFtZXRlcnMuc2hvd1JlcGFpbnRD
b3VudGVyKQorICAgICAgICB0ZXh0dXJlTWFwcGVyLT5kcmF3UmVwYWludENvdW50ZXIocGFyYW1l
dGVycy5yZXBhaW50Q291bnQsIHRhcmdldFJlY3QubG9jYXRpb24oKSwgcGFyYW1ldGVycy5tb2Rl
bFZpZXdNYXRyaXgpOwogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElOR19HTCkK
IH0KICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNE
UXQuY3BwCmluZGV4IDNmNzc5YWRjZDJkMDNlMmVjMDA2YTk0Nzc0MTNhNGJjYjIxYTlhOTguLmZi
YmRkYWFlNWQ0MTg2ZmU4MTczNDgzZjQxYzBmZTM2ZmQyZDYxMjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNE
UXQuY3BwCkBAIC0yMzEsNiArMjMxLDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
OjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyCiAKICAg
ICAgICAgVGV4dHVyZU1hcHBlckdMKiB0ZXhtYXBHTCA9IHN0YXRpY19jYXN0PFRleHR1cmVNYXBw
ZXJHTCo+KHRleHR1cmVNYXBwZXIpOwogICAgICAgICBtX2dyYXBoaWNzU3VyZmFjZS0+cGFpbnRU
b1RleHR1cmVNYXBwZXIodGV4bWFwR0wsIHRhcmdldFJlY3QsIHBhcmFtZXRlcnMubW9kZWxWaWV3
TWF0cml4LCBwYXJhbWV0ZXJzLm9wYWNpdHksIHBhcmFtZXRlcnMubWFzayk7CisKKyAgICAgICAg
aWYgKHBhcmFtZXRlcnMuc2hvd0RlYnVnQm9yZGVycykKKyAgICAgICAgICAgIHRleHR1cmVNYXBw
ZXItPmRyYXdCb3JkZXIocGFyYW1ldGVycy5kZWJ1Z0JvcmRlckNvbG9yLCBwYXJhbWV0ZXJzLmRl
YnVnQm9yZGVyV2lkdGgsIHRhcmdldFJlY3QsIHBhcmFtZXRlcnMubW9kZWxWaWV3TWF0cml4KTsK
KyAgICAgICAgaWYgKHBhcmFtZXRlcnMuc2hvd1JlcGFpbnRDb3VudGVyKQorICAgICAgICAgICAg
dGV4dHVyZU1hcHBlci0+ZHJhd1JlcGFpbnRDb3VudGVyKHBhcmFtZXRlcnMucmVwYWludENvdW50
LCBwYXJhbWV0ZXJzLmRlYnVnQm9yZGVyQ29sb3IsIHRhcmdldFJlY3QubG9jYXRpb24oKSwgcGFy
YW1ldGVycy5tb2RlbFZpZXdNYXRyaXgpOwogI2VuZGlmCiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC0yNzcsNiArMjgyLDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWlu
dFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyCiAKICAgICBwYWlu
dGVyLT5kcmF3SW1hZ2UodGFyZ2V0UmVjdCwgb2Zmc2NyZWVuSW1hZ2UpOwogICAgIHBhaW50ZXIt
PnJlc3RvcmUoKTsKKworICAgIGlmIChwYXJhbWV0ZXJzLnNob3dEZWJ1Z0JvcmRlcnMpCisgICAg
ICAgIHRleHR1cmVNYXBwZXItPmRyYXdCb3JkZXIocGFyYW1ldGVycy5kZWJ1Z0JvcmRlckNvbG9y
LCBwYXJhbWV0ZXJzLmRlYnVnQm9yZGVyV2lkdGgsIHRhcmdldFJlY3QsIHBhcmFtZXRlcnMubW9k
ZWxWaWV3TWF0cml4KTsKKyAgICBpZiAocGFyYW1ldGVycy5zaG93UmVwYWludENvdW50ZXIpCisg
ICAgICAgIHRleHR1cmVNYXBwZXItPmRyYXdSZXBhaW50Q291bnRlcihwYXJhbWV0ZXJzLnJlcGFp
bnRDb3VudCwgcGFyYW1ldGVycy5kZWJ1Z0JvcmRlckNvbG9yLCB0YXJnZXRSZWN0LmxvY2F0aW9u
KCksIHBhcmFtZXRlcnMubW9kZWxWaWV3TWF0cml4KTsKIH0KICNlbmRpZiAvLyBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXIuY3BwCmluZGV4IGU5NjI5NmJhNTFlNGFhNzExNWRiYTIyNmFhNTdmZmVmMGVjMDEyMjIuLmMz
YTJjMWI4MDA0Y2I5NTA2ZTFjNjQyZmI5MmJiMjg5M2QwZTQwMDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtMjQsMTQgKzI0LDggQEAKICNpbmNsdWRl
ICJHcmFwaGljc0xheWVyQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckZhY3Rv
cnkuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVk
LmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAKLSNpZiBVU0UoQ0FJUk8pCi0jaW5j
bHVkZSAiQ2Fpcm9VdGlsaXRpZXMuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0j
ZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNzT3duUHRyPEdyYXBoaWNzTGF5ZXI+
IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZShHcmFwaGljc0xheWVyRmFjdG9yeSogZmFjdG9yeSwgR3Jh
cGhpY3NMYXllckNsaWVudCogY2xpZW50KQpAQCAtMzgzLDE1ICszNzcsNDkgQEAgdm9pZCBHcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNUb01lZGlhKFRleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyKgogICAgIG1fY29udGVudHNMYXllciA9IG1lZGlhOwogfQogCit2b2lkIEdy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRTaG93RGVidWdCb3JkZXIoYm9vbCBzaG93KQor
eworICAgIGlmIChpc1Nob3dpbmdEZWJ1Z0JvcmRlcigpID09IHNob3cpCisgICAgICAgIHJldHVy
bjsKKworICAgIEdyYXBoaWNzTGF5ZXI6OnNldFNob3dEZWJ1Z0JvcmRlcihzaG93KTsKKyAgICBu
b3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpEZWJ1Z1Zpc3VhbHNDaGFuZ2UpOworfQor
Cit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRTaG93UmVwYWludENvdW50ZXIo
Ym9vbCBzaG93KQoreworICAgIGlmIChpc1Nob3dpbmdSZXBhaW50Q291bnRlcigpID09IHNob3cp
CisgICAgICAgIHJldHVybjsKKworICAgIEdyYXBoaWNzTGF5ZXI6OnNldFNob3dSZXBhaW50Q291
bnRlcihzaG93KTsKKyAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpEZWJ1Z1Zp
c3VhbHNDaGFuZ2UpOworfQorCiAvKiBccmVpbXAgKEdyYXBoaWNzTGF5ZXIuaCkKICovCiB2b2lk
IEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlz
TGF5ZXJPbmx5KCkKIHsKKyAgICB1cGRhdGVEZWJ1Z0JvcmRlckFuZFJlcGFpbnRDb3VudCgpOwog
ICAgIG1fbGF5ZXItPmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkodGhpcyk7
CiAgICAgdXBkYXRlQmFja2luZ1N0b3JlKCk7CiAgICAgZGlkRmx1c2hDb21wb3NpdGluZ1N0YXRl
KCk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnVwZGF0ZURlYnVnQm9y
ZGVyQW5kUmVwYWludENvdW50KCkKK3sKKyAgICBtX3VzaW5nVGlsZWRMYXllciA9IHNob3VsZEhh
dmVCYWNraW5nU3RvcmUoKTsKKyAgICB1cGRhdGVEZWJ1Z0luZGljYXRvcnMoKTsKKworICAgIGlm
ICghbV9oYXNPd25CYWNraW5nU3RvcmUpCisgICAgICAgIHJldHVybjsKKworICAgIGJvb2wgbmVl
ZHNUb1JlcGFpbnQgPSBzaG91bGRIYXZlQmFja2luZ1N0b3JlKCkgJiYgKG1fbmVlZHNEaXNwbGF5
IHx8ICFtX25lZWRzRGlzcGxheVJlY3QuaXNFbXB0eSgpKTsKKyAgICBpZiAoaXNTaG93aW5nUmVw
YWludENvdW50ZXIoKSAmJiBuZWVkc1RvUmVwYWludCkgeworICAgICAgICBpbmNyZW1lbnRSZXBh
aW50Q291bnQoKTsKKyAgICAgICAgbV9jaGFuZ2VNYXNrIHw9IFRleHR1cmVNYXBwZXJMYXllcjo6
UmVwYWludENvdW50Q2hhbmdlOworICAgIH0KK30KKwogLyogXHJlaW1wIChHcmFwaGljc0xheWVy
LmgpCiAqLwogdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6Zmx1c2hDb21wb3NpdGlu
Z1N0YXRlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKQEAgLTQ0NywzNSArNDc1LDcgQEAgdm9pZCBH
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6cHJlcGFyZUJhY2tpbmdTdG9yZSgpCiAgICAgQVNT
RVJUKGR5bmFtaWNfY2FzdDxUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUqPihtX2JhY2tp
bmdTdG9yZS5nZXQoKSkpOwogI2VuZGlmCiAgICAgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0
b3JlKiBiYWNraW5nU3RvcmUgPSBzdGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5n
U3RvcmUqPihtX2JhY2tpbmdTdG9yZS5nZXQoKSk7Ci0KLSAgICBpZiAoaXNTaG93aW5nUmVwYWlu
dENvdW50ZXIoKSkKLSAgICAgICAgaW5jcmVtZW50UmVwYWludENvdW50KCk7Ci0KLSAgICAvLyBQ
YWludCBpbnRvIGFuIGludGVybWVkaWF0ZSBidWZmZXIgdG8gYXZvaWQgcGFpbnRpbmcgY29udGVu
dCBtb3JlIHRoYW4gb25jZS4KLSAgICBib29sIHBhaW50T25jZSA9IHRydWU7Ci0gICAgY29uc3Qg
SW50U2l6ZSBtYXhUZXh0dXJlU2l6ZSA9IHRleHR1cmVNYXBwZXItPm1heFRleHR1cmVTaXplKCk7
Ci0gICAgLy8gV2UgbmVlZCB0byBwYWludCBkaXJlY3RseSBpZiB0aGUgZGlydHkgcmVjdCBleGNl
ZWRzIG9uZSBvZiB0aGUgbWF4aW11bSBkaW1lbnNpb25zLgotICAgIGlmIChkaXJ0eVJlY3Qud2lk
dGgoKSA+IG1heFRleHR1cmVTaXplLndpZHRoKCkgfHwgZGlydHlSZWN0LmhlaWdodCgpID4gbWF4
VGV4dHVyZVNpemUuaGVpZ2h0KCkpCi0gICAgICAgIHBhaW50T25jZSA9IGZhbHNlOwotCi0gICAg
aWYgKHBhaW50T25jZSkgewotICAgICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVy
ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShkaXJ0eVJlY3Quc2l6ZSgpKTsKLSAgICAgICAgR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKLSAgICAgICAgY29u
dGV4dC0+c2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSh0ZXh0dXJlTWFwcGVyLT5pbWFnZUlu
dGVycG9sYXRpb25RdWFsaXR5KCkpOwotICAgICAgICBjb250ZXh0LT5zZXRUZXh0RHJhd2luZ01v
ZGUodGV4dHVyZU1hcHBlci0+dGV4dERyYXdpbmdNb2RlKCkpOwotICAgICAgICBjb250ZXh0LT50
cmFuc2xhdGUoLWRpcnR5UmVjdC54KCksIC1kaXJ0eVJlY3QueSgpKTsKLSAgICAgICAgcGFpbnRH
cmFwaGljc0xheWVyQ29udGVudHMoKmNvbnRleHQsIGRpcnR5UmVjdCk7Ci0KLSAgICAgICAgaWYg
KGlzU2hvd2luZ1JlcGFpbnRDb3VudGVyKCkpCi0gICAgICAgICAgICBkcmF3UmVwYWludENvdW50
ZXIoY29udGV4dCk7Ci0KLSAgICAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGltYWdlQnVmZmVy
LT5jb3B5SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwotICAgICAgICBiYWNraW5nU3RvcmUt
PnVwZGF0ZUNvbnRlbnRzKHRleHR1cmVNYXBwZXIsIGltYWdlLmdldCgpLCBtX3NpemUsIGRpcnR5
UmVjdCwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ2FuTW9kaWZ5T3JpZ2luYWxJbWFnZURhdGEpOwot
ICAgIH0gZWxzZQotICAgICAgICBiYWNraW5nU3RvcmUtPnVwZGF0ZUNvbnRlbnRzKHRleHR1cmVN
YXBwZXIsIHRoaXMsIG1fc2l6ZSwgZGlydHlSZWN0LCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDYW5N
b2RpZnlPcmlnaW5hbEltYWdlRGF0YSk7Ci0KLSAgICBiYWNraW5nU3RvcmUtPnNldFNob3dEZWJ1
Z0JvcmRlcnMoaXNTaG93aW5nRGVidWdCb3JkZXIoKSk7Ci0gICAgYmFja2luZ1N0b3JlLT5zZXRE
ZWJ1Z0JvcmRlcihtX2RlYnVnQm9yZGVyQ29sb3IsIG1fZGVidWdCb3JkZXJXaWR0aCk7CisgICAg
YmFja2luZ1N0b3JlLT51cGRhdGVDb250ZW50cyh0ZXh0dXJlTWFwcGVyLCB0aGlzLCBtX3NpemUs
IGRpcnR5UmVjdCwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ2FuTW9kaWZ5T3JpZ2luYWxJbWFnZURh
dGEpOwogCiAgICAgbV9uZWVkc0Rpc3BsYXkgPSBmYWxzZTsKICAgICBtX25lZWRzRGlzcGxheVJl
Y3QgPSBJbnRSZWN0KCk7CkBAIC00ODYsNDAgKzQ4Niw2IEBAIGJvb2wgR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXI6OnNob3VsZEhhdmVCYWNraW5nU3RvcmUoKSBjb25zdAogICAgIHJldHVybiBk
cmF3c0NvbnRlbnQoKSAmJiBjb250ZW50c0FyZVZpc2libGUoKSAmJiAhbV9zaXplLmlzRW1wdHko
KTsKIH0KIAotI2lmIFVTRShDQUlSTykKLXZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6
OmRyYXdSZXBhaW50Q291bnRlcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCi17Ci0gICAgY2Fp
cm9fdCogY3IgPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKLSAgICBjYWlyb19z
YXZlKGNyKTsKLQotICAgIENTdHJpbmcgcmVwYWludENvdW50ID0gU3RyaW5nOjpmb3JtYXQoIiVp
IiwgdGhpcy0+cmVwYWludENvdW50KCkpLnV0ZjgoKTsKLSAgICBjYWlyb19zZWxlY3RfZm9udF9m
YWNlKGNyLCAic2Fucy1zZXJpZiIsIENBSVJPX0ZPTlRfU0xBTlRfTk9STUFMLCBDQUlST19GT05U
X1dFSUdIVF9CT0xEKTsKLSAgICBjYWlyb19zZXRfZm9udF9zaXplKGNyLCAxOCk7Ci0KLSAgICBj
YWlyb190ZXh0X2V4dGVudHNfdCByZXBhaW50VGV4dEV4dGVudHM7Ci0gICAgY2Fpcm9fdGV4dF9l
eHRlbnRzKGNyLCByZXBhaW50Q291bnQuZGF0YSgpLCAmcmVwYWludFRleHRFeHRlbnRzKTsKLQot
ICAgIHN0YXRpYyBjb25zdCBpbnQgcmVwYWludENvdW50Qm9yZGVyV2lkdGggPSAxMDsKLSAgICBz
ZXRTb3VyY2VSR0JBRnJvbUNvbG9yKGNyLCBpc1Nob3dpbmdEZWJ1Z0JvcmRlcigpID8gbV9kZWJ1
Z0JvcmRlckNvbG9yIDogQ29sb3IoMCwgMjU1LCAwLCAxMjcpKTsKLSAgICBjYWlyb19yZWN0YW5n
bGUoY3IsIDAsIDAsCi0gICAgICAgIHJlcGFpbnRUZXh0RXh0ZW50cy53aWR0aCArIChyZXBhaW50
Q291bnRCb3JkZXJXaWR0aCAqIDIpLAotICAgICAgICByZXBhaW50VGV4dEV4dGVudHMuaGVpZ2h0
ICsgKHJlcGFpbnRDb3VudEJvcmRlcldpZHRoICogMikpOwotICAgIGNhaXJvX2ZpbGwoY3IpOwot
Ci0gICAgY2Fpcm9fc2V0X3NvdXJjZV9yZ2IoY3IsIDEsIDEsIDEpOwotICAgIGNhaXJvX21vdmVf
dG8oY3IsIHJlcGFpbnRDb3VudEJvcmRlcldpZHRoLCByZXBhaW50VGV4dEV4dGVudHMuaGVpZ2h0
ICsgcmVwYWludENvdW50Qm9yZGVyV2lkdGgpOwotICAgIGNhaXJvX3Nob3dfdGV4dChjciwgcmVw
YWludENvdW50LmRhdGEoKSk7Ci0KLSAgICBjYWlyb19yZXN0b3JlKGNyKTsKLX0KLSNlbHNlCi12
b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpkcmF3UmVwYWludENvdW50ZXIoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLSNlbmRp
ZgotCiBib29sIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjphZGRBbmltYXRpb24oY29uc3Qg
S2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgY29uc3QgSW50U2l6ZSYgYm94U2l6ZSwgY29u
c3QgQW5pbWF0aW9uKiBhbmltLCBjb25zdCBTdHJpbmcmIGtleWZyYW1lc05hbWUsIGRvdWJsZSB0
aW1lT2Zmc2V0KQogewogICAgIEFTU0VSVCgha2V5ZnJhbWVzTmFtZS5pc0VtcHR5KCkpOwpAQCAt
NTc3LDQgKzU0MywxMCBAQCBib29sIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRGaWx0
ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCiB9CiAjZW5kaWYKIAordm9pZCBH
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0UmVwYWludENvdW50KGludCB2YWx1ZSkKK3sK
KyAgICBtX3JlcGFpbnRDb3VudCA9IHZhbHVlOworICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFw
cGVyTGF5ZXI6OlJlcGFpbnRDb3VudENoYW5nZSk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyLmgKaW5kZXggMTJjMzE5NTkxYjcyNmM3YzlmMGJhMmJkZmRmNDM4
NGU3ZGVhMTcxMy4uMDg0OGI1YjI0NmYwZmQwNzQzMTVlNTczZGIxOWZmZDQwMzRiNjY0MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKQEAgLTIwLDcgKzIwLDYgQEAK
ICNpZm5kZWYgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXJfaAogI2RlZmluZSBHcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlcl9oCiAKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNs
dWRlICJHcmFwaGljc0xheWVyLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNsaWVudC5oIgog
I2luY2x1ZGUgIkltYWdlLmgiCkBAIC02Niw2ICs2NSw4IEBAIHB1YmxpYzoKICAgICBDb2xvciBz
b2xpZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9zb2xpZENvbG9yOyB9CiAgICAgdmlydHVhbCB2
b2lkIHNldENvbnRlbnRzVG9NZWRpYShQbGF0Zm9ybUxheWVyKik7CiAgICAgdmlydHVhbCB2b2lk
IHNldENvbnRlbnRzVG9DYW52YXMoUGxhdGZvcm1MYXllciogY2FudmFzKSB7IHNldENvbnRlbnRz
VG9NZWRpYShjYW52YXMpOyB9CisgICAgdmlydHVhbCB2b2lkIHNldFNob3dEZWJ1Z0JvcmRlcihi
b29sKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvd1JlcGFpbnRDb3VudGVyKGJv
b2wpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBmbHVzaENvbXBvc2l0aW5nU3RhdGUoY29u
c3QgRmxvYXRSZWN0Jik7CiAgICAgdmlydHVhbCB2b2lkIGZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZv
clRoaXNMYXllck9ubHkoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmFtZShjb25zdCBTdHJpbmcm
IG5hbWUpOwpAQCAtOTMsMTAgKzk0LDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEZpeGVkVG9W
aWV3cG9ydChib29sIGZpeGVkKSB7IG1fZml4ZWRUb1ZpZXdwb3J0ID0gZml4ZWQ7IH0KICAgICBi
b29sIGZpeGVkVG9WaWV3cG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fZml4ZWRUb1ZpZXdwb3J0OyB9
CiAKLSAgICB2b2lkIGRyYXdSZXBhaW50Q291bnRlcihHcmFwaGljc0NvbnRleHQqKTsKKyAgICBD
b2xvciBkZWJ1Z0JvcmRlckNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z0JvcmRlckNvbG9y
OyB9CisgICAgZmxvYXQgZGVidWdCb3JkZXJXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdC
b3JkZXJXaWR0aDsgfQorCisgICAgdm9pZCBzZXRSZXBhaW50Q291bnQoaW50IHZhbHVlKTsKKwog
cHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVkKCk7CiAgICAgdm9pZCBk
aWRGbHVzaENvbXBvc2l0aW5nU3RhdGUoKTsKKyAgICB2b2lkIHVwZGF0ZURlYnVnQm9yZGVyQW5k
UmVwYWludENvdW50KCk7CiAgICAgdm9pZCB1cGRhdGVCYWNraW5nU3RvcmUoKTsKICAgICB2b2lk
IHByZXBhcmVCYWNraW5nU3RvcmUoKTsKICAgICBib29sIHNob3VsZEhhdmVCYWNraW5nU3RvcmUo
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlci5oCmluZGV4IGM3MjQxYTZjOWE3MjJhNjQ1MmY3YzE4YzlkNjY5
NzEyNzY2OTM2NmIuLjJhNTI3NmZkMmFmNzc4YTJkMWI0YmJkNWU5YTAxNDY5YzhhNmU2NTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXIuaApAQCAtMTMxLDcgKzEzMSw3IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAg
dmlydHVhbCB2b2lkIGRyYXdCb3JkZXIoY29uc3QgQ29sb3ImLCBmbG9hdCBib3JkZXJXaWR0aCwg
Y29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
bW9kZWxWaWV3TWF0cml4ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBkcmF3UmVwYWludENvdW50ZXIoaW50IHZhbHVlLCBpbnQgcG9pbnRTaXplLCBjb25z
dCBGbG9hdFBvaW50JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJp
eCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1Jl
cGFpbnRDb3VudGVyKGludCB2YWx1ZSwgY29uc3QgQ29sb3ImLCBjb25zdCBGbG9hdFBvaW50Jiwg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCA9IFRyYW5zZm9ybWF0
aW9uTWF0cml4KCkpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1RleHR1cmUoY29uc3QgQml0
bWFwVGV4dHVyZSYsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0LCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgZmxvYXQg
b3BhY2l0eSA9IDEuMGYsIGNvbnN0IEJpdG1hcFRleHR1cmUqIG1hc2tUZXh0dXJlID0gMCwgdW5z
aWduZWQgZXhwb3NlZEVkZ2VzID0gQWxsRWRnZXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZHJh
d1NvbGlkQ29sb3IoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
LCBjb25zdCBDb2xvciYpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3Rv
cmUuY3BwCmluZGV4IGVkYmM2MWI0ZGJiNjg5Y2IzNjhkNWMzZTcwN2NkYWI5MGRiY2JiNjkuLjA0
MjUzNzMyMjBiODgyNTIzZTFiN2JkYTgyOTdiYjBkZjg2OGYwMDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5jcHAKQEAgLTU0LDggKzU0LDE0IEBAIFBhc3NSZWZQdHI8
Qml0bWFwVGV4dHVyZT4gVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU6OnRleHR1cmUo
KSBjb25zdAogCiB2b2lkIFRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlOjpwYWludFRv
VGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJl
Y3QmIHRhcmdldFJlY3QsIGNvbnN0IFRleHR1cmVNYXBwZXJQYWludFBhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMpCiB7Ci0gICAgaWYgKG1fZ3JhcGhpY3NTdXJmYWNlKQotICAgICAgICBtX2dyYXBoaWNz
U3VyZmFjZS0+cGFpbnRUb1RleHR1cmVNYXBwZXIodGV4dHVyZU1hcHBlciwgdGFyZ2V0UmVjdCwg
cGFyYW1ldGVycy5tb2RlbFZpZXdNYXRyaXgsIHBhcmFtZXRlcnMub3BhY2l0eSwgcGFyYW1ldGVy
cy5tYXNrKTsKKyAgICBpZiAoIW1fZ3JhcGhpY3NTdXJmYWNlKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX2dyYXBoaWNzU3VyZmFjZS0+cGFpbnRUb1RleHR1cmVNYXBwZXIodGV4dHVyZU1hcHBl
ciwgdGFyZ2V0UmVjdCwgcGFyYW1ldGVycy5tb2RlbFZpZXdNYXRyaXgsIHBhcmFtZXRlcnMub3Bh
Y2l0eSwgcGFyYW1ldGVycy5tYXNrKTsKKyAgICBpZiAocGFyYW1ldGVycy5zaG93RGVidWdCb3Jk
ZXJzKQorICAgICAgICB0ZXh0dXJlTWFwcGVyLT5kcmF3Qm9yZGVyKHBhcmFtZXRlcnMuZGVidWdC
b3JkZXJDb2xvciwgcGFyYW1ldGVycy5kZWJ1Z0JvcmRlcldpZHRoLCB0YXJnZXRSZWN0LCBwYXJh
bWV0ZXJzLm1vZGVsVmlld01hdHJpeCk7CisgICAgaWYgKHBhcmFtZXRlcnMuc2hvd1JlcGFpbnRD
b3VudGVyKQorICAgICAgICB0ZXh0dXJlTWFwcGVyLT5kcmF3UmVwYWludENvdW50ZXIocGFyYW1l
dGVycy5yZXBhaW50Q291bnQsIHBhcmFtZXRlcnMuZGVidWdCb3JkZXJDb2xvciwgdGFyZ2V0UmVj
dC5sb2NhdGlvbigpLCBwYXJhbWV0ZXJzLm1vZGVsVmlld01hdHJpeCk7CiB9CiAjZW5kaWYKIApA
QCAtMTA2LDcgKzExMiw2IEBAIHZvaWQgVGV4dHVyZU1hcHBlclRpbGU6OnBhaW50KFRleHR1cmVN
YXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uCiB9CiAKIFRleHR1cmVN
YXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlKCkK
LSAgICA6IG1fZHJhd3NEZWJ1Z0JvcmRlcnMoZmFsc2UpCiB7CiB9CiAKQEAgLTE0MCw4ICsxNDUs
MTAgQEAgdm9pZCBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OnBhaW50VG9UZXh0dXJl
TWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmUKICAgICBhZGp1c3RlZFRyYW5zZm9ybS5tdWx0
aXBseShUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6cmVjdFRvUmVjdChyZWN0KCksIHRhcmdldFJlY3Qp
KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fdGlsZXMuc2l6ZSgpOyArK2kpIHsKICAg
ICAgICAgbV90aWxlc1tpXS5wYWludCh0ZXh0dXJlTWFwcGVyLCBhZGp1c3RlZFRyYW5zZm9ybSwg
cGFyYW1ldGVycy5vcGFjaXR5LCBwYXJhbWV0ZXJzLm1hc2ssIGNhbGN1bGF0ZUV4cG9zZWRUaWxl
RWRnZXMocmVjdCgpLCBtX3RpbGVzW2ldLnJlY3QoKSkpOwotICAgICAgICBpZiAobV9kcmF3c0Rl
YnVnQm9yZGVycykKLSAgICAgICAgICAgIHRleHR1cmVNYXBwZXItPmRyYXdCb3JkZXIobV9kZWJ1
Z0JvcmRlckNvbG9yLCBtX2RlYnVnQm9yZGVyV2lkdGgsIG1fdGlsZXNbaV0ucmVjdCgpLCBhZGp1
c3RlZFRyYW5zZm9ybSk7CisgICAgICAgIGlmIChwYXJhbWV0ZXJzLnNob3dEZWJ1Z0JvcmRlcnMp
CisgICAgICAgICAgICB0ZXh0dXJlTWFwcGVyLT5kcmF3Qm9yZGVyKHBhcmFtZXRlcnMuZGVidWdC
b3JkZXJDb2xvciwgcGFyYW1ldGVycy5kZWJ1Z0JvcmRlcldpZHRoLCBtX3RpbGVzW2ldLnJlY3Qo
KSwgYWRqdXN0ZWRUcmFuc2Zvcm0pOworICAgICAgICBpZiAocGFyYW1ldGVycy5zaG93UmVwYWlu
dENvdW50ZXIpCisgICAgICAgICAgICB0ZXh0dXJlTWFwcGVyLT5kcmF3UmVwYWludENvdW50ZXIo
cGFyYW1ldGVycy5yZXBhaW50Q291bnQsIHBhcmFtZXRlcnMuZGVidWdCb3JkZXJDb2xvciwgbV90
aWxlc1tpXS5yZWN0KCkubG9jYXRpb24oKSwgYWRqdXN0ZWRUcmFuc2Zvcm0pOwogICAgIH0KIH0K
IApAQCAtMjM0LDExICsyNDEsNSBAQCBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IFRleHR1cmVN
YXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6dGV4dHVyZSgpIGNvbnN0CiAgICAgcmV0dXJuIFBhc3NS
ZWZQdHI8Qml0bWFwVGV4dHVyZT4oKTsKIH0KIAotdm9pZCBUZXh0dXJlTWFwcGVyVGlsZWRCYWNr
aW5nU3RvcmU6OnNldERlYnVnQm9yZGVyKGNvbnN0IENvbG9yJiBjb2xvciwgZmxvYXQgd2lkdGgp
Ci17Ci0gICAgbV9kZWJ1Z0JvcmRlckNvbG9yID0gY29sb3I7Ci0gICAgbV9kZWJ1Z0JvcmRlcldp
ZHRoID0gd2lkdGg7Ci19Ci0KIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2lu
Z1N0b3JlLmgKaW5kZXggZDYzMTA0ZjczZmQ3ZTIwNGM2NjliNzQwN2RiMWYwNjlkMDdmMGEzOS4u
MGU5ZTM4NDMxOTQ5MmU2Nzg0ZmQ5ZmUzNjViZTFhMjUyZDdlZTEwYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5n
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oCkBAIC05OCw4ICs5OCw2IEBAIHB1YmxpYzoKICAgICB2
b2lkIHVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqLCBHcmFwaGljc0xheWVyKiwgY29uc3Qg
RmxvYXRTaXplJiwgY29uc3QgSW50UmVjdCYsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNvbnRlbnRz
RmxhZyk7CiAKICAgICB2b2lkIHNldENvbnRlbnRzVG9JbWFnZShJbWFnZSogaW1hZ2UpIHsgbV9p
bWFnZSA9IGltYWdlOyB9Ci0gICAgdm9pZCBzZXRTaG93RGVidWdCb3JkZXJzKGJvb2wgZHJhd3NE
ZWJ1Z0JvcmRlcnMpIHsgbV9kcmF3c0RlYnVnQm9yZGVycyA9IGRyYXdzRGVidWdCb3JkZXJzOyB9
Ci0gICAgdm9pZCBzZXREZWJ1Z0JvcmRlcihjb25zdCBDb2xvciYsIGZsb2F0IHdpZHRoKTsKIAog
cHJpdmF0ZToKICAgICBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUoKTsKQEAgLTExMCwx
MCArMTA4LDYgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8VGV4dHVyZU1hcHBlclRpbGU+IG1fdGls
ZXM7CiAgICAgRmxvYXRTaXplIG1fc2l6ZTsKICAgICBSZWZQdHI8SW1hZ2U+IG1faW1hZ2U7Ci0K
LSAgICBib29sIG1fZHJhd3NEZWJ1Z0JvcmRlcnM7Ci0gICAgQ29sb3IgbV9kZWJ1Z0JvcmRlckNv
bG9yOwotICAgIGZsb2F0IG1fZGVidWdCb3JkZXJXaWR0aDsKIH07CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJHTC5jcHAKaW5kZXggNTcxODRkN2I2NjJjYjMzY2I3YWIyMDg5MmU0M2EzNTZhMDAwY2EzNS4u
ZTQzMGNhODk2YjE5NjRhNTkyN2JkMWU3ZGJiZmVlNjljY2ZkNWFmZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJHTC5jcHAKQEAgLTMyOCw4ICszMjgsMTQgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdC
b3JkZXIoY29uc3QgQ29sb3ImIGNvbG9yLCBmbG9hdCB3aWR0aCwgY29uc3QgRmxvYXRSZWMKICAg
ICBkcmF3UXVhZCh0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIHByb2dyYW0uZ2V0KCksIEdy
YXBoaWNzQ29udGV4dDNEOjpMSU5FX0xPT1AsIGNvbG9yLmhhc0FscGhhKCkgPyBTaG91bGRCbGVu
ZCA6IDApOwogfQogCi12b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1JlcGFpbnRDb3VudGVyKGlu
dCB2YWx1ZSwgaW50IHBvaW50U2l6ZSwgY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0UG9pbnQsIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgpCitzdGF0aWMgaW5saW5l
IFJHQkEzMiBjb252ZXJ0QUJHUlRvQVJHQihSR0JBMzIgcGl4ZWwpCiB7CisgICAgcmV0dXJuICgo
cGl4ZWwgPDwgMTYpICYgMHhmZjAwMDApIHwgKChwaXhlbCA+PiAxNikgJiAweGZmKSB8IChwaXhl
bCAmIDB4ZmYwMGZmMDApOworfQorCit2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1JlcGFpbnRD
b3VudGVyKGludCB2YWx1ZSwgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBGbG9hdFBvaW50JiB0
YXJnZXRQb2ludCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCkK
K3sKKyAgICBzdGF0aWMgY29uc3QgaW50IHBvaW50U2l6ZSA9IDg7CiAjaWYgUExBVEZPUk0oUVQp
CiAgICAgUVN0cmluZyBjb3VudGVyU3RyaW5nID0gUVN0cmluZzo6bnVtYmVyKHZhbHVlKTsKIApA
QCAtMzQ2LDcgKzM1Miw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3UmVwYWludENvdW50
ZXIoaW50IHZhbHVlLCBpbnQgcG9pbnRTaXplLCBjb25zdCBGbG9hdFBvCiAKICAgICBRSW1hZ2Ug
aW1hZ2Uoc2l6ZSwgTmF0aXZlSW1hZ2VRdDo6ZGVmYXVsdEZvcm1hdEZvckFscGhhRW5hYmxlZElt
YWdlcygpKTsKICAgICBRUGFpbnRlciBwYWludGVyKCZpbWFnZSk7Ci0gICAgcGFpbnRlci5maWxs
UmVjdChzb3VyY2VSZWN0LCBRdDo6Ymx1ZSk7IC8vIFNpbmNlIHdlIHdvbid0IHN3YXAgUitCIGZv
ciBzcGVlZCwgdGhpcyB3aWxsIHBhaW50IHJlZC4KKyAgICBwYWludGVyLmZpbGxSZWN0KHNvdXJj
ZVJlY3QsIGNvbnZlcnRBQkdSVG9BUkdCKGNvbG9yLnJnYigpKSk7IC8vIFNpbmNlIHdlIHdvbid0
IHN3YXAgUitCIGZvciBzcGVlZCwgdGhpcyB3aWxsIHBhaW50IHRoZSBnaXZlbiBjb2xvci4KICAg
ICBwYWludGVyLnNldEZvbnQoZm9udCk7CiAgICAgcGFpbnRlci5zZXRQZW4oUXQ6OndoaXRlKTsK
ICAgICBwYWludGVyLmRyYXdUZXh0KDIsIGhlaWdodCAqIDAuODUsIGNvdW50ZXJTdHJpbmcpOwpA
QCAtMzY1LDcgKzM3MSw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3UmVwYWludENvdW50
ZXIoaW50IHZhbHVlLCBpbnQgcG9pbnRTaXplLCBjb25zdCBGbG9hdFBvCiAgICAgY2Fpcm9fc3Vy
ZmFjZV90KiBzdXJmYWNlID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGUoQ0FJUk9fRk9STUFU
X0FSR0IzMiwgd2lkdGgsIGhlaWdodCk7CiAgICAgY2Fpcm9fdCogY3IgPSBjYWlyb19jcmVhdGUo
c3VyZmFjZSk7CiAKLSAgICBjYWlyb19zZXRfc291cmNlX3JnYihjciwgMCwgMCwgMSk7IC8vIFNp
bmNlIHdlIHdvbid0IHN3YXAgUitCIGZvciBzcGVlZCwgdGhpcyB3aWxsIHBhaW50IHJlZC4KKyAg
ICBjYWlyb19zZXRfc291cmNlX3JnYmEoY3IsIGNvbG9yLmJsdWUoKSwgY29sb3IuZ3JlZW4oKSwg
Y29sb3IucmVkKCksIGNvbG9yLmFscGhhKCkpOyAvLyBTaW5jZSB3ZSB3b24ndCBzd2FwIFIrQiBm
b3Igc3BlZWQsIHRoaXMgd2lsbCBwYWludCB0aGUgZ2l2ZW4gY29sb3IuCiAgICAgY2Fpcm9fcmVj
dGFuZ2xlKGNyLCAwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKICAgICBjYWlyb19maWxsKGNyKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJHTC5oCmluZGV4IDU5ZGIzZDM5NzljMGQxMGJlNDE0ODE1ZTc4MjMxNWRmMDdj
MzVhMTYuLjU3NWI4NjFiZDQyNmQ3YTJhY2VmNzJkMWQ3NTU3YjA3MjhhNjBjZGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
R0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckdMLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogCiAgICAgLy8gVGV4dHVyZU1h
cHBlciBpbXBsZW1lbnRhdGlvbgogICAgIHZpcnR1YWwgdm9pZCBkcmF3Qm9yZGVyKGNvbnN0IENv
bG9yJiwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCA9IFRyYW5zZm9ybWF0aW9u
TWF0cml4KCkpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVwYWludENvdW50ZXIo
aW50IHZhbHVlLCBpbnQgcG9pbnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVwYWludENvdW50ZXIoaW50IHZhbHVl
LCBjb25zdCBDb2xvciYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgbW9kZWxWaWV3TWF0cml4ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIGRyYXdUZXh0dXJlKGNvbnN0IEJpdG1hcFRleHR1cmUmLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHks
IGNvbnN0IEJpdG1hcFRleHR1cmUqIG1hc2tUZXh0dXJlLCB1bnNpZ25lZCBleHBvc2VkRWRnZXMp
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3VGV4dHVyZShQbGF0Zm9ybTNET2JqZWN0
IHRleHR1cmUsIEZsYWdzLCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgY29uc3QgRmxvYXRS
ZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0
cml4LCBmbG9hdCBvcGFjaXR5LCBjb25zdCBCaXRtYXBUZXh0dXJlKiBtYXNrVGV4dHVyZSwgdW5z
aWduZWQgZXhwb3NlZEVkZ2VzID0gQWxsRWRnZXMpOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3U29s
aWRDb2xvcihjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNv
bnN0IENvbG9yJikgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIu
Y3BwCmluZGV4IDVlM2NjOTAzODQ3M2YxMDQwMDE5ZmY0MDVjN2FlNDZkNjk3ZjU3MTYuLmY1ZDNk
OWQyOWE3MDg0N2MwOWJkYmY1NDFhNmU0NWVhYjdmOGUzZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVySW1hZ2VCdWZmZXIuY3BwCkBAIC0yNiw2ICsyNiwxMiBAQAogI2luY2x1ZGUgIk5hdGl2
ZUltYWdlUXQuaCIKICNlbmRpZgogCisjaWYgVVNFKENBSVJPKQorI2luY2x1ZGUgIkNhaXJvVXRp
bGl0aWVzLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2Vsc2UKKyNpbmNsdWRl
ICJOb3RJbXBsZW1lbnRlZC5oIgorI2VuZGlmCiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNjQsNiArMTcwLDM4IEBAIHZvaWQgVGV4dHVyZU1hcHBl
ckltYWdlQnVmZmVyOjpkcmF3U29saWRDb2xvcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0
IFRyYW5zCiAgICAgY29udGV4dC0+cmVzdG9yZSgpOwogfQogCisjaWYgVVNFKENBSVJPKQordm9p
ZCBUZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXI6OmRyYXdSZXBhaW50Q291bnRlcihpbnQgdmFsdWUs
IGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgpCit7CisgICAgc3RhdGljIGNvbnN0IGludCBwb2lu
dFNpemUgPSA4OworICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9IGN1cnJlbnRDb250ZXh0
KCk7CisgICAgY2Fpcm9fdCogY3IgPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsK
KyAgICBjYWlyb19zYXZlKGNyKTsKKworICAgIENTdHJpbmcgY291bnRlclN0cmluZyA9IFN0cmlu
Zzo6bnVtYmVyKHZhbHVlKS5hc2NpaSgpOworICAgIC8vIGNhaXJvX3RleHRfZXh0ZW50cygpIHJl
cXVpcmVzIGEgY2Fpcm9fdCwgc28gZGltZW5zaW9ucyBuZWVkIHRvIGJlIGd1ZXNzdGltYXRlZC4K
KyAgICBpbnQgd2lkdGggPSBjb3VudGVyU3RyaW5nLmxlbmd0aCgpICogcG9pbnRTaXplICogMS4y
OworICAgIGludCBoZWlnaHQgPSBwb2ludFNpemUgKiAxLjU7CisKKyAgICBzZXRTb3VyY2VSR0JB
RnJvbUNvbG9yKGNyLCBjb2xvcik7CisgICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLCAwLCAwLCB3aWR0
aCwgaGVpZ2h0KTsKKyAgICBjYWlyb19maWxsKGNyKTsKKworICAgIGNhaXJvX3NlbGVjdF9mb250
X2ZhY2UoY3IsICJNb25vc3BhY2UiLCBDQUlST19GT05UX1NMQU5UX05PUk1BTCwgQ0FJUk9fRk9O
VF9XRUlHSFRfQk9MRCk7CisgICAgY2Fpcm9fc2V0X2ZvbnRfc2l6ZShjciwgcG9pbnRTaXplKTsK
KyAgICBjYWlyb19zZXRfc291cmNlX3JnYihjciwgMSwgMSwgMSk7CisgICAgY2Fpcm9fbW92ZV90
byhjciwgMiwgcG9pbnRTaXplKTsKKyAgICBjYWlyb19zaG93X3RleHQoY3IsIGNvdW50ZXJTdHJp
bmcuZGF0YSgpKTsKKworICAgIGNhaXJvX3Jlc3RvcmUoY3IpOworfTsKKyNlbHNlCit2b2lkIFRl
eHR1cmVNYXBwZXJJbWFnZUJ1ZmZlcjo6ZHJhd1JlcGFpbnRDb3VudGVyKGludCAvKiB2YWx1ZSAq
LywgY29uc3QgQ29sb3ImLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9OworI2VuZGlmCisKICNpZiBFTkFC
TEUoQ1NTX0ZJTFRFUlMpCiBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IEJpdG1hcFRleHR1cmVJ
bWFnZUJ1ZmZlcjo6YXBwbHlGaWx0ZXJzKFRleHR1cmVNYXBwZXIqLCBjb25zdCBCaXRtYXBUZXh0
dXJlJiBjb250ZW50VGV4dHVyZSwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVySW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuaAppbmRleCA5ZGU2ZDRjYmQ1ZWIxN2U5
MzQ4ODAxOGE2MmE3MTMxZDg5NzM4NGViLi4zNjc3YTNmZTAzM2M1MDhkMDBjZWY5ODYzNGFjOTQz
ZTM2YmQ3MmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5oCkBAIC01Nywx
MCArNTcsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBVTlVTRURfUEFSQU0obW9kZWxWaWV3
TWF0cml4KTsKICAgICB9OwotICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVwYWludENvdW50ZXIoaW50
IC8qIHZhbHVlICovLCBpbnQgLyogcG9pbnRTaXplICovLCBjb25zdCBGbG9hdFBvaW50JiwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCA9IFRyYW5zZm9ybWF0aW9u
TWF0cml4KCkpIE9WRVJSSURFCi0gICAgewotICAgICAgICBVTlVTRURfUEFSQU0obW9kZWxWaWV3
TWF0cml4KTsKLSAgICB9OworICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVwYWludENvdW50ZXIoaW50
IHZhbHVlLCBjb25zdCBDb2xvciYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdUZXh0dXJlKGNvbnN0IEJpdG1hcFRleHR1cmUm
LCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUsIHVuc2ln
bmVkIGV4cG9zZWRFZGdlcykgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdTb2xpZENv
bG9yKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3Qg
Q29sb3ImKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5DbGlwKGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiwgY29uc3QgRmxvYXRSZWN0JikgT1ZFUlJJREU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxh
eWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyTGF5ZXIuY3BwCmluZGV4IDUyNDM1MWVkYzg2NzVlYjk5YTA4NTE5NjE3NGE0NzUwNWM5
NjllMjUuLjA0YWRmZTZmNWVhOTg2ZTg3N2VkNWJiMzVkMTQyZmY4ZDFmMGNjYTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
TGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCkBAIC0xMTksNiArMTE5LDExIEBAIHZvaWQgVGV4dHVyZU1h
cHBlckxheWVyOjpwYWludFNlbGYoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0
aW9ucykKICAgICBwYXJhbWV0ZXJzLm1vZGVsVmlld01hdHJpeCA9IHRyYW5zZm9ybTsKICAgICBw
YXJhbWV0ZXJzLm9wYWNpdHkgPSBvcHRpb25zLm9wYWNpdHk7CiAgICAgcGFyYW1ldGVycy5tYXNr
ID0gb3B0aW9ucy5tYXNrLmdldCgpOworICAgIHBhcmFtZXRlcnMuc2hvd0RlYnVnQm9yZGVycyA9
IG1fc3RhdGUuc2hvd0RlYnVnQm9yZGVyczsKKyAgICBwYXJhbWV0ZXJzLmRlYnVnQm9yZGVyQ29s
b3IgPSBtX3N0YXRlLmRlYnVnQm9yZGVyQ29sb3I7CisgICAgcGFyYW1ldGVycy5kZWJ1Z0JvcmRl
cldpZHRoID0gbV9zdGF0ZS5kZWJ1Z0JvcmRlcldpZHRoOworICAgIHBhcmFtZXRlcnMuc2hvd1Jl
cGFpbnRDb3VudGVyID0gbV9zdGF0ZS5zaG93UmVwYWludENvdW50ZXI7CisgICAgcGFyYW1ldGVy
cy5yZXBhaW50Q291bnQgPSBtX3N0YXRlLnJlcGFpbnRDb3VudDsKIAogICAgIGlmIChtX3N0YXRl
LnNvbGlkQ29sb3IuaXNWYWxpZCgpICYmICFtX3N0YXRlLmNvbnRlbnRzUmVjdC5pc0VtcHR5KCkp
IHsKICAgICAgICAgaWYgKCFtX3N0YXRlLnNvbGlkQ29sb3IuYWxwaGEoKSkKQEAgLTEyOSw2ICsx
MzQsMTEgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50U2VsZihjb25zdCBUZXh0dXJl
TWFwcGVyUGFpbnRPcHRpb25zJiBvcHRpb25zKQogICAgICAgICBjb2xvci5nZXRSR0JBKHIsIGcs
IGIsIGEpOwogICAgICAgICBjb2xvciA9IENvbG9yKHIgKiBwYXJhbWV0ZXJzLm9wYWNpdHksIGcg
KiBwYXJhbWV0ZXJzLm9wYWNpdHksIGIgKiBwYXJhbWV0ZXJzLm9wYWNpdHksIGEgKiBwYXJhbWV0
ZXJzLm9wYWNpdHkpOwogICAgICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmRyYXdTb2xpZENv
bG9yKG1fc3RhdGUuY29udGVudHNSZWN0LCBwYXJhbWV0ZXJzLm1vZGVsVmlld01hdHJpeCwgY29s
b3IpOworCisgICAgICAgIGlmIChwYXJhbWV0ZXJzLnNob3dEZWJ1Z0JvcmRlcnMpCisgICAgICAg
ICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmRyYXdCb3JkZXIocGFyYW1ldGVycy5kZWJ1Z0Jv
cmRlckNvbG9yLCBwYXJhbWV0ZXJzLmRlYnVnQm9yZGVyV2lkdGgsIGxheWVyUmVjdCgpLCBwYXJh
bWV0ZXJzLm1vZGVsVmlld01hdHJpeCk7CisgICAgICAgIGlmIChwYXJhbWV0ZXJzLnNob3dSZXBh
aW50Q291bnRlcikKKyAgICAgICAgICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+ZHJhd1JlcGFp
bnRDb3VudGVyKHBhcmFtZXRlcnMucmVwYWludENvdW50LCBwYXJhbWV0ZXJzLmRlYnVnQm9yZGVy
Q29sb3IsIGxheWVyUmVjdCgpLmxvY2F0aW9uKCksIHBhcmFtZXRlcnMubW9kZWxWaWV3TWF0cml4
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzgzLDggKzM5Myw2IEBAIHZvaWQgVGV4
dHVyZU1hcHBlckxheWVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KEdy
YXBoaWNzTGF5ZXJUZXh0CiAgICAgaWYgKGNoYW5nZU1hc2sgPT0gTm9DaGFuZ2VzICYmIGdyYXBo
aWNzTGF5ZXItPm1fYW5pbWF0aW9ucy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGdyYXBoaWNzTGF5ZXItPnVwZGF0ZURlYnVnSW5kaWNhdG9ycygpOwotCiAgICAgaWYgKGNoYW5n
ZU1hc2sgJiBDaGlsZHJlbkNoYW5nZSkKICAgICAgICAgc2V0Q2hpbGRyZW4oZ3JhcGhpY3NMYXll
ci0+Y2hpbGRyZW4oKSk7CiAKQEAgLTQwMSw2ICs0MDksOSBAQCB2b2lkIFRleHR1cmVNYXBwZXJM
YXllcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seShHcmFwaGljc0xheWVy
VGV4dAogICAgIGlmIChjaGFuZ2VNYXNrICYgQW5pbWF0aW9uQ2hhbmdlKQogICAgICAgICBtX2Fu
aW1hdGlvbnMgPSBncmFwaGljc0xheWVyLT5tX2FuaW1hdGlvbnM7CiAKKyAgICBpZiAoY2hhbmdl
TWFzayAmIFJlcGFpbnRDb3VudENoYW5nZSkKKyAgICAgICAgbV9zdGF0ZS5yZXBhaW50Q291bnQg
PSBncmFwaGljc0xheWVyLT5yZXBhaW50Q291bnQoKTsKKwogICAgIG1fc3RhdGUubWFza0xheWVy
ID0gdG9UZXh0dXJlTWFwcGVyTGF5ZXIoZ3JhcGhpY3NMYXllci0+bWFza0xheWVyKCkpOwogICAg
IG1fc3RhdGUucmVwbGljYUxheWVyID0gdG9UZXh0dXJlTWFwcGVyTGF5ZXIoZ3JhcGhpY3NMYXll
ci0+cmVwbGljYUxheWVyKCkpOwogICAgIG1fc3RhdGUucG9zID0gZ3JhcGhpY3NMYXllci0+cG9z
aXRpb24oKTsKQEAgLTQyMyw2ICs0MzQsMTEgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OmZs
dXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoR3JhcGhpY3NMYXllclRleHQKICNl
bmRpZgogICAgIG1fZml4ZWRUb1ZpZXdwb3J0ID0gZ3JhcGhpY3NMYXllci0+Zml4ZWRUb1ZpZXdw
b3J0KCk7CiAKKyAgICBtX3N0YXRlLnNob3dEZWJ1Z0JvcmRlcnMgPSBncmFwaGljc0xheWVyLT5p
c1Nob3dpbmdEZWJ1Z0JvcmRlcigpOworICAgIG1fc3RhdGUuZGVidWdCb3JkZXJDb2xvciA9IHRv
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIoZ3JhcGhpY3NMYXllciktPmRlYnVnQm9yZGVyQ29s
b3IoKTsKKyAgICBtX3N0YXRlLmRlYnVnQm9yZGVyV2lkdGggPSB0b0dyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyKGdyYXBoaWNzTGF5ZXIpLT5kZWJ1Z0JvcmRlcldpZHRoKCk7CisgICAgbV9zdGF0
ZS5zaG93UmVwYWludENvdW50ZXIgPSBncmFwaGljc0xheWVyLT5pc1Nob3dpbmdSZXBhaW50Q291
bnRlcigpOworCiAgICAgbV9jb250ZW50c0xheWVyID0gZ3JhcGhpY3NMYXllci0+cGxhdGZvcm1M
YXllcigpOwogCiAgICAgbV9lZmZlY3RpdmVUcmFuc2Zvcm0uc2V0UG9zaXRpb24oYWRqdXN0ZWRQ
b3NpdGlvbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaAppbmRleCA2MGRhM2UwMmFkZTI1MDBh
MGRmYmI3OTM3NjNjZDNiNzlmMGExMDhhLi42OGVlYzMyMmYwMDA2NmMxZmI1MTNjMWUxYzNhN2Ez
MWVkMjA0NzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCkBAIC03MSw3ICs3MSwxMCBAQCBw
dWJsaWM6CiAKICAgICAgICAgUmVwbGljYUxheWVyQ2hhbmdlID0gICAgICAgICgxTCA8PCAyMSks
CiAgICAgICAgIEFuaW1hdGlvbkNoYW5nZSA9ICAgICAgICAgICAoMUwgPDwgMjIpLAotICAgICAg
ICBGaWx0ZXJDaGFuZ2UgPSAgICAgICAgICAgICAgKDFMIDw8IDIzKQorICAgICAgICBGaWx0ZXJD
aGFuZ2UgPSAgICAgICAgICAgICAgKDFMIDw8IDIzKSwKKworICAgICAgICBEZWJ1Z1Zpc3VhbHND
aGFuZ2UgPSAgICAgICAgKDFMIDw8IDI0KSwKKyAgICAgICAgUmVwYWludENvdW50Q2hhbmdlID0g
ICAgICAgICgxTCA8PCAyNSkKICAgICB9OwogCiAgICAgVGV4dHVyZU1hcHBlckxheWVyKCkKQEAg
LTE3OCw2ICsxODEsOSBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKICAgICAg
ICAgRmlsdGVyT3BlcmF0aW9ucyBmaWx0ZXJzOwogI2VuZGlmCisgICAgICAgIENvbG9yIGRlYnVn
Qm9yZGVyQ29sb3I7CisgICAgICAgIGZsb2F0IGRlYnVnQm9yZGVyV2lkdGg7CisgICAgICAgIGlu
dCByZXBhaW50Q291bnQ7CiAKICAgICAgICAgYm9vbCBwcmVzZXJ2ZXMzRCA6IDE7CiAgICAgICAg
IGJvb2wgbWFza3NUb0JvdW5kcyA6IDE7CkBAIC0xODYsMTEgKzE5MiwxNSBAQCBwcml2YXRlOgog
ICAgICAgICBib29sIGNvbnRlbnRzT3BhcXVlIDogMTsKICAgICAgICAgYm9vbCBiYWNrZmFjZVZp
c2liaWxpdHkgOiAxOwogICAgICAgICBib29sIHZpc2libGUgOiAxOworICAgICAgICBib29sIHNo
b3dEZWJ1Z0JvcmRlcnMgOiAxOworICAgICAgICBib29sIHNob3dSZXBhaW50Q291bnRlciA6IDE7
CiAKICAgICAgICAgU3RhdGUoKQogICAgICAgICAgICAgOiBvcGFjaXR5KDEpCiAgICAgICAgICAg
ICAsIG1hc2tMYXllcigwKQogICAgICAgICAgICAgLCByZXBsaWNhTGF5ZXIoMCkKKyAgICAgICAg
ICAgICwgZGVidWdCb3JkZXJXaWR0aCgwKQorICAgICAgICAgICAgLCByZXBhaW50Q291bnQoMCkK
ICAgICAgICAgICAgICwgcHJlc2VydmVzM0QoZmFsc2UpCiAgICAgICAgICAgICAsIG1hc2tzVG9C
b3VuZHMoZmFsc2UpCiAgICAgICAgICAgICAsIGRyYXdzQ29udGVudChmYWxzZSkKQEAgLTE5OCw2
ICsyMDgsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgLCBjb250ZW50c09wYXF1ZShmYWxzZSkK
ICAgICAgICAgICAgICwgYmFja2ZhY2VWaXNpYmlsaXR5KGZhbHNlKQogICAgICAgICAgICAgLCB2
aXNpYmxlKHRydWUpCisgICAgICAgICAgICAsIHNob3dEZWJ1Z0JvcmRlcnMoZmFsc2UpCisgICAg
ICAgICAgICAsIHNob3dSZXBhaW50Q291bnRlcihmYWxzZSkKICAgICAgICAgewogICAgICAgICB9
CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgKaW5kZXggNjdj
NWRhZmVhMjczN2Y0NjUzYjcyYmEwMTNmYTVmODE4YjFlMTNiMy4uYjQ4MzM0MWMxYzNlZmZkYTdl
MWVjNWQ5ZDJmNWVhMzUxODA5ZDg2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyLmgKQEAgLTM1LDkgKzM1LDE5IEBAIHB1YmxpYzoKICAgICBmbG9hdCBvcGFjaXR5Owog
ICAgIEJpdG1hcFRleHR1cmUqIG1hc2s7CiAKKyAgICBib29sIHNob3dEZWJ1Z0JvcmRlcnM7Cisg
ICAgQ29sb3IgZGVidWdCb3JkZXJDb2xvcjsKKyAgICBmbG9hdCBkZWJ1Z0JvcmRlcldpZHRoOwor
ICAgIGJvb2wgc2hvd1JlcGFpbnRDb3VudGVyOworICAgIGludCByZXBhaW50Q291bnQ7CisKICAg
ICBUZXh0dXJlTWFwcGVyUGFpbnRQYXJhbWV0ZXJzKCkKICAgICAgICAgOiBvcGFjaXR5KDEpCiAg
ICAgICAgICwgbWFzaygwKQorICAgICAgICAsIHNob3dEZWJ1Z0JvcmRlcnMoZmFsc2UpCisgICAg
ICAgICwgZGVidWdCb3JkZXJXaWR0aCgwKQorICAgICAgICAsIHNob3dSZXBhaW50Q291bnRlcihm
YWxzZSkKKyAgICAgICAgLCByZXBhaW50Q291bnQoMCkKICAgICB7IH0KIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX3ZpZXcuY3BwCmluZGV4IGRlYmI3ZjdkNzJhMGU4MWE1ODBmMjRlMDA0MGExMWIw
OGY2MDNhMTAuLjNiZDc1ZWJjMDU4N2U2MGNmYWNmOGQ4YjE3NWNlNDZlZTMxMzdkZTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a192aWV3LmNwcApAQCAtODM3LDYgKzgzNyw5IEBAIHN0YXRpYyBFd2tf
Vmlld19Qcml2YXRlX0RhdGEqIF9ld2tfdmlld19wcml2X25ldyhFd2tfVmlld19TbWFydF9EYXRh
KiBzbWFydERhdGEpCiAgICAgcHJpdi0+cGFnZVNldHRpbmdzLT5zZXRJbnRlcmFjdGl2ZUZvcm1W
YWxpZGF0aW9uRW5hYmxlZCh0cnVlKTsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
CiAgICAgcHJpdi0+cGFnZVNldHRpbmdzLT5zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxl
ZChmYWxzZSk7CisgICAgYm9vbCBzaG93RGVidWdWaXN1YWxzID0gU3RyaW5nKGdldGVudigiV0VC
S0lUX1NIT1dfQ09NUE9TSVRJTkdfREVCVUdfVklTVUFMUyIpKSA9PSAiMSI7CisgICAgcHJpdi0+
cGFnZVNldHRpbmdzLT5zZXRTaG93RGVidWdCb3JkZXJzKHNob3dEZWJ1Z1Zpc3VhbHMpOworICAg
IHByaXYtPnBhZ2VTZXR0aW5ncy0+c2V0U2hvd1JlcGFpbnRDb3VudGVyKHNob3dEZWJ1Z1Zpc3Vh
bHMpOwogI2VuZGlmCiAKICAgICB1cmwgPSBwcml2LT5wYWdlU2V0dGluZ3MtPnVzZXJTdHlsZVNo
ZWV0TG9jYXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJ2aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNw
cAppbmRleCAyOTMxMGQ0ZTlmZTQ4MTQ1NzAzZDk5NGY0ZDFlOWQwNzZhNDIwOGVlLi4yOGRkZjMx
ZDQwMTYxMzQwNjJjMWEzOGM3NDgyODU3NWFmYjM4Njk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCkBAIC0zNDM1LDYgKzM0MzUsOSBAQCBzdGF0aWMgdm9p
ZCB3ZWJraXRfd2ViX3ZpZXdfdXBkYXRlX3NldHRpbmdzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcp
CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgY29yZVNldHRpbmdzLT5z
ZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZChzZXR0aW5nc1ByaXZhdGUtPmVuYWJsZUFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmcpOworICAgIGJvb2wgc2hvd0RlYnVnVmlzdWFscyA9IFN0cmlu
ZyhnZXRlbnYoIldFQktJVF9TSE9XX0NPTVBPU0lUSU5HX0RFQlVHX1ZJU1VBTFMiKSkgPT0gIjEi
OworICAgIGNvcmVTZXR0aW5ncy0+c2V0U2hvd0RlYnVnQm9yZGVycyhzaG93RGVidWdWaXN1YWxz
KTsKKyAgICBjb3JlU2V0dGluZ3MtPnNldFNob3dSZXBhaW50Q291bnRlcihzaG93RGVidWdWaXN1
YWxzKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9x
d2Vic2V0dGluZ3MuY3BwCmluZGV4IDlkYjAxYjExZThkNDQ4ZGY1MWQ5MjQyYzcxYzdlMDU5Y2Vl
YTYyZDUuLjIzODE5ZjVhMDY2Njg5MWI2ZGY5NWYyMjkzZmU5M2JjNjkyNzZmNTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcApAQCAtMTUwLDYgKzE1MCwxMCBAQCB2b2lkIFFX
ZWJTZXR0aW5nc1ByaXZhdGU6OmFwcGx5KCkKICAgICAgICAgc2V0dGluZ3MtPnNldEFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdGb3JBbmltYXRpb25FbmFibGVkKHZhbHVlKTsKICAgICAgICAgc2V0dGlu
Z3MtPnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JWaWRlb0VuYWJsZWQoZmFsc2UpOwogICAg
ICAgICBzZXR0aW5ncy0+c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvclBsdWdpbnNFbmFibGVk
KGZhbHNlKTsKKworICAgICAgICBib29sIHNob3dEZWJ1Z1Zpc3VhbHMgPSBxZ2V0ZW52KCJRVF9X
RUJLSVRfU0hPV19DT01QT1NJVElOR19ERUJVR19WSVNVQUxTIikgPT0gIjEiOworICAgICAgICBz
ZXR0aW5ncy0+c2V0U2hvd0RlYnVnQm9yZGVycyhzaG93RGVidWdWaXN1YWxzKTsKKyAgICAgICAg
c2V0dGluZ3MtPnNldFNob3dSZXBhaW50Q291bnRlcihzaG93RGVidWdWaXN1YWxzKTsKICNlbmRp
ZgogI2lmIEVOQUJMRShXRUJHTCkKICAgICAgICAgdmFsdWUgPSBhdHRyaWJ1dGVzLnZhbHVlKFFX
ZWJTZXR0aW5nczo6V2ViR0xFbmFibGVkLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllckluZm8uaCBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJJbmZvLmgK
aW5kZXggNjUyMDU2ZGQ4MTA0MjM2NDBmY2Y2OTY5MDVhN2RlNzM3ZDZkNGI5ZS4uMmVmOTllYzA2
NzJmNzVhOTg2OTNlNWRiZDkwMWI0NzMzYjcxMTY5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllckluZm8uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExh
eWVySW5mby5oCkBAIC02OCw2ICs2OCw4IEBAIHN0cnVjdCBDb29yZGluYXRlZExheWVySW5mbyB7
CiAgICAgICAgICAgICBib29sIHByZXNlcnZlczNEIDogMTsKICAgICAgICAgICAgIGJvb2wgaXNS
b290TGF5ZXI6IDE7CiAgICAgICAgICAgICBib29sIGZpeGVkVG9WaWV3cG9ydCA6IDE7CisgICAg
ICAgICAgICBib29sIHNob3dEZWJ1Z0JvcmRlcnMgOiAxOworICAgICAgICAgICAgYm9vbCBzaG93
UmVwYWludENvdW50ZXIgOiAxOwogICAgICAgICB9OwogICAgICAgICB1bnNpZ25lZCBmbGFnczsK
ICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwCmlu
ZGV4IDMyMTUzYjQ5MTNhZWY4NzlmNmU0ODYyZTc5ZGIxZGZmZWIxNjZlOGUuLjZmMDJhNWY4N2Yz
ZTFkZWVlZjM0Nzk4MzljY2M3NjExYmU2M2Q0YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAKQEAgLTg4LDcgKzg4LDYgQEAgdm9pZCBDb29yZGluYXRl
ZEJhY2tpbmdTdG9yZTo6dXBkYXRlVGlsZSh1aW50MzJfdCBpZCwgY29uc3QgSW50UmVjdCYgc291
cmNlUmVjdCwKIHsKICAgICBIYXNoTWFwPHVpbnQzMl90LCBDb29yZGluYXRlZEJhY2tpbmdTdG9y
ZVRpbGU+OjppdGVyYXRvciBpdCA9IG1fdGlsZXMuZmluZChpZCk7CiAgICAgQVNTRVJUKGl0ICE9
IG1fdGlsZXMuZW5kKCkpOwotICAgIGl0LT52YWx1ZS5pbmNyZW1lbnRSZXBhaW50Q291bnQoKTsK
ICAgICBpdC0+dmFsdWUuc2V0QmFja0J1ZmZlcih0aWxlUmVjdCwgc291cmNlUmVjdCwgYmFja0J1
ZmZlciwgb2Zmc2V0KTsKIH0KIApAQCAtMTA5LDI3ICsxMDgsMTYgQEAgdm9pZCBDb29yZGluYXRl
ZEJhY2tpbmdTdG9yZTo6c2V0U2l6ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUpCiAg
ICAgbV9zaXplID0gc2l6ZTsKIH0KIAotc3RhdGljIGJvb2wgc2hvdWxkU2hvd1RpbGVEZWJ1Z1Zp
c3VhbHMoKQotewotI2lmIFBMQVRGT1JNKFFUKQotICAgIHJldHVybiAocWdldGVudigiUVRfV0VC
S0lUX1NIT1dfQ09NUE9TSVRJTkdfREVCVUdfVklTVUFMUyIpID09ICIxIik7Ci0jZWxpZiBVU0Uo
Q0FJUk8pCi0gICAgcmV0dXJuIChTdHJpbmcoZ2V0ZW52KCJXRUJLSVRfU0hPV19DT01QT1NJVElO
R19ERUJVR19WSVNVQUxTIikpID09ICIxIik7Ci0jZW5kaWYKLSAgICByZXR1cm4gZmFsc2U7Ci19
Ci0KIHZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnBhaW50VGlsZXNUb1RleHR1cmVNYXBw
ZXIoVmVjdG9yPFRleHR1cmVNYXBwZXJUaWxlKj4mIHRpbGVzLCBUZXh0dXJlTWFwcGVyKiB0ZXh0
dXJlTWFwcGVyLCBjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0
aWxlcy5zaXplKCk7ICsraSkgewogICAgICAgICBUZXh0dXJlTWFwcGVyVGlsZSogdGlsZSA9IHRp
bGVzW2ldOwogICAgICAgICB0aWxlLT5wYWludCh0ZXh0dXJlTWFwcGVyLCBwYXJhbWV0ZXJzLm1v
ZGVsVmlld01hdHJpeCwgcGFyYW1ldGVycy5vcGFjaXR5LCBwYXJhbWV0ZXJzLm1hc2ssIGNhbGN1
bGF0ZUV4cG9zZWRUaWxlRWRnZXMocmVjdCwgdGlsZS0+cmVjdCgpKSk7Ci0gICAgICAgIHN0YXRp
YyBib29sIHNob3VsZERlYnVnID0gc2hvdWxkU2hvd1RpbGVEZWJ1Z1Zpc3VhbHMoKTsKLSAgICAg
ICAgaWYgKCFzaG91bGREZWJ1ZykKLSAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIHRl
eHR1cmVNYXBwZXItPmRyYXdCb3JkZXIoQ29sb3IoMHhGRiwgMCwgMCksIDIsIHRpbGUtPnJlY3Qo
KSwgcGFyYW1ldGVycy5tb2RlbFZpZXdNYXRyaXgpOwotICAgICAgICB0ZXh0dXJlTWFwcGVyLT5k
cmF3UmVwYWludENvdW50ZXIoc3RhdGljX2Nhc3Q8Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxl
Kj4odGlsZSktPnJlcGFpbnRDb3VudCgpLCA4LCB0aWxlLT5yZWN0KCkubG9jYXRpb24oKSwgcGFy
YW1ldGVycy5tb2RlbFZpZXdNYXRyaXgpOworICAgICAgICBpZiAocGFyYW1ldGVycy5zaG93RGVi
dWdCb3JkZXJzKQorICAgICAgICAgICAgdGV4dHVyZU1hcHBlci0+ZHJhd0JvcmRlcihwYXJhbWV0
ZXJzLmRlYnVnQm9yZGVyQ29sb3IsIHBhcmFtZXRlcnMuZGVidWdCb3JkZXJXaWR0aCwgdGlsZS0+
cmVjdCgpLCBwYXJhbWV0ZXJzLm1vZGVsVmlld01hdHJpeCk7CisgICAgICAgIGlmIChwYXJhbWV0
ZXJzLnNob3dSZXBhaW50Q291bnRlcikKKyAgICAgICAgICAgIHRleHR1cmVNYXBwZXItPmRyYXdS
ZXBhaW50Q291bnRlcihwYXJhbWV0ZXJzLnJlcGFpbnRDb3VudCwgcGFyYW1ldGVycy5kZWJ1Z0Jv
cmRlckNvbG9yLCB0aWxlLT5yZWN0KCkubG9jYXRpb24oKSwgcGFyYW1ldGVycy5tb2RlbFZpZXdN
YXRyaXgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0
b3JlLmgKaW5kZXggZjY1NGIzNGI0YTcwYmJiM2VkMzIxY2Q3MTllNjFkZWNmNWEwZDRiMS4uYjhh
MjdkMGYwOGMzMzczZTU3Y2MwNTA1MDczMzM4NWFlOTdlNDQ2YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5n
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5oCkBAIC0zNiwxMyArMzYsMTAgQEAgcHVibGljOgog
ICAgIGV4cGxpY2l0IENvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZShmbG9hdCBzY2FsZSA9IDEp
CiAgICAgICAgIDogVGV4dHVyZU1hcHBlclRpbGUoV2ViQ29yZTo6RmxvYXRSZWN0KCkpCiAgICAg
ICAgICwgbV9zY2FsZShzY2FsZSkKLSAgICAgICAgLCBtX3JlcGFpbnRDb3VudCgwKQogICAgIHsK
ICAgICB9CiAKICAgICBpbmxpbmUgZmxvYXQgc2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3NjYWxl
OyB9Ci0gICAgaW5saW5lIHZvaWQgaW5jcmVtZW50UmVwYWludENvdW50KCkgeyArK21fcmVwYWlu
dENvdW50OyB9Ci0gICAgaW5saW5lIGludCByZXBhaW50Q291bnQoKSBjb25zdCB7IHJldHVybiBt
X3JlcGFpbnRDb3VudDsgfQogICAgIHZvaWQgc3dhcEJ1ZmZlcnMoV2ViQ29yZTo6VGV4dHVyZU1h
cHBlciopOwogICAgIHZvaWQgc2V0QmFja0J1ZmZlcihjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jiwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBi
dWZmZXIsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAKQEAgLTUyLDcgKzQ5LDYgQEAgcHJp
dmF0ZToKICAgICBXZWJDb3JlOjpJbnRSZWN0IG1fdGlsZVJlY3Q7CiAgICAgV2ViQ29yZTo6SW50
UG9pbnQgbV9zdXJmYWNlT2Zmc2V0OwogICAgIGZsb2F0IG1fc2NhbGU7Ci0gICAgaW50IG1fcmVw
YWludENvdW50OwogfTsKIAogY2xhc3MgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUgOiBwdWJsaWMg
V2ViQ29yZTo6VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJl
ZUhvc3RQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHAKaW5kZXggYmFhOGY2NTIzZGVi
ZmRlYmJjNGU1MjJiNDc1ZTE0Y2MxOGZkMmViNS4uZWY1ZTQ1ZmE5YmMyMzcwMTQ1Y2NjZDFkY2Y4
OGM2YjQwNThhYTlhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdFByb3h5LmNwcApAQCAtMjQyLDYgKzI0MiwxMSBAQCB2b2lkIENvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdFByb3h5OjpkZXN0cm95Q2FudmFzKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCkK
IH0KICNlbmRpZgogCit2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpzZXRSZXBh
aW50Q291bnQoQ29vcmRpbmF0ZWRMYXllcklEIGlkLCBpbnQgdmFsdWUpCit7CisgICAgZGlzcGF0
Y2hVcGRhdGUoYmluZCgmTGF5ZXJUcmVlUmVuZGVyZXI6OnNldFJlcGFpbnRDb3VudCwgbV9yZW5k
ZXJlci5nZXQoKSwgaWQsIHZhbHVlKSk7Cit9CisKIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0UHJveHk6OnB1cmdlQmFja2luZ1N0b3JlcygpCiB7CiAgICAgbV9zdXJmYWNlcy5jbGVhcigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmgK
aW5kZXggNzU5MWI4NDg1ZDM5ODg2ZWQ3ZWQyY2QwNWQxMTYxM2ZlNjdmYWNkMy4uZjljYTE5MmMy
YjA0MzIyNTlmODhjOWJiNWVjZTNlNDVhM2M4YTY3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oCkBAIC04NCw2ICs4NCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHN5bmNDYW52YXMoQ29vcmRpbmF0ZWRMYXllcklELCB1aW50MzJfdCBmcm9u
dEJ1ZmZlcik7CiAgICAgdm9pZCBkZXN0cm95Q2FudmFzKENvb3JkaW5hdGVkTGF5ZXJJRCk7CiAj
ZW5kaWYKKyAgICB2b2lkIHNldFJlcGFpbnRDb3VudChDb29yZGluYXRlZExheWVySUQsIGludCB2
YWx1ZSk7CiAgICAgdm9pZCBwdXJnZUJhY2tpbmdTdG9yZXMoKTsKICAgICBMYXllclRyZWVSZW5k
ZXJlciogbGF5ZXJUcmVlUmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmVyLmdldCgp
OyB9CiAgICAgdm9pZCBzZXRMYXllckFuaW1hdGlvbnMoQ29vcmRpbmF0ZWRMYXllcklELCBjb25z
dCBXZWJDb3JlOjpHcmFwaGljc0xheWVyQW5pbWF0aW9ucyYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0UHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5tZXNzYWdlcy5pbgpp
bmRleCAxMzdkYWQ4MDc1MDBmNTVlNTlkMjZjMjdjMWRlZGJhNDljNTUwOGEwLi4yNjhlZjFjZjk3
MWY3ODhmM2RhN2MxOWNjNGMxNzJiZjRmNjgzNmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQ
cm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5tZXNzYWdlcy5pbgpAQCAt
NTUsNiArNTUsOCBAQCBtZXNzYWdlcyAtPiBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eSB7
CiAgICAgRGVzdHJveUNhbnZhcyh1aW50MzJfdCBpZCkKICNlbmRpZgogCisgICAgU2V0UmVwYWlu
dENvdW50KHVpbnQzMl90IGxheWVySUQsIGludCB2YWx1ZSkKKwogICAgIFNldEJhY2tncm91bmRD
b2xvcihXZWJDb3JlOjpDb2xvciBjb2xvcikKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJU
cmVlUmVuZGVyZXIuY3BwCmluZGV4IDZlOTczMDIxNjYyYjQwZDM2YTI4NGMzZmQxZDA0OWFiNjZh
MjU5OTYuLjQzNGUxMzBiNWNlNWRkYjVlYjk5YjJhYjJiZmE5ZjY5ODRiNTI5MzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJl
ZVJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5jcHAKQEAgLTI1NSw2ICsyNTUsMTIgQEAgdm9pZCBM
YXllclRyZWVSZW5kZXJlcjo6ZGVzdHJveUNhbnZhcyhDb29yZGluYXRlZExheWVySUQgaWQpCiB9
CiAjZW5kaWYKIAordm9pZCBMYXllclRyZWVSZW5kZXJlcjo6c2V0UmVwYWludENvdW50KENvb3Jk
aW5hdGVkTGF5ZXJJRCBpZCwgaW50IHZhbHVlKQoreworICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVy
ID0gbGF5ZXJCeUlEKGlkKTsKKyAgICB0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKGxheWVy
KS0+c2V0UmVwYWludENvdW50KHZhbHVlKTsKK30KKwogdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6
c2V0TGF5ZXJDaGlsZHJlbihDb29yZGluYXRlZExheWVySUQgaWQsIGNvbnN0IFZlY3RvcjxDb29y
ZGluYXRlZExheWVySUQ+JiBjaGlsZElEcykKIHsKICAgICBHcmFwaGljc0xheWVyKiBsYXllciA9
IGxheWVyQnlJRChpZCk7CkBAIC0zMzMsNiArMzM5LDggQEAgdm9pZCBMYXllclRyZWVSZW5kZXJl
cjo6c2V0TGF5ZXJTdGF0ZShDb29yZGluYXRlZExheWVySUQgaWQsIGNvbnN0IENvb3JkaW5hdGVk
TGEKICAgICBsYXllci0+c2V0RHJhd3NDb250ZW50KGxheWVySW5mby5kcmF3c0NvbnRlbnQpOwog
ICAgIGxheWVyLT5zZXRDb250ZW50c1Zpc2libGUobGF5ZXJJbmZvLmNvbnRlbnRzVmlzaWJsZSk7
CiAgICAgdG9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcihsYXllciktPnNldEZpeGVkVG9WaWV3
cG9ydChsYXllckluZm8uZml4ZWRUb1ZpZXdwb3J0KTsKKyAgICBsYXllci0+c2V0U2hvd0RlYnVn
Qm9yZGVyKGxheWVySW5mby5zaG93RGVidWdCb3JkZXJzKTsKKyAgICBsYXllci0+c2V0U2hvd1Jl
cGFpbnRDb3VudGVyKGxheWVySW5mby5zaG93UmVwYWludENvdW50ZXIpOwogCiAgICAgaWYgKGxh
eWVySW5mby5maXhlZFRvVmlld3BvcnQpCiAgICAgICAgIG1fZml4ZWRMYXllcnMuYWRkKGlkLCBs
YXllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaAppbmRleCA1M2VjYmUzOTQ5ODE4
OTlkMmFiYmUwZjIxZDQ0NDM0NDIzOTM2NDg4Li4xYTk1OTdmZWIzMDRiNjgzYTY4NzM5NThmNWE0
NDc1MDljZGM5NTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRp
bmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmgKQEAgLTc3LDYg
Kzc3LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3luY0NhbnZhcyhDb29yZGluYXRlZExheWVySUQs
IHVpbnQzMl90IGZyb250QnVmZmVyKTsKICAgICB2b2lkIGRlc3Ryb3lDYW52YXMoQ29vcmRpbmF0
ZWRMYXllcklEKTsKICNlbmRpZgorICAgIHZvaWQgc2V0UmVwYWludENvdW50KENvb3JkaW5hdGVk
TGF5ZXJJRCwgaW50IHZhbHVlKTsKIAogICAgIHZvaWQgZGV0YWNoKCk7CiAgICAgdm9pZCBhcHBl
bmRVcGRhdGUoY29uc3QgRnVuY3Rpb248dm9pZCgpPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKaW5kZXggMTc2Mjgw
MjY4NzcwMDExOWMyNzFmYmJhZjkyNzY0MDY0NmFlNTQxMC4uNjBjZjY1OWU3ODZjYTQzNzdiN2Fi
ZjNkOTRlMTc4ZGU1ZjUwYTQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCkBAIC0zNjksNiArMzY5LDI2IEBAIHZv
aWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c1RvU29saWRDb2xvcihjb25z
dCBDb2xvciYgY29sb3IpCiAgICAgZGlkQ2hhbmdlTGF5ZXJTdGF0ZSgpOwogfQogCit2b2lkIENv
b3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0U2hvd0RlYnVnQm9yZGVyKGJvb2wgc2hvdykKK3sK
KyAgICBpZiAoaXNTaG93aW5nRGVidWdCb3JkZXIoKSA9PSBzaG93KQorICAgICAgICByZXR1cm47
CisKKyAgICBHcmFwaGljc0xheWVyOjpzZXRTaG93RGVidWdCb3JkZXIoc2hvdyk7CisKKyAgICBk
aWRDaGFuZ2VMYXllclN0YXRlKCk7Cit9CisKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
OjpzZXRTaG93UmVwYWludENvdW50ZXIoYm9vbCBzaG93KQoreworICAgIGlmIChpc1Nob3dpbmdS
ZXBhaW50Q291bnRlcigpID09IHNob3cpCisgICAgICAgIHJldHVybjsKKworICAgIEdyYXBoaWNz
TGF5ZXI6OnNldFNob3dSZXBhaW50Q291bnRlcihzaG93KTsKKworICAgIGRpZENoYW5nZUxheWVy
U3RhdGUoKTsKK30KKwogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRz
VG9JbWFnZShJbWFnZSogaW1hZ2UpCiB7CiAgICAgTmF0aXZlSW1hZ2VQdHIgbmV3TmF0aXZlSW1h
Z2VQdHIgPSBpbWFnZSA/IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIDogMDsK
QEAgLTUxNCw2ICs1MzQsOCBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c3luY0lt
YWdlQmFja2luZygpCiAgICAgICAgIH0KIAogICAgICAgICBtX2Nvb3JkaW5hdGVkSW1hZ2VCYWNr
aW5nLT5tYXJrRGlydHkoKTsKKyAgICAgICAgaWYgKGlzU2hvd2luZ1JlcGFpbnRDb3VudGVyKCkp
CisgICAgICAgICAgICBtX2Nvb3JkaW5hdG9yLT5zZXRSZXBhaW50Q291bnQoaWQoKSwgaW5jcmVt
ZW50UmVwYWludENvdW50KCkpOwogICAgIH0gZWxzZQogICAgICAgICByZWxlYXNlSW1hZ2VCYWNr
aW5nSWZOZWVkZWQoKTsKIApAQCAtNTI3LDYgKzU0OSw4IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyOjpzeW5jTGF5ZXJTdGF0ZSgpCiAgICAgICAgIHJldHVybjsKICAgICBtX3Nob3Vs
ZFN5bmNMYXllclN0YXRlID0gZmFsc2U7CiAgICAgbV9sYXllckluZm8uZml4ZWRUb1ZpZXdwb3J0
ID0gZml4ZWRUb1ZpZXdwb3J0KCk7CisgICAgbV9sYXllckluZm8uc2hvd0RlYnVnQm9yZGVycyA9
IGlzU2hvd2luZ0RlYnVnQm9yZGVyKCk7CisgICAgbV9sYXllckluZm8uc2hvd1JlcGFpbnRDb3Vu
dGVyID0gaXNTaG93aW5nUmVwYWludENvdW50ZXIoKTsKIAogICAgIG1fbGF5ZXJJbmZvLmJhY2tm
YWNlVmlzaWJsZSA9IGJhY2tmYWNlVmlzaWJpbGl0eSgpOwogICAgIG1fbGF5ZXJJbmZvLmNoaWxk
cmVuVHJhbnNmb3JtID0gY2hpbGRyZW5UcmFuc2Zvcm0oKTsKQEAgLTU3MCw2ICs1OTQsOCBAQCB2
b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c3luY0NhbnZhcygpCiAjaWYgVVNFKEdSQVBI
SUNTX1NVUkZBQ0UpCiAgICAgbV9jb29yZGluYXRvci0+c3luY0NhbnZhcyhtX2lkLCBtX2NhbnZh
c1BsYXRmb3JtTGF5ZXIpOwogI2VuZGlmCisgICAgaWYgKGlzU2hvd2luZ1JlcGFpbnRDb3VudGVy
KCkpCisgICAgICAgIG1fY29vcmRpbmF0b3ItPnNldFJlcGFpbnRDb3VudChpZCgpLCBpbmNyZW1l
bnRSZXBhaW50Q291bnQoKSk7CiAgICAgbV9jYW52YXNOZWVkc0Rpc3BsYXkgPSBmYWxzZTsKIH0K
IApAQCAtNjkzLDggKzcxOSwxMCBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dGls
ZWRCYWNraW5nU3RvcmVQYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsCiAgICAgcGFpbnRH
cmFwaGljc0xheWVyQ29udGVudHMoKmNvbnRleHQsIHJlY3QpOwogfQogCi12b2lkIENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllcjo6dGlsZWRCYWNraW5nU3RvcmVQYWludEVuZChjb25zdCBWZWN0b3I8
SW50UmVjdD4mIC8qIHVwZGF0ZWRSZWN0cyAqLykKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyOjp0aWxlZEJhY2tpbmdTdG9yZVBhaW50RW5kKGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgdXBk
YXRlZFJlY3RzKQogeworICAgIGlmIChpc1Nob3dpbmdSZXBhaW50Q291bnRlcigpICYmICF1cGRh
dGVkUmVjdHMuaXNFbXB0eSgpKQorICAgICAgICBtX2Nvb3JkaW5hdG9yLT5zZXRSZXBhaW50Q291
bnQoaWQoKSwgaW5jcmVtZW50UmVwYWludENvdW50KCkpOwogfQogCiB2b2lkIENvb3JkaW5hdGVk
R3JhcGhpY3NMYXllcjo6dGlsZWRCYWNraW5nU3RvcmVIYXNQZW5kaW5nVGlsZUNyZWF0aW9uKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyLmgKaW5kZXggNmM0MzU4NWM3MGM4ZTAzMDY1ZTRkY2FhMjdlNGYwZGEyZmEzNjk0Ni4uZTBl
ZDEyYmIyOWI1ODA2ODBlZjQzZDNiMGIxMWNkMGYyYWEyMmNmMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKQEAgLTcxLDYg
KzcxLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95Q2FudmFzKENvb3JkaW5h
dGVkTGF5ZXJJRCkgPSAwOwogI2VuZGlmCiAKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UmVwYWludENv
dW50KENvb3JkaW5hdGVkTGF5ZXJJRCwgaW50KSA9IDA7CisKICAgICB2aXJ0dWFsIHZvaWQgc2V0
TGF5ZXJBbmltYXRpb25zKENvb3JkaW5hdGVkTGF5ZXJJRCwgY29uc3QgV2ViQ29yZTo6R3JhcGhp
Y3NMYXllckFuaW1hdGlvbnMmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoTGF5ZXIo
V2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKikgPSAwOwpAQCAtMTEyLDYgKzExNCw4
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNSZWN0KGNvbnN0IEludFJl
Y3QmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNUb0ltYWdlKEltYWdl
KikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9Tb2xpZENvbG9yKGNv
bnN0IENvbG9yJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFNob3dEZWJ1Z0JvcmRl
cihib29sKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvd1JlcGFpbnRDb3VudGVy
KGJvb2wpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGREaXJlY3RseUNvbXBvc2l0
ZUltYWdlKEltYWdlKikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRl
bnRzVG9DYW52YXMoUGxhdGZvcm1MYXllciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRNYXNrTGF5ZXIoR3JhcGhpY3NMYXllciopIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggYmI5
OTU1ZWQ4MGJkNDM1MzE0MjFiZGQxNTRlZjhjMjFiNmM3YmZjYy4uY2E0NDU3YmIxMmM5OTI4Mzcy
ODZkZjQ3OGMxMmY4OTlhZjEyNTJjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCkBAIC0zOTIsNiArMzkyLDExIEBA
IHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpkZXN0cm95Q2FudmFzKENvb3JkaW5hdGVk
TGF5ZXJJRCBpZCkKIH0KICNlbmRpZgogCit2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6
c2V0UmVwYWludENvdW50KENvb3JkaW5hdGVkTGF5ZXJJRCBpZCwgaW50IHZhbHVlKQoreworICAg
IG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6
OlNldFJlcGFpbnRDb3VudChpZCwgdmFsdWUpKTsKK30KKwogI2lmIEVOQUJMRShDU1NfRklMVEVS
UykKIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzeW5jTGF5ZXJGaWx0ZXJzKENvb3Jk
aW5hdGVkTGF5ZXJJRCBpZCwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
LmgKaW5kZXggNDgxOGVkOWYwMDBmOWI4NDhkZWFmNmEyNjMxYjllNzYyMDhhNmJmNy4uOWVlMGQx
YzQ3ZGEzYmIzM2YwNjNkZTc5NjA0OWNjM2YwMjRmMTc1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKQEAgLTEwMSw2ICsx
MDEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHN5bmNDYW52YXMoQ29vcmRpbmF0ZWRM
YXllcklELCBXZWJDb3JlOjpQbGF0Zm9ybUxheWVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIGRlc3Ryb3lDYW52YXMoQ29vcmRpbmF0ZWRMYXllcklEKSBPVkVSUklERTsKICNlbmRpZgor
ICAgIHZpcnR1YWwgdm9pZCBzZXRSZXBhaW50Q291bnQoQ29vcmRpbmF0ZWRMYXllcklELCBpbnQp
OwogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hMYXllcihXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY0ZpeGVkTGF5ZXJzKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkVGlsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFRpbGUuY3BwCmluZGV4IDc5OGQyYjc1
ZjI1MGRhNjcyOWZmOWJjZTUwZTg4YzI5MTI5NDBiOGUuLmFjMGI1NjYyNmU4MWYxMGIxODc2MmI5
OGYzNjU4MDRmOGUzMjYxNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkVGlsZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRUaWxlLmNwcApAQCAtOTcsOCArOTcsMTAgQEAgVmVjdG9yPEludFJlY3Q+IENvb3JkaW5h
dGVkVGlsZTo6dXBkYXRlQmFja0J1ZmZlcigpCiAgICAgfSBlbHNlCiAgICAgICAgIG1fY2xpZW50
LT51cGRhdGVUaWxlKG1fSUQsIHVwZGF0ZUluZm8sIG1fcmVjdCk7CiAKKyAgICBWZWN0b3I8SW50
UmVjdD4gdXBkYXRlZFJlY3RzOworICAgIHVwZGF0ZWRSZWN0cy5hcHBlbmQobV9kaXJ0eVJlY3Qp
OwogICAgIG1fZGlydHlSZWN0ID0gSW50UmVjdCgpOwotICAgIHJldHVybiBWZWN0b3I8SW50UmVj
dD4oKTsKKyAgICByZXR1cm4gdXBkYXRlZFJlY3RzOwogfQogCiB2b2lkIENvb3JkaW5hdGVkVGls
ZTo6c3dhcEJhY2tCdWZmZXJUb0Zyb250KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA2OWY4ZmU5Y2ExNTFkNWUwYjNjNTQ3YWZhMTRjOWYx
MzhlNWFjZmE0Li5kMGViNmMxNTAwNTAxYTNjMWZmYWUwNDI0MTI1YThmZmE3NjcxZjY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yMzE2
LDggKzIzMTYsMTggQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJQ
cmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKICAgICBzZXR0aW5ncy0+c2V0QWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0VuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5
OjphY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZEtleSgpKSAmJiBMYXllclRyZWVIb3N0Ojpz
dXBwb3J0c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKSk7CiAgICAgc2V0dGluZ3MtPnNldEFjY2Vs
ZXJhdGVkRHJhd2luZ0VuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVu
Y2VzS2V5OjphY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkS2V5KCkpICYmIExheWVyVHJlZUhvc3Q6
OnN1cHBvcnRzQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpKTsKICAgICBzZXR0aW5ncy0+c2V0Q2Fu
dmFzVXNlc0FjY2VsZXJhdGVkRHJhd2luZyhzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJl
ZmVyZW5jZXNLZXk6OmNhbnZhc1VzZXNBY2NlbGVyYXRlZERyYXdpbmdLZXkoKSkgJiYgTGF5ZXJU
cmVlSG9zdDo6c3VwcG9ydHNBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCkpOworI2lmIFBMQVRGT1JN
KFFUKQorICAgIGJvb2wgc2hvd0RlYnVnVmlzdWFscyA9IHFnZXRlbnYoIlFUX1dFQktJVF9TSE9X
X0NPTVBPU0lUSU5HX0RFQlVHX1ZJU1VBTFMiKSA9PSAiMSI7CisgICAgc2V0dGluZ3MtPnNldFNo
b3dEZWJ1Z0JvcmRlcnMoc2hvd0RlYnVnVmlzdWFscyk7CisgICAgc2V0dGluZ3MtPnNldFNob3dS
ZXBhaW50Q291bnRlcihzaG93RGVidWdWaXN1YWxzKTsKKyNlbGlmIFVTRShDQUlSTykKKyAgICBi
b29sIHNob3dEZWJ1Z1Zpc3VhbHMgPSBTdHJpbmcoZ2V0ZW52KCJXRUJLSVRfU0hPV19DT01QT1NJ
VElOR19ERUJVR19WSVNVQUxTIikpID09ICIxIjsKKyAgICBzZXR0aW5ncy0+c2V0U2hvd0RlYnVn
Qm9yZGVycyhzaG93RGVidWdWaXN1YWxzKTsKKyAgICBzZXR0aW5ncy0+c2V0U2hvd1JlcGFpbnRD
b3VudGVyKHNob3dEZWJ1Z1Zpc3VhbHMpOworI2Vsc2UKICAgICBzZXR0aW5ncy0+c2V0U2hvd0Rl
YnVnQm9yZGVycyhzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmNv
bXBvc2l0aW5nQm9yZGVyc1Zpc2libGVLZXkoKSkpOwogICAgIHNldHRpbmdzLT5zZXRTaG93UmVw
YWludENvdW50ZXIoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojpj
b21wb3NpdGluZ1JlcGFpbnRDb3VudGVyc1Zpc2libGVLZXkoKSkpOworI2VuZGlmCiAgICAgc2V0
dGluZ3MtPnNldFNob3dUaWxlZFNjcm9sbGluZ0luZGljYXRvcihzdG9yZS5nZXRCb29sVmFsdWVG
b3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnRpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yVmlzaWJsZUtl
eSgpKSk7CiAgICAgc2V0dGluZ3MtPnNldENTU0N1c3RvbUZpbHRlckVuYWJsZWQoc3RvcmUuZ2V0
Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojpjc3NDdXN0b21GaWx0ZXJFbmFibGVk
S2V5KCkpKTsKICAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRDU1NSZWdpb25zRW5hYmxl
ZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmNzc1JlZ2lvbnNF
bmFibGVkS2V5KCkpKTsK
</data>
<flag name="review"
          id="198185"
          type_id="1"
          status="-"
          setter="noam"
    />
    <flag name="commit-queue"
          id="198186"
          type_id="3"
          status="-"
          setter="noam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180852</attachid>
            <date>2012-12-28 01:09:56 -0800</date>
            <delta_ts>2013-01-02 22:22:42 -0800</delta_ts>
            <desc>Patch : [TexMap] Refactor code related to debug border and repaint count. [1/2] </desc>
            <filename>bug-105787-20121228180704.patch</filename>
            <type>text/plain</type>
            <size>33641</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4NDg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDY2ZDMwOTcxODJiODA5
NDliOTA3ZTgzNDhhYWI5YzZlMWZjZDdhMS4uNjE1MGQ5ZGYxNjkyNmM2YWVmZGJlYThmYmY5YWZi
YTIzYTQzNzgzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU3IEBACiAyMDEyLTEyLTI4ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCisgICAgICAgIFtUZXhNYXBd
IFJlZmFjdG9yIGNvZGUgcmVsYXRlZCB0byBkZWJ1ZyBib3JkZXIgYW5kIHJlcGFpbnQgY291bnQu
IFsxLzJdCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDU3ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
bnRyb2R1Y2UgVGV4dHVyZU1hcHBlclBhaW50UGFyYW1ldGVycyB0byByZWR1Y2UgdGhlIG51bWJl
ciBvZiBwYXJhbWV0ZXJzIG9mCisgICAgICAgIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyOjpw
YWludFRvVGV4dHVyZU1hcHBlcigpLgorICAgICAgICBOb3cgd2UgY2FuIGVhc2lseSBhZGQgbmV3
IGFyZ3VtZW50cyBpbnRvIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyOjpwYWludFRvVGV4dHVy
ZU1hcHBlcigpCisgICAgICAgIHdoZW4gbmVlZGVkLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4g
UmVmYWN0b3Jpbmcgb25seS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaDoKKyAgICAgICAgKEdy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZWZs
L0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHA6CisgICAgICAgIChHcmFwaGljc0NvbnRleHQz
RFByaXZhdGU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmg6CisgICAgICAgIChHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNz
Q29udGV4dDNEUXQuY3BwOgorICAgICAgICAoR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVN
YXBwZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L01lZGlhUGxheWVyUHJpdmF0
ZVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVF0OjpwYWludFRv
VGV4dHVyZU1hcHBlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvTWVkaWFQbGF5
ZXJQcml2YXRlUXQuaDoKKyAgICAgICAgKE1lZGlhUGxheWVyUHJpdmF0ZVF0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oOgorICAgICAgICAoVGV4
dHVyZU1hcHBlclBhaW50UGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFw
cGVyUGFpbnRQYXJhbWV0ZXJzOjpUZXh0dXJlTWFwcGVyUGFpbnRQYXJhbWV0ZXJzKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJT
dXJmYWNlQmFja2luZ1N0b3JlOjpwYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OnBhaW50VG9UZXh0dXJlTWFwcGVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tp
bmdTdG9yZS5oOgorICAgICAgICAoVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZSk6CisgICAgICAg
IChUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZSk6CisgICAgICAgIChUZXh0dXJlTWFw
cGVyVGlsZWRCYWNraW5nU3RvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwOgorICAgICAgICAoVGV4dHVyZU1hcHBlclBhaW50T3B0
aW9ucyk6CisgICAgICAgICAgICBoYXMgYSBUZXh0dXJlTWFwcGVyUGFpbnRQYXJhbWV0ZXJzIGFz
IGFuIGludGVybmFsIG1lbWJlci4KKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXll
cjo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpwYWludFNl
bGYpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpwYWludFNlbGZBbmRD
aGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50U2Vs
ZkFuZENoaWxkcmVuV2l0aFJlcGxpY2EpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBl
ckxheWVyOjpwYWludFJlY3Vyc2l2ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyKToKKworMjAxMi0xMi0yOCAgSHVhbmcg
RG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKwogICAgICAgICBbVGV4TWFwXSBV
c2UgYSBwcmVtdWxpcGxpZWQgY29sb3IgaW4gVGV4dHVyZU1hcHBlckdMLgogICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1Nzg2CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRl
eCBmMWY2ZDRjOWQ0ZjBjMzNhMTQ5MTNlYzQ0YmQzMzRhZTEwNmJmMTNiLi5jMjE4YzEyOTNiNGYw
N2ZlZGIwNjQ2ZDQ1ODQ3OTg3ZDI2NzhlMTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMTItMTItMjggIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CisK
KyAgICAgICAgW1RleE1hcF0gUmVmYWN0b3IgY29kZSByZWxhdGVkIHRvIGRlYnVnIGJvcmRlciBh
bmQgcmVwYWludCBjb3VudC4gWzEvMl0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwNTc4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyB0aGUgc2lnbmF0dXJlIG9mIFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyOjpwYWludFRvVGV4dHVyZU1hcHBlcigpCisgICAgICAgIHNv
IENvb3JkaW5hdGVkQmFja2luZ1N0b3JlIGlzIGFsc28gY2hhbmdlZC4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnBhaW50VGlsZXNUb1Rl
eHR1cmVNYXBwZXIpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6
cGFpbnRUb1RleHR1cmVNYXBwZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmg6CisgICAgICAgIChDb29yZGluYXRlZEJh
Y2tpbmdTdG9yZSk6CisKIDIwMTItMTItMjYgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIFhtYXMgYnVpbGRmaXggYWZ0ZXIgcjEzODQ3
OS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwCmluZGV4IGNkMGUwOWI4NGU3
NWQxNDMxNmVjMzI3MzY3ODFkYjVhZWRlYjk2NTIuLmNhNjFkZjhkNzU4YzgxMGY0NTczMTJiN2E2
N2U0YzViMmI3Y2FlMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcApA
QCAtNzgsNyArNzgsNyBAQCBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIEdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZTo6cGxhdGZvcm1Db250ZXh0KCkKIH0KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykgJiYgVVNFKFRFWFRVUkVfTUFQUEVSKQotdm9pZCBHcmFwaGljc0NvbnRleHQz
RFByaXZhdGU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBw
ZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIG1hdHJpeCwgZmxvYXQgb3BhY2l0eSwgQml0bWFwVGV4dHVyZSogbWFzaykKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcihjb25zdCBGbG9hdFJl
Y3QmIHRhcmdldFJlY3QsIGNvbnN0IFRleHR1cmVNYXBwZXJQYWludFBhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMpCiB7CiAgICAgaWYgKCFtX2dsQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwpAQCAtODgs
MTAgKzg4LDEwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVy
ZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyCiAgICAgbV9jb250ZXh0LT5tYXJr
TGF5ZXJDb21wb3NpdGVkKCk7CiAKICAgICAvLyBGSVhNRTogV2UgZG8gbm90IHN1cHBvcnQgbWFz
ayBmb3IgdGhlIG1vbWVudCB3aXRoIFRleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci4KLSAgICBpZiAo
dGV4dHVyZU1hcHBlci0+YWNjZWxlcmF0aW9uTW9kZSgpICE9IFRleHR1cmVNYXBwZXI6Ok9wZW5H
TE1vZGUpIHsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0gdGV4dHVyZU1hcHBl
ci0+Z3JhcGhpY3NDb250ZXh0KCk7CisgICAgaWYgKHBhcmFtZXRlcnMudGV4dHVyZU1hcHBlci0+
YWNjZWxlcmF0aW9uTW9kZSgpICE9IFRleHR1cmVNYXBwZXI6Ok9wZW5HTE1vZGUpIHsKKyAgICAg
ICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0gcGFyYW1ldGVycy50ZXh0dXJlTWFwcGVyLT5n
cmFwaGljc0NvbnRleHQoKTsKICAgICAgICAgY29udGV4dC0+c2F2ZSgpOwotICAgICAgICBjb250
ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+c2V0R2xvYmFsQWxwaGEob3BhY2l0eSk7CisgICAgICAg
IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5zZXRHbG9iYWxBbHBoYShwYXJhbWV0ZXJzLm9w
YWNpdHkpOwogCiAgICAgICAgIGNvbnN0IGludCBoZWlnaHQgPSBtX2NvbnRleHQtPm1fY3VycmVu
dEhlaWdodDsKICAgICAgICAgY29uc3QgaW50IHdpZHRoID0gbV9jb250ZXh0LT5tX2N1cnJlbnRX
aWR0aDsKQEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6
cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlcgogICAgICAg
ICBjb250ZXh0LT50cmFuc2xhdGUoMCwgaGVpZ2h0KTsKICAgICAgICAgY29udGV4dC0+c2NhbGUo
RmxvYXRTaXplKDEsIC0xKSk7CiAKLSAgICAgICAgY29udGV4dC0+Y29uY2F0Q1RNKG1hdHJpeC50
b0FmZmluZVRyYW5zZm9ybSgpKTsKKyAgICAgICAgY29udGV4dC0+Y29uY2F0Q1RNKHBhcmFtZXRl
cnMudHJhbnNmb3JtLnRvQWZmaW5lVHJhbnNmb3JtKCkpOwogCiAgICAgICAgIG1fY29udGV4dC0+
cmVhZFJlbmRlcmluZ1Jlc3VsdHMocGl4ZWxzLmdldCgpLCB0b3RhbEJ5dGVzKTsKIApAQCAtMTM5
LDEwICsxMzksMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBhaW50VG9UZXh0
dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIKICAgICAgICAgICAgIHByZXZp
b3VzQWN0aXZlQ29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgfQogCi0gICAgVGV4
dHVyZU1hcHBlckdMKiB0ZXhtYXBHTCA9IHN0YXRpY19jYXN0PFRleHR1cmVNYXBwZXJHTCo+KHRl
eHR1cmVNYXBwZXIpOworICAgIFRleHR1cmVNYXBwZXJHTCogdGV4bWFwR0wgPSBzdGF0aWNfY2Fz
dDxUZXh0dXJlTWFwcGVyR0wqPihwYXJhbWV0ZXJzLnRleHR1cmVNYXBwZXIpOwogICAgIFRleHR1
cmVNYXBwZXJHTDo6RmxhZ3MgZmxhZ3MgPSBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZEZsaXBUZXh0
dXJlIHwgKG1fY29udGV4dC0+bV9hdHRycy5hbHBoYSA/IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxk
QmxlbmQgOiAwKTsKICAgICBJbnRTaXplIHRleHR1cmVTaXplKG1fY29udGV4dC0+bV9jdXJyZW50
V2lkdGgsIG1fY29udGV4dC0+bV9jdXJyZW50SGVpZ2h0KTsKLSAgICB0ZXhtYXBHTC0+ZHJhd1Rl
eHR1cmUobV9jb250ZXh0LT5tX3RleHR1cmUsIGZsYWdzLCB0ZXh0dXJlU2l6ZSwgdGFyZ2V0UmVj
dCwgbWF0cml4LCBvcGFjaXR5LCBtYXNrKTsKKyAgICB0ZXhtYXBHTC0+ZHJhd1RleHR1cmUobV9j
b250ZXh0LT5tX3RleHR1cmUsIGZsYWdzLCB0ZXh0dXJlU2l6ZSwgdGFyZ2V0UmVjdCwgcGFyYW1l
dGVycy50cmFuc2Zvcm0sIHBhcmFtZXRlcnMub3BhY2l0eSwgcGFyYW1ldGVycy5tYXNrLmdldCgp
KTsKICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkdfR0wpCiB9CiAjZW5kaWYg
Ly8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRFBy
aXZhdGUuaAppbmRleCA2OWRhZDY3NTQ3MjJhYzdhODgyY2E4NzYxNWFiODg1NDk3OWFmYmM2Li44
MzJjZTM0MDNmNDU0Y2ZlZWQyMzU5YzI0MzIzY2ViNGIwOWZhZjI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRFByaXZh
dGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHQzRFByaXZhdGUuaApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgR3JhcGhp
Y3NDb250ZXh0M0Q6OlJlbmRlclN0eWxlIHJlbmRlclN0eWxlKCkgeyByZXR1cm4gbV9yZW5kZXJT
dHlsZTsgfQogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBVU0UoVEVYVFVS
RV9NQVBQRVIpCi0gICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVN
YXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKTsKKyAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXQsIGNvbnN0IFRl
eHR1cmVNYXBwZXJQYWludFBhcmFtZXRlcnMmKTsKICNlbmRpZgogCiBwcml2YXRlOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcAppbmRleCBjODA3OTY2MzM3ZjFmODk4Zjc0ZjczMGJl
YmVjN2VlNDdkM2EyZjViLi4yYjI2OTc2MjFiOGQyNDBkYjBkNTExZDkxYmJiMzY0ZjY3YjU4Yzgy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcApAQCAtMTE2LDcgKzExNiw3IEBA
IGJvb2wgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjptYWtlQ29udGV4dEN1cnJlbnQoKQogfQog
CiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQotdm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZh
dGU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3Qm
IC8qIHRhcmdldCAqLywgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCAvKiBvcGFj
aXR5ICovLCBCaXRtYXBUZXh0dXJlKiAvKiBtYXNrICovKQordm9pZCBHcmFwaGljc0NvbnRleHQz
RFByaXZhdGU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKGNvbnN0IEZsb2F0UmVjdCYgLyogdGFyZ2V0
ICovLCBjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRQYXJhbWV0ZXJzJikKIHsKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZWZsL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oCmluZGV4IDJlYjJmNzU4
NzFkMGRjZDkxNTJhMTg2NWJhZjA1NWU5NTQ2MjA0YjUuLjk3YzNhMjBiNjRjYTlhMjEwZjI0MGIw
MTM0ZWFmY2ZmOTcyNjY1NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKQEAgLTUx
LDcgKzUxLDcgQEAgcHVibGljOgogICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBj
b25zdDsKICNlbmRpZgogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKLSAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYg
dGFyZ2V0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHksIEJpdG1h
cFRleHR1cmUqIG1hc2spOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihj
b25zdCBGbG9hdFJlY3QmIHRhcmdldCwgY29uc3QgVGV4dHVyZU1hcHBlclBhaW50UGFyYW1ldGVy
cyYpOwogI2VuZGlmCiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCiAgICAgdmlydHVhbCBJbnRT
aXplIHBsYXRmb3JtTGF5ZXJTaXplKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCmluZGV4
IDYzZDMxMjU1MWRmOWQyYTg1MTJkMDY4NWQ4ZTRjMGQwMzUwNzlmMWMuLjI1NTk4NjNmYTliYTgy
YWRmODc2NjE2ODlhZGRkODhiNDA1YWY5NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCkBAIC02
NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICB+R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKCk7CiAK
ICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgdmlydHVhbCB2b2lkIHBhaW50
VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldCwg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJl
KiBtYXNrKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoY29uc3QgRmxv
YXRSZWN0JiB0YXJnZXQsIGNvbnN0IFRleHR1cmVNYXBwZXJQYWludFBhcmFtZXRlcnMmKTsKICNl
bmRpZgogI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQogICAgIHZpcnR1YWwgSW50U2l6ZSBwbGF0
Zm9ybUxheWVyU2l6ZSgpIGNvbnN0OwpAQCAtMjA4LDEyICsyMDgsMTIgQEAgc3RhdGljIGlubGlu
ZSBxdWludDMyIHN3YXBCZ3JUb1JnYihxdWludDMyIHBpeGVsKQogfQogCiAjaWYgVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKQotdm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBhaW50
VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0
UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgZmxv
YXQgb3BhY2l0eSwgQml0bWFwVGV4dHVyZSogbWFzaykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3Qs
IGNvbnN0IFRleHR1cmVNYXBwZXJQYWludFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7CiAgICAg
bV9jb250ZXh0LT5tYXJrTGF5ZXJDb21wb3NpdGVkKCk7CiAgICAgYmxpdE11bHRpc2FtcGxlRnJh
bWVidWZmZXJBbmRSZXN0b3JlQ29udGV4dCgpOwogCi0gICAgaWYgKHRleHR1cmVNYXBwZXItPmFj
Y2VsZXJhdGlvbk1vZGUoKSA9PSBUZXh0dXJlTWFwcGVyOjpPcGVuR0xNb2RlKSB7CisgICAgaWYg
KHBhcmFtZXRlcnMudGV4dHVyZU1hcHBlci0+YWNjZWxlcmF0aW9uTW9kZSgpID09IFRleHR1cmVN
YXBwZXI6Ok9wZW5HTE1vZGUpIHsKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICAgICAg
Ly8gQ0dMIG9ubHkgcHJvdmlkZXMgdXMgdGhlIGNvbnRleHQsIGJ1dCBub3QgdGhlIHZpZXcgdGhl
IGNvbnRleHQgaXMgY3VycmVudGx5IGJvdW5kIHRvLgogICAgICAgICAvLyBUbyBtYWtlIHN1cmUg
dGhlIGNvbnRleHQgaXMgYm91bmQgdGhlIHRoZSByaWdodCBzdXJmYWNlIHdlIGhhdmUgdG8gZG8g
YSBtYWtlQ3VycmVudCB0aHJvdWdoIFFPcGVuR0wgYWdhaW4uCkBAIC0yMjksMTcgKzIyOSwxNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4
dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlcgogICAgICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMg
Y29kZSBhcyBzb29uIGFzIEdyYXBoaWNzU3VyZmFjZU1hYyBtYWtlcyB1c2Ugb2YgTlNPcGVuR0wu
CiAgICAgICAgIGN1cnJlbnRDb250ZXh0LT5tYWtlQ3VycmVudChjdXJyZW50U3VyZmFjZSk7CiAK
LSAgICAgICAgVGV4dHVyZU1hcHBlckdMKiB0ZXhtYXBHTCA9IHN0YXRpY19jYXN0PFRleHR1cmVN
YXBwZXJHTCo+KHRleHR1cmVNYXBwZXIpOwotICAgICAgICBtX2dyYXBoaWNzU3VyZmFjZS0+cGFp
bnRUb1RleHR1cmVNYXBwZXIodGV4bWFwR0wsIHRhcmdldFJlY3QsIG1hdHJpeCwgb3BhY2l0eSwg
bWFzayk7CisgICAgICAgIFRleHR1cmVNYXBwZXJHTCogdGV4bWFwR0wgPSBzdGF0aWNfY2FzdDxU
ZXh0dXJlTWFwcGVyR0wqPihwYXJhbWV0ZXJzLnRleHR1cmVNYXBwZXIpOworICAgICAgICBtX2dy
YXBoaWNzU3VyZmFjZS0+cGFpbnRUb1RleHR1cmVNYXBwZXIodGV4bWFwR0wsIHRhcmdldFJlY3Qs
IHBhcmFtZXRlcnMudHJhbnNmb3JtLCBwYXJhbWV0ZXJzLm9wYWNpdHksIHBhcmFtZXRlcnMubWFz
ay5nZXQoKSk7CiAjZW5kaWYKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCA9IHRleHR1cmVNYXBwZXItPmdyYXBoaWNzQ29udGV4dCgpOworICAg
IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9IHBhcmFtZXRlcnMudGV4dHVyZU1hcHBlci0+Z3Jh
cGhpY3NDb250ZXh0KCk7CiAgICAgUVBhaW50ZXIqIHBhaW50ZXIgPSBjb250ZXh0LT5wbGF0Zm9y
bUNvbnRleHQoKTsKICAgICBwYWludGVyLT5zYXZlKCk7Ci0gICAgcGFpbnRlci0+c2V0VHJhbnNm
b3JtKG1hdHJpeCk7Ci0gICAgcGFpbnRlci0+c2V0T3BhY2l0eShvcGFjaXR5KTsKKyAgICBwYWlu
dGVyLT5zZXRUcmFuc2Zvcm0ocGFyYW1ldGVycy50cmFuc2Zvcm0pOworICAgIHBhaW50ZXItPnNl
dE9wYWNpdHkocGFyYW1ldGVycy5vcGFjaXR5KTsKIAogICAgIGNvbnN0IGludCBoZWlnaHQgPSBt
X2NvbnRleHQtPm1fY3VycmVudEhlaWdodDsKICAgICBjb25zdCBpbnQgd2lkdGggPSBtX2NvbnRl
eHQtPm1fY3VycmVudFdpZHRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvcXQvTWVkaWFQbGF5ZXJQcml2YXRlUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvTWVkaWFQbGF5ZXJQcml2YXRlUXQuY3BwCmluZGV4IGUwODNlMjk3
MzJiYmI3OGYwZmU1MjM5MTMyYWU1NGI3NDM0YzAwM2EuLjJkYzFmOGEyZDE1YTIwNzg1ZmY2Nzg4
NjYxNjk5M2M5OTRmZjY2NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3F0L01lZGlhUGxheWVyUHJpdmF0ZVF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9xdC9NZWRpYVBsYXllclByaXZhdGVRdC5jcHAKQEAgLTY0NSw3ICs2
NDUsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVF0OjpwYWludEN1cnJlbnRGcmFtZUluQ29u
dGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsCiB9CiAKICNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVF0OjpwYWludFRvVGV4dHVyZU1h
cHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdl
dFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIGZsb2F0IG9wYWNpdHks
IEJpdG1hcFRleHR1cmUqKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVRdDo6cGFpbnRUb1RleHR1
cmVNYXBwZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUZXh0dXJlTWFwcGVy
UGFpbnRQYXJhbWV0ZXJzJikKIHsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvTWVkaWFQbGF5ZXJQcml2YXRlUXQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L01lZGlhUGxheWVyUHJpdmF0ZVF0LmgKaW5kZXgg
OGUzMWM5ZDZkYzgxM2Q2NDM5ZTMyMjRjMTUyMWVlMDAzMDQwZjU5NS4uYjk1YTVlMDU1MGRjMzBm
MDM1ZmIwODUyN2QzMzY5OGY2ZjJmNGQ5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvTWVkaWFQbGF5ZXJQcml2YXRlUXQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9NZWRpYVBsYXllclByaXZhdGVRdC5oCkBAIC0xMDks
NyArMTA5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBhY2NlbGVyYXRlZFJlbmRlcmlu
Z1N0YXRlQ2hhbmdlZCgpIHsgfQogICAgIC8vIENvbnN0LWNhc3RpbmcgaGVyZSBpcyBzYWZlLCBz
aW5jZSBhbGwgb2YgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIncyBmdW5jdGlvbnMgYXJlIGNv
bnN0LmcKICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCB7
IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1
cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiwgZmxvYXQgb3BhY2l0eSwgQml0bWFwVGV4dHVyZSogbWFzayk7CisgICAgdmly
dHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVj
dCwgY29uc3QgVGV4dHVyZU1hcHBlclBhaW50UGFyYW1ldGVycyYpOwogI2VuZGlmCiAKICAgICB2
aXJ0dWFsIFBsYXRmb3JtTWVkaWEgcGxhdGZvcm1NZWRpYSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmgK
aW5kZXggYzcyNDFhNmM5YTcyMmE2NDUyZjdjMThjOWQ2Njk3MTI3NjY5MzY2Yi4uYzMzY2Q0MDRj
ZDliZjIzODJjMjViNmNjYzY5MjQzZjEwMWQwODZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oCkBAIC01Miw2
ICs1MiwxOSBAQCBjbGFzcyBDdXN0b21GaWx0ZXJQcm9ncmFtOwogY2xhc3MgR3JhcGhpY3NMYXll
cjsKIGNsYXNzIFRleHR1cmVNYXBwZXI7CiAKK2NsYXNzIFRleHR1cmVNYXBwZXJQYWludFBhcmFt
ZXRlcnMgeworcHVibGljOgorICAgIFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXI7CisgICAg
VHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtOworICAgIGZsb2F0IG9wYWNpdHk7CisgICAg
UmVmUHRyPEJpdG1hcFRleHR1cmU+IG1hc2s7CisKKyAgICBUZXh0dXJlTWFwcGVyUGFpbnRQYXJh
bWV0ZXJzKCkKKyAgICAgICAgOiB0ZXh0dXJlTWFwcGVyKDApCisgICAgICAgICwgb3BhY2l0eSgx
KQorICAgIHsgfQorfTsKKwogLy8gQSAyRCB0ZXh0dXJlIHRoYXQgY2FuIGJlIHRoZSB0YXJnZXQg
b2Ygc29mdHdhcmUgb3IgR0wgcmVuZGVyaW5nLgogY2xhc3MgQml0bWFwVGV4dHVyZSA6IHB1Ymxp
YyBSZWZDb3VudGVkPEJpdG1hcFRleHR1cmU+IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0
b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyQmFja2luZ1N0b3JlLmNwcAppbmRleCBlODk5MjUzMWIyODdjNWI1OTc3OWU2NDc2ZTgw
MWI4YjY5OTVjMmM3Li45N2Y3MTBjN2UwYWUxN2JkODkxOTRjNjJmZTFmMGMxN2M0YTg5YWYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuY3BwCkBAIC01MiwxMCArNTIs
MTAgQEAgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tp
bmdTdG9yZTo6dGV4dHVyZSgpIGNvbnN0CiAgICAgcmV0dXJuIGVtcHR5VGV4dHVyZTsKIH0KIAot
dm9pZCBUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVNYXBw
ZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRS
ZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5
LCBCaXRtYXBUZXh0dXJlKiBtYXNrKQordm9pZCBUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdT
dG9yZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBj
b25zdCBUZXh0dXJlTWFwcGVyUGFpbnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogICAgIGlm
IChtX2dyYXBoaWNzU3VyZmFjZSkKLSAgICAgICAgbV9ncmFwaGljc1N1cmZhY2UtPnBhaW50VG9U
ZXh0dXJlTWFwcGVyKHRleHR1cmVNYXBwZXIsIHRhcmdldFJlY3QsIHRyYW5zZm9ybSwgb3BhY2l0
eSwgbWFzayk7CisgICAgICAgIG1fZ3JhcGhpY3NTdXJmYWNlLT5wYWludFRvVGV4dHVyZU1hcHBl
cihwYXJhbWV0ZXJzLnRleHR1cmVNYXBwZXIsIHRhcmdldFJlY3QsIHBhcmFtZXRlcnMudHJhbnNm
b3JtLCBwYXJhbWV0ZXJzLm9wYWNpdHksIHBhcmFtZXRlcnMubWFzay5nZXQoKSk7CiB9CiAjZW5k
aWYKIApAQCAtMTMzLDE1ICsxMzMsMTUgQEAgdW5zaWduZWQgVGV4dHVyZU1hcHBlckJhY2tpbmdT
dG9yZTo6Y2FsY3VsYXRlRXhwb3NlZFRpbGVFZGdlcyhjb25zdCBGbG9hdFJlY3QmIHQKICAgICBy
ZXR1cm4gZXhwb3NlZEVkZ2VzOwogfQogCi12b2lkIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdT
dG9yZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwg
Y29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
dHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKQordm9pZCBUZXh0
dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKGNvbnN0IEZs
b2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVGV4dHVyZU1hcHBlclBhaW50UGFyYW1ldGVycyYg
cGFyYW1ldGVycykKIHsKLSAgICB1cGRhdGVDb250ZW50c0Zyb21JbWFnZUlmTmVlZGVkKHRleHR1
cmVNYXBwZXIpOwotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3JtID0g
dHJhbnNmb3JtOworICAgIHVwZGF0ZUNvbnRlbnRzRnJvbUltYWdlSWZOZWVkZWQocGFyYW1ldGVy
cy50ZXh0dXJlTWFwcGVyKTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhZGp1c3RlZFRyYW5z
Zm9ybSA9IHBhcmFtZXRlcnMudHJhbnNmb3JtOwogICAgIGFkanVzdGVkVHJhbnNmb3JtLm11bHRp
cGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4OjpyZWN0VG9SZWN0KHJlY3QoKSwgdGFyZ2V0UmVjdCkp
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90aWxlcy5zaXplKCk7ICsraSkgewotICAg
ICAgICBtX3RpbGVzW2ldLnBhaW50KHRleHR1cmVNYXBwZXIsIGFkanVzdGVkVHJhbnNmb3JtLCBv
cGFjaXR5LCBtYXNrLCBjYWxjdWxhdGVFeHBvc2VkVGlsZUVkZ2VzKHJlY3QoKSwgbV90aWxlc1tp
XS5yZWN0KCkpKTsKKyAgICAgICAgbV90aWxlc1tpXS5wYWludChwYXJhbWV0ZXJzLnRleHR1cmVN
YXBwZXIsIGFkanVzdGVkVHJhbnNmb3JtLCBwYXJhbWV0ZXJzLm9wYWNpdHksIHBhcmFtZXRlcnMu
bWFzay5nZXQoKSwgY2FsY3VsYXRlRXhwb3NlZFRpbGVFZGdlcyhyZWN0KCksIG1fdGlsZXNbaV0u
cmVjdCgpKSk7CiAgICAgICAgIGlmIChtX2RyYXdzRGVidWdCb3JkZXJzKQotICAgICAgICAgICAg
dGV4dHVyZU1hcHBlci0+ZHJhd0JvcmRlcihtX2RlYnVnQm9yZGVyQ29sb3IsIG1fZGVidWdCb3Jk
ZXJXaWR0aCwgbV90aWxlc1tpXS5yZWN0KCksIGFkanVzdGVkVHJhbnNmb3JtKTsKKyAgICAgICAg
ICAgIHBhcmFtZXRlcnMudGV4dHVyZU1hcHBlci0+ZHJhd0JvcmRlcihtX2RlYnVnQm9yZGVyQ29s
b3IsIG1fZGVidWdCb3JkZXJXaWR0aCwgbV90aWxlc1tpXS5yZWN0KCksIGFkanVzdGVkVHJhbnNm
b3JtKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oCmlu
ZGV4IDBkZDJkZjRiMTk4YmQzMTFmZDQxYzU1YTMzNzcyMTg0Y2QxNGIzNGEuLjY0YjEzMGRkZGYz
NDEyMDliODAxMzY0MGI2Zjc0MTg0YjI0ZDU1ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJC
YWNraW5nU3RvcmUuaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBHcmFwaGljc0xheWVyOwogY2xh
c3MgVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZSA6IHB1YmxpYyBUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllciwgcHVibGljIFJlZkNvdW50ZWQ8VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZT4gewog
cHVibGljOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkg
Y29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJl
TWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBm
bG9hdCwgQml0bWFwVGV4dHVyZSopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1
cmVNYXBwZXIoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVGV4dHVyZU1hcHBlclBhaW50UGFyYW1l
dGVycyYpID0gMDsKICAgICB2aXJ0dWFsIH5UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlKCkgeyB9
CiAKIHByb3RlY3RlZDoKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0R3Jh
cGhpY3NTdXJmYWNlKFBhc3NSZWZQdHI8R3JhcGhpY3NTdXJmYWNlPik7CiAgICAgdm9pZCBzd2Fw
QnVmZmVyc0lmTmVlZGVkKHVpbnQzMl90IGZyb250QnVmZmVyKTsKICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBw
YWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCwgQml0bWFwVGV4dHVyZSopOworICAgIHZp
cnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBU
ZXh0dXJlTWFwcGVyUGFpbnRQYXJhbWV0ZXJzJik7CiAgICAgdmlydHVhbCB+VGV4dHVyZU1hcHBl
clN1cmZhY2VCYWNraW5nU3RvcmUoKSB7IH0KIAogcHJpdmF0ZToKQEAgLTkzLDcgKzkzLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgflRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZSgpIHsg
fQogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUoKSBjb25z
dCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVy
ZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jiwg
ZmxvYXQsIEJpdG1hcFRleHR1cmUqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRU
b1RleHR1cmVNYXBwZXIoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVGV4dHVyZU1hcHBlclBhaW50
UGFyYW1ldGVycyYpIE9WRVJSSURFOwogICAgIHZvaWQgdXBkYXRlQ29udGVudHMoVGV4dHVyZU1h
cHBlciosIEltYWdlKiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW50UmVjdCYsIEJpdG1hcFRl
eHR1cmU6OlVwZGF0ZUNvbnRlbnRzRmxhZyk7CiAgICAgdm9pZCB1cGRhdGVDb250ZW50cyhUZXh0
dXJlTWFwcGVyKiwgR3JhcGhpY3NMYXllciosIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEludFJl
Y3QmLCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDb250ZW50c0ZsYWcpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyTGF5ZXIuY3BwCmluZGV4IDMzNDY3NGU0ODRmNTBkNGRjZmMwMmQ0Y2U2MTU5NDEwODFkMjg2
ZDYuLjI1YmI3Y2JhMWJhOTIxNTY1NTQ3YjcyNjY4NDk1OGVkN2Y2Mzg1YjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyTGF5ZXIuY3BwCkBAIC0yOSwxNSArMjksOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zIHsKIHB1YmxpYzoKICAgICBSZWZQdHI8
Qml0bWFwVGV4dHVyZT4gc3VyZmFjZTsKLSAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gbWFzazsK
LSAgICBmbG9hdCBvcGFjaXR5OwotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybTsK
ICAgICBJbnRTaXplIG9mZnNldDsKLSAgICBUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyOwot
ICAgIFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMoKQotICAgICAgICA6IG9wYWNpdHkoMSkKLSAg
ICAgICAgLCB0ZXh0dXJlTWFwcGVyKDApCi0gICAgeyB9CisgICAgVGV4dHVyZU1hcHBlclBhaW50
UGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogfTsKIAogVGV4dHVyZU1hcHBlckxheWVyKiB0b1RleHR1
cmVNYXBwZXJMYXllcihHcmFwaGljc0xheWVyKiBsYXllcikKQEAgLTk5LDggKzkyLDggQEAgdm9p
ZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50KCkKICAgICBjb21wdXRlVHJhbnNmb3Jtc1JlY3Vy
c2l2ZSgpOwogCiAgICAgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyBvcHRpb25zOwotICAgIG9w
dGlvbnMudGV4dHVyZU1hcHBlciA9IG1fdGV4dHVyZU1hcHBlcjsKLSAgICBvcHRpb25zLnRleHR1
cmVNYXBwZXItPmJpbmRTdXJmYWNlKDApOworICAgIG9wdGlvbnMucGFyYW1ldGVycy50ZXh0dXJl
TWFwcGVyID0gbV90ZXh0dXJlTWFwcGVyOworICAgIG9wdGlvbnMucGFyYW1ldGVycy50ZXh0dXJl
TWFwcGVyLT5iaW5kU3VyZmFjZSgwKTsKICAgICBwYWludFJlY3Vyc2l2ZShvcHRpb25zKTsKIH0K
IApAQCAtMTEyLDExICsxMDUsMTEgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50U2Vs
Zihjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBvcHRpb25zKQogICAgIC8vIFdlIGFw
cGx5IHRoZSBmb2xsb3dpbmcgdHJhbnNmb3JtIHRvIGNvbXBlbnNhdGUgZm9yIHBhaW50aW5nIGlu
dG8gYSBzdXJmYWNlLCBhbmQgdGhlbiBhcHBseSB0aGUgb2Zmc2V0IHNvIHRoYXQgdGhlIHBhaW50
aW5nIGZpdHMgaW4gdGhlIHRhcmdldCByZWN0LgogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRy
YW5zZm9ybTsKICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKG9wdGlvbnMub2Zmc2V0LndpZHRoKCks
IG9wdGlvbnMub2Zmc2V0LmhlaWdodCgpKTsKLSAgICB0cmFuc2Zvcm0ubXVsdGlwbHkob3B0aW9u
cy50cmFuc2Zvcm0pOworICAgIHRyYW5zZm9ybS5tdWx0aXBseShvcHRpb25zLnBhcmFtZXRlcnMu
dHJhbnNmb3JtKTsKICAgICB0cmFuc2Zvcm0ubXVsdGlwbHkobV9lZmZlY3RpdmVUcmFuc2Zvcm0u
Y29tYmluZWQoKSk7CiAKLSAgICBmbG9hdCBvcGFjaXR5ID0gb3B0aW9ucy5vcGFjaXR5OwotICAg
IFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBtYXNrID0gb3B0aW9ucy5tYXNrOworICAgIFRleHR1cmVN
YXBwZXJQYWludFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9IG9wdGlvbnMucGFyYW1ldGVyczsKKyAg
ICBwYXJhbWV0ZXJzLnRyYW5zZm9ybSA9IHRyYW5zZm9ybTsKIAogICAgIGlmIChtX3N0YXRlLnNv
bGlkQ29sb3IuaXNWYWxpZCgpICYmICFtX3N0YXRlLmNvbnRlbnRzUmVjdC5pc0VtcHR5KCkpIHsK
ICAgICAgICAgaWYgKCFtX3N0YXRlLnNvbGlkQ29sb3IuYWxwaGEoKSkKQEAgLTEyNSwyMCArMTE4
LDIwIEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpwYWludFNlbGYoY29uc3QgVGV4dHVyZU1h
cHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucykKICAgICAgICAgQ29sb3IgY29sb3IgPSBtX3N0YXRl
LnNvbGlkQ29sb3I7CiAgICAgICAgIGZsb2F0IHIsIGcsIGIsIGE7CiAgICAgICAgIGNvbG9yLmdl
dFJHQkEociwgZywgYiwgYSk7Ci0gICAgICAgIGNvbG9yID0gQ29sb3IociAqIG9wYWNpdHksIGcg
KiBvcGFjaXR5LCBiICogb3BhY2l0eSwgYSAqIG9wYWNpdHkpOwotICAgICAgICBvcHRpb25zLnRl
eHR1cmVNYXBwZXItPmRyYXdTb2xpZENvbG9yKG1fc3RhdGUuY29udGVudHNSZWN0LCB0cmFuc2Zv
cm0sIGNvbG9yKTsKKyAgICAgICAgY29sb3IgPSBDb2xvcihyICogcGFyYW1ldGVycy5vcGFjaXR5
LCBnICogcGFyYW1ldGVycy5vcGFjaXR5LCBiICogcGFyYW1ldGVycy5vcGFjaXR5LCBhICogcGFy
YW1ldGVycy5vcGFjaXR5KTsKKyAgICAgICAgb3B0aW9ucy5wYXJhbWV0ZXJzLnRleHR1cmVNYXBw
ZXItPmRyYXdTb2xpZENvbG9yKG1fc3RhdGUuY29udGVudHNSZWN0LCBwYXJhbWV0ZXJzLnRyYW5z
Zm9ybSwgY29sb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKG1fYmFja2lu
Z1N0b3JlKSB7CiAgICAgICAgIEFTU0VSVChtX3N0YXRlLmRyYXdzQ29udGVudCAmJiBtX3N0YXRl
LmNvbnRlbnRzVmlzaWJsZSAmJiAhbV9zdGF0ZS5zaXplLmlzRW1wdHkoKSk7CiAgICAgICAgIEFT
U0VSVCghbGF5ZXJSZWN0KCkuaXNFbXB0eSgpKTsKLSAgICAgICAgbV9iYWNraW5nU3RvcmUtPnBh
aW50VG9UZXh0dXJlTWFwcGVyKG9wdGlvbnMudGV4dHVyZU1hcHBlciwgbGF5ZXJSZWN0KCksIHRy
YW5zZm9ybSwgb3BhY2l0eSwgbWFzay5nZXQoKSk7CisgICAgICAgIG1fYmFja2luZ1N0b3JlLT5w
YWludFRvVGV4dHVyZU1hcHBlcihsYXllclJlY3QoKSwgcGFyYW1ldGVycyk7CiAgICAgfQogCiAg
ICAgaWYgKG1fY29udGVudHNMYXllcikgewogICAgICAgICBBU1NFUlQoIWxheWVyUmVjdCgpLmlz
RW1wdHkoKSk7Ci0gICAgICAgIG1fY29udGVudHNMYXllci0+cGFpbnRUb1RleHR1cmVNYXBwZXIo
b3B0aW9ucy50ZXh0dXJlTWFwcGVyLCBtX3N0YXRlLmNvbnRlbnRzUmVjdCwgdHJhbnNmb3JtLCBv
cGFjaXR5LCBtYXNrLmdldCgpKTsKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5wYWludFRvVGV4
dHVyZU1hcHBlcihtX3N0YXRlLmNvbnRlbnRzUmVjdCwgcGFyYW1ldGVycyk7CiAgICAgfQogfQog
CkBAIC0xNjMsMTMgKzE1NiwxMyBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxm
QW5kQ2hpbGRyZW4oY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgbwogCiAgICAgYm9v
bCBzaG91bGRDbGlwID0gbV9zdGF0ZS5tYXNrc1RvQm91bmRzICYmICFtX3N0YXRlLnByZXNlcnZl
czNEOwogICAgIGlmIChzaG91bGRDbGlwKQotICAgICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXIt
PmJlZ2luQ2xpcChUcmFuc2Zvcm1hdGlvbk1hdHJpeChvcHRpb25zLnRyYW5zZm9ybSkubXVsdGlw
bHkobV9lZmZlY3RpdmVUcmFuc2Zvcm0uY29tYmluZWQoKSksIGxheWVyUmVjdCgpKTsKKyAgICAg
ICAgb3B0aW9ucy5wYXJhbWV0ZXJzLnRleHR1cmVNYXBwZXItPmJlZ2luQ2xpcChUcmFuc2Zvcm1h
dGlvbk1hdHJpeChvcHRpb25zLnBhcmFtZXRlcnMudHJhbnNmb3JtKS5tdWx0aXBseShtX2VmZmVj
dGl2ZVRyYW5zZm9ybS5jb21iaW5lZCgpKSwgbGF5ZXJSZWN0KCkpOwogCiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtX2NoaWxkcmVuLnNpemUoKTsgKytpKQogICAgICAgICBtX2NoaWxkcmVu
W2ldLT5wYWludFJlY3Vyc2l2ZShvcHRpb25zKTsKIAogICAgIGlmIChzaG91bGRDbGlwKQotICAg
ICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmVuZENsaXAoKTsKKyAgICAgICAgb3B0aW9ucy5w
YXJhbWV0ZXJzLnRleHR1cmVNYXBwZXItPmVuZENsaXAoKTsKIH0KIAogSW50UmVjdCBUZXh0dXJl
TWFwcGVyTGF5ZXI6OmludGVybWVkaWF0ZVN1cmZhY2VSZWN0KCkKQEAgLTI3NCw5ICsyNjcsOSBA
QCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxmQW5kQ2hpbGRyZW5XaXRoUmVwbGlj
YShjb25zdCBUZXh0dXJlTWFwcGVyUGFpbgogICAgICAgICAvLyBXZSBjaG9vc2UgZWl0aGVyIHRo
ZSBjb250ZW50J3MgbWFzayBvciB0aGUgcmVwbGljYSdzIG1hc2suCiAgICAgICAgIC8vIEZJWE1F
OiBibGVuZCB0aGUgdHdvIGlmIGJvdGggZXhpc3QuCiAgICAgICAgIGlmIChtX3N0YXRlLnJlcGxp
Y2FMYXllci0+bV9zdGF0ZS5tYXNrTGF5ZXIpCi0gICAgICAgICAgICByZXBsaWNhT3B0aW9ucy5t
YXNrID0gbV9zdGF0ZS5yZXBsaWNhTGF5ZXItPm1fc3RhdGUubWFza0xheWVyLT50ZXh0dXJlKCk7
CisgICAgICAgICAgICByZXBsaWNhT3B0aW9ucy5wYXJhbWV0ZXJzLm1hc2sgPSBtX3N0YXRlLnJl
cGxpY2FMYXllci0+bV9zdGF0ZS5tYXNrTGF5ZXItPnRleHR1cmUoKTsKIAotICAgICAgICByZXBs
aWNhT3B0aW9ucy50cmFuc2Zvcm0KKyAgICAgICAgcmVwbGljYU9wdGlvbnMucGFyYW1ldGVycy50
cmFuc2Zvcm0KICAgICAgICAgICAgIC5tdWx0aXBseShtX3N0YXRlLnJlcGxpY2FMYXllci0+bV9l
ZmZlY3RpdmVUcmFuc2Zvcm0uY29tYmluZWQoKSkKICAgICAgICAgICAgIC5tdWx0aXBseShtX2Vm
ZmVjdGl2ZVRyYW5zZm9ybS5jb21iaW5lZCgpLmludmVyc2UoKSk7CiAgICAgICAgIHBhaW50U2Vs
ZkFuZENoaWxkcmVuKHJlcGxpY2FPcHRpb25zKTsKQEAgLTMxNywxNCArMzEwLDE0IEBAIHZvaWQg
VGV4dHVyZU1hcHBlckxheWVyOjpwYWludFJlY3Vyc2l2ZShjb25zdCBUZXh0dXJlTWFwcGVyUGFp
bnRPcHRpb25zJiBvcHRpb25zCiAgICAgaWYgKCFpc1Zpc2libGUoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgZmxvYXQgb3BhY2l0eSA9IG9wdGlvbnMub3BhY2l0eSAqIG1fZWZmZWN0aXZlT3Bh
Y2l0eTsKKyAgICBmbG9hdCBvcGFjaXR5ID0gb3B0aW9ucy5wYXJhbWV0ZXJzLm9wYWNpdHkgKiBt
X2VmZmVjdGl2ZU9wYWNpdHk7CiAgICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IG1hc2tUZXh0dXJl
ID0gbV9zdGF0ZS5tYXNrTGF5ZXIgPyBtX3N0YXRlLm1hc2tMYXllci0+dGV4dHVyZSgpIDogMDsK
IAogICAgIFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMgcGFpbnRPcHRpb25zKG9wdGlvbnMpOwot
ICAgIHBhaW50T3B0aW9ucy5tYXNrID0gbWFza1RleHR1cmUuZ2V0KCk7CisgICAgcGFpbnRPcHRp
b25zLnBhcmFtZXRlcnMubWFzayA9IG1hc2tUZXh0dXJlLmdldCgpOwogCiAgICAgaWYgKCFzaG91
bGRQYWludFRvSW50ZXJtZWRpYXRlU3VyZmFjZSgpKSB7Ci0gICAgICAgIHBhaW50T3B0aW9ucy5v
cGFjaXR5ID0gb3BhY2l0eTsKKyAgICAgICAgcGFpbnRPcHRpb25zLnBhcmFtZXRlcnMub3BhY2l0
eSA9IG9wYWNpdHk7CiAgICAgICAgIHBhaW50U2VsZkFuZENoaWxkcmVuV2l0aFJlcGxpY2EocGFp
bnRPcHRpb25zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTMzMiwxMiArMzI1LDEyIEBA
IHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpwYWludFJlY3Vyc2l2ZShjb25zdCBUZXh0dXJlTWFw
cGVyUGFpbnRPcHRpb25zJiBvcHRpb25zCiAgICAgLy8gUHJlcGFyZSBhIHN1cmZhY2UgdG8gcGFp
bnQgaW50by4KICAgICAvLyBXZSBwYWludCBpbnRvIHRoZSBzdXJmYWNlIGlnbm9yaW5nIHRoZSBv
cGFjaXR5L3RyYW5zZm9ybSBvZiB0aGUgY3VycmVudCBsYXllci4KICAgICBJbnRSZWN0IHN1cmZh
Y2VSZWN0ID0gaW50ZXJtZWRpYXRlU3VyZmFjZVJlY3QoKTsKLSAgICBSZWZQdHI8Qml0bWFwVGV4
dHVyZT4gc3VyZmFjZSA9IG9wdGlvbnMudGV4dHVyZU1hcHBlci0+YWNxdWlyZVRleHR1cmVGcm9t
UG9vbChzdXJmYWNlUmVjdC5zaXplKCkpOworICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBzdXJm
YWNlID0gb3B0aW9ucy5wYXJhbWV0ZXJzLnRleHR1cmVNYXBwZXItPmFjcXVpcmVUZXh0dXJlRnJv
bVBvb2woc3VyZmFjZVJlY3Quc2l6ZSgpKTsKICAgICBwYWludE9wdGlvbnMuc3VyZmFjZSA9IHN1
cmZhY2U7Ci0gICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5iaW5kU3VyZmFjZShzdXJmYWNlLmdl
dCgpKTsKLSAgICBwYWludE9wdGlvbnMub3BhY2l0eSA9IDE7CisgICAgb3B0aW9ucy5wYXJhbWV0
ZXJzLnRleHR1cmVNYXBwZXItPmJpbmRTdXJmYWNlKHN1cmZhY2UuZ2V0KCkpOworICAgIHBhaW50
T3B0aW9ucy5wYXJhbWV0ZXJzLm9wYWNpdHkgPSAxOwogCi0gICAgcGFpbnRPcHRpb25zLnRyYW5z
Zm9ybSA9IG1fZWZmZWN0aXZlVHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJzZSgpOworICAgIHBh
aW50T3B0aW9ucy5wYXJhbWV0ZXJzLnRyYW5zZm9ybSA9IG1fZWZmZWN0aXZlVHJhbnNmb3JtLmNv
bWJpbmVkKCkuaW52ZXJzZSgpOwogICAgIHBhaW50T3B0aW9ucy5vZmZzZXQgPSAtSW50U2l6ZShz
dXJmYWNlUmVjdC54KCksIHN1cmZhY2VSZWN0LnkoKSk7CiAKICAgICBwYWludFNlbGZBbmRDaGls
ZHJlbldpdGhSZXBsaWNhKHBhaW50T3B0aW9ucyk7CkBAIC0zNDcsMTYgKzM0MCwxNiBAQCB2b2lk
IFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRSZWN1cnNpdmUoY29uc3QgVGV4dHVyZU1hcHBlclBh
aW50T3B0aW9ucyYgb3B0aW9ucwogICAgICAgICBtYXNrVGV4dHVyZSA9IDA7CiAKICNpZiBFTkFC
TEUoQ1NTX0ZJTFRFUlMpCi0gICAgc3VyZmFjZSA9IGFwcGx5RmlsdGVycyhtX2VmZmVjdGl2ZUZp
bHRlcnMsIG9wdGlvbnMudGV4dHVyZU1hcHBlciwgc3VyZmFjZS5nZXQoKSwgc3VyZmFjZVJlY3Qp
OworICAgIHN1cmZhY2UgPSBhcHBseUZpbHRlcnMobV9lZmZlY3RpdmVGaWx0ZXJzLCBvcHRpb25z
LnBhcmFtZXRlcnMudGV4dHVyZU1hcHBlciwgc3VyZmFjZS5nZXQoKSwgc3VyZmFjZVJlY3QpOwog
I2VuZGlmCiAKLSAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmJpbmRTdXJmYWNlKG9wdGlvbnMu
c3VyZmFjZS5nZXQoKSk7CisgICAgb3B0aW9ucy5wYXJhbWV0ZXJzLnRleHR1cmVNYXBwZXItPmJp
bmRTdXJmYWNlKG9wdGlvbnMuc3VyZmFjZS5nZXQoKSk7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRy
aXggdGFyZ2V0VHJhbnNmb3JtOwogICAgIHRhcmdldFRyYW5zZm9ybS50cmFuc2xhdGUob3B0aW9u
cy5vZmZzZXQud2lkdGgoKSwgb3B0aW9ucy5vZmZzZXQuaGVpZ2h0KCkpOwotICAgIHRhcmdldFRy
YW5zZm9ybS5tdWx0aXBseShvcHRpb25zLnRyYW5zZm9ybSk7CisgICAgdGFyZ2V0VHJhbnNmb3Jt
Lm11bHRpcGx5KG9wdGlvbnMucGFyYW1ldGVycy50cmFuc2Zvcm0pOwogICAgIHRhcmdldFRyYW5z
Zm9ybS5tdWx0aXBseShtX2VmZmVjdGl2ZVRyYW5zZm9ybS5jb21iaW5lZCgpKTsKIAotICAgIG9w
dGlvbnMudGV4dHVyZU1hcHBlci0+ZHJhd1RleHR1cmUoKnN1cmZhY2UuZ2V0KCksIHN1cmZhY2VS
ZWN0LCB0YXJnZXRUcmFuc2Zvcm0sIG9wYWNpdHksIG1hc2tUZXh0dXJlLmdldCgpKTsKKyAgICBv
cHRpb25zLnBhcmFtZXRlcnMudGV4dHVyZU1hcHBlci0+ZHJhd1RleHR1cmUoKnN1cmZhY2UuZ2V0
KCksIHN1cmZhY2VSZWN0LCB0YXJnZXRUcmFuc2Zvcm0sIG9wYWNpdHksIG1hc2tUZXh0dXJlLmdl
dCgpKTsKIH0KIAogVGV4dHVyZU1hcHBlckxheWVyOjp+VGV4dHVyZU1hcHBlckxheWVyKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgKaW5kZXggMzhhZjAzZTg5YjYyNDgx
YWJhZjMyMDk4YzNhODE3YWI0ZDAwMGMxZS4uMjM0MGYwMzA3MjE3NmY3ZGZmOGI3NWVkZjFhZmQ1
MzkyZjQxMzg0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgKQEAg
LTI0LDE3ICsyNCwxNSBAQAogI2luY2x1ZGUgIkdyYXBoaWNzU3VyZmFjZS5oIgogI2VuZGlmCiAK
LSNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIFRleHR1cmVNYXBwZXI7Ci1jbGFzcyBCaXRtYXBUZXh0dXJlOworY2xhc3MgRmxv
YXRSZWN0OworY2xhc3MgVGV4dHVyZU1hcHBlclBhaW50UGFyYW1ldGVyczsKIAogY2xhc3MgVGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIgewogcHVibGljOgogICAgIHZpcnR1YWwgflRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJl
TWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgZmxv
YXQgb3BhY2l0eSA9IDEuMCwgQml0bWFwVGV4dHVyZSogbWFzayA9IDApID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVGV4
dHVyZU1hcHBlclBhaW50UGFyYW1ldGVycyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3dhcEJ1
ZmZlcnMoKSB7IH0KICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICB2aXJ0dWFsIEludFNp
emUgcGxhdGZvcm1MYXllclNpemUoKSBjb25zdCB7IHJldHVybiBJbnRTaXplKCk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcAppbmRleCA0YTdiYjEwODZl
ZTdhODY3YjJkM2ZkNjgwYzVhMzdkYjA1YjhiN2Q4Li4xNjExNjg0ZTNiODE3YmYyMmYzOWU5YjYw
MzMzNTNiZDJiNTc3ZTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5n
U3RvcmUuY3BwCkBAIC0xMTksMjEgKzExOSwyMSBAQCBzdGF0aWMgYm9vbCBzaG91bGRTaG93VGls
ZURlYnVnVmlzdWFscygpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIENvb3JkaW5hdGVk
QmFja2luZ1N0b3JlOjpwYWludFRpbGVzVG9UZXh0dXJlTWFwcGVyKFZlY3RvcjxUZXh0dXJlTWFw
cGVyVGlsZSo+JiB0aWxlcywgVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgQml0bWFwVGV4dHVy
ZSogbWFzaywgY29uc3QgRmxvYXRSZWN0JiByZWN0KQordm9pZCBDb29yZGluYXRlZEJhY2tpbmdT
dG9yZTo6cGFpbnRUaWxlc1RvVGV4dHVyZU1hcHBlcihWZWN0b3I8VGV4dHVyZU1hcHBlclRpbGUq
PiYgdGlsZXMsIGNvbnN0IFRleHR1cmVNYXBwZXJQYWludFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMs
IGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRp
bGVzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIFRleHR1cmVNYXBwZXJUaWxlKiB0aWxlID0gdGls
ZXNbaV07Ci0gICAgICAgIHRpbGUtPnBhaW50KHRleHR1cmVNYXBwZXIsIHRyYW5zZm9ybSwgb3Bh
Y2l0eSwgbWFzaywgY2FsY3VsYXRlRXhwb3NlZFRpbGVFZGdlcyhyZWN0LCB0aWxlLT5yZWN0KCkp
KTsKKyAgICAgICAgdGlsZS0+cGFpbnQocGFyYW1ldGVycy50ZXh0dXJlTWFwcGVyLCBwYXJhbWV0
ZXJzLnRyYW5zZm9ybSwgcGFyYW1ldGVycy5vcGFjaXR5LCBwYXJhbWV0ZXJzLm1hc2suZ2V0KCks
IGNhbGN1bGF0ZUV4cG9zZWRUaWxlRWRnZXMocmVjdCwgdGlsZS0+cmVjdCgpKSk7CiAgICAgICAg
IHN0YXRpYyBib29sIHNob3VsZERlYnVnID0gc2hvdWxkU2hvd1RpbGVEZWJ1Z1Zpc3VhbHMoKTsK
ICAgICAgICAgaWYgKCFzaG91bGREZWJ1ZykKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAg
ICAgIHRleHR1cmVNYXBwZXItPmRyYXdCb3JkZXIoQ29sb3IoMHhGRiwgMCwgMCksIDIsIHRpbGUt
PnJlY3QoKSwgdHJhbnNmb3JtKTsKLSAgICAgICAgdGV4dHVyZU1hcHBlci0+ZHJhd1JlcGFpbnRD
b3VudGVyKHN0YXRpY19jYXN0PENvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZSo+KHRpbGUpLT5y
ZXBhaW50Q291bnQoKSwgOCwgdGlsZS0+cmVjdCgpLmxvY2F0aW9uKCksIHRyYW5zZm9ybSk7Cisg
ICAgICAgIHBhcmFtZXRlcnMudGV4dHVyZU1hcHBlci0+ZHJhd0JvcmRlcihDb2xvcigweEZGLCAw
LCAwKSwgMiwgdGlsZS0+cmVjdCgpLCBwYXJhbWV0ZXJzLnRyYW5zZm9ybSk7CisgICAgICAgIHBh
cmFtZXRlcnMudGV4dHVyZU1hcHBlci0+ZHJhd1JlcGFpbnRDb3VudGVyKHN0YXRpY19jYXN0PENv
b3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZSo+KHRpbGUpLT5yZXBhaW50Q291bnQoKSwgOCwgdGls
ZS0+cmVjdCgpLmxvY2F0aW9uKCksIHBhcmFtZXRlcnMudHJhbnNmb3JtKTsKICAgICB9CiB9CiAK
LXZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1
cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgQml0bWFw
VGV4dHVyZSogbWFzaykKK3ZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnBhaW50VG9UZXh0
dXJlTWFwcGVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVGV4dHVyZU1hcHBl
clBhaW50UGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKICAgICBpZiAobV90aWxlcy5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTE1OCwyMCArMTU4LDIwIEBAIHZvaWQgQ29vcmRpbmF0
ZWRCYWNraW5nU3RvcmU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1
cmVNYXBwZXIsCiAKICAgICAgICAgLy8gT25seSBzaG93IHRoZSBwcmV2aW91cyB0aWxlIGlmIHRo
ZSBvcGFjaXR5IGlzIGhpZ2gsIG90aGVyd2lzZSBlZmZlY3QgbG9va3MgbGlrZSBhIGJ1Zy4KICAg
ICAgICAgLy8gV2Ugc2hvdyB0aGUgcHJldmlvdXMtc2NhbGUgdGlsZSBhbnl3YXkgaWYgaXQgZG9l
c24ndCBpbnRlcnNlY3Qgd2l0aCBhbnkgY3VycmVudC1zY2FsZSB0aWxlLgotICAgICAgICBpZiAo
b3BhY2l0eSA8IDAuOTUgJiYgY292ZXJlZFJlY3QuaW50ZXJzZWN0cyh0aWxlLnJlY3QoKSkpCisg
ICAgICAgIGlmIChwYXJhbWV0ZXJzLm9wYWNpdHkgPCAwLjk1ICYmIGNvdmVyZWRSZWN0LmludGVy
c2VjdHModGlsZS5yZWN0KCkpKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgcHJl
dmlvdXNUaWxlc1RvUGFpbnQuYXBwZW5kKCZ0aWxlKTsKICAgICB9CiAKICAgICBGbG9hdFJlY3Qg
cmVjdE9uQ29udGVudHMoRmxvYXRQb2ludDo6emVybygpLCBtX3NpemUpOwotICAgIFRyYW5zZm9y
bWF0aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3JtID0gdHJhbnNmb3JtOworICAgIFRleHR1cmVN
YXBwZXJQYWludFBhcmFtZXRlcnMgYWRqdXN0ZWRQYXJhbWV0ZXJzID0gcGFyYW1ldGVyczsKICAg
ICAvLyB0YXJnZXRSZWN0IGlzIG9uIHRoZSBjb250ZW50cyBjb29yZGluYXRlIHN5c3RlbSwgc28g
d2UgbXVzdCBjb21wYXJlIHR3byByZWN0cyBvbiB0aGUgY29udGVudHMgY29vcmRpbmF0ZSBzeXN0
ZW0uCiAgICAgLy8gU2VlIFRpbGVkQmFja2luZ1N0b3JlLgotICAgIGFkanVzdGVkVHJhbnNmb3Jt
Lm11bHRpcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4OjpyZWN0VG9SZWN0KHJlY3RPbkNvbnRlbnRz
LCB0YXJnZXRSZWN0KSk7CisgICAgYWRqdXN0ZWRQYXJhbWV0ZXJzLnRyYW5zZm9ybS5tdWx0aXBs
eShUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6cmVjdFRvUmVjdChyZWN0T25Db250ZW50cywgdGFyZ2V0
UmVjdCkpOwogCi0gICAgcGFpbnRUaWxlc1RvVGV4dHVyZU1hcHBlcihwcmV2aW91c1RpbGVzVG9Q
YWludCwgdGV4dHVyZU1hcHBlciwgYWRqdXN0ZWRUcmFuc2Zvcm0sIG9wYWNpdHksIG1hc2ssIHJl
Y3RPbkNvbnRlbnRzKTsKLSAgICBwYWludFRpbGVzVG9UZXh0dXJlTWFwcGVyKHRpbGVzVG9QYWlu
dCwgdGV4dHVyZU1hcHBlciwgYWRqdXN0ZWRUcmFuc2Zvcm0sIG9wYWNpdHksIG1hc2ssIHJlY3RP
bkNvbnRlbnRzKTsKKyAgICBwYWludFRpbGVzVG9UZXh0dXJlTWFwcGVyKHByZXZpb3VzVGlsZXNU
b1BhaW50LCBhZGp1c3RlZFBhcmFtZXRlcnMsIHJlY3RPbkNvbnRlbnRzKTsKKyAgICBwYWludFRp
bGVzVG9UZXh0dXJlTWFwcGVyKHRpbGVzVG9QYWludCwgYWRqdXN0ZWRQYXJhbWV0ZXJzLCByZWN0
T25Db250ZW50cyk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OmNvbW1pdFRp
bGVPcGVyYXRpb25zKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJh
Y2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuaAppbmRleCBhZTVhZjhkNGZhMmZjOWViZDIxMTk3
MjdmY2FkZDg1OTYyMzMwZjk5Li4yYmEzM2ExZGUxZGI5ZGRlZWFhM2I0NmY4MTAxY2IxYWY4MmM3
MzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmgKQEAgLTY1
LDEzICs2NSwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21taXRUaWxlT3BlcmF0aW9ucyhXZWJD
b3JlOjpUZXh0dXJlTWFwcGVyKik7CiAgICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpCaXRtYXBUZXh0
dXJlPiB0ZXh0dXJlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRTaXplKGNvbnN0IFdlYkNvcmU6OkZs
b2F0U2l6ZSYpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihXZWJDb3Jl
OjpUZXh0dXJlTWFwcGVyKiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29y
ZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCwgV2ViQ29yZTo6Qml0bWFwVGV4dHVyZSop
OworICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGFpbnRQYXJhbWV0ZXJzJik7
CiAKIHByaXZhdGU6CiAgICAgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUoKQogICAgICAgICA6IG1f
c2NhbGUoMS4pCiAgICAgeyB9Ci0gICAgdm9pZCBwYWludFRpbGVzVG9UZXh0dXJlTWFwcGVyKFZl
Y3RvcjxXZWJDb3JlOjpUZXh0dXJlTWFwcGVyVGlsZSo+JiwgV2ViQ29yZTo6VGV4dHVyZU1hcHBl
ciosIGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQsIFdlYkNvcmU6
OkJpdG1hcFRleHR1cmUqLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsKKyAgICB2b2lkIHBh
aW50VGlsZXNUb1RleHR1cmVNYXBwZXIoVmVjdG9yPFdlYkNvcmU6OlRleHR1cmVNYXBwZXJUaWxl
Kj4mLCBjb25zdCBXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGFpbnRQYXJhbWV0ZXJzJiwgY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0Jik7CiAKICAgICBIYXNoTWFwPHVpbnQzMl90LCBDb29yZGluYXRl
ZEJhY2tpbmdTdG9yZVRpbGU+IG1fdGlsZXM7CiAgICAgSGFzaFNldDx1aW50MzJfdD4gbV90aWxl
c1RvUmVtb3ZlOwo=
</data>
<flag name="review"
          id="198265"
          type_id="1"
          status="-"
          setter="noam"
    />
    <flag name="commit-queue"
          id="198266"
          type_id="3"
          status="-"
          setter="noam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180856</attachid>
            <date>2012-12-28 01:48:47 -0800</date>
            <delta_ts>2013-01-02 22:28:20 -0800</delta_ts>
            <desc>Not for Review(WIP) : [TexMap] Refactor code related to debug border and repaint count. [2/2] </desc>
            <filename>bug-105787-20121228184555.patch</filename>
            <type>text/plain</type>
            <size>58777</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4NDg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjE1MGQ5ZGYxNjkyNmM2
YWVmZGJlYThmYmY5YWZiYTIzYTQzNzgzYi4uZDJlYjUwZTgyNDY4ZjQyMDM3MDcxNDhmMTA4N2Nk
MGUwMjdiMzJjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDEyLTEyLTI3ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFtRdF1bRUZM
XVtHVEtdW1RleE1hcF0gUmVmYWN0b3IgY29kZSByZWxhdGVkIHRvIGRlYnVnIGJvcmRlciBhbmQg
cmVwYWludCBjb3VudC4gWzIvMl0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwNTc4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEN1cnJlbnRseSwgVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZSwgQ29vcmRp
bmF0ZWRCYWNraW5nU3RvcmUgYW5kCisgICAgICAgIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
IGhhdmUgZHVwbGljYXRlZCBjb2RlIHRvIGRyYXcgZGVidWcgYm9yZGVyIG9yIHJlcGFpbnQKKyAg
ICAgICAgY291bnQuIFRoaXMgcGF0Y2ggcmVmYWN0b3JzIHRoYXQgYWxsIHBsYXRmb3JtIGxheWVy
cyBkcmF3IGRlYnVnIGJvcmRlciBhbmQgcmVwYWludAorICAgICAgICBjb3VudCBpbiB0aGUgY29u
c2lzdGVudCB3YXkuCisKKyAgICAgICAgVGhlcmUgYXJlIHRocmVlIGJpZyBjaGFuZ2VzOgorICAg
ICAgICAxLiBUbyBlbmFibGUgb3IgZGlzYWJsZSB0aGlzIGZlYXR1cmUsIHdlIHVzZSBzZXRTaG93
RGVidWdCb3JkZXJzKGJvb2wpIGFuZAorICAgICAgICBzZXRTaG93UmVwYWludENvdW50ZXIoYm9v
bCkgaW4gU2V0dGluZ3MuCisgICAgICAgIEFzIHdlIGRpZCwgaWYgW1FUX11XRUJLSVRfU0hPV19D
T01QT1NJVElOR19ERUJVR19WSVNVQUxTIGlzIHNldCB0byAxLCBib3RoCisgICAgICAgIHNldHRp
bmdzIGFyZSBzZXQgdG8gdHJ1ZS4gSXQgbWVhbnMgdGhhdCBub3cgd2UgY2FuIHNlZSBkZWJ1Z2dp
bmcgdmlzdWFscyBpbiBXSzEKKyAgICAgICAgYXMgd2VsbCBhcyBXSzIuCisgICAgICAgIDIuIFRl
eHR1cmVNYXBwZXJMYXllciBoYXMgdGhlIGRlYnVnZ2luZyB2aXN1YWxzIGxpa2UgR3JhcGhpY3NM
YXllci4KKyAgICAgICAgV2hlbiBjYWxsaW5nIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyOjpw
YWludFRvVGV4dHVyZU1hcHBlcigpLCB3ZSBzZW5kIHRoZQorICAgICAgICBkZWJ1Z2dpbmcgdmlz
dWFscyB2aWEgVGV4dHVyZU1hcHBlclBhaW50UGFyYW1ldGVycyB0byB0aGUgcGxhdGZvcm0gbGF5
ZXIuIFRoZQorICAgICAgICBwbGF0Zm9ybSBsYXllciBkcmF3cyBkZWJ1ZyBib3JkZXIgYW5kIHJl
cGFpbnQgY291bnQgdXNpbmcgZHJhd0JvcmRlcigpIGFuZAorICAgICAgICBkcmF3UmVwYWludENv
dW50ZXIoKSBpbiBUZXh0dXJlTWFwcGVyLgorICAgICAgICAzLiBXZSB1c2UgdGhlIHNhbWUgY29s
b3IgYW5kIHdpZHRoIHRvIE1hYyBwb3J0IGJlY2F1c2Ugd2UgZ2V0IGJvdGggaW5mbyB1c2luZwor
ICAgICAgICBHcmFwaGljc0xheWVyOjp1cGRhdGVEZWJ1Z0luZGljYXRvcnMoKS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMuIFJlZmFjdG9yaW5nIG9ubHkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBhaW50VG9UZXh0dXJl
TWFwcGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXI6OnNldFNob3dEZWJ1Z0JvcmRlcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRTaG93UmVwYWludENv
dW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmZs
dXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnVwZGF0ZURlYnVnQm9yZGVyQW5kUmVwYWludENv
dW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpwcmVw
YXJlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpzZXRSZXBhaW50Q291bnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oOgorICAgICAgICAoR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXI6OmRlYnVnQm9yZGVyQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OmRlYnVnQm9yZGVyV2lkdGgpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU6OnBhaW50VG9UZXh0dXJlTWFwcGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6cGFp
bnRUb1RleHR1cmVNYXBwZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmg6CisgICAgICAgIChUZXh0dXJlTWFwcGVyVGlsZWRC
YWNraW5nU3RvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydEFCR1JUb0FSR0IpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRyYXdS
ZXBhaW50Q291bnRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVySW1hZ2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXI6OmRyYXdSZXBhaW50Q291bnRlcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpwYWludFNlbGYpOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpmbHVzaENvbXBvc2l0aW5nU3Rh
dGVGb3JUaGlzTGF5ZXJPbmx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckxheWVyLmg6CisgICAgICAgIChTdGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0dXJlTWFwcGVyTGF5ZXI6OlN0YXRlOjpTdGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmg6CisgICAgICAgIChU
ZXh0dXJlTWFwcGVyUGFpbnRQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVN
YXBwZXJQYWludFBhcmFtZXRlcnM6OlRleHR1cmVNYXBwZXJQYWludFBhcmFtZXRlcnMpOgorCiAy
MDEyLTEyLTI4ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCiAg
ICAgICAgIFtUZXhNYXBdIFJlZmFjdG9yIGNvZGUgcmVsYXRlZCB0byBkZWJ1ZyBib3JkZXIgYW5k
IHJlcGFpbnQgY291bnQuIFsxLzJdCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggMzEyNWNjNGEzNTFkOGU5
NTBiZTViODZlNzFmNjJlODAwYTFkYTg5My4uNTlmMDY3NGZhNzk1NjMzNjQ0NDZmNzY0Y2I1NDk3
MTlkYTE5YWM1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTEyLTI3
ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFtR
dF1bRUZMXVtHVEtdW1RleE1hcF0gUmVmYWN0b3IgY29kZSByZWxhdGVkIHRvIGRlYnVnIGJvcmRl
ciBhbmQgcmVwYWludCBjb3VudC4gWzIvMl0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwNTc4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIElmIFdFQktJVF9TSE9XX0NPTVBPU0lUSU5HX0RFQlVHX1ZJU1VB
TFMgaXMgc2V0IHRvIDEsIHNldAorICAgICAgICBzaG93RGVidWdCb3JkZXJzIGFuZCBzaG93UmVw
YWludENvdW50ZXIgaW4gU2V0dGluZ3MgdG8gdHJ1ZS4KKworICAgICAgICAqIGV3ay9ld2tfdmll
dy5jcHA6CisgICAgICAgIChfZXdrX3ZpZXdfcHJpdl9uZXcpOgorCiAyMDEyLTEyLTIzICBBbGV4
ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8xMjgwODM3Nz4gTmV0d29yayBwcm9jZXNzIHNob3VsZCByZXNwZWN0IGNvb2tpZSBhY2NlcHQg
cG9saWN5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggYmEzOWIwMDM5MWMyNDExOGI4ZDg0M2M0ZTU1N2Ey
MTNkZWQ3MjE5Mi4uNTQxMjI3MzZlZDQwYjk3MzBhMzc0OGZiNTY2ZGIzNWM5NDY2YWZmMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTEyLTI3ICBIdWFuZyBEb25nc3Vu
ZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFtRdF1bRUZMXVtHVEtdW1Rl
eE1hcF0gUmVmYWN0b3IgY29kZSByZWxhdGVkIHRvIGRlYnVnIGJvcmRlciBhbmQgcmVwYWludCBj
b3VudC4gWzIvMl0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwNTc4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIElmIFdFQktJVF9TSE9XX0NPTVBPU0lUSU5HX0RFQlVHX1ZJU1VBTFMgaXMgc2V0IHRvIDEs
IHNldAorICAgICAgICBzaG93RGVidWdCb3JkZXJzIGFuZCBzaG93UmVwYWludENvdW50ZXIgaW4g
U2V0dGluZ3MgdG8gdHJ1ZS4KKworICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDoK
KyAgICAgICAgKHdlYmtpdF93ZWJfdmlld191cGRhdGVfc2V0dGluZ3MpOgorCiAyMDEyLTEyLTIz
ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8xMjgwODM3Nz4gTmV0d29yayBwcm9jZXNzIHNob3VsZCByZXNwZWN0IGNvb2tpZSBh
Y2NlcHQgcG9saWN5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDNlMjlhMmYyODJiNzZmNDIxMDA4ODkyZmIy
YTNmNzIyYjMwOWU5N2EuLjA2MDUwYWQ4NDI2YzE3Yjk4ODU4YjAzYTdmMjZlMDA4YTRmNmIwODgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMTItMjcgIEh1YW5nIERvbmdz
dW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CisKKyAgICAgICAgW1F0XVtFRkxdW0dUS11b
VGV4TWFwXSBSZWZhY3RvciBjb2RlIHJlbGF0ZWQgdG8gZGVidWcgYm9yZGVyIGFuZCByZXBhaW50
IGNvdW50LiBbMi8yXQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTA1Nzg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSWYgUVRfV0VCS0lUX1NIT1dfQ09NUE9TSVRJTkdfREVCVUdfVklTVUFMUyBpcyBzZXQg
dG8gMSwgc2V0CisgICAgICAgIHNob3dEZWJ1Z0JvcmRlcnMgYW5kIHNob3dSZXBhaW50Q291bnRl
ciBpbiBTZXR0aW5ncyB0byB0cnVlLgorCisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6
CisgICAgICAgIChRV2ViU2V0dGluZ3NQcml2YXRlOjphcHBseSk6CisKIDIwMTItMTItMjYgIEh1
YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgW1RleE1h
cF0gUmVuYW1lIGVmZmVjdGl2ZVtUcmFuc2Zvcm18T3BhY2l0eXxGaWx0ZXJzXSBpbiBUZXh0dXJl
TWFwcGVyTGF5ZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzIxOGMxMjkzYjRmMDdmZWRiMDY0NmQ0NTg0Nzk4
N2QyNjc4ZTE3Zi4uNDVhMWVhMDhlM2JjZTMxYWY3YjAxMGIzMzk1Yjg1NjFjNmEwYTNmNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDEyLTEyLTI3ICBIdWFuZyBEb25nc3VuZyAgPGx1
eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFtRdF1bRUZMXVtHVEtdW1RleE1hcF0g
UmVmYWN0b3IgY29kZSByZWxhdGVkIHRvIGRlYnVnIGJvcmRlciBhbmQgcmVwYWludCBjb3VudC4g
WzIvMl0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
NTc4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
ZXJlIGFyZSB0aHJlZSBiaWcgY2hhbmdlczoKKyAgICAgICAgMS4gQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyIHNlbmRzIGRlYnVnZ2luZyB2aXN1YWxzIHRvIFVJIFByb2Nlc3MuCisgICAgICAgIDIu
IElmIFtRVF9dV0VCS0lUX1NIT1dfQ09NUE9TSVRJTkdfREVCVUdfVklTVUFMUyBpcyBzZXQgdG8g
MSwgc2V0CisgICAgICAgIHNob3dEZWJ1Z0JvcmRlcnMgYW5kIHNob3dSZXBhaW50Q291bnRlciBp
biBTZXR0aW5ncyB0byB0cnVlLgorICAgICAgICAzLiBXaGVuIHVwZGF0aW5nIGEgYmFja2luZyBz
dG9yZSwgYSBjb21wb3NpdGVkIGltYWdlIG9yIGEgcGxhdGZvcm0KKyAgICAgICAgY2FudmFzIGxh
eWVyLCBpbmNyZW1lbnQgYSByZXBhaW50IGNvdW50LgorCisgICAgICAgICogU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllckluZm8uaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjp1cGRhdGVUaWxlKToKKyAgICAg
ICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnBhaW50VGlsZXNUb1RleHR1cmVN
YXBwZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkQmFja2luZ1N0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2luZ1N0
b3JlVGlsZTo6Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlKToKKyAgICAgICAgKENvb3JkaW5h
dGVkQmFja2luZ1N0b3JlVGlsZSk6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6c2V0UmVwYWludENvdW50KToKKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaDoKKyAgICAgICAgKENvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdFByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjpzZXRSZXBhaW50Q291bnQpOgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OnNldExheWVyU3Rh
dGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJl
bmRlcmVyLmg6CisgICAgICAgIChMYXllclRyZWVSZW5kZXJlcik6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0U2hv
d0RlYnVnQm9yZGVyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRTaG93UmVwYWludENvdW50ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzeW5jSW1hZ2VCYWNraW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c3luY0xheWVyU3RhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzeW5jQ2FudmFz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dGlsZWRCYWNr
aW5nU3RvcmVQYWludEVuZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmg6CisgICAgICAgIChDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXJDbGllbnQpOgorICAgICAgICAoQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRl
ZExheWVyVHJlZUhvc3Q6OnNldFJlcGFpbnRDb3VudCk6CisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkVGlsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5h
dGVkVGlsZTo6dXBkYXRlQmFja0J1ZmZlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNl
cyk6CisKIDIwMTItMTItMjggIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5u
ZXQ+CiAKICAgICAgICAgW1RleE1hcF0gUmVmYWN0b3IgY29kZSByZWxhdGVkIHRvIGRlYnVnIGJv
cmRlciBhbmQgcmVwYWludCBjb3VudC4gWzEvMl0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRFBy
aXZhdGUuY3BwCmluZGV4IGNhNjFkZjhkNzU4YzgxMGY0NTczMTJiN2E2N2U0YzViMmI3Y2FlMzUu
LmY5MjI0NDkwMmMwNTBkNThkNjZhNjNjMjc0ZmI3OWM4N2ZhNzc4OWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcApAQCAtMTIzLDYgKzEyMywxMSBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoY29uc3QgRmxvYXRSZWN0
JiB0YXJnZXRSZWN0LAogICAgICAgICBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+ZHJhd1N1
cmZhY2VUb0NvbnRleHQoaW1hZ2VTdXJmYWNlLmdldCgpLCB0YXJnZXRSZWN0LCBJbnRSZWN0KDAs
IDAsIHdpZHRoLCBoZWlnaHQpLCBjb250ZXh0KTsKIAogICAgICAgICBjb250ZXh0LT5yZXN0b3Jl
KCk7CisKKyAgICAgICAgaWYgKHBhcmFtZXRlcnMuc2hvd0RlYnVnQm9yZGVycykKKyAgICAgICAg
ICAgIHBhcmFtZXRlcnMudGV4dHVyZU1hcHBlci0+ZHJhd0JvcmRlcihwYXJhbWV0ZXJzLmRlYnVn
Qm9yZGVyQ29sb3IsIHBhcmFtZXRlcnMuZGVidWdCb3JkZXJXaWR0aCwgdGFyZ2V0UmVjdCwgcGFy
YW1ldGVycy50cmFuc2Zvcm0pOworICAgICAgICBpZiAocGFyYW1ldGVycy5zaG93UmVwYWludENv
dW50ZXIpCisgICAgICAgICAgICBwYXJhbWV0ZXJzLnRleHR1cmVNYXBwZXItPmRyYXdSZXBhaW50
Q291bnRlcihwYXJhbWV0ZXJzLnJlcGFpbnRDb3VudCwgcGFyYW1ldGVycy5kZWJ1Z0JvcmRlckNv
bG9yLCB0YXJnZXRSZWN0LmxvY2F0aW9uKCksIHBhcmFtZXRlcnMudHJhbnNmb3JtKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTQzLDYgKzE0OCwxMSBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJn
ZXRSZWN0LAogICAgIFRleHR1cmVNYXBwZXJHTDo6RmxhZ3MgZmxhZ3MgPSBUZXh0dXJlTWFwcGVy
R0w6OlNob3VsZEZsaXBUZXh0dXJlIHwgKG1fY29udGV4dC0+bV9hdHRycy5hbHBoYSA/IFRleHR1
cmVNYXBwZXJHTDo6U2hvdWxkQmxlbmQgOiAwKTsKICAgICBJbnRTaXplIHRleHR1cmVTaXplKG1f
Y29udGV4dC0+bV9jdXJyZW50V2lkdGgsIG1fY29udGV4dC0+bV9jdXJyZW50SGVpZ2h0KTsKICAg
ICB0ZXhtYXBHTC0+ZHJhd1RleHR1cmUobV9jb250ZXh0LT5tX3RleHR1cmUsIGZsYWdzLCB0ZXh0
dXJlU2l6ZSwgdGFyZ2V0UmVjdCwgcGFyYW1ldGVycy50cmFuc2Zvcm0sIHBhcmFtZXRlcnMub3Bh
Y2l0eSwgcGFyYW1ldGVycy5tYXNrLmdldCgpKTsKKworICAgIGlmIChwYXJhbWV0ZXJzLnNob3dE
ZWJ1Z0JvcmRlcnMpCisgICAgICAgIHBhcmFtZXRlcnMudGV4dHVyZU1hcHBlci0+ZHJhd0JvcmRl
cihwYXJhbWV0ZXJzLmRlYnVnQm9yZGVyQ29sb3IsIHBhcmFtZXRlcnMuZGVidWdCb3JkZXJXaWR0
aCwgdGFyZ2V0UmVjdCwgcGFyYW1ldGVycy50cmFuc2Zvcm0pOworICAgIGlmIChwYXJhbWV0ZXJz
LnNob3dSZXBhaW50Q291bnRlcikKKyAgICAgICAgcGFyYW1ldGVycy50ZXh0dXJlTWFwcGVyLT5k
cmF3UmVwYWludENvdW50ZXIocGFyYW1ldGVycy5yZXBhaW50Q291bnQsIHRhcmdldFJlY3QubG9j
YXRpb24oKSwgcGFyYW1ldGVycy50cmFuc2Zvcm0pOwogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElOR19HTCkKIH0KICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFw
aGljc0NvbnRleHQzRFF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0
L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCmluZGV4IDI1NTk4NjNmYTliYTgyYWRmODc2NjE2ODlh
ZGRkODhiNDA1YWY5NTAuLmRjYmNkZWFlZTRhNGY3ZmU4ZjI0MjM1NGJkNmQzMGM5MmUwNWEyNzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNz
Q29udGV4dDNEUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0
L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCkBAIC0yMzEsNiArMjMxLDExIEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcihjb25zdCBGbG9hdFJlY3Qm
IHRhcmdldFJlY3QsCiAKICAgICAgICAgVGV4dHVyZU1hcHBlckdMKiB0ZXhtYXBHTCA9IHN0YXRp
Y19jYXN0PFRleHR1cmVNYXBwZXJHTCo+KHBhcmFtZXRlcnMudGV4dHVyZU1hcHBlcik7CiAgICAg
ICAgIG1fZ3JhcGhpY3NTdXJmYWNlLT5wYWludFRvVGV4dHVyZU1hcHBlcih0ZXhtYXBHTCwgdGFy
Z2V0UmVjdCwgcGFyYW1ldGVycy50cmFuc2Zvcm0sIHBhcmFtZXRlcnMub3BhY2l0eSwgcGFyYW1l
dGVycy5tYXNrLmdldCgpKTsKKworICAgICAgICBpZiAocGFyYW1ldGVycy5zaG93RGVidWdCb3Jk
ZXJzKQorICAgICAgICAgICAgcGFyYW1ldGVycy50ZXh0dXJlTWFwcGVyLT5kcmF3Qm9yZGVyKHBh
cmFtZXRlcnMuZGVidWdCb3JkZXJDb2xvciwgcGFyYW1ldGVycy5kZWJ1Z0JvcmRlcldpZHRoLCB0
YXJnZXRSZWN0LCBwYXJhbWV0ZXJzLnRyYW5zZm9ybSk7CisgICAgICAgIGlmIChwYXJhbWV0ZXJz
LnNob3dSZXBhaW50Q291bnRlcikKKyAgICAgICAgICAgIHBhcmFtZXRlcnMudGV4dHVyZU1hcHBl
ci0+ZHJhd1JlcGFpbnRDb3VudGVyKHBhcmFtZXRlcnMucmVwYWludENvdW50LCBwYXJhbWV0ZXJz
LmRlYnVnQm9yZGVyQ29sb3IsIHRhcmdldFJlY3QubG9jYXRpb24oKSwgcGFyYW1ldGVycy50cmFu
c2Zvcm0pOwogI2VuZGlmCiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yNzcsNiArMjgyLDEx
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcihj
b25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsCiAKICAgICBwYWludGVyLT5kcmF3SW1hZ2UodGFy
Z2V0UmVjdCwgb2Zmc2NyZWVuSW1hZ2UpOwogICAgIHBhaW50ZXItPnJlc3RvcmUoKTsKKworICAg
IGlmIChwYXJhbWV0ZXJzLnNob3dEZWJ1Z0JvcmRlcnMpCisgICAgICAgIHBhcmFtZXRlcnMudGV4
dHVyZU1hcHBlci0+ZHJhd0JvcmRlcihwYXJhbWV0ZXJzLmRlYnVnQm9yZGVyQ29sb3IsIHBhcmFt
ZXRlcnMuZGVidWdCb3JkZXJXaWR0aCwgdGFyZ2V0UmVjdCwgcGFyYW1ldGVycy50cmFuc2Zvcm0p
OworICAgIGlmIChwYXJhbWV0ZXJzLnNob3dSZXBhaW50Q291bnRlcikKKyAgICAgICAgcGFyYW1l
dGVycy50ZXh0dXJlTWFwcGVyLT5kcmF3UmVwYWludENvdW50ZXIocGFyYW1ldGVycy5yZXBhaW50
Q291bnQsIHBhcmFtZXRlcnMuZGVidWdCb3JkZXJDb2xvciwgdGFyZ2V0UmVjdC5sb2NhdGlvbigp
LCBwYXJhbWV0ZXJzLnRyYW5zZm9ybSk7CiB9CiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApp
bmRleCBlOTYyOTZiYTUxZTRhYTcxMTVkYmEyMjZhYTU3ZmZlZjBlYzAxMjIyLi5jM2EyYzFiODAw
NGNiOTUwNmUxYzY0MmZiOTJiYjI4OTNkMGU0MDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlci5jcHAKQEAgLTI0LDE0ICsyNCw4IEBACiAjaW5jbHVkZSAiR3JhcGhp
Y3NMYXllckFuaW1hdGlvbi5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJGYWN0b3J5LmgiCiAj
aW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2lu
Y2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogCi0jaWYgVVNFKENBSVJPKQotI2luY2x1ZGUgIkNh
aXJvVXRpbGl0aWVzLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotI2VuZGlmCi0K
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGFzc093blB0cjxHcmFwaGljc0xheWVyPiBHcmFwaGlj
c0xheWVyOjpjcmVhdGUoR3JhcGhpY3NMYXllckZhY3RvcnkqIGZhY3RvcnksIEdyYXBoaWNzTGF5
ZXJDbGllbnQqIGNsaWVudCkKQEAgLTM4MywxNSArMzc3LDQ5IEBAIHZvaWQgR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzVG9NZWRpYShUZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllcioKICAgICBtX2NvbnRlbnRzTGF5ZXIgPSBtZWRpYTsKIH0KIAordm9pZCBHcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlcjo6c2V0U2hvd0RlYnVnQm9yZGVyKGJvb2wgc2hvdykKK3sKKyAgICBp
ZiAoaXNTaG93aW5nRGVidWdCb3JkZXIoKSA9PSBzaG93KQorICAgICAgICByZXR1cm47CisKKyAg
ICBHcmFwaGljc0xheWVyOjpzZXRTaG93RGVidWdCb3JkZXIoc2hvdyk7CisgICAgbm90aWZ5Q2hh
bmdlKFRleHR1cmVNYXBwZXJMYXllcjo6RGVidWdWaXN1YWxzQ2hhbmdlKTsKK30KKwordm9pZCBH
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0U2hvd1JlcGFpbnRDb3VudGVyKGJvb2wgc2hv
dykKK3sKKyAgICBpZiAoaXNTaG93aW5nUmVwYWludENvdW50ZXIoKSA9PSBzaG93KQorICAgICAg
ICByZXR1cm47CisKKyAgICBHcmFwaGljc0xheWVyOjpzZXRTaG93UmVwYWludENvdW50ZXIoc2hv
dyk7CisgICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6RGVidWdWaXN1YWxzQ2hh
bmdlKTsKK30KKwogLyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgpCiAqLwogdm9pZCBHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25s
eSgpCiB7CisgICAgdXBkYXRlRGVidWdCb3JkZXJBbmRSZXBhaW50Q291bnQoKTsKICAgICBtX2xh
eWVyLT5mbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KHRoaXMpOwogICAgIHVw
ZGF0ZUJhY2tpbmdTdG9yZSgpOwogICAgIGRpZEZsdXNoQ29tcG9zaXRpbmdTdGF0ZSgpOwogfQog
Cit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjp1cGRhdGVEZWJ1Z0JvcmRlckFuZFJl
cGFpbnRDb3VudCgpCit7CisgICAgbV91c2luZ1RpbGVkTGF5ZXIgPSBzaG91bGRIYXZlQmFja2lu
Z1N0b3JlKCk7CisgICAgdXBkYXRlRGVidWdJbmRpY2F0b3JzKCk7CisKKyAgICBpZiAoIW1faGFz
T3duQmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm47CisKKyAgICBib29sIG5lZWRzVG9SZXBh
aW50ID0gc2hvdWxkSGF2ZUJhY2tpbmdTdG9yZSgpICYmIChtX25lZWRzRGlzcGxheSB8fCAhbV9u
ZWVkc0Rpc3BsYXlSZWN0LmlzRW1wdHkoKSk7CisgICAgaWYgKGlzU2hvd2luZ1JlcGFpbnRDb3Vu
dGVyKCkgJiYgbmVlZHNUb1JlcGFpbnQpIHsKKyAgICAgICAgaW5jcmVtZW50UmVwYWludENvdW50
KCk7CisgICAgICAgIG1fY2hhbmdlTWFzayB8PSBUZXh0dXJlTWFwcGVyTGF5ZXI6OlJlcGFpbnRD
b3VudENoYW5nZTsKKyAgICB9Cit9CisKIC8qIFxyZWltcCAoR3JhcGhpY3NMYXllci5oKQogKi8K
IHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZShj
b25zdCBGbG9hdFJlY3QmIHJlY3QpCkBAIC00NDcsMzUgKzQ3NSw3IEBAIHZvaWQgR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXI6OnByZXBhcmVCYWNraW5nU3RvcmUoKQogICAgIEFTU0VSVChkeW5h
bWljX2Nhc3Q8VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlKj4obV9iYWNraW5nU3RvcmUu
Z2V0KCkpKTsKICNlbmRpZgogICAgIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZSogYmFj
a2luZ1N0b3JlID0gc3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlKj4o
bV9iYWNraW5nU3RvcmUuZ2V0KCkpOwotCi0gICAgaWYgKGlzU2hvd2luZ1JlcGFpbnRDb3VudGVy
KCkpCi0gICAgICAgIGluY3JlbWVudFJlcGFpbnRDb3VudCgpOwotCi0gICAgLy8gUGFpbnQgaW50
byBhbiBpbnRlcm1lZGlhdGUgYnVmZmVyIHRvIGF2b2lkIHBhaW50aW5nIGNvbnRlbnQgbW9yZSB0
aGFuIG9uY2UuCi0gICAgYm9vbCBwYWludE9uY2UgPSB0cnVlOwotICAgIGNvbnN0IEludFNpemUg
bWF4VGV4dHVyZVNpemUgPSB0ZXh0dXJlTWFwcGVyLT5tYXhUZXh0dXJlU2l6ZSgpOwotICAgIC8v
IFdlIG5lZWQgdG8gcGFpbnQgZGlyZWN0bHkgaWYgdGhlIGRpcnR5IHJlY3QgZXhjZWVkcyBvbmUg
b2YgdGhlIG1heGltdW0gZGltZW5zaW9ucy4KLSAgICBpZiAoZGlydHlSZWN0LndpZHRoKCkgPiBt
YXhUZXh0dXJlU2l6ZS53aWR0aCgpIHx8IGRpcnR5UmVjdC5oZWlnaHQoKSA+IG1heFRleHR1cmVT
aXplLmhlaWdodCgpKQotICAgICAgICBwYWludE9uY2UgPSBmYWxzZTsKLQotICAgIGlmIChwYWlu
dE9uY2UpIHsKLSAgICAgICAgT3duUHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IEltYWdl
QnVmZmVyOjpjcmVhdGUoZGlydHlSZWN0LnNpemUoKSk7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7Ci0gICAgICAgIGNvbnRleHQtPnNl
dEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkodGV4dHVyZU1hcHBlci0+aW1hZ2VJbnRlcnBvbGF0
aW9uUXVhbGl0eSgpKTsKLSAgICAgICAgY29udGV4dC0+c2V0VGV4dERyYXdpbmdNb2RlKHRleHR1
cmVNYXBwZXItPnRleHREcmF3aW5nTW9kZSgpKTsKLSAgICAgICAgY29udGV4dC0+dHJhbnNsYXRl
KC1kaXJ0eVJlY3QueCgpLCAtZGlydHlSZWN0LnkoKSk7Ci0gICAgICAgIHBhaW50R3JhcGhpY3NM
YXllckNvbnRlbnRzKCpjb250ZXh0LCBkaXJ0eVJlY3QpOwotCi0gICAgICAgIGlmIChpc1Nob3dp
bmdSZXBhaW50Q291bnRlcigpKQotICAgICAgICAgICAgZHJhd1JlcGFpbnRDb3VudGVyKGNvbnRl
eHQpOwotCi0gICAgICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBpbWFnZUJ1ZmZlci0+Y29weUlt
YWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKLSAgICAgICAgYmFja2luZ1N0b3JlLT51cGRhdGVD
b250ZW50cyh0ZXh0dXJlTWFwcGVyLCBpbWFnZS5nZXQoKSwgbV9zaXplLCBkaXJ0eVJlY3QsIEJp
dG1hcFRleHR1cmU6OlVwZGF0ZUNhbk1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRhKTsKLSAgICB9IGVs
c2UKLSAgICAgICAgYmFja2luZ1N0b3JlLT51cGRhdGVDb250ZW50cyh0ZXh0dXJlTWFwcGVyLCB0
aGlzLCBtX3NpemUsIGRpcnR5UmVjdCwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ2FuTW9kaWZ5T3Jp
Z2luYWxJbWFnZURhdGEpOwotCi0gICAgYmFja2luZ1N0b3JlLT5zZXRTaG93RGVidWdCb3JkZXJz
KGlzU2hvd2luZ0RlYnVnQm9yZGVyKCkpOwotICAgIGJhY2tpbmdTdG9yZS0+c2V0RGVidWdCb3Jk
ZXIobV9kZWJ1Z0JvcmRlckNvbG9yLCBtX2RlYnVnQm9yZGVyV2lkdGgpOworICAgIGJhY2tpbmdT
dG9yZS0+dXBkYXRlQ29udGVudHModGV4dHVyZU1hcHBlciwgdGhpcywgbV9zaXplLCBkaXJ0eVJl
Y3QsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNhbk1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRhKTsKIAog
ICAgIG1fbmVlZHNEaXNwbGF5ID0gZmFsc2U7CiAgICAgbV9uZWVkc0Rpc3BsYXlSZWN0ID0gSW50
UmVjdCgpOwpAQCAtNDg2LDQwICs0ODYsNiBAQCBib29sIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyOjpzaG91bGRIYXZlQmFja2luZ1N0b3JlKCkgY29uc3QKICAgICByZXR1cm4gZHJhd3NDb250
ZW50KCkgJiYgY29udGVudHNBcmVWaXNpYmxlKCkgJiYgIW1fc2l6ZS5pc0VtcHR5KCk7CiB9CiAK
LSNpZiBVU0UoQ0FJUk8pCi12b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpkcmF3UmVw
YWludENvdW50ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQotewotICAgIGNhaXJvX3QqIGNy
ID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7Ci0gICAgY2Fpcm9fc2F2ZShjcik7
Ci0KLSAgICBDU3RyaW5nIHJlcGFpbnRDb3VudCA9IFN0cmluZzo6Zm9ybWF0KCIlaSIsIHRoaXMt
PnJlcGFpbnRDb3VudCgpKS51dGY4KCk7Ci0gICAgY2Fpcm9fc2VsZWN0X2ZvbnRfZmFjZShjciwg
InNhbnMtc2VyaWYiLCBDQUlST19GT05UX1NMQU5UX05PUk1BTCwgQ0FJUk9fRk9OVF9XRUlHSFRf
Qk9MRCk7Ci0gICAgY2Fpcm9fc2V0X2ZvbnRfc2l6ZShjciwgMTgpOwotCi0gICAgY2Fpcm9fdGV4
dF9leHRlbnRzX3QgcmVwYWludFRleHRFeHRlbnRzOwotICAgIGNhaXJvX3RleHRfZXh0ZW50cyhj
ciwgcmVwYWludENvdW50LmRhdGEoKSwgJnJlcGFpbnRUZXh0RXh0ZW50cyk7Ci0KLSAgICBzdGF0
aWMgY29uc3QgaW50IHJlcGFpbnRDb3VudEJvcmRlcldpZHRoID0gMTA7Ci0gICAgc2V0U291cmNl
UkdCQUZyb21Db2xvcihjciwgaXNTaG93aW5nRGVidWdCb3JkZXIoKSA/IG1fZGVidWdCb3JkZXJD
b2xvciA6IENvbG9yKDAsIDI1NSwgMCwgMTI3KSk7Ci0gICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLCAw
LCAwLAotICAgICAgICByZXBhaW50VGV4dEV4dGVudHMud2lkdGggKyAocmVwYWludENvdW50Qm9y
ZGVyV2lkdGggKiAyKSwKLSAgICAgICAgcmVwYWludFRleHRFeHRlbnRzLmhlaWdodCArIChyZXBh
aW50Q291bnRCb3JkZXJXaWR0aCAqIDIpKTsKLSAgICBjYWlyb19maWxsKGNyKTsKLQotICAgIGNh
aXJvX3NldF9zb3VyY2VfcmdiKGNyLCAxLCAxLCAxKTsKLSAgICBjYWlyb19tb3ZlX3RvKGNyLCBy
ZXBhaW50Q291bnRCb3JkZXJXaWR0aCwgcmVwYWludFRleHRFeHRlbnRzLmhlaWdodCArIHJlcGFp
bnRDb3VudEJvcmRlcldpZHRoKTsKLSAgICBjYWlyb19zaG93X3RleHQoY3IsIHJlcGFpbnRDb3Vu
dC5kYXRhKCkpOwotCi0gICAgY2Fpcm9fcmVzdG9yZShjcik7Ci19Ci0jZWxzZQotdm9pZCBHcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlcjo6ZHJhd1JlcGFpbnRDb3VudGVyKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi0jZW5kaWYKLQogYm9v
bCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6YWRkQW5pbWF0aW9uKGNvbnN0IEtleWZyYW1l
VmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGNvbnN0IEludFNpemUmIGJveFNpemUsIGNvbnN0IEFuaW1h
dGlvbiogYW5pbSwgY29uc3QgU3RyaW5nJiBrZXlmcmFtZXNOYW1lLCBkb3VibGUgdGltZU9mZnNl
dCkKIHsKICAgICBBU1NFUlQoIWtleWZyYW1lc05hbWUuaXNFbXB0eSgpKTsKQEAgLTU3Nyw0ICs1
NDMsMTAgQEAgYm9vbCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0RmlsdGVycyhjb25z
dCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQogfQogI2VuZGlmCiAKK3ZvaWQgR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXI6OnNldFJlcGFpbnRDb3VudChpbnQgdmFsdWUpCit7CisgICAgbV9y
ZXBhaW50Q291bnQgPSB2YWx1ZTsKKyAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVy
OjpSZXBhaW50Q291bnRDaGFuZ2UpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlci5oCmluZGV4IDEyYzMxOTU5MWI3MjZjN2M5ZjBiYTJiZGZkZjQzODRlN2RlYTE3
MTMuLjA4NDhiNWIyNDZmMGZkMDc0MzE1ZTU3M2RiMTlmZmQ0MDM0YjY2NDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oCkBAIC0yMCw3ICsyMCw2IEBACiAjaWZuZGVm
IEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyX2gKICNkZWZpbmUgR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXJfaAogCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3Jh
cGhpY3NMYXllci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDbGllbnQuaCIKICNpbmNsdWRl
ICJJbWFnZS5oIgpAQCAtNjYsNiArNjUsOCBAQCBwdWJsaWM6CiAgICAgQ29sb3Igc29saWRDb2xv
cigpIGNvbnN0IHsgcmV0dXJuIG1fc29saWRDb2xvcjsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRD
b250ZW50c1RvTWVkaWEoUGxhdGZvcm1MYXllciopOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250
ZW50c1RvQ2FudmFzKFBsYXRmb3JtTGF5ZXIqIGNhbnZhcykgeyBzZXRDb250ZW50c1RvTWVkaWEo
Y2FudmFzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRTaG93RGVidWdCb3JkZXIoYm9vbCkgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFNob3dSZXBhaW50Q291bnRlcihib29sKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgZmx1c2hDb21wb3NpdGluZ1N0YXRlKGNvbnN0IEZsb2F0
UmVjdCYpOwogICAgIHZpcnR1YWwgdm9pZCBmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5
ZXJPbmx5KCk7CiAgICAgdmlydHVhbCB2b2lkIHNldE5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKTsK
QEAgLTkzLDEwICs5NCwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRGaXhlZFRvVmlld3BvcnQo
Ym9vbCBmaXhlZCkgeyBtX2ZpeGVkVG9WaWV3cG9ydCA9IGZpeGVkOyB9CiAgICAgYm9vbCBmaXhl
ZFRvVmlld3BvcnQoKSBjb25zdCB7IHJldHVybiBtX2ZpeGVkVG9WaWV3cG9ydDsgfQogCi0gICAg
dm9pZCBkcmF3UmVwYWludENvdW50ZXIoR3JhcGhpY3NDb250ZXh0Kik7CisgICAgQ29sb3IgZGVi
dWdCb3JkZXJDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdCb3JkZXJDb2xvcjsgfQorICAg
IGZsb2F0IGRlYnVnQm9yZGVyV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnQm9yZGVyV2lk
dGg7IH0KKworICAgIHZvaWQgc2V0UmVwYWludENvdW50KGludCB2YWx1ZSk7CisKIHByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZURlc3Ryb3llZCgpOwogICAgIHZvaWQgZGlkRmx1c2hD
b21wb3NpdGluZ1N0YXRlKCk7CisgICAgdm9pZCB1cGRhdGVEZWJ1Z0JvcmRlckFuZFJlcGFpbnRD
b3VudCgpOwogICAgIHZvaWQgdXBkYXRlQmFja2luZ1N0b3JlKCk7CiAgICAgdm9pZCBwcmVwYXJl
QmFja2luZ1N0b3JlKCk7CiAgICAgYm9vbCBzaG91bGRIYXZlQmFja2luZ1N0b3JlKCkgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXIuaAppbmRleCBjMzNjZDQwNGNkOWJmMjM4MmMyNWI2Y2NjNjkyNDNmMTAxZDA4
NmE4Li5hODVhNDk3ODRjM2ZkOWI5OGVhNGVhZWNjMzYwNDQ1MDAzYzkzYjQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyLmgKQEAgLTU5LDkgKzU5LDE5IEBAIHB1YmxpYzoKICAgICBmbG9hdCBvcGFjaXR5OwogICAg
IFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBtYXNrOwogCisgICAgYm9vbCBzaG93RGVidWdCb3JkZXJz
OworICAgIENvbG9yIGRlYnVnQm9yZGVyQ29sb3I7CisgICAgZmxvYXQgZGVidWdCb3JkZXJXaWR0
aDsKKyAgICBib29sIHNob3dSZXBhaW50Q291bnRlcjsKKyAgICBpbnQgcmVwYWludENvdW50Owor
CiAgICAgVGV4dHVyZU1hcHBlclBhaW50UGFyYW1ldGVycygpCiAgICAgICAgIDogdGV4dHVyZU1h
cHBlcigwKQogICAgICAgICAsIG9wYWNpdHkoMSkKKyAgICAgICAgLCBzaG93RGVidWdCb3JkZXJz
KGZhbHNlKQorICAgICAgICAsIGRlYnVnQm9yZGVyV2lkdGgoMCkKKyAgICAgICAgLCBzaG93UmVw
YWludENvdW50ZXIoZmFsc2UpCisgICAgICAgICwgcmVwYWludENvdW50KDApCiAgICAgeyB9CiB9
OwogCkBAIC0xNDQsNyArMTU0LDcgQEAgcHVibGljOgogICAgIH07CiAKICAgICB2aXJ0dWFsIHZv
aWQgZHJhd0JvcmRlcihjb25zdCBDb2xvciYsIGZsb2F0IGJvcmRlcldpZHRoLCBjb25zdCBGbG9h
dFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdN
YXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRy
YXdSZXBhaW50Q291bnRlcihpbnQgdmFsdWUsIGludCBwb2ludFNpemUsIGNvbnN0IEZsb2F0UG9p
bnQmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4ID0gVHJhbnNm
b3JtYXRpb25NYXRyaXgoKSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVwYWludENvdW50
ZXIoaW50IHZhbHVlLCBjb25zdCBDb2xvciYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgo
KSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3VGV4dHVyZShjb25zdCBCaXRtYXBUZXh0dXJl
JiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBt
b2RlbFZpZXdNYXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBmbG9hdCBvcGFjaXR5ID0g
MS4wZiwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUgPSAwLCB1bnNpZ25lZCBleHBv
c2VkRWRnZXMgPSBBbGxFZGdlcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3U29saWRDb2xv
cihjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IENv
bG9yJikgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5jcHAKaW5k
ZXggOTdmNzEwYzdlMGFlMTdiZDg5MTk0YzYyZmUxZjBjMTdjNGE4OWFmMC4uMzY3OTc3OTQ2ZmRk
MTQyMjc3NWU5N2U4ODc1MDZkMjk2MGNkZTY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
QmFja2luZ1N0b3JlLmNwcApAQCAtNTQsOCArNTQsMTQgQEAgUGFzc1JlZlB0cjxCaXRtYXBUZXh0
dXJlPiBUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZTo6dGV4dHVyZSgpIGNvbnN0CiAK
IHZvaWQgVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU6OnBhaW50VG9UZXh0dXJlTWFw
cGVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVGV4dHVyZU1hcHBlclBhaW50
UGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKLSAgICBpZiAobV9ncmFwaGljc1N1cmZhY2UpCi0g
ICAgICAgIG1fZ3JhcGhpY3NTdXJmYWNlLT5wYWludFRvVGV4dHVyZU1hcHBlcihwYXJhbWV0ZXJz
LnRleHR1cmVNYXBwZXIsIHRhcmdldFJlY3QsIHBhcmFtZXRlcnMudHJhbnNmb3JtLCBwYXJhbWV0
ZXJzLm9wYWNpdHksIHBhcmFtZXRlcnMubWFzay5nZXQoKSk7CisgICAgaWYgKCFtX2dyYXBoaWNz
U3VyZmFjZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9ncmFwaGljc1N1cmZhY2UtPnBhaW50
VG9UZXh0dXJlTWFwcGVyKHBhcmFtZXRlcnMudGV4dHVyZU1hcHBlciwgdGFyZ2V0UmVjdCwgcGFy
YW1ldGVycy50cmFuc2Zvcm0sIHBhcmFtZXRlcnMub3BhY2l0eSwgcGFyYW1ldGVycy5tYXNrLmdl
dCgpKTsKKyAgICBpZiAocGFyYW1ldGVycy5zaG93RGVidWdCb3JkZXJzKQorICAgICAgICBwYXJh
bWV0ZXJzLnRleHR1cmVNYXBwZXItPmRyYXdCb3JkZXIocGFyYW1ldGVycy5kZWJ1Z0JvcmRlckNv
bG9yLCBwYXJhbWV0ZXJzLmRlYnVnQm9yZGVyV2lkdGgsIHRhcmdldFJlY3QsIHBhcmFtZXRlcnMu
dHJhbnNmb3JtKTsKKyAgICBpZiAocGFyYW1ldGVycy5zaG93UmVwYWludENvdW50ZXIpCisgICAg
ICAgIHBhcmFtZXRlcnMudGV4dHVyZU1hcHBlci0+ZHJhd1JlcGFpbnRDb3VudGVyKHBhcmFtZXRl
cnMucmVwYWludENvdW50LCBwYXJhbWV0ZXJzLmRlYnVnQm9yZGVyQ29sb3IsIHRhcmdldFJlY3Qu
bG9jYXRpb24oKSwgcGFyYW1ldGVycy50cmFuc2Zvcm0pOwogfQogI2VuZGlmCiAKQEAgLTEwNiw3
ICsxMTIsNiBAQCB2b2lkIFRleHR1cmVNYXBwZXJUaWxlOjpwYWludChUZXh0dXJlTWFwcGVyKiB0
ZXh0dXJlTWFwcGVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbgogfQogCiBUZXh0dXJlTWFwcGVyVGls
ZWRCYWNraW5nU3RvcmU6OlRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZSgpCi0gICAgOiBt
X2RyYXdzRGVidWdCb3JkZXJzKGZhbHNlKQogewogfQogCkBAIC0xNDAsOCArMTQ1LDEwIEBAIHZv
aWQgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpwYWludFRvVGV4dHVyZU1hcHBlcihj
b25zdCBGbG9hdFJlY3QmIHRhcmdlCiAgICAgYWRqdXN0ZWRUcmFuc2Zvcm0ubXVsdGlwbHkoVHJh
bnNmb3JtYXRpb25NYXRyaXg6OnJlY3RUb1JlY3QocmVjdCgpLCB0YXJnZXRSZWN0KSk7CiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3RpbGVzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIG1f
dGlsZXNbaV0ucGFpbnQocGFyYW1ldGVycy50ZXh0dXJlTWFwcGVyLCBhZGp1c3RlZFRyYW5zZm9y
bSwgcGFyYW1ldGVycy5vcGFjaXR5LCBwYXJhbWV0ZXJzLm1hc2suZ2V0KCksIGNhbGN1bGF0ZUV4
cG9zZWRUaWxlRWRnZXMocmVjdCgpLCBtX3RpbGVzW2ldLnJlY3QoKSkpOwotICAgICAgICBpZiAo
bV9kcmF3c0RlYnVnQm9yZGVycykKLSAgICAgICAgICAgIHBhcmFtZXRlcnMudGV4dHVyZU1hcHBl
ci0+ZHJhd0JvcmRlcihtX2RlYnVnQm9yZGVyQ29sb3IsIG1fZGVidWdCb3JkZXJXaWR0aCwgbV90
aWxlc1tpXS5yZWN0KCksIGFkanVzdGVkVHJhbnNmb3JtKTsKKyAgICAgICAgaWYgKHBhcmFtZXRl
cnMuc2hvd0RlYnVnQm9yZGVycykKKyAgICAgICAgICAgIHBhcmFtZXRlcnMudGV4dHVyZU1hcHBl
ci0+ZHJhd0JvcmRlcihwYXJhbWV0ZXJzLmRlYnVnQm9yZGVyQ29sb3IsIHBhcmFtZXRlcnMuZGVi
dWdCb3JkZXJXaWR0aCwgbV90aWxlc1tpXS5yZWN0KCksIGFkanVzdGVkVHJhbnNmb3JtKTsKKyAg
ICAgICAgaWYgKHBhcmFtZXRlcnMuc2hvd1JlcGFpbnRDb3VudGVyKQorICAgICAgICAgICAgcGFy
YW1ldGVycy50ZXh0dXJlTWFwcGVyLT5kcmF3UmVwYWludENvdW50ZXIocGFyYW1ldGVycy5yZXBh
aW50Q291bnQsIHBhcmFtZXRlcnMuZGVidWdCb3JkZXJDb2xvciwgbV90aWxlc1tpXS5yZWN0KCku
bG9jYXRpb24oKSwgYWRqdXN0ZWRUcmFuc2Zvcm0pOwogICAgIH0KIH0KIApAQCAtMjM0LDExICsy
NDEsNSBAQCBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IFRleHR1cmVNYXBwZXJUaWxlZEJhY2tp
bmdTdG9yZTo6dGV4dHVyZSgpIGNvbnN0CiAgICAgcmV0dXJuIFBhc3NSZWZQdHI8Qml0bWFwVGV4
dHVyZT4oKTsKIH0KIAotdm9pZCBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OnNldERl
YnVnQm9yZGVyKGNvbnN0IENvbG9yJiBjb2xvciwgZmxvYXQgd2lkdGgpCi17Ci0gICAgbV9kZWJ1
Z0JvcmRlckNvbG9yID0gY29sb3I7Ci0gICAgbV9kZWJ1Z0JvcmRlcldpZHRoID0gd2lkdGg7Ci19
Ci0KIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmgKaW5kZXgg
NjRiMTMwZGRkZjM0MTIwOWI4MDEzNjQwYjZmNzQxODRiMjRkNTVmMi4uMjc1NzNjY2M5NDVhZDM3
M2Q1ODIzYjdiZmZlOGE5YmFmN2ZmNjhmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tp
bmdTdG9yZS5oCkBAIC05OCw4ICs5OCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZUNvbnRl
bnRzKFRleHR1cmVNYXBwZXIqLCBHcmFwaGljc0xheWVyKiwgY29uc3QgRmxvYXRTaXplJiwgY29u
c3QgSW50UmVjdCYsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNvbnRlbnRzRmxhZyk7CiAKICAgICB2
b2lkIHNldENvbnRlbnRzVG9JbWFnZShJbWFnZSogaW1hZ2UpIHsgbV9pbWFnZSA9IGltYWdlOyB9
Ci0gICAgdm9pZCBzZXRTaG93RGVidWdCb3JkZXJzKGJvb2wgZHJhd3NEZWJ1Z0JvcmRlcnMpIHsg
bV9kcmF3c0RlYnVnQm9yZGVycyA9IGRyYXdzRGVidWdCb3JkZXJzOyB9Ci0gICAgdm9pZCBzZXRE
ZWJ1Z0JvcmRlcihjb25zdCBDb2xvciYsIGZsb2F0IHdpZHRoKTsKIAogcHJpdmF0ZToKICAgICBU
ZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUoKTsKQEAgLTExMCwxMCArMTA4LDYgQEAgcHJp
dmF0ZToKICAgICBWZWN0b3I8VGV4dHVyZU1hcHBlclRpbGU+IG1fdGlsZXM7CiAgICAgRmxvYXRT
aXplIG1fc2l6ZTsKICAgICBSZWZQdHI8SW1hZ2U+IG1faW1hZ2U7Ci0KLSAgICBib29sIG1fZHJh
d3NEZWJ1Z0JvcmRlcnM7Ci0gICAgQ29sb3IgbV9kZWJ1Z0JvcmRlckNvbG9yOwotICAgIGZsb2F0
IG1fZGVidWdCb3JkZXJXaWR0aDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKaW5kZXgg
OGVjOWUyZjA5ZTIwZWY2ZjU5ZjIzN2EzMjRhNDU1NWU5NzczZGY2YS4uODRjNjA0ZmIyZWUzOGZj
N2E5NDgxYjRkMmFhZmJmMTE4ODE3YWRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKQEAgLTMy
MSw4ICszMjEsMTQgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdCb3JkZXIoY29uc3QgQ29s
b3ImIGNvbG9yLCBmbG9hdCB3aWR0aCwgY29uc3QgRmxvYXRSZWMKICAgICBkcmF3UXVhZCh0YXJn
ZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIHByb2dyYW0uZ2V0KCksIEdyYXBoaWNzQ29udGV4dDNE
OjpMSU5FX0xPT1AsIGNvbG9yLmhhc0FscGhhKCkgPyBTaG91bGRCbGVuZCA6IDApOwogfQogCi12
b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1JlcGFpbnRDb3VudGVyKGludCB2YWx1ZSwgaW50IHBv
aW50U2l6ZSwgY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0UG9pbnQsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgpCitzdGF0aWMgaW5saW5lIFJHQkEzMiBjb252ZXJ0
QUJHUlRvQVJHQihSR0JBMzIgcGl4ZWwpCiB7CisgICAgcmV0dXJuICgocGl4ZWwgPDwgMTYpICYg
MHhmZjAwMDApIHwgKChwaXhlbCA+PiAxNikgJiAweGZmKSB8IChwaXhlbCAmIDB4ZmYwMGZmMDAp
OworfQorCit2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1JlcGFpbnRDb3VudGVyKGludCB2YWx1
ZSwgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRQb2ludCwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCkKK3sKKyAgICBzdGF0aWMg
Y29uc3QgaW50IHBvaW50U2l6ZSA9IDg7CiAjaWYgUExBVEZPUk0oUVQpCiAgICAgUVN0cmluZyBj
b3VudGVyU3RyaW5nID0gUVN0cmluZzo6bnVtYmVyKHZhbHVlKTsKIApAQCAtMzM5LDcgKzM0NSw3
IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3UmVwYWludENvdW50ZXIoaW50IHZhbHVlLCBp
bnQgcG9pbnRTaXplLCBjb25zdCBGbG9hdFBvCiAKICAgICBRSW1hZ2UgaW1hZ2Uoc2l6ZSwgTmF0
aXZlSW1hZ2VRdDo6ZGVmYXVsdEZvcm1hdEZvckFscGhhRW5hYmxlZEltYWdlcygpKTsKICAgICBR
UGFpbnRlciBwYWludGVyKCZpbWFnZSk7Ci0gICAgcGFpbnRlci5maWxsUmVjdChzb3VyY2VSZWN0
LCBRdDo6Ymx1ZSk7IC8vIFNpbmNlIHdlIHdvbid0IHN3YXAgUitCIGZvciBzcGVlZCwgdGhpcyB3
aWxsIHBhaW50IHJlZC4KKyAgICBwYWludGVyLmZpbGxSZWN0KHNvdXJjZVJlY3QsIGNvbnZlcnRB
QkdSVG9BUkdCKGNvbG9yLnJnYigpKSk7IC8vIFNpbmNlIHdlIHdvbid0IHN3YXAgUitCIGZvciBz
cGVlZCwgdGhpcyB3aWxsIHBhaW50IHRoZSBnaXZlbiBjb2xvci4KICAgICBwYWludGVyLnNldEZv
bnQoZm9udCk7CiAgICAgcGFpbnRlci5zZXRQZW4oUXQ6OndoaXRlKTsKICAgICBwYWludGVyLmRy
YXdUZXh0KDIsIGhlaWdodCAqIDAuODUsIGNvdW50ZXJTdHJpbmcpOwpAQCAtMzU4LDcgKzM2NCw3
IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3UmVwYWludENvdW50ZXIoaW50IHZhbHVlLCBp
bnQgcG9pbnRTaXplLCBjb25zdCBGbG9hdFBvCiAgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNl
ID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGUoQ0FJUk9fRk9STUFUX0FSR0IzMiwgd2lkdGgs
IGhlaWdodCk7CiAgICAgY2Fpcm9fdCogY3IgPSBjYWlyb19jcmVhdGUoc3VyZmFjZSk7CiAKLSAg
ICBjYWlyb19zZXRfc291cmNlX3JnYihjciwgMCwgMCwgMSk7IC8vIFNpbmNlIHdlIHdvbid0IHN3
YXAgUitCIGZvciBzcGVlZCwgdGhpcyB3aWxsIHBhaW50IHJlZC4KKyAgICBjYWlyb19zZXRfc291
cmNlX3JnYmEoY3IsIGNvbG9yLmJsdWUoKSwgY29sb3IuZ3JlZW4oKSwgY29sb3IucmVkKCksIGNv
bG9yLmFscGhhKCkpOyAvLyBTaW5jZSB3ZSB3b24ndCBzd2FwIFIrQiBmb3Igc3BlZWQsIHRoaXMg
d2lsbCBwYWludCB0aGUgZ2l2ZW4gY29sb3IuCiAgICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLCAwLCAw
LCB3aWR0aCwgaGVpZ2h0KTsKICAgICBjYWlyb19maWxsKGNyKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5o
CmluZGV4IDU5ZGIzZDM5NzljMGQxMGJlNDE0ODE1ZTc4MjMxNWRmMDdjMzVhMTYuLjU3NWI4NjFi
ZDQyNmQ3YTJhY2VmNzJkMWQ3NTU3YjA3MjhhNjBjZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmgKQEAg
LTUxLDcgKzUxLDcgQEAgcHVibGljOgogCiAgICAgLy8gVGV4dHVyZU1hcHBlciBpbXBsZW1lbnRh
dGlvbgogICAgIHZpcnR1YWwgdm9pZCBkcmF3Qm9yZGVyKGNvbnN0IENvbG9yJiwgZmxvYXQgYm9y
ZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpIE9WRVJS
SURFOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVwYWludENvdW50ZXIoaW50IHZhbHVlLCBpbnQg
cG9pbnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IG1vZGVsVmlld01hdHJpeCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBkcmF3UmVwYWludENvdW50ZXIoaW50IHZhbHVlLCBjb25zdCBDb2xvciYs
IGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3
TWF0cml4ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIGRyYXdUZXh0dXJlKGNvbnN0IEJpdG1hcFRleHR1cmUmLCBjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEJpdG1hcFRl
eHR1cmUqIG1hc2tUZXh0dXJlLCB1bnNpZ25lZCBleHBvc2VkRWRnZXMpIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCBkcmF3VGV4dHVyZShQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUsIEZsYWdz
LCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFj
aXR5LCBjb25zdCBCaXRtYXBUZXh0dXJlKiBtYXNrVGV4dHVyZSwgdW5zaWduZWQgZXhwb3NlZEVk
Z2VzID0gQWxsRWRnZXMpOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3U29saWRDb2xvcihjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IENvbG9yJikgT1ZF
UlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuY3BwCmluZGV4IDVlM2Nj
OTAzODQ3M2YxMDQwMDE5ZmY0MDVjN2FlNDZkNjk3ZjU3MTYuLmY1ZDNkOWQyOWE3MDg0N2MwOWJk
YmY1NDFhNmU0NWVhYjdmOGUzZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZm
ZXIuY3BwCkBAIC0yNiw2ICsyNiwxMiBAQAogI2luY2x1ZGUgIk5hdGl2ZUltYWdlUXQuaCIKICNl
bmRpZgogCisjaWYgVVNFKENBSVJPKQorI2luY2x1ZGUgIkNhaXJvVXRpbGl0aWVzLmgiCisjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2Vsc2UKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRl
ZC5oIgorI2VuZGlmCiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC0xNjQsNiArMTcwLDM4IEBAIHZvaWQgVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyOjpk
cmF3U29saWRDb2xvcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IFRyYW5zCiAgICAgY29u
dGV4dC0+cmVzdG9yZSgpOwogfQogCisjaWYgVVNFKENBSVJPKQordm9pZCBUZXh0dXJlTWFwcGVy
SW1hZ2VCdWZmZXI6OmRyYXdSZXBhaW50Q291bnRlcihpbnQgdmFsdWUsIGNvbnN0IENvbG9yJiBj
b2xvciwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2Rl
bFZpZXdNYXRyaXgpCit7CisgICAgc3RhdGljIGNvbnN0IGludCBwb2ludFNpemUgPSA4OworICAg
IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9IGN1cnJlbnRDb250ZXh0KCk7CisgICAgY2Fpcm9f
dCogY3IgPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKKyAgICBjYWlyb19zYXZl
KGNyKTsKKworICAgIENTdHJpbmcgY291bnRlclN0cmluZyA9IFN0cmluZzo6bnVtYmVyKHZhbHVl
KS5hc2NpaSgpOworICAgIC8vIGNhaXJvX3RleHRfZXh0ZW50cygpIHJlcXVpcmVzIGEgY2Fpcm9f
dCwgc28gZGltZW5zaW9ucyBuZWVkIHRvIGJlIGd1ZXNzdGltYXRlZC4KKyAgICBpbnQgd2lkdGgg
PSBjb3VudGVyU3RyaW5nLmxlbmd0aCgpICogcG9pbnRTaXplICogMS4yOworICAgIGludCBoZWln
aHQgPSBwb2ludFNpemUgKiAxLjU7CisKKyAgICBzZXRTb3VyY2VSR0JBRnJvbUNvbG9yKGNyLCBj
b2xvcik7CisgICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLCAwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKKyAg
ICBjYWlyb19maWxsKGNyKTsKKworICAgIGNhaXJvX3NlbGVjdF9mb250X2ZhY2UoY3IsICJNb25v
c3BhY2UiLCBDQUlST19GT05UX1NMQU5UX05PUk1BTCwgQ0FJUk9fRk9OVF9XRUlHSFRfQk9MRCk7
CisgICAgY2Fpcm9fc2V0X2ZvbnRfc2l6ZShjciwgcG9pbnRTaXplKTsKKyAgICBjYWlyb19zZXRf
c291cmNlX3JnYihjciwgMSwgMSwgMSk7CisgICAgY2Fpcm9fbW92ZV90byhjciwgMiwgcG9pbnRT
aXplKTsKKyAgICBjYWlyb19zaG93X3RleHQoY3IsIGNvdW50ZXJTdHJpbmcuZGF0YSgpKTsKKwor
ICAgIGNhaXJvX3Jlc3RvcmUoY3IpOworfTsKKyNlbHNlCit2b2lkIFRleHR1cmVNYXBwZXJJbWFn
ZUJ1ZmZlcjo6ZHJhd1JlcGFpbnRDb3VudGVyKGludCAvKiB2YWx1ZSAqLywgY29uc3QgQ29sb3Im
LCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9OworI2VuZGlmCisKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMp
CiBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IEJpdG1hcFRleHR1cmVJbWFnZUJ1ZmZlcjo6YXBw
bHlGaWx0ZXJzKFRleHR1cmVNYXBwZXIqLCBjb25zdCBCaXRtYXBUZXh0dXJlJiBjb250ZW50VGV4
dHVyZSwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VC
dWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVySW1hZ2VCdWZmZXIuaAppbmRleCA5ZGU2ZDRjYmQ1ZWIxN2U5MzQ4ODAxOGE2MmE3MTMx
ZDg5NzM4NGViLi4zNjc3YTNmZTAzM2M1MDhkMDBjZWY5ODYzNGFjOTQzZTM2YmQ3MmJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5oCkBAIC01NywxMCArNTcsNyBAQCBwdWJs
aWM6CiAgICAgewogICAgICAgICBVTlVTRURfUEFSQU0obW9kZWxWaWV3TWF0cml4KTsKICAgICB9
OwotICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVwYWludENvdW50ZXIoaW50IC8qIHZhbHVlICovLCBp
bnQgLyogcG9pbnRTaXplICovLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpIE9WRVJS
SURFCi0gICAgewotICAgICAgICBVTlVTRURfUEFSQU0obW9kZWxWaWV3TWF0cml4KTsKLSAgICB9
OworICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVwYWludENvdW50ZXIoaW50IHZhbHVlLCBjb25zdCBD
b2xvciYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9k
ZWxWaWV3TWF0cml4ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIGRyYXdUZXh0dXJlKGNvbnN0IEJpdG1hcFRleHR1cmUmLCBjb25zdCBGbG9hdFJl
Y3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgb3BhY2l0
eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUsIHVuc2lnbmVkIGV4cG9zZWRFZGdl
cykgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdTb2xpZENvbG9yKGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgQ29sb3ImKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5DbGlwKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiwgY29uc3QgRmxvYXRSZWN0JikgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3Bw
CmluZGV4IDI1YmI3Y2JhMWJhOTIxNTY1NTQ3YjcyNjY4NDk1OGVkN2Y2Mzg1YjYuLjkxOWQzMzA1
YWU1ZmE4MTI4YWY2Yzk2MzNkZTcwZDY0Y2FlYzkzNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5
ZXIuY3BwCkBAIC0xMTAsNiArMTEwLDExIEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpwYWlu
dFNlbGYoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucykKIAogICAgIFRl
eHR1cmVNYXBwZXJQYWludFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9IG9wdGlvbnMucGFyYW1ldGVy
czsKICAgICBwYXJhbWV0ZXJzLnRyYW5zZm9ybSA9IHRyYW5zZm9ybTsKKyAgICBwYXJhbWV0ZXJz
LnNob3dEZWJ1Z0JvcmRlcnMgPSBtX3N0YXRlLnNob3dEZWJ1Z0JvcmRlcnM7CisgICAgcGFyYW1l
dGVycy5kZWJ1Z0JvcmRlckNvbG9yID0gbV9zdGF0ZS5kZWJ1Z0JvcmRlckNvbG9yOworICAgIHBh
cmFtZXRlcnMuZGVidWdCb3JkZXJXaWR0aCA9IG1fc3RhdGUuZGVidWdCb3JkZXJXaWR0aDsKKyAg
ICBwYXJhbWV0ZXJzLnNob3dSZXBhaW50Q291bnRlciA9IG1fc3RhdGUuc2hvd1JlcGFpbnRDb3Vu
dGVyOworICAgIHBhcmFtZXRlcnMucmVwYWludENvdW50ID0gbV9zdGF0ZS5yZXBhaW50Q291bnQ7
CiAKICAgICBpZiAobV9zdGF0ZS5zb2xpZENvbG9yLmlzVmFsaWQoKSAmJiAhbV9zdGF0ZS5jb250
ZW50c1JlY3QuaXNFbXB0eSgpKSB7CiAgICAgICAgIGlmICghbV9zdGF0ZS5zb2xpZENvbG9yLmFs
cGhhKCkpCkBAIC0xMTksNyArMTI0LDEyIEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpwYWlu
dFNlbGYoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucykKICAgICAgICAg
ZmxvYXQgciwgZywgYiwgYTsKICAgICAgICAgY29sb3IuZ2V0UkdCQShyLCBnLCBiLCBhKTsKICAg
ICAgICAgY29sb3IgPSBDb2xvcihyICogcGFyYW1ldGVycy5vcGFjaXR5LCBnICogcGFyYW1ldGVy
cy5vcGFjaXR5LCBiICogcGFyYW1ldGVycy5vcGFjaXR5LCBhICogcGFyYW1ldGVycy5vcGFjaXR5
KTsKLSAgICAgICAgb3B0aW9ucy5wYXJhbWV0ZXJzLnRleHR1cmVNYXBwZXItPmRyYXdTb2xpZENv
bG9yKG1fc3RhdGUuY29udGVudHNSZWN0LCBwYXJhbWV0ZXJzLnRyYW5zZm9ybSwgY29sb3IpOwor
ICAgICAgICBwYXJhbWV0ZXJzLnRleHR1cmVNYXBwZXItPmRyYXdTb2xpZENvbG9yKG1fc3RhdGUu
Y29udGVudHNSZWN0LCBwYXJhbWV0ZXJzLnRyYW5zZm9ybSwgY29sb3IpOworCisgICAgICAgIGlm
IChwYXJhbWV0ZXJzLnNob3dEZWJ1Z0JvcmRlcnMpCisgICAgICAgICAgICBwYXJhbWV0ZXJzLnRl
eHR1cmVNYXBwZXItPmRyYXdCb3JkZXIocGFyYW1ldGVycy5kZWJ1Z0JvcmRlckNvbG9yLCBwYXJh
bWV0ZXJzLmRlYnVnQm9yZGVyV2lkdGgsIGxheWVyUmVjdCgpLCBwYXJhbWV0ZXJzLnRyYW5zZm9y
bSk7CisgICAgICAgIGlmIChwYXJhbWV0ZXJzLnNob3dSZXBhaW50Q291bnRlcikKKyAgICAgICAg
ICAgIHBhcmFtZXRlcnMudGV4dHVyZU1hcHBlci0+ZHJhd1JlcGFpbnRDb3VudGVyKHBhcmFtZXRl
cnMucmVwYWludENvdW50LCBwYXJhbWV0ZXJzLmRlYnVnQm9yZGVyQ29sb3IsIGxheWVyUmVjdCgp
LmxvY2F0aW9uKCksIHBhcmFtZXRlcnMudHJhbnNmb3JtKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtMzc0LDggKzM4NCw2IEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpmbHVzaENv
bXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KEdyYXBoaWNzTGF5ZXJUZXh0CiAgICAgaWYg
KGNoYW5nZU1hc2sgPT0gTm9DaGFuZ2VzICYmIGdyYXBoaWNzTGF5ZXItPm1fYW5pbWF0aW9ucy5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdyYXBoaWNzTGF5ZXItPnVwZGF0ZURl
YnVnSW5kaWNhdG9ycygpOwotCiAgICAgaWYgKGNoYW5nZU1hc2sgJiBDaGlsZHJlbkNoYW5nZSkK
ICAgICAgICAgc2V0Q2hpbGRyZW4oZ3JhcGhpY3NMYXllci0+Y2hpbGRyZW4oKSk7CiAKQEAgLTM5
Miw2ICs0MDAsOSBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6Zmx1c2hDb21wb3NpdGluZ1N0
YXRlRm9yVGhpc0xheWVyT25seShHcmFwaGljc0xheWVyVGV4dAogICAgIGlmIChjaGFuZ2VNYXNr
ICYgQW5pbWF0aW9uQ2hhbmdlKQogICAgICAgICBtX2FuaW1hdGlvbnMgPSBncmFwaGljc0xheWVy
LT5tX2FuaW1hdGlvbnM7CiAKKyAgICBpZiAoY2hhbmdlTWFzayAmIFJlcGFpbnRDb3VudENoYW5n
ZSkKKyAgICAgICAgbV9zdGF0ZS5yZXBhaW50Q291bnQgPSBncmFwaGljc0xheWVyLT5yZXBhaW50
Q291bnQoKTsKKwogICAgIG1fc3RhdGUubWFza0xheWVyID0gdG9UZXh0dXJlTWFwcGVyTGF5ZXIo
Z3JhcGhpY3NMYXllci0+bWFza0xheWVyKCkpOwogICAgIG1fc3RhdGUucmVwbGljYUxheWVyID0g
dG9UZXh0dXJlTWFwcGVyTGF5ZXIoZ3JhcGhpY3NMYXllci0+cmVwbGljYUxheWVyKCkpOwogICAg
IG1fc3RhdGUucG9zID0gZ3JhcGhpY3NMYXllci0+cG9zaXRpb24oKTsKQEAgLTQxNCw2ICs0MjUs
MTEgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRo
aXNMYXllck9ubHkoR3JhcGhpY3NMYXllclRleHQKICNlbmRpZgogICAgIG1fZml4ZWRUb1ZpZXdw
b3J0ID0gZ3JhcGhpY3NMYXllci0+Zml4ZWRUb1ZpZXdwb3J0KCk7CiAKKyAgICBtX3N0YXRlLnNo
b3dEZWJ1Z0JvcmRlcnMgPSBncmFwaGljc0xheWVyLT5pc1Nob3dpbmdEZWJ1Z0JvcmRlcigpOwor
ICAgIG1fc3RhdGUuZGVidWdCb3JkZXJDb2xvciA9IHRvR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXIoZ3JhcGhpY3NMYXllciktPmRlYnVnQm9yZGVyQ29sb3IoKTsKKyAgICBtX3N0YXRlLmRlYnVn
Qm9yZGVyV2lkdGggPSB0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKGdyYXBoaWNzTGF5ZXIp
LT5kZWJ1Z0JvcmRlcldpZHRoKCk7CisgICAgbV9zdGF0ZS5zaG93UmVwYWludENvdW50ZXIgPSBn
cmFwaGljc0xheWVyLT5pc1Nob3dpbmdSZXBhaW50Q291bnRlcigpOworCiAgICAgbV9jb250ZW50
c0xheWVyID0gZ3JhcGhpY3NMYXllci0+cGxhdGZvcm1MYXllcigpOwogCiAgICAgbV9lZmZlY3Rp
dmVUcmFuc2Zvcm0uc2V0UG9zaXRpb24oYWRqdXN0ZWRQb3NpdGlvbigpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyTGF5ZXIuaAppbmRleCA2MGRhM2UwMmFkZTI1MDBhMGRmYmI3OTM3NjNjZDNiNzlmMGExMDhh
Li42OGVlYzMyMmYwMDA2NmMxZmI1MTNjMWUxYzNhN2EzMWVkMjA0NzZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJMYXllci5oCkBAIC03MSw3ICs3MSwxMCBAQCBwdWJsaWM6CiAKICAgICAgICAgUmVwbGlj
YUxheWVyQ2hhbmdlID0gICAgICAgICgxTCA8PCAyMSksCiAgICAgICAgIEFuaW1hdGlvbkNoYW5n
ZSA9ICAgICAgICAgICAoMUwgPDwgMjIpLAotICAgICAgICBGaWx0ZXJDaGFuZ2UgPSAgICAgICAg
ICAgICAgKDFMIDw8IDIzKQorICAgICAgICBGaWx0ZXJDaGFuZ2UgPSAgICAgICAgICAgICAgKDFM
IDw8IDIzKSwKKworICAgICAgICBEZWJ1Z1Zpc3VhbHNDaGFuZ2UgPSAgICAgICAgKDFMIDw8IDI0
KSwKKyAgICAgICAgUmVwYWludENvdW50Q2hhbmdlID0gICAgICAgICgxTCA8PCAyNSkKICAgICB9
OwogCiAgICAgVGV4dHVyZU1hcHBlckxheWVyKCkKQEAgLTE3OCw2ICsxODEsOSBAQCBwcml2YXRl
OgogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKICAgICAgICAgRmlsdGVyT3BlcmF0aW9ucyBmaWx0
ZXJzOwogI2VuZGlmCisgICAgICAgIENvbG9yIGRlYnVnQm9yZGVyQ29sb3I7CisgICAgICAgIGZs
b2F0IGRlYnVnQm9yZGVyV2lkdGg7CisgICAgICAgIGludCByZXBhaW50Q291bnQ7CiAKICAgICAg
ICAgYm9vbCBwcmVzZXJ2ZXMzRCA6IDE7CiAgICAgICAgIGJvb2wgbWFza3NUb0JvdW5kcyA6IDE7
CkBAIC0xODYsMTEgKzE5MiwxNSBAQCBwcml2YXRlOgogICAgICAgICBib29sIGNvbnRlbnRzT3Bh
cXVlIDogMTsKICAgICAgICAgYm9vbCBiYWNrZmFjZVZpc2liaWxpdHkgOiAxOwogICAgICAgICBi
b29sIHZpc2libGUgOiAxOworICAgICAgICBib29sIHNob3dEZWJ1Z0JvcmRlcnMgOiAxOworICAg
ICAgICBib29sIHNob3dSZXBhaW50Q291bnRlciA6IDE7CiAKICAgICAgICAgU3RhdGUoKQogICAg
ICAgICAgICAgOiBvcGFjaXR5KDEpCiAgICAgICAgICAgICAsIG1hc2tMYXllcigwKQogICAgICAg
ICAgICAgLCByZXBsaWNhTGF5ZXIoMCkKKyAgICAgICAgICAgICwgZGVidWdCb3JkZXJXaWR0aCgw
KQorICAgICAgICAgICAgLCByZXBhaW50Q291bnQoMCkKICAgICAgICAgICAgICwgcHJlc2VydmVz
M0QoZmFsc2UpCiAgICAgICAgICAgICAsIG1hc2tzVG9Cb3VuZHMoZmFsc2UpCiAgICAgICAgICAg
ICAsIGRyYXdzQ29udGVudChmYWxzZSkKQEAgLTE5OCw2ICsyMDgsOCBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgLCBjb250ZW50c09wYXF1ZShmYWxzZSkKICAgICAgICAgICAgICwgYmFja2ZhY2VW
aXNpYmlsaXR5KGZhbHNlKQogICAgICAgICAgICAgLCB2aXNpYmxlKHRydWUpCisgICAgICAgICAg
ICAsIHNob3dEZWJ1Z0JvcmRlcnMoZmFsc2UpCisgICAgICAgICAgICAsIHNob3dSZXBhaW50Q291
bnRlcihmYWxzZSkKICAgICAgICAgewogICAgICAgICB9CiAgICAgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX3ZpZXcuY3BwCmluZGV4IGRlYmI3ZjdkNzJhMGU4MWE1ODBmMjRlMDA0MGExMWIwOGY2MDNh
MTAuLjNiZDc1ZWJjMDU4N2U2MGNmYWNmOGQ4YjE3NWNlNDZlZTMxMzdkZTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a192aWV3LmNwcApAQCAtODM3LDYgKzgzNyw5IEBAIHN0YXRpYyBFd2tfVmlld19Q
cml2YXRlX0RhdGEqIF9ld2tfdmlld19wcml2X25ldyhFd2tfVmlld19TbWFydF9EYXRhKiBzbWFy
dERhdGEpCiAgICAgcHJpdi0+cGFnZVNldHRpbmdzLT5zZXRJbnRlcmFjdGl2ZUZvcm1WYWxpZGF0
aW9uRW5hYmxlZCh0cnVlKTsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAg
cHJpdi0+cGFnZVNldHRpbmdzLT5zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZChmYWxz
ZSk7CisgICAgYm9vbCBzaG93RGVidWdWaXN1YWxzID0gU3RyaW5nKGdldGVudigiV0VCS0lUX1NI
T1dfQ09NUE9TSVRJTkdfREVCVUdfVklTVUFMUyIpKSA9PSAiMSI7CisgICAgcHJpdi0+cGFnZVNl
dHRpbmdzLT5zZXRTaG93RGVidWdCb3JkZXJzKHNob3dEZWJ1Z1Zpc3VhbHMpOworICAgIHByaXYt
PnBhZ2VTZXR0aW5ncy0+c2V0U2hvd1JlcGFpbnRDb3VudGVyKHNob3dEZWJ1Z1Zpc3VhbHMpOwog
I2VuZGlmCiAKICAgICB1cmwgPSBwcml2LT5wYWdlU2V0dGluZ3MtPnVzZXJTdHlsZVNoZWV0TG9j
YXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2
aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAppbmRl
eCAyOTMxMGQ0ZTlmZTQ4MTQ1NzAzZDk5NGY0ZDFlOWQwNzZhNDIwOGVlLi4yOGRkZjMxZDQwMTYx
MzQwNjJjMWEzOGM3NDgyODU3NWFmYjM4Njk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHdlYnZpZXcuY3BwCkBAIC0zNDM1LDYgKzM0MzUsOSBAQCBzdGF0aWMgdm9pZCB3ZWJr
aXRfd2ViX3ZpZXdfdXBkYXRlX3NldHRpbmdzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAKICNp
ZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgY29yZVNldHRpbmdzLT5zZXRBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZChzZXR0aW5nc1ByaXZhdGUtPmVuYWJsZUFjY2VsZXJh
dGVkQ29tcG9zaXRpbmcpOworICAgIGJvb2wgc2hvd0RlYnVnVmlzdWFscyA9IFN0cmluZyhnZXRl
bnYoIldFQktJVF9TSE9XX0NPTVBPU0lUSU5HX0RFQlVHX1ZJU1VBTFMiKSkgPT0gIjEiOworICAg
IGNvcmVTZXR0aW5ncy0+c2V0U2hvd0RlYnVnQm9yZGVycyhzaG93RGVidWdWaXN1YWxzKTsKKyAg
ICBjb3JlU2V0dGluZ3MtPnNldFNob3dSZXBhaW50Q291bnRlcihzaG93RGVidWdWaXN1YWxzKTsK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2V0
dGluZ3MuY3BwCmluZGV4IDlkYjAxYjExZThkNDQ4ZGY1MWQ5MjQyYzcxYzdlMDU5Y2VlYTYyZDUu
LjIzODE5ZjVhMDY2Njg5MWI2ZGY5NWYyMjkzZmU5M2JjNjkyNzZmNTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9x
dC9BcGkvcXdlYnNldHRpbmdzLmNwcApAQCAtMTUwLDYgKzE1MCwxMCBAQCB2b2lkIFFXZWJTZXR0
aW5nc1ByaXZhdGU6OmFwcGx5KCkKICAgICAgICAgc2V0dGluZ3MtPnNldEFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdGb3JBbmltYXRpb25FbmFibGVkKHZhbHVlKTsKICAgICAgICAgc2V0dGluZ3MtPnNl
dEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JWaWRlb0VuYWJsZWQoZmFsc2UpOwogICAgICAgICBz
ZXR0aW5ncy0+c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvclBsdWdpbnNFbmFibGVkKGZhbHNl
KTsKKworICAgICAgICBib29sIHNob3dEZWJ1Z1Zpc3VhbHMgPSBxZ2V0ZW52KCJRVF9XRUJLSVRf
U0hPV19DT01QT1NJVElOR19ERUJVR19WSVNVQUxTIikgPT0gIjEiOworICAgICAgICBzZXR0aW5n
cy0+c2V0U2hvd0RlYnVnQm9yZGVycyhzaG93RGVidWdWaXN1YWxzKTsKKyAgICAgICAgc2V0dGlu
Z3MtPnNldFNob3dSZXBhaW50Q291bnRlcihzaG93RGVidWdWaXN1YWxzKTsKICNlbmRpZgogI2lm
IEVOQUJMRShXRUJHTCkKICAgICAgICAgdmFsdWUgPSBhdHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0
aW5nczo6V2ViR0xFbmFibGVkLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllckluZm8uaCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJJbmZvLmgKaW5kZXgg
NjUyMDU2ZGQ4MTA0MjM2NDBmY2Y2OTY5MDVhN2RlNzM3ZDZkNGI5ZS4uMmVmOTllYzA2NzJmNzVh
OTg2OTNlNWRiZDkwMWI0NzMzYjcxMTY5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllckluZm8uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVySW5m
by5oCkBAIC02OCw2ICs2OCw4IEBAIHN0cnVjdCBDb29yZGluYXRlZExheWVySW5mbyB7CiAgICAg
ICAgICAgICBib29sIHByZXNlcnZlczNEIDogMTsKICAgICAgICAgICAgIGJvb2wgaXNSb290TGF5
ZXI6IDE7CiAgICAgICAgICAgICBib29sIGZpeGVkVG9WaWV3cG9ydCA6IDE7CisgICAgICAgICAg
ICBib29sIHNob3dEZWJ1Z0JvcmRlcnMgOiAxOworICAgICAgICAgICAgYm9vbCBzaG93UmVwYWlu
dENvdW50ZXIgOiAxOwogICAgICAgICB9OwogICAgICAgICB1bnNpZ25lZCBmbGFnczsKICAgICB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwCmluZGV4IDE2
MTE2ODRlM2I4MTdiZjIyZjM5ZTliNjAzMzM1M2JkMmI1NzdlNWQuLmIxOWYxNzc3MWMyNDY3ZmUx
ZjhjM2UwYjVlZDIwMWE4MzE1OWYzZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZEJhY2tpbmdTdG9yZS5jcHAKQEAgLTg4LDcgKzg4LDYgQEAgdm9pZCBDb29yZGluYXRlZEJhY2tp
bmdTdG9yZTo6dXBkYXRlVGlsZSh1aW50MzJfdCBpZCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVj
dCwKIHsKICAgICBIYXNoTWFwPHVpbnQzMl90LCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGU+
OjppdGVyYXRvciBpdCA9IG1fdGlsZXMuZmluZChpZCk7CiAgICAgQVNTRVJUKGl0ICE9IG1fdGls
ZXMuZW5kKCkpOwotICAgIGl0LT52YWx1ZS5pbmNyZW1lbnRSZXBhaW50Q291bnQoKTsKICAgICBp
dC0+dmFsdWUuc2V0QmFja0J1ZmZlcih0aWxlUmVjdCwgc291cmNlUmVjdCwgYmFja0J1ZmZlciwg
b2Zmc2V0KTsKIH0KIApAQCAtMTA5LDI3ICsxMDgsMTYgQEAgdm9pZCBDb29yZGluYXRlZEJhY2tp
bmdTdG9yZTo6c2V0U2l6ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUpCiAgICAgbV9z
aXplID0gc2l6ZTsKIH0KIAotc3RhdGljIGJvb2wgc2hvdWxkU2hvd1RpbGVEZWJ1Z1Zpc3VhbHMo
KQotewotI2lmIFBMQVRGT1JNKFFUKQotICAgIHJldHVybiAocWdldGVudigiUVRfV0VCS0lUX1NI
T1dfQ09NUE9TSVRJTkdfREVCVUdfVklTVUFMUyIpID09ICIxIik7Ci0jZWxpZiBVU0UoQ0FJUk8p
Ci0gICAgcmV0dXJuIChTdHJpbmcoZ2V0ZW52KCJXRUJLSVRfU0hPV19DT01QT1NJVElOR19ERUJV
R19WSVNVQUxTIikpID09ICIxIik7Ci0jZW5kaWYKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIHZv
aWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnBhaW50VGlsZXNUb1RleHR1cmVNYXBwZXIoVmVj
dG9yPFRleHR1cmVNYXBwZXJUaWxlKj4mIHRpbGVzLCBjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRQ
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7CiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCB0aWxlcy5zaXplKCk7ICsraSkgewogICAgICAgICBUZXh0dXJl
TWFwcGVyVGlsZSogdGlsZSA9IHRpbGVzW2ldOwogICAgICAgICB0aWxlLT5wYWludChwYXJhbWV0
ZXJzLnRleHR1cmVNYXBwZXIsIHBhcmFtZXRlcnMudHJhbnNmb3JtLCBwYXJhbWV0ZXJzLm9wYWNp
dHksIHBhcmFtZXRlcnMubWFzay5nZXQoKSwgY2FsY3VsYXRlRXhwb3NlZFRpbGVFZGdlcyhyZWN0
LCB0aWxlLT5yZWN0KCkpKTsKLSAgICAgICAgc3RhdGljIGJvb2wgc2hvdWxkRGVidWcgPSBzaG91
bGRTaG93VGlsZURlYnVnVmlzdWFscygpOwotICAgICAgICBpZiAoIXNob3VsZERlYnVnKQotICAg
ICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgcGFyYW1ldGVycy50ZXh0dXJlTWFwcGVyLT5k
cmF3Qm9yZGVyKENvbG9yKDB4RkYsIDAsIDApLCAyLCB0aWxlLT5yZWN0KCksIHBhcmFtZXRlcnMu
dHJhbnNmb3JtKTsKLSAgICAgICAgcGFyYW1ldGVycy50ZXh0dXJlTWFwcGVyLT5kcmF3UmVwYWlu
dENvdW50ZXIoc3RhdGljX2Nhc3Q8Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlKj4odGlsZSkt
PnJlcGFpbnRDb3VudCgpLCA4LCB0aWxlLT5yZWN0KCkubG9jYXRpb24oKSwgcGFyYW1ldGVycy50
cmFuc2Zvcm0pOworICAgICAgICBpZiAocGFyYW1ldGVycy5zaG93RGVidWdCb3JkZXJzKQorICAg
ICAgICAgICAgcGFyYW1ldGVycy50ZXh0dXJlTWFwcGVyLT5kcmF3Qm9yZGVyKHBhcmFtZXRlcnMu
ZGVidWdCb3JkZXJDb2xvciwgcGFyYW1ldGVycy5kZWJ1Z0JvcmRlcldpZHRoLCB0aWxlLT5yZWN0
KCksIHBhcmFtZXRlcnMudHJhbnNmb3JtKTsKKyAgICAgICAgaWYgKHBhcmFtZXRlcnMuc2hvd1Jl
cGFpbnRDb3VudGVyKQorICAgICAgICAgICAgcGFyYW1ldGVycy50ZXh0dXJlTWFwcGVyLT5kcmF3
UmVwYWludENvdW50ZXIocGFyYW1ldGVycy5yZXBhaW50Q291bnQsIHBhcmFtZXRlcnMuZGVidWdC
b3JkZXJDb2xvciwgdGlsZS0+cmVjdCgpLmxvY2F0aW9uKCksIHBhcmFtZXRlcnMudHJhbnNmb3Jt
KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5o
CmluZGV4IDJiYTMzYTFkZTFkYjlkZGVlYWEzYjQ2ZjgxMDFjYjFhZjgyYzczMDUuLjJiMWE3NmQx
NjZmYjkyMTU5MDQzZTlkZWExZWE5YTBhNWY5MDIxNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3Jl
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRCYWNraW5nU3RvcmUuaApAQCAtMzYsMTMgKzM2LDEwIEBAIHB1YmxpYzoKICAgICBl
eHBsaWNpdCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGUoZmxvYXQgc2NhbGUgPSAxKQogICAg
ICAgICA6IFRleHR1cmVNYXBwZXJUaWxlKFdlYkNvcmU6OkZsb2F0UmVjdCgpKQogICAgICAgICAs
IG1fc2NhbGUoc2NhbGUpCi0gICAgICAgICwgbV9yZXBhaW50Q291bnQoMCkKICAgICB7CiAgICAg
fQogCiAgICAgaW5saW5lIGZsb2F0IHNjYWxlKCkgY29uc3QgeyByZXR1cm4gbV9zY2FsZTsgfQot
ICAgIGlubGluZSB2b2lkIGluY3JlbWVudFJlcGFpbnRDb3VudCgpIHsgKyttX3JlcGFpbnRDb3Vu
dDsgfQotICAgIGlubGluZSBpbnQgcmVwYWludENvdW50KCkgY29uc3QgeyByZXR1cm4gbV9yZXBh
aW50Q291bnQ7IH0KICAgICB2b2lkIHN3YXBCdWZmZXJzKFdlYkNvcmU6OlRleHR1cmVNYXBwZXIq
KTsKICAgICB2b2lkIHNldEJhY2tCdWZmZXIoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmLCBQYXNzUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gYnVmZmVy
LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogCkBAIC01Miw3ICs0OSw2IEBAIHByaXZhdGU6
CiAgICAgV2ViQ29yZTo6SW50UmVjdCBtX3RpbGVSZWN0OwogICAgIFdlYkNvcmU6OkludFBvaW50
IG1fc3VyZmFjZU9mZnNldDsKICAgICBmbG9hdCBtX3NjYWxlOwotICAgIGludCBtX3JlcGFpbnRD
b3VudDsKIH07CiAKIGNsYXNzIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlIDogcHVibGljIFdlYkNv
cmU6OlRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3BwCmluZGV4IGJhYThmNjUyM2RlYmZkZWJi
YzRlNTIyYjQ3NWUxNGNjMThmZDJlYjUuLmVmNWU0NWZhOWJjMjM3MDE0NWNjY2QxZGNmODhjNmI0
MDU4YWE5YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJl
ZUhvc3RQcm94eS5jcHAKQEAgLTI0Miw2ICsyNDIsMTEgQEAgdm9pZCBDb29yZGluYXRlZExheWVy
VHJlZUhvc3RQcm94eTo6ZGVzdHJveUNhbnZhcyhDb29yZGluYXRlZExheWVySUQgaWQpCiB9CiAj
ZW5kaWYKIAordm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6c2V0UmVwYWludENv
dW50KENvb3JkaW5hdGVkTGF5ZXJJRCBpZCwgaW50IHZhbHVlKQoreworICAgIGRpc3BhdGNoVXBk
YXRlKGJpbmQoJkxheWVyVHJlZVJlbmRlcmVyOjpzZXRSZXBhaW50Q291bnQsIG1fcmVuZGVyZXIu
Z2V0KCksIGlkLCB2YWx1ZSkpOworfQorCiB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFBy
b3h5OjpwdXJnZUJhY2tpbmdTdG9yZXMoKQogewogICAgIG1fc3VyZmFjZXMuY2xlYXIoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oCmluZGV4
IDc1OTFiODQ4NWQzOTg4NmVkN2VkMmNkMDVkMTE2MTNmZTY3ZmFjZDMuLmY5Y2ExOTJjMmIwNDMy
MjU5Zjg4YzliYjVlY2UzZTQ1YTNjOGE2NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaApAQCAtODQsNiArODQsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzeW5jQ2FudmFzKENvb3JkaW5hdGVkTGF5ZXJJRCwgdWludDMyX3QgZnJvbnRCdWZm
ZXIpOwogICAgIHZvaWQgZGVzdHJveUNhbnZhcyhDb29yZGluYXRlZExheWVySUQpOwogI2VuZGlm
CisgICAgdm9pZCBzZXRSZXBhaW50Q291bnQoQ29vcmRpbmF0ZWRMYXllcklELCBpbnQgdmFsdWUp
OwogICAgIHZvaWQgcHVyZ2VCYWNraW5nU3RvcmVzKCk7CiAgICAgTGF5ZXJUcmVlUmVuZGVyZXIq
IGxheWVyVHJlZVJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJlci5nZXQoKTsgfQog
ICAgIHZvaWQgc2V0TGF5ZXJBbmltYXRpb25zKENvb3JkaW5hdGVkTGF5ZXJJRCwgY29uc3QgV2Vi
Q29yZTo6R3JhcGhpY3NMYXllckFuaW1hdGlvbnMmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dFByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkubWVzc2FnZXMuaW4KaW5kZXgg
MTM3ZGFkODA3NTAwZjU1ZTU5ZDI2YzI3YzFkZWRiYTQ5YzU1MDhhMC4uMjY4ZWYxY2Y5NzFmNzg4
ZjNkYTdjMTljYzRjMTcyYmY0ZjY4MzZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHku
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkubWVzc2FnZXMuaW4KQEAgLTU1LDYg
KzU1LDggQEAgbWVzc2FnZXMgLT4gQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkgewogICAg
IERlc3Ryb3lDYW52YXModWludDMyX3QgaWQpCiAjZW5kaWYKIAorICAgIFNldFJlcGFpbnRDb3Vu
dCh1aW50MzJfdCBsYXllcklELCBpbnQgdmFsdWUpCisKICAgICBTZXRCYWNrZ3JvdW5kQ29sb3Io
V2ViQ29yZTo6Q29sb3IgY29sb3IpCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJl
bmRlcmVyLmNwcAppbmRleCA2ZTk3MzAyMTY2MmI0MGQzNmEyODRjM2ZkMWQwNDlhYjY2YTI1OTk2
Li40MzRlMTMwYjVjZTVkZGI1ZWI5OWIyYWIyYmZhOWY2OTg0YjUyOTM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5k
ZXJlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwCkBAIC0yNTUsNiArMjU1LDEyIEBAIHZvaWQgTGF5ZXJU
cmVlUmVuZGVyZXI6OmRlc3Ryb3lDYW52YXMoQ29vcmRpbmF0ZWRMYXllcklEIGlkKQogfQogI2Vu
ZGlmCiAKK3ZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnNldFJlcGFpbnRDb3VudChDb29yZGluYXRl
ZExheWVySUQgaWQsIGludCB2YWx1ZSkKK3sKKyAgICBHcmFwaGljc0xheWVyKiBsYXllciA9IGxh
eWVyQnlJRChpZCk7CisgICAgdG9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcihsYXllciktPnNl
dFJlcGFpbnRDb3VudCh2YWx1ZSk7Cit9CisKIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnNldExh
eWVyQ2hpbGRyZW4oQ29vcmRpbmF0ZWRMYXllcklEIGlkLCBjb25zdCBWZWN0b3I8Q29vcmRpbmF0
ZWRMYXllcklEPiYgY2hpbGRJRHMpCiB7CiAgICAgR3JhcGhpY3NMYXllciogbGF5ZXIgPSBsYXll
ckJ5SUQoaWQpOwpAQCAtMzMzLDYgKzMzOSw4IEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnNl
dExheWVyU3RhdGUoQ29vcmRpbmF0ZWRMYXllcklEIGlkLCBjb25zdCBDb29yZGluYXRlZExhCiAg
ICAgbGF5ZXItPnNldERyYXdzQ29udGVudChsYXllckluZm8uZHJhd3NDb250ZW50KTsKICAgICBs
YXllci0+c2V0Q29udGVudHNWaXNpYmxlKGxheWVySW5mby5jb250ZW50c1Zpc2libGUpOwogICAg
IHRvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIobGF5ZXIpLT5zZXRGaXhlZFRvVmlld3BvcnQo
bGF5ZXJJbmZvLmZpeGVkVG9WaWV3cG9ydCk7CisgICAgbGF5ZXItPnNldFNob3dEZWJ1Z0JvcmRl
cihsYXllckluZm8uc2hvd0RlYnVnQm9yZGVycyk7CisgICAgbGF5ZXItPnNldFNob3dSZXBhaW50
Q291bnRlcihsYXllckluZm8uc2hvd1JlcGFpbnRDb3VudGVyKTsKIAogICAgIGlmIChsYXllcklu
Zm8uZml4ZWRUb1ZpZXdwb3J0KQogICAgICAgICBtX2ZpeGVkTGF5ZXJzLmFkZChpZCwgbGF5ZXIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvTGF5ZXJUcmVlUmVuZGVyZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGlu
YXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmgKaW5kZXggNTNlY2JlMzk0OTgxODk5ZDJh
YmJlMGYyMWQ0NDQzNDQyMzkzNjQ4OC4uMWE5NTk3ZmViMzA0YjY4M2E2ODczOTU4ZjVhNDQ3NTA5
Y2RjOTUyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5oCkBAIC03Nyw2ICs3Nyw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHN5bmNDYW52YXMoQ29vcmRpbmF0ZWRMYXllcklELCB1aW50
MzJfdCBmcm9udEJ1ZmZlcik7CiAgICAgdm9pZCBkZXN0cm95Q2FudmFzKENvb3JkaW5hdGVkTGF5
ZXJJRCk7CiAjZW5kaWYKKyAgICB2b2lkIHNldFJlcGFpbnRDb3VudChDb29yZGluYXRlZExheWVy
SUQsIGludCB2YWx1ZSk7CiAKICAgICB2b2lkIGRldGFjaCgpOwogICAgIHZvaWQgYXBwZW5kVXBk
YXRlKGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IDE3NjI4MDI2ODc3
MDAxMTljMjcxZmJiYWY5Mjc2NDA2NDZhZTU0MTAuLjYwY2Y2NTllNzg2Y2E0Mzc3YjdhYmYzZDk0
ZTE3OGRlNWY1MGE0NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApAQCAtMzY5LDYgKzM2OSwyNiBAQCB2b2lkIENv
b3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29s
b3ImIGNvbG9yKQogICAgIGRpZENoYW5nZUxheWVyU3RhdGUoKTsKIH0KIAordm9pZCBDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OnNldFNob3dEZWJ1Z0JvcmRlcihib29sIHNob3cpCit7CisgICAg
aWYgKGlzU2hvd2luZ0RlYnVnQm9yZGVyKCkgPT0gc2hvdykKKyAgICAgICAgcmV0dXJuOworCisg
ICAgR3JhcGhpY3NMYXllcjo6c2V0U2hvd0RlYnVnQm9yZGVyKHNob3cpOworCisgICAgZGlkQ2hh
bmdlTGF5ZXJTdGF0ZSgpOworfQorCit2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0
U2hvd1JlcGFpbnRDb3VudGVyKGJvb2wgc2hvdykKK3sKKyAgICBpZiAoaXNTaG93aW5nUmVwYWlu
dENvdW50ZXIoKSA9PSBzaG93KQorICAgICAgICByZXR1cm47CisKKyAgICBHcmFwaGljc0xheWVy
OjpzZXRTaG93UmVwYWludENvdW50ZXIoc2hvdyk7CisKKyAgICBkaWRDaGFuZ2VMYXllclN0YXRl
KCk7Cit9CisKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c1RvSW1h
Z2UoSW1hZ2UqIGltYWdlKQogewogICAgIE5hdGl2ZUltYWdlUHRyIG5ld05hdGl2ZUltYWdlUHRy
ID0gaW1hZ2UgPyBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSA6IDA7CkBAIC01
MTQsNiArNTM0LDggQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnN5bmNJbWFnZUJh
Y2tpbmcoKQogICAgICAgICB9CiAKICAgICAgICAgbV9jb29yZGluYXRlZEltYWdlQmFja2luZy0+
bWFya0RpcnR5KCk7CisgICAgICAgIGlmIChpc1Nob3dpbmdSZXBhaW50Q291bnRlcigpKQorICAg
ICAgICAgICAgbV9jb29yZGluYXRvci0+c2V0UmVwYWludENvdW50KGlkKCksIGluY3JlbWVudFJl
cGFpbnRDb3VudCgpKTsKICAgICB9IGVsc2UKICAgICAgICAgcmVsZWFzZUltYWdlQmFja2luZ0lm
TmVlZGVkKCk7CiAKQEAgLTUyNyw2ICs1NDksOCBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcjo6c3luY0xheWVyU3RhdGUoKQogICAgICAgICByZXR1cm47CiAgICAgbV9zaG91bGRTeW5j
TGF5ZXJTdGF0ZSA9IGZhbHNlOwogICAgIG1fbGF5ZXJJbmZvLmZpeGVkVG9WaWV3cG9ydCA9IGZp
eGVkVG9WaWV3cG9ydCgpOworICAgIG1fbGF5ZXJJbmZvLnNob3dEZWJ1Z0JvcmRlcnMgPSBpc1No
b3dpbmdEZWJ1Z0JvcmRlcigpOworICAgIG1fbGF5ZXJJbmZvLnNob3dSZXBhaW50Q291bnRlciA9
IGlzU2hvd2luZ1JlcGFpbnRDb3VudGVyKCk7CiAKICAgICBtX2xheWVySW5mby5iYWNrZmFjZVZp
c2libGUgPSBiYWNrZmFjZVZpc2liaWxpdHkoKTsKICAgICBtX2xheWVySW5mby5jaGlsZHJlblRy
YW5zZm9ybSA9IGNoaWxkcmVuVHJhbnNmb3JtKCk7CkBAIC01NzAsNiArNTk0LDggQEAgdm9pZCBD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnN5bmNDYW52YXMoKQogI2lmIFVTRShHUkFQSElDU19T
VVJGQUNFKQogICAgIG1fY29vcmRpbmF0b3ItPnN5bmNDYW52YXMobV9pZCwgbV9jYW52YXNQbGF0
Zm9ybUxheWVyKTsKICNlbmRpZgorICAgIGlmIChpc1Nob3dpbmdSZXBhaW50Q291bnRlcigpKQor
ICAgICAgICBtX2Nvb3JkaW5hdG9yLT5zZXRSZXBhaW50Q291bnQoaWQoKSwgaW5jcmVtZW50UmVw
YWludENvdW50KCkpOwogICAgIG1fY2FudmFzTmVlZHNEaXNwbGF5ID0gZmFsc2U7CiB9CiAKQEAg
LTY5Myw4ICs3MTksMTAgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnRpbGVkQmFj
a2luZ1N0b3JlUGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LAogICAgIHBhaW50R3JhcGhp
Y3NMYXllckNvbnRlbnRzKCpjb250ZXh0LCByZWN0KTsKIH0KIAotdm9pZCBDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXI6OnRpbGVkQmFja2luZ1N0b3JlUGFpbnRFbmQoY29uc3QgVmVjdG9yPEludFJl
Y3Q+JiAvKiB1cGRhdGVkUmVjdHMgKi8pCit2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6
dGlsZWRCYWNraW5nU3RvcmVQYWludEVuZChjb25zdCBWZWN0b3I8SW50UmVjdD4mIHVwZGF0ZWRS
ZWN0cykKIHsKKyAgICBpZiAoaXNTaG93aW5nUmVwYWludENvdW50ZXIoKSAmJiAhdXBkYXRlZFJl
Y3RzLmlzRW1wdHkoKSkKKyAgICAgICAgbV9jb29yZGluYXRvci0+c2V0UmVwYWludENvdW50KGlk
KCksIGluY3JlbWVudFJlcGFpbnRDb3VudCgpKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXI6OnRpbGVkQmFja2luZ1N0b3JlSGFzUGVuZGluZ1RpbGVDcmVhdGlvbigpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5o
CmluZGV4IDZjNDM1ODVjNzBjOGUwMzA2NWU0ZGNhYTI3ZTRmMGRhMmZhMzY5NDYuLmUwZWQxMmJi
MjliNTgwNjgwZWY0M2QzYjBiMTFjZDBmMmFhMjJjZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCkBAIC03MSw2ICs3MSw4
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveUNhbnZhcyhDb29yZGluYXRlZExh
eWVySUQpID0gMDsKICNlbmRpZgogCisgICAgdmlydHVhbCB2b2lkIHNldFJlcGFpbnRDb3VudChD
b29yZGluYXRlZExheWVySUQsIGludCkgPSAwOworCiAgICAgdmlydHVhbCB2b2lkIHNldExheWVy
QW5pbWF0aW9ucyhDb29yZGluYXRlZExheWVySUQsIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJBbmltYXRpb25zJikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGRldGFjaExheWVyKFdlYkNv
cmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllciopID0gMDsKQEAgLTExMiw2ICsxMTQsOCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzUmVjdChjb25zdCBJbnRSZWN0Jikg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9JbWFnZShJbWFnZSopIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvU29saWRDb2xvcihjb25zdCBD
b2xvciYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRTaG93RGVidWdCb3JkZXIoYm9v
bCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFNob3dSZXBhaW50Q291bnRlcihib29s
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRGlyZWN0bHlDb21wb3NpdGVJbWFn
ZShJbWFnZSopIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1Rv
Q2FudmFzKFBsYXRmb3JtTGF5ZXIqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TWFz
a0xheWVyKEdyYXBoaWNzTGF5ZXIqKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCmluZGV4IGJiOTk1NWVk
ODBiZDQzNTMxNDIxYmRkMTU0ZWY4YzIxYjZjN2JmY2MuLmNhNDQ1N2JiMTJjOTkyODM3Mjg2ZGY0
NzhjMTJmODk5YWYxMjUyY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcApAQCAtMzkyLDYgKzM5MiwxMSBAQCB2b2lk
IENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6ZGVzdHJveUNhbnZhcyhDb29yZGluYXRlZExheWVy
SUQgaWQpCiB9CiAjZW5kaWYKIAordm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNldFJl
cGFpbnRDb3VudChDb29yZGluYXRlZExheWVySUQgaWQsIGludCB2YWx1ZSkKK3sKKyAgICBtX3dl
YlBhZ2UtPnNlbmQoTWVzc2FnZXM6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpTZXRS
ZXBhaW50Q291bnQoaWQsIHZhbHVlKSk7Cit9CisKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiB2
b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c3luY0xheWVyRmlsdGVycyhDb29yZGluYXRl
ZExheWVySUQgaWQsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCmlu
ZGV4IDQ4MThlZDlmMDAwZjliODQ4ZGVhZjZhMjYzMWI5ZTc2MjA4YTZiZjcuLjllZTBkMWM0N2Rh
M2JiMzNmMDYzZGU3OTYwNDljYzNmMDI0ZjE3NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCkBAIC0xMDEsNiArMTAxLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzeW5jQ2FudmFzKENvb3JkaW5hdGVkTGF5ZXJJ
RCwgV2ViQ29yZTo6UGxhdGZvcm1MYXllciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBk
ZXN0cm95Q2FudmFzKENvb3JkaW5hdGVkTGF5ZXJJRCkgT1ZFUlJJREU7CiAjZW5kaWYKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0UmVwYWludENvdW50KENvb3JkaW5hdGVkTGF5ZXJJRCwgaW50KTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGV0YWNoTGF5ZXIoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyKik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNGaXhlZExheWVycygpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZFRpbGUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRUaWxlLmNwcAppbmRleCA3OThkMmI3NWYyNTBk
YTY3MjlmZjliY2U1MGU4OGMyOTEyOTQwYjhlLi5hYzBiNTY2MjZlODFmMTBiMTg3NjJiOThmMzY1
ODA0ZjhlMzI2MTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFRpbGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
VGlsZS5jcHAKQEAgLTk3LDggKzk3LDEwIEBAIFZlY3RvcjxJbnRSZWN0PiBDb29yZGluYXRlZFRp
bGU6OnVwZGF0ZUJhY2tCdWZmZXIoKQogICAgIH0gZWxzZQogICAgICAgICBtX2NsaWVudC0+dXBk
YXRlVGlsZShtX0lELCB1cGRhdGVJbmZvLCBtX3JlY3QpOwogCisgICAgVmVjdG9yPEludFJlY3Q+
IHVwZGF0ZWRSZWN0czsKKyAgICB1cGRhdGVkUmVjdHMuYXBwZW5kKG1fZGlydHlSZWN0KTsKICAg
ICBtX2RpcnR5UmVjdCA9IEludFJlY3QoKTsKLSAgICByZXR1cm4gVmVjdG9yPEludFJlY3Q+KCk7
CisgICAgcmV0dXJuIHVwZGF0ZWRSZWN0czsKIH0KIAogdm9pZCBDb29yZGluYXRlZFRpbGU6OnN3
YXBCYWNrQnVmZmVyVG9Gcm9udCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKaW5kZXggNjlmOGZlOWNhMTUxZDVlMGIzYzU0N2FmYTE0YzlmMTM4ZTVh
Y2ZhNC4uZDBlYjZjMTUwMDUwMWEzYzFmZmFlMDQyNDEyNWE4ZmZhNzY3MWY2NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjMxNiw4ICsy
MzE2LDE4IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVy
ZW5jZXNTdG9yZSYgc3RvcmUpCiAgICAgc2V0dGluZ3MtPnNldEFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6YWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWRLZXkoKSkgJiYgTGF5ZXJUcmVlSG9zdDo6c3VwcG9y
dHNBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCkpOwogICAgIHNldHRpbmdzLT5zZXRBY2NlbGVyYXRl
ZERyYXdpbmdFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tl
eTo6YWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZEtleSgpKSAmJiBMYXllclRyZWVIb3N0OjpzdXBw
b3J0c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKSk7CiAgICAgc2V0dGluZ3MtPnNldENhbnZhc1Vz
ZXNBY2NlbGVyYXRlZERyYXdpbmcoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVu
Y2VzS2V5OjpjYW52YXNVc2VzQWNjZWxlcmF0ZWREcmF3aW5nS2V5KCkpICYmIExheWVyVHJlZUhv
c3Q6OnN1cHBvcnRzQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpKTsKKyNpZiBQTEFURk9STShRVCkK
KyAgICBib29sIHNob3dEZWJ1Z1Zpc3VhbHMgPSBxZ2V0ZW52KCJRVF9XRUJLSVRfU0hPV19DT01Q
T1NJVElOR19ERUJVR19WSVNVQUxTIikgPT0gIjEiOworICAgIHNldHRpbmdzLT5zZXRTaG93RGVi
dWdCb3JkZXJzKHNob3dEZWJ1Z1Zpc3VhbHMpOworICAgIHNldHRpbmdzLT5zZXRTaG93UmVwYWlu
dENvdW50ZXIoc2hvd0RlYnVnVmlzdWFscyk7CisjZWxpZiBVU0UoQ0FJUk8pCisgICAgYm9vbCBz
aG93RGVidWdWaXN1YWxzID0gU3RyaW5nKGdldGVudigiV0VCS0lUX1NIT1dfQ09NUE9TSVRJTkdf
REVCVUdfVklTVUFMUyIpKSA9PSAiMSI7CisgICAgc2V0dGluZ3MtPnNldFNob3dEZWJ1Z0JvcmRl
cnMoc2hvd0RlYnVnVmlzdWFscyk7CisgICAgc2V0dGluZ3MtPnNldFNob3dSZXBhaW50Q291bnRl
cihzaG93RGVidWdWaXN1YWxzKTsKKyNlbHNlCiAgICAgc2V0dGluZ3MtPnNldFNob3dEZWJ1Z0Jv
cmRlcnMoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojpjb21wb3Np
dGluZ0JvcmRlcnNWaXNpYmxlS2V5KCkpKTsKICAgICBzZXR0aW5ncy0+c2V0U2hvd1JlcGFpbnRD
b3VudGVyKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6Y29tcG9z
aXRpbmdSZXBhaW50Q291bnRlcnNWaXNpYmxlS2V5KCkpKTsKKyNlbmRpZgogICAgIHNldHRpbmdz
LT5zZXRTaG93VGlsZWRTY3JvbGxpbmdJbmRpY2F0b3Ioc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5
KFdlYlByZWZlcmVuY2VzS2V5Ojp0aWxlZFNjcm9sbGluZ0luZGljYXRvclZpc2libGVLZXkoKSkp
OwogICAgIHNldHRpbmdzLT5zZXRDU1NDdXN0b21GaWx0ZXJFbmFibGVkKHN0b3JlLmdldEJvb2xW
YWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6Y3NzQ3VzdG9tRmlsdGVyRW5hYmxlZEtleSgp
KSk7CiAgICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0Q1NTUmVnaW9uc0VuYWJsZWQoc3Rv
cmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojpjc3NSZWdpb25zRW5hYmxl
ZEtleSgpKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181151</attachid>
            <date>2013-01-02 22:22:09 -0800</date>
            <delta_ts>2013-01-10 22:12:50 -0800</delta_ts>
            <desc>Patch : [TexMap] Refactor code related to debug border and repaint count. [1/2] </desc>
            <filename>bug-105787-20130103151916.patch</filename>
            <type>text/plain</type>
            <size>28508</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4Njk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWJiYjg1ZmY1ZGVhZjky
NjllYjYxZTFmY2RjYWE2N2Y3MTAyMWI4ZS4uMzVjZWE0MmY5ZjcxODUzMGZiMDY0MDE5MjZjNTQ0
NWQ5YmY4ZWI4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUwIEBACiAyMDEzLTAxLTAyICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCisgICAgICAgIFtUZXhNYXBd
IFJlZmFjdG9yIGNvZGUgcmVsYXRlZCB0byBkZWJ1ZyBib3JkZXIgYW5kIHJlcGFpbnQgY291bnQu
IFsxLzJdCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDU3ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
bnRyb2R1Y2UgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQYWludFBhcmFtZXRlcnMgdG8gcmVk
dWNlIHRoZSBudW1iZXIKKyAgICAgICAgb2YgcGFyYW1ldGVycyBvZiBUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllcjo6cGFpbnRUb1RleHR1cmVNYXBwZXIoKS4KKyAgICAgICAgTm93IHdlIGNhbiBl
YXNpbHkgYWRkIG5ldyBhcmd1bWVudHMgaW50byBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllcjo6
cGFpbnRUb1RleHR1cmVNYXBwZXIoKQorICAgICAgICB3aGVuIG5lZWRlZC4KKworICAgICAgICBO
byBuZXcgdGVzdHMuIFJlZmFjdG9yaW5nIG9ubHkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmg6
CisgICAgICAgIChHcmFwaGljc0NvbnRleHQzRFByaXZhdGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwOgorICAgICAgICAoR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oOgorICAgICAg
ICAoR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcDoKKyAgICAgICAgKEdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBh
aW50VG9UZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9NZWRp
YVBsYXllclByaXZhdGVRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVRdDo6cGFpbnRUb1RleHR1cmVNYXBwZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3F0L01lZGlhUGxheWVyUHJpdmF0ZVF0Lmg6CisgICAgICAgIChNZWRpYVBsYXllclByaXZhdGVR
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNr
aW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclN1cmZhY2VCYWNr
aW5nU3RvcmU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1
cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmg6
CisgICAgICAgIChUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFRleHR1cmVN
YXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFRleHR1cmVNYXBwZXJUaWxlZEJh
Y2tpbmdTdG9yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnBh
aW50U2VsZik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50U2Vs
ZkFuZENoaWxkcmVuV2l0aFJlcGxpY2EpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclBhaW50UGFyYW1ldGVycyk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclBhaW50UGFyYW1ldGVyczo6
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQYWludFBhcmFtZXRlcnMpOgorICAgICAgICAoVGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIpOgorCisyMDEzLTAxLTAyICBIdWFuZyBEb25nc3VuZyAg
PGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCiAgICAgICAgIFtUZXhNYXBdIFVzZSBhIHByZW11
bGlwbGllZCBjb2xvciBpbiBUZXh0dXJlTWFwcGVyR0wuCiAgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU3ODYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDU5NTFlNWFm
YWQzN2FjZjhlZGZmZTkyNjc2NTQ3ZmJmOWJjMGExNDkuLjhlYmY2YmJiNjE2OTljOWVjN2E0NTVh
M2MyYjhjZmZkNTQ4Yzc2MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMy0wMS0w
MiAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKworICAgICAgICBb
VGV4TWFwXSBSZWZhY3RvciBjb2RlIHJlbGF0ZWQgdG8gZGVidWcgYm9yZGVyIGFuZCByZXBhaW50
IGNvdW50LiBbMS8yXQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTA1Nzg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBjaGFuZ2VzIHRoZSBzaWduYXR1cmUgb2YgVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXI6OnBhaW50VG9UZXh0dXJlTWFwcGVyKCkKKyAgICAgICAgc28gQ29vcmRpbmF0
ZWRCYWNraW5nU3RvcmUgaXMgYWxzbyBjaGFuZ2VkLgorCisgICAgICAgICogVUlQcm9jZXNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6cGFpbnRUaWxlc1RvVGV4dHVyZU1hcHBl
cik6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpwYWludFRvVGV4
dHVyZU1hcHBlcik6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKENvb3JkaW5hdGVkQmFja2luZ1N0b3Jl
KToKKwogMjAxMy0wMS0wMiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAg
IFN0b3AgcHJldGVuZGluZyBpdHMgcG9zc2libGUgdG8gcnVuIHRoZSBXZWJQcm9jZXNzIGluIHRo
cmVhZGVkIG1vZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwCmluZGV4IGNk
MGUwOWI4NGU3NWQxNDMxNmVjMzI3MzY3ODFkYjVhZWRlYjk2NTIuLjdjNDJkZjdmNmYzNzdhMWIz
MTg2NWQ5ZGI3MGU1NjRhNjg5ZGNmOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlLmNwcApAQCAtNzgsNyArNzgsNyBAQCBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIEdyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZTo6cGxhdGZvcm1Db250ZXh0KCkKIH0KIAogI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykgJiYgVVNFKFRFWFRVUkVfTUFQUEVSKQotdm9pZCBHcmFwaGlj
c0NvbnRleHQzRFByaXZhdGU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRl
eHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIG1hdHJpeCwgZmxvYXQgb3BhY2l0eSwgQml0bWFwVGV4dHVyZSogbWFzaykK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcihjb25z
dCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclBhaW50UGFyYW1ldGVycyYgcGFyYW1ldGVycykK
IHsKICAgICBpZiAoIW1fZ2xDb250ZXh0KQogICAgICAgICByZXR1cm47CkBAIC04OCwxMCArODgs
MTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBhaW50VG9UZXh0dXJlTWFwcGVy
KFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIKICAgICBtX2NvbnRleHQtPm1hcmtMYXllckNv
bXBvc2l0ZWQoKTsKIAogICAgIC8vIEZJWE1FOiBXZSBkbyBub3Qgc3VwcG9ydCBtYXNrIGZvciB0
aGUgbW9tZW50IHdpdGggVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLgotICAgIGlmICh0ZXh0dXJl
TWFwcGVyLT5hY2NlbGVyYXRpb25Nb2RlKCkgIT0gVGV4dHVyZU1hcHBlcjo6T3BlbkdMTW9kZSkg
ewotICAgICAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSB0ZXh0dXJlTWFwcGVyLT5ncmFw
aGljc0NvbnRleHQoKTsKKyAgICBpZiAocGFyYW1ldGVycy50ZXh0dXJlTWFwcGVyLT5hY2NlbGVy
YXRpb25Nb2RlKCkgIT0gVGV4dHVyZU1hcHBlcjo6T3BlbkdMTW9kZSkgeworICAgICAgICBHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQgPSBwYXJhbWV0ZXJzLnRleHR1cmVNYXBwZXItPmdyYXBoaWNz
Q29udGV4dCgpOwogICAgICAgICBjb250ZXh0LT5zYXZlKCk7Ci0gICAgICAgIGNvbnRleHQtPnBs
YXRmb3JtQ29udGV4dCgpLT5zZXRHbG9iYWxBbHBoYShvcGFjaXR5KTsKKyAgICAgICAgY29udGV4
dC0+cGxhdGZvcm1Db250ZXh0KCktPnNldEdsb2JhbEFscGhhKHBhcmFtZXRlcnMub3BhY2l0eSk7
CiAKICAgICAgICAgY29uc3QgaW50IGhlaWdodCA9IG1fY29udGV4dC0+bV9jdXJyZW50SGVpZ2h0
OwogICAgICAgICBjb25zdCBpbnQgd2lkdGggPSBtX2NvbnRleHQtPm1fY3VycmVudFdpZHRoOwpA
QCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRv
VGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyCiAgICAgICAgIGNvbnRl
eHQtPnRyYW5zbGF0ZSgwLCBoZWlnaHQpOwogICAgICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNp
emUoMSwgLTEpKTsKIAotICAgICAgICBjb250ZXh0LT5jb25jYXRDVE0obWF0cml4LnRvQWZmaW5l
VHJhbnNmb3JtKCkpOworICAgICAgICBjb250ZXh0LT5jb25jYXRDVE0ocGFyYW1ldGVycy50cmFu
c2Zvcm0udG9BZmZpbmVUcmFuc2Zvcm0oKSk7CiAKICAgICAgICAgbV9jb250ZXh0LT5yZWFkUmVu
ZGVyaW5nUmVzdWx0cyhwaXhlbHMuZ2V0KCksIHRvdGFsQnl0ZXMpOwogCkBAIC0xMjAsNyArMTIw
LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBhaW50VG9UZXh0dXJlTWFwcGVy
KFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIKICAgICAgICAgUmVmUHRyPGNhaXJvX3N1cmZh
Y2VfdD4gaW1hZ2VTdXJmYWNlID0gYWRvcHRSZWYoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGVf
Zm9yX2RhdGEoCiAgICAgICAgICAgICBjb25zdF9jYXN0PHVuc2lnbmVkIGNoYXIqPihwaXhlbHMu
Z2V0KCkpLCBDQUlST19GT1JNQVRfQVJHQjMyLCB3aWR0aCwgaGVpZ2h0LCB3aWR0aCAqIDQpKTsK
IAotICAgICAgICBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+ZHJhd1N1cmZhY2VUb0NvbnRl
eHQoaW1hZ2VTdXJmYWNlLmdldCgpLCB0YXJnZXRSZWN0LCBJbnRSZWN0KDAsIDAsIHdpZHRoLCBo
ZWlnaHQpLCBjb250ZXh0KTsKKyAgICAgICAgY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmRy
YXdTdXJmYWNlVG9Db250ZXh0KGltYWdlU3VyZmFjZS5nZXQoKSwgcGFyYW1ldGVycy50YXJnZXRS
ZWN0LCBJbnRSZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQpLCBjb250ZXh0KTsKIAogICAgICAgICBj
b250ZXh0LT5yZXN0b3JlKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTEzOSwxMCArMTM5LDEwIEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0
dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyCiAgICAgICAgICAgICBwcmV2aW91c0FjdGl2ZUNvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIH0KIAotICAgIFRleHR1cmVNYXBwZXJHTCog
dGV4bWFwR0wgPSBzdGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVyR0wqPih0ZXh0dXJlTWFwcGVyKTsK
KyAgICBUZXh0dXJlTWFwcGVyR0wqIHRleG1hcEdMID0gc3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBl
ckdMKj4ocGFyYW1ldGVycy50ZXh0dXJlTWFwcGVyKTsKICAgICBUZXh0dXJlTWFwcGVyR0w6OkZs
YWdzIGZsYWdzID0gVGV4dHVyZU1hcHBlckdMOjpTaG91bGRGbGlwVGV4dHVyZSB8IChtX2NvbnRl
eHQtPm1fYXR0cnMuYWxwaGEgPyBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZEJsZW5kIDogMCk7CiAg
ICAgSW50U2l6ZSB0ZXh0dXJlU2l6ZShtX2NvbnRleHQtPm1fY3VycmVudFdpZHRoLCBtX2NvbnRl
eHQtPm1fY3VycmVudEhlaWdodCk7Ci0gICAgdGV4bWFwR0wtPmRyYXdUZXh0dXJlKG1fY29udGV4
dC0+bV90ZXh0dXJlLCBmbGFncywgdGV4dHVyZVNpemUsIHRhcmdldFJlY3QsIG1hdHJpeCwgb3Bh
Y2l0eSwgbWFzayk7CisgICAgdGV4bWFwR0wtPmRyYXdUZXh0dXJlKG1fY29udGV4dC0+bV90ZXh0
dXJlLCBmbGFncywgdGV4dHVyZVNpemUsIHBhcmFtZXRlcnMudGFyZ2V0UmVjdCwgcGFyYW1ldGVy
cy50cmFuc2Zvcm0sIHBhcmFtZXRlcnMub3BhY2l0eSwgcGFyYW1ldGVycy5tYXNrKTsKICNlbmRp
ZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkdfR0wpCiB9CiAjZW5kaWYgLy8gVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaApp
bmRleCA2OWRhZDY3NTQ3MjJhYzdhODgyY2E4NzYxNWFiODg1NDk3OWFmYmM2Li5hYzU1MjZlNzdk
N2RkZWNjNWU5ZmMxMGJkNjIwNmI3MTk3OTE3ZDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQz
RFByaXZhdGUuaApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgR3JhcGhpY3NDb250ZXh0
M0Q6OlJlbmRlclN0eWxlIHJlbmRlclN0eWxlKCkgeyByZXR1cm4gbV9yZW5kZXJTdHlsZTsgfQog
CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVIp
Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBj
b25zdCBGbG9hdFJlY3QmIHRhcmdldCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9h
dCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRU
b1RleHR1cmVNYXBwZXIoY29uc3QgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQYWludFBhcmFt
ZXRlcnMmKTsKICNlbmRpZgogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
LmNwcAppbmRleCA5MDMwMDQxN2I3ODAxYTMxMTUxNjMyYzM3YzgwZjFiMmJmMjZlNWE2Li44ZGI4
MTljYjdjYmI1ODg1NDA0NWJiODBiYTkyYTUxOTE5NjdlYmY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlLmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlOjptYWtlQ29udGV4dEN1cnJlbnQoKQogfQogCiAjaWYgVVNFKFRFWFRVUkVfTUFQ
UEVSX0dMKQotdm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBhaW50VG9UZXh0dXJlTWFw
cGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmIC8qIHRhcmdldCAqLywgY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCAvKiBvcGFjaXR5ICovLCBCaXRtYXBUZXh0dXJl
KiAvKiBtYXNrICovKQordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBhaW50VG9UZXh0
dXJlTWFwcGVyKGNvbnN0IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUGFpbnRQYXJhbWV0ZXJz
JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZS5oCmluZGV4IDJlYjJmNzU4NzFkMGRjZDkxNTJhMTg2NWJhZjA1NWU5NTQ2MjA0YjUuLmJlOWQz
YzZjYjRkNTFiNzc5ZGZhYmQ3YTg2ODg5ZWViZmJkYWFkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIFBsYXRmb3JtTGF5ZXIq
IHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsKICNlbmRpZgogI2lmIFVTRShURVhUVVJFX01BUFBFUl9H
TCkKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlcios
IGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZs
b2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUqIG1hc2spOworICAgIHZpcnR1YWwgdm9pZCBwYWlu
dFRvVGV4dHVyZU1hcHBlcihjb25zdCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclBhaW50UGFy
YW1ldGVycyYpOwogI2VuZGlmCiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCiAgICAgdmlydHVh
bCBJbnRTaXplIHBsYXRmb3JtTGF5ZXJTaXplKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3Bw
CmluZGV4IDYzZDMxMjU1MWRmOWQyYTg1MTJkMDY4NWQ4ZTRjMGQwMzUwNzlmMWMuLjM3MmNhNDg0
MWM2N2UyMGQ2NjA2ZDE4MDQ0YmQ3MGI0MDMzMWM5ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3Bw
CkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICB+R3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
KCk7CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgdmlydHVhbCB2b2lk
IHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmIHRh
cmdldCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBU
ZXh0dXJlKiBtYXNrKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoY29u
c3QgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQYWludFBhcmFtZXRlcnMmKTsKICNlbmRpZgog
I2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQogICAgIHZpcnR1YWwgSW50U2l6ZSBwbGF0Zm9ybUxh
eWVyU2l6ZSgpIGNvbnN0OwpAQCAtMjA4LDEyICsyMDgsMTIgQEAgc3RhdGljIGlubGluZSBxdWlu
dDMyIHN3YXBCZ3JUb1JnYihxdWludDMyIHBpeGVsKQogfQogCiAjaWYgVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQotdm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBhaW50VG9UZXh0
dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYg
dGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgZmxvYXQgb3Bh
Y2l0eSwgQml0bWFwVGV4dHVyZSogbWFzaykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
OjpwYWludFRvVGV4dHVyZU1hcHBlcihjb25zdCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclBh
aW50UGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKICAgICBtX2NvbnRleHQtPm1hcmtMYXllckNv
bXBvc2l0ZWQoKTsKICAgICBibGl0TXVsdGlzYW1wbGVGcmFtZWJ1ZmZlckFuZFJlc3RvcmVDb250
ZXh0KCk7CiAKLSAgICBpZiAodGV4dHVyZU1hcHBlci0+YWNjZWxlcmF0aW9uTW9kZSgpID09IFRl
eHR1cmVNYXBwZXI6Ok9wZW5HTE1vZGUpIHsKKyAgICBpZiAocGFyYW1ldGVycy50ZXh0dXJlTWFw
cGVyLT5hY2NlbGVyYXRpb25Nb2RlKCkgPT0gVGV4dHVyZU1hcHBlcjo6T3BlbkdMTW9kZSkgewog
I2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQogICAgICAgICAvLyBDR0wgb25seSBwcm92aWRlcyB1
cyB0aGUgY29udGV4dCwgYnV0IG5vdCB0aGUgdmlldyB0aGUgY29udGV4dCBpcyBjdXJyZW50bHkg
Ym91bmQgdG8uCiAgICAgICAgIC8vIFRvIG1ha2Ugc3VyZSB0aGUgY29udGV4dCBpcyBib3VuZCB0
aGUgdGhlIHJpZ2h0IHN1cmZhY2Ugd2UgaGF2ZSB0byBkbyBhIG1ha2VDdXJyZW50IHRocm91Z2gg
UU9wZW5HTCBhZ2Fpbi4KQEAgLTIyOSwxNyArMjI5LDE3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFw
cGVyCiAgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBjb2RlIGFzIHNvb24gYXMgR3JhcGhp
Y3NTdXJmYWNlTWFjIG1ha2VzIHVzZSBvZiBOU09wZW5HTC4KICAgICAgICAgY3VycmVudENvbnRl
eHQtPm1ha2VDdXJyZW50KGN1cnJlbnRTdXJmYWNlKTsKIAotICAgICAgICBUZXh0dXJlTWFwcGVy
R0wqIHRleG1hcEdMID0gc3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBlckdMKj4odGV4dHVyZU1hcHBl
cik7Ci0gICAgICAgIG1fZ3JhcGhpY3NTdXJmYWNlLT5wYWludFRvVGV4dHVyZU1hcHBlcih0ZXht
YXBHTCwgdGFyZ2V0UmVjdCwgbWF0cml4LCBvcGFjaXR5LCBtYXNrKTsKKyAgICAgICAgVGV4dHVy
ZU1hcHBlckdMKiB0ZXhtYXBHTCA9IHN0YXRpY19jYXN0PFRleHR1cmVNYXBwZXJHTCo+KHBhcmFt
ZXRlcnMudGV4dHVyZU1hcHBlcik7CisgICAgICAgIG1fZ3JhcGhpY3NTdXJmYWNlLT5wYWludFRv
VGV4dHVyZU1hcHBlcih0ZXhtYXBHTCwgcGFyYW1ldGVycy50YXJnZXRSZWN0LCBwYXJhbWV0ZXJz
LnRyYW5zZm9ybSwgcGFyYW1ldGVycy5vcGFjaXR5LCBwYXJhbWV0ZXJzLm1hc2spOwogI2VuZGlm
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQg
PSB0ZXh0dXJlTWFwcGVyLT5ncmFwaGljc0NvbnRleHQoKTsKKyAgICBHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQgPSBwYXJhbWV0ZXJzLnRleHR1cmVNYXBwZXItPmdyYXBoaWNzQ29udGV4dCgpOwog
ICAgIFFQYWludGVyKiBwYWludGVyID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CiAgICAg
cGFpbnRlci0+c2F2ZSgpOwotICAgIHBhaW50ZXItPnNldFRyYW5zZm9ybShtYXRyaXgpOwotICAg
IHBhaW50ZXItPnNldE9wYWNpdHkob3BhY2l0eSk7CisgICAgcGFpbnRlci0+c2V0VHJhbnNmb3Jt
KHBhcmFtZXRlcnMudHJhbnNmb3JtKTsKKyAgICBwYWludGVyLT5zZXRPcGFjaXR5KHBhcmFtZXRl
cnMub3BhY2l0eSk7CiAKICAgICBjb25zdCBpbnQgaGVpZ2h0ID0gbV9jb250ZXh0LT5tX2N1cnJl
bnRIZWlnaHQ7CiAgICAgY29uc3QgaW50IHdpZHRoID0gbV9jb250ZXh0LT5tX2N1cnJlbnRXaWR0
aDsKQEAgLTI3NSw3ICsyNzUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cGFp
bnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlcgogICAgICAgICB9
CiAgICAgfQogCi0gICAgcGFpbnRlci0+ZHJhd0ltYWdlKHRhcmdldFJlY3QsIG9mZnNjcmVlbklt
YWdlKTsKKyAgICBwYWludGVyLT5kcmF3SW1hZ2UocGFyYW1ldGVycy50YXJnZXRSZWN0LCBvZmZz
Y3JlZW5JbWFnZSk7CiAgICAgcGFpbnRlci0+cmVzdG9yZSgpOwogfQogI2VuZGlmIC8vIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3F0L01lZGlhUGxheWVyUHJpdmF0ZVF0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3F0L01lZGlhUGxheWVyUHJpdmF0ZVF0LmNwcAppbmRleCBlMDgz
ZTI5NzMyYmJiNzhmMGZlNTIzOTEzMmFlNTRiNzQzNGMwMDNhLi5jMzc3MDE0NDdiMTMzZTc0Mjhl
NjliZmU2MDFiNGFkZjc1MzZmMWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9xdC9NZWRpYVBsYXllclByaXZhdGVRdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvTWVkaWFQbGF5ZXJQcml2YXRlUXQuY3BwCkBAIC02NDUs
NyArNjQ1LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVRdDo6cGFpbnRDdXJyZW50RnJhbWVJ
bkNvbnRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LAogfQogCiAjaWYgVVNFKEFDQ0VMRVJB
VEVEX0NPTVBPU0lUSU5HKQotdm9pZCBNZWRpYVBsYXllclByaXZhdGVRdDo6cGFpbnRUb1RleHR1
cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0
YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4LCBmbG9hdCBvcGFj
aXR5LCBCaXRtYXBUZXh0dXJlKikKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUXQ6OnBhaW50VG9U
ZXh0dXJlTWFwcGVyKGNvbnN0IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUGFpbnRQYXJhbWV0
ZXJzJikKIHsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvcXQvTWVkaWFQbGF5ZXJQcml2YXRlUXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3F0L01lZGlhUGxheWVyUHJpdmF0ZVF0LmgKaW5kZXggOGUzMWM5ZDZkYzgx
M2Q2NDM5ZTMyMjRjMTUyMWVlMDAzMDQwZjU5NS4uNDgxZmY3ZWZhOWQxYWZiZDlhYmM2ZWY3NmI2
NTM1ODJjZTI2ZDczMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvTWVkaWFQbGF5ZXJQcml2YXRlUXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9xdC9NZWRpYVBsYXllclByaXZhdGVRdC5oCkBAIC0xMDksNyArMTA5LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBhY2NlbGVyYXRlZFJlbmRlcmluZ1N0YXRlQ2hhbmdl
ZCgpIHsgfQogICAgIC8vIENvbnN0LWNhc3RpbmcgaGVyZSBpcyBzYWZlLCBzaW5jZSBhbGwgb2Yg
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIncyBmdW5jdGlvbnMgYXJlIGNvbnN0LmcKICAgICB2
aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCB7IHJldHVybiAwOyB9
Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBj
b25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jiwg
ZmxvYXQgb3BhY2l0eSwgQml0bWFwVGV4dHVyZSogbWFzayk7CisgICAgdmlydHVhbCB2b2lkIHBh
aW50VG9UZXh0dXJlTWFwcGVyKGNvbnN0IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUGFpbnRQ
YXJhbWV0ZXJzJik7CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgUGxhdGZvcm1NZWRpYSBwbGF0Zm9y
bU1lZGlhKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5jcHAK
aW5kZXggZTg5OTI1MzFiMjg3YzViNTk3NzllNjQ3NmU4MDFiOGI2OTk1YzJjNy4uZmNlMjBlM2Jk
NDU4MjJjN2JjYmUwYTUwMzI5NWYzYjY3NDllNTdjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyQmFja2luZ1N0b3JlLmNwcApAQCAtNTIsMTAgKzUyLDEwIEBAIFBhc3NSZWZQdHI8Qml0bWFw
VGV4dHVyZT4gVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU6OnRleHR1cmUoKSBjb25z
dAogICAgIHJldHVybiBlbXB0eVRleHR1cmU7CiB9CiAKLXZvaWQgVGV4dHVyZU1hcHBlclN1cmZh
Y2VCYWNraW5nU3RvcmU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1
cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgQml0bWFwVGV4dHVyZSogbWFzaykK
K3ZvaWQgVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU6OnBhaW50VG9UZXh0dXJlTWFw
cGVyKGNvbnN0IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUGFpbnRQYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzKQogewogICAgIGlmIChtX2dyYXBoaWNzU3VyZmFjZSkKLSAgICAgICAgbV9ncmFwaGlj
c1N1cmZhY2UtPnBhaW50VG9UZXh0dXJlTWFwcGVyKHRleHR1cmVNYXBwZXIsIHRhcmdldFJlY3Qs
IHRyYW5zZm9ybSwgb3BhY2l0eSwgbWFzayk7CisgICAgICAgIG1fZ3JhcGhpY3NTdXJmYWNlLT5w
YWludFRvVGV4dHVyZU1hcHBlcihwYXJhbWV0ZXJzLnRleHR1cmVNYXBwZXIsIHBhcmFtZXRlcnMu
dGFyZ2V0UmVjdCwgcGFyYW1ldGVycy50cmFuc2Zvcm0sIHBhcmFtZXRlcnMub3BhY2l0eSwgcGFy
YW1ldGVycy5tYXNrKTsKIH0KICNlbmRpZgogCkBAIC0xMzMsMTUgKzEzMywxNSBAQCB1bnNpZ25l
ZCBUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlOjpjYWxjdWxhdGVFeHBvc2VkVGlsZUVkZ2VzKGNv
bnN0IEZsb2F0UmVjdCYgdAogICAgIHJldHVybiBleHBvc2VkRWRnZXM7CiB9CiAKLXZvaWQgVGV4
dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJl
TWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRl
eHR1cmUqIG1hc2spCit2b2lkIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6cGFpbnRU
b1RleHR1cmVNYXBwZXIoY29uc3QgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQYWludFBhcmFt
ZXRlcnMmIHBhcmFtZXRlcnMpCiB7Ci0gICAgdXBkYXRlQ29udGVudHNGcm9tSW1hZ2VJZk5lZWRl
ZCh0ZXh0dXJlTWFwcGVyKTsKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhZGp1c3RlZFRyYW5z
Zm9ybSA9IHRyYW5zZm9ybTsKLSAgICBhZGp1c3RlZFRyYW5zZm9ybS5tdWx0aXBseShUcmFuc2Zv
cm1hdGlvbk1hdHJpeDo6cmVjdFRvUmVjdChyZWN0KCksIHRhcmdldFJlY3QpKTsKKyAgICB1cGRh
dGVDb250ZW50c0Zyb21JbWFnZUlmTmVlZGVkKHBhcmFtZXRlcnMudGV4dHVyZU1hcHBlcik7Cisg
ICAgVHJhbnNmb3JtYXRpb25NYXRyaXggYWRqdXN0ZWRUcmFuc2Zvcm0gPSBwYXJhbWV0ZXJzLnRy
YW5zZm9ybTsKKyAgICBhZGp1c3RlZFRyYW5zZm9ybS5tdWx0aXBseShUcmFuc2Zvcm1hdGlvbk1h
dHJpeDo6cmVjdFRvUmVjdChyZWN0KCksIHBhcmFtZXRlcnMudGFyZ2V0UmVjdCkpOwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90aWxlcy5zaXplKCk7ICsraSkgewotICAgICAgICBtX3Rp
bGVzW2ldLnBhaW50KHRleHR1cmVNYXBwZXIsIGFkanVzdGVkVHJhbnNmb3JtLCBvcGFjaXR5LCBt
YXNrLCBjYWxjdWxhdGVFeHBvc2VkVGlsZUVkZ2VzKHJlY3QoKSwgbV90aWxlc1tpXS5yZWN0KCkp
KTsKKyAgICAgICAgbV90aWxlc1tpXS5wYWludChwYXJhbWV0ZXJzLnRleHR1cmVNYXBwZXIsIGFk
anVzdGVkVHJhbnNmb3JtLCBwYXJhbWV0ZXJzLm9wYWNpdHksIHBhcmFtZXRlcnMubWFzaywgY2Fs
Y3VsYXRlRXhwb3NlZFRpbGVFZGdlcyhyZWN0KCksIG1fdGlsZXNbaV0ucmVjdCgpKSk7CiAgICAg
ICAgIGlmIChtX2RyYXdzRGVidWdCb3JkZXJzKQotICAgICAgICAgICAgdGV4dHVyZU1hcHBlci0+
ZHJhd0JvcmRlcihtX2RlYnVnQm9yZGVyQ29sb3IsIG1fZGVidWdCb3JkZXJXaWR0aCwgbV90aWxl
c1tpXS5yZWN0KCksIGFkanVzdGVkVHJhbnNmb3JtKTsKKyAgICAgICAgICAgIHBhcmFtZXRlcnMu
dGV4dHVyZU1hcHBlci0+ZHJhd0JvcmRlcihtX2RlYnVnQm9yZGVyQ29sb3IsIG1fZGVidWdCb3Jk
ZXJXaWR0aCwgbV90aWxlc1tpXS5yZWN0KCksIGFkanVzdGVkVHJhbnNmb3JtKTsKICAgICB9CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oCmluZGV4IDBkZDJkZjRiMTk4
YmQzMTFmZDQxYzU1YTMzNzcyMTg0Y2QxNGIzNGEuLmVhYzg2NDU5NzI0ZWUwNTUxMmVjMDQzZmNl
ZWY2MzA0YmRmNWQ1YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuaApA
QCAtMzksNyArMzksNyBAQCBjbGFzcyBHcmFwaGljc0xheWVyOwogY2xhc3MgVGV4dHVyZU1hcHBl
ckJhY2tpbmdTdG9yZSA6IHB1YmxpYyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllciwgcHVibGlj
IFJlZkNvdW50ZWQ8VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZT4gewogcHVibGljOgogICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3QgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3Qg
RmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCwgQml0bWFwVGV4
dHVyZSopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoY29uc3Qg
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQYWludFBhcmFtZXRlcnMmKSA9IDA7CiAgICAgdmly
dHVhbCB+VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZSgpIHsgfQogCiBwcm90ZWN0ZWQ6CkBAIC01
Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEdyYXBoaWNzU3VyZmFjZShQYXNzUmVm
UHRyPEdyYXBoaWNzU3VyZmFjZT4pOwogICAgIHZvaWQgc3dhcEJ1ZmZlcnNJZk5lZWRlZCh1aW50
MzJfdCBmcm9udEJ1ZmZlcik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+
IHRleHR1cmUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIo
VGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiwgZmxvYXQsIEJpdG1hcFRleHR1cmUqKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1Rl
eHR1cmVNYXBwZXIoY29uc3QgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQYWludFBhcmFtZXRl
cnMmKTsKICAgICB2aXJ0dWFsIH5UZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZSgpIHsg
fQogCiBwcml2YXRlOgpAQCAtOTMsNyArOTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+VGV4
dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlKCkgeyB9CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSgpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwg
dm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0
JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCwgQml0bWFwVGV4dHVyZSopIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihjb25zdCBUZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllclBhaW50UGFyYW1ldGVycyYpIE9WRVJSSURFOwogICAgIHZv
aWQgdXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciosIEltYWdlKiwgY29uc3QgRmxvYXRTaXpl
JiwgY29uc3QgSW50UmVjdCYsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNvbnRlbnRzRmxhZyk7CiAg
ICAgdm9pZCB1cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVyKiwgR3JhcGhpY3NMYXllciosIGNv
bnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEludFJlY3QmLCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDb250
ZW50c0ZsYWcpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCmluZGV4IDU3NDVhZGQ3ZDRi
MzBhMmY2ZjNmZDUyMzY0YmViYzBkNjgzNzlhODMuLjQ1MDBhMzYyMDI3OWQyYjBiNmI4NjEzZmEw
YWViOWM3MTIyM2Q4MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCkBAIC0xMTUsMjYg
KzExNSwzMSBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxmKGNvbnN0IFRleHR1
cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlvbnMpCiAgICAgdHJhbnNmb3JtLm11bHRpcGx5KG9w
dGlvbnMudHJhbnNmb3JtKTsKICAgICB0cmFuc2Zvcm0ubXVsdGlwbHkobV9lZmZlY3RpdmVUcmFu
c2Zvcm0uY29tYmluZWQoKSk7CiAKLSAgICBmbG9hdCBvcGFjaXR5ID0gb3B0aW9ucy5vcGFjaXR5
OwotICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBtYXNrID0gb3B0aW9ucy5tYXNrOworICAgIFRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUGFpbnRQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CisgICAg
cGFyYW1ldGVycy50ZXh0dXJlTWFwcGVyID0gb3B0aW9ucy50ZXh0dXJlTWFwcGVyOworICAgIHBh
cmFtZXRlcnMudHJhbnNmb3JtID0gdHJhbnNmb3JtOworICAgIHBhcmFtZXRlcnMub3BhY2l0eSA9
IG9wdGlvbnMub3BhY2l0eTsKKyAgICBwYXJhbWV0ZXJzLm1hc2sgPSBvcHRpb25zLm1hc2suZ2V0
KCk7CiAKICAgICBpZiAobV9zdGF0ZS5zb2xpZENvbG9yLmlzVmFsaWQoKSAmJiAhbV9zdGF0ZS5j
b250ZW50c1JlY3QuaXNFbXB0eSgpKSB7CiAgICAgICAgIGlmICghbV9zdGF0ZS5zb2xpZENvbG9y
LmFscGhhKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgb3B0aW9ucy50ZXh0dXJl
TWFwcGVyLT5kcmF3U29saWRDb2xvcihtX3N0YXRlLmNvbnRlbnRzUmVjdCwgdHJhbnNmb3JtLCBt
X3N0YXRlLnNvbGlkQ29sb3IpOworICAgICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmRyYXdT
b2xpZENvbG9yKG1fc3RhdGUuY29udGVudHNSZWN0LCBwYXJhbWV0ZXJzLnRyYW5zZm9ybSwgbV9z
dGF0ZS5zb2xpZENvbG9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChtX2Jh
Y2tpbmdTdG9yZSkgewogICAgICAgICBBU1NFUlQobV9zdGF0ZS5kcmF3c0NvbnRlbnQgJiYgbV9z
dGF0ZS5jb250ZW50c1Zpc2libGUgJiYgIW1fc3RhdGUuc2l6ZS5pc0VtcHR5KCkpOwogICAgICAg
ICBBU1NFUlQoIWxheWVyUmVjdCgpLmlzRW1wdHkoKSk7Ci0gICAgICAgIG1fYmFja2luZ1N0b3Jl
LT5wYWludFRvVGV4dHVyZU1hcHBlcihvcHRpb25zLnRleHR1cmVNYXBwZXIsIGxheWVyUmVjdCgp
LCB0cmFuc2Zvcm0sIG9wYWNpdHksIG1hc2suZ2V0KCkpOworICAgICAgICBwYXJhbWV0ZXJzLnRh
cmdldFJlY3QgPSBsYXllclJlY3QoKTsKKyAgICAgICAgbV9iYWNraW5nU3RvcmUtPnBhaW50VG9U
ZXh0dXJlTWFwcGVyKHBhcmFtZXRlcnMpOwogICAgIH0KIAogICAgIGlmIChtX2NvbnRlbnRzTGF5
ZXIpIHsKICAgICAgICAgQVNTRVJUKCFsYXllclJlY3QoKS5pc0VtcHR5KCkpOwotICAgICAgICBt
X2NvbnRlbnRzTGF5ZXItPnBhaW50VG9UZXh0dXJlTWFwcGVyKG9wdGlvbnMudGV4dHVyZU1hcHBl
ciwgbV9zdGF0ZS5jb250ZW50c1JlY3QsIHRyYW5zZm9ybSwgb3BhY2l0eSwgbWFzay5nZXQoKSk7
CisgICAgICAgIHBhcmFtZXRlcnMudGFyZ2V0UmVjdCA9IG1fc3RhdGUuY29udGVudHNSZWN0Owor
ICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnBhaW50VG9UZXh0dXJlTWFwcGVyKHBhcmFtZXRlcnMp
OwogICAgIH0KIH0KIApAQCAtMjcwLDcgKzI3NSw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVy
OjpwYWludFNlbGZBbmRDaGlsZHJlbldpdGhSZXBsaWNhKGNvbnN0IFRleHR1cmVNYXBwZXJQYWlu
CiAgICAgICAgIC8vIFdlIGNob29zZSBlaXRoZXIgdGhlIGNvbnRlbnQncyBtYXNrIG9yIHRoZSBy
ZXBsaWNhJ3MgbWFzay4KICAgICAgICAgLy8gRklYTUU6IGJsZW5kIHRoZSB0d28gaWYgYm90aCBl
eGlzdC4KICAgICAgICAgaWYgKG1fc3RhdGUucmVwbGljYUxheWVyLT5tX3N0YXRlLm1hc2tMYXll
cikKLSAgICAgICAgICAgIHJlcGxpY2FPcHRpb25zLm1hc2sgPSBtX3N0YXRlLnJlcGxpY2FMYXll
ci0+bV9zdGF0ZS5tYXNrTGF5ZXItPnRleHR1cmUoKTsKKyAgICAgICAgICAgIHJlcGxpY2FPcHRp
b25zLm1hc2sgPSBtX3N0YXRlLnJlcGxpY2FMYXllci0+bV9zdGF0ZS5tYXNrTGF5ZXItPnRleHR1
cmUoKS5nZXQoKTsKIAogICAgICAgICByZXBsaWNhT3B0aW9ucy50cmFuc2Zvcm0KICAgICAgICAg
ICAgIC5tdWx0aXBseShtX3N0YXRlLnJlcGxpY2FMYXllci0+bV9lZmZlY3RpdmVUcmFuc2Zvcm0u
Y29tYmluZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgKaW5kZXgg
MzhhZjAzZTg5YjYyNDgxYWJhZjMyMDk4YzNhODE3YWI0ZDAwMGMxZS4uOTJhMTU4ZTZkMjFiNGE3
NTI5MWVmOTQzOWI4NzYyYTNmNzk2MGMzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyLmgKQEAgLTI4LDEzICsyOCwyOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIFRleHR1cmVNYXBwZXI7CiBjbGFzcyBCaXRtYXBUZXh0dXJlOworY2xhc3MgVGV4dHVy
ZU1hcHBlcjsKKworY2xhc3MgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQYWludFBhcmFtZXRl
cnMgeworcHVibGljOgorICAgIFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXI7CisgICAgRmxv
YXRSZWN0IHRhcmdldFJlY3Q7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtOwor
ICAgIGZsb2F0IG9wYWNpdHk7CisgICAgQml0bWFwVGV4dHVyZSogbWFzazsKKworICAgIFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyUGFpbnRQYXJhbWV0ZXJzKCkKKyAgICAgICAgOiB0ZXh0dXJl
TWFwcGVyKDApCisgICAgICAgICwgb3BhY2l0eSgxKQorICAgICAgICAsIG1hc2soMCkKKyAgICB7
IH0KK307CiAKIGNsYXNzIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyIHsKIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllcigpIHsgfQotICAgIHZpcnR1YWwg
dm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0
JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCA9IFRyYW5zZm9y
bWF0aW9uTWF0cml4KCksIGZsb2F0IG9wYWNpdHkgPSAxLjAsIEJpdG1hcFRleHR1cmUqIG1hc2sg
PSAwKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKGNvbnN0IFRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUGFpbnRQYXJhbWV0ZXJzJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBzd2FwQnVmZmVycygpIHsgfQogI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQogICAg
IHZpcnR1YWwgSW50U2l6ZSBwbGF0Zm9ybUxheWVyU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIEludFNp
emUoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwCmlu
ZGV4IDRhN2JiMTA4NmVlN2E4NjdiMmQzZmQ2ODBjNWEzN2RiMDViOGI3ZDguLjM3NzAwNzM1NmUx
MjI1Y2EzZjZlYTBjNGMzN2IwMjM4M2I4ODYwMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAKQEAgLTExOSwyMSArMTE5LDIxIEBAIHN0YXRpYyBib29s
IHNob3VsZFNob3dUaWxlRGVidWdWaXN1YWxzKCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZv
aWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnBhaW50VGlsZXNUb1RleHR1cmVNYXBwZXIoVmVj
dG9yPFRleHR1cmVNYXBwZXJUaWxlKj4mIHRpbGVzLCBUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFw
cGVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5
LCBCaXRtYXBUZXh0dXJlKiBtYXNrLCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCit2b2lkIENvb3Jk
aW5hdGVkQmFja2luZ1N0b3JlOjpwYWludFRpbGVzVG9UZXh0dXJlTWFwcGVyKFZlY3RvcjxUZXh0
dXJlTWFwcGVyVGlsZSo+JiB0aWxlcywgY29uc3QgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQ
YWludFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCB0aWxlcy5zaXplKCk7ICsraSkgewogICAgICAgICBUZXh0dXJlTWFwcGVyVGlsZSogdGlsZSA9
IHRpbGVzW2ldOwotICAgICAgICB0aWxlLT5wYWludCh0ZXh0dXJlTWFwcGVyLCB0cmFuc2Zvcm0s
IG9wYWNpdHksIG1hc2ssIGNhbGN1bGF0ZUV4cG9zZWRUaWxlRWRnZXMocmVjdCwgdGlsZS0+cmVj
dCgpKSk7CisgICAgICAgIHRpbGUtPnBhaW50KHBhcmFtZXRlcnMudGV4dHVyZU1hcHBlciwgcGFy
YW1ldGVycy50cmFuc2Zvcm0sIHBhcmFtZXRlcnMub3BhY2l0eSwgcGFyYW1ldGVycy5tYXNrLCBj
YWxjdWxhdGVFeHBvc2VkVGlsZUVkZ2VzKHBhcmFtZXRlcnMudGFyZ2V0UmVjdCwgdGlsZS0+cmVj
dCgpKSk7CiAgICAgICAgIHN0YXRpYyBib29sIHNob3VsZERlYnVnID0gc2hvdWxkU2hvd1RpbGVE
ZWJ1Z1Zpc3VhbHMoKTsKICAgICAgICAgaWYgKCFzaG91bGREZWJ1ZykKICAgICAgICAgICAgIGNv
bnRpbnVlOwogCi0gICAgICAgIHRleHR1cmVNYXBwZXItPmRyYXdCb3JkZXIoQ29sb3IoMHhGRiwg
MCwgMCksIDIsIHRpbGUtPnJlY3QoKSwgdHJhbnNmb3JtKTsKLSAgICAgICAgdGV4dHVyZU1hcHBl
ci0+ZHJhd1JlcGFpbnRDb3VudGVyKHN0YXRpY19jYXN0PENvb3JkaW5hdGVkQmFja2luZ1N0b3Jl
VGlsZSo+KHRpbGUpLT5yZXBhaW50Q291bnQoKSwgOCwgdGlsZS0+cmVjdCgpLmxvY2F0aW9uKCks
IHRyYW5zZm9ybSk7CisgICAgICAgIHBhcmFtZXRlcnMudGV4dHVyZU1hcHBlci0+ZHJhd0JvcmRl
cihDb2xvcigweEZGLCAwLCAwKSwgMiwgdGlsZS0+cmVjdCgpLCBwYXJhbWV0ZXJzLnRyYW5zZm9y
bSk7CisgICAgICAgIHBhcmFtZXRlcnMudGV4dHVyZU1hcHBlci0+ZHJhd1JlcGFpbnRDb3VudGVy
KHN0YXRpY19jYXN0PENvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZSo+KHRpbGUpLT5yZXBhaW50
Q291bnQoKSwgOCwgdGlsZS0+cmVjdCgpLmxvY2F0aW9uKCksIHBhcmFtZXRlcnMudHJhbnNmb3Jt
KTsKICAgICB9CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnBhaW50VG9UZXh0
dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYg
dGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgZmxvYXQg
b3BhY2l0eSwgQml0bWFwVGV4dHVyZSogbWFzaykKK3ZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3Rv
cmU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKGNvbnN0IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
UGFpbnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogICAgIGlmIChtX3RpbGVzLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTU4LDIwICsxNTgsMjAgQEAgdm9pZCBDb29yZGluYXRl
ZEJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVy
ZU1hcHBlciwKIAogICAgICAgICAvLyBPbmx5IHNob3cgdGhlIHByZXZpb3VzIHRpbGUgaWYgdGhl
IG9wYWNpdHkgaXMgaGlnaCwgb3RoZXJ3aXNlIGVmZmVjdCBsb29rcyBsaWtlIGEgYnVnLgogICAg
ICAgICAvLyBXZSBzaG93IHRoZSBwcmV2aW91cy1zY2FsZSB0aWxlIGFueXdheSBpZiBpdCBkb2Vz
bid0IGludGVyc2VjdCB3aXRoIGFueSBjdXJyZW50LXNjYWxlIHRpbGUuCi0gICAgICAgIGlmIChv
cGFjaXR5IDwgMC45NSAmJiBjb3ZlcmVkUmVjdC5pbnRlcnNlY3RzKHRpbGUucmVjdCgpKSkKKyAg
ICAgICAgaWYgKHBhcmFtZXRlcnMub3BhY2l0eSA8IDAuOTUgJiYgY292ZXJlZFJlY3QuaW50ZXJz
ZWN0cyh0aWxlLnJlY3QoKSkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBwcmV2
aW91c1RpbGVzVG9QYWludC5hcHBlbmQoJnRpbGUpOwogICAgIH0KIAotICAgIEZsb2F0UmVjdCBy
ZWN0T25Db250ZW50cyhGbG9hdFBvaW50Ojp6ZXJvKCksIG1fc2l6ZSk7Ci0gICAgVHJhbnNmb3Jt
YXRpb25NYXRyaXggYWRqdXN0ZWRUcmFuc2Zvcm0gPSB0cmFuc2Zvcm07CisgICAgVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJQYWludFBhcmFtZXRlcnMgYWRqdXN0ZWRQYXJhbWV0ZXJzID0gcGFy
YW1ldGVyczsKKyAgICBhZGp1c3RlZFBhcmFtZXRlcnMudGFyZ2V0UmVjdCA9IEZsb2F0UmVjdChG
bG9hdFBvaW50Ojp6ZXJvKCksIG1fc2l6ZSk7CiAgICAgLy8gdGFyZ2V0UmVjdCBpcyBvbiB0aGUg
Y29udGVudHMgY29vcmRpbmF0ZSBzeXN0ZW0sIHNvIHdlIG11c3QgY29tcGFyZSB0d28gcmVjdHMg
b24gdGhlIGNvbnRlbnRzIGNvb3JkaW5hdGUgc3lzdGVtLgogICAgIC8vIFNlZSBUaWxlZEJhY2tp
bmdTdG9yZS4KLSAgICBhZGp1c3RlZFRyYW5zZm9ybS5tdWx0aXBseShUcmFuc2Zvcm1hdGlvbk1h
dHJpeDo6cmVjdFRvUmVjdChyZWN0T25Db250ZW50cywgdGFyZ2V0UmVjdCkpOworICAgIGFkanVz
dGVkUGFyYW1ldGVycy50cmFuc2Zvcm0ubXVsdGlwbHkoVHJhbnNmb3JtYXRpb25NYXRyaXg6OnJl
Y3RUb1JlY3QoYWRqdXN0ZWRQYXJhbWV0ZXJzLnRhcmdldFJlY3QsIHBhcmFtZXRlcnMudGFyZ2V0
UmVjdCkpOwogCi0gICAgcGFpbnRUaWxlc1RvVGV4dHVyZU1hcHBlcihwcmV2aW91c1RpbGVzVG9Q
YWludCwgdGV4dHVyZU1hcHBlciwgYWRqdXN0ZWRUcmFuc2Zvcm0sIG9wYWNpdHksIG1hc2ssIHJl
Y3RPbkNvbnRlbnRzKTsKLSAgICBwYWludFRpbGVzVG9UZXh0dXJlTWFwcGVyKHRpbGVzVG9QYWlu
dCwgdGV4dHVyZU1hcHBlciwgYWRqdXN0ZWRUcmFuc2Zvcm0sIG9wYWNpdHksIG1hc2ssIHJlY3RP
bkNvbnRlbnRzKTsKKyAgICBwYWludFRpbGVzVG9UZXh0dXJlTWFwcGVyKHByZXZpb3VzVGlsZXNU
b1BhaW50LCBhZGp1c3RlZFBhcmFtZXRlcnMpOworICAgIHBhaW50VGlsZXNUb1RleHR1cmVNYXBw
ZXIodGlsZXNUb1BhaW50LCBhZGp1c3RlZFBhcmFtZXRlcnMpOwogfQogCiB2b2lkIENvb3JkaW5h
dGVkQmFja2luZ1N0b3JlOjpjb21taXRUaWxlT3BlcmF0aW9ucyhUZXh0dXJlTWFwcGVyKiB0ZXh0
dXJlTWFwcGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmgKaW5k
ZXggYWU1YWY4ZDRmYTJmYzllYmQyMTE5NzI3ZmNhZGQ4NTk2MjMzMGY5OS4uNzY0ZTliMDJkZjI4
ZDk5MmViMmI1NTYzOTFkNzFhMjVkMWIxYjUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZEJhY2tpbmdTdG9yZS5oCkBAIC02NSwxMyArNjUsMTMgQEAgcHVibGljOgogICAgIHZvaWQg
Y29tbWl0VGlsZU9wZXJhdGlvbnMoV2ViQ29yZTo6VGV4dHVyZU1hcHBlciopOwogICAgIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSgpIGNvbnN0OwogICAgIHZvaWQg
c2V0U2l6ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRUb1RleHR1cmVNYXBwZXIoV2ViQ29yZTo6VGV4dHVyZU1hcHBlciosIGNvbnN0IFdlYkNvcmU6
OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQs
IFdlYkNvcmU6OkJpdG1hcFRleHR1cmUqKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1
cmVNYXBwZXIoY29uc3QgV2ViQ29yZTo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQYWludFBh
cmFtZXRlcnMmKTsKIAogcHJpdmF0ZToKICAgICBDb29yZGluYXRlZEJhY2tpbmdTdG9yZSgpCiAg
ICAgICAgIDogbV9zY2FsZSgxLikKICAgICB7IH0KLSAgICB2b2lkIHBhaW50VGlsZXNUb1RleHR1
cmVNYXBwZXIoVmVjdG9yPFdlYkNvcmU6OlRleHR1cmVNYXBwZXJUaWxlKj4mLCBXZWJDb3JlOjpU
ZXh0dXJlTWFwcGVyKiwgY29uc3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9h
dCwgV2ViQ29yZTo6Qml0bWFwVGV4dHVyZSosIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpOwor
ICAgIHZvaWQgcGFpbnRUaWxlc1RvVGV4dHVyZU1hcHBlcihWZWN0b3I8V2ViQ29yZTo6VGV4dHVy
ZU1hcHBlclRpbGUqPiYsIGNvbnN0IFdlYkNvcmU6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
UGFpbnRQYXJhbWV0ZXJzJik7CiAKICAgICBIYXNoTWFwPHVpbnQzMl90LCBDb29yZGluYXRlZEJh
Y2tpbmdTdG9yZVRpbGU+IG1fdGlsZXM7CiAgICAgSGFzaFNldDx1aW50MzJfdD4gbV90aWxlc1Rv
UmVtb3ZlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182266</attachid>
            <date>2013-01-10 22:12:55 -0800</date>
            <delta_ts>2013-01-14 16:26:06 -0800</delta_ts>
            <desc>Patch : [TexMap] Refactor code related to debug border and repaint count. [1/2] </desc>
            <filename>bug-105787-20130111150934.patch</filename>
            <type>text/plain</type>
            <size>28314</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MzkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWQ3NmFiMGJhZDEyYjUw
ZGViYzE3OWM1OTJjNDQ2Y2U5YWU0NjI1OC4uNTE5YWI3NzQwZjRiZGI0MTZmNjI5YjBiN2VjZGJl
NWRmMzE3Mjg2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEzLTAxLTEwICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFtUZXhNYXBd
IFJlZmFjdG9yIGNvZGUgcmVsYXRlZCB0byBkZWJ1ZyBib3JkZXIgYW5kIHJlcGFpbnQgY291bnQu
IFsxLzJdCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDU3ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
bnRyb2R1Y2UgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQYWludFBhcmFtZXRlcnMgdG8gcmVk
dWNlIHRoZSBudW1iZXIKKyAgICAgICAgb2YgcGFyYW1ldGVycyBvZiBUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllcjo6cGFpbnRUb1RleHR1cmVNYXBwZXIoKS4KKyAgICAgICAgTm93IHdlIGNhbiBl
YXNpbHkgYWRkIG5ldyBhcmd1bWVudHMgaW50byBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllcjo6
cGFpbnRUb1RleHR1cmVNYXBwZXIoKQorICAgICAgICB3aGVuIG5lZWRlZC4KKworICAgICAgICBO
byBuZXcgdGVzdHMuIFJlZmFjdG9yaW5nIG9ubHkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmg6
CisgICAgICAgIChHcmFwaGljc0NvbnRleHQzRFByaXZhdGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwOgorICAgICAgICAoR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oOgorICAgICAg
ICAoR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcDoKKyAgICAgICAgKEdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBh
aW50VG9UZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9NZWRp
YVBsYXllclByaXZhdGVRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVRdDo6cGFpbnRUb1RleHR1cmVNYXBwZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3F0L01lZGlhUGxheWVyUHJpdmF0ZVF0Lmg6CisgICAgICAgIChNZWRpYVBsYXllclByaXZhdGVR
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNr
aW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclN1cmZhY2VCYWNr
aW5nU3RvcmU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1
cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmg6
CisgICAgICAgIChUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFRleHR1cmVN
YXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFRleHR1cmVNYXBwZXJUaWxlZEJh
Y2tpbmdTdG9yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnBh
aW50U2VsZik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyUGFpbnRQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUGFpbnRQYXJhbWV0ZXJzOjpUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllclBhaW50UGFyYW1ldGVycyk6CisgICAgICAgIChUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllcik6CisKIDIwMTMtMDEtMDcgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFu
eTEwMC5uZXQ+CiAKICAgICAgICAgW1RleE1hcF0gUmVuYW1lIGN1cnJlbnRbVHJhbnNmb3JtfE9w
YWNpdHl8RmlsdGVyc10gaW4gVGV4dHVyZU1hcHBlckxheWVyLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGZjZjNh
NzA4YjY4NzMwZjRiZDRmYmI3NTc2ZmRmOTVmMDllZWE2MTAuLmE3ZTVhMWUxZGQ4NmZmYmIyZTcw
NjFjYjI5MzNjYmMyZTBkNGRkMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyMSBAQAogMjAxMy0w
MS0xMCAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAorICAgICAg
ICBbVGV4TWFwXSBSZWZhY3RvciBjb2RlIHJlbGF0ZWQgdG8gZGVidWcgYm9yZGVyIGFuZCByZXBh
aW50IGNvdW50LiBbMS8yXQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTA1Nzg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBjaGFuZ2VzIHRoZSBzaWduYXR1cmUgb2YgVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXI6OnBhaW50VG9UZXh0dXJlTWFwcGVyKCkKKyAgICAgICAgc28gQ29vcmRp
bmF0ZWRCYWNraW5nU3RvcmUgaXMgYWxzbyBjaGFuZ2VkLgorCisgICAgICAgICogVUlQcm9jZXNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6cGFpbnRUaWxlc1RvVGV4dHVyZU1h
cHBlcik6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpwYWludFRv
VGV4dHVyZU1hcHBlcik6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKENvb3JkaW5hdGVkQmFja2luZ1N0
b3JlKToKKworMjAxMy0wMS0xMCAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAw
Lm5ldD4KKwogICAgICAgICBbUXRdW0VGTF0gUmVuYW1lIGZyb20geHh4Q29udGVudHNTY2FsZSgp
IHRvIHh4eFNjYWxlKCkgaW4gUGFnZVZpZXdwb3J0Q29udHJvbGxlci4KICAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjUzNwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRFBy
aXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlLmNwcAppbmRleCBjZDBlMDliODRlNzVkMTQzMTZlYzMyNzM2Nzgx
ZGI1YWVkZWI5NjUyLi43YzQyZGY3ZjZmMzc3YTFiMzE4NjVkOWRiNzBlNTY0YTY4OWRjZjhiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHQzRFByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAKQEAgLTc4LDcgKzc4LDcgQEAg
UGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBsYXRm
b3JtQ29udGV4dCgpCiB9CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIFVT
RShURVhUVVJFX01BUFBFUikKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRv
VGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJl
Y3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIGZsb2F0
IG9wYWNpdHksIEJpdG1hcFRleHR1cmUqIG1hc2spCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoY29uc3QgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJQYWludFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7CiAgICAgaWYgKCFtX2dsQ29udGV4dCkK
ICAgICAgICAgcmV0dXJuOwpAQCAtODgsMTAgKzg4LDEwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFw
cGVyCiAgICAgbV9jb250ZXh0LT5tYXJrTGF5ZXJDb21wb3NpdGVkKCk7CiAKICAgICAvLyBGSVhN
RTogV2UgZG8gbm90IHN1cHBvcnQgbWFzayBmb3IgdGhlIG1vbWVudCB3aXRoIFRleHR1cmVNYXBw
ZXJJbWFnZUJ1ZmZlci4KLSAgICBpZiAodGV4dHVyZU1hcHBlci0+YWNjZWxlcmF0aW9uTW9kZSgp
ICE9IFRleHR1cmVNYXBwZXI6Ok9wZW5HTE1vZGUpIHsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0ID0gdGV4dHVyZU1hcHBlci0+Z3JhcGhpY3NDb250ZXh0KCk7CisgICAgaWYgKHBh
cmFtZXRlcnMudGV4dHVyZU1hcHBlci0+YWNjZWxlcmF0aW9uTW9kZSgpICE9IFRleHR1cmVNYXBw
ZXI6Ok9wZW5HTE1vZGUpIHsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0gcGFy
YW1ldGVycy50ZXh0dXJlTWFwcGVyLT5ncmFwaGljc0NvbnRleHQoKTsKICAgICAgICAgY29udGV4
dC0+c2F2ZSgpOwotICAgICAgICBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+c2V0R2xvYmFs
QWxwaGEob3BhY2l0eSk7CisgICAgICAgIGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5zZXRH
bG9iYWxBbHBoYShwYXJhbWV0ZXJzLm9wYWNpdHkpOwogCiAgICAgICAgIGNvbnN0IGludCBoZWln
aHQgPSBtX2NvbnRleHQtPm1fY3VycmVudEhlaWdodDsKICAgICAgICAgY29uc3QgaW50IHdpZHRo
ID0gbV9jb250ZXh0LT5tX2N1cnJlbnRXaWR0aDsKQEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBl
ciogdGV4dHVyZU1hcHBlcgogICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoMCwgaGVpZ2h0KTsK
ICAgICAgICAgY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7CiAKLSAgICAgICAgY29u
dGV4dC0+Y29uY2F0Q1RNKG1hdHJpeC50b0FmZmluZVRyYW5zZm9ybSgpKTsKKyAgICAgICAgY29u
dGV4dC0+Y29uY2F0Q1RNKHBhcmFtZXRlcnMudHJhbnNmb3JtLnRvQWZmaW5lVHJhbnNmb3JtKCkp
OwogCiAgICAgICAgIG1fY29udGV4dC0+cmVhZFJlbmRlcmluZ1Jlc3VsdHMocGl4ZWxzLmdldCgp
LCB0b3RhbEJ5dGVzKTsKIApAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFw
cGVyCiAgICAgICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGltYWdlU3VyZmFjZSA9IGFkb3B0
UmVmKGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zvcl9kYXRhKAogICAgICAgICAgICAgY29u
c3RfY2FzdDx1bnNpZ25lZCBjaGFyKj4ocGl4ZWxzLmdldCgpKSwgQ0FJUk9fRk9STUFUX0FSR0Iz
Miwgd2lkdGgsIGhlaWdodCwgd2lkdGggKiA0KSk7CiAKLSAgICAgICAgY29udGV4dC0+cGxhdGZv
cm1Db250ZXh0KCktPmRyYXdTdXJmYWNlVG9Db250ZXh0KGltYWdlU3VyZmFjZS5nZXQoKSwgdGFy
Z2V0UmVjdCwgSW50UmVjdCgwLCAwLCB3aWR0aCwgaGVpZ2h0KSwgY29udGV4dCk7CisgICAgICAg
IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5kcmF3U3VyZmFjZVRvQ29udGV4dChpbWFnZVN1
cmZhY2UuZ2V0KCksIHBhcmFtZXRlcnMudGFyZ2V0UmVjdCwgSW50UmVjdCgwLCAwLCB3aWR0aCwg
aGVpZ2h0KSwgY29udGV4dCk7CiAKICAgICAgICAgY29udGV4dC0+cmVzdG9yZSgpOwogICAgICAg
ICByZXR1cm47CkBAIC0xMzksMTAgKzEzOSwxMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlcgog
ICAgICAgICAgICAgcHJldmlvdXNBY3RpdmVDb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsK
ICAgICB9CiAKLSAgICBUZXh0dXJlTWFwcGVyR0wqIHRleG1hcEdMID0gc3RhdGljX2Nhc3Q8VGV4
dHVyZU1hcHBlckdMKj4odGV4dHVyZU1hcHBlcik7CisgICAgVGV4dHVyZU1hcHBlckdMKiB0ZXht
YXBHTCA9IHN0YXRpY19jYXN0PFRleHR1cmVNYXBwZXJHTCo+KHBhcmFtZXRlcnMudGV4dHVyZU1h
cHBlcik7CiAgICAgVGV4dHVyZU1hcHBlckdMOjpGbGFncyBmbGFncyA9IFRleHR1cmVNYXBwZXJH
TDo6U2hvdWxkRmxpcFRleHR1cmUgfCAobV9jb250ZXh0LT5tX2F0dHJzLmFscGhhID8gVGV4dHVy
ZU1hcHBlckdMOjpTaG91bGRCbGVuZCA6IDApOwogICAgIEludFNpemUgdGV4dHVyZVNpemUobV9j
b250ZXh0LT5tX2N1cnJlbnRXaWR0aCwgbV9jb250ZXh0LT5tX2N1cnJlbnRIZWlnaHQpOwotICAg
IHRleG1hcEdMLT5kcmF3VGV4dHVyZShtX2NvbnRleHQtPm1fdGV4dHVyZSwgZmxhZ3MsIHRleHR1
cmVTaXplLCB0YXJnZXRSZWN0LCBtYXRyaXgsIG9wYWNpdHksIG1hc2spOworICAgIHRleG1hcEdM
LT5kcmF3VGV4dHVyZShtX2NvbnRleHQtPm1fdGV4dHVyZSwgZmxhZ3MsIHRleHR1cmVTaXplLCBw
YXJhbWV0ZXJzLnRhcmdldFJlY3QsIHBhcmFtZXRlcnMudHJhbnNmb3JtLCBwYXJhbWV0ZXJzLm9w
YWNpdHksIHBhcmFtZXRlcnMubWFzayk7CiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HX0dMKQogfQogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKaW5kZXggNjlkYWQ2NzU0NzIyYWM3YTg4MmNh
ODc2MTVhYjg4NTQ5NzlhZmJjNi4uYWM1NTI2ZTc3ZDdkZGVjYzVlOWZjMTBiZDYyMDZiNzE5Nzkx
N2QzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKQEAgLTQ0LDcgKzQ0LDcg
QEAgcHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJTdHlsZSByZW5kZXJTdHls
ZSgpIHsgcmV0dXJuIG1fcmVuZGVyU3R5bGU7IH0KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykgJiYgVVNFKFRFWFRVUkVfTUFQUEVSKQotICAgIHZpcnR1YWwgdm9pZCBwYWludFRv
VGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXQsIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgb3BhY2l0eSwgQml0bWFwVGV4dHVyZSog
bWFzayk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKGNvbnN0IFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyUGFpbnRQYXJhbWV0ZXJzJik7CiAjZW5kaWYKIAogcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFw
aGljc0NvbnRleHQzRFByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZWZsL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAKaW5kZXggOTAzMDA0MTdiNzgwMWEz
MTE1MTYzMmMzN2M4MGYxYjJiZjI2ZTVhNi4uOGRiODE5Y2I3Y2JiNTg4NTQwNDViYjgwYmE5MmE1
MTkxOTY3ZWJmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZWZsL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAKQEAgLTExNiw3
ICsxMTYsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6bWFrZUNvbnRleHRDdXJy
ZW50KCkKIH0KIAogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKLXZvaWQgR3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3Qg
RmxvYXRSZWN0JiAvKiB0YXJnZXQgKi8sIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxv
YXQgLyogb3BhY2l0eSAqLywgQml0bWFwVGV4dHVyZSogLyogbWFzayAqLykKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcihjb25zdCBUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllclBhaW50UGFyYW1ldGVycyYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9H
cmFwaGljc0NvbnRleHQzRFByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2VmbC9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaAppbmRleCAyZWIyZjc1ODcxZDBkY2Q5
MTUyYTE4NjViYWYwNTVlOTU0NjIwNGI1Li5iZTlkM2M2Y2I0ZDUxYjc3OWRmYWJkN2E4Njg4OWVl
YmZiZGFhZGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9l
ZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oCkBAIC01MSw3ICs1MSw3
IEBAIHB1YmxpYzoKICAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7CiAj
ZW5kaWYKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCi0gICAgdmlydHVhbCB2b2lkIHBhaW50
VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldCwg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJl
KiBtYXNrKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoY29uc3QgVGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQYWludFBhcmFtZXRlcnMmKTsKICNlbmRpZgogI2lmIFVT
RShHUkFQSElDU19TVVJGQUNFKQogICAgIHZpcnR1YWwgSW50U2l6ZSBwbGF0Zm9ybUxheWVyU2l6
ZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcAppbmRleCAyMGIzYjdkOGZiMzU3MzhjMjk1
YzNjOGNkOWMzN2IyMmNjZDA1MTVhLi45ZTc0ZmY2MjRlYTFhNmE2YWNlOWJiYTE2YjYzZTVmYzA3
ZTM1ZjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9H
cmFwaGljc0NvbnRleHQzRFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcApAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6
CiAgICAgfkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSgpOwogCiAjaWYgVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQotICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0
dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXQsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiwgZmxvYXQgb3BhY2l0eSwgQml0bWFwVGV4dHVyZSogbWFzayk7CisgICAgdmlydHVh
bCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKGNvbnN0IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyUGFpbnRQYXJhbWV0ZXJzJik7CiAjZW5kaWYKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkK
ICAgICB2aXJ0dWFsIEludFNpemUgcGxhdGZvcm1MYXllclNpemUoKSBjb25zdDsKQEAgLTIwOCwx
MiArMjA4LDEyIEBAIHN0YXRpYyBpbmxpbmUgcXVpbnQzMiBzd2FwQmdyVG9SZ2IocXVpbnQzMiBw
aXhlbCkKIH0KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0
ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiBtYXRyaXgsIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUqIG1hc2sp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoY29u
c3QgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQYWludFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMp
CiB7CiAgICAgbV9jb250ZXh0LT5tYXJrTGF5ZXJDb21wb3NpdGVkKCk7CiAgICAgYmxpdE11bHRp
c2FtcGxlRnJhbWVidWZmZXJBbmRSZXN0b3JlQ29udGV4dCgpOwogCi0gICAgaWYgKHRleHR1cmVN
YXBwZXItPmFjY2VsZXJhdGlvbk1vZGUoKSA9PSBUZXh0dXJlTWFwcGVyOjpPcGVuR0xNb2RlKSB7
CisgICAgaWYgKHBhcmFtZXRlcnMudGV4dHVyZU1hcHBlci0+YWNjZWxlcmF0aW9uTW9kZSgpID09
IFRleHR1cmVNYXBwZXI6Ok9wZW5HTE1vZGUpIHsKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkK
ICAgICAgICAgLy8gQ0dMIG9ubHkgcHJvdmlkZXMgdXMgdGhlIGNvbnRleHQsIGJ1dCBub3QgdGhl
IHZpZXcgdGhlIGNvbnRleHQgaXMgY3VycmVudGx5IGJvdW5kIHRvLgogICAgICAgICAvLyBUbyBt
YWtlIHN1cmUgdGhlIGNvbnRleHQgaXMgYm91bmQgdGhlIHRoZSByaWdodCBzdXJmYWNlIHdlIGhh
dmUgdG8gZG8gYSBtYWtlQ3VycmVudCB0aHJvdWdoIFFPcGVuR0wgYWdhaW4uCkBAIC0yMjksMTcg
KzIyOSwxNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVN
YXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlcgogICAgICAgICAvLyBGSVhNRTogUmVt
b3ZlIHRoaXMgY29kZSBhcyBzb29uIGFzIEdyYXBoaWNzU3VyZmFjZU1hYyBtYWtlcyB1c2Ugb2Yg
TlNPcGVuR0wuCiAgICAgICAgIGN1cnJlbnRDb250ZXh0LT5tYWtlQ3VycmVudChjdXJyZW50U3Vy
ZmFjZSk7CiAKLSAgICAgICAgVGV4dHVyZU1hcHBlckdMKiB0ZXhtYXBHTCA9IHN0YXRpY19jYXN0
PFRleHR1cmVNYXBwZXJHTCo+KHRleHR1cmVNYXBwZXIpOwotICAgICAgICBtX2dyYXBoaWNzU3Vy
ZmFjZS0+cGFpbnRUb1RleHR1cmVNYXBwZXIodGV4bWFwR0wsIHRhcmdldFJlY3QsIG1hdHJpeCwg
b3BhY2l0eSwgbWFzayk7CisgICAgICAgIFRleHR1cmVNYXBwZXJHTCogdGV4bWFwR0wgPSBzdGF0
aWNfY2FzdDxUZXh0dXJlTWFwcGVyR0wqPihwYXJhbWV0ZXJzLnRleHR1cmVNYXBwZXIpOworICAg
ICAgICBtX2dyYXBoaWNzU3VyZmFjZS0+cGFpbnRUb1RleHR1cmVNYXBwZXIodGV4bWFwR0wsIHBh
cmFtZXRlcnMudGFyZ2V0UmVjdCwgcGFyYW1ldGVycy50cmFuc2Zvcm0sIHBhcmFtZXRlcnMub3Bh
Y2l0eSwgcGFyYW1ldGVycy5tYXNrKTsKICNlbmRpZgogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0gdGV4dHVyZU1hcHBlci0+Z3JhcGhpY3ND
b250ZXh0KCk7CisgICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0gcGFyYW1ldGVycy50ZXh0
dXJlTWFwcGVyLT5ncmFwaGljc0NvbnRleHQoKTsKICAgICBRUGFpbnRlciogcGFpbnRlciA9IGNv
bnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOwogICAgIHBhaW50ZXItPnNhdmUoKTsKLSAgICBwYWlu
dGVyLT5zZXRUcmFuc2Zvcm0obWF0cml4KTsKLSAgICBwYWludGVyLT5zZXRPcGFjaXR5KG9wYWNp
dHkpOworICAgIHBhaW50ZXItPnNldFRyYW5zZm9ybShwYXJhbWV0ZXJzLnRyYW5zZm9ybSk7Cisg
ICAgcGFpbnRlci0+c2V0T3BhY2l0eShwYXJhbWV0ZXJzLm9wYWNpdHkpOwogCiAgICAgY29uc3Qg
aW50IGhlaWdodCA9IG1fY29udGV4dC0+bV9jdXJyZW50SGVpZ2h0OwogICAgIGNvbnN0IGludCB3
aWR0aCA9IG1fY29udGV4dC0+bV9jdXJyZW50V2lkdGg7CkBAIC0yNzUsNyArMjc1LDcgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVN
YXBwZXIqIHRleHR1cmVNYXBwZXIKICAgICAgICAgfQogICAgIH0KIAotICAgIHBhaW50ZXItPmRy
YXdJbWFnZSh0YXJnZXRSZWN0LCBvZmZzY3JlZW5JbWFnZSk7CisgICAgcGFpbnRlci0+ZHJhd0lt
YWdlKHBhcmFtZXRlcnMudGFyZ2V0UmVjdCwgb2Zmc2NyZWVuSW1hZ2UpOwogICAgIHBhaW50ZXIt
PnJlc3RvcmUoKTsKIH0KICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9NZWRpYVBsYXll
clByaXZhdGVRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9NZWRp
YVBsYXllclByaXZhdGVRdC5jcHAKaW5kZXggZTA4M2UyOTczMmJiYjc4ZjBmZTUyMzkxMzJhZTU0
Yjc0MzRjMDAzYS4uYzM3NzAxNDQ3YjEzM2U3NDI4ZTY5YmZlNjAxYjRhZGY3NTM2ZjFlYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvTWVkaWFQbGF5ZXJQ
cml2YXRlUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L01l
ZGlhUGxheWVyUHJpdmF0ZVF0LmNwcApAQCAtNjQ1LDcgKzY0NSw3IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlUXQ6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwKIH0KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLXZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlUXQ6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRl
eHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIG1hdHJpeCwgZmxvYXQgb3BhY2l0eSwgQml0bWFwVGV4dHVyZSopCit2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZVF0OjpwYWludFRvVGV4dHVyZU1hcHBlcihjb25zdCBUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllclBhaW50UGFyYW1ldGVycyYpCiB7CiB9CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L01lZGlhUGxheWVyUHJp
dmF0ZVF0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9NZWRpYVBsYXll
clByaXZhdGVRdC5oCmluZGV4IDhlMzFjOWQ2ZGM4MTNkNjQzOWUzMjI0YzE1MjFlZTAwMzA0MGY1
OTUuLjQ4MWZmN2VmYTlkMWFmYmQ5YWJjNmVmNzZiNjUzNTgyY2UyNmQ3MzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L01lZGlhUGxheWVyUHJpdmF0ZVF0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvTWVkaWFQbGF5ZXJQ
cml2YXRlUXQuaApAQCAtMTA5LDcgKzEwOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
YWNjZWxlcmF0ZWRSZW5kZXJpbmdTdGF0ZUNoYW5nZWQoKSB7IH0KICAgICAvLyBDb25zdC1jYXN0
aW5nIGhlcmUgaXMgc2FmZSwgc2luY2UgYWxsIG9mIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
J3MgZnVuY3Rpb25zIGFyZSBjb25zdC5nCiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0
Zm9ybUxheWVyKCkgY29uc3QgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgdm9pZCBwYWludFRv
VGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1
cmUqIG1hc2spOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihjb25zdCBU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclBhaW50UGFyYW1ldGVycyYpOwogI2VuZGlmCiAKICAg
ICB2aXJ0dWFsIFBsYXRmb3JtTWVkaWEgcGxhdGZvcm1NZWRpYSgpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJC
YWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuY3BwCmluZGV4IGU4OTkyNTMxYjI4N2M1YjU5Nzc5
ZTY0NzZlODAxYjhiNjk5NWMyYzcuLmZjZTIwZTNiZDQ1ODIyYzdiY2JlMGE1MDMyOTVmM2I2NzQ5
ZTU3YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5jcHAKQEAgLTUy
LDEwICs1MiwxMCBAQCBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IFRleHR1cmVNYXBwZXJTdXJm
YWNlQmFja2luZ1N0b3JlOjp0ZXh0dXJlKCkgY29uc3QKICAgICByZXR1cm4gZW1wdHlUZXh0dXJl
OwogfQogCi12b2lkIFRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlOjpwYWludFRvVGV4
dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3Qm
IHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGZsb2F0
IG9wYWNpdHksIEJpdG1hcFRleHR1cmUqIG1hc2spCit2b2lkIFRleHR1cmVNYXBwZXJTdXJmYWNl
QmFja2luZ1N0b3JlOjpwYWludFRvVGV4dHVyZU1hcHBlcihjb25zdCBUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllclBhaW50UGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKICAgICBpZiAobV9ncmFw
aGljc1N1cmZhY2UpCi0gICAgICAgIG1fZ3JhcGhpY3NTdXJmYWNlLT5wYWludFRvVGV4dHVyZU1h
cHBlcih0ZXh0dXJlTWFwcGVyLCB0YXJnZXRSZWN0LCB0cmFuc2Zvcm0sIG9wYWNpdHksIG1hc2sp
OworICAgICAgICBtX2dyYXBoaWNzU3VyZmFjZS0+cGFpbnRUb1RleHR1cmVNYXBwZXIocGFyYW1l
dGVycy50ZXh0dXJlTWFwcGVyLCBwYXJhbWV0ZXJzLnRhcmdldFJlY3QsIHBhcmFtZXRlcnMudHJh
bnNmb3JtLCBwYXJhbWV0ZXJzLm9wYWNpdHksIHBhcmFtZXRlcnMubWFzayk7CiB9CiAjZW5kaWYK
IApAQCAtMTMzLDE1ICsxMzMsMTUgQEAgdW5zaWduZWQgVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9y
ZTo6Y2FsY3VsYXRlRXhwb3NlZFRpbGVFZGdlcyhjb25zdCBGbG9hdFJlY3QmIHQKICAgICByZXR1
cm4gZXhwb3NlZEVkZ2VzOwogfQogCi12b2lkIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9y
ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29u
c3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJh
bnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKQordm9pZCBUZXh0dXJl
TWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKGNvbnN0IFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyUGFpbnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewotICAg
IHVwZGF0ZUNvbnRlbnRzRnJvbUltYWdlSWZOZWVkZWQodGV4dHVyZU1hcHBlcik7Ci0gICAgVHJh
bnNmb3JtYXRpb25NYXRyaXggYWRqdXN0ZWRUcmFuc2Zvcm0gPSB0cmFuc2Zvcm07Ci0gICAgYWRq
dXN0ZWRUcmFuc2Zvcm0ubXVsdGlwbHkoVHJhbnNmb3JtYXRpb25NYXRyaXg6OnJlY3RUb1JlY3Qo
cmVjdCgpLCB0YXJnZXRSZWN0KSk7CisgICAgdXBkYXRlQ29udGVudHNGcm9tSW1hZ2VJZk5lZWRl
ZChwYXJhbWV0ZXJzLnRleHR1cmVNYXBwZXIpOworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFk
anVzdGVkVHJhbnNmb3JtID0gcGFyYW1ldGVycy50cmFuc2Zvcm07CisgICAgYWRqdXN0ZWRUcmFu
c2Zvcm0ubXVsdGlwbHkoVHJhbnNmb3JtYXRpb25NYXRyaXg6OnJlY3RUb1JlY3QocmVjdCgpLCBw
YXJhbWV0ZXJzLnRhcmdldFJlY3QpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fdGls
ZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgbV90aWxlc1tpXS5wYWludCh0ZXh0dXJlTWFwcGVy
LCBhZGp1c3RlZFRyYW5zZm9ybSwgb3BhY2l0eSwgbWFzaywgY2FsY3VsYXRlRXhwb3NlZFRpbGVF
ZGdlcyhyZWN0KCksIG1fdGlsZXNbaV0ucmVjdCgpKSk7CisgICAgICAgIG1fdGlsZXNbaV0ucGFp
bnQocGFyYW1ldGVycy50ZXh0dXJlTWFwcGVyLCBhZGp1c3RlZFRyYW5zZm9ybSwgcGFyYW1ldGVy
cy5vcGFjaXR5LCBwYXJhbWV0ZXJzLm1hc2ssIGNhbGN1bGF0ZUV4cG9zZWRUaWxlRWRnZXMocmVj
dCgpLCBtX3RpbGVzW2ldLnJlY3QoKSkpOwogICAgICAgICBpZiAobV9kcmF3c0RlYnVnQm9yZGVy
cykKLSAgICAgICAgICAgIHRleHR1cmVNYXBwZXItPmRyYXdCb3JkZXIobV9kZWJ1Z0JvcmRlckNv
bG9yLCBtX2RlYnVnQm9yZGVyV2lkdGgsIG1fdGlsZXNbaV0ucmVjdCgpLCBhZGp1c3RlZFRyYW5z
Zm9ybSk7CisgICAgICAgICAgICBwYXJhbWV0ZXJzLnRleHR1cmVNYXBwZXItPmRyYXdCb3JkZXIo
bV9kZWJ1Z0JvcmRlckNvbG9yLCBtX2RlYnVnQm9yZGVyV2lkdGgsIG1fdGlsZXNbaV0ucmVjdCgp
LCBhZGp1c3RlZFRyYW5zZm9ybSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJC
YWNraW5nU3RvcmUuaAppbmRleCAwZGQyZGY0YjE5OGJkMzExZmQ0MWM1NWEzMzc3MjE4NGNkMTRi
MzRhLi5lYWM4NjQ1OTcyNGVlMDU1MTJlYzA0M2ZjZWVmNjMwNGJkZjVkNWIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJh
Y2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgR3Jh
cGhpY3NMYXllcjsKIGNsYXNzIFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUgOiBwdWJsaWMgVGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIsIHB1YmxpYyBSZWZDb3VudGVkPFRleHR1cmVNYXBwZXJC
YWNraW5nU3RvcmU+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Qml0bWFwVGV4
dHVyZT4gdGV4dHVyZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1
cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiwgZmxvYXQsIEJpdG1hcFRleHR1cmUqKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKGNvbnN0IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
UGFpbnRQYXJhbWV0ZXJzJikgPSAwOwogICAgIHZpcnR1YWwgflRleHR1cmVNYXBwZXJCYWNraW5n
U3RvcmUoKSB7IH0KIAogcHJvdGVjdGVkOgpAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRHcmFwaGljc1N1cmZhY2UoUGFzc1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+KTsKICAg
ICB2b2lkIHN3YXBCdWZmZXJzSWZOZWVkZWQodWludDMyX3QgZnJvbnRCdWZmZXIpOwogICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3Q7Ci0gICAgdmly
dHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0LCBCaXRtYXBUZXh0dXJl
Kik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKGNvbnN0IFRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyUGFpbnRQYXJhbWV0ZXJzJik7CiAgICAgdmlydHVhbCB+VGV4dHVy
ZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUoKSB7IH0KIAogcHJpdmF0ZToKQEAgLTkzLDcgKzkz
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9y
ZSgpIHsgfQogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUo
KSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIo
VGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiwgZmxvYXQsIEJpdG1hcFRleHR1cmUqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRUb1RleHR1cmVNYXBwZXIoY29uc3QgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQYWlu
dFBhcmFtZXRlcnMmKSBPVkVSUklERTsKICAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzKFRleHR1cmVN
YXBwZXIqLCBJbWFnZSosIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEludFJlY3QmLCBCaXRtYXBU
ZXh0dXJlOjpVcGRhdGVDb250ZW50c0ZsYWcpOwogICAgIHZvaWQgdXBkYXRlQ29udGVudHMoVGV4
dHVyZU1hcHBlciosIEdyYXBoaWNzTGF5ZXIqLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbnRS
ZWN0JiwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ29udGVudHNGbGFnKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXll
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckxheWVyLmNwcAppbmRleCA3OGNiN2Y4NjA0OWMzYjExOGNhZTc0NDZhMGJiMDhlNzI1OGUx
OGNlLi5mMjUxZmEyNjA5OGI5MWZmZGVhNzcwYTlhYWUxNzYzODczNDEwYzJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxh
eWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckxheWVyLmNwcApAQCAtMTE1LDggKzExNSwxMSBAQCB2b2lkIFRleHR1cmVNYXBw
ZXJMYXllcjo6cGFpbnRTZWxmKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlv
bnMpCiAgICAgdHJhbnNmb3JtLm11bHRpcGx5KG9wdGlvbnMudHJhbnNmb3JtKTsKICAgICB0cmFu
c2Zvcm0ubXVsdGlwbHkobV9jdXJyZW50VHJhbnNmb3JtLmNvbWJpbmVkKCkpOwogCi0gICAgZmxv
YXQgb3BhY2l0eSA9IG9wdGlvbnMub3BhY2l0eTsKLSAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4g
bWFzayA9IG9wdGlvbnMubWFzazsKKyAgICBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclBhaW50
UGFyYW1ldGVycyBwYXJhbWV0ZXJzOworICAgIHBhcmFtZXRlcnMudGV4dHVyZU1hcHBlciA9IG9w
dGlvbnMudGV4dHVyZU1hcHBlcjsKKyAgICBwYXJhbWV0ZXJzLnRyYW5zZm9ybSA9IHRyYW5zZm9y
bTsKKyAgICBwYXJhbWV0ZXJzLm9wYWNpdHkgPSBvcHRpb25zLm9wYWNpdHk7CisgICAgcGFyYW1l
dGVycy5tYXNrID0gb3B0aW9ucy5tYXNrLmdldCgpOwogCiAgICAgaWYgKG1fc3RhdGUuc29saWRD
b2xvci5pc1ZhbGlkKCkgJiYgIW1fc3RhdGUuY29udGVudHNSZWN0LmlzRW1wdHkoKSkgewogICAg
ICAgICBpZiAoIW1fc3RhdGUuc29saWRDb2xvci5hbHBoYSgpKQpAQCAtMTI1LDIxICsxMjgsMjMg
QEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50U2VsZihjb25zdCBUZXh0dXJlTWFwcGVy
UGFpbnRPcHRpb25zJiBvcHRpb25zKQogICAgICAgICBSR0JBMzIgcmdiYSA9IG1fc3RhdGUuc29s
aWRDb2xvci5yZ2IoKTsKICAgICAgICAgLy8gU2VlIENvbG9yOjpnZXRSR0JBKCkgdG8ga25vdyBo
b3cgdG8gZXh0cmFjdCBhbHBoYSBmcm9tIGNvbG9yLgogICAgICAgICBmbG9hdCBhbHBoYSA9IGFs
cGhhQ2hhbm5lbChyZ2JhKSAvIDI1NS47Ci0gICAgICAgIGZsb2F0IGVmZmVjdGl2ZUFscGhhID0g
YWxwaGEgKiBvcGFjaXR5OworICAgICAgICBmbG9hdCBlZmZlY3RpdmVBbHBoYSA9IGFscGhhICog
cGFyYW1ldGVycy5vcGFjaXR5OwogICAgICAgICBDb2xvciBjb2xvcihjb2xvcldpdGhPdmVycmlk
ZUFscGhhKHJnYmEsIGVmZmVjdGl2ZUFscGhhKSk7Ci0gICAgICAgIG9wdGlvbnMudGV4dHVyZU1h
cHBlci0+ZHJhd1NvbGlkQ29sb3IobV9zdGF0ZS5jb250ZW50c1JlY3QsIHRyYW5zZm9ybSwgY29s
b3IpOworICAgICAgICBwYXJhbWV0ZXJzLnRleHR1cmVNYXBwZXItPmRyYXdTb2xpZENvbG9yKG1f
c3RhdGUuY29udGVudHNSZWN0LCBwYXJhbWV0ZXJzLnRyYW5zZm9ybSwgY29sb3IpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKG1fYmFja2luZ1N0b3JlKSB7CiAgICAgICAgIEFT
U0VSVChtX3N0YXRlLmRyYXdzQ29udGVudCAmJiBtX3N0YXRlLmNvbnRlbnRzVmlzaWJsZSAmJiAh
bV9zdGF0ZS5zaXplLmlzRW1wdHkoKSk7CiAgICAgICAgIEFTU0VSVCghbGF5ZXJSZWN0KCkuaXNF
bXB0eSgpKTsKLSAgICAgICAgbV9iYWNraW5nU3RvcmUtPnBhaW50VG9UZXh0dXJlTWFwcGVyKG9w
dGlvbnMudGV4dHVyZU1hcHBlciwgbGF5ZXJSZWN0KCksIHRyYW5zZm9ybSwgb3BhY2l0eSwgbWFz
ay5nZXQoKSk7CisgICAgICAgIHBhcmFtZXRlcnMudGFyZ2V0UmVjdCA9IGxheWVyUmVjdCgpOwor
ICAgICAgICBtX2JhY2tpbmdTdG9yZS0+cGFpbnRUb1RleHR1cmVNYXBwZXIocGFyYW1ldGVycyk7
CiAgICAgfQogCiAgICAgaWYgKG1fY29udGVudHNMYXllcikgewogICAgICAgICBBU1NFUlQoIWxh
eWVyUmVjdCgpLmlzRW1wdHkoKSk7Ci0gICAgICAgIG1fY29udGVudHNMYXllci0+cGFpbnRUb1Rl
eHR1cmVNYXBwZXIob3B0aW9ucy50ZXh0dXJlTWFwcGVyLCBtX3N0YXRlLmNvbnRlbnRzUmVjdCwg
dHJhbnNmb3JtLCBvcGFjaXR5LCBtYXNrLmdldCgpKTsKKyAgICAgICAgcGFyYW1ldGVycy50YXJn
ZXRSZWN0ID0gbV9zdGF0ZS5jb250ZW50c1JlY3Q7CisgICAgICAgIG1fY29udGVudHNMYXllci0+
cGFpbnRUb1RleHR1cmVNYXBwZXIocGFyYW1ldGVycyk7CiAgICAgfQogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oCmluZGV4IDM4YWYwM2U4OWI2MjQ4MWFiYWYzMjA5
OGMzYTgxN2FiNGQwMDBjMWUuLjkyYTE1OGU2ZDIxYjRhNzUyOTFlZjk0MzliODc2MmEzZjc5NjBj
M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oCkBAIC0yOCwxMyAr
MjgsMjggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBUZXh0dXJlTWFwcGVyOwog
Y2xhc3MgQml0bWFwVGV4dHVyZTsKK2NsYXNzIFRleHR1cmVNYXBwZXI7CisKK2NsYXNzIFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyUGFpbnRQYXJhbWV0ZXJzIHsKK3B1YmxpYzoKKyAgICBUZXh0
dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyOworICAgIEZsb2F0UmVjdCB0YXJnZXRSZWN0OworICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybTsKKyAgICBmbG9hdCBvcGFjaXR5OworICAg
IEJpdG1hcFRleHR1cmUqIG1hc2s7CisKKyAgICBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclBh
aW50UGFyYW1ldGVycygpCisgICAgICAgIDogdGV4dHVyZU1hcHBlcigwKQorICAgICAgICAsIG9w
YWNpdHkoMSkKKyAgICAgICAgLCBtYXNrKDApCisgICAgeyB9Cit9OwogCiBjbGFzcyBUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllciB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+VGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXIoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBw
ZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiBtb2RlbFZpZXdNYXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBmbG9hdCBv
cGFjaXR5ID0gMS4wLCBCaXRtYXBUZXh0dXJlKiBtYXNrID0gMCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihjb25zdCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
clBhaW50UGFyYW1ldGVycyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3dhcEJ1ZmZlcnMoKSB7
IH0KICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICB2aXJ0dWFsIEludFNpemUgcGxhdGZv
cm1MYXllclNpemUoKSBjb25zdCB7IHJldHVybiBJbnRTaXplKCk7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFj
a2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcAppbmRleCA0YTdiYjEwODZlZTdhODY3YjJk
M2ZkNjgwYzVhMzdkYjA1YjhiN2Q4Li4zNzcwMDczNTZlMTIyNWNhM2Y2ZWEwYzRjMzdiMDIzODNi
ODg2MDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3Bw
CkBAIC0xMTksMjEgKzExOSwyMSBAQCBzdGF0aWMgYm9vbCBzaG91bGRTaG93VGlsZURlYnVnVmlz
dWFscygpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0
b3JlOjpwYWludFRpbGVzVG9UZXh0dXJlTWFwcGVyKFZlY3RvcjxUZXh0dXJlTWFwcGVyVGlsZSo+
JiB0aWxlcywgVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgQml0bWFwVGV4dHVyZSogbWFzaywg
Y29uc3QgRmxvYXRSZWN0JiByZWN0KQordm9pZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6cGFp
bnRUaWxlc1RvVGV4dHVyZU1hcHBlcihWZWN0b3I8VGV4dHVyZU1hcHBlclRpbGUqPiYgdGlsZXMs
IGNvbnN0IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUGFpbnRQYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzKQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdGlsZXMuc2l6ZSgpOyArK2kpIHsK
ICAgICAgICAgVGV4dHVyZU1hcHBlclRpbGUqIHRpbGUgPSB0aWxlc1tpXTsKLSAgICAgICAgdGls
ZS0+cGFpbnQodGV4dHVyZU1hcHBlciwgdHJhbnNmb3JtLCBvcGFjaXR5LCBtYXNrLCBjYWxjdWxh
dGVFeHBvc2VkVGlsZUVkZ2VzKHJlY3QsIHRpbGUtPnJlY3QoKSkpOworICAgICAgICB0aWxlLT5w
YWludChwYXJhbWV0ZXJzLnRleHR1cmVNYXBwZXIsIHBhcmFtZXRlcnMudHJhbnNmb3JtLCBwYXJh
bWV0ZXJzLm9wYWNpdHksIHBhcmFtZXRlcnMubWFzaywgY2FsY3VsYXRlRXhwb3NlZFRpbGVFZGdl
cyhwYXJhbWV0ZXJzLnRhcmdldFJlY3QsIHRpbGUtPnJlY3QoKSkpOwogICAgICAgICBzdGF0aWMg
Ym9vbCBzaG91bGREZWJ1ZyA9IHNob3VsZFNob3dUaWxlRGVidWdWaXN1YWxzKCk7CiAgICAgICAg
IGlmICghc2hvdWxkRGVidWcpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICB0ZXh0
dXJlTWFwcGVyLT5kcmF3Qm9yZGVyKENvbG9yKDB4RkYsIDAsIDApLCAyLCB0aWxlLT5yZWN0KCks
IHRyYW5zZm9ybSk7Ci0gICAgICAgIHRleHR1cmVNYXBwZXItPmRyYXdSZXBhaW50Q291bnRlcihz
dGF0aWNfY2FzdDxDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGUqPih0aWxlKS0+cmVwYWludENv
dW50KCksIDgsIHRpbGUtPnJlY3QoKS5sb2NhdGlvbigpLCB0cmFuc2Zvcm0pOworICAgICAgICBw
YXJhbWV0ZXJzLnRleHR1cmVNYXBwZXItPmRyYXdCb3JkZXIoQ29sb3IoMHhGRiwgMCwgMCksIDIs
IHRpbGUtPnJlY3QoKSwgcGFyYW1ldGVycy50cmFuc2Zvcm0pOworICAgICAgICBwYXJhbWV0ZXJz
LnRleHR1cmVNYXBwZXItPmRyYXdSZXBhaW50Q291bnRlcihzdGF0aWNfY2FzdDxDb29yZGluYXRl
ZEJhY2tpbmdTdG9yZVRpbGUqPih0aWxlKS0+cmVwYWludENvdW50KCksIDgsIHRpbGUtPnJlY3Qo
KS5sb2NhdGlvbigpLCBwYXJhbWV0ZXJzLnRyYW5zZm9ybSk7CiAgICAgfQogfQogCi12b2lkIENv
b3JkaW5hdGVkQmFja2luZ1N0b3JlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVy
KiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUq
IG1hc2spCit2b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpwYWludFRvVGV4dHVyZU1hcHBl
cihjb25zdCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclBhaW50UGFyYW1ldGVycyYgcGFyYW1l
dGVycykKIHsKICAgICBpZiAobV90aWxlcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAg
LTE1OCwyMCArMTU4LDIwIEBAIHZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnBhaW50VG9U
ZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsCiAKICAgICAgICAgLy8g
T25seSBzaG93IHRoZSBwcmV2aW91cyB0aWxlIGlmIHRoZSBvcGFjaXR5IGlzIGhpZ2gsIG90aGVy
d2lzZSBlZmZlY3QgbG9va3MgbGlrZSBhIGJ1Zy4KICAgICAgICAgLy8gV2Ugc2hvdyB0aGUgcHJl
dmlvdXMtc2NhbGUgdGlsZSBhbnl3YXkgaWYgaXQgZG9lc24ndCBpbnRlcnNlY3Qgd2l0aCBhbnkg
Y3VycmVudC1zY2FsZSB0aWxlLgotICAgICAgICBpZiAob3BhY2l0eSA8IDAuOTUgJiYgY292ZXJl
ZFJlY3QuaW50ZXJzZWN0cyh0aWxlLnJlY3QoKSkpCisgICAgICAgIGlmIChwYXJhbWV0ZXJzLm9w
YWNpdHkgPCAwLjk1ICYmIGNvdmVyZWRSZWN0LmludGVyc2VjdHModGlsZS5yZWN0KCkpKQogICAg
ICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgcHJldmlvdXNUaWxlc1RvUGFpbnQuYXBwZW5k
KCZ0aWxlKTsKICAgICB9CiAKLSAgICBGbG9hdFJlY3QgcmVjdE9uQ29udGVudHMoRmxvYXRQb2lu
dDo6emVybygpLCBtX3NpemUpOwotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFkanVzdGVkVHJh
bnNmb3JtID0gdHJhbnNmb3JtOworICAgIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUGFpbnRQ
YXJhbWV0ZXJzIGFkanVzdGVkUGFyYW1ldGVycyA9IHBhcmFtZXRlcnM7CisgICAgYWRqdXN0ZWRQ
YXJhbWV0ZXJzLnRhcmdldFJlY3QgPSBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBtX3Np
emUpOwogICAgIC8vIHRhcmdldFJlY3QgaXMgb24gdGhlIGNvbnRlbnRzIGNvb3JkaW5hdGUgc3lz
dGVtLCBzbyB3ZSBtdXN0IGNvbXBhcmUgdHdvIHJlY3RzIG9uIHRoZSBjb250ZW50cyBjb29yZGlu
YXRlIHN5c3RlbS4KICAgICAvLyBTZWUgVGlsZWRCYWNraW5nU3RvcmUuCi0gICAgYWRqdXN0ZWRU
cmFuc2Zvcm0ubXVsdGlwbHkoVHJhbnNmb3JtYXRpb25NYXRyaXg6OnJlY3RUb1JlY3QocmVjdE9u
Q29udGVudHMsIHRhcmdldFJlY3QpKTsKKyAgICBhZGp1c3RlZFBhcmFtZXRlcnMudHJhbnNmb3Jt
Lm11bHRpcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4OjpyZWN0VG9SZWN0KGFkanVzdGVkUGFyYW1l
dGVycy50YXJnZXRSZWN0LCBwYXJhbWV0ZXJzLnRhcmdldFJlY3QpKTsKIAotICAgIHBhaW50VGls
ZXNUb1RleHR1cmVNYXBwZXIocHJldmlvdXNUaWxlc1RvUGFpbnQsIHRleHR1cmVNYXBwZXIsIGFk
anVzdGVkVHJhbnNmb3JtLCBvcGFjaXR5LCBtYXNrLCByZWN0T25Db250ZW50cyk7Ci0gICAgcGFp
bnRUaWxlc1RvVGV4dHVyZU1hcHBlcih0aWxlc1RvUGFpbnQsIHRleHR1cmVNYXBwZXIsIGFkanVz
dGVkVHJhbnNmb3JtLCBvcGFjaXR5LCBtYXNrLCByZWN0T25Db250ZW50cyk7CisgICAgcGFpbnRU
aWxlc1RvVGV4dHVyZU1hcHBlcihwcmV2aW91c1RpbGVzVG9QYWludCwgYWRqdXN0ZWRQYXJhbWV0
ZXJzKTsKKyAgICBwYWludFRpbGVzVG9UZXh0dXJlTWFwcGVyKHRpbGVzVG9QYWludCwgYWRqdXN0
ZWRQYXJhbWV0ZXJzKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6Y29tbWl0
VGlsZU9wZXJhdGlvbnMoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
QmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5oCmluZGV4IGFlNWFmOGQ0ZmEyZmM5ZWJkMjEx
OTcyN2ZjYWRkODU5NjIzMzBmOTkuLjc2NGU5YjAyZGYyOGQ5OTJlYjJiNTU2MzkxZDcxYTI1ZDFi
MWI1MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuaApAQCAt
NjUsMTMgKzY1LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbW1pdFRpbGVPcGVyYXRpb25zKFdl
YkNvcmU6OlRleHR1cmVNYXBwZXIqKTsKICAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OkJpdG1hcFRl
eHR1cmU+IHRleHR1cmUoKSBjb25zdDsKICAgICB2b2lkIHNldFNpemUoY29uc3QgV2ViQ29yZTo6
RmxvYXRTaXplJik7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFdlYkNv
cmU6OlRleHR1cmVNYXBwZXIqLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJD
b3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0LCBXZWJDb3JlOjpCaXRtYXBUZXh0dXJl
Kik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKGNvbnN0IFdlYkNvcmU6
OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUGFpbnRQYXJhbWV0ZXJzJik7CiAKIHByaXZhdGU6
CiAgICAgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUoKQogICAgICAgICA6IG1fc2NhbGUoMS4pCiAg
ICAgeyB9Ci0gICAgdm9pZCBwYWludFRpbGVzVG9UZXh0dXJlTWFwcGVyKFZlY3RvcjxXZWJDb3Jl
OjpUZXh0dXJlTWFwcGVyVGlsZSo+JiwgV2ViQ29yZTo6VGV4dHVyZU1hcHBlciosIGNvbnN0IFdl
YkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQsIFdlYkNvcmU6OkJpdG1hcFRleHR1
cmUqLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsKKyAgICB2b2lkIHBhaW50VGlsZXNUb1Rl
eHR1cmVNYXBwZXIoVmVjdG9yPFdlYkNvcmU6OlRleHR1cmVNYXBwZXJUaWxlKj4mLCBjb25zdCBX
ZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclBhaW50UGFyYW1ldGVycyYpOwogCiAg
ICAgSGFzaE1hcDx1aW50MzJfdCwgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlPiBtX3RpbGVz
OwogICAgIEhhc2hTZXQ8dWludDMyX3Q+IG1fdGlsZXNUb1JlbW92ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182291</attachid>
            <date>2013-01-11 01:17:09 -0800</date>
            <delta_ts>2013-01-11 03:35:14 -0800</delta_ts>
            <desc>Patch : [TexMap] Refactor code related to debug border and repaint count. [2/2] </desc>
            <filename>bug-105787-20130111181347.patch</filename>
            <type>text/plain</type>
            <size>59358</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MzkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTE5YWI3NzQwZjRiZGI0
MTZmNjI5YjBiN2VjZGJlNWRmMzE3Mjg2My4uM2YyMTJiZmUzNDhjYjY4OTkxNTlmYzlhY2JiY2Q0
OTdiNDY3N2Y0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDEzLTAxLTExICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFtRdF1bRUZM
XVtHVEtdW1RleE1hcF0gUmVmYWN0b3IgY29kZSByZWxhdGVkIHRvIGRlYnVnIGJvcmRlciBhbmQg
cmVwYWludCBjb3VudC4gWzIvMl0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwNTc4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEN1cnJlbnRseSwgVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZSwgQ29vcmRp
bmF0ZWRCYWNraW5nU3RvcmUgYW5kCisgICAgICAgIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
IGhhdmUgZHVwbGljYXRlZCBjb2RlIHRvIGRyYXcgZGVidWcgYm9yZGVyIG9yIHJlcGFpbnQKKyAg
ICAgICAgY291bnQuIFRoaXMgcGF0Y2ggcmVmYWN0b3JzIHRoYXQgYWxsIHBsYXRmb3JtIGxheWVy
cyBkcmF3IGRlYnVnIGJvcmRlciBhbmQgcmVwYWludAorICAgICAgICBjb3VudCBpbiB0aGUgY29u
c2lzdGVudCB3YXkuCisKKyAgICAgICAgVGhlcmUgYXJlIHRocmVlIGJpZyBjaGFuZ2VzOgorICAg
ICAgICAxLiBUbyBlbmFibGUgb3IgZGlzYWJsZSB0aGlzIGZlYXR1cmUsIHdlIHVzZSBzZXRTaG93
RGVidWdCb3JkZXJzKGJvb2wpIGFuZAorICAgICAgICBzZXRTaG93UmVwYWludENvdW50ZXIoYm9v
bCkgaW4gU2V0dGluZ3MuCisgICAgICAgIEFzIHdlIGRpZCwgaWYgW1FUX11XRUJLSVRfU0hPV19D
T01QT1NJVElOR19ERUJVR19WSVNVQUxTIGlzIHNldCB0byAxLCBib3RoCisgICAgICAgIHNldHRp
bmdzIGFyZSBzZXQgdG8gdHJ1ZS4gSXQgbWVhbnMgdGhhdCBub3cgd2UgY2FuIHNlZSBkZWJ1Z2dp
bmcgdmlzdWFscyBpbiBXSzEKKyAgICAgICAgYXMgd2VsbCBhcyBXSzIuCisgICAgICAgIDIuIFRl
eHR1cmVNYXBwZXJMYXllciBoYXMgdGhlIGRlYnVnZ2luZyB2aXN1YWxzIGxpa2UgR3JhcGhpY3NM
YXllci4KKyAgICAgICAgV2hlbiBjYWxsaW5nIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyOjpw
YWludFRvVGV4dHVyZU1hcHBlcigpLCB3ZSBzZW5kIHRoZQorICAgICAgICBkZWJ1Z2dpbmcgdmlz
dWFscyB2aWEgVGV4dHVyZU1hcHBlclBhaW50UGFyYW1ldGVycyB0byB0aGUgcGxhdGZvcm0gbGF5
ZXIuIFRoZQorICAgICAgICBwbGF0Zm9ybSBsYXllciBkcmF3cyBkZWJ1ZyBib3JkZXIgYW5kIHJl
cGFpbnQgY291bnQgdXNpbmcgZHJhd0JvcmRlcigpIGFuZAorICAgICAgICBkcmF3UmVwYWludENv
dW50ZXIoKSBpbiBUZXh0dXJlTWFwcGVyLgorICAgICAgICAzLiBXZSB1c2UgdGhlIHNhbWUgY29s
b3IgYW5kIHdpZHRoIHRvIE1hYyBwb3J0IGJlY2F1c2Ugd2UgZ2V0IGJvdGggaW5mbyB1c2luZwor
ICAgICAgICBHcmFwaGljc0xheWVyOjp1cGRhdGVEZWJ1Z0luZGljYXRvcnMoKS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMuIFJlZmFjdG9yaW5nIG9ubHkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBhaW50VG9UZXh0dXJl
TWFwcGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXI6OnNldFNob3dEZWJ1Z0JvcmRlcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRTaG93UmVwYWludENv
dW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmZs
dXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnVwZGF0ZURlYnVnQm9yZGVyQW5kUmVwYWludENv
dW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpwcmVw
YXJlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpzZXRSZXBhaW50Q291bnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oOgorICAgICAgICAoR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXI6OmRlYnVnQm9yZGVyQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OmRlYnVnQm9yZGVyV2lkdGgpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU6OnBhaW50VG9UZXh0dXJlTWFwcGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6cGFp
bnRUb1RleHR1cmVNYXBwZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmg6CisgICAgICAgIChUZXh0dXJlTWFwcGVyVGlsZWRC
YWNraW5nU3RvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydEFCR1JUb0FSR0IpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRyYXdS
ZXBhaW50Q291bnRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVySW1hZ2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXI6OmRyYXdSZXBhaW50Q291bnRlcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpwYWludFNlbGYpOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpmbHVzaENvbXBvc2l0aW5nU3Rh
dGVGb3JUaGlzTGF5ZXJPbmx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckxheWVyLmg6CisgICAgICAgIChTdGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0dXJlTWFwcGVyTGF5ZXI6OlN0YXRlOjpTdGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmg6CisgICAgICAgIChU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclBhaW50UGFyYW1ldGVycyk6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclBhaW50UGFyYW1ldGVyczo6VGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJQYWludFBhcmFtZXRlcnMpOgorCiAyMDEzLTAxLTEwICBIdWFuZyBE
b25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCiAgICAgICAgIFtUZXhNYXBdIFJl
ZmFjdG9yIGNvZGUgcmVsYXRlZCB0byBkZWJ1ZyBib3JkZXIgYW5kIHJlcGFpbnQgY291bnQuIFsx
LzJdCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggYjNhNGQ3MWEyMWI0YTk0NWVmNTc2Y2FlNDg0M2IxYmZk
NDI2MjhlYy4uMWFmNjI1YzBiZjVkM2Y1YWEwZTRjZGQ4NmM0ZDM2YzE2ODk5YjBjMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZs
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEzLTAxLTExICBIdWFuZyBEb25nc3VuZyAg
PGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFtRdF1bRUZMXVtHVEtdW1RleE1h
cF0gUmVmYWN0b3IgY29kZSByZWxhdGVkIHRvIGRlYnVnIGJvcmRlciBhbmQgcmVwYWludCBjb3Vu
dC4gWzIvMl0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwNTc4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IElmIFdFQktJVF9TSE9XX0NPTVBPU0lUSU5HX0RFQlVHX1ZJU1VBTFMgaXMgc2V0IHRvIDEsIHNl
dAorICAgICAgICBzaG93RGVidWdCb3JkZXJzIGFuZCBzaG93UmVwYWludENvdW50ZXIgaW4gU2V0
dGluZ3MgdG8gdHJ1ZS4KKworICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6CisgICAgICAgIChf
ZXdrX3ZpZXdfcHJpdl9uZXcpOgorCiAyMDEzLTAxLTEwICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hy
aXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF0gQWRkIGdzdHJlYW1lciAx
LjAuNSB0byBqaGJ1aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggNmQ4YjAwMGY5NWZlODlkZTlmYjI0
NjUwZDhlM2I0YzNhMTE0NmNkOS4uZjQ2NDAxYmRlMWNiOGYxZDkyN2ViMzNlNWIyY2Q2YjBjNTFk
M2FlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEzLTAxLTExICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFtRdF1bRUZM
XVtHVEtdW1RleE1hcF0gUmVmYWN0b3IgY29kZSByZWxhdGVkIHRvIGRlYnVnIGJvcmRlciBhbmQg
cmVwYWludCBjb3VudC4gWzIvMl0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwNTc4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIElmIFdFQktJVF9TSE9XX0NPTVBPU0lUSU5HX0RFQlVHX1ZJU1VBTFMgaXMg
c2V0IHRvIDEsIHNldAorICAgICAgICBzaG93RGVidWdCb3JkZXJzIGFuZCBzaG93UmVwYWludENv
dW50ZXIgaW4gU2V0dGluZ3MgdG8gdHJ1ZS4KKworICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2
aWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld191cGRhdGVfc2V0dGluZ3MpOgorCiAy
MDEzLTAxLTA4ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1v
dmVkIHRoZSBuZWVkIGZvciB0aGUgUHJvcG9zZWREYXRhYmFzZSBtZWNoYW5pc20uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdl
TG9nCmluZGV4IDU1ZWIxMzU0NGNmY2ZhZDJmZmQ1MjA3Y2JjN2VhY2ExMmQ5YmE2YjAuLjQzNWEz
NzRjZTMyNjNmNjMxZGEwYjkzNDNhY2VhZDFjYjZjNTJiNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTYgQEAKKzIwMTMtMDEtMTEgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFu
eTEwMC5uZXQ+CisKKyAgICAgICAgW1F0XVtFRkxdW0dUS11bVGV4TWFwXSBSZWZhY3RvciBjb2Rl
IHJlbGF0ZWQgdG8gZGVidWcgYm9yZGVyIGFuZCByZXBhaW50IGNvdW50LiBbMi8yXQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1Nzg3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSWYgUVRfV0VCS0lUX1NI
T1dfQ09NUE9TSVRJTkdfREVCVUdfVklTVUFMUyBpcyBzZXQgdG8gMSwgc2V0CisgICAgICAgIHNo
b3dEZWJ1Z0JvcmRlcnMgYW5kIHNob3dSZXBhaW50Q291bnRlciBpbiBTZXR0aW5ncyB0byB0cnVl
LgorCisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgIChRV2ViU2V0dGlu
Z3NQcml2YXRlOjphcHBseSk6CisKIDIwMTMtMDEtMDcgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVs
bGFAY29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgW1RleE1hcF0gUmVuYW1lIGN1cnJlbnRbVHJh
bnNmb3JtfE9wYWNpdHl8RmlsdGVyc10gaW4gVGV4dHVyZU1hcHBlckxheWVyLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IGE3ZTVhMWUxZGQ4NmZmYmIyZTcwNjFjYjI5MzNjYmMyZTBkNGRkMmQuLjY1Njc3NWIwNDBj
M2FmODBjMDQxOTg5Yjk4ZDczM2RlZDJjM2YwOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NiBA
QAorMjAxMy0wMS0xMSAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4K
KworICAgICAgICBbUXRdW0VGTF1bR1RLXVtUZXhNYXBdIFJlZmFjdG9yIGNvZGUgcmVsYXRlZCB0
byBkZWJ1ZyBib3JkZXIgYW5kIHJlcGFpbnQgY291bnQuIFsyLzJdCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU3ODcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGVyZSBhcmUgdGhyZWUgYmlnIGNoYW5n
ZXM6CisgICAgICAgIDEuIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllciBzZW5kcyBkZWJ1Z2dpbmcg
dmlzdWFscyB0byBVSSBQcm9jZXNzLgorICAgICAgICAyLiBJZiBbUVRfXVdFQktJVF9TSE9XX0NP
TVBPU0lUSU5HX0RFQlVHX1ZJU1VBTFMgaXMgc2V0IHRvIDEsIHNldAorICAgICAgICBzaG93RGVi
dWdCb3JkZXJzIGFuZCBzaG93UmVwYWludENvdW50ZXIgaW4gU2V0dGluZ3MgdG8gdHJ1ZS4KKyAg
ICAgICAgMy4gV2hlbiB1cGRhdGluZyBhIGJhY2tpbmcgc3RvcmUsIGEgY29tcG9zaXRlZCBpbWFn
ZSBvciBhIHBsYXRmb3JtCisgICAgICAgIGNhbnZhcyBsYXllciwgaW5jcmVtZW50IGEgcmVwYWlu
dCBjb3VudC4KKworICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkTGF5ZXJJbmZvLmg6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRl
ZEJhY2tpbmdTdG9yZTo6dXBkYXRlVGlsZSk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVk
QmFja2luZ1N0b3JlOjpwYWludFRpbGVzVG9UZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5oOgorICAg
ICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGU6OkNvb3JkaW5hdGVkQmFj
a2luZ1N0b3JlVGlsZSk6CisgICAgICAgIChDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0UHJveHk6OnNldFJlcGFpbnRDb3VudCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFBy
b3h5Lmg6CisgICAgICAgIChDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
UHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5k
ZXJlcjo6c2V0UmVwYWludENvdW50KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJL
aXQ6OkxheWVyVHJlZVJlbmRlcmVyOjpzZXRMYXllclN0YXRlKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5oOgorICAgICAgICAoTGF5
ZXJUcmVlUmVuZGVyZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldFNob3dEZWJ1Z0JvcmRlcik6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6
c2V0U2hvd1JlcGFpbnRDb3VudGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllcjo6c3luY0ltYWdlQmFja2luZyk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OnN5bmNMYXllclN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
b3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c3luY0NhbnZhcyk6CisgICAgICAgIChXZWJDb3JlOjpD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnRpbGVkQmFja2luZ1N0b3JlUGFpbnRFbmQpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3NMYXllci5oOgorICAgICAgICAoQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyQ2xpZW50
KToKKyAgICAgICAgKENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcik6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzZXRSZXBh
aW50Q291bnQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFRp
bGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZFRpbGU6OnVwZGF0ZUJhY2tCdWZm
ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMpOgorCiAyMDEzLTAxLTEwICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCiAgICAgICAgIFtUZXhNYXBd
IFJlZmFjdG9yIGNvZGUgcmVsYXRlZCB0byBkZWJ1ZyBib3JkZXIgYW5kIHJlcGFpbnQgY291bnQu
IFsxLzJdCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcAppbmRleCA3YzQyZGY3
ZjZmMzc3YTFiMzE4NjVkOWRiNzBlNTY0YTY4OWRjZjhiLi41Yzc4MTg3MjA4ZTI5Yjk4NGI3MTIy
MzUyZjhiMTc4YWZmZmI4MmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5j
cHAKQEAgLTEyMyw2ICsxMjMsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBh
aW50VG9UZXh0dXJlTWFwcGVyKGNvbnN0IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUwKICAgICAgICAg
Y29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmRyYXdTdXJmYWNlVG9Db250ZXh0KGltYWdlU3Vy
ZmFjZS5nZXQoKSwgcGFyYW1ldGVycy50YXJnZXRSZWN0LCBJbnRSZWN0KDAsIDAsIHdpZHRoLCBo
ZWlnaHQpLCBjb250ZXh0KTsKIAogICAgICAgICBjb250ZXh0LT5yZXN0b3JlKCk7CisKKyAgICAg
ICAgaWYgKHBhcmFtZXRlcnMuc2hvd0RlYnVnQm9yZGVycykKKyAgICAgICAgICAgIHBhcmFtZXRl
cnMudGV4dHVyZU1hcHBlci0+ZHJhd0JvcmRlcihwYXJhbWV0ZXJzLmRlYnVnQm9yZGVyQ29sb3Is
IHBhcmFtZXRlcnMuZGVidWdCb3JkZXJXaWR0aCwgcGFyYW1ldGVycy50YXJnZXRSZWN0LCBwYXJh
bWV0ZXJzLnRyYW5zZm9ybSk7CisgICAgICAgIGlmIChwYXJhbWV0ZXJzLnNob3dSZXBhaW50Q291
bnRlcikKKyAgICAgICAgICAgIHBhcmFtZXRlcnMudGV4dHVyZU1hcHBlci0+ZHJhd1JlcGFpbnRD
b3VudGVyKHBhcmFtZXRlcnMucmVwYWludENvdW50LCBwYXJhbWV0ZXJzLmRlYnVnQm9yZGVyQ29s
b3IsIHBhcmFtZXRlcnMudGFyZ2V0UmVjdC5sb2NhdGlvbigpLCBwYXJhbWV0ZXJzLnRyYW5zZm9y
bSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE0Myw2ICsxNDgsMTEgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKGNvbnN0IFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUwKICAgICBUZXh0dXJlTWFwcGVyR0w6OkZsYWdzIGZsYWdzID0gVGV4
dHVyZU1hcHBlckdMOjpTaG91bGRGbGlwVGV4dHVyZSB8IChtX2NvbnRleHQtPm1fYXR0cnMuYWxw
aGEgPyBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZEJsZW5kIDogMCk7CiAgICAgSW50U2l6ZSB0ZXh0
dXJlU2l6ZShtX2NvbnRleHQtPm1fY3VycmVudFdpZHRoLCBtX2NvbnRleHQtPm1fY3VycmVudEhl
aWdodCk7CiAgICAgdGV4bWFwR0wtPmRyYXdUZXh0dXJlKG1fY29udGV4dC0+bV90ZXh0dXJlLCBm
bGFncywgdGV4dHVyZVNpemUsIHBhcmFtZXRlcnMudGFyZ2V0UmVjdCwgcGFyYW1ldGVycy50cmFu
c2Zvcm0sIHBhcmFtZXRlcnMub3BhY2l0eSwgcGFyYW1ldGVycy5tYXNrKTsKKworICAgIGlmIChw
YXJhbWV0ZXJzLnNob3dEZWJ1Z0JvcmRlcnMpCisgICAgICAgIHBhcmFtZXRlcnMudGV4dHVyZU1h
cHBlci0+ZHJhd0JvcmRlcihwYXJhbWV0ZXJzLmRlYnVnQm9yZGVyQ29sb3IsIHBhcmFtZXRlcnMu
ZGVidWdCb3JkZXJXaWR0aCwgcGFyYW1ldGVycy50YXJnZXRSZWN0LCBwYXJhbWV0ZXJzLnRyYW5z
Zm9ybSk7CisgICAgaWYgKHBhcmFtZXRlcnMuc2hvd1JlcGFpbnRDb3VudGVyKQorICAgICAgICBw
YXJhbWV0ZXJzLnRleHR1cmVNYXBwZXItPmRyYXdSZXBhaW50Q291bnRlcihwYXJhbWV0ZXJzLnJl
cGFpbnRDb3VudCwgcGFyYW1ldGVycy50YXJnZXRSZWN0LmxvY2F0aW9uKCksIHBhcmFtZXRlcnMu
dHJhbnNmb3JtKTsKICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkdfR0wpCiB9
CiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0
LmNwcAppbmRleCA5ZTc0ZmY2MjRlYTFhNmE2YWNlOWJiYTE2YjYzZTVmYzA3ZTM1ZjZlLi4yMWQ0
Mzg1MGQzZTM0ZGM2YjBhOGYwNDc1YTE0ZTVlYjJjYTIxOWUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0
LmNwcApAQCAtMjMxLDYgKzIzMSwxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6
cGFpbnRUb1RleHR1cmVNYXBwZXIoY29uc3QgVGV4dHVyZU1hcHBlclBsYXRmb3JtTAogCiAgICAg
ICAgIFRleHR1cmVNYXBwZXJHTCogdGV4bWFwR0wgPSBzdGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVy
R0wqPihwYXJhbWV0ZXJzLnRleHR1cmVNYXBwZXIpOwogICAgICAgICBtX2dyYXBoaWNzU3VyZmFj
ZS0+cGFpbnRUb1RleHR1cmVNYXBwZXIodGV4bWFwR0wsIHBhcmFtZXRlcnMudGFyZ2V0UmVjdCwg
cGFyYW1ldGVycy50cmFuc2Zvcm0sIHBhcmFtZXRlcnMub3BhY2l0eSwgcGFyYW1ldGVycy5tYXNr
KTsKKworICAgICAgICBpZiAocGFyYW1ldGVycy5zaG93RGVidWdCb3JkZXJzKQorICAgICAgICAg
ICAgcGFyYW1ldGVycy50ZXh0dXJlTWFwcGVyLT5kcmF3Qm9yZGVyKHBhcmFtZXRlcnMuZGVidWdC
b3JkZXJDb2xvciwgcGFyYW1ldGVycy5kZWJ1Z0JvcmRlcldpZHRoLCBwYXJhbWV0ZXJzLnRhcmdl
dFJlY3QsIHBhcmFtZXRlcnMudHJhbnNmb3JtKTsKKyAgICAgICAgaWYgKHBhcmFtZXRlcnMuc2hv
d1JlcGFpbnRDb3VudGVyKQorICAgICAgICAgICAgcGFyYW1ldGVycy50ZXh0dXJlTWFwcGVyLT5k
cmF3UmVwYWludENvdW50ZXIocGFyYW1ldGVycy5yZXBhaW50Q291bnQsIHBhcmFtZXRlcnMuZGVi
dWdCb3JkZXJDb2xvciwgcGFyYW1ldGVycy50YXJnZXRSZWN0LmxvY2F0aW9uKCksIHBhcmFtZXRl
cnMudHJhbnNmb3JtKTsKICNlbmRpZgogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjc3LDYg
KzI4MiwxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVN
YXBwZXIoY29uc3QgVGV4dHVyZU1hcHBlclBsYXRmb3JtTAogCiAgICAgcGFpbnRlci0+ZHJhd0lt
YWdlKHBhcmFtZXRlcnMudGFyZ2V0UmVjdCwgb2Zmc2NyZWVuSW1hZ2UpOwogICAgIHBhaW50ZXIt
PnJlc3RvcmUoKTsKKworICAgIGlmIChwYXJhbWV0ZXJzLnNob3dEZWJ1Z0JvcmRlcnMpCisgICAg
ICAgIHBhcmFtZXRlcnMudGV4dHVyZU1hcHBlci0+ZHJhd0JvcmRlcihwYXJhbWV0ZXJzLmRlYnVn
Qm9yZGVyQ29sb3IsIHBhcmFtZXRlcnMuZGVidWdCb3JkZXJXaWR0aCwgcGFyYW1ldGVycy50YXJn
ZXRSZWN0LCBwYXJhbWV0ZXJzLnRyYW5zZm9ybSk7CisgICAgaWYgKHBhcmFtZXRlcnMuc2hvd1Jl
cGFpbnRDb3VudGVyKQorICAgICAgICBwYXJhbWV0ZXJzLnRleHR1cmVNYXBwZXItPmRyYXdSZXBh
aW50Q291bnRlcihwYXJhbWV0ZXJzLnJlcGFpbnRDb3VudCwgcGFyYW1ldGVycy5kZWJ1Z0JvcmRl
ckNvbG9yLCBwYXJhbWV0ZXJzLnRhcmdldFJlY3QubG9jYXRpb24oKSwgcGFyYW1ldGVycy50cmFu
c2Zvcm0pOwogfQogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKaW5kZXggZTk2Mjk2YmE1MWU0
YWE3MTE1ZGJhMjI2YWE1N2ZmZWYwZWMwMTIyMi4uMTU1NzYyYWU4YjM1OWMyOWY4Yzk2NTAwOWM0
NGI5YWZjNDNiMWNkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIu
Y3BwCkBAIC0yNCwxNCArMjQsOCBAQAogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJBbmltYXRpb24u
aCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyRmFjdG9yeS5oIgogI2luY2x1ZGUgIkltYWdlQnVm
ZmVyLmgiCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVu
dFRpbWUuaD4KIAotI2lmIFVTRShDQUlSTykKLSNpbmNsdWRlICJDYWlyb1V0aWxpdGllcy5oIgot
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIFBhc3NPd25QdHI8R3JhcGhpY3NMYXllcj4gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKEdy
YXBoaWNzTGF5ZXJGYWN0b3J5KiBmYWN0b3J5LCBHcmFwaGljc0xheWVyQ2xpZW50KiBjbGllbnQp
CkBAIC0zODMsMTUgKzM3Nyw1MCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpz
ZXRDb250ZW50c1RvTWVkaWEoVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIqCiAgICAgbV9jb250
ZW50c0xheWVyID0gbWVkaWE7CiB9CiAKK3ZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6
OnNldFNob3dEZWJ1Z0JvcmRlcihib29sIHNob3cpCit7CisgICAgaWYgKGlzU2hvd2luZ0RlYnVn
Qm9yZGVyKCkgPT0gc2hvdykKKyAgICAgICAgcmV0dXJuOworCisgICAgR3JhcGhpY3NMYXllcjo6
c2V0U2hvd0RlYnVnQm9yZGVyKHNob3cpOworICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVy
TGF5ZXI6OkRlYnVnVmlzdWFsc0NoYW5nZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXI6OnNldFNob3dSZXBhaW50Q291bnRlcihib29sIHNob3cpCit7CisgICAgaWYgKGlz
U2hvd2luZ1JlcGFpbnRDb3VudGVyKCkgPT0gc2hvdykKKyAgICAgICAgcmV0dXJuOworCisgICAg
R3JhcGhpY3NMYXllcjo6c2V0U2hvd1JlcGFpbnRDb3VudGVyKHNob3cpOworICAgIG5vdGlmeUNo
YW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkRlYnVnVmlzdWFsc0NoYW5nZSk7Cit9CisKIC8qIFxy
ZWltcCAoR3JhcGhpY3NMYXllci5oKQogKi8KIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKQogeworICAgIHVwZGF0
ZURlYnVnQm9yZGVyQW5kUmVwYWludENvdW50KCk7CiAgICAgbV9sYXllci0+Zmx1c2hDb21wb3Np
dGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSh0aGlzKTsKICAgICB1cGRhdGVCYWNraW5nU3RvcmUo
KTsKICAgICBkaWRGbHVzaENvbXBvc2l0aW5nU3RhdGUoKTsKIH0KIAordm9pZCBHcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlcjo6dXBkYXRlRGVidWdCb3JkZXJBbmRSZXBhaW50Q291bnQoKQorewor
ICAgIG1fdXNpbmdUaWxlZExheWVyID0gc2hvdWxkSGF2ZUJhY2tpbmdTdG9yZSgpOworICAgIHVw
ZGF0ZURlYnVnSW5kaWNhdG9ycygpOworCisgICAgaWYgKCFtX2hhc093bkJhY2tpbmdTdG9yZSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgLy8gV2hlbiB0aGlzIGhhcyBpdHMgb3duIGJhY2tpbmcg
c3RvcmUgKGkuZS4gUXQgV0sxKSwgdXBkYXRlIHRoZSByZXBhaW50IGNvdW50IGJlZm9yZSBjYWxs
aW5nIFRleHR1cmVNYXBwZXJMYXllcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVy
T25seSgpLgorICAgIGJvb2wgbmVlZHNUb1JlcGFpbnQgPSBzaG91bGRIYXZlQmFja2luZ1N0b3Jl
KCkgJiYgKG1fbmVlZHNEaXNwbGF5IHx8ICFtX25lZWRzRGlzcGxheVJlY3QuaXNFbXB0eSgpKTsK
KyAgICBpZiAoaXNTaG93aW5nUmVwYWludENvdW50ZXIoKSAmJiBuZWVkc1RvUmVwYWludCkgewor
ICAgICAgICBpbmNyZW1lbnRSZXBhaW50Q291bnQoKTsKKyAgICAgICAgbV9jaGFuZ2VNYXNrIHw9
IFRleHR1cmVNYXBwZXJMYXllcjo6UmVwYWludENvdW50Q2hhbmdlOworICAgIH0KK30KKwogLyog
XHJlaW1wIChHcmFwaGljc0xheWVyLmgpCiAqLwogdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKQEAgLTQ0
NywzNSArNDc2LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6cHJlcGFyZUJh
Y2tpbmdTdG9yZSgpCiAgICAgQVNTRVJUKGR5bmFtaWNfY2FzdDxUZXh0dXJlTWFwcGVyVGlsZWRC
YWNraW5nU3RvcmUqPihtX2JhY2tpbmdTdG9yZS5nZXQoKSkpOwogI2VuZGlmCiAgICAgVGV4dHVy
ZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUgPSBzdGF0aWNfY2FzdDxUZXh0
dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUqPihtX2JhY2tpbmdTdG9yZS5nZXQoKSk7Ci0KLSAg
ICBpZiAoaXNTaG93aW5nUmVwYWludENvdW50ZXIoKSkKLSAgICAgICAgaW5jcmVtZW50UmVwYWlu
dENvdW50KCk7Ci0KLSAgICAvLyBQYWludCBpbnRvIGFuIGludGVybWVkaWF0ZSBidWZmZXIgdG8g
YXZvaWQgcGFpbnRpbmcgY29udGVudCBtb3JlIHRoYW4gb25jZS4KLSAgICBib29sIHBhaW50T25j
ZSA9IHRydWU7Ci0gICAgY29uc3QgSW50U2l6ZSBtYXhUZXh0dXJlU2l6ZSA9IHRleHR1cmVNYXBw
ZXItPm1heFRleHR1cmVTaXplKCk7Ci0gICAgLy8gV2UgbmVlZCB0byBwYWludCBkaXJlY3RseSBp
ZiB0aGUgZGlydHkgcmVjdCBleGNlZWRzIG9uZSBvZiB0aGUgbWF4aW11bSBkaW1lbnNpb25zLgot
ICAgIGlmIChkaXJ0eVJlY3Qud2lkdGgoKSA+IG1heFRleHR1cmVTaXplLndpZHRoKCkgfHwgZGly
dHlSZWN0LmhlaWdodCgpID4gbWF4VGV4dHVyZVNpemUuaGVpZ2h0KCkpCi0gICAgICAgIHBhaW50
T25jZSA9IGZhbHNlOwotCi0gICAgaWYgKHBhaW50T25jZSkgewotICAgICAgICBPd25QdHI8SW1h
Z2VCdWZmZXI+IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShkaXJ0eVJlY3Quc2l6
ZSgpKTsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0gaW1hZ2VCdWZmZXItPmNv
bnRleHQoKTsKLSAgICAgICAgY29udGV4dC0+c2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSh0
ZXh0dXJlTWFwcGVyLT5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkpOwotICAgICAgICBjb250
ZXh0LT5zZXRUZXh0RHJhd2luZ01vZGUodGV4dHVyZU1hcHBlci0+dGV4dERyYXdpbmdNb2RlKCkp
OwotICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoLWRpcnR5UmVjdC54KCksIC1kaXJ0eVJlY3Qu
eSgpKTsKLSAgICAgICAgcGFpbnRHcmFwaGljc0xheWVyQ29udGVudHMoKmNvbnRleHQsIGRpcnR5
UmVjdCk7Ci0KLSAgICAgICAgaWYgKGlzU2hvd2luZ1JlcGFpbnRDb3VudGVyKCkpCi0gICAgICAg
ICAgICBkcmF3UmVwYWludENvdW50ZXIoY29udGV4dCk7Ci0KLSAgICAgICAgUmVmUHRyPEltYWdl
PiBpbWFnZSA9IGltYWdlQnVmZmVyLT5jb3B5SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwot
ICAgICAgICBiYWNraW5nU3RvcmUtPnVwZGF0ZUNvbnRlbnRzKHRleHR1cmVNYXBwZXIsIGltYWdl
LmdldCgpLCBtX3NpemUsIGRpcnR5UmVjdCwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ2FuTW9kaWZ5
T3JpZ2luYWxJbWFnZURhdGEpOwotICAgIH0gZWxzZQotICAgICAgICBiYWNraW5nU3RvcmUtPnVw
ZGF0ZUNvbnRlbnRzKHRleHR1cmVNYXBwZXIsIHRoaXMsIG1fc2l6ZSwgZGlydHlSZWN0LCBCaXRt
YXBUZXh0dXJlOjpVcGRhdGVDYW5Nb2RpZnlPcmlnaW5hbEltYWdlRGF0YSk7Ci0KLSAgICBiYWNr
aW5nU3RvcmUtPnNldFNob3dEZWJ1Z0JvcmRlcnMoaXNTaG93aW5nRGVidWdCb3JkZXIoKSk7Ci0g
ICAgYmFja2luZ1N0b3JlLT5zZXREZWJ1Z0JvcmRlcihtX2RlYnVnQm9yZGVyQ29sb3IsIG1fZGVi
dWdCb3JkZXJXaWR0aCk7CisgICAgYmFja2luZ1N0b3JlLT51cGRhdGVDb250ZW50cyh0ZXh0dXJl
TWFwcGVyLCB0aGlzLCBtX3NpemUsIGRpcnR5UmVjdCwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ2Fu
TW9kaWZ5T3JpZ2luYWxJbWFnZURhdGEpOwogCiAgICAgbV9uZWVkc0Rpc3BsYXkgPSBmYWxzZTsK
ICAgICBtX25lZWRzRGlzcGxheVJlY3QgPSBJbnRSZWN0KCk7CkBAIC00ODYsNDAgKzQ4Nyw2IEBA
IGJvb2wgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNob3VsZEhhdmVCYWNraW5nU3RvcmUo
KSBjb25zdAogICAgIHJldHVybiBkcmF3c0NvbnRlbnQoKSAmJiBjb250ZW50c0FyZVZpc2libGUo
KSAmJiAhbV9zaXplLmlzRW1wdHkoKTsKIH0KIAotI2lmIFVTRShDQUlSTykKLXZvaWQgR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXI6OmRyYXdSZXBhaW50Q291bnRlcihHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQpCi17Ci0gICAgY2Fpcm9fdCogY3IgPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQo
KS0+Y3IoKTsKLSAgICBjYWlyb19zYXZlKGNyKTsKLQotICAgIENTdHJpbmcgcmVwYWludENvdW50
ID0gU3RyaW5nOjpmb3JtYXQoIiVpIiwgdGhpcy0+cmVwYWludENvdW50KCkpLnV0ZjgoKTsKLSAg
ICBjYWlyb19zZWxlY3RfZm9udF9mYWNlKGNyLCAic2Fucy1zZXJpZiIsIENBSVJPX0ZPTlRfU0xB
TlRfTk9STUFMLCBDQUlST19GT05UX1dFSUdIVF9CT0xEKTsKLSAgICBjYWlyb19zZXRfZm9udF9z
aXplKGNyLCAxOCk7Ci0KLSAgICBjYWlyb190ZXh0X2V4dGVudHNfdCByZXBhaW50VGV4dEV4dGVu
dHM7Ci0gICAgY2Fpcm9fdGV4dF9leHRlbnRzKGNyLCByZXBhaW50Q291bnQuZGF0YSgpLCAmcmVw
YWludFRleHRFeHRlbnRzKTsKLQotICAgIHN0YXRpYyBjb25zdCBpbnQgcmVwYWludENvdW50Qm9y
ZGVyV2lkdGggPSAxMDsKLSAgICBzZXRTb3VyY2VSR0JBRnJvbUNvbG9yKGNyLCBpc1Nob3dpbmdE
ZWJ1Z0JvcmRlcigpID8gbV9kZWJ1Z0JvcmRlckNvbG9yIDogQ29sb3IoMCwgMjU1LCAwLCAxMjcp
KTsKLSAgICBjYWlyb19yZWN0YW5nbGUoY3IsIDAsIDAsCi0gICAgICAgIHJlcGFpbnRUZXh0RXh0
ZW50cy53aWR0aCArIChyZXBhaW50Q291bnRCb3JkZXJXaWR0aCAqIDIpLAotICAgICAgICByZXBh
aW50VGV4dEV4dGVudHMuaGVpZ2h0ICsgKHJlcGFpbnRDb3VudEJvcmRlcldpZHRoICogMikpOwot
ICAgIGNhaXJvX2ZpbGwoY3IpOwotCi0gICAgY2Fpcm9fc2V0X3NvdXJjZV9yZ2IoY3IsIDEsIDEs
IDEpOwotICAgIGNhaXJvX21vdmVfdG8oY3IsIHJlcGFpbnRDb3VudEJvcmRlcldpZHRoLCByZXBh
aW50VGV4dEV4dGVudHMuaGVpZ2h0ICsgcmVwYWludENvdW50Qm9yZGVyV2lkdGgpOwotICAgIGNh
aXJvX3Nob3dfdGV4dChjciwgcmVwYWludENvdW50LmRhdGEoKSk7Ci0KLSAgICBjYWlyb19yZXN0
b3JlKGNyKTsKLX0KLSNlbHNlCi12b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpkcmF3
UmVwYWludENvdW50ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQotewotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci19Ci0KLSNlbmRpZgotCiBib29sIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
OjphZGRBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgY29uc3Qg
SW50U2l6ZSYgYm94U2l6ZSwgY29uc3QgQW5pbWF0aW9uKiBhbmltLCBjb25zdCBTdHJpbmcmIGtl
eWZyYW1lc05hbWUsIGRvdWJsZSB0aW1lT2Zmc2V0KQogewogICAgIEFTU0VSVCgha2V5ZnJhbWVz
TmFtZS5pc0VtcHR5KCkpOwpAQCAtNTc3LDQgKzU0NCwxMCBAQCBib29sIEdyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyOjpzZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMp
CiB9CiAjZW5kaWYKIAordm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0UmVwYWlu
dENvdW50KGludCB2YWx1ZSkKK3sKKyAgICBtX3JlcGFpbnRDb3VudCA9IHZhbHVlOworICAgIG5v
dGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OlJlcGFpbnRDb3VudENoYW5nZSk7Cit9CisK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9H
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKaW5kZXggMTJjMzE5NTkx
YjcyNmM3YzlmMGJhMmJkZmRmNDM4NGU3ZGVhMTcxMy4uMDg0OGI1YjI0NmYwZmQwNzQzMTVlNTcz
ZGIxOWZmZDQwMzRiNjY0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
LmgKQEAgLTIwLDcgKzIwLDYgQEAKICNpZm5kZWYgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXJf
aAogI2RlZmluZSBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcl9oCiAKLSNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCiAjaW5jbHVkZSAiR3Jh
cGhpY3NMYXllckNsaWVudC5oIgogI2luY2x1ZGUgIkltYWdlLmgiCkBAIC02Niw2ICs2NSw4IEBA
IHB1YmxpYzoKICAgICBDb2xvciBzb2xpZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9zb2xpZENv
bG9yOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9NZWRpYShQbGF0Zm9ybUxheWVy
Kik7CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9DYW52YXMoUGxhdGZvcm1MYXllciog
Y2FudmFzKSB7IHNldENvbnRlbnRzVG9NZWRpYShjYW52YXMpOyB9CisgICAgdmlydHVhbCB2b2lk
IHNldFNob3dEZWJ1Z0JvcmRlcihib29sKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
U2hvd1JlcGFpbnRDb3VudGVyKGJvb2wpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBmbHVz
aENvbXBvc2l0aW5nU3RhdGUoY29uc3QgRmxvYXRSZWN0Jik7CiAgICAgdmlydHVhbCB2b2lkIGZs
dXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKTsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpOwpAQCAtOTMsMTAgKzk0LDE1IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldEZpeGVkVG9WaWV3cG9ydChib29sIGZpeGVkKSB7IG1fZml4ZWRUb1ZpZXdw
b3J0ID0gZml4ZWQ7IH0KICAgICBib29sIGZpeGVkVG9WaWV3cG9ydCgpIGNvbnN0IHsgcmV0dXJu
IG1fZml4ZWRUb1ZpZXdwb3J0OyB9CiAKLSAgICB2b2lkIGRyYXdSZXBhaW50Q291bnRlcihHcmFw
aGljc0NvbnRleHQqKTsKKyAgICBDb2xvciBkZWJ1Z0JvcmRlckNvbG9yKCkgY29uc3QgeyByZXR1
cm4gbV9kZWJ1Z0JvcmRlckNvbG9yOyB9CisgICAgZmxvYXQgZGVidWdCb3JkZXJXaWR0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fZGVidWdCb3JkZXJXaWR0aDsgfQorCisgICAgdm9pZCBzZXRSZXBhaW50
Q291bnQoaW50IHZhbHVlKTsKKwogcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVz
dHJveWVkKCk7CiAgICAgdm9pZCBkaWRGbHVzaENvbXBvc2l0aW5nU3RhdGUoKTsKKyAgICB2b2lk
IHVwZGF0ZURlYnVnQm9yZGVyQW5kUmVwYWludENvdW50KCk7CiAgICAgdm9pZCB1cGRhdGVCYWNr
aW5nU3RvcmUoKTsKICAgICB2b2lkIHByZXBhcmVCYWNraW5nU3RvcmUoKTsKICAgICBib29sIHNo
b3VsZEhhdmVCYWNraW5nU3RvcmUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oCmluZGV4IGM3MjQxYTZj
OWE3MjJhNjQ1MmY3YzE4YzlkNjY5NzEyNzY2OTM2NmIuLjJhNTI3NmZkMmFmNzc4YTJkMWI0YmJk
NWU5YTAxNDY5YzhhNmU2NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaApAQCAtMTMxLDcgKzEzMSw3IEBAIHB1
YmxpYzoKICAgICB9OwogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdCb3JkZXIoY29uc3QgQ29sb3Im
LCBmbG9hdCBib3JkZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4ID0gVHJhbnNmb3JtYXRpb25NYXRy
aXgoKSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVwYWludENvdW50ZXIoaW50IHZhbHVl
LCBpbnQgcG9pbnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIG1vZGVsVmlld01hdHJpeCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVyKGludCB2YWx1ZSwgY29uc3QgQ29sb3Im
LCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmll
d01hdHJpeCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZHJhd1RleHR1cmUoY29uc3QgQml0bWFwVGV4dHVyZSYsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4ID0gVHJhbnNmb3Jt
YXRpb25NYXRyaXgoKSwgZmxvYXQgb3BhY2l0eSA9IDEuMGYsIGNvbnN0IEJpdG1hcFRleHR1cmUq
IG1hc2tUZXh0dXJlID0gMCwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzID0gQWxsRWRnZXMpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZHJhd1NvbGlkQ29sb3IoY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBDb2xvciYpID0gMDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNr
aW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuY3BwCmluZGV4IGZjZTIwZTNiZDQ1ODIyYzdiY2JlMGE1
MDMyOTVmM2I2NzQ5ZTU3YzkuLjQ1NGIzMjEzMzFjYTRjMmU0MTI0OWE5NDY1ZTkxNzRmYjBhOTQ0
YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5jcHAKQEAgLTU0LDgg
KzU0LDE0IEBAIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gVGV4dHVyZU1hcHBlclN1cmZhY2VC
YWNraW5nU3RvcmU6OnRleHR1cmUoKSBjb25zdAogCiB2b2lkIFRleHR1cmVNYXBwZXJTdXJmYWNl
QmFja2luZ1N0b3JlOjpwYWludFRvVGV4dHVyZU1hcHBlcihjb25zdCBUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllclBhaW50UGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKLSAgICBpZiAobV9ncmFw
aGljc1N1cmZhY2UpCi0gICAgICAgIG1fZ3JhcGhpY3NTdXJmYWNlLT5wYWludFRvVGV4dHVyZU1h
cHBlcihwYXJhbWV0ZXJzLnRleHR1cmVNYXBwZXIsIHBhcmFtZXRlcnMudGFyZ2V0UmVjdCwgcGFy
YW1ldGVycy50cmFuc2Zvcm0sIHBhcmFtZXRlcnMub3BhY2l0eSwgcGFyYW1ldGVycy5tYXNrKTsK
KyAgICBpZiAoIW1fZ3JhcGhpY3NTdXJmYWNlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2dy
YXBoaWNzU3VyZmFjZS0+cGFpbnRUb1RleHR1cmVNYXBwZXIocGFyYW1ldGVycy50ZXh0dXJlTWFw
cGVyLCBwYXJhbWV0ZXJzLnRhcmdldFJlY3QsIHBhcmFtZXRlcnMudHJhbnNmb3JtLCBwYXJhbWV0
ZXJzLm9wYWNpdHksIHBhcmFtZXRlcnMubWFzayk7CisgICAgaWYgKHBhcmFtZXRlcnMuc2hvd0Rl
YnVnQm9yZGVycykKKyAgICAgICAgcGFyYW1ldGVycy50ZXh0dXJlTWFwcGVyLT5kcmF3Qm9yZGVy
KHBhcmFtZXRlcnMuZGVidWdCb3JkZXJDb2xvciwgcGFyYW1ldGVycy5kZWJ1Z0JvcmRlcldpZHRo
LCBwYXJhbWV0ZXJzLnRhcmdldFJlY3QsIHBhcmFtZXRlcnMudHJhbnNmb3JtKTsKKyAgICBpZiAo
cGFyYW1ldGVycy5zaG93UmVwYWludENvdW50ZXIpCisgICAgICAgIHBhcmFtZXRlcnMudGV4dHVy
ZU1hcHBlci0+ZHJhd1JlcGFpbnRDb3VudGVyKHBhcmFtZXRlcnMucmVwYWludENvdW50LCBwYXJh
bWV0ZXJzLmRlYnVnQm9yZGVyQ29sb3IsIHBhcmFtZXRlcnMudGFyZ2V0UmVjdC5sb2NhdGlvbigp
LCBwYXJhbWV0ZXJzLnRyYW5zZm9ybSk7CiB9CiAjZW5kaWYKIApAQCAtMTA2LDcgKzExMiw2IEBA
IHZvaWQgVGV4dHVyZU1hcHBlclRpbGU6OnBhaW50KFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBw
ZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uCiB9CiAKIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdT
dG9yZTo6VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlKCkKLSAgICA6IG1fZHJhd3NEZWJ1
Z0JvcmRlcnMoZmFsc2UpCiB7CiB9CiAKQEAgLTE0MCw4ICsxNDUsMTAgQEAgdm9pZCBUZXh0dXJl
TWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKGNvbnN0IFRleHR1
cmVNYXBwZXJQbGEKICAgICBhZGp1c3RlZFRyYW5zZm9ybS5tdWx0aXBseShUcmFuc2Zvcm1hdGlv
bk1hdHJpeDo6cmVjdFRvUmVjdChyZWN0KCksIHBhcmFtZXRlcnMudGFyZ2V0UmVjdCkpOwogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90aWxlcy5zaXplKCk7ICsraSkgewogICAgICAgICBt
X3RpbGVzW2ldLnBhaW50KHBhcmFtZXRlcnMudGV4dHVyZU1hcHBlciwgYWRqdXN0ZWRUcmFuc2Zv
cm0sIHBhcmFtZXRlcnMub3BhY2l0eSwgcGFyYW1ldGVycy5tYXNrLCBjYWxjdWxhdGVFeHBvc2Vk
VGlsZUVkZ2VzKHJlY3QoKSwgbV90aWxlc1tpXS5yZWN0KCkpKTsKLSAgICAgICAgaWYgKG1fZHJh
d3NEZWJ1Z0JvcmRlcnMpCi0gICAgICAgICAgICBwYXJhbWV0ZXJzLnRleHR1cmVNYXBwZXItPmRy
YXdCb3JkZXIobV9kZWJ1Z0JvcmRlckNvbG9yLCBtX2RlYnVnQm9yZGVyV2lkdGgsIG1fdGlsZXNb
aV0ucmVjdCgpLCBhZGp1c3RlZFRyYW5zZm9ybSk7CisgICAgICAgIGlmIChwYXJhbWV0ZXJzLnNo
b3dEZWJ1Z0JvcmRlcnMpCisgICAgICAgICAgICBwYXJhbWV0ZXJzLnRleHR1cmVNYXBwZXItPmRy
YXdCb3JkZXIocGFyYW1ldGVycy5kZWJ1Z0JvcmRlckNvbG9yLCBwYXJhbWV0ZXJzLmRlYnVnQm9y
ZGVyV2lkdGgsIG1fdGlsZXNbaV0ucmVjdCgpLCBhZGp1c3RlZFRyYW5zZm9ybSk7CisgICAgICAg
IGlmIChwYXJhbWV0ZXJzLnNob3dSZXBhaW50Q291bnRlcikKKyAgICAgICAgICAgIHBhcmFtZXRl
cnMudGV4dHVyZU1hcHBlci0+ZHJhd1JlcGFpbnRDb3VudGVyKHBhcmFtZXRlcnMucmVwYWludENv
dW50LCBwYXJhbWV0ZXJzLmRlYnVnQm9yZGVyQ29sb3IsIG1fdGlsZXNbaV0ucmVjdCgpLmxvY2F0
aW9uKCksIGFkanVzdGVkVHJhbnNmb3JtKTsKICAgICB9CiB9CiAKQEAgLTIzNCwxMSArMjQxLDUg
QEAgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3Rv
cmU6OnRleHR1cmUoKSBjb25zdAogICAgIHJldHVybiBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+
KCk7CiB9CiAKLXZvaWQgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpzZXREZWJ1Z0Jv
cmRlcihjb25zdCBDb2xvciYgY29sb3IsIGZsb2F0IHdpZHRoKQotewotICAgIG1fZGVidWdCb3Jk
ZXJDb2xvciA9IGNvbG9yOwotICAgIG1fZGVidWdCb3JkZXJXaWR0aCA9IHdpZHRoOwotfQotCiB9
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oCmluZGV4IGVhYzg2
NDU5NzI0ZWUwNTUxMmVjMDQzZmNlZWY2MzA0YmRmNWQ1YjEuLjE2YzdmZTU5ZjJmMzRmNmM1YjZm
NzYxM2FmYTRlYThlM2JlYTMyMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3Rv
cmUuaApAQCAtOTgsOCArOTgsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVDb250ZW50cyhU
ZXh0dXJlTWFwcGVyKiwgR3JhcGhpY3NMYXllciosIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IElu
dFJlY3QmLCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDb250ZW50c0ZsYWcpOwogCiAgICAgdm9pZCBz
ZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqIGltYWdlKSB7IG1faW1hZ2UgPSBpbWFnZTsgfQotICAg
IHZvaWQgc2V0U2hvd0RlYnVnQm9yZGVycyhib29sIGRyYXdzRGVidWdCb3JkZXJzKSB7IG1fZHJh
d3NEZWJ1Z0JvcmRlcnMgPSBkcmF3c0RlYnVnQm9yZGVyczsgfQotICAgIHZvaWQgc2V0RGVidWdC
b3JkZXIoY29uc3QgQ29sb3ImLCBmbG9hdCB3aWR0aCk7CiAKIHByaXZhdGU6CiAgICAgVGV4dHVy
ZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlKCk7CkBAIC0xMTAsMTAgKzEwOCw2IEBAIHByaXZhdGU6
CiAgICAgVmVjdG9yPFRleHR1cmVNYXBwZXJUaWxlPiBtX3RpbGVzOwogICAgIEZsb2F0U2l6ZSBt
X3NpemU7CiAgICAgUmVmUHRyPEltYWdlPiBtX2ltYWdlOwotCi0gICAgYm9vbCBtX2RyYXdzRGVi
dWdCb3JkZXJzOwotICAgIENvbG9yIG1fZGVidWdCb3JkZXJDb2xvcjsKLSAgICBmbG9hdCBtX2Rl
YnVnQm9yZGVyV2lkdGg7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCmluZGV4IDM0MDg0
Zjk0MGM2ODM3NjQzODE4ZjgwY2VmMzdlMzVlZTAxOWE0ZjkuLmY3NzJhM2Y0ZjE4Zjg4MjQ5Y2U1
NGY0YTVkNDZmN2Y4NjMxZDgyYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCkBAIC0zMDksOCAr
MzA5LDE0IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3Qm9yZGVyKGNvbnN0IENvbG9yJiBj
b2xvciwgZmxvYXQgd2lkdGgsIGNvbnN0IEZsb2F0UmVjCiAgICAgZHJhdyh0YXJnZXRSZWN0LCBt
b2RlbFZpZXdNYXRyaXgsIHByb2dyYW0uZ2V0KCksIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FX0xP
T1AsIGNvbG9yLmhhc0FscGhhKCkgPyBTaG91bGRCbGVuZCA6IDApOwogfQogCi12b2lkIFRleHR1
cmVNYXBwZXJHTDo6ZHJhd1JlcGFpbnRDb3VudGVyKGludCB2YWx1ZSwgaW50IHBvaW50U2l6ZSwg
Y29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0UG9pbnQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiBtb2RlbFZpZXdNYXRyaXgpCitzdGF0aWMgaW5saW5lIFJHQkEzMiBjb252ZXJ0QUJHUlRvQVJH
QihSR0JBMzIgcGl4ZWwpCiB7CisgICAgcmV0dXJuICgocGl4ZWwgPDwgMTYpICYgMHhmZjAwMDAp
IHwgKChwaXhlbCA+PiAxNikgJiAweGZmKSB8IChwaXhlbCAmIDB4ZmYwMGZmMDApOworfQorCit2
b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1JlcGFpbnRDb3VudGVyKGludCB2YWx1ZSwgY29uc3Qg
Q29sb3ImIGNvbG9yLCBjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRQb2ludCwgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCkKK3sKKyAgICBzdGF0aWMgY29uc3QgaW50
IHBvaW50U2l6ZSA9IDg7CiAjaWYgUExBVEZPUk0oUVQpCiAgICAgUVN0cmluZyBjb3VudGVyU3Ry
aW5nID0gUVN0cmluZzo6bnVtYmVyKHZhbHVlKTsKIApAQCAtMzI3LDcgKzMzMyw3IEBAIHZvaWQg
VGV4dHVyZU1hcHBlckdMOjpkcmF3UmVwYWludENvdW50ZXIoaW50IHZhbHVlLCBpbnQgcG9pbnRT
aXplLCBjb25zdCBGbG9hdFBvCiAKICAgICBRSW1hZ2UgaW1hZ2Uoc2l6ZSwgTmF0aXZlSW1hZ2VR
dDo6ZGVmYXVsdEZvcm1hdEZvckFscGhhRW5hYmxlZEltYWdlcygpKTsKICAgICBRUGFpbnRlciBw
YWludGVyKCZpbWFnZSk7Ci0gICAgcGFpbnRlci5maWxsUmVjdChzb3VyY2VSZWN0LCBRdDo6Ymx1
ZSk7IC8vIFNpbmNlIHdlIHdvbid0IHN3YXAgUitCIGZvciBzcGVlZCwgdGhpcyB3aWxsIHBhaW50
IHJlZC4KKyAgICBwYWludGVyLmZpbGxSZWN0KHNvdXJjZVJlY3QsIGNvbnZlcnRBQkdSVG9BUkdC
KGNvbG9yLnJnYigpKSk7IC8vIFNpbmNlIHdlIHdvbid0IHN3YXAgUitCIGZvciBzcGVlZCwgdGhp
cyB3aWxsIHBhaW50IHRoZSBnaXZlbiBjb2xvci4KICAgICBwYWludGVyLnNldEZvbnQoZm9udCk7
CiAgICAgcGFpbnRlci5zZXRQZW4oUXQ6OndoaXRlKTsKICAgICBwYWludGVyLmRyYXdUZXh0KDIs
IGhlaWdodCAqIDAuODUsIGNvdW50ZXJTdHJpbmcpOwpAQCAtMzQ2LDcgKzM1Miw5IEBAIHZvaWQg
VGV4dHVyZU1hcHBlckdMOjpkcmF3UmVwYWludENvdW50ZXIoaW50IHZhbHVlLCBpbnQgcG9pbnRT
aXplLCBjb25zdCBGbG9hdFBvCiAgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlID0gY2Fpcm9f
aW1hZ2Vfc3VyZmFjZV9jcmVhdGUoQ0FJUk9fRk9STUFUX0FSR0IzMiwgd2lkdGgsIGhlaWdodCk7
CiAgICAgY2Fpcm9fdCogY3IgPSBjYWlyb19jcmVhdGUoc3VyZmFjZSk7CiAKLSAgICBjYWlyb19z
ZXRfc291cmNlX3JnYihjciwgMCwgMCwgMSk7IC8vIFNpbmNlIHdlIHdvbid0IHN3YXAgUitCIGZv
ciBzcGVlZCwgdGhpcyB3aWxsIHBhaW50IHJlZC4KKyAgICBmbG9hdCByLCBnLCBiLCBhOworICAg
IGNvbG9yLmdldFJHQkEociwgZywgYiwgYSk7CisgICAgY2Fpcm9fc2V0X3NvdXJjZV9yZ2JhKGNy
LCBiLCBnLCByLCBhKTsgLy8gU2luY2Ugd2Ugd29uJ3Qgc3dhcCBSK0IgZm9yIHNwZWVkLCB0aGlz
IHdpbGwgcGFpbnQgdGhlIGdpdmVuIGNvbG9yLgogICAgIGNhaXJvX3JlY3RhbmdsZShjciwgMCwg
MCwgd2lkdGgsIGhlaWdodCk7CiAgICAgY2Fpcm9fZmlsbChjcik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wu
aAppbmRleCBhYTEzMzEyZmFhZmNhMzFmZGYxZDFjNDE0ZDM1YzI3Y2FjODAyY2EyLi5kZDBkYzMz
MWQ4NjI5Y2JlOThkYzNkZGYyMzIyZTVmYTg3YzRkZDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oCkBA
IC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFRleHR1cmVNYXBwZXIgaW1wbGVtZW50
YXRpb24KICAgICB2aXJ0dWFsIHZvaWQgZHJhd0JvcmRlcihjb25zdCBDb2xvciYsIGZsb2F0IGJv
cmRlcldpZHRoLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKSBPVkVS
UklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVyKGludCB2YWx1ZSwgaW50
IHBvaW50U2l6ZSwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiBtb2RlbFZpZXdNYXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVyKGludCB2YWx1ZSwgY29uc3QgQ29sb3Im
LCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmll
d01hdHJpeCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBkcmF3VGV4dHVyZShjb25zdCBCaXRtYXBUZXh0dXJlJiwgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5LCBjb25zdCBCaXRtYXBU
ZXh0dXJlKiBtYXNrVGV4dHVyZSwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgZHJhd1RleHR1cmUoUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlLCBGbGFn
cywgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVj
dCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3Bh
Y2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUsIHVuc2lnbmVkIGV4cG9zZWRF
ZGdlcyA9IEFsbEVkZ2VzKTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1NvbGlkQ29sb3IoY29uc3Qg
RmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBDb2xvciYpIE9W
RVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcAppbmRleCA5Mjkw
NTNiMTJiNzQwMjU4NGM1NDg3YTM4YWI4MGZjZGIxYTExMGI4Li5lMjM2NjBmYmVmZjkzYTM1ZGMz
MDE5Mjc4ZmRhMDYwNTRmYzY1ZDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVm
ZmVyLmNwcApAQCAtMjYsNiArMjYsMTIgQEAKICNpbmNsdWRlICJOYXRpdmVJbWFnZVF0LmgiCiAj
ZW5kaWYKIAorI2lmIFVTRShDQUlSTykKKyNpbmNsdWRlICJDYWlyb1V0aWxpdGllcy5oIgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNlbHNlCisjaW5jbHVkZSAiTm90SW1wbGVtZW50
ZWQuaCIKKyNlbmRpZgogCiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtMTY0LDYgKzE3MCwzOCBAQCB2b2lkIFRleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlcjo6
ZHJhd1NvbGlkQ29sb3IoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBUcmFucwogICAgIGNv
bnRleHQtPnJlc3RvcmUoKTsKIH0KIAorI2lmIFVTRShDQUlSTykKK3ZvaWQgVGV4dHVyZU1hcHBl
ckltYWdlQnVmZmVyOjpkcmF3UmVwYWludENvdW50ZXIoaW50IHZhbHVlLCBjb25zdCBDb2xvciYg
Y29sb3IsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9k
ZWxWaWV3TWF0cml4KQoreworICAgIHN0YXRpYyBjb25zdCBpbnQgcG9pbnRTaXplID0gODsKKyAg
ICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBjdXJyZW50Q29udGV4dCgpOworICAgIGNhaXJv
X3QqIGNyID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CisgICAgY2Fpcm9fc2F2
ZShjcik7CisKKyAgICBDU3RyaW5nIGNvdW50ZXJTdHJpbmcgPSBTdHJpbmc6Om51bWJlcih2YWx1
ZSkuYXNjaWkoKTsKKyAgICAvLyBjYWlyb190ZXh0X2V4dGVudHMoKSByZXF1aXJlcyBhIGNhaXJv
X3QsIHNvIGRpbWVuc2lvbnMgbmVlZCB0byBiZSBndWVzc3RpbWF0ZWQuCisgICAgaW50IHdpZHRo
ID0gY291bnRlclN0cmluZy5sZW5ndGgoKSAqIHBvaW50U2l6ZSAqIDEuMjsKKyAgICBpbnQgaGVp
Z2h0ID0gcG9pbnRTaXplICogMS41OworCisgICAgc2V0U291cmNlUkdCQUZyb21Db2xvcihjciwg
Y29sb3IpOworICAgIGNhaXJvX3JlY3RhbmdsZShjciwgMCwgMCwgd2lkdGgsIGhlaWdodCk7Cisg
ICAgY2Fpcm9fZmlsbChjcik7CisKKyAgICBjYWlyb19zZWxlY3RfZm9udF9mYWNlKGNyLCAiTW9u
b3NwYWNlIiwgQ0FJUk9fRk9OVF9TTEFOVF9OT1JNQUwsIENBSVJPX0ZPTlRfV0VJR0hUX0JPTEQp
OworICAgIGNhaXJvX3NldF9mb250X3NpemUoY3IsIHBvaW50U2l6ZSk7CisgICAgY2Fpcm9fc2V0
X3NvdXJjZV9yZ2IoY3IsIDEsIDEsIDEpOworICAgIGNhaXJvX21vdmVfdG8oY3IsIDIsIHBvaW50
U2l6ZSk7CisgICAgY2Fpcm9fc2hvd190ZXh0KGNyLCBjb3VudGVyU3RyaW5nLmRhdGEoKSk7CisK
KyAgICBjYWlyb19yZXN0b3JlKGNyKTsKK307CisjZWxzZQordm9pZCBUZXh0dXJlTWFwcGVySW1h
Z2VCdWZmZXI6OmRyYXdSZXBhaW50Q291bnRlcihpbnQgLyogdmFsdWUgKi8sIGNvbnN0IENvbG9y
JiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JikKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfTsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKENTU19GSUxURVJT
KQogUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBCaXRtYXBUZXh0dXJlSW1hZ2VCdWZmZXI6OmFw
cGx5RmlsdGVycyhUZXh0dXJlTWFwcGVyKiwgY29uc3QgQml0bWFwVGV4dHVyZSYgY29udGVudFRl
eHR1cmUsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdl
QnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckltYWdlQnVmZmVyLmgKaW5kZXggOWRlNmQ0Y2JkNWViMTdlOTM0ODgwMThhNjJhNzEz
MWQ4OTczODRlYi4uMzY3N2EzZmUwMzNjNTA4ZDAwY2VmOTg2MzRhYzk0M2UzNmJkNzJiYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJJbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuaApAQCAtNTcsMTAgKzU3LDcgQEAgcHVi
bGljOgogICAgIHsKICAgICAgICAgVU5VU0VEX1BBUkFNKG1vZGVsVmlld01hdHJpeCk7CiAgICAg
fTsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVyKGludCAvKiB2YWx1ZSAqLywg
aW50IC8qIHBvaW50U2l6ZSAqLywgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKSBPVkVS
UklERQotICAgIHsKLSAgICAgICAgVU5VU0VEX1BBUkFNKG1vZGVsVmlld01hdHJpeCk7Ci0gICAg
fTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVyKGludCB2YWx1ZSwgY29uc3Qg
Q29sb3ImLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1v
ZGVsVmlld01hdHJpeCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCBkcmF3VGV4dHVyZShjb25zdCBCaXRtYXBUZXh0dXJlJiwgY29uc3QgRmxvYXRS
ZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNp
dHksIGNvbnN0IEJpdG1hcFRleHR1cmUqIG1hc2tUZXh0dXJlLCB1bnNpZ25lZCBleHBvc2VkRWRn
ZXMpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3U29saWRDb2xvcihjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IENvbG9yJikgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luQ2xpcChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYsIGNvbnN0IEZsb2F0UmVjdCYpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNw
cAppbmRleCBmMjUxZmEyNjA5OGI5MWZmZGVhNzcwYTlhYWUxNzYzODczNDEwYzJiLi43ZTM0NWJm
MDg2NWUxMTBkN2U0NmFjN2VjMzk2ZDZlNDY4YzQzNWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxh
eWVyLmNwcApAQCAtMTIwLDYgKzEyMCwxMSBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFp
bnRTZWxmKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlvbnMpCiAgICAgcGFy
YW1ldGVycy50cmFuc2Zvcm0gPSB0cmFuc2Zvcm07CiAgICAgcGFyYW1ldGVycy5vcGFjaXR5ID0g
b3B0aW9ucy5vcGFjaXR5OwogICAgIHBhcmFtZXRlcnMubWFzayA9IG9wdGlvbnMubWFzay5nZXQo
KTsKKyAgICBwYXJhbWV0ZXJzLnNob3dEZWJ1Z0JvcmRlcnMgPSBtX3N0YXRlLnNob3dEZWJ1Z0Jv
cmRlcnM7CisgICAgcGFyYW1ldGVycy5kZWJ1Z0JvcmRlckNvbG9yID0gbV9zdGF0ZS5kZWJ1Z0Jv
cmRlckNvbG9yOworICAgIHBhcmFtZXRlcnMuZGVidWdCb3JkZXJXaWR0aCA9IG1fc3RhdGUuZGVi
dWdCb3JkZXJXaWR0aDsKKyAgICBwYXJhbWV0ZXJzLnNob3dSZXBhaW50Q291bnRlciA9IG1fc3Rh
dGUuc2hvd1JlcGFpbnRDb3VudGVyOworICAgIHBhcmFtZXRlcnMucmVwYWludENvdW50ID0gbV9z
dGF0ZS5yZXBhaW50Q291bnQ7CiAKICAgICBpZiAobV9zdGF0ZS5zb2xpZENvbG9yLmlzVmFsaWQo
KSAmJiAhbV9zdGF0ZS5jb250ZW50c1JlY3QuaXNFbXB0eSgpKSB7CiAgICAgICAgIGlmICghbV9z
dGF0ZS5zb2xpZENvbG9yLmFscGhhKCkpCkBAIC0xMzEsNiArMTM2LDExIEBAIHZvaWQgVGV4dHVy
ZU1hcHBlckxheWVyOjpwYWludFNlbGYoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYg
b3B0aW9ucykKICAgICAgICAgZmxvYXQgZWZmZWN0aXZlQWxwaGEgPSBhbHBoYSAqIHBhcmFtZXRl
cnMub3BhY2l0eTsKICAgICAgICAgQ29sb3IgY29sb3IoY29sb3JXaXRoT3ZlcnJpZGVBbHBoYShy
Z2JhLCBlZmZlY3RpdmVBbHBoYSkpOwogICAgICAgICBwYXJhbWV0ZXJzLnRleHR1cmVNYXBwZXIt
PmRyYXdTb2xpZENvbG9yKG1fc3RhdGUuY29udGVudHNSZWN0LCBwYXJhbWV0ZXJzLnRyYW5zZm9y
bSwgY29sb3IpOworCisgICAgICAgIGlmIChwYXJhbWV0ZXJzLnNob3dEZWJ1Z0JvcmRlcnMpCisg
ICAgICAgICAgICBwYXJhbWV0ZXJzLnRleHR1cmVNYXBwZXItPmRyYXdCb3JkZXIocGFyYW1ldGVy
cy5kZWJ1Z0JvcmRlckNvbG9yLCBwYXJhbWV0ZXJzLmRlYnVnQm9yZGVyV2lkdGgsIGxheWVyUmVj
dCgpLCBwYXJhbWV0ZXJzLnRyYW5zZm9ybSk7CisgICAgICAgIGlmIChwYXJhbWV0ZXJzLnNob3dS
ZXBhaW50Q291bnRlcikKKyAgICAgICAgICAgIHBhcmFtZXRlcnMudGV4dHVyZU1hcHBlci0+ZHJh
d1JlcGFpbnRDb3VudGVyKHBhcmFtZXRlcnMucmVwYWludENvdW50LCBwYXJhbWV0ZXJzLmRlYnVn
Qm9yZGVyQ29sb3IsIGxheWVyUmVjdCgpLmxvY2F0aW9uKCksIHBhcmFtZXRlcnMudHJhbnNmb3Jt
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzg3LDggKzM5Nyw2IEBAIHZvaWQgVGV4
dHVyZU1hcHBlckxheWVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KEdy
YXBoaWNzTGF5ZXJUZXh0CiAgICAgaWYgKGNoYW5nZU1hc2sgPT0gTm9DaGFuZ2VzICYmIGdyYXBo
aWNzTGF5ZXItPm1fYW5pbWF0aW9ucy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGdyYXBoaWNzTGF5ZXItPnVwZGF0ZURlYnVnSW5kaWNhdG9ycygpOwotCiAgICAgaWYgKGNoYW5n
ZU1hc2sgJiBDaGlsZHJlbkNoYW5nZSkKICAgICAgICAgc2V0Q2hpbGRyZW4oZ3JhcGhpY3NMYXll
ci0+Y2hpbGRyZW4oKSk7CiAKQEAgLTQwNSw2ICs0MTMsOSBAQCB2b2lkIFRleHR1cmVNYXBwZXJM
YXllcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seShHcmFwaGljc0xheWVy
VGV4dAogICAgIGlmIChjaGFuZ2VNYXNrICYgQW5pbWF0aW9uQ2hhbmdlKQogICAgICAgICBtX2Fu
aW1hdGlvbnMgPSBncmFwaGljc0xheWVyLT5tX2FuaW1hdGlvbnM7CiAKKyAgICBpZiAoY2hhbmdl
TWFzayAmIFJlcGFpbnRDb3VudENoYW5nZSkKKyAgICAgICAgbV9zdGF0ZS5yZXBhaW50Q291bnQg
PSBncmFwaGljc0xheWVyLT5yZXBhaW50Q291bnQoKTsKKwogICAgIG1fc3RhdGUubWFza0xheWVy
ID0gdG9UZXh0dXJlTWFwcGVyTGF5ZXIoZ3JhcGhpY3NMYXllci0+bWFza0xheWVyKCkpOwogICAg
IG1fc3RhdGUucmVwbGljYUxheWVyID0gdG9UZXh0dXJlTWFwcGVyTGF5ZXIoZ3JhcGhpY3NMYXll
ci0+cmVwbGljYUxheWVyKCkpOwogICAgIG1fc3RhdGUucG9zID0gZ3JhcGhpY3NMYXllci0+cG9z
aXRpb24oKTsKQEAgLTQyNyw2ICs0MzgsMTEgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OmZs
dXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoR3JhcGhpY3NMYXllclRleHQKICNl
bmRpZgogICAgIG1fZml4ZWRUb1ZpZXdwb3J0ID0gZ3JhcGhpY3NMYXllci0+Zml4ZWRUb1ZpZXdw
b3J0KCk7CiAKKyAgICBtX3N0YXRlLnNob3dEZWJ1Z0JvcmRlcnMgPSBncmFwaGljc0xheWVyLT5p
c1Nob3dpbmdEZWJ1Z0JvcmRlcigpOworICAgIG1fc3RhdGUuZGVidWdCb3JkZXJDb2xvciA9IHRv
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIoZ3JhcGhpY3NMYXllciktPmRlYnVnQm9yZGVyQ29s
b3IoKTsKKyAgICBtX3N0YXRlLmRlYnVnQm9yZGVyV2lkdGggPSB0b0dyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyKGdyYXBoaWNzTGF5ZXIpLT5kZWJ1Z0JvcmRlcldpZHRoKCk7CisgICAgbV9zdGF0
ZS5zaG93UmVwYWludENvdW50ZXIgPSBncmFwaGljc0xheWVyLT5pc1Nob3dpbmdSZXBhaW50Q291
bnRlcigpOworCiAgICAgbV9jb250ZW50c0xheWVyID0gZ3JhcGhpY3NMYXllci0+cGxhdGZvcm1M
YXllcigpOwogCiAgICAgbV9jdXJyZW50VHJhbnNmb3JtLnNldFBvc2l0aW9uKGFkanVzdGVkUG9z
aXRpb24oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKaW5kZXggZjQxZTUyYTk3YzRiMzI4YzQ0
Y2Y2NTBhZWUzNGNkMzAwYTQ2NTM5YS4uNTc1YmIyN2ViN2E4NzRjMTg0YjU4MWVkMmJkNDM1ZDEw
MTVhODNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaApAQCAtNzEsNyArNzEsMTAgQEAgcHVi
bGljOgogCiAgICAgICAgIFJlcGxpY2FMYXllckNoYW5nZSA9ICAgICAgICAoMUwgPDwgMjEpLAog
ICAgICAgICBBbmltYXRpb25DaGFuZ2UgPSAgICAgICAgICAgKDFMIDw8IDIyKSwKLSAgICAgICAg
RmlsdGVyQ2hhbmdlID0gICAgICAgICAgICAgICgxTCA8PCAyMykKKyAgICAgICAgRmlsdGVyQ2hh
bmdlID0gICAgICAgICAgICAgICgxTCA8PCAyMyksCisKKyAgICAgICAgRGVidWdWaXN1YWxzQ2hh
bmdlID0gICAgICAgICgxTCA8PCAyNCksCisgICAgICAgIFJlcGFpbnRDb3VudENoYW5nZSA9ICAg
ICAgICAoMUwgPDwgMjUpCiAgICAgfTsKIAogICAgIFRleHR1cmVNYXBwZXJMYXllcigpCkBAIC0x
NzIsNiArMTc1LDkgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAgICAgICAg
IEZpbHRlck9wZXJhdGlvbnMgZmlsdGVyczsKICNlbmRpZgorICAgICAgICBDb2xvciBkZWJ1Z0Jv
cmRlckNvbG9yOworICAgICAgICBmbG9hdCBkZWJ1Z0JvcmRlcldpZHRoOworICAgICAgICBpbnQg
cmVwYWludENvdW50OwogCiAgICAgICAgIGJvb2wgcHJlc2VydmVzM0QgOiAxOwogICAgICAgICBi
b29sIG1hc2tzVG9Cb3VuZHMgOiAxOwpAQCAtMTgwLDExICsxODYsMTUgQEAgcHJpdmF0ZToKICAg
ICAgICAgYm9vbCBjb250ZW50c09wYXF1ZSA6IDE7CiAgICAgICAgIGJvb2wgYmFja2ZhY2VWaXNp
YmlsaXR5IDogMTsKICAgICAgICAgYm9vbCB2aXNpYmxlIDogMTsKKyAgICAgICAgYm9vbCBzaG93
RGVidWdCb3JkZXJzIDogMTsKKyAgICAgICAgYm9vbCBzaG93UmVwYWludENvdW50ZXIgOiAxOwog
CiAgICAgICAgIFN0YXRlKCkKICAgICAgICAgICAgIDogb3BhY2l0eSgxKQogICAgICAgICAgICAg
LCBtYXNrTGF5ZXIoMCkKICAgICAgICAgICAgICwgcmVwbGljYUxheWVyKDApCisgICAgICAgICAg
ICAsIGRlYnVnQm9yZGVyV2lkdGgoMCkKKyAgICAgICAgICAgICwgcmVwYWludENvdW50KDApCiAg
ICAgICAgICAgICAsIHByZXNlcnZlczNEKGZhbHNlKQogICAgICAgICAgICAgLCBtYXNrc1RvQm91
bmRzKGZhbHNlKQogICAgICAgICAgICAgLCBkcmF3c0NvbnRlbnQoZmFsc2UpCkBAIC0xOTIsNiAr
MjAyLDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICwgY29udGVudHNPcGFxdWUoZmFsc2UpCiAg
ICAgICAgICAgICAsIGJhY2tmYWNlVmlzaWJpbGl0eShmYWxzZSkKICAgICAgICAgICAgICwgdmlz
aWJsZSh0cnVlKQorICAgICAgICAgICAgLCBzaG93RGVidWdCb3JkZXJzKGZhbHNlKQorICAgICAg
ICAgICAgLCBzaG93UmVwYWludENvdW50ZXIoZmFsc2UpCiAgICAgICAgIHsKICAgICAgICAgfQog
ICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oCmluZGV4IDkyYTE1
OGU2ZDIxYjRhNzUyOTFlZjk0MzliODc2MmEzZjc5NjBjM2MuLjg1OTAzZmE2NGI0ZTU1NmYyYzZh
Mzk2MWU5ZmQwN2MxM2NjMjMzZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllci5oCkBAIC0zOSwxMCArMzksMjAgQEAgcHVibGljOgogICAgIGZsb2F0IG9wYWNpdHk7CiAg
ICAgQml0bWFwVGV4dHVyZSogbWFzazsKIAorICAgIGJvb2wgc2hvd0RlYnVnQm9yZGVyczsKKyAg
ICBDb2xvciBkZWJ1Z0JvcmRlckNvbG9yOworICAgIGZsb2F0IGRlYnVnQm9yZGVyV2lkdGg7Cisg
ICAgYm9vbCBzaG93UmVwYWludENvdW50ZXI7CisgICAgaW50IHJlcGFpbnRDb3VudDsKKwogICAg
IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUGFpbnRQYXJhbWV0ZXJzKCkKICAgICAgICAgOiB0
ZXh0dXJlTWFwcGVyKDApCiAgICAgICAgICwgb3BhY2l0eSgxKQogICAgICAgICAsIG1hc2soMCkK
KyAgICAgICAgLCBzaG93RGVidWdCb3JkZXJzKGZhbHNlKQorICAgICAgICAsIGRlYnVnQm9yZGVy
V2lkdGgoMCkKKyAgICAgICAgLCBzaG93UmVwYWludENvdW50ZXIoZmFsc2UpCisgICAgICAgICwg
cmVwYWludENvdW50KDApCiAgICAgeyB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNw
cAppbmRleCBjOTQ1ZTljOTk0YTQzYWY1ZWJmNjMxMzc5ZWI2Zjg0YWM3ZTY4YmM3Li4xOTQzMWE2
NmQ3NzUyZDljYTE2NjJiMmI1YWQ5OTAwODJmYzY0YTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
dmlldy5jcHAKQEAgLTgzOCw2ICs4MzgsOSBAQCBzdGF0aWMgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRh
KiBfZXdrX3ZpZXdfcHJpdl9uZXcoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQogICAg
IHByaXYtPnBhZ2VTZXR0aW5ncy0+c2V0SW50ZXJhY3RpdmVGb3JtVmFsaWRhdGlvbkVuYWJsZWQo
dHJ1ZSk7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIHByaXYtPnBhZ2VT
ZXR0aW5ncy0+c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoZmFsc2UpOworICAgIGJv
b2wgc2hvd0RlYnVnVmlzdWFscyA9IFN0cmluZyhnZXRlbnYoIldFQktJVF9TSE9XX0NPTVBPU0lU
SU5HX0RFQlVHX1ZJU1VBTFMiKSkgPT0gIjEiOworICAgIHByaXYtPnBhZ2VTZXR0aW5ncy0+c2V0
U2hvd0RlYnVnQm9yZGVycyhzaG93RGVidWdWaXN1YWxzKTsKKyAgICBwcml2LT5wYWdlU2V0dGlu
Z3MtPnNldFNob3dSZXBhaW50Q291bnRlcihzaG93RGVidWdWaXN1YWxzKTsKICNlbmRpZgogCiAg
ICAgdXJsID0gcHJpdi0+cGFnZVNldHRpbmdzLT51c2VyU3R5bGVTaGVldExvY2F0aW9uKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAgYi9T
b3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKaW5kZXggMjkzMTBkNGU5
ZmU0ODE0NTcwM2Q5OTRmNGQxZTlkMDc2YTQyMDhlZS4uMjhkZGYzMWQ0MDE2MTM0MDYyYzFhMzhj
NzQ4Mjg1NzVhZmIzODY5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2
aWV3LmNwcApAQCAtMzQzNSw2ICszNDM1LDkgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3
X3VwZGF0ZV9zZXR0aW5ncyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogCiAjaWYgVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIGNvcmVTZXR0aW5ncy0+c2V0QWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0VuYWJsZWQoc2V0dGluZ3NQcml2YXRlLT5lbmFibGVBY2NlbGVyYXRlZENvbXBvc2l0
aW5nKTsKKyAgICBib29sIHNob3dEZWJ1Z1Zpc3VhbHMgPSBTdHJpbmcoZ2V0ZW52KCJXRUJLSVRf
U0hPV19DT01QT1NJVElOR19ERUJVR19WSVNVQUxTIikpID09ICIxIjsKKyAgICBjb3JlU2V0dGlu
Z3MtPnNldFNob3dEZWJ1Z0JvcmRlcnMoc2hvd0RlYnVnVmlzdWFscyk7CisgICAgY29yZVNldHRp
bmdzLT5zZXRTaG93UmVwYWludENvdW50ZXIoc2hvd0RlYnVnVmlzdWFscyk7CiAjZW5kaWYKIAog
I2lmIEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9x
d2Vic2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcApp
bmRleCA5ZGIwMWIxMWU4ZDQ0OGRmNTFkOTI0MmM3MWM3ZTA1OWNlZWE2MmQ1Li4yMzgxOWY1YTA2
NjY4OTFiNmRmOTVmMjI5M2ZlOTNiYzY5Mjc2ZjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJz
ZXR0aW5ncy5jcHAKQEAgLTE1MCw2ICsxNTAsMTAgQEAgdm9pZCBRV2ViU2V0dGluZ3NQcml2YXRl
OjphcHBseSgpCiAgICAgICAgIHNldHRpbmdzLT5zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9y
QW5pbWF0aW9uRW5hYmxlZCh2YWx1ZSk7CiAgICAgICAgIHNldHRpbmdzLT5zZXRBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nRm9yVmlkZW9FbmFibGVkKGZhbHNlKTsKICAgICAgICAgc2V0dGluZ3MtPnNl
dEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JQbHVnaW5zRW5hYmxlZChmYWxzZSk7CisKKyAgICAg
ICAgYm9vbCBzaG93RGVidWdWaXN1YWxzID0gcWdldGVudigiUVRfV0VCS0lUX1NIT1dfQ09NUE9T
SVRJTkdfREVCVUdfVklTVUFMUyIpID09ICIxIjsKKyAgICAgICAgc2V0dGluZ3MtPnNldFNob3dE
ZWJ1Z0JvcmRlcnMoc2hvd0RlYnVnVmlzdWFscyk7CisgICAgICAgIHNldHRpbmdzLT5zZXRTaG93
UmVwYWludENvdW50ZXIoc2hvd0RlYnVnVmlzdWFscyk7CiAjZW5kaWYKICNpZiBFTkFCTEUoV0VC
R0wpCiAgICAgICAgIHZhbHVlID0gYXR0cmlidXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6OldlYkdM
RW5hYmxlZCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJJbmZvLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVySW5mby5oCmluZGV4IDY1MjA1NmRkODEw
NDIzNjQwZmNmNjk2OTA1YTdkZTczN2Q2ZDRiOWUuLjJlZjk5ZWMwNjcyZjc1YTk4NjkzZTVkYmQ5
MDFiNDczM2I3MTE2OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJJbmZvLmgKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllckluZm8uaApAQCAtNjgs
NiArNjgsOCBAQCBzdHJ1Y3QgQ29vcmRpbmF0ZWRMYXllckluZm8gewogICAgICAgICAgICAgYm9v
bCBwcmVzZXJ2ZXMzRCA6IDE7CiAgICAgICAgICAgICBib29sIGlzUm9vdExheWVyOiAxOwogICAg
ICAgICAgICAgYm9vbCBmaXhlZFRvVmlld3BvcnQgOiAxOworICAgICAgICAgICAgYm9vbCBzaG93
RGVidWdCb3JkZXJzIDogMTsKKyAgICAgICAgICAgIGJvb2wgc2hvd1JlcGFpbnRDb3VudGVyIDog
MTsKICAgICAgICAgfTsKICAgICAgICAgdW5zaWduZWQgZmxhZ3M7CiAgICAgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcAppbmRleCAzNzcwMDczNTZlMTIy
NWNhM2Y2ZWEwYzRjMzdiMDIzODNiODg2MDAzLi4wYTY2NmEzMTViNmMzY2MyYmM4ZmFmN2U5ZTU2
ZGNmM2EyYjYxYmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3Rv
cmUuY3BwCkBAIC04OCw3ICs4OCw2IEBAIHZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnVw
ZGF0ZVRpbGUodWludDMyX3QgaWQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsCiB7CiAgICAg
SGFzaE1hcDx1aW50MzJfdCwgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlPjo6aXRlcmF0b3Ig
aXQgPSBtX3RpbGVzLmZpbmQoaWQpOwogICAgIEFTU0VSVChpdCAhPSBtX3RpbGVzLmVuZCgpKTsK
LSAgICBpdC0+dmFsdWUuaW5jcmVtZW50UmVwYWludENvdW50KCk7CiAgICAgaXQtPnZhbHVlLnNl
dEJhY2tCdWZmZXIodGlsZVJlY3QsIHNvdXJjZVJlY3QsIGJhY2tCdWZmZXIsIG9mZnNldCk7CiB9
CiAKQEAgLTEwOSwyNyArMTA4LDE2IEBAIHZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnNl
dFNpemUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplKQogICAgIG1fc2l6ZSA9IHNpemU7
CiB9CiAKLXN0YXRpYyBib29sIHNob3VsZFNob3dUaWxlRGVidWdWaXN1YWxzKCkKLXsKLSNpZiBQ
TEFURk9STShRVCkKLSAgICByZXR1cm4gKHFnZXRlbnYoIlFUX1dFQktJVF9TSE9XX0NPTVBPU0lU
SU5HX0RFQlVHX1ZJU1VBTFMiKSA9PSAiMSIpOwotI2VsaWYgVVNFKENBSVJPKQotICAgIHJldHVy
biAoU3RyaW5nKGdldGVudigiV0VCS0lUX1NIT1dfQ09NUE9TSVRJTkdfREVCVUdfVklTVUFMUyIp
KSA9PSAiMSIpOwotI2VuZGlmCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCiB2b2lkIENvb3JkaW5h
dGVkQmFja2luZ1N0b3JlOjpwYWludFRpbGVzVG9UZXh0dXJlTWFwcGVyKFZlY3RvcjxUZXh0dXJl
TWFwcGVyVGlsZSo+JiB0aWxlcywgY29uc3QgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQYWlu
dFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0
aWxlcy5zaXplKCk7ICsraSkgewogICAgICAgICBUZXh0dXJlTWFwcGVyVGlsZSogdGlsZSA9IHRp
bGVzW2ldOwogICAgICAgICB0aWxlLT5wYWludChwYXJhbWV0ZXJzLnRleHR1cmVNYXBwZXIsIHBh
cmFtZXRlcnMudHJhbnNmb3JtLCBwYXJhbWV0ZXJzLm9wYWNpdHksIHBhcmFtZXRlcnMubWFzaywg
Y2FsY3VsYXRlRXhwb3NlZFRpbGVFZGdlcyhwYXJhbWV0ZXJzLnRhcmdldFJlY3QsIHRpbGUtPnJl
Y3QoKSkpOwotICAgICAgICBzdGF0aWMgYm9vbCBzaG91bGREZWJ1ZyA9IHNob3VsZFNob3dUaWxl
RGVidWdWaXN1YWxzKCk7Ci0gICAgICAgIGlmICghc2hvdWxkRGVidWcpCi0gICAgICAgICAgICBj
b250aW51ZTsKIAotICAgICAgICBwYXJhbWV0ZXJzLnRleHR1cmVNYXBwZXItPmRyYXdCb3JkZXIo
Q29sb3IoMHhGRiwgMCwgMCksIDIsIHRpbGUtPnJlY3QoKSwgcGFyYW1ldGVycy50cmFuc2Zvcm0p
OwotICAgICAgICBwYXJhbWV0ZXJzLnRleHR1cmVNYXBwZXItPmRyYXdSZXBhaW50Q291bnRlcihz
dGF0aWNfY2FzdDxDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGUqPih0aWxlKS0+cmVwYWludENv
dW50KCksIDgsIHRpbGUtPnJlY3QoKS5sb2NhdGlvbigpLCBwYXJhbWV0ZXJzLnRyYW5zZm9ybSk7
CisgICAgICAgIGlmIChwYXJhbWV0ZXJzLnNob3dEZWJ1Z0JvcmRlcnMpCisgICAgICAgICAgICBw
YXJhbWV0ZXJzLnRleHR1cmVNYXBwZXItPmRyYXdCb3JkZXIocGFyYW1ldGVycy5kZWJ1Z0JvcmRl
ckNvbG9yLCBwYXJhbWV0ZXJzLmRlYnVnQm9yZGVyV2lkdGgsIHRpbGUtPnJlY3QoKSwgcGFyYW1l
dGVycy50cmFuc2Zvcm0pOworICAgICAgICBpZiAocGFyYW1ldGVycy5zaG93UmVwYWludENvdW50
ZXIpCisgICAgICAgICAgICBwYXJhbWV0ZXJzLnRleHR1cmVNYXBwZXItPmRyYXdSZXBhaW50Q291
bnRlcihwYXJhbWV0ZXJzLnJlcGFpbnRDb3VudCwgcGFyYW1ldGVycy5kZWJ1Z0JvcmRlckNvbG9y
LCB0aWxlLT5yZWN0KCkubG9jYXRpb24oKSwgcGFyYW1ldGVycy50cmFuc2Zvcm0pOwogICAgIH0K
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmgKaW5kZXggNzY0
ZTliMDJkZjI4ZDk5MmViMmI1NTYzOTFkNzFhMjVkMWIxYjUzNy4uYTk5ZTA4MmU3YTkwNjk3ZDhl
ZTQ0Y2NiNDQyYWFjYjI0NzFmMWM3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJh
Y2tpbmdTdG9yZS5oCkBAIC0zNiwxMyArMzYsMTAgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IENv
b3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZShmbG9hdCBzY2FsZSA9IDEpCiAgICAgICAgIDogVGV4
dHVyZU1hcHBlclRpbGUoV2ViQ29yZTo6RmxvYXRSZWN0KCkpCiAgICAgICAgICwgbV9zY2FsZShz
Y2FsZSkKLSAgICAgICAgLCBtX3JlcGFpbnRDb3VudCgwKQogICAgIHsKICAgICB9CiAKICAgICBp
bmxpbmUgZmxvYXQgc2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3NjYWxlOyB9Ci0gICAgaW5saW5l
IHZvaWQgaW5jcmVtZW50UmVwYWludENvdW50KCkgeyArK21fcmVwYWludENvdW50OyB9Ci0gICAg
aW5saW5lIGludCByZXBhaW50Q291bnQoKSBjb25zdCB7IHJldHVybiBtX3JlcGFpbnRDb3VudDsg
fQogICAgIHZvaWQgc3dhcEJ1ZmZlcnMoV2ViQ29yZTo6VGV4dHVyZU1hcHBlciopOwogICAgIHZv
aWQgc2V0QmFja0J1ZmZlcihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBidWZmZXIsIGNvbnN0IFdl
YkNvcmU6OkludFBvaW50Jik7CiAKQEAgLTUyLDcgKzQ5LDYgQEAgcHJpdmF0ZToKICAgICBXZWJD
b3JlOjpJbnRSZWN0IG1fdGlsZVJlY3Q7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgbV9zdXJmYWNl
T2Zmc2V0OwogICAgIGZsb2F0IG1fc2NhbGU7Ci0gICAgaW50IG1fcmVwYWludENvdW50OwogfTsK
IAogY2xhc3MgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUgOiBwdWJsaWMgV2ViQ29yZTo6VGV4dHVy
ZU1hcHBlckJhY2tpbmdTdG9yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZExheWVyVHJlZUhvc3RQcm94eS5jcHAKaW5kZXggYmFhOGY2NTIzZGViZmRlYmJjNGU1MjJiNDc1
ZTE0Y2MxOGZkMmViNS4uZWY1ZTQ1ZmE5YmMyMzcwMTQ1Y2NjZDFkY2Y4OGM2YjQwNThhYTlhMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5
LmNwcApAQCAtMjQyLDYgKzI0MiwxMSBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFBy
b3h5OjpkZXN0cm95Q2FudmFzKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCkKIH0KICNlbmRpZgogCit2
b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpzZXRSZXBhaW50Q291bnQoQ29vcmRp
bmF0ZWRMYXllcklEIGlkLCBpbnQgdmFsdWUpCit7CisgICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgm
TGF5ZXJUcmVlUmVuZGVyZXI6OnNldFJlcGFpbnRDb3VudCwgbV9yZW5kZXJlci5nZXQoKSwgaWQs
IHZhbHVlKSk7Cit9CisKIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OnB1cmdl
QmFja2luZ1N0b3JlcygpCiB7CiAgICAgbV9zdXJmYWNlcy5jbGVhcigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmgKaW5kZXggNzU5MWI4NDg1
ZDM5ODg2ZWQ3ZWQyY2QwNWQxMTYxM2ZlNjdmYWNkMy4uZjljYTE5MmMyYjA0MzIyNTlmODhjOWJi
NWVjZTNlNDVhM2M4YTY3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExh
eWVyVHJlZUhvc3RQcm94eS5oCkBAIC04NCw2ICs4NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN5
bmNDYW52YXMoQ29vcmRpbmF0ZWRMYXllcklELCB1aW50MzJfdCBmcm9udEJ1ZmZlcik7CiAgICAg
dm9pZCBkZXN0cm95Q2FudmFzKENvb3JkaW5hdGVkTGF5ZXJJRCk7CiAjZW5kaWYKKyAgICB2b2lk
IHNldFJlcGFpbnRDb3VudChDb29yZGluYXRlZExheWVySUQsIGludCB2YWx1ZSk7CiAgICAgdm9p
ZCBwdXJnZUJhY2tpbmdTdG9yZXMoKTsKICAgICBMYXllclRyZWVSZW5kZXJlciogbGF5ZXJUcmVl
UmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmVyLmdldCgpOyB9CiAgICAgdm9pZCBz
ZXRMYXllckFuaW1hdGlvbnMoQ29vcmRpbmF0ZWRMYXllcklELCBjb25zdCBXZWJDb3JlOjpHcmFw
aGljc0xheWVyQW5pbWF0aW9ucyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5tZXNzYWdlcy5pbgppbmRleCAxMzdkYWQ4MDc1
MDBmNTVlNTlkMjZjMjdjMWRlZGJhNDljNTUwOGEwLi4yNjhlZjFjZjk3MWY3ODhmM2RhN2MxOWNj
NGMxNzJiZjRmNjgzNmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5tZXNzYWdlcy5pbgpAQCAtNTUsNiArNTUsOCBAQCBt
ZXNzYWdlcyAtPiBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eSB7CiAgICAgRGVzdHJveUNh
bnZhcyh1aW50MzJfdCBpZCkKICNlbmRpZgogCisgICAgU2V0UmVwYWludENvdW50KHVpbnQzMl90
IGxheWVySUQsIGludCB2YWx1ZSkKKwogICAgIFNldEJhY2tncm91bmRDb2xvcihXZWJDb3JlOjpD
b2xvciBjb2xvcikKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3Bw
CmluZGV4IDZlOTczMDIxNjYyYjQwZDM2YTI4NGMzZmQxZDA0OWFiNjZhMjU5OTYuLjQzNGUxMzBi
NWNlNWRkYjVlYjk5YjJhYjJiZmE5ZjY5ODRiNTI5MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRy
ZWVSZW5kZXJlci5jcHAKQEAgLTI1NSw2ICsyNTUsMTIgQEAgdm9pZCBMYXllclRyZWVSZW5kZXJl
cjo6ZGVzdHJveUNhbnZhcyhDb29yZGluYXRlZExheWVySUQgaWQpCiB9CiAjZW5kaWYKIAordm9p
ZCBMYXllclRyZWVSZW5kZXJlcjo6c2V0UmVwYWludENvdW50KENvb3JkaW5hdGVkTGF5ZXJJRCBp
ZCwgaW50IHZhbHVlKQoreworICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyID0gbGF5ZXJCeUlEKGlk
KTsKKyAgICB0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKGxheWVyKS0+c2V0UmVwYWludENv
dW50KHZhbHVlKTsKK30KKwogdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6c2V0TGF5ZXJDaGlsZHJl
bihDb29yZGluYXRlZExheWVySUQgaWQsIGNvbnN0IFZlY3RvcjxDb29yZGluYXRlZExheWVySUQ+
JiBjaGlsZElEcykKIHsKICAgICBHcmFwaGljc0xheWVyKiBsYXllciA9IGxheWVyQnlJRChpZCk7
CkBAIC0zMzMsNiArMzM5LDggQEAgdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6c2V0TGF5ZXJTdGF0
ZShDb29yZGluYXRlZExheWVySUQgaWQsIGNvbnN0IENvb3JkaW5hdGVkTGEKICAgICBsYXllci0+
c2V0RHJhd3NDb250ZW50KGxheWVySW5mby5kcmF3c0NvbnRlbnQpOwogICAgIGxheWVyLT5zZXRD
b250ZW50c1Zpc2libGUobGF5ZXJJbmZvLmNvbnRlbnRzVmlzaWJsZSk7CiAgICAgdG9HcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcihsYXllciktPnNldEZpeGVkVG9WaWV3cG9ydChsYXllckluZm8u
Zml4ZWRUb1ZpZXdwb3J0KTsKKyAgICBsYXllci0+c2V0U2hvd0RlYnVnQm9yZGVyKGxheWVySW5m
by5zaG93RGVidWdCb3JkZXJzKTsKKyAgICBsYXllci0+c2V0U2hvd1JlcGFpbnRDb3VudGVyKGxh
eWVySW5mby5zaG93UmVwYWludENvdW50ZXIpOwogCiAgICAgaWYgKGxheWVySW5mby5maXhlZFRv
Vmlld3BvcnQpCiAgICAgICAgIG1fZml4ZWRMYXllcnMuYWRkKGlkLCBsYXllcik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRy
ZWVSZW5kZXJlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvTGF5ZXJUcmVlUmVuZGVyZXIuaAppbmRleCA1M2VjYmUzOTQ5ODE4OTlkMmFiYmUwZjIxZDQ0
NDM0NDIzOTM2NDg4Li4xYTk1OTdmZWIzMDRiNjgzYTY4NzM5NThmNWE0NDc1MDljZGM5NTI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9M
YXllclRyZWVSZW5kZXJlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGlu
YXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmgKQEAgLTc3LDYgKzc3LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgc3luY0NhbnZhcyhDb29yZGluYXRlZExheWVySUQsIHVpbnQzMl90IGZyb250
QnVmZmVyKTsKICAgICB2b2lkIGRlc3Ryb3lDYW52YXMoQ29vcmRpbmF0ZWRMYXllcklEKTsKICNl
bmRpZgorICAgIHZvaWQgc2V0UmVwYWludENvdW50KENvb3JkaW5hdGVkTGF5ZXJJRCwgaW50IHZh
bHVlKTsKIAogICAgIHZvaWQgZGV0YWNoKCk7CiAgICAgdm9pZCBhcHBlbmRVcGRhdGUoY29uc3Qg
RnVuY3Rpb248dm9pZCgpPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKaW5kZXggNWYyNjYyZWYwOTE4YjNhYTkyMTQw
YTQ4NDUyYTU1NTgyZjU3YmQzOS4uMjI4YjUxZGMxYWFmYWUyZjUxNTRiNWY3NzEwOGVlNWI0MDY2
MTQxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXIuY3BwCkBAIC0zNzEsNiArMzcxLDI2IEBAIHZvaWQgQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyOjpzZXRDb250ZW50c1RvU29saWRDb2xvcihjb25zdCBDb2xvciYgY29sb3Ip
CiAgICAgZGlkQ2hhbmdlTGF5ZXJTdGF0ZSgpOwogfQogCit2b2lkIENvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcjo6c2V0U2hvd0RlYnVnQm9yZGVyKGJvb2wgc2hvdykKK3sKKyAgICBpZiAoaXNTaG93
aW5nRGVidWdCb3JkZXIoKSA9PSBzaG93KQorICAgICAgICByZXR1cm47CisKKyAgICBHcmFwaGlj
c0xheWVyOjpzZXRTaG93RGVidWdCb3JkZXIoc2hvdyk7CisKKyAgICBkaWRDaGFuZ2VMYXllclN0
YXRlKCk7Cit9CisKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRTaG93UmVwYWlu
dENvdW50ZXIoYm9vbCBzaG93KQoreworICAgIGlmIChpc1Nob3dpbmdSZXBhaW50Q291bnRlcigp
ID09IHNob3cpCisgICAgICAgIHJldHVybjsKKworICAgIEdyYXBoaWNzTGF5ZXI6OnNldFNob3dS
ZXBhaW50Q291bnRlcihzaG93KTsKKworICAgIGRpZENoYW5nZUxheWVyU3RhdGUoKTsKK30KKwog
dm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzVG9JbWFnZShJbWFnZSog
aW1hZ2UpCiB7CiAgICAgTmF0aXZlSW1hZ2VQdHIgbmV3TmF0aXZlSW1hZ2VQdHIgPSBpbWFnZSA/
IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIDogMDsKQEAgLTUxOSw2ICs1Mzks
OCBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c3luY0ltYWdlQmFja2luZygpCiAg
ICAgICAgIH0KIAogICAgICAgICBtX2Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLT5tYXJrRGlydHko
KTsKKyAgICAgICAgaWYgKGlzU2hvd2luZ1JlcGFpbnRDb3VudGVyKCkpCisgICAgICAgICAgICBt
X2Nvb3JkaW5hdG9yLT5zZXRSZXBhaW50Q291bnQoaWQoKSwgaW5jcmVtZW50UmVwYWludENvdW50
KCkpOwogICAgIH0gZWxzZQogICAgICAgICByZWxlYXNlSW1hZ2VCYWNraW5nSWZOZWVkZWQoKTsK
IApAQCAtNTMyLDYgKzU1NCw4IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzeW5j
TGF5ZXJTdGF0ZSgpCiAgICAgICAgIHJldHVybjsKICAgICBtX3Nob3VsZFN5bmNMYXllclN0YXRl
ID0gZmFsc2U7CiAgICAgbV9sYXllckluZm8uZml4ZWRUb1ZpZXdwb3J0ID0gZml4ZWRUb1ZpZXdw
b3J0KCk7CisgICAgbV9sYXllckluZm8uc2hvd0RlYnVnQm9yZGVycyA9IGlzU2hvd2luZ0RlYnVn
Qm9yZGVyKCk7CisgICAgbV9sYXllckluZm8uc2hvd1JlcGFpbnRDb3VudGVyID0gaXNTaG93aW5n
UmVwYWludENvdW50ZXIoKTsKIAogICAgIG1fbGF5ZXJJbmZvLmJhY2tmYWNlVmlzaWJsZSA9IGJh
Y2tmYWNlVmlzaWJpbGl0eSgpOwogICAgIG1fbGF5ZXJJbmZvLmNoaWxkcmVuVHJhbnNmb3JtID0g
Y2hpbGRyZW5UcmFuc2Zvcm0oKTsKQEAgLTU3NSw2ICs1OTksOCBAQCB2b2lkIENvb3JkaW5hdGVk
R3JhcGhpY3NMYXllcjo6c3luY0NhbnZhcygpCiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCiAg
ICAgbV9jb29yZGluYXRvci0+c3luY0NhbnZhcyhtX2lkLCBtX2NhbnZhc1BsYXRmb3JtTGF5ZXIp
OwogI2VuZGlmCisgICAgaWYgKGlzU2hvd2luZ1JlcGFpbnRDb3VudGVyKCkpCisgICAgICAgIG1f
Y29vcmRpbmF0b3ItPnNldFJlcGFpbnRDb3VudChpZCgpLCBpbmNyZW1lbnRSZXBhaW50Q291bnQo
KSk7CiAgICAgbV9jYW52YXNOZWVkc0Rpc3BsYXkgPSBmYWxzZTsKIH0KIApAQCAtNjk4LDggKzcy
NCwxMCBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dGlsZWRCYWNraW5nU3RvcmVQ
YWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsCiAgICAgcGFpbnRHcmFwaGljc0xheWVyQ29u
dGVudHMoKmNvbnRleHQsIHJlY3QpOwogfQogCi12b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXll
cjo6dGlsZWRCYWNraW5nU3RvcmVQYWludEVuZChjb25zdCBWZWN0b3I8SW50UmVjdD4mIC8qIHVw
ZGF0ZWRSZWN0cyAqLykKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp0aWxlZEJhY2tp
bmdTdG9yZVBhaW50RW5kKGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgdXBkYXRlZFJlY3RzKQogewor
ICAgIGlmIChpc1Nob3dpbmdSZXBhaW50Q291bnRlcigpICYmICF1cGRhdGVkUmVjdHMuaXNFbXB0
eSgpKQorICAgICAgICBtX2Nvb3JkaW5hdG9yLT5zZXRSZXBhaW50Q291bnQoaWQoKSwgaW5jcmVt
ZW50UmVwYWludENvdW50KCkpOwogfQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6
dGlsZWRCYWNraW5nU3RvcmVIYXNQZW5kaW5nVGlsZUNyZWF0aW9uKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKaW5kZXggNmM0
MzU4NWM3MGM4ZTAzMDY1ZTRkY2FhMjdlNGYwZGEyZmEzNjk0Ni4uZTBlZDEyYmIyOWI1ODA2ODBl
ZjQzZDNiMGIxMWNkMGYyYWEyMmNmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKQEAgLTcxLDYgKzcxLDggQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95Q2FudmFzKENvb3JkaW5hdGVkTGF5ZXJJRCkgPSAw
OwogI2VuZGlmCiAKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UmVwYWludENvdW50KENvb3JkaW5hdGVk
TGF5ZXJJRCwgaW50KSA9IDA7CisKICAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJBbmltYXRpb25z
KENvb3JkaW5hdGVkTGF5ZXJJRCwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllckFuaW1hdGlv
bnMmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoTGF5ZXIoV2ViQ29yZTo6Q29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyKikgPSAwOwpAQCAtMTEyLDYgKzExNCw4IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNUb0ltYWdlKEltYWdlKikgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9Tb2xpZENvbG9yKGNvbnN0IENvbG9yJikgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFNob3dEZWJ1Z0JvcmRlcihib29sKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvd1JlcGFpbnRDb3VudGVyKGJvb2wpIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGREaXJlY3RseUNvbXBvc2l0ZUltYWdlKEltYWdlKikg
Y29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9DYW52YXMoUGxh
dGZvcm1MYXllciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRNYXNrTGF5ZXIoR3Jh
cGhpY3NMYXllciopIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggYmI5OTU1ZWQ4MGJkNDM1MzE0
MjFiZGQxNTRlZjhjMjFiNmM3YmZjYy4uY2E0NDU3YmIxMmM5OTI4MzcyODZkZjQ3OGMxMmY4OTlh
ZjEyNTJjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZExheWVyVHJlZUhvc3QuY3BwCkBAIC0zOTIsNiArMzkyLDExIEBAIHZvaWQgQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0OjpkZXN0cm95Q2FudmFzKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCkKIH0K
ICNlbmRpZgogCit2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0UmVwYWludENvdW50
KENvb3JkaW5hdGVkTGF5ZXJJRCBpZCwgaW50IHZhbHVlKQoreworICAgIG1fd2ViUGFnZS0+c2Vu
ZChNZXNzYWdlczo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OlNldFJlcGFpbnRDb3Vu
dChpZCwgdmFsdWUpKTsKK30KKwogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKIHZvaWQgQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0OjpzeW5jTGF5ZXJGaWx0ZXJzKENvb3JkaW5hdGVkTGF5ZXJJRCBp
ZCwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKaW5kZXggNDgxOGVk
OWYwMDBmOWI4NDhkZWFmNmEyNjMxYjllNzYyMDhhNmJmNy4uNjA1MjI5ODlkNjM0ZTliMmFkMzUx
MDg2NTE5MmQ2ZDJkYTI2YjQ2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKQEAgLTEwMSw2ICsxMDEsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHN5bmNDYW52YXMoQ29vcmRpbmF0ZWRMYXllcklELCBXZWJDb3Jl
OjpQbGF0Zm9ybUxheWVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3lDYW52
YXMoQ29vcmRpbmF0ZWRMYXllcklEKSBPVkVSUklERTsKICNlbmRpZgorICAgIHZpcnR1YWwgdm9p
ZCBzZXRSZXBhaW50Q291bnQoQ29vcmRpbmF0ZWRMYXllcklELCBpbnQpIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCBkZXRhY2hMYXllcihXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY0ZpeGVkTGF5ZXJzKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkVGlsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFRpbGUuY3BwCmluZGV4IDc5OGQyYjc1ZjI1MGRh
NjcyOWZmOWJjZTUwZTg4YzI5MTI5NDBiOGUuLmFjMGI1NjYyNmU4MWYxMGIxODc2MmI5OGYzNjU4
MDRmOGUzMjYxNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkVGlsZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRU
aWxlLmNwcApAQCAtOTcsOCArOTcsMTAgQEAgVmVjdG9yPEludFJlY3Q+IENvb3JkaW5hdGVkVGls
ZTo6dXBkYXRlQmFja0J1ZmZlcigpCiAgICAgfSBlbHNlCiAgICAgICAgIG1fY2xpZW50LT51cGRh
dGVUaWxlKG1fSUQsIHVwZGF0ZUluZm8sIG1fcmVjdCk7CiAKKyAgICBWZWN0b3I8SW50UmVjdD4g
dXBkYXRlZFJlY3RzOworICAgIHVwZGF0ZWRSZWN0cy5hcHBlbmQobV9kaXJ0eVJlY3QpOwogICAg
IG1fZGlydHlSZWN0ID0gSW50UmVjdCgpOwotICAgIHJldHVybiBWZWN0b3I8SW50UmVjdD4oKTsK
KyAgICByZXR1cm4gdXBkYXRlZFJlY3RzOwogfQogCiB2b2lkIENvb3JkaW5hdGVkVGlsZTo6c3dh
cEJhY2tCdWZmZXJUb0Zyb250KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAppbmRleCBhNTIyYTllMzZiMGRjOWExNjM3ZDdiZTRjMjllZDM3NjZkMzk2
OGFmLi45NDI5ZDBmM2FhMjMwODI0MGQxMGRkNTk3ODE3NmJiM2NiM2MxZjU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yMzM0LDggKzIz
MzQsMTggQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJl
bmNlc1N0b3JlJiBzdG9yZSkKICAgICBzZXR0aW5ncy0+c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0VuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjphY2Nl
bGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZEtleSgpKSAmJiBMYXllclRyZWVIb3N0OjpzdXBwb3J0
c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKSk7CiAgICAgc2V0dGluZ3MtPnNldEFjY2VsZXJhdGVk
RHJhd2luZ0VuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5
OjphY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkS2V5KCkpICYmIExheWVyVHJlZUhvc3Q6OnN1cHBv
cnRzQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpKTsKICAgICBzZXR0aW5ncy0+c2V0Q2FudmFzVXNl
c0FjY2VsZXJhdGVkRHJhd2luZyhzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5j
ZXNLZXk6OmNhbnZhc1VzZXNBY2NlbGVyYXRlZERyYXdpbmdLZXkoKSkgJiYgTGF5ZXJUcmVlSG9z
dDo6c3VwcG9ydHNBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCkpOworI2lmIFBMQVRGT1JNKFFUKQor
ICAgIGJvb2wgc2hvd0RlYnVnVmlzdWFscyA9IHFnZXRlbnYoIlFUX1dFQktJVF9TSE9XX0NPTVBP
U0lUSU5HX0RFQlVHX1ZJU1VBTFMiKSA9PSAiMSI7CisgICAgc2V0dGluZ3MtPnNldFNob3dEZWJ1
Z0JvcmRlcnMoc2hvd0RlYnVnVmlzdWFscyk7CisgICAgc2V0dGluZ3MtPnNldFNob3dSZXBhaW50
Q291bnRlcihzaG93RGVidWdWaXN1YWxzKTsKKyNlbGlmIFVTRShDQUlSTykKKyAgICBib29sIHNo
b3dEZWJ1Z1Zpc3VhbHMgPSBTdHJpbmcoZ2V0ZW52KCJXRUJLSVRfU0hPV19DT01QT1NJVElOR19E
RUJVR19WSVNVQUxTIikpID09ICIxIjsKKyAgICBzZXR0aW5ncy0+c2V0U2hvd0RlYnVnQm9yZGVy
cyhzaG93RGVidWdWaXN1YWxzKTsKKyAgICBzZXR0aW5ncy0+c2V0U2hvd1JlcGFpbnRDb3VudGVy
KHNob3dEZWJ1Z1Zpc3VhbHMpOworI2Vsc2UKICAgICBzZXR0aW5ncy0+c2V0U2hvd0RlYnVnQm9y
ZGVycyhzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmNvbXBvc2l0
aW5nQm9yZGVyc1Zpc2libGVLZXkoKSkpOwogICAgIHNldHRpbmdzLT5zZXRTaG93UmVwYWludENv
dW50ZXIoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojpjb21wb3Np
dGluZ1JlcGFpbnRDb3VudGVyc1Zpc2libGVLZXkoKSkpOworI2VuZGlmCiAgICAgc2V0dGluZ3Mt
PnNldFNob3dUaWxlZFNjcm9sbGluZ0luZGljYXRvcihzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXko
V2ViUHJlZmVyZW5jZXNLZXk6OnRpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yVmlzaWJsZUtleSgpKSk7
CiAgICAgc2V0dGluZ3MtPnNldEFnZ3Jlc3NpdmVUaWxlUmV0ZW50aW9uRW5hYmxlZChzdG9yZS5n
ZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmFnZ3Jlc3NpdmVUaWxlUmV0ZW50
aW9uRW5hYmxlZEtleSgpKSk7CiAgICAgc2V0dGluZ3MtPnNldENTU0N1c3RvbUZpbHRlckVuYWJs
ZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojpjc3NDdXN0b21G
aWx0ZXJFbmFibGVkS2V5KCkpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182317</attachid>
            <date>2013-01-11 03:35:01 -0800</date>
            <delta_ts>2013-01-14 16:26:10 -0800</delta_ts>
            <desc>Patch : [TexMap] Refactor code related to debug border and repaint count. [2/2] </desc>
            <filename>bug-105787-20130111203138.patch</filename>
            <type>text/plain</type>
            <size>62523</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MzkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTE5YWI3NzQwZjRiZGI0
MTZmNjI5YjBiN2VjZGJlNWRmMzE3Mjg2My4uOTJhZmM5Yzg3MjkxYzEwYjRmNTk2MWM2OWEzNzkz
MzVjMDQ5MDBlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc0IEBACisyMDEzLTAxLTExICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFtRdF1bRUZM
XVtHVEtdW1RleE1hcF0gUmVmYWN0b3IgY29kZSByZWxhdGVkIHRvIGRlYnVnIGJvcmRlciBhbmQg
cmVwYWludCBjb3VudC4gWzIvMl0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwNTc4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEN1cnJlbnRseSwgVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZSwgQ29vcmRp
bmF0ZWRCYWNraW5nU3RvcmUgYW5kCisgICAgICAgIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
IGhhdmUgZHVwbGljYXRlZCBjb2RlIHRvIGRyYXcgZGVidWcgYm9yZGVyIG9yIHJlcGFpbnQKKyAg
ICAgICAgY291bnQuIFRoaXMgcGF0Y2ggcmVmYWN0b3JzIHRoYXQgYWxsIHBsYXRmb3JtIGxheWVy
cyBkcmF3IGRlYnVnIGJvcmRlciBhbmQgcmVwYWludAorICAgICAgICBjb3VudCBpbiB0aGUgY29u
c2lzdGVudCB3YXkuCisKKyAgICAgICAgVGhlcmUgYXJlIHRocmVlIGJpZyBjaGFuZ2VzOgorICAg
ICAgICAxLiBUbyBlbmFibGUgb3IgZGlzYWJsZSB0aGlzIGZlYXR1cmUsIHdlIHVzZSBzZXRTaG93
RGVidWdCb3JkZXJzKGJvb2wpIGFuZAorICAgICAgICBzZXRTaG93UmVwYWludENvdW50ZXIoYm9v
bCkgaW4gU2V0dGluZ3MuCisgICAgICAgIEFzIHdlIGRpZCwgaWYgW1FUX11XRUJLSVRfU0hPV19D
T01QT1NJVElOR19ERUJVR19WSVNVQUxTIGlzIHNldCB0byAxLCBib3RoCisgICAgICAgIHNldHRp
bmdzIGFyZSBzZXQgdG8gdHJ1ZS4gSXQgbWVhbnMgdGhhdCBub3cgd2UgY2FuIHNlZSBkZWJ1Z2dp
bmcgdmlzdWFscyBpbiBXSzEKKyAgICAgICAgYXMgd2VsbCBhcyBXSzIuCisgICAgICAgIDIuIFRl
eHR1cmVNYXBwZXJMYXllciBoYXMgdGhlIGRlYnVnZ2luZyB2aXN1YWxzIGxpa2UgR3JhcGhpY3NM
YXllci4KKyAgICAgICAgV2hlbiBjYWxsaW5nIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyOjpw
YWludFRvVGV4dHVyZU1hcHBlcigpLCB3ZSBzZW5kIHRoZQorICAgICAgICBkZWJ1Z2dpbmcgdmlz
dWFscyB2aWEgVGV4dHVyZU1hcHBlclBhaW50UGFyYW1ldGVycyB0byB0aGUgcGxhdGZvcm0gbGF5
ZXIuIFRoZQorICAgICAgICBwbGF0Zm9ybSBsYXllciBkcmF3cyBkZWJ1ZyBib3JkZXIgYW5kIHJl
cGFpbnQgY291bnQgdXNpbmcgZHJhd0JvcmRlcigpIGFuZAorICAgICAgICBkcmF3UmVwYWludENv
dW50ZXIoKSBpbiBUZXh0dXJlTWFwcGVyLgorICAgICAgICAzLiBXZSB1c2UgdGhlIHNhbWUgY29s
b3IgYW5kIHdpZHRoIHRvIE1hYyBwb3J0IGJlY2F1c2Ugd2UgZ2V0IGJvdGggaW5mbyB1c2luZwor
ICAgICAgICBHcmFwaGljc0xheWVyOjp1cGRhdGVEZWJ1Z0luZGljYXRvcnMoKS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMuIFJlZmFjdG9yaW5nIG9ubHkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBhaW50VG9UZXh0dXJl
TWFwcGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXI6OnNldFNob3dEZWJ1Z0JvcmRlcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRTaG93UmVwYWludENv
dW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmZs
dXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnVwZGF0ZURlYnVnQm9yZGVyQW5kUmVwYWludENv
dW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRE
ZWJ1Z0JvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
cjo6dXBkYXRlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyOjpwcmVwYXJlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRSZXBhaW50Q291bnQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oOgorICAg
ICAgICAoR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmRlYnVnQm9yZGVyQ29sb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmRlYnVnQm9yZGVyV2lkdGgpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU6OnBh
aW50VG9UZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJUaWxl
ZEJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmg6CisgICAgICAgIChU
ZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVy
dEFCR1JUb0FSR0IpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
dXJlTWFwcGVyR0w6OmRyYXdSZXBhaW50Q291bnRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXI6OmRyYXdSZXBh
aW50Q291bnRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJJbWFnZUJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxh
eWVyOjpwYWludFNlbGYpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpm
bHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmg6CisgICAgICAgIChTdGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OlN0YXRlOjpTdGF0ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyLmg6CisgICAgICAgIChUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclBhaW50UGFyYW1ldGVy
cyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclBhaW50UGFy
YW1ldGVyczo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQYWludFBhcmFtZXRlcnMpOgorCiAy
MDEzLTAxLTEwICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCiAg
ICAgICAgIFtUZXhNYXBdIFJlZmFjdG9yIGNvZGUgcmVsYXRlZCB0byBkZWJ1ZyBib3JkZXIgYW5k
IHJlcGFpbnQgY291bnQuIFsxLzJdCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggYjNhNGQ3MWEyMWI0YTk0
NWVmNTc2Y2FlNDg0M2IxYmZkNDI2MjhlYy4uMWFmNjI1YzBiZjVkM2Y1YWEwZTRjZGQ4NmM0ZDM2
YzE2ODk5YjBjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEzLTAxLTEx
ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFtR
dF1bRUZMXVtHVEtdW1RleE1hcF0gUmVmYWN0b3IgY29kZSByZWxhdGVkIHRvIGRlYnVnIGJvcmRl
ciBhbmQgcmVwYWludCBjb3VudC4gWzIvMl0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwNTc4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIElmIFdFQktJVF9TSE9XX0NPTVBPU0lUSU5HX0RFQlVHX1ZJU1VB
TFMgaXMgc2V0IHRvIDEsIHNldAorICAgICAgICBzaG93RGVidWdCb3JkZXJzIGFuZCBzaG93UmVw
YWludENvdW50ZXIgaW4gU2V0dGluZ3MgdG8gdHJ1ZS4KKworICAgICAgICAqIGV3ay9ld2tfdmll
dy5jcHA6CisgICAgICAgIChfZXdrX3ZpZXdfcHJpdl9uZXcpOgorCiAyMDEzLTAxLTEwICBDaHJp
c3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CiAKICAgICAgICAgW0VG
TF0gQWRkIGdzdHJlYW1lciAxLjAuNSB0byBqaGJ1aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggNmQ4
YjAwMGY5NWZlODlkZTlmYjI0NjUwZDhlM2I0YzNhMTE0NmNkOS4uZjQ2NDAxYmRlMWNiOGYxZDky
N2ViMzNlNWIyY2Q2YjBjNTFkM2FlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBA
CisyMDEzLTAxLTExICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0Pgor
CisgICAgICAgIFtRdF1bRUZMXVtHVEtdW1RleE1hcF0gUmVmYWN0b3IgY29kZSByZWxhdGVkIHRv
IGRlYnVnIGJvcmRlciBhbmQgcmVwYWludCBjb3VudC4gWzIvMl0KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTc4NworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElmIFdFQktJVF9TSE9XX0NPTVBPU0lUSU5H
X0RFQlVHX1ZJU1VBTFMgaXMgc2V0IHRvIDEsIHNldAorICAgICAgICBzaG93RGVidWdCb3JkZXJz
IGFuZCBzaG93UmVwYWludENvdW50ZXIgaW4gU2V0dGluZ3MgdG8gdHJ1ZS4KKworICAgICAgICAq
IHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld191cGRh
dGVfc2V0dGluZ3MpOgorCiAyMDEzLTAxLTA4ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZW1vdmVkIHRoZSBuZWVkIGZvciB0aGUgUHJvcG9zZWREYXRhYmFzZSBt
ZWNoYW5pc20uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDU1ZWIxMzU0NGNmY2ZhZDJmZmQ1MjA3Y2JjN2Vh
Y2ExMmQ5YmE2YjAuLjQzNWEzNzRjZTMyNjNmNjMxZGEwYjkzNDNhY2VhZDFjYjZjNTJiNGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
cXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTMtMDEtMTEgIEh1YW5nIERvbmdzdW5n
ICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CisKKyAgICAgICAgW1F0XVtFRkxdW0dUS11bVGV4
TWFwXSBSZWZhY3RvciBjb2RlIHJlbGF0ZWQgdG8gZGVidWcgYm9yZGVyIGFuZCByZXBhaW50IGNv
dW50LiBbMi8yXQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTA1Nzg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgSWYgUVRfV0VCS0lUX1NIT1dfQ09NUE9TSVRJTkdfREVCVUdfVklTVUFMUyBpcyBzZXQgdG8g
MSwgc2V0CisgICAgICAgIHNob3dEZWJ1Z0JvcmRlcnMgYW5kIHNob3dSZXBhaW50Q291bnRlciBp
biBTZXR0aW5ncyB0byB0cnVlLgorCisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6Cisg
ICAgICAgIChRV2ViU2V0dGluZ3NQcml2YXRlOjphcHBseSk6CisKIDIwMTMtMDEtMDcgIEh1YW5n
IERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgW1RleE1hcF0g
UmVuYW1lIGN1cnJlbnRbVHJhbnNmb3JtfE9wYWNpdHl8RmlsdGVyc10gaW4gVGV4dHVyZU1hcHBl
ckxheWVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCmluZGV4IGE3ZTVhMWUxZGQ4NmZmYmIyZTcwNjFjYjI5MzNjYmMyZTBk
NGRkMmQuLjEwNzVlODIwNTdmYTFjNmVmZjQwMGYyMTQzOTVmM2I4MmI1Yzg4ZDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw1OSBAQAorMjAxMy0wMS0xMSAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxs
YUBjb21wYW55MTAwLm5ldD4KKworICAgICAgICBbUXRdW0VGTF1bR1RLXVtUZXhNYXBdIFJlZmFj
dG9yIGNvZGUgcmVsYXRlZCB0byBkZWJ1ZyBib3JkZXIgYW5kIHJlcGFpbnQgY291bnQuIFsyLzJd
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU3ODcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGVyZSBh
cmUgdGhyZWUgYmlnIGNoYW5nZXM6CisgICAgICAgIDEuIENvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ciBzZW5kcyBkZWJ1Z2dpbmcgdmlzdWFscyB0byBVSSBQcm9jZXNzLgorICAgICAgICAyLiBJZiBb
UVRfXVdFQktJVF9TSE9XX0NPTVBPU0lUSU5HX0RFQlVHX1ZJU1VBTFMgaXMgc2V0IHRvIDEsIHNl
dAorICAgICAgICBzaG93RGVidWdCb3JkZXJzIGFuZCBzaG93UmVwYWludENvdW50ZXIgaW4gU2V0
dGluZ3MgdG8gdHJ1ZS4KKyAgICAgICAgMy4gV2hlbiB1cGRhdGluZyBhIGJhY2tpbmcgc3RvcmUs
IGEgY29tcG9zaXRlZCBpbWFnZSBvciBhIHBsYXRmb3JtCisgICAgICAgIGNhbnZhcyBsYXllciwg
aW5jcmVtZW50IGEgcmVwYWludCBjb3VudC4KKworICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJJbmZvLmg6CisgICAgICAgIChXZWJLaXQ6OkNvb3Jk
aW5hdGVkTGF5ZXJJbmZvOjpDb29yZGluYXRlZExheWVySW5mbyk6CisgICAgICAgIChDb29yZGlu
YXRlZExheWVySW5mbyk6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRl
ZEJhY2tpbmdTdG9yZTo6dXBkYXRlVGlsZSk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVk
QmFja2luZ1N0b3JlOjpwYWludFRpbGVzVG9UZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5oOgorICAg
ICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGU6OkNvb3JkaW5hdGVkQmFj
a2luZ1N0b3JlVGlsZSk6CisgICAgICAgIChDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0UHJveHk6OnNldFJlcGFpbnRDb3VudCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFBy
b3h5Lmg6CisgICAgICAgIChDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
UHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5k
ZXJlcjo6c2V0UmVwYWludENvdW50KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJL
aXQ6OkxheWVyVHJlZVJlbmRlcmVyOjpzZXRMYXllclN0YXRlKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5oOgorICAgICAgICAoTGF5
ZXJUcmVlUmVuZGVyZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldFNob3dEZWJ1Z0JvcmRlcik6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6
c2V0U2hvd1JlcGFpbnRDb3VudGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllcjo6c3luY0ltYWdlQmFja2luZyk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OnN5bmNMYXllclN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
b3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0RGVidWdCb3JkZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzeW5jQ2FudmFzKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dGlsZWRCYWNraW5nU3RvcmVQYWludEVuZCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyLmg6CisgICAgICAgIChDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJD
bGllbnQpOgorICAgICAgICAoQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJl
ZUhvc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNl
dFJlcGFpbnRDb3VudCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkVGlsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkVGlsZTo6dXBkYXRlQmFj
a0J1ZmZlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyk6CisKIDIwMTMtMDEtMTAg
IEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgW1Rl
eE1hcF0gUmVmYWN0b3IgY29kZSByZWxhdGVkIHRvIGRlYnVnIGJvcmRlciBhbmQgcmVwYWludCBj
b3VudC4gWzEvMl0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwCmluZGV4IDdj
NDJkZjdmNmYzNzdhMWIzMTg2NWQ5ZGI3MGU1NjRhNjg5ZGNmOGIuLjVjNzgxODcyMDhlMjliOTg0
YjcxMjIzNTJmOGIxNzhhZmZmYjgyZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlLmNwcApAQCAtMTIzLDYgKzEyMywxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoY29uc3QgVGV4dHVyZU1hcHBlclBsYXRmb3JtTAogICAg
ICAgICBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+ZHJhd1N1cmZhY2VUb0NvbnRleHQoaW1h
Z2VTdXJmYWNlLmdldCgpLCBwYXJhbWV0ZXJzLnRhcmdldFJlY3QsIEludFJlY3QoMCwgMCwgd2lk
dGgsIGhlaWdodCksIGNvbnRleHQpOwogCiAgICAgICAgIGNvbnRleHQtPnJlc3RvcmUoKTsKKwor
ICAgICAgICBpZiAocGFyYW1ldGVycy5zaG93RGVidWdCb3JkZXJzKQorICAgICAgICAgICAgcGFy
YW1ldGVycy50ZXh0dXJlTWFwcGVyLT5kcmF3Qm9yZGVyKHBhcmFtZXRlcnMuZGVidWdCb3JkZXJD
b2xvciwgcGFyYW1ldGVycy5kZWJ1Z0JvcmRlcldpZHRoLCBwYXJhbWV0ZXJzLnRhcmdldFJlY3Qs
IHBhcmFtZXRlcnMudHJhbnNmb3JtKTsKKyAgICAgICAgaWYgKHBhcmFtZXRlcnMuc2hvd1JlcGFp
bnRDb3VudGVyKQorICAgICAgICAgICAgcGFyYW1ldGVycy50ZXh0dXJlTWFwcGVyLT5kcmF3UmVw
YWludENvdW50ZXIocGFyYW1ldGVycy5yZXBhaW50Q291bnQsIHBhcmFtZXRlcnMuZGVidWdCb3Jk
ZXJDb2xvciwgcGFyYW1ldGVycy50YXJnZXRSZWN0LmxvY2F0aW9uKCksIHBhcmFtZXRlcnMudHJh
bnNmb3JtKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTQzLDYgKzE0OCwxMSBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoY29uc3Qg
VGV4dHVyZU1hcHBlclBsYXRmb3JtTAogICAgIFRleHR1cmVNYXBwZXJHTDo6RmxhZ3MgZmxhZ3Mg
PSBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZEZsaXBUZXh0dXJlIHwgKG1fY29udGV4dC0+bV9hdHRy
cy5hbHBoYSA/IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkQmxlbmQgOiAwKTsKICAgICBJbnRTaXpl
IHRleHR1cmVTaXplKG1fY29udGV4dC0+bV9jdXJyZW50V2lkdGgsIG1fY29udGV4dC0+bV9jdXJy
ZW50SGVpZ2h0KTsKICAgICB0ZXhtYXBHTC0+ZHJhd1RleHR1cmUobV9jb250ZXh0LT5tX3RleHR1
cmUsIGZsYWdzLCB0ZXh0dXJlU2l6ZSwgcGFyYW1ldGVycy50YXJnZXRSZWN0LCBwYXJhbWV0ZXJz
LnRyYW5zZm9ybSwgcGFyYW1ldGVycy5vcGFjaXR5LCBwYXJhbWV0ZXJzLm1hc2spOworCisgICAg
aWYgKHBhcmFtZXRlcnMuc2hvd0RlYnVnQm9yZGVycykKKyAgICAgICAgcGFyYW1ldGVycy50ZXh0
dXJlTWFwcGVyLT5kcmF3Qm9yZGVyKHBhcmFtZXRlcnMuZGVidWdCb3JkZXJDb2xvciwgcGFyYW1l
dGVycy5kZWJ1Z0JvcmRlcldpZHRoLCBwYXJhbWV0ZXJzLnRhcmdldFJlY3QsIHBhcmFtZXRlcnMu
dHJhbnNmb3JtKTsKKyAgICBpZiAocGFyYW1ldGVycy5zaG93UmVwYWludENvdW50ZXIpCisgICAg
ICAgIHBhcmFtZXRlcnMudGV4dHVyZU1hcHBlci0+ZHJhd1JlcGFpbnRDb3VudGVyKHBhcmFtZXRl
cnMucmVwYWludENvdW50LCBwYXJhbWV0ZXJzLnRhcmdldFJlY3QubG9jYXRpb24oKSwgcGFyYW1l
dGVycy50cmFuc2Zvcm0pOwogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElOR19H
TCkKIH0KICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4
dDNEUXQuY3BwCmluZGV4IDllNzRmZjYyNGVhMWE2YTZhY2U5YmJhMTZiNjNlNWZjMDdlMzVmNmUu
LjIxZDQzODUwZDNlMzRkYzZiMGE4ZjA0NzVhMTRlNWViMmNhMjE5ZTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4
dDNEUXQuY3BwCkBAIC0yMzEsNiArMjMxLDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcihjb25zdCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MCiAK
ICAgICAgICAgVGV4dHVyZU1hcHBlckdMKiB0ZXhtYXBHTCA9IHN0YXRpY19jYXN0PFRleHR1cmVN
YXBwZXJHTCo+KHBhcmFtZXRlcnMudGV4dHVyZU1hcHBlcik7CiAgICAgICAgIG1fZ3JhcGhpY3NT
dXJmYWNlLT5wYWludFRvVGV4dHVyZU1hcHBlcih0ZXhtYXBHTCwgcGFyYW1ldGVycy50YXJnZXRS
ZWN0LCBwYXJhbWV0ZXJzLnRyYW5zZm9ybSwgcGFyYW1ldGVycy5vcGFjaXR5LCBwYXJhbWV0ZXJz
Lm1hc2spOworCisgICAgICAgIGlmIChwYXJhbWV0ZXJzLnNob3dEZWJ1Z0JvcmRlcnMpCisgICAg
ICAgICAgICBwYXJhbWV0ZXJzLnRleHR1cmVNYXBwZXItPmRyYXdCb3JkZXIocGFyYW1ldGVycy5k
ZWJ1Z0JvcmRlckNvbG9yLCBwYXJhbWV0ZXJzLmRlYnVnQm9yZGVyV2lkdGgsIHBhcmFtZXRlcnMu
dGFyZ2V0UmVjdCwgcGFyYW1ldGVycy50cmFuc2Zvcm0pOworICAgICAgICBpZiAocGFyYW1ldGVy
cy5zaG93UmVwYWludENvdW50ZXIpCisgICAgICAgICAgICBwYXJhbWV0ZXJzLnRleHR1cmVNYXBw
ZXItPmRyYXdSZXBhaW50Q291bnRlcihwYXJhbWV0ZXJzLnJlcGFpbnRDb3VudCwgcGFyYW1ldGVy
cy5kZWJ1Z0JvcmRlckNvbG9yLCBwYXJhbWV0ZXJzLnRhcmdldFJlY3QubG9jYXRpb24oKSwgcGFy
YW1ldGVycy50cmFuc2Zvcm0pOwogI2VuZGlmCiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0y
NzcsNiArMjgyLDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4
dHVyZU1hcHBlcihjb25zdCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MCiAKICAgICBwYWludGVyLT5k
cmF3SW1hZ2UocGFyYW1ldGVycy50YXJnZXRSZWN0LCBvZmZzY3JlZW5JbWFnZSk7CiAgICAgcGFp
bnRlci0+cmVzdG9yZSgpOworCisgICAgaWYgKHBhcmFtZXRlcnMuc2hvd0RlYnVnQm9yZGVycykK
KyAgICAgICAgcGFyYW1ldGVycy50ZXh0dXJlTWFwcGVyLT5kcmF3Qm9yZGVyKHBhcmFtZXRlcnMu
ZGVidWdCb3JkZXJDb2xvciwgcGFyYW1ldGVycy5kZWJ1Z0JvcmRlcldpZHRoLCBwYXJhbWV0ZXJz
LnRhcmdldFJlY3QsIHBhcmFtZXRlcnMudHJhbnNmb3JtKTsKKyAgICBpZiAocGFyYW1ldGVycy5z
aG93UmVwYWludENvdW50ZXIpCisgICAgICAgIHBhcmFtZXRlcnMudGV4dHVyZU1hcHBlci0+ZHJh
d1JlcGFpbnRDb3VudGVyKHBhcmFtZXRlcnMucmVwYWludENvdW50LCBwYXJhbWV0ZXJzLmRlYnVn
Qm9yZGVyQ29sb3IsIHBhcmFtZXRlcnMudGFyZ2V0UmVjdC5sb2NhdGlvbigpLCBwYXJhbWV0ZXJz
LnRyYW5zZm9ybSk7CiB9CiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAppbmRleCBlOTYyOTZi
YTUxZTRhYTcxMTVkYmEyMjZhYTU3ZmZlZjBlYzAxMjIyLi4wOGQyMzEwMmIzZTc1ZjE0MjVlMmU4
NjgyOTVhNzdhMmM4NDA1MDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlci5jcHAKQEAgLTI0LDE0ICsyNCw4IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckFuaW1h
dGlvbi5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJGYWN0b3J5LmgiCiAjaW5jbHVkZSAiSW1h
Z2VCdWZmZXIuaCIKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgPHd0Zi9D
dXJyZW50VGltZS5oPgogCi0jaWYgVVNFKENBSVJPKQotI2luY2x1ZGUgIkNhaXJvVXRpbGl0aWVz
LmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogUGFzc093blB0cjxHcmFwaGljc0xheWVyPiBHcmFwaGljc0xheWVyOjpjcmVh
dGUoR3JhcGhpY3NMYXllckZhY3RvcnkqIGZhY3RvcnksIEdyYXBoaWNzTGF5ZXJDbGllbnQqIGNs
aWVudCkKQEAgLTM4MywxNSArMzc3LDYwIEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXI6OnNldENvbnRlbnRzVG9NZWRpYShUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllcioKICAgICBt
X2NvbnRlbnRzTGF5ZXIgPSBtZWRpYTsKIH0KIAordm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlcjo6c2V0U2hvd0RlYnVnQm9yZGVyKGJvb2wgc2hvdykKK3sKKyAgICBpZiAoaXNTaG93aW5n
RGVidWdCb3JkZXIoKSA9PSBzaG93KQorICAgICAgICByZXR1cm47CisKKyAgICBHcmFwaGljc0xh
eWVyOjpzZXRTaG93RGVidWdCb3JkZXIoc2hvdyk7CisgICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVN
YXBwZXJMYXllcjo6RGVidWdWaXN1YWxzQ2hhbmdlKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlcjo6c2V0U2hvd1JlcGFpbnRDb3VudGVyKGJvb2wgc2hvdykKK3sKKyAgICBp
ZiAoaXNTaG93aW5nUmVwYWludENvdW50ZXIoKSA9PSBzaG93KQorICAgICAgICByZXR1cm47CisK
KyAgICBHcmFwaGljc0xheWVyOjpzZXRTaG93UmVwYWludENvdW50ZXIoc2hvdyk7CisgICAgbm90
aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6RGVidWdWaXN1YWxzQ2hhbmdlKTsKK30KKwog
LyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgpCiAqLwogdm9pZCBHcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpCiB7CisgICAg
aWYgKG1faGFzT3duQmFja2luZ1N0b3JlKQorICAgICAgICB1cGRhdGVEZWJ1Z0JvcmRlckFuZFJl
cGFpbnRDb3VudCgpOwogICAgIG1fbGF5ZXItPmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNM
YXllck9ubHkodGhpcyk7Ci0gICAgdXBkYXRlQmFja2luZ1N0b3JlKCk7CisgICAgaWYgKG1faGFz
T3duQmFja2luZ1N0b3JlKQorICAgICAgICB1cGRhdGVCYWNraW5nU3RvcmUoKTsKICAgICBkaWRG
bHVzaENvbXBvc2l0aW5nU3RhdGUoKTsKIH0KIAordm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlcjo6dXBkYXRlRGVidWdCb3JkZXJBbmRSZXBhaW50Q291bnQoKQoreworICAgIEFTU0VSVCht
X2hhc093bkJhY2tpbmdTdG9yZSk7CisKKyAgICBtX3VzaW5nVGlsZWRMYXllciA9IHNob3VsZEhh
dmVCYWNraW5nU3RvcmUoKTsKKyAgICB1cGRhdGVEZWJ1Z0luZGljYXRvcnMoKTsKKworICAgIC8v
IFdoZW4gdGhpcyBoYXMgaXRzIG93biBiYWNraW5nIHN0b3JlIChpLmUuIFF0IFdLMSksIHVwZGF0
ZSB0aGUgcmVwYWludCBjb3VudCBiZWZvcmUgY2FsbGluZyBUZXh0dXJlTWFwcGVyTGF5ZXI6OmZs
dXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKS4KKyAgICBib29sIG5lZWRzVG9S
ZXBhaW50ID0gc2hvdWxkSGF2ZUJhY2tpbmdTdG9yZSgpICYmIChtX25lZWRzRGlzcGxheSB8fCAh
bV9uZWVkc0Rpc3BsYXlSZWN0LmlzRW1wdHkoKSk7CisgICAgaWYgKGlzU2hvd2luZ1JlcGFpbnRD
b3VudGVyKCkgJiYgbmVlZHNUb1JlcGFpbnQpIHsKKyAgICAgICAgaW5jcmVtZW50UmVwYWludENv
dW50KCk7CisgICAgICAgIG1fY2hhbmdlTWFzayB8PSBUZXh0dXJlTWFwcGVyTGF5ZXI6OlJlcGFp
bnRDb3VudENoYW5nZTsKKyAgICB9Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXI6OnNldERlYnVnQm9yZGVyKGNvbnN0IENvbG9yJiBjb2xvciwgZmxvYXQgd2lkdGgpCit7Cisg
ICAgLy8gVGhlIGRlZmF1bHQgdmFsdWVzIGZvciBHcmFwaGljc0xheWVyIGRlYnVnIGJvcmRlcnMg
YXJlIGEgbGl0dGxlCisgICAgLy8gaGFyZCB0byBzZWUgKHNvbWUgbGVzcyB0aGFuIG9uZSBwaXhl
bCB3aWRlKSwgc28gd2UgZG91YmxlIHRoZWlyIHNpemUgaGVyZS4KKyAgICBtX2RlYnVnQm9yZGVy
Q29sb3IgPSBjb2xvcjsKKyAgICBtX2RlYnVnQm9yZGVyV2lkdGggPSB3aWR0aCAqIDI7CisgICAg
bV9jaGFuZ2VNYXNrIHw9IFRleHR1cmVNYXBwZXJMYXllcjo6RGVidWdWaXN1YWxzQ2hhbmdlOwor
fQorCiAvKiBccmVpbXAgKEdyYXBoaWNzTGF5ZXIuaCkKICovCiB2b2lkIEdyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGUoY29uc3QgRmxvYXRSZWN0JiByZWN0
KQpAQCAtNDE2LDkgKzQ1NSw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmRp
ZEZsdXNoQ29tcG9zaXRpbmdTdGF0ZSgpCiAKIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXI6OnVwZGF0ZUJhY2tpbmdTdG9yZSgpCiB7Ci0gICAgaWYgKCFtX2hhc093bkJhY2tpbmdTdG9y
ZSkKLSAgICAgICAgcmV0dXJuOwotCisgICAgQVNTRVJUKG1faGFzT3duQmFja2luZ1N0b3JlKTsK
ICAgICBwcmVwYXJlQmFja2luZ1N0b3JlKCk7CiAgICAgbV9sYXllci0+c2V0QmFja2luZ1N0b3Jl
KG1fYmFja2luZ1N0b3JlKTsKIH0KQEAgLTQ0NywzNSArNDg0LDcgQEAgdm9pZCBHcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlcjo6cHJlcGFyZUJhY2tpbmdTdG9yZSgpCiAgICAgQVNTRVJUKGR5bmFt
aWNfY2FzdDxUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUqPihtX2JhY2tpbmdTdG9yZS5n
ZXQoKSkpOwogI2VuZGlmCiAgICAgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlKiBiYWNr
aW5nU3RvcmUgPSBzdGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUqPiht
X2JhY2tpbmdTdG9yZS5nZXQoKSk7Ci0KLSAgICBpZiAoaXNTaG93aW5nUmVwYWludENvdW50ZXIo
KSkKLSAgICAgICAgaW5jcmVtZW50UmVwYWludENvdW50KCk7Ci0KLSAgICAvLyBQYWludCBpbnRv
IGFuIGludGVybWVkaWF0ZSBidWZmZXIgdG8gYXZvaWQgcGFpbnRpbmcgY29udGVudCBtb3JlIHRo
YW4gb25jZS4KLSAgICBib29sIHBhaW50T25jZSA9IHRydWU7Ci0gICAgY29uc3QgSW50U2l6ZSBt
YXhUZXh0dXJlU2l6ZSA9IHRleHR1cmVNYXBwZXItPm1heFRleHR1cmVTaXplKCk7Ci0gICAgLy8g
V2UgbmVlZCB0byBwYWludCBkaXJlY3RseSBpZiB0aGUgZGlydHkgcmVjdCBleGNlZWRzIG9uZSBv
ZiB0aGUgbWF4aW11bSBkaW1lbnNpb25zLgotICAgIGlmIChkaXJ0eVJlY3Qud2lkdGgoKSA+IG1h
eFRleHR1cmVTaXplLndpZHRoKCkgfHwgZGlydHlSZWN0LmhlaWdodCgpID4gbWF4VGV4dHVyZVNp
emUuaGVpZ2h0KCkpCi0gICAgICAgIHBhaW50T25jZSA9IGZhbHNlOwotCi0gICAgaWYgKHBhaW50
T25jZSkgewotICAgICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyID0gSW1hZ2VC
dWZmZXI6OmNyZWF0ZShkaXJ0eVJlY3Quc2l6ZSgpKTsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKLSAgICAgICAgY29udGV4dC0+c2V0
SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSh0ZXh0dXJlTWFwcGVyLT5pbWFnZUludGVycG9sYXRp
b25RdWFsaXR5KCkpOwotICAgICAgICBjb250ZXh0LT5zZXRUZXh0RHJhd2luZ01vZGUodGV4dHVy
ZU1hcHBlci0+dGV4dERyYXdpbmdNb2RlKCkpOwotICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUo
LWRpcnR5UmVjdC54KCksIC1kaXJ0eVJlY3QueSgpKTsKLSAgICAgICAgcGFpbnRHcmFwaGljc0xh
eWVyQ29udGVudHMoKmNvbnRleHQsIGRpcnR5UmVjdCk7Ci0KLSAgICAgICAgaWYgKGlzU2hvd2lu
Z1JlcGFpbnRDb3VudGVyKCkpCi0gICAgICAgICAgICBkcmF3UmVwYWludENvdW50ZXIoY29udGV4
dCk7Ci0KLSAgICAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGltYWdlQnVmZmVyLT5jb3B5SW1h
Z2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwotICAgICAgICBiYWNraW5nU3RvcmUtPnVwZGF0ZUNv
bnRlbnRzKHRleHR1cmVNYXBwZXIsIGltYWdlLmdldCgpLCBtX3NpemUsIGRpcnR5UmVjdCwgQml0
bWFwVGV4dHVyZTo6VXBkYXRlQ2FuTW9kaWZ5T3JpZ2luYWxJbWFnZURhdGEpOwotICAgIH0gZWxz
ZQotICAgICAgICBiYWNraW5nU3RvcmUtPnVwZGF0ZUNvbnRlbnRzKHRleHR1cmVNYXBwZXIsIHRo
aXMsIG1fc2l6ZSwgZGlydHlSZWN0LCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDYW5Nb2RpZnlPcmln
aW5hbEltYWdlRGF0YSk7Ci0KLSAgICBiYWNraW5nU3RvcmUtPnNldFNob3dEZWJ1Z0JvcmRlcnMo
aXNTaG93aW5nRGVidWdCb3JkZXIoKSk7Ci0gICAgYmFja2luZ1N0b3JlLT5zZXREZWJ1Z0JvcmRl
cihtX2RlYnVnQm9yZGVyQ29sb3IsIG1fZGVidWdCb3JkZXJXaWR0aCk7CisgICAgYmFja2luZ1N0
b3JlLT51cGRhdGVDb250ZW50cyh0ZXh0dXJlTWFwcGVyLCB0aGlzLCBtX3NpemUsIGRpcnR5UmVj
dCwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ2FuTW9kaWZ5T3JpZ2luYWxJbWFnZURhdGEpOwogCiAg
ICAgbV9uZWVkc0Rpc3BsYXkgPSBmYWxzZTsKICAgICBtX25lZWRzRGlzcGxheVJlY3QgPSBJbnRS
ZWN0KCk7CkBAIC00ODYsNDAgKzQ5NSw2IEBAIGJvb2wgR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXI6OnNob3VsZEhhdmVCYWNraW5nU3RvcmUoKSBjb25zdAogICAgIHJldHVybiBkcmF3c0NvbnRl
bnQoKSAmJiBjb250ZW50c0FyZVZpc2libGUoKSAmJiAhbV9zaXplLmlzRW1wdHkoKTsKIH0KIAot
I2lmIFVTRShDQUlSTykKLXZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmRyYXdSZXBh
aW50Q291bnRlcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCi17Ci0gICAgY2Fpcm9fdCogY3Ig
PSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKLSAgICBjYWlyb19zYXZlKGNyKTsK
LQotICAgIENTdHJpbmcgcmVwYWludENvdW50ID0gU3RyaW5nOjpmb3JtYXQoIiVpIiwgdGhpcy0+
cmVwYWludENvdW50KCkpLnV0ZjgoKTsKLSAgICBjYWlyb19zZWxlY3RfZm9udF9mYWNlKGNyLCAi
c2Fucy1zZXJpZiIsIENBSVJPX0ZPTlRfU0xBTlRfTk9STUFMLCBDQUlST19GT05UX1dFSUdIVF9C
T0xEKTsKLSAgICBjYWlyb19zZXRfZm9udF9zaXplKGNyLCAxOCk7Ci0KLSAgICBjYWlyb190ZXh0
X2V4dGVudHNfdCByZXBhaW50VGV4dEV4dGVudHM7Ci0gICAgY2Fpcm9fdGV4dF9leHRlbnRzKGNy
LCByZXBhaW50Q291bnQuZGF0YSgpLCAmcmVwYWludFRleHRFeHRlbnRzKTsKLQotICAgIHN0YXRp
YyBjb25zdCBpbnQgcmVwYWludENvdW50Qm9yZGVyV2lkdGggPSAxMDsKLSAgICBzZXRTb3VyY2VS
R0JBRnJvbUNvbG9yKGNyLCBpc1Nob3dpbmdEZWJ1Z0JvcmRlcigpID8gbV9kZWJ1Z0JvcmRlckNv
bG9yIDogQ29sb3IoMCwgMjU1LCAwLCAxMjcpKTsKLSAgICBjYWlyb19yZWN0YW5nbGUoY3IsIDAs
IDAsCi0gICAgICAgIHJlcGFpbnRUZXh0RXh0ZW50cy53aWR0aCArIChyZXBhaW50Q291bnRCb3Jk
ZXJXaWR0aCAqIDIpLAotICAgICAgICByZXBhaW50VGV4dEV4dGVudHMuaGVpZ2h0ICsgKHJlcGFp
bnRDb3VudEJvcmRlcldpZHRoICogMikpOwotICAgIGNhaXJvX2ZpbGwoY3IpOwotCi0gICAgY2Fp
cm9fc2V0X3NvdXJjZV9yZ2IoY3IsIDEsIDEsIDEpOwotICAgIGNhaXJvX21vdmVfdG8oY3IsIHJl
cGFpbnRDb3VudEJvcmRlcldpZHRoLCByZXBhaW50VGV4dEV4dGVudHMuaGVpZ2h0ICsgcmVwYWlu
dENvdW50Qm9yZGVyV2lkdGgpOwotICAgIGNhaXJvX3Nob3dfdGV4dChjciwgcmVwYWludENvdW50
LmRhdGEoKSk7Ci0KLSAgICBjYWlyb19yZXN0b3JlKGNyKTsKLX0KLSNlbHNlCi12b2lkIEdyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpkcmF3UmVwYWludENvdW50ZXIoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLSNlbmRpZgotCiBib29s
IEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjphZGRBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVW
YWx1ZUxpc3QmIHZhbHVlTGlzdCwgY29uc3QgSW50U2l6ZSYgYm94U2l6ZSwgY29uc3QgQW5pbWF0
aW9uKiBhbmltLCBjb25zdCBTdHJpbmcmIGtleWZyYW1lc05hbWUsIGRvdWJsZSB0aW1lT2Zmc2V0
KQogewogICAgIEFTU0VSVCgha2V5ZnJhbWVzTmFtZS5pc0VtcHR5KCkpOwpAQCAtNTYxLDE0ICs1
MzYsNiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjphbmltYXRpb25TdGFydGVk
VGltZXJGaXJlZChUaW1lcjxHcmFwaGljc0xheWVyVAogICAgIGNsaWVudCgpLT5ub3RpZnlBbmlt
YXRpb25TdGFydGVkKHRoaXMsIC8qIERPTSB0aW1lICovIFdURjo6Y3VycmVudFRpbWUoKSk7CiB9
CiAKLXZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldERlYnVnQm9yZGVyKGNvbnN0
IENvbG9yJiBjb2xvciwgZmxvYXQgd2lkdGgpCi17Ci0gICAgLy8gVGhlIGRlZmF1bHQgdmFsdWVz
IGZvciBHcmFwaGljc0xheWVyIGRlYnVnIGJvcmRlcnMgYXJlIGEgbGl0dGxlCi0gICAgLy8gaGFy
ZCB0byBzZWUgKHNvbWUgbGVzcyB0aGFuIG9uZSBwaXhlbCB3aWRlKSwgc28gd2UgZG91YmxlIHRo
ZWlyIHNpemUgaGVyZS4KLSAgICBtX2RlYnVnQm9yZGVyQ29sb3IgPSBjb2xvcjsKLSAgICBtX2Rl
YnVnQm9yZGVyV2lkdGggPSB3aWR0aCAqIDI7Ci19Ci0KICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMp
CiBib29sIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRGaWx0ZXJzKGNvbnN0IEZpbHRl
ck9wZXJhdGlvbnMmIGZpbHRlcnMpCiB7CkBAIC01NzcsNCArNTQ0LDEwIEBAIGJvb2wgR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXI6OnNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYg
ZmlsdGVycykKIH0KICNlbmRpZgogCit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpz
ZXRSZXBhaW50Q291bnQoaW50IHZhbHVlKQoreworICAgIG1fcmVwYWludENvdW50ID0gdmFsdWU7
CisgICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6UmVwYWludENvdW50Q2hhbmdl
KTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaAppbmRleCAx
MmMzMTk1OTFiNzI2YzdjOWYwYmEyYmRmZGY0Mzg0ZTdkZWExNzEzLi4zOTMzOGMzN2FiNzgyNWJi
YmFkMDA3OTI3N2M5OGRiM2FlZjVkNGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXIuaApAQCAtMjAsNyArMjAsNiBAQAogI2lmbmRlZiBHcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlcl9oCiAjZGVmaW5lIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyX2gKIAotI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKICNpbmNs
dWRlICJHcmFwaGljc0xheWVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKQEAgLTY2LDYg
KzY1LDkgQEAgcHVibGljOgogICAgIENvbG9yIHNvbGlkQ29sb3IoKSBjb25zdCB7IHJldHVybiBt
X3NvbGlkQ29sb3I7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNUb01lZGlhKFBsYXRm
b3JtTGF5ZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNUb0NhbnZhcyhQbGF0Zm9y
bUxheWVyKiBjYW52YXMpIHsgc2V0Q29udGVudHNUb01lZGlhKGNhbnZhcyk7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgc2V0U2hvd0RlYnVnQm9yZGVyKGJvb2wpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBzZXREZWJ1Z0JvcmRlcihjb25zdCBDb2xvciYsIGZsb2F0IHdpZHRoKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvd1JlcGFpbnRDb3VudGVyKGJvb2wpIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgdm9pZCBmbHVzaENvbXBvc2l0aW5nU3RhdGUoY29uc3QgRmxvYXRSZWN0Jik7
CiAgICAgdmlydHVhbCB2b2lkIGZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHko
KTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpOwpAQCAtODEs
OCArODMsNiBAQCBwdWJsaWM6CiAKICAgICBUZXh0dXJlTWFwcGVyTGF5ZXIqIGxheWVyKCkgY29u
c3QgeyByZXR1cm4gbV9sYXllci5nZXQoKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHNldERlYnVn
Qm9yZGVyKGNvbnN0IENvbG9yJiwgZmxvYXQgd2lkdGgpOwotCiAjaWYgRU5BQkxFKENTU19GSUxU
RVJTKQogICAgIHZpcnR1YWwgYm9vbCBzZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMm
KTsKICNlbmRpZgpAQCAtOTMsMTAgKzkzLDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEZpeGVk
VG9WaWV3cG9ydChib29sIGZpeGVkKSB7IG1fZml4ZWRUb1ZpZXdwb3J0ID0gZml4ZWQ7IH0KICAg
ICBib29sIGZpeGVkVG9WaWV3cG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fZml4ZWRUb1ZpZXdwb3J0
OyB9CiAKLSAgICB2b2lkIGRyYXdSZXBhaW50Q291bnRlcihHcmFwaGljc0NvbnRleHQqKTsKKyAg
ICBDb2xvciBkZWJ1Z0JvcmRlckNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z0JvcmRlckNv
bG9yOyB9CisgICAgZmxvYXQgZGVidWdCb3JkZXJXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVi
dWdCb3JkZXJXaWR0aDsgfQorCisgICAgdm9pZCBzZXRSZXBhaW50Q291bnQoaW50IHZhbHVlKTsK
KwogcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVkKCk7CiAgICAgdm9p
ZCBkaWRGbHVzaENvbXBvc2l0aW5nU3RhdGUoKTsKKyAgICB2b2lkIHVwZGF0ZURlYnVnQm9yZGVy
QW5kUmVwYWludENvdW50KCk7CiAgICAgdm9pZCB1cGRhdGVCYWNraW5nU3RvcmUoKTsKICAgICB2
b2lkIHByZXBhcmVCYWNraW5nU3RvcmUoKTsKICAgICBib29sIHNob3VsZEhhdmVCYWNraW5nU3Rv
cmUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oCmluZGV4IGM3MjQxYTZjOWE3MjJhNjQ1MmY3YzE4Yzlk
NjY5NzEyNzY2OTM2NmIuLjJhNTI3NmZkMmFmNzc4YTJkMWI0YmJkNWU5YTAxNDY5YzhhNmU2NTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXIuaApAQCAtMTMxLDcgKzEzMSw3IEBAIHB1YmxpYzoKICAgICB9OwogCiAg
ICAgdmlydHVhbCB2b2lkIGRyYXdCb3JkZXIoY29uc3QgQ29sb3ImLCBmbG9hdCBib3JkZXJXaWR0
aCwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgbW9kZWxWaWV3TWF0cml4ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBkcmF3UmVwYWludENvdW50ZXIoaW50IHZhbHVlLCBpbnQgcG9pbnRTaXplLCBj
b25zdCBGbG9hdFBvaW50JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01h
dHJpeCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJh
d1JlcGFpbnRDb3VudGVyKGludCB2YWx1ZSwgY29uc3QgQ29sb3ImLCBjb25zdCBGbG9hdFBvaW50
JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCA9IFRyYW5zZm9y
bWF0aW9uTWF0cml4KCkpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1RleHR1cmUoY29uc3Qg
Qml0bWFwVGV4dHVyZSYsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0LCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgZmxv
YXQgb3BhY2l0eSA9IDEuMGYsIGNvbnN0IEJpdG1hcFRleHR1cmUqIG1hc2tUZXh0dXJlID0gMCwg
dW5zaWduZWQgZXhwb3NlZEVkZ2VzID0gQWxsRWRnZXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZHJhd1NvbGlkQ29sb3IoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmLCBjb25zdCBDb2xvciYpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5n
U3RvcmUuY3BwCmluZGV4IGZjZTIwZTNiZDQ1ODIyYzdiY2JlMGE1MDMyOTVmM2I2NzQ5ZTU3Yzku
LjQ1NGIzMjEzMzFjYTRjMmU0MTI0OWE5NDY1ZTkxNzRmYjBhOTQ0YjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2lu
Z1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5jcHAKQEAgLTU0LDggKzU0LDE0IEBAIFBhc3NSZWZQ
dHI8Qml0bWFwVGV4dHVyZT4gVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU6OnRleHR1
cmUoKSBjb25zdAogCiB2b2lkIFRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlOjpwYWlu
dFRvVGV4dHVyZU1hcHBlcihjb25zdCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclBhaW50UGFy
YW1ldGVycyYgcGFyYW1ldGVycykKIHsKLSAgICBpZiAobV9ncmFwaGljc1N1cmZhY2UpCi0gICAg
ICAgIG1fZ3JhcGhpY3NTdXJmYWNlLT5wYWludFRvVGV4dHVyZU1hcHBlcihwYXJhbWV0ZXJzLnRl
eHR1cmVNYXBwZXIsIHBhcmFtZXRlcnMudGFyZ2V0UmVjdCwgcGFyYW1ldGVycy50cmFuc2Zvcm0s
IHBhcmFtZXRlcnMub3BhY2l0eSwgcGFyYW1ldGVycy5tYXNrKTsKKyAgICBpZiAoIW1fZ3JhcGhp
Y3NTdXJmYWNlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2dyYXBoaWNzU3VyZmFjZS0+cGFp
bnRUb1RleHR1cmVNYXBwZXIocGFyYW1ldGVycy50ZXh0dXJlTWFwcGVyLCBwYXJhbWV0ZXJzLnRh
cmdldFJlY3QsIHBhcmFtZXRlcnMudHJhbnNmb3JtLCBwYXJhbWV0ZXJzLm9wYWNpdHksIHBhcmFt
ZXRlcnMubWFzayk7CisgICAgaWYgKHBhcmFtZXRlcnMuc2hvd0RlYnVnQm9yZGVycykKKyAgICAg
ICAgcGFyYW1ldGVycy50ZXh0dXJlTWFwcGVyLT5kcmF3Qm9yZGVyKHBhcmFtZXRlcnMuZGVidWdC
b3JkZXJDb2xvciwgcGFyYW1ldGVycy5kZWJ1Z0JvcmRlcldpZHRoLCBwYXJhbWV0ZXJzLnRhcmdl
dFJlY3QsIHBhcmFtZXRlcnMudHJhbnNmb3JtKTsKKyAgICBpZiAocGFyYW1ldGVycy5zaG93UmVw
YWludENvdW50ZXIpCisgICAgICAgIHBhcmFtZXRlcnMudGV4dHVyZU1hcHBlci0+ZHJhd1JlcGFp
bnRDb3VudGVyKHBhcmFtZXRlcnMucmVwYWludENvdW50LCBwYXJhbWV0ZXJzLmRlYnVnQm9yZGVy
Q29sb3IsIHBhcmFtZXRlcnMudGFyZ2V0UmVjdC5sb2NhdGlvbigpLCBwYXJhbWV0ZXJzLnRyYW5z
Zm9ybSk7CiB9CiAjZW5kaWYKIApAQCAtMTA2LDcgKzExMiw2IEBAIHZvaWQgVGV4dHVyZU1hcHBl
clRpbGU6OnBhaW50KFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uCiB9CiAKIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6VGV4dHVyZU1hcHBl
clRpbGVkQmFja2luZ1N0b3JlKCkKLSAgICA6IG1fZHJhd3NEZWJ1Z0JvcmRlcnMoZmFsc2UpCiB7
CiB9CiAKQEAgLTE0MCw4ICsxNDUsMTAgQEAgdm9pZCBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5n
U3RvcmU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKGNvbnN0IFRleHR1cmVNYXBwZXJQbGEKICAgICBh
ZGp1c3RlZFRyYW5zZm9ybS5tdWx0aXBseShUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6cmVjdFRvUmVj
dChyZWN0KCksIHBhcmFtZXRlcnMudGFyZ2V0UmVjdCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV90aWxlcy5zaXplKCk7ICsraSkgewogICAgICAgICBtX3RpbGVzW2ldLnBhaW50KHBh
cmFtZXRlcnMudGV4dHVyZU1hcHBlciwgYWRqdXN0ZWRUcmFuc2Zvcm0sIHBhcmFtZXRlcnMub3Bh
Y2l0eSwgcGFyYW1ldGVycy5tYXNrLCBjYWxjdWxhdGVFeHBvc2VkVGlsZUVkZ2VzKHJlY3QoKSwg
bV90aWxlc1tpXS5yZWN0KCkpKTsKLSAgICAgICAgaWYgKG1fZHJhd3NEZWJ1Z0JvcmRlcnMpCi0g
ICAgICAgICAgICBwYXJhbWV0ZXJzLnRleHR1cmVNYXBwZXItPmRyYXdCb3JkZXIobV9kZWJ1Z0Jv
cmRlckNvbG9yLCBtX2RlYnVnQm9yZGVyV2lkdGgsIG1fdGlsZXNbaV0ucmVjdCgpLCBhZGp1c3Rl
ZFRyYW5zZm9ybSk7CisgICAgICAgIGlmIChwYXJhbWV0ZXJzLnNob3dEZWJ1Z0JvcmRlcnMpCisg
ICAgICAgICAgICBwYXJhbWV0ZXJzLnRleHR1cmVNYXBwZXItPmRyYXdCb3JkZXIocGFyYW1ldGVy
cy5kZWJ1Z0JvcmRlckNvbG9yLCBwYXJhbWV0ZXJzLmRlYnVnQm9yZGVyV2lkdGgsIG1fdGlsZXNb
aV0ucmVjdCgpLCBhZGp1c3RlZFRyYW5zZm9ybSk7CisgICAgICAgIGlmIChwYXJhbWV0ZXJzLnNo
b3dSZXBhaW50Q291bnRlcikKKyAgICAgICAgICAgIHBhcmFtZXRlcnMudGV4dHVyZU1hcHBlci0+
ZHJhd1JlcGFpbnRDb3VudGVyKHBhcmFtZXRlcnMucmVwYWludENvdW50LCBwYXJhbWV0ZXJzLmRl
YnVnQm9yZGVyQ29sb3IsIG1fdGlsZXNbaV0ucmVjdCgpLmxvY2F0aW9uKCksIGFkanVzdGVkVHJh
bnNmb3JtKTsKICAgICB9CiB9CiAKQEAgLTIzNCwxMSArMjQxLDUgQEAgUGFzc1JlZlB0cjxCaXRt
YXBUZXh0dXJlPiBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OnRleHR1cmUoKSBjb25z
dAogICAgIHJldHVybiBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+KCk7CiB9CiAKLXZvaWQgVGV4
dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpzZXREZWJ1Z0JvcmRlcihjb25zdCBDb2xvciYg
Y29sb3IsIGZsb2F0IHdpZHRoKQotewotICAgIG1fZGVidWdCb3JkZXJDb2xvciA9IGNvbG9yOwot
ICAgIG1fZGVidWdCb3JkZXJXaWR0aCA9IHdpZHRoOwotfQotCiB9CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
QmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oCmluZGV4IGVhYzg2NDU5NzI0ZWUwNTUxMmVjMDQz
ZmNlZWY2MzA0YmRmNWQ1YjEuLjE2YzdmZTU5ZjJmMzRmNmM1YjZmNzYxM2FmYTRlYThlM2JlYTMy
MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuaApAQCAtOTgsOCArOTgs
NiBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVyKiwgR3Jh
cGhpY3NMYXllciosIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEludFJlY3QmLCBCaXRtYXBUZXh0
dXJlOjpVcGRhdGVDb250ZW50c0ZsYWcpOwogCiAgICAgdm9pZCBzZXRDb250ZW50c1RvSW1hZ2Uo
SW1hZ2UqIGltYWdlKSB7IG1faW1hZ2UgPSBpbWFnZTsgfQotICAgIHZvaWQgc2V0U2hvd0RlYnVn
Qm9yZGVycyhib29sIGRyYXdzRGVidWdCb3JkZXJzKSB7IG1fZHJhd3NEZWJ1Z0JvcmRlcnMgPSBk
cmF3c0RlYnVnQm9yZGVyczsgfQotICAgIHZvaWQgc2V0RGVidWdCb3JkZXIoY29uc3QgQ29sb3Im
LCBmbG9hdCB3aWR0aCk7CiAKIHByaXZhdGU6CiAgICAgVGV4dHVyZU1hcHBlclRpbGVkQmFja2lu
Z1N0b3JlKCk7CkBAIC0xMTAsMTAgKzEwOCw2IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFRleHR1
cmVNYXBwZXJUaWxlPiBtX3RpbGVzOwogICAgIEZsb2F0U2l6ZSBtX3NpemU7CiAgICAgUmVmUHRy
PEltYWdlPiBtX2ltYWdlOwotCi0gICAgYm9vbCBtX2RyYXdzRGVidWdCb3JkZXJzOwotICAgIENv
bG9yIG1fZGVidWdCb3JkZXJDb2xvcjsKLSAgICBmbG9hdCBtX2RlYnVnQm9yZGVyV2lkdGg7CiB9
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCmluZGV4IDM0MDg0Zjk0MGM2ODM3NjQzODE4Zjgw
Y2VmMzdlMzVlZTAxOWE0ZjkuLmY3NzJhM2Y0ZjE4Zjg4MjQ5Y2U1NGY0YTVkNDZmN2Y4NjMxZDgy
YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCkBAIC0zMDksOCArMzA5LDE0IEBAIHZvaWQgVGV4
dHVyZU1hcHBlckdMOjpkcmF3Qm9yZGVyKGNvbnN0IENvbG9yJiBjb2xvciwgZmxvYXQgd2lkdGgs
IGNvbnN0IEZsb2F0UmVjCiAgICAgZHJhdyh0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIHBy
b2dyYW0uZ2V0KCksIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FX0xPT1AsIGNvbG9yLmhhc0FscGhh
KCkgPyBTaG91bGRCbGVuZCA6IDApOwogfQogCi12b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1Jl
cGFpbnRDb3VudGVyKGludCB2YWx1ZSwgaW50IHBvaW50U2l6ZSwgY29uc3QgRmxvYXRQb2ludCYg
dGFyZ2V0UG9pbnQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgp
CitzdGF0aWMgaW5saW5lIFJHQkEzMiBjb252ZXJ0QUJHUlRvQVJHQihSR0JBMzIgcGl4ZWwpCiB7
CisgICAgcmV0dXJuICgocGl4ZWwgPDwgMTYpICYgMHhmZjAwMDApIHwgKChwaXhlbCA+PiAxNikg
JiAweGZmKSB8IChwaXhlbCAmIDB4ZmYwMGZmMDApOworfQorCit2b2lkIFRleHR1cmVNYXBwZXJH
TDo6ZHJhd1JlcGFpbnRDb3VudGVyKGludCB2YWx1ZSwgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25z
dCBGbG9hdFBvaW50JiB0YXJnZXRQb2ludCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1v
ZGVsVmlld01hdHJpeCkKK3sKKyAgICBzdGF0aWMgY29uc3QgaW50IHBvaW50U2l6ZSA9IDg7CiAj
aWYgUExBVEZPUk0oUVQpCiAgICAgUVN0cmluZyBjb3VudGVyU3RyaW5nID0gUVN0cmluZzo6bnVt
YmVyKHZhbHVlKTsKIApAQCAtMzI3LDcgKzMzMyw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpk
cmF3UmVwYWludENvdW50ZXIoaW50IHZhbHVlLCBpbnQgcG9pbnRTaXplLCBjb25zdCBGbG9hdFBv
CiAKICAgICBRSW1hZ2UgaW1hZ2Uoc2l6ZSwgTmF0aXZlSW1hZ2VRdDo6ZGVmYXVsdEZvcm1hdEZv
ckFscGhhRW5hYmxlZEltYWdlcygpKTsKICAgICBRUGFpbnRlciBwYWludGVyKCZpbWFnZSk7Ci0g
ICAgcGFpbnRlci5maWxsUmVjdChzb3VyY2VSZWN0LCBRdDo6Ymx1ZSk7IC8vIFNpbmNlIHdlIHdv
bid0IHN3YXAgUitCIGZvciBzcGVlZCwgdGhpcyB3aWxsIHBhaW50IHJlZC4KKyAgICBwYWludGVy
LmZpbGxSZWN0KHNvdXJjZVJlY3QsIGNvbnZlcnRBQkdSVG9BUkdCKGNvbG9yLnJnYigpKSk7IC8v
IFNpbmNlIHdlIHdvbid0IHN3YXAgUitCIGZvciBzcGVlZCwgdGhpcyB3aWxsIHBhaW50IHRoZSBn
aXZlbiBjb2xvci4KICAgICBwYWludGVyLnNldEZvbnQoZm9udCk7CiAgICAgcGFpbnRlci5zZXRQ
ZW4oUXQ6OndoaXRlKTsKICAgICBwYWludGVyLmRyYXdUZXh0KDIsIGhlaWdodCAqIDAuODUsIGNv
dW50ZXJTdHJpbmcpOwpAQCAtMzQ2LDcgKzM1Miw5IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpk
cmF3UmVwYWludENvdW50ZXIoaW50IHZhbHVlLCBpbnQgcG9pbnRTaXplLCBjb25zdCBGbG9hdFBv
CiAgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVh
dGUoQ0FJUk9fRk9STUFUX0FSR0IzMiwgd2lkdGgsIGhlaWdodCk7CiAgICAgY2Fpcm9fdCogY3Ig
PSBjYWlyb19jcmVhdGUoc3VyZmFjZSk7CiAKLSAgICBjYWlyb19zZXRfc291cmNlX3JnYihjciwg
MCwgMCwgMSk7IC8vIFNpbmNlIHdlIHdvbid0IHN3YXAgUitCIGZvciBzcGVlZCwgdGhpcyB3aWxs
IHBhaW50IHJlZC4KKyAgICBmbG9hdCByLCBnLCBiLCBhOworICAgIGNvbG9yLmdldFJHQkEociwg
ZywgYiwgYSk7CisgICAgY2Fpcm9fc2V0X3NvdXJjZV9yZ2JhKGNyLCBiLCBnLCByLCBhKTsgLy8g
U2luY2Ugd2Ugd29uJ3Qgc3dhcCBSK0IgZm9yIHNwZWVkLCB0aGlzIHdpbGwgcGFpbnQgdGhlIGdp
dmVuIGNvbG9yLgogICAgIGNhaXJvX3JlY3RhbmdsZShjciwgMCwgMCwgd2lkdGgsIGhlaWdodCk7
CiAgICAgY2Fpcm9fZmlsbChjcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaAppbmRleCBhYTEzMzEyZmFh
ZmNhMzFmZGYxZDFjNDE0ZDM1YzI3Y2FjODAyY2EyLi5kZDBkYzMzMWQ4NjI5Y2JlOThkYzNkZGYy
MzIyZTVmYTg3YzRkZDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oCkBAIC01Miw3ICs1Miw3IEBAIHB1
YmxpYzoKIAogICAgIC8vIFRleHR1cmVNYXBwZXIgaW1wbGVtZW50YXRpb24KICAgICB2aXJ0dWFs
IHZvaWQgZHJhd0JvcmRlcihjb25zdCBDb2xvciYsIGZsb2F0IGJvcmRlcldpZHRoLCBjb25zdCBG
bG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZp
ZXdNYXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKSBPVkVSUklERTsKLSAgICB2aXJ0dWFs
IHZvaWQgZHJhd1JlcGFpbnRDb3VudGVyKGludCB2YWx1ZSwgaW50IHBvaW50U2l6ZSwgY29uc3Qg
RmxvYXRQb2ludCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgg
PSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJh
d1JlcGFpbnRDb3VudGVyKGludCB2YWx1ZSwgY29uc3QgQ29sb3ImLCBjb25zdCBGbG9hdFBvaW50
JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCA9IFRyYW5zZm9y
bWF0aW9uTWF0cml4KCkpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3VGV4dHVyZShj
b25zdCBCaXRtYXBUZXh0dXJlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5LCBjb25zdCBCaXRtYXBUZXh0dXJlKiBtYXNrVGV4dHVy
ZSwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZHJh
d1RleHR1cmUoUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlLCBGbGFncywgY29uc3QgSW50U2l6ZSYg
dGV4dHVyZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFw
VGV4dHVyZSogbWFza1RleHR1cmUsIHVuc2lnbmVkIGV4cG9zZWRFZGdlcyA9IEFsbEVkZ2VzKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZHJhd1NvbGlkQ29sb3IoY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBDb2xvciYpIE9WRVJSSURFOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJ
bWFnZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcAppbmRleCA5MjkwNTNiMTJiNzQwMjU4NGM1NDg3
YTM4YWI4MGZjZGIxYTExMGI4Li5lMjM2NjBmYmVmZjkzYTM1ZGMzMDE5Mjc4ZmRhMDYwNTRmYzY1
ZDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcApAQCAtMjYsNiAr
MjYsMTIgQEAKICNpbmNsdWRlICJOYXRpdmVJbWFnZVF0LmgiCiAjZW5kaWYKIAorI2lmIFVTRShD
QUlSTykKKyNpbmNsdWRlICJDYWlyb1V0aWxpdGllcy5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KKyNlbHNlCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNlbmRpZgogCiAj
aWYgVVNFKFRFWFRVUkVfTUFQUEVSKQogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTY0LDYgKzE3
MCwzOCBAQCB2b2lkIFRleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlcjo6ZHJhd1NvbGlkQ29sb3IoY29u
c3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBUcmFucwogICAgIGNvbnRleHQtPnJlc3RvcmUoKTsK
IH0KIAorI2lmIFVTRShDQUlSTykKK3ZvaWQgVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyOjpkcmF3
UmVwYWludENvdW50ZXIoaW50IHZhbHVlLCBjb25zdCBDb2xvciYgY29sb3IsIGNvbnN0IEZsb2F0
UG9pbnQmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4KQorewor
ICAgIHN0YXRpYyBjb25zdCBpbnQgcG9pbnRTaXplID0gODsKKyAgICBHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQgPSBjdXJyZW50Q29udGV4dCgpOworICAgIGNhaXJvX3QqIGNyID0gY29udGV4dC0+
cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CisgICAgY2Fpcm9fc2F2ZShjcik7CisKKyAgICBDU3Ry
aW5nIGNvdW50ZXJTdHJpbmcgPSBTdHJpbmc6Om51bWJlcih2YWx1ZSkuYXNjaWkoKTsKKyAgICAv
LyBjYWlyb190ZXh0X2V4dGVudHMoKSByZXF1aXJlcyBhIGNhaXJvX3QsIHNvIGRpbWVuc2lvbnMg
bmVlZCB0byBiZSBndWVzc3RpbWF0ZWQuCisgICAgaW50IHdpZHRoID0gY291bnRlclN0cmluZy5s
ZW5ndGgoKSAqIHBvaW50U2l6ZSAqIDEuMjsKKyAgICBpbnQgaGVpZ2h0ID0gcG9pbnRTaXplICog
MS41OworCisgICAgc2V0U291cmNlUkdCQUZyb21Db2xvcihjciwgY29sb3IpOworICAgIGNhaXJv
X3JlY3RhbmdsZShjciwgMCwgMCwgd2lkdGgsIGhlaWdodCk7CisgICAgY2Fpcm9fZmlsbChjcik7
CisKKyAgICBjYWlyb19zZWxlY3RfZm9udF9mYWNlKGNyLCAiTW9ub3NwYWNlIiwgQ0FJUk9fRk9O
VF9TTEFOVF9OT1JNQUwsIENBSVJPX0ZPTlRfV0VJR0hUX0JPTEQpOworICAgIGNhaXJvX3NldF9m
b250X3NpemUoY3IsIHBvaW50U2l6ZSk7CisgICAgY2Fpcm9fc2V0X3NvdXJjZV9yZ2IoY3IsIDEs
IDEsIDEpOworICAgIGNhaXJvX21vdmVfdG8oY3IsIDIsIHBvaW50U2l6ZSk7CisgICAgY2Fpcm9f
c2hvd190ZXh0KGNyLCBjb3VudGVyU3RyaW5nLmRhdGEoKSk7CisKKyAgICBjYWlyb19yZXN0b3Jl
KGNyKTsKK307CisjZWxzZQordm9pZCBUZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXI6OmRyYXdSZXBh
aW50Q291bnRlcihpbnQgLyogdmFsdWUgKi8sIGNvbnN0IENvbG9yJiwgY29uc3QgRmxvYXRQb2lu
dCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfTsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogUGFzc1JlZlB0cjxCaXRt
YXBUZXh0dXJlPiBCaXRtYXBUZXh0dXJlSW1hZ2VCdWZmZXI6OmFwcGx5RmlsdGVycyhUZXh0dXJl
TWFwcGVyKiwgY29uc3QgQml0bWFwVGV4dHVyZSYgY29udGVudFRleHR1cmUsIGNvbnN0IEZpbHRl
ck9wZXJhdGlvbnMmIGZpbHRlcnMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVy
LmgKaW5kZXggOWRlNmQ0Y2JkNWViMTdlOTM0ODgwMThhNjJhNzEzMWQ4OTczODRlYi4uMzY3N2Ez
ZmUwMzNjNTA4ZDAwY2VmOTg2MzRhYzk0M2UzNmJkNzJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVySW1hZ2VCdWZmZXIuaApAQCAtNTcsMTAgKzU3LDcgQEAgcHVibGljOgogICAgIHsKICAgICAg
ICAgVU5VU0VEX1BBUkFNKG1vZGVsVmlld01hdHJpeCk7CiAgICAgfTsKLSAgICB2aXJ0dWFsIHZv
aWQgZHJhd1JlcGFpbnRDb3VudGVyKGludCAvKiB2YWx1ZSAqLywgaW50IC8qIHBvaW50U2l6ZSAq
LywgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZp
ZXdNYXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKSBPVkVSUklERQotICAgIHsKLSAgICAg
ICAgVU5VU0VEX1BBUkFNKG1vZGVsVmlld01hdHJpeCk7Ci0gICAgfTsKKyAgICB2aXJ0dWFsIHZv
aWQgZHJhd1JlcGFpbnRDb3VudGVyKGludCB2YWx1ZSwgY29uc3QgQ29sb3ImLCBjb25zdCBGbG9h
dFBvaW50JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCA9IFRy
YW5zZm9ybWF0aW9uTWF0cml4KCkpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3VGV4
dHVyZShjb25zdCBCaXRtYXBUZXh0dXJlJiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEJpdG1hcFRl
eHR1cmUqIG1hc2tUZXh0dXJlLCB1bnNpZ25lZCBleHBvc2VkRWRnZXMpIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCBkcmF3U29saWRDb2xvcihjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IENvbG9yJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIGJlZ2luQ2xpcChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IEZsb2F0UmVj
dCYpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcAppbmRleCBmMjUxZmEyNjA5
OGI5MWZmZGVhNzcwYTlhYWUxNzYzODczNDEwYzJiLi43ZTM0NWJmMDg2NWUxMTBkN2U0NmFjN2Vj
Mzk2ZDZlNDY4YzQzNWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcApAQCAtMTIwLDYg
KzEyMCwxMSBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxmKGNvbnN0IFRleHR1
cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlvbnMpCiAgICAgcGFyYW1ldGVycy50cmFuc2Zvcm0g
PSB0cmFuc2Zvcm07CiAgICAgcGFyYW1ldGVycy5vcGFjaXR5ID0gb3B0aW9ucy5vcGFjaXR5Owog
ICAgIHBhcmFtZXRlcnMubWFzayA9IG9wdGlvbnMubWFzay5nZXQoKTsKKyAgICBwYXJhbWV0ZXJz
LnNob3dEZWJ1Z0JvcmRlcnMgPSBtX3N0YXRlLnNob3dEZWJ1Z0JvcmRlcnM7CisgICAgcGFyYW1l
dGVycy5kZWJ1Z0JvcmRlckNvbG9yID0gbV9zdGF0ZS5kZWJ1Z0JvcmRlckNvbG9yOworICAgIHBh
cmFtZXRlcnMuZGVidWdCb3JkZXJXaWR0aCA9IG1fc3RhdGUuZGVidWdCb3JkZXJXaWR0aDsKKyAg
ICBwYXJhbWV0ZXJzLnNob3dSZXBhaW50Q291bnRlciA9IG1fc3RhdGUuc2hvd1JlcGFpbnRDb3Vu
dGVyOworICAgIHBhcmFtZXRlcnMucmVwYWludENvdW50ID0gbV9zdGF0ZS5yZXBhaW50Q291bnQ7
CiAKICAgICBpZiAobV9zdGF0ZS5zb2xpZENvbG9yLmlzVmFsaWQoKSAmJiAhbV9zdGF0ZS5jb250
ZW50c1JlY3QuaXNFbXB0eSgpKSB7CiAgICAgICAgIGlmICghbV9zdGF0ZS5zb2xpZENvbG9yLmFs
cGhhKCkpCkBAIC0xMzEsNiArMTM2LDExIEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpwYWlu
dFNlbGYoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucykKICAgICAgICAg
ZmxvYXQgZWZmZWN0aXZlQWxwaGEgPSBhbHBoYSAqIHBhcmFtZXRlcnMub3BhY2l0eTsKICAgICAg
ICAgQ29sb3IgY29sb3IoY29sb3JXaXRoT3ZlcnJpZGVBbHBoYShyZ2JhLCBlZmZlY3RpdmVBbHBo
YSkpOwogICAgICAgICBwYXJhbWV0ZXJzLnRleHR1cmVNYXBwZXItPmRyYXdTb2xpZENvbG9yKG1f
c3RhdGUuY29udGVudHNSZWN0LCBwYXJhbWV0ZXJzLnRyYW5zZm9ybSwgY29sb3IpOworCisgICAg
ICAgIGlmIChwYXJhbWV0ZXJzLnNob3dEZWJ1Z0JvcmRlcnMpCisgICAgICAgICAgICBwYXJhbWV0
ZXJzLnRleHR1cmVNYXBwZXItPmRyYXdCb3JkZXIocGFyYW1ldGVycy5kZWJ1Z0JvcmRlckNvbG9y
LCBwYXJhbWV0ZXJzLmRlYnVnQm9yZGVyV2lkdGgsIGxheWVyUmVjdCgpLCBwYXJhbWV0ZXJzLnRy
YW5zZm9ybSk7CisgICAgICAgIGlmIChwYXJhbWV0ZXJzLnNob3dSZXBhaW50Q291bnRlcikKKyAg
ICAgICAgICAgIHBhcmFtZXRlcnMudGV4dHVyZU1hcHBlci0+ZHJhd1JlcGFpbnRDb3VudGVyKHBh
cmFtZXRlcnMucmVwYWludENvdW50LCBwYXJhbWV0ZXJzLmRlYnVnQm9yZGVyQ29sb3IsIGxheWVy
UmVjdCgpLmxvY2F0aW9uKCksIHBhcmFtZXRlcnMudHJhbnNmb3JtKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtMzg3LDggKzM5Nyw2IEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpm
bHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KEdyYXBoaWNzTGF5ZXJUZXh0CiAg
ICAgaWYgKGNoYW5nZU1hc2sgPT0gTm9DaGFuZ2VzICYmIGdyYXBoaWNzTGF5ZXItPm1fYW5pbWF0
aW9ucy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdyYXBoaWNzTGF5ZXItPnVw
ZGF0ZURlYnVnSW5kaWNhdG9ycygpOwotCiAgICAgaWYgKGNoYW5nZU1hc2sgJiBDaGlsZHJlbkNo
YW5nZSkKICAgICAgICAgc2V0Q2hpbGRyZW4oZ3JhcGhpY3NMYXllci0+Y2hpbGRyZW4oKSk7CiAK
QEAgLTQwNSw2ICs0MTMsOSBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6Zmx1c2hDb21wb3Np
dGluZ1N0YXRlRm9yVGhpc0xheWVyT25seShHcmFwaGljc0xheWVyVGV4dAogICAgIGlmIChjaGFu
Z2VNYXNrICYgQW5pbWF0aW9uQ2hhbmdlKQogICAgICAgICBtX2FuaW1hdGlvbnMgPSBncmFwaGlj
c0xheWVyLT5tX2FuaW1hdGlvbnM7CiAKKyAgICBpZiAoY2hhbmdlTWFzayAmIFJlcGFpbnRDb3Vu
dENoYW5nZSkKKyAgICAgICAgbV9zdGF0ZS5yZXBhaW50Q291bnQgPSBncmFwaGljc0xheWVyLT5y
ZXBhaW50Q291bnQoKTsKKwogICAgIG1fc3RhdGUubWFza0xheWVyID0gdG9UZXh0dXJlTWFwcGVy
TGF5ZXIoZ3JhcGhpY3NMYXllci0+bWFza0xheWVyKCkpOwogICAgIG1fc3RhdGUucmVwbGljYUxh
eWVyID0gdG9UZXh0dXJlTWFwcGVyTGF5ZXIoZ3JhcGhpY3NMYXllci0+cmVwbGljYUxheWVyKCkp
OwogICAgIG1fc3RhdGUucG9zID0gZ3JhcGhpY3NMYXllci0+cG9zaXRpb24oKTsKQEAgLTQyNyw2
ICs0MzgsMTEgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0
ZUZvclRoaXNMYXllck9ubHkoR3JhcGhpY3NMYXllclRleHQKICNlbmRpZgogICAgIG1fZml4ZWRU
b1ZpZXdwb3J0ID0gZ3JhcGhpY3NMYXllci0+Zml4ZWRUb1ZpZXdwb3J0KCk7CiAKKyAgICBtX3N0
YXRlLnNob3dEZWJ1Z0JvcmRlcnMgPSBncmFwaGljc0xheWVyLT5pc1Nob3dpbmdEZWJ1Z0JvcmRl
cigpOworICAgIG1fc3RhdGUuZGVidWdCb3JkZXJDb2xvciA9IHRvR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXIoZ3JhcGhpY3NMYXllciktPmRlYnVnQm9yZGVyQ29sb3IoKTsKKyAgICBtX3N0YXRl
LmRlYnVnQm9yZGVyV2lkdGggPSB0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKGdyYXBoaWNz
TGF5ZXIpLT5kZWJ1Z0JvcmRlcldpZHRoKCk7CisgICAgbV9zdGF0ZS5zaG93UmVwYWludENvdW50
ZXIgPSBncmFwaGljc0xheWVyLT5pc1Nob3dpbmdSZXBhaW50Q291bnRlcigpOworCiAgICAgbV9j
b250ZW50c0xheWVyID0gZ3JhcGhpY3NMYXllci0+cGxhdGZvcm1MYXllcigpOwogCiAgICAgbV9j
dXJyZW50VHJhbnNmb3JtLnNldFBvc2l0aW9uKGFkanVzdGVkUG9zaXRpb24oKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckxheWVyLmgKaW5kZXggZjQxZTUyYTk3YzRiMzI4YzQ0Y2Y2NTBhZWUzNGNkMzAwYTQ2
NTM5YS4uNTc1YmIyN2ViN2E4NzRjMTg0YjU4MWVkMmJkNDM1ZDEwMTVhODNiMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJM
YXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyTGF5ZXIuaApAQCAtNzEsNyArNzEsMTAgQEAgcHVibGljOgogCiAgICAgICAgIFJl
cGxpY2FMYXllckNoYW5nZSA9ICAgICAgICAoMUwgPDwgMjEpLAogICAgICAgICBBbmltYXRpb25D
aGFuZ2UgPSAgICAgICAgICAgKDFMIDw8IDIyKSwKLSAgICAgICAgRmlsdGVyQ2hhbmdlID0gICAg
ICAgICAgICAgICgxTCA8PCAyMykKKyAgICAgICAgRmlsdGVyQ2hhbmdlID0gICAgICAgICAgICAg
ICgxTCA8PCAyMyksCisKKyAgICAgICAgRGVidWdWaXN1YWxzQ2hhbmdlID0gICAgICAgICgxTCA8
PCAyNCksCisgICAgICAgIFJlcGFpbnRDb3VudENoYW5nZSA9ICAgICAgICAoMUwgPDwgMjUpCiAg
ICAgfTsKIAogICAgIFRleHR1cmVNYXBwZXJMYXllcigpCkBAIC0xNzIsNiArMTc1LDkgQEAgcHJp
dmF0ZToKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAgICAgICAgIEZpbHRlck9wZXJhdGlvbnMg
ZmlsdGVyczsKICNlbmRpZgorICAgICAgICBDb2xvciBkZWJ1Z0JvcmRlckNvbG9yOworICAgICAg
ICBmbG9hdCBkZWJ1Z0JvcmRlcldpZHRoOworICAgICAgICBpbnQgcmVwYWludENvdW50OwogCiAg
ICAgICAgIGJvb2wgcHJlc2VydmVzM0QgOiAxOwogICAgICAgICBib29sIG1hc2tzVG9Cb3VuZHMg
OiAxOwpAQCAtMTgwLDExICsxODYsMTUgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBjb250ZW50
c09wYXF1ZSA6IDE7CiAgICAgICAgIGJvb2wgYmFja2ZhY2VWaXNpYmlsaXR5IDogMTsKICAgICAg
ICAgYm9vbCB2aXNpYmxlIDogMTsKKyAgICAgICAgYm9vbCBzaG93RGVidWdCb3JkZXJzIDogMTsK
KyAgICAgICAgYm9vbCBzaG93UmVwYWludENvdW50ZXIgOiAxOwogCiAgICAgICAgIFN0YXRlKCkK
ICAgICAgICAgICAgIDogb3BhY2l0eSgxKQogICAgICAgICAgICAgLCBtYXNrTGF5ZXIoMCkKICAg
ICAgICAgICAgICwgcmVwbGljYUxheWVyKDApCisgICAgICAgICAgICAsIGRlYnVnQm9yZGVyV2lk
dGgoMCkKKyAgICAgICAgICAgICwgcmVwYWludENvdW50KDApCiAgICAgICAgICAgICAsIHByZXNl
cnZlczNEKGZhbHNlKQogICAgICAgICAgICAgLCBtYXNrc1RvQm91bmRzKGZhbHNlKQogICAgICAg
ICAgICAgLCBkcmF3c0NvbnRlbnQoZmFsc2UpCkBAIC0xOTIsNiArMjAyLDggQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICwgY29udGVudHNPcGFxdWUoZmFsc2UpCiAgICAgICAgICAgICAsIGJhY2tm
YWNlVmlzaWJpbGl0eShmYWxzZSkKICAgICAgICAgICAgICwgdmlzaWJsZSh0cnVlKQorICAgICAg
ICAgICAgLCBzaG93RGVidWdCb3JkZXJzKGZhbHNlKQorICAgICAgICAgICAgLCBzaG93UmVwYWlu
dENvdW50ZXIoZmFsc2UpCiAgICAgICAgIHsKICAgICAgICAgfQogICAgIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oCmluZGV4IDkyYTE1OGU2ZDIxYjRhNzUyOTFlZjk0
MzliODc2MmEzZjc5NjBjM2MuLjg1OTAzZmE2NGI0ZTU1NmYyYzZhMzk2MWU5ZmQwN2MxM2NjMjMz
ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oCkBAIC0zOSwxMCAr
MzksMjAgQEAgcHVibGljOgogICAgIGZsb2F0IG9wYWNpdHk7CiAgICAgQml0bWFwVGV4dHVyZSog
bWFzazsKIAorICAgIGJvb2wgc2hvd0RlYnVnQm9yZGVyczsKKyAgICBDb2xvciBkZWJ1Z0JvcmRl
ckNvbG9yOworICAgIGZsb2F0IGRlYnVnQm9yZGVyV2lkdGg7CisgICAgYm9vbCBzaG93UmVwYWlu
dENvdW50ZXI7CisgICAgaW50IHJlcGFpbnRDb3VudDsKKwogICAgIFRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyUGFpbnRQYXJhbWV0ZXJzKCkKICAgICAgICAgOiB0ZXh0dXJlTWFwcGVyKDApCiAg
ICAgICAgICwgb3BhY2l0eSgxKQogICAgICAgICAsIG1hc2soMCkKKyAgICAgICAgLCBzaG93RGVi
dWdCb3JkZXJzKGZhbHNlKQorICAgICAgICAsIGRlYnVnQm9yZGVyV2lkdGgoMCkKKyAgICAgICAg
LCBzaG93UmVwYWludENvdW50ZXIoZmFsc2UpCisgICAgICAgICwgcmVwYWludENvdW50KDApCiAg
ICAgeyB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcu
Y3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAppbmRleCBjOTQ1ZTljOTk0
YTQzYWY1ZWJmNjMxMzc5ZWI2Zjg0YWM3ZTY4YmM3Li4xOTQzMWE2NmQ3NzUyZDljYTE2NjJiMmI1
YWQ5OTAwODJmYzY0YTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3Zp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKQEAgLTgzOCw2
ICs4MzgsOSBAQCBzdGF0aWMgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBfZXdrX3ZpZXdfcHJpdl9u
ZXcoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQogICAgIHByaXYtPnBhZ2VTZXR0aW5n
cy0+c2V0SW50ZXJhY3RpdmVGb3JtVmFsaWRhdGlvbkVuYWJsZWQodHJ1ZSk7CiAjaWYgVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIHByaXYtPnBhZ2VTZXR0aW5ncy0+c2V0QWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoZmFsc2UpOworICAgIGJvb2wgc2hvd0RlYnVnVmlzdWFs
cyA9IFN0cmluZyhnZXRlbnYoIldFQktJVF9TSE9XX0NPTVBPU0lUSU5HX0RFQlVHX1ZJU1VBTFMi
KSkgPT0gIjEiOworICAgIHByaXYtPnBhZ2VTZXR0aW5ncy0+c2V0U2hvd0RlYnVnQm9yZGVycyhz
aG93RGVidWdWaXN1YWxzKTsKKyAgICBwcml2LT5wYWdlU2V0dGluZ3MtPnNldFNob3dSZXBhaW50
Q291bnRlcihzaG93RGVidWdWaXN1YWxzKTsKICNlbmRpZgogCiAgICAgdXJsID0gcHJpdi0+cGFn
ZVNldHRpbmdzLT51c2VyU3R5bGVTaGVldExvY2F0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKaW5kZXggMjkzMTBkNGU5ZmU0ODE0NTcwM2Q5OTRmNGQx
ZTlkMDc2YTQyMDhlZS4uMjhkZGYzMWQ0MDE2MTM0MDYyYzFhMzhjNzQ4Mjg1NzVhZmIzODY5OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcApAQCAtMzQzNSw2
ICszNDM1LDkgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aW5ncyhX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5H
KQogICAgIGNvcmVTZXR0aW5ncy0+c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoc2V0
dGluZ3NQcml2YXRlLT5lbmFibGVBY2NlbGVyYXRlZENvbXBvc2l0aW5nKTsKKyAgICBib29sIHNo
b3dEZWJ1Z1Zpc3VhbHMgPSBTdHJpbmcoZ2V0ZW52KCJXRUJLSVRfU0hPV19DT01QT1NJVElOR19E
RUJVR19WSVNVQUxTIikpID09ICIxIjsKKyAgICBjb3JlU2V0dGluZ3MtPnNldFNob3dEZWJ1Z0Jv
cmRlcnMoc2hvd0RlYnVnVmlzdWFscyk7CisgICAgY29yZVNldHRpbmdzLT5zZXRTaG93UmVwYWlu
dENvdW50ZXIoc2hvd0RlYnVnVmlzdWFscyk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfQVVE
SU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwIGIv
U291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcAppbmRleCA5ZGIwMWIxMWU4ZDQ0
OGRmNTFkOTI0MmM3MWM3ZTA1OWNlZWE2MmQ1Li4yMzgxOWY1YTA2NjY4OTFiNmRmOTVmMjI5M2Zl
OTNiYzY5Mjc2ZjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGlu
Z3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAKQEAgLTE1
MCw2ICsxNTAsMTAgQEAgdm9pZCBRV2ViU2V0dGluZ3NQcml2YXRlOjphcHBseSgpCiAgICAgICAg
IHNldHRpbmdzLT5zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yQW5pbWF0aW9uRW5hYmxlZCh2
YWx1ZSk7CiAgICAgICAgIHNldHRpbmdzLT5zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yVmlk
ZW9FbmFibGVkKGZhbHNlKTsKICAgICAgICAgc2V0dGluZ3MtPnNldEFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdGb3JQbHVnaW5zRW5hYmxlZChmYWxzZSk7CisKKyAgICAgICAgYm9vbCBzaG93RGVidWdW
aXN1YWxzID0gcWdldGVudigiUVRfV0VCS0lUX1NIT1dfQ09NUE9TSVRJTkdfREVCVUdfVklTVUFM
UyIpID09ICIxIjsKKyAgICAgICAgc2V0dGluZ3MtPnNldFNob3dEZWJ1Z0JvcmRlcnMoc2hvd0Rl
YnVnVmlzdWFscyk7CisgICAgICAgIHNldHRpbmdzLT5zZXRTaG93UmVwYWludENvdW50ZXIoc2hv
d0RlYnVnVmlzdWFscyk7CiAjZW5kaWYKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgICAgIHZhbHVl
ID0gYXR0cmlidXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6OldlYkdMRW5hYmxlZCwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
TGF5ZXJJbmZvLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZExheWVySW5mby5oCmluZGV4IDY1MjA1NmRkODEwNDIzNjQwZmNmNjk2OTA1YTdk
ZTczN2Q2ZDRiOWUuLmNmMWYwM2VkYmJiYjJlNTEyZjY5ZWJhYjljM2YyMzBlYzRhMWYzMjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkTGF5ZXJJbmZvLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllckluZm8uaApAQCAtNDMsNiArNDMsNyBAQCBzdHJ1Y3Qg
Q29vcmRpbmF0ZWRMYXllckluZm8gewogICAgICAgICAsIG1hc2soSW52YWxpZENvb3JkaW5hdGVk
TGF5ZXJJRCkKICAgICAgICAgLCBpbWFnZUlEKEludmFsaWRDb29yZGluYXRlZEltYWdlQmFja2lu
Z0lEKQogICAgICAgICAsIG9wYWNpdHkoMCkKKyAgICAgICAgLCBkZWJ1Z0JvcmRlcldpZHRoKDAp
CiAgICAgICAgICwgZmxhZ3MoMCkgeyB9CiAKICAgICBDb29yZGluYXRlZExheWVySUQgcmVwbGlj
YTsKQEAgLTU3LDYgKzU4LDggQEAgc3RydWN0IENvb3JkaW5hdGVkTGF5ZXJJbmZvIHsKICAgICBX
ZWJDb3JlOjpJbnRSZWN0IGNvbnRlbnRzUmVjdDsKICAgICBmbG9hdCBvcGFjaXR5OwogICAgIFdl
YkNvcmU6OkNvbG9yIHNvbGlkQ29sb3I7CisgICAgV2ViQ29yZTo6Q29sb3IgZGVidWdCb3JkZXJD
b2xvcjsKKyAgICBmbG9hdCBkZWJ1Z0JvcmRlcldpZHRoOwogCiAgICAgdW5pb24gewogICAgICAg
ICBzdHJ1Y3QgewpAQCAtNjgsNiArNzEsOCBAQCBzdHJ1Y3QgQ29vcmRpbmF0ZWRMYXllckluZm8g
ewogICAgICAgICAgICAgYm9vbCBwcmVzZXJ2ZXMzRCA6IDE7CiAgICAgICAgICAgICBib29sIGlz
Um9vdExheWVyOiAxOwogICAgICAgICAgICAgYm9vbCBmaXhlZFRvVmlld3BvcnQgOiAxOworICAg
ICAgICAgICAgYm9vbCBzaG93RGVidWdCb3JkZXJzIDogMTsKKyAgICAgICAgICAgIGJvb2wgc2hv
d1JlcGFpbnRDb3VudGVyIDogMTsKICAgICAgICAgfTsKICAgICAgICAgdW5zaWduZWQgZmxhZ3M7
CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcApp
bmRleCAzNzcwMDczNTZlMTIyNWNhM2Y2ZWEwYzRjMzdiMDIzODNiODg2MDAzLi4wYTY2NmEzMTVi
NmMzY2MyYmM4ZmFmN2U5ZTU2ZGNmM2EyYjYxYmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwCkBAIC04OCw3ICs4OCw2IEBAIHZvaWQgQ29vcmRpbmF0
ZWRCYWNraW5nU3RvcmU6OnVwZGF0ZVRpbGUodWludDMyX3QgaWQsIGNvbnN0IEludFJlY3QmIHNv
dXJjZVJlY3QsCiB7CiAgICAgSGFzaE1hcDx1aW50MzJfdCwgQ29vcmRpbmF0ZWRCYWNraW5nU3Rv
cmVUaWxlPjo6aXRlcmF0b3IgaXQgPSBtX3RpbGVzLmZpbmQoaWQpOwogICAgIEFTU0VSVChpdCAh
PSBtX3RpbGVzLmVuZCgpKTsKLSAgICBpdC0+dmFsdWUuaW5jcmVtZW50UmVwYWludENvdW50KCk7
CiAgICAgaXQtPnZhbHVlLnNldEJhY2tCdWZmZXIodGlsZVJlY3QsIHNvdXJjZVJlY3QsIGJhY2tC
dWZmZXIsIG9mZnNldCk7CiB9CiAKQEAgLTEwOSwyNyArMTA4LDE2IEBAIHZvaWQgQ29vcmRpbmF0
ZWRCYWNraW5nU3RvcmU6OnNldFNpemUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplKQog
ICAgIG1fc2l6ZSA9IHNpemU7CiB9CiAKLXN0YXRpYyBib29sIHNob3VsZFNob3dUaWxlRGVidWdW
aXN1YWxzKCkKLXsKLSNpZiBQTEFURk9STShRVCkKLSAgICByZXR1cm4gKHFnZXRlbnYoIlFUX1dF
QktJVF9TSE9XX0NPTVBPU0lUSU5HX0RFQlVHX1ZJU1VBTFMiKSA9PSAiMSIpOwotI2VsaWYgVVNF
KENBSVJPKQotICAgIHJldHVybiAoU3RyaW5nKGdldGVudigiV0VCS0lUX1NIT1dfQ09NUE9TSVRJ
TkdfREVCVUdfVklTVUFMUyIpKSA9PSAiMSIpOwotI2VuZGlmCi0gICAgcmV0dXJuIGZhbHNlOwot
fQotCiB2b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpwYWludFRpbGVzVG9UZXh0dXJlTWFw
cGVyKFZlY3RvcjxUZXh0dXJlTWFwcGVyVGlsZSo+JiB0aWxlcywgY29uc3QgVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJQYWludFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCB0aWxlcy5zaXplKCk7ICsraSkgewogICAgICAgICBUZXh0dXJlTWFw
cGVyVGlsZSogdGlsZSA9IHRpbGVzW2ldOwogICAgICAgICB0aWxlLT5wYWludChwYXJhbWV0ZXJz
LnRleHR1cmVNYXBwZXIsIHBhcmFtZXRlcnMudHJhbnNmb3JtLCBwYXJhbWV0ZXJzLm9wYWNpdHks
IHBhcmFtZXRlcnMubWFzaywgY2FsY3VsYXRlRXhwb3NlZFRpbGVFZGdlcyhwYXJhbWV0ZXJzLnRh
cmdldFJlY3QsIHRpbGUtPnJlY3QoKSkpOwotICAgICAgICBzdGF0aWMgYm9vbCBzaG91bGREZWJ1
ZyA9IHNob3VsZFNob3dUaWxlRGVidWdWaXN1YWxzKCk7Ci0gICAgICAgIGlmICghc2hvdWxkRGVi
dWcpCi0gICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBwYXJhbWV0ZXJzLnRleHR1cmVN
YXBwZXItPmRyYXdCb3JkZXIoQ29sb3IoMHhGRiwgMCwgMCksIDIsIHRpbGUtPnJlY3QoKSwgcGFy
YW1ldGVycy50cmFuc2Zvcm0pOwotICAgICAgICBwYXJhbWV0ZXJzLnRleHR1cmVNYXBwZXItPmRy
YXdSZXBhaW50Q291bnRlcihzdGF0aWNfY2FzdDxDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGUq
Pih0aWxlKS0+cmVwYWludENvdW50KCksIDgsIHRpbGUtPnJlY3QoKS5sb2NhdGlvbigpLCBwYXJh
bWV0ZXJzLnRyYW5zZm9ybSk7CisgICAgICAgIGlmIChwYXJhbWV0ZXJzLnNob3dEZWJ1Z0JvcmRl
cnMpCisgICAgICAgICAgICBwYXJhbWV0ZXJzLnRleHR1cmVNYXBwZXItPmRyYXdCb3JkZXIocGFy
YW1ldGVycy5kZWJ1Z0JvcmRlckNvbG9yLCBwYXJhbWV0ZXJzLmRlYnVnQm9yZGVyV2lkdGgsIHRp
bGUtPnJlY3QoKSwgcGFyYW1ldGVycy50cmFuc2Zvcm0pOworICAgICAgICBpZiAocGFyYW1ldGVy
cy5zaG93UmVwYWludENvdW50ZXIpCisgICAgICAgICAgICBwYXJhbWV0ZXJzLnRleHR1cmVNYXBw
ZXItPmRyYXdSZXBhaW50Q291bnRlcihwYXJhbWV0ZXJzLnJlcGFpbnRDb3VudCwgcGFyYW1ldGVy
cy5kZWJ1Z0JvcmRlckNvbG9yLCB0aWxlLT5yZWN0KCkubG9jYXRpb24oKSwgcGFyYW1ldGVycy50
cmFuc2Zvcm0pOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2lu
Z1N0b3JlLmgKaW5kZXggNzY0ZTliMDJkZjI4ZDk5MmViMmI1NTYzOTFkNzFhMjVkMWIxYjUzNy4u
YTk5ZTA4MmU3YTkwNjk3ZDhlZTQ0Y2NiNDQyYWFjYjI0NzFmMWM3OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNr
aW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5oCkBAIC0zNiwxMyArMzYsMTAgQEAgcHVibGlj
OgogICAgIGV4cGxpY2l0IENvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZShmbG9hdCBzY2FsZSA9
IDEpCiAgICAgICAgIDogVGV4dHVyZU1hcHBlclRpbGUoV2ViQ29yZTo6RmxvYXRSZWN0KCkpCiAg
ICAgICAgICwgbV9zY2FsZShzY2FsZSkKLSAgICAgICAgLCBtX3JlcGFpbnRDb3VudCgwKQogICAg
IHsKICAgICB9CiAKICAgICBpbmxpbmUgZmxvYXQgc2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3Nj
YWxlOyB9Ci0gICAgaW5saW5lIHZvaWQgaW5jcmVtZW50UmVwYWludENvdW50KCkgeyArK21fcmVw
YWludENvdW50OyB9Ci0gICAgaW5saW5lIGludCByZXBhaW50Q291bnQoKSBjb25zdCB7IHJldHVy
biBtX3JlcGFpbnRDb3VudDsgfQogICAgIHZvaWQgc3dhcEJ1ZmZlcnMoV2ViQ29yZTo6VGV4dHVy
ZU1hcHBlciopOwogICAgIHZvaWQgc2V0QmFja0J1ZmZlcihjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNl
PiBidWZmZXIsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAKQEAgLTUyLDcgKzQ5LDYgQEAg
cHJpdmF0ZToKICAgICBXZWJDb3JlOjpJbnRSZWN0IG1fdGlsZVJlY3Q7CiAgICAgV2ViQ29yZTo6
SW50UG9pbnQgbV9zdXJmYWNlT2Zmc2V0OwogICAgIGZsb2F0IG1fc2NhbGU7Ci0gICAgaW50IG1f
cmVwYWludENvdW50OwogfTsKIAogY2xhc3MgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUgOiBwdWJs
aWMgV2ViQ29yZTo6VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVy
VHJlZUhvc3RQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHAKaW5kZXggYmFhOGY2NTIz
ZGViZmRlYmJjNGU1MjJiNDc1ZTE0Y2MxOGZkMmViNS4uZWY1ZTQ1ZmE5YmMyMzcwMTQ1Y2NjZDFk
Y2Y4OGM2YjQwNThhYTlhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdFByb3h5LmNwcApAQCAtMjQyLDYgKzI0MiwxMSBAQCB2b2lkIENvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpkZXN0cm95Q2FudmFzKENvb3JkaW5hdGVkTGF5ZXJJRCBp
ZCkKIH0KICNlbmRpZgogCit2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpzZXRS
ZXBhaW50Q291bnQoQ29vcmRpbmF0ZWRMYXllcklEIGlkLCBpbnQgdmFsdWUpCit7CisgICAgZGlz
cGF0Y2hVcGRhdGUoYmluZCgmTGF5ZXJUcmVlUmVuZGVyZXI6OnNldFJlcGFpbnRDb3VudCwgbV9y
ZW5kZXJlci5nZXQoKSwgaWQsIHZhbHVlKSk7Cit9CisKIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0UHJveHk6OnB1cmdlQmFja2luZ1N0b3JlcygpCiB7CiAgICAgbV9zdXJmYWNlcy5jbGVh
cigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5
LmgKaW5kZXggNzU5MWI4NDg1ZDM5ODg2ZWQ3ZWQyY2QwNWQxMTYxM2ZlNjdmYWNkMy4uZjljYTE5
MmMyYjA0MzIyNTlmODhjOWJiNWVjZTNlNDVhM2M4YTY3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oCkBAIC04NCw2ICs4NCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHN5bmNDYW52YXMoQ29vcmRpbmF0ZWRMYXllcklELCB1aW50MzJfdCBm
cm9udEJ1ZmZlcik7CiAgICAgdm9pZCBkZXN0cm95Q2FudmFzKENvb3JkaW5hdGVkTGF5ZXJJRCk7
CiAjZW5kaWYKKyAgICB2b2lkIHNldFJlcGFpbnRDb3VudChDb29yZGluYXRlZExheWVySUQsIGlu
dCB2YWx1ZSk7CiAgICAgdm9pZCBwdXJnZUJhY2tpbmdTdG9yZXMoKTsKICAgICBMYXllclRyZWVS
ZW5kZXJlciogbGF5ZXJUcmVlUmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmVyLmdl
dCgpOyB9CiAgICAgdm9pZCBzZXRMYXllckFuaW1hdGlvbnMoQ29vcmRpbmF0ZWRMYXllcklELCBj
b25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyQW5pbWF0aW9ucyYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0UHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5tZXNzYWdlcy5p
bgppbmRleCAxMzdkYWQ4MDc1MDBmNTVlNTlkMjZjMjdjMWRlZGJhNDljNTUwOGEwLi4yNjhlZjFj
Zjk3MWY3ODhmM2RhN2MxOWNjNGMxNzJiZjRmNjgzNmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhv
c3RQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5tZXNzYWdlcy5pbgpA
QCAtNTUsNiArNTUsOCBAQCBtZXNzYWdlcyAtPiBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94
eSB7CiAgICAgRGVzdHJveUNhbnZhcyh1aW50MzJfdCBpZCkKICNlbmRpZgogCisgICAgU2V0UmVw
YWludENvdW50KHVpbnQzMl90IGxheWVySUQsIGludCB2YWx1ZSkKKwogICAgIFNldEJhY2tncm91
bmRDb2xvcihXZWJDb3JlOjpDb2xvciBjb2xvcikKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVy
ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5
ZXJUcmVlUmVuZGVyZXIuY3BwCmluZGV4IDZlOTczMDIxNjYyYjQwZDM2YTI4NGMzZmQxZDA0OWFi
NjZhMjU5OTYuLmMxZTcyOGU0ZTAzYjkxNDhmNWQ4NzQ2M2YxZDVmNzMyZWQ0MDFkYzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVy
VHJlZVJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0
ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5jcHAKQEAgLTI1NSw2ICsyNTUsMTIgQEAgdm9p
ZCBMYXllclRyZWVSZW5kZXJlcjo6ZGVzdHJveUNhbnZhcyhDb29yZGluYXRlZExheWVySUQgaWQp
CiB9CiAjZW5kaWYKIAordm9pZCBMYXllclRyZWVSZW5kZXJlcjo6c2V0UmVwYWludENvdW50KENv
b3JkaW5hdGVkTGF5ZXJJRCBpZCwgaW50IHZhbHVlKQoreworICAgIEdyYXBoaWNzTGF5ZXIqIGxh
eWVyID0gbGF5ZXJCeUlEKGlkKTsKKyAgICB0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKGxh
eWVyKS0+c2V0UmVwYWludENvdW50KHZhbHVlKTsKK30KKwogdm9pZCBMYXllclRyZWVSZW5kZXJl
cjo6c2V0TGF5ZXJDaGlsZHJlbihDb29yZGluYXRlZExheWVySUQgaWQsIGNvbnN0IFZlY3RvcjxD
b29yZGluYXRlZExheWVySUQ+JiBjaGlsZElEcykKIHsKICAgICBHcmFwaGljc0xheWVyKiBsYXll
ciA9IGxheWVyQnlJRChpZCk7CkBAIC0zMzMsNiArMzM5LDkgQEAgdm9pZCBMYXllclRyZWVSZW5k
ZXJlcjo6c2V0TGF5ZXJTdGF0ZShDb29yZGluYXRlZExheWVySUQgaWQsIGNvbnN0IENvb3JkaW5h
dGVkTGEKICAgICBsYXllci0+c2V0RHJhd3NDb250ZW50KGxheWVySW5mby5kcmF3c0NvbnRlbnQp
OwogICAgIGxheWVyLT5zZXRDb250ZW50c1Zpc2libGUobGF5ZXJJbmZvLmNvbnRlbnRzVmlzaWJs
ZSk7CiAgICAgdG9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcihsYXllciktPnNldEZpeGVkVG9W
aWV3cG9ydChsYXllckluZm8uZml4ZWRUb1ZpZXdwb3J0KTsKKyAgICBsYXllci0+c2V0U2hvd0Rl
YnVnQm9yZGVyKGxheWVySW5mby5zaG93RGVidWdCb3JkZXJzKTsKKyAgICBsYXllci0+c2V0RGVi
dWdCb3JkZXIobGF5ZXJJbmZvLmRlYnVnQm9yZGVyQ29sb3IsIGxheWVySW5mby5kZWJ1Z0JvcmRl
cldpZHRoKTsKKyAgICBsYXllci0+c2V0U2hvd1JlcGFpbnRDb3VudGVyKGxheWVySW5mby5zaG93
UmVwYWludENvdW50ZXIpOwogCiAgICAgaWYgKGxheWVySW5mby5maXhlZFRvVmlld3BvcnQpCiAg
ICAgICAgIG1fZml4ZWRMYXllcnMuYWRkKGlkLCBsYXllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVl
UmVuZGVyZXIuaAppbmRleCA1M2VjYmUzOTQ5ODE4OTlkMmFiYmUwZjIxZDQ0NDM0NDIzOTM2NDg4
Li4xYTk1OTdmZWIzMDRiNjgzYTY4NzM5NThmNWE0NDc1MDljZGM5NTI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5k
ZXJlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNz
L0xheWVyVHJlZVJlbmRlcmVyLmgKQEAgLTc3LDYgKzc3LDcgQEAgcHVibGljOgogICAgIHZvaWQg
c3luY0NhbnZhcyhDb29yZGluYXRlZExheWVySUQsIHVpbnQzMl90IGZyb250QnVmZmVyKTsKICAg
ICB2b2lkIGRlc3Ryb3lDYW52YXMoQ29vcmRpbmF0ZWRMYXllcklEKTsKICNlbmRpZgorICAgIHZv
aWQgc2V0UmVwYWludENvdW50KENvb3JkaW5hdGVkTGF5ZXJJRCwgaW50IHZhbHVlKTsKIAogICAg
IHZvaWQgZGV0YWNoKCk7CiAgICAgdm9pZCBhcHBlbmRVcGRhdGUoY29uc3QgRnVuY3Rpb248dm9p
ZCgpPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3NMYXllci5jcHAKaW5kZXggNWYyNjYyZWYwOTE4YjNhYTkyMTQwYTQ4NDUyYTU1NTgy
ZjU3YmQzOS4uYWJiN2I0YWU5ZDIyOGFjN2U0ZjA5YjQyZTc5MDk1NjllZWMxYmZmYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIuY3BwCkBAIC0zNzEsNiArMzcxLDI2IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
OjpzZXRDb250ZW50c1RvU29saWRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiAgICAgZGlkQ2hh
bmdlTGF5ZXJTdGF0ZSgpOwogfQogCit2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0
U2hvd0RlYnVnQm9yZGVyKGJvb2wgc2hvdykKK3sKKyAgICBpZiAoaXNTaG93aW5nRGVidWdCb3Jk
ZXIoKSA9PSBzaG93KQorICAgICAgICByZXR1cm47CisKKyAgICBHcmFwaGljc0xheWVyOjpzZXRT
aG93RGVidWdCb3JkZXIoc2hvdyk7CisKKyAgICBkaWRDaGFuZ2VMYXllclN0YXRlKCk7Cit9CisK
K3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRTaG93UmVwYWludENvdW50ZXIoYm9v
bCBzaG93KQoreworICAgIGlmIChpc1Nob3dpbmdSZXBhaW50Q291bnRlcigpID09IHNob3cpCisg
ICAgICAgIHJldHVybjsKKworICAgIEdyYXBoaWNzTGF5ZXI6OnNldFNob3dSZXBhaW50Q291bnRl
cihzaG93KTsKKworICAgIGRpZENoYW5nZUxheWVyU3RhdGUoKTsKK30KKwogdm9pZCBDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzVG9JbWFnZShJbWFnZSogaW1hZ2UpCiB7CiAg
ICAgTmF0aXZlSW1hZ2VQdHIgbmV3TmF0aXZlSW1hZ2VQdHIgPSBpbWFnZSA/IGltYWdlLT5uYXRp
dmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIDogMDsKQEAgLTUxOSw2ICs1MzksOCBAQCB2b2lkIENv
b3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c3luY0ltYWdlQmFja2luZygpCiAgICAgICAgIH0KIAog
ICAgICAgICBtX2Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLT5tYXJrRGlydHkoKTsKKyAgICAgICAg
aWYgKGlzU2hvd2luZ1JlcGFpbnRDb3VudGVyKCkpCisgICAgICAgICAgICBtX2Nvb3JkaW5hdG9y
LT5zZXRSZXBhaW50Q291bnQoaWQoKSwgaW5jcmVtZW50UmVwYWludENvdW50KCkpOwogICAgIH0g
ZWxzZQogICAgICAgICByZWxlYXNlSW1hZ2VCYWNraW5nSWZOZWVkZWQoKTsKIApAQCAtNTUwLDkg
KzU3MiwyMyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c3luY0xheWVyU3RhdGUo
KQogICAgIG1fbGF5ZXJJbmZvLnBvcyA9IG1fYWRqdXN0ZWRQb3NpdGlvbjsKICAgICBtX2xheWVy
SW5mby5zaXplID0gbV9hZGp1c3RlZFNpemU7CiAKKyAgICBtX2xheWVySW5mby5zaG93RGVidWdC
b3JkZXJzID0gaXNTaG93aW5nRGVidWdCb3JkZXIoKTsKKyAgICBpZiAobV9sYXllckluZm8uc2hv
d0RlYnVnQm9yZGVycykgeworICAgICAgICBtX3VzaW5nVGlsZWRMYXllciA9IHNob3VsZEhhdmVC
YWNraW5nU3RvcmUoKTsKKyAgICAgICAgdXBkYXRlRGVidWdJbmRpY2F0b3JzKCk7CisgICAgfQor
ICAgIG1fbGF5ZXJJbmZvLnNob3dSZXBhaW50Q291bnRlciA9IGlzU2hvd2luZ1JlcGFpbnRDb3Vu
dGVyKCk7CisKICAgICBtX2Nvb3JkaW5hdG9yLT5zeW5jTGF5ZXJTdGF0ZShtX2lkLCBtX2xheWVy
SW5mbyk7CiB9CiAKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXREZWJ1Z0JvcmRl
cihjb25zdCBDb2xvciYgY29sb3IsIGZsb2F0IHdpZHRoKQoreworICAgIEFTU0VSVChtX2xheWVy
SW5mby5zaG93RGVidWdCb3JkZXJzKTsKKyAgICBtX2xheWVySW5mby5kZWJ1Z0JvcmRlckNvbG9y
ID0gY29sb3I7CisgICAgbV9sYXllckluZm8uZGVidWdCb3JkZXJXaWR0aCA9IHdpZHRoOworfQor
CiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c3luY0FuaW1hdGlvbnMoKQogewogICAg
IGlmICghbV9zaG91bGRTeW5jQW5pbWF0aW9ucykKQEAgLTU3NSw2ICs2MTEsOCBAQCB2b2lkIENv
b3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c3luY0NhbnZhcygpCiAjaWYgVVNFKEdSQVBISUNTX1NV
UkZBQ0UpCiAgICAgbV9jb29yZGluYXRvci0+c3luY0NhbnZhcyhtX2lkLCBtX2NhbnZhc1BsYXRm
b3JtTGF5ZXIpOwogI2VuZGlmCisgICAgaWYgKGlzU2hvd2luZ1JlcGFpbnRDb3VudGVyKCkpCisg
ICAgICAgIG1fY29vcmRpbmF0b3ItPnNldFJlcGFpbnRDb3VudChpZCgpLCBpbmNyZW1lbnRSZXBh
aW50Q291bnQoKSk7CiAgICAgbV9jYW52YXNOZWVkc0Rpc3BsYXkgPSBmYWxzZTsKIH0KIApAQCAt
Njk4LDggKzczNiwxMCBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dGlsZWRCYWNr
aW5nU3RvcmVQYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsCiAgICAgcGFpbnRHcmFwaGlj
c0xheWVyQ29udGVudHMoKmNvbnRleHQsIHJlY3QpOwogfQogCi12b2lkIENvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllcjo6dGlsZWRCYWNraW5nU3RvcmVQYWludEVuZChjb25zdCBWZWN0b3I8SW50UmVj
dD4mIC8qIHVwZGF0ZWRSZWN0cyAqLykKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp0
aWxlZEJhY2tpbmdTdG9yZVBhaW50RW5kKGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgdXBkYXRlZFJl
Y3RzKQogeworICAgIGlmIChpc1Nob3dpbmdSZXBhaW50Q291bnRlcigpICYmICF1cGRhdGVkUmVj
dHMuaXNFbXB0eSgpKQorICAgICAgICBtX2Nvb3JkaW5hdG9yLT5zZXRSZXBhaW50Q291bnQoaWQo
KSwgaW5jcmVtZW50UmVwYWludENvdW50KCkpOwogfQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcjo6dGlsZWRCYWNraW5nU3RvcmVIYXNQZW5kaW5nVGlsZUNyZWF0aW9uKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgK
aW5kZXggNmM0MzU4NWM3MGM4ZTAzMDY1ZTRkY2FhMjdlNGYwZGEyZmEzNjk0Ni4uMmI3NzUwY2Fk
ZTYwZWZlMGU2ZDQxMDY5NDU0NTM5MGExODY1MWY5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKQEAgLTcxLDYgKzcxLDgg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95Q2FudmFzKENvb3JkaW5hdGVkTGF5
ZXJJRCkgPSAwOwogI2VuZGlmCiAKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UmVwYWludENvdW50KENv
b3JkaW5hdGVkTGF5ZXJJRCwgaW50KSA9IDA7CisKICAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJB
bmltYXRpb25zKENvb3JkaW5hdGVkTGF5ZXJJRCwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXll
ckFuaW1hdGlvbnMmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoTGF5ZXIoV2ViQ29y
ZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKikgPSAwOwpAQCAtMTEyLDYgKzExNCw4IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNUb0ltYWdlKEltYWdlKikgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9Tb2xpZENvbG9yKGNvbnN0IENv
bG9yJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFNob3dEZWJ1Z0JvcmRlcihib29s
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvd1JlcGFpbnRDb3VudGVyKGJvb2wp
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGREaXJlY3RseUNvbXBvc2l0ZUltYWdl
KEltYWdlKikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9D
YW52YXMoUGxhdGZvcm1MYXllciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRNYXNr
TGF5ZXIoR3JhcGhpY3NMYXllciopIE9WRVJSSURFOwpAQCAtMTY2LDYgKzE3MCw4IEBAIHB1Ymxp
YzoKICAgICBib29sIGhhc1BlbmRpbmdWaXNpYmxlQ2hhbmdlcygpOwogCiBwcml2YXRlOgorICAg
IHZpcnR1YWwgdm9pZCBzZXREZWJ1Z0JvcmRlcihjb25zdCBDb2xvciYsIGZsb2F0IHdpZHRoKSBP
VkVSUklERTsKKwogICAgIGJvb2wgZml4ZWRUb1ZpZXdwb3J0KCkgY29uc3QgeyByZXR1cm4gbV9m
aXhlZFRvVmlld3BvcnQ7IH0KIAogICAgIHZvaWQgZGlkQ2hhbmdlTGF5ZXJTdGF0ZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dC5jcHAKaW5kZXggYmI5OTU1ZWQ4MGJkNDM1MzE0MjFiZGQxNTRlZjhjMjFiNmM3YmZjYy4uY2E0
NDU3YmIxMmM5OTI4MzcyODZkZjQ3OGMxMmY4OTlhZjEyNTJjYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCkBAIC0z
OTIsNiArMzkyLDExIEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpkZXN0cm95Q2Fu
dmFzKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCkKIH0KICNlbmRpZgogCit2b2lkIENvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdDo6c2V0UmVwYWludENvdW50KENvb3JkaW5hdGVkTGF5ZXJJRCBpZCwgaW50
IHZhbHVlKQoreworICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6Q29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0UHJveHk6OlNldFJlcGFpbnRDb3VudChpZCwgdmFsdWUpKTsKK30KKwogI2lmIEVO
QUJMRShDU1NfRklMVEVSUykKIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzeW5jTGF5
ZXJGaWx0ZXJzKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYg
ZmlsdGVycykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0LmgKaW5kZXggNDgxOGVkOWYwMDBmOWI4NDhkZWFmNmEyNjMxYjllNzYy
MDhhNmJmNy4uNjA1MjI5ODlkNjM0ZTliMmFkMzUxMDg2NTE5MmQ2ZDJkYTI2YjQ2OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
LmgKQEAgLTEwMSw2ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHN5bmNDYW52
YXMoQ29vcmRpbmF0ZWRMYXllcklELCBXZWJDb3JlOjpQbGF0Zm9ybUxheWVyKikgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3lDYW52YXMoQ29vcmRpbmF0ZWRMYXllcklEKSBPVkVS
UklERTsKICNlbmRpZgorICAgIHZpcnR1YWwgdm9pZCBzZXRSZXBhaW50Q291bnQoQ29vcmRpbmF0
ZWRMYXllcklELCBpbnQpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hMYXllcihX
ZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3lu
Y0ZpeGVkTGF5ZXJzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkVGlsZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZFRpbGUuY3BwCmluZGV4IDc5OGQyYjc1ZjI1MGRhNjcyOWZmOWJjZTUwZTg4YzI5MTI5NDBiOGUu
LmFjMGI1NjYyNmU4MWYxMGIxODc2MmI5OGYzNjU4MDRmOGUzMjYxNjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkVGlsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRUaWxlLmNwcApAQCAtOTcsOCArOTcsMTAgQEAg
VmVjdG9yPEludFJlY3Q+IENvb3JkaW5hdGVkVGlsZTo6dXBkYXRlQmFja0J1ZmZlcigpCiAgICAg
fSBlbHNlCiAgICAgICAgIG1fY2xpZW50LT51cGRhdGVUaWxlKG1fSUQsIHVwZGF0ZUluZm8sIG1f
cmVjdCk7CiAKKyAgICBWZWN0b3I8SW50UmVjdD4gdXBkYXRlZFJlY3RzOworICAgIHVwZGF0ZWRS
ZWN0cy5hcHBlbmQobV9kaXJ0eVJlY3QpOwogICAgIG1fZGlydHlSZWN0ID0gSW50UmVjdCgpOwot
ICAgIHJldHVybiBWZWN0b3I8SW50UmVjdD4oKTsKKyAgICByZXR1cm4gdXBkYXRlZFJlY3RzOwog
fQogCiB2b2lkIENvb3JkaW5hdGVkVGlsZTo6c3dhcEJhY2tCdWZmZXJUb0Zyb250KCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBhNTIyYTll
MzZiMGRjOWExNjM3ZDdiZTRjMjllZDM3NjZkMzk2OGFmLi45NDI5ZDBmM2FhMjMwODI0MGQxMGRk
NTk3ODE3NmJiM2NiM2MxZjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCkBAIC0yMzM0LDggKzIzMzQsMTggQEAgdm9pZCBXZWJQYWdlOjp1cGRh
dGVQcmVmZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKICAgICBzZXR0
aW5ncy0+c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVl
Rm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjphY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZEtl
eSgpKSAmJiBMYXllclRyZWVIb3N0OjpzdXBwb3J0c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKSk7
CiAgICAgc2V0dGluZ3MtPnNldEFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQoc3RvcmUuZ2V0Qm9v
bFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjphY2NlbGVyYXRlZERyYXdpbmdFbmFibGVk
S2V5KCkpICYmIExheWVyVHJlZUhvc3Q6OnN1cHBvcnRzQWNjZWxlcmF0ZWRDb21wb3NpdGluZygp
KTsKICAgICBzZXR0aW5ncy0+c2V0Q2FudmFzVXNlc0FjY2VsZXJhdGVkRHJhd2luZyhzdG9yZS5n
ZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmNhbnZhc1VzZXNBY2NlbGVyYXRl
ZERyYXdpbmdLZXkoKSkgJiYgTGF5ZXJUcmVlSG9zdDo6c3VwcG9ydHNBY2NlbGVyYXRlZENvbXBv
c2l0aW5nKCkpOworI2lmIFBMQVRGT1JNKFFUKQorICAgIGJvb2wgc2hvd0RlYnVnVmlzdWFscyA9
IHFnZXRlbnYoIlFUX1dFQktJVF9TSE9XX0NPTVBPU0lUSU5HX0RFQlVHX1ZJU1VBTFMiKSA9PSAi
MSI7CisgICAgc2V0dGluZ3MtPnNldFNob3dEZWJ1Z0JvcmRlcnMoc2hvd0RlYnVnVmlzdWFscyk7
CisgICAgc2V0dGluZ3MtPnNldFNob3dSZXBhaW50Q291bnRlcihzaG93RGVidWdWaXN1YWxzKTsK
KyNlbGlmIFVTRShDQUlSTykKKyAgICBib29sIHNob3dEZWJ1Z1Zpc3VhbHMgPSBTdHJpbmcoZ2V0
ZW52KCJXRUJLSVRfU0hPV19DT01QT1NJVElOR19ERUJVR19WSVNVQUxTIikpID09ICIxIjsKKyAg
ICBzZXR0aW5ncy0+c2V0U2hvd0RlYnVnQm9yZGVycyhzaG93RGVidWdWaXN1YWxzKTsKKyAgICBz
ZXR0aW5ncy0+c2V0U2hvd1JlcGFpbnRDb3VudGVyKHNob3dEZWJ1Z1Zpc3VhbHMpOworI2Vsc2UK
ICAgICBzZXR0aW5ncy0+c2V0U2hvd0RlYnVnQm9yZGVycyhzdG9yZS5nZXRCb29sVmFsdWVGb3JL
ZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmNvbXBvc2l0aW5nQm9yZGVyc1Zpc2libGVLZXkoKSkpOwog
ICAgIHNldHRpbmdzLT5zZXRTaG93UmVwYWludENvdW50ZXIoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9y
S2V5KFdlYlByZWZlcmVuY2VzS2V5Ojpjb21wb3NpdGluZ1JlcGFpbnRDb3VudGVyc1Zpc2libGVL
ZXkoKSkpOworI2VuZGlmCiAgICAgc2V0dGluZ3MtPnNldFNob3dUaWxlZFNjcm9sbGluZ0luZGlj
YXRvcihzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnRpbGVkU2Ny
b2xsaW5nSW5kaWNhdG9yVmlzaWJsZUtleSgpKSk7CiAgICAgc2V0dGluZ3MtPnNldEFnZ3Jlc3Np
dmVUaWxlUmV0ZW50aW9uRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVy
ZW5jZXNLZXk6OmFnZ3Jlc3NpdmVUaWxlUmV0ZW50aW9uRW5hYmxlZEtleSgpKSk7CiAgICAgc2V0
dGluZ3MtPnNldENTU0N1c3RvbUZpbHRlckVuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5
KFdlYlByZWZlcmVuY2VzS2V5Ojpjc3NDdXN0b21GaWx0ZXJFbmFibGVkS2V5KCkpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182652</attachid>
            <date>2013-01-14 16:26:15 -0800</date>
            <delta_ts>2013-01-14 18:44:29 -0800</delta_ts>
            <desc>Patch : [Qt][EFL][GTK][TexMap] Refactor code related to debug border and repaint count.</desc>
            <filename>bug-105787-20130115092240.patch</filename>
            <type>text/plain</type>
            <size>68577</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5NTkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTJjYTdmYWQzZWI0NjE5
NzNlYmQyZGI5Y2M1ZjZjMGQ4OGM2NjNlMC4uMDJmZDcxZTU2ZTZkYWFiNjI5OWM2OThmZDQ1ZjIx
ZDg0Yjg2YTM3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg3IEBACisyMDEzLTAxLTE0ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFtRdF1bRUZM
XVtHVEtdW1RleE1hcF0gUmVmYWN0b3IgY29kZSByZWxhdGVkIHRvIGRlYnVnIGJvcmRlciBhbmQg
cmVwYWludCBjb3VudC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwNTc4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEN1cnJlbnRseSwgVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZSwgQ29vcmRpbmF0ZWRC
YWNraW5nU3RvcmUgYW5kCisgICAgICAgIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyIGhhdmUg
ZHVwbGljYXRlZCBjb2RlIHRvIGRyYXcgZGVidWcgYm9yZGVyIG9yIHJlcGFpbnQKKyAgICAgICAg
Y291bnQuIFRoaXMgcGF0Y2ggcmVmYWN0b3JzIHRoYXQgYWxsIHBsYXRmb3JtIGxheWVycyBkcmF3
IGRlYnVnIGJvcmRlciBhbmQgcmVwYWludAorICAgICAgICBjb3VudCBpbiB0aGUgY29uc2lzdGVu
dCB3YXkuCisKKyAgICAgICAgVGhlcmUgYXJlIHRocmVlIGJpZyBjaGFuZ2VzOgorICAgICAgICAx
LiBUbyBlbmFibGUgb3IgZGlzYWJsZSB0aGlzIGZlYXR1cmUsIHdlIHVzZSBzZXRTaG93RGVidWdC
b3JkZXJzKGJvb2wpIGFuZAorICAgICAgICBzZXRTaG93UmVwYWludENvdW50ZXIoYm9vbCkgaW4g
U2V0dGluZ3MuCisgICAgICAgIEFzIHdlIGRpZCwgaWYgW1FUX11XRUJLSVRfU0hPV19DT01QT1NJ
VElOR19ERUJVR19WSVNVQUxTIGlzIHNldCB0byAxLCBib3RoCisgICAgICAgIHNldHRpbmdzIGFy
ZSBzZXQgdG8gdHJ1ZS4gSXQgbWVhbnMgdGhhdCBub3cgd2UgY2FuIHNlZSBkZWJ1ZyB2aXN1YWxz
IGluIFdLMQorICAgICAgICBhcyB3ZWxsIGFzIFdLMi4KKyAgICAgICAgMi4gVGV4dHVyZU1hcHBl
ckxheWVyIGhhcyB0aGUgZGVidWcgdmlzdWFscyBsaWtlIEdyYXBoaWNzTGF5ZXIuCisgICAgICAg
IEJvdGggZGVidWcgYm9yZGVyIGFuZCByZXBhaW50IGNvdW50IGFyZSBjYWxsZWQgYXMgdGhlIGRl
YnVnIHZpc3VhbHMuCisgICAgICAgIDMuIFdlIHVzZSB0aGUgc2FtZSBjb2xvciBhbmQgd2lkdGgg
dG8gTWFjIHBvcnQgYmVjYXVzZSB3ZSBnZXQgYm90aCBpbmZvIHVzaW5nCisgICAgICAgIEdyYXBo
aWNzTGF5ZXI6OnVwZGF0ZURlYnVnSW5kaWNhdG9ycygpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cy4gVGhpcyBmdW5jdGlvbmFsaXR5IGlzIGZvciBkZWJ1Z2dpbmcsIHNvIHdlIGNhbm5vdCB0ZXN0
IHVzaW5nIERSVC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1h
a2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzTmVlZHNE
aXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpz
ZXRDb250ZW50c1RvSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXI6OnNldFNob3dEZWJ1Z0JvcmRlcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRTaG93UmVwYWludENv
dW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmZs
dXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnVwZGF0ZURlYnVnQm9yZGVyQW5kUmVwYWludENv
dW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRE
ZWJ1Z0JvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
cjo6dXBkYXRlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyOjpwcmVwYXJlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRSZXBhaW50Q291bnQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oOgorICAg
ICAgICAoR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmRlYnVnQm9yZGVyQ29sb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmRlYnVnQm9yZGVyV2lkdGgpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXI6OmRyYXdEZWJ1Z1Zpc3VhbHMpOgorICAgICAgICAg
ICAgRHJhdyBkZWJ1ZyB2aXN1YWxzIHVzaW5nIGRyYXdCb3JkZXIoKSBhbmQgZHJhd1JlcGFpbnRD
b3VudGVyKCkuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oOgorICAgICAgICAoVGV4dHVyZU1hcHBlcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpw
YWludFRvVGV4dHVyZU1hcHBlcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6ZHJhd0RlYnVnVmlzdWFscyk6Cisg
ICAgICAgICAgICBPdmVycmlkZSBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllcjo6ZHJhd0RlYnVn
VmlzdWFscygpIHRvIGRyYXcKKyAgICAgICAgICAgIGRlYnVnIHZpc3VhbHMgZm9yIGVhY2ggdGls
ZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tp
bmdTdG9yZS5oOgorICAgICAgICAoVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbnZlcnRBQkdSVG9BUkdCKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdMOjpkcmF3UmVwYWludENvdW50ZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaDoKKyAg
ICAgICAgKFRleHR1cmVNYXBwZXJHTCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
dXJlTWFwcGVySW1hZ2VCdWZmZXI6OmRyYXdCb3JkZXIpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXI6OmRyYXdSZXBhaW50Q291
bnRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJ
bWFnZUJ1ZmZlci5oOgorICAgICAgICAoVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxmKToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhp
c0xheWVyT25seSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJMYXllci5oOgorICAgICAgICAoU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVy
ZU1hcHBlckxheWVyOjpTdGF0ZTo6U3RhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllcjo6
ZHJhd0RlYnVnVmlzdWFscyk6CisgICAgICAgICAgICBUZXh0dXJlTWFwcGVyTGF5ZXIgY2FsbHMg
dGhpcyBtZXRob2QgdG8gZHJhdyB0aGUgZGVidWcgdmlzdWxhcy4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIpOgorCiAyMDEz
LTAxLTEzICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCiAgICAg
ICAgIFtUZXhNYXBdIFVzZSBhIHByZW11bGlwbGllZCBjb2xvciBpbiBUZXh0dXJlTWFwcGVyR0wu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L2VmbC9DaGFuZ2VMb2cKaW5kZXggMjdiYzZiZWNkNmIyODY4YzFlOTUyYjEwN2QzMGM2NzZiMDVk
OGE3Ny4uNDM0MDBhODNjNWUzZjY4OGVhMDc0ZGQ4ODQ2YmRlOWYxZjhlZDIxNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEzLTAxLTE0ICBIdWFuZyBEb25nc3VuZyAgPGx1
eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFtRdF1bRUZMXVtHVEtdW1RleE1hcF0g
UmVmYWN0b3IgY29kZSByZWxhdGVkIHRvIGRlYnVnIGJvcmRlciBhbmQgcmVwYWludCBjb3VudC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTc4Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElmIFdFQktJ
VF9TSE9XX0NPTVBPU0lUSU5HX0RFQlVHX1ZJU1VBTFMgaXMgc2V0IHRvIDEsIHNldAorICAgICAg
ICBzaG93RGVidWdCb3JkZXJzIGFuZCBzaG93UmVwYWludENvdW50ZXIgaW4gU2V0dGluZ3MgdG8g
dHJ1ZS4KKworICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6CisgICAgICAgIChfZXdrX3ZpZXdf
cHJpdl9uZXcpOgorCiAyMDEzLTAxLTEzICBLd2FuZ1lvbmcgQ2hvaSAgPGt5MC5jaG9pQHNhbXN1
bmcuY29tPgogCiAgICAgICAgIFtFRkxdIFVucmV2aWV3ZWQgYnVpbGQgZml4IGFmdGVyIHIxMzk1
NDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvZ3RrL0NoYW5nZUxvZwppbmRleCBmMzU1MDQxNjU4ZDdjZjkwNTYxOTNmMzJmNDNkNzI2Zjkz
ZTEzNzFkLi4xNDM1Y2E1NzE4OTk2NzFmOGNmNDI1YjA1ZGVmNjE3OTk0YTdlOTVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTMtMDEtMTQgIEh1YW5nIERvbmdzdW5nICA8
bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CisKKyAgICAgICAgW1F0XVtFRkxdW0dUS11bVGV4TWFw
XSBSZWZhY3RvciBjb2RlIHJlbGF0ZWQgdG8gZGVidWcgYm9yZGVyIGFuZCByZXBhaW50IGNvdW50
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1Nzg3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSWYgV0VC
S0lUX1NIT1dfQ09NUE9TSVRJTkdfREVCVUdfVklTVUFMUyBpcyBzZXQgdG8gMSwgc2V0CisgICAg
ICAgIHNob3dEZWJ1Z0JvcmRlcnMgYW5kIHNob3dSZXBhaW50Q291bnRlciBpbiBTZXR0aW5ncyB0
byB0cnVlLgorCisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwOgorICAgICAgICAo
d2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aW5ncyk6CisKIDIwMTMtMDEtMTEgIENhcmxvcyBH
YXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQu
IFVwZGF0ZSBORVdTIGFuZCBjb25maWd1cmUuYWMgZm9yIDEuMTEuNCByZWxlYXNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdl
TG9nCmluZGV4IGM2ODczZDcxZDFlMjRhYTNlOGE4NjQ5NjFjMTQ1ZWE5NzkxZjZhYWYuLmUwOTVk
ZDI3ZjYxOWU2MDBjM2ZhNmUwOWFmNzJhZjg1MTM3YThkYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTYgQEAKKzIwMTMtMDEtMTQgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFu
eTEwMC5uZXQ+CisKKyAgICAgICAgW1F0XVtFRkxdW0dUS11bVGV4TWFwXSBSZWZhY3RvciBjb2Rl
IHJlbGF0ZWQgdG8gZGVidWcgYm9yZGVyIGFuZCByZXBhaW50IGNvdW50LgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1Nzg3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSWYgUVRfV0VCS0lUX1NIT1dfQ09N
UE9TSVRJTkdfREVCVUdfVklTVUFMUyBpcyBzZXQgdG8gMSwgc2V0CisgICAgICAgIHNob3dEZWJ1
Z0JvcmRlcnMgYW5kIHNob3dSZXBhaW50Q291bnRlciBpbiBTZXR0aW5ncyB0byB0cnVlLgorCisg
ICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgIChRV2ViU2V0dGluZ3NQcml2
YXRlOjphcHBseSk6CisKIDIwMTMtMDEtMTEgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29t
cGFueTEwMC5uZXQ+CiAKICAgICAgICAgW1RleE1hcF0gUmVuYW1lIGN1cnJlbnRbVHJhbnNmb3Jt
fE9wYWNpdHl8RmlsdGVyc10gaW4gVGV4dHVyZU1hcHBlckxheWVyLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGNk
OWVhYTMwZTYxNWI2ZDVmOTFlOGNkNGE1N2JmMjIyZDJjZjk4MTkuLmI4MjNmYzRlZDMyZWFkMDcy
MjIxY2I5NDI4MTdlZmEwYjRjODEyYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NCBAQAorMjAx
My0wMS0xNCAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKworICAg
ICAgICBbUXRdW0VGTF1bR1RLXVtUZXhNYXBdIFJlZmFjdG9yIGNvZGUgcmVsYXRlZCB0byBkZWJ1
ZyBib3JkZXIgYW5kIHJlcGFpbnQgY291bnQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU3ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGVyZSBhcmUgdGhyZWUgYmlnIGNoYW5nZXM6CisgICAgICAg
IDEuIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllciBzZW5kcyBkZWJ1Z2dpbmcgdmlzdWFscyB0byBV
SSBQcm9jZXNzLgorICAgICAgICAyLiBJZiBbUVRfXVdFQktJVF9TSE9XX0NPTVBPU0lUSU5HX0RF
QlVHX1ZJU1VBTFMgaXMgc2V0IHRvIDEsIHNldAorICAgICAgICBzaG93RGVidWdCb3JkZXJzIGFu
ZCBzaG93UmVwYWludENvdW50ZXIgaW4gU2V0dGluZ3MgdG8gdHJ1ZS4KKyAgICAgICAgMy4gV2hl
biB1cGRhdGluZyBhIGJhY2tpbmcgc3RvcmUsIGEgY29tcG9zaXRlZCBpbWFnZSBvciBhIHBsYXRm
b3JtCisgICAgICAgIGNhbnZhcyBsYXllciwgaW5jcmVtZW50IGEgcmVwYWludCBjb3VudC4KKwor
ICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJJbmZv
Lmg6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJJbmZvOjpDb29yZGluYXRlZExh
eWVySW5mbyk6CisgICAgICAgIChDb29yZGluYXRlZExheWVySW5mbyk6CisgICAgICAgICogVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6dXBkYXRlVGlsZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpwYWludFRpbGVzVG9UZXh0
dXJlTWFwcGVyKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OmRy
YXdEZWJ1Z1Zpc3VhbHMpOgorICAgICAgICAgICAgT3ZlcnJpZGUgVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXI6OmRyYXdEZWJ1Z1Zpc3VhbHMoKSB0byBkcmF3CisgICAgICAgICAgICBkZWJ1ZyB2
aXN1YWxzIGZvciBlYWNoIHRpbGUuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmg6CisgICAg
ICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZTo6Q29vcmRpbmF0ZWRCYWNr
aW5nU3RvcmVUaWxlKToKKyAgICAgICAgKENvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZSk6Cisg
ICAgICAgIChDb29yZGluYXRlZEJhY2tpbmdTdG9yZSk6CisgICAgICAgICogVUlQcm9jZXNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6c2V0UmVwYWludENv
dW50KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaDoKKyAgICAgICAgKENvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjpzZXRSZXBhaW50Q291bnQp
OgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6
OnNldExheWVyU3RhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNz
L0xheWVyVHJlZVJlbmRlcmVyLmg6CisgICAgICAgIChMYXllclRyZWVSZW5kZXJlcik6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcjo6c2V0U2hvd0RlYnVnQm9yZGVyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRTaG93UmVwYWludENvdW50ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzeW5jSW1hZ2VC
YWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c3lu
Y0xheWVyU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
OjpzZXREZWJ1Z0JvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXI6OnN5bmNDYW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyOjp0aWxlZEJhY2tpbmdTdG9yZVBhaW50RW5kKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaDoK
KyAgICAgICAgKENvb3JkaW5hdGVkR3JhcGhpY3NMYXllckNsaWVudCk6CisgICAgICAgIChDb29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0UmVwYWludENvdW50KToKKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRUaWxlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6Q29vcmRpbmF0ZWRUaWxlOjp1cGRhdGVCYWNrQnVmZmVyKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OnVwZGF0ZVByZWZlcmVuY2VzKToKKwogMjAxMy0wMS0xMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9A
YXBwbGUuY29tPgogCiAgICAgICAgIEpJVFRodW5rcyBzaG91bGQgbm90IGNvbXBpbGUgb25seSBi
ZWNhdXNlIG9mIGx1Y2sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMWJjZTYyMTFjMjY1MjgzOWM0
OGI1MDE2OGIzNjUyMTBhNmE1NjFmYS4uYzcyOGRhMTY5YjAyODM1MjMyZTU1ZTNkZmMzZTI4ZTM1
MDJmZGRiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTE5ODAsNiArMTk4MCw3IEBAIHNldChX
ZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckJhY2tpbmdTdG9yZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckltYWdlQnVmZmVyLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyTGF5ZXIuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyLmNwcAogCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9B
ZmZpbmVUcmFuc2Zvcm0uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9NYXRy
aXgzRFRyYW5zZm9ybU9wZXJhdGlvbi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmlu
ZGV4IGZhYmYzNTM1MzkwNDRhZmViNzA0MDFmMjZhYzE4MTMxM2NjZDY3NWYuLjVhYzEyYTI5MmE3
ZWY0ZjY2ZDFmNzA0MjE1ZDEyYThkNTcxOGY5NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQpAQCAtNjQ0MCw2ICs2NDQwLDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVy
LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyTGF5ZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckxheWVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oCiBl
bmRpZiAgIyBFTkQgVVNFX1RFWFRVUkVfTUFQUEVSX0NBSVJPCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IGVk
ZGZhNzIyMTdjMGFmYmU5OTVlZTk0NjI4YmIzMjBkMjk1NmMzZTAuLjRkNTI3MTRmODAxNzQwMzU3
YTY4ZDE1OGVhOTFiNWE1NmJhYWI4N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Rhcmdl
dC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMjg2OCw2ICsyODY4LDcg
QEAgU09VUkNFUyArPSBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJCYWNraW5nU3RvcmUuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckltYWdlQnVmZmVyLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJMYXllci5jcHAgXAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllci5jcHAgXAogICAgIHBsYXRmb3JtL25ldHdvcmsvRE5TUmVz
b2x2ZVF1ZXVlLmNwcCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9NSU1FU25pZmZpbmcuY3BwIFwK
ICAgICBwbGF0Zm9ybS9uZXR3b3JrL3F0L0Nvb2tpZUphclF0LmNwcCBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAppbmRleCBlOTYyOTZiYTUxZTRhYTcxMTVkYmEy
MjZhYTU3ZmZlZjBlYzAxMjIyLi5hMWU3OTFiMzU5OWU4OGIzODg2NDhkY2EyNDE2NGJhNzYyZWVk
MzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKQEAgLTI0
LDE0ICsyNCw4IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckFuaW1hdGlvbi5oIgogI2luY2x1
ZGUgIkdyYXBoaWNzTGF5ZXJGYWN0b3J5LmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKLSNp
bmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgog
Ci0jaWYgVVNFKENBSVJPKQotI2luY2x1ZGUgIkNhaXJvVXRpbGl0aWVzLmgiCi0jaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGFz
c093blB0cjxHcmFwaGljc0xheWVyPiBHcmFwaGljc0xheWVyOjpjcmVhdGUoR3JhcGhpY3NMYXll
ckZhY3RvcnkqIGZhY3RvcnksIEdyYXBoaWNzTGF5ZXJDbGllbnQqIGNsaWVudCkKQEAgLTEwMCw2
ICs5NCwxMSBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXROZWVkc0Rpc3Bs
YXkoKQogKi8KIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzTmVl
ZHNEaXNwbGF5KCkKIHsKKyAgICBpZiAoaXNTaG93aW5nUmVwYWludENvdW50ZXIoKSkgeworICAg
ICAgICBpbmNyZW1lbnRSZXBhaW50Q291bnQoKTsKKyAgICAgICAgbV9jaGFuZ2VNYXNrIHw9IFRl
eHR1cmVNYXBwZXJMYXllcjo6UmVwYWludENvdW50Q2hhbmdlOworICAgIH0KKwogICAgIG5vdGlm
eUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkRpc3BsYXlDaGFuZ2UpOwogICAgIGFkZFJlcGFp
bnRSZWN0KGNvbnRlbnRzUmVjdCgpKTsKIH0KQEAgLTM2Myw2ICszNjIsMTEgQEAgdm9pZCBHcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNUb0ltYWdlKEltYWdlKiBpbWFnZSkK
ICAgICAgICAgaWYgKCFtX2NvbXBvc2l0ZWRJbWFnZSkKICAgICAgICAgICAgIG1fY29tcG9zaXRl
ZEltYWdlID0gVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGUoKTsKICAgICAg
ICAgbV9jb21wb3NpdGVkSW1hZ2UtPnNldENvbnRlbnRzVG9JbWFnZShpbWFnZSk7CisKKyAgICAg
ICAgaWYgKGlzU2hvd2luZ1JlcGFpbnRDb3VudGVyKCkpIHsKKyAgICAgICAgICAgIGluY3JlbWVu
dFJlcGFpbnRDb3VudCgpOworICAgICAgICAgICAgbV9jaGFuZ2VNYXNrIHw9IFRleHR1cmVNYXBw
ZXJMYXllcjo6UmVwYWludENvdW50Q2hhbmdlOworICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHIgPSAwOwogICAgICAgICBtX2NvbXBvc2l0
ZWRJbWFnZSA9IDA7CkBAIC0zODMsMTUgKzM4Nyw2MCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyOjpzZXRDb250ZW50c1RvTWVkaWEoVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIq
CiAgICAgbV9jb250ZW50c0xheWVyID0gbWVkaWE7CiB9CiAKK3ZvaWQgR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXI6OnNldFNob3dEZWJ1Z0JvcmRlcihib29sIHNob3cpCit7CisgICAgaWYgKGlz
U2hvd2luZ0RlYnVnQm9yZGVyKCkgPT0gc2hvdykKKyAgICAgICAgcmV0dXJuOworCisgICAgR3Jh
cGhpY3NMYXllcjo6c2V0U2hvd0RlYnVnQm9yZGVyKHNob3cpOworICAgIG5vdGlmeUNoYW5nZShU
ZXh0dXJlTWFwcGVyTGF5ZXI6OkRlYnVnVmlzdWFsc0NoYW5nZSk7Cit9CisKK3ZvaWQgR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXI6OnNldFNob3dSZXBhaW50Q291bnRlcihib29sIHNob3cpCit7
CisgICAgaWYgKGlzU2hvd2luZ1JlcGFpbnRDb3VudGVyKCkgPT0gc2hvdykKKyAgICAgICAgcmV0
dXJuOworCisgICAgR3JhcGhpY3NMYXllcjo6c2V0U2hvd1JlcGFpbnRDb3VudGVyKHNob3cpOwor
ICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkRlYnVnVmlzdWFsc0NoYW5nZSk7
Cit9CisKIC8qIFxyZWltcCAoR3JhcGhpY3NMYXllci5oKQogKi8KIHZvaWQgR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKQog
eworICAgIGlmIChtX2hhc093bkJhY2tpbmdTdG9yZSkKKyAgICAgICAgdXBkYXRlRGVidWdCb3Jk
ZXJBbmRSZXBhaW50Q291bnQoKTsKICAgICBtX2xheWVyLT5mbHVzaENvbXBvc2l0aW5nU3RhdGVG
b3JUaGlzTGF5ZXJPbmx5KHRoaXMpOwotICAgIHVwZGF0ZUJhY2tpbmdTdG9yZSgpOworICAgIGlm
IChtX2hhc093bkJhY2tpbmdTdG9yZSkKKyAgICAgICAgdXBkYXRlQmFja2luZ1N0b3JlKCk7CiAg
ICAgZGlkRmx1c2hDb21wb3NpdGluZ1N0YXRlKCk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXI6OnVwZGF0ZURlYnVnQm9yZGVyQW5kUmVwYWludENvdW50KCkKK3sKKyAgICBB
U1NFUlQobV9oYXNPd25CYWNraW5nU3RvcmUpOworCisgICAgbV91c2luZ1RpbGVkTGF5ZXIgPSBz
aG91bGRIYXZlQmFja2luZ1N0b3JlKCk7CisgICAgdXBkYXRlRGVidWdJbmRpY2F0b3JzKCk7CisK
KyAgICAvLyBXaGVuIHRoaXMgaGFzIGl0cyBvd24gYmFja2luZyBzdG9yZSAoaS5lLiBRdCBXSzEp
LCB1cGRhdGUgdGhlIHJlcGFpbnQgY291bnQgYmVmb3JlIGNhbGxpbmcgVGV4dHVyZU1hcHBlckxh
eWVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCkuCisgICAgYm9vbCBu
ZWVkc1RvUmVwYWludCA9IHNob3VsZEhhdmVCYWNraW5nU3RvcmUoKSAmJiAobV9uZWVkc0Rpc3Bs
YXkgfHwgIW1fbmVlZHNEaXNwbGF5UmVjdC5pc0VtcHR5KCkpOworICAgIGlmIChpc1Nob3dpbmdS
ZXBhaW50Q291bnRlcigpICYmIG5lZWRzVG9SZXBhaW50KSB7CisgICAgICAgIGluY3JlbWVudFJl
cGFpbnRDb3VudCgpOworICAgICAgICBtX2NoYW5nZU1hc2sgfD0gVGV4dHVyZU1hcHBlckxheWVy
OjpSZXBhaW50Q291bnRDaGFuZ2U7CisgICAgfQorfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyOjpzZXREZWJ1Z0JvcmRlcihjb25zdCBDb2xvciYgY29sb3IsIGZsb2F0IHdpZHRo
KQoreworICAgIC8vIFRoZSBkZWZhdWx0IHZhbHVlcyBmb3IgR3JhcGhpY3NMYXllciBkZWJ1ZyBi
b3JkZXJzIGFyZSBhIGxpdHRsZQorICAgIC8vIGhhcmQgdG8gc2VlIChzb21lIGxlc3MgdGhhbiBv
bmUgcGl4ZWwgd2lkZSksIHNvIHdlIGRvdWJsZSB0aGVpciBzaXplIGhlcmUuCisgICAgbV9kZWJ1
Z0JvcmRlckNvbG9yID0gY29sb3I7CisgICAgbV9kZWJ1Z0JvcmRlcldpZHRoID0gd2lkdGggKiAy
OworICAgIG1fY2hhbmdlTWFzayB8PSBUZXh0dXJlTWFwcGVyTGF5ZXI6OkRlYnVnVmlzdWFsc0No
YW5nZTsKK30KKwogLyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgpCiAqLwogdm9pZCBHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlKGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCkKQEAgLTQxNiw5ICs0NjUsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyOjpkaWRGbHVzaENvbXBvc2l0aW5nU3RhdGUoKQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyOjp1cGRhdGVCYWNraW5nU3RvcmUoKQogewotICAgIGlmICghbV9oYXNPd25CYWNr
aW5nU3RvcmUpCi0gICAgICAgIHJldHVybjsKLQorICAgIEFTU0VSVChtX2hhc093bkJhY2tpbmdT
dG9yZSk7CiAgICAgcHJlcGFyZUJhY2tpbmdTdG9yZSgpOwogICAgIG1fbGF5ZXItPnNldEJhY2tp
bmdTdG9yZShtX2JhY2tpbmdTdG9yZSk7CiB9CkBAIC00NDgsMzQgKzQ5NSw3IEBAIHZvaWQgR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnByZXBhcmVCYWNraW5nU3RvcmUoKQogI2VuZGlmCiAg
ICAgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUgPSBzdGF0aWNf
Y2FzdDxUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUqPihtX2JhY2tpbmdTdG9yZS5nZXQo
KSk7CiAKLSAgICBpZiAoaXNTaG93aW5nUmVwYWludENvdW50ZXIoKSkKLSAgICAgICAgaW5jcmVt
ZW50UmVwYWludENvdW50KCk7Ci0KLSAgICAvLyBQYWludCBpbnRvIGFuIGludGVybWVkaWF0ZSBi
dWZmZXIgdG8gYXZvaWQgcGFpbnRpbmcgY29udGVudCBtb3JlIHRoYW4gb25jZS4KLSAgICBib29s
IHBhaW50T25jZSA9IHRydWU7Ci0gICAgY29uc3QgSW50U2l6ZSBtYXhUZXh0dXJlU2l6ZSA9IHRl
eHR1cmVNYXBwZXItPm1heFRleHR1cmVTaXplKCk7Ci0gICAgLy8gV2UgbmVlZCB0byBwYWludCBk
aXJlY3RseSBpZiB0aGUgZGlydHkgcmVjdCBleGNlZWRzIG9uZSBvZiB0aGUgbWF4aW11bSBkaW1l
bnNpb25zLgotICAgIGlmIChkaXJ0eVJlY3Qud2lkdGgoKSA+IG1heFRleHR1cmVTaXplLndpZHRo
KCkgfHwgZGlydHlSZWN0LmhlaWdodCgpID4gbWF4VGV4dHVyZVNpemUuaGVpZ2h0KCkpCi0gICAg
ICAgIHBhaW50T25jZSA9IGZhbHNlOwotCi0gICAgaWYgKHBhaW50T25jZSkgewotICAgICAgICBP
d25QdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShkaXJ0
eVJlY3Quc2l6ZSgpKTsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0gaW1hZ2VC
dWZmZXItPmNvbnRleHQoKTsKLSAgICAgICAgY29udGV4dC0+c2V0SW1hZ2VJbnRlcnBvbGF0aW9u
UXVhbGl0eSh0ZXh0dXJlTWFwcGVyLT5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkpOwotICAg
ICAgICBjb250ZXh0LT5zZXRUZXh0RHJhd2luZ01vZGUodGV4dHVyZU1hcHBlci0+dGV4dERyYXdp
bmdNb2RlKCkpOwotICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoLWRpcnR5UmVjdC54KCksIC1k
aXJ0eVJlY3QueSgpKTsKLSAgICAgICAgcGFpbnRHcmFwaGljc0xheWVyQ29udGVudHMoKmNvbnRl
eHQsIGRpcnR5UmVjdCk7Ci0KLSAgICAgICAgaWYgKGlzU2hvd2luZ1JlcGFpbnRDb3VudGVyKCkp
Ci0gICAgICAgICAgICBkcmF3UmVwYWludENvdW50ZXIoY29udGV4dCk7Ci0KLSAgICAgICAgUmVm
UHRyPEltYWdlPiBpbWFnZSA9IGltYWdlQnVmZmVyLT5jb3B5SW1hZ2UoRG9udENvcHlCYWNraW5n
U3RvcmUpOwotICAgICAgICBiYWNraW5nU3RvcmUtPnVwZGF0ZUNvbnRlbnRzKHRleHR1cmVNYXBw
ZXIsIGltYWdlLmdldCgpLCBtX3NpemUsIGRpcnR5UmVjdCwgQml0bWFwVGV4dHVyZTo6VXBkYXRl
Q2FuTW9kaWZ5T3JpZ2luYWxJbWFnZURhdGEpOwotICAgIH0gZWxzZQotICAgICAgICBiYWNraW5n
U3RvcmUtPnVwZGF0ZUNvbnRlbnRzKHRleHR1cmVNYXBwZXIsIHRoaXMsIG1fc2l6ZSwgZGlydHlS
ZWN0LCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDYW5Nb2RpZnlPcmlnaW5hbEltYWdlRGF0YSk7Ci0K
LSAgICBiYWNraW5nU3RvcmUtPnNldFNob3dEZWJ1Z0JvcmRlcnMoaXNTaG93aW5nRGVidWdCb3Jk
ZXIoKSk7Ci0gICAgYmFja2luZ1N0b3JlLT5zZXREZWJ1Z0JvcmRlcihtX2RlYnVnQm9yZGVyQ29s
b3IsIG1fZGVidWdCb3JkZXJXaWR0aCk7CisgICAgYmFja2luZ1N0b3JlLT51cGRhdGVDb250ZW50
cyh0ZXh0dXJlTWFwcGVyLCB0aGlzLCBtX3NpemUsIGRpcnR5UmVjdCwgQml0bWFwVGV4dHVyZTo6
VXBkYXRlQ2FuTW9kaWZ5T3JpZ2luYWxJbWFnZURhdGEpOwogCiAgICAgbV9uZWVkc0Rpc3BsYXkg
PSBmYWxzZTsKICAgICBtX25lZWRzRGlzcGxheVJlY3QgPSBJbnRSZWN0KCk7CkBAIC00ODYsNDAg
KzUwNiw2IEBAIGJvb2wgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNob3VsZEhhdmVCYWNr
aW5nU3RvcmUoKSBjb25zdAogICAgIHJldHVybiBkcmF3c0NvbnRlbnQoKSAmJiBjb250ZW50c0Fy
ZVZpc2libGUoKSAmJiAhbV9zaXplLmlzRW1wdHkoKTsKIH0KIAotI2lmIFVTRShDQUlSTykKLXZv
aWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmRyYXdSZXBhaW50Q291bnRlcihHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQpCi17Ci0gICAgY2Fpcm9fdCogY3IgPSBjb250ZXh0LT5wbGF0Zm9y
bUNvbnRleHQoKS0+Y3IoKTsKLSAgICBjYWlyb19zYXZlKGNyKTsKLQotICAgIENTdHJpbmcgcmVw
YWludENvdW50ID0gU3RyaW5nOjpmb3JtYXQoIiVpIiwgdGhpcy0+cmVwYWludENvdW50KCkpLnV0
ZjgoKTsKLSAgICBjYWlyb19zZWxlY3RfZm9udF9mYWNlKGNyLCAic2Fucy1zZXJpZiIsIENBSVJP
X0ZPTlRfU0xBTlRfTk9STUFMLCBDQUlST19GT05UX1dFSUdIVF9CT0xEKTsKLSAgICBjYWlyb19z
ZXRfZm9udF9zaXplKGNyLCAxOCk7Ci0KLSAgICBjYWlyb190ZXh0X2V4dGVudHNfdCByZXBhaW50
VGV4dEV4dGVudHM7Ci0gICAgY2Fpcm9fdGV4dF9leHRlbnRzKGNyLCByZXBhaW50Q291bnQuZGF0
YSgpLCAmcmVwYWludFRleHRFeHRlbnRzKTsKLQotICAgIHN0YXRpYyBjb25zdCBpbnQgcmVwYWlu
dENvdW50Qm9yZGVyV2lkdGggPSAxMDsKLSAgICBzZXRTb3VyY2VSR0JBRnJvbUNvbG9yKGNyLCBp
c1Nob3dpbmdEZWJ1Z0JvcmRlcigpID8gbV9kZWJ1Z0JvcmRlckNvbG9yIDogQ29sb3IoMCwgMjU1
LCAwLCAxMjcpKTsKLSAgICBjYWlyb19yZWN0YW5nbGUoY3IsIDAsIDAsCi0gICAgICAgIHJlcGFp
bnRUZXh0RXh0ZW50cy53aWR0aCArIChyZXBhaW50Q291bnRCb3JkZXJXaWR0aCAqIDIpLAotICAg
ICAgICByZXBhaW50VGV4dEV4dGVudHMuaGVpZ2h0ICsgKHJlcGFpbnRDb3VudEJvcmRlcldpZHRo
ICogMikpOwotICAgIGNhaXJvX2ZpbGwoY3IpOwotCi0gICAgY2Fpcm9fc2V0X3NvdXJjZV9yZ2Io
Y3IsIDEsIDEsIDEpOwotICAgIGNhaXJvX21vdmVfdG8oY3IsIHJlcGFpbnRDb3VudEJvcmRlcldp
ZHRoLCByZXBhaW50VGV4dEV4dGVudHMuaGVpZ2h0ICsgcmVwYWludENvdW50Qm9yZGVyV2lkdGgp
OwotICAgIGNhaXJvX3Nob3dfdGV4dChjciwgcmVwYWludENvdW50LmRhdGEoKSk7Ci0KLSAgICBj
YWlyb19yZXN0b3JlKGNyKTsKLX0KLSNlbHNlCi12b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyOjpkcmF3UmVwYWludENvdW50ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQotewotICAg
IG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLSNlbmRpZgotCiBib29sIEdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyOjphZGRBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlz
dCwgY29uc3QgSW50U2l6ZSYgYm94U2l6ZSwgY29uc3QgQW5pbWF0aW9uKiBhbmltLCBjb25zdCBT
dHJpbmcmIGtleWZyYW1lc05hbWUsIGRvdWJsZSB0aW1lT2Zmc2V0KQogewogICAgIEFTU0VSVCgh
a2V5ZnJhbWVzTmFtZS5pc0VtcHR5KCkpOwpAQCAtNTYxLDE0ICs1NDcsNiBAQCB2b2lkIEdyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjphbmltYXRpb25TdGFydGVkVGltZXJGaXJlZChUaW1lcjxH
cmFwaGljc0xheWVyVAogICAgIGNsaWVudCgpLT5ub3RpZnlBbmltYXRpb25TdGFydGVkKHRoaXMs
IC8qIERPTSB0aW1lICovIFdURjo6Y3VycmVudFRpbWUoKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXI6OnNldERlYnVnQm9yZGVyKGNvbnN0IENvbG9yJiBjb2xvciwgZmxv
YXQgd2lkdGgpCi17Ci0gICAgLy8gVGhlIGRlZmF1bHQgdmFsdWVzIGZvciBHcmFwaGljc0xheWVy
IGRlYnVnIGJvcmRlcnMgYXJlIGEgbGl0dGxlCi0gICAgLy8gaGFyZCB0byBzZWUgKHNvbWUgbGVz
cyB0aGFuIG9uZSBwaXhlbCB3aWRlKSwgc28gd2UgZG91YmxlIHRoZWlyIHNpemUgaGVyZS4KLSAg
ICBtX2RlYnVnQm9yZGVyQ29sb3IgPSBjb2xvcjsKLSAgICBtX2RlYnVnQm9yZGVyV2lkdGggPSB3
aWR0aCAqIDI7Ci19Ci0KICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiBib29sIEdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyOjpzZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRl
cnMpCiB7CkBAIC01NzcsNCArNTU1LDEwIEBAIGJvb2wgR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXI6OnNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKIH0KICNlbmRp
ZgogCit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRSZXBhaW50Q291bnQoaW50
IHZhbHVlKQoreworICAgIG1fcmVwYWludENvdW50ID0gdmFsdWU7CisgICAgbm90aWZ5Q2hhbmdl
KFRleHR1cmVNYXBwZXJMYXllcjo6UmVwYWludENvdW50Q2hhbmdlKTsKK30KKwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaAppbmRleCAxMmMzMTk1OTFiNzI2YzdjOWYw
YmEyYmRmZGY0Mzg0ZTdkZWExNzEzLi4zOTMzOGMzN2FiNzgyNWJiYmFkMDA3OTI3N2M5OGRiM2Fl
ZjVkNGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaApAQCAtMjAs
NyArMjAsNiBAQAogI2lmbmRlZiBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcl9oCiAjZGVmaW5l
IEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyX2gKIAotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVy
Q2xpZW50LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKQEAgLTY2LDYgKzY1LDkgQEAgcHVibGljOgog
ICAgIENvbG9yIHNvbGlkQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX3NvbGlkQ29sb3I7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNUb01lZGlhKFBsYXRmb3JtTGF5ZXIqKTsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNUb0NhbnZhcyhQbGF0Zm9ybUxheWVyKiBjYW52YXMpIHsg
c2V0Q29udGVudHNUb01lZGlhKGNhbnZhcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvd0Rl
YnVnQm9yZGVyKGJvb2wpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXREZWJ1Z0JvcmRl
cihjb25zdCBDb2xvciYsIGZsb2F0IHdpZHRoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0U2hvd1JlcGFpbnRDb3VudGVyKGJvb2wpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBm
bHVzaENvbXBvc2l0aW5nU3RhdGUoY29uc3QgRmxvYXRSZWN0Jik7CiAgICAgdmlydHVhbCB2b2lk
IGZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKTsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpOwpAQCAtODEsOCArODMsNiBAQCBwdWJsaWM6
CiAKICAgICBUZXh0dXJlTWFwcGVyTGF5ZXIqIGxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXll
ci5nZXQoKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHNldERlYnVnQm9yZGVyKGNvbnN0IENvbG9y
JiwgZmxvYXQgd2lkdGgpOwotCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogICAgIHZpcnR1YWwg
Ym9vbCBzZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKTsKICNlbmRpZgpAQCAtOTMs
MTAgKzkzLDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEZpeGVkVG9WaWV3cG9ydChib29sIGZp
eGVkKSB7IG1fZml4ZWRUb1ZpZXdwb3J0ID0gZml4ZWQ7IH0KICAgICBib29sIGZpeGVkVG9WaWV3
cG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fZml4ZWRUb1ZpZXdwb3J0OyB9CiAKLSAgICB2b2lkIGRy
YXdSZXBhaW50Q291bnRlcihHcmFwaGljc0NvbnRleHQqKTsKKyAgICBDb2xvciBkZWJ1Z0JvcmRl
ckNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z0JvcmRlckNvbG9yOyB9CisgICAgZmxvYXQg
ZGVidWdCb3JkZXJXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdCb3JkZXJXaWR0aDsgfQor
CisgICAgdm9pZCBzZXRSZXBhaW50Q291bnQoaW50IHZhbHVlKTsKKwogcHJpdmF0ZToKICAgICB2
aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVkKCk7CiAgICAgdm9pZCBkaWRGbHVzaENvbXBvc2l0
aW5nU3RhdGUoKTsKKyAgICB2b2lkIHVwZGF0ZURlYnVnQm9yZGVyQW5kUmVwYWludENvdW50KCk7
CiAgICAgdm9pZCB1cGRhdGVCYWNraW5nU3RvcmUoKTsKICAgICB2b2lkIHByZXBhcmVCYWNraW5n
U3RvcmUoKTsKICAgICBib29sIHNob3VsZEhhdmVCYWNraW5nU3RvcmUoKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyLmNwcAppbmRleCAzN2Y3MTU0ZjFjNjlkOThiNGEyM2IwYzBjZDc0OGVmNWQ5ZDc1OTA4
Li4xOGZlYmVlZGRjMzdiNzAzOTBhMTAyYTM2MjQzYTczN2U3MGEwMzAzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXIuY3BwCkBAIC0xNDYsNiArMTQ2LDE0IEBAIFRleHR1cmVNYXBwZXI6OlRleHR1cmVNYXBwZXIo
QWNjZWxlcmF0aW9uTW9kZSBhY2NlbGVyYXRpb25Nb2RlKQogVGV4dHVyZU1hcHBlcjo6flRleHR1
cmVNYXBwZXIoKQogeyB9CiAKK3ZvaWQgVGV4dHVyZU1hcHBlcjo6ZHJhd0RlYnVnVmlzdWFscyhj
b25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0
cmFuc2Zvcm0sIGJvb2wgc2hvd0RlYnVnQm9yZGVycywgY29uc3QgQ29sb3ImIGJvcmRlckNvbG9y
LCBmbG9hdCBib3JkZXJXaWR0aCwgYm9vbCBzaG93UmVwYWludENvdW50ZXIsIGludCByZXBhaW50
Q291bnQpCit7CisgICAgaWYgKHNob3dEZWJ1Z0JvcmRlcnMpCisgICAgICAgIGRyYXdCb3JkZXIo
Ym9yZGVyQ29sb3IsIGJvcmRlcldpZHRoLCB0YXJnZXRSZWN0LCB0cmFuc2Zvcm0pOworICAgIGlm
IChzaG93UmVwYWludENvdW50ZXIpCisgICAgICAgIGRyYXdSZXBhaW50Q291bnRlcihyZXBhaW50
Q291bnQsIGJvcmRlckNvbG9yLCB0YXJnZXRSZWN0LmxvY2F0aW9uKCksIHRyYW5zZm9ybSk7Cit9
CisKIHZvaWQgQml0bWFwVGV4dHVyZTo6dXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciogdGV4
dHVyZU1hcHBlciwgR3JhcGhpY3NMYXllciogc291cmNlTGF5ZXIsIGNvbnN0IEludFJlY3QmIHRh
cmdldFJlY3QsIGNvbnN0IEludFBvaW50JiBvZmZzZXQsIFVwZGF0ZUNvbnRlbnRzRmxhZyB1cGRh
dGVDb250ZW50c0ZsYWcpCiB7CiAgICAgT3duUHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9
IEltYWdlQnVmZmVyOjpjcmVhdGUodGFyZ2V0UmVjdC5zaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmgKaW5k
ZXggYzcyNDFhNmM5YTcyMmE2NDUyZjdjMThjOWQ2Njk3MTI3NjY5MzY2Yi4uMDJhMGQ3ZDI4NzE3
MTVkMDg4NDVlMmExMmNlYmI0YzIxYWRkZGMzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oCkBAIC0xMzAsMTAg
KzEzMCwxMCBAQCBwdWJsaWM6CiAgICAgICAgIEFsbEVkZ2VzID0gTGVmdEVkZ2UgfCBSaWdodEVk
Z2UgfCBUb3BFZGdlIHwgQm90dG9tRWRnZSwKICAgICB9OwogCi0gICAgdmlydHVhbCB2b2lkIGRy
YXdCb3JkZXIoY29uc3QgQ29sb3ImLCBmbG9hdCBib3JkZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0
JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4
ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVw
YWludENvdW50ZXIoaW50IHZhbHVlLCBpbnQgcG9pbnRTaXplLCBjb25zdCBGbG9hdFBvaW50Jiwg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCA9IFRyYW5zZm9ybWF0
aW9uTWF0cml4KCkpID0gMDsKKwogICAgIHZpcnR1YWwgdm9pZCBkcmF3VGV4dHVyZShjb25zdCBC
aXRtYXBUZXh0dXJlJiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXQsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBmbG9h
dCBvcGFjaXR5ID0gMS4wZiwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUgPSAwLCB1
bnNpZ25lZCBleHBvc2VkRWRnZXMgPSBBbGxFZGdlcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBk
cmF3U29saWRDb2xvcihjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYsIGNvbnN0IENvbG9yJikgPSAwOworICAgIHZvaWQgZHJhd0RlYnVnVmlzdWFscyhjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGJvb2wgc2hvd0RlYnVnQm9y
ZGVycywgY29uc3QgQ29sb3ImLCBmbG9hdCBib3JkZXJXaWR0aCwgYm9vbCBzaG93UmVwYWludENv
dW50ZXIsIGludCByZXBhaW50Q291bnQpOwogCiAgICAgLy8gbWFrZXMgYSBzdXJmYWNlIHRoZSB0
YXJnZXQgZm9yIHRoZSBmb2xsb3dpbmcgZHJhd1RleHR1cmUgY2FsbHMuCiAgICAgdmlydHVhbCB2
b2lkIGJpbmRTdXJmYWNlKEJpdG1hcFRleHR1cmUqIHN1cmZhY2UpID0gMDsKQEAgLTE2NCw2ICsx
NjQsOSBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgVGV4dHVyZU1hcHBlcihB
Y2NlbGVyYXRpb25Nb2RlKTsKIAorICAgIHZpcnR1YWwgdm9pZCBkcmF3Qm9yZGVyKGNvbnN0IENv
bG9yJiwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVwYWludENvdW50ZXIo
aW50IHJlcGFpbnRDb3VudCwgY29uc3QgQ29sb3ImLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmKSA9IDA7CisKICAgICBHcmFwaGljc0NvbnRleHQqIG1fY29u
dGV4dDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmNw
cAppbmRleCBlODk5MjUzMWIyODdjNWI1OTc3OWU2NDc2ZTgwMWI4YjY5OTVjMmM3Li4yMjY3ODlj
NWRmMjA2MDU4ZDg5NDRkOTZiNjQ5YzA3NWFmZDk5YjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJCYWNraW5nU3RvcmUuY3BwCkBAIC0xMDYsNyArMTA2LDYgQEAgdm9pZCBUZXh0dXJlTWFw
cGVyVGlsZTo6cGFpbnQoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgVHJhbnNm
b3JtYXRpb24KIH0KIAogVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpUZXh0dXJlTWFw
cGVyVGlsZWRCYWNraW5nU3RvcmUoKQotICAgIDogbV9kcmF3c0RlYnVnQm9yZGVycyhmYWxzZSkK
IHsKIH0KIApAQCAtMTM4LDExICsxMzcsMTYgQEAgdm9pZCBUZXh0dXJlTWFwcGVyVGlsZWRCYWNr
aW5nU3RvcmU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmUKICAg
ICB1cGRhdGVDb250ZW50c0Zyb21JbWFnZUlmTmVlZGVkKHRleHR1cmVNYXBwZXIpOwogICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3JtID0gdHJhbnNmb3JtOwogICAgIGFk
anVzdGVkVHJhbnNmb3JtLm11bHRpcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4OjpyZWN0VG9SZWN0
KHJlY3QoKSwgdGFyZ2V0UmVjdCkpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90aWxl
cy5zaXplKCk7ICsraSkgeworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90aWxlcy5zaXpl
KCk7ICsraSkKICAgICAgICAgbV90aWxlc1tpXS5wYWludCh0ZXh0dXJlTWFwcGVyLCBhZGp1c3Rl
ZFRyYW5zZm9ybSwgb3BhY2l0eSwgbWFzaywgY2FsY3VsYXRlRXhwb3NlZFRpbGVFZGdlcyhyZWN0
KCksIG1fdGlsZXNbaV0ucmVjdCgpKSk7Ci0gICAgICAgIGlmIChtX2RyYXdzRGVidWdCb3JkZXJz
KQotICAgICAgICAgICAgdGV4dHVyZU1hcHBlci0+ZHJhd0JvcmRlcihtX2RlYnVnQm9yZGVyQ29s
b3IsIG1fZGVidWdCb3JkZXJXaWR0aCwgbV90aWxlc1tpXS5yZWN0KCksIGFkanVzdGVkVHJhbnNm
b3JtKTsKLSAgICB9Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpk
cmF3RGVidWdWaXN1YWxzKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0
UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwg
Ym9vbCBzaG93RGVidWdCb3JkZXJzLCBjb25zdCBDb2xvciYgYm9yZGVyQ29sb3IsIGZsb2F0IGJv
cmRlcldpZHRoLCBib29sIHNob3dSZXBhaW50Q291bnRlciwgaW50IHJlcGFpbnRDb3VudCkKK3sK
KyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhZGp1c3RlZFRyYW5zZm9ybSA9IHRyYW5zZm9ybTsK
KyAgICBhZGp1c3RlZFRyYW5zZm9ybS5tdWx0aXBseShUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6cmVj
dFRvUmVjdChyZWN0KCksIHRhcmdldFJlY3QpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1fdGlsZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIHRleHR1cmVNYXBwZXItPmRyYXdEZWJ1Z1Zp
c3VhbHMobV90aWxlc1tpXS5yZWN0KCksIGFkanVzdGVkVHJhbnNmb3JtLCBzaG93RGVidWdCb3Jk
ZXJzLCBib3JkZXJDb2xvciwgYm9yZGVyV2lkdGgsIHNob3dSZXBhaW50Q291bnRlciwgcmVwYWlu
dENvdW50KTsKIH0KIAogdm9pZCBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0
ZU9yRGVzdHJveVRpbGVzSWZOZWVkZWQoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBJbnRT
aXplJiB0aWxlU2l6ZSwgYm9vbCBoYXNBbHBoYSkKQEAgLTIzNCwxMSArMjM4LDUgQEAgUGFzc1Jl
ZlB0cjxCaXRtYXBUZXh0dXJlPiBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OnRleHR1
cmUoKSBjb25zdAogICAgIHJldHVybiBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+KCk7CiB9CiAK
LXZvaWQgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpzZXREZWJ1Z0JvcmRlcihjb25z
dCBDb2xvciYgY29sb3IsIGZsb2F0IHdpZHRoKQotewotICAgIG1fZGVidWdCb3JkZXJDb2xvciA9
IGNvbG9yOwotICAgIG1fZGVidWdCb3JkZXJXaWR0aCA9IHdpZHRoOwotfQotCiB9CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oCmluZGV4IDBkZDJkZjRiMTk4YmQz
MTFmZDQxYzU1YTMzNzcyMTg0Y2QxNGIzNGEuLjQzZjFlYTc1MWM1NDA3NDM5MzVkZDkxMGFmN2Vj
NDllNWExYjZlOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuaApAQCAt
OTQsMTIgKzk0LDExIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBU
ZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50
VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0LCBCaXRtYXBUZXh0dXJlKikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIGRyYXdEZWJ1Z1Zpc3VhbHMoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgYm9vbCBzaG93RGVidWdCb3Jk
ZXJzLCBjb25zdCBDb2xvciYsIGZsb2F0IGJvcmRlcldpZHRoLCBib29sIHNob3dSZXBhaW50Q291
bnRlciwgaW50IHJlcGFpbnRDb3VudCkgT1ZFUlJJREU7CiAgICAgdm9pZCB1cGRhdGVDb250ZW50
cyhUZXh0dXJlTWFwcGVyKiwgSW1hZ2UqLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbnRSZWN0
JiwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ29udGVudHNGbGFnKTsKICAgICB2b2lkIHVwZGF0ZUNv
bnRlbnRzKFRleHR1cmVNYXBwZXIqLCBHcmFwaGljc0xheWVyKiwgY29uc3QgRmxvYXRTaXplJiwg
Y29uc3QgSW50UmVjdCYsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNvbnRlbnRzRmxhZyk7CiAKICAg
ICB2b2lkIHNldENvbnRlbnRzVG9JbWFnZShJbWFnZSogaW1hZ2UpIHsgbV9pbWFnZSA9IGltYWdl
OyB9Ci0gICAgdm9pZCBzZXRTaG93RGVidWdCb3JkZXJzKGJvb2wgZHJhd3NEZWJ1Z0JvcmRlcnMp
IHsgbV9kcmF3c0RlYnVnQm9yZGVycyA9IGRyYXdzRGVidWdCb3JkZXJzOyB9Ci0gICAgdm9pZCBz
ZXREZWJ1Z0JvcmRlcihjb25zdCBDb2xvciYsIGZsb2F0IHdpZHRoKTsKIAogcHJpdmF0ZToKICAg
ICBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUoKTsKQEAgLTExMCwxMCArMTA5LDYgQEAg
cHJpdmF0ZToKICAgICBWZWN0b3I8VGV4dHVyZU1hcHBlclRpbGU+IG1fdGlsZXM7CiAgICAgRmxv
YXRTaXplIG1fc2l6ZTsKICAgICBSZWZQdHI8SW1hZ2U+IG1faW1hZ2U7Ci0KLSAgICBib29sIG1f
ZHJhd3NEZWJ1Z0JvcmRlcnM7Ci0gICAgQ29sb3IgbV9kZWJ1Z0JvcmRlckNvbG9yOwotICAgIGZs
b2F0IG1fZGVidWdCb3JkZXJXaWR0aDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKaW5k
ZXggMzQwODRmOTQwYzY4Mzc2NDM4MThmODBjZWYzN2UzNWVlMDE5YTRmOS4uZjc3MmEzZjRmMThm
ODgyNDljZTU0ZjRhNWQ0NmY3Zjg2MzFkODJhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKQEAg
LTMwOSw4ICszMDksMTQgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdCb3JkZXIoY29uc3Qg
Q29sb3ImIGNvbG9yLCBmbG9hdCB3aWR0aCwgY29uc3QgRmxvYXRSZWMKICAgICBkcmF3KHRhcmdl
dFJlY3QsIG1vZGVsVmlld01hdHJpeCwgcHJvZ3JhbS5nZXQoKSwgR3JhcGhpY3NDb250ZXh0M0Q6
OkxJTkVfTE9PUCwgY29sb3IuaGFzQWxwaGEoKSA/IFNob3VsZEJsZW5kIDogMCk7CiB9CiAKLXZv
aWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3UmVwYWludENvdW50ZXIoaW50IHZhbHVlLCBpbnQgcG9p
bnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRQb2ludCwgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCkKK3N0YXRpYyBpbmxpbmUgUkdCQTMyIGNvbnZlcnRB
QkdSVG9BUkdCKFJHQkEzMiBwaXhlbCkKIHsKKyAgICByZXR1cm4gKChwaXhlbCA8PCAxNikgJiAw
eGZmMDAwMCkgfCAoKHBpeGVsID4+IDE2KSAmIDB4ZmYpIHwgKHBpeGVsICYgMHhmZjAwZmYwMCk7
Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3UmVwYWludENvdW50ZXIoaW50IHZhbHVl
LCBjb25zdCBDb2xvciYgY29sb3IsIGNvbnN0IEZsb2F0UG9pbnQmIHRhcmdldFBvaW50LCBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4KQoreworICAgIHN0YXRpYyBj
b25zdCBpbnQgcG9pbnRTaXplID0gODsKICNpZiBQTEFURk9STShRVCkKICAgICBRU3RyaW5nIGNv
dW50ZXJTdHJpbmcgPSBRU3RyaW5nOjpudW1iZXIodmFsdWUpOwogCkBAIC0zMjcsNyArMzMzLDcg
QEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdSZXBhaW50Q291bnRlcihpbnQgdmFsdWUsIGlu
dCBwb2ludFNpemUsIGNvbnN0IEZsb2F0UG8KIAogICAgIFFJbWFnZSBpbWFnZShzaXplLCBOYXRp
dmVJbWFnZVF0OjpkZWZhdWx0Rm9ybWF0Rm9yQWxwaGFFbmFibGVkSW1hZ2VzKCkpOwogICAgIFFQ
YWludGVyIHBhaW50ZXIoJmltYWdlKTsKLSAgICBwYWludGVyLmZpbGxSZWN0KHNvdXJjZVJlY3Qs
IFF0OjpibHVlKTsgLy8gU2luY2Ugd2Ugd29uJ3Qgc3dhcCBSK0IgZm9yIHNwZWVkLCB0aGlzIHdp
bGwgcGFpbnQgcmVkLgorICAgIHBhaW50ZXIuZmlsbFJlY3Qoc291cmNlUmVjdCwgY29udmVydEFC
R1JUb0FSR0IoY29sb3IucmdiKCkpKTsgLy8gU2luY2Ugd2Ugd29uJ3Qgc3dhcCBSK0IgZm9yIHNw
ZWVkLCB0aGlzIHdpbGwgcGFpbnQgdGhlIGdpdmVuIGNvbG9yLgogICAgIHBhaW50ZXIuc2V0Rm9u
dChmb250KTsKICAgICBwYWludGVyLnNldFBlbihRdDo6d2hpdGUpOwogICAgIHBhaW50ZXIuZHJh
d1RleHQoMiwgaGVpZ2h0ICogMC44NSwgY291bnRlclN0cmluZyk7CkBAIC0zNDYsNyArMzUyLDkg
QEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdSZXBhaW50Q291bnRlcihpbnQgdmFsdWUsIGlu
dCBwb2ludFNpemUsIGNvbnN0IEZsb2F0UG8KICAgICBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2Ug
PSBjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZShDQUlST19GT1JNQVRfQVJHQjMyLCB3aWR0aCwg
aGVpZ2h0KTsKICAgICBjYWlyb190KiBjciA9IGNhaXJvX2NyZWF0ZShzdXJmYWNlKTsKIAotICAg
IGNhaXJvX3NldF9zb3VyY2VfcmdiKGNyLCAwLCAwLCAxKTsgLy8gU2luY2Ugd2Ugd29uJ3Qgc3dh
cCBSK0IgZm9yIHNwZWVkLCB0aGlzIHdpbGwgcGFpbnQgcmVkLgorICAgIGZsb2F0IHIsIGcsIGIs
IGE7CisgICAgY29sb3IuZ2V0UkdCQShyLCBnLCBiLCBhKTsKKyAgICBjYWlyb19zZXRfc291cmNl
X3JnYmEoY3IsIGIsIGcsIHIsIGEpOyAvLyBTaW5jZSB3ZSB3b24ndCBzd2FwIFIrQiBmb3Igc3Bl
ZWQsIHRoaXMgd2lsbCBwYWludCB0aGUgZ2l2ZW4gY29sb3IuCiAgICAgY2Fpcm9fcmVjdGFuZ2xl
KGNyLCAwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKICAgICBjYWlyb19maWxsKGNyKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJHTC5oCmluZGV4IGFhMTMzMTJmYWFmY2EzMWZkZjFkMWM0MTRkMzVjMjdjYWM4MDJjYTIu
LmM4MTFlNzBlZDJjNzI0OTA5MTAyM2RlMzU2ODUwNDgxZWUzYzUzZGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckdMLmgKQEAgLTUxLDggKzUxLDYgQEAgcHVibGljOgogICAgIHR5cGVkZWYgaW50IEZsYWdzOwog
CiAgICAgLy8gVGV4dHVyZU1hcHBlciBpbXBsZW1lbnRhdGlvbgotICAgIHZpcnR1YWwgdm9pZCBk
cmF3Qm9yZGVyKGNvbnN0IENvbG9yJiwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVj
dCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJp
eCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBk
cmF3UmVwYWludENvdW50ZXIoaW50IHZhbHVlLCBpbnQgcG9pbnRTaXplLCBjb25zdCBGbG9hdFBv
aW50JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCA9IFRyYW5z
Zm9ybWF0aW9uTWF0cml4KCkpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3VGV4dHVy
ZShjb25zdCBCaXRtYXBUZXh0dXJlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5LCBjb25zdCBCaXRtYXBUZXh0dXJlKiBtYXNrVGV4
dHVyZSwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
ZHJhd1RleHR1cmUoUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlLCBGbGFncywgY29uc3QgSW50U2l6
ZSYgdGV4dHVyZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0
bWFwVGV4dHVyZSogbWFza1RleHR1cmUsIHVuc2lnbmVkIGV4cG9zZWRFZGdlcyA9IEFsbEVkZ2Vz
KTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1NvbGlkQ29sb3IoY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBDb2xvciYpIE9WRVJSSURFOwpAQCAtMTA3
LDYgKzEwNSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkcmF3VW5pdFJlY3QoVGV4dHVyZU1hcHBl
clNoYWRlclByb2dyYW0qLCBHQzNEZW51bSBkcmF3aW5nTW9kZSk7CiAgICAgdm9pZCBkcmF3RWRn
ZVRyaWFuZ2xlcyhUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbSopOwogCisgICAgdmlydHVhbCB2
b2lkIGRyYXdCb3JkZXIoY29uc3QgQ29sb3ImLCBmbG9hdCBib3JkZXJXaWR0aCwgY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVyKGludCByZXBhaW50Q291bnQsIGNvbnN0IENvbG9y
JiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JikgT1ZFUlJJ
REU7CisKICAgICBib29sIGJlZ2luU2Npc3NvckNsaXAoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmLCBjb25zdCBGbG9hdFJlY3QmKTsKICAgICB2b2lkIGJpbmREZWZhdWx0U3VyZmFjZSgpOwog
ICAgIENsaXBTdGFjayYgY2xpcFN0YWNrKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VC
dWZmZXIuY3BwCmluZGV4IDkyOTA1M2IxMmI3NDAyNTg0YzU0ODdhMzhhYjgwZmNkYjFhMTEwYjgu
LjY5ZmQ3MzhmNThmYzkxNDUxN2I5OWE5N2U0MDczMzkxNmMzNjdkZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VC
dWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAjaWYgUExBVEZP
Uk0oUVQpCiAjaW5jbHVkZSAiTmF0aXZlSW1hZ2VRdC5oIgogI2VuZGlmCisjaW5jbHVkZSAiTm90
SW1wbGVtZW50ZWQuaCIKIAogCiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQpAQCAtMTY0LDYgKzE2
NSwxNiBAQCB2b2lkIFRleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlcjo6ZHJhd1NvbGlkQ29sb3IoY29u
c3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBUcmFucwogICAgIGNvbnRleHQtPnJlc3RvcmUoKTsK
IH0KIAordm9pZCBUZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXI6OmRyYXdCb3JkZXIoY29uc3QgQ29s
b3ImLCBmbG9hdCAvKiBib3JkZXJXaWR0aCAqLywgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQg
VGV4dHVyZU1hcHBlckltYWdlQnVmZmVyOjpkcmF3UmVwYWludENvdW50ZXIoaW50IC8qIHJlcGFp
bnRDb3VudCAqLywgY29uc3QgQ29sb3ImLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKICNpZiBFTkFC
TEUoQ1NTX0ZJTFRFUlMpCiBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IEJpdG1hcFRleHR1cmVJ
bWFnZUJ1ZmZlcjo6YXBwbHlGaWx0ZXJzKFRleHR1cmVNYXBwZXIqLCBjb25zdCBCaXRtYXBUZXh0
dXJlJiBjb250ZW50VGV4dHVyZSwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVySW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuaAppbmRleCA5ZGU2ZDRjYmQ1ZWIxN2U5
MzQ4ODAxOGE2MmE3MTMxZDg5NzM4NGViLi5iYWY1NjBjZTVhNWRiYTU0MDIyZDMwMjFiNjNmNmJh
MmQ1OTNiMzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5oCkBAIC01Mywx
NCArNTMsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8VGV4dHVyZU1hcHBlcj4g
Y3JlYXRlKCkgeyByZXR1cm4gYWRvcHRQdHIobmV3IFRleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlcik7
IH0KIAogICAgIC8vIFRleHR1cmVNYXBwZXIgaW1wbGVtZW50YXRpb24KLSAgICB2aXJ0dWFsIHZv
aWQgZHJhd0JvcmRlcihjb25zdCBDb2xvciYsIGZsb2F0IC8qIGJvcmRlcldpZHRoICovLCBjb25z
dCBGbG9hdFJlY3QmIC8qIHRhcmdldFJlY3QgKi8sIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiBtb2RlbFZpZXdNYXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKSBPVkVSUklERQotICAg
IHsKLSAgICAgICAgVU5VU0VEX1BBUkFNKG1vZGVsVmlld01hdHJpeCk7Ci0gICAgfTsKLSAgICB2
aXJ0dWFsIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVyKGludCAvKiB2YWx1ZSAqLywgaW50IC8qIHBv
aW50U2l6ZSAqLywgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiBtb2RlbFZpZXdNYXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKSBPVkVSUklERQotICAg
IHsKLSAgICAgICAgVU5VU0VEX1BBUkFNKG1vZGVsVmlld01hdHJpeCk7Ci0gICAgfTsKICAgICB2
aXJ0dWFsIHZvaWQgZHJhd1RleHR1cmUoY29uc3QgQml0bWFwVGV4dHVyZSYsIGNvbnN0IEZsb2F0
UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFj
aXR5LCBjb25zdCBCaXRtYXBUZXh0dXJlKiBtYXNrVGV4dHVyZSwgdW5zaWduZWQgZXhwb3NlZEVk
Z2VzKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1NvbGlkQ29sb3IoY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBDb2xvciYpIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCBiZWdpbkNsaXAoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmLCBjb25zdCBGbG9hdFJlY3QmKSBPVkVSUklERTsKQEAgLTc4LDYgKzcwLDEwIEBAIHByaXZh
dGU6CiAgICAgVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyKCkKICAgICAgICAgOiBUZXh0dXJlTWFw
cGVyKFNvZnR3YXJlTW9kZSkKICAgICB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBkcmF3Qm9yZGVy
KGNvbnN0IENvbG9yJiwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRyYXdS
ZXBhaW50Q291bnRlcihpbnQgcmVwYWludENvdW50LCBjb25zdCBDb2xvciYsIGNvbnN0IEZsb2F0
UG9pbnQmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIE9WRVJSSURFOworCiAgICAgUmVm
UHRyPEJpdG1hcFRleHR1cmU+IG1fY3VycmVudFN1cmZhY2U7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyTGF5ZXIuY3BwCmluZGV4IDVkZmExODM4ZWQ0YjRjMjE4NDc1MDQzNDZlZWYwMzY0MzliNTFh
OWIuLjJkNzQ4NDBhMzgzYTg1ZDRhZDY4MGI3Nzc5MzQwODg2Mzc0Yzk2ZjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyTGF5ZXIuY3BwCkBAIC0xMjksNiArMTI5LDggQEAgdm9pZCBUZXh0dXJlTWFwcGVy
TGF5ZXI6OnBhaW50U2VsZihjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBvcHRpb25z
KQogCiAgICAgaWYgKG1fc3RhdGUuc29saWRDb2xvci5pc1ZhbGlkKCkgJiYgIW1fc3RhdGUuY29u
dGVudHNSZWN0LmlzRW1wdHkoKSkgewogICAgICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmRy
YXdTb2xpZENvbG9yKG1fc3RhdGUuY29udGVudHNSZWN0LCB0cmFuc2Zvcm0sIGJsZW5kV2l0aE9w
YWNpdHkobV9zdGF0ZS5zb2xpZENvbG9yLCBvcGFjaXR5KSk7CisgICAgICAgIGlmIChtX3N0YXRl
LnNob3dEZWJ1Z0JvcmRlcnMgfHwgbV9zdGF0ZS5zaG93UmVwYWludENvdW50ZXIpCisgICAgICAg
ICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmRyYXdEZWJ1Z1Zpc3VhbHMobGF5ZXJSZWN0KCks
IHRyYW5zZm9ybSwgbV9zdGF0ZS5zaG93RGVidWdCb3JkZXJzLCBtX3N0YXRlLmRlYnVnQm9yZGVy
Q29sb3IsIG1fc3RhdGUuZGVidWdCb3JkZXJXaWR0aCwgbV9zdGF0ZS5zaG93UmVwYWludENvdW50
ZXIsIG1fc3RhdGUucmVwYWludENvdW50KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAt
MTM2LDExICsxMzgsMTUgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50U2VsZihjb25z
dCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBvcHRpb25zKQogICAgICAgICBBU1NFUlQobV9z
dGF0ZS5kcmF3c0NvbnRlbnQgJiYgbV9zdGF0ZS5jb250ZW50c1Zpc2libGUgJiYgIW1fc3RhdGUu
c2l6ZS5pc0VtcHR5KCkpOwogICAgICAgICBBU1NFUlQoIWxheWVyUmVjdCgpLmlzRW1wdHkoKSk7
CiAgICAgICAgIG1fYmFja2luZ1N0b3JlLT5wYWludFRvVGV4dHVyZU1hcHBlcihvcHRpb25zLnRl
eHR1cmVNYXBwZXIsIGxheWVyUmVjdCgpLCB0cmFuc2Zvcm0sIG9wYWNpdHksIG1hc2suZ2V0KCkp
OworICAgICAgICBpZiAobV9zdGF0ZS5zaG93RGVidWdCb3JkZXJzIHx8IG1fc3RhdGUuc2hvd1Jl
cGFpbnRDb3VudGVyKQorICAgICAgICAgICAgbV9iYWNraW5nU3RvcmUtPmRyYXdEZWJ1Z1Zpc3Vh
bHMob3B0aW9ucy50ZXh0dXJlTWFwcGVyLCBsYXllclJlY3QoKSwgdHJhbnNmb3JtLCBtX3N0YXRl
LnNob3dEZWJ1Z0JvcmRlcnMsIG1fc3RhdGUuZGVidWdCb3JkZXJDb2xvciwgbV9zdGF0ZS5kZWJ1
Z0JvcmRlcldpZHRoLCBtX3N0YXRlLnNob3dSZXBhaW50Q291bnRlciwgbV9zdGF0ZS5yZXBhaW50
Q291bnQpOwogICAgIH0KIAogICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIpIHsKICAgICAgICAgQVNT
RVJUKCFsYXllclJlY3QoKS5pc0VtcHR5KCkpOwogICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnBh
aW50VG9UZXh0dXJlTWFwcGVyKG9wdGlvbnMudGV4dHVyZU1hcHBlciwgbV9zdGF0ZS5jb250ZW50
c1JlY3QsIHRyYW5zZm9ybSwgb3BhY2l0eSwgbWFzay5nZXQoKSk7CisgICAgICAgIGlmIChtX3N0
YXRlLnNob3dEZWJ1Z0JvcmRlcnMgfHwgbV9zdGF0ZS5zaG93UmVwYWludENvdW50ZXIpCisgICAg
ICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPmRyYXdEZWJ1Z1Zpc3VhbHMob3B0aW9ucy50ZXh0dXJl
TWFwcGVyLCBtX3N0YXRlLmNvbnRlbnRzUmVjdCwgdHJhbnNmb3JtLCBtX3N0YXRlLnNob3dEZWJ1
Z0JvcmRlcnMsIG1fc3RhdGUuZGVidWdCb3JkZXJDb2xvciwgbV9zdGF0ZS5kZWJ1Z0JvcmRlcldp
ZHRoLCBtX3N0YXRlLnNob3dSZXBhaW50Q291bnRlciwgbV9zdGF0ZS5yZXBhaW50Q291bnQpOwog
ICAgIH0KIH0KIApAQCAtMzgzLDggKzM4OSw2IEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpm
bHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KEdyYXBoaWNzTGF5ZXJUZXh0CiAg
ICAgaWYgKGNoYW5nZU1hc2sgPT0gTm9DaGFuZ2VzICYmIGdyYXBoaWNzTGF5ZXItPm1fYW5pbWF0
aW9ucy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdyYXBoaWNzTGF5ZXItPnVw
ZGF0ZURlYnVnSW5kaWNhdG9ycygpOwotCiAgICAgaWYgKGNoYW5nZU1hc2sgJiBDaGlsZHJlbkNo
YW5nZSkKICAgICAgICAgc2V0Q2hpbGRyZW4oZ3JhcGhpY3NMYXllci0+Y2hpbGRyZW4oKSk7CiAK
QEAgLTQwMSw2ICs0MDUsOSBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6Zmx1c2hDb21wb3Np
dGluZ1N0YXRlRm9yVGhpc0xheWVyT25seShHcmFwaGljc0xheWVyVGV4dAogICAgIGlmIChjaGFu
Z2VNYXNrICYgQW5pbWF0aW9uQ2hhbmdlKQogICAgICAgICBtX2FuaW1hdGlvbnMgPSBncmFwaGlj
c0xheWVyLT5tX2FuaW1hdGlvbnM7CiAKKyAgICBpZiAoY2hhbmdlTWFzayAmIFJlcGFpbnRDb3Vu
dENoYW5nZSkKKyAgICAgICAgbV9zdGF0ZS5yZXBhaW50Q291bnQgPSBncmFwaGljc0xheWVyLT5y
ZXBhaW50Q291bnQoKTsKKwogICAgIG1fc3RhdGUubWFza0xheWVyID0gdG9UZXh0dXJlTWFwcGVy
TGF5ZXIoZ3JhcGhpY3NMYXllci0+bWFza0xheWVyKCkpOwogICAgIG1fc3RhdGUucmVwbGljYUxh
eWVyID0gdG9UZXh0dXJlTWFwcGVyTGF5ZXIoZ3JhcGhpY3NMYXllci0+cmVwbGljYUxheWVyKCkp
OwogICAgIG1fc3RhdGUucG9zID0gZ3JhcGhpY3NMYXllci0+cG9zaXRpb24oKTsKQEAgLTQyMyw2
ICs0MzAsMTEgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0
ZUZvclRoaXNMYXllck9ubHkoR3JhcGhpY3NMYXllclRleHQKICNlbmRpZgogICAgIG1fZml4ZWRU
b1ZpZXdwb3J0ID0gZ3JhcGhpY3NMYXllci0+Zml4ZWRUb1ZpZXdwb3J0KCk7CiAKKyAgICBtX3N0
YXRlLnNob3dEZWJ1Z0JvcmRlcnMgPSBncmFwaGljc0xheWVyLT5pc1Nob3dpbmdEZWJ1Z0JvcmRl
cigpOworICAgIG1fc3RhdGUuZGVidWdCb3JkZXJDb2xvciA9IHRvR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXIoZ3JhcGhpY3NMYXllciktPmRlYnVnQm9yZGVyQ29sb3IoKTsKKyAgICBtX3N0YXRl
LmRlYnVnQm9yZGVyV2lkdGggPSB0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKGdyYXBoaWNz
TGF5ZXIpLT5kZWJ1Z0JvcmRlcldpZHRoKCk7CisgICAgbV9zdGF0ZS5zaG93UmVwYWludENvdW50
ZXIgPSBncmFwaGljc0xheWVyLT5pc1Nob3dpbmdSZXBhaW50Q291bnRlcigpOworCiAgICAgbV9j
b250ZW50c0xheWVyID0gZ3JhcGhpY3NMYXllci0+cGxhdGZvcm1MYXllcigpOwogCiAgICAgbV9j
dXJyZW50VHJhbnNmb3JtLnNldFBvc2l0aW9uKGFkanVzdGVkUG9zaXRpb24oKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckxheWVyLmgKaW5kZXggZjQxZTUyYTk3YzRiMzI4YzQ0Y2Y2NTBhZWUzNGNkMzAwYTQ2
NTM5YS4uNTc1YmIyN2ViN2E4NzRjMTg0YjU4MWVkMmJkNDM1ZDEwMTVhODNiMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJM
YXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyTGF5ZXIuaApAQCAtNzEsNyArNzEsMTAgQEAgcHVibGljOgogCiAgICAgICAgIFJl
cGxpY2FMYXllckNoYW5nZSA9ICAgICAgICAoMUwgPDwgMjEpLAogICAgICAgICBBbmltYXRpb25D
aGFuZ2UgPSAgICAgICAgICAgKDFMIDw8IDIyKSwKLSAgICAgICAgRmlsdGVyQ2hhbmdlID0gICAg
ICAgICAgICAgICgxTCA8PCAyMykKKyAgICAgICAgRmlsdGVyQ2hhbmdlID0gICAgICAgICAgICAg
ICgxTCA8PCAyMyksCisKKyAgICAgICAgRGVidWdWaXN1YWxzQ2hhbmdlID0gICAgICAgICgxTCA8
PCAyNCksCisgICAgICAgIFJlcGFpbnRDb3VudENoYW5nZSA9ICAgICAgICAoMUwgPDwgMjUpCiAg
ICAgfTsKIAogICAgIFRleHR1cmVNYXBwZXJMYXllcigpCkBAIC0xNzIsNiArMTc1LDkgQEAgcHJp
dmF0ZToKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAgICAgICAgIEZpbHRlck9wZXJhdGlvbnMg
ZmlsdGVyczsKICNlbmRpZgorICAgICAgICBDb2xvciBkZWJ1Z0JvcmRlckNvbG9yOworICAgICAg
ICBmbG9hdCBkZWJ1Z0JvcmRlcldpZHRoOworICAgICAgICBpbnQgcmVwYWludENvdW50OwogCiAg
ICAgICAgIGJvb2wgcHJlc2VydmVzM0QgOiAxOwogICAgICAgICBib29sIG1hc2tzVG9Cb3VuZHMg
OiAxOwpAQCAtMTgwLDExICsxODYsMTUgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBjb250ZW50
c09wYXF1ZSA6IDE7CiAgICAgICAgIGJvb2wgYmFja2ZhY2VWaXNpYmlsaXR5IDogMTsKICAgICAg
ICAgYm9vbCB2aXNpYmxlIDogMTsKKyAgICAgICAgYm9vbCBzaG93RGVidWdCb3JkZXJzIDogMTsK
KyAgICAgICAgYm9vbCBzaG93UmVwYWludENvdW50ZXIgOiAxOwogCiAgICAgICAgIFN0YXRlKCkK
ICAgICAgICAgICAgIDogb3BhY2l0eSgxKQogICAgICAgICAgICAgLCBtYXNrTGF5ZXIoMCkKICAg
ICAgICAgICAgICwgcmVwbGljYUxheWVyKDApCisgICAgICAgICAgICAsIGRlYnVnQm9yZGVyV2lk
dGgoMCkKKyAgICAgICAgICAgICwgcmVwYWludENvdW50KDApCiAgICAgICAgICAgICAsIHByZXNl
cnZlczNEKGZhbHNlKQogICAgICAgICAgICAgLCBtYXNrc1RvQm91bmRzKGZhbHNlKQogICAgICAg
ICAgICAgLCBkcmF3c0NvbnRlbnQoZmFsc2UpCkBAIC0xOTIsNiArMjAyLDggQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICwgY29udGVudHNPcGFxdWUoZmFsc2UpCiAgICAgICAgICAgICAsIGJhY2tm
YWNlVmlzaWJpbGl0eShmYWxzZSkKICAgICAgICAgICAgICwgdmlzaWJsZSh0cnVlKQorICAgICAg
ICAgICAgLCBzaG93RGVidWdCb3JkZXJzKGZhbHNlKQorICAgICAgICAgICAgLCBzaG93UmVwYWlu
dENvdW50ZXIoZmFsc2UpCiAgICAgICAgIHsKICAgICAgICAgfQogICAgIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41Y2UyZWEwYjI4OWFk
NGQxNTJjZmI5OWUzNjJiMTIwYjk2MzZkYTRkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
LmNwcApAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIENvbXBhbnkg
MTAwLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyNpbmNsdWRlICJUZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oIgorCisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlci5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXI6
OmRyYXdEZWJ1Z1Zpc3VhbHMoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxv
YXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3Jt
LCBib29sIHNob3dEZWJ1Z0JvcmRlcnMsIGNvbnN0IENvbG9yJiBib3JkZXJDb2xvciwgZmxvYXQg
Ym9yZGVyV2lkdGgsIGJvb2wgc2hvd1JlcGFpbnRDb3VudGVyLCBpbnQgcmVwYWludENvdW50KQor
eworICAgIHRleHR1cmVNYXBwZXItPmRyYXdEZWJ1Z1Zpc3VhbHModGFyZ2V0UmVjdCwgdHJhbnNm
b3JtLCBzaG93RGVidWdCb3JkZXJzLCBib3JkZXJDb2xvciwgYm9yZGVyV2lkdGgsIHNob3dSZXBh
aW50Q291bnRlciwgcmVwYWludENvdW50KTsKK30KKworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oCmluZGV4IDM4YWYwM2U4OWI2MjQ4MWFiYWYzMjA5OGMz
YTgxN2FiNGQwMDBjMWUuLmUyNWM4ODJkZTNmNmI3Y2UxZGRiZTM2ZTgwZTFiMmVlNWNiZDU5NWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oCkBAIC0yOCwxNCArMjgs
MTUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBUZXh0dXJlTWFwcGVyOwogY2xh
c3MgQml0bWFwVGV4dHVyZTsKK2NsYXNzIFRleHR1cmVNYXBwZXI7CiAKIGNsYXNzIFRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5UZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllcigpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBl
cihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIG1vZGVsVmlld01hdHJpeCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGZsb2F0IG9w
YWNpdHkgPSAxLjAsIEJpdG1hcFRleHR1cmUqIG1hc2sgPSAwKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHN3YXBCdWZmZXJzKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRyYXdEZWJ1Z1Zpc3VhbHMo
VGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiwgYm9vbCBzaG93RGVidWdCb3JkZXJzLCBjb25zdCBDb2xvciYsIGZsb2F0IGJvcmRlcldp
ZHRoLCBib29sIHNob3dSZXBhaW50Q291bnRlciwgaW50IHJlcGFpbnRDb3VudCk7CiAjaWYgVVNF
KEdSQVBISUNTX1NVUkZBQ0UpCiAgICAgdmlydHVhbCBJbnRTaXplIHBsYXRmb3JtTGF5ZXJTaXpl
KCkgY29uc3QgeyByZXR1cm4gSW50U2l6ZSgpOyB9CiAgICAgdmlydHVhbCB1aW50MzJfdCBjb3B5
VG9HcmFwaGljc1N1cmZhY2UoKSB7IHJldHVybiAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3
LmNwcAppbmRleCA1OTQ1MWE5NWU0ZmFmY2E2NTUzMTcyMjRkOTUzOWY2MWU1NDIwMzExLi5hMzdm
ZjNhZDFlMTA3NTY1ZDJmMWQxODJkMGI2NjQ0ZDg4NDliOGQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfdmlldy5jcHAKQEAgLTgzOSw2ICs4MzksOSBAQCBzdGF0aWMgRXdrX1ZpZXdfUHJpdmF0ZV9E
YXRhKiBfZXdrX3ZpZXdfcHJpdl9uZXcoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQog
ICAgIHByaXYtPnBhZ2VTZXR0aW5ncy0+c2V0SW50ZXJhY3RpdmVGb3JtVmFsaWRhdGlvbkVuYWJs
ZWQodHJ1ZSk7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIHByaXYtPnBh
Z2VTZXR0aW5ncy0+c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoZmFsc2UpOworICAg
IGJvb2wgc2hvd0RlYnVnVmlzdWFscyA9IFN0cmluZyhnZXRlbnYoIldFQktJVF9TSE9XX0NPTVBP
U0lUSU5HX0RFQlVHX1ZJU1VBTFMiKSkgPT0gIjEiOworICAgIHByaXYtPnBhZ2VTZXR0aW5ncy0+
c2V0U2hvd0RlYnVnQm9yZGVycyhzaG93RGVidWdWaXN1YWxzKTsKKyAgICBwcml2LT5wYWdlU2V0
dGluZ3MtPnNldFNob3dSZXBhaW50Q291bnRlcihzaG93RGVidWdWaXN1YWxzKTsKICNlbmRpZgog
CiAgICAgdXJsID0gcHJpdi0+cGFnZVNldHRpbmdzLT51c2VyU3R5bGVTaGVldExvY2F0aW9uKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKaW5kZXggMjkzMTBk
NGU5ZmU0ODE0NTcwM2Q5OTRmNGQxZTlkMDc2YTQyMDhlZS4uMjhkZGYzMWQ0MDE2MTM0MDYyYzFh
MzhjNzQ4Mjg1NzVhZmIzODY5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHdlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJ2aWV3LmNwcApAQCAtMzQzNSw2ICszNDM1LDkgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92
aWV3X3VwZGF0ZV9zZXR0aW5ncyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogCiAjaWYgVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIGNvcmVTZXR0aW5ncy0+c2V0QWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0VuYWJsZWQoc2V0dGluZ3NQcml2YXRlLT5lbmFibGVBY2NlbGVyYXRlZENvbXBv
c2l0aW5nKTsKKyAgICBib29sIHNob3dEZWJ1Z1Zpc3VhbHMgPSBTdHJpbmcoZ2V0ZW52KCJXRUJL
SVRfU0hPV19DT01QT1NJVElOR19ERUJVR19WSVNVQUxTIikpID09ICIxIjsKKyAgICBjb3JlU2V0
dGluZ3MtPnNldFNob3dEZWJ1Z0JvcmRlcnMoc2hvd0RlYnVnVmlzdWFscyk7CisgICAgY29yZVNl
dHRpbmdzLT5zZXRTaG93UmVwYWludENvdW50ZXIoc2hvd0RlYnVnVmlzdWFscyk7CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0Fw
aS9xd2Vic2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNw
cAppbmRleCBmOGU0OTk4MzU4YWZiZWNiNzhhNWIwMzA2MGFkY2I2NTRkZDBlMTRlLi5mMDc1MjVj
NDEwNjI4ZTJjYjA5YWFjODRhODQwMjVkMWQ3ZmRhODk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3
ZWJzZXR0aW5ncy5jcHAKQEAgLTE1MCw2ICsxNTAsMTAgQEAgdm9pZCBRV2ViU2V0dGluZ3NQcml2
YXRlOjphcHBseSgpCiAgICAgICAgIHNldHRpbmdzLT5zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5n
Rm9yQW5pbWF0aW9uRW5hYmxlZCh2YWx1ZSk7CiAgICAgICAgIHNldHRpbmdzLT5zZXRBY2NlbGVy
YXRlZENvbXBvc2l0aW5nRm9yVmlkZW9FbmFibGVkKGZhbHNlKTsKICAgICAgICAgc2V0dGluZ3Mt
PnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JQbHVnaW5zRW5hYmxlZChmYWxzZSk7CisKKyAg
ICAgICAgYm9vbCBzaG93RGVidWdWaXN1YWxzID0gcWdldGVudigiUVRfV0VCS0lUX1NIT1dfQ09N
UE9TSVRJTkdfREVCVUdfVklTVUFMUyIpID09ICIxIjsKKyAgICAgICAgc2V0dGluZ3MtPnNldFNo
b3dEZWJ1Z0JvcmRlcnMoc2hvd0RlYnVnVmlzdWFscyk7CisgICAgICAgIHNldHRpbmdzLT5zZXRT
aG93UmVwYWludENvdW50ZXIoc2hvd0RlYnVnVmlzdWFscyk7CiAjZW5kaWYKICNpZiBFTkFCTEUo
V0VCR0wpCiAgICAgICAgIHZhbHVlID0gYXR0cmlidXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6Oldl
YkdMRW5hYmxlZCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJJbmZvLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVySW5mby5oCmluZGV4IDY1MjA1NmRk
ODEwNDIzNjQwZmNmNjk2OTA1YTdkZTczN2Q2ZDRiOWUuLmNmMWYwM2VkYmJiYjJlNTEyZjY5ZWJh
YjljM2YyMzBlYzRhMWYzMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJJbmZvLmgKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllckluZm8uaApAQCAt
NDMsNiArNDMsNyBAQCBzdHJ1Y3QgQ29vcmRpbmF0ZWRMYXllckluZm8gewogICAgICAgICAsIG1h
c2soSW52YWxpZENvb3JkaW5hdGVkTGF5ZXJJRCkKICAgICAgICAgLCBpbWFnZUlEKEludmFsaWRD
b29yZGluYXRlZEltYWdlQmFja2luZ0lEKQogICAgICAgICAsIG9wYWNpdHkoMCkKKyAgICAgICAg
LCBkZWJ1Z0JvcmRlcldpZHRoKDApCiAgICAgICAgICwgZmxhZ3MoMCkgeyB9CiAKICAgICBDb29y
ZGluYXRlZExheWVySUQgcmVwbGljYTsKQEAgLTU3LDYgKzU4LDggQEAgc3RydWN0IENvb3JkaW5h
dGVkTGF5ZXJJbmZvIHsKICAgICBXZWJDb3JlOjpJbnRSZWN0IGNvbnRlbnRzUmVjdDsKICAgICBm
bG9hdCBvcGFjaXR5OwogICAgIFdlYkNvcmU6OkNvbG9yIHNvbGlkQ29sb3I7CisgICAgV2ViQ29y
ZTo6Q29sb3IgZGVidWdCb3JkZXJDb2xvcjsKKyAgICBmbG9hdCBkZWJ1Z0JvcmRlcldpZHRoOwog
CiAgICAgdW5pb24gewogICAgICAgICBzdHJ1Y3QgewpAQCAtNjgsNiArNzEsOCBAQCBzdHJ1Y3Qg
Q29vcmRpbmF0ZWRMYXllckluZm8gewogICAgICAgICAgICAgYm9vbCBwcmVzZXJ2ZXMzRCA6IDE7
CiAgICAgICAgICAgICBib29sIGlzUm9vdExheWVyOiAxOwogICAgICAgICAgICAgYm9vbCBmaXhl
ZFRvVmlld3BvcnQgOiAxOworICAgICAgICAgICAgYm9vbCBzaG93RGVidWdCb3JkZXJzIDogMTsK
KyAgICAgICAgICAgIGJvb2wgc2hvd1JlcGFpbnRDb3VudGVyIDogMTsKICAgICAgICAgfTsKICAg
ICAgICAgdW5zaWduZWQgZmxhZ3M7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkQmFja2luZ1N0b3JlLmNwcAppbmRleCA0YTdiYjEwODZlZTdhODY3YjJkM2ZkNjgwYzVhMzdk
YjA1YjhiN2Q4Li5jMzA0ZGE3NWIzYzNjOTVhYTMzNzEyOTA3MDY5MjAzNzQ3NmQyZjNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwCkBAIC04OCw3ICs4
OCw2IEBAIHZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnVwZGF0ZVRpbGUodWludDMyX3Qg
aWQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsCiB7CiAgICAgSGFzaE1hcDx1aW50MzJfdCwg
Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlPjo6aXRlcmF0b3IgaXQgPSBtX3RpbGVzLmZpbmQo
aWQpOwogICAgIEFTU0VSVChpdCAhPSBtX3RpbGVzLmVuZCgpKTsKLSAgICBpdC0+dmFsdWUuaW5j
cmVtZW50UmVwYWludENvdW50KCk7CiAgICAgaXQtPnZhbHVlLnNldEJhY2tCdWZmZXIodGlsZVJl
Y3QsIHNvdXJjZVJlY3QsIGJhY2tCdWZmZXIsIG9mZnNldCk7CiB9CiAKQEAgLTEwOSwyOCArMTA4
LDEwIEBAIHZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnNldFNpemUoY29uc3QgV2ViQ29y
ZTo6RmxvYXRTaXplJiBzaXplKQogICAgIG1fc2l6ZSA9IHNpemU7CiB9CiAKLXN0YXRpYyBib29s
IHNob3VsZFNob3dUaWxlRGVidWdWaXN1YWxzKCkKLXsKLSNpZiBQTEFURk9STShRVCkKLSAgICBy
ZXR1cm4gKHFnZXRlbnYoIlFUX1dFQktJVF9TSE9XX0NPTVBPU0lUSU5HX0RFQlVHX1ZJU1VBTFMi
KSA9PSAiMSIpOwotI2VsaWYgVVNFKENBSVJPKQotICAgIHJldHVybiAoU3RyaW5nKGdldGVudigi
V0VCS0lUX1NIT1dfQ09NUE9TSVRJTkdfREVCVUdfVklTVUFMUyIpKSA9PSAiMSIpOwotI2VuZGlm
Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCiB2b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpw
YWludFRpbGVzVG9UZXh0dXJlTWFwcGVyKFZlY3RvcjxUZXh0dXJlTWFwcGVyVGlsZSo+JiB0aWxl
cywgVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgQml0bWFwVGV4dHVyZSogbWFzaywgY29uc3Qg
RmxvYXRSZWN0JiByZWN0KQogewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdGlsZXMuc2l6
ZSgpOyArK2kpIHsKLSAgICAgICAgVGV4dHVyZU1hcHBlclRpbGUqIHRpbGUgPSB0aWxlc1tpXTsK
LSAgICAgICAgdGlsZS0+cGFpbnQodGV4dHVyZU1hcHBlciwgdHJhbnNmb3JtLCBvcGFjaXR5LCBt
YXNrLCBjYWxjdWxhdGVFeHBvc2VkVGlsZUVkZ2VzKHJlY3QsIHRpbGUtPnJlY3QoKSkpOwotICAg
ICAgICBzdGF0aWMgYm9vbCBzaG91bGREZWJ1ZyA9IHNob3VsZFNob3dUaWxlRGVidWdWaXN1YWxz
KCk7Ci0gICAgICAgIGlmICghc2hvdWxkRGVidWcpCi0gICAgICAgICAgICBjb250aW51ZTsKLQot
ICAgICAgICB0ZXh0dXJlTWFwcGVyLT5kcmF3Qm9yZGVyKENvbG9yKDB4RkYsIDAsIDApLCAyLCB0
aWxlLT5yZWN0KCksIHRyYW5zZm9ybSk7Ci0gICAgICAgIHRleHR1cmVNYXBwZXItPmRyYXdSZXBh
aW50Q291bnRlcihzdGF0aWNfY2FzdDxDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGUqPih0aWxl
KS0+cmVwYWludENvdW50KCksIDgsIHRpbGUtPnJlY3QoKS5sb2NhdGlvbigpLCB0cmFuc2Zvcm0p
OwotICAgIH0KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRpbGVzLnNpemUoKTsgKytpKQor
ICAgICAgICB0aWxlc1tpXS0+cGFpbnQodGV4dHVyZU1hcHBlciwgdHJhbnNmb3JtLCBvcGFjaXR5
LCBtYXNrLCBjYWxjdWxhdGVFeHBvc2VkVGlsZUVkZ2VzKHJlY3QsIHRpbGVzW2ldLT5yZWN0KCkp
KTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVNYXBw
ZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRS
ZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5
LCBCaXRtYXBUZXh0dXJlKiBtYXNrKQpAQCAtMTc0LDYgKzE1NSwxNyBAQCB2b2lkIENvb3JkaW5h
dGVkQmFja2luZ1N0b3JlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0
dXJlTWFwcGVyLAogICAgIHBhaW50VGlsZXNUb1RleHR1cmVNYXBwZXIodGlsZXNUb1BhaW50LCB0
ZXh0dXJlTWFwcGVyLCBhZGp1c3RlZFRyYW5zZm9ybSwgb3BhY2l0eSwgbWFzaywgcmVjdE9uQ29u
dGVudHMpOwogfQogCit2b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpkcmF3RGVidWdWaXN1
YWxzKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0
UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgYm9vbCBzaG93RGVi
dWdCb3JkZXJzLCBjb25zdCBDb2xvciYgYm9yZGVyQ29sb3IsIGZsb2F0IGJvcmRlcldpZHRoLCBi
b29sIHNob3dSZXBhaW50Q291bnRlciwgaW50IHJlcGFpbnRDb3VudCkKK3sKKyAgICBGbG9hdFJl
Y3QgcmVjdE9uQ29udGVudHMoRmxvYXRQb2ludDo6emVybygpLCBtX3NpemUpOworICAgIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3JtID0gdHJhbnNmb3JtOworICAgIGFkanVz
dGVkVHJhbnNmb3JtLm11bHRpcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4OjpyZWN0VG9SZWN0KHJl
Y3RPbkNvbnRlbnRzLCB0YXJnZXRSZWN0KSk7CisKKyAgICBIYXNoTWFwPHVpbnQzMl90LCBDb29y
ZGluYXRlZEJhY2tpbmdTdG9yZVRpbGU+OjppdGVyYXRvciBlbmQgPSBtX3RpbGVzLmVuZCgpOwor
ICAgIGZvciAoSGFzaE1hcDx1aW50MzJfdCwgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlPjo6
aXRlcmF0b3IgaXQgPSBtX3RpbGVzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAg
dGV4dHVyZU1hcHBlci0+ZHJhd0RlYnVnVmlzdWFscyhpdC0+dmFsdWUucmVjdCgpLCBhZGp1c3Rl
ZFRyYW5zZm9ybSwgc2hvd0RlYnVnQm9yZGVycywgYm9yZGVyQ29sb3IsIGJvcmRlcldpZHRoLCBz
aG93UmVwYWludENvdW50ZXIsIHJlcGFpbnRDb3VudCk7Cit9CisKIHZvaWQgQ29vcmRpbmF0ZWRC
YWNraW5nU3RvcmU6OmNvbW1pdFRpbGVPcGVyYXRpb25zKFRleHR1cmVNYXBwZXIqIHRleHR1cmVN
YXBwZXIpCiB7CiAgICAgSGFzaFNldDx1aW50MzJfdD46Oml0ZXJhdG9yIHRpbGVzVG9SZW1vdmVF
bmQgPSBtX3RpbGVzVG9SZW1vdmUuZW5kKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRC
YWNraW5nU3RvcmUuaAppbmRleCBhZTVhZjhkNGZhMmZjOWViZDIxMTk3MjdmY2FkZDg1OTYyMzMw
Zjk5Li42ODA5YjhmOWI3ZTkxMTdiYmJjZWNkNjE0ZTBjYTczMDhlNzIxZmJlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZEJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmgKQEAgLTM2LDEzICszNiwxMCBAQCBw
dWJsaWM6CiAgICAgZXhwbGljaXQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlKGZsb2F0IHNj
YWxlID0gMSkKICAgICAgICAgOiBUZXh0dXJlTWFwcGVyVGlsZShXZWJDb3JlOjpGbG9hdFJlY3Qo
KSkKICAgICAgICAgLCBtX3NjYWxlKHNjYWxlKQotICAgICAgICAsIG1fcmVwYWludENvdW50KDAp
CiAgICAgewogICAgIH0KIAogICAgIGlubGluZSBmbG9hdCBzY2FsZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc2NhbGU7IH0KLSAgICBpbmxpbmUgdm9pZCBpbmNyZW1lbnRSZXBhaW50Q291bnQoKSB7ICsr
bV9yZXBhaW50Q291bnQ7IH0KLSAgICBpbmxpbmUgaW50IHJlcGFpbnRDb3VudCgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVwYWludENvdW50OyB9CiAgICAgdm9pZCBzd2FwQnVmZmVycyhXZWJDb3JlOjpU
ZXh0dXJlTWFwcGVyKik7CiAgICAgdm9pZCBzZXRCYWNrQnVmZmVyKGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgUGFzc1JlZlB0cjxDb29yZGluYXRlZFN1
cmZhY2U+IGJ1ZmZlciwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKIApAQCAtNTIsNyArNDks
NiBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OkludFJlY3QgbV90aWxlUmVjdDsKICAgICBXZWJD
b3JlOjpJbnRQb2ludCBtX3N1cmZhY2VPZmZzZXQ7CiAgICAgZmxvYXQgbV9zY2FsZTsKLSAgICBp
bnQgbV9yZXBhaW50Q291bnQ7CiB9OwogCiBjbGFzcyBDb29yZGluYXRlZEJhY2tpbmdTdG9yZSA6
IHB1YmxpYyBXZWJDb3JlOjpUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlIHsKQEAgLTY2LDYgKzYy
LDcgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6Qml0bWFwVGV4dHVyZT4gdGV4
dHVyZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0U2l6ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUm
KTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoV2ViQ29yZTo6VGV4dHVy
ZU1hcHBlciosIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OlRyYW5z
Zm9ybWF0aW9uTWF0cml4JiwgZmxvYXQsIFdlYkNvcmU6OkJpdG1hcFRleHR1cmUqKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZHJhd0RlYnVnVmlzdWFscyhXZWJDb3JlOjpUZXh0dXJlTWFwcGVyKiwgY29u
c3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRy
aXgmLCBib29sIHNob3dEZWJ1Z0JvcmRlcnMsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgZmxvYXQg
Ym9yZGVyV2lkdGgsIGJvb2wgc2hvd1JlcGFpbnRDb3VudGVyLCBpbnQgcmVwYWludENvdW50KSBP
VkVSUklERTsKIAogcHJpdmF0ZToKICAgICBDb29yZGluYXRlZEJhY2tpbmdTdG9yZSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHAKaW5k
ZXggYmFhOGY2NTIzZGViZmRlYmJjNGU1MjJiNDc1ZTE0Y2MxOGZkMmViNS4uZWY1ZTQ1ZmE5YmMy
MzcwMTQ1Y2NjZDFkY2Y4OGM2YjQwNThhYTlhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcApAQCAtMjQyLDYgKzI0MiwxMSBAQCB2
b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpkZXN0cm95Q2FudmFzKENvb3JkaW5h
dGVkTGF5ZXJJRCBpZCkKIH0KICNlbmRpZgogCit2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dFByb3h5OjpzZXRSZXBhaW50Q291bnQoQ29vcmRpbmF0ZWRMYXllcklEIGlkLCBpbnQgdmFsdWUp
Cit7CisgICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmTGF5ZXJUcmVlUmVuZGVyZXI6OnNldFJlcGFp
bnRDb3VudCwgbV9yZW5kZXJlci5nZXQoKSwgaWQsIHZhbHVlKSk7Cit9CisKIHZvaWQgQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OnB1cmdlQmFja2luZ1N0b3JlcygpCiB7CiAgICAgbV9z
dXJmYWNlcy5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdFByb3h5LmgKaW5kZXggNzU5MWI4NDg1ZDM5ODg2ZWQ3ZWQyY2QwNWQxMTYxM2ZlNjdm
YWNkMy4uZjljYTE5MmMyYjA0MzIyNTlmODhjOWJiNWVjZTNlNDVhM2M4YTY3OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oCkBAIC04NCw2
ICs4NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN5bmNDYW52YXMoQ29vcmRpbmF0ZWRMYXllcklE
LCB1aW50MzJfdCBmcm9udEJ1ZmZlcik7CiAgICAgdm9pZCBkZXN0cm95Q2FudmFzKENvb3JkaW5h
dGVkTGF5ZXJJRCk7CiAjZW5kaWYKKyAgICB2b2lkIHNldFJlcGFpbnRDb3VudChDb29yZGluYXRl
ZExheWVySUQsIGludCB2YWx1ZSk7CiAgICAgdm9pZCBwdXJnZUJhY2tpbmdTdG9yZXMoKTsKICAg
ICBMYXllclRyZWVSZW5kZXJlciogbGF5ZXJUcmVlUmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBt
X3JlbmRlcmVyLmdldCgpOyB9CiAgICAgdm9pZCBzZXRMYXllckFuaW1hdGlvbnMoQ29vcmRpbmF0
ZWRMYXllcklELCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyQW5pbWF0aW9ucyYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94
eS5tZXNzYWdlcy5pbgppbmRleCAxMzdkYWQ4MDc1MDBmNTVlNTlkMjZjMjdjMWRlZGJhNDljNTUw
OGEwLi4yNjhlZjFjZjk3MWY3ODhmM2RhN2MxOWNjNGMxNzJiZjRmNjgzNmU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZExheWVyVHJlZUhvc3RQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5t
ZXNzYWdlcy5pbgpAQCAtNTUsNiArNTUsOCBAQCBtZXNzYWdlcyAtPiBDb29yZGluYXRlZExheWVy
VHJlZUhvc3RQcm94eSB7CiAgICAgRGVzdHJveUNhbnZhcyh1aW50MzJfdCBpZCkKICNlbmRpZgog
CisgICAgU2V0UmVwYWludENvdW50KHVpbnQzMl90IGxheWVySUQsIGludCB2YWx1ZSkKKwogICAg
IFNldEJhY2tncm91bmRDb2xvcihXZWJDb3JlOjpDb2xvciBjb2xvcikKIH0KICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5
ZXJUcmVlUmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwCmluZGV4IDZlOTczMDIxNjYyYjQwZDM2YTI4
NGMzZmQxZDA0OWFiNjZhMjU5OTYuLmMxZTcyOGU0ZTAzYjkxNDhmNWQ4NzQ2M2YxZDVmNzMyZWQ0
MDFkYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdy
YXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5jcHAKQEAgLTI1NSw2ICsy
NTUsMTIgQEAgdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6ZGVzdHJveUNhbnZhcyhDb29yZGluYXRl
ZExheWVySUQgaWQpCiB9CiAjZW5kaWYKIAordm9pZCBMYXllclRyZWVSZW5kZXJlcjo6c2V0UmVw
YWludENvdW50KENvb3JkaW5hdGVkTGF5ZXJJRCBpZCwgaW50IHZhbHVlKQoreworICAgIEdyYXBo
aWNzTGF5ZXIqIGxheWVyID0gbGF5ZXJCeUlEKGlkKTsKKyAgICB0b0dyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyKGxheWVyKS0+c2V0UmVwYWludENvdW50KHZhbHVlKTsKK30KKwogdm9pZCBMYXll
clRyZWVSZW5kZXJlcjo6c2V0TGF5ZXJDaGlsZHJlbihDb29yZGluYXRlZExheWVySUQgaWQsIGNv
bnN0IFZlY3RvcjxDb29yZGluYXRlZExheWVySUQ+JiBjaGlsZElEcykKIHsKICAgICBHcmFwaGlj
c0xheWVyKiBsYXllciA9IGxheWVyQnlJRChpZCk7CkBAIC0zMzMsNiArMzM5LDkgQEAgdm9pZCBM
YXllclRyZWVSZW5kZXJlcjo6c2V0TGF5ZXJTdGF0ZShDb29yZGluYXRlZExheWVySUQgaWQsIGNv
bnN0IENvb3JkaW5hdGVkTGEKICAgICBsYXllci0+c2V0RHJhd3NDb250ZW50KGxheWVySW5mby5k
cmF3c0NvbnRlbnQpOwogICAgIGxheWVyLT5zZXRDb250ZW50c1Zpc2libGUobGF5ZXJJbmZvLmNv
bnRlbnRzVmlzaWJsZSk7CiAgICAgdG9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcihsYXllcikt
PnNldEZpeGVkVG9WaWV3cG9ydChsYXllckluZm8uZml4ZWRUb1ZpZXdwb3J0KTsKKyAgICBsYXll
ci0+c2V0U2hvd0RlYnVnQm9yZGVyKGxheWVySW5mby5zaG93RGVidWdCb3JkZXJzKTsKKyAgICBs
YXllci0+c2V0RGVidWdCb3JkZXIobGF5ZXJJbmZvLmRlYnVnQm9yZGVyQ29sb3IsIGxheWVySW5m
by5kZWJ1Z0JvcmRlcldpZHRoKTsKKyAgICBsYXllci0+c2V0U2hvd1JlcGFpbnRDb3VudGVyKGxh
eWVySW5mby5zaG93UmVwYWludENvdW50ZXIpOwogCiAgICAgaWYgKGxheWVySW5mby5maXhlZFRv
Vmlld3BvcnQpCiAgICAgICAgIG1fZml4ZWRMYXllcnMuYWRkKGlkLCBsYXllcik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRy
ZWVSZW5kZXJlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvTGF5ZXJUcmVlUmVuZGVyZXIuaAppbmRleCA1M2VjYmUzOTQ5ODE4OTlkMmFiYmUwZjIxZDQ0
NDM0NDIzOTM2NDg4Li4xYTk1OTdmZWIzMDRiNjgzYTY4NzM5NThmNWE0NDc1MDljZGM5NTI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9M
YXllclRyZWVSZW5kZXJlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGlu
YXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmgKQEAgLTc3LDYgKzc3LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgc3luY0NhbnZhcyhDb29yZGluYXRlZExheWVySUQsIHVpbnQzMl90IGZyb250
QnVmZmVyKTsKICAgICB2b2lkIGRlc3Ryb3lDYW52YXMoQ29vcmRpbmF0ZWRMYXllcklEKTsKICNl
bmRpZgorICAgIHZvaWQgc2V0UmVwYWludENvdW50KENvb3JkaW5hdGVkTGF5ZXJJRCwgaW50IHZh
bHVlKTsKIAogICAgIHZvaWQgZGV0YWNoKCk7CiAgICAgdm9pZCBhcHBlbmRVcGRhdGUoY29uc3Qg
RnVuY3Rpb248dm9pZCgpPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKaW5kZXggNWYyNjYyZWYwOTE4YjNhYTkyMTQw
YTQ4NDUyYTU1NTgyZjU3YmQzOS4uYWJiN2I0YWU5ZDIyOGFjN2U0ZjA5YjQyZTc5MDk1NjllZWMx
YmZmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXIuY3BwCkBAIC0zNzEsNiArMzcxLDI2IEBAIHZvaWQgQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyOjpzZXRDb250ZW50c1RvU29saWRDb2xvcihjb25zdCBDb2xvciYgY29sb3Ip
CiAgICAgZGlkQ2hhbmdlTGF5ZXJTdGF0ZSgpOwogfQogCit2b2lkIENvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcjo6c2V0U2hvd0RlYnVnQm9yZGVyKGJvb2wgc2hvdykKK3sKKyAgICBpZiAoaXNTaG93
aW5nRGVidWdCb3JkZXIoKSA9PSBzaG93KQorICAgICAgICByZXR1cm47CisKKyAgICBHcmFwaGlj
c0xheWVyOjpzZXRTaG93RGVidWdCb3JkZXIoc2hvdyk7CisKKyAgICBkaWRDaGFuZ2VMYXllclN0
YXRlKCk7Cit9CisKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRTaG93UmVwYWlu
dENvdW50ZXIoYm9vbCBzaG93KQoreworICAgIGlmIChpc1Nob3dpbmdSZXBhaW50Q291bnRlcigp
ID09IHNob3cpCisgICAgICAgIHJldHVybjsKKworICAgIEdyYXBoaWNzTGF5ZXI6OnNldFNob3dS
ZXBhaW50Q291bnRlcihzaG93KTsKKworICAgIGRpZENoYW5nZUxheWVyU3RhdGUoKTsKK30KKwog
dm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzVG9JbWFnZShJbWFnZSog
aW1hZ2UpCiB7CiAgICAgTmF0aXZlSW1hZ2VQdHIgbmV3TmF0aXZlSW1hZ2VQdHIgPSBpbWFnZSA/
IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIDogMDsKQEAgLTUxOSw2ICs1Mzks
OCBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c3luY0ltYWdlQmFja2luZygpCiAg
ICAgICAgIH0KIAogICAgICAgICBtX2Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLT5tYXJrRGlydHko
KTsKKyAgICAgICAgaWYgKGlzU2hvd2luZ1JlcGFpbnRDb3VudGVyKCkpCisgICAgICAgICAgICBt
X2Nvb3JkaW5hdG9yLT5zZXRSZXBhaW50Q291bnQoaWQoKSwgaW5jcmVtZW50UmVwYWludENvdW50
KCkpOwogICAgIH0gZWxzZQogICAgICAgICByZWxlYXNlSW1hZ2VCYWNraW5nSWZOZWVkZWQoKTsK
IApAQCAtNTUwLDkgKzU3MiwyMyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c3lu
Y0xheWVyU3RhdGUoKQogICAgIG1fbGF5ZXJJbmZvLnBvcyA9IG1fYWRqdXN0ZWRQb3NpdGlvbjsK
ICAgICBtX2xheWVySW5mby5zaXplID0gbV9hZGp1c3RlZFNpemU7CiAKKyAgICBtX2xheWVySW5m
by5zaG93RGVidWdCb3JkZXJzID0gaXNTaG93aW5nRGVidWdCb3JkZXIoKTsKKyAgICBpZiAobV9s
YXllckluZm8uc2hvd0RlYnVnQm9yZGVycykgeworICAgICAgICBtX3VzaW5nVGlsZWRMYXllciA9
IHNob3VsZEhhdmVCYWNraW5nU3RvcmUoKTsKKyAgICAgICAgdXBkYXRlRGVidWdJbmRpY2F0b3Jz
KCk7CisgICAgfQorICAgIG1fbGF5ZXJJbmZvLnNob3dSZXBhaW50Q291bnRlciA9IGlzU2hvd2lu
Z1JlcGFpbnRDb3VudGVyKCk7CisKICAgICBtX2Nvb3JkaW5hdG9yLT5zeW5jTGF5ZXJTdGF0ZSht
X2lkLCBtX2xheWVySW5mbyk7CiB9CiAKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpz
ZXREZWJ1Z0JvcmRlcihjb25zdCBDb2xvciYgY29sb3IsIGZsb2F0IHdpZHRoKQoreworICAgIEFT
U0VSVChtX2xheWVySW5mby5zaG93RGVidWdCb3JkZXJzKTsKKyAgICBtX2xheWVySW5mby5kZWJ1
Z0JvcmRlckNvbG9yID0gY29sb3I7CisgICAgbV9sYXllckluZm8uZGVidWdCb3JkZXJXaWR0aCA9
IHdpZHRoOworfQorCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c3luY0FuaW1hdGlv
bnMoKQogewogICAgIGlmICghbV9zaG91bGRTeW5jQW5pbWF0aW9ucykKQEAgLTU3NSw2ICs2MTEs
OCBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c3luY0NhbnZhcygpCiAjaWYgVVNF
KEdSQVBISUNTX1NVUkZBQ0UpCiAgICAgbV9jb29yZGluYXRvci0+c3luY0NhbnZhcyhtX2lkLCBt
X2NhbnZhc1BsYXRmb3JtTGF5ZXIpOwogI2VuZGlmCisgICAgaWYgKGlzU2hvd2luZ1JlcGFpbnRD
b3VudGVyKCkpCisgICAgICAgIG1fY29vcmRpbmF0b3ItPnNldFJlcGFpbnRDb3VudChpZCgpLCBp
bmNyZW1lbnRSZXBhaW50Q291bnQoKSk7CiAgICAgbV9jYW52YXNOZWVkc0Rpc3BsYXkgPSBmYWxz
ZTsKIH0KIApAQCAtNjk4LDggKzczNiwxMCBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXll
cjo6dGlsZWRCYWNraW5nU3RvcmVQYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsCiAgICAg
cGFpbnRHcmFwaGljc0xheWVyQ29udGVudHMoKmNvbnRleHQsIHJlY3QpOwogfQogCi12b2lkIENv
b3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dGlsZWRCYWNraW5nU3RvcmVQYWludEVuZChjb25zdCBW
ZWN0b3I8SW50UmVjdD4mIC8qIHVwZGF0ZWRSZWN0cyAqLykKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyOjp0aWxlZEJhY2tpbmdTdG9yZVBhaW50RW5kKGNvbnN0IFZlY3RvcjxJbnRSZWN0
PiYgdXBkYXRlZFJlY3RzKQogeworICAgIGlmIChpc1Nob3dpbmdSZXBhaW50Q291bnRlcigpICYm
ICF1cGRhdGVkUmVjdHMuaXNFbXB0eSgpKQorICAgICAgICBtX2Nvb3JkaW5hdG9yLT5zZXRSZXBh
aW50Q291bnQoaWQoKSwgaW5jcmVtZW50UmVwYWludENvdW50KCkpOwogfQogCiB2b2lkIENvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllcjo6dGlsZWRCYWNraW5nU3RvcmVIYXNQZW5kaW5nVGlsZUNyZWF0
aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyLmgKaW5kZXggNmM0MzU4NWM3MGM4ZTAzMDY1ZTRkY2FhMjdlNGYwZGEyZmEzNjk0
Ni4uMmI3NzUwY2FkZTYwZWZlMGU2ZDQxMDY5NDU0NTM5MGExODY1MWY5YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKQEAg
LTcxLDYgKzcxLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95Q2FudmFzKENv
b3JkaW5hdGVkTGF5ZXJJRCkgPSAwOwogI2VuZGlmCiAKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UmVw
YWludENvdW50KENvb3JkaW5hdGVkTGF5ZXJJRCwgaW50KSA9IDA7CisKICAgICB2aXJ0dWFsIHZv
aWQgc2V0TGF5ZXJBbmltYXRpb25zKENvb3JkaW5hdGVkTGF5ZXJJRCwgY29uc3QgV2ViQ29yZTo6
R3JhcGhpY3NMYXllckFuaW1hdGlvbnMmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNo
TGF5ZXIoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKikgPSAwOwpAQCAtMTEyLDYg
KzExNCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNSZWN0KGNvbnN0
IEludFJlY3QmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNUb0ltYWdl
KEltYWdlKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9Tb2xpZENv
bG9yKGNvbnN0IENvbG9yJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFNob3dEZWJ1
Z0JvcmRlcihib29sKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvd1JlcGFpbnRD
b3VudGVyKGJvb2wpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGREaXJlY3RseUNv
bXBvc2l0ZUltYWdlKEltYWdlKikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNl
dENvbnRlbnRzVG9DYW52YXMoUGxhdGZvcm1MYXllciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRNYXNrTGF5ZXIoR3JhcGhpY3NMYXllciopIE9WRVJSSURFOwpAQCAtMTY2LDYgKzE3
MCw4IEBAIHB1YmxpYzoKICAgICBib29sIGhhc1BlbmRpbmdWaXNpYmxlQ2hhbmdlcygpOwogCiBw
cml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCBzZXREZWJ1Z0JvcmRlcihjb25zdCBDb2xvciYsIGZs
b2F0IHdpZHRoKSBPVkVSUklERTsKKwogICAgIGJvb2wgZml4ZWRUb1ZpZXdwb3J0KCkgY29uc3Qg
eyByZXR1cm4gbV9maXhlZFRvVmlld3BvcnQ7IH0KIAogICAgIHZvaWQgZGlkQ2hhbmdlTGF5ZXJT
dGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggNzk3YWVlMzUyYjBlYjA4MzI0ZjU4Y2E5YjNmZDIyZmJm
NWNhZjk2YS4uMWY2NDU4MzQ0MTlkYzRhNmIyZGJiNmIyYmY0OTI2OTIwYjFhMmE1YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhv
c3QuY3BwCkBAIC0zOTMsNiArMzkzLDExIEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
OjpkZXN0cm95Q2FudmFzKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCkKIH0KICNlbmRpZgogCit2b2lk
IENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0UmVwYWludENvdW50KENvb3JkaW5hdGVkTGF5
ZXJJRCBpZCwgaW50IHZhbHVlKQoreworICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6Q29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OlNldFJlcGFpbnRDb3VudChpZCwgdmFsdWUpKTsK
K30KKwogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0OjpzeW5jTGF5ZXJGaWx0ZXJzKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCwgY29uc3QgRmlsdGVy
T3BlcmF0aW9ucyYgZmlsdGVycykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKaW5kZXggMDEwMjJiMmNjNGU5ODQ4OGE0ZGY3
ODdlYTM2OTBiNzJhY2NmZjcyOS4uZWRiMjA1NWE2YjY2ZjhjZjliZTZjNDI0YTY1MGRkYzRhMzhi
MThmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0LmgKQEAgLTEwMSw2ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHN5bmNDYW52YXMoQ29vcmRpbmF0ZWRMYXllcklELCBXZWJDb3JlOjpQbGF0Zm9ybUxheWVy
KikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3lDYW52YXMoQ29vcmRpbmF0ZWRM
YXllcklEKSBPVkVSUklERTsKICNlbmRpZgorICAgIHZpcnR1YWwgdm9pZCBzZXRSZXBhaW50Q291
bnQoQ29vcmRpbmF0ZWRMYXllcklELCBpbnQpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBk
ZXRhY2hMYXllcihXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqKTsKICAgICB2aXJ0
dWFsIHZvaWQgc3luY0ZpeGVkTGF5ZXJzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkVGlsZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZFRpbGUuY3BwCmluZGV4IDc5OGQyYjc1ZjI1MGRhNjcyOWZmOWJjZTUwZTg4
YzI5MTI5NDBiOGUuLmFjMGI1NjYyNmU4MWYxMGIxODc2MmI5OGYzNjU4MDRmOGUzMjYxNjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkVGlsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRUaWxlLmNwcApAQCAtOTcs
OCArOTcsMTAgQEAgVmVjdG9yPEludFJlY3Q+IENvb3JkaW5hdGVkVGlsZTo6dXBkYXRlQmFja0J1
ZmZlcigpCiAgICAgfSBlbHNlCiAgICAgICAgIG1fY2xpZW50LT51cGRhdGVUaWxlKG1fSUQsIHVw
ZGF0ZUluZm8sIG1fcmVjdCk7CiAKKyAgICBWZWN0b3I8SW50UmVjdD4gdXBkYXRlZFJlY3RzOwor
ICAgIHVwZGF0ZWRSZWN0cy5hcHBlbmQobV9kaXJ0eVJlY3QpOwogICAgIG1fZGlydHlSZWN0ID0g
SW50UmVjdCgpOwotICAgIHJldHVybiBWZWN0b3I8SW50UmVjdD4oKTsKKyAgICByZXR1cm4gdXBk
YXRlZFJlY3RzOwogfQogCiB2b2lkIENvb3JkaW5hdGVkVGlsZTo6c3dhcEJhY2tCdWZmZXJUb0Zy
b250KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApp
bmRleCAyNTkwM2E4NDYxYTE1OTA5NzllYTgxNWYxOGJiMGEwZjg2YjU0NDAxLi41YzgxNWE0MDYy
Y2I3YjUzNTkzYzJhNTllNTA1MWY4OWFkMDA2ODg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yMzM1LDggKzIzMzUsMTggQEAgdm9pZCBX
ZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9y
ZSkKICAgICBzZXR0aW5ncy0+c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoc3RvcmUu
Z2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjphY2NlbGVyYXRlZENvbXBvc2l0
aW5nRW5hYmxlZEtleSgpKSAmJiBMYXllclRyZWVIb3N0OjpzdXBwb3J0c0FjY2VsZXJhdGVkQ29t
cG9zaXRpbmcoKSk7CiAgICAgc2V0dGluZ3MtPnNldEFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQo
c3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjphY2NlbGVyYXRlZERy
YXdpbmdFbmFibGVkS2V5KCkpICYmIExheWVyVHJlZUhvc3Q6OnN1cHBvcnRzQWNjZWxlcmF0ZWRD
b21wb3NpdGluZygpKTsKICAgICBzZXR0aW5ncy0+c2V0Q2FudmFzVXNlc0FjY2VsZXJhdGVkRHJh
d2luZyhzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmNhbnZhc1Vz
ZXNBY2NlbGVyYXRlZERyYXdpbmdLZXkoKSkgJiYgTGF5ZXJUcmVlSG9zdDo6c3VwcG9ydHNBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nKCkpOworI2lmIFBMQVRGT1JNKFFUKQorICAgIGJvb2wgc2hvd0Rl
YnVnVmlzdWFscyA9IHFnZXRlbnYoIlFUX1dFQktJVF9TSE9XX0NPTVBPU0lUSU5HX0RFQlVHX1ZJ
U1VBTFMiKSA9PSAiMSI7CisgICAgc2V0dGluZ3MtPnNldFNob3dEZWJ1Z0JvcmRlcnMoc2hvd0Rl
YnVnVmlzdWFscyk7CisgICAgc2V0dGluZ3MtPnNldFNob3dSZXBhaW50Q291bnRlcihzaG93RGVi
dWdWaXN1YWxzKTsKKyNlbGlmIFVTRShDQUlSTykKKyAgICBib29sIHNob3dEZWJ1Z1Zpc3VhbHMg
PSBTdHJpbmcoZ2V0ZW52KCJXRUJLSVRfU0hPV19DT01QT1NJVElOR19ERUJVR19WSVNVQUxTIikp
ID09ICIxIjsKKyAgICBzZXR0aW5ncy0+c2V0U2hvd0RlYnVnQm9yZGVycyhzaG93RGVidWdWaXN1
YWxzKTsKKyAgICBzZXR0aW5ncy0+c2V0U2hvd1JlcGFpbnRDb3VudGVyKHNob3dEZWJ1Z1Zpc3Vh
bHMpOworI2Vsc2UKICAgICBzZXR0aW5ncy0+c2V0U2hvd0RlYnVnQm9yZGVycyhzdG9yZS5nZXRC
b29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmNvbXBvc2l0aW5nQm9yZGVyc1Zpc2li
bGVLZXkoKSkpOwogICAgIHNldHRpbmdzLT5zZXRTaG93UmVwYWludENvdW50ZXIoc3RvcmUuZ2V0
Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojpjb21wb3NpdGluZ1JlcGFpbnRDb3Vu
dGVyc1Zpc2libGVLZXkoKSkpOworI2VuZGlmCiAgICAgc2V0dGluZ3MtPnNldFNob3dUaWxlZFNj
cm9sbGluZ0luZGljYXRvcihzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNL
ZXk6OnRpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yVmlzaWJsZUtleSgpKSk7CiAgICAgc2V0dGluZ3Mt
PnNldEFnZ3Jlc3NpdmVUaWxlUmV0ZW50aW9uRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JL
ZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmFnZ3Jlc3NpdmVUaWxlUmV0ZW50aW9uRW5hYmxlZEtleSgp
KSk7CiAgICAgc2V0dGluZ3MtPnNldENTU0N1c3RvbUZpbHRlckVuYWJsZWQoc3RvcmUuZ2V0Qm9v
bFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojpjc3NDdXN0b21GaWx0ZXJFbmFibGVkS2V5
KCkpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182677</attachid>
            <date>2013-01-14 18:44:35 -0800</date>
            <delta_ts>2013-01-15 18:19:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105787-20130115114100.patch</filename>
            <type>text/plain</type>
            <size>69096</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5NjkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjc3YzBmYjVkYWFiN2Jj
YzJmYzM2ZmU5ODBkZWZjYmVkNjljOWE3Ny4uNGM4NWI1MTE1MzhkN2M0MzM4OTFmYTZiZmFjN2Yw
NDQ3NTUxN2VhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg3IEBACisyMDEzLTAxLTE0ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFtRdF1bRUZM
XVtHVEtdW1RleE1hcF1bV0syXSBSZWZhY3RvciBjb2RlIHJlbGF0ZWQgdG8gZGVidWcgYm9yZGVy
IGFuZCByZXBhaW50IGNvdW50LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTA1Nzg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQ3VycmVudGx5LCBUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLCBDb29yZGlu
YXRlZEJhY2tpbmdTdG9yZSBhbmQKKyAgICAgICAgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIg
aGF2ZSBkdXBsaWNhdGVkIGNvZGUgdG8gZHJhdyBkZWJ1ZyBib3JkZXIgb3IgcmVwYWludAorICAg
ICAgICBjb3VudC4gVGhpcyBwYXRjaCByZWZhY3RvcnMgdGhhdCBhbGwgcGxhdGZvcm0gbGF5ZXJz
IGRyYXcgZGVidWcgYm9yZGVyIGFuZCByZXBhaW50CisgICAgICAgIGNvdW50IGluIHRoZSBjb25z
aXN0ZW50IHdheS4KKworICAgICAgICBUaGVyZSBhcmUgdGhyZWUgYmlnIGNoYW5nZXM6CisgICAg
ICAgIDEuIFRvIGVuYWJsZSBvciBkaXNhYmxlIHRoaXMgZmVhdHVyZSwgd2UgdXNlIHNldFNob3dE
ZWJ1Z0JvcmRlcnMoYm9vbCkgYW5kCisgICAgICAgIHNldFNob3dSZXBhaW50Q291bnRlcihib29s
KSBpbiBTZXR0aW5ncy4KKyAgICAgICAgQXMgd2UgZGlkLCBpZiBbUVRfXVdFQktJVF9TSE9XX0NP
TVBPU0lUSU5HX0RFQlVHX1ZJU1VBTFMgaXMgc2V0IHRvIDEsIGJvdGgKKyAgICAgICAgc2V0dGlu
Z3MgYXJlIHNldCB0byB0cnVlLiBJdCBtZWFucyB0aGF0IG5vdyB3ZSBjYW4gc2VlIGRlYnVnIHZp
c3VhbHMgaW4gV0sxCisgICAgICAgIGFzIHdlbGwgYXMgV0syLgorICAgICAgICAyLiBUZXh0dXJl
TWFwcGVyTGF5ZXIgaGFzIHRoZSBkZWJ1ZyB2aXN1YWxzIGxpa2UgR3JhcGhpY3NMYXllci4KKyAg
ICAgICAgQm90aCBkZWJ1ZyBib3JkZXIgYW5kIHJlcGFpbnQgY291bnQgYXJlIGNhbGxlZCBhcyB0
aGUgZGVidWcgdmlzdWFscy4KKyAgICAgICAgMy4gV2UgdXNlIHRoZSBzYW1lIGNvbG9yIGFuZCB3
aWR0aCB0byBNYWMgcG9ydCBiZWNhdXNlIHdlIGdldCBib3RoIGluZm8gdXNpbmcKKyAgICAgICAg
R3JhcGhpY3NMYXllcjo6dXBkYXRlRGVidWdJbmRpY2F0b3JzKCkuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzLiBUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgZm9yIGRlYnVnZ2luZywgc28gd2UgY2Fubm90
IHRlc3QgdXNpbmcgRFJULgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
R05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNO
ZWVkc0Rpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXI6OnNldENvbnRlbnRzVG9JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlcjo6c2V0U2hvd0RlYnVnQm9yZGVyKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFNob3dSZXBh
aW50Q291bnRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
cjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6dXBkYXRlRGVidWdCb3JkZXJBbmRSZXBh
aW50Q291bnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6
OnNldERlYnVnQm9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjp1cGRhdGVCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXI6OnByZXBhcmVCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFJlcGFpbnRDb3VudCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmg6
CisgICAgICAgIChHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6ZGVidWdCb3JkZXJDb2xvcik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6ZGVidWdCb3JkZXJXaWR0aCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlcjo6ZHJhd0RlYnVnVmlzdWFscyk6CisgICAg
ICAgICAgICBEcmF3IGRlYnVnIHZpc3VhbHMgdXNpbmcgZHJhd0JvcmRlcigpIGFuZCBkcmF3UmVw
YWludENvdW50ZXIoKS4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmg6CisgICAgICAgIChUZXh0dXJlTWFwcGVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdT
dG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3Rv
cmU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpkcmF3RGVidWdWaXN1YWxz
KToKKyAgICAgICAgICAgIE92ZXJyaWRlIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyOjpkcmF3
RGVidWdWaXN1YWxzKCkgdG8gZHJhdworICAgICAgICAgICAgZGVidWcgdmlzdWFscyBmb3IgZWFj
aCB0aWxlLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
QmFja2luZ1N0b3JlLmg6CisgICAgICAgIChUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydEFCR1JUb0FSR0IpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRyYXdSZXBhaW50Q291bnRl
cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5o
OgorICAgICAgICAoVGV4dHVyZU1hcHBlckdMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlRleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlcjo6ZHJhd0JvcmRlcik6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlcjo6ZHJhd1JlcGFp
bnRDb3VudGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckltYWdlQnVmZmVyLmg6CisgICAgICAgIChUZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpwYWludFNlbGYpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVG
b3JUaGlzTGF5ZXJPbmx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckxheWVyLmg6CisgICAgICAgIChTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0dXJlTWFwcGVyTGF5ZXI6OlN0YXRlOjpTdGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyOjpkcmF3RGVidWdWaXN1YWxzKToKKyAgICAgICAgICAgIFRleHR1cmVNYXBwZXJMYXllciBj
YWxscyB0aGlzIG1ldGhvZCB0byBkcmF3IHRoZSBkZWJ1ZyB2aXN1bGFzLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllcik6CisK
IDIwMTMtMDEtMTQgIFhpYW56aHUgV2FuZyAgPHdhbmd4aWFuemh1QGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBTb21ldGltZXMgUmVuZGVyTGF5ZXI6OnVwZGF0ZU5lZWRzQ29tcG9zaXRlZFNjcm9s
bGluZyBpcyBub3QgY2FsbGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggMjdiYzZiZWNkNmIyODY4YzFl
OTUyYjEwN2QzMGM2NzZiMDVkOGE3Ny4uZjU5OTJhMTNkNzNjNGM3N2ZhMGUzZDA1ZjIzYWI3Y2Ex
YWM3NzAyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEzLTAxLTE0ICBI
dWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFtRdF1b
RUZMXVtHVEtdW1RleE1hcF1bV0syXSBSZWZhY3RvciBjb2RlIHJlbGF0ZWQgdG8gZGVidWcgYm9y
ZGVyIGFuZCByZXBhaW50IGNvdW50LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTA1Nzg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgSWYgV0VCS0lUX1NIT1dfQ09NUE9TSVRJTkdfREVCVUdfVklTVUFMUyBp
cyBzZXQgdG8gMSwgc2V0CisgICAgICAgIHNob3dEZWJ1Z0JvcmRlcnMgYW5kIHNob3dSZXBhaW50
Q291bnRlciBpbiBTZXR0aW5ncyB0byB0cnVlLgorCisgICAgICAgICogZXdrL2V3a192aWV3LmNw
cDoKKyAgICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6CisKIDIwMTMtMDEtMTMgIEt3YW5nWW9u
ZyBDaG9pICA8a3kwLmNob2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF0gVW5yZXZpZXdl
ZCBidWlsZCBmaXggYWZ0ZXIgcjEzOTU0MQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IGYzNTUwNDE2NThk
N2NmOTA1NjE5M2YzMmY0M2Q3MjZmOTNlMTM3MWQuLmM0ZjFiZTc3OGZkZjU5MDA4MTllODI1NjA3
M2FiZGMxN2U2NzhiNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMy0w
MS0xNCAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKworICAgICAg
ICBbUXRdW0VGTF1bR1RLXVtUZXhNYXBdW1dLMl0gUmVmYWN0b3IgY29kZSByZWxhdGVkIHRvIGRl
YnVnIGJvcmRlciBhbmQgcmVwYWludCBjb3VudC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTc4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIElmIFdFQktJVF9TSE9XX0NPTVBPU0lUSU5HX0RFQlVHX1ZJ
U1VBTFMgaXMgc2V0IHRvIDEsIHNldAorICAgICAgICBzaG93RGVidWdCb3JkZXJzIGFuZCBzaG93
UmVwYWludENvdW50ZXIgaW4gU2V0dGluZ3MgdG8gdHJ1ZS4KKworICAgICAgICAqIHdlYmtpdC93
ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld191cGRhdGVfc2V0dGlu
Z3MpOgorCiAyMDEzLTAxLTExICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBVcGRhdGUgTkVXUyBhbmQgY29uZmlndXJlLmFj
IGZvciAxLjExLjQgcmVsZWFzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCBjNjg3M2Q3MWQxZTI0YWEzZThh
ODY0OTYxYzE0NWVhOTc5MWY2YWFmLi5kMjkxM2I4NTlhMzA3YmM4NGZiMjRlZTVjZjJiY2NiNjY1
Njg2MDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEzLTAxLTE0ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFtRdF1bRUZM
XVtHVEtdW1RleE1hcF1bV0syXSBSZWZhY3RvciBjb2RlIHJlbGF0ZWQgdG8gZGVidWcgYm9yZGVy
IGFuZCByZXBhaW50IGNvdW50LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTA1Nzg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSWYgUVRfV0VCS0lUX1NIT1dfQ09NUE9TSVRJTkdfREVCVUdfVklTVUFMUyBp
cyBzZXQgdG8gMSwgc2V0CisgICAgICAgIHNob3dEZWJ1Z0JvcmRlcnMgYW5kIHNob3dSZXBhaW50
Q291bnRlciBpbiBTZXR0aW5ncyB0byB0cnVlLgorCisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5n
cy5jcHA6CisgICAgICAgIChRV2ViU2V0dGluZ3NQcml2YXRlOjphcHBseSk6CisKIDIwMTMtMDEt
MTEgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAg
W1RleE1hcF0gUmVuYW1lIGN1cnJlbnRbVHJhbnNmb3JtfE9wYWNpdHl8RmlsdGVyc10gaW4gVGV4
dHVyZU1hcHBlckxheWVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDYzZmVkZDFkNjFhZmI3MmRkZDg2NmMyMTg0
ZjZkMjI5NjNiOTY5YmEuLjI5NTZmNmVkNjJkYWQ5ODc0NDI3MWIwYTIyODFhOTliNGQwODYyYmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NCBAQAorMjAxMy0wMS0xNCAgSHVhbmcgRG9uZ3N1bmcg
IDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKworICAgICAgICBbUXRdW0VGTF1bR1RLXVtUZXhN
YXBdW1dLMl0gUmVmYWN0b3IgY29kZSByZWxhdGVkIHRvIGRlYnVnIGJvcmRlciBhbmQgcmVwYWlu
dCBjb3VudC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwNTc4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoZXJlIGFyZSB0aHJlZSBiaWcgY2hhbmdlczoKKyAgICAgICAgMS4gQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyIHNlbmRzIGRlYnVnZ2luZyB2aXN1YWxzIHRvIFVJIFByb2Nlc3MuCisgICAgICAg
IDIuIElmIFtRVF9dV0VCS0lUX1NIT1dfQ09NUE9TSVRJTkdfREVCVUdfVklTVUFMUyBpcyBzZXQg
dG8gMSwgc2V0CisgICAgICAgIHNob3dEZWJ1Z0JvcmRlcnMgYW5kIHNob3dSZXBhaW50Q291bnRl
ciBpbiBTZXR0aW5ncyB0byB0cnVlLgorICAgICAgICAzLiBXaGVuIHVwZGF0aW5nIGEgYmFja2lu
ZyBzdG9yZSwgYSBjb21wb3NpdGVkIGltYWdlIG9yIGEgcGxhdGZvcm0KKyAgICAgICAgY2FudmFz
IGxheWVyLCBpbmNyZW1lbnQgYSByZXBhaW50IGNvdW50LgorCisgICAgICAgICogU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllckluZm8uaDoKKyAgICAgICAgKFdlYktp
dDo6Q29vcmRpbmF0ZWRMYXllckluZm86OkNvb3JkaW5hdGVkTGF5ZXJJbmZvKToKKyAgICAgICAg
KENvb3JkaW5hdGVkTGF5ZXJJbmZvKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNv
b3JkaW5hdGVkQmFja2luZ1N0b3JlOjp1cGRhdGVUaWxlKToKKyAgICAgICAgKFdlYktpdDo6Q29v
cmRpbmF0ZWRCYWNraW5nU3RvcmU6OnBhaW50VGlsZXNUb1RleHR1cmVNYXBwZXIpOgorICAgICAg
ICAoV2ViS2l0OjpDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6ZHJhd0RlYnVnVmlzdWFscyk6Cisg
ICAgICAgICAgICBPdmVycmlkZSBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllcjo6ZHJhd0RlYnVn
VmlzdWFscygpIHRvIGRyYXcKKyAgICAgICAgICAgIGRlYnVnIHZpc3VhbHMgZm9yIGVhY2ggdGls
ZS4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKFdlYktpdDo6Q29vcmRp
bmF0ZWRCYWNraW5nU3RvcmVUaWxlOjpDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGUpOgorICAg
ICAgICAoQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlKToKKyAgICAgICAgKENvb3JkaW5hdGVk
QmFja2luZ1N0b3JlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpzZXRSZXBhaW50Q291bnQpOgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZExheWVyVHJlZUhvc3RQcm94eS5oOgorICAgICAgICAoQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
UHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdFByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TGF5ZXJUcmVlUmVuZGVyZXI6OnNldFJlcGFpbnRDb3VudCk6CisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6c2V0TGF5ZXJTdGF0ZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIu
aDoKKyAgICAgICAgKExheWVyVHJlZVJlbmRlcmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRTaG93RGVidWdC
b3JkZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXI6OnNldFNob3dSZXBhaW50Q291bnRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnN5bmNJbWFnZUJhY2tpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzeW5jTGF5ZXJTdGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldERlYnVnQm9yZGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c3luY0NhbnZhcyk6
CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnRpbGVkQmFja2lu
Z1N0b3JlUGFpbnRFbmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oOgorICAgICAgICAoQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyQ2xpZW50KToKKyAgICAgICAgKENvb3JkaW5hdGVkR3JhcGhpY3NMYXll
cik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0OjpzZXRSZXBhaW50Q291bnQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExh
eWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZFRpbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRl
ZFRpbGU6OnVwZGF0ZUJhY2tCdWZmZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMp
OgorCiAyMDEzLTAxLTE0ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjUyNDcxMD4gVXBkYXRlIHNhbmRib3ggcnVsZXMgYWZ0
ZXIgcjEyODAwMwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBhNWJkYzRhMzcxNmYxNjU1N2NjMmIw
NTdiZTNkYzU3NGY4Nzk5MGQ0Li5jMDVmZjJlYWNkMGVmZjE2NDg2NzQ0MDc0NDdjNzM2ZWRmNDk3
OWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTk3OCw2ICsxOTc4LDcgQEAgc2V0KFdlYkNv
cmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFj
a2luZ1N0b3JlLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
SW1hZ2VCdWZmZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJMYXllci5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXIuY3BwCiAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL0FmZmlu
ZVRyYW5zZm9ybS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL01hdHJpeDNE
VHJhbnNmb3JtT3BlcmF0aW9uLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXgg
YWY1NzQ5N2U3NmQwZWZlODMxOTlkMjExOTdkYTQyOWRjOTU1OTE3YS4uYjRlYTNmNjMzZDA2NjQ4
M2I2NDk5MGMzNzBjMjUwY2ZjZDE1YTkxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CkBAIC02NDE3LDYgKzY0MTcsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuaCBc
CiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJM
YXllci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyTGF5ZXIuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgKIGVuZGlm
ICAjIEVORCBVU0VfVEVYVFVSRV9NQVBQRVJfQ0FJUk8KIApAQCAtNjQ0Miw2ICs2NDQzLDcgQEAg
d2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmggXAorCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oCiBlbmRpZiAgIyBFTkQgVVNFX1RFWFRVUkVfTUFQ
UEVSX0dMCiBlbmRpZiAgIyBVU0VfQUNDRUxFUkFURURfQ09NUE9TSVRJTkcKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmlu
ZGV4IGJjMTY4NDdiZjZhNzFkNTdiOTY4ZTdkMTA5MzUxNjQyZDc5YTU1MGUuLmFjYzE5YWY5NWNi
ZjNkOTNiYTRhZTQ2MDdkYmZjYTFlYTZiYmUwYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMjg2OCw2ICsy
ODY4LDcgQEAgU09VUkNFUyArPSBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJCYWNraW5nU3RvcmUuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAgXAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5jcHAgXAogICAgIHBsYXRmb3JtL25ldHdvcmsv
RE5TUmVzb2x2ZVF1ZXVlLmNwcCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9NSU1FU25pZmZpbmcu
Y3BwIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL3F0L0Nvb2tpZUphclF0LmNwcCBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAppbmRleCBlOTYyOTZiYTUxZTRhYTcx
MTVkYmEyMjZhYTU3ZmZlZjBlYzAxMjIyLi5hMWU3OTFiMzU5OWU4OGIzODg2NDhkY2EyNDE2NGJh
NzYyZWVkMzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAK
QEAgLTI0LDE0ICsyNCw4IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckFuaW1hdGlvbi5oIgog
I2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJGYWN0b3J5LmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIu
aCIKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGlt
ZS5oPgogCi0jaWYgVVNFKENBSVJPKQotI2luY2x1ZGUgIkNhaXJvVXRpbGl0aWVzLmgiCi0jaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogUGFzc093blB0cjxHcmFwaGljc0xheWVyPiBHcmFwaGljc0xheWVyOjpjcmVhdGUoR3JhcGhp
Y3NMYXllckZhY3RvcnkqIGZhY3RvcnksIEdyYXBoaWNzTGF5ZXJDbGllbnQqIGNsaWVudCkKQEAg
LTEwMCw2ICs5NCwxMSBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXROZWVk
c0Rpc3BsYXkoKQogKi8KIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRl
bnRzTmVlZHNEaXNwbGF5KCkKIHsKKyAgICBpZiAoaXNTaG93aW5nUmVwYWludENvdW50ZXIoKSkg
eworICAgICAgICBpbmNyZW1lbnRSZXBhaW50Q291bnQoKTsKKyAgICAgICAgbV9jaGFuZ2VNYXNr
IHw9IFRleHR1cmVNYXBwZXJMYXllcjo6UmVwYWludENvdW50Q2hhbmdlOworICAgIH0KKwogICAg
IG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkRpc3BsYXlDaGFuZ2UpOwogICAgIGFk
ZFJlcGFpbnRSZWN0KGNvbnRlbnRzUmVjdCgpKTsKIH0KQEAgLTM2Myw2ICszNjIsMTEgQEAgdm9p
ZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNUb0ltYWdlKEltYWdlKiBp
bWFnZSkKICAgICAgICAgaWYgKCFtX2NvbXBvc2l0ZWRJbWFnZSkKICAgICAgICAgICAgIG1fY29t
cG9zaXRlZEltYWdlID0gVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGUoKTsK
ICAgICAgICAgbV9jb21wb3NpdGVkSW1hZ2UtPnNldENvbnRlbnRzVG9JbWFnZShpbWFnZSk7CisK
KyAgICAgICAgaWYgKGlzU2hvd2luZ1JlcGFpbnRDb3VudGVyKCkpIHsKKyAgICAgICAgICAgIGlu
Y3JlbWVudFJlcGFpbnRDb3VudCgpOworICAgICAgICAgICAgbV9jaGFuZ2VNYXNrIHw9IFRleHR1
cmVNYXBwZXJMYXllcjo6UmVwYWludENvdW50Q2hhbmdlOworICAgICAgICB9CiAgICAgfSBlbHNl
IHsKICAgICAgICAgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHIgPSAwOwogICAgICAgICBtX2Nv
bXBvc2l0ZWRJbWFnZSA9IDA7CkBAIC0zODMsMTUgKzM4Nyw2MCBAQCB2b2lkIEdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c1RvTWVkaWEoVGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXIqCiAgICAgbV9jb250ZW50c0xheWVyID0gbWVkaWE7CiB9CiAKK3ZvaWQgR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXI6OnNldFNob3dEZWJ1Z0JvcmRlcihib29sIHNob3cpCit7CisgICAg
aWYgKGlzU2hvd2luZ0RlYnVnQm9yZGVyKCkgPT0gc2hvdykKKyAgICAgICAgcmV0dXJuOworCisg
ICAgR3JhcGhpY3NMYXllcjo6c2V0U2hvd0RlYnVnQm9yZGVyKHNob3cpOworICAgIG5vdGlmeUNo
YW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkRlYnVnVmlzdWFsc0NoYW5nZSk7Cit9CisKK3ZvaWQg
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFNob3dSZXBhaW50Q291bnRlcihib29sIHNo
b3cpCit7CisgICAgaWYgKGlzU2hvd2luZ1JlcGFpbnRDb3VudGVyKCkgPT0gc2hvdykKKyAgICAg
ICAgcmV0dXJuOworCisgICAgR3JhcGhpY3NMYXllcjo6c2V0U2hvd1JlcGFpbnRDb3VudGVyKHNo
b3cpOworICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkRlYnVnVmlzdWFsc0No
YW5nZSk7Cit9CisKIC8qIFxyZWltcCAoR3JhcGhpY3NMYXllci5oKQogKi8KIHZvaWQgR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9u
bHkoKQogeworICAgIGlmIChtX2hhc093bkJhY2tpbmdTdG9yZSkKKyAgICAgICAgdXBkYXRlRGVi
dWdCb3JkZXJBbmRSZXBhaW50Q291bnQoKTsKICAgICBtX2xheWVyLT5mbHVzaENvbXBvc2l0aW5n
U3RhdGVGb3JUaGlzTGF5ZXJPbmx5KHRoaXMpOwotICAgIHVwZGF0ZUJhY2tpbmdTdG9yZSgpOwor
ICAgIGlmIChtX2hhc093bkJhY2tpbmdTdG9yZSkKKyAgICAgICAgdXBkYXRlQmFja2luZ1N0b3Jl
KCk7CiAgICAgZGlkRmx1c2hDb21wb3NpdGluZ1N0YXRlKCk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXI6OnVwZGF0ZURlYnVnQm9yZGVyQW5kUmVwYWludENvdW50KCkKK3sK
KyAgICBBU1NFUlQobV9oYXNPd25CYWNraW5nU3RvcmUpOworCisgICAgbV91c2luZ1RpbGVkTGF5
ZXIgPSBzaG91bGRIYXZlQmFja2luZ1N0b3JlKCk7CisgICAgdXBkYXRlRGVidWdJbmRpY2F0b3Jz
KCk7CisKKyAgICAvLyBXaGVuIHRoaXMgaGFzIGl0cyBvd24gYmFja2luZyBzdG9yZSAoaS5lLiBR
dCBXSzEpLCB1cGRhdGUgdGhlIHJlcGFpbnQgY291bnQgYmVmb3JlIGNhbGxpbmcgVGV4dHVyZU1h
cHBlckxheWVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCkuCisgICAg
Ym9vbCBuZWVkc1RvUmVwYWludCA9IHNob3VsZEhhdmVCYWNraW5nU3RvcmUoKSAmJiAobV9uZWVk
c0Rpc3BsYXkgfHwgIW1fbmVlZHNEaXNwbGF5UmVjdC5pc0VtcHR5KCkpOworICAgIGlmIChpc1No
b3dpbmdSZXBhaW50Q291bnRlcigpICYmIG5lZWRzVG9SZXBhaW50KSB7CisgICAgICAgIGluY3Jl
bWVudFJlcGFpbnRDb3VudCgpOworICAgICAgICBtX2NoYW5nZU1hc2sgfD0gVGV4dHVyZU1hcHBl
ckxheWVyOjpSZXBhaW50Q291bnRDaGFuZ2U7CisgICAgfQorfQorCit2b2lkIEdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyOjpzZXREZWJ1Z0JvcmRlcihjb25zdCBDb2xvciYgY29sb3IsIGZsb2F0
IHdpZHRoKQoreworICAgIC8vIFRoZSBkZWZhdWx0IHZhbHVlcyBmb3IgR3JhcGhpY3NMYXllciBk
ZWJ1ZyBib3JkZXJzIGFyZSBhIGxpdHRsZQorICAgIC8vIGhhcmQgdG8gc2VlIChzb21lIGxlc3Mg
dGhhbiBvbmUgcGl4ZWwgd2lkZSksIHNvIHdlIGRvdWJsZSB0aGVpciBzaXplIGhlcmUuCisgICAg
bV9kZWJ1Z0JvcmRlckNvbG9yID0gY29sb3I7CisgICAgbV9kZWJ1Z0JvcmRlcldpZHRoID0gd2lk
dGggKiAyOworICAgIG1fY2hhbmdlTWFzayB8PSBUZXh0dXJlTWFwcGVyTGF5ZXI6OkRlYnVnVmlz
dWFsc0NoYW5nZTsKK30KKwogLyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgpCiAqLwogdm9pZCBH
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlKGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCkKQEAgLTQxNiw5ICs0NjUsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyOjpkaWRGbHVzaENvbXBvc2l0aW5nU3RhdGUoKQogCiB2b2lkIEdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyOjp1cGRhdGVCYWNraW5nU3RvcmUoKQogewotICAgIGlmICghbV9oYXNP
d25CYWNraW5nU3RvcmUpCi0gICAgICAgIHJldHVybjsKLQorICAgIEFTU0VSVChtX2hhc093bkJh
Y2tpbmdTdG9yZSk7CiAgICAgcHJlcGFyZUJhY2tpbmdTdG9yZSgpOwogICAgIG1fbGF5ZXItPnNl
dEJhY2tpbmdTdG9yZShtX2JhY2tpbmdTdG9yZSk7CiB9CkBAIC00NDgsMzQgKzQ5NSw3IEBAIHZv
aWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnByZXBhcmVCYWNraW5nU3RvcmUoKQogI2Vu
ZGlmCiAgICAgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUgPSBz
dGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUqPihtX2JhY2tpbmdTdG9y
ZS5nZXQoKSk7CiAKLSAgICBpZiAoaXNTaG93aW5nUmVwYWludENvdW50ZXIoKSkKLSAgICAgICAg
aW5jcmVtZW50UmVwYWludENvdW50KCk7Ci0KLSAgICAvLyBQYWludCBpbnRvIGFuIGludGVybWVk
aWF0ZSBidWZmZXIgdG8gYXZvaWQgcGFpbnRpbmcgY29udGVudCBtb3JlIHRoYW4gb25jZS4KLSAg
ICBib29sIHBhaW50T25jZSA9IHRydWU7Ci0gICAgY29uc3QgSW50U2l6ZSBtYXhUZXh0dXJlU2l6
ZSA9IHRleHR1cmVNYXBwZXItPm1heFRleHR1cmVTaXplKCk7Ci0gICAgLy8gV2UgbmVlZCB0byBw
YWludCBkaXJlY3RseSBpZiB0aGUgZGlydHkgcmVjdCBleGNlZWRzIG9uZSBvZiB0aGUgbWF4aW11
bSBkaW1lbnNpb25zLgotICAgIGlmIChkaXJ0eVJlY3Qud2lkdGgoKSA+IG1heFRleHR1cmVTaXpl
LndpZHRoKCkgfHwgZGlydHlSZWN0LmhlaWdodCgpID4gbWF4VGV4dHVyZVNpemUuaGVpZ2h0KCkp
Ci0gICAgICAgIHBhaW50T25jZSA9IGZhbHNlOwotCi0gICAgaWYgKHBhaW50T25jZSkgewotICAg
ICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZShkaXJ0eVJlY3Quc2l6ZSgpKTsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0g
aW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKLSAgICAgICAgY29udGV4dC0+c2V0SW1hZ2VJbnRlcnBv
bGF0aW9uUXVhbGl0eSh0ZXh0dXJlTWFwcGVyLT5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkp
OwotICAgICAgICBjb250ZXh0LT5zZXRUZXh0RHJhd2luZ01vZGUodGV4dHVyZU1hcHBlci0+dGV4
dERyYXdpbmdNb2RlKCkpOwotICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoLWRpcnR5UmVjdC54
KCksIC1kaXJ0eVJlY3QueSgpKTsKLSAgICAgICAgcGFpbnRHcmFwaGljc0xheWVyQ29udGVudHMo
KmNvbnRleHQsIGRpcnR5UmVjdCk7Ci0KLSAgICAgICAgaWYgKGlzU2hvd2luZ1JlcGFpbnRDb3Vu
dGVyKCkpCi0gICAgICAgICAgICBkcmF3UmVwYWludENvdW50ZXIoY29udGV4dCk7Ci0KLSAgICAg
ICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGltYWdlQnVmZmVyLT5jb3B5SW1hZ2UoRG9udENvcHlC
YWNraW5nU3RvcmUpOwotICAgICAgICBiYWNraW5nU3RvcmUtPnVwZGF0ZUNvbnRlbnRzKHRleHR1
cmVNYXBwZXIsIGltYWdlLmdldCgpLCBtX3NpemUsIGRpcnR5UmVjdCwgQml0bWFwVGV4dHVyZTo6
VXBkYXRlQ2FuTW9kaWZ5T3JpZ2luYWxJbWFnZURhdGEpOwotICAgIH0gZWxzZQotICAgICAgICBi
YWNraW5nU3RvcmUtPnVwZGF0ZUNvbnRlbnRzKHRleHR1cmVNYXBwZXIsIHRoaXMsIG1fc2l6ZSwg
ZGlydHlSZWN0LCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDYW5Nb2RpZnlPcmlnaW5hbEltYWdlRGF0
YSk7Ci0KLSAgICBiYWNraW5nU3RvcmUtPnNldFNob3dEZWJ1Z0JvcmRlcnMoaXNTaG93aW5nRGVi
dWdCb3JkZXIoKSk7Ci0gICAgYmFja2luZ1N0b3JlLT5zZXREZWJ1Z0JvcmRlcihtX2RlYnVnQm9y
ZGVyQ29sb3IsIG1fZGVidWdCb3JkZXJXaWR0aCk7CisgICAgYmFja2luZ1N0b3JlLT51cGRhdGVD
b250ZW50cyh0ZXh0dXJlTWFwcGVyLCB0aGlzLCBtX3NpemUsIGRpcnR5UmVjdCwgQml0bWFwVGV4
dHVyZTo6VXBkYXRlQ2FuTW9kaWZ5T3JpZ2luYWxJbWFnZURhdGEpOwogCiAgICAgbV9uZWVkc0Rp
c3BsYXkgPSBmYWxzZTsKICAgICBtX25lZWRzRGlzcGxheVJlY3QgPSBJbnRSZWN0KCk7CkBAIC00
ODYsNDAgKzUwNiw2IEBAIGJvb2wgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNob3VsZEhh
dmVCYWNraW5nU3RvcmUoKSBjb25zdAogICAgIHJldHVybiBkcmF3c0NvbnRlbnQoKSAmJiBjb250
ZW50c0FyZVZpc2libGUoKSAmJiAhbV9zaXplLmlzRW1wdHkoKTsKIH0KIAotI2lmIFVTRShDQUlS
TykKLXZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmRyYXdSZXBhaW50Q291bnRlcihH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQpCi17Ci0gICAgY2Fpcm9fdCogY3IgPSBjb250ZXh0LT5w
bGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKLSAgICBjYWlyb19zYXZlKGNyKTsKLQotICAgIENTdHJp
bmcgcmVwYWludENvdW50ID0gU3RyaW5nOjpmb3JtYXQoIiVpIiwgdGhpcy0+cmVwYWludENvdW50
KCkpLnV0ZjgoKTsKLSAgICBjYWlyb19zZWxlY3RfZm9udF9mYWNlKGNyLCAic2Fucy1zZXJpZiIs
IENBSVJPX0ZPTlRfU0xBTlRfTk9STUFMLCBDQUlST19GT05UX1dFSUdIVF9CT0xEKTsKLSAgICBj
YWlyb19zZXRfZm9udF9zaXplKGNyLCAxOCk7Ci0KLSAgICBjYWlyb190ZXh0X2V4dGVudHNfdCBy
ZXBhaW50VGV4dEV4dGVudHM7Ci0gICAgY2Fpcm9fdGV4dF9leHRlbnRzKGNyLCByZXBhaW50Q291
bnQuZGF0YSgpLCAmcmVwYWludFRleHRFeHRlbnRzKTsKLQotICAgIHN0YXRpYyBjb25zdCBpbnQg
cmVwYWludENvdW50Qm9yZGVyV2lkdGggPSAxMDsKLSAgICBzZXRTb3VyY2VSR0JBRnJvbUNvbG9y
KGNyLCBpc1Nob3dpbmdEZWJ1Z0JvcmRlcigpID8gbV9kZWJ1Z0JvcmRlckNvbG9yIDogQ29sb3Io
MCwgMjU1LCAwLCAxMjcpKTsKLSAgICBjYWlyb19yZWN0YW5nbGUoY3IsIDAsIDAsCi0gICAgICAg
IHJlcGFpbnRUZXh0RXh0ZW50cy53aWR0aCArIChyZXBhaW50Q291bnRCb3JkZXJXaWR0aCAqIDIp
LAotICAgICAgICByZXBhaW50VGV4dEV4dGVudHMuaGVpZ2h0ICsgKHJlcGFpbnRDb3VudEJvcmRl
cldpZHRoICogMikpOwotICAgIGNhaXJvX2ZpbGwoY3IpOwotCi0gICAgY2Fpcm9fc2V0X3NvdXJj
ZV9yZ2IoY3IsIDEsIDEsIDEpOwotICAgIGNhaXJvX21vdmVfdG8oY3IsIHJlcGFpbnRDb3VudEJv
cmRlcldpZHRoLCByZXBhaW50VGV4dEV4dGVudHMuaGVpZ2h0ICsgcmVwYWludENvdW50Qm9yZGVy
V2lkdGgpOwotICAgIGNhaXJvX3Nob3dfdGV4dChjciwgcmVwYWludENvdW50LmRhdGEoKSk7Ci0K
LSAgICBjYWlyb19yZXN0b3JlKGNyKTsKLX0KLSNlbHNlCi12b2lkIEdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyOjpkcmF3UmVwYWludENvdW50ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQot
ewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLSNlbmRpZgotCiBib29sIEdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyOjphZGRBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZh
bHVlTGlzdCwgY29uc3QgSW50U2l6ZSYgYm94U2l6ZSwgY29uc3QgQW5pbWF0aW9uKiBhbmltLCBj
b25zdCBTdHJpbmcmIGtleWZyYW1lc05hbWUsIGRvdWJsZSB0aW1lT2Zmc2V0KQogewogICAgIEFT
U0VSVCgha2V5ZnJhbWVzTmFtZS5pc0VtcHR5KCkpOwpAQCAtNTYxLDE0ICs1NDcsNiBAQCB2b2lk
IEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjphbmltYXRpb25TdGFydGVkVGltZXJGaXJlZChU
aW1lcjxHcmFwaGljc0xheWVyVAogICAgIGNsaWVudCgpLT5ub3RpZnlBbmltYXRpb25TdGFydGVk
KHRoaXMsIC8qIERPTSB0aW1lICovIFdURjo6Y3VycmVudFRpbWUoKSk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldERlYnVnQm9yZGVyKGNvbnN0IENvbG9yJiBjb2xv
ciwgZmxvYXQgd2lkdGgpCi17Ci0gICAgLy8gVGhlIGRlZmF1bHQgdmFsdWVzIGZvciBHcmFwaGlj
c0xheWVyIGRlYnVnIGJvcmRlcnMgYXJlIGEgbGl0dGxlCi0gICAgLy8gaGFyZCB0byBzZWUgKHNv
bWUgbGVzcyB0aGFuIG9uZSBwaXhlbCB3aWRlKSwgc28gd2UgZG91YmxlIHRoZWlyIHNpemUgaGVy
ZS4KLSAgICBtX2RlYnVnQm9yZGVyQ29sb3IgPSBjb2xvcjsKLSAgICBtX2RlYnVnQm9yZGVyV2lk
dGggPSB3aWR0aCAqIDI7Ci19Ci0KICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiBib29sIEdyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMm
IGZpbHRlcnMpCiB7CkBAIC01NzcsNCArNTU1LDEwIEBAIGJvb2wgR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXI6OnNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKIH0K
ICNlbmRpZgogCit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRSZXBhaW50Q291
bnQoaW50IHZhbHVlKQoreworICAgIG1fcmVwYWludENvdW50ID0gdmFsdWU7CisgICAgbm90aWZ5
Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6UmVwYWludENvdW50Q2hhbmdlKTsKK30KKwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaAppbmRleCAxMmMzMTk1OTFiNzI2
YzdjOWYwYmEyYmRmZGY0Mzg0ZTdkZWExNzEzLi4zOTMzOGMzN2FiNzgyNWJiYmFkMDA3OTI3N2M5
OGRiM2FlZjVkNGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaApA
QCAtMjAsNyArMjAsNiBAQAogI2lmbmRlZiBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcl9oCiAj
ZGVmaW5lIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyX2gKIAotI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKICNpbmNsdWRlICJHcmFwaGlj
c0xheWVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKQEAgLTY2LDYgKzY1LDkgQEAgcHVi
bGljOgogICAgIENvbG9yIHNvbGlkQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX3NvbGlkQ29sb3I7
IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNUb01lZGlhKFBsYXRmb3JtTGF5ZXIqKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNUb0NhbnZhcyhQbGF0Zm9ybUxheWVyKiBjYW52
YXMpIHsgc2V0Q29udGVudHNUb01lZGlhKGNhbnZhcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0
U2hvd0RlYnVnQm9yZGVyKGJvb2wpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXREZWJ1
Z0JvcmRlcihjb25zdCBDb2xvciYsIGZsb2F0IHdpZHRoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0U2hvd1JlcGFpbnRDb3VudGVyKGJvb2wpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBmbHVzaENvbXBvc2l0aW5nU3RhdGUoY29uc3QgRmxvYXRSZWN0Jik7CiAgICAgdmlydHVh
bCB2b2lkIGZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKTsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpOwpAQCAtODEsOCArODMsNiBAQCBw
dWJsaWM6CiAKICAgICBUZXh0dXJlTWFwcGVyTGF5ZXIqIGxheWVyKCkgY29uc3QgeyByZXR1cm4g
bV9sYXllci5nZXQoKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHNldERlYnVnQm9yZGVyKGNvbnN0
IENvbG9yJiwgZmxvYXQgd2lkdGgpOwotCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogICAgIHZp
cnR1YWwgYm9vbCBzZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKTsKICNlbmRpZgpA
QCAtOTMsMTAgKzkzLDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEZpeGVkVG9WaWV3cG9ydChi
b29sIGZpeGVkKSB7IG1fZml4ZWRUb1ZpZXdwb3J0ID0gZml4ZWQ7IH0KICAgICBib29sIGZpeGVk
VG9WaWV3cG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fZml4ZWRUb1ZpZXdwb3J0OyB9CiAKLSAgICB2
b2lkIGRyYXdSZXBhaW50Q291bnRlcihHcmFwaGljc0NvbnRleHQqKTsKKyAgICBDb2xvciBkZWJ1
Z0JvcmRlckNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z0JvcmRlckNvbG9yOyB9CisgICAg
ZmxvYXQgZGVidWdCb3JkZXJXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdCb3JkZXJXaWR0
aDsgfQorCisgICAgdm9pZCBzZXRSZXBhaW50Q291bnQoaW50IHZhbHVlKTsKKwogcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVkKCk7CiAgICAgdm9pZCBkaWRGbHVzaENv
bXBvc2l0aW5nU3RhdGUoKTsKKyAgICB2b2lkIHVwZGF0ZURlYnVnQm9yZGVyQW5kUmVwYWludENv
dW50KCk7CiAgICAgdm9pZCB1cGRhdGVCYWNraW5nU3RvcmUoKTsKICAgICB2b2lkIHByZXBhcmVC
YWNraW5nU3RvcmUoKTsKICAgICBib29sIHNob3VsZEhhdmVCYWNraW5nU3RvcmUoKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyLmNwcAppbmRleCAzN2Y3MTU0ZjFjNjlkOThiNGEyM2IwYzBjZDc0OGVmNWQ5
ZDc1OTA4Li4xOGZlYmVlZGRjMzdiNzAzOTBhMTAyYTM2MjQzYTczN2U3MGEwMzAzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXIuY3BwCkBAIC0xNDYsNiArMTQ2LDE0IEBAIFRleHR1cmVNYXBwZXI6OlRleHR1cmVN
YXBwZXIoQWNjZWxlcmF0aW9uTW9kZSBhY2NlbGVyYXRpb25Nb2RlKQogVGV4dHVyZU1hcHBlcjo6
flRleHR1cmVNYXBwZXIoKQogeyB9CiAKK3ZvaWQgVGV4dHVyZU1hcHBlcjo6ZHJhd0RlYnVnVmlz
dWFscyhjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiB0cmFuc2Zvcm0sIGJvb2wgc2hvd0RlYnVnQm9yZGVycywgY29uc3QgQ29sb3ImIGJvcmRl
ckNvbG9yLCBmbG9hdCBib3JkZXJXaWR0aCwgYm9vbCBzaG93UmVwYWludENvdW50ZXIsIGludCBy
ZXBhaW50Q291bnQpCit7CisgICAgaWYgKHNob3dEZWJ1Z0JvcmRlcnMpCisgICAgICAgIGRyYXdC
b3JkZXIoYm9yZGVyQ29sb3IsIGJvcmRlcldpZHRoLCB0YXJnZXRSZWN0LCB0cmFuc2Zvcm0pOwor
ICAgIGlmIChzaG93UmVwYWludENvdW50ZXIpCisgICAgICAgIGRyYXdSZXBhaW50Q291bnRlcihy
ZXBhaW50Q291bnQsIGJvcmRlckNvbG9yLCB0YXJnZXRSZWN0LmxvY2F0aW9uKCksIHRyYW5zZm9y
bSk7Cit9CisKIHZvaWQgQml0bWFwVGV4dHVyZTo6dXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBl
ciogdGV4dHVyZU1hcHBlciwgR3JhcGhpY3NMYXllciogc291cmNlTGF5ZXIsIGNvbnN0IEludFJl
Y3QmIHRhcmdldFJlY3QsIGNvbnN0IEludFBvaW50JiBvZmZzZXQsIFVwZGF0ZUNvbnRlbnRzRmxh
ZyB1cGRhdGVDb250ZW50c0ZsYWcpCiB7CiAgICAgT3duUHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1
ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUodGFyZ2V0UmVjdC5zaXplKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
LmgKaW5kZXggYzcyNDFhNmM5YTcyMmE2NDUyZjdjMThjOWQ2Njk3MTI3NjY5MzY2Yi4uMDJhMGQ3
ZDI4NzE3MTVkMDg4NDVlMmExMmNlYmI0YzIxYWRkZGMzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oCkBAIC0x
MzAsMTAgKzEzMCwxMCBAQCBwdWJsaWM6CiAgICAgICAgIEFsbEVkZ2VzID0gTGVmdEVkZ2UgfCBS
aWdodEVkZ2UgfCBUb3BFZGdlIHwgQm90dG9tRWRnZSwKICAgICB9OwogCi0gICAgdmlydHVhbCB2
b2lkIGRyYXdCb3JkZXIoY29uc3QgQ29sb3ImLCBmbG9hdCBib3JkZXJXaWR0aCwgY29uc3QgRmxv
YXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3
TWF0cml4ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBk
cmF3UmVwYWludENvdW50ZXIoaW50IHZhbHVlLCBpbnQgcG9pbnRTaXplLCBjb25zdCBGbG9hdFBv
aW50JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCA9IFRyYW5z
Zm9ybWF0aW9uTWF0cml4KCkpID0gMDsKKwogICAgIHZpcnR1YWwgdm9pZCBkcmF3VGV4dHVyZShj
b25zdCBCaXRtYXBUZXh0dXJlJiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXQsIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgp
LCBmbG9hdCBvcGFjaXR5ID0gMS4wZiwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUg
PSAwLCB1bnNpZ25lZCBleHBvc2VkRWRnZXMgPSBBbGxFZGdlcykgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBkcmF3U29saWRDb2xvcihjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYsIGNvbnN0IENvbG9yJikgPSAwOworICAgIHZvaWQgZHJhd0RlYnVnVmlzdWFscyhj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGJvb2wgc2hvd0Rl
YnVnQm9yZGVycywgY29uc3QgQ29sb3ImLCBmbG9hdCBib3JkZXJXaWR0aCwgYm9vbCBzaG93UmVw
YWludENvdW50ZXIsIGludCByZXBhaW50Q291bnQpOwogCiAgICAgLy8gbWFrZXMgYSBzdXJmYWNl
IHRoZSB0YXJnZXQgZm9yIHRoZSBmb2xsb3dpbmcgZHJhd1RleHR1cmUgY2FsbHMuCiAgICAgdmly
dHVhbCB2b2lkIGJpbmRTdXJmYWNlKEJpdG1hcFRleHR1cmUqIHN1cmZhY2UpID0gMDsKQEAgLTE2
NCw2ICsxNjQsOSBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgVGV4dHVyZU1h
cHBlcihBY2NlbGVyYXRpb25Nb2RlKTsKIAorICAgIHZpcnR1YWwgdm9pZCBkcmF3Qm9yZGVyKGNv
bnN0IENvbG9yJiwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVwYWludENv
dW50ZXIoaW50IHJlcGFpbnRDb3VudCwgY29uc3QgQ29sb3ImLCBjb25zdCBGbG9hdFBvaW50Jiwg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSA9IDA7CisKICAgICBHcmFwaGljc0NvbnRleHQq
IG1fY29udGV4dDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0
b3JlLmNwcAppbmRleCBlODk5MjUzMWIyODdjNWI1OTc3OWU2NDc2ZTgwMWI4YjY5OTVjMmM3Li4y
MjY3ODljNWRmMjA2MDU4ZDg5NDRkOTZiNjQ5YzA3NWFmZDk5YjIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuY3BwCkBAIC0xMDYsNyArMTA2LDYgQEAgdm9pZCBUZXh0
dXJlTWFwcGVyVGlsZTo6cGFpbnQoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3Qg
VHJhbnNmb3JtYXRpb24KIH0KIAogVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpUZXh0
dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUoKQotICAgIDogbV9kcmF3c0RlYnVnQm9yZGVycyhm
YWxzZSkKIHsKIH0KIApAQCAtMTM4LDExICsxMzcsMTYgQEAgdm9pZCBUZXh0dXJlTWFwcGVyVGls
ZWRCYWNraW5nU3RvcmU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1
cmUKICAgICB1cGRhdGVDb250ZW50c0Zyb21JbWFnZUlmTmVlZGVkKHRleHR1cmVNYXBwZXIpOwog
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3JtID0gdHJhbnNmb3JtOwog
ICAgIGFkanVzdGVkVHJhbnNmb3JtLm11bHRpcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4OjpyZWN0
VG9SZWN0KHJlY3QoKSwgdGFyZ2V0UmVjdCkpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bV90aWxlcy5zaXplKCk7ICsraSkgeworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90aWxl
cy5zaXplKCk7ICsraSkKICAgICAgICAgbV90aWxlc1tpXS5wYWludCh0ZXh0dXJlTWFwcGVyLCBh
ZGp1c3RlZFRyYW5zZm9ybSwgb3BhY2l0eSwgbWFzaywgY2FsY3VsYXRlRXhwb3NlZFRpbGVFZGdl
cyhyZWN0KCksIG1fdGlsZXNbaV0ucmVjdCgpKSk7Ci0gICAgICAgIGlmIChtX2RyYXdzRGVidWdC
b3JkZXJzKQotICAgICAgICAgICAgdGV4dHVyZU1hcHBlci0+ZHJhd0JvcmRlcihtX2RlYnVnQm9y
ZGVyQ29sb3IsIG1fZGVidWdCb3JkZXJXaWR0aCwgbV90aWxlc1tpXS5yZWN0KCksIGFkanVzdGVk
VHJhbnNmb3JtKTsKLSAgICB9Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0
b3JlOjpkcmF3RGVidWdWaXN1YWxzKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0
IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5z
Zm9ybSwgYm9vbCBzaG93RGVidWdCb3JkZXJzLCBjb25zdCBDb2xvciYgYm9yZGVyQ29sb3IsIGZs
b2F0IGJvcmRlcldpZHRoLCBib29sIHNob3dSZXBhaW50Q291bnRlciwgaW50IHJlcGFpbnRDb3Vu
dCkKK3sKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhZGp1c3RlZFRyYW5zZm9ybSA9IHRyYW5z
Zm9ybTsKKyAgICBhZGp1c3RlZFRyYW5zZm9ybS5tdWx0aXBseShUcmFuc2Zvcm1hdGlvbk1hdHJp
eDo6cmVjdFRvUmVjdChyZWN0KCksIHRhcmdldFJlY3QpKTsKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1fdGlsZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIHRleHR1cmVNYXBwZXItPmRyYXdE
ZWJ1Z1Zpc3VhbHMobV90aWxlc1tpXS5yZWN0KCksIGFkanVzdGVkVHJhbnNmb3JtLCBzaG93RGVi
dWdCb3JkZXJzLCBib3JkZXJDb2xvciwgYm9yZGVyV2lkdGgsIHNob3dSZXBhaW50Q291bnRlciwg
cmVwYWludENvdW50KTsKIH0KIAogdm9pZCBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6
OmNyZWF0ZU9yRGVzdHJveVRpbGVzSWZOZWVkZWQoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25z
dCBJbnRTaXplJiB0aWxlU2l6ZSwgYm9vbCBoYXNBbHBoYSkKQEAgLTIzNCwxMSArMjM4LDUgQEAg
UGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6
OnRleHR1cmUoKSBjb25zdAogICAgIHJldHVybiBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+KCk7
CiB9CiAKLXZvaWQgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpzZXREZWJ1Z0JvcmRl
cihjb25zdCBDb2xvciYgY29sb3IsIGZsb2F0IHdpZHRoKQotewotICAgIG1fZGVidWdCb3JkZXJD
b2xvciA9IGNvbG9yOwotICAgIG1fZGVidWdCb3JkZXJXaWR0aCA9IHdpZHRoOwotfQotCiB9CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oCmluZGV4IDBkZDJkZjRi
MTk4YmQzMTFmZDQxYzU1YTMzNzcyMTg0Y2QxNGIzNGEuLjQzZjFlYTc1MWM1NDA3NDM5MzVkZDkx
MGFmN2VjNDllNWExYjZlOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUu
aApAQCAtOTQsMTIgKzk0LDExIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxC
aXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0LCBCaXRtYXBUZXh0dXJlKikgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIGRyYXdEZWJ1Z1Zpc3VhbHMoVGV4dHVyZU1hcHBlciosIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgYm9vbCBzaG93RGVi
dWdCb3JkZXJzLCBjb25zdCBDb2xvciYsIGZsb2F0IGJvcmRlcldpZHRoLCBib29sIHNob3dSZXBh
aW50Q291bnRlciwgaW50IHJlcGFpbnRDb3VudCkgT1ZFUlJJREU7CiAgICAgdm9pZCB1cGRhdGVD
b250ZW50cyhUZXh0dXJlTWFwcGVyKiwgSW1hZ2UqLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJ
bnRSZWN0JiwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ29udGVudHNGbGFnKTsKICAgICB2b2lkIHVw
ZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqLCBHcmFwaGljc0xheWVyKiwgY29uc3QgRmxvYXRT
aXplJiwgY29uc3QgSW50UmVjdCYsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNvbnRlbnRzRmxhZyk7
CiAKICAgICB2b2lkIHNldENvbnRlbnRzVG9JbWFnZShJbWFnZSogaW1hZ2UpIHsgbV9pbWFnZSA9
IGltYWdlOyB9Ci0gICAgdm9pZCBzZXRTaG93RGVidWdCb3JkZXJzKGJvb2wgZHJhd3NEZWJ1Z0Jv
cmRlcnMpIHsgbV9kcmF3c0RlYnVnQm9yZGVycyA9IGRyYXdzRGVidWdCb3JkZXJzOyB9Ci0gICAg
dm9pZCBzZXREZWJ1Z0JvcmRlcihjb25zdCBDb2xvciYsIGZsb2F0IHdpZHRoKTsKIAogcHJpdmF0
ZToKICAgICBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUoKTsKQEAgLTExMCwxMCArMTA5
LDYgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8VGV4dHVyZU1hcHBlclRpbGU+IG1fdGlsZXM7CiAg
ICAgRmxvYXRTaXplIG1fc2l6ZTsKICAgICBSZWZQdHI8SW1hZ2U+IG1faW1hZ2U7Ci0KLSAgICBi
b29sIG1fZHJhd3NEZWJ1Z0JvcmRlcnM7Ci0gICAgQ29sb3IgbV9kZWJ1Z0JvcmRlckNvbG9yOwot
ICAgIGZsb2F0IG1fZGVidWdCb3JkZXJXaWR0aDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5j
cHAKaW5kZXggMzQwODRmOTQwYzY4Mzc2NDM4MThmODBjZWYzN2UzNWVlMDE5YTRmOS4uZjc3MmEz
ZjRmMThmODgyNDljZTU0ZjRhNWQ0NmY3Zjg2MzFkODJhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5j
cHAKQEAgLTMwOSw4ICszMDksMTQgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdCb3JkZXIo
Y29uc3QgQ29sb3ImIGNvbG9yLCBmbG9hdCB3aWR0aCwgY29uc3QgRmxvYXRSZWMKICAgICBkcmF3
KHRhcmdldFJlY3QsIG1vZGVsVmlld01hdHJpeCwgcHJvZ3JhbS5nZXQoKSwgR3JhcGhpY3NDb250
ZXh0M0Q6OkxJTkVfTE9PUCwgY29sb3IuaGFzQWxwaGEoKSA/IFNob3VsZEJsZW5kIDogMCk7CiB9
CiAKLXZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3UmVwYWludENvdW50ZXIoaW50IHZhbHVlLCBp
bnQgcG9pbnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRQb2ludCwgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCkKK3N0YXRpYyBpbmxpbmUgUkdCQTMyIGNv
bnZlcnRBQkdSVG9BUkdCKFJHQkEzMiBwaXhlbCkKIHsKKyAgICByZXR1cm4gKChwaXhlbCA8PCAx
NikgJiAweGZmMDAwMCkgfCAoKHBpeGVsID4+IDE2KSAmIDB4ZmYpIHwgKHBpeGVsICYgMHhmZjAw
ZmYwMCk7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3UmVwYWludENvdW50ZXIoaW50
IHZhbHVlLCBjb25zdCBDb2xvciYgY29sb3IsIGNvbnN0IEZsb2F0UG9pbnQmIHRhcmdldFBvaW50
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4KQoreworICAgIHN0
YXRpYyBjb25zdCBpbnQgcG9pbnRTaXplID0gODsKICNpZiBQTEFURk9STShRVCkKICAgICBRU3Ry
aW5nIGNvdW50ZXJTdHJpbmcgPSBRU3RyaW5nOjpudW1iZXIodmFsdWUpOwogCkBAIC0zMjcsNyAr
MzMzLDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdSZXBhaW50Q291bnRlcihpbnQgdmFs
dWUsIGludCBwb2ludFNpemUsIGNvbnN0IEZsb2F0UG8KIAogICAgIFFJbWFnZSBpbWFnZShzaXpl
LCBOYXRpdmVJbWFnZVF0OjpkZWZhdWx0Rm9ybWF0Rm9yQWxwaGFFbmFibGVkSW1hZ2VzKCkpOwog
ICAgIFFQYWludGVyIHBhaW50ZXIoJmltYWdlKTsKLSAgICBwYWludGVyLmZpbGxSZWN0KHNvdXJj
ZVJlY3QsIFF0OjpibHVlKTsgLy8gU2luY2Ugd2Ugd29uJ3Qgc3dhcCBSK0IgZm9yIHNwZWVkLCB0
aGlzIHdpbGwgcGFpbnQgcmVkLgorICAgIHBhaW50ZXIuZmlsbFJlY3Qoc291cmNlUmVjdCwgY29u
dmVydEFCR1JUb0FSR0IoY29sb3IucmdiKCkpKTsgLy8gU2luY2Ugd2Ugd29uJ3Qgc3dhcCBSK0Ig
Zm9yIHNwZWVkLCB0aGlzIHdpbGwgcGFpbnQgdGhlIGdpdmVuIGNvbG9yLgogICAgIHBhaW50ZXIu
c2V0Rm9udChmb250KTsKICAgICBwYWludGVyLnNldFBlbihRdDo6d2hpdGUpOwogICAgIHBhaW50
ZXIuZHJhd1RleHQoMiwgaGVpZ2h0ICogMC44NSwgY291bnRlclN0cmluZyk7CkBAIC0zNDYsNyAr
MzUyLDkgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdSZXBhaW50Q291bnRlcihpbnQgdmFs
dWUsIGludCBwb2ludFNpemUsIGNvbnN0IEZsb2F0UG8KICAgICBjYWlyb19zdXJmYWNlX3QqIHN1
cmZhY2UgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZShDQUlST19GT1JNQVRfQVJHQjMyLCB3
aWR0aCwgaGVpZ2h0KTsKICAgICBjYWlyb190KiBjciA9IGNhaXJvX2NyZWF0ZShzdXJmYWNlKTsK
IAotICAgIGNhaXJvX3NldF9zb3VyY2VfcmdiKGNyLCAwLCAwLCAxKTsgLy8gU2luY2Ugd2Ugd29u
J3Qgc3dhcCBSK0IgZm9yIHNwZWVkLCB0aGlzIHdpbGwgcGFpbnQgcmVkLgorICAgIGZsb2F0IHIs
IGcsIGIsIGE7CisgICAgY29sb3IuZ2V0UkdCQShyLCBnLCBiLCBhKTsKKyAgICBjYWlyb19zZXRf
c291cmNlX3JnYmEoY3IsIGIsIGcsIHIsIGEpOyAvLyBTaW5jZSB3ZSB3b24ndCBzd2FwIFIrQiBm
b3Igc3BlZWQsIHRoaXMgd2lsbCBwYWludCB0aGUgZ2l2ZW4gY29sb3IuCiAgICAgY2Fpcm9fcmVj
dGFuZ2xlKGNyLCAwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKICAgICBjYWlyb19maWxsKGNyKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJHTC5oCmluZGV4IGFhMTMzMTJmYWFmY2EzMWZkZjFkMWM0MTRkMzVjMjdjYWM4
MDJjYTIuLmM4MTFlNzBlZDJjNzI0OTA5MTAyM2RlMzU2ODUwNDgxZWUzYzUzZGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
R0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckdMLmgKQEAgLTUxLDggKzUxLDYgQEAgcHVibGljOgogICAgIHR5cGVkZWYgaW50IEZs
YWdzOwogCiAgICAgLy8gVGV4dHVyZU1hcHBlciBpbXBsZW1lbnRhdGlvbgotICAgIHZpcnR1YWwg
dm9pZCBkcmF3Qm9yZGVyKGNvbnN0IENvbG9yJiwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZs
b2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmll
d01hdHJpeCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpIE9WRVJSSURFOwotICAgIHZpcnR1YWwg
dm9pZCBkcmF3UmVwYWludENvdW50ZXIoaW50IHZhbHVlLCBpbnQgcG9pbnRTaXplLCBjb25zdCBG
bG9hdFBvaW50JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCA9
IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3
VGV4dHVyZShjb25zdCBCaXRtYXBUZXh0dXJlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5LCBjb25zdCBCaXRtYXBUZXh0dXJlKiBt
YXNrVGV4dHVyZSwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IHZvaWQgZHJhd1RleHR1cmUoUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlLCBGbGFncywgY29uc3Qg
SW50U2l6ZSYgdGV4dHVyZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwgY29u
c3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUsIHVuc2lnbmVkIGV4cG9zZWRFZGdlcyA9IEFs
bEVkZ2VzKTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1NvbGlkQ29sb3IoY29uc3QgRmxvYXRSZWN0
JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBDb2xvciYpIE9WRVJSSURFOwpA
QCAtMTA3LDYgKzEwNSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkcmF3VW5pdFJlY3QoVGV4dHVy
ZU1hcHBlclNoYWRlclByb2dyYW0qLCBHQzNEZW51bSBkcmF3aW5nTW9kZSk7CiAgICAgdm9pZCBk
cmF3RWRnZVRyaWFuZ2xlcyhUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbSopOwogCisgICAgdmly
dHVhbCB2b2lkIGRyYXdCb3JkZXIoY29uc3QgQ29sb3ImLCBmbG9hdCBib3JkZXJXaWR0aCwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVyKGludCByZXBhaW50Q291bnQsIGNvbnN0
IENvbG9yJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jikg
T1ZFUlJJREU7CisKICAgICBib29sIGJlZ2luU2Npc3NvckNsaXAoY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmLCBjb25zdCBGbG9hdFJlY3QmKTsKICAgICB2b2lkIGJpbmREZWZhdWx0U3VyZmFj
ZSgpOwogICAgIENsaXBTdGFjayYgY2xpcFN0YWNrKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
SW1hZ2VCdWZmZXIuY3BwCmluZGV4IDkyOTA1M2IxMmI3NDAyNTg0YzU0ODdhMzhhYjgwZmNkYjFh
MTEwYjguLjY5ZmQ3MzhmNThmYzkxNDUxN2I5OWE5N2U0MDczMzkxNmMzNjdkZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
SW1hZ2VCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAjaWYg
UExBVEZPUk0oUVQpCiAjaW5jbHVkZSAiTmF0aXZlSW1hZ2VRdC5oIgogI2VuZGlmCisjaW5jbHVk
ZSAiTm90SW1wbGVtZW50ZWQuaCIKIAogCiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQpAQCAtMTY0
LDYgKzE2NSwxNiBAQCB2b2lkIFRleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlcjo6ZHJhd1NvbGlkQ29s
b3IoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBUcmFucwogICAgIGNvbnRleHQtPnJlc3Rv
cmUoKTsKIH0KIAordm9pZCBUZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXI6OmRyYXdCb3JkZXIoY29u
c3QgQ29sb3ImLCBmbG9hdCAvKiBib3JkZXJXaWR0aCAqLywgY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K3ZvaWQgVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyOjpkcmF3UmVwYWludENvdW50ZXIoaW50IC8q
IHJlcGFpbnRDb3VudCAqLywgY29uc3QgQ29sb3ImLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKICNp
ZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IEJpdG1hcFRl
eHR1cmVJbWFnZUJ1ZmZlcjo6YXBwbHlGaWx0ZXJzKFRleHR1cmVNYXBwZXIqLCBjb25zdCBCaXRt
YXBUZXh0dXJlJiBjb250ZW50VGV4dHVyZSwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVy
cykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuaAppbmRleCA5ZGU2ZDRjYmQ1
ZWIxN2U5MzQ4ODAxOGE2MmE3MTMxZDg5NzM4NGViLi5iYWY1NjBjZTVhNWRiYTU0MDIyZDMwMjFi
NjNmNmJhMmQ1OTNiMzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5oCkBA
IC01MywxNCArNTMsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8VGV4dHVyZU1h
cHBlcj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRQdHIobmV3IFRleHR1cmVNYXBwZXJJbWFnZUJ1
ZmZlcik7IH0KIAogICAgIC8vIFRleHR1cmVNYXBwZXIgaW1wbGVtZW50YXRpb24KLSAgICB2aXJ0
dWFsIHZvaWQgZHJhd0JvcmRlcihjb25zdCBDb2xvciYsIGZsb2F0IC8qIGJvcmRlcldpZHRoICov
LCBjb25zdCBGbG9hdFJlY3QmIC8qIHRhcmdldFJlY3QgKi8sIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiBtb2RlbFZpZXdNYXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKSBPVkVSUklE
RQotICAgIHsKLSAgICAgICAgVU5VU0VEX1BBUkFNKG1vZGVsVmlld01hdHJpeCk7Ci0gICAgfTsK
LSAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVyKGludCAvKiB2YWx1ZSAqLywgaW50
IC8qIHBvaW50U2l6ZSAqLywgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiBtb2RlbFZpZXdNYXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKSBPVkVSUklE
RQotICAgIHsKLSAgICAgICAgVU5VU0VEX1BBUkFNKG1vZGVsVmlld01hdHJpeCk7Ci0gICAgfTsK
ICAgICB2aXJ0dWFsIHZvaWQgZHJhd1RleHR1cmUoY29uc3QgQml0bWFwVGV4dHVyZSYsIGNvbnN0
IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9h
dCBvcGFjaXR5LCBjb25zdCBCaXRtYXBUZXh0dXJlKiBtYXNrVGV4dHVyZSwgdW5zaWduZWQgZXhw
b3NlZEVkZ2VzKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1NvbGlkQ29sb3IoY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBDb2xvciYp
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBiZWdpbkNsaXAoY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmLCBjb25zdCBGbG9hdFJlY3QmKSBPVkVSUklERTsKQEAgLTc4LDYgKzcwLDEwIEBA
IHByaXZhdGU6CiAgICAgVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyKCkKICAgICAgICAgOiBUZXh0
dXJlTWFwcGVyKFNvZnR3YXJlTW9kZSkKICAgICB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBkcmF3
Qm9yZGVyKGNvbnN0IENvbG9yJiwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IGRyYXdSZXBhaW50Q291bnRlcihpbnQgcmVwYWludENvdW50LCBjb25zdCBDb2xvciYsIGNvbnN0
IEZsb2F0UG9pbnQmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIE9WRVJSSURFOworCiAg
ICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IG1fY3VycmVudFN1cmZhY2U7CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyTGF5ZXIuY3BwCmluZGV4IDVkZmExODM4ZWQ0YjRjMjE4NDc1MDQzNDZlZWYwMzY0
MzliNTFhOWIuLjJkNzQ4NDBhMzgzYTg1ZDRhZDY4MGI3Nzc5MzQwODg2Mzc0Yzk2ZjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCkBAIC0xMjksNiArMTI5LDggQEAgdm9pZCBUZXh0dXJl
TWFwcGVyTGF5ZXI6OnBhaW50U2VsZihjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBv
cHRpb25zKQogCiAgICAgaWYgKG1fc3RhdGUuc29saWRDb2xvci5pc1ZhbGlkKCkgJiYgIW1fc3Rh
dGUuY29udGVudHNSZWN0LmlzRW1wdHkoKSkgewogICAgICAgICBvcHRpb25zLnRleHR1cmVNYXBw
ZXItPmRyYXdTb2xpZENvbG9yKG1fc3RhdGUuY29udGVudHNSZWN0LCB0cmFuc2Zvcm0sIGJsZW5k
V2l0aE9wYWNpdHkobV9zdGF0ZS5zb2xpZENvbG9yLCBvcGFjaXR5KSk7CisgICAgICAgIGlmICht
X3N0YXRlLnNob3dEZWJ1Z0JvcmRlcnMgfHwgbV9zdGF0ZS5zaG93UmVwYWludENvdW50ZXIpCisg
ICAgICAgICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmRyYXdEZWJ1Z1Zpc3VhbHMobGF5ZXJS
ZWN0KCksIHRyYW5zZm9ybSwgbV9zdGF0ZS5zaG93RGVidWdCb3JkZXJzLCBtX3N0YXRlLmRlYnVn
Qm9yZGVyQ29sb3IsIG1fc3RhdGUuZGVidWdCb3JkZXJXaWR0aCwgbV9zdGF0ZS5zaG93UmVwYWlu
dENvdW50ZXIsIG1fc3RhdGUucmVwYWludENvdW50KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApAQCAtMTM2LDExICsxMzgsMTUgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50U2Vs
Zihjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBvcHRpb25zKQogICAgICAgICBBU1NF
UlQobV9zdGF0ZS5kcmF3c0NvbnRlbnQgJiYgbV9zdGF0ZS5jb250ZW50c1Zpc2libGUgJiYgIW1f
c3RhdGUuc2l6ZS5pc0VtcHR5KCkpOwogICAgICAgICBBU1NFUlQoIWxheWVyUmVjdCgpLmlzRW1w
dHkoKSk7CiAgICAgICAgIG1fYmFja2luZ1N0b3JlLT5wYWludFRvVGV4dHVyZU1hcHBlcihvcHRp
b25zLnRleHR1cmVNYXBwZXIsIGxheWVyUmVjdCgpLCB0cmFuc2Zvcm0sIG9wYWNpdHksIG1hc2su
Z2V0KCkpOworICAgICAgICBpZiAobV9zdGF0ZS5zaG93RGVidWdCb3JkZXJzIHx8IG1fc3RhdGUu
c2hvd1JlcGFpbnRDb3VudGVyKQorICAgICAgICAgICAgbV9iYWNraW5nU3RvcmUtPmRyYXdEZWJ1
Z1Zpc3VhbHMob3B0aW9ucy50ZXh0dXJlTWFwcGVyLCBsYXllclJlY3QoKSwgdHJhbnNmb3JtLCBt
X3N0YXRlLnNob3dEZWJ1Z0JvcmRlcnMsIG1fc3RhdGUuZGVidWdCb3JkZXJDb2xvciwgbV9zdGF0
ZS5kZWJ1Z0JvcmRlcldpZHRoLCBtX3N0YXRlLnNob3dSZXBhaW50Q291bnRlciwgbV9zdGF0ZS5y
ZXBhaW50Q291bnQpOwogICAgIH0KIAogICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIpIHsKICAgICAg
ICAgQVNTRVJUKCFsYXllclJlY3QoKS5pc0VtcHR5KCkpOwogICAgICAgICBtX2NvbnRlbnRzTGF5
ZXItPnBhaW50VG9UZXh0dXJlTWFwcGVyKG9wdGlvbnMudGV4dHVyZU1hcHBlciwgbV9zdGF0ZS5j
b250ZW50c1JlY3QsIHRyYW5zZm9ybSwgb3BhY2l0eSwgbWFzay5nZXQoKSk7CisgICAgICAgIGlm
IChtX3N0YXRlLnNob3dEZWJ1Z0JvcmRlcnMgfHwgbV9zdGF0ZS5zaG93UmVwYWludENvdW50ZXIp
CisgICAgICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPmRyYXdEZWJ1Z1Zpc3VhbHMob3B0aW9ucy50
ZXh0dXJlTWFwcGVyLCBtX3N0YXRlLmNvbnRlbnRzUmVjdCwgdHJhbnNmb3JtLCBtX3N0YXRlLnNo
b3dEZWJ1Z0JvcmRlcnMsIG1fc3RhdGUuZGVidWdCb3JkZXJDb2xvciwgbV9zdGF0ZS5kZWJ1Z0Jv
cmRlcldpZHRoLCBtX3N0YXRlLnNob3dSZXBhaW50Q291bnRlciwgbV9zdGF0ZS5yZXBhaW50Q291
bnQpOwogICAgIH0KIH0KIApAQCAtMzgzLDggKzM4OSw2IEBAIHZvaWQgVGV4dHVyZU1hcHBlckxh
eWVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KEdyYXBoaWNzTGF5ZXJU
ZXh0CiAgICAgaWYgKGNoYW5nZU1hc2sgPT0gTm9DaGFuZ2VzICYmIGdyYXBoaWNzTGF5ZXItPm1f
YW5pbWF0aW9ucy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdyYXBoaWNzTGF5
ZXItPnVwZGF0ZURlYnVnSW5kaWNhdG9ycygpOwotCiAgICAgaWYgKGNoYW5nZU1hc2sgJiBDaGls
ZHJlbkNoYW5nZSkKICAgICAgICAgc2V0Q2hpbGRyZW4oZ3JhcGhpY3NMYXllci0+Y2hpbGRyZW4o
KSk7CiAKQEAgLTQwMSw2ICs0MDUsOSBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6Zmx1c2hD
b21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seShHcmFwaGljc0xheWVyVGV4dAogICAgIGlm
IChjaGFuZ2VNYXNrICYgQW5pbWF0aW9uQ2hhbmdlKQogICAgICAgICBtX2FuaW1hdGlvbnMgPSBn
cmFwaGljc0xheWVyLT5tX2FuaW1hdGlvbnM7CiAKKyAgICBpZiAoY2hhbmdlTWFzayAmIFJlcGFp
bnRDb3VudENoYW5nZSkKKyAgICAgICAgbV9zdGF0ZS5yZXBhaW50Q291bnQgPSBncmFwaGljc0xh
eWVyLT5yZXBhaW50Q291bnQoKTsKKwogICAgIG1fc3RhdGUubWFza0xheWVyID0gdG9UZXh0dXJl
TWFwcGVyTGF5ZXIoZ3JhcGhpY3NMYXllci0+bWFza0xheWVyKCkpOwogICAgIG1fc3RhdGUucmVw
bGljYUxheWVyID0gdG9UZXh0dXJlTWFwcGVyTGF5ZXIoZ3JhcGhpY3NMYXllci0+cmVwbGljYUxh
eWVyKCkpOwogICAgIG1fc3RhdGUucG9zID0gZ3JhcGhpY3NMYXllci0+cG9zaXRpb24oKTsKQEAg
LTQyMyw2ICs0MzAsMTEgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OmZsdXNoQ29tcG9zaXRp
bmdTdGF0ZUZvclRoaXNMYXllck9ubHkoR3JhcGhpY3NMYXllclRleHQKICNlbmRpZgogICAgIG1f
Zml4ZWRUb1ZpZXdwb3J0ID0gZ3JhcGhpY3NMYXllci0+Zml4ZWRUb1ZpZXdwb3J0KCk7CiAKKyAg
ICBtX3N0YXRlLnNob3dEZWJ1Z0JvcmRlcnMgPSBncmFwaGljc0xheWVyLT5pc1Nob3dpbmdEZWJ1
Z0JvcmRlcigpOworICAgIG1fc3RhdGUuZGVidWdCb3JkZXJDb2xvciA9IHRvR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXIoZ3JhcGhpY3NMYXllciktPmRlYnVnQm9yZGVyQ29sb3IoKTsKKyAgICBt
X3N0YXRlLmRlYnVnQm9yZGVyV2lkdGggPSB0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKGdy
YXBoaWNzTGF5ZXIpLT5kZWJ1Z0JvcmRlcldpZHRoKCk7CisgICAgbV9zdGF0ZS5zaG93UmVwYWlu
dENvdW50ZXIgPSBncmFwaGljc0xheWVyLT5pc1Nob3dpbmdSZXBhaW50Q291bnRlcigpOworCiAg
ICAgbV9jb250ZW50c0xheWVyID0gZ3JhcGhpY3NMYXllci0+cGxhdGZvcm1MYXllcigpOwogCiAg
ICAgbV9jdXJyZW50VHJhbnNmb3JtLnNldFBvc2l0aW9uKGFkanVzdGVkUG9zaXRpb24oKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckxheWVyLmgKaW5kZXggZjQxZTUyYTk3YzRiMzI4YzQ0Y2Y2NTBhZWUzNGNk
MzAwYTQ2NTM5YS4uNTc1YmIyN2ViN2E4NzRjMTg0YjU4MWVkMmJkNDM1ZDEwMTVhODNiMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyTGF5ZXIuaApAQCAtNzEsNyArNzEsMTAgQEAgcHVibGljOgogCiAgICAg
ICAgIFJlcGxpY2FMYXllckNoYW5nZSA9ICAgICAgICAoMUwgPDwgMjEpLAogICAgICAgICBBbmlt
YXRpb25DaGFuZ2UgPSAgICAgICAgICAgKDFMIDw8IDIyKSwKLSAgICAgICAgRmlsdGVyQ2hhbmdl
ID0gICAgICAgICAgICAgICgxTCA8PCAyMykKKyAgICAgICAgRmlsdGVyQ2hhbmdlID0gICAgICAg
ICAgICAgICgxTCA8PCAyMyksCisKKyAgICAgICAgRGVidWdWaXN1YWxzQ2hhbmdlID0gICAgICAg
ICgxTCA8PCAyNCksCisgICAgICAgIFJlcGFpbnRDb3VudENoYW5nZSA9ICAgICAgICAoMUwgPDwg
MjUpCiAgICAgfTsKIAogICAgIFRleHR1cmVNYXBwZXJMYXllcigpCkBAIC0xNzIsNiArMTc1LDkg
QEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAgICAgICAgIEZpbHRlck9wZXJh
dGlvbnMgZmlsdGVyczsKICNlbmRpZgorICAgICAgICBDb2xvciBkZWJ1Z0JvcmRlckNvbG9yOwor
ICAgICAgICBmbG9hdCBkZWJ1Z0JvcmRlcldpZHRoOworICAgICAgICBpbnQgcmVwYWludENvdW50
OwogCiAgICAgICAgIGJvb2wgcHJlc2VydmVzM0QgOiAxOwogICAgICAgICBib29sIG1hc2tzVG9C
b3VuZHMgOiAxOwpAQCAtMTgwLDExICsxODYsMTUgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBj
b250ZW50c09wYXF1ZSA6IDE7CiAgICAgICAgIGJvb2wgYmFja2ZhY2VWaXNpYmlsaXR5IDogMTsK
ICAgICAgICAgYm9vbCB2aXNpYmxlIDogMTsKKyAgICAgICAgYm9vbCBzaG93RGVidWdCb3JkZXJz
IDogMTsKKyAgICAgICAgYm9vbCBzaG93UmVwYWludENvdW50ZXIgOiAxOwogCiAgICAgICAgIFN0
YXRlKCkKICAgICAgICAgICAgIDogb3BhY2l0eSgxKQogICAgICAgICAgICAgLCBtYXNrTGF5ZXIo
MCkKICAgICAgICAgICAgICwgcmVwbGljYUxheWVyKDApCisgICAgICAgICAgICAsIGRlYnVnQm9y
ZGVyV2lkdGgoMCkKKyAgICAgICAgICAgICwgcmVwYWludENvdW50KDApCiAgICAgICAgICAgICAs
IHByZXNlcnZlczNEKGZhbHNlKQogICAgICAgICAgICAgLCBtYXNrc1RvQm91bmRzKGZhbHNlKQog
ICAgICAgICAgICAgLCBkcmF3c0NvbnRlbnQoZmFsc2UpCkBAIC0xOTIsNiArMjAyLDggQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICwgY29udGVudHNPcGFxdWUoZmFsc2UpCiAgICAgICAgICAgICAs
IGJhY2tmYWNlVmlzaWJpbGl0eShmYWxzZSkKICAgICAgICAgICAgICwgdmlzaWJsZSh0cnVlKQor
ICAgICAgICAgICAgLCBzaG93RGVidWdCb3JkZXJzKGZhbHNlKQorICAgICAgICAgICAgLCBzaG93
UmVwYWludENvdW50ZXIoZmFsc2UpCiAgICAgICAgIHsKICAgICAgICAgfQogICAgIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41Y2UyZWEw
YjI4OWFkNGQxNTJjZmI5OWUzNjJiMTIwYjk2MzZkYTRkCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyLmNwcApAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIENv
bXBhbnkgMTAwLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyNpbmNsdWRl
ICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oIgorCisjaW5jbHVkZSAiVGV4dHVyZU1hcHBl
ci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXI6OmRyYXdEZWJ1Z1Zpc3VhbHMoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29u
c3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJh
bnNmb3JtLCBib29sIHNob3dEZWJ1Z0JvcmRlcnMsIGNvbnN0IENvbG9yJiBib3JkZXJDb2xvciwg
ZmxvYXQgYm9yZGVyV2lkdGgsIGJvb2wgc2hvd1JlcGFpbnRDb3VudGVyLCBpbnQgcmVwYWludENv
dW50KQoreworICAgIHRleHR1cmVNYXBwZXItPmRyYXdEZWJ1Z1Zpc3VhbHModGFyZ2V0UmVjdCwg
dHJhbnNmb3JtLCBzaG93RGVidWdCb3JkZXJzLCBib3JkZXJDb2xvciwgYm9yZGVyV2lkdGgsIHNo
b3dSZXBhaW50Q291bnRlciwgcmVwYWludENvdW50KTsKK30KKworfQorI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oCmluZGV4IDM4YWYwM2U4OWI2MjQ4MWFiYWYz
MjA5OGMzYTgxN2FiNGQwMDBjMWUuLmUyNWM4ODJkZTNmNmI3Y2UxZGRiZTM2ZTgwZTFiMmVlNWNi
ZDU5NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oCkBAIC0yOCwx
NCArMjgsMTUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBUZXh0dXJlTWFwcGVy
OwogY2xhc3MgQml0bWFwVGV4dHVyZTsKK2NsYXNzIFRleHR1cmVNYXBwZXI7CiAKIGNsYXNzIFRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5UZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllcigpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVy
ZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGZs
b2F0IG9wYWNpdHkgPSAxLjAsIEJpdG1hcFRleHR1cmUqIG1hc2sgPSAwKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHN3YXBCdWZmZXJzKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRyYXdEZWJ1Z1Zp
c3VhbHMoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiwgYm9vbCBzaG93RGVidWdCb3JkZXJzLCBjb25zdCBDb2xvciYsIGZsb2F0IGJv
cmRlcldpZHRoLCBib29sIHNob3dSZXBhaW50Q291bnRlciwgaW50IHJlcGFpbnRDb3VudCk7CiAj
aWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCiAgICAgdmlydHVhbCBJbnRTaXplIHBsYXRmb3JtTGF5
ZXJTaXplKCkgY29uc3QgeyByZXR1cm4gSW50U2l6ZSgpOyB9CiAgICAgdmlydHVhbCB1aW50MzJf
dCBjb3B5VG9HcmFwaGljc1N1cmZhY2UoKSB7IHJldHVybiAwOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a192aWV3LmNwcAppbmRleCA1OTQ1MWE5NWU0ZmFmY2E2NTUzMTcyMjRkOTUzOWY2MWU1NDIwMzEx
Li5hMzdmZjNhZDFlMTA3NTY1ZDJmMWQxODJkMGI2NjQ0ZDg4NDliOGQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfdmlldy5jcHAKQEAgLTgzOSw2ICs4MzksOSBAQCBzdGF0aWMgRXdrX1ZpZXdfUHJp
dmF0ZV9EYXRhKiBfZXdrX3ZpZXdfcHJpdl9uZXcoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnRE
YXRhKQogICAgIHByaXYtPnBhZ2VTZXR0aW5ncy0+c2V0SW50ZXJhY3RpdmVGb3JtVmFsaWRhdGlv
bkVuYWJsZWQodHJ1ZSk7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIHBy
aXYtPnBhZ2VTZXR0aW5ncy0+c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoZmFsc2Up
OworICAgIGJvb2wgc2hvd0RlYnVnVmlzdWFscyA9IFN0cmluZyhnZXRlbnYoIldFQktJVF9TSE9X
X0NPTVBPU0lUSU5HX0RFQlVHX1ZJU1VBTFMiKSkgPT0gIjEiOworICAgIHByaXYtPnBhZ2VTZXR0
aW5ncy0+c2V0U2hvd0RlYnVnQm9yZGVycyhzaG93RGVidWdWaXN1YWxzKTsKKyAgICBwcml2LT5w
YWdlU2V0dGluZ3MtPnNldFNob3dSZXBhaW50Q291bnRlcihzaG93RGVidWdWaXN1YWxzKTsKICNl
bmRpZgogCiAgICAgdXJsID0gcHJpdi0+cGFnZVNldHRpbmdzLT51c2VyU3R5bGVTaGVldExvY2F0
aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmll
dy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKaW5kZXgg
MjkzMTBkNGU5ZmU0ODE0NTcwM2Q5OTRmNGQxZTlkMDc2YTQyMDhlZS4uMjhkZGYzMWQ0MDE2MTM0
MDYyYzFhMzhjNzQ4Mjg1NzVhZmIzODY5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJ2aWV3LmNwcApAQCAtMzQzNSw2ICszNDM1LDkgQEAgc3RhdGljIHZvaWQgd2Via2l0
X3dlYl92aWV3X3VwZGF0ZV9zZXR0aW5ncyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogCiAjaWYg
VVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIGNvcmVTZXR0aW5ncy0+c2V0QWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoc2V0dGluZ3NQcml2YXRlLT5lbmFibGVBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nKTsKKyAgICBib29sIHNob3dEZWJ1Z1Zpc3VhbHMgPSBTdHJpbmcoZ2V0ZW52
KCJXRUJLSVRfU0hPV19DT01QT1NJVElOR19ERUJVR19WSVNVQUxTIikpID09ICIxIjsKKyAgICBj
b3JlU2V0dGluZ3MtPnNldFNob3dEZWJ1Z0JvcmRlcnMoc2hvd0RlYnVnVmlzdWFscyk7CisgICAg
Y29yZVNldHRpbmdzLT5zZXRTaG93UmVwYWludENvdW50ZXIoc2hvd0RlYnVnVmlzdWFscyk7CiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNldHRp
bmdzLmNwcAppbmRleCBmOGU0OTk4MzU4YWZiZWNiNzhhNWIwMzA2MGFkY2I2NTRkZDBlMTRlLi5m
MDc1MjVjNDEwNjI4ZTJjYjA5YWFjODRhODQwMjVkMWQ3ZmRhODk5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQv
QXBpL3F3ZWJzZXR0aW5ncy5jcHAKQEAgLTE1MCw2ICsxNTAsMTAgQEAgdm9pZCBRV2ViU2V0dGlu
Z3NQcml2YXRlOjphcHBseSgpCiAgICAgICAgIHNldHRpbmdzLT5zZXRBY2NlbGVyYXRlZENvbXBv
c2l0aW5nRm9yQW5pbWF0aW9uRW5hYmxlZCh2YWx1ZSk7CiAgICAgICAgIHNldHRpbmdzLT5zZXRB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yVmlkZW9FbmFibGVkKGZhbHNlKTsKICAgICAgICAgc2V0
dGluZ3MtPnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JQbHVnaW5zRW5hYmxlZChmYWxzZSk7
CisKKyAgICAgICAgYm9vbCBzaG93RGVidWdWaXN1YWxzID0gcWdldGVudigiUVRfV0VCS0lUX1NI
T1dfQ09NUE9TSVRJTkdfREVCVUdfVklTVUFMUyIpID09ICIxIjsKKyAgICAgICAgc2V0dGluZ3Mt
PnNldFNob3dEZWJ1Z0JvcmRlcnMoc2hvd0RlYnVnVmlzdWFscyk7CisgICAgICAgIHNldHRpbmdz
LT5zZXRTaG93UmVwYWludENvdW50ZXIoc2hvd0RlYnVnVmlzdWFscyk7CiAjZW5kaWYKICNpZiBF
TkFCTEUoV0VCR0wpCiAgICAgICAgIHZhbHVlID0gYXR0cmlidXRlcy52YWx1ZShRV2ViU2V0dGlu
Z3M6OldlYkdMRW5hYmxlZCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJJbmZvLmggYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVySW5mby5oCmluZGV4IDY1
MjA1NmRkODEwNDIzNjQwZmNmNjk2OTA1YTdkZTczN2Q2ZDRiOWUuLmNmMWYwM2VkYmJiYjJlNTEy
ZjY5ZWJhYjljM2YyMzBlYzRhMWYzMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJJbmZvLmgKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllckluZm8u
aApAQCAtNDMsNiArNDMsNyBAQCBzdHJ1Y3QgQ29vcmRpbmF0ZWRMYXllckluZm8gewogICAgICAg
ICAsIG1hc2soSW52YWxpZENvb3JkaW5hdGVkTGF5ZXJJRCkKICAgICAgICAgLCBpbWFnZUlEKElu
dmFsaWRDb29yZGluYXRlZEltYWdlQmFja2luZ0lEKQogICAgICAgICAsIG9wYWNpdHkoMCkKKyAg
ICAgICAgLCBkZWJ1Z0JvcmRlcldpZHRoKDApCiAgICAgICAgICwgZmxhZ3MoMCkgeyB9CiAKICAg
ICBDb29yZGluYXRlZExheWVySUQgcmVwbGljYTsKQEAgLTU3LDYgKzU4LDggQEAgc3RydWN0IENv
b3JkaW5hdGVkTGF5ZXJJbmZvIHsKICAgICBXZWJDb3JlOjpJbnRSZWN0IGNvbnRlbnRzUmVjdDsK
ICAgICBmbG9hdCBvcGFjaXR5OwogICAgIFdlYkNvcmU6OkNvbG9yIHNvbGlkQ29sb3I7CisgICAg
V2ViQ29yZTo6Q29sb3IgZGVidWdCb3JkZXJDb2xvcjsKKyAgICBmbG9hdCBkZWJ1Z0JvcmRlcldp
ZHRoOwogCiAgICAgdW5pb24gewogICAgICAgICBzdHJ1Y3QgewpAQCAtNjgsNiArNzEsOCBAQCBz
dHJ1Y3QgQ29vcmRpbmF0ZWRMYXllckluZm8gewogICAgICAgICAgICAgYm9vbCBwcmVzZXJ2ZXMz
RCA6IDE7CiAgICAgICAgICAgICBib29sIGlzUm9vdExheWVyOiAxOwogICAgICAgICAgICAgYm9v
bCBmaXhlZFRvVmlld3BvcnQgOiAxOworICAgICAgICAgICAgYm9vbCBzaG93RGVidWdCb3JkZXJz
IDogMTsKKyAgICAgICAgICAgIGJvb2wgc2hvd1JlcGFpbnRDb3VudGVyIDogMTsKICAgICAgICAg
fTsKICAgICAgICAgdW5zaWduZWQgZmxhZ3M7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0
b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcAppbmRleCA0YTdiYjEwODZlZTdhODY3YjJkM2ZkNjgw
YzVhMzdkYjA1YjhiN2Q4Li5jMzA0ZGE3NWIzYzNjOTVhYTMzNzEyOTA3MDY5MjAzNzQ3NmQyZjNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwCkBAIC04
OCw3ICs4OCw2IEBAIHZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnVwZGF0ZVRpbGUodWlu
dDMyX3QgaWQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsCiB7CiAgICAgSGFzaE1hcDx1aW50
MzJfdCwgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlPjo6aXRlcmF0b3IgaXQgPSBtX3RpbGVz
LmZpbmQoaWQpOwogICAgIEFTU0VSVChpdCAhPSBtX3RpbGVzLmVuZCgpKTsKLSAgICBpdC0+dmFs
dWUuaW5jcmVtZW50UmVwYWludENvdW50KCk7CiAgICAgaXQtPnZhbHVlLnNldEJhY2tCdWZmZXIo
dGlsZVJlY3QsIHNvdXJjZVJlY3QsIGJhY2tCdWZmZXIsIG9mZnNldCk7CiB9CiAKQEAgLTEwOSwy
OCArMTA4LDEwIEBAIHZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnNldFNpemUoY29uc3Qg
V2ViQ29yZTo6RmxvYXRTaXplJiBzaXplKQogICAgIG1fc2l6ZSA9IHNpemU7CiB9CiAKLXN0YXRp
YyBib29sIHNob3VsZFNob3dUaWxlRGVidWdWaXN1YWxzKCkKLXsKLSNpZiBQTEFURk9STShRVCkK
LSAgICByZXR1cm4gKHFnZXRlbnYoIlFUX1dFQktJVF9TSE9XX0NPTVBPU0lUSU5HX0RFQlVHX1ZJ
U1VBTFMiKSA9PSAiMSIpOwotI2VsaWYgVVNFKENBSVJPKQotICAgIHJldHVybiAoU3RyaW5nKGdl
dGVudigiV0VCS0lUX1NIT1dfQ09NUE9TSVRJTkdfREVCVUdfVklTVUFMUyIpKSA9PSAiMSIpOwot
I2VuZGlmCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCiB2b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0
b3JlOjpwYWludFRpbGVzVG9UZXh0dXJlTWFwcGVyKFZlY3RvcjxUZXh0dXJlTWFwcGVyVGlsZSo+
JiB0aWxlcywgVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgQml0bWFwVGV4dHVyZSogbWFzaywg
Y29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdGls
ZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgVGV4dHVyZU1hcHBlclRpbGUqIHRpbGUgPSB0aWxl
c1tpXTsKLSAgICAgICAgdGlsZS0+cGFpbnQodGV4dHVyZU1hcHBlciwgdHJhbnNmb3JtLCBvcGFj
aXR5LCBtYXNrLCBjYWxjdWxhdGVFeHBvc2VkVGlsZUVkZ2VzKHJlY3QsIHRpbGUtPnJlY3QoKSkp
OwotICAgICAgICBzdGF0aWMgYm9vbCBzaG91bGREZWJ1ZyA9IHNob3VsZFNob3dUaWxlRGVidWdW
aXN1YWxzKCk7Ci0gICAgICAgIGlmICghc2hvdWxkRGVidWcpCi0gICAgICAgICAgICBjb250aW51
ZTsKLQotICAgICAgICB0ZXh0dXJlTWFwcGVyLT5kcmF3Qm9yZGVyKENvbG9yKDB4RkYsIDAsIDAp
LCAyLCB0aWxlLT5yZWN0KCksIHRyYW5zZm9ybSk7Ci0gICAgICAgIHRleHR1cmVNYXBwZXItPmRy
YXdSZXBhaW50Q291bnRlcihzdGF0aWNfY2FzdDxDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGUq
Pih0aWxlKS0+cmVwYWludENvdW50KCksIDgsIHRpbGUtPnJlY3QoKS5sb2NhdGlvbigpLCB0cmFu
c2Zvcm0pOwotICAgIH0KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRpbGVzLnNpemUoKTsg
KytpKQorICAgICAgICB0aWxlc1tpXS0+cGFpbnQodGV4dHVyZU1hcHBlciwgdHJhbnNmb3JtLCBv
cGFjaXR5LCBtYXNrLCBjYWxjdWxhdGVFeHBvc2VkVGlsZUVkZ2VzKHJlY3QsIHRpbGVzW2ldLT5y
ZWN0KCkpKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1
cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0
YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBv
cGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKQpAQCAtMTc0LDYgKzE1NSwxNyBAQCB2b2lkIENv
b3JkaW5hdGVkQmFja2luZ1N0b3JlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVy
KiB0ZXh0dXJlTWFwcGVyLAogICAgIHBhaW50VGlsZXNUb1RleHR1cmVNYXBwZXIodGlsZXNUb1Bh
aW50LCB0ZXh0dXJlTWFwcGVyLCBhZGp1c3RlZFRyYW5zZm9ybSwgb3BhY2l0eSwgbWFzaywgcmVj
dE9uQ29udGVudHMpOwogfQogCit2b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpkcmF3RGVi
dWdWaXN1YWxzKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYg
dGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgYm9vbCBz
aG93RGVidWdCb3JkZXJzLCBjb25zdCBDb2xvciYgYm9yZGVyQ29sb3IsIGZsb2F0IGJvcmRlcldp
ZHRoLCBib29sIHNob3dSZXBhaW50Q291bnRlciwgaW50IHJlcGFpbnRDb3VudCkKK3sKKyAgICBG
bG9hdFJlY3QgcmVjdE9uQ29udGVudHMoRmxvYXRQb2ludDo6emVybygpLCBtX3NpemUpOworICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3JtID0gdHJhbnNmb3JtOworICAg
IGFkanVzdGVkVHJhbnNmb3JtLm11bHRpcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4OjpyZWN0VG9S
ZWN0KHJlY3RPbkNvbnRlbnRzLCB0YXJnZXRSZWN0KSk7CisKKyAgICBIYXNoTWFwPHVpbnQzMl90
LCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGU+OjppdGVyYXRvciBlbmQgPSBtX3RpbGVzLmVu
ZCgpOworICAgIGZvciAoSGFzaE1hcDx1aW50MzJfdCwgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVU
aWxlPjo6aXRlcmF0b3IgaXQgPSBtX3RpbGVzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAg
ICAgICAgdGV4dHVyZU1hcHBlci0+ZHJhd0RlYnVnVmlzdWFscyhpdC0+dmFsdWUucmVjdCgpLCBh
ZGp1c3RlZFRyYW5zZm9ybSwgc2hvd0RlYnVnQm9yZGVycywgYm9yZGVyQ29sb3IsIGJvcmRlcldp
ZHRoLCBzaG93UmVwYWludENvdW50ZXIsIHJlcGFpbnRDb3VudCk7Cit9CisKIHZvaWQgQ29vcmRp
bmF0ZWRCYWNraW5nU3RvcmU6OmNvbW1pdFRpbGVPcGVyYXRpb25zKFRleHR1cmVNYXBwZXIqIHRl
eHR1cmVNYXBwZXIpCiB7CiAgICAgSGFzaFNldDx1aW50MzJfdD46Oml0ZXJhdG9yIHRpbGVzVG9S
ZW1vdmVFbmQgPSBtX3RpbGVzVG9SZW1vdmUuZW5kKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9y
ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRCYWNraW5nU3RvcmUuaAppbmRleCBhZTVhZjhkNGZhMmZjOWViZDIxMTk3MjdmY2FkZDg1
OTYyMzMwZjk5Li42ODA5YjhmOWI3ZTkxMTdiYmJjZWNkNjE0ZTBjYTczMDhlNzIxZmJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZEJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmgKQEAgLTM2LDEzICszNiwx
MCBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlKGZs
b2F0IHNjYWxlID0gMSkKICAgICAgICAgOiBUZXh0dXJlTWFwcGVyVGlsZShXZWJDb3JlOjpGbG9h
dFJlY3QoKSkKICAgICAgICAgLCBtX3NjYWxlKHNjYWxlKQotICAgICAgICAsIG1fcmVwYWludENv
dW50KDApCiAgICAgewogICAgIH0KIAogICAgIGlubGluZSBmbG9hdCBzY2FsZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc2NhbGU7IH0KLSAgICBpbmxpbmUgdm9pZCBpbmNyZW1lbnRSZXBhaW50Q291bnQo
KSB7ICsrbV9yZXBhaW50Q291bnQ7IH0KLSAgICBpbmxpbmUgaW50IHJlcGFpbnRDb3VudCgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVwYWludENvdW50OyB9CiAgICAgdm9pZCBzd2FwQnVmZmVycyhXZWJD
b3JlOjpUZXh0dXJlTWFwcGVyKik7CiAgICAgdm9pZCBzZXRCYWNrQnVmZmVyKGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgUGFzc1JlZlB0cjxDb29yZGlu
YXRlZFN1cmZhY2U+IGJ1ZmZlciwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKIApAQCAtNTIs
NyArNDksNiBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OkludFJlY3QgbV90aWxlUmVjdDsKICAg
ICBXZWJDb3JlOjpJbnRQb2ludCBtX3N1cmZhY2VPZmZzZXQ7CiAgICAgZmxvYXQgbV9zY2FsZTsK
LSAgICBpbnQgbV9yZXBhaW50Q291bnQ7CiB9OwogCiBjbGFzcyBDb29yZGluYXRlZEJhY2tpbmdT
dG9yZSA6IHB1YmxpYyBXZWJDb3JlOjpUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlIHsKQEAgLTY2
LDYgKzYyLDcgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6Qml0bWFwVGV4dHVy
ZT4gdGV4dHVyZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0U2l6ZShjb25zdCBXZWJDb3JlOjpGbG9h
dFNpemUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoV2ViQ29yZTo6
VGV4dHVyZU1hcHBlciosIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6
OlRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQsIFdlYkNvcmU6OkJpdG1hcFRleHR1cmUqKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZHJhd0RlYnVnVmlzdWFscyhXZWJDb3JlOjpUZXh0dXJlTWFwcGVy
KiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRp
b25NYXRyaXgmLCBib29sIHNob3dEZWJ1Z0JvcmRlcnMsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwg
ZmxvYXQgYm9yZGVyV2lkdGgsIGJvb2wgc2hvd1JlcGFpbnRDb3VudGVyLCBpbnQgcmVwYWludENv
dW50KSBPVkVSUklERTsKIAogcHJpdmF0ZToKICAgICBDb29yZGluYXRlZEJhY2tpbmdTdG9yZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5j
cHAKaW5kZXggYmFhOGY2NTIzZGViZmRlYmJjNGU1MjJiNDc1ZTE0Y2MxOGZkMmViNS4uZWY1ZTQ1
ZmE5YmMyMzcwMTQ1Y2NjZDFkY2Y4OGM2YjQwNThhYTlhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcApAQCAtMjQyLDYgKzI0Miwx
MSBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpkZXN0cm95Q2FudmFzKENv
b3JkaW5hdGVkTGF5ZXJJRCBpZCkKIH0KICNlbmRpZgogCit2b2lkIENvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdFByb3h5OjpzZXRSZXBhaW50Q291bnQoQ29vcmRpbmF0ZWRMYXllcklEIGlkLCBpbnQg
dmFsdWUpCit7CisgICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmTGF5ZXJUcmVlUmVuZGVyZXI6OnNl
dFJlcGFpbnRDb3VudCwgbV9yZW5kZXJlci5nZXQoKSwgaWQsIHZhbHVlKSk7Cit9CisKIHZvaWQg
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OnB1cmdlQmFja2luZ1N0b3JlcygpCiB7CiAg
ICAgbV9zdXJmYWNlcy5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdFByb3h5LmgKaW5kZXggNzU5MWI4NDg1ZDM5ODg2ZWQ3ZWQyY2QwNWQxMTYx
M2ZlNjdmYWNkMy4uZjljYTE5MmMyYjA0MzIyNTlmODhjOWJiNWVjZTNlNDVhM2M4YTY3OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oCkBA
IC04NCw2ICs4NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN5bmNDYW52YXMoQ29vcmRpbmF0ZWRM
YXllcklELCB1aW50MzJfdCBmcm9udEJ1ZmZlcik7CiAgICAgdm9pZCBkZXN0cm95Q2FudmFzKENv
b3JkaW5hdGVkTGF5ZXJJRCk7CiAjZW5kaWYKKyAgICB2b2lkIHNldFJlcGFpbnRDb3VudChDb29y
ZGluYXRlZExheWVySUQsIGludCB2YWx1ZSk7CiAgICAgdm9pZCBwdXJnZUJhY2tpbmdTdG9yZXMo
KTsKICAgICBMYXllclRyZWVSZW5kZXJlciogbGF5ZXJUcmVlUmVuZGVyZXIoKSBjb25zdCB7IHJl
dHVybiBtX3JlbmRlcmVyLmdldCgpOyB9CiAgICAgdm9pZCBzZXRMYXllckFuaW1hdGlvbnMoQ29v
cmRpbmF0ZWRMYXllcklELCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyQW5pbWF0aW9ucyYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhv
c3RQcm94eS5tZXNzYWdlcy5pbgppbmRleCAxMzdkYWQ4MDc1MDBmNTVlNTlkMjZjMjdjMWRlZGJh
NDljNTUwOGEwLi4yNjhlZjFjZjk3MWY3ODhmM2RhN2MxOWNjNGMxNzJiZjRmNjgzNmU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQ
cm94eS5tZXNzYWdlcy5pbgpAQCAtNTUsNiArNTUsOCBAQCBtZXNzYWdlcyAtPiBDb29yZGluYXRl
ZExheWVyVHJlZUhvc3RQcm94eSB7CiAgICAgRGVzdHJveUNhbnZhcyh1aW50MzJfdCBpZCkKICNl
bmRpZgogCisgICAgU2V0UmVwYWludENvdW50KHVpbnQzMl90IGxheWVySUQsIGludCB2YWx1ZSkK
KwogICAgIFNldEJhY2tncm91bmRDb2xvcihXZWJDb3JlOjpDb2xvciBjb2xvcikKIH0KICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwCmluZGV4IDZlOTczMDIxNjYyYjQw
ZDM2YTI4NGMzZmQxZDA0OWFiNjZhMjU5OTYuLmMxZTcyOGU0ZTAzYjkxNDhmNWQ4NzQ2M2YxZDVm
NzMyZWQ0MDFkYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGlu
YXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5jcHAKQEAgLTI1
NSw2ICsyNTUsMTIgQEAgdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6ZGVzdHJveUNhbnZhcyhDb29y
ZGluYXRlZExheWVySUQgaWQpCiB9CiAjZW5kaWYKIAordm9pZCBMYXllclRyZWVSZW5kZXJlcjo6
c2V0UmVwYWludENvdW50KENvb3JkaW5hdGVkTGF5ZXJJRCBpZCwgaW50IHZhbHVlKQoreworICAg
IEdyYXBoaWNzTGF5ZXIqIGxheWVyID0gbGF5ZXJCeUlEKGlkKTsKKyAgICB0b0dyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyKGxheWVyKS0+c2V0UmVwYWludENvdW50KHZhbHVlKTsKK30KKwogdm9p
ZCBMYXllclRyZWVSZW5kZXJlcjo6c2V0TGF5ZXJDaGlsZHJlbihDb29yZGluYXRlZExheWVySUQg
aWQsIGNvbnN0IFZlY3RvcjxDb29yZGluYXRlZExheWVySUQ+JiBjaGlsZElEcykKIHsKICAgICBH
cmFwaGljc0xheWVyKiBsYXllciA9IGxheWVyQnlJRChpZCk7CkBAIC0zMzMsNiArMzM5LDkgQEAg
dm9pZCBMYXllclRyZWVSZW5kZXJlcjo6c2V0TGF5ZXJTdGF0ZShDb29yZGluYXRlZExheWVySUQg
aWQsIGNvbnN0IENvb3JkaW5hdGVkTGEKICAgICBsYXllci0+c2V0RHJhd3NDb250ZW50KGxheWVy
SW5mby5kcmF3c0NvbnRlbnQpOwogICAgIGxheWVyLT5zZXRDb250ZW50c1Zpc2libGUobGF5ZXJJ
bmZvLmNvbnRlbnRzVmlzaWJsZSk7CiAgICAgdG9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcihs
YXllciktPnNldEZpeGVkVG9WaWV3cG9ydChsYXllckluZm8uZml4ZWRUb1ZpZXdwb3J0KTsKKyAg
ICBsYXllci0+c2V0U2hvd0RlYnVnQm9yZGVyKGxheWVySW5mby5zaG93RGVidWdCb3JkZXJzKTsK
KyAgICBsYXllci0+c2V0RGVidWdCb3JkZXIobGF5ZXJJbmZvLmRlYnVnQm9yZGVyQ29sb3IsIGxh
eWVySW5mby5kZWJ1Z0JvcmRlcldpZHRoKTsKKyAgICBsYXllci0+c2V0U2hvd1JlcGFpbnRDb3Vu
dGVyKGxheWVySW5mby5zaG93UmVwYWludENvdW50ZXIpOwogCiAgICAgaWYgKGxheWVySW5mby5m
aXhlZFRvVmlld3BvcnQpCiAgICAgICAgIG1fZml4ZWRMYXllcnMuYWRkKGlkLCBsYXllcik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9M
YXllclRyZWVSZW5kZXJlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaAppbmRleCA1M2VjYmUzOTQ5ODE4OTlkMmFiYmUw
ZjIxZDQ0NDM0NDIzOTM2NDg4Li4xYTk1OTdmZWIzMDRiNjgzYTY4NzM5NThmNWE0NDc1MDljZGM5
NTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFw
aGljcy9MYXllclRyZWVSZW5kZXJlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
b29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmgKQEAgLTc3LDYgKzc3LDcgQEAg
cHVibGljOgogICAgIHZvaWQgc3luY0NhbnZhcyhDb29yZGluYXRlZExheWVySUQsIHVpbnQzMl90
IGZyb250QnVmZmVyKTsKICAgICB2b2lkIGRlc3Ryb3lDYW52YXMoQ29vcmRpbmF0ZWRMYXllcklE
KTsKICNlbmRpZgorICAgIHZvaWQgc2V0UmVwYWludENvdW50KENvb3JkaW5hdGVkTGF5ZXJJRCwg
aW50IHZhbHVlKTsKIAogICAgIHZvaWQgZGV0YWNoKCk7CiAgICAgdm9pZCBhcHBlbmRVcGRhdGUo
Y29uc3QgRnVuY3Rpb248dm9pZCgpPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKaW5kZXggNWYyNjYyZWYwOTE4YjNh
YTkyMTQwYTQ4NDUyYTU1NTgyZjU3YmQzOS4uYWJiN2I0YWU5ZDIyOGFjN2U0ZjA5YjQyZTc5MDk1
NjllZWMxYmZmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCkBAIC0zNzEsNiArMzcxLDI2IEBAIHZvaWQgQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c1RvU29saWRDb2xvcihjb25zdCBDb2xvciYg
Y29sb3IpCiAgICAgZGlkQ2hhbmdlTGF5ZXJTdGF0ZSgpOwogfQogCit2b2lkIENvb3JkaW5hdGVk
R3JhcGhpY3NMYXllcjo6c2V0U2hvd0RlYnVnQm9yZGVyKGJvb2wgc2hvdykKK3sKKyAgICBpZiAo
aXNTaG93aW5nRGVidWdCb3JkZXIoKSA9PSBzaG93KQorICAgICAgICByZXR1cm47CisKKyAgICBH
cmFwaGljc0xheWVyOjpzZXRTaG93RGVidWdCb3JkZXIoc2hvdyk7CisKKyAgICBkaWRDaGFuZ2VM
YXllclN0YXRlKCk7Cit9CisKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRTaG93
UmVwYWludENvdW50ZXIoYm9vbCBzaG93KQoreworICAgIGlmIChpc1Nob3dpbmdSZXBhaW50Q291
bnRlcigpID09IHNob3cpCisgICAgICAgIHJldHVybjsKKworICAgIEdyYXBoaWNzTGF5ZXI6OnNl
dFNob3dSZXBhaW50Q291bnRlcihzaG93KTsKKworICAgIGRpZENoYW5nZUxheWVyU3RhdGUoKTsK
K30KKwogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzVG9JbWFnZShJ
bWFnZSogaW1hZ2UpCiB7CiAgICAgTmF0aXZlSW1hZ2VQdHIgbmV3TmF0aXZlSW1hZ2VQdHIgPSBp
bWFnZSA/IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIDogMDsKQEAgLTUxOSw2
ICs1MzksOCBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c3luY0ltYWdlQmFja2lu
ZygpCiAgICAgICAgIH0KIAogICAgICAgICBtX2Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLT5tYXJr
RGlydHkoKTsKKyAgICAgICAgaWYgKGlzU2hvd2luZ1JlcGFpbnRDb3VudGVyKCkpCisgICAgICAg
ICAgICBtX2Nvb3JkaW5hdG9yLT5zZXRSZXBhaW50Q291bnQoaWQoKSwgaW5jcmVtZW50UmVwYWlu
dENvdW50KCkpOwogICAgIH0gZWxzZQogICAgICAgICByZWxlYXNlSW1hZ2VCYWNraW5nSWZOZWVk
ZWQoKTsKIApAQCAtNTUwLDkgKzU3MiwyMyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXll
cjo6c3luY0xheWVyU3RhdGUoKQogICAgIG1fbGF5ZXJJbmZvLnBvcyA9IG1fYWRqdXN0ZWRQb3Np
dGlvbjsKICAgICBtX2xheWVySW5mby5zaXplID0gbV9hZGp1c3RlZFNpemU7CiAKKyAgICBtX2xh
eWVySW5mby5zaG93RGVidWdCb3JkZXJzID0gaXNTaG93aW5nRGVidWdCb3JkZXIoKTsKKyAgICBp
ZiAobV9sYXllckluZm8uc2hvd0RlYnVnQm9yZGVycykgeworICAgICAgICBtX3VzaW5nVGlsZWRM
YXllciA9IHNob3VsZEhhdmVCYWNraW5nU3RvcmUoKTsKKyAgICAgICAgdXBkYXRlRGVidWdJbmRp
Y2F0b3JzKCk7CisgICAgfQorICAgIG1fbGF5ZXJJbmZvLnNob3dSZXBhaW50Q291bnRlciA9IGlz
U2hvd2luZ1JlcGFpbnRDb3VudGVyKCk7CisKICAgICBtX2Nvb3JkaW5hdG9yLT5zeW5jTGF5ZXJT
dGF0ZShtX2lkLCBtX2xheWVySW5mbyk7CiB9CiAKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyOjpzZXREZWJ1Z0JvcmRlcihjb25zdCBDb2xvciYgY29sb3IsIGZsb2F0IHdpZHRoKQorewor
ICAgIEFTU0VSVChtX2xheWVySW5mby5zaG93RGVidWdCb3JkZXJzKTsKKyAgICBtX2xheWVySW5m
by5kZWJ1Z0JvcmRlckNvbG9yID0gY29sb3I7CisgICAgbV9sYXllckluZm8uZGVidWdCb3JkZXJX
aWR0aCA9IHdpZHRoOworfQorCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c3luY0Fu
aW1hdGlvbnMoKQogewogICAgIGlmICghbV9zaG91bGRTeW5jQW5pbWF0aW9ucykKQEAgLTU3NSw2
ICs2MTEsOCBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c3luY0NhbnZhcygpCiAj
aWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCiAgICAgbV9jb29yZGluYXRvci0+c3luY0NhbnZhcyht
X2lkLCBtX2NhbnZhc1BsYXRmb3JtTGF5ZXIpOwogI2VuZGlmCisgICAgaWYgKGlzU2hvd2luZ1Jl
cGFpbnRDb3VudGVyKCkpCisgICAgICAgIG1fY29vcmRpbmF0b3ItPnNldFJlcGFpbnRDb3VudChp
ZCgpLCBpbmNyZW1lbnRSZXBhaW50Q291bnQoKSk7CiAgICAgbV9jYW52YXNOZWVkc0Rpc3BsYXkg
PSBmYWxzZTsKIH0KIApAQCAtNjk4LDggKzczNiwxMCBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcjo6dGlsZWRCYWNraW5nU3RvcmVQYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
CiAgICAgcGFpbnRHcmFwaGljc0xheWVyQ29udGVudHMoKmNvbnRleHQsIHJlY3QpOwogfQogCi12
b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dGlsZWRCYWNraW5nU3RvcmVQYWludEVuZChj
b25zdCBWZWN0b3I8SW50UmVjdD4mIC8qIHVwZGF0ZWRSZWN0cyAqLykKK3ZvaWQgQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyOjp0aWxlZEJhY2tpbmdTdG9yZVBhaW50RW5kKGNvbnN0IFZlY3RvcjxJ
bnRSZWN0PiYgdXBkYXRlZFJlY3RzKQogeworICAgIGlmIChpc1Nob3dpbmdSZXBhaW50Q291bnRl
cigpICYmICF1cGRhdGVkUmVjdHMuaXNFbXB0eSgpKQorICAgICAgICBtX2Nvb3JkaW5hdG9yLT5z
ZXRSZXBhaW50Q291bnQoaWQoKSwgaW5jcmVtZW50UmVwYWludENvdW50KCkpOwogfQogCiB2b2lk
IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dGlsZWRCYWNraW5nU3RvcmVIYXNQZW5kaW5nVGls
ZUNyZWF0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyLmgKaW5kZXggNmM0MzU4NWM3MGM4ZTAzMDY1ZTRkY2FhMjdlNGYwZGEy
ZmEzNjk0Ni4uMmI3NzUwY2FkZTYwZWZlMGU2ZDQxMDY5NDU0NTM5MGExODY1MWY5YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
LmgKQEAgLTcxLDYgKzcxLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95Q2Fu
dmFzKENvb3JkaW5hdGVkTGF5ZXJJRCkgPSAwOwogI2VuZGlmCiAKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0UmVwYWludENvdW50KENvb3JkaW5hdGVkTGF5ZXJJRCwgaW50KSA9IDA7CisKICAgICB2aXJ0
dWFsIHZvaWQgc2V0TGF5ZXJBbmltYXRpb25zKENvb3JkaW5hdGVkTGF5ZXJJRCwgY29uc3QgV2Vi
Q29yZTo6R3JhcGhpY3NMYXllckFuaW1hdGlvbnMmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQg
ZGV0YWNoTGF5ZXIoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKikgPSAwOwpAQCAt
MTEyLDYgKzExNCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNSZWN0
KGNvbnN0IEludFJlY3QmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNU
b0ltYWdlKEltYWdlKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9T
b2xpZENvbG9yKGNvbnN0IENvbG9yJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFNo
b3dEZWJ1Z0JvcmRlcihib29sKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvd1Jl
cGFpbnRDb3VudGVyKGJvb2wpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGREaXJl
Y3RseUNvbXBvc2l0ZUltYWdlKEltYWdlKikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIHNldENvbnRlbnRzVG9DYW52YXMoUGxhdGZvcm1MYXllciopIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRNYXNrTGF5ZXIoR3JhcGhpY3NMYXllciopIE9WRVJSSURFOwpAQCAtMTY2
LDYgKzE3MCw4IEBAIHB1YmxpYzoKICAgICBib29sIGhhc1BlbmRpbmdWaXNpYmxlQ2hhbmdlcygp
OwogCiBwcml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCBzZXREZWJ1Z0JvcmRlcihjb25zdCBDb2xv
ciYsIGZsb2F0IHdpZHRoKSBPVkVSUklERTsKKwogICAgIGJvb2wgZml4ZWRUb1ZpZXdwb3J0KCkg
Y29uc3QgeyByZXR1cm4gbV9maXhlZFRvVmlld3BvcnQ7IH0KIAogICAgIHZvaWQgZGlkQ2hhbmdl
TGF5ZXJTdGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggNzk3YWVlMzUyYjBlYjA4MzI0ZjU4Y2E5YjNm
ZDIyZmJmNWNhZjk2YS4uMWY2NDU4MzQ0MTlkYzRhNmIyZGJiNmIyYmY0OTI2OTIwYjFhMmE1YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVy
VHJlZUhvc3QuY3BwCkBAIC0zOTMsNiArMzkzLDExIEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0OjpkZXN0cm95Q2FudmFzKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCkKIH0KICNlbmRpZgog
Cit2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0UmVwYWludENvdW50KENvb3JkaW5h
dGVkTGF5ZXJJRCBpZCwgaW50IHZhbHVlKQoreworICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdl
czo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OlNldFJlcGFpbnRDb3VudChpZCwgdmFs
dWUpKTsKK30KKwogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKIHZvaWQgQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0OjpzeW5jTGF5ZXJGaWx0ZXJzKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCwgY29uc3Qg
RmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKaW5kZXggMDEwMjJiMmNjNGU5ODQ4
OGE0ZGY3ODdlYTM2OTBiNzJhY2NmZjcyOS4uZWRiMjA1NWE2YjY2ZjhjZjliZTZjNDI0YTY1MGRk
YzRhMzhiMThmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0LmgKQEAgLTEwMSw2ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHN5bmNDYW52YXMoQ29vcmRpbmF0ZWRMYXllcklELCBXZWJDb3JlOjpQbGF0Zm9y
bUxheWVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3lDYW52YXMoQ29vcmRp
bmF0ZWRMYXllcklEKSBPVkVSUklERTsKICNlbmRpZgorICAgIHZpcnR1YWwgdm9pZCBzZXRSZXBh
aW50Q291bnQoQ29vcmRpbmF0ZWRMYXllcklELCBpbnQpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBkZXRhY2hMYXllcihXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc3luY0ZpeGVkTGF5ZXJzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
VGlsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZFRpbGUuY3BwCmluZGV4IDc5OGQyYjc1ZjI1MGRhNjcyOWZmOWJj
ZTUwZTg4YzI5MTI5NDBiOGUuLmFjMGI1NjYyNmU4MWYxMGIxODc2MmI5OGYzNjU4MDRmOGUzMjYx
NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkVGlsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRUaWxlLmNwcApA
QCAtOTcsOCArOTcsMTAgQEAgVmVjdG9yPEludFJlY3Q+IENvb3JkaW5hdGVkVGlsZTo6dXBkYXRl
QmFja0J1ZmZlcigpCiAgICAgfSBlbHNlCiAgICAgICAgIG1fY2xpZW50LT51cGRhdGVUaWxlKG1f
SUQsIHVwZGF0ZUluZm8sIG1fcmVjdCk7CiAKKyAgICBWZWN0b3I8SW50UmVjdD4gdXBkYXRlZFJl
Y3RzOworICAgIHVwZGF0ZWRSZWN0cy5hcHBlbmQobV9kaXJ0eVJlY3QpOwogICAgIG1fZGlydHlS
ZWN0ID0gSW50UmVjdCgpOwotICAgIHJldHVybiBWZWN0b3I8SW50UmVjdD4oKTsKKyAgICByZXR1
cm4gdXBkYXRlZFJlY3RzOwogfQogCiB2b2lkIENvb3JkaW5hdGVkVGlsZTo6c3dhcEJhY2tCdWZm
ZXJUb0Zyb250KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAppbmRleCAyNTkwM2E4NDYxYTE1OTA5NzllYTgxNWYxOGJiMGEwZjg2YjU0NDAxLi41Yzgx
NWE0MDYyY2I3YjUzNTkzYzJhNTllNTA1MWY4OWFkMDA2ODg4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yMzM1LDggKzIzMzUsMTggQEAg
dm9pZCBXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3Jl
JiBzdG9yZSkKICAgICBzZXR0aW5ncy0+c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQo
c3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjphY2NlbGVyYXRlZENv
bXBvc2l0aW5nRW5hYmxlZEtleSgpKSAmJiBMYXllclRyZWVIb3N0OjpzdXBwb3J0c0FjY2VsZXJh
dGVkQ29tcG9zaXRpbmcoKSk7CiAgICAgc2V0dGluZ3MtPnNldEFjY2VsZXJhdGVkRHJhd2luZ0Vu
YWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjphY2NlbGVy
YXRlZERyYXdpbmdFbmFibGVkS2V5KCkpICYmIExheWVyVHJlZUhvc3Q6OnN1cHBvcnRzQWNjZWxl
cmF0ZWRDb21wb3NpdGluZygpKTsKICAgICBzZXR0aW5ncy0+c2V0Q2FudmFzVXNlc0FjY2VsZXJh
dGVkRHJhd2luZyhzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmNh
bnZhc1VzZXNBY2NlbGVyYXRlZERyYXdpbmdLZXkoKSkgJiYgTGF5ZXJUcmVlSG9zdDo6c3VwcG9y
dHNBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCkpOworI2lmIFBMQVRGT1JNKFFUKQorICAgIGJvb2wg
c2hvd0RlYnVnVmlzdWFscyA9IHFnZXRlbnYoIlFUX1dFQktJVF9TSE9XX0NPTVBPU0lUSU5HX0RF
QlVHX1ZJU1VBTFMiKSA9PSAiMSI7CisgICAgc2V0dGluZ3MtPnNldFNob3dEZWJ1Z0JvcmRlcnMo
c2hvd0RlYnVnVmlzdWFscyk7CisgICAgc2V0dGluZ3MtPnNldFNob3dSZXBhaW50Q291bnRlcihz
aG93RGVidWdWaXN1YWxzKTsKKyNlbGlmIFVTRShDQUlSTykKKyAgICBib29sIHNob3dEZWJ1Z1Zp
c3VhbHMgPSBTdHJpbmcoZ2V0ZW52KCJXRUJLSVRfU0hPV19DT01QT1NJVElOR19ERUJVR19WSVNV
QUxTIikpID09ICIxIjsKKyAgICBzZXR0aW5ncy0+c2V0U2hvd0RlYnVnQm9yZGVycyhzaG93RGVi
dWdWaXN1YWxzKTsKKyAgICBzZXR0aW5ncy0+c2V0U2hvd1JlcGFpbnRDb3VudGVyKHNob3dEZWJ1
Z1Zpc3VhbHMpOworI2Vsc2UKICAgICBzZXR0aW5ncy0+c2V0U2hvd0RlYnVnQm9yZGVycyhzdG9y
ZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmNvbXBvc2l0aW5nQm9yZGVy
c1Zpc2libGVLZXkoKSkpOwogICAgIHNldHRpbmdzLT5zZXRTaG93UmVwYWludENvdW50ZXIoc3Rv
cmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojpjb21wb3NpdGluZ1JlcGFp
bnRDb3VudGVyc1Zpc2libGVLZXkoKSkpOworI2VuZGlmCiAgICAgc2V0dGluZ3MtPnNldFNob3dU
aWxlZFNjcm9sbGluZ0luZGljYXRvcihzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVy
ZW5jZXNLZXk6OnRpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yVmlzaWJsZUtleSgpKSk7CiAgICAgc2V0
dGluZ3MtPnNldEFnZ3Jlc3NpdmVUaWxlUmV0ZW50aW9uRW5hYmxlZChzdG9yZS5nZXRCb29sVmFs
dWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmFnZ3Jlc3NpdmVUaWxlUmV0ZW50aW9uRW5hYmxl
ZEtleSgpKSk7CiAgICAgc2V0dGluZ3MtPnNldENTU0N1c3RvbUZpbHRlckVuYWJsZWQoc3RvcmUu
Z2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojpjc3NDdXN0b21GaWx0ZXJFbmFi
bGVkS2V5KCkpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182890</attachid>
            <date>2013-01-15 18:19:16 -0800</date>
            <delta_ts>2013-01-15 19:05:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105787-20130116111617.patch</filename>
            <type>text/plain</type>
            <size>62862</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5NjkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjc3YzBmYjVkYWFiN2Jj
YzJmYzM2ZmU5ODBkZWZjYmVkNjljOWE3Ny4uY2RjZDJlNTg3NDM1MDU4MGQzNWMxMmU4YTE1OGJl
MjBkYmUxYmI3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDEzLTAxLTE1ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFtUZXhtYXBd
IFJlZmFjdG9yIGNvZGUgcmVsYXRlZCB0byBkZWJ1ZyBib3JkZXIgYW5kIHJlcGFpbnQgY291bnQu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU3ODcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50
bHksIFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUsIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlIGFu
ZAorICAgICAgICBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlciBoYXZlIGR1cGxpY2F0ZWQgY29k
ZSB0byBkcmF3IGRlYnVnIGJvcmRlciBvciByZXBhaW50CisgICAgICAgIGNvdW50LiBUaGlzIHBh
dGNoIHJlZmFjdG9ycyB0aGF0IGFsbCBwbGF0Zm9ybSBsYXllcnMgZHJhdyBkZWJ1ZyBib3JkZXIg
YW5kIHJlcGFpbnQKKyAgICAgICAgY291bnQgaW4gdGhlIGNvbnNpc3RlbnQgd2F5LgorCisgICAg
ICAgIFRoZXJlIGFyZSB0aHJlZSBiaWcgY2hhbmdlczoKKyAgICAgICAgMS4gVG8gZW5hYmxlIG9y
IGRpc2FibGUgdGhpcyBmZWF0dXJlLCB3ZSB1c2Ugc2V0U2hvd0RlYnVnQm9yZGVycyhib29sKSBh
bmQKKyAgICAgICAgc2V0U2hvd1JlcGFpbnRDb3VudGVyKGJvb2wpIGluIFNldHRpbmdzLgorICAg
ICAgICBBcyB3ZSBkaWQsIGlmIFtRVF9dV0VCS0lUX1NIT1dfQ09NUE9TSVRJTkdfREVCVUdfVklT
VUFMUyBpcyBzZXQgdG8gMSwgYm90aAorICAgICAgICBzZXR0aW5ncyBhcmUgc2V0IHRvIHRydWUu
IEl0IG1lYW5zIHRoYXQgbm93IHdlIGNhbiBzZWUgZGVidWcgdmlzdWFscyBpbiBXSzEKKyAgICAg
ICAgYXMgd2VsbCBhcyBXSzIuCisgICAgICAgIDIuIFRleHR1cmVNYXBwZXJMYXllciBoYXMgdGhl
IGRlYnVnIHZpc3VhbHMgbGlrZSBHcmFwaGljc0xheWVyLgorICAgICAgICBCb3RoIGRlYnVnIGJv
cmRlciBhbmQgcmVwYWludCBjb3VudCBhcmUgY2FsbGVkIGFzIHRoZSBkZWJ1ZyB2aXN1YWxzLgor
ICAgICAgICAzLiBXZSB1c2UgdGhlIHNhbWUgY29sb3IgYW5kIHdpZHRoIHRvIE1hYyBwb3J0IGJl
Y2F1c2Ugd2UgZ2V0IGJvdGggaW5mbyB1c2luZworICAgICAgICBHcmFwaGljc0xheWVyOjp1cGRh
dGVEZWJ1Z0luZGljYXRvcnMoKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIFRoaXMgZnVuY3Rp
b25hbGl0eSBpcyBmb3IgZGVidWdnaW5nLCBzbyB3ZSBjYW5ub3QgdGVzdCB1c2luZyBEUlQuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6
OnNldFNob3dEZWJ1Z0JvcmRlcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRTaG93UmVwYWludENvdW50ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmZsdXNoQ29tcG9z
aXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXI6OnVwZGF0ZURlYnVnQm9yZGVyQW5kUmVwYWludENvdW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXREZWJ1Z0JvcmRl
cik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6dXBkYXRl
QmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyOjpwcmVwYXJlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyOjpzZXRSZXBhaW50Q291bnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oOgorICAgICAgICAoR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OmRlYnVnQm9yZGVyQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmRlYnVnQm9yZGVyV2lkdGgpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpwYWludFRvVGV4dHVy
ZU1hcHBlcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVN
YXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6ZHJhd0JvcmRlcik6CisgICAgICAgICAgICBPdmVycmlk
ZSBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllcjo6ZHJhd0JvcmRlcigpIHRvIGRyYXcgdGhlIGJv
cmRlcgorICAgICAgICAgICAgZm9yIGVhY2ggdGlsZS4KKyAgICAgICAgKFdlYkNvcmU6OlRleHR1
cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6ZHJhd1JlcGFpbnRDb3VudGVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZTo6ZHJhd1JlcGFpbnRD
b3VudGVyKToKKyAgICAgICAgKFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjb252ZXJ0QUJHUlRvQVJHQik6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHTDo6ZHJhd1JlcGFpbnRDb3VudGVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXI6OmRyYXdCb3Jk
ZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVy
SW1hZ2VCdWZmZXI6OmRyYXdSZXBhaW50Q291bnRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5oOgorICAgICAgICAoVGV4dHVy
ZU1hcHBlckltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJM
YXllcjo6cGFpbnRTZWxmKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6
Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oOgorICAgICAgICAoU3RhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpTdGF0ZTo6U3RhdGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllci5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXI6OmRy
YXdCb3JkZXIpOgorCiAyMDEzLTAxLTE0ICBYaWFuemh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgU29tZXRpbWVzIFJlbmRlckxheWVyOjp1cGRhdGVOZWVkc0Nv
bXBvc2l0ZWRTY3JvbGxpbmcgaXMgbm90IGNhbGxlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IDI3YmM2
YmVjZDZiMjg2OGMxZTk1MmIxMDdkMzBjNjc2YjA1ZDhhNzcuLmU5MWQ0ZGRhZWU4NDVhZDZhYmJm
MWY2ZDQyYjdiMTYwYzU3M2QzZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAor
MjAxMy0wMS0xNSAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKwor
ICAgICAgICBbVGV4bWFwXSBSZWZhY3RvciBjb2RlIHJlbGF0ZWQgdG8gZGVidWcgYm9yZGVyIGFu
ZCByZXBhaW50IGNvdW50LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTA1Nzg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgSWYgV0VCS0lUX1NIT1dfQ09NUE9TSVRJTkdfREVCVUdfVklTVUFMUyBpcyBzZXQg
dG8gMSwgc2V0CisgICAgICAgIHNob3dEZWJ1Z0JvcmRlcnMgYW5kIHNob3dSZXBhaW50Q291bnRl
ciBpbiBTZXR0aW5ncyB0byB0cnVlLgorCisgICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKKyAg
ICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6CisKIDIwMTMtMDEtMTMgIEt3YW5nWW9uZyBDaG9p
ICA8a3kwLmNob2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF0gVW5yZXZpZXdlZCBidWls
ZCBmaXggYWZ0ZXIgcjEzOTU0MQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IGYzNTUwNDE2NThkN2NmOTA1
NjE5M2YzMmY0M2Q3MjZmOTNlMTM3MWQuLmIxZjkwZTk0OWNmZDM5Yjc2M2ZhZjk5MDFkNGEwZThh
MWRiODgyZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMy0wMS0xNSAg
SHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKworICAgICAgICBbVGV4
bWFwXSBSZWZhY3RvciBjb2RlIHJlbGF0ZWQgdG8gZGVidWcgYm9yZGVyIGFuZCByZXBhaW50IGNv
dW50LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1
Nzg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSWYg
V0VCS0lUX1NIT1dfQ09NUE9TSVRJTkdfREVCVUdfVklTVUFMUyBpcyBzZXQgdG8gMSwgc2V0Cisg
ICAgICAgIHNob3dEZWJ1Z0JvcmRlcnMgYW5kIHNob3dSZXBhaW50Q291bnRlciBpbiBTZXR0aW5n
cyB0byB0cnVlLgorCisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwOgorICAgICAg
ICAod2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aW5ncyk6CisKIDIwMTMtMDEtMTEgIENhcmxv
cyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3
ZWQuIFVwZGF0ZSBORVdTIGFuZCBjb25maWd1cmUuYWMgZm9yIDEuMTEuNCByZWxlYXNlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hh
bmdlTG9nCmluZGV4IGM2ODczZDcxZDFlMjRhYTNlOGE4NjQ5NjFjMTQ1ZWE5NzkxZjZhYWYuLjY0
MTY5ZWE4NWIzM2UxNzI2NGY3MTM5ZWUxYThhMmRkMGNkYTBhMDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTMtMDEtMTUgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29t
cGFueTEwMC5uZXQ+CisKKyAgICAgICAgW1RleG1hcF0gUmVmYWN0b3IgY29kZSByZWxhdGVkIHRv
IGRlYnVnIGJvcmRlciBhbmQgcmVwYWludCBjb3VudC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTc4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIElmIFFUX1dFQktJVF9TSE9XX0NPTVBPU0lUSU5HX0RF
QlVHX1ZJU1VBTFMgaXMgc2V0IHRvIDEsIHNldAorICAgICAgICBzaG93RGVidWdCb3JkZXJzIGFu
ZCBzaG93UmVwYWludENvdW50ZXIgaW4gU2V0dGluZ3MgdG8gdHJ1ZS4KKworICAgICAgICAqIEFw
aS9xd2Vic2V0dGluZ3MuY3BwOgorICAgICAgICAoUVdlYlNldHRpbmdzUHJpdmF0ZTo6YXBwbHkp
OgorCiAyMDEzLTAxLTExICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0
PgogCiAgICAgICAgIFtUZXhNYXBdIFJlbmFtZSBjdXJyZW50W1RyYW5zZm9ybXxPcGFjaXR5fEZp
bHRlcnNdIGluIFRleHR1cmVNYXBwZXJMYXllci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA2M2ZlZGQxZDYxYWZi
NzJkZGQ4NjZjMjE4NGY2ZDIyOTYzYjk2OWJhLi43ZDNmNDliZTM5Y2RkNDdlMWM2MzFmYjhlYTQw
MTEwMzQ2ZTVkZjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIgQEAKKzIwMTMtMDEtMTUgIEh1
YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CisKKyAgICAgICAgW1RleG1h
cF0gUmVmYWN0b3IgY29kZSByZWxhdGVkIHRvIGRlYnVnIGJvcmRlciBhbmQgcmVwYWludCBjb3Vu
dC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTc4
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZXJl
IGFyZSB0aHJlZSBiaWcgY2hhbmdlczoKKyAgICAgICAgMS4gQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyIHNlbmRzIGRlYnVnZ2luZyB2aXN1YWxzIHRvIFVJIFByb2Nlc3MuCisgICAgICAgIDIuIElm
IFtRVF9dV0VCS0lUX1NIT1dfQ09NUE9TSVRJTkdfREVCVUdfVklTVUFMUyBpcyBzZXQgdG8gMSwg
c2V0CisgICAgICAgIHNob3dEZWJ1Z0JvcmRlcnMgYW5kIHNob3dSZXBhaW50Q291bnRlciBpbiBT
ZXR0aW5ncyB0byB0cnVlLgorICAgICAgICAzLiBXaGVuIHVwZGF0aW5nIGEgYmFja2luZyBzdG9y
ZSwgaW5jcmVtZW50IGEgcmVwYWludCBjb3VudC4KKworICAgICAgICAqIFNoYXJlZC9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJJbmZvLmg6CisgICAgICAgIChXZWJLaXQ6OkNv
b3JkaW5hdGVkTGF5ZXJJbmZvOjpDb29yZGluYXRlZExheWVySW5mbyk6CisgICAgICAgIChDb29y
ZGluYXRlZExheWVySW5mbyk6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb29yZGlu
YXRlZEJhY2tpbmdTdG9yZTo6dXBkYXRlVGlsZSk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5h
dGVkQmFja2luZ1N0b3JlOjpwYWludFRpbGVzVG9UZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKFdl
YktpdDo6Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OmRyYXdCb3JkZXIpOgorICAgICAgICAgICAg
T3ZlcnJpZGUgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXI6OmRyYXdCb3JkZXIoKSB0byBkcmF3
IHRoZSBib3JkZXIKKyAgICAgICAgICAgIGZvciBlYWNoIHRpbGUuCisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6ZHJhd1JlcGFpbnRD
b3VudGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZEJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEJhY2tpbmdT
dG9yZVRpbGU6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZSk6CisgICAgICAgIChDb29yZGlu
YXRlZEJhY2tpbmdTdG9yZVRpbGUpOgorICAgICAgICAoQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0UHJveHk6OnNldFJlcGFpbnRDb3VudCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dFByb3h5Lmg6CisgICAgICAgIChDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eSk6CisgICAg
ICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0UHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVS
ZW5kZXJlcjo6c2V0UmVwYWludENvdW50KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChX
ZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjpzZXRMYXllclN0YXRlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5oOgorICAgICAgICAo
TGF5ZXJUcmVlUmVuZGVyZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldFNob3dEZWJ1Z0JvcmRlcik6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXll
cjo6c2V0U2hvd1JlcGFpbnRDb3VudGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVk
R3JhcGhpY3NMYXllcjo6c3luY0xheWVyU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyOjpzZXREZWJ1Z0JvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnRpbGVkQmFja2luZ1N0b3JlUGFpbnRFbmQpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3NMYXllci5oOgorICAgICAgICAoQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyQ2xpZW50
KToKKyAgICAgICAgKENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcik6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzZXRSZXBh
aW50Q291bnQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFRp
bGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZFRpbGU6OnVwZGF0ZUJhY2tCdWZm
ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMpOgorCiAyMDEzLTAxLTE0ICBBbGV4
ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8xMjUyNDcxMD4gVXBkYXRlIHNhbmRib3ggcnVsZXMgYWZ0ZXIgcjEyODAwMwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKaW5kZXggZTk2Mjk2YmE1MWU0YWE3MTE1
ZGJhMjI2YWE1N2ZmZWYwZWMwMTIyMi4uNzViYzc1MzZlODcxZWY2NjBkNjgzYmMxOTc4YTIzMWFi
YTc5NzRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCkBA
IC0yNCwxNCArMjQsOCBAQAogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJBbmltYXRpb24uaCIKICNp
bmNsdWRlICJHcmFwaGljc0xheWVyRmFjdG9yeS5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgi
Ci0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUu
aD4KIAotI2lmIFVTRShDQUlSTykKLSNpbmNsdWRlICJDYWlyb1V0aWxpdGllcy5oIgotI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IFBhc3NPd25QdHI8R3JhcGhpY3NMYXllcj4gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKEdyYXBoaWNz
TGF5ZXJGYWN0b3J5KiBmYWN0b3J5LCBHcmFwaGljc0xheWVyQ2xpZW50KiBjbGllbnQpCkBAIC0z
ODMsMTUgKzM3Nyw2MCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250
ZW50c1RvTWVkaWEoVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIqCiAgICAgbV9jb250ZW50c0xh
eWVyID0gbWVkaWE7CiB9CiAKK3ZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFNo
b3dEZWJ1Z0JvcmRlcihib29sIHNob3cpCit7CisgICAgaWYgKGlzU2hvd2luZ0RlYnVnQm9yZGVy
KCkgPT0gc2hvdykKKyAgICAgICAgcmV0dXJuOworCisgICAgR3JhcGhpY3NMYXllcjo6c2V0U2hv
d0RlYnVnQm9yZGVyKHNob3cpOworICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6
OkRlYnVnVmlzdWFsc0NoYW5nZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXI6OnNldFNob3dSZXBhaW50Q291bnRlcihib29sIHNob3cpCit7CisgICAgaWYgKGlzU2hvd2lu
Z1JlcGFpbnRDb3VudGVyKCkgPT0gc2hvdykKKyAgICAgICAgcmV0dXJuOworCisgICAgR3JhcGhp
Y3NMYXllcjo6c2V0U2hvd1JlcGFpbnRDb3VudGVyKHNob3cpOworICAgIG5vdGlmeUNoYW5nZShU
ZXh0dXJlTWFwcGVyTGF5ZXI6OkRlYnVnVmlzdWFsc0NoYW5nZSk7Cit9CisKIC8qIFxyZWltcCAo
R3JhcGhpY3NMYXllci5oKQogKi8KIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmZs
dXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKQogeworICAgIGlmIChtX2hhc093
bkJhY2tpbmdTdG9yZSkKKyAgICAgICAgdXBkYXRlRGVidWdCb3JkZXJBbmRSZXBhaW50Q291bnQo
KTsKICAgICBtX2xheWVyLT5mbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KHRo
aXMpOwotICAgIHVwZGF0ZUJhY2tpbmdTdG9yZSgpOworICAgIGlmIChtX2hhc093bkJhY2tpbmdT
dG9yZSkKKyAgICAgICAgdXBkYXRlQmFja2luZ1N0b3JlKCk7CiAgICAgZGlkRmx1c2hDb21wb3Np
dGluZ1N0YXRlKCk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnVwZGF0
ZURlYnVnQm9yZGVyQW5kUmVwYWludENvdW50KCkKK3sKKyAgICBBU1NFUlQobV9oYXNPd25CYWNr
aW5nU3RvcmUpOworCisgICAgbV91c2luZ1RpbGVkTGF5ZXIgPSBzaG91bGRIYXZlQmFja2luZ1N0
b3JlKCk7CisgICAgdXBkYXRlRGVidWdJbmRpY2F0b3JzKCk7CisKKyAgICAvLyBXaGVuIHRoaXMg
aGFzIGl0cyBvd24gYmFja2luZyBzdG9yZSAoZS5nLiBRdCBXSzEpLCB1cGRhdGUgdGhlIHJlcGFp
bnQgY291bnQgYmVmb3JlIGNhbGxpbmcgVGV4dHVyZU1hcHBlckxheWVyOjpmbHVzaENvbXBvc2l0
aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCkuCisgICAgYm9vbCBuZWVkc1RvUmVwYWludCA9IHNo
b3VsZEhhdmVCYWNraW5nU3RvcmUoKSAmJiAobV9uZWVkc0Rpc3BsYXkgfHwgIW1fbmVlZHNEaXNw
bGF5UmVjdC5pc0VtcHR5KCkpOworICAgIGlmIChpc1Nob3dpbmdSZXBhaW50Q291bnRlcigpICYm
IG5lZWRzVG9SZXBhaW50KSB7CisgICAgICAgIGluY3JlbWVudFJlcGFpbnRDb3VudCgpOworICAg
ICAgICBtX2NoYW5nZU1hc2sgfD0gVGV4dHVyZU1hcHBlckxheWVyOjpSZXBhaW50Q291bnRDaGFu
Z2U7CisgICAgfQorfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXREZWJ1
Z0JvcmRlcihjb25zdCBDb2xvciYgY29sb3IsIGZsb2F0IHdpZHRoKQoreworICAgIC8vIFRoZSBk
ZWZhdWx0IHZhbHVlcyBmb3IgR3JhcGhpY3NMYXllciBkZWJ1ZyBib3JkZXJzIGFyZSBhIGxpdHRs
ZQorICAgIC8vIGhhcmQgdG8gc2VlIChzb21lIGxlc3MgdGhhbiBvbmUgcGl4ZWwgd2lkZSksIHNv
IHdlIGRvdWJsZSB0aGVpciBzaXplIGhlcmUuCisgICAgbV9kZWJ1Z0JvcmRlckNvbG9yID0gY29s
b3I7CisgICAgbV9kZWJ1Z0JvcmRlcldpZHRoID0gd2lkdGggKiAyOworICAgIG1fY2hhbmdlTWFz
ayB8PSBUZXh0dXJlTWFwcGVyTGF5ZXI6OkRlYnVnVmlzdWFsc0NoYW5nZTsKK30KKwogLyogXHJl
aW1wIChHcmFwaGljc0xheWVyLmgpCiAqLwogdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
cjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKQEAgLTQxNiw5
ICs0NTUsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpkaWRGbHVzaENvbXBv
c2l0aW5nU3RhdGUoKQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjp1cGRhdGVC
YWNraW5nU3RvcmUoKQogewotICAgIGlmICghbV9oYXNPd25CYWNraW5nU3RvcmUpCi0gICAgICAg
IHJldHVybjsKLQorICAgIEFTU0VSVChtX2hhc093bkJhY2tpbmdTdG9yZSk7CiAgICAgcHJlcGFy
ZUJhY2tpbmdTdG9yZSgpOwogICAgIG1fbGF5ZXItPnNldEJhY2tpbmdTdG9yZShtX2JhY2tpbmdT
dG9yZSk7CiB9CkBAIC00NDgsMzQgKzQ4NSw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXI6OnByZXBhcmVCYWNraW5nU3RvcmUoKQogI2VuZGlmCiAgICAgVGV4dHVyZU1hcHBlclRp
bGVkQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUgPSBzdGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVy
VGlsZWRCYWNraW5nU3RvcmUqPihtX2JhY2tpbmdTdG9yZS5nZXQoKSk7CiAKLSAgICBpZiAoaXNT
aG93aW5nUmVwYWludENvdW50ZXIoKSkKLSAgICAgICAgaW5jcmVtZW50UmVwYWludENvdW50KCk7
Ci0KLSAgICAvLyBQYWludCBpbnRvIGFuIGludGVybWVkaWF0ZSBidWZmZXIgdG8gYXZvaWQgcGFp
bnRpbmcgY29udGVudCBtb3JlIHRoYW4gb25jZS4KLSAgICBib29sIHBhaW50T25jZSA9IHRydWU7
Ci0gICAgY29uc3QgSW50U2l6ZSBtYXhUZXh0dXJlU2l6ZSA9IHRleHR1cmVNYXBwZXItPm1heFRl
eHR1cmVTaXplKCk7Ci0gICAgLy8gV2UgbmVlZCB0byBwYWludCBkaXJlY3RseSBpZiB0aGUgZGly
dHkgcmVjdCBleGNlZWRzIG9uZSBvZiB0aGUgbWF4aW11bSBkaW1lbnNpb25zLgotICAgIGlmIChk
aXJ0eVJlY3Qud2lkdGgoKSA+IG1heFRleHR1cmVTaXplLndpZHRoKCkgfHwgZGlydHlSZWN0Lmhl
aWdodCgpID4gbWF4VGV4dHVyZVNpemUuaGVpZ2h0KCkpCi0gICAgICAgIHBhaW50T25jZSA9IGZh
bHNlOwotCi0gICAgaWYgKHBhaW50T25jZSkgewotICAgICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+
IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShkaXJ0eVJlY3Quc2l6ZSgpKTsKLSAg
ICAgICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsK
LSAgICAgICAgY29udGV4dC0+c2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSh0ZXh0dXJlTWFw
cGVyLT5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkpOwotICAgICAgICBjb250ZXh0LT5zZXRU
ZXh0RHJhd2luZ01vZGUodGV4dHVyZU1hcHBlci0+dGV4dERyYXdpbmdNb2RlKCkpOwotICAgICAg
ICBjb250ZXh0LT50cmFuc2xhdGUoLWRpcnR5UmVjdC54KCksIC1kaXJ0eVJlY3QueSgpKTsKLSAg
ICAgICAgcGFpbnRHcmFwaGljc0xheWVyQ29udGVudHMoKmNvbnRleHQsIGRpcnR5UmVjdCk7Ci0K
LSAgICAgICAgaWYgKGlzU2hvd2luZ1JlcGFpbnRDb3VudGVyKCkpCi0gICAgICAgICAgICBkcmF3
UmVwYWludENvdW50ZXIoY29udGV4dCk7Ci0KLSAgICAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9
IGltYWdlQnVmZmVyLT5jb3B5SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwotICAgICAgICBi
YWNraW5nU3RvcmUtPnVwZGF0ZUNvbnRlbnRzKHRleHR1cmVNYXBwZXIsIGltYWdlLmdldCgpLCBt
X3NpemUsIGRpcnR5UmVjdCwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ2FuTW9kaWZ5T3JpZ2luYWxJ
bWFnZURhdGEpOwotICAgIH0gZWxzZQotICAgICAgICBiYWNraW5nU3RvcmUtPnVwZGF0ZUNvbnRl
bnRzKHRleHR1cmVNYXBwZXIsIHRoaXMsIG1fc2l6ZSwgZGlydHlSZWN0LCBCaXRtYXBUZXh0dXJl
OjpVcGRhdGVDYW5Nb2RpZnlPcmlnaW5hbEltYWdlRGF0YSk7Ci0KLSAgICBiYWNraW5nU3RvcmUt
PnNldFNob3dEZWJ1Z0JvcmRlcnMoaXNTaG93aW5nRGVidWdCb3JkZXIoKSk7Ci0gICAgYmFja2lu
Z1N0b3JlLT5zZXREZWJ1Z0JvcmRlcihtX2RlYnVnQm9yZGVyQ29sb3IsIG1fZGVidWdCb3JkZXJX
aWR0aCk7CisgICAgYmFja2luZ1N0b3JlLT51cGRhdGVDb250ZW50cyh0ZXh0dXJlTWFwcGVyLCB0
aGlzLCBtX3NpemUsIGRpcnR5UmVjdCwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ2FuTW9kaWZ5T3Jp
Z2luYWxJbWFnZURhdGEpOwogCiAgICAgbV9uZWVkc0Rpc3BsYXkgPSBmYWxzZTsKICAgICBtX25l
ZWRzRGlzcGxheVJlY3QgPSBJbnRSZWN0KCk7CkBAIC00ODYsNDAgKzQ5Niw2IEBAIGJvb2wgR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNob3VsZEhhdmVCYWNraW5nU3RvcmUoKSBjb25zdAog
ICAgIHJldHVybiBkcmF3c0NvbnRlbnQoKSAmJiBjb250ZW50c0FyZVZpc2libGUoKSAmJiAhbV9z
aXplLmlzRW1wdHkoKTsKIH0KIAotI2lmIFVTRShDQUlSTykKLXZvaWQgR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXI6OmRyYXdSZXBhaW50Q291bnRlcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQp
Ci17Ci0gICAgY2Fpcm9fdCogY3IgPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsK
LSAgICBjYWlyb19zYXZlKGNyKTsKLQotICAgIENTdHJpbmcgcmVwYWludENvdW50ID0gU3RyaW5n
Ojpmb3JtYXQoIiVpIiwgdGhpcy0+cmVwYWludENvdW50KCkpLnV0ZjgoKTsKLSAgICBjYWlyb19z
ZWxlY3RfZm9udF9mYWNlKGNyLCAic2Fucy1zZXJpZiIsIENBSVJPX0ZPTlRfU0xBTlRfTk9STUFM
LCBDQUlST19GT05UX1dFSUdIVF9CT0xEKTsKLSAgICBjYWlyb19zZXRfZm9udF9zaXplKGNyLCAx
OCk7Ci0KLSAgICBjYWlyb190ZXh0X2V4dGVudHNfdCByZXBhaW50VGV4dEV4dGVudHM7Ci0gICAg
Y2Fpcm9fdGV4dF9leHRlbnRzKGNyLCByZXBhaW50Q291bnQuZGF0YSgpLCAmcmVwYWludFRleHRF
eHRlbnRzKTsKLQotICAgIHN0YXRpYyBjb25zdCBpbnQgcmVwYWludENvdW50Qm9yZGVyV2lkdGgg
PSAxMDsKLSAgICBzZXRTb3VyY2VSR0JBRnJvbUNvbG9yKGNyLCBpc1Nob3dpbmdEZWJ1Z0JvcmRl
cigpID8gbV9kZWJ1Z0JvcmRlckNvbG9yIDogQ29sb3IoMCwgMjU1LCAwLCAxMjcpKTsKLSAgICBj
YWlyb19yZWN0YW5nbGUoY3IsIDAsIDAsCi0gICAgICAgIHJlcGFpbnRUZXh0RXh0ZW50cy53aWR0
aCArIChyZXBhaW50Q291bnRCb3JkZXJXaWR0aCAqIDIpLAotICAgICAgICByZXBhaW50VGV4dEV4
dGVudHMuaGVpZ2h0ICsgKHJlcGFpbnRDb3VudEJvcmRlcldpZHRoICogMikpOwotICAgIGNhaXJv
X2ZpbGwoY3IpOwotCi0gICAgY2Fpcm9fc2V0X3NvdXJjZV9yZ2IoY3IsIDEsIDEsIDEpOwotICAg
IGNhaXJvX21vdmVfdG8oY3IsIHJlcGFpbnRDb3VudEJvcmRlcldpZHRoLCByZXBhaW50VGV4dEV4
dGVudHMuaGVpZ2h0ICsgcmVwYWludENvdW50Qm9yZGVyV2lkdGgpOwotICAgIGNhaXJvX3Nob3df
dGV4dChjciwgcmVwYWludENvdW50LmRhdGEoKSk7Ci0KLSAgICBjYWlyb19yZXN0b3JlKGNyKTsK
LX0KLSNlbHNlCi12b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpkcmF3UmVwYWludENv
dW50ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci19Ci0KLSNlbmRpZgotCiBib29sIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjphZGRBbmlt
YXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgY29uc3QgSW50U2l6ZSYg
Ym94U2l6ZSwgY29uc3QgQW5pbWF0aW9uKiBhbmltLCBjb25zdCBTdHJpbmcmIGtleWZyYW1lc05h
bWUsIGRvdWJsZSB0aW1lT2Zmc2V0KQogewogICAgIEFTU0VSVCgha2V5ZnJhbWVzTmFtZS5pc0Vt
cHR5KCkpOwpAQCAtNTYxLDE0ICs1MzcsNiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyOjphbmltYXRpb25TdGFydGVkVGltZXJGaXJlZChUaW1lcjxHcmFwaGljc0xheWVyVAogICAg
IGNsaWVudCgpLT5ub3RpZnlBbmltYXRpb25TdGFydGVkKHRoaXMsIC8qIERPTSB0aW1lICovIFdU
Rjo6Y3VycmVudFRpbWUoKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6
OnNldERlYnVnQm9yZGVyKGNvbnN0IENvbG9yJiBjb2xvciwgZmxvYXQgd2lkdGgpCi17Ci0gICAg
Ly8gVGhlIGRlZmF1bHQgdmFsdWVzIGZvciBHcmFwaGljc0xheWVyIGRlYnVnIGJvcmRlcnMgYXJl
IGEgbGl0dGxlCi0gICAgLy8gaGFyZCB0byBzZWUgKHNvbWUgbGVzcyB0aGFuIG9uZSBwaXhlbCB3
aWRlKSwgc28gd2UgZG91YmxlIHRoZWlyIHNpemUgaGVyZS4KLSAgICBtX2RlYnVnQm9yZGVyQ29s
b3IgPSBjb2xvcjsKLSAgICBtX2RlYnVnQm9yZGVyV2lkdGggPSB3aWR0aCAqIDI7Ci19Ci0KICNp
ZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiBib29sIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpz
ZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCiB7CkBAIC01NzcsNCAr
NTQ1LDEwIEBAIGJvb2wgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldEZpbHRlcnMoY29u
c3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKIH0KICNlbmRpZgogCit2b2lkIEdyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRSZXBhaW50Q291bnQoaW50IHZhbHVlKQoreworICAgIG1f
cmVwYWludENvdW50ID0gdmFsdWU7CisgICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXll
cjo6UmVwYWludENvdW50Q2hhbmdlKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXIuaAppbmRleCAxMmMzMTk1OTFiNzI2YzdjOWYwYmEyYmRmZGY0Mzg0ZTdkZWEx
NzEzLi4zOTMzOGMzN2FiNzgyNWJiYmFkMDA3OTI3N2M5OGRiM2FlZjVkNGU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaApAQCAtMjAsNyArMjAsNiBAQAogI2lmbmRl
ZiBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcl9oCiAjZGVmaW5lIEdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyX2gKIAotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkdy
YXBoaWNzTGF5ZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiSW1hZ2UuaCIKQEAgLTY2LDYgKzY1LDkgQEAgcHVibGljOgogICAgIENvbG9yIHNvbGlkQ29s
b3IoKSBjb25zdCB7IHJldHVybiBtX3NvbGlkQ29sb3I7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0
Q29udGVudHNUb01lZGlhKFBsYXRmb3JtTGF5ZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29u
dGVudHNUb0NhbnZhcyhQbGF0Zm9ybUxheWVyKiBjYW52YXMpIHsgc2V0Q29udGVudHNUb01lZGlh
KGNhbnZhcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvd0RlYnVnQm9yZGVyKGJvb2wpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXREZWJ1Z0JvcmRlcihjb25zdCBDb2xvciYsIGZs
b2F0IHdpZHRoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvd1JlcGFpbnRDb3Vu
dGVyKGJvb2wpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBmbHVzaENvbXBvc2l0aW5nU3Rh
dGUoY29uc3QgRmxvYXRSZWN0Jik7CiAgICAgdmlydHVhbCB2b2lkIGZsdXNoQ29tcG9zaXRpbmdT
dGF0ZUZvclRoaXNMYXllck9ubHkoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmFtZShjb25zdCBT
dHJpbmcmIG5hbWUpOwpAQCAtODEsOCArODMsNiBAQCBwdWJsaWM6CiAKICAgICBUZXh0dXJlTWFw
cGVyTGF5ZXIqIGxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXllci5nZXQoKTsgfQogCi0gICAg
dmlydHVhbCB2b2lkIHNldERlYnVnQm9yZGVyKGNvbnN0IENvbG9yJiwgZmxvYXQgd2lkdGgpOwot
CiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogICAgIHZpcnR1YWwgYm9vbCBzZXRGaWx0ZXJzKGNv
bnN0IEZpbHRlck9wZXJhdGlvbnMmKTsKICNlbmRpZgpAQCAtOTMsMTAgKzkzLDE1IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldEZpeGVkVG9WaWV3cG9ydChib29sIGZpeGVkKSB7IG1fZml4ZWRUb1Zp
ZXdwb3J0ID0gZml4ZWQ7IH0KICAgICBib29sIGZpeGVkVG9WaWV3cG9ydCgpIGNvbnN0IHsgcmV0
dXJuIG1fZml4ZWRUb1ZpZXdwb3J0OyB9CiAKLSAgICB2b2lkIGRyYXdSZXBhaW50Q291bnRlcihH
cmFwaGljc0NvbnRleHQqKTsKKyAgICBDb2xvciBkZWJ1Z0JvcmRlckNvbG9yKCkgY29uc3QgeyBy
ZXR1cm4gbV9kZWJ1Z0JvcmRlckNvbG9yOyB9CisgICAgZmxvYXQgZGVidWdCb3JkZXJXaWR0aCgp
IGNvbnN0IHsgcmV0dXJuIG1fZGVidWdCb3JkZXJXaWR0aDsgfQorCisgICAgdm9pZCBzZXRSZXBh
aW50Q291bnQoaW50IHZhbHVlKTsKKwogcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEJl
RGVzdHJveWVkKCk7CiAgICAgdm9pZCBkaWRGbHVzaENvbXBvc2l0aW5nU3RhdGUoKTsKKyAgICB2
b2lkIHVwZGF0ZURlYnVnQm9yZGVyQW5kUmVwYWludENvdW50KCk7CiAgICAgdm9pZCB1cGRhdGVC
YWNraW5nU3RvcmUoKTsKICAgICB2b2lkIHByZXBhcmVCYWNraW5nU3RvcmUoKTsKICAgICBib29s
IHNob3VsZEhhdmVCYWNraW5nU3RvcmUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oCmluZGV4IGM3MjQx
YTZjOWE3MjJhNjQ1MmY3YzE4YzlkNjY5NzEyNzY2OTM2NmIuLmQ5NjExNmI3MDk5MzY4YWQ0NDU1
OTk2YzFiNzMyMDE2MjcwZGVlYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaApAQCAtMzYsNyArMzYsNiBAQAog
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNs
dWRlICJJbnRTaXplLmgiCi0jaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaCIK
ICNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQ
YXJhbS5oPgogCkBAIC0xMzAsOCArMTI5LDkgQEAgcHVibGljOgogICAgICAgICBBbGxFZGdlcyA9
IExlZnRFZGdlIHwgUmlnaHRFZGdlIHwgVG9wRWRnZSB8IEJvdHRvbUVkZ2UsCiAgICAgfTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBkcmF3Qm9yZGVyKGNvbnN0IENvbG9yJiwgZmxvYXQgYm9yZGVyV2lk
dGgsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIG1vZGVsVmlld01hdHJpeCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVyKGludCB2YWx1ZSwgaW50IHBvaW50U2l6ZSwg
Y29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdN
YXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRy
YXdCb3JkZXIoY29uc3QgQ29sb3ImLCBmbG9hdCBib3JkZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0
JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRy
YXdSZXBhaW50Q291bnRlcihpbnQgcmVwYWludENvdW50LCBjb25zdCBDb2xvciYsIGNvbnN0IEZs
b2F0UG9pbnQmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpID0gMDsKKwogICAgIHZpcnR1
YWwgdm9pZCBkcmF3VGV4dHVyZShjb25zdCBCaXRtYXBUZXh0dXJlJiwgY29uc3QgRmxvYXRSZWN0
JiB0YXJnZXQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXggPSBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBmbG9hdCBvcGFjaXR5ID0gMS4wZiwgY29uc3QgQml0bWFw
VGV4dHVyZSogbWFza1RleHR1cmUgPSAwLCB1bnNpZ25lZCBleHBvc2VkRWRnZXMgPSBBbGxFZGdl
cykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3U29saWRDb2xvcihjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IENvbG9yJikgPSAwOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5jcHAKaW5kZXggZTg5OTI1MzFiMjg3YzVi
NTk3NzllNjQ3NmU4MDFiOGI2OTk1YzJjNy4uNGFkZGUyZDcyYzUwMGZjMWRiNGY5MjEzNDJlN2Mx
ZDg1MmI4ZjkxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmNwcApA
QCAtMTA2LDcgKzEwNiw2IEBAIHZvaWQgVGV4dHVyZU1hcHBlclRpbGU6OnBhaW50KFRleHR1cmVN
YXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uCiB9CiAKIFRleHR1cmVN
YXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlKCkK
LSAgICA6IG1fZHJhd3NEZWJ1Z0JvcmRlcnMoZmFsc2UpCiB7CiB9CiAKQEAgLTEzOCwxMSArMTM3
LDI0IEBAIHZvaWQgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpwYWludFRvVGV4dHVy
ZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlCiAgICAgdXBkYXRlQ29udGVudHNGcm9tSW1h
Z2VJZk5lZWRlZCh0ZXh0dXJlTWFwcGVyKTsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhZGp1
c3RlZFRyYW5zZm9ybSA9IHRyYW5zZm9ybTsKICAgICBhZGp1c3RlZFRyYW5zZm9ybS5tdWx0aXBs
eShUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6cmVjdFRvUmVjdChyZWN0KCksIHRhcmdldFJlY3QpKTsK
LSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fdGlsZXMuc2l6ZSgpOyArK2kpIHsKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1fdGlsZXMuc2l6ZSgpOyArK2kpCiAgICAgICAgIG1fdGls
ZXNbaV0ucGFpbnQodGV4dHVyZU1hcHBlciwgYWRqdXN0ZWRUcmFuc2Zvcm0sIG9wYWNpdHksIG1h
c2ssIGNhbGN1bGF0ZUV4cG9zZWRUaWxlRWRnZXMocmVjdCgpLCBtX3RpbGVzW2ldLnJlY3QoKSkp
OwotICAgICAgICBpZiAobV9kcmF3c0RlYnVnQm9yZGVycykKLSAgICAgICAgICAgIHRleHR1cmVN
YXBwZXItPmRyYXdCb3JkZXIobV9kZWJ1Z0JvcmRlckNvbG9yLCBtX2RlYnVnQm9yZGVyV2lkdGgs
IG1fdGlsZXNbaV0ucmVjdCgpLCBhZGp1c3RlZFRyYW5zZm9ybSk7Ci0gICAgfQorfQorCit2b2lk
IFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6ZHJhd0JvcmRlcihUZXh0dXJlTWFwcGVy
KiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBDb2xvciYgYm9yZGVyQ29sb3IsIGZsb2F0IGJvcmRlcldp
ZHRoLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiB0cmFuc2Zvcm0pCit7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggYWRqdXN0ZWRUcmFu
c2Zvcm0gPSB0cmFuc2Zvcm07CisgICAgYWRqdXN0ZWRUcmFuc2Zvcm0ubXVsdGlwbHkoVHJhbnNm
b3JtYXRpb25NYXRyaXg6OnJlY3RUb1JlY3QocmVjdCgpLCB0YXJnZXRSZWN0KSk7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX3RpbGVzLnNpemUoKTsgKytpKQorICAgICAgICB0ZXh0dXJl
TWFwcGVyLT5kcmF3Qm9yZGVyKGJvcmRlckNvbG9yLCBib3JkZXJXaWR0aCwgbV90aWxlc1tpXS5y
ZWN0KCksIGFkanVzdGVkVHJhbnNmb3JtKTsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyVGlsZWRC
YWNraW5nU3RvcmU6OmRyYXdSZXBhaW50Q291bnRlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFw
cGVyLCBpbnQgcmVwYWludENvdW50LCBjb25zdCBDb2xvciYgYm9yZGVyQ29sb3IsIGNvbnN0IEZs
b2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9y
bSkKK3sKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhZGp1c3RlZFRyYW5zZm9ybSA9IHRyYW5z
Zm9ybTsKKyAgICBhZGp1c3RlZFRyYW5zZm9ybS5tdWx0aXBseShUcmFuc2Zvcm1hdGlvbk1hdHJp
eDo6cmVjdFRvUmVjdChyZWN0KCksIHRhcmdldFJlY3QpKTsKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1fdGlsZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIHRleHR1cmVNYXBwZXItPmRyYXdS
ZXBhaW50Q291bnRlcihyZXBhaW50Q291bnQsIGJvcmRlckNvbG9yLCBtX3RpbGVzW2ldLnJlY3Qo
KS5sb2NhdGlvbigpLCBhZGp1c3RlZFRyYW5zZm9ybSk7CiB9CiAKIHZvaWQgVGV4dHVyZU1hcHBl
clRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGVPckRlc3Ryb3lUaWxlc0lmTmVlZGVkKGNvbnN0IEZs
b2F0U2l6ZSYgc2l6ZSwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGJvb2wgaGFzQWxwaGEpCkBA
IC0yMzQsMTEgKzI0Niw1IEBAIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gVGV4dHVyZU1hcHBl
clRpbGVkQmFja2luZ1N0b3JlOjp0ZXh0dXJlKCkgY29uc3QKICAgICByZXR1cm4gUGFzc1JlZlB0
cjxCaXRtYXBUZXh0dXJlPigpOwogfQogCi12b2lkIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdT
dG9yZTo6c2V0RGVidWdCb3JkZXIoY29uc3QgQ29sb3ImIGNvbG9yLCBmbG9hdCB3aWR0aCkKLXsK
LSAgICBtX2RlYnVnQm9yZGVyQ29sb3IgPSBjb2xvcjsKLSAgICBtX2RlYnVnQm9yZGVyV2lkdGgg
PSB3aWR0aDsKLX0KLQogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3Rv
cmUuaAppbmRleCAwZGQyZGY0YjE5OGJkMzExZmQ0MWM1NWEzMzc3MjE4NGNkMTRiMzRhLi43YmMz
NzVhZjVlMjY5YmRjNmI2NmUyNWM2MWViOGE0NDg0MTE5ZmM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9y
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyQmFja2luZ1N0b3JlLmgKQEAgLTQwLDYgKzQwLDEwIEBAIGNsYXNzIFRleHR1cmVNYXBw
ZXJCYWNraW5nU3RvcmUgOiBwdWJsaWMgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIsIHB1Ymxp
YyBSZWZDCiBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRl
eHR1cmUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVy
KFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYsIGZsb2F0LCBCaXRtYXBUZXh0dXJlKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3
UmVwYWludENvdW50ZXIoVGV4dHVyZU1hcHBlciosIGludCAvKiByZXBhaW50Q291bnQgKi8sIGNv
bnN0IENvbG9yJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
KQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQogICAgIHZpcnR1
YWwgflRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUoKSB7IH0KIAogcHJvdGVjdGVkOgpAQCAtOTQs
MTIgKzk4LDEyIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0
dXJlPiB0ZXh0dXJlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50VG9U
ZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0LCBCaXRtYXBUZXh0dXJlKikgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIGRyYXdCb3JkZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IENvbG9yJiwgZmxv
YXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRyYXdSZXBhaW50Q291bnRlcihUZXh0
dXJlTWFwcGVyKiwgaW50IHJlcGFpbnRDb3VudCwgY29uc3QgQ29sb3ImLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIE9WRVJSSURFOwogICAgIHZvaWQgdXBk
YXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciosIEltYWdlKiwgY29uc3QgRmxvYXRTaXplJiwgY29u
c3QgSW50UmVjdCYsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNvbnRlbnRzRmxhZyk7CiAgICAgdm9p
ZCB1cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVyKiwgR3JhcGhpY3NMYXllciosIGNvbnN0IEZs
b2F0U2l6ZSYsIGNvbnN0IEludFJlY3QmLCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDb250ZW50c0Zs
YWcpOwogCiAgICAgdm9pZCBzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqIGltYWdlKSB7IG1faW1h
Z2UgPSBpbWFnZTsgfQotICAgIHZvaWQgc2V0U2hvd0RlYnVnQm9yZGVycyhib29sIGRyYXdzRGVi
dWdCb3JkZXJzKSB7IG1fZHJhd3NEZWJ1Z0JvcmRlcnMgPSBkcmF3c0RlYnVnQm9yZGVyczsgfQot
ICAgIHZvaWQgc2V0RGVidWdCb3JkZXIoY29uc3QgQ29sb3ImLCBmbG9hdCB3aWR0aCk7CiAKIHBy
aXZhdGU6CiAgICAgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlKCk7CkBAIC0xMTAsMTAg
KzExNCw2IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFRleHR1cmVNYXBwZXJUaWxlPiBtX3RpbGVz
OwogICAgIEZsb2F0U2l6ZSBtX3NpemU7CiAgICAgUmVmUHRyPEltYWdlPiBtX2ltYWdlOwotCi0g
ICAgYm9vbCBtX2RyYXdzRGVidWdCb3JkZXJzOwotICAgIENvbG9yIG1fZGVidWdCb3JkZXJDb2xv
cjsKLSAgICBmbG9hdCBtX2RlYnVnQm9yZGVyV2lkdGg7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
R0wuY3BwCmluZGV4IDM0MDg0Zjk0MGM2ODM3NjQzODE4ZjgwY2VmMzdlMzVlZTAxOWE0ZjkuLmQz
NjI5ODU2ZTg3ZDdhMDQ5MDkyMTJjZmJkOWQ5NDEwZDE5NmFiOWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
R0wuY3BwCkBAIC0zMDksMTAgKzMwOSwxNiBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd0Jv
cmRlcihjb25zdCBDb2xvciYgY29sb3IsIGZsb2F0IHdpZHRoLCBjb25zdCBGbG9hdFJlYwogICAg
IGRyYXcodGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCBwcm9ncmFtLmdldCgpLCBHcmFwaGlj
c0NvbnRleHQzRDo6TElORV9MT09QLCBjb2xvci5oYXNBbHBoYSgpID8gU2hvdWxkQmxlbmQgOiAw
KTsKIH0KIAotdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdSZXBhaW50Q291bnRlcihpbnQgdmFs
dWUsIGludCBwb2ludFNpemUsIGNvbnN0IEZsb2F0UG9pbnQmIHRhcmdldFBvaW50LCBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4KQorc3RhdGljIGlubGluZSBSR0JB
MzIgY29udmVydEFCR1JUb0FSR0IoUkdCQTMyIHBpeGVsKQogeworICAgIHJldHVybiAoKHBpeGVs
IDw8IDE2KSAmIDB4ZmYwMDAwKSB8ICgocGl4ZWwgPj4gMTYpICYgMHhmZikgfCAocGl4ZWwgJiAw
eGZmMDBmZjAwKTsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdSZXBhaW50Q291bnRl
cihpbnQgcmVwYWludENvdW50LCBjb25zdCBDb2xvciYgY29sb3IsIGNvbnN0IEZsb2F0UG9pbnQm
IHRhcmdldFBvaW50LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4
KQoreworICAgIHN0YXRpYyBjb25zdCBpbnQgcG9pbnRTaXplID0gODsKICNpZiBQTEFURk9STShR
VCkKLSAgICBRU3RyaW5nIGNvdW50ZXJTdHJpbmcgPSBRU3RyaW5nOjpudW1iZXIodmFsdWUpOwor
ICAgIFFTdHJpbmcgY291bnRlclN0cmluZyA9IFFTdHJpbmc6Om51bWJlcihyZXBhaW50Q291bnQp
OwogCiAgICAgUUZvbnQgZm9udChRU3RyaW5nOjpmcm9tTGF0aW4xKCJNb25vc3BhY2UiKSwgcG9p
bnRTaXplLCBRRm9udDo6Qm9sZCk7CiAgICAgZm9udC5zZXRTdHlsZUhpbnQoUUZvbnQ6OlR5cGVX
cml0ZXIpOwpAQCAtMzI3LDcgKzMzMyw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3UmVw
YWludENvdW50ZXIoaW50IHZhbHVlLCBpbnQgcG9pbnRTaXplLCBjb25zdCBGbG9hdFBvCiAKICAg
ICBRSW1hZ2UgaW1hZ2Uoc2l6ZSwgTmF0aXZlSW1hZ2VRdDo6ZGVmYXVsdEZvcm1hdEZvckFscGhh
RW5hYmxlZEltYWdlcygpKTsKICAgICBRUGFpbnRlciBwYWludGVyKCZpbWFnZSk7Ci0gICAgcGFp
bnRlci5maWxsUmVjdChzb3VyY2VSZWN0LCBRdDo6Ymx1ZSk7IC8vIFNpbmNlIHdlIHdvbid0IHN3
YXAgUitCIGZvciBzcGVlZCwgdGhpcyB3aWxsIHBhaW50IHJlZC4KKyAgICBwYWludGVyLmZpbGxS
ZWN0KHNvdXJjZVJlY3QsIGNvbnZlcnRBQkdSVG9BUkdCKGNvbG9yLnJnYigpKSk7IC8vIFNpbmNl
IHdlIHdvbid0IHN3YXAgUitCIGZvciBzcGVlZCwgdGhpcyB3aWxsIHBhaW50IHRoZSBnaXZlbiBj
b2xvci4KICAgICBwYWludGVyLnNldEZvbnQoZm9udCk7CiAgICAgcGFpbnRlci5zZXRQZW4oUXQ6
OndoaXRlKTsKICAgICBwYWludGVyLmRyYXdUZXh0KDIsIGhlaWdodCAqIDAuODUsIGNvdW50ZXJT
dHJpbmcpOwpAQCAtMzM4LDcgKzM0NCw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3UmVw
YWludENvdW50ZXIoaW50IHZhbHVlLCBpbnQgcG9pbnRTaXplLCBjb25zdCBGbG9hdFBvCiAgICAg
ZHJhd1RleHR1cmUoKnRleHR1cmUsIHRhcmdldFJlY3QsIG1vZGVsVmlld01hdHJpeCwgMS4wZiwg
MCwgQWxsRWRnZXMpOwogCiAjZWxpZiBVU0UoQ0FJUk8pCi0gICAgQ1N0cmluZyBjb3VudGVyU3Ry
aW5nID0gU3RyaW5nOjpudW1iZXIodmFsdWUpLmFzY2lpKCk7CisgICAgQ1N0cmluZyBjb3VudGVy
U3RyaW5nID0gU3RyaW5nOjpudW1iZXIocmVwYWludENvdW50KS5hc2NpaSgpOwogICAgIC8vIGNh
aXJvX3RleHRfZXh0ZW50cygpIHJlcXVpcmVzIGEgY2Fpcm9fdCwgc28gZGltZW5zaW9ucyBuZWVk
IHRvIGJlIGd1ZXNzdGltYXRlZC4KICAgICBpbnQgd2lkdGggPSBjb3VudGVyU3RyaW5nLmxlbmd0
aCgpICogcG9pbnRTaXplICogMS4yOwogICAgIGludCBoZWlnaHQgPSBwb2ludFNpemUgKiAxLjU7
CkBAIC0zNDYsNyArMzUyLDkgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdSZXBhaW50Q291
bnRlcihpbnQgdmFsdWUsIGludCBwb2ludFNpemUsIGNvbnN0IEZsb2F0UG8KICAgICBjYWlyb19z
dXJmYWNlX3QqIHN1cmZhY2UgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZShDQUlST19GT1JN
QVRfQVJHQjMyLCB3aWR0aCwgaGVpZ2h0KTsKICAgICBjYWlyb190KiBjciA9IGNhaXJvX2NyZWF0
ZShzdXJmYWNlKTsKIAotICAgIGNhaXJvX3NldF9zb3VyY2VfcmdiKGNyLCAwLCAwLCAxKTsgLy8g
U2luY2Ugd2Ugd29uJ3Qgc3dhcCBSK0IgZm9yIHNwZWVkLCB0aGlzIHdpbGwgcGFpbnQgcmVkLgor
ICAgIGZsb2F0IHIsIGcsIGIsIGE7CisgICAgY29sb3IuZ2V0UkdCQShyLCBnLCBiLCBhKTsKKyAg
ICBjYWlyb19zZXRfc291cmNlX3JnYmEoY3IsIGIsIGcsIHIsIGEpOyAvLyBTaW5jZSB3ZSB3b24n
dCBzd2FwIFIrQiBmb3Igc3BlZWQsIHRoaXMgd2lsbCBwYWludCB0aGUgZ2l2ZW4gY29sb3IuCiAg
ICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLCAwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKICAgICBjYWlyb19m
aWxsKGNyKTsKIApAQCAtMzcwLDcgKzM3OCw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3
UmVwYWludENvdW50ZXIoaW50IHZhbHVlLCBpbnQgcG9pbnRTaXplLCBjb25zdCBGbG9hdFBvCiAg
ICAgY2Fpcm9fZGVzdHJveShjcik7CiAKICNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsK
KyAgICBVTlVTRURfUEFSQU0ocmVwYWludENvdW50KTsKICAgICBVTlVTRURfUEFSQU0ocG9pbnRT
aXplKTsKICAgICBVTlVTRURfUEFSQU0odGFyZ2V0UG9pbnQpOwogICAgIFVOVVNFRF9QQVJBTSht
b2RlbFZpZXdNYXRyaXgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oCmluZGV4IGFhMTMzMTJmYWFmY2EzMWZk
ZjFkMWM0MTRkMzVjMjdjYWM4MDJjYTIuLmI5MGMwZWQ0ZmMzZDg0MjRjMWI4NjAyZGZmZmFmMTY3
NmYxNGU0YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmgKQEAgLTUxLDggKzUxLDggQEAgcHVibGljOgog
ICAgIHR5cGVkZWYgaW50IEZsYWdzOwogCiAgICAgLy8gVGV4dHVyZU1hcHBlciBpbXBsZW1lbnRh
dGlvbgotICAgIHZpcnR1YWwgdm9pZCBkcmF3Qm9yZGVyKGNvbnN0IENvbG9yJiwgZmxvYXQgYm9y
ZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpIE9WRVJS
SURFOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVwYWludENvdW50ZXIoaW50IHZhbHVlLCBpbnQg
cG9pbnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IG1vZGVsVmlld01hdHJpeCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBkcmF3Qm9yZGVyKGNvbnN0IENvbG9yJiwgZmxvYXQgYm9yZGVyV2lkdGgs
IGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JikgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIGRyYXdSZXBhaW50Q291bnRlcihpbnQgcmVwYWludENvdW50LCBj
b25zdCBDb2xvciYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3VGV4dHVyZShjb25zdCBCaXRtYXBU
ZXh0dXJlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBm
bG9hdCBvcGFjaXR5LCBjb25zdCBCaXRtYXBUZXh0dXJlKiBtYXNrVGV4dHVyZSwgdW5zaWduZWQg
ZXhwb3NlZEVkZ2VzKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1RleHR1cmUoUGxh
dGZvcm0zRE9iamVjdCB0ZXh0dXJlLCBGbGFncywgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUs
IGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFz
a1RleHR1cmUsIHVuc2lnbmVkIGV4cG9zZWRFZGdlcyA9IEFsbEVkZ2VzKTsKICAgICB2aXJ0dWFs
IHZvaWQgZHJhd1NvbGlkQ29sb3IoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmLCBjb25zdCBDb2xvciYpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckltYWdlQnVmZmVyLmNwcAppbmRleCA5MjkwNTNiMTJiNzQwMjU4NGM1NDg3YTM4YWI4MGZjZGIx
YTExMGI4Li42OWZkNzM4ZjU4ZmM5MTQ1MTdiOTlhOTdlNDA3MzM5MTZjMzY3ZGRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckltYWdlQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcApAQCAtMjUsNiArMjUsNyBAQAogI2lm
IFBMQVRGT1JNKFFUKQogI2luY2x1ZGUgIk5hdGl2ZUltYWdlUXQuaCIKICNlbmRpZgorI2luY2x1
ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAKIAogI2lmIFVTRShURVhUVVJFX01BUFBFUikKQEAgLTE2
NCw2ICsxNjUsMTYgQEAgdm9pZCBUZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXI6OmRyYXdTb2xpZENv
bG9yKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgVHJhbnMKICAgICBjb250ZXh0LT5yZXN0
b3JlKCk7CiB9CiAKK3ZvaWQgVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyOjpkcmF3Qm9yZGVyKGNv
bnN0IENvbG9yJiwgZmxvYXQgLyogYm9yZGVyV2lkdGggKi8sIGNvbnN0IEZsb2F0UmVjdCYsIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
Cit2b2lkIFRleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlcjo6ZHJhd1JlcGFpbnRDb3VudGVyKGludCAv
KiByZXBhaW50Q291bnQgKi8sIGNvbnN0IENvbG9yJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiAj
aWYgRU5BQkxFKENTU19GSUxURVJTKQogUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBCaXRtYXBU
ZXh0dXJlSW1hZ2VCdWZmZXI6OmFwcGx5RmlsdGVycyhUZXh0dXJlTWFwcGVyKiwgY29uc3QgQml0
bWFwVGV4dHVyZSYgY29udGVudFRleHR1cmUsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRl
cnMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmgKaW5kZXggOWRlNmQ0Y2Jk
NWViMTdlOTM0ODgwMThhNjJhNzEzMWQ4OTczODRlYi4uNWIyZTk3ODNkNjljMDU4NjM5MjcyYTJi
NjMxYzc2YWUxMDU3M2QzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuaApA
QCAtNTMsMTQgKzUzLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPFRleHR1cmVN
YXBwZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBUZXh0dXJlTWFwcGVySW1hZ2VC
dWZmZXIpOyB9CiAKICAgICAvLyBUZXh0dXJlTWFwcGVyIGltcGxlbWVudGF0aW9uCi0gICAgdmly
dHVhbCB2b2lkIGRyYXdCb3JkZXIoY29uc3QgQ29sb3ImLCBmbG9hdCAvKiBib3JkZXJXaWR0aCAq
LywgY29uc3QgRmxvYXRSZWN0JiAvKiB0YXJnZXRSZWN0ICovLCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkgT1ZFUlJJ
REUKLSAgICB7Ci0gICAgICAgIFVOVVNFRF9QQVJBTShtb2RlbFZpZXdNYXRyaXgpOwotICAgIH07
Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdSZXBhaW50Q291bnRlcihpbnQgLyogdmFsdWUgKi8sIGlu
dCAvKiBwb2ludFNpemUgKi8sIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkgT1ZFUlJJ
REUKLSAgICB7Ci0gICAgICAgIFVOVVNFRF9QQVJBTShtb2RlbFZpZXdNYXRyaXgpOwotICAgIH07
CisgICAgdmlydHVhbCB2b2lkIGRyYXdCb3JkZXIoY29uc3QgQ29sb3ImLCBmbG9hdCBib3JkZXJX
aWR0aCwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVyKGludCByZXBhaW50Q291
bnQsIGNvbnN0IENvbG9yJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdUZXh0dXJlKGNvbnN0IEJp
dG1hcFRleHR1cmUmLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1Rl
eHR1cmUsIHVuc2lnbmVkIGV4cG9zZWRFZGdlcykgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IGRyYXdTb2xpZENvbG9yKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiwgY29uc3QgQ29sb3ImKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5DbGlw
KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgRmxvYXRSZWN0JikgT1ZFUlJJREU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCmluZGV4IDVkZmExODM4ZWQ0YjRjMjE4NDc1MDQz
NDZlZWYwMzY0MzliNTFhOWIuLmM2NGE3NzM0NmY0ZmMxNjExNzFlM2I3ZjdiZjBmMDlkNDBjNTA4
OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCkBAIC0xMjksNiArMTI5LDggQEAgdm9p
ZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50U2VsZihjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRP
cHRpb25zJiBvcHRpb25zKQogCiAgICAgaWYgKG1fc3RhdGUuc29saWRDb2xvci5pc1ZhbGlkKCkg
JiYgIW1fc3RhdGUuY29udGVudHNSZWN0LmlzRW1wdHkoKSkgewogICAgICAgICBvcHRpb25zLnRl
eHR1cmVNYXBwZXItPmRyYXdTb2xpZENvbG9yKG1fc3RhdGUuY29udGVudHNSZWN0LCB0cmFuc2Zv
cm0sIGJsZW5kV2l0aE9wYWNpdHkobV9zdGF0ZS5zb2xpZENvbG9yLCBvcGFjaXR5KSk7CisgICAg
ICAgIGlmIChtX3N0YXRlLnNob3dEZWJ1Z0JvcmRlcnMpCisgICAgICAgICAgICBvcHRpb25zLnRl
eHR1cmVNYXBwZXItPmRyYXdCb3JkZXIobV9zdGF0ZS5kZWJ1Z0JvcmRlckNvbG9yLCBtX3N0YXRl
LmRlYnVnQm9yZGVyV2lkdGgsIGxheWVyUmVjdCgpLCB0cmFuc2Zvcm0pOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC0xMzYsMTEgKzEzOCwxOCBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXll
cjo6cGFpbnRTZWxmKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlvbnMpCiAg
ICAgICAgIEFTU0VSVChtX3N0YXRlLmRyYXdzQ29udGVudCAmJiBtX3N0YXRlLmNvbnRlbnRzVmlz
aWJsZSAmJiAhbV9zdGF0ZS5zaXplLmlzRW1wdHkoKSk7CiAgICAgICAgIEFTU0VSVCghbGF5ZXJS
ZWN0KCkuaXNFbXB0eSgpKTsKICAgICAgICAgbV9iYWNraW5nU3RvcmUtPnBhaW50VG9UZXh0dXJl
TWFwcGVyKG9wdGlvbnMudGV4dHVyZU1hcHBlciwgbGF5ZXJSZWN0KCksIHRyYW5zZm9ybSwgb3Bh
Y2l0eSwgbWFzay5nZXQoKSk7CisgICAgICAgIGlmIChtX3N0YXRlLnNob3dEZWJ1Z0JvcmRlcnMp
CisgICAgICAgICAgICBtX2JhY2tpbmdTdG9yZS0+ZHJhd0JvcmRlcihvcHRpb25zLnRleHR1cmVN
YXBwZXIsIG1fc3RhdGUuZGVidWdCb3JkZXJDb2xvciwgbV9zdGF0ZS5kZWJ1Z0JvcmRlcldpZHRo
LCBsYXllclJlY3QoKSwgdHJhbnNmb3JtKTsKKyAgICAgICAgLy8gRHJhdyB0aGUgcmVwYWludCBj
b3VudCBvZiBvbmx5IGEgYmFja2luZyBzdG9yZS4KKyAgICAgICAgaWYgKG1fc3RhdGUuc2hvd1Jl
cGFpbnRDb3VudGVyKQorICAgICAgICAgICAgbV9iYWNraW5nU3RvcmUtPmRyYXdSZXBhaW50Q291
bnRlcihvcHRpb25zLnRleHR1cmVNYXBwZXIsIG1fc3RhdGUucmVwYWludENvdW50LCBtX3N0YXRl
LmRlYnVnQm9yZGVyQ29sb3IsIGxheWVyUmVjdCgpLCB0cmFuc2Zvcm0pOwogICAgIH0KIAogICAg
IGlmIChtX2NvbnRlbnRzTGF5ZXIpIHsKICAgICAgICAgQVNTRVJUKCFsYXllclJlY3QoKS5pc0Vt
cHR5KCkpOwogICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnBhaW50VG9UZXh0dXJlTWFwcGVyKG9w
dGlvbnMudGV4dHVyZU1hcHBlciwgbV9zdGF0ZS5jb250ZW50c1JlY3QsIHRyYW5zZm9ybSwgb3Bh
Y2l0eSwgbWFzay5nZXQoKSk7CisgICAgICAgIGlmIChtX3N0YXRlLnNob3dEZWJ1Z0JvcmRlcnMp
CisgICAgICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPmRyYXdCb3JkZXIob3B0aW9ucy50ZXh0dXJl
TWFwcGVyLCBtX3N0YXRlLmRlYnVnQm9yZGVyQ29sb3IsIG1fc3RhdGUuZGVidWdCb3JkZXJXaWR0
aCwgbV9zdGF0ZS5jb250ZW50c1JlY3QsIHRyYW5zZm9ybSk7CiAgICAgfQogfQogCkBAIC0zODMs
OCArMzkyLDYgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0
ZUZvclRoaXNMYXllck9ubHkoR3JhcGhpY3NMYXllclRleHQKICAgICBpZiAoY2hhbmdlTWFzayA9
PSBOb0NoYW5nZXMgJiYgZ3JhcGhpY3NMYXllci0+bV9hbmltYXRpb25zLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgZ3JhcGhpY3NMYXllci0+dXBkYXRlRGVidWdJbmRpY2F0b3Jz
KCk7Ci0KICAgICBpZiAoY2hhbmdlTWFzayAmIENoaWxkcmVuQ2hhbmdlKQogICAgICAgICBzZXRD
aGlsZHJlbihncmFwaGljc0xheWVyLT5jaGlsZHJlbigpKTsKIApAQCAtNDAxLDYgKzQwOCw5IEBA
IHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5
ZXJPbmx5KEdyYXBoaWNzTGF5ZXJUZXh0CiAgICAgaWYgKGNoYW5nZU1hc2sgJiBBbmltYXRpb25D
aGFuZ2UpCiAgICAgICAgIG1fYW5pbWF0aW9ucyA9IGdyYXBoaWNzTGF5ZXItPm1fYW5pbWF0aW9u
czsKIAorICAgIGlmIChjaGFuZ2VNYXNrICYgUmVwYWludENvdW50Q2hhbmdlKQorICAgICAgICBt
X3N0YXRlLnJlcGFpbnRDb3VudCA9IGdyYXBoaWNzTGF5ZXItPnJlcGFpbnRDb3VudCgpOworCiAg
ICAgbV9zdGF0ZS5tYXNrTGF5ZXIgPSB0b1RleHR1cmVNYXBwZXJMYXllcihncmFwaGljc0xheWVy
LT5tYXNrTGF5ZXIoKSk7CiAgICAgbV9zdGF0ZS5yZXBsaWNhTGF5ZXIgPSB0b1RleHR1cmVNYXBw
ZXJMYXllcihncmFwaGljc0xheWVyLT5yZXBsaWNhTGF5ZXIoKSk7CiAgICAgbV9zdGF0ZS5wb3Mg
PSBncmFwaGljc0xheWVyLT5wb3NpdGlvbigpOwpAQCAtNDIzLDYgKzQzMywxMSBAQCB2b2lkIFRl
eHR1cmVNYXBwZXJMYXllcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seShH
cmFwaGljc0xheWVyVGV4dAogI2VuZGlmCiAgICAgbV9maXhlZFRvVmlld3BvcnQgPSBncmFwaGlj
c0xheWVyLT5maXhlZFRvVmlld3BvcnQoKTsKIAorICAgIG1fc3RhdGUuc2hvd0RlYnVnQm9yZGVy
cyA9IGdyYXBoaWNzTGF5ZXItPmlzU2hvd2luZ0RlYnVnQm9yZGVyKCk7CisgICAgbV9zdGF0ZS5k
ZWJ1Z0JvcmRlckNvbG9yID0gdG9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcihncmFwaGljc0xh
eWVyKS0+ZGVidWdCb3JkZXJDb2xvcigpOworICAgIG1fc3RhdGUuZGVidWdCb3JkZXJXaWR0aCA9
IHRvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIoZ3JhcGhpY3NMYXllciktPmRlYnVnQm9yZGVy
V2lkdGgoKTsKKyAgICBtX3N0YXRlLnNob3dSZXBhaW50Q291bnRlciA9IGdyYXBoaWNzTGF5ZXIt
PmlzU2hvd2luZ1JlcGFpbnRDb3VudGVyKCk7CisKICAgICBtX2NvbnRlbnRzTGF5ZXIgPSBncmFw
aGljc0xheWVyLT5wbGF0Zm9ybUxheWVyKCk7CiAKICAgICBtX2N1cnJlbnRUcmFuc2Zvcm0uc2V0
UG9zaXRpb24oYWRqdXN0ZWRQb3NpdGlvbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaAppbmRl
eCBmNDFlNTJhOTdjNGIzMjhjNDRjZjY1MGFlZTM0Y2QzMDBhNDY1MzlhLi41NzViYjI3ZWI3YTg3
NGMxODRiNTgxZWQyYmQ0MzVkMTAxNWE4M2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCkBA
IC03MSw3ICs3MSwxMCBAQCBwdWJsaWM6CiAKICAgICAgICAgUmVwbGljYUxheWVyQ2hhbmdlID0g
ICAgICAgICgxTCA8PCAyMSksCiAgICAgICAgIEFuaW1hdGlvbkNoYW5nZSA9ICAgICAgICAgICAo
MUwgPDwgMjIpLAotICAgICAgICBGaWx0ZXJDaGFuZ2UgPSAgICAgICAgICAgICAgKDFMIDw8IDIz
KQorICAgICAgICBGaWx0ZXJDaGFuZ2UgPSAgICAgICAgICAgICAgKDFMIDw8IDIzKSwKKworICAg
ICAgICBEZWJ1Z1Zpc3VhbHNDaGFuZ2UgPSAgICAgICAgKDFMIDw8IDI0KSwKKyAgICAgICAgUmVw
YWludENvdW50Q2hhbmdlID0gICAgICAgICgxTCA8PCAyNSkKICAgICB9OwogCiAgICAgVGV4dHVy
ZU1hcHBlckxheWVyKCkKQEAgLTE3Miw2ICsxNzUsOSBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShD
U1NfRklMVEVSUykKICAgICAgICAgRmlsdGVyT3BlcmF0aW9ucyBmaWx0ZXJzOwogI2VuZGlmCisg
ICAgICAgIENvbG9yIGRlYnVnQm9yZGVyQ29sb3I7CisgICAgICAgIGZsb2F0IGRlYnVnQm9yZGVy
V2lkdGg7CisgICAgICAgIGludCByZXBhaW50Q291bnQ7CiAKICAgICAgICAgYm9vbCBwcmVzZXJ2
ZXMzRCA6IDE7CiAgICAgICAgIGJvb2wgbWFza3NUb0JvdW5kcyA6IDE7CkBAIC0xODAsMTEgKzE4
NiwxNSBAQCBwcml2YXRlOgogICAgICAgICBib29sIGNvbnRlbnRzT3BhcXVlIDogMTsKICAgICAg
ICAgYm9vbCBiYWNrZmFjZVZpc2liaWxpdHkgOiAxOwogICAgICAgICBib29sIHZpc2libGUgOiAx
OworICAgICAgICBib29sIHNob3dEZWJ1Z0JvcmRlcnMgOiAxOworICAgICAgICBib29sIHNob3dS
ZXBhaW50Q291bnRlciA6IDE7CiAKICAgICAgICAgU3RhdGUoKQogICAgICAgICAgICAgOiBvcGFj
aXR5KDEpCiAgICAgICAgICAgICAsIG1hc2tMYXllcigwKQogICAgICAgICAgICAgLCByZXBsaWNh
TGF5ZXIoMCkKKyAgICAgICAgICAgICwgZGVidWdCb3JkZXJXaWR0aCgwKQorICAgICAgICAgICAg
LCByZXBhaW50Q291bnQoMCkKICAgICAgICAgICAgICwgcHJlc2VydmVzM0QoZmFsc2UpCiAgICAg
ICAgICAgICAsIG1hc2tzVG9Cb3VuZHMoZmFsc2UpCiAgICAgICAgICAgICAsIGRyYXdzQ29udGVu
dChmYWxzZSkKQEAgLTE5Miw2ICsyMDIsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgLCBjb250
ZW50c09wYXF1ZShmYWxzZSkKICAgICAgICAgICAgICwgYmFja2ZhY2VWaXNpYmlsaXR5KGZhbHNl
KQogICAgICAgICAgICAgLCB2aXNpYmxlKHRydWUpCisgICAgICAgICAgICAsIHNob3dEZWJ1Z0Jv
cmRlcnMoZmFsc2UpCisgICAgICAgICAgICAsIHNob3dSZXBhaW50Q291bnRlcihmYWxzZSkKICAg
ICAgICAgewogICAgICAgICB9CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyLmgKaW5kZXggMzhhZjAzZTg5YjYyNDgxYWJhZjMyMDk4YzNhODE3YWI0ZDAwMGMxZS4u
ZjQ4Nzk1MjY3NjgwMTkwODVjYmRlZjg5ZTY2ZWU0N2RlZjgxMDExNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgKQEAgLTI0LDE4ICsyNCwyMCBAQAogI2luY2x1ZGUg
IkdyYXBoaWNzU3VyZmFjZS5oIgogI2VuZGlmCiAKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyLmgi
CiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBUZXh0dXJlTWFwcGVyOwotY2xhc3MgQml0bWFwVGV4dHVyZTsKLQogY2xhc3Mg
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIgewogcHVibGljOgogICAgIHZpcnR1YWwgflRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0
dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwg
ZmxvYXQgb3BhY2l0eSA9IDEuMCwgQml0bWFwVGV4dHVyZSogbWFzayA9IDApID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgc3dhcEJ1ZmZlcnMoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0JvcmRl
cihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBDb2xvciYgY29sb3IsIGZsb2F0
IGJvcmRlcldpZHRoLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0pCisgICAgeworICAgICAgICB0ZXh0dXJlTWFwcGVyLT5k
cmF3Qm9yZGVyKGNvbG9yLCBib3JkZXJXaWR0aCwgdGFyZ2V0UmVjdCwgdHJhbnNmb3JtKTsKKyAg
ICB9CiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCiAgICAgdmlydHVhbCBJbnRTaXplIHBsYXRm
b3JtTGF5ZXJTaXplKCkgY29uc3QgeyByZXR1cm4gSW50U2l6ZSgpOyB9CiAgICAgdmlydHVhbCB1
aW50MzJfdCBjb3B5VG9HcmFwaGljc1N1cmZhY2UoKSB7IHJldHVybiAwOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a192aWV3LmNwcAppbmRleCA1OTQ1MWE5NWU0ZmFmY2E2NTUzMTcyMjRkOTUzOWY2MWU1
NDIwMzExLi5hMzdmZjNhZDFlMTA3NTY1ZDJmMWQxODJkMGI2NjQ0ZDg4NDliOGQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKQEAgLTgzOSw2ICs4MzksOSBAQCBzdGF0aWMgRXdrX1Zp
ZXdfUHJpdmF0ZV9EYXRhKiBfZXdrX3ZpZXdfcHJpdl9uZXcoRXdrX1ZpZXdfU21hcnRfRGF0YSog
c21hcnREYXRhKQogICAgIHByaXYtPnBhZ2VTZXR0aW5ncy0+c2V0SW50ZXJhY3RpdmVGb3JtVmFs
aWRhdGlvbkVuYWJsZWQodHJ1ZSk7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQog
ICAgIHByaXYtPnBhZ2VTZXR0aW5ncy0+c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQo
ZmFsc2UpOworICAgIGJvb2wgc2hvd0RlYnVnVmlzdWFscyA9IFN0cmluZyhnZXRlbnYoIldFQktJ
VF9TSE9XX0NPTVBPU0lUSU5HX0RFQlVHX1ZJU1VBTFMiKSkgPT0gIjEiOworICAgIHByaXYtPnBh
Z2VTZXR0aW5ncy0+c2V0U2hvd0RlYnVnQm9yZGVycyhzaG93RGVidWdWaXN1YWxzKTsKKyAgICBw
cml2LT5wYWdlU2V0dGluZ3MtPnNldFNob3dSZXBhaW50Q291bnRlcihzaG93RGVidWdWaXN1YWxz
KTsKICNlbmRpZgogCiAgICAgdXJsID0gcHJpdi0+cGFnZVNldHRpbmdzLT51c2VyU3R5bGVTaGVl
dExvY2F0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2Vidmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAK
aW5kZXggMjkzMTBkNGU5ZmU0ODE0NTcwM2Q5OTRmNGQxZTlkMDc2YTQyMDhlZS4uMjhkZGYzMWQ0
MDE2MTM0MDYyYzFhMzhjNzQ4Mjg1NzVhZmIzODY5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJ2aWV3LmNwcApAQCAtMzQzNSw2ICszNDM1LDkgQEAgc3RhdGljIHZvaWQg
d2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aW5ncyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQog
CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIGNvcmVTZXR0aW5ncy0+c2V0
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoc2V0dGluZ3NQcml2YXRlLT5lbmFibGVBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nKTsKKyAgICBib29sIHNob3dEZWJ1Z1Zpc3VhbHMgPSBTdHJpbmco
Z2V0ZW52KCJXRUJLSVRfU0hPV19DT01QT1NJVElOR19ERUJVR19WSVNVQUxTIikpID09ICIxIjsK
KyAgICBjb3JlU2V0dGluZ3MtPnNldFNob3dEZWJ1Z0JvcmRlcnMoc2hvd0RlYnVnVmlzdWFscyk7
CisgICAgY29yZVNldHRpbmdzLT5zZXRTaG93UmVwYWludENvdW50ZXIoc2hvd0RlYnVnVmlzdWFs
cyk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdl
YnNldHRpbmdzLmNwcAppbmRleCBmOGU0OTk4MzU4YWZiZWNiNzhhNWIwMzA2MGFkY2I2NTRkZDBl
MTRlLi5mMDc1MjVjNDEwNjI4ZTJjYjA5YWFjODRhODQwMjVkMWQ3ZmRhODk5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAKQEAgLTE1MCw2ICsxNTAsMTAgQEAgdm9pZCBRV2Vi
U2V0dGluZ3NQcml2YXRlOjphcHBseSgpCiAgICAgICAgIHNldHRpbmdzLT5zZXRBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nRm9yQW5pbWF0aW9uRW5hYmxlZCh2YWx1ZSk7CiAgICAgICAgIHNldHRpbmdz
LT5zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yVmlkZW9FbmFibGVkKGZhbHNlKTsKICAgICAg
ICAgc2V0dGluZ3MtPnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JQbHVnaW5zRW5hYmxlZChm
YWxzZSk7CisKKyAgICAgICAgYm9vbCBzaG93RGVidWdWaXN1YWxzID0gcWdldGVudigiUVRfV0VC
S0lUX1NIT1dfQ09NUE9TSVRJTkdfREVCVUdfVklTVUFMUyIpID09ICIxIjsKKyAgICAgICAgc2V0
dGluZ3MtPnNldFNob3dEZWJ1Z0JvcmRlcnMoc2hvd0RlYnVnVmlzdWFscyk7CisgICAgICAgIHNl
dHRpbmdzLT5zZXRTaG93UmVwYWludENvdW50ZXIoc2hvd0RlYnVnVmlzdWFscyk7CiAjZW5kaWYK
ICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgICAgIHZhbHVlID0gYXR0cmlidXRlcy52YWx1ZShRV2Vi
U2V0dGluZ3M6OldlYkdMRW5hYmxlZCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJJbmZvLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVySW5mby5oCmlu
ZGV4IDY1MjA1NmRkODEwNDIzNjQwZmNmNjk2OTA1YTdkZTczN2Q2ZDRiOWUuLmNmMWYwM2VkYmJi
YjJlNTEyZjY5ZWJhYjljM2YyMzBlYzRhMWYzMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJJbmZvLmgKKysrIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXll
ckluZm8uaApAQCAtNDMsNiArNDMsNyBAQCBzdHJ1Y3QgQ29vcmRpbmF0ZWRMYXllckluZm8gewog
ICAgICAgICAsIG1hc2soSW52YWxpZENvb3JkaW5hdGVkTGF5ZXJJRCkKICAgICAgICAgLCBpbWFn
ZUlEKEludmFsaWRDb29yZGluYXRlZEltYWdlQmFja2luZ0lEKQogICAgICAgICAsIG9wYWNpdHko
MCkKKyAgICAgICAgLCBkZWJ1Z0JvcmRlcldpZHRoKDApCiAgICAgICAgICwgZmxhZ3MoMCkgeyB9
CiAKICAgICBDb29yZGluYXRlZExheWVySUQgcmVwbGljYTsKQEAgLTU3LDYgKzU4LDggQEAgc3Ry
dWN0IENvb3JkaW5hdGVkTGF5ZXJJbmZvIHsKICAgICBXZWJDb3JlOjpJbnRSZWN0IGNvbnRlbnRz
UmVjdDsKICAgICBmbG9hdCBvcGFjaXR5OwogICAgIFdlYkNvcmU6OkNvbG9yIHNvbGlkQ29sb3I7
CisgICAgV2ViQ29yZTo6Q29sb3IgZGVidWdCb3JkZXJDb2xvcjsKKyAgICBmbG9hdCBkZWJ1Z0Jv
cmRlcldpZHRoOwogCiAgICAgdW5pb24gewogICAgICAgICBzdHJ1Y3QgewpAQCAtNjgsNiArNzEs
OCBAQCBzdHJ1Y3QgQ29vcmRpbmF0ZWRMYXllckluZm8gewogICAgICAgICAgICAgYm9vbCBwcmVz
ZXJ2ZXMzRCA6IDE7CiAgICAgICAgICAgICBib29sIGlzUm9vdExheWVyOiAxOwogICAgICAgICAg
ICAgYm9vbCBmaXhlZFRvVmlld3BvcnQgOiAxOworICAgICAgICAgICAgYm9vbCBzaG93RGVidWdC
b3JkZXJzIDogMTsKKyAgICAgICAgICAgIGJvb2wgc2hvd1JlcGFpbnRDb3VudGVyIDogMTsKICAg
ICAgICAgfTsKICAgICAgICAgdW5zaWduZWQgZmxhZ3M7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFj
a2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcAppbmRleCA0YTdiYjEwODZlZTdhODY3YjJk
M2ZkNjgwYzVhMzdkYjA1YjhiN2Q4Li5lOGZkNmQ5NTBmMTg0MDA5YTBjZDNkZWUwYTE4NWU5YjM2
YmViZjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3Bw
CkBAIC04OCw3ICs4OCw2IEBAIHZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnVwZGF0ZVRp
bGUodWludDMyX3QgaWQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsCiB7CiAgICAgSGFzaE1h
cDx1aW50MzJfdCwgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlPjo6aXRlcmF0b3IgaXQgPSBt
X3RpbGVzLmZpbmQoaWQpOwogICAgIEFTU0VSVChpdCAhPSBtX3RpbGVzLmVuZCgpKTsKLSAgICBp
dC0+dmFsdWUuaW5jcmVtZW50UmVwYWludENvdW50KCk7CiAgICAgaXQtPnZhbHVlLnNldEJhY2tC
dWZmZXIodGlsZVJlY3QsIHNvdXJjZVJlY3QsIGJhY2tCdWZmZXIsIG9mZnNldCk7CiB9CiAKQEAg
LTEwOSwyOCArMTA4LDEwIEBAIHZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnNldFNpemUo
Y29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplKQogICAgIG1fc2l6ZSA9IHNpemU7CiB9CiAK
LXN0YXRpYyBib29sIHNob3VsZFNob3dUaWxlRGVidWdWaXN1YWxzKCkKLXsKLSNpZiBQTEFURk9S
TShRVCkKLSAgICByZXR1cm4gKHFnZXRlbnYoIlFUX1dFQktJVF9TSE9XX0NPTVBPU0lUSU5HX0RF
QlVHX1ZJU1VBTFMiKSA9PSAiMSIpOwotI2VsaWYgVVNFKENBSVJPKQotICAgIHJldHVybiAoU3Ry
aW5nKGdldGVudigiV0VCS0lUX1NIT1dfQ09NUE9TSVRJTkdfREVCVUdfVklTVUFMUyIpKSA9PSAi
MSIpOwotI2VuZGlmCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCiB2b2lkIENvb3JkaW5hdGVkQmFj
a2luZ1N0b3JlOjpwYWludFRpbGVzVG9UZXh0dXJlTWFwcGVyKFZlY3RvcjxUZXh0dXJlTWFwcGVy
VGlsZSo+JiB0aWxlcywgVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgQml0bWFwVGV4dHVyZSog
bWFzaywgY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgdGlsZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgVGV4dHVyZU1hcHBlclRpbGUqIHRpbGUg
PSB0aWxlc1tpXTsKLSAgICAgICAgdGlsZS0+cGFpbnQodGV4dHVyZU1hcHBlciwgdHJhbnNmb3Jt
LCBvcGFjaXR5LCBtYXNrLCBjYWxjdWxhdGVFeHBvc2VkVGlsZUVkZ2VzKHJlY3QsIHRpbGUtPnJl
Y3QoKSkpOwotICAgICAgICBzdGF0aWMgYm9vbCBzaG91bGREZWJ1ZyA9IHNob3VsZFNob3dUaWxl
RGVidWdWaXN1YWxzKCk7Ci0gICAgICAgIGlmICghc2hvdWxkRGVidWcpCi0gICAgICAgICAgICBj
b250aW51ZTsKLQotICAgICAgICB0ZXh0dXJlTWFwcGVyLT5kcmF3Qm9yZGVyKENvbG9yKDB4RkYs
IDAsIDApLCAyLCB0aWxlLT5yZWN0KCksIHRyYW5zZm9ybSk7Ci0gICAgICAgIHRleHR1cmVNYXBw
ZXItPmRyYXdSZXBhaW50Q291bnRlcihzdGF0aWNfY2FzdDxDb29yZGluYXRlZEJhY2tpbmdTdG9y
ZVRpbGUqPih0aWxlKS0+cmVwYWludENvdW50KCksIDgsIHRpbGUtPnJlY3QoKS5sb2NhdGlvbigp
LCB0cmFuc2Zvcm0pOwotICAgIH0KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRpbGVzLnNp
emUoKTsgKytpKQorICAgICAgICB0aWxlc1tpXS0+cGFpbnQodGV4dHVyZU1hcHBlciwgdHJhbnNm
b3JtLCBvcGFjaXR5LCBtYXNrLCBjYWxjdWxhdGVFeHBvc2VkVGlsZUVkZ2VzKHJlY3QsIHRpbGVz
W2ldLT5yZWN0KCkpKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6cGFpbnRU
b1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRS
ZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBm
bG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKQpAQCAtMTc0LDYgKzE1NSwyOCBAQCB2
b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJl
TWFwcGVyKiB0ZXh0dXJlTWFwcGVyLAogICAgIHBhaW50VGlsZXNUb1RleHR1cmVNYXBwZXIodGls
ZXNUb1BhaW50LCB0ZXh0dXJlTWFwcGVyLCBhZGp1c3RlZFRyYW5zZm9ybSwgb3BhY2l0eSwgbWFz
aywgcmVjdE9uQ29udGVudHMpOwogfQogCit2b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpk
cmF3Qm9yZGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IENvbG9yJiBib3Jk
ZXJDb2xvciwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSkKK3sKKyAgICBGbG9hdFJlY3Qg
cmVjdE9uQ29udGVudHMoRmxvYXRQb2ludDo6emVybygpLCBtX3NpemUpOworICAgIFRyYW5zZm9y
bWF0aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3JtID0gdHJhbnNmb3JtOworICAgIGFkanVzdGVk
VHJhbnNmb3JtLm11bHRpcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4OjpyZWN0VG9SZWN0KHJlY3RP
bkNvbnRlbnRzLCB0YXJnZXRSZWN0KSk7CisKKyAgICBIYXNoTWFwPHVpbnQzMl90LCBDb29yZGlu
YXRlZEJhY2tpbmdTdG9yZVRpbGU+OjppdGVyYXRvciBlbmQgPSBtX3RpbGVzLmVuZCgpOworICAg
IGZvciAoSGFzaE1hcDx1aW50MzJfdCwgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlPjo6aXRl
cmF0b3IgaXQgPSBtX3RpbGVzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgdGV4
dHVyZU1hcHBlci0+ZHJhd0JvcmRlcihib3JkZXJDb2xvciwgYm9yZGVyV2lkdGgsIGl0LT52YWx1
ZS5yZWN0KCksIGFkanVzdGVkVHJhbnNmb3JtKTsKK30KKwordm9pZCBDb29yZGluYXRlZEJhY2tp
bmdTdG9yZTo6ZHJhd1JlcGFpbnRDb3VudGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIs
IGludCByZXBhaW50Q291bnQsIGNvbnN0IENvbG9yJiBib3JkZXJDb2xvciwgY29uc3QgRmxvYXRS
ZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKQor
eworICAgIEZsb2F0UmVjdCByZWN0T25Db250ZW50cyhGbG9hdFBvaW50Ojp6ZXJvKCksIG1fc2l6
ZSk7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggYWRqdXN0ZWRUcmFuc2Zvcm0gPSB0cmFuc2Zv
cm07CisgICAgYWRqdXN0ZWRUcmFuc2Zvcm0ubXVsdGlwbHkoVHJhbnNmb3JtYXRpb25NYXRyaXg6
OnJlY3RUb1JlY3QocmVjdE9uQ29udGVudHMsIHRhcmdldFJlY3QpKTsKKworICAgIEhhc2hNYXA8
dWludDMyX3QsIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZT46Oml0ZXJhdG9yIGVuZCA9IG1f
dGlsZXMuZW5kKCk7CisgICAgZm9yIChIYXNoTWFwPHVpbnQzMl90LCBDb29yZGluYXRlZEJhY2tp
bmdTdG9yZVRpbGU+OjppdGVyYXRvciBpdCA9IG1fdGlsZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KQorICAgICAgICB0ZXh0dXJlTWFwcGVyLT5kcmF3UmVwYWludENvdW50ZXIocmVwYWludENv
dW50LCBib3JkZXJDb2xvciwgaXQtPnZhbHVlLnJlY3QoKS5sb2NhdGlvbigpLCBhZGp1c3RlZFRy
YW5zZm9ybSk7Cit9CisKIHZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OmNvbW1pdFRpbGVP
cGVyYXRpb25zKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIpCiB7CiAgICAgSGFzaFNldDx1
aW50MzJfdD46Oml0ZXJhdG9yIHRpbGVzVG9SZW1vdmVFbmQgPSBtX3RpbGVzVG9SZW1vdmUuZW5k
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuaAppbmRleCBhZTVh
ZjhkNGZhMmZjOWViZDIxMTk3MjdmY2FkZDg1OTYyMzMwZjk5Li5kYzM5NzZjMDUwMzMzNTk2ZmFk
MzY0NDIyN2VjNTljYjRhMDNiNGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFj
a2luZ1N0b3JlLmgKQEAgLTM2LDEzICszNiwxMCBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgQ29v
cmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlKGZsb2F0IHNjYWxlID0gMSkKICAgICAgICAgOiBUZXh0
dXJlTWFwcGVyVGlsZShXZWJDb3JlOjpGbG9hdFJlY3QoKSkKICAgICAgICAgLCBtX3NjYWxlKHNj
YWxlKQotICAgICAgICAsIG1fcmVwYWludENvdW50KDApCiAgICAgewogICAgIH0KIAogICAgIGlu
bGluZSBmbG9hdCBzY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NhbGU7IH0KLSAgICBpbmxpbmUg
dm9pZCBpbmNyZW1lbnRSZXBhaW50Q291bnQoKSB7ICsrbV9yZXBhaW50Q291bnQ7IH0KLSAgICBp
bmxpbmUgaW50IHJlcGFpbnRDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVwYWludENvdW50OyB9
CiAgICAgdm9pZCBzd2FwQnVmZmVycyhXZWJDb3JlOjpUZXh0dXJlTWFwcGVyKik7CiAgICAgdm9p
ZCBzZXRCYWNrQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiwgUGFzc1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IGJ1ZmZlciwgY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmKTsKIApAQCAtNTIsNyArNDksNiBAQCBwcml2YXRlOgogICAgIFdlYkNv
cmU6OkludFJlY3QgbV90aWxlUmVjdDsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBtX3N1cmZhY2VP
ZmZzZXQ7CiAgICAgZmxvYXQgbV9zY2FsZTsKLSAgICBpbnQgbV9yZXBhaW50Q291bnQ7CiB9Owog
CiBjbGFzcyBDb29yZGluYXRlZEJhY2tpbmdTdG9yZSA6IHB1YmxpYyBXZWJDb3JlOjpUZXh0dXJl
TWFwcGVyQmFja2luZ1N0b3JlIHsKQEAgLTY2LDYgKzYyLDggQEAgcHVibGljOgogICAgIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSgpIGNvbnN0OwogICAgIHZvaWQg
c2V0U2l6ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRUb1RleHR1cmVNYXBwZXIoV2ViQ29yZTo6VGV4dHVyZU1hcHBlciosIGNvbnN0IFdlYkNvcmU6
OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQs
IFdlYkNvcmU6OkJpdG1hcFRleHR1cmUqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0JvcmRlcihX
ZWJDb3JlOjpUZXh0dXJlTWFwcGVyKiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBmbG9hdCBib3Jk
ZXJXaWR0aCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6VHJhbnNm
b3JtYXRpb25NYXRyaXgmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlcGFpbnRD
b3VudGVyKFdlYkNvcmU6OlRleHR1cmVNYXBwZXIqLCBpbnQgcmVwYWludENvdW50LCBjb25zdCBX
ZWJDb3JlOjpDb2xvciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6
OlRyYW5zZm9ybWF0aW9uTWF0cml4JikgT1ZFUlJJREU7CiAKIHByaXZhdGU6CiAgICAgQ29vcmRp
bmF0ZWRCYWNraW5nU3RvcmUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0UHJveHkuY3BwCmluZGV4IGJhYThmNjUyM2RlYmZkZWJiYzRlNTIyYjQ3NWUx
NGNjMThmZDJlYjUuLmVmNWU0NWZhOWJjMjM3MDE0NWNjY2QxZGNmODhjNmI0MDU4YWE5YTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5j
cHAKQEAgLTI0Miw2ICsyNDIsMTEgQEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94
eTo6ZGVzdHJveUNhbnZhcyhDb29yZGluYXRlZExheWVySUQgaWQpCiB9CiAjZW5kaWYKIAordm9p
ZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6c2V0UmVwYWludENvdW50KENvb3JkaW5h
dGVkTGF5ZXJJRCBpZCwgaW50IHZhbHVlKQoreworICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQoJkxh
eWVyVHJlZVJlbmRlcmVyOjpzZXRSZXBhaW50Q291bnQsIG1fcmVuZGVyZXIuZ2V0KCksIGlkLCB2
YWx1ZSkpOworfQorCiB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpwdXJnZUJh
Y2tpbmdTdG9yZXMoKQogewogICAgIG1fc3VyZmFjZXMuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oCmluZGV4IDc1OTFiODQ4NWQz
OTg4NmVkN2VkMmNkMDVkMTE2MTNmZTY3ZmFjZDMuLmY5Y2ExOTJjMmIwNDMyMjU5Zjg4YzliYjVl
Y2UzZTQ1YTNjOGE2NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0UHJveHkuaApAQCAtODQsNiArODQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzeW5j
Q2FudmFzKENvb3JkaW5hdGVkTGF5ZXJJRCwgdWludDMyX3QgZnJvbnRCdWZmZXIpOwogICAgIHZv
aWQgZGVzdHJveUNhbnZhcyhDb29yZGluYXRlZExheWVySUQpOwogI2VuZGlmCisgICAgdm9pZCBz
ZXRSZXBhaW50Q291bnQoQ29vcmRpbmF0ZWRMYXllcklELCBpbnQgdmFsdWUpOwogICAgIHZvaWQg
cHVyZ2VCYWNraW5nU3RvcmVzKCk7CiAgICAgTGF5ZXJUcmVlUmVuZGVyZXIqIGxheWVyVHJlZVJl
bmRlcmVyKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJlci5nZXQoKTsgfQogICAgIHZvaWQgc2V0
TGF5ZXJBbmltYXRpb25zKENvb3JkaW5hdGVkTGF5ZXJJRCwgY29uc3QgV2ViQ29yZTo6R3JhcGhp
Y3NMYXllckFuaW1hdGlvbnMmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5Lm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkubWVzc2FnZXMuaW4KaW5kZXggMTM3ZGFkODA3NTAw
ZjU1ZTU5ZDI2YzI3YzFkZWRiYTQ5YzU1MDhhMC4uMjY4ZWYxY2Y5NzFmNzg4ZjNkYTdjMTljYzRj
MTcyYmY0ZjY4MzZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0UHJveHkubWVzc2FnZXMuaW4KQEAgLTU1LDYgKzU1LDggQEAgbWVz
c2FnZXMgLT4gQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkgewogICAgIERlc3Ryb3lDYW52
YXModWludDMyX3QgaWQpCiAjZW5kaWYKIAorICAgIFNldFJlcGFpbnRDb3VudCh1aW50MzJfdCBs
YXllcklELCBpbnQgdmFsdWUpCisKICAgICBTZXRCYWNrZ3JvdW5kQ29sb3IoV2ViQ29yZTo6Q29s
b3IgY29sb3IpCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcApp
bmRleCA2ZTk3MzAyMTY2MmI0MGQzNmEyODRjM2ZkMWQwNDlhYjY2YTI1OTk2Li5jMWU3MjhlNGUw
M2I5MTQ4ZjVkODc0NjNmMWQ1ZjczMmVkNDAxZGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVl
UmVuZGVyZXIuY3BwCkBAIC0yNTUsNiArMjU1LDEyIEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6
OmRlc3Ryb3lDYW52YXMoQ29vcmRpbmF0ZWRMYXllcklEIGlkKQogfQogI2VuZGlmCiAKK3ZvaWQg
TGF5ZXJUcmVlUmVuZGVyZXI6OnNldFJlcGFpbnRDb3VudChDb29yZGluYXRlZExheWVySUQgaWQs
IGludCB2YWx1ZSkKK3sKKyAgICBHcmFwaGljc0xheWVyKiBsYXllciA9IGxheWVyQnlJRChpZCk7
CisgICAgdG9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcihsYXllciktPnNldFJlcGFpbnRDb3Vu
dCh2YWx1ZSk7Cit9CisKIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnNldExheWVyQ2hpbGRyZW4o
Q29vcmRpbmF0ZWRMYXllcklEIGlkLCBjb25zdCBWZWN0b3I8Q29vcmRpbmF0ZWRMYXllcklEPiYg
Y2hpbGRJRHMpCiB7CiAgICAgR3JhcGhpY3NMYXllciogbGF5ZXIgPSBsYXllckJ5SUQoaWQpOwpA
QCAtMzMzLDYgKzMzOSw5IEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnNldExheWVyU3RhdGUo
Q29vcmRpbmF0ZWRMYXllcklEIGlkLCBjb25zdCBDb29yZGluYXRlZExhCiAgICAgbGF5ZXItPnNl
dERyYXdzQ29udGVudChsYXllckluZm8uZHJhd3NDb250ZW50KTsKICAgICBsYXllci0+c2V0Q29u
dGVudHNWaXNpYmxlKGxheWVySW5mby5jb250ZW50c1Zpc2libGUpOwogICAgIHRvR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXIobGF5ZXIpLT5zZXRGaXhlZFRvVmlld3BvcnQobGF5ZXJJbmZvLmZp
eGVkVG9WaWV3cG9ydCk7CisgICAgbGF5ZXItPnNldFNob3dEZWJ1Z0JvcmRlcihsYXllckluZm8u
c2hvd0RlYnVnQm9yZGVycyk7CisgICAgbGF5ZXItPnNldERlYnVnQm9yZGVyKGxheWVySW5mby5k
ZWJ1Z0JvcmRlckNvbG9yLCBsYXllckluZm8uZGVidWdCb3JkZXJXaWR0aCk7CisgICAgbGF5ZXIt
PnNldFNob3dSZXBhaW50Q291bnRlcihsYXllckluZm8uc2hvd1JlcGFpbnRDb3VudGVyKTsKIAog
ICAgIGlmIChsYXllckluZm8uZml4ZWRUb1ZpZXdwb3J0KQogICAgICAgICBtX2ZpeGVkTGF5ZXJz
LmFkZChpZCwgbGF5ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmgKaW5kZXggNTNl
Y2JlMzk0OTgxODk5ZDJhYmJlMGYyMWQ0NDQzNDQyMzkzNjQ4OC4uMWE5NTk3ZmViMzA0YjY4M2E2
ODczOTU4ZjVhNDQ3NTA5Y2RjOTUyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5o
CkBAIC03Nyw2ICs3Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN5bmNDYW52YXMoQ29vcmRpbmF0
ZWRMYXllcklELCB1aW50MzJfdCBmcm9udEJ1ZmZlcik7CiAgICAgdm9pZCBkZXN0cm95Q2FudmFz
KENvb3JkaW5hdGVkTGF5ZXJJRCk7CiAjZW5kaWYKKyAgICB2b2lkIHNldFJlcGFpbnRDb3VudChD
b29yZGluYXRlZExheWVySUQsIGludCB2YWx1ZSk7CiAKICAgICB2b2lkIGRldGFjaCgpOwogICAg
IHZvaWQgYXBwZW5kVXBkYXRlKGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4mKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCmlu
ZGV4IDVmMjY2MmVmMDkxOGIzYWE5MjE0MGE0ODQ1MmE1NTU4MmY1N2JkMzkuLmUyMTI5MDc5ZTg3
OTUwMDgwZDM4MzVhNjU2M2NlNjlhMDg4Y2ZlYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApAQCAtMzcxLDYgKzM3
MSwyNiBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNUb1NvbGlk
Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogICAgIGRpZENoYW5nZUxheWVyU3RhdGUoKTsKIH0K
IAordm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldFNob3dEZWJ1Z0JvcmRlcihib29s
IHNob3cpCit7CisgICAgaWYgKGlzU2hvd2luZ0RlYnVnQm9yZGVyKCkgPT0gc2hvdykKKyAgICAg
ICAgcmV0dXJuOworCisgICAgR3JhcGhpY3NMYXllcjo6c2V0U2hvd0RlYnVnQm9yZGVyKHNob3cp
OworCisgICAgZGlkQ2hhbmdlTGF5ZXJTdGF0ZSgpOworfQorCit2b2lkIENvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllcjo6c2V0U2hvd1JlcGFpbnRDb3VudGVyKGJvb2wgc2hvdykKK3sKKyAgICBpZiAo
aXNTaG93aW5nUmVwYWludENvdW50ZXIoKSA9PSBzaG93KQorICAgICAgICByZXR1cm47CisKKyAg
ICBHcmFwaGljc0xheWVyOjpzZXRTaG93UmVwYWludENvdW50ZXIoc2hvdyk7CisKKyAgICBkaWRD
aGFuZ2VMYXllclN0YXRlKCk7Cit9CisKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpz
ZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqIGltYWdlKQogewogICAgIE5hdGl2ZUltYWdlUHRyIG5l
d05hdGl2ZUltYWdlUHRyID0gaW1hZ2UgPyBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKSA6IDA7CkBAIC01NTAsOSArNTcwLDIzIEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyOjpzeW5jTGF5ZXJTdGF0ZSgpCiAgICAgbV9sYXllckluZm8ucG9zID0gbV9hZGp1c3RlZFBv
c2l0aW9uOwogICAgIG1fbGF5ZXJJbmZvLnNpemUgPSBtX2FkanVzdGVkU2l6ZTsKIAorICAgIG1f
bGF5ZXJJbmZvLnNob3dEZWJ1Z0JvcmRlcnMgPSBpc1Nob3dpbmdEZWJ1Z0JvcmRlcigpOworICAg
IGlmIChtX2xheWVySW5mby5zaG93RGVidWdCb3JkZXJzKSB7CisgICAgICAgIG1fdXNpbmdUaWxl
ZExheWVyID0gc2hvdWxkSGF2ZUJhY2tpbmdTdG9yZSgpOworICAgICAgICB1cGRhdGVEZWJ1Z0lu
ZGljYXRvcnMoKTsKKyAgICB9CisgICAgbV9sYXllckluZm8uc2hvd1JlcGFpbnRDb3VudGVyID0g
aXNTaG93aW5nUmVwYWludENvdW50ZXIoKTsKKwogICAgIG1fY29vcmRpbmF0b3ItPnN5bmNMYXll
clN0YXRlKG1faWQsIG1fbGF5ZXJJbmZvKTsKIH0KIAordm9pZCBDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXI6OnNldERlYnVnQm9yZGVyKGNvbnN0IENvbG9yJiBjb2xvciwgZmxvYXQgd2lkdGgpCit7
CisgICAgQVNTRVJUKG1fbGF5ZXJJbmZvLnNob3dEZWJ1Z0JvcmRlcnMpOworICAgIG1fbGF5ZXJJ
bmZvLmRlYnVnQm9yZGVyQ29sb3IgPSBjb2xvcjsKKyAgICBtX2xheWVySW5mby5kZWJ1Z0JvcmRl
cldpZHRoID0gd2lkdGg7Cit9CisKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzeW5j
QW5pbWF0aW9ucygpCiB7CiAgICAgaWYgKCFtX3Nob3VsZFN5bmNBbmltYXRpb25zKQpAQCAtNjk4
LDggKzczMiwxMCBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dGlsZWRCYWNraW5n
U3RvcmVQYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsCiAgICAgcGFpbnRHcmFwaGljc0xh
eWVyQ29udGVudHMoKmNvbnRleHQsIHJlY3QpOwogfQogCi12b2lkIENvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcjo6dGlsZWRCYWNraW5nU3RvcmVQYWludEVuZChjb25zdCBWZWN0b3I8SW50UmVjdD4m
IC8qIHVwZGF0ZWRSZWN0cyAqLykKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp0aWxl
ZEJhY2tpbmdTdG9yZVBhaW50RW5kKGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgdXBkYXRlZFJlY3Rz
KQogeworICAgIGlmIChpc1Nob3dpbmdSZXBhaW50Q291bnRlcigpICYmICF1cGRhdGVkUmVjdHMu
aXNFbXB0eSgpKQorICAgICAgICBtX2Nvb3JkaW5hdG9yLT5zZXRSZXBhaW50Q291bnQoaWQoKSwg
aW5jcmVtZW50UmVwYWludENvdW50KCkpOwogfQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcjo6dGlsZWRCYWNraW5nU3RvcmVIYXNQZW5kaW5nVGlsZUNyZWF0aW9uKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKaW5k
ZXggNmM0MzU4NWM3MGM4ZTAzMDY1ZTRkY2FhMjdlNGYwZGEyZmEzNjk0Ni4uMmI3NzUwY2FkZTYw
ZWZlMGU2ZDQxMDY5NDU0NTM5MGExODY1MWY5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKQEAgLTcxLDYgKzcxLDggQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95Q2FudmFzKENvb3JkaW5hdGVkTGF5ZXJJ
RCkgPSAwOwogI2VuZGlmCiAKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UmVwYWludENvdW50KENvb3Jk
aW5hdGVkTGF5ZXJJRCwgaW50KSA9IDA7CisKICAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJBbmlt
YXRpb25zKENvb3JkaW5hdGVkTGF5ZXJJRCwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllckFu
aW1hdGlvbnMmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoTGF5ZXIoV2ViQ29yZTo6
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKikgPSAwOwpAQCAtMTEyLDYgKzExNCw4IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNUb0ltYWdlKEltYWdlKikgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9Tb2xpZENvbG9yKGNvbnN0IENvbG9y
JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFNob3dEZWJ1Z0JvcmRlcihib29sKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvd1JlcGFpbnRDb3VudGVyKGJvb2wpIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGREaXJlY3RseUNvbXBvc2l0ZUltYWdlKElt
YWdlKikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9DYW52
YXMoUGxhdGZvcm1MYXllciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRNYXNrTGF5
ZXIoR3JhcGhpY3NMYXllciopIE9WRVJSSURFOwpAQCAtMTY2LDYgKzE3MCw4IEBAIHB1YmxpYzoK
ICAgICBib29sIGhhc1BlbmRpbmdWaXNpYmxlQ2hhbmdlcygpOwogCiBwcml2YXRlOgorICAgIHZp
cnR1YWwgdm9pZCBzZXREZWJ1Z0JvcmRlcihjb25zdCBDb2xvciYsIGZsb2F0IHdpZHRoKSBPVkVS
UklERTsKKwogICAgIGJvb2wgZml4ZWRUb1ZpZXdwb3J0KCkgY29uc3QgeyByZXR1cm4gbV9maXhl
ZFRvVmlld3BvcnQ7IH0KIAogICAgIHZvaWQgZGlkQ2hhbmdlTGF5ZXJTdGF0ZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5j
cHAKaW5kZXggNzk3YWVlMzUyYjBlYjA4MzI0ZjU4Y2E5YjNmZDIyZmJmNWNhZjk2YS4uMWY2NDU4
MzQ0MTlkYzRhNmIyZGJiNmIyYmY0OTI2OTIwYjFhMmE1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCkBAIC0zOTMs
NiArMzkzLDExIEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpkZXN0cm95Q2FudmFz
KENvb3JkaW5hdGVkTGF5ZXJJRCBpZCkKIH0KICNlbmRpZgogCit2b2lkIENvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdDo6c2V0UmVwYWludENvdW50KENvb3JkaW5hdGVkTGF5ZXJJRCBpZCwgaW50IHZh
bHVlKQoreworICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6Q29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0UHJveHk6OlNldFJlcGFpbnRDb3VudChpZCwgdmFsdWUpKTsKK30KKwogI2lmIEVOQUJM
RShDU1NfRklMVEVSUykKIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzeW5jTGF5ZXJG
aWx0ZXJzKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmls
dGVycykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0LmgKaW5kZXggMDEwMjJiMmNjNGU5ODQ4OGE0ZGY3ODdlYTM2OTBiNzJhY2Nm
ZjcyOS4uZWRiMjA1NWE2YjY2ZjhjZjliZTZjNDI0YTY1MGRkYzRhMzhiMThmMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgK
QEAgLTEwMSw2ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHN5bmNDYW52YXMo
Q29vcmRpbmF0ZWRMYXllcklELCBXZWJDb3JlOjpQbGF0Zm9ybUxheWVyKikgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIGRlc3Ryb3lDYW52YXMoQ29vcmRpbmF0ZWRMYXllcklEKSBPVkVSUklE
RTsKICNlbmRpZgorICAgIHZpcnR1YWwgdm9pZCBzZXRSZXBhaW50Q291bnQoQ29vcmRpbmF0ZWRM
YXllcklELCBpbnQpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hMYXllcihXZWJD
b3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY0Zp
eGVkTGF5ZXJzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkVGlsZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFRp
bGUuY3BwCmluZGV4IDc5OGQyYjc1ZjI1MGRhNjcyOWZmOWJjZTUwZTg4YzI5MTI5NDBiOGUuLmFj
MGI1NjYyNmU4MWYxMGIxODc2MmI5OGYzNjU4MDRmOGUzMjYxNjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkVGlsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRUaWxlLmNwcApAQCAtOTcsOCArOTcsMTAgQEAgVmVj
dG9yPEludFJlY3Q+IENvb3JkaW5hdGVkVGlsZTo6dXBkYXRlQmFja0J1ZmZlcigpCiAgICAgfSBl
bHNlCiAgICAgICAgIG1fY2xpZW50LT51cGRhdGVUaWxlKG1fSUQsIHVwZGF0ZUluZm8sIG1fcmVj
dCk7CiAKKyAgICBWZWN0b3I8SW50UmVjdD4gdXBkYXRlZFJlY3RzOworICAgIHVwZGF0ZWRSZWN0
cy5hcHBlbmQobV9kaXJ0eVJlY3QpOwogICAgIG1fZGlydHlSZWN0ID0gSW50UmVjdCgpOwotICAg
IHJldHVybiBWZWN0b3I8SW50UmVjdD4oKTsKKyAgICByZXR1cm4gdXBkYXRlZFJlY3RzOwogfQog
CiB2b2lkIENvb3JkaW5hdGVkVGlsZTo6c3dhcEJhY2tCdWZmZXJUb0Zyb250KCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAyNTkwM2E4NDYx
YTE1OTA5NzllYTgxNWYxOGJiMGEwZjg2YjU0NDAxLi41YzgxNWE0MDYyY2I3YjUzNTkzYzJhNTll
NTA1MWY4OWFkMDA2ODg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCkBAIC0yMzM1LDggKzIzMzUsMTggQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVQ
cmVmZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKICAgICBzZXR0aW5n
cy0+c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9y
S2V5KFdlYlByZWZlcmVuY2VzS2V5OjphY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZEtleSgp
KSAmJiBMYXllclRyZWVIb3N0OjpzdXBwb3J0c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKSk7CiAg
ICAgc2V0dGluZ3MtPnNldEFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZh
bHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjphY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkS2V5
KCkpICYmIExheWVyVHJlZUhvc3Q6OnN1cHBvcnRzQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpKTsK
ICAgICBzZXR0aW5ncy0+c2V0Q2FudmFzVXNlc0FjY2VsZXJhdGVkRHJhd2luZyhzdG9yZS5nZXRC
b29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmNhbnZhc1VzZXNBY2NlbGVyYXRlZERy
YXdpbmdLZXkoKSkgJiYgTGF5ZXJUcmVlSG9zdDo6c3VwcG9ydHNBY2NlbGVyYXRlZENvbXBvc2l0
aW5nKCkpOworI2lmIFBMQVRGT1JNKFFUKQorICAgIGJvb2wgc2hvd0RlYnVnVmlzdWFscyA9IHFn
ZXRlbnYoIlFUX1dFQktJVF9TSE9XX0NPTVBPU0lUSU5HX0RFQlVHX1ZJU1VBTFMiKSA9PSAiMSI7
CisgICAgc2V0dGluZ3MtPnNldFNob3dEZWJ1Z0JvcmRlcnMoc2hvd0RlYnVnVmlzdWFscyk7Cisg
ICAgc2V0dGluZ3MtPnNldFNob3dSZXBhaW50Q291bnRlcihzaG93RGVidWdWaXN1YWxzKTsKKyNl
bGlmIFVTRShDQUlSTykKKyAgICBib29sIHNob3dEZWJ1Z1Zpc3VhbHMgPSBTdHJpbmcoZ2V0ZW52
KCJXRUJLSVRfU0hPV19DT01QT1NJVElOR19ERUJVR19WSVNVQUxTIikpID09ICIxIjsKKyAgICBz
ZXR0aW5ncy0+c2V0U2hvd0RlYnVnQm9yZGVycyhzaG93RGVidWdWaXN1YWxzKTsKKyAgICBzZXR0
aW5ncy0+c2V0U2hvd1JlcGFpbnRDb3VudGVyKHNob3dEZWJ1Z1Zpc3VhbHMpOworI2Vsc2UKICAg
ICBzZXR0aW5ncy0+c2V0U2hvd0RlYnVnQm9yZGVycyhzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXko
V2ViUHJlZmVyZW5jZXNLZXk6OmNvbXBvc2l0aW5nQm9yZGVyc1Zpc2libGVLZXkoKSkpOwogICAg
IHNldHRpbmdzLT5zZXRTaG93UmVwYWludENvdW50ZXIoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5
KFdlYlByZWZlcmVuY2VzS2V5Ojpjb21wb3NpdGluZ1JlcGFpbnRDb3VudGVyc1Zpc2libGVLZXko
KSkpOworI2VuZGlmCiAgICAgc2V0dGluZ3MtPnNldFNob3dUaWxlZFNjcm9sbGluZ0luZGljYXRv
cihzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnRpbGVkU2Nyb2xs
aW5nSW5kaWNhdG9yVmlzaWJsZUtleSgpKSk7CiAgICAgc2V0dGluZ3MtPnNldEFnZ3Jlc3NpdmVU
aWxlUmV0ZW50aW9uRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5j
ZXNLZXk6OmFnZ3Jlc3NpdmVUaWxlUmV0ZW50aW9uRW5hYmxlZEtleSgpKSk7CiAgICAgc2V0dGlu
Z3MtPnNldENTU0N1c3RvbUZpbHRlckVuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdl
YlByZWZlcmVuY2VzS2V5Ojpjc3NDdXN0b21GaWx0ZXJFbmFibGVkS2V5KCkpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182903</attachid>
            <date>2013-01-15 19:05:45 -0800</date>
            <delta_ts>2013-01-16 00:19:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105787-20130116120247.patch</filename>
            <type>text/plain</type>
            <size>65621</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5ODIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjQ0ZmI3OTZjZGFmODU2
YWM1OWZlZmYyOTBhYTMwNDBkMjA3ODRmMy4uNTkwNjlhNDZmMzFlZTk1NjAyODY4NTQ4MzYwZjJl
ZWYyNGQ5MGZjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDEzLTAxLTE1ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFtUZXhtYXBd
IFJlZmFjdG9yIGNvZGUgcmVsYXRlZCB0byBkZWJ1ZyBib3JkZXIgYW5kIHJlcGFpbnQgY291bnQu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU3ODcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50
bHksIFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUsIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlIGFu
ZAorICAgICAgICBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlciBoYXZlIGR1cGxpY2F0ZWQgY29k
ZSB0byBkcmF3IGRlYnVnIGJvcmRlciBvciByZXBhaW50CisgICAgICAgIGNvdW50LiBUaGlzIHBh
dGNoIHJlZmFjdG9ycyB0aGF0IGFsbCBwbGF0Zm9ybSBsYXllcnMgZHJhdyBkZWJ1ZyBib3JkZXIg
YW5kIHJlcGFpbnQKKyAgICAgICAgY291bnQgaW4gdGhlIGNvbnNpc3RlbnQgd2F5LgorCisgICAg
ICAgIFRoZXJlIGFyZSB0aHJlZSBiaWcgY2hhbmdlczoKKyAgICAgICAgMS4gVG8gZW5hYmxlIG9y
IGRpc2FibGUgdGhpcyBmZWF0dXJlLCB3ZSB1c2Ugc2V0U2hvd0RlYnVnQm9yZGVycyhib29sKSBh
bmQKKyAgICAgICAgc2V0U2hvd1JlcGFpbnRDb3VudGVyKGJvb2wpIGluIFNldHRpbmdzLgorICAg
ICAgICBBcyB3ZSBkaWQsIGlmIFtRVF9dV0VCS0lUX1NIT1dfQ09NUE9TSVRJTkdfREVCVUdfVklT
VUFMUyBpcyBzZXQgdG8gMSwgYm90aAorICAgICAgICBzZXR0aW5ncyBhcmUgc2V0IHRvIHRydWUu
IEl0IG1lYW5zIHRoYXQgbm93IHdlIGNhbiBzZWUgZGVidWcgdmlzdWFscyBpbiBXSzEKKyAgICAg
ICAgYXMgd2VsbCBhcyBXSzIuCisgICAgICAgIDIuIFRleHR1cmVNYXBwZXJMYXllciBoYXMgdGhl
IGRlYnVnIHZpc3VhbHMgbGlrZSBHcmFwaGljc0xheWVyLgorICAgICAgICBCb3RoIGRlYnVnIGJv
cmRlciBhbmQgcmVwYWludCBjb3VudCBhcmUgY2FsbGVkIGFzIHRoZSBkZWJ1ZyB2aXN1YWxzLgor
ICAgICAgICAzLiBXZSB1c2UgdGhlIHNhbWUgY29sb3IgYW5kIHdpZHRoIHRvIE1hYyBwb3J0IGJl
Y2F1c2Ugd2UgZ2V0IGJvdGggaW5mbyB1c2luZworICAgICAgICBHcmFwaGljc0xheWVyOjp1cGRh
dGVEZWJ1Z0luZGljYXRvcnMoKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIFRoaXMgZnVuY3Rp
b25hbGl0eSBpcyBmb3IgZGVidWdnaW5nLCBzbyB3ZSBjYW5ub3QgdGVzdCB1c2luZyBEUlQuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRFByaXZh
dGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXI6OnNldFNob3dEZWJ1Z0JvcmRlcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRTaG93UmVwYWludENvdW50
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmZsdXNo
Q29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnVwZGF0ZURlYnVnQm9yZGVyQW5kUmVwYWludENvdW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXREZWJ1
Z0JvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6
dXBkYXRlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyOjpwcmVwYXJlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRSZXBhaW50Q291bnQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oOgorICAgICAg
ICAoR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXI6OmRlYnVnQm9yZGVyQ29sb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmRlYnVnQm9yZGVyV2lkdGgpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpwYWludFRv
VGV4dHVyZU1hcHBlcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6ZHJhd0JvcmRlcik6CisgICAgICAgICAgICBP
dmVycmlkZSBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllcjo6ZHJhd0JvcmRlcigpIHRvIGRyYXcg
dGhlIGJvcmRlcgorICAgICAgICAgICAgZm9yIGVhY2ggdGlsZS4KKyAgICAgICAgKFdlYkNvcmU6
OlRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6ZHJhd1JlcGFpbnRDb3VudGVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9y
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZTo6ZHJhd1Jl
cGFpbnRDb3VudGVyKToKKyAgICAgICAgKFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0QUJHUlRvQVJHQik6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHTDo6ZHJhd1JlcGFpbnRDb3VudGVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1
ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXI6OmRy
YXdCb3JkZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJl
TWFwcGVySW1hZ2VCdWZmZXI6OmRyYXdSZXBhaW50Q291bnRlcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5oOgorICAgICAgICAo
VGV4dHVyZU1hcHBlckltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVN
YXBwZXJMYXllcjo6cGFpbnRTZWxmKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJM
YXllcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oOgorICAgICAgICAo
U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpTdGF0ZTo6U3Rh
dGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXI6OmRyYXdCb3JkZXIpOgorCiAyMDEzLTAxLTE1ICBSb2dlciBGb25nICA8cm9nZXJfZm9uZ0Bh
cHBsZS5jb20+CiAKICAgICAgICAgR2V0IHJpZCBvZiBhIHN0cmFnZ2xpbmcgZGVwZW5kZW5jeSBv
biBTYWZhcmlUaGVtZUNvbnN0YW50cyBpbiBSZW5kZXJUaGVtZVdpbi4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpp
bmRleCA4ZmJhYmNlOThkM2FkZDZiODIzZWExMjk4NGNjMTY4NWFjMjI4MTc1Li5kODczOWFjOWFh
NDRiZTg1Nzk0M2I1ZjYxYmI0NmNmNGFiNzM3MjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTYgQEAKKzIwMTMtMDEtMTUgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEw
MC5uZXQ+CisKKyAgICAgICAgW1RleG1hcF0gUmVmYWN0b3IgY29kZSByZWxhdGVkIHRvIGRlYnVn
IGJvcmRlciBhbmQgcmVwYWludCBjb3VudC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwNTc4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIElmIFdFQktJVF9TSE9XX0NPTVBPU0lUSU5HX0RFQlVHX1ZJU1VB
TFMgaXMgc2V0IHRvIDEsIHNldAorICAgICAgICBzaG93RGVidWdCb3JkZXJzIGFuZCBzaG93UmVw
YWludENvdW50ZXIgaW4gU2V0dGluZ3MgdG8gdHJ1ZS4KKworICAgICAgICAqIGV3ay9ld2tfdmll
dy5jcHA6CisgICAgICAgIChfZXdrX3ZpZXdfcHJpdl9uZXcpOgorCiAyMDEzLTAxLTE1ICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZC4gRml4IGJ1aWxkIGJyZWFrIGJ5IHIxMzk3OTYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggZGNiZWMz
ZmE5NjdkMjY3ODczNDEwZjNlZDNkOWQ2YTFmMTk4M2NkZC4uMWVhNjY2N2ViMzBjNzdkODZiOGY5
YjEzM2NhZWQ3OGY3YTc5MzVjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisy
MDEzLTAxLTE1ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisg
ICAgICAgIFtUZXhtYXBdIFJlZmFjdG9yIGNvZGUgcmVsYXRlZCB0byBkZWJ1ZyBib3JkZXIgYW5k
IHJlcGFpbnQgY291bnQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDU3ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJZiBXRUJLSVRfU0hPV19DT01QT1NJVElOR19ERUJVR19WSVNVQUxTIGlzIHNldCB0
byAxLCBzZXQKKyAgICAgICAgc2hvd0RlYnVnQm9yZGVycyBhbmQgc2hvd1JlcGFpbnRDb3VudGVy
IGluIFNldHRpbmdzIHRvIHRydWUuCisKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5j
cHA6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfdXBkYXRlX3NldHRpbmdzKToKKwogMjAxMy0w
MS0xNSAgWmFuIERvYmVyc2VrICA8emFuZG9iZXJzZWtAZ21haWwuY29tPgogCiAgICAgICAgIFtB
dXRvdG9vbHNdIEFkZCBzdXBwb3J0IGZvciBXZWJLaXQyLW9ubHkgYnVpbGRzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9n
CmluZGV4IGM2ODczZDcxZDFlMjRhYTNlOGE4NjQ5NjFjMTQ1ZWE5NzkxZjZhYWYuLjY0MTY5ZWE4
NWIzM2UxNzI2NGY3MTM5ZWUxYThhMmRkMGNkYTBhMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvcXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTYgQEAKKzIwMTMtMDEtMTUgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEw
MC5uZXQ+CisKKyAgICAgICAgW1RleG1hcF0gUmVmYWN0b3IgY29kZSByZWxhdGVkIHRvIGRlYnVn
IGJvcmRlciBhbmQgcmVwYWludCBjb3VudC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwNTc4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIElmIFFUX1dFQktJVF9TSE9XX0NPTVBPU0lUSU5HX0RFQlVHX1ZJ
U1VBTFMgaXMgc2V0IHRvIDEsIHNldAorICAgICAgICBzaG93RGVidWdCb3JkZXJzIGFuZCBzaG93
UmVwYWludENvdW50ZXIgaW4gU2V0dGluZ3MgdG8gdHJ1ZS4KKworICAgICAgICAqIEFwaS9xd2Vi
c2V0dGluZ3MuY3BwOgorICAgICAgICAoUVdlYlNldHRpbmdzUHJpdmF0ZTo6YXBwbHkpOgorCiAy
MDEzLTAxLTExICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCiAg
ICAgICAgIFtUZXhNYXBdIFJlbmFtZSBjdXJyZW50W1RyYW5zZm9ybXxPcGFjaXR5fEZpbHRlcnNd
IGluIFRleHR1cmVNYXBwZXJMYXllci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBjNjY2NzIxODVjZWM5Nzg5MzZi
ZDFlODhmMDlhMjMzYzM1MzVkODhhLi4wMGIyNzA0NmNiOGZhZjk0NjY5Y2JmOGU1NmNmNDMyODE3
MDg2NTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjYgQEAKKzIwMTMtMDEtMTUgIEh1YW5nIERv
bmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CisKKyAgICAgICAgW1RleG1hcF0gUmVm
YWN0b3IgY29kZSByZWxhdGVkIHRvIGRlYnVnIGJvcmRlciBhbmQgcmVwYWludCBjb3VudC4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTc4NworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZXJlIGFyZSB0
aHJlZSBiaWcgY2hhbmdlczoKKyAgICAgICAgMS4gQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyIHNl
bmRzIGRlYnVnZ2luZyB2aXN1YWxzIHRvIFVJIFByb2Nlc3MuCisgICAgICAgIDIuIElmIFtRVF9d
V0VCS0lUX1NIT1dfQ09NUE9TSVRJTkdfREVCVUdfVklTVUFMUyBpcyBzZXQgdG8gMSwgc2V0Cisg
ICAgICAgIHNob3dEZWJ1Z0JvcmRlcnMgYW5kIHNob3dSZXBhaW50Q291bnRlciBpbiBTZXR0aW5n
cyB0byB0cnVlLgorICAgICAgICAzLiBXaGVuIHVwZGF0aW5nIGEgYmFja2luZyBzdG9yZSwgaW5j
cmVtZW50IGEgcmVwYWludCBjb3VudC4KKworICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJJbmZvLmg6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5h
dGVkTGF5ZXJJbmZvOjpDb29yZGluYXRlZExheWVySW5mbyk6CisgICAgICAgIChDb29yZGluYXRl
ZExheWVySW5mbyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3Bw
OgorICAgICAgICAoRXdrVmlld0ltcGw6OkV3a1ZpZXdJbXBsKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHA6CisgICAgICAgICh3ZWJLaXRTZXR0aW5nc1Nl
dFByb3BlcnR5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3Bw
OgorICAgICAgICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6OmluaXRpYWxpemUpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnVwZGF0ZVRpbGUp
OgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6cGFpbnRUaWxlc1Rv
VGV4dHVyZU1hcHBlcik6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3Jl
OjpkcmF3Qm9yZGVyKToKKyAgICAgICAgICAgIE92ZXJyaWRlIFRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyOjpkcmF3Qm9yZGVyKCkgdG8gZHJhdyB0aGUgYm9yZGVyCisgICAgICAgICAgICBmb3Ig
ZWFjaCB0aWxlLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0
ZWRCYWNraW5nU3RvcmU6OmRyYXdSZXBhaW50Q291bnRlcik6CisgICAgICAgICogVUlQcm9jZXNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuaDoKKyAgICAgICAg
KFdlYktpdDo6Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlOjpDb29yZGluYXRlZEJhY2tpbmdT
dG9yZVRpbGUpOgorICAgICAgICAoQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlKToKKyAgICAg
ICAgKENvb3JkaW5hdGVkQmFja2luZ1N0b3JlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpzZXRSZXBhaW50Q291bnQp
OgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oOgorICAgICAgICAoQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0UHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OnNldFJlcGFpbnRDb3VudCk6Cisg
ICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6c2V0
TGF5ZXJTdGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5
ZXJUcmVlUmVuZGVyZXIuaDoKKyAgICAgICAgKExheWVyVHJlZVJlbmRlcmVyKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
OjpzZXRTaG93RGVidWdCb3JkZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldFNob3dSZXBhaW50Q291bnRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnN5bmNMYXllclN0YXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0RGVidWdC
b3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp0aWxl
ZEJhY2tpbmdTdG9yZVBhaW50RW5kKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKENv
b3JkaW5hdGVkR3JhcGhpY3NMYXllckNsaWVudCk6CisgICAgICAgIChDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0UmVwYWludENvdW50KToKKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRUaWxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29v
cmRpbmF0ZWRUaWxlOjp1cGRhdGVCYWNrQnVmZmVyKToKKwogMjAxMy0wMS0xNSAgRW5yaWNhIENh
c3VjY2kgIDxlbnJpY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhIG5ldyBzZXQgb2YgV2Vi
S2l0MiBBUElzIGZvciB0ZXh0IHNlYXJjaCBhbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlLmgKaW5kZXggNjlkYWQ2NzU0NzIyYWM3YTg4MmNhODc2MTVhYjg4NTQ5NzlhZmJjNi4uZDBk
ZDIzZmU3ZGJkNDFkNmFmODFmOTA3YWFkOWRhMDMyYzAxYjRkYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlLmgKQEAgLTI1LDcgKzI1LDcgQEAKICNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBVU0UoVEVYVFVS
RV9NQVBQRVIpCi0jaW5jbHVkZSAiVGV4dHVyZU1hcHBlci5oIgorI2luY2x1ZGUgIlRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyLmgiCiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250
ZXh0M0RRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGlj
c0NvbnRleHQzRFF0LmNwcAppbmRleCAyMGIzYjdkOGZiMzU3MzhjMjk1YzNjOGNkOWMzN2IyMmNj
ZDA1MTVhLi4zYzhjNWMyMjU5ODgyMWQ3MjU2N2RiYjU2NGViN2Y5YzlmNmQ2YjQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQz
RFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGlj
c0NvbnRleHQzRFF0LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIk9wZW5HTFNoaW1z
LmgiCiAjaW5jbHVkZSAiUVdlYlBhZ2VDbGllbnQuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIu
aCIKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUgPFFX
aW5kb3c+CiAjaW5jbHVkZSA8cXBhL3FwbGF0Zm9ybXBpeG1hcC5oPgogI2luY2x1ZGUgPHd0Zi9V
bnVzZWRQYXJhbS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAK
aW5kZXggZTk2Mjk2YmE1MWU0YWE3MTE1ZGJhMjI2YWE1N2ZmZWYwZWMwMTIyMi4uNzViYzc1MzZl
ODcxZWY2NjBkNjgzYmMxOTc4YTIzMWFiYTc5NzRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXIuY3BwCkBAIC0yNCwxNCArMjQsOCBAQAogI2luY2x1ZGUgIkdyYXBo
aWNzTGF5ZXJBbmltYXRpb24uaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyRmFjdG9yeS5oIgog
I2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNp
bmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KIAotI2lmIFVTRShDQUlSTykKLSNpbmNsdWRlICJD
YWlyb1V0aWxpdGllcy5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNlbmRpZgot
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NPd25QdHI8R3JhcGhpY3NMYXllcj4gR3JhcGhp
Y3NMYXllcjo6Y3JlYXRlKEdyYXBoaWNzTGF5ZXJGYWN0b3J5KiBmYWN0b3J5LCBHcmFwaGljc0xh
eWVyQ2xpZW50KiBjbGllbnQpCkBAIC0zODMsMTUgKzM3Nyw2MCBAQCB2b2lkIEdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c1RvTWVkaWEoVGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXIqCiAgICAgbV9jb250ZW50c0xheWVyID0gbWVkaWE7CiB9CiAKK3ZvaWQgR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXI6OnNldFNob3dEZWJ1Z0JvcmRlcihib29sIHNob3cpCit7CisgICAg
aWYgKGlzU2hvd2luZ0RlYnVnQm9yZGVyKCkgPT0gc2hvdykKKyAgICAgICAgcmV0dXJuOworCisg
ICAgR3JhcGhpY3NMYXllcjo6c2V0U2hvd0RlYnVnQm9yZGVyKHNob3cpOworICAgIG5vdGlmeUNo
YW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkRlYnVnVmlzdWFsc0NoYW5nZSk7Cit9CisKK3ZvaWQg
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFNob3dSZXBhaW50Q291bnRlcihib29sIHNo
b3cpCit7CisgICAgaWYgKGlzU2hvd2luZ1JlcGFpbnRDb3VudGVyKCkgPT0gc2hvdykKKyAgICAg
ICAgcmV0dXJuOworCisgICAgR3JhcGhpY3NMYXllcjo6c2V0U2hvd1JlcGFpbnRDb3VudGVyKHNo
b3cpOworICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkRlYnVnVmlzdWFsc0No
YW5nZSk7Cit9CisKIC8qIFxyZWltcCAoR3JhcGhpY3NMYXllci5oKQogKi8KIHZvaWQgR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9u
bHkoKQogeworICAgIGlmIChtX2hhc093bkJhY2tpbmdTdG9yZSkKKyAgICAgICAgdXBkYXRlRGVi
dWdCb3JkZXJBbmRSZXBhaW50Q291bnQoKTsKICAgICBtX2xheWVyLT5mbHVzaENvbXBvc2l0aW5n
U3RhdGVGb3JUaGlzTGF5ZXJPbmx5KHRoaXMpOwotICAgIHVwZGF0ZUJhY2tpbmdTdG9yZSgpOwor
ICAgIGlmIChtX2hhc093bkJhY2tpbmdTdG9yZSkKKyAgICAgICAgdXBkYXRlQmFja2luZ1N0b3Jl
KCk7CiAgICAgZGlkRmx1c2hDb21wb3NpdGluZ1N0YXRlKCk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXI6OnVwZGF0ZURlYnVnQm9yZGVyQW5kUmVwYWludENvdW50KCkKK3sK
KyAgICBBU1NFUlQobV9oYXNPd25CYWNraW5nU3RvcmUpOworCisgICAgbV91c2luZ1RpbGVkTGF5
ZXIgPSBzaG91bGRIYXZlQmFja2luZ1N0b3JlKCk7CisgICAgdXBkYXRlRGVidWdJbmRpY2F0b3Jz
KCk7CisKKyAgICAvLyBXaGVuIHRoaXMgaGFzIGl0cyBvd24gYmFja2luZyBzdG9yZSAoZS5nLiBR
dCBXSzEpLCB1cGRhdGUgdGhlIHJlcGFpbnQgY291bnQgYmVmb3JlIGNhbGxpbmcgVGV4dHVyZU1h
cHBlckxheWVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCkuCisgICAg
Ym9vbCBuZWVkc1RvUmVwYWludCA9IHNob3VsZEhhdmVCYWNraW5nU3RvcmUoKSAmJiAobV9uZWVk
c0Rpc3BsYXkgfHwgIW1fbmVlZHNEaXNwbGF5UmVjdC5pc0VtcHR5KCkpOworICAgIGlmIChpc1No
b3dpbmdSZXBhaW50Q291bnRlcigpICYmIG5lZWRzVG9SZXBhaW50KSB7CisgICAgICAgIGluY3Jl
bWVudFJlcGFpbnRDb3VudCgpOworICAgICAgICBtX2NoYW5nZU1hc2sgfD0gVGV4dHVyZU1hcHBl
ckxheWVyOjpSZXBhaW50Q291bnRDaGFuZ2U7CisgICAgfQorfQorCit2b2lkIEdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyOjpzZXREZWJ1Z0JvcmRlcihjb25zdCBDb2xvciYgY29sb3IsIGZsb2F0
IHdpZHRoKQoreworICAgIC8vIFRoZSBkZWZhdWx0IHZhbHVlcyBmb3IgR3JhcGhpY3NMYXllciBk
ZWJ1ZyBib3JkZXJzIGFyZSBhIGxpdHRsZQorICAgIC8vIGhhcmQgdG8gc2VlIChzb21lIGxlc3Mg
dGhhbiBvbmUgcGl4ZWwgd2lkZSksIHNvIHdlIGRvdWJsZSB0aGVpciBzaXplIGhlcmUuCisgICAg
bV9kZWJ1Z0JvcmRlckNvbG9yID0gY29sb3I7CisgICAgbV9kZWJ1Z0JvcmRlcldpZHRoID0gd2lk
dGggKiAyOworICAgIG1fY2hhbmdlTWFzayB8PSBUZXh0dXJlTWFwcGVyTGF5ZXI6OkRlYnVnVmlz
dWFsc0NoYW5nZTsKK30KKwogLyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgpCiAqLwogdm9pZCBH
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlKGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCkKQEAgLTQxNiw5ICs0NTUsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyOjpkaWRGbHVzaENvbXBvc2l0aW5nU3RhdGUoKQogCiB2b2lkIEdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyOjp1cGRhdGVCYWNraW5nU3RvcmUoKQogewotICAgIGlmICghbV9oYXNP
d25CYWNraW5nU3RvcmUpCi0gICAgICAgIHJldHVybjsKLQorICAgIEFTU0VSVChtX2hhc093bkJh
Y2tpbmdTdG9yZSk7CiAgICAgcHJlcGFyZUJhY2tpbmdTdG9yZSgpOwogICAgIG1fbGF5ZXItPnNl
dEJhY2tpbmdTdG9yZShtX2JhY2tpbmdTdG9yZSk7CiB9CkBAIC00NDgsMzQgKzQ4NSw3IEBAIHZv
aWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnByZXBhcmVCYWNraW5nU3RvcmUoKQogI2Vu
ZGlmCiAgICAgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUgPSBz
dGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUqPihtX2JhY2tpbmdTdG9y
ZS5nZXQoKSk7CiAKLSAgICBpZiAoaXNTaG93aW5nUmVwYWludENvdW50ZXIoKSkKLSAgICAgICAg
aW5jcmVtZW50UmVwYWludENvdW50KCk7Ci0KLSAgICAvLyBQYWludCBpbnRvIGFuIGludGVybWVk
aWF0ZSBidWZmZXIgdG8gYXZvaWQgcGFpbnRpbmcgY29udGVudCBtb3JlIHRoYW4gb25jZS4KLSAg
ICBib29sIHBhaW50T25jZSA9IHRydWU7Ci0gICAgY29uc3QgSW50U2l6ZSBtYXhUZXh0dXJlU2l6
ZSA9IHRleHR1cmVNYXBwZXItPm1heFRleHR1cmVTaXplKCk7Ci0gICAgLy8gV2UgbmVlZCB0byBw
YWludCBkaXJlY3RseSBpZiB0aGUgZGlydHkgcmVjdCBleGNlZWRzIG9uZSBvZiB0aGUgbWF4aW11
bSBkaW1lbnNpb25zLgotICAgIGlmIChkaXJ0eVJlY3Qud2lkdGgoKSA+IG1heFRleHR1cmVTaXpl
LndpZHRoKCkgfHwgZGlydHlSZWN0LmhlaWdodCgpID4gbWF4VGV4dHVyZVNpemUuaGVpZ2h0KCkp
Ci0gICAgICAgIHBhaW50T25jZSA9IGZhbHNlOwotCi0gICAgaWYgKHBhaW50T25jZSkgewotICAg
ICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZShkaXJ0eVJlY3Quc2l6ZSgpKTsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0g
aW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKLSAgICAgICAgY29udGV4dC0+c2V0SW1hZ2VJbnRlcnBv
bGF0aW9uUXVhbGl0eSh0ZXh0dXJlTWFwcGVyLT5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkp
OwotICAgICAgICBjb250ZXh0LT5zZXRUZXh0RHJhd2luZ01vZGUodGV4dHVyZU1hcHBlci0+dGV4
dERyYXdpbmdNb2RlKCkpOwotICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoLWRpcnR5UmVjdC54
KCksIC1kaXJ0eVJlY3QueSgpKTsKLSAgICAgICAgcGFpbnRHcmFwaGljc0xheWVyQ29udGVudHMo
KmNvbnRleHQsIGRpcnR5UmVjdCk7Ci0KLSAgICAgICAgaWYgKGlzU2hvd2luZ1JlcGFpbnRDb3Vu
dGVyKCkpCi0gICAgICAgICAgICBkcmF3UmVwYWludENvdW50ZXIoY29udGV4dCk7Ci0KLSAgICAg
ICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGltYWdlQnVmZmVyLT5jb3B5SW1hZ2UoRG9udENvcHlC
YWNraW5nU3RvcmUpOwotICAgICAgICBiYWNraW5nU3RvcmUtPnVwZGF0ZUNvbnRlbnRzKHRleHR1
cmVNYXBwZXIsIGltYWdlLmdldCgpLCBtX3NpemUsIGRpcnR5UmVjdCwgQml0bWFwVGV4dHVyZTo6
VXBkYXRlQ2FuTW9kaWZ5T3JpZ2luYWxJbWFnZURhdGEpOwotICAgIH0gZWxzZQotICAgICAgICBi
YWNraW5nU3RvcmUtPnVwZGF0ZUNvbnRlbnRzKHRleHR1cmVNYXBwZXIsIHRoaXMsIG1fc2l6ZSwg
ZGlydHlSZWN0LCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDYW5Nb2RpZnlPcmlnaW5hbEltYWdlRGF0
YSk7Ci0KLSAgICBiYWNraW5nU3RvcmUtPnNldFNob3dEZWJ1Z0JvcmRlcnMoaXNTaG93aW5nRGVi
dWdCb3JkZXIoKSk7Ci0gICAgYmFja2luZ1N0b3JlLT5zZXREZWJ1Z0JvcmRlcihtX2RlYnVnQm9y
ZGVyQ29sb3IsIG1fZGVidWdCb3JkZXJXaWR0aCk7CisgICAgYmFja2luZ1N0b3JlLT51cGRhdGVD
b250ZW50cyh0ZXh0dXJlTWFwcGVyLCB0aGlzLCBtX3NpemUsIGRpcnR5UmVjdCwgQml0bWFwVGV4
dHVyZTo6VXBkYXRlQ2FuTW9kaWZ5T3JpZ2luYWxJbWFnZURhdGEpOwogCiAgICAgbV9uZWVkc0Rp
c3BsYXkgPSBmYWxzZTsKICAgICBtX25lZWRzRGlzcGxheVJlY3QgPSBJbnRSZWN0KCk7CkBAIC00
ODYsNDAgKzQ5Niw2IEBAIGJvb2wgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNob3VsZEhh
dmVCYWNraW5nU3RvcmUoKSBjb25zdAogICAgIHJldHVybiBkcmF3c0NvbnRlbnQoKSAmJiBjb250
ZW50c0FyZVZpc2libGUoKSAmJiAhbV9zaXplLmlzRW1wdHkoKTsKIH0KIAotI2lmIFVTRShDQUlS
TykKLXZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmRyYXdSZXBhaW50Q291bnRlcihH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQpCi17Ci0gICAgY2Fpcm9fdCogY3IgPSBjb250ZXh0LT5w
bGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKLSAgICBjYWlyb19zYXZlKGNyKTsKLQotICAgIENTdHJp
bmcgcmVwYWludENvdW50ID0gU3RyaW5nOjpmb3JtYXQoIiVpIiwgdGhpcy0+cmVwYWludENvdW50
KCkpLnV0ZjgoKTsKLSAgICBjYWlyb19zZWxlY3RfZm9udF9mYWNlKGNyLCAic2Fucy1zZXJpZiIs
IENBSVJPX0ZPTlRfU0xBTlRfTk9STUFMLCBDQUlST19GT05UX1dFSUdIVF9CT0xEKTsKLSAgICBj
YWlyb19zZXRfZm9udF9zaXplKGNyLCAxOCk7Ci0KLSAgICBjYWlyb190ZXh0X2V4dGVudHNfdCBy
ZXBhaW50VGV4dEV4dGVudHM7Ci0gICAgY2Fpcm9fdGV4dF9leHRlbnRzKGNyLCByZXBhaW50Q291
bnQuZGF0YSgpLCAmcmVwYWludFRleHRFeHRlbnRzKTsKLQotICAgIHN0YXRpYyBjb25zdCBpbnQg
cmVwYWludENvdW50Qm9yZGVyV2lkdGggPSAxMDsKLSAgICBzZXRTb3VyY2VSR0JBRnJvbUNvbG9y
KGNyLCBpc1Nob3dpbmdEZWJ1Z0JvcmRlcigpID8gbV9kZWJ1Z0JvcmRlckNvbG9yIDogQ29sb3Io
MCwgMjU1LCAwLCAxMjcpKTsKLSAgICBjYWlyb19yZWN0YW5nbGUoY3IsIDAsIDAsCi0gICAgICAg
IHJlcGFpbnRUZXh0RXh0ZW50cy53aWR0aCArIChyZXBhaW50Q291bnRCb3JkZXJXaWR0aCAqIDIp
LAotICAgICAgICByZXBhaW50VGV4dEV4dGVudHMuaGVpZ2h0ICsgKHJlcGFpbnRDb3VudEJvcmRl
cldpZHRoICogMikpOwotICAgIGNhaXJvX2ZpbGwoY3IpOwotCi0gICAgY2Fpcm9fc2V0X3NvdXJj
ZV9yZ2IoY3IsIDEsIDEsIDEpOwotICAgIGNhaXJvX21vdmVfdG8oY3IsIHJlcGFpbnRDb3VudEJv
cmRlcldpZHRoLCByZXBhaW50VGV4dEV4dGVudHMuaGVpZ2h0ICsgcmVwYWludENvdW50Qm9yZGVy
V2lkdGgpOwotICAgIGNhaXJvX3Nob3dfdGV4dChjciwgcmVwYWludENvdW50LmRhdGEoKSk7Ci0K
LSAgICBjYWlyb19yZXN0b3JlKGNyKTsKLX0KLSNlbHNlCi12b2lkIEdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyOjpkcmF3UmVwYWludENvdW50ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQot
ewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLSNlbmRpZgotCiBib29sIEdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyOjphZGRBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZh
bHVlTGlzdCwgY29uc3QgSW50U2l6ZSYgYm94U2l6ZSwgY29uc3QgQW5pbWF0aW9uKiBhbmltLCBj
b25zdCBTdHJpbmcmIGtleWZyYW1lc05hbWUsIGRvdWJsZSB0aW1lT2Zmc2V0KQogewogICAgIEFT
U0VSVCgha2V5ZnJhbWVzTmFtZS5pc0VtcHR5KCkpOwpAQCAtNTYxLDE0ICs1MzcsNiBAQCB2b2lk
IEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjphbmltYXRpb25TdGFydGVkVGltZXJGaXJlZChU
aW1lcjxHcmFwaGljc0xheWVyVAogICAgIGNsaWVudCgpLT5ub3RpZnlBbmltYXRpb25TdGFydGVk
KHRoaXMsIC8qIERPTSB0aW1lICovIFdURjo6Y3VycmVudFRpbWUoKSk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldERlYnVnQm9yZGVyKGNvbnN0IENvbG9yJiBjb2xv
ciwgZmxvYXQgd2lkdGgpCi17Ci0gICAgLy8gVGhlIGRlZmF1bHQgdmFsdWVzIGZvciBHcmFwaGlj
c0xheWVyIGRlYnVnIGJvcmRlcnMgYXJlIGEgbGl0dGxlCi0gICAgLy8gaGFyZCB0byBzZWUgKHNv
bWUgbGVzcyB0aGFuIG9uZSBwaXhlbCB3aWRlKSwgc28gd2UgZG91YmxlIHRoZWlyIHNpemUgaGVy
ZS4KLSAgICBtX2RlYnVnQm9yZGVyQ29sb3IgPSBjb2xvcjsKLSAgICBtX2RlYnVnQm9yZGVyV2lk
dGggPSB3aWR0aCAqIDI7Ci19Ci0KICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiBib29sIEdyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMm
IGZpbHRlcnMpCiB7CkBAIC01NzcsNCArNTQ1LDEwIEBAIGJvb2wgR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXI6OnNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKIH0K
ICNlbmRpZgogCit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRSZXBhaW50Q291
bnQoaW50IHZhbHVlKQoreworICAgIG1fcmVwYWludENvdW50ID0gdmFsdWU7CisgICAgbm90aWZ5
Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6UmVwYWludENvdW50Q2hhbmdlKTsKK30KKwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaAppbmRleCAxMmMzMTk1OTFiNzI2
YzdjOWYwYmEyYmRmZGY0Mzg0ZTdkZWExNzEzLi4zOTMzOGMzN2FiNzgyNWJiYmFkMDA3OTI3N2M5
OGRiM2FlZjVkNGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaApA
QCAtMjAsNyArMjAsNiBAQAogI2lmbmRlZiBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcl9oCiAj
ZGVmaW5lIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyX2gKIAotI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKICNpbmNsdWRlICJHcmFwaGlj
c0xheWVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKQEAgLTY2LDYgKzY1LDkgQEAgcHVi
bGljOgogICAgIENvbG9yIHNvbGlkQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX3NvbGlkQ29sb3I7
IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNUb01lZGlhKFBsYXRmb3JtTGF5ZXIqKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNUb0NhbnZhcyhQbGF0Zm9ybUxheWVyKiBjYW52
YXMpIHsgc2V0Q29udGVudHNUb01lZGlhKGNhbnZhcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0
U2hvd0RlYnVnQm9yZGVyKGJvb2wpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXREZWJ1
Z0JvcmRlcihjb25zdCBDb2xvciYsIGZsb2F0IHdpZHRoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0U2hvd1JlcGFpbnRDb3VudGVyKGJvb2wpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBmbHVzaENvbXBvc2l0aW5nU3RhdGUoY29uc3QgRmxvYXRSZWN0Jik7CiAgICAgdmlydHVh
bCB2b2lkIGZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKTsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpOwpAQCAtODEsOCArODMsNiBAQCBw
dWJsaWM6CiAKICAgICBUZXh0dXJlTWFwcGVyTGF5ZXIqIGxheWVyKCkgY29uc3QgeyByZXR1cm4g
bV9sYXllci5nZXQoKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHNldERlYnVnQm9yZGVyKGNvbnN0
IENvbG9yJiwgZmxvYXQgd2lkdGgpOwotCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogICAgIHZp
cnR1YWwgYm9vbCBzZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKTsKICNlbmRpZgpA
QCAtOTMsMTAgKzkzLDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEZpeGVkVG9WaWV3cG9ydChi
b29sIGZpeGVkKSB7IG1fZml4ZWRUb1ZpZXdwb3J0ID0gZml4ZWQ7IH0KICAgICBib29sIGZpeGVk
VG9WaWV3cG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fZml4ZWRUb1ZpZXdwb3J0OyB9CiAKLSAgICB2
b2lkIGRyYXdSZXBhaW50Q291bnRlcihHcmFwaGljc0NvbnRleHQqKTsKKyAgICBDb2xvciBkZWJ1
Z0JvcmRlckNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z0JvcmRlckNvbG9yOyB9CisgICAg
ZmxvYXQgZGVidWdCb3JkZXJXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdCb3JkZXJXaWR0
aDsgfQorCisgICAgdm9pZCBzZXRSZXBhaW50Q291bnQoaW50IHZhbHVlKTsKKwogcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVkKCk7CiAgICAgdm9pZCBkaWRGbHVzaENv
bXBvc2l0aW5nU3RhdGUoKTsKKyAgICB2b2lkIHVwZGF0ZURlYnVnQm9yZGVyQW5kUmVwYWludENv
dW50KCk7CiAgICAgdm9pZCB1cGRhdGVCYWNraW5nU3RvcmUoKTsKICAgICB2b2lkIHByZXBhcmVC
YWNraW5nU3RvcmUoKTsKICAgICBib29sIHNob3VsZEhhdmVCYWNraW5nU3RvcmUoKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlci5oCmluZGV4IGM3MjQxYTZjOWE3MjJhNjQ1MmY3YzE4YzlkNjY5NzEyNzY2OTM2
NmIuLmQ5NjExNmI3MDk5MzY4YWQ0NDU1OTk2YzFiNzMyMDE2MjcwZGVlYzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXIuaApAQCAtMzYsNyArMzYsNiBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCi0jaW5jbHVkZSAiVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5o
IgogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgogCkBAIC0xMzAsOCArMTI5LDkgQEAgcHVi
bGljOgogICAgICAgICBBbGxFZGdlcyA9IExlZnRFZGdlIHwgUmlnaHRFZGdlIHwgVG9wRWRnZSB8
IEJvdHRvbUVkZ2UsCiAgICAgfTsKIAotICAgIHZpcnR1YWwgdm9pZCBkcmF3Qm9yZGVyKGNvbnN0
IENvbG9yJiwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCA9IFRyYW5zZm9ybWF0
aW9uTWF0cml4KCkpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVyKGlu
dCB2YWx1ZSwgaW50IHBvaW50U2l6ZSwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGRyYXdCb3JkZXIoY29uc3QgQ29sb3ImLCBmbG9hdCBib3Jk
ZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGRyYXdSZXBhaW50Q291bnRlcihpbnQgcmVwYWludENvdW50
LCBjb25zdCBDb2xvciYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYpID0gMDsKKwogICAgIHZpcnR1YWwgdm9pZCBkcmF3VGV4dHVyZShjb25zdCBCaXRtYXBU
ZXh0dXJlJiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiBtb2RlbFZpZXdNYXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBmbG9hdCBvcGFj
aXR5ID0gMS4wZiwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUgPSAwLCB1bnNpZ25l
ZCBleHBvc2VkRWRnZXMgPSBBbGxFZGdlcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3U29s
aWRDb2xvcihjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNv
bnN0IENvbG9yJikgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5j
cHAKaW5kZXggZTg5OTI1MzFiMjg3YzViNTk3NzllNjQ3NmU4MDFiOGI2OTk1YzJjNy4uNGFkZGUy
ZDcyYzUwMGZjMWRiNGY5MjEzNDJlN2MxZDg1MmI4ZjkxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyQmFja2luZ1N0b3JlLmNwcApAQCAtMTA2LDcgKzEwNiw2IEBAIHZvaWQgVGV4dHVyZU1h
cHBlclRpbGU6OnBhaW50KFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uCiB9CiAKIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6VGV4dHVyZU1h
cHBlclRpbGVkQmFja2luZ1N0b3JlKCkKLSAgICA6IG1fZHJhd3NEZWJ1Z0JvcmRlcnMoZmFsc2Up
CiB7CiB9CiAKQEAgLTEzOCwxMSArMTM3LDI0IEBAIHZvaWQgVGV4dHVyZU1hcHBlclRpbGVkQmFj
a2luZ1N0b3JlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlCiAg
ICAgdXBkYXRlQ29udGVudHNGcm9tSW1hZ2VJZk5lZWRlZCh0ZXh0dXJlTWFwcGVyKTsKICAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBhZGp1c3RlZFRyYW5zZm9ybSA9IHRyYW5zZm9ybTsKICAgICBh
ZGp1c3RlZFRyYW5zZm9ybS5tdWx0aXBseShUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6cmVjdFRvUmVj
dChyZWN0KCksIHRhcmdldFJlY3QpKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fdGls
ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fdGlsZXMuc2l6
ZSgpOyArK2kpCiAgICAgICAgIG1fdGlsZXNbaV0ucGFpbnQodGV4dHVyZU1hcHBlciwgYWRqdXN0
ZWRUcmFuc2Zvcm0sIG9wYWNpdHksIG1hc2ssIGNhbGN1bGF0ZUV4cG9zZWRUaWxlRWRnZXMocmVj
dCgpLCBtX3RpbGVzW2ldLnJlY3QoKSkpOwotICAgICAgICBpZiAobV9kcmF3c0RlYnVnQm9yZGVy
cykKLSAgICAgICAgICAgIHRleHR1cmVNYXBwZXItPmRyYXdCb3JkZXIobV9kZWJ1Z0JvcmRlckNv
bG9yLCBtX2RlYnVnQm9yZGVyV2lkdGgsIG1fdGlsZXNbaV0ucmVjdCgpLCBhZGp1c3RlZFRyYW5z
Zm9ybSk7Ci0gICAgfQorfQorCit2b2lkIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6
ZHJhd0JvcmRlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBDb2xvciYgYm9y
ZGVyQ29sb3IsIGZsb2F0IGJvcmRlcldpZHRoLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3Qs
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0pCit7CisgICAgVHJhbnNmb3Jt
YXRpb25NYXRyaXggYWRqdXN0ZWRUcmFuc2Zvcm0gPSB0cmFuc2Zvcm07CisgICAgYWRqdXN0ZWRU
cmFuc2Zvcm0ubXVsdGlwbHkoVHJhbnNmb3JtYXRpb25NYXRyaXg6OnJlY3RUb1JlY3QocmVjdCgp
LCB0YXJnZXRSZWN0KSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3RpbGVzLnNpemUo
KTsgKytpKQorICAgICAgICB0ZXh0dXJlTWFwcGVyLT5kcmF3Qm9yZGVyKGJvcmRlckNvbG9yLCBi
b3JkZXJXaWR0aCwgbV90aWxlc1tpXS5yZWN0KCksIGFkanVzdGVkVHJhbnNmb3JtKTsKK30KKwor
dm9pZCBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OmRyYXdSZXBhaW50Q291bnRlcihU
ZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBpbnQgcmVwYWludENvdW50LCBjb25zdCBDb2xv
ciYgYm9yZGVyQ29sb3IsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSkKK3sKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBh
ZGp1c3RlZFRyYW5zZm9ybSA9IHRyYW5zZm9ybTsKKyAgICBhZGp1c3RlZFRyYW5zZm9ybS5tdWx0
aXBseShUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6cmVjdFRvUmVjdChyZWN0KCksIHRhcmdldFJlY3Qp
KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fdGlsZXMuc2l6ZSgpOyArK2kpCisgICAg
ICAgIHRleHR1cmVNYXBwZXItPmRyYXdSZXBhaW50Q291bnRlcihyZXBhaW50Q291bnQsIGJvcmRl
ckNvbG9yLCBtX3RpbGVzW2ldLnJlY3QoKS5sb2NhdGlvbigpLCBhZGp1c3RlZFRyYW5zZm9ybSk7
CiB9CiAKIHZvaWQgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGVPckRlc3Ry
b3lUaWxlc0lmTmVlZGVkKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgSW50U2l6ZSYgdGls
ZVNpemUsIGJvb2wgaGFzQWxwaGEpCkBAIC0yMzQsMTEgKzI0Niw1IEBAIFBhc3NSZWZQdHI8Qml0
bWFwVGV4dHVyZT4gVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjp0ZXh0dXJlKCkgY29u
c3QKICAgICByZXR1cm4gUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPigpOwogfQogCi12b2lkIFRl
eHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6c2V0RGVidWdCb3JkZXIoY29uc3QgQ29sb3Im
IGNvbG9yLCBmbG9hdCB3aWR0aCkKLXsKLSAgICBtX2RlYnVnQm9yZGVyQ29sb3IgPSBjb2xvcjsK
LSAgICBtX2RlYnVnQm9yZGVyV2lkdGggPSB3aWR0aDsKLX0KLQogfQogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuaAppbmRleCAwZGQyZGY0YjE5OGJkMzExZmQ0MWM1
NWEzMzc3MjE4NGNkMTRiMzRhLi43YmMzNzVhZjVlMjY5YmRjNmI2NmUyNWM2MWViOGE0NDg0MTE5
ZmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmgKQEAgLTQwLDYgKzQw
LDEwIEBAIGNsYXNzIFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUgOiBwdWJsaWMgVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXIsIHB1YmxpYyBSZWZDCiBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNz
UmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0LCBCaXRtYXBUZXh0dXJlKikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVwYWludENvdW50ZXIoVGV4dHVyZU1hcHBlciosIGlu
dCAvKiByZXBhaW50Q291bnQgKi8sIGNvbnN0IENvbG9yJiwgY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgfQogICAgIHZpcnR1YWwgflRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUoKSB7
IH0KIAogcHJvdGVjdGVkOgpAQCAtOTQsMTIgKzk4LDEyIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3QgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0LCBCaXRtYXBU
ZXh0dXJlKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRyYXdCb3JkZXIoVGV4dHVyZU1h
cHBlciosIGNvbnN0IENvbG9yJiwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IGRyYXdSZXBhaW50Q291bnRlcihUZXh0dXJlTWFwcGVyKiwgaW50IHJlcGFpbnRDb3VudCwgY29u
c3QgQ29sb3ImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYp
IE9WRVJSSURFOwogICAgIHZvaWQgdXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciosIEltYWdl
KiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW50UmVjdCYsIEJpdG1hcFRleHR1cmU6OlVwZGF0
ZUNvbnRlbnRzRmxhZyk7CiAgICAgdm9pZCB1cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVyKiwg
R3JhcGhpY3NMYXllciosIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEludFJlY3QmLCBCaXRtYXBU
ZXh0dXJlOjpVcGRhdGVDb250ZW50c0ZsYWcpOwogCiAgICAgdm9pZCBzZXRDb250ZW50c1RvSW1h
Z2UoSW1hZ2UqIGltYWdlKSB7IG1faW1hZ2UgPSBpbWFnZTsgfQotICAgIHZvaWQgc2V0U2hvd0Rl
YnVnQm9yZGVycyhib29sIGRyYXdzRGVidWdCb3JkZXJzKSB7IG1fZHJhd3NEZWJ1Z0JvcmRlcnMg
PSBkcmF3c0RlYnVnQm9yZGVyczsgfQotICAgIHZvaWQgc2V0RGVidWdCb3JkZXIoY29uc3QgQ29s
b3ImLCBmbG9hdCB3aWR0aCk7CiAKIHByaXZhdGU6CiAgICAgVGV4dHVyZU1hcHBlclRpbGVkQmFj
a2luZ1N0b3JlKCk7CkBAIC0xMTAsMTAgKzExNCw2IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFRl
eHR1cmVNYXBwZXJUaWxlPiBtX3RpbGVzOwogICAgIEZsb2F0U2l6ZSBtX3NpemU7CiAgICAgUmVm
UHRyPEltYWdlPiBtX2ltYWdlOwotCi0gICAgYm9vbCBtX2RyYXdzRGVidWdCb3JkZXJzOwotICAg
IENvbG9yIG1fZGVidWdCb3JkZXJDb2xvcjsKLSAgICBmbG9hdCBtX2RlYnVnQm9yZGVyV2lkdGg7
CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCmluZGV4IGI4MjkxOGVjMDJhZWJmYzgyMjNm
MjM4NDI1NmJlMzljM2Q3OTk0YmUuLjY5YzU4NmJhMmI1ZDEwYTk5OGVhNzgzMDJjZjk2MmUyYzRh
YWE4MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCkBAIC0zMDksMTAgKzMwOSwxNiBAQCB2b2lk
IFRleHR1cmVNYXBwZXJHTDo6ZHJhd0JvcmRlcihjb25zdCBDb2xvciYgY29sb3IsIGZsb2F0IHdp
ZHRoLCBjb25zdCBGbG9hdFJlYwogICAgIGRyYXcodGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4
LCBwcm9ncmFtLmdldCgpLCBHcmFwaGljc0NvbnRleHQzRDo6TElORV9MT09QLCBjb2xvci5oYXNB
bHBoYSgpID8gU2hvdWxkQmxlbmQgOiAwKTsKIH0KIAotdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRy
YXdSZXBhaW50Q291bnRlcihpbnQgdmFsdWUsIGludCBwb2ludFNpemUsIGNvbnN0IEZsb2F0UG9p
bnQmIHRhcmdldFBvaW50LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0
cml4KQorc3RhdGljIGlubGluZSBSR0JBMzIgY29udmVydEFCR1JUb0FSR0IoUkdCQTMyIHBpeGVs
KQogeworICAgIHJldHVybiAoKHBpeGVsIDw8IDE2KSAmIDB4ZmYwMDAwKSB8ICgocGl4ZWwgPj4g
MTYpICYgMHhmZikgfCAocGl4ZWwgJiAweGZmMDBmZjAwKTsKK30KKwordm9pZCBUZXh0dXJlTWFw
cGVyR0w6OmRyYXdSZXBhaW50Q291bnRlcihpbnQgcmVwYWludENvdW50LCBjb25zdCBDb2xvciYg
Y29sb3IsIGNvbnN0IEZsb2F0UG9pbnQmIHRhcmdldFBvaW50LCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4KQoreworICAgIHN0YXRpYyBjb25zdCBpbnQgcG9pbnRT
aXplID0gODsKICNpZiBQTEFURk9STShRVCkKLSAgICBRU3RyaW5nIGNvdW50ZXJTdHJpbmcgPSBR
U3RyaW5nOjpudW1iZXIodmFsdWUpOworICAgIFFTdHJpbmcgY291bnRlclN0cmluZyA9IFFTdHJp
bmc6Om51bWJlcihyZXBhaW50Q291bnQpOwogCiAgICAgUUZvbnQgZm9udChRU3RyaW5nOjpmcm9t
TGF0aW4xKCJNb25vc3BhY2UiKSwgcG9pbnRTaXplLCBRRm9udDo6Qm9sZCk7CiAgICAgZm9udC5z
ZXRTdHlsZUhpbnQoUUZvbnQ6OlR5cGVXcml0ZXIpOwpAQCAtMzI3LDcgKzMzMyw3IEBAIHZvaWQg
VGV4dHVyZU1hcHBlckdMOjpkcmF3UmVwYWludENvdW50ZXIoaW50IHZhbHVlLCBpbnQgcG9pbnRT
aXplLCBjb25zdCBGbG9hdFBvCiAKICAgICBRSW1hZ2UgaW1hZ2Uoc2l6ZSwgTmF0aXZlSW1hZ2VR
dDo6ZGVmYXVsdEZvcm1hdEZvckFscGhhRW5hYmxlZEltYWdlcygpKTsKICAgICBRUGFpbnRlciBw
YWludGVyKCZpbWFnZSk7Ci0gICAgcGFpbnRlci5maWxsUmVjdChzb3VyY2VSZWN0LCBRdDo6Ymx1
ZSk7IC8vIFNpbmNlIHdlIHdvbid0IHN3YXAgUitCIGZvciBzcGVlZCwgdGhpcyB3aWxsIHBhaW50
IHJlZC4KKyAgICBwYWludGVyLmZpbGxSZWN0KHNvdXJjZVJlY3QsIGNvbnZlcnRBQkdSVG9BUkdC
KGNvbG9yLnJnYigpKSk7IC8vIFNpbmNlIHdlIHdvbid0IHN3YXAgUitCIGZvciBzcGVlZCwgdGhp
cyB3aWxsIHBhaW50IHRoZSBnaXZlbiBjb2xvci4KICAgICBwYWludGVyLnNldEZvbnQoZm9udCk7
CiAgICAgcGFpbnRlci5zZXRQZW4oUXQ6OndoaXRlKTsKICAgICBwYWludGVyLmRyYXdUZXh0KDIs
IGhlaWdodCAqIDAuODUsIGNvdW50ZXJTdHJpbmcpOwpAQCAtMzM4LDcgKzM0NCw3IEBAIHZvaWQg
VGV4dHVyZU1hcHBlckdMOjpkcmF3UmVwYWludENvdW50ZXIoaW50IHZhbHVlLCBpbnQgcG9pbnRT
aXplLCBjb25zdCBGbG9hdFBvCiAgICAgZHJhd1RleHR1cmUoKnRleHR1cmUsIHRhcmdldFJlY3Qs
IG1vZGVsVmlld01hdHJpeCwgMS4wZiwgMCwgQWxsRWRnZXMpOwogCiAjZWxpZiBVU0UoQ0FJUk8p
Ci0gICAgQ1N0cmluZyBjb3VudGVyU3RyaW5nID0gU3RyaW5nOjpudW1iZXIodmFsdWUpLmFzY2lp
KCk7CisgICAgQ1N0cmluZyBjb3VudGVyU3RyaW5nID0gU3RyaW5nOjpudW1iZXIocmVwYWludENv
dW50KS5hc2NpaSgpOwogICAgIC8vIGNhaXJvX3RleHRfZXh0ZW50cygpIHJlcXVpcmVzIGEgY2Fp
cm9fdCwgc28gZGltZW5zaW9ucyBuZWVkIHRvIGJlIGd1ZXNzdGltYXRlZC4KICAgICBpbnQgd2lk
dGggPSBjb3VudGVyU3RyaW5nLmxlbmd0aCgpICogcG9pbnRTaXplICogMS4yOwogICAgIGludCBo
ZWlnaHQgPSBwb2ludFNpemUgKiAxLjU7CkBAIC0zNDYsNyArMzUyLDkgQEAgdm9pZCBUZXh0dXJl
TWFwcGVyR0w6OmRyYXdSZXBhaW50Q291bnRlcihpbnQgdmFsdWUsIGludCBwb2ludFNpemUsIGNv
bnN0IEZsb2F0UG8KICAgICBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UgPSBjYWlyb19pbWFnZV9z
dXJmYWNlX2NyZWF0ZShDQUlST19GT1JNQVRfQVJHQjMyLCB3aWR0aCwgaGVpZ2h0KTsKICAgICBj
YWlyb190KiBjciA9IGNhaXJvX2NyZWF0ZShzdXJmYWNlKTsKIAotICAgIGNhaXJvX3NldF9zb3Vy
Y2VfcmdiKGNyLCAwLCAwLCAxKTsgLy8gU2luY2Ugd2Ugd29uJ3Qgc3dhcCBSK0IgZm9yIHNwZWVk
LCB0aGlzIHdpbGwgcGFpbnQgcmVkLgorICAgIGZsb2F0IHIsIGcsIGIsIGE7CisgICAgY29sb3Iu
Z2V0UkdCQShyLCBnLCBiLCBhKTsKKyAgICBjYWlyb19zZXRfc291cmNlX3JnYmEoY3IsIGIsIGcs
IHIsIGEpOyAvLyBTaW5jZSB3ZSB3b24ndCBzd2FwIFIrQiBmb3Igc3BlZWQsIHRoaXMgd2lsbCBw
YWludCB0aGUgZ2l2ZW4gY29sb3IuCiAgICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLCAwLCAwLCB3aWR0
aCwgaGVpZ2h0KTsKICAgICBjYWlyb19maWxsKGNyKTsKIApAQCAtMzcwLDcgKzM3OCw3IEBAIHZv
aWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3UmVwYWludENvdW50ZXIoaW50IHZhbHVlLCBpbnQgcG9p
bnRTaXplLCBjb25zdCBGbG9hdFBvCiAgICAgY2Fpcm9fZGVzdHJveShjcik7CiAKICNlbHNlCi0g
ICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKKyAgICBVTlVTRURfUEFSQU0ocmVwYWludENvdW50KTsK
ICAgICBVTlVTRURfUEFSQU0ocG9pbnRTaXplKTsKICAgICBVTlVTRURfUEFSQU0odGFyZ2V0UG9p
bnQpOwogICAgIFVOVVNFRF9QQVJBTShtb2RlbFZpZXdNYXRyaXgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5o
CmluZGV4IDE2MDUwN2M2MDY4ZmVmYzM1NDg0MzBmYmVkYWFmMzUwNjNkOTc0MTYuLjk4M2UyYTA2
YzNjNDNkNjNhYTllYmExYWY2YzFhMWQ4ZGY1OTNkZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmgKQEAg
LTUyLDggKzUyLDggQEAgcHVibGljOgogICAgIHR5cGVkZWYgaW50IEZsYWdzOwogCiAgICAgLy8g
VGV4dHVyZU1hcHBlciBpbXBsZW1lbnRhdGlvbgotICAgIHZpcnR1YWwgdm9pZCBkcmF3Qm9yZGVy
KGNvbnN0IENvbG9yJiwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0
UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCA9IFRyYW5z
Zm9ybWF0aW9uTWF0cml4KCkpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVwYWlu
dENvdW50ZXIoaW50IHZhbHVlLCBpbnQgcG9pbnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCA9IFRyYW5zZm9ybWF0aW9u
TWF0cml4KCkpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkcmF3Qm9yZGVyKGNvbnN0IENv
bG9yJiwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRyYXdSZXBhaW50Q291
bnRlcihpbnQgcmVwYWludENvdW50LCBjb25zdCBDb2xvciYsIGNvbnN0IEZsb2F0UG9pbnQmLCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBk
cmF3VGV4dHVyZShjb25zdCBCaXRtYXBUZXh0dXJlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5LCBjb25zdCBCaXRtYXBUZXh0dXJl
KiBtYXNrVGV4dHVyZSwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgZHJhd1RleHR1cmUoUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlLCBGbGFncywgY29u
c3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwg
Y29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUsIHVuc2lnbmVkIGV4cG9zZWRFZGdlcyA9
IEFsbEVkZ2VzKTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1NvbGlkQ29sb3IoY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBDb2xvciYpIE9WRVJSSURF
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcAppbmRleCA5MjkwNTNiMTJi
NzQwMjU4NGM1NDg3YTM4YWI4MGZjZGIxYTExMGI4Li42OWZkNzM4ZjU4ZmM5MTQ1MTdiOTlhOTdl
NDA3MzM5MTZjMzY3ZGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNw
cApAQCAtMjUsNiArMjUsNyBAQAogI2lmIFBMQVRGT1JNKFFUKQogI2luY2x1ZGUgIk5hdGl2ZUlt
YWdlUXQuaCIKICNlbmRpZgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAKIAogI2lmIFVT
RShURVhUVVJFX01BUFBFUikKQEAgLTE2NCw2ICsxNjUsMTYgQEAgdm9pZCBUZXh0dXJlTWFwcGVy
SW1hZ2VCdWZmZXI6OmRyYXdTb2xpZENvbG9yKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3Qg
VHJhbnMKICAgICBjb250ZXh0LT5yZXN0b3JlKCk7CiB9CiAKK3ZvaWQgVGV4dHVyZU1hcHBlcklt
YWdlQnVmZmVyOjpkcmF3Qm9yZGVyKGNvbnN0IENvbG9yJiwgZmxvYXQgLyogYm9yZGVyV2lkdGgg
Ki8sIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JikKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFRleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlcjo6
ZHJhd1JlcGFpbnRDb3VudGVyKGludCAvKiByZXBhaW50Q291bnQgKi8sIGNvbnN0IENvbG9yJiwg
Y29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JikKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogUGFzc1JlZlB0
cjxCaXRtYXBUZXh0dXJlPiBCaXRtYXBUZXh0dXJlSW1hZ2VCdWZmZXI6OmFwcGx5RmlsdGVycyhU
ZXh0dXJlTWFwcGVyKiwgY29uc3QgQml0bWFwVGV4dHVyZSYgY29udGVudFRleHR1cmUsIGNvbnN0
IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdl
QnVmZmVyLmgKaW5kZXggOWRlNmQ0Y2JkNWViMTdlOTM0ODgwMThhNjJhNzEzMWQ4OTczODRlYi4u
NWIyZTk3ODNkNjljMDU4NjM5MjcyYTJiNjMxYzc2YWUxMDU3M2QzYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1
ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVySW1hZ2VCdWZmZXIuaApAQCAtNTMsMTQgKzUzLDggQEAgcHVibGljOgogICAgIHN0
YXRpYyBQYXNzT3duUHRyPFRleHR1cmVNYXBwZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UHRy
KG5ldyBUZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIpOyB9CiAKICAgICAvLyBUZXh0dXJlTWFwcGVy
IGltcGxlbWVudGF0aW9uCi0gICAgdmlydHVhbCB2b2lkIGRyYXdCb3JkZXIoY29uc3QgQ29sb3Im
LCBmbG9hdCAvKiBib3JkZXJXaWR0aCAqLywgY29uc3QgRmxvYXRSZWN0JiAvKiB0YXJnZXRSZWN0
ICovLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4ID0gVHJhbnNm
b3JtYXRpb25NYXRyaXgoKSkgT1ZFUlJJREUKLSAgICB7Ci0gICAgICAgIFVOVVNFRF9QQVJBTSht
b2RlbFZpZXdNYXRyaXgpOwotICAgIH07Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdSZXBhaW50Q291
bnRlcihpbnQgLyogdmFsdWUgKi8sIGludCAvKiBwb2ludFNpemUgKi8sIGNvbnN0IEZsb2F0UG9p
bnQmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4ID0gVHJhbnNm
b3JtYXRpb25NYXRyaXgoKSkgT1ZFUlJJREUKLSAgICB7Ci0gICAgICAgIFVOVVNFRF9QQVJBTSht
b2RlbFZpZXdNYXRyaXgpOwotICAgIH07CisgICAgdmlydHVhbCB2b2lkIGRyYXdCb3JkZXIoY29u
c3QgQ29sb3ImLCBmbG9hdCBib3JkZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlcGFp
bnRDb3VudGVyKGludCByZXBhaW50Q291bnQsIGNvbnN0IENvbG9yJiwgY29uc3QgRmxvYXRQb2lu
dCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIGRyYXdUZXh0dXJlKGNvbnN0IEJpdG1hcFRleHR1cmUmLCBjb25zdCBGbG9hdFJlY3QmIHRh
cmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgb3BhY2l0eSwgY29u
c3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUsIHVuc2lnbmVkIGV4cG9zZWRFZGdlcykgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdTb2xpZENvbG9yKGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgQ29sb3ImKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgYmVnaW5DbGlwKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29u
c3QgRmxvYXRSZWN0JikgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCmluZGV4
IDVkZmExODM4ZWQ0YjRjMjE4NDc1MDQzNDZlZWYwMzY0MzliNTFhOWIuLmM2NGE3NzM0NmY0ZmMx
NjExNzFlM2I3ZjdiZjBmMDlkNDBjNTA4OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3Bw
CkBAIC0xMjksNiArMTI5LDggQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50U2VsZihj
b25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBvcHRpb25zKQogCiAgICAgaWYgKG1fc3Rh
dGUuc29saWRDb2xvci5pc1ZhbGlkKCkgJiYgIW1fc3RhdGUuY29udGVudHNSZWN0LmlzRW1wdHko
KSkgewogICAgICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmRyYXdTb2xpZENvbG9yKG1fc3Rh
dGUuY29udGVudHNSZWN0LCB0cmFuc2Zvcm0sIGJsZW5kV2l0aE9wYWNpdHkobV9zdGF0ZS5zb2xp
ZENvbG9yLCBvcGFjaXR5KSk7CisgICAgICAgIGlmIChtX3N0YXRlLnNob3dEZWJ1Z0JvcmRlcnMp
CisgICAgICAgICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmRyYXdCb3JkZXIobV9zdGF0ZS5k
ZWJ1Z0JvcmRlckNvbG9yLCBtX3N0YXRlLmRlYnVnQm9yZGVyV2lkdGgsIGxheWVyUmVjdCgpLCB0
cmFuc2Zvcm0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMzYsMTEgKzEzOCwxOCBA
QCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxmKGNvbnN0IFRleHR1cmVNYXBwZXJQ
YWludE9wdGlvbnMmIG9wdGlvbnMpCiAgICAgICAgIEFTU0VSVChtX3N0YXRlLmRyYXdzQ29udGVu
dCAmJiBtX3N0YXRlLmNvbnRlbnRzVmlzaWJsZSAmJiAhbV9zdGF0ZS5zaXplLmlzRW1wdHkoKSk7
CiAgICAgICAgIEFTU0VSVCghbGF5ZXJSZWN0KCkuaXNFbXB0eSgpKTsKICAgICAgICAgbV9iYWNr
aW5nU3RvcmUtPnBhaW50VG9UZXh0dXJlTWFwcGVyKG9wdGlvbnMudGV4dHVyZU1hcHBlciwgbGF5
ZXJSZWN0KCksIHRyYW5zZm9ybSwgb3BhY2l0eSwgbWFzay5nZXQoKSk7CisgICAgICAgIGlmICht
X3N0YXRlLnNob3dEZWJ1Z0JvcmRlcnMpCisgICAgICAgICAgICBtX2JhY2tpbmdTdG9yZS0+ZHJh
d0JvcmRlcihvcHRpb25zLnRleHR1cmVNYXBwZXIsIG1fc3RhdGUuZGVidWdCb3JkZXJDb2xvciwg
bV9zdGF0ZS5kZWJ1Z0JvcmRlcldpZHRoLCBsYXllclJlY3QoKSwgdHJhbnNmb3JtKTsKKyAgICAg
ICAgLy8gRHJhdyB0aGUgcmVwYWludCBjb3VudCBvZiBvbmx5IGEgYmFja2luZyBzdG9yZS4KKyAg
ICAgICAgaWYgKG1fc3RhdGUuc2hvd1JlcGFpbnRDb3VudGVyKQorICAgICAgICAgICAgbV9iYWNr
aW5nU3RvcmUtPmRyYXdSZXBhaW50Q291bnRlcihvcHRpb25zLnRleHR1cmVNYXBwZXIsIG1fc3Rh
dGUucmVwYWludENvdW50LCBtX3N0YXRlLmRlYnVnQm9yZGVyQ29sb3IsIGxheWVyUmVjdCgpLCB0
cmFuc2Zvcm0pOwogICAgIH0KIAogICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIpIHsKICAgICAgICAg
QVNTRVJUKCFsYXllclJlY3QoKS5pc0VtcHR5KCkpOwogICAgICAgICBtX2NvbnRlbnRzTGF5ZXIt
PnBhaW50VG9UZXh0dXJlTWFwcGVyKG9wdGlvbnMudGV4dHVyZU1hcHBlciwgbV9zdGF0ZS5jb250
ZW50c1JlY3QsIHRyYW5zZm9ybSwgb3BhY2l0eSwgbWFzay5nZXQoKSk7CisgICAgICAgIGlmICht
X3N0YXRlLnNob3dEZWJ1Z0JvcmRlcnMpCisgICAgICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPmRy
YXdCb3JkZXIob3B0aW9ucy50ZXh0dXJlTWFwcGVyLCBtX3N0YXRlLmRlYnVnQm9yZGVyQ29sb3Is
IG1fc3RhdGUuZGVidWdCb3JkZXJXaWR0aCwgbV9zdGF0ZS5jb250ZW50c1JlY3QsIHRyYW5zZm9y
bSk7CiAgICAgfQogfQogCkBAIC0zODMsOCArMzkyLDYgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5
ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoR3JhcGhpY3NMYXllclRl
eHQKICAgICBpZiAoY2hhbmdlTWFzayA9PSBOb0NoYW5nZXMgJiYgZ3JhcGhpY3NMYXllci0+bV9h
bmltYXRpb25zLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ3JhcGhpY3NMYXll
ci0+dXBkYXRlRGVidWdJbmRpY2F0b3JzKCk7Ci0KICAgICBpZiAoY2hhbmdlTWFzayAmIENoaWxk
cmVuQ2hhbmdlKQogICAgICAgICBzZXRDaGlsZHJlbihncmFwaGljc0xheWVyLT5jaGlsZHJlbigp
KTsKIApAQCAtNDAxLDYgKzQwOCw5IEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpmbHVzaENv
bXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KEdyYXBoaWNzTGF5ZXJUZXh0CiAgICAgaWYg
KGNoYW5nZU1hc2sgJiBBbmltYXRpb25DaGFuZ2UpCiAgICAgICAgIG1fYW5pbWF0aW9ucyA9IGdy
YXBoaWNzTGF5ZXItPm1fYW5pbWF0aW9uczsKIAorICAgIGlmIChjaGFuZ2VNYXNrICYgUmVwYWlu
dENvdW50Q2hhbmdlKQorICAgICAgICBtX3N0YXRlLnJlcGFpbnRDb3VudCA9IGdyYXBoaWNzTGF5
ZXItPnJlcGFpbnRDb3VudCgpOworCiAgICAgbV9zdGF0ZS5tYXNrTGF5ZXIgPSB0b1RleHR1cmVN
YXBwZXJMYXllcihncmFwaGljc0xheWVyLT5tYXNrTGF5ZXIoKSk7CiAgICAgbV9zdGF0ZS5yZXBs
aWNhTGF5ZXIgPSB0b1RleHR1cmVNYXBwZXJMYXllcihncmFwaGljc0xheWVyLT5yZXBsaWNhTGF5
ZXIoKSk7CiAgICAgbV9zdGF0ZS5wb3MgPSBncmFwaGljc0xheWVyLT5wb3NpdGlvbigpOwpAQCAt
NDIzLDYgKzQzMywxMSBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6Zmx1c2hDb21wb3NpdGlu
Z1N0YXRlRm9yVGhpc0xheWVyT25seShHcmFwaGljc0xheWVyVGV4dAogI2VuZGlmCiAgICAgbV9m
aXhlZFRvVmlld3BvcnQgPSBncmFwaGljc0xheWVyLT5maXhlZFRvVmlld3BvcnQoKTsKIAorICAg
IG1fc3RhdGUuc2hvd0RlYnVnQm9yZGVycyA9IGdyYXBoaWNzTGF5ZXItPmlzU2hvd2luZ0RlYnVn
Qm9yZGVyKCk7CisgICAgbV9zdGF0ZS5kZWJ1Z0JvcmRlckNvbG9yID0gdG9HcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlcihncmFwaGljc0xheWVyKS0+ZGVidWdCb3JkZXJDb2xvcigpOworICAgIG1f
c3RhdGUuZGVidWdCb3JkZXJXaWR0aCA9IHRvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIoZ3Jh
cGhpY3NMYXllciktPmRlYnVnQm9yZGVyV2lkdGgoKTsKKyAgICBtX3N0YXRlLnNob3dSZXBhaW50
Q291bnRlciA9IGdyYXBoaWNzTGF5ZXItPmlzU2hvd2luZ1JlcGFpbnRDb3VudGVyKCk7CisKICAg
ICBtX2NvbnRlbnRzTGF5ZXIgPSBncmFwaGljc0xheWVyLT5wbGF0Zm9ybUxheWVyKCk7CiAKICAg
ICBtX2N1cnJlbnRUcmFuc2Zvcm0uc2V0UG9zaXRpb24oYWRqdXN0ZWRQb3NpdGlvbigpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyTGF5ZXIuaAppbmRleCBmNDFlNTJhOTdjNGIzMjhjNDRjZjY1MGFlZTM0Y2Qz
MDBhNDY1MzlhLi41NzViYjI3ZWI3YTg3NGMxODRiNTgxZWQyYmQ0MzVkMTAxNWE4M2IxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJMYXllci5oCkBAIC03MSw3ICs3MSwxMCBAQCBwdWJsaWM6CiAKICAgICAg
ICAgUmVwbGljYUxheWVyQ2hhbmdlID0gICAgICAgICgxTCA8PCAyMSksCiAgICAgICAgIEFuaW1h
dGlvbkNoYW5nZSA9ICAgICAgICAgICAoMUwgPDwgMjIpLAotICAgICAgICBGaWx0ZXJDaGFuZ2Ug
PSAgICAgICAgICAgICAgKDFMIDw8IDIzKQorICAgICAgICBGaWx0ZXJDaGFuZ2UgPSAgICAgICAg
ICAgICAgKDFMIDw8IDIzKSwKKworICAgICAgICBEZWJ1Z1Zpc3VhbHNDaGFuZ2UgPSAgICAgICAg
KDFMIDw8IDI0KSwKKyAgICAgICAgUmVwYWludENvdW50Q2hhbmdlID0gICAgICAgICgxTCA8PCAy
NSkKICAgICB9OwogCiAgICAgVGV4dHVyZU1hcHBlckxheWVyKCkKQEAgLTE3Miw2ICsxNzUsOSBA
QCBwcml2YXRlOgogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKICAgICAgICAgRmlsdGVyT3BlcmF0
aW9ucyBmaWx0ZXJzOwogI2VuZGlmCisgICAgICAgIENvbG9yIGRlYnVnQm9yZGVyQ29sb3I7Cisg
ICAgICAgIGZsb2F0IGRlYnVnQm9yZGVyV2lkdGg7CisgICAgICAgIGludCByZXBhaW50Q291bnQ7
CiAKICAgICAgICAgYm9vbCBwcmVzZXJ2ZXMzRCA6IDE7CiAgICAgICAgIGJvb2wgbWFza3NUb0Jv
dW5kcyA6IDE7CkBAIC0xODAsMTEgKzE4NiwxNSBAQCBwcml2YXRlOgogICAgICAgICBib29sIGNv
bnRlbnRzT3BhcXVlIDogMTsKICAgICAgICAgYm9vbCBiYWNrZmFjZVZpc2liaWxpdHkgOiAxOwog
ICAgICAgICBib29sIHZpc2libGUgOiAxOworICAgICAgICBib29sIHNob3dEZWJ1Z0JvcmRlcnMg
OiAxOworICAgICAgICBib29sIHNob3dSZXBhaW50Q291bnRlciA6IDE7CiAKICAgICAgICAgU3Rh
dGUoKQogICAgICAgICAgICAgOiBvcGFjaXR5KDEpCiAgICAgICAgICAgICAsIG1hc2tMYXllcigw
KQogICAgICAgICAgICAgLCByZXBsaWNhTGF5ZXIoMCkKKyAgICAgICAgICAgICwgZGVidWdCb3Jk
ZXJXaWR0aCgwKQorICAgICAgICAgICAgLCByZXBhaW50Q291bnQoMCkKICAgICAgICAgICAgICwg
cHJlc2VydmVzM0QoZmFsc2UpCiAgICAgICAgICAgICAsIG1hc2tzVG9Cb3VuZHMoZmFsc2UpCiAg
ICAgICAgICAgICAsIGRyYXdzQ29udGVudChmYWxzZSkKQEAgLTE5Miw2ICsyMDIsOCBAQCBwcml2
YXRlOgogICAgICAgICAgICAgLCBjb250ZW50c09wYXF1ZShmYWxzZSkKICAgICAgICAgICAgICwg
YmFja2ZhY2VWaXNpYmlsaXR5KGZhbHNlKQogICAgICAgICAgICAgLCB2aXNpYmxlKHRydWUpCisg
ICAgICAgICAgICAsIHNob3dEZWJ1Z0JvcmRlcnMoZmFsc2UpCisgICAgICAgICAgICAsIHNob3dS
ZXBhaW50Q291bnRlcihmYWxzZSkKICAgICAgICAgewogICAgICAgICB9CiAgICAgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgKaW5kZXggMzhhZjAzZTg5YjYyNDgxYWJh
ZjMyMDk4YzNhODE3YWI0ZDAwMGMxZS4uZjQ4Nzk1MjY3NjgwMTkwODVjYmRlZjg5ZTY2ZWU0N2Rl
ZjgxMDExNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgKQEAgLTI0
LDE4ICsyNCwyMCBAQAogI2luY2x1ZGUgIkdyYXBoaWNzU3VyZmFjZS5oIgogI2VuZGlmCiAKKyNp
bmNsdWRlICJUZXh0dXJlTWFwcGVyLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXgu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBUZXh0dXJlTWFwcGVyOwotY2xhc3Mg
Qml0bWFwVGV4dHVyZTsKLQogY2xhc3MgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIgewogcHVi
bGljOgogICAgIHZpcnR1YWwgflRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyKCkgeyB9CiAgICAg
dmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4ID0g
VHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgZmxvYXQgb3BhY2l0eSA9IDEuMCwgQml0bWFwVGV4dHVy
ZSogbWFzayA9IDApID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3dhcEJ1ZmZlcnMoKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZHJhd0JvcmRlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBj
b25zdCBDb2xvciYgY29sb3IsIGZsb2F0IGJvcmRlcldpZHRoLCBjb25zdCBGbG9hdFJlY3QmIHRh
cmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0pCisgICAgewor
ICAgICAgICB0ZXh0dXJlTWFwcGVyLT5kcmF3Qm9yZGVyKGNvbG9yLCBib3JkZXJXaWR0aCwgdGFy
Z2V0UmVjdCwgdHJhbnNmb3JtKTsKKyAgICB9CiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCiAg
ICAgdmlydHVhbCBJbnRTaXplIHBsYXRmb3JtTGF5ZXJTaXplKCkgY29uc3QgeyByZXR1cm4gSW50
U2l6ZSgpOyB9CiAgICAgdmlydHVhbCB1aW50MzJfdCBjb3B5VG9HcmFwaGljc1N1cmZhY2UoKSB7
IHJldHVybiAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcu
Y3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAppbmRleCA1OTQ1MWE5NWU0
ZmFmY2E2NTUzMTcyMjRkOTUzOWY2MWU1NDIwMzExLi5hMzdmZjNhZDFlMTA3NTY1ZDJmMWQxODJk
MGI2NjQ0ZDg4NDliOGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3Zp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKQEAgLTgzOSw2
ICs4MzksOSBAQCBzdGF0aWMgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBfZXdrX3ZpZXdfcHJpdl9u
ZXcoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQogICAgIHByaXYtPnBhZ2VTZXR0aW5n
cy0+c2V0SW50ZXJhY3RpdmVGb3JtVmFsaWRhdGlvbkVuYWJsZWQodHJ1ZSk7CiAjaWYgVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIHByaXYtPnBhZ2VTZXR0aW5ncy0+c2V0QWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoZmFsc2UpOworICAgIGJvb2wgc2hvd0RlYnVnVmlzdWFs
cyA9IFN0cmluZyhnZXRlbnYoIldFQktJVF9TSE9XX0NPTVBPU0lUSU5HX0RFQlVHX1ZJU1VBTFMi
KSkgPT0gIjEiOworICAgIHByaXYtPnBhZ2VTZXR0aW5ncy0+c2V0U2hvd0RlYnVnQm9yZGVycyhz
aG93RGVidWdWaXN1YWxzKTsKKyAgICBwcml2LT5wYWdlU2V0dGluZ3MtPnNldFNob3dSZXBhaW50
Q291bnRlcihzaG93RGVidWdWaXN1YWxzKTsKICNlbmRpZgogCiAgICAgdXJsID0gcHJpdi0+cGFn
ZVNldHRpbmdzLT51c2VyU3R5bGVTaGVldExvY2F0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKaW5kZXggMjkzMTBkNGU5ZmU0ODE0NTcwM2Q5OTRmNGQx
ZTlkMDc2YTQyMDhlZS4uMjhkZGYzMWQ0MDE2MTM0MDYyYzFhMzhjNzQ4Mjg1NzVhZmIzODY5OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcApAQCAtMzQzNSw2
ICszNDM1LDkgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aW5ncyhX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5H
KQogICAgIGNvcmVTZXR0aW5ncy0+c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoc2V0
dGluZ3NQcml2YXRlLT5lbmFibGVBY2NlbGVyYXRlZENvbXBvc2l0aW5nKTsKKyAgICBib29sIHNo
b3dEZWJ1Z1Zpc3VhbHMgPSBTdHJpbmcoZ2V0ZW52KCJXRUJLSVRfU0hPV19DT01QT1NJVElOR19E
RUJVR19WSVNVQUxTIikpID09ICIxIjsKKyAgICBjb3JlU2V0dGluZ3MtPnNldFNob3dEZWJ1Z0Jv
cmRlcnMoc2hvd0RlYnVnVmlzdWFscyk7CisgICAgY29yZVNldHRpbmdzLT5zZXRTaG93UmVwYWlu
dENvdW50ZXIoc2hvd0RlYnVnVmlzdWFscyk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfQVVE
SU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwIGIv
U291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcAppbmRleCBmOGU0OTk4MzU4YWZi
ZWNiNzhhNWIwMzA2MGFkY2I2NTRkZDBlMTRlLi5mMDc1MjVjNDEwNjI4ZTJjYjA5YWFjODRhODQw
MjVkMWQ3ZmRhODk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGlu
Z3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAKQEAgLTE1
MCw2ICsxNTAsMTAgQEAgdm9pZCBRV2ViU2V0dGluZ3NQcml2YXRlOjphcHBseSgpCiAgICAgICAg
IHNldHRpbmdzLT5zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yQW5pbWF0aW9uRW5hYmxlZCh2
YWx1ZSk7CiAgICAgICAgIHNldHRpbmdzLT5zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yVmlk
ZW9FbmFibGVkKGZhbHNlKTsKICAgICAgICAgc2V0dGluZ3MtPnNldEFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdGb3JQbHVnaW5zRW5hYmxlZChmYWxzZSk7CisKKyAgICAgICAgYm9vbCBzaG93RGVidWdW
aXN1YWxzID0gcWdldGVudigiUVRfV0VCS0lUX1NIT1dfQ09NUE9TSVRJTkdfREVCVUdfVklTVUFM
UyIpID09ICIxIjsKKyAgICAgICAgc2V0dGluZ3MtPnNldFNob3dEZWJ1Z0JvcmRlcnMoc2hvd0Rl
YnVnVmlzdWFscyk7CisgICAgICAgIHNldHRpbmdzLT5zZXRTaG93UmVwYWludENvdW50ZXIoc2hv
d0RlYnVnVmlzdWFscyk7CiAjZW5kaWYKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgICAgIHZhbHVl
ID0gYXR0cmlidXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6OldlYkdMRW5hYmxlZCwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
TGF5ZXJJbmZvLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZExheWVySW5mby5oCmluZGV4IDY1MjA1NmRkODEwNDIzNjQwZmNmNjk2OTA1YTdk
ZTczN2Q2ZDRiOWUuLmNmMWYwM2VkYmJiYjJlNTEyZjY5ZWJhYjljM2YyMzBlYzRhMWYzMjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkTGF5ZXJJbmZvLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllckluZm8uaApAQCAtNDMsNiArNDMsNyBAQCBzdHJ1Y3Qg
Q29vcmRpbmF0ZWRMYXllckluZm8gewogICAgICAgICAsIG1hc2soSW52YWxpZENvb3JkaW5hdGVk
TGF5ZXJJRCkKICAgICAgICAgLCBpbWFnZUlEKEludmFsaWRDb29yZGluYXRlZEltYWdlQmFja2lu
Z0lEKQogICAgICAgICAsIG9wYWNpdHkoMCkKKyAgICAgICAgLCBkZWJ1Z0JvcmRlcldpZHRoKDAp
CiAgICAgICAgICwgZmxhZ3MoMCkgeyB9CiAKICAgICBDb29yZGluYXRlZExheWVySUQgcmVwbGlj
YTsKQEAgLTU3LDYgKzU4LDggQEAgc3RydWN0IENvb3JkaW5hdGVkTGF5ZXJJbmZvIHsKICAgICBX
ZWJDb3JlOjpJbnRSZWN0IGNvbnRlbnRzUmVjdDsKICAgICBmbG9hdCBvcGFjaXR5OwogICAgIFdl
YkNvcmU6OkNvbG9yIHNvbGlkQ29sb3I7CisgICAgV2ViQ29yZTo6Q29sb3IgZGVidWdCb3JkZXJD
b2xvcjsKKyAgICBmbG9hdCBkZWJ1Z0JvcmRlcldpZHRoOwogCiAgICAgdW5pb24gewogICAgICAg
ICBzdHJ1Y3QgewpAQCAtNjgsNiArNzEsOCBAQCBzdHJ1Y3QgQ29vcmRpbmF0ZWRMYXllckluZm8g
ewogICAgICAgICAgICAgYm9vbCBwcmVzZXJ2ZXMzRCA6IDE7CiAgICAgICAgICAgICBib29sIGlz
Um9vdExheWVyOiAxOwogICAgICAgICAgICAgYm9vbCBmaXhlZFRvVmlld3BvcnQgOiAxOworICAg
ICAgICAgICAgYm9vbCBzaG93RGVidWdCb3JkZXJzIDogMTsKKyAgICAgICAgICAgIGJvb2wgc2hv
d1JlcGFpbnRDb3VudGVyIDogMTsKICAgICAgICAgfTsKICAgICAgICAgdW5zaWduZWQgZmxhZ3M7
CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3
a1ZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJ
bXBsLmNwcAppbmRleCAyNGMzOTFmNWYyZjMzNDM2MjIyMzM1NTM3ZDQyYWFlZTc0NzU1NDMwLi44
NzU1Y2FiMGE2Y2NhOThhMzQ5NDdjMDNmMTNjYzhjZDZmMTUwNjM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwCkBAIC0xNTEsNiArMTUx
LDkgQEAgRXdrVmlld0ltcGw6OkV3a1ZpZXdJbXBsKEV2YXNfT2JqZWN0KiB2aWV3LCBQYXNzUmVm
UHRyPEV3a0NvbnRleHQ+IGNvbnRleHQsIFBhc3MKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJ
Q1MpCiAgICAgbV9wYWdlUHJveHktPnBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygpLT5zZXRBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZCh0cnVlKTsKICAgICBtX3BhZ2VQcm94eS0+cGFnZUdy
b3VwKCktPnByZWZlcmVuY2VzKCktPnNldEZvcmNlQ29tcG9zaXRpbmdNb2RlKHRydWUpOworICAg
IGJvb2wgc2hvd0RlYnVnVmlzdWFscyA9IFN0cmluZyhnZXRlbnYoIldFQktJVF9TSE9XX0NPTVBP
U0lUSU5HX0RFQlVHX1ZJU1VBTFMiKSkgPT0gIjEiOworICAgIG1fcGFnZVByb3h5LT5wYWdlR3Jv
dXAoKS0+cHJlZmVyZW5jZXMoKS0+c2V0Q29tcG9zaXRpbmdCb3JkZXJzVmlzaWJsZShzaG93RGVi
dWdWaXN1YWxzKTsKKyAgICBtX3BhZ2VQcm94eS0+cGFnZUdyb3VwKCktPnByZWZlcmVuY2VzKCkt
PnNldENvbXBvc2l0aW5nUmVwYWludENvdW50ZXJzVmlzaWJsZShzaG93RGVidWdWaXN1YWxzKTsK
ICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgbV9wYWdlUHJveHktPnBhZ2VHcm91cCgpLT5wcmVmZXJl
bmNlcygpLT5zZXRXZWJHTEVuYWJsZWQodHJ1ZSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcAppbmRleCBiZjFlZGUw
NTcwYmE2YzI5ZjVkOWNkYmUxYmZjYTA1YTc4ZDA3YmYwLi43OThjOGJmYjc1M2ExNGQ3YTVlZDY4
Yjc5YmM1MzhhYzQ3YWE5ZDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuY3BwCkBAIC0yNTcsNyArMjU3LDEyIEBAIHN0YXRpYyB2
b2lkIHdlYktpdFNldHRpbmdzU2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9w
SWQsIGNvbnN0IEdWYWx1CiAgICAgICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfbWVkaWFfcGxheWJh
Y2tfYWxsb3dzX2lubGluZShzZXR0aW5ncywgZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIFBST1BfRFJBV19DT01QT1NJVElOR19JTkRJQ0FUT1JT
OgotICAgICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2RyYXdfY29tcG9zaXRpbmdfaW5kaWNhdG9y
cyhzZXR0aW5ncywgZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOworICAgICAgICBpZiAoZ192
YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpCisgICAgICAgICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0
X2RyYXdfY29tcG9zaXRpbmdfaW5kaWNhdG9ycyhzZXR0aW5ncywgZ192YWx1ZV9nZXRfYm9vbGVh
bih2YWx1ZSkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGJvb2wgc2hvd0RlYnVnVmlz
dWFscyA9IFN0cmluZyhnZXRlbnYoIldFQktJVF9TSE9XX0NPTVBPU0lUSU5HX0RFQlVHX1ZJU1VB
TFMiKSkgPT0gIjEiOworICAgICAgICAgICAgd2Via2l0X3NldHRpbmdzX3NldF9kcmF3X2NvbXBv
c2l0aW5nX2luZGljYXRvcnMoc2V0dGluZ3MsIHNob3dEZWJ1Z1Zpc3VhbHMpOworICAgICAgICB9
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9FTkFCTEVfU0lURV9TUEVDSUZJQ19RVUlS
S1M6CiAgICAgICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3NpdGVfc3BlY2lmaWNfcXVp
cmtzKHNldHRpbmdzLCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcAppbmRleCAyMDUzMDc5
YjBiNDJlY2ViODE4MmJkMGE4ZTY2NzI4YzU5OTE5ZTMyLi5hYzkwMzQyZTAyNjI4MjY4ZjQ1OWY0
NGVjZTBlYjUyYTRlN2EwNmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvcXF1aWNrd2Vidmlldy5jcHAKQEAgLTMyMyw2ICszMjMsOSBAQCB2b2lkIFFRdWlja1dl
YlZpZXdQcml2YXRlOjppbml0aWFsaXplKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VH
cm91cFJlZiBwYQogICAgIC8vIEFueSBwYWdlIHNldHRpbmcgc2hvdWxkIHByZWZlcnJhYmxlIGJl
IHNldCBiZWZvcmUgY3JlYXRpbmcgdGhlIHBhZ2UuCiAgICAgd2ViUGFnZVByb3h5LT5wYWdlR3Jv
dXAoKS0+cHJlZmVyZW5jZXMoKS0+c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQodHJ1
ZSk7CiAgICAgd2ViUGFnZVByb3h5LT5wYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKS0+c2V0Rm9y
Y2VDb21wb3NpdGluZ01vZGUodHJ1ZSk7CisgICAgYm9vbCBzaG93RGVidWdWaXN1YWxzID0gcWdl
dGVudigiUVRfV0VCS0lUX1NIT1dfQ09NUE9TSVRJTkdfREVCVUdfVklTVUFMUyIpID09ICIxIjsK
KyAgICB3ZWJQYWdlUHJveHktPnBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygpLT5zZXRDb21wb3Np
dGluZ0JvcmRlcnNWaXNpYmxlKHNob3dEZWJ1Z1Zpc3VhbHMpOworICAgIHdlYlBhZ2VQcm94eS0+
cGFnZUdyb3VwKCktPnByZWZlcmVuY2VzKCktPnNldENvbXBvc2l0aW5nUmVwYWludENvdW50ZXJz
VmlzaWJsZShzaG93RGVidWdWaXN1YWxzKTsKICAgICB3ZWJQYWdlUHJveHktPnBhZ2VHcm91cCgp
LT5wcmVmZXJlbmNlcygpLT5zZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKHRydWUpOwogICAgIHdl
YlBhZ2VQcm94eS0+cGFnZUdyb3VwKCktPnByZWZlcmVuY2VzKCktPnNldFdlYkdMRW5hYmxlZCh0
cnVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwCmlu
ZGV4IDRhN2JiMTA4NmVlN2E4NjdiMmQzZmQ2ODBjNWEzN2RiMDViOGI3ZDguLmU4ZmQ2ZDk1MGYx
ODQwMDlhMGNkM2RlZTBhMTg1ZTliMzZiZWJmOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAKQEAgLTg4LDcgKzg4LDYgQEAgdm9pZCBDb29yZGluYXRl
ZEJhY2tpbmdTdG9yZTo6dXBkYXRlVGlsZSh1aW50MzJfdCBpZCwgY29uc3QgSW50UmVjdCYgc291
cmNlUmVjdCwKIHsKICAgICBIYXNoTWFwPHVpbnQzMl90LCBDb29yZGluYXRlZEJhY2tpbmdTdG9y
ZVRpbGU+OjppdGVyYXRvciBpdCA9IG1fdGlsZXMuZmluZChpZCk7CiAgICAgQVNTRVJUKGl0ICE9
IG1fdGlsZXMuZW5kKCkpOwotICAgIGl0LT52YWx1ZS5pbmNyZW1lbnRSZXBhaW50Q291bnQoKTsK
ICAgICBpdC0+dmFsdWUuc2V0QmFja0J1ZmZlcih0aWxlUmVjdCwgc291cmNlUmVjdCwgYmFja0J1
ZmZlciwgb2Zmc2V0KTsKIH0KIApAQCAtMTA5LDI4ICsxMDgsMTAgQEAgdm9pZCBDb29yZGluYXRl
ZEJhY2tpbmdTdG9yZTo6c2V0U2l6ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUpCiAg
ICAgbV9zaXplID0gc2l6ZTsKIH0KIAotc3RhdGljIGJvb2wgc2hvdWxkU2hvd1RpbGVEZWJ1Z1Zp
c3VhbHMoKQotewotI2lmIFBMQVRGT1JNKFFUKQotICAgIHJldHVybiAocWdldGVudigiUVRfV0VC
S0lUX1NIT1dfQ09NUE9TSVRJTkdfREVCVUdfVklTVUFMUyIpID09ICIxIik7Ci0jZWxpZiBVU0Uo
Q0FJUk8pCi0gICAgcmV0dXJuIChTdHJpbmcoZ2V0ZW52KCJXRUJLSVRfU0hPV19DT01QT1NJVElO
R19ERUJVR19WSVNVQUxTIikpID09ICIxIik7Ci0jZW5kaWYKLSAgICByZXR1cm4gZmFsc2U7Ci19
Ci0KIHZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnBhaW50VGlsZXNUb1RleHR1cmVNYXBw
ZXIoVmVjdG9yPFRleHR1cmVNYXBwZXJUaWxlKj4mIHRpbGVzLCBUZXh0dXJlTWFwcGVyKiB0ZXh0
dXJlTWFwcGVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBv
cGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrLCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7Ci0g
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0aWxlcy5zaXplKCk7ICsraSkgewotICAgICAgICBU
ZXh0dXJlTWFwcGVyVGlsZSogdGlsZSA9IHRpbGVzW2ldOwotICAgICAgICB0aWxlLT5wYWludCh0
ZXh0dXJlTWFwcGVyLCB0cmFuc2Zvcm0sIG9wYWNpdHksIG1hc2ssIGNhbGN1bGF0ZUV4cG9zZWRU
aWxlRWRnZXMocmVjdCwgdGlsZS0+cmVjdCgpKSk7Ci0gICAgICAgIHN0YXRpYyBib29sIHNob3Vs
ZERlYnVnID0gc2hvdWxkU2hvd1RpbGVEZWJ1Z1Zpc3VhbHMoKTsKLSAgICAgICAgaWYgKCFzaG91
bGREZWJ1ZykKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIHRleHR1cmVNYXBwZXIt
PmRyYXdCb3JkZXIoQ29sb3IoMHhGRiwgMCwgMCksIDIsIHRpbGUtPnJlY3QoKSwgdHJhbnNmb3Jt
KTsKLSAgICAgICAgdGV4dHVyZU1hcHBlci0+ZHJhd1JlcGFpbnRDb3VudGVyKHN0YXRpY19jYXN0
PENvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZSo+KHRpbGUpLT5yZXBhaW50Q291bnQoKSwgOCwg
dGlsZS0+cmVjdCgpLmxvY2F0aW9uKCksIHRyYW5zZm9ybSk7Ci0gICAgfQorICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgdGlsZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIHRpbGVzW2ldLT5wYWlu
dCh0ZXh0dXJlTWFwcGVyLCB0cmFuc2Zvcm0sIG9wYWNpdHksIG1hc2ssIGNhbGN1bGF0ZUV4cG9z
ZWRUaWxlRWRnZXMocmVjdCwgdGlsZXNbaV0tPnJlY3QoKSkpOwogfQogCiB2b2lkIENvb3JkaW5h
dGVkQmFja2luZ1N0b3JlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0
dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUqIG1hc2sp
CkBAIC0xNzQsNiArMTU1LDI4IEBAIHZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnBhaW50
VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsCiAgICAgcGFpbnRU
aWxlc1RvVGV4dHVyZU1hcHBlcih0aWxlc1RvUGFpbnQsIHRleHR1cmVNYXBwZXIsIGFkanVzdGVk
VHJhbnNmb3JtLCBvcGFjaXR5LCBtYXNrLCByZWN0T25Db250ZW50cyk7CiB9CiAKK3ZvaWQgQ29v
cmRpbmF0ZWRCYWNraW5nU3RvcmU6OmRyYXdCb3JkZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1h
cHBlciwgY29uc3QgQ29sb3ImIGJvcmRlckNvbG9yLCBmbG9hdCBib3JkZXJXaWR0aCwgY29uc3Qg
RmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNm
b3JtKQoreworICAgIEZsb2F0UmVjdCByZWN0T25Db250ZW50cyhGbG9hdFBvaW50Ojp6ZXJvKCks
IG1fc2l6ZSk7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggYWRqdXN0ZWRUcmFuc2Zvcm0gPSB0
cmFuc2Zvcm07CisgICAgYWRqdXN0ZWRUcmFuc2Zvcm0ubXVsdGlwbHkoVHJhbnNmb3JtYXRpb25N
YXRyaXg6OnJlY3RUb1JlY3QocmVjdE9uQ29udGVudHMsIHRhcmdldFJlY3QpKTsKKworICAgIEhh
c2hNYXA8dWludDMyX3QsIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZT46Oml0ZXJhdG9yIGVu
ZCA9IG1fdGlsZXMuZW5kKCk7CisgICAgZm9yIChIYXNoTWFwPHVpbnQzMl90LCBDb29yZGluYXRl
ZEJhY2tpbmdTdG9yZVRpbGU+OjppdGVyYXRvciBpdCA9IG1fdGlsZXMuYmVnaW4oKTsgaXQgIT0g
ZW5kOyArK2l0KQorICAgICAgICB0ZXh0dXJlTWFwcGVyLT5kcmF3Qm9yZGVyKGJvcmRlckNvbG9y
LCBib3JkZXJXaWR0aCwgaXQtPnZhbHVlLnJlY3QoKSwgYWRqdXN0ZWRUcmFuc2Zvcm0pOworfQor
Cit2b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpkcmF3UmVwYWludENvdW50ZXIoVGV4dHVy
ZU1hcHBlciogdGV4dHVyZU1hcHBlciwgaW50IHJlcGFpbnRDb3VudCwgY29uc3QgQ29sb3ImIGJv
cmRlckNvbG9yLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiB0cmFuc2Zvcm0pCit7CisgICAgRmxvYXRSZWN0IHJlY3RPbkNvbnRlbnRzKEZs
b2F0UG9pbnQ6Onplcm8oKSwgbV9zaXplKTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhZGp1
c3RlZFRyYW5zZm9ybSA9IHRyYW5zZm9ybTsKKyAgICBhZGp1c3RlZFRyYW5zZm9ybS5tdWx0aXBs
eShUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6cmVjdFRvUmVjdChyZWN0T25Db250ZW50cywgdGFyZ2V0
UmVjdCkpOworCisgICAgSGFzaE1hcDx1aW50MzJfdCwgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVU
aWxlPjo6aXRlcmF0b3IgZW5kID0gbV90aWxlcy5lbmQoKTsKKyAgICBmb3IgKEhhc2hNYXA8dWlu
dDMyX3QsIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZT46Oml0ZXJhdG9yIGl0ID0gbV90aWxl
cy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgIHRleHR1cmVNYXBwZXItPmRyYXdS
ZXBhaW50Q291bnRlcihyZXBhaW50Q291bnQsIGJvcmRlckNvbG9yLCBpdC0+dmFsdWUucmVjdCgp
LmxvY2F0aW9uKCksIGFkanVzdGVkVHJhbnNmb3JtKTsKK30KKwogdm9pZCBDb29yZGluYXRlZEJh
Y2tpbmdTdG9yZTo6Y29tbWl0VGlsZU9wZXJhdGlvbnMoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1h
cHBlcikKIHsKICAgICBIYXNoU2V0PHVpbnQzMl90Pjo6aXRlcmF0b3IgdGlsZXNUb1JlbW92ZUVu
ZCA9IG1fdGlsZXNUb1JlbW92ZS5lbmQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJh
Y2tpbmdTdG9yZS5oCmluZGV4IGFlNWFmOGQ0ZmEyZmM5ZWJkMjExOTcyN2ZjYWRkODU5NjIzMzBm
OTkuLmRjMzk3NmMwNTAzMzM1OTZmYWQzNjQ0MjI3ZWM1OWNiNGEwM2I0YTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
QmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuaApAQCAtMzYsMTMgKzM2LDEwIEBAIHB1
YmxpYzoKICAgICBleHBsaWNpdCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGUoZmxvYXQgc2Nh
bGUgPSAxKQogICAgICAgICA6IFRleHR1cmVNYXBwZXJUaWxlKFdlYkNvcmU6OkZsb2F0UmVjdCgp
KQogICAgICAgICAsIG1fc2NhbGUoc2NhbGUpCi0gICAgICAgICwgbV9yZXBhaW50Q291bnQoMCkK
ICAgICB7CiAgICAgfQogCiAgICAgaW5saW5lIGZsb2F0IHNjYWxlKCkgY29uc3QgeyByZXR1cm4g
bV9zY2FsZTsgfQotICAgIGlubGluZSB2b2lkIGluY3JlbWVudFJlcGFpbnRDb3VudCgpIHsgKytt
X3JlcGFpbnRDb3VudDsgfQotICAgIGlubGluZSBpbnQgcmVwYWludENvdW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9yZXBhaW50Q291bnQ7IH0KICAgICB2b2lkIHN3YXBCdWZmZXJzKFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXIqKTsKICAgICB2b2lkIHNldEJhY2tCdWZmZXIoY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBQYXNzUmVmUHRyPENvb3JkaW5hdGVkU3Vy
ZmFjZT4gYnVmZmVyLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogCkBAIC01Miw3ICs0OSw2
IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6SW50UmVjdCBtX3RpbGVSZWN0OwogICAgIFdlYkNv
cmU6OkludFBvaW50IG1fc3VyZmFjZU9mZnNldDsKICAgICBmbG9hdCBtX3NjYWxlOwotICAgIGlu
dCBtX3JlcGFpbnRDb3VudDsKIH07CiAKIGNsYXNzIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlIDog
cHVibGljIFdlYkNvcmU6OlRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUgewpAQCAtNjYsNiArNjIs
OCBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpCaXRtYXBUZXh0dXJlPiB0ZXh0
dXJlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRTaXplKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYp
OwogICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihXZWJDb3JlOjpUZXh0dXJl
TWFwcGVyKiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6VHJhbnNm
b3JtYXRpb25NYXRyaXgmLCBmbG9hdCwgV2ViQ29yZTo6Qml0bWFwVGV4dHVyZSopOworICAgIHZp
cnR1YWwgdm9pZCBkcmF3Qm9yZGVyKFdlYkNvcmU6OlRleHR1cmVNYXBwZXIqLCBjb25zdCBXZWJD
b3JlOjpDb2xvciYsIGZsb2F0IGJvcmRlcldpZHRoLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3Qm
LCBjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBkcmF3UmVwYWludENvdW50ZXIoV2ViQ29yZTo6VGV4dHVyZU1hcHBlciosIGlu
dCByZXBhaW50Q291bnQsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmKSBPVkVSUklERTsK
IAogcHJpdmF0ZToKICAgICBDb29yZGluYXRlZEJhY2tpbmdTdG9yZSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExh
eWVyVHJlZUhvc3RQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHAKaW5kZXggYmFhOGY2
NTIzZGViZmRlYmJjNGU1MjJiNDc1ZTE0Y2MxOGZkMmViNS4uZWY1ZTQ1ZmE5YmMyMzcwMTQ1Y2Nj
ZDFkY2Y4OGM2YjQwNThhYTlhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcApAQCAtMjQyLDYgKzI0MiwxMSBAQCB2b2lkIENvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpkZXN0cm95Q2FudmFzKENvb3JkaW5hdGVkTGF5ZXJJ
RCBpZCkKIH0KICNlbmRpZgogCit2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5Ojpz
ZXRSZXBhaW50Q291bnQoQ29vcmRpbmF0ZWRMYXllcklEIGlkLCBpbnQgdmFsdWUpCit7CisgICAg
ZGlzcGF0Y2hVcGRhdGUoYmluZCgmTGF5ZXJUcmVlUmVuZGVyZXI6OnNldFJlcGFpbnRDb3VudCwg
bV9yZW5kZXJlci5nZXQoKSwgaWQsIHZhbHVlKSk7Cit9CisKIHZvaWQgQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0UHJveHk6OnB1cmdlQmFja2luZ1N0b3JlcygpCiB7CiAgICAgbV9zdXJmYWNlcy5j
bGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFBy
b3h5LmgKaW5kZXggNzU5MWI4NDg1ZDM5ODg2ZWQ3ZWQyY2QwNWQxMTYxM2ZlNjdmYWNkMy4uZjlj
YTE5MmMyYjA0MzIyNTlmODhjOWJiNWVjZTNlNDVhM2M4YTY3OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oCkBAIC04NCw2ICs4NCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHN5bmNDYW52YXMoQ29vcmRpbmF0ZWRMYXllcklELCB1aW50MzJf
dCBmcm9udEJ1ZmZlcik7CiAgICAgdm9pZCBkZXN0cm95Q2FudmFzKENvb3JkaW5hdGVkTGF5ZXJJ
RCk7CiAjZW5kaWYKKyAgICB2b2lkIHNldFJlcGFpbnRDb3VudChDb29yZGluYXRlZExheWVySUQs
IGludCB2YWx1ZSk7CiAgICAgdm9pZCBwdXJnZUJhY2tpbmdTdG9yZXMoKTsKICAgICBMYXllclRy
ZWVSZW5kZXJlciogbGF5ZXJUcmVlUmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmVy
LmdldCgpOyB9CiAgICAgdm9pZCBzZXRMYXllckFuaW1hdGlvbnMoQ29vcmRpbmF0ZWRMYXllcklE
LCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyQW5pbWF0aW9ucyYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0UHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5tZXNzYWdl
cy5pbgppbmRleCAxMzdkYWQ4MDc1MDBmNTVlNTlkMjZjMjdjMWRlZGJhNDljNTUwOGEwLi4yNjhl
ZjFjZjk3MWY3ODhmM2RhN2MxOWNjNGMxNzJiZjRmNjgzNmU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJl
ZUhvc3RQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5tZXNzYWdlcy5p
bgpAQCAtNTUsNiArNTUsOCBAQCBtZXNzYWdlcyAtPiBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQ
cm94eSB7CiAgICAgRGVzdHJveUNhbnZhcyh1aW50MzJfdCBpZCkKICNlbmRpZgogCisgICAgU2V0
UmVwYWludENvdW50KHVpbnQzMl90IGxheWVySUQsIGludCB2YWx1ZSkKKwogICAgIFNldEJhY2tn
cm91bmRDb2xvcihXZWJDb3JlOjpDb2xvciBjb2xvcikKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVu
ZGVyZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
TGF5ZXJUcmVlUmVuZGVyZXIuY3BwCmluZGV4IDZlOTczMDIxNjYyYjQwZDM2YTI4NGMzZmQxZDA0
OWFiNjZhMjU5OTYuLmMxZTcyOGU0ZTAzYjkxNDhmNWQ4NzQ2M2YxZDVmNzMyZWQ0MDFkYzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xh
eWVyVHJlZVJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRp
bmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5jcHAKQEAgLTI1NSw2ICsyNTUsMTIgQEAg
dm9pZCBMYXllclRyZWVSZW5kZXJlcjo6ZGVzdHJveUNhbnZhcyhDb29yZGluYXRlZExheWVySUQg
aWQpCiB9CiAjZW5kaWYKIAordm9pZCBMYXllclRyZWVSZW5kZXJlcjo6c2V0UmVwYWludENvdW50
KENvb3JkaW5hdGVkTGF5ZXJJRCBpZCwgaW50IHZhbHVlKQoreworICAgIEdyYXBoaWNzTGF5ZXIq
IGxheWVyID0gbGF5ZXJCeUlEKGlkKTsKKyAgICB0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
KGxheWVyKS0+c2V0UmVwYWludENvdW50KHZhbHVlKTsKK30KKwogdm9pZCBMYXllclRyZWVSZW5k
ZXJlcjo6c2V0TGF5ZXJDaGlsZHJlbihDb29yZGluYXRlZExheWVySUQgaWQsIGNvbnN0IFZlY3Rv
cjxDb29yZGluYXRlZExheWVySUQ+JiBjaGlsZElEcykKIHsKICAgICBHcmFwaGljc0xheWVyKiBs
YXllciA9IGxheWVyQnlJRChpZCk7CkBAIC0zMzMsNiArMzM5LDkgQEAgdm9pZCBMYXllclRyZWVS
ZW5kZXJlcjo6c2V0TGF5ZXJTdGF0ZShDb29yZGluYXRlZExheWVySUQgaWQsIGNvbnN0IENvb3Jk
aW5hdGVkTGEKICAgICBsYXllci0+c2V0RHJhd3NDb250ZW50KGxheWVySW5mby5kcmF3c0NvbnRl
bnQpOwogICAgIGxheWVyLT5zZXRDb250ZW50c1Zpc2libGUobGF5ZXJJbmZvLmNvbnRlbnRzVmlz
aWJsZSk7CiAgICAgdG9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcihsYXllciktPnNldEZpeGVk
VG9WaWV3cG9ydChsYXllckluZm8uZml4ZWRUb1ZpZXdwb3J0KTsKKyAgICBsYXllci0+c2V0U2hv
d0RlYnVnQm9yZGVyKGxheWVySW5mby5zaG93RGVidWdCb3JkZXJzKTsKKyAgICBsYXllci0+c2V0
RGVidWdCb3JkZXIobGF5ZXJJbmZvLmRlYnVnQm9yZGVyQ29sb3IsIGxheWVySW5mby5kZWJ1Z0Jv
cmRlcldpZHRoKTsKKyAgICBsYXllci0+c2V0U2hvd1JlcGFpbnRDb3VudGVyKGxheWVySW5mby5z
aG93UmVwYWludENvdW50ZXIpOwogCiAgICAgaWYgKGxheWVySW5mby5maXhlZFRvVmlld3BvcnQp
CiAgICAgICAgIG1fZml4ZWRMYXllcnMuYWRkKGlkLCBsYXllcik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJl
ci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJU
cmVlUmVuZGVyZXIuaAppbmRleCA1M2VjYmUzOTQ5ODE4OTlkMmFiYmUwZjIxZDQ0NDM0NDIzOTM2
NDg4Li4xYTk1OTdmZWIzMDRiNjgzYTY4NzM5NThmNWE0NDc1MDljZGM5NTI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVS
ZW5kZXJlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBo
aWNzL0xheWVyVHJlZVJlbmRlcmVyLmgKQEAgLTc3LDYgKzc3LDcgQEAgcHVibGljOgogICAgIHZv
aWQgc3luY0NhbnZhcyhDb29yZGluYXRlZExheWVySUQsIHVpbnQzMl90IGZyb250QnVmZmVyKTsK
ICAgICB2b2lkIGRlc3Ryb3lDYW52YXMoQ29vcmRpbmF0ZWRMYXllcklEKTsKICNlbmRpZgorICAg
IHZvaWQgc2V0UmVwYWludENvdW50KENvb3JkaW5hdGVkTGF5ZXJJRCwgaW50IHZhbHVlKTsKIAog
ICAgIHZvaWQgZGV0YWNoKCk7CiAgICAgdm9pZCBhcHBlbmRVcGRhdGUoY29uc3QgRnVuY3Rpb248
dm9pZCgpPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkR3JhcGhpY3NMYXllci5jcHAKaW5kZXggNWYyNjYyZWYwOTE4YjNhYTkyMTQwYTQ4NDUyYTU1
NTgyZjU3YmQzOS4uZTIxMjkwNzllODc5NTAwODBkMzgzNWE2NTYzY2U2OWEwODhjZmVhMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIuY3BwCkBAIC0zNzEsNiArMzcxLDI2IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyOjpzZXRDb250ZW50c1RvU29saWRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiAgICAgZGlk
Q2hhbmdlTGF5ZXJTdGF0ZSgpOwogfQogCit2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6
c2V0U2hvd0RlYnVnQm9yZGVyKGJvb2wgc2hvdykKK3sKKyAgICBpZiAoaXNTaG93aW5nRGVidWdC
b3JkZXIoKSA9PSBzaG93KQorICAgICAgICByZXR1cm47CisKKyAgICBHcmFwaGljc0xheWVyOjpz
ZXRTaG93RGVidWdCb3JkZXIoc2hvdyk7CisKKyAgICBkaWRDaGFuZ2VMYXllclN0YXRlKCk7Cit9
CisKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRTaG93UmVwYWludENvdW50ZXIo
Ym9vbCBzaG93KQoreworICAgIGlmIChpc1Nob3dpbmdSZXBhaW50Q291bnRlcigpID09IHNob3cp
CisgICAgICAgIHJldHVybjsKKworICAgIEdyYXBoaWNzTGF5ZXI6OnNldFNob3dSZXBhaW50Q291
bnRlcihzaG93KTsKKworICAgIGRpZENoYW5nZUxheWVyU3RhdGUoKTsKK30KKwogdm9pZCBDb29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzVG9JbWFnZShJbWFnZSogaW1hZ2UpCiB7
CiAgICAgTmF0aXZlSW1hZ2VQdHIgbmV3TmF0aXZlSW1hZ2VQdHIgPSBpbWFnZSA/IGltYWdlLT5u
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIDogMDsKQEAgLTU1MCw5ICs1NzAsMjMgQEAgdm9p
ZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnN5bmNMYXllclN0YXRlKCkKICAgICBtX2xheWVy
SW5mby5wb3MgPSBtX2FkanVzdGVkUG9zaXRpb247CiAgICAgbV9sYXllckluZm8uc2l6ZSA9IG1f
YWRqdXN0ZWRTaXplOwogCisgICAgbV9sYXllckluZm8uc2hvd0RlYnVnQm9yZGVycyA9IGlzU2hv
d2luZ0RlYnVnQm9yZGVyKCk7CisgICAgaWYgKG1fbGF5ZXJJbmZvLnNob3dEZWJ1Z0JvcmRlcnMp
IHsKKyAgICAgICAgbV91c2luZ1RpbGVkTGF5ZXIgPSBzaG91bGRIYXZlQmFja2luZ1N0b3JlKCk7
CisgICAgICAgIHVwZGF0ZURlYnVnSW5kaWNhdG9ycygpOworICAgIH0KKyAgICBtX2xheWVySW5m
by5zaG93UmVwYWludENvdW50ZXIgPSBpc1Nob3dpbmdSZXBhaW50Q291bnRlcigpOworCiAgICAg
bV9jb29yZGluYXRvci0+c3luY0xheWVyU3RhdGUobV9pZCwgbV9sYXllckluZm8pOwogfQogCit2
b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0RGVidWdCb3JkZXIoY29uc3QgQ29sb3Im
IGNvbG9yLCBmbG9hdCB3aWR0aCkKK3sKKyAgICBBU1NFUlQobV9sYXllckluZm8uc2hvd0RlYnVn
Qm9yZGVycyk7CisgICAgbV9sYXllckluZm8uZGVidWdCb3JkZXJDb2xvciA9IGNvbG9yOworICAg
IG1fbGF5ZXJJbmZvLmRlYnVnQm9yZGVyV2lkdGggPSB3aWR0aDsKK30KKwogdm9pZCBDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OnN5bmNBbmltYXRpb25zKCkKIHsKICAgICBpZiAoIW1fc2hvdWxk
U3luY0FuaW1hdGlvbnMpCkBAIC02OTgsOCArNzMyLDEwIEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyOjp0aWxlZEJhY2tpbmdTdG9yZVBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwKICAgICBwYWludEdyYXBoaWNzTGF5ZXJDb250ZW50cygqY29udGV4dCwgcmVjdCk7CiB9CiAK
LXZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp0aWxlZEJhY2tpbmdTdG9yZVBhaW50RW5k
KGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgLyogdXBkYXRlZFJlY3RzICovKQordm9pZCBDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OnRpbGVkQmFja2luZ1N0b3JlUGFpbnRFbmQoY29uc3QgVmVjdG9y
PEludFJlY3Q+JiB1cGRhdGVkUmVjdHMpCiB7CisgICAgaWYgKGlzU2hvd2luZ1JlcGFpbnRDb3Vu
dGVyKCkgJiYgIXVwZGF0ZWRSZWN0cy5pc0VtcHR5KCkpCisgICAgICAgIG1fY29vcmRpbmF0b3It
PnNldFJlcGFpbnRDb3VudChpZCgpLCBpbmNyZW1lbnRSZXBhaW50Q291bnQoKSk7CiB9CiAKIHZv
aWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp0aWxlZEJhY2tpbmdTdG9yZUhhc1BlbmRpbmdU
aWxlQ3JlYXRpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXIuaAppbmRleCA2YzQzNTg1YzcwYzhlMDMwNjVlNGRjYWEyN2U0ZjBk
YTJmYTM2OTQ2Li4yYjc3NTBjYWRlNjBlZmUwZTZkNDEwNjk0NTQ1MzkwYTE4NjUxZjlhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIuaApAQCAtNzEsNiArNzEsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3lD
YW52YXMoQ29vcmRpbmF0ZWRMYXllcklEKSA9IDA7CiAjZW5kaWYKIAorICAgIHZpcnR1YWwgdm9p
ZCBzZXRSZXBhaW50Q291bnQoQ29vcmRpbmF0ZWRMYXllcklELCBpbnQpID0gMDsKKwogICAgIHZp
cnR1YWwgdm9pZCBzZXRMYXllckFuaW1hdGlvbnMoQ29vcmRpbmF0ZWRMYXllcklELCBjb25zdCBX
ZWJDb3JlOjpHcmFwaGljc0xheWVyQW5pbWF0aW9ucyYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9p
ZCBkZXRhY2hMYXllcihXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqKSA9IDA7CkBA
IC0xMTIsNiArMTE0LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1Jl
Y3QoY29uc3QgSW50UmVjdCYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50
c1RvSW1hZ2UoSW1hZ2UqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNU
b1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
U2hvd0RlYnVnQm9yZGVyKGJvb2wpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRTaG93
UmVwYWludENvdW50ZXIoYm9vbCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHNob3VsZERp
cmVjdGx5Q29tcG9zaXRlSW1hZ2UoSW1hZ2UqKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0Q29udGVudHNUb0NhbnZhcyhQbGF0Zm9ybUxheWVyKikgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIHNldE1hc2tMYXllcihHcmFwaGljc0xheWVyKikgT1ZFUlJJREU7CkBAIC0x
NjYsNiArMTcwLDggQEAgcHVibGljOgogICAgIGJvb2wgaGFzUGVuZGluZ1Zpc2libGVDaGFuZ2Vz
KCk7CiAKIHByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIHNldERlYnVnQm9yZGVyKGNvbnN0IENv
bG9yJiwgZmxvYXQgd2lkdGgpIE9WRVJSSURFOworCiAgICAgYm9vbCBmaXhlZFRvVmlld3BvcnQo
KSBjb25zdCB7IHJldHVybiBtX2ZpeGVkVG9WaWV3cG9ydDsgfQogCiAgICAgdm9pZCBkaWRDaGFu
Z2VMYXllclN0YXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAppbmRleCA4ZmJiNTdmMjExZmYyY2M0YjkyMDcyMzMw
ZGUzZjg3ODc5ZTE3OTNkLi4yYmNiZDQ5NjYxYjkwMTM0N2JmYTFiZGI3MzM2ODczMzRkNDJjZjRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdC5jcHAKQEAgLTM5Nyw2ICszOTcsMTEgQEAgdm9pZCBDb29yZGluYXRlZExheWVy
VHJlZUhvc3Q6OmRlc3Ryb3lDYW52YXMoQ29vcmRpbmF0ZWRMYXllcklEIGlkKQogfQogI2VuZGlm
CiAKK3ZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzZXRSZXBhaW50Q291bnQoQ29vcmRp
bmF0ZWRMYXllcklEIGlkLCBpbnQgdmFsdWUpCit7CisgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6U2V0UmVwYWludENvdW50KGlkLCB2
YWx1ZSkpOworfQorCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogdm9pZCBDb29yZGluYXRlZExh
eWVyVHJlZUhvc3Q6OnN5bmNMYXllckZpbHRlcnMoQ29vcmRpbmF0ZWRMYXllcklEIGlkLCBjb25z
dCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaAppbmRleCAwMTAyMmIyY2M0ZTk4
NDg4YTRkZjc4N2VhMzY5MGI3MmFjY2ZmNzI5Li5lZGIyMDU1YTZiNjZmOGNmOWJlNmM0MjRhNjUw
ZGRjNGEzOGIxOGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZExheWVyVHJlZUhvc3QuaApAQCAtMTAxLDYgKzEwMSw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgc3luY0NhbnZhcyhDb29yZGluYXRlZExheWVySUQsIFdlYkNvcmU6OlBsYXRm
b3JtTGF5ZXIqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveUNhbnZhcyhDb29y
ZGluYXRlZExheWVySUQpIE9WRVJSSURFOwogI2VuZGlmCisgICAgdmlydHVhbCB2b2lkIHNldFJl
cGFpbnRDb3VudChDb29yZGluYXRlZExheWVySUQsIGludCkgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIGRldGFjaExheWVyKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllciopOwog
ICAgIHZpcnR1YWwgdm9pZCBzeW5jRml4ZWRMYXllcnMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRUaWxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkVGlsZS5jcHAKaW5kZXggNzk4ZDJiNzVmMjUwZGE2NzI5ZmY5
YmNlNTBlODhjMjkxMjk0MGI4ZS4uYWMwYjU2NjI2ZTgxZjEwYjE4NzYyYjk4ZjM2NTgwNGY4ZTMy
NjE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRUaWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFRpbGUuY3Bw
CkBAIC05Nyw4ICs5NywxMCBAQCBWZWN0b3I8SW50UmVjdD4gQ29vcmRpbmF0ZWRUaWxlOjp1cGRh
dGVCYWNrQnVmZmVyKCkKICAgICB9IGVsc2UKICAgICAgICAgbV9jbGllbnQtPnVwZGF0ZVRpbGUo
bV9JRCwgdXBkYXRlSW5mbywgbV9yZWN0KTsKIAorICAgIFZlY3RvcjxJbnRSZWN0PiB1cGRhdGVk
UmVjdHM7CisgICAgdXBkYXRlZFJlY3RzLmFwcGVuZChtX2RpcnR5UmVjdCk7CiAgICAgbV9kaXJ0
eVJlY3QgPSBJbnRSZWN0KCk7Ci0gICAgcmV0dXJuIFZlY3RvcjxJbnRSZWN0PigpOworICAgIHJl
dHVybiB1cGRhdGVkUmVjdHM7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRUaWxlOjpzd2FwQmFja0J1
ZmZlclRvRnJvbnQoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182926</attachid>
            <date>2013-01-16 00:19:09 -0800</date>
            <delta_ts>2013-01-16 01:08:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105787-20130116171609.patch</filename>
            <type>text/plain</type>
            <size>67760</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5ODIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjQ0ZmI3OTZjZGFmODU2
YWM1OWZlZmYyOTBhYTMwNDBkMjA3ODRmMy4uMjQ1OTI3ZmZmMDYxNjk3YjhjZThhNTZiYmE3Yjgy
MTliZjUzNzcxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDEzLTAxLTE2ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFtUZXhtYXBd
IFJlZmFjdG9yIGNvZGUgcmVsYXRlZCB0byBkZWJ1ZyBib3JkZXIgYW5kIHJlcGFpbnQgY291bnQu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU3ODcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50
bHksIFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUsIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlIGFu
ZAorICAgICAgICBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlciBoYXZlIGR1cGxpY2F0ZWQgY29k
ZSB0byBkcmF3IGRlYnVnIGJvcmRlciBvciByZXBhaW50CisgICAgICAgIGNvdW50LiBUaGlzIHBh
dGNoIHJlZmFjdG9ycyB0aGF0IGFsbCBwbGF0Zm9ybSBsYXllcnMgZHJhdyBkZWJ1ZyBib3JkZXIg
YW5kIHJlcGFpbnQKKyAgICAgICAgY291bnQgaW4gdGhlIGNvbnNpc3RlbnQgd2F5LgorCisgICAg
ICAgIFRoZXJlIGFyZSB0aHJlZSBiaWcgY2hhbmdlczoKKyAgICAgICAgMS4gVG8gZW5hYmxlIG9y
IGRpc2FibGUgdGhpcyBmZWF0dXJlLCB3ZSB1c2Ugc2V0U2hvd0RlYnVnQm9yZGVycyhib29sKSBh
bmQKKyAgICAgICAgc2V0U2hvd1JlcGFpbnRDb3VudGVyKGJvb2wpIGluIFNldHRpbmdzLgorICAg
ICAgICBBcyB3ZSBkaWQsIGlmIFtRVF9dV0VCS0lUX1NIT1dfQ09NUE9TSVRJTkdfREVCVUdfVklT
VUFMUyBpcyBzZXQgdG8gMSwgYm90aAorICAgICAgICBzZXR0aW5ncyBhcmUgc2V0IHRvIHRydWUu
IEl0IG1lYW5zIHRoYXQgbm93IHdlIGNhbiBzZWUgZGVidWcgdmlzdWFscyBpbiBXSzEKKyAgICAg
ICAgYXMgd2VsbCBhcyBXSzIuCisgICAgICAgIDIuIFRleHR1cmVNYXBwZXJMYXllciBoYXMgdGhl
IGRlYnVnIHZpc3VhbHMgbGlrZSBHcmFwaGljc0xheWVyLgorICAgICAgICBCb3RoIGRlYnVnIGJv
cmRlciBhbmQgcmVwYWludCBjb3VudCBhcmUgY2FsbGVkIGFzIHRoZSBkZWJ1ZyB2aXN1YWxzLgor
ICAgICAgICAzLiBXZSB1c2UgdGhlIHNhbWUgY29sb3IgYW5kIHdpZHRoIHRvIE1hYyBwb3J0IGJl
Y2F1c2Ugd2UgZ2V0IGJvdGggaW5mbyB1c2luZworICAgICAgICBHcmFwaGljc0xheWVyOjp1cGRh
dGVEZWJ1Z0luZGljYXRvcnMoKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIFRoaXMgZnVuY3Rp
b25hbGl0eSBpcyBmb3IgZGVidWdnaW5nLCBzbyB3ZSBjYW5ub3QgdGVzdCB1c2luZyBEUlQuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRFByaXZh
dGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXI6OnNldFNob3dEZWJ1Z0JvcmRlcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRTaG93UmVwYWludENvdW50
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmZsdXNo
Q29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnVwZGF0ZURlYnVnQm9yZGVyQW5kUmVwYWludENvdW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXREZWJ1
Z0JvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6
dXBkYXRlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyOjpwcmVwYXJlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRSZXBhaW50Q291bnQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oOgorICAgICAg
ICAoR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXI6OmRlYnVnQm9yZGVyQ29sb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmRlYnVnQm9yZGVyV2lkdGgpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZTo6cmVjdFRvUmVjdCk6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJUaWxl
ZEJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpkcmF3Qm9yZGVyKToKKyAgICAgICAgICAg
IE92ZXJyaWRlIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyOjpkcmF3Qm9yZGVyKCkgdG8gZHJh
dyB0aGUgYm9yZGVyCisgICAgICAgICAgICBmb3IgZWFjaCB0aWxlLgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpkcmF3UmVwYWludENvdW50ZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0
b3JlLmg6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlOjpkcmF3
UmVwYWludENvdW50ZXIpOgorICAgICAgICAoVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZSk6Cisg
ICAgICAgIChUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y29udmVydEFCR1JUb0FSR0IpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRyYXdSZXBhaW50Q291bnRlcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckltYWdlQnVmZmVyOjpkcmF3Qm9yZGVyKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckltYWdlQnVmZmVy
OjpkcmF3UmVwYWludENvdW50ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKFRleHR1cmVNYXBwZXJJbWFn
ZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50
U2VsZik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OmZsdXNoQ29tcG9z
aXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaDoKKyAgICAgICAgKFN0YXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6U3RhdGU6OlN0YXRlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyOjpkcmF3Qm9yZGVyKToK
KwogMjAxMy0wMS0xNSAgUm9nZXIgRm9uZyAgPHJvZ2VyX2ZvbmdAYXBwbGUuY29tPgogCiAgICAg
ICAgIEdldCByaWQgb2YgYSBzdHJhZ2dsaW5nIGRlcGVuZGVuY3kgb24gU2FmYXJpVGhlbWVDb25z
dGFudHMgaW4gUmVuZGVyVGhlbWVXaW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggOGZiYWJjZTk4ZDNh
ZGQ2YjgyM2VhMTI5ODRjYzE2ODVhYzIyODE3NS4uNGFkZGE4ZmJmOWRmOWM5MGEyMWY3MGJiN2Nm
M2M3YTljZWVlN2E0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEzLTAx
LTE2ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAg
IFtUZXhtYXBdIFJlZmFjdG9yIGNvZGUgcmVsYXRlZCB0byBkZWJ1ZyBib3JkZXIgYW5kIHJlcGFp
bnQgY291bnQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDU3ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJZiBXRUJLSVRfU0hPV19DT01QT1NJVElOR19ERUJVR19WSVNVQUxTIGlzIHNldCB0byAxLCBz
ZXQKKyAgICAgICAgc2hvd0RlYnVnQm9yZGVycyBhbmQgc2hvd1JlcGFpbnRDb3VudGVyIGluIFNl
dHRpbmdzIHRvIHRydWUuCisKKyAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgorICAgICAgICAo
X2V3a192aWV3X3ByaXZfbmV3KToKKwogMjAxMy0wMS0xNSAgR3l1eW91bmcgS2ltICA8Z3l1eW91
bmcua2ltQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEZpeCBidWlsZCBicmVh
ayBieSByMTM5Nzk2LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IGRjYmVjM2ZhOTY3ZDI2Nzg3MzQxMGYz
ZWQzZDlkNmExZjE5ODNjZGQuLjNmZGJiM2E1ZmM5ODViMzExMDk1MTdmZDBlZjk0NGM5MGEzMDA5
M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMy0wMS0xNiAgSHVhbmcg
RG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKworICAgICAgICBbVGV4bWFwXSBS
ZWZhY3RvciBjb2RlIHJlbGF0ZWQgdG8gZGVidWcgYm9yZGVyIGFuZCByZXBhaW50IGNvdW50Lgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1Nzg3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSWYgV0VCS0lU
X1NIT1dfQ09NUE9TSVRJTkdfREVCVUdfVklTVUFMUyBpcyBzZXQgdG8gMSwgc2V0CisgICAgICAg
IHNob3dEZWJ1Z0JvcmRlcnMgYW5kIHNob3dSZXBhaW50Q291bnRlciBpbiBTZXR0aW5ncyB0byB0
cnVlLgorCisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwOgorICAgICAgICAod2Vi
a2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aW5ncyk6CisKIDIwMTMtMDEtMTUgIFphbiBEb2JlcnNl
ayAgPHphbmRvYmVyc2VrQGdtYWlsLmNvbT4KIAogICAgICAgICBbQXV0b3Rvb2xzXSBBZGQgc3Vw
cG9ydCBmb3IgV2ViS2l0Mi1vbmx5IGJ1aWxkcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9x
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCBjNjg3M2Q3MWQx
ZTI0YWEzZThhODY0OTYxYzE0NWVhOTc5MWY2YWFmLi5iNDM3YTlkYmY5Njg4MTZiMmFlM2QxMTlm
YzBkYjFiNjI1M2Y1ZjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEzLTAx
LTE2ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAg
IFtUZXhtYXBdIFJlZmFjdG9yIGNvZGUgcmVsYXRlZCB0byBkZWJ1ZyBib3JkZXIgYW5kIHJlcGFp
bnQgY291bnQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDU3ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJZiBRVF9XRUJLSVRfU0hPV19DT01QT1NJVElOR19ERUJVR19WSVNVQUxTIGlzIHNldCB0byAx
LCBzZXQKKyAgICAgICAgc2hvd0RlYnVnQm9yZGVycyBhbmQgc2hvd1JlcGFpbnRDb3VudGVyIGlu
IFNldHRpbmdzIHRvIHRydWUuCisKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKyAg
ICAgICAgKFFXZWJTZXR0aW5nc1ByaXZhdGU6OmFwcGx5KToKKwogMjAxMy0wMS0xMSAgSHVhbmcg
RG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBbVGV4TWFwXSBS
ZW5hbWUgY3VycmVudFtUcmFuc2Zvcm18T3BhY2l0eXxGaWx0ZXJzXSBpbiBUZXh0dXJlTWFwcGVy
TGF5ZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzY2NjcyMTg1Y2VjOTc4OTM2YmQxZTg4ZjA5YTIzM2MzNTM1
ZDg4YS4uNmJkNjY3MjFmY2UwMjI0ZmMyZTI5NTU4ZjBkNzg5NThiZTY1Y2E2MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDY4IEBACisyMDEzLTAxLTE2ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxh
QGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFtUZXhtYXBdIFJlZmFjdG9yIGNvZGUgcmVsYXRl
ZCB0byBkZWJ1ZyBib3JkZXIgYW5kIHJlcGFpbnQgY291bnQuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU3ODcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGVyZSBhcmUgdGhyZWUgYmlnIGNoYW5nZXM6
CisgICAgICAgIDEuIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllciBzZW5kcyBkZWJ1Z2dpbmcgdmlz
dWFscyB0byBVSSBQcm9jZXNzLgorICAgICAgICAyLiBJZiBbUVRfXVdFQktJVF9TSE9XX0NPTVBP
U0lUSU5HX0RFQlVHX1ZJU1VBTFMgaXMgc2V0IHRvIDEsIHNldAorICAgICAgICBzaG93RGVidWdC
b3JkZXJzIGFuZCBzaG93UmVwYWludENvdW50ZXIgaW4gU2V0dGluZ3MgdG8gdHJ1ZS4KKyAgICAg
ICAgMy4gV2hlbiB1cGRhdGluZyBhIGJhY2tpbmcgc3RvcmUsIGluY3JlbWVudCBhIHJlcGFpbnQg
Y291bnQuCisKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZExheWVySW5mby5oOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVySW5mbzo6Q29v
cmRpbmF0ZWRMYXllckluZm8pOgorICAgICAgICAoQ29vcmRpbmF0ZWRMYXllckluZm8pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcDoKKyAgICAgICAgKEV3a1Zp
ZXdJbXBsOjpFd2tWaWV3SW1wbCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
U2V0dGluZ3MuY3BwOgorICAgICAgICAod2ViS2l0U2V0dGluZ3NTZXRQcm9wZXJ0eSk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFRdWlj
a1dlYlZpZXdQcml2YXRlOjppbml0aWFsaXplKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjp1cGRhdGVUaWxlKToKKyAgICAgICAgKFdlYktp
dDo6Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnBhaW50VGlsZXNUb1RleHR1cmVNYXBwZXIpOgor
ICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVN
YXBwZXIpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6ZHJhd0Jv
cmRlcik6CisgICAgICAgICAgICBPdmVycmlkZSBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllcjo6
ZHJhd0JvcmRlcigpIHRvIGRyYXcgdGhlIGJvcmRlcgorICAgICAgICAgICAgZm9yIGVhY2ggdGls
ZS4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2lu
Z1N0b3JlOjpkcmF3UmVwYWludENvdW50ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6
OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZTo6Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxl
KToKKyAgICAgICAgKENvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZSk6CisgICAgICAgIChDb29y
ZGluYXRlZEJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2lu
Z1N0b3JlOjpyZWN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpzZXRMYXllclJlcGFpbnRDb3VudCk6CisgICAgICAg
IChXZWJLaXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5Lmg6CisgICAgICAgIChDb29yZGluYXRlZExheWVyVHJl
ZUhvc3RQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9j
ZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6c2V0TGF5ZXJSZXBhaW50Q291bnQpOgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OnNldExheWVy
U3RhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJl
ZVJlbmRlcmVyLmg6CisgICAgICAgIChMYXllclRyZWVSZW5kZXJlcik6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0
U2hvd0RlYnVnQm9yZGVyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRTaG93UmVwYWludENvdW50ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzeW5jTGF5ZXJTdGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldERlYnVnQm9yZGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dGlsZWRCYWNr
aW5nU3RvcmVQYWludEVuZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmg6CisgICAgICAgIChDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXJDbGllbnQpOgorICAgICAgICAoQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRl
ZExheWVyVHJlZUhvc3Q6OnNldExheWVyUmVwYWludENvdW50KToKKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRUaWxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29v
cmRpbmF0ZWRUaWxlOjp1cGRhdGVCYWNrQnVmZmVyKToKKwogMjAxMy0wMS0xNSAgRW5yaWNhIENh
c3VjY2kgIDxlbnJpY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhIG5ldyBzZXQgb2YgV2Vi
S2l0MiBBUElzIGZvciB0ZXh0IHNlYXJjaCBhbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlLmgKaW5kZXggNjlkYWQ2NzU0NzIyYWM3YTg4MmNhODc2MTVhYjg4NTQ5NzlhZmJjNi4uZDBk
ZDIzZmU3ZGJkNDFkNmFmODFmOTA3YWFkOWRhMDMyYzAxYjRkYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlLmgKQEAgLTI1LDcgKzI1LDcgQEAKICNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBVU0UoVEVYVFVS
RV9NQVBQRVIpCi0jaW5jbHVkZSAiVGV4dHVyZU1hcHBlci5oIgorI2luY2x1ZGUgIlRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyLmgiCiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250
ZXh0M0RRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGlj
c0NvbnRleHQzRFF0LmNwcAppbmRleCAyMGIzYjdkOGZiMzU3MzhjMjk1YzNjOGNkOWMzN2IyMmNj
ZDA1MTVhLi4zYzhjNWMyMjU5ODgyMWQ3MjU2N2RiYjU2NGViN2Y5YzlmNmQ2YjQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQz
RFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGlj
c0NvbnRleHQzRFF0LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIk9wZW5HTFNoaW1z
LmgiCiAjaW5jbHVkZSAiUVdlYlBhZ2VDbGllbnQuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIu
aCIKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUgPFFX
aW5kb3c+CiAjaW5jbHVkZSA8cXBhL3FwbGF0Zm9ybXBpeG1hcC5oPgogI2luY2x1ZGUgPHd0Zi9V
bnVzZWRQYXJhbS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAK
aW5kZXggZTk2Mjk2YmE1MWU0YWE3MTE1ZGJhMjI2YWE1N2ZmZWYwZWMwMTIyMi4uMmNkYmI4ZDg4
NGY5ZGE1ZWI4OTJjMDg3NjBhNzRkMGVlYmNkOWIxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXIuY3BwCkBAIC0yNCwxNCArMjQsOCBAQAogI2luY2x1ZGUgIkdyYXBo
aWNzTGF5ZXJBbmltYXRpb24uaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyRmFjdG9yeS5oIgog
I2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNp
bmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KIAotI2lmIFVTRShDQUlSTykKLSNpbmNsdWRlICJD
YWlyb1V0aWxpdGllcy5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNlbmRpZgot
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NPd25QdHI8R3JhcGhpY3NMYXllcj4gR3JhcGhp
Y3NMYXllcjo6Y3JlYXRlKEdyYXBoaWNzTGF5ZXJGYWN0b3J5KiBmYWN0b3J5LCBHcmFwaGljc0xh
eWVyQ2xpZW50KiBjbGllbnQpCkBAIC0zODMsMTUgKzM3Nyw2MCBAQCB2b2lkIEdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c1RvTWVkaWEoVGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXIqCiAgICAgbV9jb250ZW50c0xheWVyID0gbWVkaWE7CiB9CiAKK3ZvaWQgR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXI6OnNldFNob3dEZWJ1Z0JvcmRlcihib29sIHNob3cpCit7CisgICAg
aWYgKGlzU2hvd2luZ0RlYnVnQm9yZGVyKCkgPT0gc2hvdykKKyAgICAgICAgcmV0dXJuOworCisg
ICAgR3JhcGhpY3NMYXllcjo6c2V0U2hvd0RlYnVnQm9yZGVyKHNob3cpOworICAgIG5vdGlmeUNo
YW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkRlYnVnVmlzdWFsc0NoYW5nZSk7Cit9CisKK3ZvaWQg
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFNob3dSZXBhaW50Q291bnRlcihib29sIHNo
b3cpCit7CisgICAgaWYgKGlzU2hvd2luZ1JlcGFpbnRDb3VudGVyKCkgPT0gc2hvdykKKyAgICAg
ICAgcmV0dXJuOworCisgICAgR3JhcGhpY3NMYXllcjo6c2V0U2hvd1JlcGFpbnRDb3VudGVyKHNo
b3cpOworICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkRlYnVnVmlzdWFsc0No
YW5nZSk7Cit9CisKIC8qIFxyZWltcCAoR3JhcGhpY3NMYXllci5oKQogKi8KIHZvaWQgR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9u
bHkoKQogeworICAgIGlmIChtX2hhc093bkJhY2tpbmdTdG9yZSkKKyAgICAgICAgdXBkYXRlRGVi
dWdCb3JkZXJBbmRSZXBhaW50Q291bnQoKTsKICAgICBtX2xheWVyLT5mbHVzaENvbXBvc2l0aW5n
U3RhdGVGb3JUaGlzTGF5ZXJPbmx5KHRoaXMpOwotICAgIHVwZGF0ZUJhY2tpbmdTdG9yZSgpOwor
ICAgIGlmIChtX2hhc093bkJhY2tpbmdTdG9yZSkKKyAgICAgICAgdXBkYXRlQmFja2luZ1N0b3Jl
KCk7CiAgICAgZGlkRmx1c2hDb21wb3NpdGluZ1N0YXRlKCk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXI6OnVwZGF0ZURlYnVnQm9yZGVyQW5kUmVwYWludENvdW50KCkKK3sK
KyAgICBBU1NFUlQobV9oYXNPd25CYWNraW5nU3RvcmUpOworCisgICAgbV91c2luZ1RpbGVkTGF5
ZXIgPSBzaG91bGRIYXZlQmFja2luZ1N0b3JlKCk7CisgICAgdXBkYXRlRGVidWdJbmRpY2F0b3Jz
KCk7CisKKyAgICAvLyBXaGVuIHRoaXMgaGFzIGl0cyBvd24gYmFja2luZyBzdG9yZSAoZS5nLiBR
dCBXSzEpLCB1cGRhdGUgdGhlIHJlcGFpbnQgY291bnQgYmVmb3JlIGNhbGxpbmcgVGV4dHVyZU1h
cHBlckxheWVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCkuCisgICAg
Ym9vbCBuZWVkc1RvUmVwYWludCA9IHNob3VsZEhhdmVCYWNraW5nU3RvcmUoKSAmJiAobV9uZWVk
c0Rpc3BsYXkgfHwgIW1fbmVlZHNEaXNwbGF5UmVjdC5pc0VtcHR5KCkpOworICAgIGlmIChpc1No
b3dpbmdSZXBhaW50Q291bnRlcigpICYmIG5lZWRzVG9SZXBhaW50KSB7CisgICAgICAgIGluY3Jl
bWVudFJlcGFpbnRDb3VudCgpOworICAgICAgICBtX2NoYW5nZU1hc2sgfD0gVGV4dHVyZU1hcHBl
ckxheWVyOjpSZXBhaW50Q291bnRDaGFuZ2U7CisgICAgfQorfQorCit2b2lkIEdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyOjpzZXREZWJ1Z0JvcmRlcihjb25zdCBDb2xvciYgY29sb3IsIGZsb2F0
IHdpZHRoKQoreworICAgIC8vIFRoZSBkZWZhdWx0IHZhbHVlcyBmb3IgR3JhcGhpY3NMYXllciBk
ZWJ1ZyBib3JkZXJzIGFyZSBhIGxpdHRsZQorICAgIC8vIGhhcmQgdG8gc2VlIChzb21lIGxlc3Mg
dGhhbiBvbmUgcGl4ZWwgd2lkZSksIHNvIHdlIGRvdWJsZSB0aGVpciBzaXplIGhlcmUuCisgICAg
bV9kZWJ1Z0JvcmRlckNvbG9yID0gY29sb3I7CisgICAgbV9kZWJ1Z0JvcmRlcldpZHRoID0gd2lk
dGggKiAyOworICAgIG1fY2hhbmdlTWFzayB8PSBUZXh0dXJlTWFwcGVyTGF5ZXI6OkRlYnVnVmlz
dWFsc0NoYW5nZTsKK30KKwogLyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgpCiAqLwogdm9pZCBH
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlKGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCkKQEAgLTQxNiw5ICs0NTUsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyOjpkaWRGbHVzaENvbXBvc2l0aW5nU3RhdGUoKQogCiB2b2lkIEdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyOjp1cGRhdGVCYWNraW5nU3RvcmUoKQogewotICAgIGlmICghbV9oYXNP
d25CYWNraW5nU3RvcmUpCi0gICAgICAgIHJldHVybjsKLQorICAgIEFTU0VSVChtX2hhc093bkJh
Y2tpbmdTdG9yZSk7CiAgICAgcHJlcGFyZUJhY2tpbmdTdG9yZSgpOwogICAgIG1fbGF5ZXItPnNl
dEJhY2tpbmdTdG9yZShtX2JhY2tpbmdTdG9yZSk7CiB9CkBAIC00NDgsMzQgKzQ4NSw3IEBAIHZv
aWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnByZXBhcmVCYWNraW5nU3RvcmUoKQogI2Vu
ZGlmCiAgICAgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUgPSBz
dGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUqPihtX2JhY2tpbmdTdG9y
ZS5nZXQoKSk7CiAKLSAgICBpZiAoaXNTaG93aW5nUmVwYWludENvdW50ZXIoKSkKLSAgICAgICAg
aW5jcmVtZW50UmVwYWludENvdW50KCk7Ci0KLSAgICAvLyBQYWludCBpbnRvIGFuIGludGVybWVk
aWF0ZSBidWZmZXIgdG8gYXZvaWQgcGFpbnRpbmcgY29udGVudCBtb3JlIHRoYW4gb25jZS4KLSAg
ICBib29sIHBhaW50T25jZSA9IHRydWU7Ci0gICAgY29uc3QgSW50U2l6ZSBtYXhUZXh0dXJlU2l6
ZSA9IHRleHR1cmVNYXBwZXItPm1heFRleHR1cmVTaXplKCk7Ci0gICAgLy8gV2UgbmVlZCB0byBw
YWludCBkaXJlY3RseSBpZiB0aGUgZGlydHkgcmVjdCBleGNlZWRzIG9uZSBvZiB0aGUgbWF4aW11
bSBkaW1lbnNpb25zLgotICAgIGlmIChkaXJ0eVJlY3Qud2lkdGgoKSA+IG1heFRleHR1cmVTaXpl
LndpZHRoKCkgfHwgZGlydHlSZWN0LmhlaWdodCgpID4gbWF4VGV4dHVyZVNpemUuaGVpZ2h0KCkp
Ci0gICAgICAgIHBhaW50T25jZSA9IGZhbHNlOwotCi0gICAgaWYgKHBhaW50T25jZSkgewotICAg
ICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZShkaXJ0eVJlY3Quc2l6ZSgpKTsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0g
aW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKLSAgICAgICAgY29udGV4dC0+c2V0SW1hZ2VJbnRlcnBv
bGF0aW9uUXVhbGl0eSh0ZXh0dXJlTWFwcGVyLT5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkp
OwotICAgICAgICBjb250ZXh0LT5zZXRUZXh0RHJhd2luZ01vZGUodGV4dHVyZU1hcHBlci0+dGV4
dERyYXdpbmdNb2RlKCkpOwotICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoLWRpcnR5UmVjdC54
KCksIC1kaXJ0eVJlY3QueSgpKTsKLSAgICAgICAgcGFpbnRHcmFwaGljc0xheWVyQ29udGVudHMo
KmNvbnRleHQsIGRpcnR5UmVjdCk7Ci0KLSAgICAgICAgaWYgKGlzU2hvd2luZ1JlcGFpbnRDb3Vu
dGVyKCkpCi0gICAgICAgICAgICBkcmF3UmVwYWludENvdW50ZXIoY29udGV4dCk7Ci0KLSAgICAg
ICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGltYWdlQnVmZmVyLT5jb3B5SW1hZ2UoRG9udENvcHlC
YWNraW5nU3RvcmUpOwotICAgICAgICBiYWNraW5nU3RvcmUtPnVwZGF0ZUNvbnRlbnRzKHRleHR1
cmVNYXBwZXIsIGltYWdlLmdldCgpLCBtX3NpemUsIGRpcnR5UmVjdCwgQml0bWFwVGV4dHVyZTo6
VXBkYXRlQ2FuTW9kaWZ5T3JpZ2luYWxJbWFnZURhdGEpOwotICAgIH0gZWxzZQotICAgICAgICBi
YWNraW5nU3RvcmUtPnVwZGF0ZUNvbnRlbnRzKHRleHR1cmVNYXBwZXIsIHRoaXMsIG1fc2l6ZSwg
ZGlydHlSZWN0LCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDYW5Nb2RpZnlPcmlnaW5hbEltYWdlRGF0
YSk7Ci0KLSAgICBiYWNraW5nU3RvcmUtPnNldFNob3dEZWJ1Z0JvcmRlcnMoaXNTaG93aW5nRGVi
dWdCb3JkZXIoKSk7Ci0gICAgYmFja2luZ1N0b3JlLT5zZXREZWJ1Z0JvcmRlcihtX2RlYnVnQm9y
ZGVyQ29sb3IsIG1fZGVidWdCb3JkZXJXaWR0aCk7CisgICAgYmFja2luZ1N0b3JlLT51cGRhdGVD
b250ZW50cyh0ZXh0dXJlTWFwcGVyLCB0aGlzLCBtX3NpemUsIGRpcnR5UmVjdCwgQml0bWFwVGV4
dHVyZTo6VXBkYXRlQ2FuTW9kaWZ5T3JpZ2luYWxJbWFnZURhdGEpOwogCiAgICAgbV9uZWVkc0Rp
c3BsYXkgPSBmYWxzZTsKICAgICBtX25lZWRzRGlzcGxheVJlY3QgPSBJbnRSZWN0KCk7CkBAIC00
ODYsNDAgKzQ5Niw2IEBAIGJvb2wgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNob3VsZEhh
dmVCYWNraW5nU3RvcmUoKSBjb25zdAogICAgIHJldHVybiBkcmF3c0NvbnRlbnQoKSAmJiBjb250
ZW50c0FyZVZpc2libGUoKSAmJiAhbV9zaXplLmlzRW1wdHkoKTsKIH0KIAotI2lmIFVTRShDQUlS
TykKLXZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmRyYXdSZXBhaW50Q291bnRlcihH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQpCi17Ci0gICAgY2Fpcm9fdCogY3IgPSBjb250ZXh0LT5w
bGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKLSAgICBjYWlyb19zYXZlKGNyKTsKLQotICAgIENTdHJp
bmcgcmVwYWludENvdW50ID0gU3RyaW5nOjpmb3JtYXQoIiVpIiwgdGhpcy0+cmVwYWludENvdW50
KCkpLnV0ZjgoKTsKLSAgICBjYWlyb19zZWxlY3RfZm9udF9mYWNlKGNyLCAic2Fucy1zZXJpZiIs
IENBSVJPX0ZPTlRfU0xBTlRfTk9STUFMLCBDQUlST19GT05UX1dFSUdIVF9CT0xEKTsKLSAgICBj
YWlyb19zZXRfZm9udF9zaXplKGNyLCAxOCk7Ci0KLSAgICBjYWlyb190ZXh0X2V4dGVudHNfdCBy
ZXBhaW50VGV4dEV4dGVudHM7Ci0gICAgY2Fpcm9fdGV4dF9leHRlbnRzKGNyLCByZXBhaW50Q291
bnQuZGF0YSgpLCAmcmVwYWludFRleHRFeHRlbnRzKTsKLQotICAgIHN0YXRpYyBjb25zdCBpbnQg
cmVwYWludENvdW50Qm9yZGVyV2lkdGggPSAxMDsKLSAgICBzZXRTb3VyY2VSR0JBRnJvbUNvbG9y
KGNyLCBpc1Nob3dpbmdEZWJ1Z0JvcmRlcigpID8gbV9kZWJ1Z0JvcmRlckNvbG9yIDogQ29sb3Io
MCwgMjU1LCAwLCAxMjcpKTsKLSAgICBjYWlyb19yZWN0YW5nbGUoY3IsIDAsIDAsCi0gICAgICAg
IHJlcGFpbnRUZXh0RXh0ZW50cy53aWR0aCArIChyZXBhaW50Q291bnRCb3JkZXJXaWR0aCAqIDIp
LAotICAgICAgICByZXBhaW50VGV4dEV4dGVudHMuaGVpZ2h0ICsgKHJlcGFpbnRDb3VudEJvcmRl
cldpZHRoICogMikpOwotICAgIGNhaXJvX2ZpbGwoY3IpOwotCi0gICAgY2Fpcm9fc2V0X3NvdXJj
ZV9yZ2IoY3IsIDEsIDEsIDEpOwotICAgIGNhaXJvX21vdmVfdG8oY3IsIHJlcGFpbnRDb3VudEJv
cmRlcldpZHRoLCByZXBhaW50VGV4dEV4dGVudHMuaGVpZ2h0ICsgcmVwYWludENvdW50Qm9yZGVy
V2lkdGgpOwotICAgIGNhaXJvX3Nob3dfdGV4dChjciwgcmVwYWludENvdW50LmRhdGEoKSk7Ci0K
LSAgICBjYWlyb19yZXN0b3JlKGNyKTsKLX0KLSNlbHNlCi12b2lkIEdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyOjpkcmF3UmVwYWludENvdW50ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQot
ewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLSNlbmRpZgotCiBib29sIEdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyOjphZGRBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZh
bHVlTGlzdCwgY29uc3QgSW50U2l6ZSYgYm94U2l6ZSwgY29uc3QgQW5pbWF0aW9uKiBhbmltLCBj
b25zdCBTdHJpbmcmIGtleWZyYW1lc05hbWUsIGRvdWJsZSB0aW1lT2Zmc2V0KQogewogICAgIEFT
U0VSVCgha2V5ZnJhbWVzTmFtZS5pc0VtcHR5KCkpOwpAQCAtNTYxLDE0ICs1MzcsNiBAQCB2b2lk
IEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjphbmltYXRpb25TdGFydGVkVGltZXJGaXJlZChU
aW1lcjxHcmFwaGljc0xheWVyVAogICAgIGNsaWVudCgpLT5ub3RpZnlBbmltYXRpb25TdGFydGVk
KHRoaXMsIC8qIERPTSB0aW1lICovIFdURjo6Y3VycmVudFRpbWUoKSk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldERlYnVnQm9yZGVyKGNvbnN0IENvbG9yJiBjb2xv
ciwgZmxvYXQgd2lkdGgpCi17Ci0gICAgLy8gVGhlIGRlZmF1bHQgdmFsdWVzIGZvciBHcmFwaGlj
c0xheWVyIGRlYnVnIGJvcmRlcnMgYXJlIGEgbGl0dGxlCi0gICAgLy8gaGFyZCB0byBzZWUgKHNv
bWUgbGVzcyB0aGFuIG9uZSBwaXhlbCB3aWRlKSwgc28gd2UgZG91YmxlIHRoZWlyIHNpemUgaGVy
ZS4KLSAgICBtX2RlYnVnQm9yZGVyQ29sb3IgPSBjb2xvcjsKLSAgICBtX2RlYnVnQm9yZGVyV2lk
dGggPSB3aWR0aCAqIDI7Ci19Ci0KICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiBib29sIEdyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMm
IGZpbHRlcnMpCiB7CkBAIC01NzcsNCArNTQ1LDEwIEBAIGJvb2wgR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXI6OnNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKIH0K
ICNlbmRpZgogCit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRSZXBhaW50Q291
bnQoaW50IHJlcGFpbnRDb3VudCkKK3sKKyAgICBtX3JlcGFpbnRDb3VudCA9IHJlcGFpbnRDb3Vu
dDsKKyAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpSZXBhaW50Q291bnRDaGFu
Z2UpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oCmluZGV4
IDEyYzMxOTU5MWI3MjZjN2M5ZjBiYTJiZGZkZjQzODRlN2RlYTE3MTMuLmFmYzUxYTYyYzE1NjZm
ZjE0NDVlMTQ3MjUxNGFmMjZhZWQ2YmVmOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlci5oCkBAIC0yMCw3ICsyMCw2IEBACiAjaWZuZGVmIEdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyX2gKICNkZWZpbmUgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXJfaAogCi0jaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgogI2lu
Y2x1ZGUgIkdyYXBoaWNzTGF5ZXJDbGllbnQuaCIKICNpbmNsdWRlICJJbWFnZS5oIgpAQCAtNjYs
NiArNjUsOSBAQCBwdWJsaWM6CiAgICAgQ29sb3Igc29saWRDb2xvcigpIGNvbnN0IHsgcmV0dXJu
IG1fc29saWRDb2xvcjsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvTWVkaWEoUGxh
dGZvcm1MYXllciopOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvQ2FudmFzKFBsYXRm
b3JtTGF5ZXIqIGNhbnZhcykgeyBzZXRDb250ZW50c1RvTWVkaWEoY2FudmFzKTsgfQorICAgIHZp
cnR1YWwgdm9pZCBzZXRTaG93RGVidWdCb3JkZXIoYm9vbCkgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIHNldERlYnVnQm9yZGVyKGNvbnN0IENvbG9yJiwgZmxvYXQgd2lkdGgpIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBzZXRTaG93UmVwYWludENvdW50ZXIoYm9vbCkgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIGZsdXNoQ29tcG9zaXRpbmdTdGF0ZShjb25zdCBGbG9hdFJlY3Qm
KTsKICAgICB2aXJ0dWFsIHZvaWQgZmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25s
eSgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXROYW1lKGNvbnN0IFN0cmluZyYgbmFtZSk7CkBAIC04
MSw4ICs4Myw2IEBAIHB1YmxpYzoKIAogICAgIFRleHR1cmVNYXBwZXJMYXllciogbGF5ZXIoKSBj
b25zdCB7IHJldHVybiBtX2xheWVyLmdldCgpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RGVi
dWdCb3JkZXIoY29uc3QgQ29sb3ImLCBmbG9hdCB3aWR0aCk7Ci0KICNpZiBFTkFCTEUoQ1NTX0ZJ
TFRFUlMpCiAgICAgdmlydHVhbCBib29sIHNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9u
cyYpOwogI2VuZGlmCkBAIC05MywxMCArOTMsMTUgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Rml4
ZWRUb1ZpZXdwb3J0KGJvb2wgZml4ZWQpIHsgbV9maXhlZFRvVmlld3BvcnQgPSBmaXhlZDsgfQog
ICAgIGJvb2wgZml4ZWRUb1ZpZXdwb3J0KCkgY29uc3QgeyByZXR1cm4gbV9maXhlZFRvVmlld3Bv
cnQ7IH0KIAotICAgIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVyKEdyYXBoaWNzQ29udGV4dCopOwor
ICAgIENvbG9yIGRlYnVnQm9yZGVyQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnQm9yZGVy
Q29sb3I7IH0KKyAgICBmbG9hdCBkZWJ1Z0JvcmRlcldpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9k
ZWJ1Z0JvcmRlcldpZHRoOyB9CisKKyAgICB2b2lkIHNldFJlcGFpbnRDb3VudChpbnQpOworCiBw
cml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKTsKICAgICB2b2lkIGRp
ZEZsdXNoQ29tcG9zaXRpbmdTdGF0ZSgpOworICAgIHZvaWQgdXBkYXRlRGVidWdCb3JkZXJBbmRS
ZXBhaW50Q291bnQoKTsKICAgICB2b2lkIHVwZGF0ZUJhY2tpbmdTdG9yZSgpOwogICAgIHZvaWQg
cHJlcGFyZUJhY2tpbmdTdG9yZSgpOwogICAgIGJvb2wgc2hvdWxkSGF2ZUJhY2tpbmdTdG9yZSgp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyLmgKaW5kZXggYzcyNDFhNmM5YTcyMmE2NDUyZjdjMThjOWQ2Njk3
MTI3NjY5MzY2Yi4uZDk2MTE2YjcwOTkzNjhhZDQ0NTU5OTZjMWI3MzIwMTYyNzBkZWVjMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlci5oCkBAIC0zNiw3ICszNiw2IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRl
ICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9u
TWF0cml4LmgiCiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CiAKQEAgLTEzMCw4ICsxMjks
OSBAQCBwdWJsaWM6CiAgICAgICAgIEFsbEVkZ2VzID0gTGVmdEVkZ2UgfCBSaWdodEVkZ2UgfCBU
b3BFZGdlIHwgQm90dG9tRWRnZSwKICAgICB9OwogCi0gICAgdmlydHVhbCB2b2lkIGRyYXdCb3Jk
ZXIoY29uc3QgQ29sb3ImLCBmbG9hdCBib3JkZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0JiB0YXJn
ZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4ID0gVHJh
bnNmb3JtYXRpb25NYXRyaXgoKSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVwYWludENv
dW50ZXIoaW50IHZhbHVlLCBpbnQgcG9pbnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCA9IFRyYW5zZm9ybWF0aW9uTWF0
cml4KCkpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0JvcmRlcihjb25zdCBDb2xvciYsIGZs
b2F0IGJvcmRlcldpZHRoLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVyKGludCByZXBh
aW50Q291bnQsIGNvbnN0IENvbG9yJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JikgPSAwOworCiAgICAgdmlydHVhbCB2b2lkIGRyYXdUZXh0dXJlKGNvbnN0
IEJpdG1hcFRleHR1cmUmLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldCwgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGZs
b2F0IG9wYWNpdHkgPSAxLjBmLCBjb25zdCBCaXRtYXBUZXh0dXJlKiBtYXNrVGV4dHVyZSA9IDAs
IHVuc2lnbmVkIGV4cG9zZWRFZGdlcyA9IEFsbEVkZ2VzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGRyYXdTb2xpZENvbG9yKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiwgY29uc3QgQ29sb3ImKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2lu
Z1N0b3JlLmNwcAppbmRleCBlODk5MjUzMWIyODdjNWI1OTc3OWU2NDc2ZTgwMWI4YjY5OTVjMmM3
Li5lNDZmNDgwNmQ1NDdiNDRmOGIxMjZiNWVhZDcyOGE4ZGRhMTY2ODdhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tp
bmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuY3BwCkBAIC0zMyw2ICszMywxMyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK1RyYW5zZm9ybWF0aW9uTWF0cml4IFRleHR1cmVNYXBwZXJCYWNr
aW5nU3RvcmU6OnJlY3RUb1JlY3QoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9y
bSwgY29uc3QgRmxvYXRSZWN0JiBmcm9tLCBjb25zdCBGbG9hdFJlY3QmIHRvKQoreworICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3JtID0gdHJhbnNmb3JtOworICAgIGFk
anVzdGVkVHJhbnNmb3JtLm11bHRpcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4OjpyZWN0VG9SZWN0
KGZyb20sIHRvKSk7CisgICAgcmV0dXJuIGFkanVzdGVkVHJhbnNmb3JtOworfQorCiAjaWYgVVNF
KEdSQVBISUNTX1NVUkZBQ0UpCiB2b2lkIFRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3Jl
OjpzZXRHcmFwaGljc1N1cmZhY2UoUGFzc1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+IHN1cmZhY2Up
CiB7CkBAIC0xMDYsNyArMTEzLDYgQEAgdm9pZCBUZXh0dXJlTWFwcGVyVGlsZTo6cGFpbnQoVGV4
dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgVHJhbnNmb3JtYXRpb24KIH0KIAogVGV4
dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3Rv
cmUoKQotICAgIDogbV9kcmF3c0RlYnVnQm9yZGVycyhmYWxzZSkKIHsKIH0KIApAQCAtMTM2LDEz
ICsxNDIsMjMgQEAgdW5zaWduZWQgVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZTo6Y2FsY3VsYXRl
RXhwb3NlZFRpbGVFZGdlcyhjb25zdCBGbG9hdFJlY3QmIHQKIHZvaWQgVGV4dHVyZU1hcHBlclRp
bGVkQmFja2luZ1N0b3JlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0
dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUqIG1hc2sp
CiB7CiAgICAgdXBkYXRlQ29udGVudHNGcm9tSW1hZ2VJZk5lZWRlZCh0ZXh0dXJlTWFwcGVyKTsK
LSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhZGp1c3RlZFRyYW5zZm9ybSA9IHRyYW5zZm9ybTsK
LSAgICBhZGp1c3RlZFRyYW5zZm9ybS5tdWx0aXBseShUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6cmVj
dFRvUmVjdChyZWN0KCksIHRhcmdldFJlY3QpKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1fdGlsZXMuc2l6ZSgpOyArK2kpIHsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhZGp1c3Rl
ZFRyYW5zZm9ybSA9IHJlY3RUb1JlY3QodHJhbnNmb3JtLCByZWN0KCksIHRhcmdldFJlY3QpOwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90aWxlcy5zaXplKCk7ICsraSkKICAgICAgICAg
bV90aWxlc1tpXS5wYWludCh0ZXh0dXJlTWFwcGVyLCBhZGp1c3RlZFRyYW5zZm9ybSwgb3BhY2l0
eSwgbWFzaywgY2FsY3VsYXRlRXhwb3NlZFRpbGVFZGdlcyhyZWN0KCksIG1fdGlsZXNbaV0ucmVj
dCgpKSk7Ci0gICAgICAgIGlmIChtX2RyYXdzRGVidWdCb3JkZXJzKQotICAgICAgICAgICAgdGV4
dHVyZU1hcHBlci0+ZHJhd0JvcmRlcihtX2RlYnVnQm9yZGVyQ29sb3IsIG1fZGVidWdCb3JkZXJX
aWR0aCwgbV90aWxlc1tpXS5yZWN0KCksIGFkanVzdGVkVHJhbnNmb3JtKTsKLSAgICB9Cit9CisK
K3ZvaWQgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpkcmF3Qm9yZGVyKFRleHR1cmVN
YXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IENvbG9yJiBib3JkZXJDb2xvciwgZmxvYXQgYm9y
ZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmIHRyYW5zZm9ybSkKK3sKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhZGp1c3Rl
ZFRyYW5zZm9ybSA9IHJlY3RUb1JlY3QodHJhbnNmb3JtLCByZWN0KCksIHRhcmdldFJlY3QpOwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90aWxlcy5zaXplKCk7ICsraSkKKyAgICAgICAg
dGV4dHVyZU1hcHBlci0+ZHJhd0JvcmRlcihib3JkZXJDb2xvciwgYm9yZGVyV2lkdGgsIG1fdGls
ZXNbaV0ucmVjdCgpLCBhZGp1c3RlZFRyYW5zZm9ybSk7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBl
clRpbGVkQmFja2luZ1N0b3JlOjpkcmF3UmVwYWludENvdW50ZXIoVGV4dHVyZU1hcHBlciogdGV4
dHVyZU1hcHBlciwgaW50IHJlcGFpbnRDb3VudCwgY29uc3QgQ29sb3ImIGJvcmRlckNvbG9yLCBj
b25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0
cmFuc2Zvcm0pCit7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggYWRqdXN0ZWRUcmFuc2Zvcm0g
PSByZWN0VG9SZWN0KHRyYW5zZm9ybSwgcmVjdCgpLCB0YXJnZXRSZWN0KTsKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG1fdGlsZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIHRleHR1cmVNYXBw
ZXItPmRyYXdSZXBhaW50Q291bnRlcihyZXBhaW50Q291bnQsIGJvcmRlckNvbG9yLCBtX3RpbGVz
W2ldLnJlY3QoKS5sb2NhdGlvbigpLCBhZGp1c3RlZFRyYW5zZm9ybSk7CiB9CiAKIHZvaWQgVGV4
dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGVPckRlc3Ryb3lUaWxlc0lmTmVlZGVk
KGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGJvb2wgaGFz
QWxwaGEpCkBAIC0yMzQsMTEgKzI1MCw1IEBAIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gVGV4
dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjp0ZXh0dXJlKCkgY29uc3QKICAgICByZXR1cm4g
UGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPigpOwogfQogCi12b2lkIFRleHR1cmVNYXBwZXJUaWxl
ZEJhY2tpbmdTdG9yZTo6c2V0RGVidWdCb3JkZXIoY29uc3QgQ29sb3ImIGNvbG9yLCBmbG9hdCB3
aWR0aCkKLXsKLSAgICBtX2RlYnVnQm9yZGVyQ29sb3IgPSBjb2xvcjsKLSAgICBtX2RlYnVnQm9y
ZGVyV2lkdGggPSB3aWR0aDsKLX0KLQogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJC
YWNraW5nU3RvcmUuaAppbmRleCAwZGQyZGY0YjE5OGJkMzExZmQ0MWM1NWEzMzc3MjE4NGNkMTRi
MzRhLi4wMDcyMDc2NmJkYjAyZmE1MjdmOWQ2MzRkMWQwMzM0YjgyNzlkZDFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJh
Y2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmgKQEAgLTQwLDggKzQwLDE0IEBAIGNsYXNzIFRl
eHR1cmVNYXBwZXJCYWNraW5nU3RvcmUgOiBwdWJsaWMgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXIsIHB1YmxpYyBSZWZDCiBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEJpdG1hcFRl
eHR1cmU+IHRleHR1cmUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0
dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYsIGZsb2F0LCBCaXRtYXBUZXh0dXJlKikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBkcmF3UmVwYWludENvdW50ZXIoVGV4dHVyZU1hcHBlciosIGludCAvKiByZXBhaW50Q291
bnQgKi8sIGNvbnN0IENvbG9yJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmKQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQog
ICAgIHZpcnR1YWwgflRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUoKSB7IH0KIAorICAgIHN0YXRp
YyBUcmFuc2Zvcm1hdGlvbk1hdHJpeCByZWN0VG9SZWN0KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiwgY29uc3QgRmxvYXRSZWN0JiBmcm9tLCBjb25zdCBGbG9hdFJlY3QmIHRvKTsKKwogcHJv
dGVjdGVkOgogICAgIHN0YXRpYyB1bnNpZ25lZCBjYWxjdWxhdGVFeHBvc2VkVGlsZUVkZ2VzKGNv
bnN0IEZsb2F0UmVjdCYgdG90YWxSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0KTsKIH07
CkBAIC05NCwxMiArMTAwLDEyIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxC
aXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0LCBCaXRtYXBUZXh0dXJlKikgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIGRyYXdCb3JkZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IENv
bG9yJiwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRyYXdSZXBhaW50Q291
bnRlcihUZXh0dXJlTWFwcGVyKiwgaW50IHJlcGFpbnRDb3VudCwgY29uc3QgQ29sb3ImLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIE9WRVJSSURFOwogICAg
IHZvaWQgdXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciosIEltYWdlKiwgY29uc3QgRmxvYXRT
aXplJiwgY29uc3QgSW50UmVjdCYsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNvbnRlbnRzRmxhZyk7
CiAgICAgdm9pZCB1cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVyKiwgR3JhcGhpY3NMYXllcios
IGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEludFJlY3QmLCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVD
b250ZW50c0ZsYWcpOwogCiAgICAgdm9pZCBzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqIGltYWdl
KSB7IG1faW1hZ2UgPSBpbWFnZTsgfQotICAgIHZvaWQgc2V0U2hvd0RlYnVnQm9yZGVycyhib29s
IGRyYXdzRGVidWdCb3JkZXJzKSB7IG1fZHJhd3NEZWJ1Z0JvcmRlcnMgPSBkcmF3c0RlYnVnQm9y
ZGVyczsgfQotICAgIHZvaWQgc2V0RGVidWdCb3JkZXIoY29uc3QgQ29sb3ImLCBmbG9hdCB3aWR0
aCk7CiAKIHByaXZhdGU6CiAgICAgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlKCk7CkBA
IC0xMTAsMTAgKzExNiw2IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFRleHR1cmVNYXBwZXJUaWxl
PiBtX3RpbGVzOwogICAgIEZsb2F0U2l6ZSBtX3NpemU7CiAgICAgUmVmUHRyPEltYWdlPiBtX2lt
YWdlOwotCi0gICAgYm9vbCBtX2RyYXdzRGVidWdCb3JkZXJzOwotICAgIENvbG9yIG1fZGVidWdC
b3JkZXJDb2xvcjsKLSAgICBmbG9hdCBtX2RlYnVnQm9yZGVyV2lkdGg7CiB9OwogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyR0wuY3BwCmluZGV4IGI4MjkxOGVjMDJhZWJmYzgyMjNmMjM4NDI1NmJlMzljM2Q3
OTk0YmUuLjY5YzU4NmJhMmI1ZDEwYTk5OGVhNzgzMDJjZjk2MmUyYzRhYWE4MzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
R0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyR0wuY3BwCkBAIC0zMDksMTAgKzMwOSwxNiBAQCB2b2lkIFRleHR1cmVNYXBwZXJH
TDo6ZHJhd0JvcmRlcihjb25zdCBDb2xvciYgY29sb3IsIGZsb2F0IHdpZHRoLCBjb25zdCBGbG9h
dFJlYwogICAgIGRyYXcodGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCBwcm9ncmFtLmdldCgp
LCBHcmFwaGljc0NvbnRleHQzRDo6TElORV9MT09QLCBjb2xvci5oYXNBbHBoYSgpID8gU2hvdWxk
QmxlbmQgOiAwKTsKIH0KIAotdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdSZXBhaW50Q291bnRl
cihpbnQgdmFsdWUsIGludCBwb2ludFNpemUsIGNvbnN0IEZsb2F0UG9pbnQmIHRhcmdldFBvaW50
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4KQorc3RhdGljIGlu
bGluZSBSR0JBMzIgY29udmVydEFCR1JUb0FSR0IoUkdCQTMyIHBpeGVsKQogeworICAgIHJldHVy
biAoKHBpeGVsIDw8IDE2KSAmIDB4ZmYwMDAwKSB8ICgocGl4ZWwgPj4gMTYpICYgMHhmZikgfCAo
cGl4ZWwgJiAweGZmMDBmZjAwKTsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdSZXBh
aW50Q291bnRlcihpbnQgcmVwYWludENvdW50LCBjb25zdCBDb2xvciYgY29sb3IsIGNvbnN0IEZs
b2F0UG9pbnQmIHRhcmdldFBvaW50LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxW
aWV3TWF0cml4KQoreworICAgIHN0YXRpYyBjb25zdCBpbnQgcG9pbnRTaXplID0gODsKICNpZiBQ
TEFURk9STShRVCkKLSAgICBRU3RyaW5nIGNvdW50ZXJTdHJpbmcgPSBRU3RyaW5nOjpudW1iZXIo
dmFsdWUpOworICAgIFFTdHJpbmcgY291bnRlclN0cmluZyA9IFFTdHJpbmc6Om51bWJlcihyZXBh
aW50Q291bnQpOwogCiAgICAgUUZvbnQgZm9udChRU3RyaW5nOjpmcm9tTGF0aW4xKCJNb25vc3Bh
Y2UiKSwgcG9pbnRTaXplLCBRRm9udDo6Qm9sZCk7CiAgICAgZm9udC5zZXRTdHlsZUhpbnQoUUZv
bnQ6OlR5cGVXcml0ZXIpOwpAQCAtMzI3LDcgKzMzMyw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdM
OjpkcmF3UmVwYWludENvdW50ZXIoaW50IHZhbHVlLCBpbnQgcG9pbnRTaXplLCBjb25zdCBGbG9h
dFBvCiAKICAgICBRSW1hZ2UgaW1hZ2Uoc2l6ZSwgTmF0aXZlSW1hZ2VRdDo6ZGVmYXVsdEZvcm1h
dEZvckFscGhhRW5hYmxlZEltYWdlcygpKTsKICAgICBRUGFpbnRlciBwYWludGVyKCZpbWFnZSk7
Ci0gICAgcGFpbnRlci5maWxsUmVjdChzb3VyY2VSZWN0LCBRdDo6Ymx1ZSk7IC8vIFNpbmNlIHdl
IHdvbid0IHN3YXAgUitCIGZvciBzcGVlZCwgdGhpcyB3aWxsIHBhaW50IHJlZC4KKyAgICBwYWlu
dGVyLmZpbGxSZWN0KHNvdXJjZVJlY3QsIGNvbnZlcnRBQkdSVG9BUkdCKGNvbG9yLnJnYigpKSk7
IC8vIFNpbmNlIHdlIHdvbid0IHN3YXAgUitCIGZvciBzcGVlZCwgdGhpcyB3aWxsIHBhaW50IHRo
ZSBnaXZlbiBjb2xvci4KICAgICBwYWludGVyLnNldEZvbnQoZm9udCk7CiAgICAgcGFpbnRlci5z
ZXRQZW4oUXQ6OndoaXRlKTsKICAgICBwYWludGVyLmRyYXdUZXh0KDIsIGhlaWdodCAqIDAuODUs
IGNvdW50ZXJTdHJpbmcpOwpAQCAtMzM4LDcgKzM0NCw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdM
OjpkcmF3UmVwYWludENvdW50ZXIoaW50IHZhbHVlLCBpbnQgcG9pbnRTaXplLCBjb25zdCBGbG9h
dFBvCiAgICAgZHJhd1RleHR1cmUoKnRleHR1cmUsIHRhcmdldFJlY3QsIG1vZGVsVmlld01hdHJp
eCwgMS4wZiwgMCwgQWxsRWRnZXMpOwogCiAjZWxpZiBVU0UoQ0FJUk8pCi0gICAgQ1N0cmluZyBj
b3VudGVyU3RyaW5nID0gU3RyaW5nOjpudW1iZXIodmFsdWUpLmFzY2lpKCk7CisgICAgQ1N0cmlu
ZyBjb3VudGVyU3RyaW5nID0gU3RyaW5nOjpudW1iZXIocmVwYWludENvdW50KS5hc2NpaSgpOwog
ICAgIC8vIGNhaXJvX3RleHRfZXh0ZW50cygpIHJlcXVpcmVzIGEgY2Fpcm9fdCwgc28gZGltZW5z
aW9ucyBuZWVkIHRvIGJlIGd1ZXNzdGltYXRlZC4KICAgICBpbnQgd2lkdGggPSBjb3VudGVyU3Ry
aW5nLmxlbmd0aCgpICogcG9pbnRTaXplICogMS4yOwogICAgIGludCBoZWlnaHQgPSBwb2ludFNp
emUgKiAxLjU7CkBAIC0zNDYsNyArMzUyLDkgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdS
ZXBhaW50Q291bnRlcihpbnQgdmFsdWUsIGludCBwb2ludFNpemUsIGNvbnN0IEZsb2F0UG8KICAg
ICBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZShD
QUlST19GT1JNQVRfQVJHQjMyLCB3aWR0aCwgaGVpZ2h0KTsKICAgICBjYWlyb190KiBjciA9IGNh
aXJvX2NyZWF0ZShzdXJmYWNlKTsKIAotICAgIGNhaXJvX3NldF9zb3VyY2VfcmdiKGNyLCAwLCAw
LCAxKTsgLy8gU2luY2Ugd2Ugd29uJ3Qgc3dhcCBSK0IgZm9yIHNwZWVkLCB0aGlzIHdpbGwgcGFp
bnQgcmVkLgorICAgIGZsb2F0IHIsIGcsIGIsIGE7CisgICAgY29sb3IuZ2V0UkdCQShyLCBnLCBi
LCBhKTsKKyAgICBjYWlyb19zZXRfc291cmNlX3JnYmEoY3IsIGIsIGcsIHIsIGEpOyAvLyBTaW5j
ZSB3ZSB3b24ndCBzd2FwIFIrQiBmb3Igc3BlZWQsIHRoaXMgd2lsbCBwYWludCB0aGUgZ2l2ZW4g
Y29sb3IuCiAgICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLCAwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKICAg
ICBjYWlyb19maWxsKGNyKTsKIApAQCAtMzcwLDcgKzM3OCw3IEBAIHZvaWQgVGV4dHVyZU1hcHBl
ckdMOjpkcmF3UmVwYWludENvdW50ZXIoaW50IHZhbHVlLCBpbnQgcG9pbnRTaXplLCBjb25zdCBG
bG9hdFBvCiAgICAgY2Fpcm9fZGVzdHJveShjcik7CiAKICNlbHNlCi0gICAgVU5VU0VEX1BBUkFN
KHZhbHVlKTsKKyAgICBVTlVTRURfUEFSQU0ocmVwYWludENvdW50KTsKICAgICBVTlVTRURfUEFS
QU0ocG9pbnRTaXplKTsKICAgICBVTlVTRURfUEFSQU0odGFyZ2V0UG9pbnQpOwogICAgIFVOVVNF
RF9QQVJBTShtb2RlbFZpZXdNYXRyaXgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oCmluZGV4IDE2MDUwN2M2
MDY4ZmVmYzM1NDg0MzBmYmVkYWFmMzUwNjNkOTc0MTYuLjk4M2UyYTA2YzNjNDNkNjNhYTllYmEx
YWY2YzFhMWQ4ZGY1OTNkZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmgKQEAgLTUyLDggKzUyLDggQEAg
cHVibGljOgogICAgIHR5cGVkZWYgaW50IEZsYWdzOwogCiAgICAgLy8gVGV4dHVyZU1hcHBlciBp
bXBsZW1lbnRhdGlvbgotICAgIHZpcnR1YWwgdm9pZCBkcmF3Qm9yZGVyKGNvbnN0IENvbG9yJiwg
ZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4
KCkpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVwYWludENvdW50ZXIoaW50IHZh
bHVlLCBpbnQgcG9pbnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBkcmF3Qm9yZGVyKGNvbnN0IENvbG9yJiwgZmxvYXQgYm9y
ZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jikg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRyYXdSZXBhaW50Q291bnRlcihpbnQgcmVwYWlu
dENvdW50LCBjb25zdCBDb2xvciYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3VGV4dHVyZShjb25z
dCBCaXRtYXBUZXh0dXJlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmLCBmbG9hdCBvcGFjaXR5LCBjb25zdCBCaXRtYXBUZXh0dXJlKiBtYXNrVGV4dHVyZSwg
dW5zaWduZWQgZXhwb3NlZEVkZ2VzKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1Rl
eHR1cmUoUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlLCBGbGFncywgY29uc3QgSW50U2l6ZSYgdGV4
dHVyZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4
dHVyZSogbWFza1RleHR1cmUsIHVuc2lnbmVkIGV4cG9zZWRFZGdlcyA9IEFsbEVkZ2VzKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZHJhd1NvbGlkQ29sb3IoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBDb2xvciYpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFn
ZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcAppbmRleCA5MjkwNTNiMTJiNzQwMjU4NGM1NDg3YTM4
YWI4MGZjZGIxYTExMGI4Li42OWZkNzM4ZjU4ZmM5MTQ1MTdiOTlhOTdlNDA3MzM5MTZjMzY3ZGRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcApAQCAtMjUsNiArMjUs
NyBAQAogI2lmIFBMQVRGT1JNKFFUKQogI2luY2x1ZGUgIk5hdGl2ZUltYWdlUXQuaCIKICNlbmRp
ZgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAKIAogI2lmIFVTRShURVhUVVJFX01BUFBF
UikKQEAgLTE2NCw2ICsxNjUsMTYgQEAgdm9pZCBUZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXI6OmRy
YXdTb2xpZENvbG9yKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgVHJhbnMKICAgICBjb250
ZXh0LT5yZXN0b3JlKCk7CiB9CiAKK3ZvaWQgVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyOjpkcmF3
Qm9yZGVyKGNvbnN0IENvbG9yJiwgZmxvYXQgLyogYm9yZGVyV2lkdGggKi8sIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JikKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCit2b2lkIFRleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlcjo6ZHJhd1JlcGFpbnRDb3Vu
dGVyKGludCAvKiByZXBhaW50Q291bnQgKi8sIGNvbnN0IENvbG9yJiwgY29uc3QgRmxvYXRQb2lu
dCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJl
PiBCaXRtYXBUZXh0dXJlSW1hZ2VCdWZmZXI6OmFwcGx5RmlsdGVycyhUZXh0dXJlTWFwcGVyKiwg
Y29uc3QgQml0bWFwVGV4dHVyZSYgY29udGVudFRleHR1cmUsIGNvbnN0IEZpbHRlck9wZXJhdGlv
bnMmIGZpbHRlcnMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmgKaW5kZXgg
OWRlNmQ0Y2JkNWViMTdlOTM0ODgwMThhNjJhNzEzMWQ4OTczODRlYi4uNWIyZTk3ODNkNjljMDU4
NjM5MjcyYTJiNjMxYzc2YWUxMDU3M2QzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VC
dWZmZXIuaApAQCAtNTMsMTQgKzUzLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRy
PFRleHR1cmVNYXBwZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBUZXh0dXJlTWFw
cGVySW1hZ2VCdWZmZXIpOyB9CiAKICAgICAvLyBUZXh0dXJlTWFwcGVyIGltcGxlbWVudGF0aW9u
Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdCb3JkZXIoY29uc3QgQ29sb3ImLCBmbG9hdCAvKiBib3Jk
ZXJXaWR0aCAqLywgY29uc3QgRmxvYXRSZWN0JiAvKiB0YXJnZXRSZWN0ICovLCBjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgo
KSkgT1ZFUlJJREUKLSAgICB7Ci0gICAgICAgIFVOVVNFRF9QQVJBTShtb2RlbFZpZXdNYXRyaXgp
OwotICAgIH07Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdSZXBhaW50Q291bnRlcihpbnQgLyogdmFs
dWUgKi8sIGludCAvKiBwb2ludFNpemUgKi8sIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgo
KSkgT1ZFUlJJREUKLSAgICB7Ci0gICAgICAgIFVOVVNFRF9QQVJBTShtb2RlbFZpZXdNYXRyaXgp
OwotICAgIH07CisgICAgdmlydHVhbCB2b2lkIGRyYXdCb3JkZXIoY29uc3QgQ29sb3ImLCBmbG9h
dCBib3JkZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVyKGludCBy
ZXBhaW50Q291bnQsIGNvbnN0IENvbG9yJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdUZXh0dXJl
KGNvbnN0IEJpdG1hcFRleHR1cmUmLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVy
ZSogbWFza1RleHR1cmUsIHVuc2lnbmVkIGV4cG9zZWRFZGdlcykgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIGRyYXdTb2xpZENvbG9yKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiwgY29uc3QgQ29sb3ImKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
YmVnaW5DbGlwKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgRmxvYXRSZWN0Jikg
T1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCmluZGV4IDVkZmExODM4ZWQ0YjRj
MjE4NDc1MDQzNDZlZWYwMzY0MzliNTFhOWIuLjhlODBiMTk0MjM1OWZiYzhjYTYwZDgxM2ZiOTcz
MTZmMzM5MTU2NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCkBAIC0xMjksNiArMTI5
LDggQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50U2VsZihjb25zdCBUZXh0dXJlTWFw
cGVyUGFpbnRPcHRpb25zJiBvcHRpb25zKQogCiAgICAgaWYgKG1fc3RhdGUuc29saWRDb2xvci5p
c1ZhbGlkKCkgJiYgIW1fc3RhdGUuY29udGVudHNSZWN0LmlzRW1wdHkoKSkgewogICAgICAgICBv
cHRpb25zLnRleHR1cmVNYXBwZXItPmRyYXdTb2xpZENvbG9yKG1fc3RhdGUuY29udGVudHNSZWN0
LCB0cmFuc2Zvcm0sIGJsZW5kV2l0aE9wYWNpdHkobV9zdGF0ZS5zb2xpZENvbG9yLCBvcGFjaXR5
KSk7CisgICAgICAgIGlmIChtX3N0YXRlLnNob3dEZWJ1Z0JvcmRlcnMpCisgICAgICAgICAgICBv
cHRpb25zLnRleHR1cmVNYXBwZXItPmRyYXdCb3JkZXIobV9zdGF0ZS5kZWJ1Z0JvcmRlckNvbG9y
LCBtX3N0YXRlLmRlYnVnQm9yZGVyV2lkdGgsIGxheWVyUmVjdCgpLCB0cmFuc2Zvcm0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMzYsMTEgKzEzOCwxOCBAQCB2b2lkIFRleHR1cmVN
YXBwZXJMYXllcjo6cGFpbnRTZWxmKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG9w
dGlvbnMpCiAgICAgICAgIEFTU0VSVChtX3N0YXRlLmRyYXdzQ29udGVudCAmJiBtX3N0YXRlLmNv
bnRlbnRzVmlzaWJsZSAmJiAhbV9zdGF0ZS5zaXplLmlzRW1wdHkoKSk7CiAgICAgICAgIEFTU0VS
VCghbGF5ZXJSZWN0KCkuaXNFbXB0eSgpKTsKICAgICAgICAgbV9iYWNraW5nU3RvcmUtPnBhaW50
VG9UZXh0dXJlTWFwcGVyKG9wdGlvbnMudGV4dHVyZU1hcHBlciwgbGF5ZXJSZWN0KCksIHRyYW5z
Zm9ybSwgb3BhY2l0eSwgbWFzay5nZXQoKSk7CisgICAgICAgIGlmIChtX3N0YXRlLnNob3dEZWJ1
Z0JvcmRlcnMpCisgICAgICAgICAgICBtX2JhY2tpbmdTdG9yZS0+ZHJhd0JvcmRlcihvcHRpb25z
LnRleHR1cmVNYXBwZXIsIG1fc3RhdGUuZGVidWdCb3JkZXJDb2xvciwgbV9zdGF0ZS5kZWJ1Z0Jv
cmRlcldpZHRoLCBsYXllclJlY3QoKSwgdHJhbnNmb3JtKTsKKyAgICAgICAgLy8gT25seSBkcmF3
IHJlcGFpbnQgY291bnQgZm9yIHRoZSBtYWluIGJhY2tpbmcgc3RvcmUuCisgICAgICAgIGlmICht
X3N0YXRlLnNob3dSZXBhaW50Q291bnRlcikKKyAgICAgICAgICAgIG1fYmFja2luZ1N0b3JlLT5k
cmF3UmVwYWludENvdW50ZXIob3B0aW9ucy50ZXh0dXJlTWFwcGVyLCBtX3N0YXRlLnJlcGFpbnRD
b3VudCwgbV9zdGF0ZS5kZWJ1Z0JvcmRlckNvbG9yLCBsYXllclJlY3QoKSwgdHJhbnNmb3JtKTsK
ICAgICB9CiAKICAgICBpZiAobV9jb250ZW50c0xheWVyKSB7CiAgICAgICAgIEFTU0VSVCghbGF5
ZXJSZWN0KCkuaXNFbXB0eSgpKTsKICAgICAgICAgbV9jb250ZW50c0xheWVyLT5wYWludFRvVGV4
dHVyZU1hcHBlcihvcHRpb25zLnRleHR1cmVNYXBwZXIsIG1fc3RhdGUuY29udGVudHNSZWN0LCB0
cmFuc2Zvcm0sIG9wYWNpdHksIG1hc2suZ2V0KCkpOworICAgICAgICBpZiAobV9zdGF0ZS5zaG93
RGVidWdCb3JkZXJzKQorICAgICAgICAgICAgbV9jb250ZW50c0xheWVyLT5kcmF3Qm9yZGVyKG9w
dGlvbnMudGV4dHVyZU1hcHBlciwgbV9zdGF0ZS5kZWJ1Z0JvcmRlckNvbG9yLCBtX3N0YXRlLmRl
YnVnQm9yZGVyV2lkdGgsIG1fc3RhdGUuY29udGVudHNSZWN0LCB0cmFuc2Zvcm0pOwogICAgIH0K
IH0KIApAQCAtMzgzLDggKzM5Miw2IEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpmbHVzaENv
bXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KEdyYXBoaWNzTGF5ZXJUZXh0CiAgICAgaWYg
KGNoYW5nZU1hc2sgPT0gTm9DaGFuZ2VzICYmIGdyYXBoaWNzTGF5ZXItPm1fYW5pbWF0aW9ucy5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdyYXBoaWNzTGF5ZXItPnVwZGF0ZURl
YnVnSW5kaWNhdG9ycygpOwotCiAgICAgaWYgKGNoYW5nZU1hc2sgJiBDaGlsZHJlbkNoYW5nZSkK
ICAgICAgICAgc2V0Q2hpbGRyZW4oZ3JhcGhpY3NMYXllci0+Y2hpbGRyZW4oKSk7CiAKQEAgLTQw
MSw2ICs0MDgsOSBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6Zmx1c2hDb21wb3NpdGluZ1N0
YXRlRm9yVGhpc0xheWVyT25seShHcmFwaGljc0xheWVyVGV4dAogICAgIGlmIChjaGFuZ2VNYXNr
ICYgQW5pbWF0aW9uQ2hhbmdlKQogICAgICAgICBtX2FuaW1hdGlvbnMgPSBncmFwaGljc0xheWVy
LT5tX2FuaW1hdGlvbnM7CiAKKyAgICBpZiAoY2hhbmdlTWFzayAmIFJlcGFpbnRDb3VudENoYW5n
ZSkKKyAgICAgICAgbV9zdGF0ZS5yZXBhaW50Q291bnQgPSBncmFwaGljc0xheWVyLT5yZXBhaW50
Q291bnQoKTsKKwogICAgIG1fc3RhdGUubWFza0xheWVyID0gdG9UZXh0dXJlTWFwcGVyTGF5ZXIo
Z3JhcGhpY3NMYXllci0+bWFza0xheWVyKCkpOwogICAgIG1fc3RhdGUucmVwbGljYUxheWVyID0g
dG9UZXh0dXJlTWFwcGVyTGF5ZXIoZ3JhcGhpY3NMYXllci0+cmVwbGljYUxheWVyKCkpOwogICAg
IG1fc3RhdGUucG9zID0gZ3JhcGhpY3NMYXllci0+cG9zaXRpb24oKTsKQEAgLTQyMyw2ICs0MzMs
MTEgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRo
aXNMYXllck9ubHkoR3JhcGhpY3NMYXllclRleHQKICNlbmRpZgogICAgIG1fZml4ZWRUb1ZpZXdw
b3J0ID0gZ3JhcGhpY3NMYXllci0+Zml4ZWRUb1ZpZXdwb3J0KCk7CiAKKyAgICBtX3N0YXRlLnNo
b3dEZWJ1Z0JvcmRlcnMgPSBncmFwaGljc0xheWVyLT5pc1Nob3dpbmdEZWJ1Z0JvcmRlcigpOwor
ICAgIG1fc3RhdGUuZGVidWdCb3JkZXJDb2xvciA9IHRvR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXIoZ3JhcGhpY3NMYXllciktPmRlYnVnQm9yZGVyQ29sb3IoKTsKKyAgICBtX3N0YXRlLmRlYnVn
Qm9yZGVyV2lkdGggPSB0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKGdyYXBoaWNzTGF5ZXIp
LT5kZWJ1Z0JvcmRlcldpZHRoKCk7CisgICAgbV9zdGF0ZS5zaG93UmVwYWludENvdW50ZXIgPSBn
cmFwaGljc0xheWVyLT5pc1Nob3dpbmdSZXBhaW50Q291bnRlcigpOworCiAgICAgbV9jb250ZW50
c0xheWVyID0gZ3JhcGhpY3NMYXllci0+cGxhdGZvcm1MYXllcigpOwogCiAgICAgbV9jdXJyZW50
VHJhbnNmb3JtLnNldFBvc2l0aW9uKGFkanVzdGVkUG9zaXRpb24oKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckxheWVyLmgKaW5kZXggZjQxZTUyYTk3YzRiMzI4YzQ0Y2Y2NTBhZWUzNGNkMzAwYTQ2NTM5YS4u
NTc1YmIyN2ViN2E4NzRjMTg0YjU4MWVkMmJkNDM1ZDEwMTVhODNiMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyTGF5ZXIuaApAQCAtNzEsNyArNzEsMTAgQEAgcHVibGljOgogCiAgICAgICAgIFJlcGxpY2FM
YXllckNoYW5nZSA9ICAgICAgICAoMUwgPDwgMjEpLAogICAgICAgICBBbmltYXRpb25DaGFuZ2Ug
PSAgICAgICAgICAgKDFMIDw8IDIyKSwKLSAgICAgICAgRmlsdGVyQ2hhbmdlID0gICAgICAgICAg
ICAgICgxTCA8PCAyMykKKyAgICAgICAgRmlsdGVyQ2hhbmdlID0gICAgICAgICAgICAgICgxTCA8
PCAyMyksCisKKyAgICAgICAgRGVidWdWaXN1YWxzQ2hhbmdlID0gICAgICAgICgxTCA8PCAyNCks
CisgICAgICAgIFJlcGFpbnRDb3VudENoYW5nZSA9ICAgICAgICAoMUwgPDwgMjUpCiAgICAgfTsK
IAogICAgIFRleHR1cmVNYXBwZXJMYXllcigpCkBAIC0xNzIsNiArMTc1LDkgQEAgcHJpdmF0ZToK
ICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAgICAgICAgIEZpbHRlck9wZXJhdGlvbnMgZmlsdGVy
czsKICNlbmRpZgorICAgICAgICBDb2xvciBkZWJ1Z0JvcmRlckNvbG9yOworICAgICAgICBmbG9h
dCBkZWJ1Z0JvcmRlcldpZHRoOworICAgICAgICBpbnQgcmVwYWludENvdW50OwogCiAgICAgICAg
IGJvb2wgcHJlc2VydmVzM0QgOiAxOwogICAgICAgICBib29sIG1hc2tzVG9Cb3VuZHMgOiAxOwpA
QCAtMTgwLDExICsxODYsMTUgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBjb250ZW50c09wYXF1
ZSA6IDE7CiAgICAgICAgIGJvb2wgYmFja2ZhY2VWaXNpYmlsaXR5IDogMTsKICAgICAgICAgYm9v
bCB2aXNpYmxlIDogMTsKKyAgICAgICAgYm9vbCBzaG93RGVidWdCb3JkZXJzIDogMTsKKyAgICAg
ICAgYm9vbCBzaG93UmVwYWludENvdW50ZXIgOiAxOwogCiAgICAgICAgIFN0YXRlKCkKICAgICAg
ICAgICAgIDogb3BhY2l0eSgxKQogICAgICAgICAgICAgLCBtYXNrTGF5ZXIoMCkKICAgICAgICAg
ICAgICwgcmVwbGljYUxheWVyKDApCisgICAgICAgICAgICAsIGRlYnVnQm9yZGVyV2lkdGgoMCkK
KyAgICAgICAgICAgICwgcmVwYWludENvdW50KDApCiAgICAgICAgICAgICAsIHByZXNlcnZlczNE
KGZhbHNlKQogICAgICAgICAgICAgLCBtYXNrc1RvQm91bmRzKGZhbHNlKQogICAgICAgICAgICAg
LCBkcmF3c0NvbnRlbnQoZmFsc2UpCkBAIC0xOTIsNiArMjAyLDggQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICwgY29udGVudHNPcGFxdWUoZmFsc2UpCiAgICAgICAgICAgICAsIGJhY2tmYWNlVmlz
aWJpbGl0eShmYWxzZSkKICAgICAgICAgICAgICwgdmlzaWJsZSh0cnVlKQorICAgICAgICAgICAg
LCBzaG93RGVidWdCb3JkZXJzKGZhbHNlKQorICAgICAgICAgICAgLCBzaG93UmVwYWludENvdW50
ZXIoZmFsc2UpCiAgICAgICAgIHsKICAgICAgICAgfQogICAgIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllci5oCmluZGV4IDM4YWYwM2U4OWI2MjQ4MWFiYWYzMjA5OGMzYTgx
N2FiNGQwMDBjMWUuLmY0ODc5NTI2NzY4MDE5MDg1Y2JkZWY4OWU2NmVlNDdkZWY4MTAxMTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oCkBAIC0yNCwxOCArMjQsMjAg
QEAKICNpbmNsdWRlICJHcmFwaGljc1N1cmZhY2UuaCIKICNlbmRpZgogCisjaW5jbHVkZSAiVGV4
dHVyZU1hcHBlci5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVGV4dHVyZU1hcHBlcjsKLWNsYXNzIEJpdG1hcFRleHR1
cmU7Ci0KIGNsYXNzIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyIHsKIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllcigpIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCA9IFRyYW5zZm9ybWF0
aW9uTWF0cml4KCksIGZsb2F0IG9wYWNpdHkgPSAxLjAsIEJpdG1hcFRleHR1cmUqIG1hc2sgPSAw
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN3YXBCdWZmZXJzKCkgeyB9CisgICAgdmlydHVhbCB2
b2lkIGRyYXdCb3JkZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgQ29sb3Im
IGNvbG9yLCBmbG9hdCBib3JkZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKQorICAgIHsKKyAgICAgICAgdGV4
dHVyZU1hcHBlci0+ZHJhd0JvcmRlcihjb2xvciwgYm9yZGVyV2lkdGgsIHRhcmdldFJlY3QsIHRy
YW5zZm9ybSk7CisgICAgfQogI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQogICAgIHZpcnR1YWwg
SW50U2l6ZSBwbGF0Zm9ybUxheWVyU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIEludFNpemUoKTsgfQog
ICAgIHZpcnR1YWwgdWludDMyX3QgY29weVRvR3JhcGhpY3NTdXJmYWNlKCkgeyByZXR1cm4gMDsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKaW5kZXggNTk0NTFhOTVlNGZhZmNhNjU1MzE3
MjI0ZDk1MzlmNjFlNTQyMDMxMS4uYTM3ZmYzYWQxZTEwNzU2NWQyZjFkMTgyZDBiNjY0NGQ4ODQ5
YjhkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCkBAIC04MzksNiArODM5LDkgQEAg
c3RhdGljIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogX2V3a192aWV3X3ByaXZfbmV3KEV3a19WaWV3
X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKICAgICBwcml2LT5wYWdlU2V0dGluZ3MtPnNldEludGVy
YWN0aXZlRm9ybVZhbGlkYXRpb25FbmFibGVkKHRydWUpOwogI2lmIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykKICAgICBwcml2LT5wYWdlU2V0dGluZ3MtPnNldEFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdFbmFibGVkKGZhbHNlKTsKKyAgICBib29sIHNob3dEZWJ1Z1Zpc3VhbHMgPSBTdHJpbmco
Z2V0ZW52KCJXRUJLSVRfU0hPV19DT01QT1NJVElOR19ERUJVR19WSVNVQUxTIikpID09ICIxIjsK
KyAgICBwcml2LT5wYWdlU2V0dGluZ3MtPnNldFNob3dEZWJ1Z0JvcmRlcnMoc2hvd0RlYnVnVmlz
dWFscyk7CisgICAgcHJpdi0+cGFnZVNldHRpbmdzLT5zZXRTaG93UmVwYWludENvdW50ZXIoc2hv
d0RlYnVnVmlzdWFscyk7CiAjZW5kaWYKIAogICAgIHVybCA9IHByaXYtPnBhZ2VTZXR0aW5ncy0+
dXNlclN0eWxlU2hlZXRMb2NhdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYnZpZXcuY3BwCmluZGV4IDI5MzEwZDRlOWZlNDgxNDU3MDNkOTk0ZjRkMWU5ZDA3NmE0MjA4
ZWUuLjI4ZGRmMzFkNDAxNjEzNDA2MmMxYTM4Yzc0ODI4NTc1YWZiMzg2OTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKQEAgLTM0MzUsNiArMzQzNSw5IEBA
IHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld191cGRhdGVfc2V0dGluZ3MoV2ViS2l0V2ViVmll
dyogd2ViVmlldykKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBjb3Jl
U2V0dGluZ3MtPnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKHNldHRpbmdzUHJpdmF0
ZS0+ZW5hYmxlQWNjZWxlcmF0ZWRDb21wb3NpdGluZyk7CisgICAgYm9vbCBzaG93RGVidWdWaXN1
YWxzID0gU3RyaW5nKGdldGVudigiV0VCS0lUX1NIT1dfQ09NUE9TSVRJTkdfREVCVUdfVklTVUFM
UyIpKSA9PSAiMSI7CisgICAgY29yZVNldHRpbmdzLT5zZXRTaG93RGVidWdCb3JkZXJzKHNob3dE
ZWJ1Z1Zpc3VhbHMpOworICAgIGNvcmVTZXR0aW5ncy0+c2V0U2hvd1JlcGFpbnRDb3VudGVyKHNo
b3dEZWJ1Z1Zpc3VhbHMpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAKaW5kZXggZjhlNDk5ODM1OGFmYmVjYjc4YTViMDMw
NjBhZGNiNjU0ZGQwZTE0ZS4uZjA3NTI1YzQxMDYyOGUyY2IwOWFhYzg0YTg0MDI1ZDFkN2ZkYTg5
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwCkBAIC0xNTAsNiArMTUwLDEw
IEBAIHZvaWQgUVdlYlNldHRpbmdzUHJpdmF0ZTo6YXBwbHkoKQogICAgICAgICBzZXR0aW5ncy0+
c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvckFuaW1hdGlvbkVuYWJsZWQodmFsdWUpOwogICAg
ICAgICBzZXR0aW5ncy0+c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvclZpZGVvRW5hYmxlZChm
YWxzZSk7CiAgICAgICAgIHNldHRpbmdzLT5zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yUGx1
Z2luc0VuYWJsZWQoZmFsc2UpOworCisgICAgICAgIGJvb2wgc2hvd0RlYnVnVmlzdWFscyA9IHFn
ZXRlbnYoIlFUX1dFQktJVF9TSE9XX0NPTVBPU0lUSU5HX0RFQlVHX1ZJU1VBTFMiKSA9PSAiMSI7
CisgICAgICAgIHNldHRpbmdzLT5zZXRTaG93RGVidWdCb3JkZXJzKHNob3dEZWJ1Z1Zpc3VhbHMp
OworICAgICAgICBzZXR0aW5ncy0+c2V0U2hvd1JlcGFpbnRDb3VudGVyKHNob3dEZWJ1Z1Zpc3Vh
bHMpOwogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkdMKQogICAgICAgICB2YWx1ZSA9IGF0dHJpYnV0
ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpXZWJHTEVuYWJsZWQsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVySW5mby5o
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRM
YXllckluZm8uaAppbmRleCA2NTIwNTZkZDgxMDQyMzY0MGZjZjY5NjkwNWE3ZGU3MzdkNmQ0Yjll
Li5jZjFmMDNlZGJiYmIyZTUxMmY2OWViYWI5YzNmMjMwZWM0YTFmMzI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVy
SW5mby5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkTGF5ZXJJbmZvLmgKQEAgLTQzLDYgKzQzLDcgQEAgc3RydWN0IENvb3JkaW5hdGVk
TGF5ZXJJbmZvIHsKICAgICAgICAgLCBtYXNrKEludmFsaWRDb29yZGluYXRlZExheWVySUQpCiAg
ICAgICAgICwgaW1hZ2VJRChJbnZhbGlkQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCkKICAgICAg
ICAgLCBvcGFjaXR5KDApCisgICAgICAgICwgZGVidWdCb3JkZXJXaWR0aCgwKQogICAgICAgICAs
IGZsYWdzKDApIHsgfQogCiAgICAgQ29vcmRpbmF0ZWRMYXllcklEIHJlcGxpY2E7CkBAIC01Nyw2
ICs1OCw4IEBAIHN0cnVjdCBDb29yZGluYXRlZExheWVySW5mbyB7CiAgICAgV2ViQ29yZTo6SW50
UmVjdCBjb250ZW50c1JlY3Q7CiAgICAgZmxvYXQgb3BhY2l0eTsKICAgICBXZWJDb3JlOjpDb2xv
ciBzb2xpZENvbG9yOworICAgIFdlYkNvcmU6OkNvbG9yIGRlYnVnQm9yZGVyQ29sb3I7CisgICAg
ZmxvYXQgZGVidWdCb3JkZXJXaWR0aDsKIAogICAgIHVuaW9uIHsKICAgICAgICAgc3RydWN0IHsK
QEAgLTY4LDYgKzcxLDggQEAgc3RydWN0IENvb3JkaW5hdGVkTGF5ZXJJbmZvIHsKICAgICAgICAg
ICAgIGJvb2wgcHJlc2VydmVzM0QgOiAxOwogICAgICAgICAgICAgYm9vbCBpc1Jvb3RMYXllcjog
MTsKICAgICAgICAgICAgIGJvb2wgZml4ZWRUb1ZpZXdwb3J0IDogMTsKKyAgICAgICAgICAgIGJv
b2wgc2hvd0RlYnVnQm9yZGVycyA6IDE7CisgICAgICAgICAgICBib29sIHNob3dSZXBhaW50Q291
bnRlciA6IDE7CiAgICAgICAgIH07CiAgICAgICAgIHVuc2lnbmVkIGZsYWdzOwogICAgIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAKaW5k
ZXggMjRjMzkxZjVmMmYzMzQzNjIyMjMzNTUzN2Q0MmFhZWU3NDc1NTQzMC4uODc1NWNhYjBhNmNj
YTk4YTM0OTQ3YzAzZjEzY2M4Y2Q2ZjE1MDYzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcApAQCAtMTUxLDYgKzE1MSw5IEBAIEV3a1Zp
ZXdJbXBsOjpFd2tWaWV3SW1wbChFdmFzX09iamVjdCogdmlldywgUGFzc1JlZlB0cjxFd2tDb250
ZXh0PiBjb250ZXh0LCBQYXNzCiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIG1f
cGFnZVByb3h5LT5wYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKS0+c2V0QWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0VuYWJsZWQodHJ1ZSk7CiAgICAgbV9wYWdlUHJveHktPnBhZ2VHcm91cCgpLT5wcmVm
ZXJlbmNlcygpLT5zZXRGb3JjZUNvbXBvc2l0aW5nTW9kZSh0cnVlKTsKKyAgICBib29sIHNob3dE
ZWJ1Z1Zpc3VhbHMgPSBTdHJpbmcoZ2V0ZW52KCJXRUJLSVRfU0hPV19DT01QT1NJVElOR19ERUJV
R19WSVNVQUxTIikpID09ICIxIjsKKyAgICBtX3BhZ2VQcm94eS0+cGFnZUdyb3VwKCktPnByZWZl
cmVuY2VzKCktPnNldENvbXBvc2l0aW5nQm9yZGVyc1Zpc2libGUoc2hvd0RlYnVnVmlzdWFscyk7
CisgICAgbV9wYWdlUHJveHktPnBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygpLT5zZXRDb21wb3Np
dGluZ1JlcGFpbnRDb3VudGVyc1Zpc2libGUoc2hvd0RlYnVnVmlzdWFscyk7CiAjaWYgRU5BQkxF
KFdFQkdMKQogICAgIG1fcGFnZVByb3h5LT5wYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKS0+c2V0
V2ViR0xFbmFibGVkKHRydWUpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHAKaW5kZXggYmYxZWRlMDU3MGJhNmMyOWY1
ZDljZGJlMWJmY2EwNWE3OGQwN2JmMC4uNzk4YzhiZmI3NTNhMTRkN2E1ZWQ2OGI3OWJjNTM4YWM0
N2FhOWQwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0U2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFNldHRpbmdzLmNwcApAQCAtMjU3LDcgKzI1NywxMiBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRT
ZXR0aW5nc1NldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBjb25zdCBH
VmFsdQogICAgICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X21lZGlhX3BsYXliYWNrX2FsbG93c19p
bmxpbmUoc2V0dGluZ3MsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBQUk9QX0RSQVdfQ09NUE9TSVRJTkdfSU5ESUNBVE9SUzoKLSAgICAgICAg
d2Via2l0X3NldHRpbmdzX3NldF9kcmF3X2NvbXBvc2l0aW5nX2luZGljYXRvcnMoc2V0dGluZ3Ms
IGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKKyAgICAgICAgaWYgKGdfdmFsdWVfZ2V0X2Jv
b2xlYW4odmFsdWUpKQorICAgICAgICAgICAgd2Via2l0X3NldHRpbmdzX3NldF9kcmF3X2NvbXBv
c2l0aW5nX2luZGljYXRvcnMoc2V0dGluZ3MsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsK
KyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBib29sIHNob3dEZWJ1Z1Zpc3VhbHMgPSBTdHJp
bmcoZ2V0ZW52KCJXRUJLSVRfU0hPV19DT01QT1NJVElOR19ERUJVR19WSVNVQUxTIikpID09ICIx
IjsKKyAgICAgICAgICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZHJhd19jb21wb3NpdGluZ19pbmRp
Y2F0b3JzKHNldHRpbmdzLCBzaG93RGVidWdWaXN1YWxzKTsKKyAgICAgICAgfQogICAgICAgICBi
cmVhazsKICAgICBjYXNlIFBST1BfRU5BQkxFX1NJVEVfU1BFQ0lGSUNfUVVJUktTOgogICAgICAg
ICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9zaXRlX3NwZWNpZmljX3F1aXJrcyhzZXR0aW5n
cywgZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAKaW5kZXggMjA1MzA3OWIwYjQyZWNlYjgx
ODJiZDBhOGU2NjcyOGM1OTkxOWUzMi4uYWM5MDM0MmUwMjYyODI2OGY0NTlmNDRlY2UwZWI1MmE0
ZTdhMDZkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVp
Y2t3ZWJ2aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlj
a3dlYnZpZXcuY3BwCkBAIC0zMjMsNiArMzIzLDkgQEAgdm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0
ZTo6aW5pdGlhbGl6ZShXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGEK
ICAgICAvLyBBbnkgcGFnZSBzZXR0aW5nIHNob3VsZCBwcmVmZXJyYWJsZSBiZSBzZXQgYmVmb3Jl
IGNyZWF0aW5nIHRoZSBwYWdlLgogICAgIHdlYlBhZ2VQcm94eS0+cGFnZUdyb3VwKCktPnByZWZl
cmVuY2VzKCktPnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKHRydWUpOwogICAgIHdl
YlBhZ2VQcm94eS0+cGFnZUdyb3VwKCktPnByZWZlcmVuY2VzKCktPnNldEZvcmNlQ29tcG9zaXRp
bmdNb2RlKHRydWUpOworICAgIGJvb2wgc2hvd0RlYnVnVmlzdWFscyA9IHFnZXRlbnYoIlFUX1dF
QktJVF9TSE9XX0NPTVBPU0lUSU5HX0RFQlVHX1ZJU1VBTFMiKSA9PSAiMSI7CisgICAgd2ViUGFn
ZVByb3h5LT5wYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKS0+c2V0Q29tcG9zaXRpbmdCb3JkZXJz
VmlzaWJsZShzaG93RGVidWdWaXN1YWxzKTsKKyAgICB3ZWJQYWdlUHJveHktPnBhZ2VHcm91cCgp
LT5wcmVmZXJlbmNlcygpLT5zZXRDb21wb3NpdGluZ1JlcGFpbnRDb3VudGVyc1Zpc2libGUoc2hv
d0RlYnVnVmlzdWFscyk7CiAgICAgd2ViUGFnZVByb3h5LT5wYWdlR3JvdXAoKS0+cHJlZmVyZW5j
ZXMoKS0+c2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZCh0cnVlKTsKICAgICB3ZWJQYWdlUHJveHkt
PnBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygpLT5zZXRXZWJHTEVuYWJsZWQodHJ1ZSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcAppbmRleCA0YTdiYjEw
ODZlZTdhODY3YjJkM2ZkNjgwYzVhMzdkYjA1YjhiN2Q4Li43NjE3MGUwZTM0Y2M2NGY1NWRhZWM5
NjgwYjYyYWEzZWJlZDIxNWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNr
aW5nU3RvcmUuY3BwCkBAIC04OCw3ICs4OCw2IEBAIHZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3Rv
cmU6OnVwZGF0ZVRpbGUodWludDMyX3QgaWQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsCiB7
CiAgICAgSGFzaE1hcDx1aW50MzJfdCwgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlPjo6aXRl
cmF0b3IgaXQgPSBtX3RpbGVzLmZpbmQoaWQpOwogICAgIEFTU0VSVChpdCAhPSBtX3RpbGVzLmVu
ZCgpKTsKLSAgICBpdC0+dmFsdWUuaW5jcmVtZW50UmVwYWludENvdW50KCk7CiAgICAgaXQtPnZh
bHVlLnNldEJhY2tCdWZmZXIodGlsZVJlY3QsIHNvdXJjZVJlY3QsIGJhY2tCdWZmZXIsIG9mZnNl
dCk7CiB9CiAKQEAgLTEwOSwyOCArMTA4LDEwIEBAIHZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3Rv
cmU6OnNldFNpemUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplKQogICAgIG1fc2l6ZSA9
IHNpemU7CiB9CiAKLXN0YXRpYyBib29sIHNob3VsZFNob3dUaWxlRGVidWdWaXN1YWxzKCkKLXsK
LSNpZiBQTEFURk9STShRVCkKLSAgICByZXR1cm4gKHFnZXRlbnYoIlFUX1dFQktJVF9TSE9XX0NP
TVBPU0lUSU5HX0RFQlVHX1ZJU1VBTFMiKSA9PSAiMSIpOwotI2VsaWYgVVNFKENBSVJPKQotICAg
IHJldHVybiAoU3RyaW5nKGdldGVudigiV0VCS0lUX1NIT1dfQ09NUE9TSVRJTkdfREVCVUdfVklT
VUFMUyIpKSA9PSAiMSIpOwotI2VuZGlmCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCiB2b2lkIENv
b3JkaW5hdGVkQmFja2luZ1N0b3JlOjpwYWludFRpbGVzVG9UZXh0dXJlTWFwcGVyKFZlY3RvcjxU
ZXh0dXJlTWFwcGVyVGlsZSo+JiB0aWxlcywgVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgQml0
bWFwVGV4dHVyZSogbWFzaywgY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgdGlsZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgVGV4dHVyZU1hcHBl
clRpbGUqIHRpbGUgPSB0aWxlc1tpXTsKLSAgICAgICAgdGlsZS0+cGFpbnQodGV4dHVyZU1hcHBl
ciwgdHJhbnNmb3JtLCBvcGFjaXR5LCBtYXNrLCBjYWxjdWxhdGVFeHBvc2VkVGlsZUVkZ2VzKHJl
Y3QsIHRpbGUtPnJlY3QoKSkpOwotICAgICAgICBzdGF0aWMgYm9vbCBzaG91bGREZWJ1ZyA9IHNo
b3VsZFNob3dUaWxlRGVidWdWaXN1YWxzKCk7Ci0gICAgICAgIGlmICghc2hvdWxkRGVidWcpCi0g
ICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICB0ZXh0dXJlTWFwcGVyLT5kcmF3Qm9yZGVy
KENvbG9yKDB4RkYsIDAsIDApLCAyLCB0aWxlLT5yZWN0KCksIHRyYW5zZm9ybSk7Ci0gICAgICAg
IHRleHR1cmVNYXBwZXItPmRyYXdSZXBhaW50Q291bnRlcihzdGF0aWNfY2FzdDxDb29yZGluYXRl
ZEJhY2tpbmdTdG9yZVRpbGUqPih0aWxlKS0+cmVwYWludENvdW50KCksIDgsIHRpbGUtPnJlY3Qo
KS5sb2NhdGlvbigpLCB0cmFuc2Zvcm0pOwotICAgIH0KKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHRpbGVzLnNpemUoKTsgKytpKQorICAgICAgICB0aWxlc1tpXS0+cGFpbnQodGV4dHVyZU1h
cHBlciwgdHJhbnNmb3JtLCBvcGFjaXR5LCBtYXNrLCBjYWxjdWxhdGVFeHBvc2VkVGlsZUVkZ2Vz
KHJlY3QsIHRpbGVzW2ldLT5yZWN0KCkpKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEJhY2tpbmdT
dG9yZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwg
Y29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
dHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKQpAQCAtMTY0LDE0
ICsxNDUsMjggQEAgdm9pZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVN
YXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwKICAgICAgICAgcHJldmlvdXNUaWxl
c1RvUGFpbnQuYXBwZW5kKCZ0aWxlKTsKICAgICB9CiAKLSAgICBGbG9hdFJlY3QgcmVjdE9uQ29u
dGVudHMoRmxvYXRQb2ludDo6emVybygpLCBtX3NpemUpOwotICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IGFkanVzdGVkVHJhbnNmb3JtID0gdHJhbnNmb3JtOwogICAgIC8vIHRhcmdldFJlY3QgaXMg
b24gdGhlIGNvbnRlbnRzIGNvb3JkaW5hdGUgc3lzdGVtLCBzbyB3ZSBtdXN0IGNvbXBhcmUgdHdv
IHJlY3RzIG9uIHRoZSBjb250ZW50cyBjb29yZGluYXRlIHN5c3RlbS4KICAgICAvLyBTZWUgVGls
ZWRCYWNraW5nU3RvcmUuCi0gICAgYWRqdXN0ZWRUcmFuc2Zvcm0ubXVsdGlwbHkoVHJhbnNmb3Jt
YXRpb25NYXRyaXg6OnJlY3RUb1JlY3QocmVjdE9uQ29udGVudHMsIHRhcmdldFJlY3QpKTsKKyAg
ICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhZGp1c3RlZFRyYW5zZm9ybSA9IHJlY3RUb1JlY3QodHJh
bnNmb3JtLCByZWN0KCksIHRhcmdldFJlY3QpOworCisgICAgcGFpbnRUaWxlc1RvVGV4dHVyZU1h
cHBlcihwcmV2aW91c1RpbGVzVG9QYWludCwgdGV4dHVyZU1hcHBlciwgYWRqdXN0ZWRUcmFuc2Zv
cm0sIG9wYWNpdHksIG1hc2ssIHJlY3QoKSk7CisgICAgcGFpbnRUaWxlc1RvVGV4dHVyZU1hcHBl
cih0aWxlc1RvUGFpbnQsIHRleHR1cmVNYXBwZXIsIGFkanVzdGVkVHJhbnNmb3JtLCBvcGFjaXR5
LCBtYXNrLCByZWN0KCkpOworfQogCi0gICAgcGFpbnRUaWxlc1RvVGV4dHVyZU1hcHBlcihwcmV2
aW91c1RpbGVzVG9QYWludCwgdGV4dHVyZU1hcHBlciwgYWRqdXN0ZWRUcmFuc2Zvcm0sIG9wYWNp
dHksIG1hc2ssIHJlY3RPbkNvbnRlbnRzKTsKLSAgICBwYWludFRpbGVzVG9UZXh0dXJlTWFwcGVy
KHRpbGVzVG9QYWludCwgdGV4dHVyZU1hcHBlciwgYWRqdXN0ZWRUcmFuc2Zvcm0sIG9wYWNpdHks
IG1hc2ssIHJlY3RPbkNvbnRlbnRzKTsKK3ZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OmRy
YXdCb3JkZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgQ29sb3ImIGJvcmRl
ckNvbG9yLCBmbG9hdCBib3JkZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKQoreworICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3JtID0gcmVjdFRvUmVjdCh0cmFuc2Zvcm0sIHJlY3Qo
KSwgdGFyZ2V0UmVjdCk7CisgICAgSGFzaE1hcDx1aW50MzJfdCwgQ29vcmRpbmF0ZWRCYWNraW5n
U3RvcmVUaWxlPjo6aXRlcmF0b3IgZW5kID0gbV90aWxlcy5lbmQoKTsKKyAgICBmb3IgKEhhc2hN
YXA8dWludDMyX3QsIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZT46Oml0ZXJhdG9yIGl0ID0g
bV90aWxlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgIHRleHR1cmVNYXBwZXIt
PmRyYXdCb3JkZXIoYm9yZGVyQ29sb3IsIGJvcmRlcldpZHRoLCBpdC0+dmFsdWUucmVjdCgpLCBh
ZGp1c3RlZFRyYW5zZm9ybSk7Cit9CisKK3ZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OmRy
YXdSZXBhaW50Q291bnRlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBpbnQgcmVwYWlu
dENvdW50LCBjb25zdCBDb2xvciYgYm9yZGVyQ29sb3IsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0
UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSkKK3sKKyAgICBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBhZGp1c3RlZFRyYW5zZm9ybSA9IHJlY3RUb1JlY3QodHJhbnNmb3Jt
LCByZWN0KCksIHRhcmdldFJlY3QpOworICAgIEhhc2hNYXA8dWludDMyX3QsIENvb3JkaW5hdGVk
QmFja2luZ1N0b3JlVGlsZT46Oml0ZXJhdG9yIGVuZCA9IG1fdGlsZXMuZW5kKCk7CisgICAgZm9y
IChIYXNoTWFwPHVpbnQzMl90LCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGU+OjppdGVyYXRv
ciBpdCA9IG1fdGlsZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICB0ZXh0dXJl
TWFwcGVyLT5kcmF3UmVwYWludENvdW50ZXIocmVwYWludENvdW50LCBib3JkZXJDb2xvciwgaXQt
PnZhbHVlLnJlY3QoKS5sb2NhdGlvbigpLCBhZGp1c3RlZFRyYW5zZm9ybSk7CiB9CiAKIHZvaWQg
Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OmNvbW1pdFRpbGVPcGVyYXRpb25zKFRleHR1cmVNYXBw
ZXIqIHRleHR1cmVNYXBwZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3Rv
cmUuaAppbmRleCBhZTVhZjhkNGZhMmZjOWViZDIxMTk3MjdmY2FkZDg1OTYyMzMwZjk5Li41OTdi
NzM5MjcxYzQ2NGJiYjU2YjBhNWI5ZTY5NmUyYmI0MTliZDBjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdT
dG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmgKQEAgLTM2LDEzICszNiwxMCBAQCBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlKGZsb2F0IHNjYWxlID0gMSkK
ICAgICAgICAgOiBUZXh0dXJlTWFwcGVyVGlsZShXZWJDb3JlOjpGbG9hdFJlY3QoKSkKICAgICAg
ICAgLCBtX3NjYWxlKHNjYWxlKQotICAgICAgICAsIG1fcmVwYWludENvdW50KDApCiAgICAgewog
ICAgIH0KIAogICAgIGlubGluZSBmbG9hdCBzY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NhbGU7
IH0KLSAgICBpbmxpbmUgdm9pZCBpbmNyZW1lbnRSZXBhaW50Q291bnQoKSB7ICsrbV9yZXBhaW50
Q291bnQ7IH0KLSAgICBpbmxpbmUgaW50IHJlcGFpbnRDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVwYWludENvdW50OyB9CiAgICAgdm9pZCBzd2FwQnVmZmVycyhXZWJDb3JlOjpUZXh0dXJlTWFw
cGVyKik7CiAgICAgdm9pZCBzZXRCYWNrQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgUGFzc1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IGJ1
ZmZlciwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKIApAQCAtNTIsNyArNDksNiBAQCBwcml2
YXRlOgogICAgIFdlYkNvcmU6OkludFJlY3QgbV90aWxlUmVjdDsKICAgICBXZWJDb3JlOjpJbnRQ
b2ludCBtX3N1cmZhY2VPZmZzZXQ7CiAgICAgZmxvYXQgbV9zY2FsZTsKLSAgICBpbnQgbV9yZXBh
aW50Q291bnQ7CiB9OwogCiBjbGFzcyBDb29yZGluYXRlZEJhY2tpbmdTdG9yZSA6IHB1YmxpYyBX
ZWJDb3JlOjpUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlIHsKQEAgLTY2LDEyICs2MiwxNSBAQCBw
dWJsaWM6CiAgICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkg
Y29uc3Q7CiAgICAgdm9pZCBzZXRTaXplKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpOwogICAg
IHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihXZWJDb3JlOjpUZXh0dXJlTWFwcGVy
KiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRp
b25NYXRyaXgmLCBmbG9hdCwgV2ViQ29yZTo6Qml0bWFwVGV4dHVyZSopOworICAgIHZpcnR1YWwg
dm9pZCBkcmF3Qm9yZGVyKFdlYkNvcmU6OlRleHR1cmVNYXBwZXIqLCBjb25zdCBXZWJDb3JlOjpD
b2xvciYsIGZsb2F0IGJvcmRlcldpZHRoLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25z
dCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBkcmF3UmVwYWludENvdW50ZXIoV2ViQ29yZTo6VGV4dHVyZU1hcHBlciosIGludCByZXBh
aW50Q291bnQsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JiwgY29uc3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmKSBPVkVSUklERTsKIAogcHJp
dmF0ZToKICAgICBDb29yZGluYXRlZEJhY2tpbmdTdG9yZSgpCiAgICAgICAgIDogbV9zY2FsZSgx
LikKICAgICB7IH0KICAgICB2b2lkIHBhaW50VGlsZXNUb1RleHR1cmVNYXBwZXIoVmVjdG9yPFdl
YkNvcmU6OlRleHR1cmVNYXBwZXJUaWxlKj4mLCBXZWJDb3JlOjpUZXh0dXJlTWFwcGVyKiwgY29u
c3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCwgV2ViQ29yZTo6Qml0bWFw
VGV4dHVyZSosIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpOworICAgIFdlYkNvcmU6OkZsb2F0
UmVjdCByZWN0KCkgY29uc3QgeyByZXR1cm4gV2ViQ29yZTo6RmxvYXRSZWN0KFdlYkNvcmU6OkZs
b2F0UG9pbnQ6Onplcm8oKSwgbV9zaXplKTsgfQogCiAgICAgSGFzaE1hcDx1aW50MzJfdCwgQ29v
cmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlPiBtX3RpbGVzOwogICAgIEhhc2hTZXQ8dWludDMyX3Q+
IG1fdGlsZXNUb1JlbW92ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdFByb3h5LmNwcAppbmRleCBiYWE4ZjY1MjNkZWJmZGViYmM0ZTUyMmI0NzVlMTRj
YzE4ZmQyZWI1Li40YjM1N2Q0M2Q2Mzg1Mzg0YTc2OTAxOWVjOTE4OTI0ZjZmNGU4MzFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3Bw
CkBAIC0yNDIsNiArMjQyLDExIEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6
OmRlc3Ryb3lDYW52YXMoQ29vcmRpbmF0ZWRMYXllcklEIGlkKQogfQogI2VuZGlmCiAKK3ZvaWQg
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OnNldExheWVyUmVwYWludENvdW50KENvb3Jk
aW5hdGVkTGF5ZXJJRCBpZCwgaW50IHZhbHVlKQoreworICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQo
JkxheWVyVHJlZVJlbmRlcmVyOjpzZXRMYXllclJlcGFpbnRDb3VudCwgbV9yZW5kZXJlci5nZXQo
KSwgaWQsIHZhbHVlKSk7Cit9CisKIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6
OnB1cmdlQmFja2luZ1N0b3JlcygpCiB7CiAgICAgbV9zdXJmYWNlcy5jbGVhcigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmgKaW5kZXggNzU5
MWI4NDg1ZDM5ODg2ZWQ3ZWQyY2QwNWQxMTYxM2ZlNjdmYWNkMy4uODZjZjlhNWQwOTM0ODJlMDI4
NWFjOTFjZGI4ZjM2MzJlMGRlYTAwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZExheWVyVHJlZUhvc3RQcm94eS5oCkBAIC04NCw2ICs4NCw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHN5bmNDYW52YXMoQ29vcmRpbmF0ZWRMYXllcklELCB1aW50MzJfdCBmcm9udEJ1ZmZlcik7
CiAgICAgdm9pZCBkZXN0cm95Q2FudmFzKENvb3JkaW5hdGVkTGF5ZXJJRCk7CiAjZW5kaWYKKyAg
ICB2b2lkIHNldExheWVyUmVwYWludENvdW50KENvb3JkaW5hdGVkTGF5ZXJJRCwgaW50IHZhbHVl
KTsKICAgICB2b2lkIHB1cmdlQmFja2luZ1N0b3JlcygpOwogICAgIExheWVyVHJlZVJlbmRlcmVy
KiBsYXllclRyZWVSZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyZXIuZ2V0KCk7IH0K
ICAgICB2b2lkIHNldExheWVyQW5pbWF0aW9ucyhDb29yZGluYXRlZExheWVySUQsIGNvbnN0IFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXJBbmltYXRpb25zJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhv
c3RQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5Lm1lc3NhZ2VzLmluCmluZGV4
IDEzN2RhZDgwNzUwMGY1NWU1OWQyNmMyN2MxZGVkYmE0OWM1NTA4YTAuLjQ0MzA4OTUzZmExODlh
Mzg5NGNlMmFhY2ZjN2QzYjg2ODNmOTk5NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5Lm1lc3NhZ2VzLmluCkBAIC01NSw2
ICs1NSw4IEBAIG1lc3NhZ2VzIC0+IENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5IHsKICAg
ICBEZXN0cm95Q2FudmFzKHVpbnQzMl90IGlkKQogI2VuZGlmCiAKKyAgICBTZXRMYXllclJlcGFp
bnRDb3VudCh1aW50MzJfdCBsYXllcklELCBpbnQgdmFsdWUpCisKICAgICBTZXRCYWNrZ3JvdW5k
Q29sb3IoV2ViQ29yZTo6Q29sb3IgY29sb3IpCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVy
VHJlZVJlbmRlcmVyLmNwcAppbmRleCA2ZTk3MzAyMTY2MmI0MGQzNmEyODRjM2ZkMWQwNDlhYjY2
YTI1OTk2Li5hOWY1MTgwZDU2YjZmNWU1MGFhZjQ5NWY1NGE2YjcwMDdmN2JiZmZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRy
ZWVSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwCkBAIC0yNTUsNiArMjU1LDEyIEBAIHZvaWQg
TGF5ZXJUcmVlUmVuZGVyZXI6OmRlc3Ryb3lDYW52YXMoQ29vcmRpbmF0ZWRMYXllcklEIGlkKQog
fQogI2VuZGlmCiAKK3ZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnNldExheWVyUmVwYWludENvdW50
KENvb3JkaW5hdGVkTGF5ZXJJRCBpZCwgaW50IHZhbHVlKQoreworICAgIEdyYXBoaWNzTGF5ZXIq
IGxheWVyID0gbGF5ZXJCeUlEKGlkKTsKKyAgICB0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
KGxheWVyKS0+c2V0UmVwYWludENvdW50KHZhbHVlKTsKK30KKwogdm9pZCBMYXllclRyZWVSZW5k
ZXJlcjo6c2V0TGF5ZXJDaGlsZHJlbihDb29yZGluYXRlZExheWVySUQgaWQsIGNvbnN0IFZlY3Rv
cjxDb29yZGluYXRlZExheWVySUQ+JiBjaGlsZElEcykKIHsKICAgICBHcmFwaGljc0xheWVyKiBs
YXllciA9IGxheWVyQnlJRChpZCk7CkBAIC0zMzMsNiArMzM5LDkgQEAgdm9pZCBMYXllclRyZWVS
ZW5kZXJlcjo6c2V0TGF5ZXJTdGF0ZShDb29yZGluYXRlZExheWVySUQgaWQsIGNvbnN0IENvb3Jk
aW5hdGVkTGEKICAgICBsYXllci0+c2V0RHJhd3NDb250ZW50KGxheWVySW5mby5kcmF3c0NvbnRl
bnQpOwogICAgIGxheWVyLT5zZXRDb250ZW50c1Zpc2libGUobGF5ZXJJbmZvLmNvbnRlbnRzVmlz
aWJsZSk7CiAgICAgdG9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcihsYXllciktPnNldEZpeGVk
VG9WaWV3cG9ydChsYXllckluZm8uZml4ZWRUb1ZpZXdwb3J0KTsKKyAgICBsYXllci0+c2V0U2hv
d0RlYnVnQm9yZGVyKGxheWVySW5mby5zaG93RGVidWdCb3JkZXJzKTsKKyAgICBsYXllci0+c2V0
RGVidWdCb3JkZXIobGF5ZXJJbmZvLmRlYnVnQm9yZGVyQ29sb3IsIGxheWVySW5mby5kZWJ1Z0Jv
cmRlcldpZHRoKTsKKyAgICBsYXllci0+c2V0U2hvd1JlcGFpbnRDb3VudGVyKGxheWVySW5mby5z
aG93UmVwYWludENvdW50ZXIpOwogCiAgICAgaWYgKGxheWVySW5mby5maXhlZFRvVmlld3BvcnQp
CiAgICAgICAgIG1fZml4ZWRMYXllcnMuYWRkKGlkLCBsYXllcik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJl
ci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJU
cmVlUmVuZGVyZXIuaAppbmRleCA1M2VjYmUzOTQ5ODE4OTlkMmFiYmUwZjIxZDQ0NDM0NDIzOTM2
NDg4Li42YjYyZWY1MDJkZTk3YjRjMzAwOTliYzhjMDQ2YzAzZGE2YWY4ZmI2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVS
ZW5kZXJlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBo
aWNzL0xheWVyVHJlZVJlbmRlcmVyLmgKQEAgLTc3LDYgKzc3LDcgQEAgcHVibGljOgogICAgIHZv
aWQgc3luY0NhbnZhcyhDb29yZGluYXRlZExheWVySUQsIHVpbnQzMl90IGZyb250QnVmZmVyKTsK
ICAgICB2b2lkIGRlc3Ryb3lDYW52YXMoQ29vcmRpbmF0ZWRMYXllcklEKTsKICNlbmRpZgorICAg
IHZvaWQgc2V0TGF5ZXJSZXBhaW50Q291bnQoQ29vcmRpbmF0ZWRMYXllcklELCBpbnQgdmFsdWUp
OwogCiAgICAgdm9pZCBkZXRhY2goKTsKICAgICB2b2lkIGFwcGVuZFVwZGF0ZShjb25zdCBGdW5j
dGlvbjx2b2lkKCk+Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAppbmRleCA1ZjI2NjJlZjA5MThiM2FhOTIxNDBhNDg0
NTJhNTU1ODJmNTdiZDM5Li41ZDIzYjI1MTdkMmU1NDgyZDhmZjNhNzk0YzAwMmUyMDY0YzE0Zjdm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5jcHAKQEAgLTM3MSw2ICszNzEsMjYgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXI6OnNldENvbnRlbnRzVG9Tb2xpZENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKICAg
ICBkaWRDaGFuZ2VMYXllclN0YXRlKCk7CiB9CiAKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyOjpzZXRTaG93RGVidWdCb3JkZXIoYm9vbCBzaG93KQoreworICAgIGlmIChpc1Nob3dpbmdE
ZWJ1Z0JvcmRlcigpID09IHNob3cpCisgICAgICAgIHJldHVybjsKKworICAgIEdyYXBoaWNzTGF5
ZXI6OnNldFNob3dEZWJ1Z0JvcmRlcihzaG93KTsKKworICAgIGRpZENoYW5nZUxheWVyU3RhdGUo
KTsKK30KKwordm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldFNob3dSZXBhaW50Q291
bnRlcihib29sIHNob3cpCit7CisgICAgaWYgKGlzU2hvd2luZ1JlcGFpbnRDb3VudGVyKCkgPT0g
c2hvdykKKyAgICAgICAgcmV0dXJuOworCisgICAgR3JhcGhpY3NMYXllcjo6c2V0U2hvd1JlcGFp
bnRDb3VudGVyKHNob3cpOworCisgICAgZGlkQ2hhbmdlTGF5ZXJTdGF0ZSgpOworfQorCiB2b2lk
IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNUb0ltYWdlKEltYWdlKiBpbWFn
ZSkKIHsKICAgICBOYXRpdmVJbWFnZVB0ciBuZXdOYXRpdmVJbWFnZVB0ciA9IGltYWdlID8gaW1h
Z2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgOiAwOwpAQCAtNTUwLDkgKzU3MCwyMyBA
QCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c3luY0xheWVyU3RhdGUoKQogICAgIG1f
bGF5ZXJJbmZvLnBvcyA9IG1fYWRqdXN0ZWRQb3NpdGlvbjsKICAgICBtX2xheWVySW5mby5zaXpl
ID0gbV9hZGp1c3RlZFNpemU7CiAKKyAgICBtX2xheWVySW5mby5zaG93RGVidWdCb3JkZXJzID0g
aXNTaG93aW5nRGVidWdCb3JkZXIoKTsKKyAgICBpZiAobV9sYXllckluZm8uc2hvd0RlYnVnQm9y
ZGVycykgeworICAgICAgICBtX3VzaW5nVGlsZWRMYXllciA9IHNob3VsZEhhdmVCYWNraW5nU3Rv
cmUoKTsKKyAgICAgICAgdXBkYXRlRGVidWdJbmRpY2F0b3JzKCk7CisgICAgfQorICAgIG1fbGF5
ZXJJbmZvLnNob3dSZXBhaW50Q291bnRlciA9IGlzU2hvd2luZ1JlcGFpbnRDb3VudGVyKCk7CisK
ICAgICBtX2Nvb3JkaW5hdG9yLT5zeW5jTGF5ZXJTdGF0ZShtX2lkLCBtX2xheWVySW5mbyk7CiB9
CiAKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXREZWJ1Z0JvcmRlcihjb25zdCBD
b2xvciYgY29sb3IsIGZsb2F0IHdpZHRoKQoreworICAgIEFTU0VSVChtX2xheWVySW5mby5zaG93
RGVidWdCb3JkZXJzKTsKKyAgICBtX2xheWVySW5mby5kZWJ1Z0JvcmRlckNvbG9yID0gY29sb3I7
CisgICAgbV9sYXllckluZm8uZGVidWdCb3JkZXJXaWR0aCA9IHdpZHRoOworfQorCiB2b2lkIENv
b3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c3luY0FuaW1hdGlvbnMoKQogewogICAgIGlmICghbV9z
aG91bGRTeW5jQW5pbWF0aW9ucykKQEAgLTY5OCw4ICs3MzIsMTAgQEAgdm9pZCBDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXI6OnRpbGVkQmFja2luZ1N0b3JlUGFpbnQoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LAogICAgIHBhaW50R3JhcGhpY3NMYXllckNvbnRlbnRzKCpjb250ZXh0LCByZWN0KTsK
IH0KIAotdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnRpbGVkQmFja2luZ1N0b3JlUGFp
bnRFbmQoY29uc3QgVmVjdG9yPEludFJlY3Q+JiAvKiB1cGRhdGVkUmVjdHMgKi8pCit2b2lkIENv
b3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dGlsZWRCYWNraW5nU3RvcmVQYWludEVuZChjb25zdCBW
ZWN0b3I8SW50UmVjdD4mIHVwZGF0ZWRSZWN0cykKIHsKKyAgICBpZiAoaXNTaG93aW5nUmVwYWlu
dENvdW50ZXIoKSAmJiAhdXBkYXRlZFJlY3RzLmlzRW1wdHkoKSkKKyAgICAgICAgbV9jb29yZGlu
YXRvci0+c2V0TGF5ZXJSZXBhaW50Q291bnQoaWQoKSwgaW5jcmVtZW50UmVwYWludENvdW50KCkp
OwogfQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dGlsZWRCYWNraW5nU3RvcmVI
YXNQZW5kaW5nVGlsZUNyZWF0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKaW5kZXggNmM0MzU4NWM3MGM4ZTAzMDY1ZTRk
Y2FhMjdlNGYwZGEyZmEzNjk0Ni4uN2VhMzgxZjdjZjdjNzVhZDM0ZDQ1Mzg3OTBhMGUzMDBjNDVm
M2E0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyLmgKQEAgLTcxLDYgKzcxLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBkZXN0cm95Q2FudmFzKENvb3JkaW5hdGVkTGF5ZXJJRCkgPSAwOwogI2VuZGlmCiAKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0TGF5ZXJSZXBhaW50Q291bnQoQ29vcmRpbmF0ZWRMYXllcklELCBpbnQp
ID0gMDsKKwogICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllckFuaW1hdGlvbnMoQ29vcmRpbmF0ZWRM
YXllcklELCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyQW5pbWF0aW9ucyYpID0gMDsKIAog
ICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hMYXllcihXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIqKSA9IDA7CkBAIC0xMTIsNiArMTE0LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBzZXRDb250ZW50c1JlY3QoY29uc3QgSW50UmVjdCYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0U2hvd0RlYnVnQm9yZGVyKGJvb2wpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBzZXRTaG93UmVwYWludENvdW50ZXIoYm9vbCkgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCBib29sIHNob3VsZERpcmVjdGx5Q29tcG9zaXRlSW1hZ2UoSW1hZ2UqKSBjb25zdCBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNUb0NhbnZhcyhQbGF0Zm9ybUxheWVyKikg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldE1hc2tMYXllcihHcmFwaGljc0xheWVyKikg
T1ZFUlJJREU7CkBAIC0xNjYsNiArMTcwLDggQEAgcHVibGljOgogICAgIGJvb2wgaGFzUGVuZGlu
Z1Zpc2libGVDaGFuZ2VzKCk7CiAKIHByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIHNldERlYnVn
Qm9yZGVyKGNvbnN0IENvbG9yJiwgZmxvYXQgd2lkdGgpIE9WRVJSSURFOworCiAgICAgYm9vbCBm
aXhlZFRvVmlld3BvcnQoKSBjb25zdCB7IHJldHVybiBtX2ZpeGVkVG9WaWV3cG9ydDsgfQogCiAg
ICAgdm9pZCBkaWRDaGFuZ2VMYXllclN0YXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVy
VHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAppbmRleCA4ZmJiNTdmMjEx
ZmYyY2M0YjkyMDcyMzMwZGUzZjg3ODc5ZTE3OTNkLi5kZWVmNTUzYWQwMWM1NDljMzIwMDI3MmMz
YjM5YTY4NmExMDgxOTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTM5Nyw2ICszOTcsMTEgQEAgdm9pZCBD
b29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRlc3Ryb3lDYW52YXMoQ29vcmRpbmF0ZWRMYXllcklE
IGlkKQogfQogI2VuZGlmCiAKK3ZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzZXRMYXll
clJlcGFpbnRDb3VudChDb29yZGluYXRlZExheWVySUQgaWQsIGludCB2YWx1ZSkKK3sKKyAgICBt
X3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpT
ZXRMYXllclJlcGFpbnRDb3VudChpZCwgdmFsdWUpKTsKK30KKwogI2lmIEVOQUJMRShDU1NfRklM
VEVSUykKIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzeW5jTGF5ZXJGaWx0ZXJzKENv
b3JkaW5hdGVkTGF5ZXJJRCBpZCwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0LmgKaW5kZXggMDEwMjJiMmNjNGU5ODQ4OGE0ZGY3ODdlYTM2OTBiNzJhY2NmZjcyOS4uOWFh
OWU2ZWNkZjNhNjllZjAwMzgyOGUxNzhhOTg2MTA2NzRmZjc2OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKQEAgLTEwMSw2
ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHN5bmNDYW52YXMoQ29vcmRpbmF0
ZWRMYXllcklELCBXZWJDb3JlOjpQbGF0Zm9ybUxheWVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIGRlc3Ryb3lDYW52YXMoQ29vcmRpbmF0ZWRMYXllcklEKSBPVkVSUklERTsKICNlbmRp
ZgorICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllclJlcGFpbnRDb3VudChDb29yZGluYXRlZExheWVy
SUQsIGludCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaExheWVyKFdlYkNvcmU6
OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllciopOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jRml4ZWRM
YXllcnMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRUaWxlLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkVGlsZS5j
cHAKaW5kZXggNzk4ZDJiNzVmMjUwZGE2NzI5ZmY5YmNlNTBlODhjMjkxMjk0MGI4ZS4uYWMwYjU2
NjI2ZTgxZjEwYjE4NzYyYjk4ZjM2NTgwNGY4ZTMyNjE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRU
aWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZFRpbGUuY3BwCkBAIC05Nyw4ICs5NywxMCBAQCBWZWN0b3I8
SW50UmVjdD4gQ29vcmRpbmF0ZWRUaWxlOjp1cGRhdGVCYWNrQnVmZmVyKCkKICAgICB9IGVsc2UK
ICAgICAgICAgbV9jbGllbnQtPnVwZGF0ZVRpbGUobV9JRCwgdXBkYXRlSW5mbywgbV9yZWN0KTsK
IAorICAgIFZlY3RvcjxJbnRSZWN0PiB1cGRhdGVkUmVjdHM7CisgICAgdXBkYXRlZFJlY3RzLmFw
cGVuZChtX2RpcnR5UmVjdCk7CiAgICAgbV9kaXJ0eVJlY3QgPSBJbnRSZWN0KCk7Ci0gICAgcmV0
dXJuIFZlY3RvcjxJbnRSZWN0PigpOworICAgIHJldHVybiB1cGRhdGVkUmVjdHM7CiB9CiAKIHZv
aWQgQ29vcmRpbmF0ZWRUaWxlOjpzd2FwQmFja0J1ZmZlclRvRnJvbnQoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182933</attachid>
            <date>2013-01-16 01:08:36 -0800</date>
            <delta_ts>2013-01-17 16:31:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105787-20130116180536.patch</filename>
            <type>text/plain</type>
            <size>68275</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5ODIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjQ0ZmI3OTZjZGFmODU2
YWM1OWZlZmYyOTBhYTMwNDBkMjA3ODRmMy4uYWY1Yzc0ZDY5NWI0NzhkMzhiY2U4ZThmZmUwZmY1
YTQyNGM3YjZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDEzLTAxLTE2ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFtUZXhtYXBd
IFJlZmFjdG9yIGNvZGUgcmVsYXRlZCB0byBkZWJ1ZyBib3JkZXIgYW5kIHJlcGFpbnQgY291bnQu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU3ODcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50
bHksIFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUsIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlIGFu
ZAorICAgICAgICBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlciBoYXZlIGR1cGxpY2F0ZWQgY29k
ZSB0byBkcmF3IGRlYnVnIGJvcmRlciBvciByZXBhaW50CisgICAgICAgIGNvdW50LiBUaGlzIHBh
dGNoIHJlZmFjdG9ycyB0aGF0IGFsbCBwbGF0Zm9ybSBsYXllcnMgZHJhdyBkZWJ1ZyBib3JkZXIg
YW5kIHJlcGFpbnQKKyAgICAgICAgY291bnQgaW4gdGhlIGNvbnNpc3RlbnQgd2F5LgorCisgICAg
ICAgIFRoZXJlIGFyZSB0aHJlZSBiaWcgY2hhbmdlczoKKyAgICAgICAgMS4gVG8gZW5hYmxlIG9y
IGRpc2FibGUgdGhpcyBmZWF0dXJlLCB3ZSB1c2Ugc2V0U2hvd0RlYnVnQm9yZGVycyhib29sKSBh
bmQKKyAgICAgICAgc2V0U2hvd1JlcGFpbnRDb3VudGVyKGJvb2wpIGluIFNldHRpbmdzLgorICAg
ICAgICBBcyB3ZSBkaWQsIGlmIFtRVF9dV0VCS0lUX1NIT1dfQ09NUE9TSVRJTkdfREVCVUdfVklT
VUFMUyBpcyBzZXQgdG8gMSwgYm90aAorICAgICAgICBzZXR0aW5ncyBhcmUgc2V0IHRvIHRydWUu
IEl0IG1lYW5zIHRoYXQgbm93IHdlIGNhbiBzZWUgZGVidWcgdmlzdWFscyBpbiBXSzEKKyAgICAg
ICAgYXMgd2VsbCBhcyBXSzIuCisgICAgICAgIDIuIFRleHR1cmVNYXBwZXJMYXllciBoYXMgdGhl
IGRlYnVnIHZpc3VhbHMgbGlrZSBHcmFwaGljc0xheWVyLgorICAgICAgICBCb3RoIGRlYnVnIGJv
cmRlciBhbmQgcmVwYWludCBjb3VudCBhcmUgY2FsbGVkIGFzIHRoZSBkZWJ1ZyB2aXN1YWxzLgor
ICAgICAgICAzLiBXZSB1c2UgdGhlIHNhbWUgY29sb3IgYW5kIHdpZHRoIHRvIE1hYyBwb3J0IGJl
Y2F1c2Ugd2UgZ2V0IGJvdGggaW5mbyB1c2luZworICAgICAgICBHcmFwaGljc0xheWVyOjp1cGRh
dGVEZWJ1Z0luZGljYXRvcnMoKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIFRoaXMgZnVuY3Rp
b25hbGl0eSBpcyBmb3IgZGVidWdnaW5nLCBzbyB3ZSBjYW5ub3QgdGVzdCB1c2luZyBEUlQuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRFByaXZh
dGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXI6OnNldFNob3dEZWJ1Z0JvcmRlcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRTaG93UmVwYWludENvdW50
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmZsdXNo
Q29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnVwZGF0ZURlYnVnQm9yZGVyQW5kUmVwYWludENvdW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXREZWJ1
Z0JvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6
dXBkYXRlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyOjpwcmVwYXJlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRSZXBhaW50Q291bnQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oOgorICAgICAg
ICAoR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXI6OmRlYnVnQm9yZGVyQ29sb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmRlYnVnQm9yZGVyV2lkdGgpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjphZGp1c3Rl
ZFRyYW5zZm9ybUZvclJlY3QpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6ZHJhd0Jv
cmRlcik6CisgICAgICAgICAgICBPdmVycmlkZSBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllcjo6
ZHJhd0JvcmRlcigpIHRvIGRyYXcgdGhlIGJvcmRlcgorICAgICAgICAgICAgZm9yIGVhY2ggdGls
ZS4KKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6ZHJh
d1JlcGFpbnRDb3VudGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBl
ckJhY2tpbmdTdG9yZTo6ZHJhd1JlcGFpbnRDb3VudGVyKToKKyAgICAgICAgKFRleHR1cmVNYXBw
ZXJCYWNraW5nU3RvcmUpOgorICAgICAgICAoVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3Jl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRBQkdSVG9BUkdCKToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdMOjpkcmF3UmVwYWludENvdW50
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdl
QnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlcjo6
ZHJhd0JvcmRlcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1
cmVNYXBwZXJJbWFnZUJ1ZmZlcjo6ZHJhd1JlcGFpbnRDb3VudGVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmg6CisgICAgICAg
IChUZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVy
ZU1hcHBlckxheWVyOjpwYWludFNlbGYpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBl
ckxheWVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmg6CisgICAgICAg
IChTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OlN0YXRlOjpT
dGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllcjo6ZHJhd0JvcmRlcik6CisKIDIwMTMtMDEtMTUgIFJvZ2VyIEZvbmcgIDxyb2dlcl9mb25n
QGFwcGxlLmNvbT4KIAogICAgICAgICBHZXQgcmlkIG9mIGEgc3RyYWdnbGluZyBkZXBlbmRlbmN5
IG9uIFNhZmFyaVRoZW1lQ29uc3RhbnRzIGluIFJlbmRlclRoZW1lV2luLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9n
CmluZGV4IDhmYmFiY2U5OGQzYWRkNmI4MjNlYTEyOTg0Y2MxNjg1YWMyMjgxNzUuLjRhZGRhOGZi
ZjlkZjljOTBhMjFmNzBiYjdjZjNjN2E5Y2VlZTdhNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxMy0wMS0xNiAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55
MTAwLm5ldD4KKworICAgICAgICBbVGV4bWFwXSBSZWZhY3RvciBjb2RlIHJlbGF0ZWQgdG8gZGVi
dWcgYm9yZGVyIGFuZCByZXBhaW50IGNvdW50LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1Nzg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSWYgV0VCS0lUX1NIT1dfQ09NUE9TSVRJTkdfREVCVUdfVklT
VUFMUyBpcyBzZXQgdG8gMSwgc2V0CisgICAgICAgIHNob3dEZWJ1Z0JvcmRlcnMgYW5kIHNob3dS
ZXBhaW50Q291bnRlciBpbiBTZXR0aW5ncyB0byB0cnVlLgorCisgICAgICAgICogZXdrL2V3a192
aWV3LmNwcDoKKyAgICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6CisKIDIwMTMtMDEtMTUgIEd5
dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBVbnJldmll
d2VkLiBGaXggYnVpbGQgYnJlYWsgYnkgcjEzOTc5Ni4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCBkY2Jl
YzNmYTk2N2QyNjc4NzM0MTBmM2VkM2Q5ZDZhMWYxOTgzY2RkLi4zZmRiYjNhNWZjOTg1YjMxMTA5
NTE3ZmQwZWY5NDRjOTBhMzAwOTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTMtMDEtMTYgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CisK
KyAgICAgICAgW1RleG1hcF0gUmVmYWN0b3IgY29kZSByZWxhdGVkIHRvIGRlYnVnIGJvcmRlciBh
bmQgcmVwYWludCBjb3VudC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwNTc4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIElmIFdFQktJVF9TSE9XX0NPTVBPU0lUSU5HX0RFQlVHX1ZJU1VBTFMgaXMgc2V0
IHRvIDEsIHNldAorICAgICAgICBzaG93RGVidWdCb3JkZXJzIGFuZCBzaG93UmVwYWludENvdW50
ZXIgaW4gU2V0dGluZ3MgdG8gdHJ1ZS4KKworICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3
LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld191cGRhdGVfc2V0dGluZ3MpOgorCiAyMDEz
LTAxLTE1ICBaYW4gRG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CiAKICAgICAgICAg
W0F1dG90b29sc10gQWRkIHN1cHBvcnQgZm9yIFdlYktpdDItb25seSBidWlsZHMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VM
b2cKaW5kZXggYzY4NzNkNzFkMWUyNGFhM2U4YTg2NDk2MWMxNDVlYTk3OTFmNmFhZi4uYjQzN2E5
ZGJmOTY4ODE2YjJhZTNkMTE5ZmMwZGIxYjYyNTNmNWYwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxMy0wMS0xNiAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55
MTAwLm5ldD4KKworICAgICAgICBbVGV4bWFwXSBSZWZhY3RvciBjb2RlIHJlbGF0ZWQgdG8gZGVi
dWcgYm9yZGVyIGFuZCByZXBhaW50IGNvdW50LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1Nzg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSWYgUVRfV0VCS0lUX1NIT1dfQ09NUE9TSVRJTkdfREVCVUdf
VklTVUFMUyBpcyBzZXQgdG8gMSwgc2V0CisgICAgICAgIHNob3dEZWJ1Z0JvcmRlcnMgYW5kIHNo
b3dSZXBhaW50Q291bnRlciBpbiBTZXR0aW5ncyB0byB0cnVlLgorCisgICAgICAgICogQXBpL3F3
ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgIChRV2ViU2V0dGluZ3NQcml2YXRlOjphcHBseSk6CisK
IDIwMTMtMDEtMTEgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CiAK
ICAgICAgICAgW1RleE1hcF0gUmVuYW1lIGN1cnJlbnRbVHJhbnNmb3JtfE9wYWNpdHl8RmlsdGVy
c10gaW4gVGV4dHVyZU1hcHBlckxheWVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGM2NjY3MjE4NWNlYzk3ODkz
NmJkMWU4OGYwOWEyMzNjMzUzNWQ4OGEuLjEzZGI3MTc5YzE2MDg3NTQ2MmE4MGIwMGMzNTQ4OGM1
MjlhODQ4YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2OSBAQAorMjAxMy0wMS0xNiAgSHVhbmcg
RG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKworICAgICAgICBbVGV4bWFwXSBS
ZWZhY3RvciBjb2RlIHJlbGF0ZWQgdG8gZGVidWcgYm9yZGVyIGFuZCByZXBhaW50IGNvdW50Lgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1Nzg3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlcmUgYXJl
IHRocmVlIGJpZyBjaGFuZ2VzOgorICAgICAgICAxLiBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIg
c2VuZHMgZGVidWdnaW5nIHZpc3VhbHMgdG8gVUkgUHJvY2Vzcy4KKyAgICAgICAgMi4gSWYgW1FU
X11XRUJLSVRfU0hPV19DT01QT1NJVElOR19ERUJVR19WSVNVQUxTIGlzIHNldCB0byAxLCBzZXQK
KyAgICAgICAgc2hvd0RlYnVnQm9yZGVycyBhbmQgc2hvd1JlcGFpbnRDb3VudGVyIGluIFNldHRp
bmdzIHRvIHRydWUuCisgICAgICAgIDMuIFdoZW4gdXBkYXRpbmcgYSBiYWNraW5nIHN0b3JlLCBp
bmNyZW1lbnQgYSByZXBhaW50IGNvdW50LgorCisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllckluZm8uaDoKKyAgICAgICAgKFdlYktpdDo6Q29vcmRp
bmF0ZWRMYXllckluZm86OkNvb3JkaW5hdGVkTGF5ZXJJbmZvKToKKyAgICAgICAgKENvb3JkaW5h
dGVkTGF5ZXJJbmZvKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5j
cHA6CisgICAgICAgIChFd2tWaWV3SW1wbDo6RXdrVmlld0ltcGwpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcDoKKyAgICAgICAgKHdlYktpdFNldHRpbmdz
U2V0UHJvcGVydHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5j
cHA6CisgICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6aW5pdGlhbGl6ZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6dXBkYXRlVGls
ZSk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpwYWludFRpbGVz
VG9UZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRCYWNraW5nU3Rv
cmU6OmFkanVzdGVkVHJhbnNmb3JtRm9yUmVjdCk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5h
dGVkQmFja2luZ1N0b3JlOjpwYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAgICAgIChXZWJLaXQ6
OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpkcmF3Qm9yZGVyKToKKyAgICAgICAgICAgIE92ZXJy
aWRlIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyOjpkcmF3Qm9yZGVyKCkgdG8gZHJhdyB0aGUg
Ym9yZGVyCisgICAgICAgICAgICBmb3IgZWFjaCB0aWxlLgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OmRyYXdSZXBhaW50Q291bnRl
cik6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRC
YWNraW5nU3RvcmUuaDoKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmVU
aWxlOjpDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGUpOgorICAgICAgICAoQ29vcmRpbmF0ZWRC
YWNraW5nU3RvcmVUaWxlKToKKyAgICAgICAgKENvb3JkaW5hdGVkQmFja2luZ1N0b3JlKToKKyAg
ICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnJlY3QpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6
OnNldExheWVyUmVwYWludENvdW50KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHku
aDoKKyAgICAgICAgKENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94
eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9M
YXllclRyZWVSZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVy
OjpzZXRMYXllclJlcGFpbnRDb3VudCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2Vi
S2l0OjpMYXllclRyZWVSZW5kZXJlcjo6c2V0TGF5ZXJTdGF0ZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaDoKKyAgICAgICAgKExh
eWVyVHJlZVJlbmRlcmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRTaG93RGVidWdCb3JkZXIpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6
OnNldFNob3dSZXBhaW50Q291bnRlcik6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXI6OnN5bmNMYXllclN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5h
dGVkR3JhcGhpY3NMYXllcjo6c2V0RGVidWdCb3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyOjp0aWxlZEJhY2tpbmdTdG9yZVBhaW50RW5kKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdy
YXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKENvb3JkaW5hdGVkR3JhcGhpY3NMYXllckNsaWVudCk6
CisgICAgICAgIChDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0TGF5ZXJS
ZXBhaW50Q291bnQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZFRpbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZFRpbGU6OnVwZGF0ZUJhY2tC
dWZmZXIpOgorCiAyMDEzLTAxLTE1ICBFbnJpY2EgQ2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+
CiAKICAgICAgICAgQWRkIGEgbmV3IHNldCBvZiBXZWJLaXQyIEFQSXMgZm9yIHRleHQgc2VhcmNo
IGFuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaAppbmRleCA2OWRhZDY3NTQ3MjJh
YzdhODgyY2E4NzYxNWFiODg1NDk3OWFmYmM2Li5kMGRkMjNmZTdkYmQ0MWQ2YWY4MWY5MDdhYWQ5
ZGEwMzJjMDFiNGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaApAQCAtMjUs
NyArMjUsNyBAQAogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKICNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpICYmIFVTRShURVhUVVJFX01BUFBFUikKLSNpbmNsdWRlICJUZXh0
dXJlTWFwcGVyLmgiCisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaCIKICNl
bmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCmluZGV4IDIw
YjNiN2Q4ZmIzNTczOGMyOTVjM2M4Y2Q5YzM3YjIyY2NkMDUxNWEuLjNjOGM1YzIyNTk4ODIxZDcy
NTY3ZGJiNTY0ZWI3ZjljOWY2ZDZiNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCkBAIC0zNCw2
ICszNCw3IEBACiAjaW5jbHVkZSAiT3BlbkdMU2hpbXMuaCIKICNpbmNsdWRlICJRV2ViUGFnZUNs
aWVudC5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgIlRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSA8UVdpbmRvdz4KICNpbmNsdWRlIDxxcGEvcXBs
YXRmb3JtcGl4bWFwLmg+CiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAppbmRleCBlOTYyOTZiYTUxZTRhYTcxMTVk
YmEyMjZhYTU3ZmZlZjBlYzAxMjIyLi4yY2RiYjhkODg0ZjlkYTVlYjg5MmMwODc2MGE3NGQwZWVi
Y2Q5YjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKQEAg
LTI0LDE0ICsyNCw4IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckFuaW1hdGlvbi5oIgogI2lu
Y2x1ZGUgIkdyYXBoaWNzTGF5ZXJGYWN0b3J5LmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIK
LSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5o
PgogCi0jaWYgVVNFKENBSVJPKQotI2luY2x1ZGUgIkNhaXJvVXRpbGl0aWVzLmgiCi0jaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
UGFzc093blB0cjxHcmFwaGljc0xheWVyPiBHcmFwaGljc0xheWVyOjpjcmVhdGUoR3JhcGhpY3NM
YXllckZhY3RvcnkqIGZhY3RvcnksIEdyYXBoaWNzTGF5ZXJDbGllbnQqIGNsaWVudCkKQEAgLTM4
MywxNSArMzc3LDYwIEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRl
bnRzVG9NZWRpYShUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllcioKICAgICBtX2NvbnRlbnRzTGF5
ZXIgPSBtZWRpYTsKIH0KIAordm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0U2hv
d0RlYnVnQm9yZGVyKGJvb2wgc2hvdykKK3sKKyAgICBpZiAoaXNTaG93aW5nRGVidWdCb3JkZXIo
KSA9PSBzaG93KQorICAgICAgICByZXR1cm47CisKKyAgICBHcmFwaGljc0xheWVyOjpzZXRTaG93
RGVidWdCb3JkZXIoc2hvdyk7CisgICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6
RGVidWdWaXN1YWxzQ2hhbmdlKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
cjo6c2V0U2hvd1JlcGFpbnRDb3VudGVyKGJvb2wgc2hvdykKK3sKKyAgICBpZiAoaXNTaG93aW5n
UmVwYWludENvdW50ZXIoKSA9PSBzaG93KQorICAgICAgICByZXR1cm47CisKKyAgICBHcmFwaGlj
c0xheWVyOjpzZXRTaG93UmVwYWludENvdW50ZXIoc2hvdyk7CisgICAgbm90aWZ5Q2hhbmdlKFRl
eHR1cmVNYXBwZXJMYXllcjo6RGVidWdWaXN1YWxzQ2hhbmdlKTsKK30KKwogLyogXHJlaW1wIChH
cmFwaGljc0xheWVyLmgpCiAqLwogdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6Zmx1
c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpCiB7CisgICAgaWYgKG1faGFzT3du
QmFja2luZ1N0b3JlKQorICAgICAgICB1cGRhdGVEZWJ1Z0JvcmRlckFuZFJlcGFpbnRDb3VudCgp
OwogICAgIG1fbGF5ZXItPmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkodGhp
cyk7Ci0gICAgdXBkYXRlQmFja2luZ1N0b3JlKCk7CisgICAgaWYgKG1faGFzT3duQmFja2luZ1N0
b3JlKQorICAgICAgICB1cGRhdGVCYWNraW5nU3RvcmUoKTsKICAgICBkaWRGbHVzaENvbXBvc2l0
aW5nU3RhdGUoKTsKIH0KIAordm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6dXBkYXRl
RGVidWdCb3JkZXJBbmRSZXBhaW50Q291bnQoKQoreworICAgIEFTU0VSVChtX2hhc093bkJhY2tp
bmdTdG9yZSk7CisKKyAgICBtX3VzaW5nVGlsZWRMYXllciA9IHNob3VsZEhhdmVCYWNraW5nU3Rv
cmUoKTsKKyAgICB1cGRhdGVEZWJ1Z0luZGljYXRvcnMoKTsKKworICAgIC8vIFdoZW4gdGhpcyBo
YXMgaXRzIG93biBiYWNraW5nIHN0b3JlIChlLmcuIFF0IFdLMSksIHVwZGF0ZSB0aGUgcmVwYWlu
dCBjb3VudCBiZWZvcmUgY2FsbGluZyBUZXh0dXJlTWFwcGVyTGF5ZXI6OmZsdXNoQ29tcG9zaXRp
bmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKS4KKyAgICBib29sIG5lZWRzVG9SZXBhaW50ID0gc2hv
dWxkSGF2ZUJhY2tpbmdTdG9yZSgpICYmIChtX25lZWRzRGlzcGxheSB8fCAhbV9uZWVkc0Rpc3Bs
YXlSZWN0LmlzRW1wdHkoKSk7CisgICAgaWYgKGlzU2hvd2luZ1JlcGFpbnRDb3VudGVyKCkgJiYg
bmVlZHNUb1JlcGFpbnQpIHsKKyAgICAgICAgaW5jcmVtZW50UmVwYWludENvdW50KCk7CisgICAg
ICAgIG1fY2hhbmdlTWFzayB8PSBUZXh0dXJlTWFwcGVyTGF5ZXI6OlJlcGFpbnRDb3VudENoYW5n
ZTsKKyAgICB9Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldERlYnVn
Qm9yZGVyKGNvbnN0IENvbG9yJiBjb2xvciwgZmxvYXQgd2lkdGgpCit7CisgICAgLy8gVGhlIGRl
ZmF1bHQgdmFsdWVzIGZvciBHcmFwaGljc0xheWVyIGRlYnVnIGJvcmRlcnMgYXJlIGEgbGl0dGxl
CisgICAgLy8gaGFyZCB0byBzZWUgKHNvbWUgbGVzcyB0aGFuIG9uZSBwaXhlbCB3aWRlKSwgc28g
d2UgZG91YmxlIHRoZWlyIHNpemUgaGVyZS4KKyAgICBtX2RlYnVnQm9yZGVyQ29sb3IgPSBjb2xv
cjsKKyAgICBtX2RlYnVnQm9yZGVyV2lkdGggPSB3aWR0aCAqIDI7CisgICAgbV9jaGFuZ2VNYXNr
IHw9IFRleHR1cmVNYXBwZXJMYXllcjo6RGVidWdWaXN1YWxzQ2hhbmdlOworfQorCiAvKiBccmVp
bXAgKEdyYXBoaWNzTGF5ZXIuaCkKICovCiB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
OjpmbHVzaENvbXBvc2l0aW5nU3RhdGUoY29uc3QgRmxvYXRSZWN0JiByZWN0KQpAQCAtNDE2LDkg
KzQ1NSw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmRpZEZsdXNoQ29tcG9z
aXRpbmdTdGF0ZSgpCiAKIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnVwZGF0ZUJh
Y2tpbmdTdG9yZSgpCiB7Ci0gICAgaWYgKCFtX2hhc093bkJhY2tpbmdTdG9yZSkKLSAgICAgICAg
cmV0dXJuOwotCisgICAgQVNTRVJUKG1faGFzT3duQmFja2luZ1N0b3JlKTsKICAgICBwcmVwYXJl
QmFja2luZ1N0b3JlKCk7CiAgICAgbV9sYXllci0+c2V0QmFja2luZ1N0b3JlKG1fYmFja2luZ1N0
b3JlKTsKIH0KQEAgLTQ0OCwzNCArNDg1LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlcjo6cHJlcGFyZUJhY2tpbmdTdG9yZSgpCiAjZW5kaWYKICAgICBUZXh0dXJlTWFwcGVyVGls
ZWRCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSA9IHN0YXRpY19jYXN0PFRleHR1cmVNYXBwZXJU
aWxlZEJhY2tpbmdTdG9yZSo+KG1fYmFja2luZ1N0b3JlLmdldCgpKTsKIAotICAgIGlmIChpc1No
b3dpbmdSZXBhaW50Q291bnRlcigpKQotICAgICAgICBpbmNyZW1lbnRSZXBhaW50Q291bnQoKTsK
LQotICAgIC8vIFBhaW50IGludG8gYW4gaW50ZXJtZWRpYXRlIGJ1ZmZlciB0byBhdm9pZCBwYWlu
dGluZyBjb250ZW50IG1vcmUgdGhhbiBvbmNlLgotICAgIGJvb2wgcGFpbnRPbmNlID0gdHJ1ZTsK
LSAgICBjb25zdCBJbnRTaXplIG1heFRleHR1cmVTaXplID0gdGV4dHVyZU1hcHBlci0+bWF4VGV4
dHVyZVNpemUoKTsKLSAgICAvLyBXZSBuZWVkIHRvIHBhaW50IGRpcmVjdGx5IGlmIHRoZSBkaXJ0
eSByZWN0IGV4Y2VlZHMgb25lIG9mIHRoZSBtYXhpbXVtIGRpbWVuc2lvbnMuCi0gICAgaWYgKGRp
cnR5UmVjdC53aWR0aCgpID4gbWF4VGV4dHVyZVNpemUud2lkdGgoKSB8fCBkaXJ0eVJlY3QuaGVp
Z2h0KCkgPiBtYXhUZXh0dXJlU2l6ZS5oZWlnaHQoKSkKLSAgICAgICAgcGFpbnRPbmNlID0gZmFs
c2U7Ci0KLSAgICBpZiAocGFpbnRPbmNlKSB7Ci0gICAgICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4g
aW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGRpcnR5UmVjdC5zaXplKCkpOwotICAg
ICAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpOwot
ICAgICAgICBjb250ZXh0LT5zZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KHRleHR1cmVNYXBw
ZXItPmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7Ci0gICAgICAgIGNvbnRleHQtPnNldFRl
eHREcmF3aW5nTW9kZSh0ZXh0dXJlTWFwcGVyLT50ZXh0RHJhd2luZ01vZGUoKSk7Ci0gICAgICAg
IGNvbnRleHQtPnRyYW5zbGF0ZSgtZGlydHlSZWN0LngoKSwgLWRpcnR5UmVjdC55KCkpOwotICAg
ICAgICBwYWludEdyYXBoaWNzTGF5ZXJDb250ZW50cygqY29udGV4dCwgZGlydHlSZWN0KTsKLQot
ICAgICAgICBpZiAoaXNTaG93aW5nUmVwYWludENvdW50ZXIoKSkKLSAgICAgICAgICAgIGRyYXdS
ZXBhaW50Q291bnRlcihjb250ZXh0KTsKLQotICAgICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0g
aW1hZ2VCdWZmZXItPmNvcHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7Ci0gICAgICAgIGJh
Y2tpbmdTdG9yZS0+dXBkYXRlQ29udGVudHModGV4dHVyZU1hcHBlciwgaW1hZ2UuZ2V0KCksIG1f
c2l6ZSwgZGlydHlSZWN0LCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDYW5Nb2RpZnlPcmlnaW5hbElt
YWdlRGF0YSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIGJhY2tpbmdTdG9yZS0+dXBkYXRlQ29udGVu
dHModGV4dHVyZU1hcHBlciwgdGhpcywgbV9zaXplLCBkaXJ0eVJlY3QsIEJpdG1hcFRleHR1cmU6
OlVwZGF0ZUNhbk1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRhKTsKLQotICAgIGJhY2tpbmdTdG9yZS0+
c2V0U2hvd0RlYnVnQm9yZGVycyhpc1Nob3dpbmdEZWJ1Z0JvcmRlcigpKTsKLSAgICBiYWNraW5n
U3RvcmUtPnNldERlYnVnQm9yZGVyKG1fZGVidWdCb3JkZXJDb2xvciwgbV9kZWJ1Z0JvcmRlcldp
ZHRoKTsKKyAgICBiYWNraW5nU3RvcmUtPnVwZGF0ZUNvbnRlbnRzKHRleHR1cmVNYXBwZXIsIHRo
aXMsIG1fc2l6ZSwgZGlydHlSZWN0LCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDYW5Nb2RpZnlPcmln
aW5hbEltYWdlRGF0YSk7CiAKICAgICBtX25lZWRzRGlzcGxheSA9IGZhbHNlOwogICAgIG1fbmVl
ZHNEaXNwbGF5UmVjdCA9IEludFJlY3QoKTsKQEAgLTQ4Niw0MCArNDk2LDYgQEAgYm9vbCBHcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2hvdWxkSGF2ZUJhY2tpbmdTdG9yZSgpIGNvbnN0CiAg
ICAgcmV0dXJuIGRyYXdzQ29udGVudCgpICYmIGNvbnRlbnRzQXJlVmlzaWJsZSgpICYmICFtX3Np
emUuaXNFbXB0eSgpOwogfQogCi0jaWYgVVNFKENBSVJPKQotdm9pZCBHcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlcjo6ZHJhd1JlcGFpbnRDb3VudGVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkK
LXsKLSAgICBjYWlyb190KiBjciA9IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwot
ICAgIGNhaXJvX3NhdmUoY3IpOwotCi0gICAgQ1N0cmluZyByZXBhaW50Q291bnQgPSBTdHJpbmc6
OmZvcm1hdCgiJWkiLCB0aGlzLT5yZXBhaW50Q291bnQoKSkudXRmOCgpOwotICAgIGNhaXJvX3Nl
bGVjdF9mb250X2ZhY2UoY3IsICJzYW5zLXNlcmlmIiwgQ0FJUk9fRk9OVF9TTEFOVF9OT1JNQUws
IENBSVJPX0ZPTlRfV0VJR0hUX0JPTEQpOwotICAgIGNhaXJvX3NldF9mb250X3NpemUoY3IsIDE4
KTsKLQotICAgIGNhaXJvX3RleHRfZXh0ZW50c190IHJlcGFpbnRUZXh0RXh0ZW50czsKLSAgICBj
YWlyb190ZXh0X2V4dGVudHMoY3IsIHJlcGFpbnRDb3VudC5kYXRhKCksICZyZXBhaW50VGV4dEV4
dGVudHMpOwotCi0gICAgc3RhdGljIGNvbnN0IGludCByZXBhaW50Q291bnRCb3JkZXJXaWR0aCA9
IDEwOwotICAgIHNldFNvdXJjZVJHQkFGcm9tQ29sb3IoY3IsIGlzU2hvd2luZ0RlYnVnQm9yZGVy
KCkgPyBtX2RlYnVnQm9yZGVyQ29sb3IgOiBDb2xvcigwLCAyNTUsIDAsIDEyNykpOwotICAgIGNh
aXJvX3JlY3RhbmdsZShjciwgMCwgMCwKLSAgICAgICAgcmVwYWludFRleHRFeHRlbnRzLndpZHRo
ICsgKHJlcGFpbnRDb3VudEJvcmRlcldpZHRoICogMiksCi0gICAgICAgIHJlcGFpbnRUZXh0RXh0
ZW50cy5oZWlnaHQgKyAocmVwYWludENvdW50Qm9yZGVyV2lkdGggKiAyKSk7Ci0gICAgY2Fpcm9f
ZmlsbChjcik7Ci0KLSAgICBjYWlyb19zZXRfc291cmNlX3JnYihjciwgMSwgMSwgMSk7Ci0gICAg
Y2Fpcm9fbW92ZV90byhjciwgcmVwYWludENvdW50Qm9yZGVyV2lkdGgsIHJlcGFpbnRUZXh0RXh0
ZW50cy5oZWlnaHQgKyByZXBhaW50Q291bnRCb3JkZXJXaWR0aCk7Ci0gICAgY2Fpcm9fc2hvd190
ZXh0KGNyLCByZXBhaW50Q291bnQuZGF0YSgpKTsKLQotICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwot
fQotI2Vsc2UKLXZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmRyYXdSZXBhaW50Q291
bnRlcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LX0KLQotI2VuZGlmCi0KIGJvb2wgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmFkZEFuaW1h
dGlvbihjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0LCBjb25zdCBJbnRTaXplJiBi
b3hTaXplLCBjb25zdCBBbmltYXRpb24qIGFuaW0sIGNvbnN0IFN0cmluZyYga2V5ZnJhbWVzTmFt
ZSwgZG91YmxlIHRpbWVPZmZzZXQpCiB7CiAgICAgQVNTRVJUKCFrZXlmcmFtZXNOYW1lLmlzRW1w
dHkoKSk7CkBAIC01NjEsMTQgKzUzNyw2IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXI6OmFuaW1hdGlvblN0YXJ0ZWRUaW1lckZpcmVkKFRpbWVyPEdyYXBoaWNzTGF5ZXJUCiAgICAg
Y2xpZW50KCktPm5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQodGhpcywgLyogRE9NIHRpbWUgKi8gV1RG
OjpjdXJyZW50VGltZSgpKTsKIH0KIAotdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6
c2V0RGVidWdCb3JkZXIoY29uc3QgQ29sb3ImIGNvbG9yLCBmbG9hdCB3aWR0aCkKLXsKLSAgICAv
LyBUaGUgZGVmYXVsdCB2YWx1ZXMgZm9yIEdyYXBoaWNzTGF5ZXIgZGVidWcgYm9yZGVycyBhcmUg
YSBsaXR0bGUKLSAgICAvLyBoYXJkIHRvIHNlZSAoc29tZSBsZXNzIHRoYW4gb25lIHBpeGVsIHdp
ZGUpLCBzbyB3ZSBkb3VibGUgdGhlaXIgc2l6ZSBoZXJlLgotICAgIG1fZGVidWdCb3JkZXJDb2xv
ciA9IGNvbG9yOwotICAgIG1fZGVidWdCb3JkZXJXaWR0aCA9IHdpZHRoICogMjsKLX0KLQogI2lm
IEVOQUJMRShDU1NfRklMVEVSUykKIGJvb2wgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNl
dEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKIHsKQEAgLTU3Nyw0ICs1
NDUsMTAgQEAgYm9vbCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0RmlsdGVycyhjb25z
dCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQogfQogI2VuZGlmCiAKK3ZvaWQgR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXI6OnNldFJlcGFpbnRDb3VudChpbnQgcmVwYWludENvdW50KQorewor
ICAgIG1fcmVwYWludENvdW50ID0gcmVwYWludENvdW50OworICAgIG5vdGlmeUNoYW5nZShUZXh0
dXJlTWFwcGVyTGF5ZXI6OlJlcGFpbnRDb3VudENoYW5nZSk7Cit9CisKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKaW5kZXggMTJjMzE5NTkxYjcyNmM3YzlmMGJhMmJk
ZmRmNDM4NGU3ZGVhMTcxMy4uYWZjNTFhNjJjMTU2NmZmMTQ0NWUxNDcyNTE0YWYyNmFlZDZiZWY4
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKQEAgLTIwLDcgKzIw
LDYgQEAKICNpZm5kZWYgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXJfaAogI2RlZmluZSBHcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlcl9oCiAKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIK
ICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNsaWVu
dC5oIgogI2luY2x1ZGUgIkltYWdlLmgiCkBAIC02Niw2ICs2NSw5IEBAIHB1YmxpYzoKICAgICBD
b2xvciBzb2xpZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9zb2xpZENvbG9yOyB9CiAgICAgdmly
dHVhbCB2b2lkIHNldENvbnRlbnRzVG9NZWRpYShQbGF0Zm9ybUxheWVyKik7CiAgICAgdmlydHVh
bCB2b2lkIHNldENvbnRlbnRzVG9DYW52YXMoUGxhdGZvcm1MYXllciogY2FudmFzKSB7IHNldENv
bnRlbnRzVG9NZWRpYShjYW52YXMpOyB9CisgICAgdmlydHVhbCB2b2lkIHNldFNob3dEZWJ1Z0Jv
cmRlcihib29sKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGVidWdCb3JkZXIoY29u
c3QgQ29sb3ImLCBmbG9hdCB3aWR0aCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFNo
b3dSZXBhaW50Q291bnRlcihib29sKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZmx1c2hD
b21wb3NpdGluZ1N0YXRlKGNvbnN0IEZsb2F0UmVjdCYpOwogICAgIHZpcnR1YWwgdm9pZCBmbHVz
aENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCk7CiAgICAgdmlydHVhbCB2b2lkIHNl
dE5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKTsKQEAgLTgxLDggKzgzLDYgQEAgcHVibGljOgogCiAg
ICAgVGV4dHVyZU1hcHBlckxheWVyKiBsYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXIuZ2V0
KCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBzZXREZWJ1Z0JvcmRlcihjb25zdCBDb2xvciYsIGZs
b2F0IHdpZHRoKTsKLQogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKICAgICB2aXJ0dWFsIGJvb2wg
c2V0RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJik7CiAjZW5kaWYKQEAgLTkzLDEwICs5
MywxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRGaXhlZFRvVmlld3BvcnQoYm9vbCBmaXhlZCkg
eyBtX2ZpeGVkVG9WaWV3cG9ydCA9IGZpeGVkOyB9CiAgICAgYm9vbCBmaXhlZFRvVmlld3BvcnQo
KSBjb25zdCB7IHJldHVybiBtX2ZpeGVkVG9WaWV3cG9ydDsgfQogCi0gICAgdm9pZCBkcmF3UmVw
YWludENvdW50ZXIoR3JhcGhpY3NDb250ZXh0Kik7CisgICAgQ29sb3IgZGVidWdCb3JkZXJDb2xv
cigpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdCb3JkZXJDb2xvcjsgfQorICAgIGZsb2F0IGRlYnVn
Qm9yZGVyV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnQm9yZGVyV2lkdGg7IH0KKworICAg
IHZvaWQgc2V0UmVwYWludENvdW50KGludCk7CisKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IHdpbGxCZURlc3Ryb3llZCgpOwogICAgIHZvaWQgZGlkRmx1c2hDb21wb3NpdGluZ1N0YXRlKCk7
CisgICAgdm9pZCB1cGRhdGVEZWJ1Z0JvcmRlckFuZFJlcGFpbnRDb3VudCgpOwogICAgIHZvaWQg
dXBkYXRlQmFja2luZ1N0b3JlKCk7CiAgICAgdm9pZCBwcmVwYXJlQmFja2luZ1N0b3JlKCk7CiAg
ICAgYm9vbCBzaG91bGRIYXZlQmFja2luZ1N0b3JlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaAppbmRl
eCBjNzI0MWE2YzlhNzIyYTY0NTJmN2MxOGM5ZDY2OTcxMjc2NjkzNjZiLi5kOTYxMTZiNzA5OTM2
OGFkNDQ1NTk5NmMxYjczMjAxNjI3MGRlZWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmgKQEAgLTM2LDcgKzM2
LDYgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbnRSZWN0Lmgi
CiAjaW5jbHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKICNpbmNsdWRlIDx3dGYv
VW51c2VkUGFyYW0uaD4KIApAQCAtMTMwLDggKzEyOSw5IEBAIHB1YmxpYzoKICAgICAgICAgQWxs
RWRnZXMgPSBMZWZ0RWRnZSB8IFJpZ2h0RWRnZSB8IFRvcEVkZ2UgfCBCb3R0b21FZGdlLAogICAg
IH07CiAKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd0JvcmRlcihjb25zdCBDb2xvciYsIGZsb2F0IGJv
cmRlcldpZHRoLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdSZXBhaW50Q291bnRlcihpbnQgdmFsdWUsIGludCBwb2lu
dFNpemUsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9k
ZWxWaWV3TWF0cml4ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBkcmF3Qm9yZGVyKGNvbnN0IENvbG9yJiwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBkcmF3UmVwYWludENvdW50ZXIoaW50IHJlcGFpbnRDb3VudCwgY29uc3QgQ29sb3ImLCBj
b25zdCBGbG9hdFBvaW50JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSA9IDA7CisKICAg
ICB2aXJ0dWFsIHZvaWQgZHJhd1RleHR1cmUoY29uc3QgQml0bWFwVGV4dHVyZSYsIGNvbnN0IEZs
b2F0UmVjdCYgdGFyZ2V0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0
cml4ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgZmxvYXQgb3BhY2l0eSA9IDEuMGYsIGNvbnN0
IEJpdG1hcFRleHR1cmUqIG1hc2tUZXh0dXJlID0gMCwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzID0g
QWxsRWRnZXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1NvbGlkQ29sb3IoY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBDb2xvciYpID0gMDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuY3BwCmluZGV4IGU4OTkyNTMx
YjI4N2M1YjU5Nzc5ZTY0NzZlODAxYjhiNjk5NWMyYzcuLjMxMDZkZjIyZTJlZTBlNGQ0NjdiYjg3
N2NiMjExYTM3NDJmNzU2MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9y
ZS5jcHAKQEAgLTEwNiw3ICsxMDYsNiBAQCB2b2lkIFRleHR1cmVNYXBwZXJUaWxlOjpwYWludChU
ZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbgogfQogCiBU
ZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OlRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdT
dG9yZSgpCi0gICAgOiBtX2RyYXdzRGVidWdCb3JkZXJzKGZhbHNlKQogewogfQogCkBAIC0xMzMs
MTYgKzEzMiwzMSBAQCB1bnNpZ25lZCBUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlOjpjYWxjdWxh
dGVFeHBvc2VkVGlsZUVkZ2VzKGNvbnN0IEZsb2F0UmVjdCYgdAogICAgIHJldHVybiBleHBvc2Vk
RWRnZXM7CiB9CiAKK1RyYW5zZm9ybWF0aW9uTWF0cml4IFRleHR1cmVNYXBwZXJUaWxlZEJhY2tp
bmdTdG9yZTo6YWRqdXN0ZWRUcmFuc2Zvcm1Gb3JSZWN0KGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0
UmVjdCkKK3sKKyAgICByZXR1cm4gVHJhbnNmb3JtYXRpb25NYXRyaXg6OnJlY3RUb1JlY3QocmVj
dCgpLCB0YXJnZXRSZWN0KTsKK30KKwogdm9pZCBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3Rv
cmU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNv
bnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRy
YW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgQml0bWFwVGV4dHVyZSogbWFzaykKIHsKICAgICB1cGRh
dGVDb250ZW50c0Zyb21JbWFnZUlmTmVlZGVkKHRleHR1cmVNYXBwZXIpOwotICAgIFRyYW5zZm9y
bWF0aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3JtID0gdHJhbnNmb3JtOwotICAgIGFkanVzdGVk
VHJhbnNmb3JtLm11bHRpcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4OjpyZWN0VG9SZWN0KHJlY3Qo
KSwgdGFyZ2V0UmVjdCkpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90aWxlcy5zaXpl
KCk7ICsraSkgeworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3JtID0g
dHJhbnNmb3JtICogYWRqdXN0ZWRUcmFuc2Zvcm1Gb3JSZWN0KHRhcmdldFJlY3QpOworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90aWxlcy5zaXplKCk7ICsraSkKICAgICAgICAgbV90aWxl
c1tpXS5wYWludCh0ZXh0dXJlTWFwcGVyLCBhZGp1c3RlZFRyYW5zZm9ybSwgb3BhY2l0eSwgbWFz
aywgY2FsY3VsYXRlRXhwb3NlZFRpbGVFZGdlcyhyZWN0KCksIG1fdGlsZXNbaV0ucmVjdCgpKSk7
Ci0gICAgICAgIGlmIChtX2RyYXdzRGVidWdCb3JkZXJzKQotICAgICAgICAgICAgdGV4dHVyZU1h
cHBlci0+ZHJhd0JvcmRlcihtX2RlYnVnQm9yZGVyQ29sb3IsIG1fZGVidWdCb3JkZXJXaWR0aCwg
bV90aWxlc1tpXS5yZWN0KCksIGFkanVzdGVkVHJhbnNmb3JtKTsKLSAgICB9Cit9CisKK3ZvaWQg
VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpkcmF3Qm9yZGVyKFRleHR1cmVNYXBwZXIq
IHRleHR1cmVNYXBwZXIsIGNvbnN0IENvbG9yJiBib3JkZXJDb2xvciwgZmxvYXQgYm9yZGVyV2lk
dGgsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIHRyYW5zZm9ybSkKK3sKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhZGp1c3RlZFRyYW5z
Zm9ybSA9IHRyYW5zZm9ybSAqIGFkanVzdGVkVHJhbnNmb3JtRm9yUmVjdCh0YXJnZXRSZWN0KTsK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fdGlsZXMuc2l6ZSgpOyArK2kpCisgICAgICAg
IHRleHR1cmVNYXBwZXItPmRyYXdCb3JkZXIoYm9yZGVyQ29sb3IsIGJvcmRlcldpZHRoLCBtX3Rp
bGVzW2ldLnJlY3QoKSwgYWRqdXN0ZWRUcmFuc2Zvcm0pOworfQorCit2b2lkIFRleHR1cmVNYXBw
ZXJUaWxlZEJhY2tpbmdTdG9yZTo6ZHJhd1JlcGFpbnRDb3VudGVyKFRleHR1cmVNYXBwZXIqIHRl
eHR1cmVNYXBwZXIsIGludCByZXBhaW50Q291bnQsIGNvbnN0IENvbG9yJiBib3JkZXJDb2xvciwg
Y29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
dHJhbnNmb3JtKQoreworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3Jt
ID0gdHJhbnNmb3JtICogYWRqdXN0ZWRUcmFuc2Zvcm1Gb3JSZWN0KHRhcmdldFJlY3QpOworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90aWxlcy5zaXplKCk7ICsraSkKKyAgICAgICAgdGV4
dHVyZU1hcHBlci0+ZHJhd1JlcGFpbnRDb3VudGVyKHJlcGFpbnRDb3VudCwgYm9yZGVyQ29sb3Is
IG1fdGlsZXNbaV0ucmVjdCgpLmxvY2F0aW9uKCksIGFkanVzdGVkVHJhbnNmb3JtKTsKIH0KIAog
dm9pZCBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0ZU9yRGVzdHJveVRpbGVz
SWZOZWVkZWQoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwg
Ym9vbCBoYXNBbHBoYSkKQEAgLTIzNCwxMSArMjQ4LDUgQEAgUGFzc1JlZlB0cjxCaXRtYXBUZXh0
dXJlPiBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OnRleHR1cmUoKSBjb25zdAogICAg
IHJldHVybiBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+KCk7CiB9CiAKLXZvaWQgVGV4dHVyZU1h
cHBlclRpbGVkQmFja2luZ1N0b3JlOjpzZXREZWJ1Z0JvcmRlcihjb25zdCBDb2xvciYgY29sb3Is
IGZsb2F0IHdpZHRoKQotewotICAgIG1fZGVidWdCb3JkZXJDb2xvciA9IGNvbG9yOwotICAgIG1f
ZGVidWdCb3JkZXJXaWR0aCA9IHdpZHRoOwotfQotCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2lu
Z1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckJhY2tpbmdTdG9yZS5oCmluZGV4IDBkZDJkZjRiMTk4YmQzMTFmZDQxYzU1YTMzNzcy
MTg0Y2QxNGIzNGEuLjViNDA1YWFjYWRhYjUzMjM0ZjU4MjI3MzFhNGQ5NTM0NDE1NmM0YWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuaApAQCAtNDAsOCArNDAsMTMgQEAg
Y2xhc3MgVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZSA6IHB1YmxpYyBUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllciwgcHVibGljIFJlZkMKIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQsIEJpdG1hcFRleHR1cmUqKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGRyYXdSZXBhaW50Q291bnRlcihUZXh0dXJlTWFwcGVyKiwgaW50IC8qIHJl
cGFpbnRDb3VudCAqLywgY29uc3QgQ29sb3ImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYpCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICB9CiAgICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZSgpIHsgfQogCisK
IHByb3RlY3RlZDoKICAgICBzdGF0aWMgdW5zaWduZWQgY2FsY3VsYXRlRXhwb3NlZFRpbGVFZGdl
cyhjb25zdCBGbG9hdFJlY3QmIHRvdGFsUmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCk7
CiB9OwpAQCAtOTQsMjYgKzk5LDIzIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0LCBCaXRtYXBUZXh0dXJlKikgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRyYXdCb3JkZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0
IENvbG9yJiwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRyYXdSZXBhaW50
Q291bnRlcihUZXh0dXJlTWFwcGVyKiwgaW50IHJlcGFpbnRDb3VudCwgY29uc3QgQ29sb3ImLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIE9WRVJSSURFOwog
ICAgIHZvaWQgdXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciosIEltYWdlKiwgY29uc3QgRmxv
YXRTaXplJiwgY29uc3QgSW50UmVjdCYsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNvbnRlbnRzRmxh
Zyk7CiAgICAgdm9pZCB1cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVyKiwgR3JhcGhpY3NMYXll
ciosIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEludFJlY3QmLCBCaXRtYXBUZXh0dXJlOjpVcGRh
dGVDb250ZW50c0ZsYWcpOwogCiAgICAgdm9pZCBzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqIGlt
YWdlKSB7IG1faW1hZ2UgPSBpbWFnZTsgfQotICAgIHZvaWQgc2V0U2hvd0RlYnVnQm9yZGVycyhi
b29sIGRyYXdzRGVidWdCb3JkZXJzKSB7IG1fZHJhd3NEZWJ1Z0JvcmRlcnMgPSBkcmF3c0RlYnVn
Qm9yZGVyczsgfQotICAgIHZvaWQgc2V0RGVidWdCb3JkZXIoY29uc3QgQ29sb3ImLCBmbG9hdCB3
aWR0aCk7CiAKIHByaXZhdGU6CiAgICAgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlKCk7
CiAgICAgdm9pZCBjcmVhdGVPckRlc3Ryb3lUaWxlc0lmTmVlZGVkKGNvbnN0IEZsb2F0U2l6ZSYg
YmFja2luZ1N0b3JlU2l6ZSwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGJvb2wgaGFzQWxwaGEp
OwogICAgIHZvaWQgdXBkYXRlQ29udGVudHNGcm9tSW1hZ2VJZk5lZWRlZChUZXh0dXJlTWFwcGVy
Kik7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggYWRqdXN0ZWRUcmFuc2Zvcm1Gb3JSZWN0KGNv
bnN0IEZsb2F0UmVjdCYpOwogICAgIGlubGluZSBGbG9hdFJlY3QgcmVjdCgpIGNvbnN0IHsgcmV0
dXJuIEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIG1fc2l6ZSk7IH0KIAogICAgIFZlY3Rv
cjxUZXh0dXJlTWFwcGVyVGlsZT4gbV90aWxlczsKICAgICBGbG9hdFNpemUgbV9zaXplOwogICAg
IFJlZlB0cjxJbWFnZT4gbV9pbWFnZTsKLQotICAgIGJvb2wgbV9kcmF3c0RlYnVnQm9yZGVyczsK
LSAgICBDb2xvciBtX2RlYnVnQm9yZGVyQ29sb3I7Ci0gICAgZmxvYXQgbV9kZWJ1Z0JvcmRlcldp
ZHRoOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcAppbmRleCBiODI5MThlYzAyYWViZmM4
MjIzZjIzODQyNTZiZTM5YzNkNzk5NGJlLi42OWM1ODZiYTJiNWQxMGE5OThlYTc4MzAyY2Y5NjJl
MmM0YWFhODMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcApAQCAtMzA5LDEwICszMDksMTYgQEAg
dm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdCb3JkZXIoY29uc3QgQ29sb3ImIGNvbG9yLCBmbG9h
dCB3aWR0aCwgY29uc3QgRmxvYXRSZWMKICAgICBkcmF3KHRhcmdldFJlY3QsIG1vZGVsVmlld01h
dHJpeCwgcHJvZ3JhbS5nZXQoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVfTE9PUCwgY29sb3Iu
aGFzQWxwaGEoKSA/IFNob3VsZEJsZW5kIDogMCk7CiB9CiAKLXZvaWQgVGV4dHVyZU1hcHBlckdM
OjpkcmF3UmVwYWludENvdW50ZXIoaW50IHZhbHVlLCBpbnQgcG9pbnRTaXplLCBjb25zdCBGbG9h
dFBvaW50JiB0YXJnZXRQb2ludCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmll
d01hdHJpeCkKK3N0YXRpYyBpbmxpbmUgUkdCQTMyIGNvbnZlcnRBQkdSVG9BUkdCKFJHQkEzMiBw
aXhlbCkKIHsKKyAgICByZXR1cm4gKChwaXhlbCA8PCAxNikgJiAweGZmMDAwMCkgfCAoKHBpeGVs
ID4+IDE2KSAmIDB4ZmYpIHwgKHBpeGVsICYgMHhmZjAwZmYwMCk7Cit9CisKK3ZvaWQgVGV4dHVy
ZU1hcHBlckdMOjpkcmF3UmVwYWludENvdW50ZXIoaW50IHJlcGFpbnRDb3VudCwgY29uc3QgQ29s
b3ImIGNvbG9yLCBjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRQb2ludCwgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCkKK3sKKyAgICBzdGF0aWMgY29uc3QgaW50IHBv
aW50U2l6ZSA9IDg7CiAjaWYgUExBVEZPUk0oUVQpCi0gICAgUVN0cmluZyBjb3VudGVyU3RyaW5n
ID0gUVN0cmluZzo6bnVtYmVyKHZhbHVlKTsKKyAgICBRU3RyaW5nIGNvdW50ZXJTdHJpbmcgPSBR
U3RyaW5nOjpudW1iZXIocmVwYWludENvdW50KTsKIAogICAgIFFGb250IGZvbnQoUVN0cmluZzo6
ZnJvbUxhdGluMSgiTW9ub3NwYWNlIiksIHBvaW50U2l6ZSwgUUZvbnQ6OkJvbGQpOwogICAgIGZv
bnQuc2V0U3R5bGVIaW50KFFGb250OjpUeXBlV3JpdGVyKTsKQEAgLTMyNyw3ICszMzMsNyBAQCB2
b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1JlcGFpbnRDb3VudGVyKGludCB2YWx1ZSwgaW50IHBv
aW50U2l6ZSwgY29uc3QgRmxvYXRQbwogCiAgICAgUUltYWdlIGltYWdlKHNpemUsIE5hdGl2ZUlt
YWdlUXQ6OmRlZmF1bHRGb3JtYXRGb3JBbHBoYUVuYWJsZWRJbWFnZXMoKSk7CiAgICAgUVBhaW50
ZXIgcGFpbnRlcigmaW1hZ2UpOwotICAgIHBhaW50ZXIuZmlsbFJlY3Qoc291cmNlUmVjdCwgUXQ6
OmJsdWUpOyAvLyBTaW5jZSB3ZSB3b24ndCBzd2FwIFIrQiBmb3Igc3BlZWQsIHRoaXMgd2lsbCBw
YWludCByZWQuCisgICAgcGFpbnRlci5maWxsUmVjdChzb3VyY2VSZWN0LCBjb252ZXJ0QUJHUlRv
QVJHQihjb2xvci5yZ2IoKSkpOyAvLyBTaW5jZSB3ZSB3b24ndCBzd2FwIFIrQiBmb3Igc3BlZWQs
IHRoaXMgd2lsbCBwYWludCB0aGUgZ2l2ZW4gY29sb3IuCiAgICAgcGFpbnRlci5zZXRGb250KGZv
bnQpOwogICAgIHBhaW50ZXIuc2V0UGVuKFF0Ojp3aGl0ZSk7CiAgICAgcGFpbnRlci5kcmF3VGV4
dCgyLCBoZWlnaHQgKiAwLjg1LCBjb3VudGVyU3RyaW5nKTsKQEAgLTMzOCw3ICszNDQsNyBAQCB2
b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1JlcGFpbnRDb3VudGVyKGludCB2YWx1ZSwgaW50IHBv
aW50U2l6ZSwgY29uc3QgRmxvYXRQbwogICAgIGRyYXdUZXh0dXJlKCp0ZXh0dXJlLCB0YXJnZXRS
ZWN0LCBtb2RlbFZpZXdNYXRyaXgsIDEuMGYsIDAsIEFsbEVkZ2VzKTsKIAogI2VsaWYgVVNFKENB
SVJPKQotICAgIENTdHJpbmcgY291bnRlclN0cmluZyA9IFN0cmluZzo6bnVtYmVyKHZhbHVlKS5h
c2NpaSgpOworICAgIENTdHJpbmcgY291bnRlclN0cmluZyA9IFN0cmluZzo6bnVtYmVyKHJlcGFp
bnRDb3VudCkuYXNjaWkoKTsKICAgICAvLyBjYWlyb190ZXh0X2V4dGVudHMoKSByZXF1aXJlcyBh
IGNhaXJvX3QsIHNvIGRpbWVuc2lvbnMgbmVlZCB0byBiZSBndWVzc3RpbWF0ZWQuCiAgICAgaW50
IHdpZHRoID0gY291bnRlclN0cmluZy5sZW5ndGgoKSAqIHBvaW50U2l6ZSAqIDEuMjsKICAgICBp
bnQgaGVpZ2h0ID0gcG9pbnRTaXplICogMS41OwpAQCAtMzQ2LDcgKzM1Miw5IEBAIHZvaWQgVGV4
dHVyZU1hcHBlckdMOjpkcmF3UmVwYWludENvdW50ZXIoaW50IHZhbHVlLCBpbnQgcG9pbnRTaXpl
LCBjb25zdCBGbG9hdFBvCiAgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlID0gY2Fpcm9faW1h
Z2Vfc3VyZmFjZV9jcmVhdGUoQ0FJUk9fRk9STUFUX0FSR0IzMiwgd2lkdGgsIGhlaWdodCk7CiAg
ICAgY2Fpcm9fdCogY3IgPSBjYWlyb19jcmVhdGUoc3VyZmFjZSk7CiAKLSAgICBjYWlyb19zZXRf
c291cmNlX3JnYihjciwgMCwgMCwgMSk7IC8vIFNpbmNlIHdlIHdvbid0IHN3YXAgUitCIGZvciBz
cGVlZCwgdGhpcyB3aWxsIHBhaW50IHJlZC4KKyAgICBmbG9hdCByLCBnLCBiLCBhOworICAgIGNv
bG9yLmdldFJHQkEociwgZywgYiwgYSk7CisgICAgY2Fpcm9fc2V0X3NvdXJjZV9yZ2JhKGNyLCBi
LCBnLCByLCBhKTsgLy8gU2luY2Ugd2Ugd29uJ3Qgc3dhcCBSK0IgZm9yIHNwZWVkLCB0aGlzIHdp
bGwgcGFpbnQgdGhlIGdpdmVuIGNvbG9yLgogICAgIGNhaXJvX3JlY3RhbmdsZShjciwgMCwgMCwg
d2lkdGgsIGhlaWdodCk7CiAgICAgY2Fpcm9fZmlsbChjcik7CiAKQEAgLTM3MCw3ICszNzgsNyBA
QCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1JlcGFpbnRDb3VudGVyKGludCB2YWx1ZSwgaW50
IHBvaW50U2l6ZSwgY29uc3QgRmxvYXRQbwogICAgIGNhaXJvX2Rlc3Ryb3koY3IpOwogCiAjZWxz
ZQotICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CisgICAgVU5VU0VEX1BBUkFNKHJlcGFpbnRDb3Vu
dCk7CiAgICAgVU5VU0VEX1BBUkFNKHBvaW50U2l6ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRhcmdl
dFBvaW50KTsKICAgICBVTlVTRURfUEFSQU0obW9kZWxWaWV3TWF0cml4KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
R0wuaAppbmRleCAxNjA1MDdjNjA2OGZlZmMzNTQ4NDMwZmJlZGFhZjM1MDYzZDk3NDE2Li45ODNl
MmEwNmMzYzQzZDYzYWE5ZWJhMWFmNmMxYTFkOGRmNTkzZGRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5o
CkBAIC01Miw4ICs1Miw4IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIGludCBGbGFnczsKIAogICAg
IC8vIFRleHR1cmVNYXBwZXIgaW1wbGVtZW50YXRpb24KLSAgICB2aXJ0dWFsIHZvaWQgZHJhd0Jv
cmRlcihjb25zdCBDb2xvciYsIGZsb2F0IGJvcmRlcldpZHRoLCBjb25zdCBGbG9hdFJlY3QmIHRh
cmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXggPSBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCgpKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd1Jl
cGFpbnRDb3VudGVyKGludCB2YWx1ZSwgaW50IHBvaW50U2l6ZSwgY29uc3QgRmxvYXRQb2ludCYs
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXggPSBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCgpKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0JvcmRlcihjb25z
dCBDb2xvciYsIGZsb2F0IGJvcmRlcldpZHRoLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVwYWlu
dENvdW50ZXIoaW50IHJlcGFpbnRDb3VudCwgY29uc3QgQ29sb3ImLCBjb25zdCBGbG9hdFBvaW50
JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgZHJhd1RleHR1cmUoY29uc3QgQml0bWFwVGV4dHVyZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4
dHVyZSogbWFza1RleHR1cmUsIHVuc2lnbmVkIGV4cG9zZWRFZGdlcykgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIGRyYXdUZXh0dXJlKFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZSwgRmxhZ3Ms
IGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3Qs
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNp
dHksIGNvbnN0IEJpdG1hcFRleHR1cmUqIG1hc2tUZXh0dXJlLCB1bnNpZ25lZCBleHBvc2VkRWRn
ZXMgPSBBbGxFZGdlcyk7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdTb2xpZENvbG9yKGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgQ29sb3ImKSBPVkVS
UklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5jcHAKaW5kZXggOTI5MDUz
YjEyYjc0MDI1ODRjNTQ4N2EzOGFiODBmY2RiMWExMTBiOC4uNjlmZDczOGY1OGZjOTE0NTE3Yjk5
YTk3ZTQwNzMzOTE2YzM2N2RkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZl
ci5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKICNpZiBQTEFURk9STShRVCkKICNpbmNsdWRlICJOYXRp
dmVJbWFnZVF0LmgiCiAjZW5kaWYKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogCiAKICNp
ZiBVU0UoVEVYVFVSRV9NQVBQRVIpCkBAIC0xNjQsNiArMTY1LDE2IEBAIHZvaWQgVGV4dHVyZU1h
cHBlckltYWdlQnVmZmVyOjpkcmF3U29saWRDb2xvcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNv
bnN0IFRyYW5zCiAgICAgY29udGV4dC0+cmVzdG9yZSgpOwogfQogCit2b2lkIFRleHR1cmVNYXBw
ZXJJbWFnZUJ1ZmZlcjo6ZHJhd0JvcmRlcihjb25zdCBDb2xvciYsIGZsb2F0IC8qIGJvcmRlcldp
ZHRoICovLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVySW1hZ2VCdWZm
ZXI6OmRyYXdSZXBhaW50Q291bnRlcihpbnQgLyogcmVwYWludENvdW50ICovLCBjb25zdCBDb2xv
ciYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKIFBhc3NS
ZWZQdHI8Qml0bWFwVGV4dHVyZT4gQml0bWFwVGV4dHVyZUltYWdlQnVmZmVyOjphcHBseUZpbHRl
cnMoVGV4dHVyZU1hcHBlciosIGNvbnN0IEJpdG1hcFRleHR1cmUmIGNvbnRlbnRUZXh0dXJlLCBj
b25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJ
bWFnZUJ1ZmZlci5oCmluZGV4IDlkZTZkNGNiZDVlYjE3ZTkzNDg4MDE4YTYyYTcxMzFkODk3Mzg0
ZWIuLjViMmU5NzgzZDY5YzA1ODYzOTI3MmEyYjYzMWM3NmFlMTA1NzNkM2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1h
Z2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmgKQEAgLTUzLDE0ICs1Myw4IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc093blB0cjxUZXh0dXJlTWFwcGVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9w
dFB0cihuZXcgVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyKTsgfQogCiAgICAgLy8gVGV4dHVyZU1h
cHBlciBpbXBsZW1lbnRhdGlvbgotICAgIHZpcnR1YWwgdm9pZCBkcmF3Qm9yZGVyKGNvbnN0IENv
bG9yJiwgZmxvYXQgLyogYm9yZGVyV2lkdGggKi8sIGNvbnN0IEZsb2F0UmVjdCYgLyogdGFyZ2V0
UmVjdCAqLywgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCA9IFRy
YW5zZm9ybWF0aW9uTWF0cml4KCkpIE9WRVJSSURFCi0gICAgewotICAgICAgICBVTlVTRURfUEFS
QU0obW9kZWxWaWV3TWF0cml4KTsKLSAgICB9OwotICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVwYWlu
dENvdW50ZXIoaW50IC8qIHZhbHVlICovLCBpbnQgLyogcG9pbnRTaXplICovLCBjb25zdCBGbG9h
dFBvaW50JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCA9IFRy
YW5zZm9ybWF0aW9uTWF0cml4KCkpIE9WRVJSSURFCi0gICAgewotICAgICAgICBVTlVTRURfUEFS
QU0obW9kZWxWaWV3TWF0cml4KTsKLSAgICB9OworICAgIHZpcnR1YWwgdm9pZCBkcmF3Qm9yZGVy
KGNvbnN0IENvbG9yJiwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRyYXdS
ZXBhaW50Q291bnRlcihpbnQgcmVwYWludENvdW50LCBjb25zdCBDb2xvciYsIGNvbnN0IEZsb2F0
UG9pbnQmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCBkcmF3VGV4dHVyZShjb25zdCBCaXRtYXBUZXh0dXJlJiwgY29uc3QgRmxvYXRSZWN0
JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHks
IGNvbnN0IEJpdG1hcFRleHR1cmUqIG1hc2tUZXh0dXJlLCB1bnNpZ25lZCBleHBvc2VkRWRnZXMp
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3U29saWRDb2xvcihjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IENvbG9yJikgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luQ2xpcChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYs
IGNvbnN0IEZsb2F0UmVjdCYpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcApp
bmRleCA1ZGZhMTgzOGVkNGI0YzIxODQ3NTA0MzQ2ZWVmMDM2NDM5YjUxYTliLi44ZTgwYjE5NDIz
NTlmYmM4Y2E2MGQ4MTNmYjk3MzE2ZjMzOTE1NjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVy
LmNwcApAQCAtMTI5LDYgKzEyOSw4IEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpwYWludFNl
bGYoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucykKIAogICAgIGlmICht
X3N0YXRlLnNvbGlkQ29sb3IuaXNWYWxpZCgpICYmICFtX3N0YXRlLmNvbnRlbnRzUmVjdC5pc0Vt
cHR5KCkpIHsKICAgICAgICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5kcmF3U29saWRDb2xvciht
X3N0YXRlLmNvbnRlbnRzUmVjdCwgdHJhbnNmb3JtLCBibGVuZFdpdGhPcGFjaXR5KG1fc3RhdGUu
c29saWRDb2xvciwgb3BhY2l0eSkpOworICAgICAgICBpZiAobV9zdGF0ZS5zaG93RGVidWdCb3Jk
ZXJzKQorICAgICAgICAgICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5kcmF3Qm9yZGVyKG1fc3Rh
dGUuZGVidWdCb3JkZXJDb2xvciwgbV9zdGF0ZS5kZWJ1Z0JvcmRlcldpZHRoLCBsYXllclJlY3Qo
KSwgdHJhbnNmb3JtKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTM2LDExICsxMzgs
MTggQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50U2VsZihjb25zdCBUZXh0dXJlTWFw
cGVyUGFpbnRPcHRpb25zJiBvcHRpb25zKQogICAgICAgICBBU1NFUlQobV9zdGF0ZS5kcmF3c0Nv
bnRlbnQgJiYgbV9zdGF0ZS5jb250ZW50c1Zpc2libGUgJiYgIW1fc3RhdGUuc2l6ZS5pc0VtcHR5
KCkpOwogICAgICAgICBBU1NFUlQoIWxheWVyUmVjdCgpLmlzRW1wdHkoKSk7CiAgICAgICAgIG1f
YmFja2luZ1N0b3JlLT5wYWludFRvVGV4dHVyZU1hcHBlcihvcHRpb25zLnRleHR1cmVNYXBwZXIs
IGxheWVyUmVjdCgpLCB0cmFuc2Zvcm0sIG9wYWNpdHksIG1hc2suZ2V0KCkpOworICAgICAgICBp
ZiAobV9zdGF0ZS5zaG93RGVidWdCb3JkZXJzKQorICAgICAgICAgICAgbV9iYWNraW5nU3RvcmUt
PmRyYXdCb3JkZXIob3B0aW9ucy50ZXh0dXJlTWFwcGVyLCBtX3N0YXRlLmRlYnVnQm9yZGVyQ29s
b3IsIG1fc3RhdGUuZGVidWdCb3JkZXJXaWR0aCwgbGF5ZXJSZWN0KCksIHRyYW5zZm9ybSk7Cisg
ICAgICAgIC8vIE9ubHkgZHJhdyByZXBhaW50IGNvdW50IGZvciB0aGUgbWFpbiBiYWNraW5nIHN0
b3JlLgorICAgICAgICBpZiAobV9zdGF0ZS5zaG93UmVwYWludENvdW50ZXIpCisgICAgICAgICAg
ICBtX2JhY2tpbmdTdG9yZS0+ZHJhd1JlcGFpbnRDb3VudGVyKG9wdGlvbnMudGV4dHVyZU1hcHBl
ciwgbV9zdGF0ZS5yZXBhaW50Q291bnQsIG1fc3RhdGUuZGVidWdCb3JkZXJDb2xvciwgbGF5ZXJS
ZWN0KCksIHRyYW5zZm9ybSk7CiAgICAgfQogCiAgICAgaWYgKG1fY29udGVudHNMYXllcikgewog
ICAgICAgICBBU1NFUlQoIWxheWVyUmVjdCgpLmlzRW1wdHkoKSk7CiAgICAgICAgIG1fY29udGVu
dHNMYXllci0+cGFpbnRUb1RleHR1cmVNYXBwZXIob3B0aW9ucy50ZXh0dXJlTWFwcGVyLCBtX3N0
YXRlLmNvbnRlbnRzUmVjdCwgdHJhbnNmb3JtLCBvcGFjaXR5LCBtYXNrLmdldCgpKTsKKyAgICAg
ICAgaWYgKG1fc3RhdGUuc2hvd0RlYnVnQm9yZGVycykKKyAgICAgICAgICAgIG1fY29udGVudHNM
YXllci0+ZHJhd0JvcmRlcihvcHRpb25zLnRleHR1cmVNYXBwZXIsIG1fc3RhdGUuZGVidWdCb3Jk
ZXJDb2xvciwgbV9zdGF0ZS5kZWJ1Z0JvcmRlcldpZHRoLCBtX3N0YXRlLmNvbnRlbnRzUmVjdCwg
dHJhbnNmb3JtKTsKICAgICB9CiB9CiAKQEAgLTM4Myw4ICszOTIsNiBAQCB2b2lkIFRleHR1cmVN
YXBwZXJMYXllcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seShHcmFwaGlj
c0xheWVyVGV4dAogICAgIGlmIChjaGFuZ2VNYXNrID09IE5vQ2hhbmdlcyAmJiBncmFwaGljc0xh
eWVyLT5tX2FuaW1hdGlvbnMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBncmFw
aGljc0xheWVyLT51cGRhdGVEZWJ1Z0luZGljYXRvcnMoKTsKLQogICAgIGlmIChjaGFuZ2VNYXNr
ICYgQ2hpbGRyZW5DaGFuZ2UpCiAgICAgICAgIHNldENoaWxkcmVuKGdyYXBoaWNzTGF5ZXItPmNo
aWxkcmVuKCkpOwogCkBAIC00MDEsNiArNDA4LDkgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6
OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoR3JhcGhpY3NMYXllclRleHQK
ICAgICBpZiAoY2hhbmdlTWFzayAmIEFuaW1hdGlvbkNoYW5nZSkKICAgICAgICAgbV9hbmltYXRp
b25zID0gZ3JhcGhpY3NMYXllci0+bV9hbmltYXRpb25zOwogCisgICAgaWYgKGNoYW5nZU1hc2sg
JiBSZXBhaW50Q291bnRDaGFuZ2UpCisgICAgICAgIG1fc3RhdGUucmVwYWludENvdW50ID0gZ3Jh
cGhpY3NMYXllci0+cmVwYWludENvdW50KCk7CisKICAgICBtX3N0YXRlLm1hc2tMYXllciA9IHRv
VGV4dHVyZU1hcHBlckxheWVyKGdyYXBoaWNzTGF5ZXItPm1hc2tMYXllcigpKTsKICAgICBtX3N0
YXRlLnJlcGxpY2FMYXllciA9IHRvVGV4dHVyZU1hcHBlckxheWVyKGdyYXBoaWNzTGF5ZXItPnJl
cGxpY2FMYXllcigpKTsKICAgICBtX3N0YXRlLnBvcyA9IGdyYXBoaWNzTGF5ZXItPnBvc2l0aW9u
KCk7CkBAIC00MjMsNiArNDMzLDExIEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpmbHVzaENv
bXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KEdyYXBoaWNzTGF5ZXJUZXh0CiAjZW5kaWYK
ICAgICBtX2ZpeGVkVG9WaWV3cG9ydCA9IGdyYXBoaWNzTGF5ZXItPmZpeGVkVG9WaWV3cG9ydCgp
OwogCisgICAgbV9zdGF0ZS5zaG93RGVidWdCb3JkZXJzID0gZ3JhcGhpY3NMYXllci0+aXNTaG93
aW5nRGVidWdCb3JkZXIoKTsKKyAgICBtX3N0YXRlLmRlYnVnQm9yZGVyQ29sb3IgPSB0b0dyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyKGdyYXBoaWNzTGF5ZXIpLT5kZWJ1Z0JvcmRlckNvbG9yKCk7
CisgICAgbV9zdGF0ZS5kZWJ1Z0JvcmRlcldpZHRoID0gdG9HcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlcihncmFwaGljc0xheWVyKS0+ZGVidWdCb3JkZXJXaWR0aCgpOworICAgIG1fc3RhdGUuc2hv
d1JlcGFpbnRDb3VudGVyID0gZ3JhcGhpY3NMYXllci0+aXNTaG93aW5nUmVwYWludENvdW50ZXIo
KTsKKwogICAgIG1fY29udGVudHNMYXllciA9IGdyYXBoaWNzTGF5ZXItPnBsYXRmb3JtTGF5ZXIo
KTsKIAogICAgIG1fY3VycmVudFRyYW5zZm9ybS5zZXRQb3NpdGlvbihhZGp1c3RlZFBvc2l0aW9u
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCmluZGV4IGY0MWU1MmE5N2M0YjMyOGM0NGNmNjUw
YWVlMzRjZDMwMGE0NjUzOWEuLjU3NWJiMjdlYjdhODc0YzE4NGI1ODFlZDJiZDQzNWQxMDE1YTgz
YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKQEAgLTcxLDcgKzcxLDEwIEBAIHB1YmxpYzoK
IAogICAgICAgICBSZXBsaWNhTGF5ZXJDaGFuZ2UgPSAgICAgICAgKDFMIDw8IDIxKSwKICAgICAg
ICAgQW5pbWF0aW9uQ2hhbmdlID0gICAgICAgICAgICgxTCA8PCAyMiksCi0gICAgICAgIEZpbHRl
ckNoYW5nZSA9ICAgICAgICAgICAgICAoMUwgPDwgMjMpCisgICAgICAgIEZpbHRlckNoYW5nZSA9
ICAgICAgICAgICAgICAoMUwgPDwgMjMpLAorCisgICAgICAgIERlYnVnVmlzdWFsc0NoYW5nZSA9
ICAgICAgICAoMUwgPDwgMjQpLAorICAgICAgICBSZXBhaW50Q291bnRDaGFuZ2UgPSAgICAgICAg
KDFMIDw8IDI1KQogICAgIH07CiAKICAgICBUZXh0dXJlTWFwcGVyTGF5ZXIoKQpAQCAtMTcyLDYg
KzE3NSw5IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogICAgICAgICBGaWx0
ZXJPcGVyYXRpb25zIGZpbHRlcnM7CiAjZW5kaWYKKyAgICAgICAgQ29sb3IgZGVidWdCb3JkZXJD
b2xvcjsKKyAgICAgICAgZmxvYXQgZGVidWdCb3JkZXJXaWR0aDsKKyAgICAgICAgaW50IHJlcGFp
bnRDb3VudDsKIAogICAgICAgICBib29sIHByZXNlcnZlczNEIDogMTsKICAgICAgICAgYm9vbCBt
YXNrc1RvQm91bmRzIDogMTsKQEAgLTE4MCwxMSArMTg2LDE1IEBAIHByaXZhdGU6CiAgICAgICAg
IGJvb2wgY29udGVudHNPcGFxdWUgOiAxOwogICAgICAgICBib29sIGJhY2tmYWNlVmlzaWJpbGl0
eSA6IDE7CiAgICAgICAgIGJvb2wgdmlzaWJsZSA6IDE7CisgICAgICAgIGJvb2wgc2hvd0RlYnVn
Qm9yZGVycyA6IDE7CisgICAgICAgIGJvb2wgc2hvd1JlcGFpbnRDb3VudGVyIDogMTsKIAogICAg
ICAgICBTdGF0ZSgpCiAgICAgICAgICAgICA6IG9wYWNpdHkoMSkKICAgICAgICAgICAgICwgbWFz
a0xheWVyKDApCiAgICAgICAgICAgICAsIHJlcGxpY2FMYXllcigwKQorICAgICAgICAgICAgLCBk
ZWJ1Z0JvcmRlcldpZHRoKDApCisgICAgICAgICAgICAsIHJlcGFpbnRDb3VudCgwKQogICAgICAg
ICAgICAgLCBwcmVzZXJ2ZXMzRChmYWxzZSkKICAgICAgICAgICAgICwgbWFza3NUb0JvdW5kcyhm
YWxzZSkKICAgICAgICAgICAgICwgZHJhd3NDb250ZW50KGZhbHNlKQpAQCAtMTkyLDYgKzIwMiw4
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAsIGNvbnRlbnRzT3BhcXVlKGZhbHNlKQogICAgICAg
ICAgICAgLCBiYWNrZmFjZVZpc2liaWxpdHkoZmFsc2UpCiAgICAgICAgICAgICAsIHZpc2libGUo
dHJ1ZSkKKyAgICAgICAgICAgICwgc2hvd0RlYnVnQm9yZGVycyhmYWxzZSkKKyAgICAgICAgICAg
ICwgc2hvd1JlcGFpbnRDb3VudGVyKGZhbHNlKQogICAgICAgICB7CiAgICAgICAgIH0KICAgICB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaAppbmRleCAzOGFmMDNlODli
NjI0ODFhYmFmMzIwOThjM2E4MTdhYjRkMDAwYzFlLi5mNDg3OTUyNjc2ODAxOTA4NWNiZGVmODll
NjZlZTQ3ZGVmODEwMTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIu
aApAQCAtMjQsMTggKzI0LDIwIEBACiAjaW5jbHVkZSAiR3JhcGhpY3NTdXJmYWNlLmgiCiAjZW5k
aWYKIAorI2luY2x1ZGUgIlRleHR1cmVNYXBwZXIuaCIKICNpbmNsdWRlICJUcmFuc2Zvcm1hdGlv
bk1hdHJpeC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFRleHR1cmVNYXBwZXI7
Ci1jbGFzcyBCaXRtYXBUZXh0dXJlOwotCiBjbGFzcyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
ciB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIoKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlcios
IGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdN
YXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBmbG9hdCBvcGFjaXR5ID0gMS4wLCBCaXRt
YXBUZXh0dXJlKiBtYXNrID0gMCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzd2FwQnVmZmVycygp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBkcmF3Qm9yZGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVN
YXBwZXIsIGNvbnN0IENvbG9yJiBjb2xvciwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0
UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSkK
KyAgICB7CisgICAgICAgIHRleHR1cmVNYXBwZXItPmRyYXdCb3JkZXIoY29sb3IsIGJvcmRlcldp
ZHRoLCB0YXJnZXRSZWN0LCB0cmFuc2Zvcm0pOworICAgIH0KICNpZiBVU0UoR1JBUEhJQ1NfU1VS
RkFDRSkKICAgICB2aXJ0dWFsIEludFNpemUgcGxhdGZvcm1MYXllclNpemUoKSBjb25zdCB7IHJl
dHVybiBJbnRTaXplKCk7IH0KICAgICB2aXJ0dWFsIHVpbnQzMl90IGNvcHlUb0dyYXBoaWNzU3Vy
ZmFjZSgpIHsgcmV0dXJuIDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCmluZGV4IDU5
NDUxYTk1ZTRmYWZjYTY1NTMxNzIyNGQ5NTM5ZjYxZTU0MjAzMTEuLmEzN2ZmM2FkMWUxMDc1NjVk
MmYxZDE4MmQwYjY2NDRkODg0OWI4ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcApA
QCAtODM5LDYgKzgzOSw5IEBAIHN0YXRpYyBFd2tfVmlld19Qcml2YXRlX0RhdGEqIF9ld2tfdmll
d19wcml2X25ldyhFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCiAgICAgcHJpdi0+cGFn
ZVNldHRpbmdzLT5zZXRJbnRlcmFjdGl2ZUZvcm1WYWxpZGF0aW9uRW5hYmxlZCh0cnVlKTsKICNp
ZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgcHJpdi0+cGFnZVNldHRpbmdzLT5z
ZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZChmYWxzZSk7CisgICAgYm9vbCBzaG93RGVi
dWdWaXN1YWxzID0gU3RyaW5nKGdldGVudigiV0VCS0lUX1NIT1dfQ09NUE9TSVRJTkdfREVCVUdf
VklTVUFMUyIpKSA9PSAiMSI7CisgICAgcHJpdi0+cGFnZVNldHRpbmdzLT5zZXRTaG93RGVidWdC
b3JkZXJzKHNob3dEZWJ1Z1Zpc3VhbHMpOworICAgIHByaXYtPnBhZ2VTZXR0aW5ncy0+c2V0U2hv
d1JlcGFpbnRDb3VudGVyKHNob3dEZWJ1Z1Zpc3VhbHMpOwogI2VuZGlmCiAKICAgICB1cmwgPSBw
cml2LT5wYWdlU2V0dGluZ3MtPnVzZXJTdHlsZVNoZWV0TG9jYXRpb24oKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCBiL1NvdXJjZS9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAppbmRleCAyOTMxMGQ0ZTlmZTQ4MTQ1NzAz
ZDk5NGY0ZDFlOWQwNzZhNDIwOGVlLi4yOGRkZjMxZDQwMTYxMzQwNjJjMWEzOGM3NDgyODU3NWFm
YjM4Njk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmll
dy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCkBA
IC0zNDM1LDYgKzM0MzUsOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfdXBkYXRlX3Nl
dHRpbmdzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCiAgICAgY29yZVNldHRpbmdzLT5zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5h
YmxlZChzZXR0aW5nc1ByaXZhdGUtPmVuYWJsZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmcpOworICAg
IGJvb2wgc2hvd0RlYnVnVmlzdWFscyA9IFN0cmluZyhnZXRlbnYoIldFQktJVF9TSE9XX0NPTVBP
U0lUSU5HX0RFQlVHX1ZJU1VBTFMiKSkgPT0gIjEiOworICAgIGNvcmVTZXR0aW5ncy0+c2V0U2hv
d0RlYnVnQm9yZGVycyhzaG93RGVidWdWaXN1YWxzKTsKKyAgICBjb3JlU2V0dGluZ3MtPnNldFNo
b3dSZXBhaW50Q291bnRlcihzaG93RGVidWdWaXN1YWxzKTsKICNlbmRpZgogCiAjaWYgRU5BQkxF
KFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5n
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwCmluZGV4IGY4ZTQ5
OTgzNThhZmJlY2I3OGE1YjAzMDYwYWRjYjY1NGRkMGUxNGUuLmYwNzUyNWM0MTA2MjhlMmNiMDlh
YWM4NGE4NDAyNWQxZDdmZGE4OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3
ZWJzZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNw
cApAQCAtMTUwLDYgKzE1MCwxMCBAQCB2b2lkIFFXZWJTZXR0aW5nc1ByaXZhdGU6OmFwcGx5KCkK
ICAgICAgICAgc2V0dGluZ3MtPnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JBbmltYXRpb25F
bmFibGVkKHZhbHVlKTsKICAgICAgICAgc2V0dGluZ3MtPnNldEFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdGb3JWaWRlb0VuYWJsZWQoZmFsc2UpOwogICAgICAgICBzZXR0aW5ncy0+c2V0QWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0ZvclBsdWdpbnNFbmFibGVkKGZhbHNlKTsKKworICAgICAgICBib29sIHNo
b3dEZWJ1Z1Zpc3VhbHMgPSBxZ2V0ZW52KCJRVF9XRUJLSVRfU0hPV19DT01QT1NJVElOR19ERUJV
R19WSVNVQUxTIikgPT0gIjEiOworICAgICAgICBzZXR0aW5ncy0+c2V0U2hvd0RlYnVnQm9yZGVy
cyhzaG93RGVidWdWaXN1YWxzKTsKKyAgICAgICAgc2V0dGluZ3MtPnNldFNob3dSZXBhaW50Q291
bnRlcihzaG93RGVidWdWaXN1YWxzKTsKICNlbmRpZgogI2lmIEVOQUJMRShXRUJHTCkKICAgICAg
ICAgdmFsdWUgPSBhdHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0aW5nczo6V2ViR0xFbmFibGVkLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRMYXllckluZm8uaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJJbmZvLmgKaW5kZXggNjUyMDU2ZGQ4MTA0MjM2NDBmY2Y2
OTY5MDVhN2RlNzM3ZDZkNGI5ZS4uY2YxZjAzZWRiYmJiMmU1MTJmNjllYmFiOWMzZjIzMGVjNGEx
ZjMyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRMYXllckluZm8uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVySW5mby5oCkBAIC00Myw2ICs0Myw3IEBA
IHN0cnVjdCBDb29yZGluYXRlZExheWVySW5mbyB7CiAgICAgICAgICwgbWFzayhJbnZhbGlkQ29v
cmRpbmF0ZWRMYXllcklEKQogICAgICAgICAsIGltYWdlSUQoSW52YWxpZENvb3JkaW5hdGVkSW1h
Z2VCYWNraW5nSUQpCiAgICAgICAgICwgb3BhY2l0eSgwKQorICAgICAgICAsIGRlYnVnQm9yZGVy
V2lkdGgoMCkKICAgICAgICAgLCBmbGFncygwKSB7IH0KIAogICAgIENvb3JkaW5hdGVkTGF5ZXJJ
RCByZXBsaWNhOwpAQCAtNTcsNiArNTgsOCBAQCBzdHJ1Y3QgQ29vcmRpbmF0ZWRMYXllckluZm8g
ewogICAgIFdlYkNvcmU6OkludFJlY3QgY29udGVudHNSZWN0OwogICAgIGZsb2F0IG9wYWNpdHk7
CiAgICAgV2ViQ29yZTo6Q29sb3Igc29saWRDb2xvcjsKKyAgICBXZWJDb3JlOjpDb2xvciBkZWJ1
Z0JvcmRlckNvbG9yOworICAgIGZsb2F0IGRlYnVnQm9yZGVyV2lkdGg7CiAKICAgICB1bmlvbiB7
CiAgICAgICAgIHN0cnVjdCB7CkBAIC02OCw2ICs3MSw4IEBAIHN0cnVjdCBDb29yZGluYXRlZExh
eWVySW5mbyB7CiAgICAgICAgICAgICBib29sIHByZXNlcnZlczNEIDogMTsKICAgICAgICAgICAg
IGJvb2wgaXNSb290TGF5ZXI6IDE7CiAgICAgICAgICAgICBib29sIGZpeGVkVG9WaWV3cG9ydCA6
IDE7CisgICAgICAgICAgICBib29sIHNob3dEZWJ1Z0JvcmRlcnMgOiAxOworICAgICAgICAgICAg
Ym9vbCBzaG93UmVwYWludENvdW50ZXIgOiAxOwogICAgICAgICB9OwogICAgICAgICB1bnNpZ25l
ZCBmbGFnczsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvRXdrVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
RXdrVmlld0ltcGwuY3BwCmluZGV4IDI0YzM5MWY1ZjJmMzM0MzYyMjIzMzU1MzdkNDJhYWVlNzQ3
NTU0MzAuLjg3NTVjYWIwYTZjY2E5OGEzNDk0N2MwM2YxM2NjOGNkNmYxNTA2MzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAKQEAgLTE1
MSw2ICsxNTEsOSBAQCBFd2tWaWV3SW1wbDo6RXdrVmlld0ltcGwoRXZhc19PYmplY3QqIHZpZXcs
IFBhc3NSZWZQdHI8RXdrQ29udGV4dD4gY29udGV4dCwgUGFzcwogI2lmIFVTRShDT09SRElOQVRF
RF9HUkFQSElDUykKICAgICBtX3BhZ2VQcm94eS0+cGFnZUdyb3VwKCktPnByZWZlcmVuY2VzKCkt
PnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKHRydWUpOwogICAgIG1fcGFnZVByb3h5
LT5wYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKS0+c2V0Rm9yY2VDb21wb3NpdGluZ01vZGUodHJ1
ZSk7CisgICAgYm9vbCBzaG93RGVidWdWaXN1YWxzID0gU3RyaW5nKGdldGVudigiV0VCS0lUX1NI
T1dfQ09NUE9TSVRJTkdfREVCVUdfVklTVUFMUyIpKSA9PSAiMSI7CisgICAgbV9wYWdlUHJveHkt
PnBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygpLT5zZXRDb21wb3NpdGluZ0JvcmRlcnNWaXNpYmxl
KHNob3dEZWJ1Z1Zpc3VhbHMpOworICAgIG1fcGFnZVByb3h5LT5wYWdlR3JvdXAoKS0+cHJlZmVy
ZW5jZXMoKS0+c2V0Q29tcG9zaXRpbmdSZXBhaW50Q291bnRlcnNWaXNpYmxlKHNob3dEZWJ1Z1Zp
c3VhbHMpOwogI2lmIEVOQUJMRShXRUJHTCkKICAgICBtX3BhZ2VQcm94eS0+cGFnZUdyb3VwKCkt
PnByZWZlcmVuY2VzKCktPnNldFdlYkdMRW5hYmxlZCh0cnVlKTsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuY3BwCmluZGV4
IGJmMWVkZTA1NzBiYTZjMjlmNWQ5Y2RiZTFiZmNhMDVhNzhkMDdiZjAuLjc5OGM4YmZiNzUzYTE0
ZDdhNWVkNjhiNzliYzUzOGFjNDdhYTlkMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHAKQEAgLTI1Nyw3ICsyNTcsMTIgQEAg
c3RhdGljIHZvaWQgd2ViS2l0U2V0dGluZ3NTZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1
aW50IHByb3BJZCwgY29uc3QgR1ZhbHUKICAgICAgICAgd2Via2l0X3NldHRpbmdzX3NldF9tZWRp
YV9wbGF5YmFja19hbGxvd3NfaW5saW5lKHNldHRpbmdzLCBnX3ZhbHVlX2dldF9ib29sZWFuKHZh
bHVlKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9EUkFXX0NPTVBPU0lUSU5HX0lO
RElDQVRPUlM6Ci0gICAgICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZHJhd19jb21wb3NpdGluZ19p
bmRpY2F0b3JzKHNldHRpbmdzLCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAg
IGlmIChnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSkKKyAgICAgICAgICAgIHdlYmtpdF9zZXR0
aW5nc19zZXRfZHJhd19jb21wb3NpdGluZ19pbmRpY2F0b3JzKHNldHRpbmdzLCBnX3ZhbHVlX2dl
dF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYm9vbCBzaG93
RGVidWdWaXN1YWxzID0gU3RyaW5nKGdldGVudigiV0VCS0lUX1NIT1dfQ09NUE9TSVRJTkdfREVC
VUdfVklTVUFMUyIpKSA9PSAiMSI7CisgICAgICAgICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2Ry
YXdfY29tcG9zaXRpbmdfaW5kaWNhdG9ycyhzZXR0aW5ncywgc2hvd0RlYnVnVmlzdWFscyk7Cisg
ICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX0VOQUJMRV9TSVRFX1NQRUNJ
RklDX1FVSVJLUzoKICAgICAgICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfc2l0ZV9zcGVj
aWZpY19xdWlya3Moc2V0dGluZ3MsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCmluZGV4
IDIwNTMwNzliMGI0MmVjZWI4MTgyYmQwYThlNjY3MjhjNTk5MTllMzIuLmFjOTAzNDJlMDI2Mjgy
NjhmNDU5ZjQ0ZWNlMGViNTJhNGU3YTA2ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcApAQCAtMzIzLDYgKzMyMyw5IEBAIHZvaWQg
UVF1aWNrV2ViVmlld1ByaXZhdGU6OmluaXRpYWxpemUoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYs
IFdLUGFnZUdyb3VwUmVmIHBhCiAgICAgLy8gQW55IHBhZ2Ugc2V0dGluZyBzaG91bGQgcHJlZmVy
cmFibGUgYmUgc2V0IGJlZm9yZSBjcmVhdGluZyB0aGUgcGFnZS4KICAgICB3ZWJQYWdlUHJveHkt
PnBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygpLT5zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5h
YmxlZCh0cnVlKTsKICAgICB3ZWJQYWdlUHJveHktPnBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygp
LT5zZXRGb3JjZUNvbXBvc2l0aW5nTW9kZSh0cnVlKTsKKyAgICBib29sIHNob3dEZWJ1Z1Zpc3Vh
bHMgPSBxZ2V0ZW52KCJRVF9XRUJLSVRfU0hPV19DT01QT1NJVElOR19ERUJVR19WSVNVQUxTIikg
PT0gIjEiOworICAgIHdlYlBhZ2VQcm94eS0+cGFnZUdyb3VwKCktPnByZWZlcmVuY2VzKCktPnNl
dENvbXBvc2l0aW5nQm9yZGVyc1Zpc2libGUoc2hvd0RlYnVnVmlzdWFscyk7CisgICAgd2ViUGFn
ZVByb3h5LT5wYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKS0+c2V0Q29tcG9zaXRpbmdSZXBhaW50
Q291bnRlcnNWaXNpYmxlKHNob3dEZWJ1Z1Zpc3VhbHMpOwogICAgIHdlYlBhZ2VQcm94eS0+cGFn
ZUdyb3VwKCktPnByZWZlcmVuY2VzKCktPnNldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQodHJ1ZSk7
CiAgICAgd2ViUGFnZVByb3h5LT5wYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKS0+c2V0V2ViR0xF
bmFibGVkKHRydWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9y
ZS5jcHAKaW5kZXggNGE3YmIxMDg2ZWU3YTg2N2IyZDNmZDY4MGM1YTM3ZGIwNWI4YjdkOC4uMDYx
NzlmZTQ4OThlYjc5ZDY3OWMzN2U2ZjQxMjA0ZmJmZDEwY2VlMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5n
U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcApAQCAtODgsNyArODgsNiBAQCB2b2lkIENv
b3JkaW5hdGVkQmFja2luZ1N0b3JlOjp1cGRhdGVUaWxlKHVpbnQzMl90IGlkLCBjb25zdCBJbnRS
ZWN0JiBzb3VyY2VSZWN0LAogewogICAgIEhhc2hNYXA8dWludDMyX3QsIENvb3JkaW5hdGVkQmFj
a2luZ1N0b3JlVGlsZT46Oml0ZXJhdG9yIGl0ID0gbV90aWxlcy5maW5kKGlkKTsKICAgICBBU1NF
UlQoaXQgIT0gbV90aWxlcy5lbmQoKSk7Ci0gICAgaXQtPnZhbHVlLmluY3JlbWVudFJlcGFpbnRD
b3VudCgpOwogICAgIGl0LT52YWx1ZS5zZXRCYWNrQnVmZmVyKHRpbGVSZWN0LCBzb3VyY2VSZWN0
LCBiYWNrQnVmZmVyLCBvZmZzZXQpOwogfQogCkBAIC0xMDksMjggKzEwOCwxNSBAQCB2b2lkIENv
b3JkaW5hdGVkQmFja2luZ1N0b3JlOjpzZXRTaXplKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYg
c2l6ZSkKICAgICBtX3NpemUgPSBzaXplOwogfQogCi1zdGF0aWMgYm9vbCBzaG91bGRTaG93VGls
ZURlYnVnVmlzdWFscygpCit2b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpwYWludFRpbGVz
VG9UZXh0dXJlTWFwcGVyKFZlY3RvcjxUZXh0dXJlTWFwcGVyVGlsZSo+JiB0aWxlcywgVGV4dHVy
ZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5z
Zm9ybSwgZmxvYXQgb3BhY2l0eSwgQml0bWFwVGV4dHVyZSogbWFzaywgY29uc3QgRmxvYXRSZWN0
JiByZWN0KQogewotI2lmIFBMQVRGT1JNKFFUKQotICAgIHJldHVybiAocWdldGVudigiUVRfV0VC
S0lUX1NIT1dfQ09NUE9TSVRJTkdfREVCVUdfVklTVUFMUyIpID09ICIxIik7Ci0jZWxpZiBVU0Uo
Q0FJUk8pCi0gICAgcmV0dXJuIChTdHJpbmcoZ2V0ZW52KCJXRUJLSVRfU0hPV19DT01QT1NJVElO
R19ERUJVR19WSVNVQUxTIikpID09ICIxIik7Ci0jZW5kaWYKLSAgICByZXR1cm4gZmFsc2U7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0aWxlcy5zaXplKCk7ICsraSkKKyAgICAgICAgdGls
ZXNbaV0tPnBhaW50KHRleHR1cmVNYXBwZXIsIHRyYW5zZm9ybSwgb3BhY2l0eSwgbWFzaywgY2Fs
Y3VsYXRlRXhwb3NlZFRpbGVFZGdlcyhyZWN0LCB0aWxlc1tpXS0+cmVjdCgpKSk7CiB9CiAKLXZv
aWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnBhaW50VGlsZXNUb1RleHR1cmVNYXBwZXIoVmVj
dG9yPFRleHR1cmVNYXBwZXJUaWxlKj4mIHRpbGVzLCBUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFw
cGVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5
LCBCaXRtYXBUZXh0dXJlKiBtYXNrLCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCitUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6YWRqdXN0ZWRUcmFuc2Zvcm1Gb3JS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCkKIHsKLSAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHRpbGVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIFRleHR1cmVNYXBwZXJUaWxlKiB0
aWxlID0gdGlsZXNbaV07Ci0gICAgICAgIHRpbGUtPnBhaW50KHRleHR1cmVNYXBwZXIsIHRyYW5z
Zm9ybSwgb3BhY2l0eSwgbWFzaywgY2FsY3VsYXRlRXhwb3NlZFRpbGVFZGdlcyhyZWN0LCB0aWxl
LT5yZWN0KCkpKTsKLSAgICAgICAgc3RhdGljIGJvb2wgc2hvdWxkRGVidWcgPSBzaG91bGRTaG93
VGlsZURlYnVnVmlzdWFscygpOwotICAgICAgICBpZiAoIXNob3VsZERlYnVnKQotICAgICAgICAg
ICAgY29udGludWU7Ci0KLSAgICAgICAgdGV4dHVyZU1hcHBlci0+ZHJhd0JvcmRlcihDb2xvcigw
eEZGLCAwLCAwKSwgMiwgdGlsZS0+cmVjdCgpLCB0cmFuc2Zvcm0pOwotICAgICAgICB0ZXh0dXJl
TWFwcGVyLT5kcmF3UmVwYWludENvdW50ZXIoc3RhdGljX2Nhc3Q8Q29vcmRpbmF0ZWRCYWNraW5n
U3RvcmVUaWxlKj4odGlsZSktPnJlcGFpbnRDb3VudCgpLCA4LCB0aWxlLT5yZWN0KCkubG9jYXRp
b24oKSwgdHJhbnNmb3JtKTsKLSAgICB9CisgICAgcmV0dXJuIFRyYW5zZm9ybWF0aW9uTWF0cml4
OjpyZWN0VG9SZWN0KHJlY3QoKSwgdGFyZ2V0UmVjdCk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRC
YWNraW5nU3RvcmU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVN
YXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgQml0bWFwVGV4dHVyZSogbWFzaykKQEAg
LTE2NCwxNCArMTUwLDI4IEBAIHZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnBhaW50VG9U
ZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsCiAgICAgICAgIHByZXZp
b3VzVGlsZXNUb1BhaW50LmFwcGVuZCgmdGlsZSk7CiAgICAgfQogCi0gICAgRmxvYXRSZWN0IHJl
Y3RPbkNvbnRlbnRzKEZsb2F0UG9pbnQ6Onplcm8oKSwgbV9zaXplKTsKLSAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBhZGp1c3RlZFRyYW5zZm9ybSA9IHRyYW5zZm9ybTsKICAgICAvLyB0YXJnZXRS
ZWN0IGlzIG9uIHRoZSBjb250ZW50cyBjb29yZGluYXRlIHN5c3RlbSwgc28gd2UgbXVzdCBjb21w
YXJlIHR3byByZWN0cyBvbiB0aGUgY29udGVudHMgY29vcmRpbmF0ZSBzeXN0ZW0uCiAgICAgLy8g
U2VlIFRpbGVkQmFja2luZ1N0b3JlLgotICAgIGFkanVzdGVkVHJhbnNmb3JtLm11bHRpcGx5KFRy
YW5zZm9ybWF0aW9uTWF0cml4OjpyZWN0VG9SZWN0KHJlY3RPbkNvbnRlbnRzLCB0YXJnZXRSZWN0
KSk7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggYWRqdXN0ZWRUcmFuc2Zvcm0gPSB0cmFuc2Zv
cm0gKiBhZGp1c3RlZFRyYW5zZm9ybUZvclJlY3QodGFyZ2V0UmVjdCk7CisKKyAgICBwYWludFRp
bGVzVG9UZXh0dXJlTWFwcGVyKHByZXZpb3VzVGlsZXNUb1BhaW50LCB0ZXh0dXJlTWFwcGVyLCBh
ZGp1c3RlZFRyYW5zZm9ybSwgb3BhY2l0eSwgbWFzaywgcmVjdCgpKTsKKyAgICBwYWludFRpbGVz
VG9UZXh0dXJlTWFwcGVyKHRpbGVzVG9QYWludCwgdGV4dHVyZU1hcHBlciwgYWRqdXN0ZWRUcmFu
c2Zvcm0sIG9wYWNpdHksIG1hc2ssIHJlY3QoKSk7Cit9CiAKLSAgICBwYWludFRpbGVzVG9UZXh0
dXJlTWFwcGVyKHByZXZpb3VzVGlsZXNUb1BhaW50LCB0ZXh0dXJlTWFwcGVyLCBhZGp1c3RlZFRy
YW5zZm9ybSwgb3BhY2l0eSwgbWFzaywgcmVjdE9uQ29udGVudHMpOwotICAgIHBhaW50VGlsZXNU
b1RleHR1cmVNYXBwZXIodGlsZXNUb1BhaW50LCB0ZXh0dXJlTWFwcGVyLCBhZGp1c3RlZFRyYW5z
Zm9ybSwgb3BhY2l0eSwgbWFzaywgcmVjdE9uQ29udGVudHMpOwordm9pZCBDb29yZGluYXRlZEJh
Y2tpbmdTdG9yZTo6ZHJhd0JvcmRlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25z
dCBDb2xvciYgYm9yZGVyQ29sb3IsIGZsb2F0IGJvcmRlcldpZHRoLCBjb25zdCBGbG9hdFJlY3Qm
IHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0pCit7Cisg
ICAgVHJhbnNmb3JtYXRpb25NYXRyaXggYWRqdXN0ZWRUcmFuc2Zvcm0gPSB0cmFuc2Zvcm0gKiBh
ZGp1c3RlZFRyYW5zZm9ybUZvclJlY3QodGFyZ2V0UmVjdCk7CisgICAgSGFzaE1hcDx1aW50MzJf
dCwgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlPjo6aXRlcmF0b3IgZW5kID0gbV90aWxlcy5l
bmQoKTsKKyAgICBmb3IgKEhhc2hNYXA8dWludDMyX3QsIENvb3JkaW5hdGVkQmFja2luZ1N0b3Jl
VGlsZT46Oml0ZXJhdG9yIGl0ID0gbV90aWxlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisg
ICAgICAgIHRleHR1cmVNYXBwZXItPmRyYXdCb3JkZXIoYm9yZGVyQ29sb3IsIGJvcmRlcldpZHRo
LCBpdC0+dmFsdWUucmVjdCgpLCBhZGp1c3RlZFRyYW5zZm9ybSk7Cit9CisKK3ZvaWQgQ29vcmRp
bmF0ZWRCYWNraW5nU3RvcmU6OmRyYXdSZXBhaW50Q291bnRlcihUZXh0dXJlTWFwcGVyKiB0ZXh0
dXJlTWFwcGVyLCBpbnQgcmVwYWludENvdW50LCBjb25zdCBDb2xvciYgYm9yZGVyQ29sb3IsIGNv
bnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRy
YW5zZm9ybSkKK3sKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhZGp1c3RlZFRyYW5zZm9ybSA9
IHRyYW5zZm9ybSAqIGFkanVzdGVkVHJhbnNmb3JtRm9yUmVjdCh0YXJnZXRSZWN0KTsKKyAgICBI
YXNoTWFwPHVpbnQzMl90LCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGU+OjppdGVyYXRvciBl
bmQgPSBtX3RpbGVzLmVuZCgpOworICAgIGZvciAoSGFzaE1hcDx1aW50MzJfdCwgQ29vcmRpbmF0
ZWRCYWNraW5nU3RvcmVUaWxlPjo6aXRlcmF0b3IgaXQgPSBtX3RpbGVzLmJlZ2luKCk7IGl0ICE9
IGVuZDsgKytpdCkKKyAgICAgICAgdGV4dHVyZU1hcHBlci0+ZHJhd1JlcGFpbnRDb3VudGVyKHJl
cGFpbnRDb3VudCwgYm9yZGVyQ29sb3IsIGl0LT52YWx1ZS5yZWN0KCkubG9jYXRpb24oKSwgYWRq
dXN0ZWRUcmFuc2Zvcm0pOwogfQogCiB2b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpjb21t
aXRUaWxlT3BlcmF0aW9ucyhUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmgKaW5kZXggYWU1YWY4ZDRmYTJmYzllYmQy
MTE5NzI3ZmNhZGQ4NTk2MjMzMGY5OS4uZDI2NmY2MmUxOGQ5MWNhNjZkMzdmNGM2OGY3MDI2ZDQy
ZDkwYjNiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5oCkBA
IC0zNiwxMyArMzYsMTAgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IENvb3JkaW5hdGVkQmFja2lu
Z1N0b3JlVGlsZShmbG9hdCBzY2FsZSA9IDEpCiAgICAgICAgIDogVGV4dHVyZU1hcHBlclRpbGUo
V2ViQ29yZTo6RmxvYXRSZWN0KCkpCiAgICAgICAgICwgbV9zY2FsZShzY2FsZSkKLSAgICAgICAg
LCBtX3JlcGFpbnRDb3VudCgwKQogICAgIHsKICAgICB9CiAKICAgICBpbmxpbmUgZmxvYXQgc2Nh
bGUoKSBjb25zdCB7IHJldHVybiBtX3NjYWxlOyB9Ci0gICAgaW5saW5lIHZvaWQgaW5jcmVtZW50
UmVwYWludENvdW50KCkgeyArK21fcmVwYWludENvdW50OyB9Ci0gICAgaW5saW5lIGludCByZXBh
aW50Q291bnQoKSBjb25zdCB7IHJldHVybiBtX3JlcGFpbnRDb3VudDsgfQogICAgIHZvaWQgc3dh
cEJ1ZmZlcnMoV2ViQ29yZTo6VGV4dHVyZU1hcHBlciopOwogICAgIHZvaWQgc2V0QmFja0J1ZmZl
cihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFBhc3NS
ZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBidWZmZXIsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50
Jik7CiAKQEAgLTUyLDcgKzQ5LDYgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpJbnRSZWN0IG1f
dGlsZVJlY3Q7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgbV9zdXJmYWNlT2Zmc2V0OwogICAgIGZs
b2F0IG1fc2NhbGU7Ci0gICAgaW50IG1fcmVwYWludENvdW50OwogfTsKIAogY2xhc3MgQ29vcmRp
bmF0ZWRCYWNraW5nU3RvcmUgOiBwdWJsaWMgV2ViQ29yZTo6VGV4dHVyZU1hcHBlckJhY2tpbmdT
dG9yZSB7CkBAIC02NiwxMiArNjIsMTYgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8V2ViQ29y
ZTo6Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0U2l6ZShjb25z
dCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVN
YXBwZXIoV2ViQ29yZTo6VGV4dHVyZU1hcHBlciosIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYs
IGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQsIFdlYkNvcmU6OkJp
dG1hcFRleHR1cmUqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0JvcmRlcihXZWJDb3JlOjpUZXh0
dXJlTWFwcGVyKiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBmbG9hdCBib3JkZXJXaWR0aCwgY29u
c3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRy
aXgmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVyKFdlYkNv
cmU6OlRleHR1cmVNYXBwZXIqLCBpbnQgcmVwYWludENvdW50LCBjb25zdCBXZWJDb3JlOjpDb2xv
ciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0
aW9uTWF0cml4JikgT1ZFUlJJREU7CiAKIHByaXZhdGU6CiAgICAgQ29vcmRpbmF0ZWRCYWNraW5n
U3RvcmUoKQogICAgICAgICA6IG1fc2NhbGUoMS4pCiAgICAgeyB9CiAgICAgdm9pZCBwYWludFRp
bGVzVG9UZXh0dXJlTWFwcGVyKFZlY3RvcjxXZWJDb3JlOjpUZXh0dXJlTWFwcGVyVGlsZSo+Jiwg
V2ViQ29yZTo6VGV4dHVyZU1hcHBlciosIGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0
cml4JiwgZmxvYXQsIFdlYkNvcmU6OkJpdG1hcFRleHR1cmUqLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmKTsKKyAgICBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhZGp1c3RlZFRyYW5z
Zm9ybUZvclJlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jik7CisgICAgV2ViQ29yZTo6Rmxv
YXRSZWN0IHJlY3QoKSBjb25zdCB7IHJldHVybiBXZWJDb3JlOjpGbG9hdFJlY3QoV2ViQ29yZTo6
RmxvYXRQb2ludDo6emVybygpLCBtX3NpemUpOyB9CiAKICAgICBIYXNoTWFwPHVpbnQzMl90LCBD
b29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGU+IG1fdGlsZXM7CiAgICAgSGFzaFNldDx1aW50MzJf
dD4gbV90aWxlc1RvUmVtb3ZlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0UHJveHkuY3BwCmluZGV4IGJhYThmNjUyM2RlYmZkZWJiYzRlNTIyYjQ3NWUx
NGNjMThmZDJlYjUuLjRiMzU3ZDQzZDYzODUzODRhNzY5MDE5ZWM5MTg5MjRmNmY0ZTgzMWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5j
cHAKQEAgLTI0Miw2ICsyNDIsMTEgQEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94
eTo6ZGVzdHJveUNhbnZhcyhDb29yZGluYXRlZExheWVySUQgaWQpCiB9CiAjZW5kaWYKIAordm9p
ZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6c2V0TGF5ZXJSZXBhaW50Q291bnQoQ29v
cmRpbmF0ZWRMYXllcklEIGlkLCBpbnQgdmFsdWUpCit7CisgICAgZGlzcGF0Y2hVcGRhdGUoYmlu
ZCgmTGF5ZXJUcmVlUmVuZGVyZXI6OnNldExheWVyUmVwYWludENvdW50LCBtX3JlbmRlcmVyLmdl
dCgpLCBpZCwgdmFsdWUpKTsKK30KKwogdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94
eTo6cHVyZ2VCYWNraW5nU3RvcmVzKCkKIHsKICAgICBtX3N1cmZhY2VzLmNsZWFyKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaAppbmRleCA3
NTkxYjg0ODVkMzk4ODZlZDdlZDJjZDA1ZDExNjEzZmU2N2ZhY2QzLi44NmNmOWE1ZDA5MzQ4MmUw
Mjg1YWM5MWNkYjhmMzYzMmUwZGVhMDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmgKQEAgLTg0LDYgKzg0LDcgQEAgcHVibGljOgogICAg
IHZvaWQgc3luY0NhbnZhcyhDb29yZGluYXRlZExheWVySUQsIHVpbnQzMl90IGZyb250QnVmZmVy
KTsKICAgICB2b2lkIGRlc3Ryb3lDYW52YXMoQ29vcmRpbmF0ZWRMYXllcklEKTsKICNlbmRpZgor
ICAgIHZvaWQgc2V0TGF5ZXJSZXBhaW50Q291bnQoQ29vcmRpbmF0ZWRMYXllcklELCBpbnQgdmFs
dWUpOwogICAgIHZvaWQgcHVyZ2VCYWNraW5nU3RvcmVzKCk7CiAgICAgTGF5ZXJUcmVlUmVuZGVy
ZXIqIGxheWVyVHJlZVJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJlci5nZXQoKTsg
fQogICAgIHZvaWQgc2V0TGF5ZXJBbmltYXRpb25zKENvb3JkaW5hdGVkTGF5ZXJJRCwgY29uc3Qg
V2ViQ29yZTo6R3JhcGhpY3NMYXllckFuaW1hdGlvbnMmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdFByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkubWVzc2FnZXMuaW4KaW5k
ZXggMTM3ZGFkODA3NTAwZjU1ZTU5ZDI2YzI3YzFkZWRiYTQ5YzU1MDhhMC4uNDQzMDg5NTNmYTE4
OWEzODk0Y2UyYWFjZmM3ZDNiODY4M2Y5OTk0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJv
eHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkubWVzc2FnZXMuaW4KQEAgLTU1
LDYgKzU1LDggQEAgbWVzc2FnZXMgLT4gQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkgewog
ICAgIERlc3Ryb3lDYW52YXModWludDMyX3QgaWQpCiAjZW5kaWYKIAorICAgIFNldExheWVyUmVw
YWludENvdW50KHVpbnQzMl90IGxheWVySUQsIGludCB2YWx1ZSkKKwogICAgIFNldEJhY2tncm91
bmRDb2xvcihXZWJDb3JlOjpDb2xvciBjb2xvcikKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVy
ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5
ZXJUcmVlUmVuZGVyZXIuY3BwCmluZGV4IDZlOTczMDIxNjYyYjQwZDM2YTI4NGMzZmQxZDA0OWFi
NjZhMjU5OTYuLmE5ZjUxODBkNTZiNmY1ZTUwYWFmNDk1ZjU0YTZiNzAwN2Y3YmJmZmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVy
VHJlZVJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0
ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5jcHAKQEAgLTI1NSw2ICsyNTUsMTIgQEAgdm9p
ZCBMYXllclRyZWVSZW5kZXJlcjo6ZGVzdHJveUNhbnZhcyhDb29yZGluYXRlZExheWVySUQgaWQp
CiB9CiAjZW5kaWYKIAordm9pZCBMYXllclRyZWVSZW5kZXJlcjo6c2V0TGF5ZXJSZXBhaW50Q291
bnQoQ29vcmRpbmF0ZWRMYXllcklEIGlkLCBpbnQgdmFsdWUpCit7CisgICAgR3JhcGhpY3NMYXll
ciogbGF5ZXIgPSBsYXllckJ5SUQoaWQpOworICAgIHRvR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXIobGF5ZXIpLT5zZXRSZXBhaW50Q291bnQodmFsdWUpOworfQorCiB2b2lkIExheWVyVHJlZVJl
bmRlcmVyOjpzZXRMYXllckNoaWxkcmVuKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCwgY29uc3QgVmVj
dG9yPENvb3JkaW5hdGVkTGF5ZXJJRD4mIGNoaWxkSURzKQogewogICAgIEdyYXBoaWNzTGF5ZXIq
IGxheWVyID0gbGF5ZXJCeUlEKGlkKTsKQEAgLTMzMyw2ICszMzksOSBAQCB2b2lkIExheWVyVHJl
ZVJlbmRlcmVyOjpzZXRMYXllclN0YXRlKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCwgY29uc3QgQ29v
cmRpbmF0ZWRMYQogICAgIGxheWVyLT5zZXREcmF3c0NvbnRlbnQobGF5ZXJJbmZvLmRyYXdzQ29u
dGVudCk7CiAgICAgbGF5ZXItPnNldENvbnRlbnRzVmlzaWJsZShsYXllckluZm8uY29udGVudHNW
aXNpYmxlKTsKICAgICB0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKGxheWVyKS0+c2V0Rml4
ZWRUb1ZpZXdwb3J0KGxheWVySW5mby5maXhlZFRvVmlld3BvcnQpOworICAgIGxheWVyLT5zZXRT
aG93RGVidWdCb3JkZXIobGF5ZXJJbmZvLnNob3dEZWJ1Z0JvcmRlcnMpOworICAgIGxheWVyLT5z
ZXREZWJ1Z0JvcmRlcihsYXllckluZm8uZGVidWdCb3JkZXJDb2xvciwgbGF5ZXJJbmZvLmRlYnVn
Qm9yZGVyV2lkdGgpOworICAgIGxheWVyLT5zZXRTaG93UmVwYWludENvdW50ZXIobGF5ZXJJbmZv
LnNob3dSZXBhaW50Q291bnRlcik7CiAKICAgICBpZiAobGF5ZXJJbmZvLmZpeGVkVG9WaWV3cG9y
dCkKICAgICAgICAgbV9maXhlZExheWVycy5hZGQoaWQsIGxheWVyKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRl
cmVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXll
clRyZWVSZW5kZXJlci5oCmluZGV4IDUzZWNiZTM5NDk4MTg5OWQyYWJiZTBmMjFkNDQ0MzQ0MjM5
MzY0ODguLjZiNjJlZjUwMmRlOTdiNGMzMDA5OWJjOGMwNDZjMDNkYTZhZjhmYjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJl
ZVJlbmRlcmVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaApAQCAtNzcsNiArNzcsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzeW5jQ2FudmFzKENvb3JkaW5hdGVkTGF5ZXJJRCwgdWludDMyX3QgZnJvbnRCdWZmZXIp
OwogICAgIHZvaWQgZGVzdHJveUNhbnZhcyhDb29yZGluYXRlZExheWVySUQpOwogI2VuZGlmCisg
ICAgdm9pZCBzZXRMYXllclJlcGFpbnRDb3VudChDb29yZGluYXRlZExheWVySUQsIGludCB2YWx1
ZSk7CiAKICAgICB2b2lkIGRldGFjaCgpOwogICAgIHZvaWQgYXBwZW5kVXBkYXRlKGNvbnN0IEZ1
bmN0aW9uPHZvaWQoKT4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IDVmMjY2MmVmMDkxOGIzYWE5MjE0MGE0
ODQ1MmE1NTU4MmY1N2JkMzkuLjVkMjNiMjUxN2QyZTU0ODJkOGZmM2E3OTRjMDAyZTIwNjRjMTRm
N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyLmNwcApAQCAtMzcxLDYgKzM3MSwyNiBAQCB2b2lkIENvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllcjo6c2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQog
ICAgIGRpZENoYW5nZUxheWVyU3RhdGUoKTsKIH0KIAordm9pZCBDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXI6OnNldFNob3dEZWJ1Z0JvcmRlcihib29sIHNob3cpCit7CisgICAgaWYgKGlzU2hvd2lu
Z0RlYnVnQm9yZGVyKCkgPT0gc2hvdykKKyAgICAgICAgcmV0dXJuOworCisgICAgR3JhcGhpY3NM
YXllcjo6c2V0U2hvd0RlYnVnQm9yZGVyKHNob3cpOworCisgICAgZGlkQ2hhbmdlTGF5ZXJTdGF0
ZSgpOworfQorCit2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0U2hvd1JlcGFpbnRD
b3VudGVyKGJvb2wgc2hvdykKK3sKKyAgICBpZiAoaXNTaG93aW5nUmVwYWludENvdW50ZXIoKSA9
PSBzaG93KQorICAgICAgICByZXR1cm47CisKKyAgICBHcmFwaGljc0xheWVyOjpzZXRTaG93UmVw
YWludENvdW50ZXIoc2hvdyk7CisKKyAgICBkaWRDaGFuZ2VMYXllclN0YXRlKCk7Cit9CisKIHZv
aWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqIGlt
YWdlKQogewogICAgIE5hdGl2ZUltYWdlUHRyIG5ld05hdGl2ZUltYWdlUHRyID0gaW1hZ2UgPyBp
bWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSA6IDA7CkBAIC01NTAsOSArNTcwLDIz
IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzeW5jTGF5ZXJTdGF0ZSgpCiAgICAg
bV9sYXllckluZm8ucG9zID0gbV9hZGp1c3RlZFBvc2l0aW9uOwogICAgIG1fbGF5ZXJJbmZvLnNp
emUgPSBtX2FkanVzdGVkU2l6ZTsKIAorICAgIG1fbGF5ZXJJbmZvLnNob3dEZWJ1Z0JvcmRlcnMg
PSBpc1Nob3dpbmdEZWJ1Z0JvcmRlcigpOworICAgIGlmIChtX2xheWVySW5mby5zaG93RGVidWdC
b3JkZXJzKSB7CisgICAgICAgIG1fdXNpbmdUaWxlZExheWVyID0gc2hvdWxkSGF2ZUJhY2tpbmdT
dG9yZSgpOworICAgICAgICB1cGRhdGVEZWJ1Z0luZGljYXRvcnMoKTsKKyAgICB9CisgICAgbV9s
YXllckluZm8uc2hvd1JlcGFpbnRDb3VudGVyID0gaXNTaG93aW5nUmVwYWludENvdW50ZXIoKTsK
KwogICAgIG1fY29vcmRpbmF0b3ItPnN5bmNMYXllclN0YXRlKG1faWQsIG1fbGF5ZXJJbmZvKTsK
IH0KIAordm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldERlYnVnQm9yZGVyKGNvbnN0
IENvbG9yJiBjb2xvciwgZmxvYXQgd2lkdGgpCit7CisgICAgQVNTRVJUKG1fbGF5ZXJJbmZvLnNo
b3dEZWJ1Z0JvcmRlcnMpOworICAgIG1fbGF5ZXJJbmZvLmRlYnVnQm9yZGVyQ29sb3IgPSBjb2xv
cjsKKyAgICBtX2xheWVySW5mby5kZWJ1Z0JvcmRlcldpZHRoID0gd2lkdGg7Cit9CisKIHZvaWQg
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzeW5jQW5pbWF0aW9ucygpCiB7CiAgICAgaWYgKCFt
X3Nob3VsZFN5bmNBbmltYXRpb25zKQpAQCAtNjk4LDggKzczMiwxMCBAQCB2b2lkIENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllcjo6dGlsZWRCYWNraW5nU3RvcmVQYWludChHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsCiAgICAgcGFpbnRHcmFwaGljc0xheWVyQ29udGVudHMoKmNvbnRleHQsIHJlY3Qp
OwogfQogCi12b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dGlsZWRCYWNraW5nU3RvcmVQ
YWludEVuZChjb25zdCBWZWN0b3I8SW50UmVjdD4mIC8qIHVwZGF0ZWRSZWN0cyAqLykKK3ZvaWQg
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp0aWxlZEJhY2tpbmdTdG9yZVBhaW50RW5kKGNvbnN0
IFZlY3RvcjxJbnRSZWN0PiYgdXBkYXRlZFJlY3RzKQogeworICAgIGlmIChpc1Nob3dpbmdSZXBh
aW50Q291bnRlcigpICYmICF1cGRhdGVkUmVjdHMuaXNFbXB0eSgpKQorICAgICAgICBtX2Nvb3Jk
aW5hdG9yLT5zZXRMYXllclJlcGFpbnRDb3VudChpZCgpLCBpbmNyZW1lbnRSZXBhaW50Q291bnQo
KSk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp0aWxlZEJhY2tpbmdTdG9y
ZUhhc1BlbmRpbmdUaWxlQ3JlYXRpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAppbmRleCA2YzQzNTg1YzcwYzhlMDMwNjVl
NGRjYWEyN2U0ZjBkYTJmYTM2OTQ2Li43ZWEzODFmN2NmN2M3NWFkMzRkNDUzODc5MGEwZTMwMGM0
NWYzYTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXIuaApAQCAtNzEsNiArNzEsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGRlc3Ryb3lDYW52YXMoQ29vcmRpbmF0ZWRMYXllcklEKSA9IDA7CiAjZW5kaWYKIAorICAg
IHZpcnR1YWwgdm9pZCBzZXRMYXllclJlcGFpbnRDb3VudChDb29yZGluYXRlZExheWVySUQsIGlu
dCkgPSAwOworCiAgICAgdmlydHVhbCB2b2lkIHNldExheWVyQW5pbWF0aW9ucyhDb29yZGluYXRl
ZExheWVySUQsIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJBbmltYXRpb25zJikgPSAwOwog
CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaExheWVyKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllciopID0gMDsKQEAgLTExMiw2ICsxMTQsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHNldENvbnRlbnRzUmVjdChjb25zdCBJbnRSZWN0JikgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIHNldENvbnRlbnRzVG9JbWFnZShJbWFnZSopIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRDb250ZW50c1RvU29saWRDb2xvcihjb25zdCBDb2xvciYpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBzZXRTaG93RGVidWdCb3JkZXIoYm9vbCkgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIHNldFNob3dSZXBhaW50Q291bnRlcihib29sKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIGJvb2wgc2hvdWxkRGlyZWN0bHlDb21wb3NpdGVJbWFnZShJbWFnZSopIGNvbnN0IE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvQ2FudmFzKFBsYXRmb3JtTGF5ZXIq
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TWFza0xheWVyKEdyYXBoaWNzTGF5ZXIq
KSBPVkVSUklERTsKQEAgLTE2Niw2ICsxNzAsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNQZW5k
aW5nVmlzaWJsZUNoYW5nZXMoKTsKIAogcHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGVi
dWdCb3JkZXIoY29uc3QgQ29sb3ImLCBmbG9hdCB3aWR0aCkgT1ZFUlJJREU7CisKICAgICBib29s
IGZpeGVkVG9WaWV3cG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fZml4ZWRUb1ZpZXdwb3J0OyB9CiAK
ICAgICB2b2lkIGRpZENoYW5nZUxheWVyU3RhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCmluZGV4IDhmYmI1N2Yy
MTFmZjJjYzRiOTIwNzIzMzBkZTNmODc4NzllMTc5M2QuLmRlZWY1NTNhZDAxYzU0OWMzMjAwMjcy
YzNiMzlhNjg2YTEwODE5MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcApAQCAtMzk3LDYgKzM5NywxMSBAQCB2b2lk
IENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6ZGVzdHJveUNhbnZhcyhDb29yZGluYXRlZExheWVy
SUQgaWQpCiB9CiAjZW5kaWYKIAordm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNldExh
eWVyUmVwYWludENvdW50KENvb3JkaW5hdGVkTGF5ZXJJRCBpZCwgaW50IHZhbHVlKQoreworICAg
IG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6
OlNldExheWVyUmVwYWludENvdW50KGlkLCB2YWx1ZSkpOworfQorCiAjaWYgRU5BQkxFKENTU19G
SUxURVJTKQogdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnN5bmNMYXllckZpbHRlcnMo
Q29vcmRpbmF0ZWRMYXllcklEIGlkLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJl
ZUhvc3QuaAppbmRleCAwMTAyMmIyY2M0ZTk4NDg4YTRkZjc4N2VhMzY5MGI3MmFjY2ZmNzI5Li45
YWE5ZTZlY2RmM2E2OWVmMDAzODI4ZTE3OGE5ODYxMDY3NGZmNzY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZExheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaApAQCAtMTAx
LDYgKzEwMSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc3luY0NhbnZhcyhDb29yZGlu
YXRlZExheWVySUQsIFdlYkNvcmU6OlBsYXRmb3JtTGF5ZXIqKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgZGVzdHJveUNhbnZhcyhDb29yZGluYXRlZExheWVySUQpIE9WRVJSSURFOwogI2Vu
ZGlmCisgICAgdmlydHVhbCB2b2lkIHNldExheWVyUmVwYWludENvdW50KENvb3JkaW5hdGVkTGF5
ZXJJRCwgaW50KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoTGF5ZXIoV2ViQ29y
ZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNGaXhl
ZExheWVycygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFRpbGUuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRUaWxl
LmNwcAppbmRleCA3OThkMmI3NWYyNTBkYTY3MjlmZjliY2U1MGU4OGMyOTEyOTQwYjhlLi5hYzBi
NTY2MjZlODFmMTBiMTg3NjJiOThmMzY1ODA0ZjhlMzI2MTY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZFRpbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkVGlsZS5jcHAKQEAgLTk3LDggKzk3LDEwIEBAIFZlY3Rv
cjxJbnRSZWN0PiBDb29yZGluYXRlZFRpbGU6OnVwZGF0ZUJhY2tCdWZmZXIoKQogICAgIH0gZWxz
ZQogICAgICAgICBtX2NsaWVudC0+dXBkYXRlVGlsZShtX0lELCB1cGRhdGVJbmZvLCBtX3JlY3Qp
OwogCisgICAgVmVjdG9yPEludFJlY3Q+IHVwZGF0ZWRSZWN0czsKKyAgICB1cGRhdGVkUmVjdHMu
YXBwZW5kKG1fZGlydHlSZWN0KTsKICAgICBtX2RpcnR5UmVjdCA9IEludFJlY3QoKTsKLSAgICBy
ZXR1cm4gVmVjdG9yPEludFJlY3Q+KCk7CisgICAgcmV0dXJuIHVwZGF0ZWRSZWN0czsKIH0KIAog
dm9pZCBDb29yZGluYXRlZFRpbGU6OnN3YXBCYWNrQnVmZmVyVG9Gcm9udCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183313</attachid>
            <date>2013-01-17 16:32:05 -0800</date>
            <delta_ts>2013-01-18 20:04:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105787-20130118092858.patch</filename>
            <type>text/plain</type>
            <size>58767</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5OTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzBkMjI1NTkwMTJjZTkw
YWMyMzc4MmQxN2IxNjEwYmZjM2NjZjIwMy4uNGQyYzA3Yjg2OTAyYmNiYWFiMjU1MWYyOGE1MTAx
MjZmYmJlYTY2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDEzLTAxLTE3ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFtUZXhtYXBd
IFJlZmFjdG9yIGNvZGUgcmVsYXRlZCB0byBkZWJ1ZyBib3JkZXIgYW5kIHJlcGFpbnQgY291bnQu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU3ODcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50
bHksIFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUsIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlIGFu
ZAorICAgICAgICBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlciBoYXZlIGR1cGxpY2F0ZWQgY29k
ZSB0byBkcmF3IGRlYnVnIGJvcmRlciBvcgorICAgICAgICByZXBhaW50IGNvdW50LiBUaGlzIHBh
dGNoIHJlZmFjdG9ycyB0aGF0IGFsbCBwbGF0Zm9ybSBsYXllcnMgZHJhdyBkZWJ1ZworICAgICAg
ICBib3JkZXIgYW5kIHJlcGFpbnQgY291bnQgaW4gdGhlIGNvbnNpc3RlbnQgd2F5OgorICAgICAg
ICBUZXh0dXJlTWFwcGVyOjpkcmF3Qm9yZGVyKCkgYW5kIFRleHR1cmVNYXBwZXI6OmRyYXdSZXBh
aW50Q291bnRlcigpLgorCisgICAgICAgIFRoZXJlIGFyZSB0aHJlZSBiaWcgY2hhbmdlczoKKyAg
ICAgICAgMS4gVGV4dHVyZU1hcHBlckxheWVyIGhhcyB0aGUgZGVidWcgdmlzdWFscyBsaWtlIEdy
YXBoaWNzTGF5ZXIuCisgICAgICAgIEJvdGggZGVidWcgYm9yZGVyIGFuZCByZXBhaW50IGNvdW50
IGFyZSBjYWxsZWQgYXMgdGhlIGRlYnVnIHZpc3VhbHMuCisgICAgICAgIDIuIFdlIHVzZSB0aGUg
c2FtZSBjb2xvciBhbmQgd2lkdGggdG8gTWFjIHBvcnQgYmVjYXVzZSB3ZSBnZXQgYm90aCBpbmZv
IHVzaW5nCisgICAgICAgIEdyYXBoaWNzTGF5ZXI6OnVwZGF0ZURlYnVnSW5kaWNhdG9ycygpLgor
ICAgICAgICAzLiBEcmF3IGJvcmRlcnMgZm9yIGJhY2tncm91bmQgY29sb3IsIGJhY2tpbmcgc3Rv
cmUgYW5kIGNvbnRlbnRzIGxheWVyLAorICAgICAgICB3aGlsZSBkcmF3aW5nIHJlcGFpbnQgY291
bnQgb25seSBmb3IgYmFja2luZyBzdG9yZS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIFRoaXMg
ZnVuY3Rpb25hbGl0eSBpcyBmb3IgZGVidWdnaW5nLCBzbyB3ZSBjYW5ub3QgdGVzdCB1c2luZyBE
UlQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQz
RFByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRl
eHQzRFF0LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXI6OnNldFNob3dEZWJ1Z0JvcmRlcik6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRTaG93UmVwYWlu
dENvdW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6
OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnVwZGF0ZURlYnVnQm9yZGVyQW5kUmVwYWlu
dENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpz
ZXREZWJ1Z0JvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlcjo6dXBkYXRlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyOjpwcmVwYXJlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRSZXBhaW50Q291bnQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oOgor
ICAgICAgICAoR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmRlYnVnQm9yZGVyQ29sb3IpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmRlYnVnQm9yZGVyV2lkdGgpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjph
ZGp1c3RlZFRyYW5zZm9ybUZvclJlY3QpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OnBhaW50VG9UZXh0dXJlTWFw
cGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6
ZHJhd0JvcmRlcik6CisgICAgICAgICAgICBPdmVycmlkZSBUZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllcjo6ZHJhd0JvcmRlcigpIHRvIGRyYXcgdGhlIGJvcmRlcgorICAgICAgICAgICAgZm9yIGVh
Y2ggdGlsZS4KKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9y
ZTo6ZHJhd1JlcGFpbnRDb3VudGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVy
ZU1hcHBlckJhY2tpbmdTdG9yZTo6ZHJhd1JlcGFpbnRDb3VudGVyKToKKyAgICAgICAgKFRleHR1
cmVNYXBwZXJCYWNraW5nU3RvcmUpOgorICAgICAgICAoVGV4dHVyZU1hcHBlclRpbGVkQmFja2lu
Z1N0b3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRBQkdSVG9BUkdCKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdMOjpkcmF3UmVwYWlu
dENvdW50ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckltYWdlQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJJbWFnZUJ1
ZmZlcjo6ZHJhd0JvcmRlcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlcjo6ZHJhd1JlcGFpbnRDb3VudGVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmg6Cisg
ICAgICAgIChUZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dHVyZU1hcHBlckxheWVyOjpwYWludFNlbGYpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVy
ZU1hcHBlckxheWVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmg6Cisg
ICAgICAgIChTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OlN0
YXRlOjpTdGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllcjo6ZHJhd0JvcmRlcik6CisKIDIwMTMtMDEtMTYgIEhhamltZSBNb3JyaXRhICA8
bW9ycml0YUBnb29nbGUuY29tPgogCiAgICAgICAgIE5vRXZlbnREaXNwYXRjaEFzc2VydGlvbiBp
biBDb250YWluZXJOb2RlOjpyZW1vdmVDaGlsZHJlbiBpcyB0b28gc3RyaWN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggOWVlYmE4ZDFhNmRmOGFhMzllMTBiMmFjMzdkZGVhOWQzNzczN2YzNy4uYmJlZWU3MTQwNDdk
YWQ3MGM4M2NjZDY0ZTc3Y2M3ZjdhNTQwYmYzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDYxIEBA
CiAyMDEzLTAxLTE3ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0Pgog
CisgICAgICAgIFtUZXhtYXBdIFJlZmFjdG9yIGNvZGUgcmVsYXRlZCB0byBkZWJ1ZyBib3JkZXIg
YW5kIHJlcGFpbnQgY291bnQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDU3ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGVyZSBhcmUgdHdvIGJpZyBjaGFuZ2VzOgorICAgICAgICAxLiBDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXIgc2VuZHMgZGVidWdnaW5nIHZpc3VhbHMgdG8gVUkgUHJvY2Vzcy4K
KyAgICAgICAgMi4gV2hlbiB1cGRhdGluZyBhIGJhY2tpbmcgc3RvcmUsIGluY3JlbWVudCBhIHJl
cGFpbnQgY291bnQuCisKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZExheWVySW5mby5oOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVySW5m
bzo6Q29vcmRpbmF0ZWRMYXllckluZm8pOgorICAgICAgICAoQ29vcmRpbmF0ZWRMYXllckluZm8p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFj
a2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6
OnVwZGF0ZVRpbGUpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6
cGFpbnRUaWxlc1RvVGV4dHVyZU1hcHBlcik6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVk
QmFja2luZ1N0b3JlOjphZGp1c3RlZFRyYW5zZm9ybUZvclJlY3QpOgorICAgICAgICAoV2ViS2l0
OjpDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIpOgorICAgICAg
ICAoV2ViS2l0OjpDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6ZHJhd0JvcmRlcik6CisgICAgICAg
ICAgICBPdmVycmlkZSBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllcjo6ZHJhd0JvcmRlcigpIHRv
IGRyYXcgdGhlIGJvcmRlcgorICAgICAgICAgICAgZm9yIGVhY2ggdGlsZS4KKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpkcmF3UmVw
YWludENvdW50ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkQmFja2luZ1N0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFj
a2luZ1N0b3JlVGlsZTo6Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlKToKKyAgICAgICAgKENv
b3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZSk6CisgICAgICAgIChDb29yZGluYXRlZEJhY2tpbmdT
dG9yZSk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpyZWN0KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVy
VHJlZUhvc3RQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdFByb3h5OjpzZXRMYXllclJlcGFpbnRDb3VudCk6CisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdFByb3h5Lmg6CisgICAgICAgIChDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0UHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRy
ZWVSZW5kZXJlcjo6c2V0TGF5ZXJSZXBhaW50Q291bnQpOgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OnNldExheWVyU3RhdGUpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmg6Cisg
ICAgICAgIChMYXllclRyZWVSZW5kZXJlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0U2hvd0RlYnVnQm9yZGVy
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyOjpzZXRTaG93UmVwYWludENvdW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzeW5jTGF5ZXJTdGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldERlYnVnQm9yZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dGlsZWRCYWNraW5nU3RvcmVQYWludEVu
ZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyLmg6CisgICAgICAgIChDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXJDbGllbnQpOgorICAgICAgICAoQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVy
VHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6
OnNldExheWVyUmVwYWludENvdW50KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0Lmg6CisKKzIwMTMtMDEtMTcgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEw
MC5uZXQ+CisKICAgICAgICAgW1RleE1hcF0gRW5hYmxlIGRlYnVnIGJvcmRlcnMgYW5kIHJlcGFp
bnQgY291bnRlciB2aWEgU2V0dGluZ3MuCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDcxOTgKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUu
aAppbmRleCA2OWRhZDY3NTQ3MjJhYzdhODgyY2E4NzYxNWFiODg1NDk3OWFmYmM2Li5kMGRkMjNm
ZTdkYmQ0MWQ2YWY4MWY5MDdhYWQ5ZGEwMzJjMDFiNGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRl
eHQzRFByaXZhdGUuaApAQCAtMjUsNyArMjUsNyBAQAogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRy
Lmg+CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIFVTRShURVhUVVJFX01B
UFBFUikKLSNpbmNsdWRlICJUZXh0dXJlTWFwcGVyLmgiCisjaW5jbHVkZSAiVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXIuaCIKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQz
RFF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29u
dGV4dDNEUXQuY3BwCmluZGV4IDIwYjNiN2Q4ZmIzNTczOGMyOTVjM2M4Y2Q5YzM3YjIyY2NkMDUx
NWEuLjNjOGM1YzIyNTk4ODIxZDcyNTY3ZGJiNTY0ZWI3ZjljOWY2ZDZiNDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29u
dGV4dDNEUXQuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiT3BlbkdMU2hpbXMuaCIK
ICNpbmNsdWRlICJRV2ViUGFnZUNsaWVudC5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgor
I2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSA8UVdpbmRv
dz4KICNpbmNsdWRlIDxxcGEvcXBsYXRmb3JtcGl4bWFwLmg+CiAjaW5jbHVkZSA8d3RmL1VudXNl
ZFBhcmFtLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAppbmRl
eCBlOTYyOTZiYTUxZTRhYTcxMTVkYmEyMjZhYTU3ZmZlZjBlYzAxMjIyLi4yY2RiYjhkODg0Zjlk
YTVlYjg5MmMwODc2MGE3NGQwZWViY2Q5YjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlci5jcHAKQEAgLTI0LDE0ICsyNCw4IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NM
YXllckFuaW1hdGlvbi5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJGYWN0b3J5LmgiCiAjaW5j
bHVkZSAiSW1hZ2VCdWZmZXIuaCIKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1
ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogCi0jaWYgVVNFKENBSVJPKQotI2luY2x1ZGUgIkNhaXJv
VXRpbGl0aWVzLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotI2VuZGlmCi0KIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogUGFzc093blB0cjxHcmFwaGljc0xheWVyPiBHcmFwaGljc0xh
eWVyOjpjcmVhdGUoR3JhcGhpY3NMYXllckZhY3RvcnkqIGZhY3RvcnksIEdyYXBoaWNzTGF5ZXJD
bGllbnQqIGNsaWVudCkKQEAgLTM4MywxNSArMzc3LDYwIEBAIHZvaWQgR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXI6OnNldENvbnRlbnRzVG9NZWRpYShUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
cioKICAgICBtX2NvbnRlbnRzTGF5ZXIgPSBtZWRpYTsKIH0KIAordm9pZCBHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlcjo6c2V0U2hvd0RlYnVnQm9yZGVyKGJvb2wgc2hvdykKK3sKKyAgICBpZiAo
aXNTaG93aW5nRGVidWdCb3JkZXIoKSA9PSBzaG93KQorICAgICAgICByZXR1cm47CisKKyAgICBH
cmFwaGljc0xheWVyOjpzZXRTaG93RGVidWdCb3JkZXIoc2hvdyk7CisgICAgbm90aWZ5Q2hhbmdl
KFRleHR1cmVNYXBwZXJMYXllcjo6RGVidWdWaXN1YWxzQ2hhbmdlKTsKK30KKwordm9pZCBHcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0U2hvd1JlcGFpbnRDb3VudGVyKGJvb2wgc2hvdykK
K3sKKyAgICBpZiAoaXNTaG93aW5nUmVwYWludENvdW50ZXIoKSA9PSBzaG93KQorICAgICAgICBy
ZXR1cm47CisKKyAgICBHcmFwaGljc0xheWVyOjpzZXRTaG93UmVwYWludENvdW50ZXIoc2hvdyk7
CisgICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6RGVidWdWaXN1YWxzQ2hhbmdl
KTsKK30KKwogLyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgpCiAqLwogdm9pZCBHcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgp
CiB7CisgICAgaWYgKG1faGFzT3duQmFja2luZ1N0b3JlKQorICAgICAgICB1cGRhdGVEZWJ1Z0Jv
cmRlckFuZFJlcGFpbnRDb3VudCgpOwogICAgIG1fbGF5ZXItPmZsdXNoQ29tcG9zaXRpbmdTdGF0
ZUZvclRoaXNMYXllck9ubHkodGhpcyk7Ci0gICAgdXBkYXRlQmFja2luZ1N0b3JlKCk7CisgICAg
aWYgKG1faGFzT3duQmFja2luZ1N0b3JlKQorICAgICAgICB1cGRhdGVCYWNraW5nU3RvcmUoKTsK
ICAgICBkaWRGbHVzaENvbXBvc2l0aW5nU3RhdGUoKTsKIH0KIAordm9pZCBHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlcjo6dXBkYXRlRGVidWdCb3JkZXJBbmRSZXBhaW50Q291bnQoKQoreworICAg
IEFTU0VSVChtX2hhc093bkJhY2tpbmdTdG9yZSk7CisKKyAgICBtX3VzaW5nVGlsZWRMYXllciA9
IHNob3VsZEhhdmVCYWNraW5nU3RvcmUoKTsKKyAgICB1cGRhdGVEZWJ1Z0luZGljYXRvcnMoKTsK
KworICAgIC8vIFdoZW4gdGhpcyBoYXMgaXRzIG93biBiYWNraW5nIHN0b3JlIChlLmcuIFF0IFdL
MSksIHVwZGF0ZSB0aGUgcmVwYWludCBjb3VudCBiZWZvcmUgY2FsbGluZyBUZXh0dXJlTWFwcGVy
TGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKS4KKyAgICBib29s
IG5lZWRzVG9SZXBhaW50ID0gc2hvdWxkSGF2ZUJhY2tpbmdTdG9yZSgpICYmIChtX25lZWRzRGlz
cGxheSB8fCAhbV9uZWVkc0Rpc3BsYXlSZWN0LmlzRW1wdHkoKSk7CisgICAgaWYgKGlzU2hvd2lu
Z1JlcGFpbnRDb3VudGVyKCkgJiYgbmVlZHNUb1JlcGFpbnQpIHsKKyAgICAgICAgaW5jcmVtZW50
UmVwYWludENvdW50KCk7CisgICAgICAgIG1fY2hhbmdlTWFzayB8PSBUZXh0dXJlTWFwcGVyTGF5
ZXI6OlJlcGFpbnRDb3VudENoYW5nZTsKKyAgICB9Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXI6OnNldERlYnVnQm9yZGVyKGNvbnN0IENvbG9yJiBjb2xvciwgZmxvYXQgd2lk
dGgpCit7CisgICAgLy8gVGhlIGRlZmF1bHQgdmFsdWVzIGZvciBHcmFwaGljc0xheWVyIGRlYnVn
IGJvcmRlcnMgYXJlIGEgbGl0dGxlCisgICAgLy8gaGFyZCB0byBzZWUgKHNvbWUgbGVzcyB0aGFu
IG9uZSBwaXhlbCB3aWRlKSwgc28gd2UgZG91YmxlIHRoZWlyIHNpemUgaGVyZS4KKyAgICBtX2Rl
YnVnQm9yZGVyQ29sb3IgPSBjb2xvcjsKKyAgICBtX2RlYnVnQm9yZGVyV2lkdGggPSB3aWR0aCAq
IDI7CisgICAgbV9jaGFuZ2VNYXNrIHw9IFRleHR1cmVNYXBwZXJMYXllcjo6RGVidWdWaXN1YWxz
Q2hhbmdlOworfQorCiAvKiBccmVpbXAgKEdyYXBoaWNzTGF5ZXIuaCkKICovCiB2b2lkIEdyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGUoY29uc3QgRmxvYXRS
ZWN0JiByZWN0KQpAQCAtNDE2LDkgKzQ1NSw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXI6OmRpZEZsdXNoQ29tcG9zaXRpbmdTdGF0ZSgpCiAKIHZvaWQgR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXI6OnVwZGF0ZUJhY2tpbmdTdG9yZSgpCiB7Ci0gICAgaWYgKCFtX2hhc093bkJh
Y2tpbmdTdG9yZSkKLSAgICAgICAgcmV0dXJuOwotCisgICAgQVNTRVJUKG1faGFzT3duQmFja2lu
Z1N0b3JlKTsKICAgICBwcmVwYXJlQmFja2luZ1N0b3JlKCk7CiAgICAgbV9sYXllci0+c2V0QmFj
a2luZ1N0b3JlKG1fYmFja2luZ1N0b3JlKTsKIH0KQEAgLTQ0OCwzNCArNDg1LDcgQEAgdm9pZCBH
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6cHJlcGFyZUJhY2tpbmdTdG9yZSgpCiAjZW5kaWYK
ICAgICBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSA9IHN0YXRp
Y19jYXN0PFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZSo+KG1fYmFja2luZ1N0b3JlLmdl
dCgpKTsKIAotICAgIGlmIChpc1Nob3dpbmdSZXBhaW50Q291bnRlcigpKQotICAgICAgICBpbmNy
ZW1lbnRSZXBhaW50Q291bnQoKTsKLQotICAgIC8vIFBhaW50IGludG8gYW4gaW50ZXJtZWRpYXRl
IGJ1ZmZlciB0byBhdm9pZCBwYWludGluZyBjb250ZW50IG1vcmUgdGhhbiBvbmNlLgotICAgIGJv
b2wgcGFpbnRPbmNlID0gdHJ1ZTsKLSAgICBjb25zdCBJbnRTaXplIG1heFRleHR1cmVTaXplID0g
dGV4dHVyZU1hcHBlci0+bWF4VGV4dHVyZVNpemUoKTsKLSAgICAvLyBXZSBuZWVkIHRvIHBhaW50
IGRpcmVjdGx5IGlmIHRoZSBkaXJ0eSByZWN0IGV4Y2VlZHMgb25lIG9mIHRoZSBtYXhpbXVtIGRp
bWVuc2lvbnMuCi0gICAgaWYgKGRpcnR5UmVjdC53aWR0aCgpID4gbWF4VGV4dHVyZVNpemUud2lk
dGgoKSB8fCBkaXJ0eVJlY3QuaGVpZ2h0KCkgPiBtYXhUZXh0dXJlU2l6ZS5oZWlnaHQoKSkKLSAg
ICAgICAgcGFpbnRPbmNlID0gZmFsc2U7Ci0KLSAgICBpZiAocGFpbnRPbmNlKSB7Ci0gICAgICAg
IE93blB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGRp
cnR5UmVjdC5zaXplKCkpOwotICAgICAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBpbWFn
ZUJ1ZmZlci0+Y29udGV4dCgpOwotICAgICAgICBjb250ZXh0LT5zZXRJbWFnZUludGVycG9sYXRp
b25RdWFsaXR5KHRleHR1cmVNYXBwZXItPmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7Ci0g
ICAgICAgIGNvbnRleHQtPnNldFRleHREcmF3aW5nTW9kZSh0ZXh0dXJlTWFwcGVyLT50ZXh0RHJh
d2luZ01vZGUoKSk7Ci0gICAgICAgIGNvbnRleHQtPnRyYW5zbGF0ZSgtZGlydHlSZWN0LngoKSwg
LWRpcnR5UmVjdC55KCkpOwotICAgICAgICBwYWludEdyYXBoaWNzTGF5ZXJDb250ZW50cygqY29u
dGV4dCwgZGlydHlSZWN0KTsKLQotICAgICAgICBpZiAoaXNTaG93aW5nUmVwYWludENvdW50ZXIo
KSkKLSAgICAgICAgICAgIGRyYXdSZXBhaW50Q291bnRlcihjb250ZXh0KTsKLQotICAgICAgICBS
ZWZQdHI8SW1hZ2U+IGltYWdlID0gaW1hZ2VCdWZmZXItPmNvcHlJbWFnZShEb250Q29weUJhY2tp
bmdTdG9yZSk7Ci0gICAgICAgIGJhY2tpbmdTdG9yZS0+dXBkYXRlQ29udGVudHModGV4dHVyZU1h
cHBlciwgaW1hZ2UuZ2V0KCksIG1fc2l6ZSwgZGlydHlSZWN0LCBCaXRtYXBUZXh0dXJlOjpVcGRh
dGVDYW5Nb2RpZnlPcmlnaW5hbEltYWdlRGF0YSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIGJhY2tp
bmdTdG9yZS0+dXBkYXRlQ29udGVudHModGV4dHVyZU1hcHBlciwgdGhpcywgbV9zaXplLCBkaXJ0
eVJlY3QsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNhbk1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRhKTsK
LQotICAgIGJhY2tpbmdTdG9yZS0+c2V0U2hvd0RlYnVnQm9yZGVycyhpc1Nob3dpbmdEZWJ1Z0Jv
cmRlcigpKTsKLSAgICBiYWNraW5nU3RvcmUtPnNldERlYnVnQm9yZGVyKG1fZGVidWdCb3JkZXJD
b2xvciwgbV9kZWJ1Z0JvcmRlcldpZHRoKTsKKyAgICBiYWNraW5nU3RvcmUtPnVwZGF0ZUNvbnRl
bnRzKHRleHR1cmVNYXBwZXIsIHRoaXMsIG1fc2l6ZSwgZGlydHlSZWN0LCBCaXRtYXBUZXh0dXJl
OjpVcGRhdGVDYW5Nb2RpZnlPcmlnaW5hbEltYWdlRGF0YSk7CiAKICAgICBtX25lZWRzRGlzcGxh
eSA9IGZhbHNlOwogICAgIG1fbmVlZHNEaXNwbGF5UmVjdCA9IEludFJlY3QoKTsKQEAgLTQ4Niw0
MCArNDk2LDYgQEAgYm9vbCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2hvdWxkSGF2ZUJh
Y2tpbmdTdG9yZSgpIGNvbnN0CiAgICAgcmV0dXJuIGRyYXdzQ29udGVudCgpICYmIGNvbnRlbnRz
QXJlVmlzaWJsZSgpICYmICFtX3NpemUuaXNFbXB0eSgpOwogfQogCi0jaWYgVVNFKENBSVJPKQot
dm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6ZHJhd1JlcGFpbnRDb3VudGVyKEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCkKLXsKLSAgICBjYWlyb190KiBjciA9IGNvbnRleHQtPnBsYXRm
b3JtQ29udGV4dCgpLT5jcigpOwotICAgIGNhaXJvX3NhdmUoY3IpOwotCi0gICAgQ1N0cmluZyBy
ZXBhaW50Q291bnQgPSBTdHJpbmc6OmZvcm1hdCgiJWkiLCB0aGlzLT5yZXBhaW50Q291bnQoKSku
dXRmOCgpOwotICAgIGNhaXJvX3NlbGVjdF9mb250X2ZhY2UoY3IsICJzYW5zLXNlcmlmIiwgQ0FJ
Uk9fRk9OVF9TTEFOVF9OT1JNQUwsIENBSVJPX0ZPTlRfV0VJR0hUX0JPTEQpOwotICAgIGNhaXJv
X3NldF9mb250X3NpemUoY3IsIDE4KTsKLQotICAgIGNhaXJvX3RleHRfZXh0ZW50c190IHJlcGFp
bnRUZXh0RXh0ZW50czsKLSAgICBjYWlyb190ZXh0X2V4dGVudHMoY3IsIHJlcGFpbnRDb3VudC5k
YXRhKCksICZyZXBhaW50VGV4dEV4dGVudHMpOwotCi0gICAgc3RhdGljIGNvbnN0IGludCByZXBh
aW50Q291bnRCb3JkZXJXaWR0aCA9IDEwOwotICAgIHNldFNvdXJjZVJHQkFGcm9tQ29sb3IoY3Is
IGlzU2hvd2luZ0RlYnVnQm9yZGVyKCkgPyBtX2RlYnVnQm9yZGVyQ29sb3IgOiBDb2xvcigwLCAy
NTUsIDAsIDEyNykpOwotICAgIGNhaXJvX3JlY3RhbmdsZShjciwgMCwgMCwKLSAgICAgICAgcmVw
YWludFRleHRFeHRlbnRzLndpZHRoICsgKHJlcGFpbnRDb3VudEJvcmRlcldpZHRoICogMiksCi0g
ICAgICAgIHJlcGFpbnRUZXh0RXh0ZW50cy5oZWlnaHQgKyAocmVwYWludENvdW50Qm9yZGVyV2lk
dGggKiAyKSk7Ci0gICAgY2Fpcm9fZmlsbChjcik7Ci0KLSAgICBjYWlyb19zZXRfc291cmNlX3Jn
YihjciwgMSwgMSwgMSk7Ci0gICAgY2Fpcm9fbW92ZV90byhjciwgcmVwYWludENvdW50Qm9yZGVy
V2lkdGgsIHJlcGFpbnRUZXh0RXh0ZW50cy5oZWlnaHQgKyByZXBhaW50Q291bnRCb3JkZXJXaWR0
aCk7Ci0gICAgY2Fpcm9fc2hvd190ZXh0KGNyLCByZXBhaW50Q291bnQuZGF0YSgpKTsKLQotICAg
IGNhaXJvX3Jlc3RvcmUoY3IpOwotfQotI2Vsc2UKLXZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXI6OmRyYXdSZXBhaW50Q291bnRlcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCi17Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotI2VuZGlmCi0KIGJvb2wgR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXI6OmFkZEFuaW1hdGlvbihjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVM
aXN0LCBjb25zdCBJbnRTaXplJiBib3hTaXplLCBjb25zdCBBbmltYXRpb24qIGFuaW0sIGNvbnN0
IFN0cmluZyYga2V5ZnJhbWVzTmFtZSwgZG91YmxlIHRpbWVPZmZzZXQpCiB7CiAgICAgQVNTRVJU
KCFrZXlmcmFtZXNOYW1lLmlzRW1wdHkoKSk7CkBAIC01NjEsMTQgKzUzNyw2IEBAIHZvaWQgR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmFuaW1hdGlvblN0YXJ0ZWRUaW1lckZpcmVkKFRpbWVy
PEdyYXBoaWNzTGF5ZXJUCiAgICAgY2xpZW50KCktPm5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQodGhp
cywgLyogRE9NIHRpbWUgKi8gV1RGOjpjdXJyZW50VGltZSgpKTsKIH0KIAotdm9pZCBHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0RGVidWdCb3JkZXIoY29uc3QgQ29sb3ImIGNvbG9yLCBm
bG9hdCB3aWR0aCkKLXsKLSAgICAvLyBUaGUgZGVmYXVsdCB2YWx1ZXMgZm9yIEdyYXBoaWNzTGF5
ZXIgZGVidWcgYm9yZGVycyBhcmUgYSBsaXR0bGUKLSAgICAvLyBoYXJkIHRvIHNlZSAoc29tZSBs
ZXNzIHRoYW4gb25lIHBpeGVsIHdpZGUpLCBzbyB3ZSBkb3VibGUgdGhlaXIgc2l6ZSBoZXJlLgot
ICAgIG1fZGVidWdCb3JkZXJDb2xvciA9IGNvbG9yOwotICAgIG1fZGVidWdCb3JkZXJXaWR0aCA9
IHdpZHRoICogMjsKLX0KLQogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKIGJvb2wgR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXI6OnNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmls
dGVycykKIHsKQEAgLTU3Nyw0ICs1NDUsMTAgQEAgYm9vbCBHcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlcjo6c2V0RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQogfQogI2Vu
ZGlmCiAKK3ZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFJlcGFpbnRDb3VudChp
bnQgcmVwYWludENvdW50KQoreworICAgIG1fcmVwYWludENvdW50ID0gcmVwYWludENvdW50Owor
ICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OlJlcGFpbnRDb3VudENoYW5nZSk7
Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKaW5kZXggMTJj
MzE5NTkxYjcyNmM3YzlmMGJhMmJkZmRmNDM4NGU3ZGVhMTcxMy4uYWZjNTFhNjJjMTU2NmZmMTQ0
NWUxNDcyNTE0YWYyNmFlZDZiZWY4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyLmgKQEAgLTIwLDcgKzIwLDYgQEAKICNpZm5kZWYgR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXJfaAogI2RlZmluZSBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcl9oCiAKLSNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCiAjaW5jbHVk
ZSAiR3JhcGhpY3NMYXllckNsaWVudC5oIgogI2luY2x1ZGUgIkltYWdlLmgiCkBAIC02Niw2ICs2
NSw5IEBAIHB1YmxpYzoKICAgICBDb2xvciBzb2xpZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9z
b2xpZENvbG9yOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9NZWRpYShQbGF0Zm9y
bUxheWVyKik7CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9DYW52YXMoUGxhdGZvcm1M
YXllciogY2FudmFzKSB7IHNldENvbnRlbnRzVG9NZWRpYShjYW52YXMpOyB9CisgICAgdmlydHVh
bCB2b2lkIHNldFNob3dEZWJ1Z0JvcmRlcihib29sKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0RGVidWdCb3JkZXIoY29uc3QgQ29sb3ImLCBmbG9hdCB3aWR0aCkgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIHNldFNob3dSZXBhaW50Q291bnRlcihib29sKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgZmx1c2hDb21wb3NpdGluZ1N0YXRlKGNvbnN0IEZsb2F0UmVjdCYpOwog
ICAgIHZpcnR1YWwgdm9pZCBmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCk7
CiAgICAgdmlydHVhbCB2b2lkIHNldE5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKTsKQEAgLTgxLDgg
KzgzLDYgQEAgcHVibGljOgogCiAgICAgVGV4dHVyZU1hcHBlckxheWVyKiBsYXllcigpIGNvbnN0
IHsgcmV0dXJuIG1fbGF5ZXIuZ2V0KCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBzZXREZWJ1Z0Jv
cmRlcihjb25zdCBDb2xvciYsIGZsb2F0IHdpZHRoKTsKLQogI2lmIEVOQUJMRShDU1NfRklMVEVS
UykKICAgICB2aXJ0dWFsIGJvb2wgc2V0RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJik7
CiAjZW5kaWYKQEAgLTkzLDEwICs5MywxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRGaXhlZFRv
Vmlld3BvcnQoYm9vbCBmaXhlZCkgeyBtX2ZpeGVkVG9WaWV3cG9ydCA9IGZpeGVkOyB9CiAgICAg
Ym9vbCBmaXhlZFRvVmlld3BvcnQoKSBjb25zdCB7IHJldHVybiBtX2ZpeGVkVG9WaWV3cG9ydDsg
fQogCi0gICAgdm9pZCBkcmF3UmVwYWludENvdW50ZXIoR3JhcGhpY3NDb250ZXh0Kik7CisgICAg
Q29sb3IgZGVidWdCb3JkZXJDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdCb3JkZXJDb2xv
cjsgfQorICAgIGZsb2F0IGRlYnVnQm9yZGVyV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2RlYnVn
Qm9yZGVyV2lkdGg7IH0KKworICAgIHZvaWQgc2V0UmVwYWludENvdW50KGludCk7CisKIHByaXZh
dGU6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZURlc3Ryb3llZCgpOwogICAgIHZvaWQgZGlkRmx1
c2hDb21wb3NpdGluZ1N0YXRlKCk7CisgICAgdm9pZCB1cGRhdGVEZWJ1Z0JvcmRlckFuZFJlcGFp
bnRDb3VudCgpOwogICAgIHZvaWQgdXBkYXRlQmFja2luZ1N0b3JlKCk7CiAgICAgdm9pZCBwcmVw
YXJlQmFja2luZ1N0b3JlKCk7CiAgICAgYm9vbCBzaG91bGRIYXZlQmFja2luZ1N0b3JlKCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXIuaAppbmRleCBjNzI0MWE2YzlhNzIyYTY0NTJmN2MxOGM5ZDY2OTcxMjc2
NjkzNjZiLi5kOTYxMTZiNzA5OTM2OGFkNDQ1NTk5NmMxYjczMjAxNjI3MGRlZWMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyLmgKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIK
ICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgIlRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRy
aXguaCIKICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KIApAQCAtMTMwLDggKzEyOSw5IEBA
IHB1YmxpYzoKICAgICAgICAgQWxsRWRnZXMgPSBMZWZ0RWRnZSB8IFJpZ2h0RWRnZSB8IFRvcEVk
Z2UgfCBCb3R0b21FZGdlLAogICAgIH07CiAKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd0JvcmRlcihj
b25zdCBDb2xvciYsIGZsb2F0IGJvcmRlcldpZHRoLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJl
Y3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXggPSBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCgpKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdSZXBhaW50Q291bnRl
cihpbnQgdmFsdWUsIGludCBwb2ludFNpemUsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgo
KSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3Qm9yZGVyKGNvbnN0IENvbG9yJiwgZmxvYXQg
Ym9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVwYWludENvdW50ZXIoaW50IHJlcGFpbnRD
b3VudCwgY29uc3QgQ29sb3ImLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmKSA9IDA7CisKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1RleHR1cmUoY29uc3QgQml0
bWFwVGV4dHVyZSYsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0LCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgZmxvYXQg
b3BhY2l0eSA9IDEuMGYsIGNvbnN0IEJpdG1hcFRleHR1cmUqIG1hc2tUZXh0dXJlID0gMCwgdW5z
aWduZWQgZXhwb3NlZEVkZ2VzID0gQWxsRWRnZXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZHJh
d1NvbGlkQ29sb3IoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
LCBjb25zdCBDb2xvciYpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3Rv
cmUuY3BwCmluZGV4IGU4OTkyNTMxYjI4N2M1YjU5Nzc5ZTY0NzZlODAxYjhiNjk5NWMyYzcuLjMx
MDZkZjIyZTJlZTBlNGQ0NjdiYjg3N2NiMjExYTM3NDJmNzU2MzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5jcHAKQEAgLTEwNiw3ICsxMDYsNiBAQCB2b2lkIFRleHR1
cmVNYXBwZXJUaWxlOjpwYWludChUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBU
cmFuc2Zvcm1hdGlvbgogfQogCiBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OlRleHR1
cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZSgpCi0gICAgOiBtX2RyYXdzRGVidWdCb3JkZXJzKGZh
bHNlKQogewogfQogCkBAIC0xMzMsMTYgKzEzMiwzMSBAQCB1bnNpZ25lZCBUZXh0dXJlTWFwcGVy
QmFja2luZ1N0b3JlOjpjYWxjdWxhdGVFeHBvc2VkVGlsZUVkZ2VzKGNvbnN0IEZsb2F0UmVjdCYg
dAogICAgIHJldHVybiBleHBvc2VkRWRnZXM7CiB9CiAKK1RyYW5zZm9ybWF0aW9uTWF0cml4IFRl
eHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6YWRqdXN0ZWRUcmFuc2Zvcm1Gb3JSZWN0KGNv
bnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCkKK3sKKyAgICByZXR1cm4gVHJhbnNmb3JtYXRpb25N
YXRyaXg6OnJlY3RUb1JlY3QocmVjdCgpLCB0YXJnZXRSZWN0KTsKK30KKwogdm9pZCBUZXh0dXJl
TWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBw
ZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgQml0bWFwVGV4dHVy
ZSogbWFzaykKIHsKICAgICB1cGRhdGVDb250ZW50c0Zyb21JbWFnZUlmTmVlZGVkKHRleHR1cmVN
YXBwZXIpOwotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3JtID0gdHJh
bnNmb3JtOwotICAgIGFkanVzdGVkVHJhbnNmb3JtLm11bHRpcGx5KFRyYW5zZm9ybWF0aW9uTWF0
cml4OjpyZWN0VG9SZWN0KHJlY3QoKSwgdGFyZ2V0UmVjdCkpOwotICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbV90aWxlcy5zaXplKCk7ICsraSkgeworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IGFkanVzdGVkVHJhbnNmb3JtID0gdHJhbnNmb3JtICogYWRqdXN0ZWRUcmFuc2Zvcm1Gb3JSZWN0
KHRhcmdldFJlY3QpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90aWxlcy5zaXplKCk7
ICsraSkKICAgICAgICAgbV90aWxlc1tpXS5wYWludCh0ZXh0dXJlTWFwcGVyLCBhZGp1c3RlZFRy
YW5zZm9ybSwgb3BhY2l0eSwgbWFzaywgY2FsY3VsYXRlRXhwb3NlZFRpbGVFZGdlcyhyZWN0KCks
IG1fdGlsZXNbaV0ucmVjdCgpKSk7Ci0gICAgICAgIGlmIChtX2RyYXdzRGVidWdCb3JkZXJzKQot
ICAgICAgICAgICAgdGV4dHVyZU1hcHBlci0+ZHJhd0JvcmRlcihtX2RlYnVnQm9yZGVyQ29sb3Is
IG1fZGVidWdCb3JkZXJXaWR0aCwgbV90aWxlc1tpXS5yZWN0KCksIGFkanVzdGVkVHJhbnNmb3Jt
KTsKLSAgICB9Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpkcmF3
Qm9yZGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IENvbG9yJiBib3JkZXJD
b2xvciwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSkKK3sKKyAgICBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBhZGp1c3RlZFRyYW5zZm9ybSA9IHRyYW5zZm9ybSAqIGFkanVzdGVkVHJhbnNmb3Jt
Rm9yUmVjdCh0YXJnZXRSZWN0KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fdGlsZXMu
c2l6ZSgpOyArK2kpCisgICAgICAgIHRleHR1cmVNYXBwZXItPmRyYXdCb3JkZXIoYm9yZGVyQ29s
b3IsIGJvcmRlcldpZHRoLCBtX3RpbGVzW2ldLnJlY3QoKSwgYWRqdXN0ZWRUcmFuc2Zvcm0pOwor
fQorCit2b2lkIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6ZHJhd1JlcGFpbnRDb3Vu
dGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGludCByZXBhaW50Q291bnQsIGNvbnN0
IENvbG9yJiBib3JkZXJDb2xvciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKQoreworICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IGFkanVzdGVkVHJhbnNmb3JtID0gdHJhbnNmb3JtICogYWRqdXN0ZWRUcmFuc2Zvcm1Gb3JS
ZWN0KHRhcmdldFJlY3QpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90aWxlcy5zaXpl
KCk7ICsraSkKKyAgICAgICAgdGV4dHVyZU1hcHBlci0+ZHJhd1JlcGFpbnRDb3VudGVyKHJlcGFp
bnRDb3VudCwgYm9yZGVyQ29sb3IsIG1fdGlsZXNbaV0ucmVjdCgpLmxvY2F0aW9uKCksIGFkanVz
dGVkVHJhbnNmb3JtKTsKIH0KIAogdm9pZCBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6
OmNyZWF0ZU9yRGVzdHJveVRpbGVzSWZOZWVkZWQoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25z
dCBJbnRTaXplJiB0aWxlU2l6ZSwgYm9vbCBoYXNBbHBoYSkKQEAgLTIzNCwxMSArMjQ4LDUgQEAg
UGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6
OnRleHR1cmUoKSBjb25zdAogICAgIHJldHVybiBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+KCk7
CiB9CiAKLXZvaWQgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpzZXREZWJ1Z0JvcmRl
cihjb25zdCBDb2xvciYgY29sb3IsIGZsb2F0IHdpZHRoKQotewotICAgIG1fZGVidWdCb3JkZXJD
b2xvciA9IGNvbG9yOwotICAgIG1fZGVidWdCb3JkZXJXaWR0aCA9IHdpZHRoOwotfQotCiB9CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oCmluZGV4IDBkZDJkZjRi
MTk4YmQzMTFmZDQxYzU1YTMzNzcyMTg0Y2QxNGIzNGEuLjViNDA1YWFjYWRhYjUzMjM0ZjU4MjI3
MzFhNGQ5NTM0NDE1NmM0YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUu
aApAQCAtNDAsOCArNDAsMTMgQEAgY2xhc3MgVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZSA6IHB1
YmxpYyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllciwgcHVibGljIFJlZkMKIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSgpIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQsIEJpdG1h
cFRleHR1cmUqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRyYXdSZXBhaW50Q291bnRlcihUZXh0
dXJlTWFwcGVyKiwgaW50IC8qIHJlcGFpbnRDb3VudCAqLywgY29uc3QgQ29sb3ImLCBjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpCisgICAgeworICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CiAgICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlckJh
Y2tpbmdTdG9yZSgpIHsgfQogCisKIHByb3RlY3RlZDoKICAgICBzdGF0aWMgdW5zaWduZWQgY2Fs
Y3VsYXRlRXhwb3NlZFRpbGVFZGdlcyhjb25zdCBGbG9hdFJlY3QmIHRvdGFsUmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiB0aWxlUmVjdCk7CiB9OwpAQCAtOTQsMjYgKzk5LDIzIEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3QgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBw
ZXIqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0
LCBCaXRtYXBUZXh0dXJlKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRyYXdCb3JkZXIo
VGV4dHVyZU1hcHBlciosIGNvbnN0IENvbG9yJiwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JikgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIGRyYXdSZXBhaW50Q291bnRlcihUZXh0dXJlTWFwcGVyKiwgaW50IHJlcGFpbnRD
b3VudCwgY29uc3QgQ29sb3ImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYpIE9WRVJSSURFOwogICAgIHZvaWQgdXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBl
ciosIEltYWdlKiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW50UmVjdCYsIEJpdG1hcFRleHR1
cmU6OlVwZGF0ZUNvbnRlbnRzRmxhZyk7CiAgICAgdm9pZCB1cGRhdGVDb250ZW50cyhUZXh0dXJl
TWFwcGVyKiwgR3JhcGhpY3NMYXllciosIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEludFJlY3Qm
LCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDb250ZW50c0ZsYWcpOwogCiAgICAgdm9pZCBzZXRDb250
ZW50c1RvSW1hZ2UoSW1hZ2UqIGltYWdlKSB7IG1faW1hZ2UgPSBpbWFnZTsgfQotICAgIHZvaWQg
c2V0U2hvd0RlYnVnQm9yZGVycyhib29sIGRyYXdzRGVidWdCb3JkZXJzKSB7IG1fZHJhd3NEZWJ1
Z0JvcmRlcnMgPSBkcmF3c0RlYnVnQm9yZGVyczsgfQotICAgIHZvaWQgc2V0RGVidWdCb3JkZXIo
Y29uc3QgQ29sb3ImLCBmbG9hdCB3aWR0aCk7CiAKIHByaXZhdGU6CiAgICAgVGV4dHVyZU1hcHBl
clRpbGVkQmFja2luZ1N0b3JlKCk7CiAgICAgdm9pZCBjcmVhdGVPckRlc3Ryb3lUaWxlc0lmTmVl
ZGVkKGNvbnN0IEZsb2F0U2l6ZSYgYmFja2luZ1N0b3JlU2l6ZSwgY29uc3QgSW50U2l6ZSYgdGls
ZVNpemUsIGJvb2wgaGFzQWxwaGEpOwogICAgIHZvaWQgdXBkYXRlQ29udGVudHNGcm9tSW1hZ2VJ
Zk5lZWRlZChUZXh0dXJlTWFwcGVyKik7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggYWRqdXN0
ZWRUcmFuc2Zvcm1Gb3JSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOwogICAgIGlubGluZSBGbG9hdFJl
Y3QgcmVjdCgpIGNvbnN0IHsgcmV0dXJuIEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIG1f
c2l6ZSk7IH0KIAogICAgIFZlY3RvcjxUZXh0dXJlTWFwcGVyVGlsZT4gbV90aWxlczsKICAgICBG
bG9hdFNpemUgbV9zaXplOwogICAgIFJlZlB0cjxJbWFnZT4gbV9pbWFnZTsKLQotICAgIGJvb2wg
bV9kcmF3c0RlYnVnQm9yZGVyczsKLSAgICBDb2xvciBtX2RlYnVnQm9yZGVyQ29sb3I7Ci0gICAg
ZmxvYXQgbV9kZWJ1Z0JvcmRlcldpZHRoOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcApp
bmRleCBiODI5MThlYzAyYWViZmM4MjIzZjIzODQyNTZiZTM5YzNkNzk5NGJlLi42OWM1ODZiYTJi
NWQxMGE5OThlYTc4MzAyY2Y5NjJlMmM0YWFhODMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcApA
QCAtMzA5LDEwICszMDksMTYgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdCb3JkZXIoY29u
c3QgQ29sb3ImIGNvbG9yLCBmbG9hdCB3aWR0aCwgY29uc3QgRmxvYXRSZWMKICAgICBkcmF3KHRh
cmdldFJlY3QsIG1vZGVsVmlld01hdHJpeCwgcHJvZ3JhbS5nZXQoKSwgR3JhcGhpY3NDb250ZXh0
M0Q6OkxJTkVfTE9PUCwgY29sb3IuaGFzQWxwaGEoKSA/IFNob3VsZEJsZW5kIDogMCk7CiB9CiAK
LXZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3UmVwYWludENvdW50ZXIoaW50IHZhbHVlLCBpbnQg
cG9pbnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRQb2ludCwgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCkKK3N0YXRpYyBpbmxpbmUgUkdCQTMyIGNvbnZl
cnRBQkdSVG9BUkdCKFJHQkEzMiBwaXhlbCkKIHsKKyAgICByZXR1cm4gKChwaXhlbCA8PCAxNikg
JiAweGZmMDAwMCkgfCAoKHBpeGVsID4+IDE2KSAmIDB4ZmYpIHwgKHBpeGVsICYgMHhmZjAwZmYw
MCk7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3UmVwYWludENvdW50ZXIoaW50IHJl
cGFpbnRDb3VudCwgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRQ
b2ludCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCkKK3sKKyAg
ICBzdGF0aWMgY29uc3QgaW50IHBvaW50U2l6ZSA9IDg7CiAjaWYgUExBVEZPUk0oUVQpCi0gICAg
UVN0cmluZyBjb3VudGVyU3RyaW5nID0gUVN0cmluZzo6bnVtYmVyKHZhbHVlKTsKKyAgICBRU3Ry
aW5nIGNvdW50ZXJTdHJpbmcgPSBRU3RyaW5nOjpudW1iZXIocmVwYWludENvdW50KTsKIAogICAg
IFFGb250IGZvbnQoUVN0cmluZzo6ZnJvbUxhdGluMSgiTW9ub3NwYWNlIiksIHBvaW50U2l6ZSwg
UUZvbnQ6OkJvbGQpOwogICAgIGZvbnQuc2V0U3R5bGVIaW50KFFGb250OjpUeXBlV3JpdGVyKTsK
QEAgLTMyNyw3ICszMzMsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1JlcGFpbnRDb3Vu
dGVyKGludCB2YWx1ZSwgaW50IHBvaW50U2l6ZSwgY29uc3QgRmxvYXRQbwogCiAgICAgUUltYWdl
IGltYWdlKHNpemUsIE5hdGl2ZUltYWdlUXQ6OmRlZmF1bHRGb3JtYXRGb3JBbHBoYUVuYWJsZWRJ
bWFnZXMoKSk7CiAgICAgUVBhaW50ZXIgcGFpbnRlcigmaW1hZ2UpOwotICAgIHBhaW50ZXIuZmls
bFJlY3Qoc291cmNlUmVjdCwgUXQ6OmJsdWUpOyAvLyBTaW5jZSB3ZSB3b24ndCBzd2FwIFIrQiBm
b3Igc3BlZWQsIHRoaXMgd2lsbCBwYWludCByZWQuCisgICAgcGFpbnRlci5maWxsUmVjdChzb3Vy
Y2VSZWN0LCBjb252ZXJ0QUJHUlRvQVJHQihjb2xvci5yZ2IoKSkpOyAvLyBTaW5jZSB3ZSB3b24n
dCBzd2FwIFIrQiBmb3Igc3BlZWQsIHRoaXMgd2lsbCBwYWludCB0aGUgZ2l2ZW4gY29sb3IuCiAg
ICAgcGFpbnRlci5zZXRGb250KGZvbnQpOwogICAgIHBhaW50ZXIuc2V0UGVuKFF0Ojp3aGl0ZSk7
CiAgICAgcGFpbnRlci5kcmF3VGV4dCgyLCBoZWlnaHQgKiAwLjg1LCBjb3VudGVyU3RyaW5nKTsK
QEAgLTMzOCw3ICszNDQsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1JlcGFpbnRDb3Vu
dGVyKGludCB2YWx1ZSwgaW50IHBvaW50U2l6ZSwgY29uc3QgRmxvYXRQbwogICAgIGRyYXdUZXh0
dXJlKCp0ZXh0dXJlLCB0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIDEuMGYsIDAsIEFsbEVk
Z2VzKTsKIAogI2VsaWYgVVNFKENBSVJPKQotICAgIENTdHJpbmcgY291bnRlclN0cmluZyA9IFN0
cmluZzo6bnVtYmVyKHZhbHVlKS5hc2NpaSgpOworICAgIENTdHJpbmcgY291bnRlclN0cmluZyA9
IFN0cmluZzo6bnVtYmVyKHJlcGFpbnRDb3VudCkuYXNjaWkoKTsKICAgICAvLyBjYWlyb190ZXh0
X2V4dGVudHMoKSByZXF1aXJlcyBhIGNhaXJvX3QsIHNvIGRpbWVuc2lvbnMgbmVlZCB0byBiZSBn
dWVzc3RpbWF0ZWQuCiAgICAgaW50IHdpZHRoID0gY291bnRlclN0cmluZy5sZW5ndGgoKSAqIHBv
aW50U2l6ZSAqIDEuMjsKICAgICBpbnQgaGVpZ2h0ID0gcG9pbnRTaXplICogMS41OwpAQCAtMzQ2
LDcgKzM1Miw5IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3UmVwYWludENvdW50ZXIoaW50
IHZhbHVlLCBpbnQgcG9pbnRTaXplLCBjb25zdCBGbG9hdFBvCiAgICAgY2Fpcm9fc3VyZmFjZV90
KiBzdXJmYWNlID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGUoQ0FJUk9fRk9STUFUX0FSR0Iz
Miwgd2lkdGgsIGhlaWdodCk7CiAgICAgY2Fpcm9fdCogY3IgPSBjYWlyb19jcmVhdGUoc3VyZmFj
ZSk7CiAKLSAgICBjYWlyb19zZXRfc291cmNlX3JnYihjciwgMCwgMCwgMSk7IC8vIFNpbmNlIHdl
IHdvbid0IHN3YXAgUitCIGZvciBzcGVlZCwgdGhpcyB3aWxsIHBhaW50IHJlZC4KKyAgICBmbG9h
dCByLCBnLCBiLCBhOworICAgIGNvbG9yLmdldFJHQkEociwgZywgYiwgYSk7CisgICAgY2Fpcm9f
c2V0X3NvdXJjZV9yZ2JhKGNyLCBiLCBnLCByLCBhKTsgLy8gU2luY2Ugd2Ugd29uJ3Qgc3dhcCBS
K0IgZm9yIHNwZWVkLCB0aGlzIHdpbGwgcGFpbnQgdGhlIGdpdmVuIGNvbG9yLgogICAgIGNhaXJv
X3JlY3RhbmdsZShjciwgMCwgMCwgd2lkdGgsIGhlaWdodCk7CiAgICAgY2Fpcm9fZmlsbChjcik7
CiAKQEAgLTM3MCw3ICszNzgsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1JlcGFpbnRD
b3VudGVyKGludCB2YWx1ZSwgaW50IHBvaW50U2l6ZSwgY29uc3QgRmxvYXRQbwogICAgIGNhaXJv
X2Rlc3Ryb3koY3IpOwogCiAjZWxzZQotICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CisgICAgVU5V
U0VEX1BBUkFNKHJlcGFpbnRDb3VudCk7CiAgICAgVU5VU0VEX1BBUkFNKHBvaW50U2l6ZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRhcmdldFBvaW50KTsKICAgICBVTlVTRURfUEFSQU0obW9kZWxWaWV3
TWF0cml4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaAppbmRleCAxNjA1MDdjNjA2OGZlZmMzNTQ4NDMwZmJl
ZGFhZjM1MDYzZDk3NDE2Li45ODNlMmEwNmMzYzQzZDYzYWE5ZWJhMWFmNmMxYTFkOGRmNTkzZGRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJHTC5oCkBAIC01Miw4ICs1Miw4IEBAIHB1YmxpYzoKICAgICB0eXBl
ZGVmIGludCBGbGFnczsKIAogICAgIC8vIFRleHR1cmVNYXBwZXIgaW1wbGVtZW50YXRpb24KLSAg
ICB2aXJ0dWFsIHZvaWQgZHJhd0JvcmRlcihjb25zdCBDb2xvciYsIGZsb2F0IGJvcmRlcldpZHRo
LCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiBtb2RlbFZpZXdNYXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKSBPVkVSUklERTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVyKGludCB2YWx1ZSwgaW50IHBvaW50U2l6
ZSwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZp
ZXdNYXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgZHJhd0JvcmRlcihjb25zdCBDb2xvciYsIGZsb2F0IGJvcmRlcldpZHRoLCBjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBkcmF3UmVwYWludENvdW50ZXIoaW50IHJlcGFpbnRDb3VudCwgY29uc3QgQ29s
b3ImLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1RleHR1cmUoY29uc3QgQml0bWFwVGV4dHVyZSYs
IGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgb3Bh
Y2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUsIHVuc2lnbmVkIGV4cG9zZWRF
ZGdlcykgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdUZXh0dXJlKFBsYXRmb3JtM0RP
YmplY3QgdGV4dHVyZSwgRmxhZ3MsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBjb25zdCBG
bG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZp
ZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEJpdG1hcFRleHR1cmUqIG1hc2tUZXh0dXJl
LCB1bnNpZ25lZCBleHBvc2VkRWRnZXMgPSBBbGxFZGdlcyk7CiAgICAgdmlydHVhbCB2b2lkIGRy
YXdTb2xpZENvbG9yKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiwgY29uc3QgQ29sb3ImKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1
ZmZlci5jcHAKaW5kZXggZDlkYmM4MGU2ZDJjZDQ5NzFkYWMwYTc1MGYzNGI4MjkyYzcyMTU2Ni4u
YjRlMTIyZDJjZDhkYTA5NzA1Zjc5YzRiZWNkY2M2M2YwYWE4MzIyYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1
ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKICNpZiBQTEFURk9S
TShRVCkKICNpbmNsdWRlICJOYXRpdmVJbWFnZVF0LmgiCiAjZW5kaWYKKyNpbmNsdWRlICJOb3RJ
bXBsZW1lbnRlZC5oIgogCiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCkBAIC0xNjQsNiArMTY1
LDE2IEBAIHZvaWQgVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyOjpkcmF3U29saWRDb2xvcihjb25z
dCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IFRyYW5zCiAgICAgY29udGV4dC0+cmVzdG9yZSgpOwog
fQogCit2b2lkIFRleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlcjo6ZHJhd0JvcmRlcihjb25zdCBDb2xv
ciYsIGZsb2F0IC8qIGJvcmRlcldpZHRoICovLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBU
ZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXI6OmRyYXdSZXBhaW50Q291bnRlcihpbnQgLyogcmVwYWlu
dENvdW50ICovLCBjb25zdCBDb2xvciYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogI2lmIEVOQUJM
RShDU1NfRklMVEVSUykKIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gQml0bWFwVGV4dHVyZUlt
YWdlQnVmZmVyOjphcHBseUZpbHRlcnMoVGV4dHVyZU1hcHBlciosIGNvbnN0IEJpdG1hcFRleHR1
cmUmIGNvbnRlbnRUZXh0dXJlLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJJbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5oCmluZGV4IDlkZTZkNGNiZDVlYjE3ZTkz
NDg4MDE4YTYyYTcxMzFkODk3Mzg0ZWIuLjViMmU5NzgzZDY5YzA1ODYzOTI3MmEyYjYzMWM3NmFl
MTA1NzNkM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmgKQEAgLTUzLDE0
ICs1Myw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxUZXh0dXJlTWFwcGVyPiBj
cmVhdGUoKSB7IHJldHVybiBhZG9wdFB0cihuZXcgVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyKTsg
fQogCiAgICAgLy8gVGV4dHVyZU1hcHBlciBpbXBsZW1lbnRhdGlvbgotICAgIHZpcnR1YWwgdm9p
ZCBkcmF3Qm9yZGVyKGNvbnN0IENvbG9yJiwgZmxvYXQgLyogYm9yZGVyV2lkdGggKi8sIGNvbnN0
IEZsb2F0UmVjdCYgLyogdGFyZ2V0UmVjdCAqLywgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IG1vZGVsVmlld01hdHJpeCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpIE9WRVJSSURFCi0gICAg
ewotICAgICAgICBVTlVTRURfUEFSQU0obW9kZWxWaWV3TWF0cml4KTsKLSAgICB9OwotICAgIHZp
cnR1YWwgdm9pZCBkcmF3UmVwYWludENvdW50ZXIoaW50IC8qIHZhbHVlICovLCBpbnQgLyogcG9p
bnRTaXplICovLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IG1vZGVsVmlld01hdHJpeCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpIE9WRVJSSURFCi0gICAg
ewotICAgICAgICBVTlVTRURfUEFSQU0obW9kZWxWaWV3TWF0cml4KTsKLSAgICB9OworICAgIHZp
cnR1YWwgdm9pZCBkcmF3Qm9yZGVyKGNvbnN0IENvbG9yJiwgZmxvYXQgYm9yZGVyV2lkdGgsIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIGRyYXdSZXBhaW50Q291bnRlcihpbnQgcmVwYWludENvdW50LCBjb25z
dCBDb2xvciYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYp
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3VGV4dHVyZShjb25zdCBCaXRtYXBUZXh0
dXJlJiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEJpdG1hcFRleHR1cmUqIG1hc2tUZXh0dXJlLCB1
bnNpZ25lZCBleHBvc2VkRWRnZXMpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3U29s
aWRDb2xvcihjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNv
bnN0IENvbG9yJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luQ2xpcChjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IEZsb2F0UmVjdCYpIE9WRVJSSURFOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckxheWVyLmNwcAppbmRleCA1ZGZhMTgzOGVkNGI0YzIxODQ3NTA0MzQ2ZWVmMDM2
NDM5YjUxYTliLi44ZTgwYjE5NDIzNTlmYmM4Y2E2MGQ4MTNmYjk3MzE2ZjMzOTE1NjQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcApAQCAtMTI5LDYgKzEyOSw4IEBAIHZvaWQgVGV4dHVy
ZU1hcHBlckxheWVyOjpwYWludFNlbGYoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYg
b3B0aW9ucykKIAogICAgIGlmIChtX3N0YXRlLnNvbGlkQ29sb3IuaXNWYWxpZCgpICYmICFtX3N0
YXRlLmNvbnRlbnRzUmVjdC5pc0VtcHR5KCkpIHsKICAgICAgICAgb3B0aW9ucy50ZXh0dXJlTWFw
cGVyLT5kcmF3U29saWRDb2xvcihtX3N0YXRlLmNvbnRlbnRzUmVjdCwgdHJhbnNmb3JtLCBibGVu
ZFdpdGhPcGFjaXR5KG1fc3RhdGUuc29saWRDb2xvciwgb3BhY2l0eSkpOworICAgICAgICBpZiAo
bV9zdGF0ZS5zaG93RGVidWdCb3JkZXJzKQorICAgICAgICAgICAgb3B0aW9ucy50ZXh0dXJlTWFw
cGVyLT5kcmF3Qm9yZGVyKG1fc3RhdGUuZGVidWdCb3JkZXJDb2xvciwgbV9zdGF0ZS5kZWJ1Z0Jv
cmRlcldpZHRoLCBsYXllclJlY3QoKSwgdHJhbnNmb3JtKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtMTM2LDExICsxMzgsMTggQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50
U2VsZihjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBvcHRpb25zKQogICAgICAgICBB
U1NFUlQobV9zdGF0ZS5kcmF3c0NvbnRlbnQgJiYgbV9zdGF0ZS5jb250ZW50c1Zpc2libGUgJiYg
IW1fc3RhdGUuc2l6ZS5pc0VtcHR5KCkpOwogICAgICAgICBBU1NFUlQoIWxheWVyUmVjdCgpLmlz
RW1wdHkoKSk7CiAgICAgICAgIG1fYmFja2luZ1N0b3JlLT5wYWludFRvVGV4dHVyZU1hcHBlcihv
cHRpb25zLnRleHR1cmVNYXBwZXIsIGxheWVyUmVjdCgpLCB0cmFuc2Zvcm0sIG9wYWNpdHksIG1h
c2suZ2V0KCkpOworICAgICAgICBpZiAobV9zdGF0ZS5zaG93RGVidWdCb3JkZXJzKQorICAgICAg
ICAgICAgbV9iYWNraW5nU3RvcmUtPmRyYXdCb3JkZXIob3B0aW9ucy50ZXh0dXJlTWFwcGVyLCBt
X3N0YXRlLmRlYnVnQm9yZGVyQ29sb3IsIG1fc3RhdGUuZGVidWdCb3JkZXJXaWR0aCwgbGF5ZXJS
ZWN0KCksIHRyYW5zZm9ybSk7CisgICAgICAgIC8vIE9ubHkgZHJhdyByZXBhaW50IGNvdW50IGZv
ciB0aGUgbWFpbiBiYWNraW5nIHN0b3JlLgorICAgICAgICBpZiAobV9zdGF0ZS5zaG93UmVwYWlu
dENvdW50ZXIpCisgICAgICAgICAgICBtX2JhY2tpbmdTdG9yZS0+ZHJhd1JlcGFpbnRDb3VudGVy
KG9wdGlvbnMudGV4dHVyZU1hcHBlciwgbV9zdGF0ZS5yZXBhaW50Q291bnQsIG1fc3RhdGUuZGVi
dWdCb3JkZXJDb2xvciwgbGF5ZXJSZWN0KCksIHRyYW5zZm9ybSk7CiAgICAgfQogCiAgICAgaWYg
KG1fY29udGVudHNMYXllcikgewogICAgICAgICBBU1NFUlQoIWxheWVyUmVjdCgpLmlzRW1wdHko
KSk7CiAgICAgICAgIG1fY29udGVudHNMYXllci0+cGFpbnRUb1RleHR1cmVNYXBwZXIob3B0aW9u
cy50ZXh0dXJlTWFwcGVyLCBtX3N0YXRlLmNvbnRlbnRzUmVjdCwgdHJhbnNmb3JtLCBvcGFjaXR5
LCBtYXNrLmdldCgpKTsKKyAgICAgICAgaWYgKG1fc3RhdGUuc2hvd0RlYnVnQm9yZGVycykKKyAg
ICAgICAgICAgIG1fY29udGVudHNMYXllci0+ZHJhd0JvcmRlcihvcHRpb25zLnRleHR1cmVNYXBw
ZXIsIG1fc3RhdGUuZGVidWdCb3JkZXJDb2xvciwgbV9zdGF0ZS5kZWJ1Z0JvcmRlcldpZHRoLCBt
X3N0YXRlLmNvbnRlbnRzUmVjdCwgdHJhbnNmb3JtKTsKICAgICB9CiB9CiAKQEAgLTM4Myw4ICsz
OTIsNiBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9y
VGhpc0xheWVyT25seShHcmFwaGljc0xheWVyVGV4dAogICAgIGlmIChjaGFuZ2VNYXNrID09IE5v
Q2hhbmdlcyAmJiBncmFwaGljc0xheWVyLT5tX2FuaW1hdGlvbnMuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBncmFwaGljc0xheWVyLT51cGRhdGVEZWJ1Z0luZGljYXRvcnMoKTsK
LQogICAgIGlmIChjaGFuZ2VNYXNrICYgQ2hpbGRyZW5DaGFuZ2UpCiAgICAgICAgIHNldENoaWxk
cmVuKGdyYXBoaWNzTGF5ZXItPmNoaWxkcmVuKCkpOwogCkBAIC00MDEsNiArNDA4LDkgQEAgdm9p
ZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9u
bHkoR3JhcGhpY3NMYXllclRleHQKICAgICBpZiAoY2hhbmdlTWFzayAmIEFuaW1hdGlvbkNoYW5n
ZSkKICAgICAgICAgbV9hbmltYXRpb25zID0gZ3JhcGhpY3NMYXllci0+bV9hbmltYXRpb25zOwog
CisgICAgaWYgKGNoYW5nZU1hc2sgJiBSZXBhaW50Q291bnRDaGFuZ2UpCisgICAgICAgIG1fc3Rh
dGUucmVwYWludENvdW50ID0gZ3JhcGhpY3NMYXllci0+cmVwYWludENvdW50KCk7CisKICAgICBt
X3N0YXRlLm1hc2tMYXllciA9IHRvVGV4dHVyZU1hcHBlckxheWVyKGdyYXBoaWNzTGF5ZXItPm1h
c2tMYXllcigpKTsKICAgICBtX3N0YXRlLnJlcGxpY2FMYXllciA9IHRvVGV4dHVyZU1hcHBlckxh
eWVyKGdyYXBoaWNzTGF5ZXItPnJlcGxpY2FMYXllcigpKTsKICAgICBtX3N0YXRlLnBvcyA9IGdy
YXBoaWNzTGF5ZXItPnBvc2l0aW9uKCk7CkBAIC00MjMsNiArNDMzLDExIEBAIHZvaWQgVGV4dHVy
ZU1hcHBlckxheWVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KEdyYXBo
aWNzTGF5ZXJUZXh0CiAjZW5kaWYKICAgICBtX2ZpeGVkVG9WaWV3cG9ydCA9IGdyYXBoaWNzTGF5
ZXItPmZpeGVkVG9WaWV3cG9ydCgpOwogCisgICAgbV9zdGF0ZS5zaG93RGVidWdCb3JkZXJzID0g
Z3JhcGhpY3NMYXllci0+aXNTaG93aW5nRGVidWdCb3JkZXIoKTsKKyAgICBtX3N0YXRlLmRlYnVn
Qm9yZGVyQ29sb3IgPSB0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKGdyYXBoaWNzTGF5ZXIp
LT5kZWJ1Z0JvcmRlckNvbG9yKCk7CisgICAgbV9zdGF0ZS5kZWJ1Z0JvcmRlcldpZHRoID0gdG9H
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcihncmFwaGljc0xheWVyKS0+ZGVidWdCb3JkZXJXaWR0
aCgpOworICAgIG1fc3RhdGUuc2hvd1JlcGFpbnRDb3VudGVyID0gZ3JhcGhpY3NMYXllci0+aXNT
aG93aW5nUmVwYWludENvdW50ZXIoKTsKKwogICAgIG1fY29udGVudHNMYXllciA9IGdyYXBoaWNz
TGF5ZXItPnBsYXRmb3JtTGF5ZXIoKTsKIAogICAgIG1fY3VycmVudFRyYW5zZm9ybS5zZXRQb3Np
dGlvbihhZGp1c3RlZFBvc2l0aW9uKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCmluZGV4IGY0
MWU1MmE5N2M0YjMyOGM0NGNmNjUwYWVlMzRjZDMwMGE0NjUzOWEuLjU3NWJiMjdlYjdhODc0YzE4
NGI1ODFlZDJiZDQzNWQxMDE1YTgzYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKQEAgLTcx
LDcgKzcxLDEwIEBAIHB1YmxpYzoKIAogICAgICAgICBSZXBsaWNhTGF5ZXJDaGFuZ2UgPSAgICAg
ICAgKDFMIDw8IDIxKSwKICAgICAgICAgQW5pbWF0aW9uQ2hhbmdlID0gICAgICAgICAgICgxTCA8
PCAyMiksCi0gICAgICAgIEZpbHRlckNoYW5nZSA9ICAgICAgICAgICAgICAoMUwgPDwgMjMpCisg
ICAgICAgIEZpbHRlckNoYW5nZSA9ICAgICAgICAgICAgICAoMUwgPDwgMjMpLAorCisgICAgICAg
IERlYnVnVmlzdWFsc0NoYW5nZSA9ICAgICAgICAoMUwgPDwgMjQpLAorICAgICAgICBSZXBhaW50
Q291bnRDaGFuZ2UgPSAgICAgICAgKDFMIDw8IDI1KQogICAgIH07CiAKICAgICBUZXh0dXJlTWFw
cGVyTGF5ZXIoKQpAQCAtMTcyLDYgKzE3NSw5IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKENTU19G
SUxURVJTKQogICAgICAgICBGaWx0ZXJPcGVyYXRpb25zIGZpbHRlcnM7CiAjZW5kaWYKKyAgICAg
ICAgQ29sb3IgZGVidWdCb3JkZXJDb2xvcjsKKyAgICAgICAgZmxvYXQgZGVidWdCb3JkZXJXaWR0
aDsKKyAgICAgICAgaW50IHJlcGFpbnRDb3VudDsKIAogICAgICAgICBib29sIHByZXNlcnZlczNE
IDogMTsKICAgICAgICAgYm9vbCBtYXNrc1RvQm91bmRzIDogMTsKQEAgLTE4MCwxMSArMTg2LDE1
IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgY29udGVudHNPcGFxdWUgOiAxOwogICAgICAgICBi
b29sIGJhY2tmYWNlVmlzaWJpbGl0eSA6IDE7CiAgICAgICAgIGJvb2wgdmlzaWJsZSA6IDE7Cisg
ICAgICAgIGJvb2wgc2hvd0RlYnVnQm9yZGVycyA6IDE7CisgICAgICAgIGJvb2wgc2hvd1JlcGFp
bnRDb3VudGVyIDogMTsKIAogICAgICAgICBTdGF0ZSgpCiAgICAgICAgICAgICA6IG9wYWNpdHko
MSkKICAgICAgICAgICAgICwgbWFza0xheWVyKDApCiAgICAgICAgICAgICAsIHJlcGxpY2FMYXll
cigwKQorICAgICAgICAgICAgLCBkZWJ1Z0JvcmRlcldpZHRoKDApCisgICAgICAgICAgICAsIHJl
cGFpbnRDb3VudCgwKQogICAgICAgICAgICAgLCBwcmVzZXJ2ZXMzRChmYWxzZSkKICAgICAgICAg
ICAgICwgbWFza3NUb0JvdW5kcyhmYWxzZSkKICAgICAgICAgICAgICwgZHJhd3NDb250ZW50KGZh
bHNlKQpAQCAtMTkyLDYgKzIwMiw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAsIGNvbnRlbnRz
T3BhcXVlKGZhbHNlKQogICAgICAgICAgICAgLCBiYWNrZmFjZVZpc2liaWxpdHkoZmFsc2UpCiAg
ICAgICAgICAgICAsIHZpc2libGUodHJ1ZSkKKyAgICAgICAgICAgICwgc2hvd0RlYnVnQm9yZGVy
cyhmYWxzZSkKKyAgICAgICAgICAgICwgc2hvd1JlcGFpbnRDb3VudGVyKGZhbHNlKQogICAgICAg
ICB7CiAgICAgICAgIH0KICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXIuaAppbmRleCAzOGFmMDNlODliNjI0ODFhYmFmMzIwOThjM2E4MTdhYjRkMDAwYzFlLi5mNDg3
OTUyNjc2ODAxOTA4NWNiZGVmODllNjZlZTQ3ZGVmODEwMTE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXIuaApAQCAtMjQsMTggKzI0LDIwIEBACiAjaW5jbHVkZSAiR3Jh
cGhpY3NTdXJmYWNlLmgiCiAjZW5kaWYKIAorI2luY2x1ZGUgIlRleHR1cmVNYXBwZXIuaCIKICNp
bmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIFRleHR1cmVNYXBwZXI7Ci1jbGFzcyBCaXRtYXBUZXh0dXJlOwotCiBjbGFzcyBUZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllciB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+VGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXIoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVN
YXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBmbG9h
dCBvcGFjaXR5ID0gMS4wLCBCaXRtYXBUZXh0dXJlKiBtYXNrID0gMCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBzd2FwQnVmZmVycygpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkcmF3Qm9yZGVyKFRl
eHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IENvbG9yJiBjb2xvciwgZmxvYXQgYm9y
ZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmIHRyYW5zZm9ybSkKKyAgICB7CisgICAgICAgIHRleHR1cmVNYXBwZXItPmRyYXdC
b3JkZXIoY29sb3IsIGJvcmRlcldpZHRoLCB0YXJnZXRSZWN0LCB0cmFuc2Zvcm0pOworICAgIH0K
ICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICB2aXJ0dWFsIEludFNpemUgcGxhdGZvcm1M
YXllclNpemUoKSBjb25zdCB7IHJldHVybiBJbnRTaXplKCk7IH0KICAgICB2aXJ0dWFsIHVpbnQz
Ml90IGNvcHlUb0dyYXBoaWNzU3VyZmFjZSgpIHsgcmV0dXJuIDA7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJJ
bmZvLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZExheWVySW5mby5oCmluZGV4IDY1MjA1NmRkODEwNDIzNjQwZmNmNjk2OTA1YTdkZTczN2Q2
ZDRiOWUuLmNmMWYwM2VkYmJiYjJlNTEyZjY5ZWJhYjljM2YyMzBlYzRhMWYzMjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
TGF5ZXJJbmZvLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRMYXllckluZm8uaApAQCAtNDMsNiArNDMsNyBAQCBzdHJ1Y3QgQ29vcmRp
bmF0ZWRMYXllckluZm8gewogICAgICAgICAsIG1hc2soSW52YWxpZENvb3JkaW5hdGVkTGF5ZXJJ
RCkKICAgICAgICAgLCBpbWFnZUlEKEludmFsaWRDb29yZGluYXRlZEltYWdlQmFja2luZ0lEKQog
ICAgICAgICAsIG9wYWNpdHkoMCkKKyAgICAgICAgLCBkZWJ1Z0JvcmRlcldpZHRoKDApCiAgICAg
ICAgICwgZmxhZ3MoMCkgeyB9CiAKICAgICBDb29yZGluYXRlZExheWVySUQgcmVwbGljYTsKQEAg
LTU3LDYgKzU4LDggQEAgc3RydWN0IENvb3JkaW5hdGVkTGF5ZXJJbmZvIHsKICAgICBXZWJDb3Jl
OjpJbnRSZWN0IGNvbnRlbnRzUmVjdDsKICAgICBmbG9hdCBvcGFjaXR5OwogICAgIFdlYkNvcmU6
OkNvbG9yIHNvbGlkQ29sb3I7CisgICAgV2ViQ29yZTo6Q29sb3IgZGVidWdCb3JkZXJDb2xvcjsK
KyAgICBmbG9hdCBkZWJ1Z0JvcmRlcldpZHRoOwogCiAgICAgdW5pb24gewogICAgICAgICBzdHJ1
Y3QgewpAQCAtNjgsNiArNzEsOCBAQCBzdHJ1Y3QgQ29vcmRpbmF0ZWRMYXllckluZm8gewogICAg
ICAgICAgICAgYm9vbCBwcmVzZXJ2ZXMzRCA6IDE7CiAgICAgICAgICAgICBib29sIGlzUm9vdExh
eWVyOiAxOwogICAgICAgICAgICAgYm9vbCBmaXhlZFRvVmlld3BvcnQgOiAxOworICAgICAgICAg
ICAgYm9vbCBzaG93RGVidWdCb3JkZXJzIDogMTsKKyAgICAgICAgICAgIGJvb2wgc2hvd1JlcGFp
bnRDb3VudGVyIDogMTsKICAgICAgICAgfTsKICAgICAgICAgdW5zaWduZWQgZmxhZ3M7CiAgICAg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcAppbmRleCA0
YTdiYjEwODZlZTdhODY3YjJkM2ZkNjgwYzVhMzdkYjA1YjhiN2Q4Li4wNjE3OWZlNDg5OGViNzlk
Njc5YzM3ZTZmNDEyMDRmYmZkMTBjZWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRCYWNraW5nU3RvcmUuY3BwCkBAIC04OCw3ICs4OCw2IEBAIHZvaWQgQ29vcmRpbmF0ZWRCYWNr
aW5nU3RvcmU6OnVwZGF0ZVRpbGUodWludDMyX3QgaWQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJl
Y3QsCiB7CiAgICAgSGFzaE1hcDx1aW50MzJfdCwgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxl
Pjo6aXRlcmF0b3IgaXQgPSBtX3RpbGVzLmZpbmQoaWQpOwogICAgIEFTU0VSVChpdCAhPSBtX3Rp
bGVzLmVuZCgpKTsKLSAgICBpdC0+dmFsdWUuaW5jcmVtZW50UmVwYWludENvdW50KCk7CiAgICAg
aXQtPnZhbHVlLnNldEJhY2tCdWZmZXIodGlsZVJlY3QsIHNvdXJjZVJlY3QsIGJhY2tCdWZmZXIs
IG9mZnNldCk7CiB9CiAKQEAgLTEwOSwyOCArMTA4LDE1IEBAIHZvaWQgQ29vcmRpbmF0ZWRCYWNr
aW5nU3RvcmU6OnNldFNpemUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplKQogICAgIG1f
c2l6ZSA9IHNpemU7CiB9CiAKLXN0YXRpYyBib29sIHNob3VsZFNob3dUaWxlRGVidWdWaXN1YWxz
KCkKK3ZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnBhaW50VGlsZXNUb1RleHR1cmVNYXBw
ZXIoVmVjdG9yPFRleHR1cmVNYXBwZXJUaWxlKj4mIHRpbGVzLCBUZXh0dXJlTWFwcGVyKiB0ZXh0
dXJlTWFwcGVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBv
cGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrLCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7Ci0j
aWYgUExBVEZPUk0oUVQpCi0gICAgcmV0dXJuIChxZ2V0ZW52KCJRVF9XRUJLSVRfU0hPV19DT01Q
T1NJVElOR19ERUJVR19WSVNVQUxTIikgPT0gIjEiKTsKLSNlbGlmIFVTRShDQUlSTykKLSAgICBy
ZXR1cm4gKFN0cmluZyhnZXRlbnYoIldFQktJVF9TSE9XX0NPTVBPU0lUSU5HX0RFQlVHX1ZJU1VB
TFMiKSkgPT0gIjEiKTsKLSNlbmRpZgotICAgIHJldHVybiBmYWxzZTsKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHRpbGVzLnNpemUoKTsgKytpKQorICAgICAgICB0aWxlc1tpXS0+cGFpbnQo
dGV4dHVyZU1hcHBlciwgdHJhbnNmb3JtLCBvcGFjaXR5LCBtYXNrLCBjYWxjdWxhdGVFeHBvc2Vk
VGlsZUVkZ2VzKHJlY3QsIHRpbGVzW2ldLT5yZWN0KCkpKTsKIH0KIAotdm9pZCBDb29yZGluYXRl
ZEJhY2tpbmdTdG9yZTo6cGFpbnRUaWxlc1RvVGV4dHVyZU1hcHBlcihWZWN0b3I8VGV4dHVyZU1h
cHBlclRpbGUqPiYgdGlsZXMsIFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1
cmUqIG1hc2ssIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKK1RyYW5zZm9ybWF0aW9uTWF0cml4IENv
b3JkaW5hdGVkQmFja2luZ1N0b3JlOjphZGp1c3RlZFRyYW5zZm9ybUZvclJlY3QoY29uc3QgRmxv
YXRSZWN0JiB0YXJnZXRSZWN0KQogewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdGlsZXMu
c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgVGV4dHVyZU1hcHBlclRpbGUqIHRpbGUgPSB0aWxlc1tp
XTsKLSAgICAgICAgdGlsZS0+cGFpbnQodGV4dHVyZU1hcHBlciwgdHJhbnNmb3JtLCBvcGFjaXR5
LCBtYXNrLCBjYWxjdWxhdGVFeHBvc2VkVGlsZUVkZ2VzKHJlY3QsIHRpbGUtPnJlY3QoKSkpOwot
ICAgICAgICBzdGF0aWMgYm9vbCBzaG91bGREZWJ1ZyA9IHNob3VsZFNob3dUaWxlRGVidWdWaXN1
YWxzKCk7Ci0gICAgICAgIGlmICghc2hvdWxkRGVidWcpCi0gICAgICAgICAgICBjb250aW51ZTsK
LQotICAgICAgICB0ZXh0dXJlTWFwcGVyLT5kcmF3Qm9yZGVyKENvbG9yKDB4RkYsIDAsIDApLCAy
LCB0aWxlLT5yZWN0KCksIHRyYW5zZm9ybSk7Ci0gICAgICAgIHRleHR1cmVNYXBwZXItPmRyYXdS
ZXBhaW50Q291bnRlcihzdGF0aWNfY2FzdDxDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGUqPih0
aWxlKS0+cmVwYWludENvdW50KCksIDgsIHRpbGUtPnJlY3QoKS5sb2NhdGlvbigpLCB0cmFuc2Zv
cm0pOwotICAgIH0KKyAgICByZXR1cm4gVHJhbnNmb3JtYXRpb25NYXRyaXg6OnJlY3RUb1JlY3Qo
cmVjdCgpLCB0YXJnZXRSZWN0KTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6
cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3Qg
RmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNm
b3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKQpAQCAtMTY0LDE0ICsxNTAs
MjggQEAgdm9pZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIo
VGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwKICAgICAgICAgcHJldmlvdXNUaWxlc1RvUGFp
bnQuYXBwZW5kKCZ0aWxlKTsKICAgICB9CiAKLSAgICBGbG9hdFJlY3QgcmVjdE9uQ29udGVudHMo
RmxvYXRQb2ludDo6emVybygpLCBtX3NpemUpOwotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFk
anVzdGVkVHJhbnNmb3JtID0gdHJhbnNmb3JtOwogICAgIC8vIHRhcmdldFJlY3QgaXMgb24gdGhl
IGNvbnRlbnRzIGNvb3JkaW5hdGUgc3lzdGVtLCBzbyB3ZSBtdXN0IGNvbXBhcmUgdHdvIHJlY3Rz
IG9uIHRoZSBjb250ZW50cyBjb29yZGluYXRlIHN5c3RlbS4KICAgICAvLyBTZWUgVGlsZWRCYWNr
aW5nU3RvcmUuCi0gICAgYWRqdXN0ZWRUcmFuc2Zvcm0ubXVsdGlwbHkoVHJhbnNmb3JtYXRpb25N
YXRyaXg6OnJlY3RUb1JlY3QocmVjdE9uQ29udGVudHMsIHRhcmdldFJlY3QpKTsKKyAgICBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBhZGp1c3RlZFRyYW5zZm9ybSA9IHRyYW5zZm9ybSAqIGFkanVzdGVk
VHJhbnNmb3JtRm9yUmVjdCh0YXJnZXRSZWN0KTsKKworICAgIHBhaW50VGlsZXNUb1RleHR1cmVN
YXBwZXIocHJldmlvdXNUaWxlc1RvUGFpbnQsIHRleHR1cmVNYXBwZXIsIGFkanVzdGVkVHJhbnNm
b3JtLCBvcGFjaXR5LCBtYXNrLCByZWN0KCkpOworICAgIHBhaW50VGlsZXNUb1RleHR1cmVNYXBw
ZXIodGlsZXNUb1BhaW50LCB0ZXh0dXJlTWFwcGVyLCBhZGp1c3RlZFRyYW5zZm9ybSwgb3BhY2l0
eSwgbWFzaywgcmVjdCgpKTsKK30KIAotICAgIHBhaW50VGlsZXNUb1RleHR1cmVNYXBwZXIocHJl
dmlvdXNUaWxlc1RvUGFpbnQsIHRleHR1cmVNYXBwZXIsIGFkanVzdGVkVHJhbnNmb3JtLCBvcGFj
aXR5LCBtYXNrLCByZWN0T25Db250ZW50cyk7Ci0gICAgcGFpbnRUaWxlc1RvVGV4dHVyZU1hcHBl
cih0aWxlc1RvUGFpbnQsIHRleHR1cmVNYXBwZXIsIGFkanVzdGVkVHJhbnNmb3JtLCBvcGFjaXR5
LCBtYXNrLCByZWN0T25Db250ZW50cyk7Cit2b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpk
cmF3Qm9yZGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IENvbG9yJiBib3Jk
ZXJDb2xvciwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSkKK3sKKyAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBhZGp1c3RlZFRyYW5zZm9ybSA9IHRyYW5zZm9ybSAqIGFkanVzdGVkVHJhbnNm
b3JtRm9yUmVjdCh0YXJnZXRSZWN0KTsKKyAgICBIYXNoTWFwPHVpbnQzMl90LCBDb29yZGluYXRl
ZEJhY2tpbmdTdG9yZVRpbGU+OjppdGVyYXRvciBlbmQgPSBtX3RpbGVzLmVuZCgpOworICAgIGZv
ciAoSGFzaE1hcDx1aW50MzJfdCwgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlPjo6aXRlcmF0
b3IgaXQgPSBtX3RpbGVzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgdGV4dHVy
ZU1hcHBlci0+ZHJhd0JvcmRlcihib3JkZXJDb2xvciwgYm9yZGVyV2lkdGgsIGl0LT52YWx1ZS5y
ZWN0KCksIGFkanVzdGVkVHJhbnNmb3JtKTsKK30KKwordm9pZCBDb29yZGluYXRlZEJhY2tpbmdT
dG9yZTo6ZHJhd1JlcGFpbnRDb3VudGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGlu
dCByZXBhaW50Q291bnQsIGNvbnN0IENvbG9yJiBib3JkZXJDb2xvciwgY29uc3QgRmxvYXRSZWN0
JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKQorewor
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3JtID0gdHJhbnNmb3JtICog
YWRqdXN0ZWRUcmFuc2Zvcm1Gb3JSZWN0KHRhcmdldFJlY3QpOworICAgIEhhc2hNYXA8dWludDMy
X3QsIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZT46Oml0ZXJhdG9yIGVuZCA9IG1fdGlsZXMu
ZW5kKCk7CisgICAgZm9yIChIYXNoTWFwPHVpbnQzMl90LCBDb29yZGluYXRlZEJhY2tpbmdTdG9y
ZVRpbGU+OjppdGVyYXRvciBpdCA9IG1fdGlsZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQor
ICAgICAgICB0ZXh0dXJlTWFwcGVyLT5kcmF3UmVwYWludENvdW50ZXIocmVwYWludENvdW50LCBi
b3JkZXJDb2xvciwgaXQtPnZhbHVlLnJlY3QoKS5sb2NhdGlvbigpLCBhZGp1c3RlZFRyYW5zZm9y
bSk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OmNvbW1pdFRpbGVPcGVyYXRp
b25zKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9y
ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRCYWNraW5nU3RvcmUuaAppbmRleCBhZTVhZjhkNGZhMmZjOWViZDIxMTk3MjdmY2FkZDg1
OTYyMzMwZjk5Li5kMjY2ZjYyZTE4ZDkxY2E2NmQzN2Y0YzY4ZjcwMjZkNDJkOTBiM2IzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZEJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmgKQEAgLTM2LDEzICszNiwx
MCBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlKGZs
b2F0IHNjYWxlID0gMSkKICAgICAgICAgOiBUZXh0dXJlTWFwcGVyVGlsZShXZWJDb3JlOjpGbG9h
dFJlY3QoKSkKICAgICAgICAgLCBtX3NjYWxlKHNjYWxlKQotICAgICAgICAsIG1fcmVwYWludENv
dW50KDApCiAgICAgewogICAgIH0KIAogICAgIGlubGluZSBmbG9hdCBzY2FsZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc2NhbGU7IH0KLSAgICBpbmxpbmUgdm9pZCBpbmNyZW1lbnRSZXBhaW50Q291bnQo
KSB7ICsrbV9yZXBhaW50Q291bnQ7IH0KLSAgICBpbmxpbmUgaW50IHJlcGFpbnRDb3VudCgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVwYWludENvdW50OyB9CiAgICAgdm9pZCBzd2FwQnVmZmVycyhXZWJD
b3JlOjpUZXh0dXJlTWFwcGVyKik7CiAgICAgdm9pZCBzZXRCYWNrQnVmZmVyKGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgUGFzc1JlZlB0cjxDb29yZGlu
YXRlZFN1cmZhY2U+IGJ1ZmZlciwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKIApAQCAtNTIs
NyArNDksNiBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OkludFJlY3QgbV90aWxlUmVjdDsKICAg
ICBXZWJDb3JlOjpJbnRQb2ludCBtX3N1cmZhY2VPZmZzZXQ7CiAgICAgZmxvYXQgbV9zY2FsZTsK
LSAgICBpbnQgbV9yZXBhaW50Q291bnQ7CiB9OwogCiBjbGFzcyBDb29yZGluYXRlZEJhY2tpbmdT
dG9yZSA6IHB1YmxpYyBXZWJDb3JlOjpUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlIHsKQEAgLTY2
LDEyICs2MiwxNiBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpCaXRtYXBUZXh0
dXJlPiB0ZXh0dXJlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRTaXplKGNvbnN0IFdlYkNvcmU6OkZs
b2F0U2l6ZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihXZWJDb3Jl
OjpUZXh0dXJlTWFwcGVyKiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29y
ZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCwgV2ViQ29yZTo6Qml0bWFwVGV4dHVyZSop
OworICAgIHZpcnR1YWwgdm9pZCBkcmF3Qm9yZGVyKFdlYkNvcmU6OlRleHR1cmVNYXBwZXIqLCBj
b25zdCBXZWJDb3JlOjpDb2xvciYsIGZsb2F0IGJvcmRlcldpZHRoLCBjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVwYWludENvdW50ZXIoV2ViQ29yZTo6VGV4dHVyZU1h
cHBlciosIGludCByZXBhaW50Q291bnQsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgY29uc3QgV2Vi
Q29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmKSBP
VkVSUklERTsKIAogcHJpdmF0ZToKICAgICBDb29yZGluYXRlZEJhY2tpbmdTdG9yZSgpCiAgICAg
ICAgIDogbV9zY2FsZSgxLikKICAgICB7IH0KICAgICB2b2lkIHBhaW50VGlsZXNUb1RleHR1cmVN
YXBwZXIoVmVjdG9yPFdlYkNvcmU6OlRleHR1cmVNYXBwZXJUaWxlKj4mLCBXZWJDb3JlOjpUZXh0
dXJlTWFwcGVyKiwgY29uc3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCwg
V2ViQ29yZTo6Qml0bWFwVGV4dHVyZSosIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpOworICAg
IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3JtRm9yUmVjdChj
b25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsKKyAgICBXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdCgp
IGNvbnN0IHsgcmV0dXJuIFdlYkNvcmU6OkZsb2F0UmVjdChXZWJDb3JlOjpGbG9hdFBvaW50Ojp6
ZXJvKCksIG1fc2l6ZSk7IH0KIAogICAgIEhhc2hNYXA8dWludDMyX3QsIENvb3JkaW5hdGVkQmFj
a2luZ1N0b3JlVGlsZT4gbV90aWxlczsKICAgICBIYXNoU2V0PHVpbnQzMl90PiBtX3RpbGVzVG9S
ZW1vdmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQ
cm94eS5jcHAKaW5kZXggYmFhOGY2NTIzZGViZmRlYmJjNGU1MjJiNDc1ZTE0Y2MxOGZkMmViNS4u
NGIzNTdkNDNkNjM4NTM4NGE3NjkwMTllYzkxODkyNGY2ZjRlODMxZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcApAQCAtMjQyLDYg
KzI0MiwxMSBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpkZXN0cm95Q2Fu
dmFzKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCkKIH0KICNlbmRpZgogCit2b2lkIENvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdFByb3h5OjpzZXRMYXllclJlcGFpbnRDb3VudChDb29yZGluYXRlZExheWVy
SUQgaWQsIGludCB2YWx1ZSkKK3sKKyAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZMYXllclRyZWVS
ZW5kZXJlcjo6c2V0TGF5ZXJSZXBhaW50Q291bnQsIG1fcmVuZGVyZXIuZ2V0KCksIGlkLCB2YWx1
ZSkpOworfQorCiB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpwdXJnZUJhY2tp
bmdTdG9yZXMoKQogewogICAgIG1fc3VyZmFjZXMuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oCmluZGV4IDc1OTFiODQ4NWQzOTg4
NmVkN2VkMmNkMDVkMTE2MTNmZTY3ZmFjZDMuLjg2Y2Y5YTVkMDkzNDgyZTAyODVhYzkxY2RiOGYz
NjMyZTBkZWEwMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0UHJveHkuaApAQCAtODQsNiArODQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzeW5jQ2Fu
dmFzKENvb3JkaW5hdGVkTGF5ZXJJRCwgdWludDMyX3QgZnJvbnRCdWZmZXIpOwogICAgIHZvaWQg
ZGVzdHJveUNhbnZhcyhDb29yZGluYXRlZExheWVySUQpOwogI2VuZGlmCisgICAgdm9pZCBzZXRM
YXllclJlcGFpbnRDb3VudChDb29yZGluYXRlZExheWVySUQsIGludCB2YWx1ZSk7CiAgICAgdm9p
ZCBwdXJnZUJhY2tpbmdTdG9yZXMoKTsKICAgICBMYXllclRyZWVSZW5kZXJlciogbGF5ZXJUcmVl
UmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmVyLmdldCgpOyB9CiAgICAgdm9pZCBz
ZXRMYXllckFuaW1hdGlvbnMoQ29vcmRpbmF0ZWRMYXllcklELCBjb25zdCBXZWJDb3JlOjpHcmFw
aGljc0xheWVyQW5pbWF0aW9ucyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5tZXNzYWdlcy5pbgppbmRleCAxMzdkYWQ4MDc1
MDBmNTVlNTlkMjZjMjdjMWRlZGJhNDljNTUwOGEwLi40NDMwODk1M2ZhMTg5YTM4OTRjZTJhYWNm
YzdkM2I4NjgzZjk5OTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5tZXNzYWdlcy5pbgpAQCAtNTUsNiArNTUsOCBAQCBt
ZXNzYWdlcyAtPiBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eSB7CiAgICAgRGVzdHJveUNh
bnZhcyh1aW50MzJfdCBpZCkKICNlbmRpZgogCisgICAgU2V0TGF5ZXJSZXBhaW50Q291bnQodWlu
dDMyX3QgbGF5ZXJJRCwgaW50IHZhbHVlKQorCiAgICAgU2V0QmFja2dyb3VuZENvbG9yKFdlYkNv
cmU6OkNvbG9yIGNvbG9yKQogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJl
ci5jcHAKaW5kZXggNmU5NzMwMjE2NjJiNDBkMzZhMjg0YzNmZDFkMDQ5YWI2NmEyNTk5Ni4uYTlm
NTE4MGQ1NmI2ZjVlNTBhYWY0OTVmNTRhNmI3MDA3ZjdiYmZmZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xh
eWVyVHJlZVJlbmRlcmVyLmNwcApAQCAtMjU1LDYgKzI1NSwxMiBAQCB2b2lkIExheWVyVHJlZVJl
bmRlcmVyOjpkZXN0cm95Q2FudmFzKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCkKIH0KICNlbmRpZgog
Cit2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpzZXRMYXllclJlcGFpbnRDb3VudChDb29yZGluYXRl
ZExheWVySUQgaWQsIGludCB2YWx1ZSkKK3sKKyAgICBHcmFwaGljc0xheWVyKiBsYXllciA9IGxh
eWVyQnlJRChpZCk7CisgICAgdG9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcihsYXllciktPnNl
dFJlcGFpbnRDb3VudCh2YWx1ZSk7Cit9CisKIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnNldExh
eWVyQ2hpbGRyZW4oQ29vcmRpbmF0ZWRMYXllcklEIGlkLCBjb25zdCBWZWN0b3I8Q29vcmRpbmF0
ZWRMYXllcklEPiYgY2hpbGRJRHMpCiB7CiAgICAgR3JhcGhpY3NMYXllciogbGF5ZXIgPSBsYXll
ckJ5SUQoaWQpOwpAQCAtMzMzLDYgKzMzOSw5IEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnNl
dExheWVyU3RhdGUoQ29vcmRpbmF0ZWRMYXllcklEIGlkLCBjb25zdCBDb29yZGluYXRlZExhCiAg
ICAgbGF5ZXItPnNldERyYXdzQ29udGVudChsYXllckluZm8uZHJhd3NDb250ZW50KTsKICAgICBs
YXllci0+c2V0Q29udGVudHNWaXNpYmxlKGxheWVySW5mby5jb250ZW50c1Zpc2libGUpOwogICAg
IHRvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIobGF5ZXIpLT5zZXRGaXhlZFRvVmlld3BvcnQo
bGF5ZXJJbmZvLmZpeGVkVG9WaWV3cG9ydCk7CisgICAgbGF5ZXItPnNldFNob3dEZWJ1Z0JvcmRl
cihsYXllckluZm8uc2hvd0RlYnVnQm9yZGVycyk7CisgICAgbGF5ZXItPnNldERlYnVnQm9yZGVy
KGxheWVySW5mby5kZWJ1Z0JvcmRlckNvbG9yLCBsYXllckluZm8uZGVidWdCb3JkZXJXaWR0aCk7
CisgICAgbGF5ZXItPnNldFNob3dSZXBhaW50Q291bnRlcihsYXllckluZm8uc2hvd1JlcGFpbnRD
b3VudGVyKTsKIAogICAgIGlmIChsYXllckluZm8uZml4ZWRUb1ZpZXdwb3J0KQogICAgICAgICBt
X2ZpeGVkTGF5ZXJzLmFkZChpZCwgbGF5ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVy
LmgKaW5kZXggNTNlY2JlMzk0OTgxODk5ZDJhYmJlMGYyMWQ0NDQzNDQyMzkzNjQ4OC4uNmI2MmVm
NTAyZGU5N2I0YzMwMDk5YmM4YzA0NmMwM2RhNmFmOGZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRy
ZWVSZW5kZXJlci5oCkBAIC03Nyw2ICs3Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN5bmNDYW52
YXMoQ29vcmRpbmF0ZWRMYXllcklELCB1aW50MzJfdCBmcm9udEJ1ZmZlcik7CiAgICAgdm9pZCBk
ZXN0cm95Q2FudmFzKENvb3JkaW5hdGVkTGF5ZXJJRCk7CiAjZW5kaWYKKyAgICB2b2lkIHNldExh
eWVyUmVwYWludENvdW50KENvb3JkaW5hdGVkTGF5ZXJJRCwgaW50IHZhbHVlKTsKIAogICAgIHZv
aWQgZGV0YWNoKCk7CiAgICAgdm9pZCBhcHBlbmRVcGRhdGUoY29uc3QgRnVuY3Rpb248dm9pZCgp
PiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5jcHAKaW5kZXggNWYyNjYyZWYwOTE4YjNhYTkyMTQwYTQ4NDUyYTU1NTgyZjU3
YmQzOS4uNWQyM2IyNTE3ZDJlNTQ4MmQ4ZmYzYTc5NGMwMDJlMjA2NGMxNGY3ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIu
Y3BwCkBAIC0zNzEsNiArMzcxLDI2IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpz
ZXRDb250ZW50c1RvU29saWRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiAgICAgZGlkQ2hhbmdl
TGF5ZXJTdGF0ZSgpOwogfQogCit2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0U2hv
d0RlYnVnQm9yZGVyKGJvb2wgc2hvdykKK3sKKyAgICBpZiAoaXNTaG93aW5nRGVidWdCb3JkZXIo
KSA9PSBzaG93KQorICAgICAgICByZXR1cm47CisKKyAgICBHcmFwaGljc0xheWVyOjpzZXRTaG93
RGVidWdCb3JkZXIoc2hvdyk7CisKKyAgICBkaWRDaGFuZ2VMYXllclN0YXRlKCk7Cit9CisKK3Zv
aWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRTaG93UmVwYWludENvdW50ZXIoYm9vbCBz
aG93KQoreworICAgIGlmIChpc1Nob3dpbmdSZXBhaW50Q291bnRlcigpID09IHNob3cpCisgICAg
ICAgIHJldHVybjsKKworICAgIEdyYXBoaWNzTGF5ZXI6OnNldFNob3dSZXBhaW50Q291bnRlcihz
aG93KTsKKworICAgIGRpZENoYW5nZUxheWVyU3RhdGUoKTsKK30KKwogdm9pZCBDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzVG9JbWFnZShJbWFnZSogaW1hZ2UpCiB7CiAgICAg
TmF0aXZlSW1hZ2VQdHIgbmV3TmF0aXZlSW1hZ2VQdHIgPSBpbWFnZSA/IGltYWdlLT5uYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpIDogMDsKQEAgLTU1MCw5ICs1NzAsMjMgQEAgdm9pZCBDb29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnN5bmNMYXllclN0YXRlKCkKICAgICBtX2xheWVySW5mby5w
b3MgPSBtX2FkanVzdGVkUG9zaXRpb247CiAgICAgbV9sYXllckluZm8uc2l6ZSA9IG1fYWRqdXN0
ZWRTaXplOwogCisgICAgbV9sYXllckluZm8uc2hvd0RlYnVnQm9yZGVycyA9IGlzU2hvd2luZ0Rl
YnVnQm9yZGVyKCk7CisgICAgaWYgKG1fbGF5ZXJJbmZvLnNob3dEZWJ1Z0JvcmRlcnMpIHsKKyAg
ICAgICAgbV91c2luZ1RpbGVkTGF5ZXIgPSBzaG91bGRIYXZlQmFja2luZ1N0b3JlKCk7CisgICAg
ICAgIHVwZGF0ZURlYnVnSW5kaWNhdG9ycygpOworICAgIH0KKyAgICBtX2xheWVySW5mby5zaG93
UmVwYWludENvdW50ZXIgPSBpc1Nob3dpbmdSZXBhaW50Q291bnRlcigpOworCiAgICAgbV9jb29y
ZGluYXRvci0+c3luY0xheWVyU3RhdGUobV9pZCwgbV9sYXllckluZm8pOwogfQogCit2b2lkIENv
b3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0RGVidWdCb3JkZXIoY29uc3QgQ29sb3ImIGNvbG9y
LCBmbG9hdCB3aWR0aCkKK3sKKyAgICBBU1NFUlQobV9sYXllckluZm8uc2hvd0RlYnVnQm9yZGVy
cyk7CisgICAgbV9sYXllckluZm8uZGVidWdCb3JkZXJDb2xvciA9IGNvbG9yOworICAgIG1fbGF5
ZXJJbmZvLmRlYnVnQm9yZGVyV2lkdGggPSB3aWR0aDsKK30KKwogdm9pZCBDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXI6OnN5bmNBbmltYXRpb25zKCkKIHsKICAgICBpZiAoIW1fc2hvdWxkU3luY0Fu
aW1hdGlvbnMpCkBAIC02OTgsOCArNzMyLDEwIEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyOjp0aWxlZEJhY2tpbmdTdG9yZVBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwKICAg
ICBwYWludEdyYXBoaWNzTGF5ZXJDb250ZW50cygqY29udGV4dCwgcmVjdCk7CiB9CiAKLXZvaWQg
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp0aWxlZEJhY2tpbmdTdG9yZVBhaW50RW5kKGNvbnN0
IFZlY3RvcjxJbnRSZWN0PiYgLyogdXBkYXRlZFJlY3RzICovKQordm9pZCBDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXI6OnRpbGVkQmFja2luZ1N0b3JlUGFpbnRFbmQoY29uc3QgVmVjdG9yPEludFJl
Y3Q+JiB1cGRhdGVkUmVjdHMpCiB7CisgICAgaWYgKGlzU2hvd2luZ1JlcGFpbnRDb3VudGVyKCkg
JiYgIXVwZGF0ZWRSZWN0cy5pc0VtcHR5KCkpCisgICAgICAgIG1fY29vcmRpbmF0b3ItPnNldExh
eWVyUmVwYWludENvdW50KGlkKCksIGluY3JlbWVudFJlcGFpbnRDb3VudCgpKTsKIH0KIAogdm9p
ZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnRpbGVkQmFja2luZ1N0b3JlSGFzUGVuZGluZ1Rp
bGVDcmVhdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkR3JhcGhpY3NMYXllci5oCmluZGV4IDZjNDM1ODVjNzBjOGUwMzA2NWU0ZGNhYTI3ZTRmMGRh
MmZhMzY5NDYuLjdlYTM4MWY3Y2Y3Yzc1YWQzNGQ0NTM4NzkwYTBlMzAwYzQ1ZjNhNDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ci5oCkBAIC03MSw2ICs3MSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveUNh
bnZhcyhDb29yZGluYXRlZExheWVySUQpID0gMDsKICNlbmRpZgogCisgICAgdmlydHVhbCB2b2lk
IHNldExheWVyUmVwYWludENvdW50KENvb3JkaW5hdGVkTGF5ZXJJRCwgaW50KSA9IDA7CisKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJBbmltYXRpb25zKENvb3JkaW5hdGVkTGF5ZXJJRCwgY29u
c3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllckFuaW1hdGlvbnMmKSA9IDA7CiAKICAgICB2aXJ0dWFs
IHZvaWQgZGV0YWNoTGF5ZXIoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKikgPSAw
OwpAQCAtMTEyLDYgKzExNCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVu
dHNSZWN0KGNvbnN0IEludFJlY3QmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29u
dGVudHNUb0ltYWdlKEltYWdlKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRl
bnRzVG9Tb2xpZENvbG9yKGNvbnN0IENvbG9yJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IHNldFNob3dEZWJ1Z0JvcmRlcihib29sKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
U2hvd1JlcGFpbnRDb3VudGVyKGJvb2wpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBzaG91
bGREaXJlY3RseUNvbXBvc2l0ZUltYWdlKEltYWdlKikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIHNldENvbnRlbnRzVG9DYW52YXMoUGxhdGZvcm1MYXllciopIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgdm9pZCBzZXRNYXNrTGF5ZXIoR3JhcGhpY3NMYXllciopIE9WRVJSSURFOwpA
QCAtMTY2LDYgKzE3MCw4IEBAIHB1YmxpYzoKICAgICBib29sIGhhc1BlbmRpbmdWaXNpYmxlQ2hh
bmdlcygpOwogCiBwcml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCBzZXREZWJ1Z0JvcmRlcihjb25z
dCBDb2xvciYsIGZsb2F0IHdpZHRoKSBPVkVSUklERTsKKwogICAgIGJvb2wgZml4ZWRUb1ZpZXdw
b3J0KCkgY29uc3QgeyByZXR1cm4gbV9maXhlZFRvVmlld3BvcnQ7IH0KIAogICAgIHZvaWQgZGlk
Q2hhbmdlTGF5ZXJTdGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggOGZiYjU3ZjIxMWZmMmNjNGI5MjA3
MjMzMGRlM2Y4Nzg3OWUxNzkzZC4uZGVlZjU1M2FkMDFjNTQ5YzMyMDAyNzJjM2IzOWE2ODZhMTA4
MTkyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZExheWVyVHJlZUhvc3QuY3BwCkBAIC0zOTcsNiArMzk3LDExIEBAIHZvaWQgQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0OjpkZXN0cm95Q2FudmFzKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCkKIH0KICNl
bmRpZgogCit2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0TGF5ZXJSZXBhaW50Q291
bnQoQ29vcmRpbmF0ZWRMYXllcklEIGlkLCBpbnQgdmFsdWUpCit7CisgICAgbV93ZWJQYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6U2V0TGF5ZXJSZXBh
aW50Q291bnQoaWQsIHZhbHVlKSk7Cit9CisKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiB2b2lk
IENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c3luY0xheWVyRmlsdGVycyhDb29yZGluYXRlZExh
eWVySUQgaWQsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZExheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCmluZGV4
IDAxMDIyYjJjYzRlOTg0ODhhNGRmNzg3ZWEzNjkwYjcyYWNjZmY3MjkuLjlhYTllNmVjZGYzYTY5
ZWYwMDM4MjhlMTc4YTk4NjEwNjc0ZmY3NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCkBAIC0xMDEsNiArMTAxLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzeW5jQ2FudmFzKENvb3JkaW5hdGVkTGF5ZXJJRCwg
V2ViQ29yZTo6UGxhdGZvcm1MYXllciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkZXN0
cm95Q2FudmFzKENvb3JkaW5hdGVkTGF5ZXJJRCkgT1ZFUlJJREU7CiAjZW5kaWYKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0TGF5ZXJSZXBhaW50Q291bnQoQ29vcmRpbmF0ZWRMYXllcklELCBpbnQpIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hMYXllcihXZWJDb3JlOjpDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY0ZpeGVkTGF5ZXJzKCk7CiAK
</data>
<flag name="review"
          id="201639"
          type_id="1"
          status="-"
          setter="benjamin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183594</attachid>
            <date>2013-01-18 20:03:40 -0800</date>
            <delta_ts>2013-01-24 21:28:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105787-20130119130029.patch</filename>
            <type>text/plain</type>
            <size>59014</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwMDczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDY0ZTQzOWU2YzI1NDBl
YzIzMWQ4MmRlYWRiZGJjMTMyMzU2MjFlNS4uN2FhMTlhZWY3YmU3YWE5NzQ1OTJlN2U0NTgzNmQ3
MzFmM2MzNTEwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDEzLTAxLTE4ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFtUZXhtYXBd
IFJlZmFjdG9yIGNvZGUgcmVsYXRlZCB0byBkZWJ1ZyBib3JkZXIgYW5kIHJlcGFpbnQgY291bnQu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU3ODcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50
bHksIFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUsIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlIGFu
ZAorICAgICAgICBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlciBoYXZlIGR1cGxpY2F0ZWQgY29k
ZSB0byBkcmF3IGRlYnVnIGJvcmRlciBvcgorICAgICAgICByZXBhaW50IGNvdW50LiBUaGlzIHBh
dGNoIHJlZmFjdG9ycyB0aGF0IGFsbCBwbGF0Zm9ybSBsYXllcnMgZHJhdyBkZWJ1ZworICAgICAg
ICBib3JkZXIgYW5kIHJlcGFpbnQgY291bnQgaW4gdGhlIGNvbnNpc3RlbnQgd2F5OgorICAgICAg
ICBUZXh0dXJlTWFwcGVyOjpkcmF3Qm9yZGVyKCkgYW5kIFRleHR1cmVNYXBwZXI6OmRyYXdSZXBh
aW50Q291bnRlcigpLgorCisgICAgICAgIFRoZXJlIGFyZSB0aHJlZSBiaWcgY2hhbmdlczoKKyAg
ICAgICAgMS4gVGV4dHVyZU1hcHBlckxheWVyIGhhcyB0aGUgZGVidWcgdmlzdWFscyBsaWtlIEdy
YXBoaWNzTGF5ZXIuCisgICAgICAgIEJvdGggZGVidWcgYm9yZGVyIGFuZCByZXBhaW50IGNvdW50
IGFyZSBjYWxsZWQgYXMgdGhlIGRlYnVnIHZpc3VhbHMuCisgICAgICAgIDIuIFdlIHVzZSB0aGUg
c2FtZSBjb2xvciBhbmQgd2lkdGggdG8gTWFjIHBvcnQgYmVjYXVzZSB3ZSBnZXQgYm90aCBpbmZv
IHVzaW5nCisgICAgICAgIEdyYXBoaWNzTGF5ZXI6OnVwZGF0ZURlYnVnSW5kaWNhdG9ycygpLgor
ICAgICAgICAzLiBEcmF3IGJvcmRlcnMgZm9yIGJhY2tncm91bmQgY29sb3IsIGJhY2tpbmcgc3Rv
cmUgYW5kIGNvbnRlbnRzIGxheWVyLAorICAgICAgICB3aGlsZSBkcmF3aW5nIHJlcGFpbnQgY291
bnQgb25seSBmb3IgYmFja2luZyBzdG9yZS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIFRoaXMg
ZnVuY3Rpb25hbGl0eSBpcyBmb3IgZGVidWdnaW5nLCBzbyB3ZSBjYW5ub3QgdGVzdCB1c2luZyBE
UlQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQz
RFByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRl
eHQzRFF0LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXI6OnNldFNob3dEZWJ1Z0JvcmRlcik6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRTaG93UmVwYWlu
dENvdW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6
OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkpOgorICAgICAgICAgICAgQWRk
IHRoZSB0ZXN0IGZvciBtX2hhc093bkJhY2tpbmdTdG9yZS4gbV9oYXNPd25CYWNraW5nU3RvcmUg
aXMgV0sxCisgICAgICAgICAgICBsZWdhY3kgY29kZSwgc28gSSB3YW50IHRvIGhpZ2hsaWdodCB1
cGRhdGVEZWJ1Z0JvcmRlckFuZFJlcGFpbnRDb3VudCgpCisgICAgICAgICAgICBhbmQgdXBkYXRl
QmFja2luZ1N0b3JlKCkgYXJlIG9ubHkgdXNlZCBpbiBXSzEuCisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6dXBkYXRlRGVidWdCb3JkZXJBbmRSZXBhaW50Q291
bnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldERl
YnVnQm9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
Ojp1cGRhdGVCYWNraW5nU3RvcmUpOgorICAgICAgICAgICAgTW92ZSB0aGUgdGVzdCBmb3IgbV9o
YXNPd25CYWNraW5nU3RvcmUgb3V0IG9mIHVwZGF0ZUJhY2tpbmdTdG9yZSgpCisgICAgICAgICAg
ICBhbmQgcmVwbGFjZSBpdCBieSBhbiBhc3NlcnRpb24uIFNlZSBmbHVzaENvbXBvc2l0aW5nU3Rh
dGVGb3JUaGlzTGF5ZXJPbmx5KCkuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlcjo6cHJlcGFyZUJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0UmVwYWludENvdW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaDoKKyAgICAg
ICAgKEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpkZWJ1Z0JvcmRlckNvbG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpkZWJ1Z0JvcmRlcldpZHRoKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6YWRqdXN0
ZWRUcmFuc2Zvcm1Gb3JSZWN0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpwYWludFRvVGV4dHVyZU1hcHBlcik6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OmRyYXdC
b3JkZXIpOgorICAgICAgICAgICAgT3ZlcnJpZGUgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXI6
OmRyYXdCb3JkZXIoKSB0byBkcmF3IHRoZSBib3JkZXIKKyAgICAgICAgICAgIGZvciBlYWNoIHRp
bGUuCisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OmRy
YXdSZXBhaW50Q291bnRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBw
ZXJCYWNraW5nU3RvcmU6OmRyYXdSZXBhaW50Q291bnRlcik6CisgICAgICAgIChUZXh0dXJlTWFw
cGVyQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9y
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5j
cHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRBUkdCVG9B
QkdSKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHTDo6ZHJhd1JlcGFpbnRDb3Vu
dGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdM
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFn
ZUJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXI6
OmRyYXdCb3JkZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
dXJlTWFwcGVySW1hZ2VCdWZmZXI6OmRyYXdSZXBhaW50Q291bnRlcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5oOgorICAgICAg
ICAoVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1
cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxmKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBw
ZXJMYXllcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oOgorICAgICAg
ICAoU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpTdGF0ZTo6
U3RhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXI6OmRyYXdCb3JkZXIpOgorCiAyMDEzLTAxLTE3ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5m
cmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBjcmFzaCBhY2Nlc3NpbmcgUmVuZGVyVmll
dydzIGxheWVyJ3MgYmFja2luZyB3aGVuIG5vdCBjb21wb3NpdGVkCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNzkx
MGRjY2I0YjdmNGQ2ODQxMzFhYjZjNjdlZmJkYTBkNWU5YzdhYy4uZGQ3Y2ZhNGVjODA3MTU0YWFk
YThkYzc4ZmFkOTZmYmNlNGU0OGUxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDEz
LTAxLTE4ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAg
ICAgIFtUZXhtYXBdIFJlZmFjdG9yIGNvZGUgcmVsYXRlZCB0byBkZWJ1ZyBib3JkZXIgYW5kIHJl
cGFpbnQgY291bnQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDU3ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGVyZSBhcmUgdHdvIGJpZyBjaGFuZ2VzOgorICAgICAgICAxLiBDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXIgc2VuZHMgZGVidWdnaW5nIHZpc3VhbHMgdG8gVUkgUHJvY2Vzcy4KKyAgICAg
ICAgMi4gV2hlbiB1cGRhdGluZyBhIGJhY2tpbmcgc3RvcmUsIGluY3JlbWVudCBhIHJlcGFpbnQg
Y291bnQuCisKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZExheWVySW5mby5oOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVySW5mbzo6Q29v
cmRpbmF0ZWRMYXllckluZm8pOgorICAgICAgICAoQ29vcmRpbmF0ZWRMYXllckluZm8pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0
b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnVwZGF0
ZVRpbGUpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6cGFpbnRU
aWxlc1RvVGV4dHVyZU1hcHBlcik6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2lu
Z1N0b3JlOjphZGp1c3RlZFRyYW5zZm9ybUZvclJlY3QpOgorICAgICAgICAoV2ViS2l0OjpDb29y
ZGluYXRlZEJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIpOgorICAgICAgICAoV2Vi
S2l0OjpDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6ZHJhd0JvcmRlcik6CisgICAgICAgICAgICBP
dmVycmlkZSBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllcjo6ZHJhd0JvcmRlcigpIHRvIGRyYXcg
dGhlIGJvcmRlcgorICAgICAgICAgICAgZm9yIGVhY2ggdGlsZS4KKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpkcmF3UmVwYWludENv
dW50ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkQmFja2luZ1N0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2luZ1N0
b3JlVGlsZTo6Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlKToKKyAgICAgICAgKENvb3JkaW5h
dGVkQmFja2luZ1N0b3JlVGlsZSk6CisgICAgICAgIChDb29yZGluYXRlZEJhY2tpbmdTdG9yZSk6
CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpyZWN0KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhv
c3RQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFBy
b3h5OjpzZXRMYXllclJlcGFpbnRDb3VudCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFBy
b3h5Lmg6CisgICAgICAgIChDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
UHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5k
ZXJlcjo6c2V0TGF5ZXJSZXBhaW50Q291bnQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OnNldExheWVyU3RhdGUpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmg6CisgICAgICAg
IChMYXllclRyZWVSZW5kZXJlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0U2hvd0RlYnVnQm9yZGVyKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyOjpzZXRTaG93UmVwYWludENvdW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyOjpzeW5jTGF5ZXJTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldERlYnVnQm9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dGlsZWRCYWNraW5nU3RvcmVQYWludEVuZCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyLmg6CisgICAgICAgIChDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJDbGll
bnQpOgorICAgICAgICAoQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhv
c3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNldExh
eWVyUmVwYWludENvdW50KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lmg6
CisKIDIwMTMtMDEtMTcgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+
CiAKICAgICAgICAgW1RleE1hcF0gRW5hYmxlIGRlYnVnIGJvcmRlcnMgYW5kIHJlcGFpbnQgY291
bnRlciB2aWEgU2V0dGluZ3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oCmluZGV4
IDY5ZGFkNjc1NDcyMmFjN2E4ODJjYTg3NjE1YWI4ODU0OTc5YWZiYzYuLmQwZGQyM2ZlN2RiZDQx
ZDZhZjgxZjkwN2FhZDlkYTAzMmMwMWI0ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZS5oCkBAIC0yNSw3ICsyNSw3IEBACiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAog
I2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYgVVNFKFRFWFRVUkVfTUFQUEVSKQot
I2luY2x1ZGUgIlRleHR1cmVNYXBwZXIuaCIKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllci5oIgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RR
dC5jcHAKaW5kZXggMjBiM2I3ZDhmYjM1NzM4YzI5NWMzYzhjZDljMzdiMjJjY2QwNTE1YS4uM2M4
YzVjMjI1OTg4MjFkNzI1NjdkYmI1NjRlYjdmOWM5ZjZkNmI0OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RR
dC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJPcGVuR0xTaGltcy5oIgogI2luY2x1
ZGUgIlFXZWJQYWdlQ2xpZW50LmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVk
ZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlIDxRV2luZG93PgogI2lu
Y2x1ZGUgPHFwYS9xcGxhdGZvcm1waXhtYXAuaD4KICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0u
aD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9H
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCmluZGV4IGU5NjI5
NmJhNTFlNGFhNzExNWRiYTIyNmFhNTdmZmVmMGVjMDEyMjIuLjU4N2Q5YzBiZmYzNDA2Y2QwYjIw
YWZkZjliNjI4ZDc3Mzc4MDc0NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyLmNwcApAQCAtMjQsMTQgKzI0LDggQEAKICNpbmNsdWRlICJHcmFwaGljc0xheWVyQW5p
bWF0aW9uLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckZhY3RvcnkuaCIKICNpbmNsdWRlICJJ
bWFnZUJ1ZmZlci5oIgotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSA8d3Rm
L0N1cnJlbnRUaW1lLmg+CiAKLSNpZiBVU0UoQ0FJUk8pCi0jaW5jbHVkZSAiQ2Fpcm9VdGlsaXRp
ZXMuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBQYXNzT3duUHRyPEdyYXBoaWNzTGF5ZXI+IEdyYXBoaWNzTGF5ZXI6OmNy
ZWF0ZShHcmFwaGljc0xheWVyRmFjdG9yeSogZmFjdG9yeSwgR3JhcGhpY3NMYXllckNsaWVudCog
Y2xpZW50KQpAQCAtMzgzLDE1ICszNzcsNTggQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlcjo6c2V0Q29udGVudHNUb01lZGlhKFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyKgogICAg
IG1fY29udGVudHNMYXllciA9IG1lZGlhOwogfQogCit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpzZXRTaG93RGVidWdCb3JkZXIoYm9vbCBzaG93KQoreworICAgIGlmIChpc1Nob3dp
bmdEZWJ1Z0JvcmRlcigpID09IHNob3cpCisgICAgICAgIHJldHVybjsKKworICAgIEdyYXBoaWNz
TGF5ZXI6OnNldFNob3dEZWJ1Z0JvcmRlcihzaG93KTsKKyAgICBub3RpZnlDaGFuZ2UoVGV4dHVy
ZU1hcHBlckxheWVyOjpEZWJ1Z1Zpc3VhbHNDaGFuZ2UpOworfQorCit2b2lkIEdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyOjpzZXRTaG93UmVwYWludENvdW50ZXIoYm9vbCBzaG93KQoreworICAg
IGlmIChpc1Nob3dpbmdSZXBhaW50Q291bnRlcigpID09IHNob3cpCisgICAgICAgIHJldHVybjsK
KworICAgIEdyYXBoaWNzTGF5ZXI6OnNldFNob3dSZXBhaW50Q291bnRlcihzaG93KTsKKyAgICBu
b3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpEZWJ1Z1Zpc3VhbHNDaGFuZ2UpOworfQor
CiAvKiBccmVpbXAgKEdyYXBoaWNzTGF5ZXIuaCkKICovCiB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCkKIHsKKyAg
ICBpZiAobV9oYXNPd25CYWNraW5nU3RvcmUpCisgICAgICAgIHVwZGF0ZURlYnVnQm9yZGVyQW5k
UmVwYWludENvdW50KCk7CiAgICAgbV9sYXllci0+Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhp
c0xheWVyT25seSh0aGlzKTsKLSAgICB1cGRhdGVCYWNraW5nU3RvcmUoKTsKKyAgICBpZiAobV9o
YXNPd25CYWNraW5nU3RvcmUpCisgICAgICAgIHVwZGF0ZUJhY2tpbmdTdG9yZSgpOwogICAgIGRp
ZEZsdXNoQ29tcG9zaXRpbmdTdGF0ZSgpOwogfQogCit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjp1cGRhdGVEZWJ1Z0JvcmRlckFuZFJlcGFpbnRDb3VudCgpCit7CisgICAgQVNTRVJU
KG1faGFzT3duQmFja2luZ1N0b3JlKTsKKworICAgIG1fdXNpbmdUaWxlZExheWVyID0gc2hvdWxk
SGF2ZUJhY2tpbmdTdG9yZSgpOworICAgIHVwZGF0ZURlYnVnSW5kaWNhdG9ycygpOworCisgICAg
Ly8gV2hlbiB0aGlzIGhhcyBpdHMgb3duIGJhY2tpbmcgc3RvcmUgKGUuZy4gUXQgV0sxKSwgdXBk
YXRlIHRoZSByZXBhaW50IGNvdW50IGJlZm9yZSBjYWxsaW5nIFRleHR1cmVNYXBwZXJMYXllcjo6
Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpLgorICAgIGJvb2wgbmVlZHNU
b1JlcGFpbnQgPSBzaG91bGRIYXZlQmFja2luZ1N0b3JlKCkgJiYgKG1fbmVlZHNEaXNwbGF5IHx8
ICFtX25lZWRzRGlzcGxheVJlY3QuaXNFbXB0eSgpKTsKKyAgICBpZiAoaXNTaG93aW5nUmVwYWlu
dENvdW50ZXIoKSAmJiBuZWVkc1RvUmVwYWludCkgeworICAgICAgICBpbmNyZW1lbnRSZXBhaW50
Q291bnQoKTsKKyAgICAgICAgbV9jaGFuZ2VNYXNrIHw9IFRleHR1cmVNYXBwZXJMYXllcjo6UmVw
YWludENvdW50Q2hhbmdlOworICAgIH0KK30KKwordm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlcjo6c2V0RGVidWdCb3JkZXIoY29uc3QgQ29sb3ImIGNvbG9yLCBmbG9hdCB3aWR0aCkKK3sK
KyAgICBtX2RlYnVnQm9yZGVyQ29sb3IgPSBjb2xvcjsKKyAgICBtX2RlYnVnQm9yZGVyV2lkdGgg
PSB3aWR0aDsKKyAgICBtX2NoYW5nZU1hc2sgfD0gVGV4dHVyZU1hcHBlckxheWVyOjpEZWJ1Z1Zp
c3VhbHNDaGFuZ2U7Cit9CisKIC8qIFxyZWltcCAoR3JhcGhpY3NMYXllci5oKQogKi8KIHZvaWQg
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZShjb25zdCBG
bG9hdFJlY3QmIHJlY3QpCkBAIC00MTYsOSArNDUzLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlcjo6ZGlkRmx1c2hDb21wb3NpdGluZ1N0YXRlKCkKIAogdm9pZCBHcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlcjo6dXBkYXRlQmFja2luZ1N0b3JlKCkKIHsKLSAgICBpZiAoIW1faGFz
T3duQmFja2luZ1N0b3JlKQotICAgICAgICByZXR1cm47Ci0KKyAgICBBU1NFUlQobV9oYXNPd25C
YWNraW5nU3RvcmUpOwogICAgIHByZXBhcmVCYWNraW5nU3RvcmUoKTsKICAgICBtX2xheWVyLT5z
ZXRCYWNraW5nU3RvcmUobV9iYWNraW5nU3RvcmUpOwogfQpAQCAtNDQ4LDM0ICs0ODMsNyBAQCB2
b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpwcmVwYXJlQmFja2luZ1N0b3JlKCkKICNl
bmRpZgogICAgIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlID0g
c3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlKj4obV9iYWNraW5nU3Rv
cmUuZ2V0KCkpOwogCi0gICAgaWYgKGlzU2hvd2luZ1JlcGFpbnRDb3VudGVyKCkpCi0gICAgICAg
IGluY3JlbWVudFJlcGFpbnRDb3VudCgpOwotCi0gICAgLy8gUGFpbnQgaW50byBhbiBpbnRlcm1l
ZGlhdGUgYnVmZmVyIHRvIGF2b2lkIHBhaW50aW5nIGNvbnRlbnQgbW9yZSB0aGFuIG9uY2UuCi0g
ICAgYm9vbCBwYWludE9uY2UgPSB0cnVlOwotICAgIGNvbnN0IEludFNpemUgbWF4VGV4dHVyZVNp
emUgPSB0ZXh0dXJlTWFwcGVyLT5tYXhUZXh0dXJlU2l6ZSgpOwotICAgIC8vIFdlIG5lZWQgdG8g
cGFpbnQgZGlyZWN0bHkgaWYgdGhlIGRpcnR5IHJlY3QgZXhjZWVkcyBvbmUgb2YgdGhlIG1heGlt
dW0gZGltZW5zaW9ucy4KLSAgICBpZiAoZGlydHlSZWN0LndpZHRoKCkgPiBtYXhUZXh0dXJlU2l6
ZS53aWR0aCgpIHx8IGRpcnR5UmVjdC5oZWlnaHQoKSA+IG1heFRleHR1cmVTaXplLmhlaWdodCgp
KQotICAgICAgICBwYWludE9uY2UgPSBmYWxzZTsKLQotICAgIGlmIChwYWludE9uY2UpIHsKLSAg
ICAgICAgT3duUHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVh
dGUoZGlydHlSZWN0LnNpemUoKSk7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9
IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7Ci0gICAgICAgIGNvbnRleHQtPnNldEltYWdlSW50ZXJw
b2xhdGlvblF1YWxpdHkodGV4dHVyZU1hcHBlci0+aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgp
KTsKLSAgICAgICAgY29udGV4dC0+c2V0VGV4dERyYXdpbmdNb2RlKHRleHR1cmVNYXBwZXItPnRl
eHREcmF3aW5nTW9kZSgpKTsKLSAgICAgICAgY29udGV4dC0+dHJhbnNsYXRlKC1kaXJ0eVJlY3Qu
eCgpLCAtZGlydHlSZWN0LnkoKSk7Ci0gICAgICAgIHBhaW50R3JhcGhpY3NMYXllckNvbnRlbnRz
KCpjb250ZXh0LCBkaXJ0eVJlY3QpOwotCi0gICAgICAgIGlmIChpc1Nob3dpbmdSZXBhaW50Q291
bnRlcigpKQotICAgICAgICAgICAgZHJhd1JlcGFpbnRDb3VudGVyKGNvbnRleHQpOwotCi0gICAg
ICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBpbWFnZUJ1ZmZlci0+Y29weUltYWdlKERvbnRDb3B5
QmFja2luZ1N0b3JlKTsKLSAgICAgICAgYmFja2luZ1N0b3JlLT51cGRhdGVDb250ZW50cyh0ZXh0
dXJlTWFwcGVyLCBpbWFnZS5nZXQoKSwgbV9zaXplLCBkaXJ0eVJlY3QsIEJpdG1hcFRleHR1cmU6
OlVwZGF0ZUNhbk1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRhKTsKLSAgICB9IGVsc2UKLSAgICAgICAg
YmFja2luZ1N0b3JlLT51cGRhdGVDb250ZW50cyh0ZXh0dXJlTWFwcGVyLCB0aGlzLCBtX3NpemUs
IGRpcnR5UmVjdCwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ2FuTW9kaWZ5T3JpZ2luYWxJbWFnZURh
dGEpOwotCi0gICAgYmFja2luZ1N0b3JlLT5zZXRTaG93RGVidWdCb3JkZXJzKGlzU2hvd2luZ0Rl
YnVnQm9yZGVyKCkpOwotICAgIGJhY2tpbmdTdG9yZS0+c2V0RGVidWdCb3JkZXIobV9kZWJ1Z0Jv
cmRlckNvbG9yLCBtX2RlYnVnQm9yZGVyV2lkdGgpOworICAgIGJhY2tpbmdTdG9yZS0+dXBkYXRl
Q29udGVudHModGV4dHVyZU1hcHBlciwgdGhpcywgbV9zaXplLCBkaXJ0eVJlY3QsIEJpdG1hcFRl
eHR1cmU6OlVwZGF0ZUNhbk1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRhKTsKIAogICAgIG1fbmVlZHNE
aXNwbGF5ID0gZmFsc2U7CiAgICAgbV9uZWVkc0Rpc3BsYXlSZWN0ID0gSW50UmVjdCgpOwpAQCAt
NDg2LDQwICs0OTQsNiBAQCBib29sIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzaG91bGRI
YXZlQmFja2luZ1N0b3JlKCkgY29uc3QKICAgICByZXR1cm4gZHJhd3NDb250ZW50KCkgJiYgY29u
dGVudHNBcmVWaXNpYmxlKCkgJiYgIW1fc2l6ZS5pc0VtcHR5KCk7CiB9CiAKLSNpZiBVU0UoQ0FJ
Uk8pCi12b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpkcmF3UmVwYWludENvdW50ZXIo
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQotewotICAgIGNhaXJvX3QqIGNyID0gY29udGV4dC0+
cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7Ci0gICAgY2Fpcm9fc2F2ZShjcik7Ci0KLSAgICBDU3Ry
aW5nIHJlcGFpbnRDb3VudCA9IFN0cmluZzo6Zm9ybWF0KCIlaSIsIHRoaXMtPnJlcGFpbnRDb3Vu
dCgpKS51dGY4KCk7Ci0gICAgY2Fpcm9fc2VsZWN0X2ZvbnRfZmFjZShjciwgInNhbnMtc2VyaWYi
LCBDQUlST19GT05UX1NMQU5UX05PUk1BTCwgQ0FJUk9fRk9OVF9XRUlHSFRfQk9MRCk7Ci0gICAg
Y2Fpcm9fc2V0X2ZvbnRfc2l6ZShjciwgMTgpOwotCi0gICAgY2Fpcm9fdGV4dF9leHRlbnRzX3Qg
cmVwYWludFRleHRFeHRlbnRzOwotICAgIGNhaXJvX3RleHRfZXh0ZW50cyhjciwgcmVwYWludENv
dW50LmRhdGEoKSwgJnJlcGFpbnRUZXh0RXh0ZW50cyk7Ci0KLSAgICBzdGF0aWMgY29uc3QgaW50
IHJlcGFpbnRDb3VudEJvcmRlcldpZHRoID0gMTA7Ci0gICAgc2V0U291cmNlUkdCQUZyb21Db2xv
cihjciwgaXNTaG93aW5nRGVidWdCb3JkZXIoKSA/IG1fZGVidWdCb3JkZXJDb2xvciA6IENvbG9y
KDAsIDI1NSwgMCwgMTI3KSk7Ci0gICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLCAwLCAwLAotICAgICAg
ICByZXBhaW50VGV4dEV4dGVudHMud2lkdGggKyAocmVwYWludENvdW50Qm9yZGVyV2lkdGggKiAy
KSwKLSAgICAgICAgcmVwYWludFRleHRFeHRlbnRzLmhlaWdodCArIChyZXBhaW50Q291bnRCb3Jk
ZXJXaWR0aCAqIDIpKTsKLSAgICBjYWlyb19maWxsKGNyKTsKLQotICAgIGNhaXJvX3NldF9zb3Vy
Y2VfcmdiKGNyLCAxLCAxLCAxKTsKLSAgICBjYWlyb19tb3ZlX3RvKGNyLCByZXBhaW50Q291bnRC
b3JkZXJXaWR0aCwgcmVwYWludFRleHRFeHRlbnRzLmhlaWdodCArIHJlcGFpbnRDb3VudEJvcmRl
cldpZHRoKTsKLSAgICBjYWlyb19zaG93X3RleHQoY3IsIHJlcGFpbnRDb3VudC5kYXRhKCkpOwot
Ci0gICAgY2Fpcm9fcmVzdG9yZShjcik7Ci19Ci0jZWxzZQotdm9pZCBHcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlcjo6ZHJhd1JlcGFpbnRDb3VudGVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkK
LXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi0jZW5kaWYKLQogYm9vbCBHcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlcjo6YWRkQW5pbWF0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2
YWx1ZUxpc3QsIGNvbnN0IEludFNpemUmIGJveFNpemUsIGNvbnN0IEFuaW1hdGlvbiogYW5pbSwg
Y29uc3QgU3RyaW5nJiBrZXlmcmFtZXNOYW1lLCBkb3VibGUgdGltZU9mZnNldCkKIHsKICAgICBB
U1NFUlQoIWtleWZyYW1lc05hbWUuaXNFbXB0eSgpKTsKQEAgLTU2MSwxNCArNTM1LDYgQEAgdm9p
ZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6YW5pbWF0aW9uU3RhcnRlZFRpbWVyRmlyZWQo
VGltZXI8R3JhcGhpY3NMYXllclQKICAgICBjbGllbnQoKS0+bm90aWZ5QW5pbWF0aW9uU3RhcnRl
ZCh0aGlzLCAvKiBET00gdGltZSAqLyBXVEY6OmN1cnJlbnRUaW1lKCkpOwogfQogCi12b2lkIEdy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXREZWJ1Z0JvcmRlcihjb25zdCBDb2xvciYgY29s
b3IsIGZsb2F0IHdpZHRoKQotewotICAgIC8vIFRoZSBkZWZhdWx0IHZhbHVlcyBmb3IgR3JhcGhp
Y3NMYXllciBkZWJ1ZyBib3JkZXJzIGFyZSBhIGxpdHRsZQotICAgIC8vIGhhcmQgdG8gc2VlIChz
b21lIGxlc3MgdGhhbiBvbmUgcGl4ZWwgd2lkZSksIHNvIHdlIGRvdWJsZSB0aGVpciBzaXplIGhl
cmUuCi0gICAgbV9kZWJ1Z0JvcmRlckNvbG9yID0gY29sb3I7Ci0gICAgbV9kZWJ1Z0JvcmRlcldp
ZHRoID0gd2lkdGggKiAyOwotfQotCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogYm9vbCBHcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25z
JiBmaWx0ZXJzKQogewpAQCAtNTc3LDQgKzU0MywxMCBAQCBib29sIEdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyOjpzZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCiB9
CiAjZW5kaWYKIAordm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0UmVwYWludENv
dW50KGludCByZXBhaW50Q291bnQpCit7CisgICAgbV9yZXBhaW50Q291bnQgPSByZXBhaW50Q291
bnQ7CisgICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6UmVwYWludENvdW50Q2hh
bmdlKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaAppbmRl
eCAxMmMzMTk1OTFiNzI2YzdjOWYwYmEyYmRmZGY0Mzg0ZTdkZWExNzEzLi5hZmM1MWE2MmMxNTY2
ZmYxNDQ1ZTE0NzI1MTRhZjI2YWVkNmJlZjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXIuaApAQCAtMjAsNyArMjAsNiBAQAogI2lmbmRlZiBHcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlcl9oCiAjZGVmaW5lIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyX2gKIAotI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKICNp
bmNsdWRlICJHcmFwaGljc0xheWVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKQEAgLTY2
LDYgKzY1LDkgQEAgcHVibGljOgogICAgIENvbG9yIHNvbGlkQ29sb3IoKSBjb25zdCB7IHJldHVy
biBtX3NvbGlkQ29sb3I7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNUb01lZGlhKFBs
YXRmb3JtTGF5ZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNUb0NhbnZhcyhQbGF0
Zm9ybUxheWVyKiBjYW52YXMpIHsgc2V0Q29udGVudHNUb01lZGlhKGNhbnZhcyk7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgc2V0U2hvd0RlYnVnQm9yZGVyKGJvb2wpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBzZXREZWJ1Z0JvcmRlcihjb25zdCBDb2xvciYsIGZsb2F0IHdpZHRoKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvd1JlcGFpbnRDb3VudGVyKGJvb2wpIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCBmbHVzaENvbXBvc2l0aW5nU3RhdGUoY29uc3QgRmxvYXRSZWN0
Jik7CiAgICAgdmlydHVhbCB2b2lkIGZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9u
bHkoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpOwpAQCAt
ODEsOCArODMsNiBAQCBwdWJsaWM6CiAKICAgICBUZXh0dXJlTWFwcGVyTGF5ZXIqIGxheWVyKCkg
Y29uc3QgeyByZXR1cm4gbV9sYXllci5nZXQoKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHNldERl
YnVnQm9yZGVyKGNvbnN0IENvbG9yJiwgZmxvYXQgd2lkdGgpOwotCiAjaWYgRU5BQkxFKENTU19G
SUxURVJTKQogICAgIHZpcnR1YWwgYm9vbCBzZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlv
bnMmKTsKICNlbmRpZgpAQCAtOTMsMTAgKzkzLDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEZp
eGVkVG9WaWV3cG9ydChib29sIGZpeGVkKSB7IG1fZml4ZWRUb1ZpZXdwb3J0ID0gZml4ZWQ7IH0K
ICAgICBib29sIGZpeGVkVG9WaWV3cG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fZml4ZWRUb1ZpZXdw
b3J0OyB9CiAKLSAgICB2b2lkIGRyYXdSZXBhaW50Q291bnRlcihHcmFwaGljc0NvbnRleHQqKTsK
KyAgICBDb2xvciBkZWJ1Z0JvcmRlckNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z0JvcmRl
ckNvbG9yOyB9CisgICAgZmxvYXQgZGVidWdCb3JkZXJXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGVidWdCb3JkZXJXaWR0aDsgfQorCisgICAgdm9pZCBzZXRSZXBhaW50Q291bnQoaW50KTsKKwog
cHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVkKCk7CiAgICAgdm9pZCBk
aWRGbHVzaENvbXBvc2l0aW5nU3RhdGUoKTsKKyAgICB2b2lkIHVwZGF0ZURlYnVnQm9yZGVyQW5k
UmVwYWludENvdW50KCk7CiAgICAgdm9pZCB1cGRhdGVCYWNraW5nU3RvcmUoKTsKICAgICB2b2lk
IHByZXBhcmVCYWNraW5nU3RvcmUoKTsKICAgICBib29sIHNob3VsZEhhdmVCYWNraW5nU3RvcmUo
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlci5oCmluZGV4IGM3MjQxYTZjOWE3MjJhNjQ1MmY3YzE4YzlkNjY5
NzEyNzY2OTM2NmIuLmQ5NjExNmI3MDk5MzY4YWQ0NDU1OTk2YzFiNzMyMDE2MjcwZGVlYzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXIuaApAQCAtMzYsNyArMzYsNiBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCi0jaW5jbHVk
ZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlICJUcmFuc2Zvcm1hdGlv
bk1hdHJpeC5oIgogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgogCkBAIC0xMzAsOCArMTI5
LDkgQEAgcHVibGljOgogICAgICAgICBBbGxFZGdlcyA9IExlZnRFZGdlIHwgUmlnaHRFZGdlIHwg
VG9wRWRnZSB8IEJvdHRvbUVkZ2UsCiAgICAgfTsKIAotICAgIHZpcnR1YWwgdm9pZCBkcmF3Qm9y
ZGVyKGNvbnN0IENvbG9yJiwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYgdGFy
Z2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCA9IFRy
YW5zZm9ybWF0aW9uTWF0cml4KCkpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlcGFpbnRD
b3VudGVyKGludCB2YWx1ZSwgaW50IHBvaW50U2l6ZSwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCgpKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRyYXdCb3JkZXIoY29uc3QgQ29sb3ImLCBm
bG9hdCBib3JkZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRyYXdSZXBhaW50Q291bnRlcihpbnQgcmVw
YWludENvdW50LCBjb25zdCBDb2xvciYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYpID0gMDsKKwogICAgIHZpcnR1YWwgdm9pZCBkcmF3VGV4dHVyZShjb25z
dCBCaXRtYXBUZXh0dXJlJiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXQsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBm
bG9hdCBvcGFjaXR5ID0gMS4wZiwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUgPSAw
LCB1bnNpZ25lZCBleHBvc2VkRWRnZXMgPSBBbGxFZGdlcykgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBkcmF3U29saWRDb2xvcihjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYsIGNvbnN0IENvbG9yJikgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tp
bmdTdG9yZS5jcHAKaW5kZXggZTg5OTI1MzFiMjg3YzViNTk3NzllNjQ3NmU4MDFiOGI2OTk1YzJj
Ny4uMzEwNmRmMjJlMmVlMGU0ZDQ2N2JiODc3Y2IyMTFhMzc0MmY3NTYzMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNr
aW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmNwcApAQCAtMTA2LDcgKzEwNiw2IEBAIHZvaWQg
VGV4dHVyZU1hcHBlclRpbGU6OnBhaW50KFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNv
bnN0IFRyYW5zZm9ybWF0aW9uCiB9CiAKIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6
VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlKCkKLSAgICA6IG1fZHJhd3NEZWJ1Z0JvcmRl
cnMoZmFsc2UpCiB7CiB9CiAKQEAgLTEzMywxNiArMTMyLDMxIEBAIHVuc2lnbmVkIFRleHR1cmVN
YXBwZXJCYWNraW5nU3RvcmU6OmNhbGN1bGF0ZUV4cG9zZWRUaWxlRWRnZXMoY29uc3QgRmxvYXRS
ZWN0JiB0CiAgICAgcmV0dXJuIGV4cG9zZWRFZGdlczsKIH0KIAorVHJhbnNmb3JtYXRpb25NYXRy
aXggVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjphZGp1c3RlZFRyYW5zZm9ybUZvclJl
Y3QoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0KQoreworICAgIHJldHVybiBUcmFuc2Zvcm1h
dGlvbk1hdHJpeDo6cmVjdFRvUmVjdChyZWN0KCksIHRhcmdldFJlY3QpOworfQorCiB2b2lkIFRl
eHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVy
ZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBU
ZXh0dXJlKiBtYXNrKQogewogICAgIHVwZGF0ZUNvbnRlbnRzRnJvbUltYWdlSWZOZWVkZWQodGV4
dHVyZU1hcHBlcik7Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggYWRqdXN0ZWRUcmFuc2Zvcm0g
PSB0cmFuc2Zvcm07Ci0gICAgYWRqdXN0ZWRUcmFuc2Zvcm0ubXVsdGlwbHkoVHJhbnNmb3JtYXRp
b25NYXRyaXg6OnJlY3RUb1JlY3QocmVjdCgpLCB0YXJnZXRSZWN0KSk7Ci0gICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtX3RpbGVzLnNpemUoKTsgKytpKSB7CisgICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggYWRqdXN0ZWRUcmFuc2Zvcm0gPSB0cmFuc2Zvcm0gKiBhZGp1c3RlZFRyYW5zZm9ybUZv
clJlY3QodGFyZ2V0UmVjdCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3RpbGVzLnNp
emUoKTsgKytpKQogICAgICAgICBtX3RpbGVzW2ldLnBhaW50KHRleHR1cmVNYXBwZXIsIGFkanVz
dGVkVHJhbnNmb3JtLCBvcGFjaXR5LCBtYXNrLCBjYWxjdWxhdGVFeHBvc2VkVGlsZUVkZ2VzKHJl
Y3QoKSwgbV90aWxlc1tpXS5yZWN0KCkpKTsKLSAgICAgICAgaWYgKG1fZHJhd3NEZWJ1Z0JvcmRl
cnMpCi0gICAgICAgICAgICB0ZXh0dXJlTWFwcGVyLT5kcmF3Qm9yZGVyKG1fZGVidWdCb3JkZXJD
b2xvciwgbV9kZWJ1Z0JvcmRlcldpZHRoLCBtX3RpbGVzW2ldLnJlY3QoKSwgYWRqdXN0ZWRUcmFu
c2Zvcm0pOwotICAgIH0KK30KKwordm9pZCBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6
OmRyYXdCb3JkZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgQ29sb3ImIGJv
cmRlckNvbG9yLCBmbG9hdCBib3JkZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKQoreworICAgIFRyYW5zZm9y
bWF0aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3JtID0gdHJhbnNmb3JtICogYWRqdXN0ZWRUcmFu
c2Zvcm1Gb3JSZWN0KHRhcmdldFJlY3QpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90
aWxlcy5zaXplKCk7ICsraSkKKyAgICAgICAgdGV4dHVyZU1hcHBlci0+ZHJhd0JvcmRlcihib3Jk
ZXJDb2xvciwgYm9yZGVyV2lkdGgsIG1fdGlsZXNbaV0ucmVjdCgpLCBhZGp1c3RlZFRyYW5zZm9y
bSk7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpkcmF3UmVwYWlu
dENvdW50ZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgaW50IHJlcGFpbnRDb3VudCwg
Y29uc3QgQ29sb3ImIGJvcmRlckNvbG9yLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0pCit7CisgICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggYWRqdXN0ZWRUcmFuc2Zvcm0gPSB0cmFuc2Zvcm0gKiBhZGp1c3RlZFRyYW5zZm9y
bUZvclJlY3QodGFyZ2V0UmVjdCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3RpbGVz
LnNpemUoKTsgKytpKQorICAgICAgICB0ZXh0dXJlTWFwcGVyLT5kcmF3UmVwYWludENvdW50ZXIo
cmVwYWludENvdW50LCBib3JkZXJDb2xvciwgbV90aWxlc1tpXS5yZWN0KCkubG9jYXRpb24oKSwg
YWRqdXN0ZWRUcmFuc2Zvcm0pOwogfQogCiB2b2lkIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdT
dG9yZTo6Y3JlYXRlT3JEZXN0cm95VGlsZXNJZk5lZWRlZChjb25zdCBGbG9hdFNpemUmIHNpemUs
IGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBib29sIGhhc0FscGhhKQpAQCAtMjM0LDExICsyNDgs
NSBAQCBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdT
dG9yZTo6dGV4dHVyZSgpIGNvbnN0CiAgICAgcmV0dXJuIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVy
ZT4oKTsKIH0KIAotdm9pZCBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OnNldERlYnVn
Qm9yZGVyKGNvbnN0IENvbG9yJiBjb2xvciwgZmxvYXQgd2lkdGgpCi17Ci0gICAgbV9kZWJ1Z0Jv
cmRlckNvbG9yID0gY29sb3I7Ci0gICAgbV9kZWJ1Z0JvcmRlcldpZHRoID0gd2lkdGg7Ci19Ci0K
IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmgKaW5kZXggMGRk
MmRmNGIxOThiZDMxMWZkNDFjNTVhMzM3NzIxODRjZDE0YjM0YS4uNWI0MDVhYWNhZGFiNTMyMzRm
NTgyMjczMWE0ZDk1MzQ0MTU2YzRhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdT
dG9yZS5oCkBAIC00MCw4ICs0MCwxMyBAQCBjbGFzcyBUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3Jl
IDogcHVibGljIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLCBwdWJsaWMgUmVmQwogcHVibGlj
OgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVy
KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCwg
Qml0bWFwVGV4dHVyZSopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVy
KFRleHR1cmVNYXBwZXIqLCBpbnQgLyogcmVwYWludENvdW50ICovLCBjb25zdCBDb2xvciYsIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JikKKyAgICB7CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KICAgICB2aXJ0dWFsIH5UZXh0dXJlTWFw
cGVyQmFja2luZ1N0b3JlKCkgeyB9CiAKKwogcHJvdGVjdGVkOgogICAgIHN0YXRpYyB1bnNpZ25l
ZCBjYWxjdWxhdGVFeHBvc2VkVGlsZUVkZ2VzKGNvbnN0IEZsb2F0UmVjdCYgdG90YWxSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0KTsKIH07CkBAIC05NCwyNiArOTksMjMgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUoKSBjb25z
dCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVy
ZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jiwg
ZmxvYXQsIEJpdG1hcFRleHR1cmUqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0Jv
cmRlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgQ29sb3ImLCBmbG9hdCBib3JkZXJXaWR0aCwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVyKFRleHR1cmVNYXBwZXIqLCBpbnQgcmVw
YWludENvdW50LCBjb25zdCBDb2xvciYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JikgT1ZFUlJJREU7CiAgICAgdm9pZCB1cGRhdGVDb250ZW50cyhUZXh0dXJl
TWFwcGVyKiwgSW1hZ2UqLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbnRSZWN0JiwgQml0bWFw
VGV4dHVyZTo6VXBkYXRlQ29udGVudHNGbGFnKTsKICAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzKFRl
eHR1cmVNYXBwZXIqLCBHcmFwaGljc0xheWVyKiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW50
UmVjdCYsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNvbnRlbnRzRmxhZyk7CiAKICAgICB2b2lkIHNl
dENvbnRlbnRzVG9JbWFnZShJbWFnZSogaW1hZ2UpIHsgbV9pbWFnZSA9IGltYWdlOyB9Ci0gICAg
dm9pZCBzZXRTaG93RGVidWdCb3JkZXJzKGJvb2wgZHJhd3NEZWJ1Z0JvcmRlcnMpIHsgbV9kcmF3
c0RlYnVnQm9yZGVycyA9IGRyYXdzRGVidWdCb3JkZXJzOyB9Ci0gICAgdm9pZCBzZXREZWJ1Z0Jv
cmRlcihjb25zdCBDb2xvciYsIGZsb2F0IHdpZHRoKTsKIAogcHJpdmF0ZToKICAgICBUZXh0dXJl
TWFwcGVyVGlsZWRCYWNraW5nU3RvcmUoKTsKICAgICB2b2lkIGNyZWF0ZU9yRGVzdHJveVRpbGVz
SWZOZWVkZWQoY29uc3QgRmxvYXRTaXplJiBiYWNraW5nU3RvcmVTaXplLCBjb25zdCBJbnRTaXpl
JiB0aWxlU2l6ZSwgYm9vbCBoYXNBbHBoYSk7CiAgICAgdm9pZCB1cGRhdGVDb250ZW50c0Zyb21J
bWFnZUlmTmVlZGVkKFRleHR1cmVNYXBwZXIqKTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBh
ZGp1c3RlZFRyYW5zZm9ybUZvclJlY3QoY29uc3QgRmxvYXRSZWN0Jik7CiAgICAgaW5saW5lIEZs
b2F0UmVjdCByZWN0KCkgY29uc3QgeyByZXR1cm4gRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8o
KSwgbV9zaXplKTsgfQogCiAgICAgVmVjdG9yPFRleHR1cmVNYXBwZXJUaWxlPiBtX3RpbGVzOwog
ICAgIEZsb2F0U2l6ZSBtX3NpemU7CiAgICAgUmVmUHRyPEltYWdlPiBtX2ltYWdlOwotCi0gICAg
Ym9vbCBtX2RyYXdzRGVidWdCb3JkZXJzOwotICAgIENvbG9yIG1fZGVidWdCb3JkZXJDb2xvcjsK
LSAgICBmbG9hdCBtX2RlYnVnQm9yZGVyV2lkdGg7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wu
Y3BwCmluZGV4IGI4MjkxOGVjMDJhZWJmYzgyMjNmMjM4NDI1NmJlMzljM2Q3OTk0YmUuLjM0M2E5
Yjc4ZGYyNWM5NmRjNmVlNzAwMzA4MjhkYWQwN2U4YmVlMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wu
Y3BwCkBAIC0zMDksMTAgKzMwOSwxOCBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd0JvcmRl
cihjb25zdCBDb2xvciYgY29sb3IsIGZsb2F0IHdpZHRoLCBjb25zdCBGbG9hdFJlYwogICAgIGRy
YXcodGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCBwcm9ncmFtLmdldCgpLCBHcmFwaGljc0Nv
bnRleHQzRDo6TElORV9MT09QLCBjb2xvci5oYXNBbHBoYSgpID8gU2hvdWxkQmxlbmQgOiAwKTsK
IH0KIAotdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdSZXBhaW50Q291bnRlcihpbnQgdmFsdWUs
IGludCBwb2ludFNpemUsIGNvbnN0IEZsb2F0UG9pbnQmIHRhcmdldFBvaW50LCBjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4KQorI2lmIFBMQVRGT1JNKFFUKQorc3Rh
dGljIGlubGluZSB1bnNpZ25lZCBjb252ZXJ0QVJHQlRvQUJHUih1bnNpZ25lZCBwaXhlbCkKK3sK
KyAgICByZXR1cm4gKChwaXhlbCA8PCAxNikgJiAweGZmMDAwMCkgfCAoKHBpeGVsID4+IDE2KSAm
IDB4ZmYpIHwgKHBpeGVsICYgMHhmZjAwZmYwMCk7Cit9CisjZW5kaWYKKwordm9pZCBUZXh0dXJl
TWFwcGVyR0w6OmRyYXdSZXBhaW50Q291bnRlcihpbnQgcmVwYWludENvdW50LCBjb25zdCBDb2xv
ciYgY29sb3IsIGNvbnN0IEZsb2F0UG9pbnQmIHRhcmdldFBvaW50LCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4KQogeworICAgIGludCBwb2ludFNpemUgPSA4Owog
I2lmIFBMQVRGT1JNKFFUKQotICAgIFFTdHJpbmcgY291bnRlclN0cmluZyA9IFFTdHJpbmc6Om51
bWJlcih2YWx1ZSk7CisgICAgUVN0cmluZyBjb3VudGVyU3RyaW5nID0gUVN0cmluZzo6bnVtYmVy
KHJlcGFpbnRDb3VudCk7CiAKICAgICBRRm9udCBmb250KFFTdHJpbmc6OmZyb21MYXRpbjEoIk1v
bm9zcGFjZSIpLCBwb2ludFNpemUsIFFGb250OjpCb2xkKTsKICAgICBmb250LnNldFN0eWxlSGlu
dChRRm9udDo6VHlwZVdyaXRlcik7CkBAIC0zMjcsNyArMzM1LDcgQEAgdm9pZCBUZXh0dXJlTWFw
cGVyR0w6OmRyYXdSZXBhaW50Q291bnRlcihpbnQgdmFsdWUsIGludCBwb2ludFNpemUsIGNvbnN0
IEZsb2F0UG8KIAogICAgIFFJbWFnZSBpbWFnZShzaXplLCBOYXRpdmVJbWFnZVF0OjpkZWZhdWx0
Rm9ybWF0Rm9yQWxwaGFFbmFibGVkSW1hZ2VzKCkpOwogICAgIFFQYWludGVyIHBhaW50ZXIoJmlt
YWdlKTsKLSAgICBwYWludGVyLmZpbGxSZWN0KHNvdXJjZVJlY3QsIFF0OjpibHVlKTsgLy8gU2lu
Y2Ugd2Ugd29uJ3Qgc3dhcCBSK0IgZm9yIHNwZWVkLCB0aGlzIHdpbGwgcGFpbnQgcmVkLgorICAg
IHBhaW50ZXIuZmlsbFJlY3Qoc291cmNlUmVjdCwgY29udmVydEFSR0JUb0FCR1IocHJlbXVsdGlw
bGllZEFSR0JGcm9tQ29sb3IoY29sb3IpKSk7IC8vIFNpbmNlIHdlIHdvbid0IHN3YXAgUitCIHdo
ZW4gdXBsb2FkaW5nIGEgdGV4dHVyZSwgcGFpbnQgd2l0aCB0aGUgc3dhcHBlZCBSK0IgY29sb3Iu
CiAgICAgcGFpbnRlci5zZXRGb250KGZvbnQpOwogICAgIHBhaW50ZXIuc2V0UGVuKFF0Ojp3aGl0
ZSk7CiAgICAgcGFpbnRlci5kcmF3VGV4dCgyLCBoZWlnaHQgKiAwLjg1LCBjb3VudGVyU3RyaW5n
KTsKQEAgLTMzOCw3ICszNDYsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1JlcGFpbnRD
b3VudGVyKGludCB2YWx1ZSwgaW50IHBvaW50U2l6ZSwgY29uc3QgRmxvYXRQbwogICAgIGRyYXdU
ZXh0dXJlKCp0ZXh0dXJlLCB0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIDEuMGYsIDAsIEFs
bEVkZ2VzKTsKIAogI2VsaWYgVVNFKENBSVJPKQotICAgIENTdHJpbmcgY291bnRlclN0cmluZyA9
IFN0cmluZzo6bnVtYmVyKHZhbHVlKS5hc2NpaSgpOworICAgIENTdHJpbmcgY291bnRlclN0cmlu
ZyA9IFN0cmluZzo6bnVtYmVyKHJlcGFpbnRDb3VudCkuYXNjaWkoKTsKICAgICAvLyBjYWlyb190
ZXh0X2V4dGVudHMoKSByZXF1aXJlcyBhIGNhaXJvX3QsIHNvIGRpbWVuc2lvbnMgbmVlZCB0byBi
ZSBndWVzc3RpbWF0ZWQuCiAgICAgaW50IHdpZHRoID0gY291bnRlclN0cmluZy5sZW5ndGgoKSAq
IHBvaW50U2l6ZSAqIDEuMjsKICAgICBpbnQgaGVpZ2h0ID0gcG9pbnRTaXplICogMS41OwpAQCAt
MzQ2LDcgKzM1NCw5IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3UmVwYWludENvdW50ZXIo
aW50IHZhbHVlLCBpbnQgcG9pbnRTaXplLCBjb25zdCBGbG9hdFBvCiAgICAgY2Fpcm9fc3VyZmFj
ZV90KiBzdXJmYWNlID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGUoQ0FJUk9fRk9STUFUX0FS
R0IzMiwgd2lkdGgsIGhlaWdodCk7CiAgICAgY2Fpcm9fdCogY3IgPSBjYWlyb19jcmVhdGUoc3Vy
ZmFjZSk7CiAKLSAgICBjYWlyb19zZXRfc291cmNlX3JnYihjciwgMCwgMCwgMSk7IC8vIFNpbmNl
IHdlIHdvbid0IHN3YXAgUitCIGZvciBzcGVlZCwgdGhpcyB3aWxsIHBhaW50IHJlZC4KKyAgICBm
bG9hdCByLCBnLCBiLCBhOworICAgIGNvbG9yLmdldFJHQkEociwgZywgYiwgYSk7CisgICAgY2Fp
cm9fc2V0X3NvdXJjZV9yZ2JhKGNyLCBiLCBnLCByLCBhKTsgLy8gU2luY2Ugd2Ugd29uJ3Qgc3dh
cCBSK0Igd2hlbiB1cGxvYWRpbmcgYSB0ZXh0dXJlLCBwYWludCB3aXRoIHRoZSBzd2FwcGVkIFIr
QiBjb2xvci4KICAgICBjYWlyb19yZWN0YW5nbGUoY3IsIDAsIDAsIHdpZHRoLCBoZWlnaHQpOwog
ICAgIGNhaXJvX2ZpbGwoY3IpOwogCkBAIC0zNzAsNyArMzgwLDcgQEAgdm9pZCBUZXh0dXJlTWFw
cGVyR0w6OmRyYXdSZXBhaW50Q291bnRlcihpbnQgdmFsdWUsIGludCBwb2ludFNpemUsIGNvbnN0
IEZsb2F0UG8KICAgICBjYWlyb19kZXN0cm95KGNyKTsKIAogI2Vsc2UKLSAgICBVTlVTRURfUEFS
QU0odmFsdWUpOworICAgIFVOVVNFRF9QQVJBTShyZXBhaW50Q291bnQpOwogICAgIFVOVVNFRF9Q
QVJBTShwb2ludFNpemUpOwogICAgIFVOVVNFRF9QQVJBTSh0YXJnZXRQb2ludCk7CiAgICAgVU5V
U0VEX1BBUkFNKG1vZGVsVmlld01hdHJpeCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmgKaW5kZXggMTYwNTA3
YzYwNjhmZWZjMzU0ODQzMGZiZWRhYWYzNTA2M2Q5NzQxNi4uOTgzZTJhMDZjM2M0M2Q2M2FhOWVi
YTFhZjZjMWExZDhkZjU5M2RkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaApAQCAtNTIsOCArNTIsOCBA
QCBwdWJsaWM6CiAgICAgdHlwZWRlZiBpbnQgRmxhZ3M7CiAKICAgICAvLyBUZXh0dXJlTWFwcGVy
IGltcGxlbWVudGF0aW9uCi0gICAgdmlydHVhbCB2b2lkIGRyYXdCb3JkZXIoY29uc3QgQ29sb3Im
LCBmbG9hdCBib3JkZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4ID0gVHJhbnNmb3JtYXRpb25NYXRy
aXgoKSkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdSZXBhaW50Q291bnRlcihpbnQg
dmFsdWUsIGludCBwb2ludFNpemUsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRyYXdCb3JkZXIoY29uc3QgQ29sb3ImLCBmbG9hdCBi
b3JkZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVyKGludCByZXBh
aW50Q291bnQsIGNvbnN0IENvbG9yJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdUZXh0dXJlKGNv
bnN0IEJpdG1hcFRleHR1cmUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEJpdG1hcFRleHR1cmUqIG1hc2tUZXh0dXJl
LCB1bnNpZ25lZCBleHBvc2VkRWRnZXMpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3
VGV4dHVyZShQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUsIEZsYWdzLCBjb25zdCBJbnRTaXplJiB0
ZXh0dXJlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5LCBjb25zdCBCaXRtYXBU
ZXh0dXJlKiBtYXNrVGV4dHVyZSwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzID0gQWxsRWRnZXMpOwog
ICAgIHZpcnR1YWwgdm9pZCBkcmF3U29saWRDb2xvcihjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IENvbG9yJikgT1ZFUlJJREU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlcklt
YWdlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuY3BwCmluZGV4IGQ5ZGJjODBlNmQyY2Q0OTcxZGFjMGE3
NTBmMzRiODI5MmM3MjE1NjYuLmI0ZTEyMmQyY2Q4ZGEwOTcwNWY3OWM0YmVjZGNjNjNmMGFhODMy
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuY3BwCkBAIC0yNSw2ICsy
NSw3IEBACiAjaWYgUExBVEZPUk0oUVQpCiAjaW5jbHVkZSAiTmF0aXZlSW1hZ2VRdC5oIgogI2Vu
ZGlmCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKIAogCiAjaWYgVVNFKFRFWFRVUkVfTUFQ
UEVSKQpAQCAtMTY0LDYgKzE2NSwxNiBAQCB2b2lkIFRleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlcjo6
ZHJhd1NvbGlkQ29sb3IoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBUcmFucwogICAgIGNv
bnRleHQtPnJlc3RvcmUoKTsKIH0KIAordm9pZCBUZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXI6OmRy
YXdCb3JkZXIoY29uc3QgQ29sb3ImLCBmbG9hdCAvKiBib3JkZXJXaWR0aCAqLywgY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyOjpkcmF3UmVwYWludENv
dW50ZXIoaW50IC8qIHJlcGFpbnRDb3VudCAqLywgY29uc3QgQ29sb3ImLCBjb25zdCBGbG9hdFBv
aW50JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiBQYXNzUmVmUHRyPEJpdG1hcFRleHR1
cmU+IEJpdG1hcFRleHR1cmVJbWFnZUJ1ZmZlcjo6YXBwbHlGaWx0ZXJzKFRleHR1cmVNYXBwZXIq
LCBjb25zdCBCaXRtYXBUZXh0dXJlJiBjb250ZW50VGV4dHVyZSwgY29uc3QgRmlsdGVyT3BlcmF0
aW9ucyYgZmlsdGVycykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuaAppbmRl
eCA5ZGU2ZDRjYmQ1ZWIxN2U5MzQ4ODAxOGE2MmE3MTMxZDg5NzM4NGViLi41YjJlOTc4M2Q2OWMw
NTg2MzkyNzJhMmI2MzFjNzZhZTEwNTczZDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFn
ZUJ1ZmZlci5oCkBAIC01MywxNCArNTMsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25Q
dHI8VGV4dHVyZU1hcHBlcj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRQdHIobmV3IFRleHR1cmVN
YXBwZXJJbWFnZUJ1ZmZlcik7IH0KIAogICAgIC8vIFRleHR1cmVNYXBwZXIgaW1wbGVtZW50YXRp
b24KLSAgICB2aXJ0dWFsIHZvaWQgZHJhd0JvcmRlcihjb25zdCBDb2xvciYsIGZsb2F0IC8qIGJv
cmRlcldpZHRoICovLCBjb25zdCBGbG9hdFJlY3QmIC8qIHRhcmdldFJlY3QgKi8sIGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCgpKSBPVkVSUklERQotICAgIHsKLSAgICAgICAgVU5VU0VEX1BBUkFNKG1vZGVsVmlld01hdHJp
eCk7Ci0gICAgfTsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVyKGludCAvKiB2
YWx1ZSAqLywgaW50IC8qIHBvaW50U2l6ZSAqLywgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCgpKSBPVkVSUklERQotICAgIHsKLSAgICAgICAgVU5VU0VEX1BBUkFNKG1vZGVsVmlld01hdHJp
eCk7Ci0gICAgfTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0JvcmRlcihjb25zdCBDb2xvciYsIGZs
b2F0IGJvcmRlcldpZHRoLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVwYWludENvdW50ZXIoaW50
IHJlcGFpbnRDb3VudCwgY29uc3QgQ29sb3ImLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1RleHR1
cmUoY29uc3QgQml0bWFwVGV4dHVyZSYsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5LCBjb25zdCBCaXRtYXBUZXh0
dXJlKiBtYXNrVGV4dHVyZSwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIHZvaWQgZHJhd1NvbGlkQ29sb3IoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmLCBjb25zdCBDb2xvciYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCBiZWdpbkNsaXAoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBGbG9hdFJlY3Qm
KSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKaW5kZXggNWRmYTE4MzhlZDRi
NGMyMTg0NzUwNDM0NmVlZjAzNjQzOWI1MWE5Yi4uOGU4MGIxOTQyMzU5ZmJjOGNhNjBkODEzZmI5
NzMxNmYzMzkxNTY0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKQEAgLTEyOSw2ICsx
MjksOCBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxmKGNvbnN0IFRleHR1cmVN
YXBwZXJQYWludE9wdGlvbnMmIG9wdGlvbnMpCiAKICAgICBpZiAobV9zdGF0ZS5zb2xpZENvbG9y
LmlzVmFsaWQoKSAmJiAhbV9zdGF0ZS5jb250ZW50c1JlY3QuaXNFbXB0eSgpKSB7CiAgICAgICAg
IG9wdGlvbnMudGV4dHVyZU1hcHBlci0+ZHJhd1NvbGlkQ29sb3IobV9zdGF0ZS5jb250ZW50c1Jl
Y3QsIHRyYW5zZm9ybSwgYmxlbmRXaXRoT3BhY2l0eShtX3N0YXRlLnNvbGlkQ29sb3IsIG9wYWNp
dHkpKTsKKyAgICAgICAgaWYgKG1fc3RhdGUuc2hvd0RlYnVnQm9yZGVycykKKyAgICAgICAgICAg
IG9wdGlvbnMudGV4dHVyZU1hcHBlci0+ZHJhd0JvcmRlcihtX3N0YXRlLmRlYnVnQm9yZGVyQ29s
b3IsIG1fc3RhdGUuZGVidWdCb3JkZXJXaWR0aCwgbGF5ZXJSZWN0KCksIHRyYW5zZm9ybSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEzNiwxMSArMTM4LDE4IEBAIHZvaWQgVGV4dHVy
ZU1hcHBlckxheWVyOjpwYWludFNlbGYoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYg
b3B0aW9ucykKICAgICAgICAgQVNTRVJUKG1fc3RhdGUuZHJhd3NDb250ZW50ICYmIG1fc3RhdGUu
Y29udGVudHNWaXNpYmxlICYmICFtX3N0YXRlLnNpemUuaXNFbXB0eSgpKTsKICAgICAgICAgQVNT
RVJUKCFsYXllclJlY3QoKS5pc0VtcHR5KCkpOwogICAgICAgICBtX2JhY2tpbmdTdG9yZS0+cGFp
bnRUb1RleHR1cmVNYXBwZXIob3B0aW9ucy50ZXh0dXJlTWFwcGVyLCBsYXllclJlY3QoKSwgdHJh
bnNmb3JtLCBvcGFjaXR5LCBtYXNrLmdldCgpKTsKKyAgICAgICAgaWYgKG1fc3RhdGUuc2hvd0Rl
YnVnQm9yZGVycykKKyAgICAgICAgICAgIG1fYmFja2luZ1N0b3JlLT5kcmF3Qm9yZGVyKG9wdGlv
bnMudGV4dHVyZU1hcHBlciwgbV9zdGF0ZS5kZWJ1Z0JvcmRlckNvbG9yLCBtX3N0YXRlLmRlYnVn
Qm9yZGVyV2lkdGgsIGxheWVyUmVjdCgpLCB0cmFuc2Zvcm0pOworICAgICAgICAvLyBPbmx5IGRy
YXcgcmVwYWludCBjb3VudCBmb3IgdGhlIG1haW4gYmFja2luZyBzdG9yZS4KKyAgICAgICAgaWYg
KG1fc3RhdGUuc2hvd1JlcGFpbnRDb3VudGVyKQorICAgICAgICAgICAgbV9iYWNraW5nU3RvcmUt
PmRyYXdSZXBhaW50Q291bnRlcihvcHRpb25zLnRleHR1cmVNYXBwZXIsIG1fc3RhdGUucmVwYWlu
dENvdW50LCBtX3N0YXRlLmRlYnVnQm9yZGVyQ29sb3IsIGxheWVyUmVjdCgpLCB0cmFuc2Zvcm0p
OwogICAgIH0KIAogICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIpIHsKICAgICAgICAgQVNTRVJUKCFs
YXllclJlY3QoKS5pc0VtcHR5KCkpOwogICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnBhaW50VG9U
ZXh0dXJlTWFwcGVyKG9wdGlvbnMudGV4dHVyZU1hcHBlciwgbV9zdGF0ZS5jb250ZW50c1JlY3Qs
IHRyYW5zZm9ybSwgb3BhY2l0eSwgbWFzay5nZXQoKSk7CisgICAgICAgIGlmIChtX3N0YXRlLnNo
b3dEZWJ1Z0JvcmRlcnMpCisgICAgICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPmRyYXdCb3JkZXIo
b3B0aW9ucy50ZXh0dXJlTWFwcGVyLCBtX3N0YXRlLmRlYnVnQm9yZGVyQ29sb3IsIG1fc3RhdGUu
ZGVidWdCb3JkZXJXaWR0aCwgbV9zdGF0ZS5jb250ZW50c1JlY3QsIHRyYW5zZm9ybSk7CiAgICAg
fQogfQogCkBAIC0zODMsOCArMzkyLDYgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OmZsdXNo
Q29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoR3JhcGhpY3NMYXllclRleHQKICAgICBp
ZiAoY2hhbmdlTWFzayA9PSBOb0NoYW5nZXMgJiYgZ3JhcGhpY3NMYXllci0+bV9hbmltYXRpb25z
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ3JhcGhpY3NMYXllci0+dXBkYXRl
RGVidWdJbmRpY2F0b3JzKCk7Ci0KICAgICBpZiAoY2hhbmdlTWFzayAmIENoaWxkcmVuQ2hhbmdl
KQogICAgICAgICBzZXRDaGlsZHJlbihncmFwaGljc0xheWVyLT5jaGlsZHJlbigpKTsKIApAQCAt
NDAxLDYgKzQwOCw5IEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpmbHVzaENvbXBvc2l0aW5n
U3RhdGVGb3JUaGlzTGF5ZXJPbmx5KEdyYXBoaWNzTGF5ZXJUZXh0CiAgICAgaWYgKGNoYW5nZU1h
c2sgJiBBbmltYXRpb25DaGFuZ2UpCiAgICAgICAgIG1fYW5pbWF0aW9ucyA9IGdyYXBoaWNzTGF5
ZXItPm1fYW5pbWF0aW9uczsKIAorICAgIGlmIChjaGFuZ2VNYXNrICYgUmVwYWludENvdW50Q2hh
bmdlKQorICAgICAgICBtX3N0YXRlLnJlcGFpbnRDb3VudCA9IGdyYXBoaWNzTGF5ZXItPnJlcGFp
bnRDb3VudCgpOworCiAgICAgbV9zdGF0ZS5tYXNrTGF5ZXIgPSB0b1RleHR1cmVNYXBwZXJMYXll
cihncmFwaGljc0xheWVyLT5tYXNrTGF5ZXIoKSk7CiAgICAgbV9zdGF0ZS5yZXBsaWNhTGF5ZXIg
PSB0b1RleHR1cmVNYXBwZXJMYXllcihncmFwaGljc0xheWVyLT5yZXBsaWNhTGF5ZXIoKSk7CiAg
ICAgbV9zdGF0ZS5wb3MgPSBncmFwaGljc0xheWVyLT5wb3NpdGlvbigpOwpAQCAtNDIzLDYgKzQz
MywxMSBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9y
VGhpc0xheWVyT25seShHcmFwaGljc0xheWVyVGV4dAogI2VuZGlmCiAgICAgbV9maXhlZFRvVmll
d3BvcnQgPSBncmFwaGljc0xheWVyLT5maXhlZFRvVmlld3BvcnQoKTsKIAorICAgIG1fc3RhdGUu
c2hvd0RlYnVnQm9yZGVycyA9IGdyYXBoaWNzTGF5ZXItPmlzU2hvd2luZ0RlYnVnQm9yZGVyKCk7
CisgICAgbV9zdGF0ZS5kZWJ1Z0JvcmRlckNvbG9yID0gdG9HcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlcihncmFwaGljc0xheWVyKS0+ZGVidWdCb3JkZXJDb2xvcigpOworICAgIG1fc3RhdGUuZGVi
dWdCb3JkZXJXaWR0aCA9IHRvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIoZ3JhcGhpY3NMYXll
ciktPmRlYnVnQm9yZGVyV2lkdGgoKTsKKyAgICBtX3N0YXRlLnNob3dSZXBhaW50Q291bnRlciA9
IGdyYXBoaWNzTGF5ZXItPmlzU2hvd2luZ1JlcGFpbnRDb3VudGVyKCk7CisKICAgICBtX2NvbnRl
bnRzTGF5ZXIgPSBncmFwaGljc0xheWVyLT5wbGF0Zm9ybUxheWVyKCk7CiAKICAgICBtX2N1cnJl
bnRUcmFuc2Zvcm0uc2V0UG9zaXRpb24oYWRqdXN0ZWRQb3NpdGlvbigpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyTGF5ZXIuaAppbmRleCBmNDFlNTJhOTdjNGIzMjhjNDRjZjY1MGFlZTM0Y2QzMDBhNDY1Mzlh
Li41NzViYjI3ZWI3YTg3NGMxODRiNTgxZWQyYmQ0MzVkMTAxNWE4M2IxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJMYXllci5oCkBAIC03MSw3ICs3MSwxMCBAQCBwdWJsaWM6CiAKICAgICAgICAgUmVwbGlj
YUxheWVyQ2hhbmdlID0gICAgICAgICgxTCA8PCAyMSksCiAgICAgICAgIEFuaW1hdGlvbkNoYW5n
ZSA9ICAgICAgICAgICAoMUwgPDwgMjIpLAotICAgICAgICBGaWx0ZXJDaGFuZ2UgPSAgICAgICAg
ICAgICAgKDFMIDw8IDIzKQorICAgICAgICBGaWx0ZXJDaGFuZ2UgPSAgICAgICAgICAgICAgKDFM
IDw8IDIzKSwKKworICAgICAgICBEZWJ1Z1Zpc3VhbHNDaGFuZ2UgPSAgICAgICAgKDFMIDw8IDI0
KSwKKyAgICAgICAgUmVwYWludENvdW50Q2hhbmdlID0gICAgICAgICgxTCA8PCAyNSkKICAgICB9
OwogCiAgICAgVGV4dHVyZU1hcHBlckxheWVyKCkKQEAgLTE3Miw2ICsxNzUsOSBAQCBwcml2YXRl
OgogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKICAgICAgICAgRmlsdGVyT3BlcmF0aW9ucyBmaWx0
ZXJzOwogI2VuZGlmCisgICAgICAgIENvbG9yIGRlYnVnQm9yZGVyQ29sb3I7CisgICAgICAgIGZs
b2F0IGRlYnVnQm9yZGVyV2lkdGg7CisgICAgICAgIGludCByZXBhaW50Q291bnQ7CiAKICAgICAg
ICAgYm9vbCBwcmVzZXJ2ZXMzRCA6IDE7CiAgICAgICAgIGJvb2wgbWFza3NUb0JvdW5kcyA6IDE7
CkBAIC0xODAsMTEgKzE4NiwxNSBAQCBwcml2YXRlOgogICAgICAgICBib29sIGNvbnRlbnRzT3Bh
cXVlIDogMTsKICAgICAgICAgYm9vbCBiYWNrZmFjZVZpc2liaWxpdHkgOiAxOwogICAgICAgICBi
b29sIHZpc2libGUgOiAxOworICAgICAgICBib29sIHNob3dEZWJ1Z0JvcmRlcnMgOiAxOworICAg
ICAgICBib29sIHNob3dSZXBhaW50Q291bnRlciA6IDE7CiAKICAgICAgICAgU3RhdGUoKQogICAg
ICAgICAgICAgOiBvcGFjaXR5KDEpCiAgICAgICAgICAgICAsIG1hc2tMYXllcigwKQogICAgICAg
ICAgICAgLCByZXBsaWNhTGF5ZXIoMCkKKyAgICAgICAgICAgICwgZGVidWdCb3JkZXJXaWR0aCgw
KQorICAgICAgICAgICAgLCByZXBhaW50Q291bnQoMCkKICAgICAgICAgICAgICwgcHJlc2VydmVz
M0QoZmFsc2UpCiAgICAgICAgICAgICAsIG1hc2tzVG9Cb3VuZHMoZmFsc2UpCiAgICAgICAgICAg
ICAsIGRyYXdzQ29udGVudChmYWxzZSkKQEAgLTE5Miw2ICsyMDIsOCBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgLCBjb250ZW50c09wYXF1ZShmYWxzZSkKICAgICAgICAgICAgICwgYmFja2ZhY2VW
aXNpYmlsaXR5KGZhbHNlKQogICAgICAgICAgICAgLCB2aXNpYmxlKHRydWUpCisgICAgICAgICAg
ICAsIHNob3dEZWJ1Z0JvcmRlcnMoZmFsc2UpCisgICAgICAgICAgICAsIHNob3dSZXBhaW50Q291
bnRlcihmYWxzZSkKICAgICAgICAgewogICAgICAgICB9CiAgICAgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgKaW5kZXggMzhhZjAzZTg5YjYyNDgxYWJhZjMyMDk4YzNh
ODE3YWI0ZDAwMGMxZS4uZjQ4Nzk1MjY3NjgwMTkwODVjYmRlZjg5ZTY2ZWU0N2RlZjgxMDExNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgKQEAgLTI0LDE4ICsyNCwy
MCBAQAogI2luY2x1ZGUgIkdyYXBoaWNzU3VyZmFjZS5oIgogI2VuZGlmCiAKKyNpbmNsdWRlICJU
ZXh0dXJlTWFwcGVyLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBUZXh0dXJlTWFwcGVyOwotY2xhc3MgQml0bWFwVGV4
dHVyZTsKLQogY2xhc3MgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIgewogcHVibGljOgogICAg
IHZpcnR1YWwgflRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyKCkgeyB9CiAgICAgdmlydHVhbCB2
b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4ID0gVHJhbnNmb3Jt
YXRpb25NYXRyaXgoKSwgZmxvYXQgb3BhY2l0eSA9IDEuMCwgQml0bWFwVGV4dHVyZSogbWFzayA9
IDApID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3dhcEJ1ZmZlcnMoKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgZHJhd0JvcmRlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBDb2xv
ciYgY29sb3IsIGZsb2F0IGJvcmRlcldpZHRoLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3Qs
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0pCisgICAgeworICAgICAgICB0
ZXh0dXJlTWFwcGVyLT5kcmF3Qm9yZGVyKGNvbG9yLCBib3JkZXJXaWR0aCwgdGFyZ2V0UmVjdCwg
dHJhbnNmb3JtKTsKKyAgICB9CiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCiAgICAgdmlydHVh
bCBJbnRTaXplIHBsYXRmb3JtTGF5ZXJTaXplKCkgY29uc3QgeyByZXR1cm4gSW50U2l6ZSgpOyB9
CiAgICAgdmlydHVhbCB1aW50MzJfdCBjb3B5VG9HcmFwaGljc1N1cmZhY2UoKSB7IHJldHVybiAw
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZExheWVySW5mby5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllckluZm8uaAppbmRleCA2NTIwNTZkZDgxMDQyMzY0
MGZjZjY5NjkwNWE3ZGU3MzdkNmQ0YjllLi5jZjFmMDNlZGJiYmIyZTUxMmY2OWViYWI5YzNmMjMw
ZWM0YTFmMzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZExheWVySW5mby5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJJbmZvLmgKQEAgLTQzLDYgKzQz
LDcgQEAgc3RydWN0IENvb3JkaW5hdGVkTGF5ZXJJbmZvIHsKICAgICAgICAgLCBtYXNrKEludmFs
aWRDb29yZGluYXRlZExheWVySUQpCiAgICAgICAgICwgaW1hZ2VJRChJbnZhbGlkQ29vcmRpbmF0
ZWRJbWFnZUJhY2tpbmdJRCkKICAgICAgICAgLCBvcGFjaXR5KDApCisgICAgICAgICwgZGVidWdC
b3JkZXJXaWR0aCgwKQogICAgICAgICAsIGZsYWdzKDApIHsgfQogCiAgICAgQ29vcmRpbmF0ZWRM
YXllcklEIHJlcGxpY2E7CkBAIC01Nyw2ICs1OCw4IEBAIHN0cnVjdCBDb29yZGluYXRlZExheWVy
SW5mbyB7CiAgICAgV2ViQ29yZTo6SW50UmVjdCBjb250ZW50c1JlY3Q7CiAgICAgZmxvYXQgb3Bh
Y2l0eTsKICAgICBXZWJDb3JlOjpDb2xvciBzb2xpZENvbG9yOworICAgIFdlYkNvcmU6OkNvbG9y
IGRlYnVnQm9yZGVyQ29sb3I7CisgICAgZmxvYXQgZGVidWdCb3JkZXJXaWR0aDsKIAogICAgIHVu
aW9uIHsKICAgICAgICAgc3RydWN0IHsKQEAgLTY4LDYgKzcxLDggQEAgc3RydWN0IENvb3JkaW5h
dGVkTGF5ZXJJbmZvIHsKICAgICAgICAgICAgIGJvb2wgcHJlc2VydmVzM0QgOiAxOwogICAgICAg
ICAgICAgYm9vbCBpc1Jvb3RMYXllcjogMTsKICAgICAgICAgICAgIGJvb2wgZml4ZWRUb1ZpZXdw
b3J0IDogMTsKKyAgICAgICAgICAgIGJvb2wgc2hvd0RlYnVnQm9yZGVycyA6IDE7CisgICAgICAg
ICAgICBib29sIHNob3dSZXBhaW50Q291bnRlciA6IDE7CiAgICAgICAgIH07CiAgICAgICAgIHVu
c2lnbmVkIGZsYWdzOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tp
bmdTdG9yZS5jcHAKaW5kZXggNGE3YmIxMDg2ZWU3YTg2N2IyZDNmZDY4MGM1YTM3ZGIwNWI4Yjdk
OC4uMDYxNzlmZTQ4OThlYjc5ZDY3OWMzN2U2ZjQxMjA0ZmJmZDEwY2VlMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRC
YWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcApAQCAtODgsNyArODgsNiBAQCB2
b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjp1cGRhdGVUaWxlKHVpbnQzMl90IGlkLCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LAogewogICAgIEhhc2hNYXA8dWludDMyX3QsIENvb3JkaW5h
dGVkQmFja2luZ1N0b3JlVGlsZT46Oml0ZXJhdG9yIGl0ID0gbV90aWxlcy5maW5kKGlkKTsKICAg
ICBBU1NFUlQoaXQgIT0gbV90aWxlcy5lbmQoKSk7Ci0gICAgaXQtPnZhbHVlLmluY3JlbWVudFJl
cGFpbnRDb3VudCgpOwogICAgIGl0LT52YWx1ZS5zZXRCYWNrQnVmZmVyKHRpbGVSZWN0LCBzb3Vy
Y2VSZWN0LCBiYWNrQnVmZmVyLCBvZmZzZXQpOwogfQogCkBAIC0xMDksMjggKzEwOCwxNSBAQCB2
b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpzZXRTaXplKGNvbnN0IFdlYkNvcmU6OkZsb2F0
U2l6ZSYgc2l6ZSkKICAgICBtX3NpemUgPSBzaXplOwogfQogCi1zdGF0aWMgYm9vbCBzaG91bGRT
aG93VGlsZURlYnVnVmlzdWFscygpCit2b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpwYWlu
dFRpbGVzVG9UZXh0dXJlTWFwcGVyKFZlY3RvcjxUZXh0dXJlTWFwcGVyVGlsZSo+JiB0aWxlcywg
VGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgQml0bWFwVGV4dHVyZSogbWFzaywgY29uc3QgRmxv
YXRSZWN0JiByZWN0KQogewotI2lmIFBMQVRGT1JNKFFUKQotICAgIHJldHVybiAocWdldGVudigi
UVRfV0VCS0lUX1NIT1dfQ09NUE9TSVRJTkdfREVCVUdfVklTVUFMUyIpID09ICIxIik7Ci0jZWxp
ZiBVU0UoQ0FJUk8pCi0gICAgcmV0dXJuIChTdHJpbmcoZ2V0ZW52KCJXRUJLSVRfU0hPV19DT01Q
T1NJVElOR19ERUJVR19WSVNVQUxTIikpID09ICIxIik7Ci0jZW5kaWYKLSAgICByZXR1cm4gZmFs
c2U7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0aWxlcy5zaXplKCk7ICsraSkKKyAgICAg
ICAgdGlsZXNbaV0tPnBhaW50KHRleHR1cmVNYXBwZXIsIHRyYW5zZm9ybSwgb3BhY2l0eSwgbWFz
aywgY2FsY3VsYXRlRXhwb3NlZFRpbGVFZGdlcyhyZWN0LCB0aWxlc1tpXS0+cmVjdCgpKSk7CiB9
CiAKLXZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnBhaW50VGlsZXNUb1RleHR1cmVNYXBw
ZXIoVmVjdG9yPFRleHR1cmVNYXBwZXJUaWxlKj4mIHRpbGVzLCBUZXh0dXJlTWFwcGVyKiB0ZXh0
dXJlTWFwcGVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBv
cGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrLCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCitUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6YWRqdXN0ZWRUcmFuc2Zv
cm1Gb3JSZWN0KGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCkKIHsKLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHRpbGVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIFRleHR1cmVNYXBwZXJU
aWxlKiB0aWxlID0gdGlsZXNbaV07Ci0gICAgICAgIHRpbGUtPnBhaW50KHRleHR1cmVNYXBwZXIs
IHRyYW5zZm9ybSwgb3BhY2l0eSwgbWFzaywgY2FsY3VsYXRlRXhwb3NlZFRpbGVFZGdlcyhyZWN0
LCB0aWxlLT5yZWN0KCkpKTsKLSAgICAgICAgc3RhdGljIGJvb2wgc2hvdWxkRGVidWcgPSBzaG91
bGRTaG93VGlsZURlYnVnVmlzdWFscygpOwotICAgICAgICBpZiAoIXNob3VsZERlYnVnKQotICAg
ICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgdGV4dHVyZU1hcHBlci0+ZHJhd0JvcmRlcihD
b2xvcigweEZGLCAwLCAwKSwgMiwgdGlsZS0+cmVjdCgpLCB0cmFuc2Zvcm0pOwotICAgICAgICB0
ZXh0dXJlTWFwcGVyLT5kcmF3UmVwYWludENvdW50ZXIoc3RhdGljX2Nhc3Q8Q29vcmRpbmF0ZWRC
YWNraW5nU3RvcmVUaWxlKj4odGlsZSktPnJlcGFpbnRDb3VudCgpLCA4LCB0aWxlLT5yZWN0KCku
bG9jYXRpb24oKSwgdHJhbnNmb3JtKTsKLSAgICB9CisgICAgcmV0dXJuIFRyYW5zZm9ybWF0aW9u
TWF0cml4OjpyZWN0VG9SZWN0KHJlY3QoKSwgdGFyZ2V0UmVjdCk7CiB9CiAKIHZvaWQgQ29vcmRp
bmF0ZWRCYWNraW5nU3RvcmU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRl
eHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgQml0bWFwVGV4dHVyZSogbWFz
aykKQEAgLTE2NCwxNCArMTUwLDI4IEBAIHZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnBh
aW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsCiAgICAgICAg
IHByZXZpb3VzVGlsZXNUb1BhaW50LmFwcGVuZCgmdGlsZSk7CiAgICAgfQogCi0gICAgRmxvYXRS
ZWN0IHJlY3RPbkNvbnRlbnRzKEZsb2F0UG9pbnQ6Onplcm8oKSwgbV9zaXplKTsKLSAgICBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBhZGp1c3RlZFRyYW5zZm9ybSA9IHRyYW5zZm9ybTsKICAgICAvLyB0
YXJnZXRSZWN0IGlzIG9uIHRoZSBjb250ZW50cyBjb29yZGluYXRlIHN5c3RlbSwgc28gd2UgbXVz
dCBjb21wYXJlIHR3byByZWN0cyBvbiB0aGUgY29udGVudHMgY29vcmRpbmF0ZSBzeXN0ZW0uCiAg
ICAgLy8gU2VlIFRpbGVkQmFja2luZ1N0b3JlLgotICAgIGFkanVzdGVkVHJhbnNmb3JtLm11bHRp
cGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4OjpyZWN0VG9SZWN0KHJlY3RPbkNvbnRlbnRzLCB0YXJn
ZXRSZWN0KSk7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggYWRqdXN0ZWRUcmFuc2Zvcm0gPSB0
cmFuc2Zvcm0gKiBhZGp1c3RlZFRyYW5zZm9ybUZvclJlY3QodGFyZ2V0UmVjdCk7CisKKyAgICBw
YWludFRpbGVzVG9UZXh0dXJlTWFwcGVyKHByZXZpb3VzVGlsZXNUb1BhaW50LCB0ZXh0dXJlTWFw
cGVyLCBhZGp1c3RlZFRyYW5zZm9ybSwgb3BhY2l0eSwgbWFzaywgcmVjdCgpKTsKKyAgICBwYWlu
dFRpbGVzVG9UZXh0dXJlTWFwcGVyKHRpbGVzVG9QYWludCwgdGV4dHVyZU1hcHBlciwgYWRqdXN0
ZWRUcmFuc2Zvcm0sIG9wYWNpdHksIG1hc2ssIHJlY3QoKSk7Cit9CiAKLSAgICBwYWludFRpbGVz
VG9UZXh0dXJlTWFwcGVyKHByZXZpb3VzVGlsZXNUb1BhaW50LCB0ZXh0dXJlTWFwcGVyLCBhZGp1
c3RlZFRyYW5zZm9ybSwgb3BhY2l0eSwgbWFzaywgcmVjdE9uQ29udGVudHMpOwotICAgIHBhaW50
VGlsZXNUb1RleHR1cmVNYXBwZXIodGlsZXNUb1BhaW50LCB0ZXh0dXJlTWFwcGVyLCBhZGp1c3Rl
ZFRyYW5zZm9ybSwgb3BhY2l0eSwgbWFzaywgcmVjdE9uQ29udGVudHMpOwordm9pZCBDb29yZGlu
YXRlZEJhY2tpbmdTdG9yZTo6ZHJhd0JvcmRlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVy
LCBjb25zdCBDb2xvciYgYm9yZGVyQ29sb3IsIGZsb2F0IGJvcmRlcldpZHRoLCBjb25zdCBGbG9h
dFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0p
Cit7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggYWRqdXN0ZWRUcmFuc2Zvcm0gPSB0cmFuc2Zv
cm0gKiBhZGp1c3RlZFRyYW5zZm9ybUZvclJlY3QodGFyZ2V0UmVjdCk7CisgICAgSGFzaE1hcDx1
aW50MzJfdCwgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlPjo6aXRlcmF0b3IgZW5kID0gbV90
aWxlcy5lbmQoKTsKKyAgICBmb3IgKEhhc2hNYXA8dWludDMyX3QsIENvb3JkaW5hdGVkQmFja2lu
Z1N0b3JlVGlsZT46Oml0ZXJhdG9yIGl0ID0gbV90aWxlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsr
aXQpCisgICAgICAgIHRleHR1cmVNYXBwZXItPmRyYXdCb3JkZXIoYm9yZGVyQ29sb3IsIGJvcmRl
cldpZHRoLCBpdC0+dmFsdWUucmVjdCgpLCBhZGp1c3RlZFRyYW5zZm9ybSk7Cit9CisKK3ZvaWQg
Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OmRyYXdSZXBhaW50Q291bnRlcihUZXh0dXJlTWFwcGVy
KiB0ZXh0dXJlTWFwcGVyLCBpbnQgcmVwYWludENvdW50LCBjb25zdCBDb2xvciYgYm9yZGVyQ29s
b3IsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIHRyYW5zZm9ybSkKK3sKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhZGp1c3RlZFRyYW5z
Zm9ybSA9IHRyYW5zZm9ybSAqIGFkanVzdGVkVHJhbnNmb3JtRm9yUmVjdCh0YXJnZXRSZWN0KTsK
KyAgICBIYXNoTWFwPHVpbnQzMl90LCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGU+OjppdGVy
YXRvciBlbmQgPSBtX3RpbGVzLmVuZCgpOworICAgIGZvciAoSGFzaE1hcDx1aW50MzJfdCwgQ29v
cmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlPjo6aXRlcmF0b3IgaXQgPSBtX3RpbGVzLmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgdGV4dHVyZU1hcHBlci0+ZHJhd1JlcGFpbnRDb3Vu
dGVyKHJlcGFpbnRDb3VudCwgYm9yZGVyQ29sb3IsIGl0LT52YWx1ZS5yZWN0KCkubG9jYXRpb24o
KSwgYWRqdXN0ZWRUcmFuc2Zvcm0pOwogfQogCiB2b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3Jl
Ojpjb21taXRUaWxlT3BlcmF0aW9ucyhUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmgKaW5kZXggYWU1YWY4ZDRmYTJm
YzllYmQyMTE5NzI3ZmNhZGQ4NTk2MjMzMGY5OS4uZDI2NmY2MmUxOGQ5MWNhNjZkMzdmNGM2OGY3
MDI2ZDQyZDkwYjNiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9y
ZS5oCkBAIC0zNiwxMyArMzYsMTAgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IENvb3JkaW5hdGVk
QmFja2luZ1N0b3JlVGlsZShmbG9hdCBzY2FsZSA9IDEpCiAgICAgICAgIDogVGV4dHVyZU1hcHBl
clRpbGUoV2ViQ29yZTo6RmxvYXRSZWN0KCkpCiAgICAgICAgICwgbV9zY2FsZShzY2FsZSkKLSAg
ICAgICAgLCBtX3JlcGFpbnRDb3VudCgwKQogICAgIHsKICAgICB9CiAKICAgICBpbmxpbmUgZmxv
YXQgc2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3NjYWxlOyB9Ci0gICAgaW5saW5lIHZvaWQgaW5j
cmVtZW50UmVwYWludENvdW50KCkgeyArK21fcmVwYWludENvdW50OyB9Ci0gICAgaW5saW5lIGlu
dCByZXBhaW50Q291bnQoKSBjb25zdCB7IHJldHVybiBtX3JlcGFpbnRDb3VudDsgfQogICAgIHZv
aWQgc3dhcEJ1ZmZlcnMoV2ViQ29yZTo6VGV4dHVyZU1hcHBlciopOwogICAgIHZvaWQgc2V0QmFj
a0J1ZmZlcihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYs
IFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBidWZmZXIsIGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50Jik7CiAKQEAgLTUyLDcgKzQ5LDYgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpJbnRS
ZWN0IG1fdGlsZVJlY3Q7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgbV9zdXJmYWNlT2Zmc2V0Owog
ICAgIGZsb2F0IG1fc2NhbGU7Ci0gICAgaW50IG1fcmVwYWludENvdW50OwogfTsKIAogY2xhc3Mg
Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmUgOiBwdWJsaWMgV2ViQ29yZTo6VGV4dHVyZU1hcHBlckJh
Y2tpbmdTdG9yZSB7CkBAIC02NiwxMiArNjIsMTYgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8
V2ViQ29yZTo6Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0U2l6
ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1Rl
eHR1cmVNYXBwZXIoV2ViQ29yZTo6VGV4dHVyZU1hcHBlciosIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYsIGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQsIFdlYkNv
cmU6OkJpdG1hcFRleHR1cmUqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0JvcmRlcihXZWJDb3Jl
OjpUZXh0dXJlTWFwcGVyKiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBmbG9hdCBib3JkZXJXaWR0
aCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRp
b25NYXRyaXgmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVy
KFdlYkNvcmU6OlRleHR1cmVNYXBwZXIqLCBpbnQgcmVwYWludENvdW50LCBjb25zdCBXZWJDb3Jl
OjpDb2xvciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OlRyYW5z
Zm9ybWF0aW9uTWF0cml4JikgT1ZFUlJJREU7CiAKIHByaXZhdGU6CiAgICAgQ29vcmRpbmF0ZWRC
YWNraW5nU3RvcmUoKQogICAgICAgICA6IG1fc2NhbGUoMS4pCiAgICAgeyB9CiAgICAgdm9pZCBw
YWludFRpbGVzVG9UZXh0dXJlTWFwcGVyKFZlY3RvcjxXZWJDb3JlOjpUZXh0dXJlTWFwcGVyVGls
ZSo+JiwgV2ViQ29yZTo6VGV4dHVyZU1hcHBlciosIGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0
aW9uTWF0cml4JiwgZmxvYXQsIFdlYkNvcmU6OkJpdG1hcFRleHR1cmUqLCBjb25zdCBXZWJDb3Jl
OjpGbG9hdFJlY3QmKTsKKyAgICBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhZGp1c3Rl
ZFRyYW5zZm9ybUZvclJlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jik7CisgICAgV2ViQ29y
ZTo6RmxvYXRSZWN0IHJlY3QoKSBjb25zdCB7IHJldHVybiBXZWJDb3JlOjpGbG9hdFJlY3QoV2Vi
Q29yZTo6RmxvYXRQb2ludDo6emVybygpLCBtX3NpemUpOyB9CiAKICAgICBIYXNoTWFwPHVpbnQz
Ml90LCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGU+IG1fdGlsZXM7CiAgICAgSGFzaFNldDx1
aW50MzJfdD4gbV90aWxlc1RvUmVtb3ZlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHku
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3BwCmluZGV4IGJhYThmNjUyM2RlYmZkZWJiYzRlNTIy
YjQ3NWUxNGNjMThmZDJlYjUuLjRiMzU3ZDQzZDYzODUzODRhNzY5MDE5ZWM5MTg5MjRmNmY0ZTgz
MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQ
cm94eS5jcHAKQEAgLTI0Miw2ICsyNDIsMTEgQEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhv
c3RQcm94eTo6ZGVzdHJveUNhbnZhcyhDb29yZGluYXRlZExheWVySUQgaWQpCiB9CiAjZW5kaWYK
IAordm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6c2V0TGF5ZXJSZXBhaW50Q291
bnQoQ29vcmRpbmF0ZWRMYXllcklEIGlkLCBpbnQgdmFsdWUpCit7CisgICAgZGlzcGF0Y2hVcGRh
dGUoYmluZCgmTGF5ZXJUcmVlUmVuZGVyZXI6OnNldExheWVyUmVwYWludENvdW50LCBtX3JlbmRl
cmVyLmdldCgpLCBpZCwgdmFsdWUpKTsKK30KKwogdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhv
c3RQcm94eTo6cHVyZ2VCYWNraW5nU3RvcmVzKCkKIHsKICAgICBtX3N1cmZhY2VzLmNsZWFyKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaApp
bmRleCA3NTkxYjg0ODVkMzk4ODZlZDdlZDJjZDA1ZDExNjEzZmU2N2ZhY2QzLi44NmNmOWE1ZDA5
MzQ4MmUwMjg1YWM5MWNkYjhmMzYzMmUwZGVhMDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmgKQEAgLTg0LDYgKzg0LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgc3luY0NhbnZhcyhDb29yZGluYXRlZExheWVySUQsIHVpbnQzMl90IGZyb250
QnVmZmVyKTsKICAgICB2b2lkIGRlc3Ryb3lDYW52YXMoQ29vcmRpbmF0ZWRMYXllcklEKTsKICNl
bmRpZgorICAgIHZvaWQgc2V0TGF5ZXJSZXBhaW50Q291bnQoQ29vcmRpbmF0ZWRMYXllcklELCBp
bnQgdmFsdWUpOwogICAgIHZvaWQgcHVyZ2VCYWNraW5nU3RvcmVzKCk7CiAgICAgTGF5ZXJUcmVl
UmVuZGVyZXIqIGxheWVyVHJlZVJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJlci5n
ZXQoKTsgfQogICAgIHZvaWQgc2V0TGF5ZXJBbmltYXRpb25zKENvb3JkaW5hdGVkTGF5ZXJJRCwg
Y29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllckFuaW1hdGlvbnMmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdFByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkubWVzc2FnZXMu
aW4KaW5kZXggMTM3ZGFkODA3NTAwZjU1ZTU5ZDI2YzI3YzFkZWRiYTQ5YzU1MDhhMC4uNDQzMDg5
NTNmYTE4OWEzODk0Y2UyYWFjZmM3ZDNiODY4M2Y5OTk0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0UHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkubWVzc2FnZXMuaW4K
QEAgLTU1LDYgKzU1LDggQEAgbWVzc2FnZXMgLT4gQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJv
eHkgewogICAgIERlc3Ryb3lDYW52YXModWludDMyX3QgaWQpCiAjZW5kaWYKIAorICAgIFNldExh
eWVyUmVwYWludENvdW50KHVpbnQzMl90IGxheWVySUQsIGludCB2YWx1ZSkKKwogICAgIFNldEJh
Y2tncm91bmRDb2xvcihXZWJDb3JlOjpDb2xvciBjb2xvcikKIH0KICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVl
UmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwCmluZGV4IGViYjUwNjM5MGUzOTc5ODI0ZTZlNWUyMWNi
ZDUyM2IyOTY3MWU5N2YuLjQ1Y2M4MTM1OTc2YTNhZDQyY2M1ODE4NGVlZjFlYTRmNGZhYzBjZTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNz
L0xheWVyVHJlZVJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29v
cmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5jcHAKQEAgLTI1NSw2ICsyNTUsMTIg
QEAgdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6ZGVzdHJveUNhbnZhcyhDb29yZGluYXRlZExheWVy
SUQgaWQpCiB9CiAjZW5kaWYKIAordm9pZCBMYXllclRyZWVSZW5kZXJlcjo6c2V0TGF5ZXJSZXBh
aW50Q291bnQoQ29vcmRpbmF0ZWRMYXllcklEIGlkLCBpbnQgdmFsdWUpCit7CisgICAgR3JhcGhp
Y3NMYXllciogbGF5ZXIgPSBsYXllckJ5SUQoaWQpOworICAgIHRvR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXIobGF5ZXIpLT5zZXRSZXBhaW50Q291bnQodmFsdWUpOworfQorCiB2b2lkIExheWVy
VHJlZVJlbmRlcmVyOjpzZXRMYXllckNoaWxkcmVuKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCwgY29u
c3QgVmVjdG9yPENvb3JkaW5hdGVkTGF5ZXJJRD4mIGNoaWxkSURzKQogewogICAgIEdyYXBoaWNz
TGF5ZXIqIGxheWVyID0gbGF5ZXJCeUlEKGlkKTsKQEAgLTMzMyw2ICszMzksOSBAQCB2b2lkIExh
eWVyVHJlZVJlbmRlcmVyOjpzZXRMYXllclN0YXRlKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCwgY29u
c3QgQ29vcmRpbmF0ZWRMYQogICAgIGxheWVyLT5zZXREcmF3c0NvbnRlbnQobGF5ZXJJbmZvLmRy
YXdzQ29udGVudCk7CiAgICAgbGF5ZXItPnNldENvbnRlbnRzVmlzaWJsZShsYXllckluZm8uY29u
dGVudHNWaXNpYmxlKTsKICAgICB0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKGxheWVyKS0+
c2V0Rml4ZWRUb1ZpZXdwb3J0KGxheWVySW5mby5maXhlZFRvVmlld3BvcnQpOworICAgIGxheWVy
LT5zZXRTaG93RGVidWdCb3JkZXIobGF5ZXJJbmZvLnNob3dEZWJ1Z0JvcmRlcnMpOworICAgIGxh
eWVyLT5zZXREZWJ1Z0JvcmRlcihsYXllckluZm8uZGVidWdCb3JkZXJDb2xvciwgbGF5ZXJJbmZv
LmRlYnVnQm9yZGVyV2lkdGgpOworICAgIGxheWVyLT5zZXRTaG93UmVwYWludENvdW50ZXIobGF5
ZXJJbmZvLnNob3dSZXBhaW50Q291bnRlcik7CiAKICAgICBpZiAobGF5ZXJJbmZvLmZpeGVkVG9W
aWV3cG9ydCkKICAgICAgICAgbV9maXhlZExheWVycy5hZGQoaWQsIGxheWVyKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJl
ZVJlbmRlcmVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9MYXllclRyZWVSZW5kZXJlci5oCmluZGV4IDUzZWNiZTM5NDk4MTg5OWQyYWJiZTBmMjFkNDQ0
MzQ0MjM5MzY0ODguLjZiNjJlZjUwMmRlOTdiNGMzMDA5OWJjOGMwNDZjMDNkYTZhZjhmYjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xh
eWVyVHJlZVJlbmRlcmVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaApAQCAtNzcsNiArNzcsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzeW5jQ2FudmFzKENvb3JkaW5hdGVkTGF5ZXJJRCwgdWludDMyX3QgZnJvbnRC
dWZmZXIpOwogICAgIHZvaWQgZGVzdHJveUNhbnZhcyhDb29yZGluYXRlZExheWVySUQpOwogI2Vu
ZGlmCisgICAgdm9pZCBzZXRMYXllclJlcGFpbnRDb3VudChDb29yZGluYXRlZExheWVySUQsIGlu
dCB2YWx1ZSk7CiAKICAgICB2b2lkIGRldGFjaCgpOwogICAgIHZvaWQgYXBwZW5kVXBkYXRlKGNv
bnN0IEZ1bmN0aW9uPHZvaWQoKT4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IDVmMjY2MmVmMDkxOGIzYWE5
MjE0MGE0ODQ1MmE1NTU4MmY1N2JkMzkuLjVkMjNiMjUxN2QyZTU0ODJkOGZmM2E3OTRjMDAyZTIw
NjRjMTRmN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyLmNwcApAQCAtMzcxLDYgKzM3MSwyNiBAQCB2b2lkIENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImIGNv
bG9yKQogICAgIGRpZENoYW5nZUxheWVyU3RhdGUoKTsKIH0KIAordm9pZCBDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXI6OnNldFNob3dEZWJ1Z0JvcmRlcihib29sIHNob3cpCit7CisgICAgaWYgKGlz
U2hvd2luZ0RlYnVnQm9yZGVyKCkgPT0gc2hvdykKKyAgICAgICAgcmV0dXJuOworCisgICAgR3Jh
cGhpY3NMYXllcjo6c2V0U2hvd0RlYnVnQm9yZGVyKHNob3cpOworCisgICAgZGlkQ2hhbmdlTGF5
ZXJTdGF0ZSgpOworfQorCit2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0U2hvd1Jl
cGFpbnRDb3VudGVyKGJvb2wgc2hvdykKK3sKKyAgICBpZiAoaXNTaG93aW5nUmVwYWludENvdW50
ZXIoKSA9PSBzaG93KQorICAgICAgICByZXR1cm47CisKKyAgICBHcmFwaGljc0xheWVyOjpzZXRT
aG93UmVwYWludENvdW50ZXIoc2hvdyk7CisKKyAgICBkaWRDaGFuZ2VMYXllclN0YXRlKCk7Cit9
CisKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c1RvSW1hZ2UoSW1h
Z2UqIGltYWdlKQogewogICAgIE5hdGl2ZUltYWdlUHRyIG5ld05hdGl2ZUltYWdlUHRyID0gaW1h
Z2UgPyBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSA6IDA7CkBAIC01NTAsOSAr
NTcwLDIzIEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzeW5jTGF5ZXJTdGF0ZSgp
CiAgICAgbV9sYXllckluZm8ucG9zID0gbV9hZGp1c3RlZFBvc2l0aW9uOwogICAgIG1fbGF5ZXJJ
bmZvLnNpemUgPSBtX2FkanVzdGVkU2l6ZTsKIAorICAgIG1fbGF5ZXJJbmZvLnNob3dEZWJ1Z0Jv
cmRlcnMgPSBpc1Nob3dpbmdEZWJ1Z0JvcmRlcigpOworICAgIGlmIChtX2xheWVySW5mby5zaG93
RGVidWdCb3JkZXJzKSB7CisgICAgICAgIG1fdXNpbmdUaWxlZExheWVyID0gc2hvdWxkSGF2ZUJh
Y2tpbmdTdG9yZSgpOworICAgICAgICB1cGRhdGVEZWJ1Z0luZGljYXRvcnMoKTsKKyAgICB9Cisg
ICAgbV9sYXllckluZm8uc2hvd1JlcGFpbnRDb3VudGVyID0gaXNTaG93aW5nUmVwYWludENvdW50
ZXIoKTsKKwogICAgIG1fY29vcmRpbmF0b3ItPnN5bmNMYXllclN0YXRlKG1faWQsIG1fbGF5ZXJJ
bmZvKTsKIH0KIAordm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldERlYnVnQm9yZGVy
KGNvbnN0IENvbG9yJiBjb2xvciwgZmxvYXQgd2lkdGgpCit7CisgICAgQVNTRVJUKG1fbGF5ZXJJ
bmZvLnNob3dEZWJ1Z0JvcmRlcnMpOworICAgIG1fbGF5ZXJJbmZvLmRlYnVnQm9yZGVyQ29sb3Ig
PSBjb2xvcjsKKyAgICBtX2xheWVySW5mby5kZWJ1Z0JvcmRlcldpZHRoID0gd2lkdGg7Cit9CisK
IHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzeW5jQW5pbWF0aW9ucygpCiB7CiAgICAg
aWYgKCFtX3Nob3VsZFN5bmNBbmltYXRpb25zKQpAQCAtNjk4LDggKzczMiwxMCBAQCB2b2lkIENv
b3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dGlsZWRCYWNraW5nU3RvcmVQYWludChHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsCiAgICAgcGFpbnRHcmFwaGljc0xheWVyQ29udGVudHMoKmNvbnRleHQs
IHJlY3QpOwogfQogCi12b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dGlsZWRCYWNraW5n
U3RvcmVQYWludEVuZChjb25zdCBWZWN0b3I8SW50UmVjdD4mIC8qIHVwZGF0ZWRSZWN0cyAqLykK
K3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp0aWxlZEJhY2tpbmdTdG9yZVBhaW50RW5k
KGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgdXBkYXRlZFJlY3RzKQogeworICAgIGlmIChpc1Nob3dp
bmdSZXBhaW50Q291bnRlcigpICYmICF1cGRhdGVkUmVjdHMuaXNFbXB0eSgpKQorICAgICAgICBt
X2Nvb3JkaW5hdG9yLT5zZXRMYXllclJlcGFpbnRDb3VudChpZCgpLCBpbmNyZW1lbnRSZXBhaW50
Q291bnQoKSk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp0aWxlZEJhY2tp
bmdTdG9yZUhhc1BlbmRpbmdUaWxlQ3JlYXRpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAppbmRleCA2YzQzNTg1YzcwYzhl
MDMwNjVlNGRjYWEyN2U0ZjBkYTJmYTM2OTQ2Li43ZWEzODFmN2NmN2M3NWFkMzRkNDUzODc5MGEw
ZTMwMGM0NWYzYTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXIuaApAQCAtNzEsNiArNzEsOCBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGRlc3Ryb3lDYW52YXMoQ29vcmRpbmF0ZWRMYXllcklEKSA9IDA7CiAjZW5kaWYK
IAorICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllclJlcGFpbnRDb3VudChDb29yZGluYXRlZExheWVy
SUQsIGludCkgPSAwOworCiAgICAgdmlydHVhbCB2b2lkIHNldExheWVyQW5pbWF0aW9ucyhDb29y
ZGluYXRlZExheWVySUQsIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJBbmltYXRpb25zJikg
PSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGRldGFjaExheWVyKFdlYkNvcmU6OkNvb3JkaW5hdGVk
R3JhcGhpY3NMYXllciopID0gMDsKQEAgLTExMiw2ICsxMTQsOCBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHNldENvbnRlbnRzUmVjdChjb25zdCBJbnRSZWN0JikgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9JbWFnZShJbWFnZSopIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRDb250ZW50c1RvU29saWRDb2xvcihjb25zdCBDb2xvciYpIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBzZXRTaG93RGVidWdCb3JkZXIoYm9vbCkgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIHNldFNob3dSZXBhaW50Q291bnRlcihib29sKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkRGlyZWN0bHlDb21wb3NpdGVJbWFnZShJbWFnZSopIGNvbnN0
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvQ2FudmFzKFBsYXRmb3Jt
TGF5ZXIqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TWFza0xheWVyKEdyYXBoaWNz
TGF5ZXIqKSBPVkVSUklERTsKQEAgLTE2Niw2ICsxNzAsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBo
YXNQZW5kaW5nVmlzaWJsZUNoYW5nZXMoKTsKIAogcHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0RGVidWdCb3JkZXIoY29uc3QgQ29sb3ImLCBmbG9hdCB3aWR0aCkgT1ZFUlJJREU7CisKICAg
ICBib29sIGZpeGVkVG9WaWV3cG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fZml4ZWRUb1ZpZXdwb3J0
OyB9CiAKICAgICB2b2lkIGRpZENoYW5nZUxheWVyU3RhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCmluZGV4IDhm
YmI1N2YyMTFmZjJjYzRiOTIwNzIzMzBkZTNmODc4NzllMTc5M2QuLmRlZWY1NTNhZDAxYzU0OWMz
MjAwMjcyYzNiMzlhNjg2YTEwODE5MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcApAQCAtMzk3LDYgKzM5NywxMSBA
QCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6ZGVzdHJveUNhbnZhcyhDb29yZGluYXRl
ZExheWVySUQgaWQpCiB9CiAjZW5kaWYKIAordm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6
OnNldExheWVyUmVwYWludENvdW50KENvb3JkaW5hdGVkTGF5ZXJJRCBpZCwgaW50IHZhbHVlKQor
eworICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
UHJveHk6OlNldExheWVyUmVwYWludENvdW50KGlkLCB2YWx1ZSkpOworfQorCiAjaWYgRU5BQkxF
KENTU19GSUxURVJTKQogdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnN5bmNMYXllckZp
bHRlcnMoQ29vcmRpbmF0ZWRMYXllcklEIGlkLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0
ZXJzKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExh
eWVyVHJlZUhvc3QuaAppbmRleCAwMTAyMmIyY2M0ZTk4NDg4YTRkZjc4N2VhMzY5MGI3MmFjY2Zm
NzI5Li45YWE5ZTZlY2RmM2E2OWVmMDAzODI4ZTE3OGE5ODYxMDY3NGZmNzY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZExheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaApA
QCAtMTAxLDYgKzEwMSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc3luY0NhbnZhcyhD
b29yZGluYXRlZExheWVySUQsIFdlYkNvcmU6OlBsYXRmb3JtTGF5ZXIqKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGVzdHJveUNhbnZhcyhDb29yZGluYXRlZExheWVySUQpIE9WRVJSSURF
OwogI2VuZGlmCisgICAgdmlydHVhbCB2b2lkIHNldExheWVyUmVwYWludENvdW50KENvb3JkaW5h
dGVkTGF5ZXJJRCwgaW50KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoTGF5ZXIo
V2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKik7CiAgICAgdmlydHVhbCB2b2lkIHN5
bmNGaXhlZExheWVycygpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184656</attachid>
            <date>2013-01-24 21:28:13 -0800</date>
            <delta_ts>2013-01-25 01:48:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105787-20130125142454.patch</filename>
            <type>text/plain</type>
            <size>36890</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwNzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODhjNzg3NmM5OTk5MmQ3
YjQ1N2UxZjMyNTkyYjg0OTQ4ZGIwNDUyZS4uYmI0MTU0Y2MwNWMzZGYxYzY4MzM2NzU0YjkwMDhl
NmQ5MGVmOTMyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDEzLTAxLTI0ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFtUZXhtYXBd
IFJlZmFjdG9yIGNvZGUgcmVsYXRlZCB0byBkZWJ1ZyBib3JkZXIgYW5kIHJlcGFpbnQgY291bnQu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU3ODcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50
bHksIFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUsIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlIGFu
ZAorICAgICAgICBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlciBoYXZlIGR1cGxpY2F0ZWQgY29k
ZSB0byBkcmF3IGRlYnVnIGJvcmRlciBvcgorICAgICAgICByZXBhaW50IGNvdW50LiBUaGlzIHBh
dGNoIHJlZmFjdG9ycyB0aGF0IGFsbCBwbGF0Zm9ybSBsYXllcnMgZHJhdyBkZWJ1ZworICAgICAg
ICBib3JkZXIgYW5kIHJlcGFpbnQgY291bnQgaW4gdGhlIGNvbnNpc3RlbnQgd2F5OgorICAgICAg
ICBUZXh0dXJlTWFwcGVyOjpkcmF3Qm9yZGVyKCkgYW5kIFRleHR1cmVNYXBwZXI6OmRyYXdSZXBh
aW50Q291bnRlcigpLgorCisgICAgICAgIFRoZXJlIGFyZSB0aHJlZSBiaWcgY2hhbmdlczoKKyAg
ICAgICAgMS4gVGV4dHVyZU1hcHBlckxheWVyIGhhcyB0aGUgZGVidWcgdmlzdWFscyBsaWtlIEdy
YXBoaWNzTGF5ZXIuCisgICAgICAgIEJvdGggZGVidWcgYm9yZGVyIGFuZCByZXBhaW50IGNvdW50
IGFyZSBjYWxsZWQgYXMgdGhlIGRlYnVnIHZpc3VhbHMuCisgICAgICAgIDIuIFdlIHVzZSB0aGUg
c2FtZSBjb2xvciBhbmQgd2lkdGggdG8gTWFjIHBvcnQgYmVjYXVzZSB3ZSBnZXQgYm90aCBpbmZv
IHVzaW5nCisgICAgICAgIEdyYXBoaWNzTGF5ZXI6OnVwZGF0ZURlYnVnSW5kaWNhdG9ycygpLgor
ICAgICAgICAzLiBEcmF3IGJvcmRlcnMgZm9yIGJhY2tncm91bmQgY29sb3IsIGJhY2tpbmcgc3Rv
cmUgYW5kIGNvbnRlbnRzIGxheWVyLAorICAgICAgICB3aGlsZSBkcmF3aW5nIHJlcGFpbnQgY291
bnQgb25seSBmb3IgYmFja2luZyBzdG9yZS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIFRoaXMg
ZnVuY3Rpb25hbGl0eSBpcyBmb3IgZGVidWdnaW5nLCBzbyB3ZSBjYW5ub3QgdGVzdCB1c2luZyBE
UlQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQz
RFByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRl
eHQzRFF0LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXI6OnNldFNob3dEZWJ1Z0JvcmRlcik6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRTaG93UmVwYWlu
dENvdW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6
OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkpOgorICAgICAgICAgICAgQWRk
IHRoZSB0ZXN0IGZvciBtX2hhc093bkJhY2tpbmdTdG9yZS4gbV9oYXNPd25CYWNraW5nU3RvcmUg
aXMgV0sxCisgICAgICAgICAgICBsZWdhY3kgY29kZSwgc28gSSB3YW50IHRvIGhpZ2hsaWdodCB1
cGRhdGVEZWJ1Z0JvcmRlckFuZFJlcGFpbnRDb3VudCgpCisgICAgICAgICAgICBhbmQgdXBkYXRl
QmFja2luZ1N0b3JlKCkgYXJlIG9ubHkgdXNlZCBpbiBXSzEuCisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6dXBkYXRlRGVidWdCb3JkZXJBbmRSZXBhaW50Q291
bnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldERl
YnVnQm9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
Ojp1cGRhdGVCYWNraW5nU3RvcmUpOgorICAgICAgICAgICAgTW92ZSB0aGUgdGVzdCBmb3IgbV9o
YXNPd25CYWNraW5nU3RvcmUgb3V0IG9mIHVwZGF0ZUJhY2tpbmdTdG9yZSgpCisgICAgICAgICAg
ICBhbmQgcmVwbGFjZSBpdCBieSBhbiBhc3NlcnRpb24uIFNlZSBmbHVzaENvbXBvc2l0aW5nU3Rh
dGVGb3JUaGlzTGF5ZXJPbmx5KCkuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlcjo6cHJlcGFyZUJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0UmVwYWludENvdW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaDoKKyAgICAg
ICAgKEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpkZWJ1Z0JvcmRlckNvbG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpkZWJ1Z0JvcmRlcldpZHRoKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6YWRqdXN0
ZWRUcmFuc2Zvcm1Gb3JSZWN0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpwYWludFRvVGV4dHVyZU1hcHBlcik6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OmRyYXdC
b3JkZXIpOgorICAgICAgICAgICAgT3ZlcnJpZGUgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXI6
OmRyYXdCb3JkZXIoKSB0byBkcmF3IHRoZSBib3JkZXIKKyAgICAgICAgICAgIGZvciBlYWNoIHRp
bGUuCisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OmRy
YXdSZXBhaW50Q291bnRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBw
ZXJCYWNraW5nU3RvcmU6OmRyYXdSZXBhaW50Q291bnRlcik6CisgICAgICAgIChUZXh0dXJlTWFw
cGVyQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9y
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5j
cHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRBUkdCVG9B
QkdSKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHTDo6ZHJhd1JlcGFpbnRDb3Vu
dGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdM
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFn
ZUJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXI6
OmRyYXdCb3JkZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
dXJlTWFwcGVySW1hZ2VCdWZmZXI6OmRyYXdSZXBhaW50Q291bnRlcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5oOgorICAgICAg
ICAoVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1
cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxmKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBw
ZXJMYXllcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oOgorICAgICAg
ICAoU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpTdGF0ZTo6
U3RhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXI6OmRyYXdCb3JkZXIpOgorCiAyMDEzLTAxLTI0ICBLZW50YXJvIEhhcmEgIDxoYXJha2Vu
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlLmgKaW5kZXggNjlkYWQ2NzU0NzIyYWM3YTg4MmNhODc2MTVh
Yjg4NTQ5NzlhZmJjNi4uZDBkZDIzZmU3ZGJkNDFkNmFmODFmOTA3YWFkOWRhMDMyYzAxYjRkYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKQEAgLTI1LDcgKzI1LDcgQEAKICNp
bmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVIpCi0jaW5jbHVkZSAiVGV4dHVyZU1hcHBlci5oIgor
I2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgiCiAjZW5kaWYKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcAppbmRleCA1ODQ2NDBhOGRjMjEyNDUy
ZWVlNzU1ZTkyNjkwMTBhZGUzNmIxY2MwLi42NmJkZWFlZDE4NWE1NGVlMzkzNTMwYWQ5YTA5ZmE2
YzRhMzBmN2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9x
dC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2lu
Y2x1ZGUgIk9wZW5HTFNoaW1zLmgiCiAjaW5jbHVkZSAiUVdlYlBhZ2VDbGllbnQuaCIKICNpbmNs
dWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
ci5oIgogI2luY2x1ZGUgPFFXaW5kb3c+CiAjaW5jbHVkZSA8cXBhL3FwbGF0Zm9ybXBpeG1hcC5o
PgogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlci5jcHAKaW5kZXggMWVmNzhjYzg3NDg4OTY0NjYzMjY2MTkzNjBmZDBjNjRj
MjdiODMxMC4uNWUwZTQ1NDdiZmI5YmIyNjcyMGZiNGJiODFkMTBjODlmNjRmYmVhYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCkBAIC0yNCwxNCArMjQsOCBA
QAogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJBbmltYXRpb24uaCIKICNpbmNsdWRlICJHcmFwaGlj
c0xheWVyRmFjdG9yeS5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCi0jaW5jbHVkZSAiTm90
SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KIAotI2lmIFVTRShD
QUlSTykKLSNpbmNsdWRlICJDYWlyb1V0aWxpdGllcy5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NPd25QdHI8R3Jh
cGhpY3NMYXllcj4gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKEdyYXBoaWNzTGF5ZXJGYWN0b3J5KiBm
YWN0b3J5LCBHcmFwaGljc0xheWVyQ2xpZW50KiBjbGllbnQpCkBAIC0zODYsMTUgKzM4MCw1OCBA
QCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c1RvTWVkaWEoVGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIqCiAgICAgbV9jb250ZW50c0xheWVyID0gbWVkaWE7CiB9
CiAKK3ZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFNob3dEZWJ1Z0JvcmRlcihi
b29sIHNob3cpCit7CisgICAgaWYgKGlzU2hvd2luZ0RlYnVnQm9yZGVyKCkgPT0gc2hvdykKKyAg
ICAgICAgcmV0dXJuOworCisgICAgR3JhcGhpY3NMYXllcjo6c2V0U2hvd0RlYnVnQm9yZGVyKHNo
b3cpOworICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkRlYnVnVmlzdWFsc0No
YW5nZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFNob3dSZXBh
aW50Q291bnRlcihib29sIHNob3cpCit7CisgICAgaWYgKGlzU2hvd2luZ1JlcGFpbnRDb3VudGVy
KCkgPT0gc2hvdykKKyAgICAgICAgcmV0dXJuOworCisgICAgR3JhcGhpY3NMYXllcjo6c2V0U2hv
d1JlcGFpbnRDb3VudGVyKHNob3cpOworICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5
ZXI6OkRlYnVnVmlzdWFsc0NoYW5nZSk7Cit9CisKIC8qIFxyZWltcCAoR3JhcGhpY3NMYXllci5o
KQogKi8KIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmZsdXNoQ29tcG9zaXRpbmdT
dGF0ZUZvclRoaXNMYXllck9ubHkoKQogeworICAgIGlmIChtX2hhc093bkJhY2tpbmdTdG9yZSkK
KyAgICAgICAgdXBkYXRlRGVidWdCb3JkZXJBbmRSZXBhaW50Q291bnQoKTsKICAgICBtX2xheWVy
LT5mbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KHRoaXMpOwotICAgIHVwZGF0
ZUJhY2tpbmdTdG9yZSgpOworICAgIGlmIChtX2hhc093bkJhY2tpbmdTdG9yZSkKKyAgICAgICAg
dXBkYXRlQmFja2luZ1N0b3JlKCk7CiAgICAgZGlkRmx1c2hDb21wb3NpdGluZ1N0YXRlKCk7CiB9
CiAKK3ZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnVwZGF0ZURlYnVnQm9yZGVyQW5k
UmVwYWludENvdW50KCkKK3sKKyAgICBBU1NFUlQobV9oYXNPd25CYWNraW5nU3RvcmUpOworCisg
ICAgbV91c2luZ1RpbGVkTGF5ZXIgPSBzaG91bGRIYXZlQmFja2luZ1N0b3JlKCk7CisgICAgdXBk
YXRlRGVidWdJbmRpY2F0b3JzKCk7CisKKyAgICAvLyBXaGVuIHRoaXMgaGFzIGl0cyBvd24gYmFj
a2luZyBzdG9yZSAoZS5nLiBRdCBXSzEpLCB1cGRhdGUgdGhlIHJlcGFpbnQgY291bnQgYmVmb3Jl
IGNhbGxpbmcgVGV4dHVyZU1hcHBlckxheWVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlz
TGF5ZXJPbmx5KCkuCisgICAgYm9vbCBuZWVkc1RvUmVwYWludCA9IHNob3VsZEhhdmVCYWNraW5n
U3RvcmUoKSAmJiAobV9uZWVkc0Rpc3BsYXkgfHwgIW1fbmVlZHNEaXNwbGF5UmVjdC5pc0VtcHR5
KCkpOworICAgIGlmIChpc1Nob3dpbmdSZXBhaW50Q291bnRlcigpICYmIG5lZWRzVG9SZXBhaW50
KSB7CisgICAgICAgIGluY3JlbWVudFJlcGFpbnRDb3VudCgpOworICAgICAgICBtX2NoYW5nZU1h
c2sgfD0gVGV4dHVyZU1hcHBlckxheWVyOjpSZXBhaW50Q291bnRDaGFuZ2U7CisgICAgfQorfQor
Cit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXREZWJ1Z0JvcmRlcihjb25zdCBD
b2xvciYgY29sb3IsIGZsb2F0IHdpZHRoKQoreworICAgIG1fZGVidWdCb3JkZXJDb2xvciA9IGNv
bG9yOworICAgIG1fZGVidWdCb3JkZXJXaWR0aCA9IHdpZHRoOworICAgIG1fY2hhbmdlTWFzayB8
PSBUZXh0dXJlTWFwcGVyTGF5ZXI6OkRlYnVnVmlzdWFsc0NoYW5nZTsKK30KKwogLyogXHJlaW1w
IChHcmFwaGljc0xheWVyLmgpCiAqLwogdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6
Zmx1c2hDb21wb3NpdGluZ1N0YXRlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKQEAgLTQxOSw5ICs0
NTYsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpkaWRGbHVzaENvbXBvc2l0
aW5nU3RhdGUoKQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjp1cGRhdGVCYWNr
aW5nU3RvcmUoKQogewotICAgIGlmICghbV9oYXNPd25CYWNraW5nU3RvcmUpCi0gICAgICAgIHJl
dHVybjsKLQorICAgIEFTU0VSVChtX2hhc093bkJhY2tpbmdTdG9yZSk7CiAgICAgcHJlcGFyZUJh
Y2tpbmdTdG9yZSgpOwogICAgIG1fbGF5ZXItPnNldEJhY2tpbmdTdG9yZShtX2JhY2tpbmdTdG9y
ZSk7CiB9CkBAIC00NTEsMzQgKzQ4Niw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXI6OnByZXBhcmVCYWNraW5nU3RvcmUoKQogI2VuZGlmCiAgICAgVGV4dHVyZU1hcHBlclRpbGVk
QmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUgPSBzdGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVyVGls
ZWRCYWNraW5nU3RvcmUqPihtX2JhY2tpbmdTdG9yZS5nZXQoKSk7CiAKLSAgICBpZiAoaXNTaG93
aW5nUmVwYWludENvdW50ZXIoKSkKLSAgICAgICAgaW5jcmVtZW50UmVwYWludENvdW50KCk7Ci0K
LSAgICAvLyBQYWludCBpbnRvIGFuIGludGVybWVkaWF0ZSBidWZmZXIgdG8gYXZvaWQgcGFpbnRp
bmcgY29udGVudCBtb3JlIHRoYW4gb25jZS4KLSAgICBib29sIHBhaW50T25jZSA9IHRydWU7Ci0g
ICAgY29uc3QgSW50U2l6ZSBtYXhUZXh0dXJlU2l6ZSA9IHRleHR1cmVNYXBwZXItPm1heFRleHR1
cmVTaXplKCk7Ci0gICAgLy8gV2UgbmVlZCB0byBwYWludCBkaXJlY3RseSBpZiB0aGUgZGlydHkg
cmVjdCBleGNlZWRzIG9uZSBvZiB0aGUgbWF4aW11bSBkaW1lbnNpb25zLgotICAgIGlmIChkaXJ0
eVJlY3Qud2lkdGgoKSA+IG1heFRleHR1cmVTaXplLndpZHRoKCkgfHwgZGlydHlSZWN0LmhlaWdo
dCgpID4gbWF4VGV4dHVyZVNpemUuaGVpZ2h0KCkpCi0gICAgICAgIHBhaW50T25jZSA9IGZhbHNl
OwotCi0gICAgaWYgKHBhaW50T25jZSkgewotICAgICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGlt
YWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShkaXJ0eVJlY3Quc2l6ZSgpKTsKLSAgICAg
ICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKLSAg
ICAgICAgY29udGV4dC0+c2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSh0ZXh0dXJlTWFwcGVy
LT5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkpOwotICAgICAgICBjb250ZXh0LT5zZXRUZXh0
RHJhd2luZ01vZGUodGV4dHVyZU1hcHBlci0+dGV4dERyYXdpbmdNb2RlKCkpOwotICAgICAgICBj
b250ZXh0LT50cmFuc2xhdGUoLWRpcnR5UmVjdC54KCksIC1kaXJ0eVJlY3QueSgpKTsKLSAgICAg
ICAgcGFpbnRHcmFwaGljc0xheWVyQ29udGVudHMoKmNvbnRleHQsIGRpcnR5UmVjdCk7Ci0KLSAg
ICAgICAgaWYgKGlzU2hvd2luZ1JlcGFpbnRDb3VudGVyKCkpCi0gICAgICAgICAgICBkcmF3UmVw
YWludENvdW50ZXIoY29udGV4dCk7Ci0KLSAgICAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGlt
YWdlQnVmZmVyLT5jb3B5SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwotICAgICAgICBiYWNr
aW5nU3RvcmUtPnVwZGF0ZUNvbnRlbnRzKHRleHR1cmVNYXBwZXIsIGltYWdlLmdldCgpLCBtX3Np
emUsIGRpcnR5UmVjdCwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ2FuTW9kaWZ5T3JpZ2luYWxJbWFn
ZURhdGEpOwotICAgIH0gZWxzZQotICAgICAgICBiYWNraW5nU3RvcmUtPnVwZGF0ZUNvbnRlbnRz
KHRleHR1cmVNYXBwZXIsIHRoaXMsIG1fc2l6ZSwgZGlydHlSZWN0LCBCaXRtYXBUZXh0dXJlOjpV
cGRhdGVDYW5Nb2RpZnlPcmlnaW5hbEltYWdlRGF0YSk7Ci0KLSAgICBiYWNraW5nU3RvcmUtPnNl
dFNob3dEZWJ1Z0JvcmRlcnMoaXNTaG93aW5nRGVidWdCb3JkZXIoKSk7Ci0gICAgYmFja2luZ1N0
b3JlLT5zZXREZWJ1Z0JvcmRlcihtX2RlYnVnQm9yZGVyQ29sb3IsIG1fZGVidWdCb3JkZXJXaWR0
aCk7CisgICAgYmFja2luZ1N0b3JlLT51cGRhdGVDb250ZW50cyh0ZXh0dXJlTWFwcGVyLCB0aGlz
LCBtX3NpemUsIGRpcnR5UmVjdCwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ2FuTW9kaWZ5T3JpZ2lu
YWxJbWFnZURhdGEpOwogCiAgICAgbV9uZWVkc0Rpc3BsYXkgPSBmYWxzZTsKICAgICBtX25lZWRz
RGlzcGxheVJlY3QgPSBJbnRSZWN0KCk7CkBAIC00ODksNDAgKzQ5Nyw2IEBAIGJvb2wgR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXI6OnNob3VsZEhhdmVCYWNraW5nU3RvcmUoKSBjb25zdAogICAg
IHJldHVybiBkcmF3c0NvbnRlbnQoKSAmJiBjb250ZW50c0FyZVZpc2libGUoKSAmJiAhbV9zaXpl
LmlzRW1wdHkoKTsKIH0KIAotI2lmIFVTRShDQUlSTykKLXZvaWQgR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXI6OmRyYXdSZXBhaW50Q291bnRlcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCi17
Ci0gICAgY2Fpcm9fdCogY3IgPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKLSAg
ICBjYWlyb19zYXZlKGNyKTsKLQotICAgIENTdHJpbmcgcmVwYWludENvdW50ID0gU3RyaW5nOjpm
b3JtYXQoIiVpIiwgdGhpcy0+cmVwYWludENvdW50KCkpLnV0ZjgoKTsKLSAgICBjYWlyb19zZWxl
Y3RfZm9udF9mYWNlKGNyLCAic2Fucy1zZXJpZiIsIENBSVJPX0ZPTlRfU0xBTlRfTk9STUFMLCBD
QUlST19GT05UX1dFSUdIVF9CT0xEKTsKLSAgICBjYWlyb19zZXRfZm9udF9zaXplKGNyLCAxOCk7
Ci0KLSAgICBjYWlyb190ZXh0X2V4dGVudHNfdCByZXBhaW50VGV4dEV4dGVudHM7Ci0gICAgY2Fp
cm9fdGV4dF9leHRlbnRzKGNyLCByZXBhaW50Q291bnQuZGF0YSgpLCAmcmVwYWludFRleHRFeHRl
bnRzKTsKLQotICAgIHN0YXRpYyBjb25zdCBpbnQgcmVwYWludENvdW50Qm9yZGVyV2lkdGggPSAx
MDsKLSAgICBzZXRTb3VyY2VSR0JBRnJvbUNvbG9yKGNyLCBpc1Nob3dpbmdEZWJ1Z0JvcmRlcigp
ID8gbV9kZWJ1Z0JvcmRlckNvbG9yIDogQ29sb3IoMCwgMjU1LCAwLCAxMjcpKTsKLSAgICBjYWly
b19yZWN0YW5nbGUoY3IsIDAsIDAsCi0gICAgICAgIHJlcGFpbnRUZXh0RXh0ZW50cy53aWR0aCAr
IChyZXBhaW50Q291bnRCb3JkZXJXaWR0aCAqIDIpLAotICAgICAgICByZXBhaW50VGV4dEV4dGVu
dHMuaGVpZ2h0ICsgKHJlcGFpbnRDb3VudEJvcmRlcldpZHRoICogMikpOwotICAgIGNhaXJvX2Zp
bGwoY3IpOwotCi0gICAgY2Fpcm9fc2V0X3NvdXJjZV9yZ2IoY3IsIDEsIDEsIDEpOwotICAgIGNh
aXJvX21vdmVfdG8oY3IsIHJlcGFpbnRDb3VudEJvcmRlcldpZHRoLCByZXBhaW50VGV4dEV4dGVu
dHMuaGVpZ2h0ICsgcmVwYWludENvdW50Qm9yZGVyV2lkdGgpOwotICAgIGNhaXJvX3Nob3dfdGV4
dChjciwgcmVwYWludENvdW50LmRhdGEoKSk7Ci0KLSAgICBjYWlyb19yZXN0b3JlKGNyKTsKLX0K
LSNlbHNlCi12b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpkcmF3UmVwYWludENvdW50
ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19
Ci0KLSNlbmRpZgotCiBib29sIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjphZGRBbmltYXRp
b24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgY29uc3QgSW50U2l6ZSYgYm94
U2l6ZSwgY29uc3QgQW5pbWF0aW9uKiBhbmltLCBjb25zdCBTdHJpbmcmIGtleWZyYW1lc05hbWUs
IGRvdWJsZSB0aW1lT2Zmc2V0KQogewogICAgIEFTU0VSVCgha2V5ZnJhbWVzTmFtZS5pc0VtcHR5
KCkpOwpAQCAtNTY0LDE0ICs1MzgsNiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
OjphbmltYXRpb25TdGFydGVkVGltZXJGaXJlZChUaW1lcjxHcmFwaGljc0xheWVyVAogICAgIGNs
aWVudCgpLT5ub3RpZnlBbmltYXRpb25TdGFydGVkKHRoaXMsIC8qIERPTSB0aW1lICovIFdURjo6
Y3VycmVudFRpbWUoKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNl
dERlYnVnQm9yZGVyKGNvbnN0IENvbG9yJiBjb2xvciwgZmxvYXQgd2lkdGgpCi17Ci0gICAgLy8g
VGhlIGRlZmF1bHQgdmFsdWVzIGZvciBHcmFwaGljc0xheWVyIGRlYnVnIGJvcmRlcnMgYXJlIGEg
bGl0dGxlCi0gICAgLy8gaGFyZCB0byBzZWUgKHNvbWUgbGVzcyB0aGFuIG9uZSBwaXhlbCB3aWRl
KSwgc28gd2UgZG91YmxlIHRoZWlyIHNpemUgaGVyZS4KLSAgICBtX2RlYnVnQm9yZGVyQ29sb3Ig
PSBjb2xvcjsKLSAgICBtX2RlYnVnQm9yZGVyV2lkdGggPSB3aWR0aCAqIDI7Ci19Ci0KICNpZiBF
TkFCTEUoQ1NTX0ZJTFRFUlMpCiBib29sIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRG
aWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCiB7CkBAIC01ODAsNCArNTQ2
LDEwIEBAIGJvb2wgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldEZpbHRlcnMoY29uc3Qg
RmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKIH0KICNlbmRpZgogCit2b2lkIEdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyOjpzZXRSZXBhaW50Q291bnQoaW50IHJlcGFpbnRDb3VudCkKK3sKKyAg
ICBtX3JlcGFpbnRDb3VudCA9IHJlcGFpbnRDb3VudDsKKyAgICBub3RpZnlDaGFuZ2UoVGV4dHVy
ZU1hcHBlckxheWVyOjpSZXBhaW50Q291bnRDaGFuZ2UpOworfQorCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlci5oCmluZGV4IDEyYzMxOTU5MWI3MjZjN2M5ZjBiYTJiZGZk
ZjQzODRlN2RlYTE3MTMuLmFmYzUxYTYyYzE1NjZmZjE0NDVlMTQ3MjUxNGFmMjZhZWQ2YmVmOGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oCkBAIC0yMCw3ICsyMCw2
IEBACiAjaWZuZGVmIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyX2gKICNkZWZpbmUgR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXJfaAogCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAj
aW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDbGllbnQu
aCIKICNpbmNsdWRlICJJbWFnZS5oIgpAQCAtNjYsNiArNjUsOSBAQCBwdWJsaWM6CiAgICAgQ29s
b3Igc29saWRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fc29saWRDb2xvcjsgfQogICAgIHZpcnR1
YWwgdm9pZCBzZXRDb250ZW50c1RvTWVkaWEoUGxhdGZvcm1MYXllciopOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRDb250ZW50c1RvQ2FudmFzKFBsYXRmb3JtTGF5ZXIqIGNhbnZhcykgeyBzZXRDb250
ZW50c1RvTWVkaWEoY2FudmFzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRTaG93RGVidWdCb3Jk
ZXIoYm9vbCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldERlYnVnQm9yZGVyKGNvbnN0
IENvbG9yJiwgZmxvYXQgd2lkdGgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRTaG93
UmVwYWludENvdW50ZXIoYm9vbCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGZsdXNoQ29t
cG9zaXRpbmdTdGF0ZShjb25zdCBGbG9hdFJlY3QmKTsKICAgICB2aXJ0dWFsIHZvaWQgZmx1c2hD
b21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRO
YW1lKGNvbnN0IFN0cmluZyYgbmFtZSk7CkBAIC04MSw4ICs4Myw2IEBAIHB1YmxpYzoKIAogICAg
IFRleHR1cmVNYXBwZXJMYXllciogbGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2xheWVyLmdldCgp
OyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RGVidWdCb3JkZXIoY29uc3QgQ29sb3ImLCBmbG9h
dCB3aWR0aCk7Ci0KICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAgICAgdmlydHVhbCBib29sIHNl
dEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYpOwogI2VuZGlmCkBAIC05MywxMCArOTMs
MTUgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Rml4ZWRUb1ZpZXdwb3J0KGJvb2wgZml4ZWQpIHsg
bV9maXhlZFRvVmlld3BvcnQgPSBmaXhlZDsgfQogICAgIGJvb2wgZml4ZWRUb1ZpZXdwb3J0KCkg
Y29uc3QgeyByZXR1cm4gbV9maXhlZFRvVmlld3BvcnQ7IH0KIAotICAgIHZvaWQgZHJhd1JlcGFp
bnRDb3VudGVyKEdyYXBoaWNzQ29udGV4dCopOworICAgIENvbG9yIGRlYnVnQm9yZGVyQ29sb3Io
KSBjb25zdCB7IHJldHVybiBtX2RlYnVnQm9yZGVyQ29sb3I7IH0KKyAgICBmbG9hdCBkZWJ1Z0Jv
cmRlcldpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z0JvcmRlcldpZHRoOyB9CisKKyAgICB2
b2lkIHNldFJlcGFpbnRDb3VudChpbnQpOworCiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB3
aWxsQmVEZXN0cm95ZWQoKTsKICAgICB2b2lkIGRpZEZsdXNoQ29tcG9zaXRpbmdTdGF0ZSgpOwor
ICAgIHZvaWQgdXBkYXRlRGVidWdCb3JkZXJBbmRSZXBhaW50Q291bnQoKTsKICAgICB2b2lkIHVw
ZGF0ZUJhY2tpbmdTdG9yZSgpOwogICAgIHZvaWQgcHJlcGFyZUJhY2tpbmdTdG9yZSgpOwogICAg
IGJvb2wgc2hvdWxkSGF2ZUJhY2tpbmdTdG9yZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmgKaW5kZXgg
YzcyNDFhNmM5YTcyMmE2NDUyZjdjMThjOWQ2Njk3MTI3NjY5MzY2Yi4uZDk2MTE2YjcwOTkzNjhh
ZDQ0NTU5OTZjMWI3MzIwMTYyNzBkZWVjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oCkBAIC0zNiw3ICszNiw2
IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgog
I2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
ci5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCiAjaW5jbHVkZSA8d3RmL1Vu
dXNlZFBhcmFtLmg+CiAKQEAgLTEzMCw4ICsxMjksOSBAQCBwdWJsaWM6CiAgICAgICAgIEFsbEVk
Z2VzID0gTGVmdEVkZ2UgfCBSaWdodEVkZ2UgfCBUb3BFZGdlIHwgQm90dG9tRWRnZSwKICAgICB9
OwogCi0gICAgdmlydHVhbCB2b2lkIGRyYXdCb3JkZXIoY29uc3QgQ29sb3ImLCBmbG9hdCBib3Jk
ZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVwYWludENvdW50ZXIoaW50IHZhbHVlLCBpbnQgcG9pbnRT
aXplLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVs
Vmlld01hdHJpeCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZHJhd0JvcmRlcihjb25zdCBDb2xvciYsIGZsb2F0IGJvcmRlcldpZHRoLCBjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZHJhd1JlcGFpbnRDb3VudGVyKGludCByZXBhaW50Q291bnQsIGNvbnN0IENvbG9yJiwgY29u
c3QgRmxvYXRQb2ludCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JikgPSAwOworCiAgICAg
dmlydHVhbCB2b2lkIGRyYXdUZXh0dXJlKGNvbnN0IEJpdG1hcFRleHR1cmUmLCBjb25zdCBGbG9h
dFJlY3QmIHRhcmdldCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJp
eCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGZsb2F0IG9wYWNpdHkgPSAxLjBmLCBjb25zdCBC
aXRtYXBUZXh0dXJlKiBtYXNrVGV4dHVyZSA9IDAsIHVuc2lnbmVkIGV4cG9zZWRFZGdlcyA9IEFs
bEVkZ2VzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdTb2xpZENvbG9yKGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgQ29sb3ImKSA9IDA7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmNwcAppbmRleCBlODk5MjUzMWIy
ODdjNWI1OTc3OWU2NDc2ZTgwMWI4YjY5OTVjMmM3Li4zMTA2ZGYyMmUyZWUwZTRkNDY3YmI4Nzdj
YjIxMWEzNzQyZjc1NjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUu
Y3BwCkBAIC0xMDYsNyArMTA2LDYgQEAgdm9pZCBUZXh0dXJlTWFwcGVyVGlsZTo6cGFpbnQoVGV4
dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgVHJhbnNmb3JtYXRpb24KIH0KIAogVGV4
dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3Rv
cmUoKQotICAgIDogbV9kcmF3c0RlYnVnQm9yZGVycyhmYWxzZSkKIHsKIH0KIApAQCAtMTMzLDE2
ICsxMzIsMzEgQEAgdW5zaWduZWQgVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZTo6Y2FsY3VsYXRl
RXhwb3NlZFRpbGVFZGdlcyhjb25zdCBGbG9hdFJlY3QmIHQKICAgICByZXR1cm4gZXhwb3NlZEVk
Z2VzOwogfQogCitUcmFuc2Zvcm1hdGlvbk1hdHJpeCBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5n
U3RvcmU6OmFkanVzdGVkVHJhbnNmb3JtRm9yUmVjdChjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJl
Y3QpCit7CisgICAgcmV0dXJuIFRyYW5zZm9ybWF0aW9uTWF0cml4OjpyZWN0VG9SZWN0KHJlY3Qo
KSwgdGFyZ2V0UmVjdCk7Cit9CisKIHZvaWQgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3Jl
OjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25z
dCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFu
c2Zvcm0sIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUqIG1hc2spCiB7CiAgICAgdXBkYXRl
Q29udGVudHNGcm9tSW1hZ2VJZk5lZWRlZCh0ZXh0dXJlTWFwcGVyKTsKLSAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBhZGp1c3RlZFRyYW5zZm9ybSA9IHRyYW5zZm9ybTsKLSAgICBhZGp1c3RlZFRy
YW5zZm9ybS5tdWx0aXBseShUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6cmVjdFRvUmVjdChyZWN0KCks
IHRhcmdldFJlY3QpKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fdGlsZXMuc2l6ZSgp
OyArK2kpIHsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhZGp1c3RlZFRyYW5zZm9ybSA9IHRy
YW5zZm9ybSAqIGFkanVzdGVkVHJhbnNmb3JtRm9yUmVjdCh0YXJnZXRSZWN0KTsKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1fdGlsZXMuc2l6ZSgpOyArK2kpCiAgICAgICAgIG1fdGlsZXNb
aV0ucGFpbnQodGV4dHVyZU1hcHBlciwgYWRqdXN0ZWRUcmFuc2Zvcm0sIG9wYWNpdHksIG1hc2ss
IGNhbGN1bGF0ZUV4cG9zZWRUaWxlRWRnZXMocmVjdCgpLCBtX3RpbGVzW2ldLnJlY3QoKSkpOwot
ICAgICAgICBpZiAobV9kcmF3c0RlYnVnQm9yZGVycykKLSAgICAgICAgICAgIHRleHR1cmVNYXBw
ZXItPmRyYXdCb3JkZXIobV9kZWJ1Z0JvcmRlckNvbG9yLCBtX2RlYnVnQm9yZGVyV2lkdGgsIG1f
dGlsZXNbaV0ucmVjdCgpLCBhZGp1c3RlZFRyYW5zZm9ybSk7Ci0gICAgfQorfQorCit2b2lkIFRl
eHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6ZHJhd0JvcmRlcihUZXh0dXJlTWFwcGVyKiB0
ZXh0dXJlTWFwcGVyLCBjb25zdCBDb2xvciYgYm9yZGVyQ29sb3IsIGZsb2F0IGJvcmRlcldpZHRo
LCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiB0cmFuc2Zvcm0pCit7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggYWRqdXN0ZWRUcmFuc2Zv
cm0gPSB0cmFuc2Zvcm0gKiBhZGp1c3RlZFRyYW5zZm9ybUZvclJlY3QodGFyZ2V0UmVjdCk7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3RpbGVzLnNpemUoKTsgKytpKQorICAgICAgICB0
ZXh0dXJlTWFwcGVyLT5kcmF3Qm9yZGVyKGJvcmRlckNvbG9yLCBib3JkZXJXaWR0aCwgbV90aWxl
c1tpXS5yZWN0KCksIGFkanVzdGVkVHJhbnNmb3JtKTsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVy
VGlsZWRCYWNraW5nU3RvcmU6OmRyYXdSZXBhaW50Q291bnRlcihUZXh0dXJlTWFwcGVyKiB0ZXh0
dXJlTWFwcGVyLCBpbnQgcmVwYWludENvdW50LCBjb25zdCBDb2xvciYgYm9yZGVyQ29sb3IsIGNv
bnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRy
YW5zZm9ybSkKK3sKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhZGp1c3RlZFRyYW5zZm9ybSA9
IHRyYW5zZm9ybSAqIGFkanVzdGVkVHJhbnNmb3JtRm9yUmVjdCh0YXJnZXRSZWN0KTsKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1fdGlsZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIHRleHR1
cmVNYXBwZXItPmRyYXdSZXBhaW50Q291bnRlcihyZXBhaW50Q291bnQsIGJvcmRlckNvbG9yLCBt
X3RpbGVzW2ldLnJlY3QoKS5sb2NhdGlvbigpLCBhZGp1c3RlZFRyYW5zZm9ybSk7CiB9CiAKIHZv
aWQgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGVPckRlc3Ryb3lUaWxlc0lm
TmVlZGVkKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGJv
b2wgaGFzQWxwaGEpCkBAIC0yMzQsMTEgKzI0OCw1IEBAIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVy
ZT4gVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjp0ZXh0dXJlKCkgY29uc3QKICAgICBy
ZXR1cm4gUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPigpOwogfQogCi12b2lkIFRleHR1cmVNYXBw
ZXJUaWxlZEJhY2tpbmdTdG9yZTo6c2V0RGVidWdCb3JkZXIoY29uc3QgQ29sb3ImIGNvbG9yLCBm
bG9hdCB3aWR0aCkKLXsKLSAgICBtX2RlYnVnQm9yZGVyQ29sb3IgPSBjb2xvcjsKLSAgICBtX2Rl
YnVnQm9yZGVyV2lkdGggPSB3aWR0aDsKLX0KLQogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdT
dG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJCYWNraW5nU3RvcmUuaAppbmRleCAwZGQyZGY0YjE5OGJkMzExZmQ0MWM1NWEzMzc3MjE4
NGNkMTRiMzRhLi41YjQwNWFhY2FkYWI1MzIzNGY1ODIyNzMxYTRkOTUzNDQxNTZjNGFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmgKQEAgLTQwLDggKzQwLDEzIEBAIGNs
YXNzIFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUgOiBwdWJsaWMgVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXIsIHB1YmxpYyBSZWZDCiBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEJp
dG1hcFRleHR1cmU+IHRleHR1cmUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50
VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0LCBCaXRtYXBUZXh0dXJlKikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBkcmF3UmVwYWludENvdW50ZXIoVGV4dHVyZU1hcHBlciosIGludCAvKiByZXBh
aW50Q291bnQgKi8sIGNvbnN0IENvbG9yJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmKQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgfQogICAgIHZpcnR1YWwgflRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUoKSB7IH0KIAorCiBw
cm90ZWN0ZWQ6CiAgICAgc3RhdGljIHVuc2lnbmVkIGNhbGN1bGF0ZUV4cG9zZWRUaWxlRWRnZXMo
Y29uc3QgRmxvYXRSZWN0JiB0b3RhbFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QpOwog
fTsKQEAgLTk0LDI2ICs5OSwyMyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCwgQml0bWFwVGV4dHVyZSopIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBkcmF3Qm9yZGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBD
b2xvciYsIGZsb2F0IGJvcmRlcldpZHRoLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVwYWludENv
dW50ZXIoVGV4dHVyZU1hcHBlciosIGludCByZXBhaW50Q291bnQsIGNvbnN0IENvbG9yJiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBPVkVSUklERTsKICAg
ICB2b2lkIHVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqLCBJbWFnZSosIGNvbnN0IEZsb2F0
U2l6ZSYsIGNvbnN0IEludFJlY3QmLCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDb250ZW50c0ZsYWcp
OwogICAgIHZvaWQgdXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciosIEdyYXBoaWNzTGF5ZXIq
LCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbnRSZWN0JiwgQml0bWFwVGV4dHVyZTo6VXBkYXRl
Q29udGVudHNGbGFnKTsKIAogICAgIHZvaWQgc2V0Q29udGVudHNUb0ltYWdlKEltYWdlKiBpbWFn
ZSkgeyBtX2ltYWdlID0gaW1hZ2U7IH0KLSAgICB2b2lkIHNldFNob3dEZWJ1Z0JvcmRlcnMoYm9v
bCBkcmF3c0RlYnVnQm9yZGVycykgeyBtX2RyYXdzRGVidWdCb3JkZXJzID0gZHJhd3NEZWJ1Z0Jv
cmRlcnM7IH0KLSAgICB2b2lkIHNldERlYnVnQm9yZGVyKGNvbnN0IENvbG9yJiwgZmxvYXQgd2lk
dGgpOwogCiBwcml2YXRlOgogICAgIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZSgpOwog
ICAgIHZvaWQgY3JlYXRlT3JEZXN0cm95VGlsZXNJZk5lZWRlZChjb25zdCBGbG9hdFNpemUmIGJh
Y2tpbmdTdG9yZVNpemUsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBib29sIGhhc0FscGhhKTsK
ICAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzRnJvbUltYWdlSWZOZWVkZWQoVGV4dHVyZU1hcHBlciop
OworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3JtRm9yUmVjdChjb25z
dCBGbG9hdFJlY3QmKTsKICAgICBpbmxpbmUgRmxvYXRSZWN0IHJlY3QoKSBjb25zdCB7IHJldHVy
biBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBtX3NpemUpOyB9CiAKICAgICBWZWN0b3I8
VGV4dHVyZU1hcHBlclRpbGU+IG1fdGlsZXM7CiAgICAgRmxvYXRTaXplIG1fc2l6ZTsKICAgICBS
ZWZQdHI8SW1hZ2U+IG1faW1hZ2U7Ci0KLSAgICBib29sIG1fZHJhd3NEZWJ1Z0JvcmRlcnM7Ci0g
ICAgQ29sb3IgbV9kZWJ1Z0JvcmRlckNvbG9yOwotICAgIGZsb2F0IG1fZGVidWdCb3JkZXJXaWR0
aDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKaW5kZXggYTkwMTE4ODhhMmIxOTlhM2Rm
ZmJkZTI5NjIxNGRhZGZlNmU5NzY2ZC4uMWIzNDk2YWUxYjYwOWI1YThhNTkyM2E5ZWZmNjI4NWE2
ZGY3ZDlkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKQEAgLTMyMSwxMCArMzIxLDE4IEBAIHZv
aWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3Qm9yZGVyKGNvbnN0IENvbG9yJiBjb2xvciwgZmxvYXQg
d2lkdGgsIGNvbnN0IEZsb2F0UmVjCiAgICAgZHJhdyh0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRy
aXgsIHByb2dyYW0uZ2V0KCksIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FX0xPT1AsIGNvbG9yLmhh
c0FscGhhKCkgPyBTaG91bGRCbGVuZCA6IDApOwogfQogCi12b2lkIFRleHR1cmVNYXBwZXJHTDo6
ZHJhd1JlcGFpbnRDb3VudGVyKGludCB2YWx1ZSwgaW50IHBvaW50U2l6ZSwgY29uc3QgRmxvYXRQ
b2ludCYgdGFyZ2V0UG9pbnQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdN
YXRyaXgpCisjaWYgUExBVEZPUk0oUVQpCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNvbnZlcnRB
UkdCVG9BQkdSKHVuc2lnbmVkIHBpeGVsKQoreworICAgIHJldHVybiAoKHBpeGVsIDw8IDE2KSAm
IDB4ZmYwMDAwKSB8ICgocGl4ZWwgPj4gMTYpICYgMHhmZikgfCAocGl4ZWwgJiAweGZmMDBmZjAw
KTsKK30KKyNlbmRpZgorCit2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1JlcGFpbnRDb3VudGVy
KGludCByZXBhaW50Q291bnQsIGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgRmxvYXRQb2ludCYg
dGFyZ2V0UG9pbnQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgp
CiB7CisgICAgaW50IHBvaW50U2l6ZSA9IDg7CiAjaWYgUExBVEZPUk0oUVQpCi0gICAgUVN0cmlu
ZyBjb3VudGVyU3RyaW5nID0gUVN0cmluZzo6bnVtYmVyKHZhbHVlKTsKKyAgICBRU3RyaW5nIGNv
dW50ZXJTdHJpbmcgPSBRU3RyaW5nOjpudW1iZXIocmVwYWludENvdW50KTsKIAogICAgIFFGb250
IGZvbnQoUVN0cmluZzo6ZnJvbUxhdGluMSgiTW9ub3NwYWNlIiksIHBvaW50U2l6ZSwgUUZvbnQ6
OkJvbGQpOwogICAgIGZvbnQuc2V0U3R5bGVIaW50KFFGb250OjpUeXBlV3JpdGVyKTsKQEAgLTMz
OSw3ICszNDcsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1JlcGFpbnRDb3VudGVyKGlu
dCB2YWx1ZSwgaW50IHBvaW50U2l6ZSwgY29uc3QgRmxvYXRQbwogCiAgICAgUUltYWdlIGltYWdl
KHNpemUsIE5hdGl2ZUltYWdlUXQ6OmRlZmF1bHRGb3JtYXRGb3JBbHBoYUVuYWJsZWRJbWFnZXMo
KSk7CiAgICAgUVBhaW50ZXIgcGFpbnRlcigmaW1hZ2UpOwotICAgIHBhaW50ZXIuZmlsbFJlY3Qo
c291cmNlUmVjdCwgUXQ6OmJsdWUpOyAvLyBTaW5jZSB3ZSB3b24ndCBzd2FwIFIrQiBmb3Igc3Bl
ZWQsIHRoaXMgd2lsbCBwYWludCByZWQuCisgICAgcGFpbnRlci5maWxsUmVjdChzb3VyY2VSZWN0
LCBjb252ZXJ0QVJHQlRvQUJHUihjb2xvci5yZ2IoKSkpOyAvLyBTaW5jZSB3ZSB3b24ndCBzd2Fw
IFIrQiB3aGVuIHVwbG9hZGluZyBhIHRleHR1cmUsIHBhaW50IHdpdGggdGhlIHN3YXBwZWQgUitC
IGNvbG9yLgogICAgIHBhaW50ZXIuc2V0Rm9udChmb250KTsKICAgICBwYWludGVyLnNldFBlbihR
dDo6d2hpdGUpOwogICAgIHBhaW50ZXIuZHJhd1RleHQoMiwgaGVpZ2h0ICogMC44NSwgY291bnRl
clN0cmluZyk7CkBAIC0zNTAsNyArMzU4LDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdS
ZXBhaW50Q291bnRlcihpbnQgdmFsdWUsIGludCBwb2ludFNpemUsIGNvbnN0IEZsb2F0UG8KICAg
ICBkcmF3VGV4dHVyZSgqdGV4dHVyZSwgdGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCAxLjBm
LCAwLCBBbGxFZGdlcyk7CiAKICNlbGlmIFVTRShDQUlSTykKLSAgICBDU3RyaW5nIGNvdW50ZXJT
dHJpbmcgPSBTdHJpbmc6Om51bWJlcih2YWx1ZSkuYXNjaWkoKTsKKyAgICBDU3RyaW5nIGNvdW50
ZXJTdHJpbmcgPSBTdHJpbmc6Om51bWJlcihyZXBhaW50Q291bnQpLmFzY2lpKCk7CiAgICAgLy8g
Y2Fpcm9fdGV4dF9leHRlbnRzKCkgcmVxdWlyZXMgYSBjYWlyb190LCBzbyBkaW1lbnNpb25zIG5l
ZWQgdG8gYmUgZ3Vlc3N0aW1hdGVkLgogICAgIGludCB3aWR0aCA9IGNvdW50ZXJTdHJpbmcubGVu
Z3RoKCkgKiBwb2ludFNpemUgKiAxLjI7CiAgICAgaW50IGhlaWdodCA9IHBvaW50U2l6ZSAqIDEu
NTsKQEAgLTM1OCw3ICszNjYsOSBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1JlcGFpbnRD
b3VudGVyKGludCB2YWx1ZSwgaW50IHBvaW50U2l6ZSwgY29uc3QgRmxvYXRQbwogICAgIGNhaXJv
X3N1cmZhY2VfdCogc3VyZmFjZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlKENBSVJPX0ZP
Uk1BVF9BUkdCMzIsIHdpZHRoLCBoZWlnaHQpOwogICAgIGNhaXJvX3QqIGNyID0gY2Fpcm9fY3Jl
YXRlKHN1cmZhY2UpOwogCi0gICAgY2Fpcm9fc2V0X3NvdXJjZV9yZ2IoY3IsIDAsIDAsIDEpOyAv
LyBTaW5jZSB3ZSB3b24ndCBzd2FwIFIrQiBmb3Igc3BlZWQsIHRoaXMgd2lsbCBwYWludCByZWQu
CisgICAgZmxvYXQgciwgZywgYiwgYTsKKyAgICBjb2xvci5nZXRSR0JBKHIsIGcsIGIsIGEpOwor
ICAgIGNhaXJvX3NldF9zb3VyY2VfcmdiYShjciwgYiwgZywgciwgYSk7IC8vIFNpbmNlIHdlIHdv
bid0IHN3YXAgUitCIHdoZW4gdXBsb2FkaW5nIGEgdGV4dHVyZSwgcGFpbnQgd2l0aCB0aGUgc3dh
cHBlZCBSK0IgY29sb3IuCiAgICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLCAwLCAwLCB3aWR0aCwgaGVp
Z2h0KTsKICAgICBjYWlyb19maWxsKGNyKTsKIApAQCAtMzgyLDcgKzM5Miw3IEBAIHZvaWQgVGV4
dHVyZU1hcHBlckdMOjpkcmF3UmVwYWludENvdW50ZXIoaW50IHZhbHVlLCBpbnQgcG9pbnRTaXpl
LCBjb25zdCBGbG9hdFBvCiAgICAgY2Fpcm9fZGVzdHJveShjcik7CiAKICNlbHNlCi0gICAgVU5V
U0VEX1BBUkFNKHZhbHVlKTsKKyAgICBVTlVTRURfUEFSQU0ocmVwYWludENvdW50KTsKICAgICBV
TlVTRURfUEFSQU0ocG9pbnRTaXplKTsKICAgICBVTlVTRURfUEFSQU0odGFyZ2V0UG9pbnQpOwog
ICAgIFVOVVNFRF9QQVJBTShtb2RlbFZpZXdNYXRyaXgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oCmluZGV4
IDE2MDUwN2M2MDY4ZmVmYzM1NDg0MzBmYmVkYWFmMzUwNjNkOTc0MTYuLjk4M2UyYTA2YzNjNDNk
NjNhYTllYmExYWY2YzFhMWQ4ZGY1OTNkZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmgKQEAgLTUyLDgg
KzUyLDggQEAgcHVibGljOgogICAgIHR5cGVkZWYgaW50IEZsYWdzOwogCiAgICAgLy8gVGV4dHVy
ZU1hcHBlciBpbXBsZW1lbnRhdGlvbgotICAgIHZpcnR1YWwgdm9pZCBkcmF3Qm9yZGVyKGNvbnN0
IENvbG9yJiwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCA9IFRyYW5zZm9ybWF0
aW9uTWF0cml4KCkpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVwYWludENvdW50
ZXIoaW50IHZhbHVlLCBpbnQgcG9pbnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4
KCkpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkcmF3Qm9yZGVyKGNvbnN0IENvbG9yJiwg
ZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRyYXdSZXBhaW50Q291bnRlcihp
bnQgcmVwYWludENvdW50LCBjb25zdCBDb2xvciYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3VGV4
dHVyZShjb25zdCBCaXRtYXBUZXh0dXJlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5LCBjb25zdCBCaXRtYXBUZXh0dXJlKiBtYXNr
VGV4dHVyZSwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgZHJhd1RleHR1cmUoUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlLCBGbGFncywgY29uc3QgSW50
U2l6ZSYgdGV4dHVyZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3Qg
Qml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUsIHVuc2lnbmVkIGV4cG9zZWRFZGdlcyA9IEFsbEVk
Z2VzKTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1NvbGlkQ29sb3IoY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBDb2xvciYpIE9WRVJSSURFOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJJbWFnZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcAppbmRleCBkOWRiYzgwZTZkMmNkNDk3
MWRhYzBhNzUwZjM0YjgyOTJjNzIxNTY2Li5iNGUxMjJkMmNkOGRhMDk3MDVmNzljNGJlY2RjYzYz
ZjBhYTgzMjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcApAQCAt
MjUsNiArMjUsNyBAQAogI2lmIFBMQVRGT1JNKFFUKQogI2luY2x1ZGUgIk5hdGl2ZUltYWdlUXQu
aCIKICNlbmRpZgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAKIAogI2lmIFVTRShURVhU
VVJFX01BUFBFUikKQEAgLTE2NCw2ICsxNjUsMTYgQEAgdm9pZCBUZXh0dXJlTWFwcGVySW1hZ2VC
dWZmZXI6OmRyYXdTb2xpZENvbG9yKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgVHJhbnMK
ICAgICBjb250ZXh0LT5yZXN0b3JlKCk7CiB9CiAKK3ZvaWQgVGV4dHVyZU1hcHBlckltYWdlQnVm
ZmVyOjpkcmF3Qm9yZGVyKGNvbnN0IENvbG9yJiwgZmxvYXQgLyogYm9yZGVyV2lkdGggKi8sIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JikKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorCit2b2lkIFRleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlcjo6ZHJhd1Jl
cGFpbnRDb3VudGVyKGludCAvKiByZXBhaW50Q291bnQgKi8sIGNvbnN0IENvbG9yJiwgY29uc3Qg
RmxvYXRQb2ludCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JikKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogUGFzc1JlZlB0cjxCaXRt
YXBUZXh0dXJlPiBCaXRtYXBUZXh0dXJlSW1hZ2VCdWZmZXI6OmFwcGx5RmlsdGVycyhUZXh0dXJl
TWFwcGVyKiwgY29uc3QgQml0bWFwVGV4dHVyZSYgY29udGVudFRleHR1cmUsIGNvbnN0IEZpbHRl
ck9wZXJhdGlvbnMmIGZpbHRlcnMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVy
LmgKaW5kZXggOWRlNmQ0Y2JkNWViMTdlOTM0ODgwMThhNjJhNzEzMWQ4OTczODRlYi4uNWIyZTk3
ODNkNjljMDU4NjM5MjcyYTJiNjMxYzc2YWUxMDU3M2QzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVySW1hZ2VCdWZmZXIuaApAQCAtNTMsMTQgKzUzLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBQ
YXNzT3duUHRyPFRleHR1cmVNYXBwZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBU
ZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIpOyB9CiAKICAgICAvLyBUZXh0dXJlTWFwcGVyIGltcGxl
bWVudGF0aW9uCi0gICAgdmlydHVhbCB2b2lkIGRyYXdCb3JkZXIoY29uc3QgQ29sb3ImLCBmbG9h
dCAvKiBib3JkZXJXaWR0aCAqLywgY29uc3QgRmxvYXRSZWN0JiAvKiB0YXJnZXRSZWN0ICovLCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4ID0gVHJhbnNmb3JtYXRp
b25NYXRyaXgoKSkgT1ZFUlJJREUKLSAgICB7Ci0gICAgICAgIFVOVVNFRF9QQVJBTShtb2RlbFZp
ZXdNYXRyaXgpOwotICAgIH07Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdSZXBhaW50Q291bnRlcihp
bnQgLyogdmFsdWUgKi8sIGludCAvKiBwb2ludFNpemUgKi8sIGNvbnN0IEZsb2F0UG9pbnQmLCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4ID0gVHJhbnNmb3JtYXRp
b25NYXRyaXgoKSkgT1ZFUlJJREUKLSAgICB7Ci0gICAgICAgIFVOVVNFRF9QQVJBTShtb2RlbFZp
ZXdNYXRyaXgpOwotICAgIH07CisgICAgdmlydHVhbCB2b2lkIGRyYXdCb3JkZXIoY29uc3QgQ29s
b3ImLCBmbG9hdCBib3JkZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlcGFpbnRDb3Vu
dGVyKGludCByZXBhaW50Q291bnQsIGNvbnN0IENvbG9yJiwgY29uc3QgRmxvYXRQb2ludCYsIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRy
YXdUZXh0dXJlKGNvbnN0IEJpdG1hcFRleHR1cmUmLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJl
Y3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0
bWFwVGV4dHVyZSogbWFza1RleHR1cmUsIHVuc2lnbmVkIGV4cG9zZWRFZGdlcykgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIGRyYXdTb2xpZENvbG9yKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgQ29sb3ImKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgYmVnaW5DbGlwKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgRmxv
YXRSZWN0JikgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCmluZGV4IDVkZmEx
ODM4ZWQ0YjRjMjE4NDc1MDQzNDZlZWYwMzY0MzliNTFhOWIuLjhlODBiMTk0MjM1OWZiYzhjYTYw
ZDgxM2ZiOTczMTZmMzM5MTU2NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCkBAIC0x
MjksNiArMTI5LDggQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50U2VsZihjb25zdCBU
ZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBvcHRpb25zKQogCiAgICAgaWYgKG1fc3RhdGUuc29s
aWRDb2xvci5pc1ZhbGlkKCkgJiYgIW1fc3RhdGUuY29udGVudHNSZWN0LmlzRW1wdHkoKSkgewog
ICAgICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmRyYXdTb2xpZENvbG9yKG1fc3RhdGUuY29u
dGVudHNSZWN0LCB0cmFuc2Zvcm0sIGJsZW5kV2l0aE9wYWNpdHkobV9zdGF0ZS5zb2xpZENvbG9y
LCBvcGFjaXR5KSk7CisgICAgICAgIGlmIChtX3N0YXRlLnNob3dEZWJ1Z0JvcmRlcnMpCisgICAg
ICAgICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmRyYXdCb3JkZXIobV9zdGF0ZS5kZWJ1Z0Jv
cmRlckNvbG9yLCBtX3N0YXRlLmRlYnVnQm9yZGVyV2lkdGgsIGxheWVyUmVjdCgpLCB0cmFuc2Zv
cm0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMzYsMTEgKzEzOCwxOCBAQCB2b2lk
IFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxmKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9w
dGlvbnMmIG9wdGlvbnMpCiAgICAgICAgIEFTU0VSVChtX3N0YXRlLmRyYXdzQ29udGVudCAmJiBt
X3N0YXRlLmNvbnRlbnRzVmlzaWJsZSAmJiAhbV9zdGF0ZS5zaXplLmlzRW1wdHkoKSk7CiAgICAg
ICAgIEFTU0VSVCghbGF5ZXJSZWN0KCkuaXNFbXB0eSgpKTsKICAgICAgICAgbV9iYWNraW5nU3Rv
cmUtPnBhaW50VG9UZXh0dXJlTWFwcGVyKG9wdGlvbnMudGV4dHVyZU1hcHBlciwgbGF5ZXJSZWN0
KCksIHRyYW5zZm9ybSwgb3BhY2l0eSwgbWFzay5nZXQoKSk7CisgICAgICAgIGlmIChtX3N0YXRl
LnNob3dEZWJ1Z0JvcmRlcnMpCisgICAgICAgICAgICBtX2JhY2tpbmdTdG9yZS0+ZHJhd0JvcmRl
cihvcHRpb25zLnRleHR1cmVNYXBwZXIsIG1fc3RhdGUuZGVidWdCb3JkZXJDb2xvciwgbV9zdGF0
ZS5kZWJ1Z0JvcmRlcldpZHRoLCBsYXllclJlY3QoKSwgdHJhbnNmb3JtKTsKKyAgICAgICAgLy8g
T25seSBkcmF3IHJlcGFpbnQgY291bnQgZm9yIHRoZSBtYWluIGJhY2tpbmcgc3RvcmUuCisgICAg
ICAgIGlmIChtX3N0YXRlLnNob3dSZXBhaW50Q291bnRlcikKKyAgICAgICAgICAgIG1fYmFja2lu
Z1N0b3JlLT5kcmF3UmVwYWludENvdW50ZXIob3B0aW9ucy50ZXh0dXJlTWFwcGVyLCBtX3N0YXRl
LnJlcGFpbnRDb3VudCwgbV9zdGF0ZS5kZWJ1Z0JvcmRlckNvbG9yLCBsYXllclJlY3QoKSwgdHJh
bnNmb3JtKTsKICAgICB9CiAKICAgICBpZiAobV9jb250ZW50c0xheWVyKSB7CiAgICAgICAgIEFT
U0VSVCghbGF5ZXJSZWN0KCkuaXNFbXB0eSgpKTsKICAgICAgICAgbV9jb250ZW50c0xheWVyLT5w
YWludFRvVGV4dHVyZU1hcHBlcihvcHRpb25zLnRleHR1cmVNYXBwZXIsIG1fc3RhdGUuY29udGVu
dHNSZWN0LCB0cmFuc2Zvcm0sIG9wYWNpdHksIG1hc2suZ2V0KCkpOworICAgICAgICBpZiAobV9z
dGF0ZS5zaG93RGVidWdCb3JkZXJzKQorICAgICAgICAgICAgbV9jb250ZW50c0xheWVyLT5kcmF3
Qm9yZGVyKG9wdGlvbnMudGV4dHVyZU1hcHBlciwgbV9zdGF0ZS5kZWJ1Z0JvcmRlckNvbG9yLCBt
X3N0YXRlLmRlYnVnQm9yZGVyV2lkdGgsIG1fc3RhdGUuY29udGVudHNSZWN0LCB0cmFuc2Zvcm0p
OwogICAgIH0KIH0KIApAQCAtMzgzLDggKzM5Miw2IEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVy
OjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KEdyYXBoaWNzTGF5ZXJUZXh0
CiAgICAgaWYgKGNoYW5nZU1hc2sgPT0gTm9DaGFuZ2VzICYmIGdyYXBoaWNzTGF5ZXItPm1fYW5p
bWF0aW9ucy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdyYXBoaWNzTGF5ZXIt
PnVwZGF0ZURlYnVnSW5kaWNhdG9ycygpOwotCiAgICAgaWYgKGNoYW5nZU1hc2sgJiBDaGlsZHJl
bkNoYW5nZSkKICAgICAgICAgc2V0Q2hpbGRyZW4oZ3JhcGhpY3NMYXllci0+Y2hpbGRyZW4oKSk7
CiAKQEAgLTQwMSw2ICs0MDgsOSBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6Zmx1c2hDb21w
b3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seShHcmFwaGljc0xheWVyVGV4dAogICAgIGlmIChj
aGFuZ2VNYXNrICYgQW5pbWF0aW9uQ2hhbmdlKQogICAgICAgICBtX2FuaW1hdGlvbnMgPSBncmFw
aGljc0xheWVyLT5tX2FuaW1hdGlvbnM7CiAKKyAgICBpZiAoY2hhbmdlTWFzayAmIFJlcGFpbnRD
b3VudENoYW5nZSkKKyAgICAgICAgbV9zdGF0ZS5yZXBhaW50Q291bnQgPSBncmFwaGljc0xheWVy
LT5yZXBhaW50Q291bnQoKTsKKwogICAgIG1fc3RhdGUubWFza0xheWVyID0gdG9UZXh0dXJlTWFw
cGVyTGF5ZXIoZ3JhcGhpY3NMYXllci0+bWFza0xheWVyKCkpOwogICAgIG1fc3RhdGUucmVwbGlj
YUxheWVyID0gdG9UZXh0dXJlTWFwcGVyTGF5ZXIoZ3JhcGhpY3NMYXllci0+cmVwbGljYUxheWVy
KCkpOwogICAgIG1fc3RhdGUucG9zID0gZ3JhcGhpY3NMYXllci0+cG9zaXRpb24oKTsKQEAgLTQy
Myw2ICs0MzMsMTEgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdT
dGF0ZUZvclRoaXNMYXllck9ubHkoR3JhcGhpY3NMYXllclRleHQKICNlbmRpZgogICAgIG1fZml4
ZWRUb1ZpZXdwb3J0ID0gZ3JhcGhpY3NMYXllci0+Zml4ZWRUb1ZpZXdwb3J0KCk7CiAKKyAgICBt
X3N0YXRlLnNob3dEZWJ1Z0JvcmRlcnMgPSBncmFwaGljc0xheWVyLT5pc1Nob3dpbmdEZWJ1Z0Jv
cmRlcigpOworICAgIG1fc3RhdGUuZGVidWdCb3JkZXJDb2xvciA9IHRvR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXIoZ3JhcGhpY3NMYXllciktPmRlYnVnQm9yZGVyQ29sb3IoKTsKKyAgICBtX3N0
YXRlLmRlYnVnQm9yZGVyV2lkdGggPSB0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKGdyYXBo
aWNzTGF5ZXIpLT5kZWJ1Z0JvcmRlcldpZHRoKCk7CisgICAgbV9zdGF0ZS5zaG93UmVwYWludENv
dW50ZXIgPSBncmFwaGljc0xheWVyLT5pc1Nob3dpbmdSZXBhaW50Q291bnRlcigpOworCiAgICAg
bV9jb250ZW50c0xheWVyID0gZ3JhcGhpY3NMYXllci0+cGxhdGZvcm1MYXllcigpOwogCiAgICAg
bV9jdXJyZW50VHJhbnNmb3JtLnNldFBvc2l0aW9uKGFkanVzdGVkUG9zaXRpb24oKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckxheWVyLmgKaW5kZXggZjQxZTUyYTk3YzRiMzI4YzQ0Y2Y2NTBhZWUzNGNkMzAw
YTQ2NTM5YS4uNTc1YmIyN2ViN2E4NzRjMTg0YjU4MWVkMmJkNDM1ZDEwMTVhODNiMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyTGF5ZXIuaApAQCAtNzEsNyArNzEsMTAgQEAgcHVibGljOgogCiAgICAgICAg
IFJlcGxpY2FMYXllckNoYW5nZSA9ICAgICAgICAoMUwgPDwgMjEpLAogICAgICAgICBBbmltYXRp
b25DaGFuZ2UgPSAgICAgICAgICAgKDFMIDw8IDIyKSwKLSAgICAgICAgRmlsdGVyQ2hhbmdlID0g
ICAgICAgICAgICAgICgxTCA8PCAyMykKKyAgICAgICAgRmlsdGVyQ2hhbmdlID0gICAgICAgICAg
ICAgICgxTCA8PCAyMyksCisKKyAgICAgICAgRGVidWdWaXN1YWxzQ2hhbmdlID0gICAgICAgICgx
TCA8PCAyNCksCisgICAgICAgIFJlcGFpbnRDb3VudENoYW5nZSA9ICAgICAgICAoMUwgPDwgMjUp
CiAgICAgfTsKIAogICAgIFRleHR1cmVNYXBwZXJMYXllcigpCkBAIC0xNzIsNiArMTc1LDkgQEAg
cHJpdmF0ZToKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAgICAgICAgIEZpbHRlck9wZXJhdGlv
bnMgZmlsdGVyczsKICNlbmRpZgorICAgICAgICBDb2xvciBkZWJ1Z0JvcmRlckNvbG9yOworICAg
ICAgICBmbG9hdCBkZWJ1Z0JvcmRlcldpZHRoOworICAgICAgICBpbnQgcmVwYWludENvdW50Owog
CiAgICAgICAgIGJvb2wgcHJlc2VydmVzM0QgOiAxOwogICAgICAgICBib29sIG1hc2tzVG9Cb3Vu
ZHMgOiAxOwpAQCAtMTgwLDExICsxODYsMTUgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBjb250
ZW50c09wYXF1ZSA6IDE7CiAgICAgICAgIGJvb2wgYmFja2ZhY2VWaXNpYmlsaXR5IDogMTsKICAg
ICAgICAgYm9vbCB2aXNpYmxlIDogMTsKKyAgICAgICAgYm9vbCBzaG93RGVidWdCb3JkZXJzIDog
MTsKKyAgICAgICAgYm9vbCBzaG93UmVwYWludENvdW50ZXIgOiAxOwogCiAgICAgICAgIFN0YXRl
KCkKICAgICAgICAgICAgIDogb3BhY2l0eSgxKQogICAgICAgICAgICAgLCBtYXNrTGF5ZXIoMCkK
ICAgICAgICAgICAgICwgcmVwbGljYUxheWVyKDApCisgICAgICAgICAgICAsIGRlYnVnQm9yZGVy
V2lkdGgoMCkKKyAgICAgICAgICAgICwgcmVwYWludENvdW50KDApCiAgICAgICAgICAgICAsIHBy
ZXNlcnZlczNEKGZhbHNlKQogICAgICAgICAgICAgLCBtYXNrc1RvQm91bmRzKGZhbHNlKQogICAg
ICAgICAgICAgLCBkcmF3c0NvbnRlbnQoZmFsc2UpCkBAIC0xOTIsNiArMjAyLDggQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICwgY29udGVudHNPcGFxdWUoZmFsc2UpCiAgICAgICAgICAgICAsIGJh
Y2tmYWNlVmlzaWJpbGl0eShmYWxzZSkKICAgICAgICAgICAgICwgdmlzaWJsZSh0cnVlKQorICAg
ICAgICAgICAgLCBzaG93RGVidWdCb3JkZXJzKGZhbHNlKQorICAgICAgICAgICAgLCBzaG93UmVw
YWludENvdW50ZXIoZmFsc2UpCiAgICAgICAgIHsKICAgICAgICAgfQogICAgIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oCmluZGV4IDM4YWYwM2U4OWI2MjQ4MWFiYWYz
MjA5OGMzYTgxN2FiNGQwMDBjMWUuLmY0ODc5NTI2NzY4MDE5MDg1Y2JkZWY4OWU2NmVlNDdkZWY4
MTAxMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oCkBAIC0yNCwx
OCArMjQsMjAgQEAKICNpbmNsdWRlICJHcmFwaGljc1N1cmZhY2UuaCIKICNlbmRpZgogCisjaW5j
bHVkZSAiVGV4dHVyZU1hcHBlci5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4Lmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVGV4dHVyZU1hcHBlcjsKLWNsYXNzIEJp
dG1hcFRleHR1cmU7Ci0KIGNsYXNzIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyIHsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllcigpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCA9IFRy
YW5zZm9ybWF0aW9uTWF0cml4KCksIGZsb2F0IG9wYWNpdHkgPSAxLjAsIEJpdG1hcFRleHR1cmUq
IG1hc2sgPSAwKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN3YXBCdWZmZXJzKCkgeyB9CisgICAg
dmlydHVhbCB2b2lkIGRyYXdCb3JkZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29u
c3QgQ29sb3ImIGNvbG9yLCBmbG9hdCBib3JkZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0JiB0YXJn
ZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKQorICAgIHsKKyAg
ICAgICAgdGV4dHVyZU1hcHBlci0+ZHJhd0JvcmRlcihjb2xvciwgYm9yZGVyV2lkdGgsIHRhcmdl
dFJlY3QsIHRyYW5zZm9ybSk7CisgICAgfQogI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQogICAg
IHZpcnR1YWwgSW50U2l6ZSBwbGF0Zm9ybUxheWVyU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIEludFNp
emUoKTsgfQogICAgIHZpcnR1YWwgdWludDMyX3QgY29weVRvR3JhcGhpY3NTdXJmYWNlKCkgeyBy
ZXR1cm4gMDsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184700</attachid>
            <date>2013-01-25 01:48:32 -0800</date>
            <delta_ts>2013-01-25 05:52:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105787-20130125184513.patch</filename>
            <type>text/plain</type>
            <size>36410</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwNzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODhjNzg3NmM5OTk5MmQ3
YjQ1N2UxZjMyNTkyYjg0OTQ4ZGIwNDUyZS4uNTc5YzYyMDQ0N2U1ZTEyYzJlNDIzZmQ4MzQ2Y2Y2
ZWU2ZGFiODIwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDEzLTAxLTI1ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFtUZXhtYXBd
IFJlZmFjdG9yIGNvZGUgcmVsYXRlZCB0byBkZWJ1ZyBib3JkZXIgYW5kIHJlcGFpbnQgY291bnQu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU3ODcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50
bHksIFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUsIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlIGFu
ZAorICAgICAgICBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlciBoYXZlIGR1cGxpY2F0ZWQgY29k
ZSB0byBkcmF3IGRlYnVnIGJvcmRlciBvcgorICAgICAgICByZXBhaW50IGNvdW50LiBUaGlzIHBh
dGNoIHJlZmFjdG9ycyB0aGF0IGFsbCBwbGF0Zm9ybSBsYXllcnMgZHJhdyBkZWJ1ZworICAgICAg
ICBib3JkZXIgYW5kIHJlcGFpbnQgY291bnQgaW4gdGhlIGNvbnNpc3RlbnQgd2F5OgorICAgICAg
ICBUZXh0dXJlTWFwcGVyOjpkcmF3Qm9yZGVyKCkgYW5kIFRleHR1cmVNYXBwZXI6OmRyYXdSZXBh
aW50Q291bnRlcigpLgorCisgICAgICAgIFRoZXJlIGFyZSB0aHJlZSBiaWcgY2hhbmdlczoKKyAg
ICAgICAgMS4gVGV4dHVyZU1hcHBlckxheWVyIGhhcyB0aGUgZGVidWcgdmlzdWFscyBsaWtlIEdy
YXBoaWNzTGF5ZXIuCisgICAgICAgIEJvdGggZGVidWcgYm9yZGVyIGFuZCByZXBhaW50IGNvdW50
IGFyZSBjYWxsZWQgYXMgdGhlIGRlYnVnIHZpc3VhbHMuCisgICAgICAgIDIuIFdlIHVzZSB0aGUg
c2FtZSBjb2xvciBhbmQgd2lkdGggdG8gTWFjIHBvcnQgYmVjYXVzZSB3ZSBnZXQgdGhhdCBpbmZv
IHVzaW5nCisgICAgICAgIEdyYXBoaWNzTGF5ZXI6OnVwZGF0ZURlYnVnSW5kaWNhdG9ycygpLgor
ICAgICAgICAzLiBEcmF3IGJvcmRlcnMgZm9yIGJhY2tncm91bmQgY29sb3IsIGJhY2tpbmcgc3Rv
cmUgYW5kIGNvbnRlbnRzIGxheWVyLAorICAgICAgICB3aGlsZSBkcmF3aW5nIHJlcGFpbnQgY291
bnQgb25seSBmb3IgYmFja2luZyBzdG9yZS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIFRoaXMg
ZnVuY3Rpb25hbGl0eSBpcyBmb3IgZGVidWdnaW5nLCBzbyB3ZSBjYW5ub3QgdGVzdCB1c2luZyBE
UlQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQz
RFByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRl
eHQzRFF0LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXI6OnNldFNob3dEZWJ1Z0JvcmRlcik6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRTaG93UmVwYWlu
dENvdW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6
OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnVwZGF0ZURlYnVnQm9yZGVyQW5kUmVwYWlu
dENvdW50SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXI6OnNldERlYnVnQm9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyOjp1cGRhdGVCYWNraW5nU3RvcmVJZk5lZWRlZCk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6cHJlcGFyZUJhY2tpbmdTdG9yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0UmVwYWludENv
dW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXIuaDoKKyAgICAgICAgKEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpkZWJ1Z0JvcmRlckNv
bG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpkZWJ1
Z0JvcmRlcldpZHRoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJUaWxl
ZEJhY2tpbmdTdG9yZTo6YWRqdXN0ZWRUcmFuc2Zvcm1Gb3JSZWN0KToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpw
YWludFRvVGV4dHVyZU1hcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyVGls
ZWRCYWNraW5nU3RvcmU6OmRyYXdCb3JkZXIpOgorICAgICAgICAgICAgT3ZlcnJpZGUgVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXI6OmRyYXdCb3JkZXIoKSB0byBkcmF3IHRoZSBib3JkZXIKKyAg
ICAgICAgICAgIGZvciBlYWNoIHRpbGUuCisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVy
VGlsZWRCYWNraW5nU3RvcmU6OmRyYXdSZXBhaW50Q291bnRlcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmU6OmRyYXdSZXBhaW50Q291bnRlcik6
CisgICAgICAgIChUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFRleHR1cmVN
YXBwZXJUaWxlZEJhY2tpbmdTdG9yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVy
R0w6OmRyYXdSZXBhaW50Q291bnRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVy
ZU1hcHBlckltYWdlQnVmZmVyOjpkcmF3Qm9yZGVyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckltYWdlQnVmZmVyOjpkcmF3UmVwYWludENvdW50
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1h
Z2VCdWZmZXIuaDoKKyAgICAgICAgKFRleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50U2VsZik6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNM
YXllck9ubHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyTGF5ZXIuaDoKKyAgICAgICAgKFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVN
YXBwZXJMYXllcjo6U3RhdGU6OlN0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyOjpkcmF3Qm9yZGVyKToKKwogMjAxMy0wMS0yNCAgS2Vu
dGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBi
dWlsZCBmaXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oCmluZGV4IDY5ZGFkNjc1
NDcyMmFjN2E4ODJjYTg3NjE1YWI4ODU0OTc5YWZiYzYuLmQwZGQyM2ZlN2RiZDQxZDZhZjgxZjkw
N2FhZDlkYTAzMmMwMWI0ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oCkBA
IC0yNSw3ICsyNSw3IEBACiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYgVVNFKFRFWFRVUkVfTUFQUEVSKQotI2luY2x1ZGUg
IlRleHR1cmVNYXBwZXIuaCIKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5o
IgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKaW5k
ZXggNTg0NjQwYThkYzIxMjQ1MmVlZTc1NWU5MjY5MDEwYWRlMzZiMWNjMC4uNjZiZGVhZWQxODVh
NTRlZTM5MzUzMGFkOWEwOWZhNmM0YTMwZjdlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKQEAg
LTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJPcGVuR0xTaGltcy5oIgogI2luY2x1ZGUgIlFXZWJQ
YWdlQ2xpZW50LmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSAiVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlIDxRV2luZG93PgogI2luY2x1ZGUgPHFw
YS9xcGxhdGZvcm1waXhtYXAuaD4KICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCmluZGV4IDFlZjc4Y2M4NzQ4ODk2
NDY2MzI2NjE5MzYwZmQwYzY0YzI3YjgzMTAuLmE2NzhjY2Y3ZTgxNGI1ZjI2N2RlMjhkMGUyNGI2
ZGU0YzRiZjQxY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNw
cApAQCAtMjQsMTQgKzI0LDggQEAKICNpbmNsdWRlICJHcmFwaGljc0xheWVyQW5pbWF0aW9uLmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckZhY3RvcnkuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZl
ci5oIgotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRU
aW1lLmg+CiAKLSNpZiBVU0UoQ0FJUk8pCi0jaW5jbHVkZSAiQ2Fpcm9VdGlsaXRpZXMuaCIKLSNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBQYXNzT3duUHRyPEdyYXBoaWNzTGF5ZXI+IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZShHcmFw
aGljc0xheWVyRmFjdG9yeSogZmFjdG9yeSwgR3JhcGhpY3NMYXllckNsaWVudCogY2xpZW50KQpA
QCAtMzg2LDE1ICszODAsNTcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0
Q29udGVudHNUb01lZGlhKFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyKgogICAgIG1fY29udGVu
dHNMYXllciA9IG1lZGlhOwogfQogCit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpz
ZXRTaG93RGVidWdCb3JkZXIoYm9vbCBzaG93KQoreworICAgIGlmIChpc1Nob3dpbmdEZWJ1Z0Jv
cmRlcigpID09IHNob3cpCisgICAgICAgIHJldHVybjsKKworICAgIEdyYXBoaWNzTGF5ZXI6OnNl
dFNob3dEZWJ1Z0JvcmRlcihzaG93KTsKKyAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxh
eWVyOjpEZWJ1Z1Zpc3VhbHNDaGFuZ2UpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpzZXRTaG93UmVwYWludENvdW50ZXIoYm9vbCBzaG93KQoreworICAgIGlmIChpc1No
b3dpbmdSZXBhaW50Q291bnRlcigpID09IHNob3cpCisgICAgICAgIHJldHVybjsKKworICAgIEdy
YXBoaWNzTGF5ZXI6OnNldFNob3dSZXBhaW50Q291bnRlcihzaG93KTsKKyAgICBub3RpZnlDaGFu
Z2UoVGV4dHVyZU1hcHBlckxheWVyOjpEZWJ1Z1Zpc3VhbHNDaGFuZ2UpOworfQorCiAvKiBccmVp
bXAgKEdyYXBoaWNzTGF5ZXIuaCkKICovCiB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
OjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCkKIHsKKyAgICB1cGRhdGVE
ZWJ1Z0JvcmRlckFuZFJlcGFpbnRDb3VudElmTmVlZGVkKCk7CiAgICAgbV9sYXllci0+Zmx1c2hD
b21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSh0aGlzKTsKLSAgICB1cGRhdGVCYWNraW5n
U3RvcmUoKTsKKyAgICB1cGRhdGVCYWNraW5nU3RvcmVJZk5lZWRlZCgpOwogICAgIGRpZEZsdXNo
Q29tcG9zaXRpbmdTdGF0ZSgpOwogfQogCit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
Ojp1cGRhdGVEZWJ1Z0JvcmRlckFuZFJlcGFpbnRDb3VudElmTmVlZGVkKCkKK3sKKyAgICBpZiAo
IW1faGFzT3duQmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3VzaW5nVGls
ZWRMYXllciA9IHNob3VsZEhhdmVCYWNraW5nU3RvcmUoKTsKKyAgICB1cGRhdGVEZWJ1Z0luZGlj
YXRvcnMoKTsKKworICAgIC8vIFdoZW4gdGhpcyBoYXMgaXRzIG93biBiYWNraW5nIHN0b3JlIChl
LmcuIFF0IFdLMSksIHVwZGF0ZSB0aGUgcmVwYWludCBjb3VudCBiZWZvcmUgY2FsbGluZyBUZXh0
dXJlTWFwcGVyTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKS4K
KyAgICBib29sIG5lZWRzVG9SZXBhaW50ID0gc2hvdWxkSGF2ZUJhY2tpbmdTdG9yZSgpICYmICht
X25lZWRzRGlzcGxheSB8fCAhbV9uZWVkc0Rpc3BsYXlSZWN0LmlzRW1wdHkoKSk7CisgICAgaWYg
KGlzU2hvd2luZ1JlcGFpbnRDb3VudGVyKCkgJiYgbmVlZHNUb1JlcGFpbnQpIHsKKyAgICAgICAg
aW5jcmVtZW50UmVwYWludENvdW50KCk7CisgICAgICAgIG1fY2hhbmdlTWFzayB8PSBUZXh0dXJl
TWFwcGVyTGF5ZXI6OlJlcGFpbnRDb3VudENoYW5nZTsKKyAgICB9Cit9CisKK3ZvaWQgR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXI6OnNldERlYnVnQm9yZGVyKGNvbnN0IENvbG9yJiBjb2xvciwg
ZmxvYXQgd2lkdGgpCit7CisgICAgbV9kZWJ1Z0JvcmRlckNvbG9yID0gY29sb3I7CisgICAgbV9k
ZWJ1Z0JvcmRlcldpZHRoID0gd2lkdGg7CisgICAgbV9jaGFuZ2VNYXNrIHw9IFRleHR1cmVNYXBw
ZXJMYXllcjo6RGVidWdWaXN1YWxzQ2hhbmdlOworfQorCiAvKiBccmVpbXAgKEdyYXBoaWNzTGF5
ZXIuaCkKICovCiB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpmbHVzaENvbXBvc2l0
aW5nU3RhdGUoY29uc3QgRmxvYXRSZWN0JiByZWN0KQpAQCAtNDE3LDExICs0NTMsMTAgQEAgdm9p
ZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6ZGlkRmx1c2hDb21wb3NpdGluZ1N0YXRlKCkK
ICAgICBtX2NoYW5nZU1hc2sgPSAwOwogfQogCi12b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyOjp1cGRhdGVCYWNraW5nU3RvcmUoKQordm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
cjo6dXBkYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQoKQogewogICAgIGlmICghbV9oYXNPd25CYWNr
aW5nU3RvcmUpCiAgICAgICAgIHJldHVybjsKLQogICAgIHByZXBhcmVCYWNraW5nU3RvcmUoKTsK
ICAgICBtX2xheWVyLT5zZXRCYWNraW5nU3RvcmUobV9iYWNraW5nU3RvcmUpOwogfQpAQCAtNDUx
LDM0ICs0ODYsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpwcmVwYXJlQmFj
a2luZ1N0b3JlKCkKICNlbmRpZgogICAgIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZSog
YmFja2luZ1N0b3JlID0gc3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3Jl
Kj4obV9iYWNraW5nU3RvcmUuZ2V0KCkpOwogCi0gICAgaWYgKGlzU2hvd2luZ1JlcGFpbnRDb3Vu
dGVyKCkpCi0gICAgICAgIGluY3JlbWVudFJlcGFpbnRDb3VudCgpOwotCi0gICAgLy8gUGFpbnQg
aW50byBhbiBpbnRlcm1lZGlhdGUgYnVmZmVyIHRvIGF2b2lkIHBhaW50aW5nIGNvbnRlbnQgbW9y
ZSB0aGFuIG9uY2UuCi0gICAgYm9vbCBwYWludE9uY2UgPSB0cnVlOwotICAgIGNvbnN0IEludFNp
emUgbWF4VGV4dHVyZVNpemUgPSB0ZXh0dXJlTWFwcGVyLT5tYXhUZXh0dXJlU2l6ZSgpOwotICAg
IC8vIFdlIG5lZWQgdG8gcGFpbnQgZGlyZWN0bHkgaWYgdGhlIGRpcnR5IHJlY3QgZXhjZWVkcyBv
bmUgb2YgdGhlIG1heGltdW0gZGltZW5zaW9ucy4KLSAgICBpZiAoZGlydHlSZWN0LndpZHRoKCkg
PiBtYXhUZXh0dXJlU2l6ZS53aWR0aCgpIHx8IGRpcnR5UmVjdC5oZWlnaHQoKSA+IG1heFRleHR1
cmVTaXplLmhlaWdodCgpKQotICAgICAgICBwYWludE9uY2UgPSBmYWxzZTsKLQotICAgIGlmIChw
YWludE9uY2UpIHsKLSAgICAgICAgT3duUHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IElt
YWdlQnVmZmVyOjpjcmVhdGUoZGlydHlSZWN0LnNpemUoKSk7Ci0gICAgICAgIEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7Ci0gICAgICAgIGNvbnRleHQt
PnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkodGV4dHVyZU1hcHBlci0+aW1hZ2VJbnRlcnBv
bGF0aW9uUXVhbGl0eSgpKTsKLSAgICAgICAgY29udGV4dC0+c2V0VGV4dERyYXdpbmdNb2RlKHRl
eHR1cmVNYXBwZXItPnRleHREcmF3aW5nTW9kZSgpKTsKLSAgICAgICAgY29udGV4dC0+dHJhbnNs
YXRlKC1kaXJ0eVJlY3QueCgpLCAtZGlydHlSZWN0LnkoKSk7Ci0gICAgICAgIHBhaW50R3JhcGhp
Y3NMYXllckNvbnRlbnRzKCpjb250ZXh0LCBkaXJ0eVJlY3QpOwotCi0gICAgICAgIGlmIChpc1No
b3dpbmdSZXBhaW50Q291bnRlcigpKQotICAgICAgICAgICAgZHJhd1JlcGFpbnRDb3VudGVyKGNv
bnRleHQpOwotCi0gICAgICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBpbWFnZUJ1ZmZlci0+Y29w
eUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKLSAgICAgICAgYmFja2luZ1N0b3JlLT51cGRh
dGVDb250ZW50cyh0ZXh0dXJlTWFwcGVyLCBpbWFnZS5nZXQoKSwgbV9zaXplLCBkaXJ0eVJlY3Qs
IEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNhbk1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRhKTsKLSAgICB9
IGVsc2UKLSAgICAgICAgYmFja2luZ1N0b3JlLT51cGRhdGVDb250ZW50cyh0ZXh0dXJlTWFwcGVy
LCB0aGlzLCBtX3NpemUsIGRpcnR5UmVjdCwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ2FuTW9kaWZ5
T3JpZ2luYWxJbWFnZURhdGEpOwotCi0gICAgYmFja2luZ1N0b3JlLT5zZXRTaG93RGVidWdCb3Jk
ZXJzKGlzU2hvd2luZ0RlYnVnQm9yZGVyKCkpOwotICAgIGJhY2tpbmdTdG9yZS0+c2V0RGVidWdC
b3JkZXIobV9kZWJ1Z0JvcmRlckNvbG9yLCBtX2RlYnVnQm9yZGVyV2lkdGgpOworICAgIGJhY2tp
bmdTdG9yZS0+dXBkYXRlQ29udGVudHModGV4dHVyZU1hcHBlciwgdGhpcywgbV9zaXplLCBkaXJ0
eVJlY3QsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNhbk1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRhKTsK
IAogICAgIG1fbmVlZHNEaXNwbGF5ID0gZmFsc2U7CiAgICAgbV9uZWVkc0Rpc3BsYXlSZWN0ID0g
SW50UmVjdCgpOwpAQCAtNDg5LDQwICs0OTcsNiBAQCBib29sIEdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpzaG91bGRIYXZlQmFja2luZ1N0b3JlKCkgY29uc3QKICAgICByZXR1cm4gZHJhd3ND
b250ZW50KCkgJiYgY29udGVudHNBcmVWaXNpYmxlKCkgJiYgIW1fc2l6ZS5pc0VtcHR5KCk7CiB9
CiAKLSNpZiBVU0UoQ0FJUk8pCi12b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpkcmF3
UmVwYWludENvdW50ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQotewotICAgIGNhaXJvX3Qq
IGNyID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7Ci0gICAgY2Fpcm9fc2F2ZShj
cik7Ci0KLSAgICBDU3RyaW5nIHJlcGFpbnRDb3VudCA9IFN0cmluZzo6Zm9ybWF0KCIlaSIsIHRo
aXMtPnJlcGFpbnRDb3VudCgpKS51dGY4KCk7Ci0gICAgY2Fpcm9fc2VsZWN0X2ZvbnRfZmFjZShj
ciwgInNhbnMtc2VyaWYiLCBDQUlST19GT05UX1NMQU5UX05PUk1BTCwgQ0FJUk9fRk9OVF9XRUlH
SFRfQk9MRCk7Ci0gICAgY2Fpcm9fc2V0X2ZvbnRfc2l6ZShjciwgMTgpOwotCi0gICAgY2Fpcm9f
dGV4dF9leHRlbnRzX3QgcmVwYWludFRleHRFeHRlbnRzOwotICAgIGNhaXJvX3RleHRfZXh0ZW50
cyhjciwgcmVwYWludENvdW50LmRhdGEoKSwgJnJlcGFpbnRUZXh0RXh0ZW50cyk7Ci0KLSAgICBz
dGF0aWMgY29uc3QgaW50IHJlcGFpbnRDb3VudEJvcmRlcldpZHRoID0gMTA7Ci0gICAgc2V0U291
cmNlUkdCQUZyb21Db2xvcihjciwgaXNTaG93aW5nRGVidWdCb3JkZXIoKSA/IG1fZGVidWdCb3Jk
ZXJDb2xvciA6IENvbG9yKDAsIDI1NSwgMCwgMTI3KSk7Ci0gICAgY2Fpcm9fcmVjdGFuZ2xlKGNy
LCAwLCAwLAotICAgICAgICByZXBhaW50VGV4dEV4dGVudHMud2lkdGggKyAocmVwYWludENvdW50
Qm9yZGVyV2lkdGggKiAyKSwKLSAgICAgICAgcmVwYWludFRleHRFeHRlbnRzLmhlaWdodCArIChy
ZXBhaW50Q291bnRCb3JkZXJXaWR0aCAqIDIpKTsKLSAgICBjYWlyb19maWxsKGNyKTsKLQotICAg
IGNhaXJvX3NldF9zb3VyY2VfcmdiKGNyLCAxLCAxLCAxKTsKLSAgICBjYWlyb19tb3ZlX3RvKGNy
LCByZXBhaW50Q291bnRCb3JkZXJXaWR0aCwgcmVwYWludFRleHRFeHRlbnRzLmhlaWdodCArIHJl
cGFpbnRDb3VudEJvcmRlcldpZHRoKTsKLSAgICBjYWlyb19zaG93X3RleHQoY3IsIHJlcGFpbnRD
b3VudC5kYXRhKCkpOwotCi0gICAgY2Fpcm9fcmVzdG9yZShjcik7Ci19Ci0jZWxzZQotdm9pZCBH
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6ZHJhd1JlcGFpbnRDb3VudGVyKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi0jZW5kaWYKLQog
Ym9vbCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6YWRkQW5pbWF0aW9uKGNvbnN0IEtleWZy
YW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGNvbnN0IEludFNpemUmIGJveFNpemUsIGNvbnN0IEFu
aW1hdGlvbiogYW5pbSwgY29uc3QgU3RyaW5nJiBrZXlmcmFtZXNOYW1lLCBkb3VibGUgdGltZU9m
ZnNldCkKIHsKICAgICBBU1NFUlQoIWtleWZyYW1lc05hbWUuaXNFbXB0eSgpKTsKQEAgLTU2NCwx
NCArNTM4LDYgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6YW5pbWF0aW9uU3Rh
cnRlZFRpbWVyRmlyZWQoVGltZXI8R3JhcGhpY3NMYXllclQKICAgICBjbGllbnQoKS0+bm90aWZ5
QW5pbWF0aW9uU3RhcnRlZCh0aGlzLCAvKiBET00gdGltZSAqLyBXVEY6OmN1cnJlbnRUaW1lKCkp
OwogfQogCi12b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXREZWJ1Z0JvcmRlcihj
b25zdCBDb2xvciYgY29sb3IsIGZsb2F0IHdpZHRoKQotewotICAgIC8vIFRoZSBkZWZhdWx0IHZh
bHVlcyBmb3IgR3JhcGhpY3NMYXllciBkZWJ1ZyBib3JkZXJzIGFyZSBhIGxpdHRsZQotICAgIC8v
IGhhcmQgdG8gc2VlIChzb21lIGxlc3MgdGhhbiBvbmUgcGl4ZWwgd2lkZSksIHNvIHdlIGRvdWJs
ZSB0aGVpciBzaXplIGhlcmUuCi0gICAgbV9kZWJ1Z0JvcmRlckNvbG9yID0gY29sb3I7Ci0gICAg
bV9kZWJ1Z0JvcmRlcldpZHRoID0gd2lkdGggKiAyOwotfQotCiAjaWYgRU5BQkxFKENTU19GSUxU
RVJTKQogYm9vbCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0RmlsdGVycyhjb25zdCBG
aWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQogewpAQCAtNTgwLDQgKzU0NiwxMCBAQCBib29sIEdy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlv
bnMmIGZpbHRlcnMpCiB9CiAjZW5kaWYKIAordm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
cjo6c2V0UmVwYWludENvdW50KGludCByZXBhaW50Q291bnQpCit7CisgICAgbV9yZXBhaW50Q291
bnQgPSByZXBhaW50Q291bnQ7CisgICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6
UmVwYWludENvdW50Q2hhbmdlKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXIuaAppbmRleCAxMmMzMTk1OTFiNzI2YzdjOWYwYmEyYmRmZGY0Mzg0ZTdkZWExNzEz
Li40OWI1MDRiNjNiY2QyZTEzM2MxNWYxMDNkMjBiZGVlNDNkY2I4NmQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaApAQCAtMjAsNyArMjAsNiBAQAogI2lmbmRlZiBH
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcl9oCiAjZGVmaW5lIEdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyX2gKIAotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkdyYXBo
aWNzTGF5ZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyQ2xpZW50LmgiCiAjaW5jbHVkZSAi
SW1hZ2UuaCIKQEAgLTY2LDYgKzY1LDkgQEAgcHVibGljOgogICAgIENvbG9yIHNvbGlkQ29sb3Io
KSBjb25zdCB7IHJldHVybiBtX3NvbGlkQ29sb3I7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29u
dGVudHNUb01lZGlhKFBsYXRmb3JtTGF5ZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVu
dHNUb0NhbnZhcyhQbGF0Zm9ybUxheWVyKiBjYW52YXMpIHsgc2V0Q29udGVudHNUb01lZGlhKGNh
bnZhcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvd0RlYnVnQm9yZGVyKGJvb2wpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBzZXREZWJ1Z0JvcmRlcihjb25zdCBDb2xvciYsIGZsb2F0
IHdpZHRoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvd1JlcGFpbnRDb3VudGVy
KGJvb2wpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBmbHVzaENvbXBvc2l0aW5nU3RhdGUo
Y29uc3QgRmxvYXRSZWN0Jik7CiAgICAgdmlydHVhbCB2b2lkIGZsdXNoQ29tcG9zaXRpbmdTdGF0
ZUZvclRoaXNMYXllck9ubHkoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmFtZShjb25zdCBTdHJp
bmcmIG5hbWUpOwpAQCAtODEsOCArODMsNiBAQCBwdWJsaWM6CiAKICAgICBUZXh0dXJlTWFwcGVy
TGF5ZXIqIGxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXllci5nZXQoKTsgfQogCi0gICAgdmly
dHVhbCB2b2lkIHNldERlYnVnQm9yZGVyKGNvbnN0IENvbG9yJiwgZmxvYXQgd2lkdGgpOwotCiAj
aWYgRU5BQkxFKENTU19GSUxURVJTKQogICAgIHZpcnR1YWwgYm9vbCBzZXRGaWx0ZXJzKGNvbnN0
IEZpbHRlck9wZXJhdGlvbnMmKTsKICNlbmRpZgpAQCAtOTMsMTEgKzkzLDE1IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldEZpeGVkVG9WaWV3cG9ydChib29sIGZpeGVkKSB7IG1fZml4ZWRUb1ZpZXdw
b3J0ID0gZml4ZWQ7IH0KICAgICBib29sIGZpeGVkVG9WaWV3cG9ydCgpIGNvbnN0IHsgcmV0dXJu
IG1fZml4ZWRUb1ZpZXdwb3J0OyB9CiAKLSAgICB2b2lkIGRyYXdSZXBhaW50Q291bnRlcihHcmFw
aGljc0NvbnRleHQqKTsKKyAgICBDb2xvciBkZWJ1Z0JvcmRlckNvbG9yKCkgY29uc3QgeyByZXR1
cm4gbV9kZWJ1Z0JvcmRlckNvbG9yOyB9CisgICAgZmxvYXQgZGVidWdCb3JkZXJXaWR0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fZGVidWdCb3JkZXJXaWR0aDsgfQorICAgIHZvaWQgc2V0UmVwYWludENv
dW50KGludCk7CisKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZURlc3Ryb3llZCgp
OwogICAgIHZvaWQgZGlkRmx1c2hDb21wb3NpdGluZ1N0YXRlKCk7Ci0gICAgdm9pZCB1cGRhdGVC
YWNraW5nU3RvcmUoKTsKKyAgICB2b2lkIHVwZGF0ZURlYnVnQm9yZGVyQW5kUmVwYWludENvdW50
SWZOZWVkZWQoKTsKKyAgICB2b2lkIHVwZGF0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKCk7CiAgICAg
dm9pZCBwcmVwYXJlQmFja2luZ1N0b3JlKCk7CiAgICAgYm9vbCBzaG91bGRIYXZlQmFja2luZ1N0
b3JlKCkgY29uc3Q7CiAgICAgdm9pZCBhbmltYXRpb25TdGFydGVkVGltZXJGaXJlZChUaW1lcjxH
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcj4qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oCmluZGV4IGM3MjQxYTZj
OWE3MjJhNjQ1MmY3YzE4YzlkNjY5NzEyNzY2OTM2NmIuLmQ5NjExNmI3MDk5MzY4YWQ0NDU1OTk2
YzFiNzMyMDE2MjcwZGVlYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaApAQCAtMzYsNyArMzYsNiBAQAogI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRl
ICJJbnRTaXplLmgiCi0jaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaCIKICNp
bmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJh
bS5oPgogCkBAIC0xMzAsOCArMTI5LDkgQEAgcHVibGljOgogICAgICAgICBBbGxFZGdlcyA9IExl
ZnRFZGdlIHwgUmlnaHRFZGdlIHwgVG9wRWRnZSB8IEJvdHRvbUVkZ2UsCiAgICAgfTsKIAotICAg
IHZpcnR1YWwgdm9pZCBkcmF3Qm9yZGVyKGNvbnN0IENvbG9yJiwgZmxvYXQgYm9yZGVyV2lkdGgs
IGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IG1vZGVsVmlld01hdHJpeCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVyKGludCB2YWx1ZSwgaW50IHBvaW50U2l6ZSwgY29u
c3QgRmxvYXRQb2ludCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRy
aXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRyYXdC
b3JkZXIoY29uc3QgQ29sb3ImLCBmbG9hdCBib3JkZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRyYXdS
ZXBhaW50Q291bnRlcihpbnQgcmVwYWludENvdW50LCBjb25zdCBDb2xvciYsIGNvbnN0IEZsb2F0
UG9pbnQmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpID0gMDsKKwogICAgIHZpcnR1YWwg
dm9pZCBkcmF3VGV4dHVyZShjb25zdCBCaXRtYXBUZXh0dXJlJiwgY29uc3QgRmxvYXRSZWN0JiB0
YXJnZXQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXggPSBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCgpLCBmbG9hdCBvcGFjaXR5ID0gMS4wZiwgY29uc3QgQml0bWFwVGV4
dHVyZSogbWFza1RleHR1cmUgPSAwLCB1bnNpZ25lZCBleHBvc2VkRWRnZXMgPSBBbGxFZGdlcykg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3U29saWRDb2xvcihjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IENvbG9yJikgPSAwOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5jcHAKaW5kZXggZTg5OTI1MzFiMjg3YzViNTk3
NzllNjQ3NmU4MDFiOGI2OTk1YzJjNy4uMzEwNmRmMjJlMmVlMGU0ZDQ2N2JiODc3Y2IyMTFhMzc0
MmY3NTYzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmNwcApAQCAt
MTA2LDcgKzEwNiw2IEBAIHZvaWQgVGV4dHVyZU1hcHBlclRpbGU6OnBhaW50KFRleHR1cmVNYXBw
ZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uCiB9CiAKIFRleHR1cmVNYXBw
ZXJUaWxlZEJhY2tpbmdTdG9yZTo6VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlKCkKLSAg
ICA6IG1fZHJhd3NEZWJ1Z0JvcmRlcnMoZmFsc2UpCiB7CiB9CiAKQEAgLTEzMywxNiArMTMyLDMx
IEBAIHVuc2lnbmVkIFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmU6OmNhbGN1bGF0ZUV4cG9zZWRU
aWxlRWRnZXMoY29uc3QgRmxvYXRSZWN0JiB0CiAgICAgcmV0dXJuIGV4cG9zZWRFZGdlczsKIH0K
IAorVHJhbnNmb3JtYXRpb25NYXRyaXggVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjph
ZGp1c3RlZFRyYW5zZm9ybUZvclJlY3QoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0KQorewor
ICAgIHJldHVybiBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6cmVjdFRvUmVjdChyZWN0KCksIHRhcmdl
dFJlY3QpOworfQorCiB2b2lkIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6cGFpbnRU
b1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRS
ZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBm
bG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKQogewogICAgIHVwZGF0ZUNvbnRlbnRz
RnJvbUltYWdlSWZOZWVkZWQodGV4dHVyZU1hcHBlcik7Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRy
aXggYWRqdXN0ZWRUcmFuc2Zvcm0gPSB0cmFuc2Zvcm07Ci0gICAgYWRqdXN0ZWRUcmFuc2Zvcm0u
bXVsdGlwbHkoVHJhbnNmb3JtYXRpb25NYXRyaXg6OnJlY3RUb1JlY3QocmVjdCgpLCB0YXJnZXRS
ZWN0KSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3RpbGVzLnNpemUoKTsgKytpKSB7
CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggYWRqdXN0ZWRUcmFuc2Zvcm0gPSB0cmFuc2Zvcm0g
KiBhZGp1c3RlZFRyYW5zZm9ybUZvclJlY3QodGFyZ2V0UmVjdCk7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtX3RpbGVzLnNpemUoKTsgKytpKQogICAgICAgICBtX3RpbGVzW2ldLnBhaW50
KHRleHR1cmVNYXBwZXIsIGFkanVzdGVkVHJhbnNmb3JtLCBvcGFjaXR5LCBtYXNrLCBjYWxjdWxh
dGVFeHBvc2VkVGlsZUVkZ2VzKHJlY3QoKSwgbV90aWxlc1tpXS5yZWN0KCkpKTsKLSAgICAgICAg
aWYgKG1fZHJhd3NEZWJ1Z0JvcmRlcnMpCi0gICAgICAgICAgICB0ZXh0dXJlTWFwcGVyLT5kcmF3
Qm9yZGVyKG1fZGVidWdCb3JkZXJDb2xvciwgbV9kZWJ1Z0JvcmRlcldpZHRoLCBtX3RpbGVzW2ld
LnJlY3QoKSwgYWRqdXN0ZWRUcmFuc2Zvcm0pOwotICAgIH0KK30KKwordm9pZCBUZXh0dXJlTWFw
cGVyVGlsZWRCYWNraW5nU3RvcmU6OmRyYXdCb3JkZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1h
cHBlciwgY29uc3QgQ29sb3ImIGJvcmRlckNvbG9yLCBmbG9hdCBib3JkZXJXaWR0aCwgY29uc3Qg
RmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNm
b3JtKQoreworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3JtID0gdHJh
bnNmb3JtICogYWRqdXN0ZWRUcmFuc2Zvcm1Gb3JSZWN0KHRhcmdldFJlY3QpOworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbV90aWxlcy5zaXplKCk7ICsraSkKKyAgICAgICAgdGV4dHVyZU1h
cHBlci0+ZHJhd0JvcmRlcihib3JkZXJDb2xvciwgYm9yZGVyV2lkdGgsIG1fdGlsZXNbaV0ucmVj
dCgpLCBhZGp1c3RlZFRyYW5zZm9ybSk7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlclRpbGVkQmFj
a2luZ1N0b3JlOjpkcmF3UmVwYWludENvdW50ZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBl
ciwgaW50IHJlcGFpbnRDb3VudCwgY29uc3QgQ29sb3ImIGJvcmRlckNvbG9yLCBjb25zdCBGbG9h
dFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0p
Cit7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggYWRqdXN0ZWRUcmFuc2Zvcm0gPSB0cmFuc2Zv
cm0gKiBhZGp1c3RlZFRyYW5zZm9ybUZvclJlY3QodGFyZ2V0UmVjdCk7CisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtX3RpbGVzLnNpemUoKTsgKytpKQorICAgICAgICB0ZXh0dXJlTWFwcGVy
LT5kcmF3UmVwYWludENvdW50ZXIocmVwYWludENvdW50LCBib3JkZXJDb2xvciwgbV90aWxlc1tp
XS5yZWN0KCkubG9jYXRpb24oKSwgYWRqdXN0ZWRUcmFuc2Zvcm0pOwogfQogCiB2b2lkIFRleHR1
cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6Y3JlYXRlT3JEZXN0cm95VGlsZXNJZk5lZWRlZChj
b25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBib29sIGhhc0Fs
cGhhKQpAQCAtMjM0LDExICsyNDgsNSBAQCBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IFRleHR1
cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6dGV4dHVyZSgpIGNvbnN0CiAgICAgcmV0dXJuIFBh
c3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4oKTsKIH0KIAotdm9pZCBUZXh0dXJlTWFwcGVyVGlsZWRC
YWNraW5nU3RvcmU6OnNldERlYnVnQm9yZGVyKGNvbnN0IENvbG9yJiBjb2xvciwgZmxvYXQgd2lk
dGgpCi17Ci0gICAgbV9kZWJ1Z0JvcmRlckNvbG9yID0gY29sb3I7Ci0gICAgbV9kZWJ1Z0JvcmRl
cldpZHRoID0gd2lkdGg7Ci19Ci0KIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFj
a2luZ1N0b3JlLmgKaW5kZXggMGRkMmRmNGIxOThiZDMxMWZkNDFjNTVhMzM3NzIxODRjZDE0YjM0
YS4uYjYxZDJkODMzY2QwMTRhZjdlMWU0NmM5NTc0NDMwNmVhODdmM2FjZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNr
aW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oCkBAIC00MCw4ICs0MCwxMCBAQCBjbGFzcyBUZXh0
dXJlTWFwcGVyQmFja2luZ1N0b3JlIDogcHVibGljIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
LCBwdWJsaWMgUmVmQwogcHVibGljOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0
dXJlPiB0ZXh0dXJlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVy
ZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmLCBmbG9hdCwgQml0bWFwVGV4dHVyZSopID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZHJhd1JlcGFpbnRDb3VudGVyKFRleHR1cmVNYXBwZXIqLCBpbnQgLyogcmVwYWludENvdW50
ICovLCBjb25zdCBDb2xvciYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JikgeyB9CiAgICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZSgpIHsg
fQogCisKIHByb3RlY3RlZDoKICAgICBzdGF0aWMgdW5zaWduZWQgY2FsY3VsYXRlRXhwb3NlZFRp
bGVFZGdlcyhjb25zdCBGbG9hdFJlY3QmIHRvdGFsUmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxl
UmVjdCk7CiB9OwpAQCAtOTQsMjYgKzk2LDIzIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0LCBCaXRtYXBUZXh0dXJl
KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRyYXdCb3JkZXIoVGV4dHVyZU1hcHBlcios
IGNvbnN0IENvbG9yJiwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRyYXdS
ZXBhaW50Q291bnRlcihUZXh0dXJlTWFwcGVyKiwgaW50IHJlcGFpbnRDb3VudCwgY29uc3QgQ29s
b3ImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIE9WRVJS
SURFOwogICAgIHZvaWQgdXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciosIEltYWdlKiwgY29u
c3QgRmxvYXRTaXplJiwgY29uc3QgSW50UmVjdCYsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNvbnRl
bnRzRmxhZyk7CiAgICAgdm9pZCB1cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVyKiwgR3JhcGhp
Y3NMYXllciosIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEludFJlY3QmLCBCaXRtYXBUZXh0dXJl
OjpVcGRhdGVDb250ZW50c0ZsYWcpOwogCiAgICAgdm9pZCBzZXRDb250ZW50c1RvSW1hZ2UoSW1h
Z2UqIGltYWdlKSB7IG1faW1hZ2UgPSBpbWFnZTsgfQotICAgIHZvaWQgc2V0U2hvd0RlYnVnQm9y
ZGVycyhib29sIGRyYXdzRGVidWdCb3JkZXJzKSB7IG1fZHJhd3NEZWJ1Z0JvcmRlcnMgPSBkcmF3
c0RlYnVnQm9yZGVyczsgfQotICAgIHZvaWQgc2V0RGVidWdCb3JkZXIoY29uc3QgQ29sb3ImLCBm
bG9hdCB3aWR0aCk7CiAKIHByaXZhdGU6CiAgICAgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0
b3JlKCk7CiAgICAgdm9pZCBjcmVhdGVPckRlc3Ryb3lUaWxlc0lmTmVlZGVkKGNvbnN0IEZsb2F0
U2l6ZSYgYmFja2luZ1N0b3JlU2l6ZSwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGJvb2wgaGFz
QWxwaGEpOwogICAgIHZvaWQgdXBkYXRlQ29udGVudHNGcm9tSW1hZ2VJZk5lZWRlZChUZXh0dXJl
TWFwcGVyKik7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggYWRqdXN0ZWRUcmFuc2Zvcm1Gb3JS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYpOwogICAgIGlubGluZSBGbG9hdFJlY3QgcmVjdCgpIGNvbnN0
IHsgcmV0dXJuIEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIG1fc2l6ZSk7IH0KIAogICAg
IFZlY3RvcjxUZXh0dXJlTWFwcGVyVGlsZT4gbV90aWxlczsKICAgICBGbG9hdFNpemUgbV9zaXpl
OwogICAgIFJlZlB0cjxJbWFnZT4gbV9pbWFnZTsKLQotICAgIGJvb2wgbV9kcmF3c0RlYnVnQm9y
ZGVyczsKLSAgICBDb2xvciBtX2RlYnVnQm9yZGVyQ29sb3I7Ci0gICAgZmxvYXQgbV9kZWJ1Z0Jv
cmRlcldpZHRoOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcAppbmRleCBhOTAxMTg4OGEy
YjE5OWEzZGZmYmRlMjk2MjE0ZGFkZmU2ZTk3NjZkLi4zNzhlNzMyY2VkZDQ5ZTA5ZWYzZTczZWRl
OTE1MWMzOGE0YjlmNDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcApAQCAtMzIxLDEwICszMjEs
MTEgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdCb3JkZXIoY29uc3QgQ29sb3ImIGNvbG9y
LCBmbG9hdCB3aWR0aCwgY29uc3QgRmxvYXRSZWMKICAgICBkcmF3KHRhcmdldFJlY3QsIG1vZGVs
Vmlld01hdHJpeCwgcHJvZ3JhbS5nZXQoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVfTE9PUCwg
Y29sb3IuaGFzQWxwaGEoKSA/IFNob3VsZEJsZW5kIDogMCk7CiB9CiAKLXZvaWQgVGV4dHVyZU1h
cHBlckdMOjpkcmF3UmVwYWludENvdW50ZXIoaW50IHZhbHVlLCBpbnQgcG9pbnRTaXplLCBjb25z
dCBGbG9hdFBvaW50JiB0YXJnZXRQb2ludCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1v
ZGVsVmlld01hdHJpeCkKK3ZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3UmVwYWludENvdW50ZXIo
aW50IHJlcGFpbnRDb3VudCwgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBGbG9hdFBvaW50JiB0
YXJnZXRQb2ludCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCkK
IHsKKyAgICBpbnQgcG9pbnRTaXplID0gODsKICNpZiBQTEFURk9STShRVCkKLSAgICBRU3RyaW5n
IGNvdW50ZXJTdHJpbmcgPSBRU3RyaW5nOjpudW1iZXIodmFsdWUpOworICAgIFFTdHJpbmcgY291
bnRlclN0cmluZyA9IFFTdHJpbmc6Om51bWJlcihyZXBhaW50Q291bnQpOwogCiAgICAgUUZvbnQg
Zm9udChRU3RyaW5nOjpmcm9tTGF0aW4xKCJNb25vc3BhY2UiKSwgcG9pbnRTaXplLCBRRm9udDo6
Qm9sZCk7CiAgICAgZm9udC5zZXRTdHlsZUhpbnQoUUZvbnQ6OlR5cGVXcml0ZXIpOwpAQCAtMzM5
LDcgKzM0MCw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3UmVwYWludENvdW50ZXIoaW50
IHZhbHVlLCBpbnQgcG9pbnRTaXplLCBjb25zdCBGbG9hdFBvCiAKICAgICBRSW1hZ2UgaW1hZ2Uo
c2l6ZSwgTmF0aXZlSW1hZ2VRdDo6ZGVmYXVsdEZvcm1hdEZvckFscGhhRW5hYmxlZEltYWdlcygp
KTsKICAgICBRUGFpbnRlciBwYWludGVyKCZpbWFnZSk7Ci0gICAgcGFpbnRlci5maWxsUmVjdChz
b3VyY2VSZWN0LCBRdDo6Ymx1ZSk7IC8vIFNpbmNlIHdlIHdvbid0IHN3YXAgUitCIGZvciBzcGVl
ZCwgdGhpcyB3aWxsIHBhaW50IHJlZC4KKyAgICBwYWludGVyLmZpbGxSZWN0KHNvdXJjZVJlY3Qs
IENvbG9yOjpjcmVhdGVVbmNoZWNrZWQoY29sb3IuYmx1ZSgpLCBjb2xvci5ncmVlbigpLCBjb2xv
ci5yZWQoKSkpOyAvLyBTaW5jZSB3ZSB3b24ndCBzd2FwIFIrQiB3aGVuIHVwbG9hZGluZyBhIHRl
eHR1cmUsIHBhaW50IHdpdGggdGhlIHN3YXBwZWQgUitCIGNvbG9yLgogICAgIHBhaW50ZXIuc2V0
Rm9udChmb250KTsKICAgICBwYWludGVyLnNldFBlbihRdDo6d2hpdGUpOwogICAgIHBhaW50ZXIu
ZHJhd1RleHQoMiwgaGVpZ2h0ICogMC44NSwgY291bnRlclN0cmluZyk7CkBAIC0zNTAsNyArMzUx
LDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdSZXBhaW50Q291bnRlcihpbnQgdmFsdWUs
IGludCBwb2ludFNpemUsIGNvbnN0IEZsb2F0UG8KICAgICBkcmF3VGV4dHVyZSgqdGV4dHVyZSwg
dGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCAxLjBmLCAwLCBBbGxFZGdlcyk7CiAKICNlbGlm
IFVTRShDQUlSTykKLSAgICBDU3RyaW5nIGNvdW50ZXJTdHJpbmcgPSBTdHJpbmc6Om51bWJlcih2
YWx1ZSkuYXNjaWkoKTsKKyAgICBDU3RyaW5nIGNvdW50ZXJTdHJpbmcgPSBTdHJpbmc6Om51bWJl
cihyZXBhaW50Q291bnQpLmFzY2lpKCk7CiAgICAgLy8gY2Fpcm9fdGV4dF9leHRlbnRzKCkgcmVx
dWlyZXMgYSBjYWlyb190LCBzbyBkaW1lbnNpb25zIG5lZWQgdG8gYmUgZ3Vlc3N0aW1hdGVkLgog
ICAgIGludCB3aWR0aCA9IGNvdW50ZXJTdHJpbmcubGVuZ3RoKCkgKiBwb2ludFNpemUgKiAxLjI7
CiAgICAgaW50IGhlaWdodCA9IHBvaW50U2l6ZSAqIDEuNTsKQEAgLTM1OCw3ICszNTksOSBAQCB2
b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1JlcGFpbnRDb3VudGVyKGludCB2YWx1ZSwgaW50IHBv
aW50U2l6ZSwgY29uc3QgRmxvYXRQbwogICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9IGNh
aXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlKENBSVJPX0ZPUk1BVF9BUkdCMzIsIHdpZHRoLCBoZWln
aHQpOwogICAgIGNhaXJvX3QqIGNyID0gY2Fpcm9fY3JlYXRlKHN1cmZhY2UpOwogCi0gICAgY2Fp
cm9fc2V0X3NvdXJjZV9yZ2IoY3IsIDAsIDAsIDEpOyAvLyBTaW5jZSB3ZSB3b24ndCBzd2FwIFIr
QiBmb3Igc3BlZWQsIHRoaXMgd2lsbCBwYWludCByZWQuCisgICAgZmxvYXQgciwgZywgYiwgYTsK
KyAgICBjb2xvci5nZXRSR0JBKHIsIGcsIGIsIGEpOworICAgIGNhaXJvX3NldF9zb3VyY2Vfcmdi
YShjciwgYiwgZywgciwgYSk7IC8vIFNpbmNlIHdlIHdvbid0IHN3YXAgUitCIHdoZW4gdXBsb2Fk
aW5nIGEgdGV4dHVyZSwgcGFpbnQgd2l0aCB0aGUgc3dhcHBlZCBSK0IgY29sb3IuCiAgICAgY2Fp
cm9fcmVjdGFuZ2xlKGNyLCAwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKICAgICBjYWlyb19maWxsKGNy
KTsKIApAQCAtMzgyLDcgKzM4NSw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3UmVwYWlu
dENvdW50ZXIoaW50IHZhbHVlLCBpbnQgcG9pbnRTaXplLCBjb25zdCBGbG9hdFBvCiAgICAgY2Fp
cm9fZGVzdHJveShjcik7CiAKICNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKKyAgICBV
TlVTRURfUEFSQU0ocmVwYWludENvdW50KTsKICAgICBVTlVTRURfUEFSQU0ocG9pbnRTaXplKTsK
ICAgICBVTlVTRURfUEFSQU0odGFyZ2V0UG9pbnQpOwogICAgIFVOVVNFRF9QQVJBTShtb2RlbFZp
ZXdNYXRyaXgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oCmluZGV4IDE2MDUwN2M2MDY4ZmVmYzM1NDg0MzBm
YmVkYWFmMzUwNjNkOTc0MTYuLjk4M2UyYTA2YzNjNDNkNjNhYTllYmExYWY2YzFhMWQ4ZGY1OTNk
ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmgKQEAgLTUyLDggKzUyLDggQEAgcHVibGljOgogICAgIHR5
cGVkZWYgaW50IEZsYWdzOwogCiAgICAgLy8gVGV4dHVyZU1hcHBlciBpbXBsZW1lbnRhdGlvbgot
ICAgIHZpcnR1YWwgdm9pZCBkcmF3Qm9yZGVyKGNvbnN0IENvbG9yJiwgZmxvYXQgYm9yZGVyV2lk
dGgsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIG1vZGVsVmlld01hdHJpeCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpIE9WRVJSSURFOwot
ICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVwYWludENvdW50ZXIoaW50IHZhbHVlLCBpbnQgcG9pbnRT
aXplLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVs
Vmlld01hdHJpeCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBkcmF3Qm9yZGVyKGNvbnN0IENvbG9yJiwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JikgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIGRyYXdSZXBhaW50Q291bnRlcihpbnQgcmVwYWludENvdW50LCBjb25zdCBD
b2xvciYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3VGV4dHVyZShjb25zdCBCaXRtYXBUZXh0dXJl
JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBv
cGFjaXR5LCBjb25zdCBCaXRtYXBUZXh0dXJlKiBtYXNrVGV4dHVyZSwgdW5zaWduZWQgZXhwb3Nl
ZEVkZ2VzKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1RleHR1cmUoUGxhdGZvcm0z
RE9iamVjdCB0ZXh0dXJlLCBGbGFncywgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIGNvbnN0
IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVs
Vmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1
cmUsIHVuc2lnbmVkIGV4cG9zZWRFZGdlcyA9IEFsbEVkZ2VzKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZHJhd1NvbGlkQ29sb3IoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmLCBjb25zdCBDb2xvciYpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdl
QnVmZmVyLmNwcAppbmRleCBkOWRiYzgwZTZkMmNkNDk3MWRhYzBhNzUwZjM0YjgyOTJjNzIxNTY2
Li5iNGUxMjJkMmNkOGRhMDk3MDVmNzljNGJlY2RjYzYzZjBhYTgzMjJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdl
QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcApAQCAtMjUsNiArMjUsNyBAQAogI2lmIFBMQVRG
T1JNKFFUKQogI2luY2x1ZGUgIk5hdGl2ZUltYWdlUXQuaCIKICNlbmRpZgorI2luY2x1ZGUgIk5v
dEltcGxlbWVudGVkLmgiCiAKIAogI2lmIFVTRShURVhUVVJFX01BUFBFUikKQEAgLTE2NCw2ICsx
NjUsMTYgQEAgdm9pZCBUZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXI6OmRyYXdTb2xpZENvbG9yKGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgVHJhbnMKICAgICBjb250ZXh0LT5yZXN0b3JlKCk7
CiB9CiAKK3ZvaWQgVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyOjpkcmF3Qm9yZGVyKGNvbnN0IENv
bG9yJiwgZmxvYXQgLyogYm9yZGVyV2lkdGggKi8sIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lk
IFRleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlcjo6ZHJhd1JlcGFpbnRDb3VudGVyKGludCAvKiByZXBh
aW50Q291bnQgKi8sIGNvbnN0IENvbG9yJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiAjaWYgRU5B
QkxFKENTU19GSUxURVJTKQogUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBCaXRtYXBUZXh0dXJl
SW1hZ2VCdWZmZXI6OmFwcGx5RmlsdGVycyhUZXh0dXJlTWFwcGVyKiwgY29uc3QgQml0bWFwVGV4
dHVyZSYgY29udGVudFRleHR1cmUsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmgKaW5kZXggOWRlNmQ0Y2JkNWViMTdl
OTM0ODgwMThhNjJhNzEzMWQ4OTczODRlYi4uNWIyZTk3ODNkNjljMDU4NjM5MjcyYTJiNjMxYzc2
YWUxMDU3M2QzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuaApAQCAtNTMs
MTQgKzUzLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPFRleHR1cmVNYXBwZXI+
IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBUZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIp
OyB9CiAKICAgICAvLyBUZXh0dXJlTWFwcGVyIGltcGxlbWVudGF0aW9uCi0gICAgdmlydHVhbCB2
b2lkIGRyYXdCb3JkZXIoY29uc3QgQ29sb3ImLCBmbG9hdCAvKiBib3JkZXJXaWR0aCAqLywgY29u
c3QgRmxvYXRSZWN0JiAvKiB0YXJnZXRSZWN0ICovLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgbW9kZWxWaWV3TWF0cml4ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkgT1ZFUlJJREUKLSAg
ICB7Ci0gICAgICAgIFVOVVNFRF9QQVJBTShtb2RlbFZpZXdNYXRyaXgpOwotICAgIH07Ci0gICAg
dmlydHVhbCB2b2lkIGRyYXdSZXBhaW50Q291bnRlcihpbnQgLyogdmFsdWUgKi8sIGludCAvKiBw
b2ludFNpemUgKi8sIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgbW9kZWxWaWV3TWF0cml4ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkgT1ZFUlJJREUKLSAg
ICB7Ci0gICAgICAgIFVOVVNFRF9QQVJBTShtb2RlbFZpZXdNYXRyaXgpOwotICAgIH07CisgICAg
dmlydHVhbCB2b2lkIGRyYXdCb3JkZXIoY29uc3QgQ29sb3ImLCBmbG9hdCBib3JkZXJXaWR0aCwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVyKGludCByZXBhaW50Q291bnQsIGNv
bnN0IENvbG9yJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdUZXh0dXJlKGNvbnN0IEJpdG1hcFRl
eHR1cmUmLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUs
IHVuc2lnbmVkIGV4cG9zZWRFZGdlcykgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdT
b2xpZENvbG9yKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jiwg
Y29uc3QgQ29sb3ImKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5DbGlwKGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgRmxvYXRSZWN0JikgT1ZFUlJJREU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCmluZGV4IDVkZmExODM4ZWQ0YjRjMjE4NDc1MDQzNDZlZWYw
MzY0MzliNTFhOWIuLjhlODBiMTk0MjM1OWZiYzhjYTYwZDgxM2ZiOTczMTZmMzM5MTU2NDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCkBAIC0xMjksNiArMTI5LDggQEAgdm9pZCBUZXh0
dXJlTWFwcGVyTGF5ZXI6OnBhaW50U2VsZihjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25z
JiBvcHRpb25zKQogCiAgICAgaWYgKG1fc3RhdGUuc29saWRDb2xvci5pc1ZhbGlkKCkgJiYgIW1f
c3RhdGUuY29udGVudHNSZWN0LmlzRW1wdHkoKSkgewogICAgICAgICBvcHRpb25zLnRleHR1cmVN
YXBwZXItPmRyYXdTb2xpZENvbG9yKG1fc3RhdGUuY29udGVudHNSZWN0LCB0cmFuc2Zvcm0sIGJs
ZW5kV2l0aE9wYWNpdHkobV9zdGF0ZS5zb2xpZENvbG9yLCBvcGFjaXR5KSk7CisgICAgICAgIGlm
IChtX3N0YXRlLnNob3dEZWJ1Z0JvcmRlcnMpCisgICAgICAgICAgICBvcHRpb25zLnRleHR1cmVN
YXBwZXItPmRyYXdCb3JkZXIobV9zdGF0ZS5kZWJ1Z0JvcmRlckNvbG9yLCBtX3N0YXRlLmRlYnVn
Qm9yZGVyV2lkdGgsIGxheWVyUmVjdCgpLCB0cmFuc2Zvcm0pOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC0xMzYsMTEgKzEzOCwxOCBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFp
bnRTZWxmKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlvbnMpCiAgICAgICAg
IEFTU0VSVChtX3N0YXRlLmRyYXdzQ29udGVudCAmJiBtX3N0YXRlLmNvbnRlbnRzVmlzaWJsZSAm
JiAhbV9zdGF0ZS5zaXplLmlzRW1wdHkoKSk7CiAgICAgICAgIEFTU0VSVCghbGF5ZXJSZWN0KCku
aXNFbXB0eSgpKTsKICAgICAgICAgbV9iYWNraW5nU3RvcmUtPnBhaW50VG9UZXh0dXJlTWFwcGVy
KG9wdGlvbnMudGV4dHVyZU1hcHBlciwgbGF5ZXJSZWN0KCksIHRyYW5zZm9ybSwgb3BhY2l0eSwg
bWFzay5nZXQoKSk7CisgICAgICAgIGlmIChtX3N0YXRlLnNob3dEZWJ1Z0JvcmRlcnMpCisgICAg
ICAgICAgICBtX2JhY2tpbmdTdG9yZS0+ZHJhd0JvcmRlcihvcHRpb25zLnRleHR1cmVNYXBwZXIs
IG1fc3RhdGUuZGVidWdCb3JkZXJDb2xvciwgbV9zdGF0ZS5kZWJ1Z0JvcmRlcldpZHRoLCBsYXll
clJlY3QoKSwgdHJhbnNmb3JtKTsKKyAgICAgICAgLy8gT25seSBkcmF3IHJlcGFpbnQgY291bnQg
Zm9yIHRoZSBtYWluIGJhY2tpbmcgc3RvcmUuCisgICAgICAgIGlmIChtX3N0YXRlLnNob3dSZXBh
aW50Q291bnRlcikKKyAgICAgICAgICAgIG1fYmFja2luZ1N0b3JlLT5kcmF3UmVwYWludENvdW50
ZXIob3B0aW9ucy50ZXh0dXJlTWFwcGVyLCBtX3N0YXRlLnJlcGFpbnRDb3VudCwgbV9zdGF0ZS5k
ZWJ1Z0JvcmRlckNvbG9yLCBsYXllclJlY3QoKSwgdHJhbnNmb3JtKTsKICAgICB9CiAKICAgICBp
ZiAobV9jb250ZW50c0xheWVyKSB7CiAgICAgICAgIEFTU0VSVCghbGF5ZXJSZWN0KCkuaXNFbXB0
eSgpKTsKICAgICAgICAgbV9jb250ZW50c0xheWVyLT5wYWludFRvVGV4dHVyZU1hcHBlcihvcHRp
b25zLnRleHR1cmVNYXBwZXIsIG1fc3RhdGUuY29udGVudHNSZWN0LCB0cmFuc2Zvcm0sIG9wYWNp
dHksIG1hc2suZ2V0KCkpOworICAgICAgICBpZiAobV9zdGF0ZS5zaG93RGVidWdCb3JkZXJzKQor
ICAgICAgICAgICAgbV9jb250ZW50c0xheWVyLT5kcmF3Qm9yZGVyKG9wdGlvbnMudGV4dHVyZU1h
cHBlciwgbV9zdGF0ZS5kZWJ1Z0JvcmRlckNvbG9yLCBtX3N0YXRlLmRlYnVnQm9yZGVyV2lkdGgs
IG1fc3RhdGUuY29udGVudHNSZWN0LCB0cmFuc2Zvcm0pOwogICAgIH0KIH0KIApAQCAtMzgzLDgg
KzM5Miw2IEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVG
b3JUaGlzTGF5ZXJPbmx5KEdyYXBoaWNzTGF5ZXJUZXh0CiAgICAgaWYgKGNoYW5nZU1hc2sgPT0g
Tm9DaGFuZ2VzICYmIGdyYXBoaWNzTGF5ZXItPm1fYW5pbWF0aW9ucy5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGdyYXBoaWNzTGF5ZXItPnVwZGF0ZURlYnVnSW5kaWNhdG9ycygp
OwotCiAgICAgaWYgKGNoYW5nZU1hc2sgJiBDaGlsZHJlbkNoYW5nZSkKICAgICAgICAgc2V0Q2hp
bGRyZW4oZ3JhcGhpY3NMYXllci0+Y2hpbGRyZW4oKSk7CiAKQEAgLTQwMSw2ICs0MDgsOSBAQCB2
b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVy
T25seShHcmFwaGljc0xheWVyVGV4dAogICAgIGlmIChjaGFuZ2VNYXNrICYgQW5pbWF0aW9uQ2hh
bmdlKQogICAgICAgICBtX2FuaW1hdGlvbnMgPSBncmFwaGljc0xheWVyLT5tX2FuaW1hdGlvbnM7
CiAKKyAgICBpZiAoY2hhbmdlTWFzayAmIFJlcGFpbnRDb3VudENoYW5nZSkKKyAgICAgICAgbV9z
dGF0ZS5yZXBhaW50Q291bnQgPSBncmFwaGljc0xheWVyLT5yZXBhaW50Q291bnQoKTsKKwogICAg
IG1fc3RhdGUubWFza0xheWVyID0gdG9UZXh0dXJlTWFwcGVyTGF5ZXIoZ3JhcGhpY3NMYXllci0+
bWFza0xheWVyKCkpOwogICAgIG1fc3RhdGUucmVwbGljYUxheWVyID0gdG9UZXh0dXJlTWFwcGVy
TGF5ZXIoZ3JhcGhpY3NMYXllci0+cmVwbGljYUxheWVyKCkpOwogICAgIG1fc3RhdGUucG9zID0g
Z3JhcGhpY3NMYXllci0+cG9zaXRpb24oKTsKQEAgLTQyMyw2ICs0MzMsMTEgQEAgdm9pZCBUZXh0
dXJlTWFwcGVyTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoR3Jh
cGhpY3NMYXllclRleHQKICNlbmRpZgogICAgIG1fZml4ZWRUb1ZpZXdwb3J0ID0gZ3JhcGhpY3NM
YXllci0+Zml4ZWRUb1ZpZXdwb3J0KCk7CiAKKyAgICBtX3N0YXRlLnNob3dEZWJ1Z0JvcmRlcnMg
PSBncmFwaGljc0xheWVyLT5pc1Nob3dpbmdEZWJ1Z0JvcmRlcigpOworICAgIG1fc3RhdGUuZGVi
dWdCb3JkZXJDb2xvciA9IHRvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIoZ3JhcGhpY3NMYXll
ciktPmRlYnVnQm9yZGVyQ29sb3IoKTsKKyAgICBtX3N0YXRlLmRlYnVnQm9yZGVyV2lkdGggPSB0
b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKGdyYXBoaWNzTGF5ZXIpLT5kZWJ1Z0JvcmRlcldp
ZHRoKCk7CisgICAgbV9zdGF0ZS5zaG93UmVwYWludENvdW50ZXIgPSBncmFwaGljc0xheWVyLT5p
c1Nob3dpbmdSZXBhaW50Q291bnRlcigpOworCiAgICAgbV9jb250ZW50c0xheWVyID0gZ3JhcGhp
Y3NMYXllci0+cGxhdGZvcm1MYXllcigpOwogCiAgICAgbV9jdXJyZW50VHJhbnNmb3JtLnNldFBv
c2l0aW9uKGFkanVzdGVkUG9zaXRpb24oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKaW5kZXgg
ZjQxZTUyYTk3YzRiMzI4YzQ0Y2Y2NTBhZWUzNGNkMzAwYTQ2NTM5YS4uNTc1YmIyN2ViN2E4NzRj
MTg0YjU4MWVkMmJkNDM1ZDEwMTVhODNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaApAQCAt
NzEsNyArNzEsMTAgQEAgcHVibGljOgogCiAgICAgICAgIFJlcGxpY2FMYXllckNoYW5nZSA9ICAg
ICAgICAoMUwgPDwgMjEpLAogICAgICAgICBBbmltYXRpb25DaGFuZ2UgPSAgICAgICAgICAgKDFM
IDw8IDIyKSwKLSAgICAgICAgRmlsdGVyQ2hhbmdlID0gICAgICAgICAgICAgICgxTCA8PCAyMykK
KyAgICAgICAgRmlsdGVyQ2hhbmdlID0gICAgICAgICAgICAgICgxTCA8PCAyMyksCisKKyAgICAg
ICAgRGVidWdWaXN1YWxzQ2hhbmdlID0gICAgICAgICgxTCA8PCAyNCksCisgICAgICAgIFJlcGFp
bnRDb3VudENoYW5nZSA9ICAgICAgICAoMUwgPDwgMjUpCiAgICAgfTsKIAogICAgIFRleHR1cmVN
YXBwZXJMYXllcigpCkBAIC0xNzIsNiArMTc1LDkgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoQ1NT
X0ZJTFRFUlMpCiAgICAgICAgIEZpbHRlck9wZXJhdGlvbnMgZmlsdGVyczsKICNlbmRpZgorICAg
ICAgICBDb2xvciBkZWJ1Z0JvcmRlckNvbG9yOworICAgICAgICBmbG9hdCBkZWJ1Z0JvcmRlcldp
ZHRoOworICAgICAgICBpbnQgcmVwYWludENvdW50OwogCiAgICAgICAgIGJvb2wgcHJlc2VydmVz
M0QgOiAxOwogICAgICAgICBib29sIG1hc2tzVG9Cb3VuZHMgOiAxOwpAQCAtMTgwLDExICsxODYs
MTUgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBjb250ZW50c09wYXF1ZSA6IDE7CiAgICAgICAg
IGJvb2wgYmFja2ZhY2VWaXNpYmlsaXR5IDogMTsKICAgICAgICAgYm9vbCB2aXNpYmxlIDogMTsK
KyAgICAgICAgYm9vbCBzaG93RGVidWdCb3JkZXJzIDogMTsKKyAgICAgICAgYm9vbCBzaG93UmVw
YWludENvdW50ZXIgOiAxOwogCiAgICAgICAgIFN0YXRlKCkKICAgICAgICAgICAgIDogb3BhY2l0
eSgxKQogICAgICAgICAgICAgLCBtYXNrTGF5ZXIoMCkKICAgICAgICAgICAgICwgcmVwbGljYUxh
eWVyKDApCisgICAgICAgICAgICAsIGRlYnVnQm9yZGVyV2lkdGgoMCkKKyAgICAgICAgICAgICwg
cmVwYWludENvdW50KDApCiAgICAgICAgICAgICAsIHByZXNlcnZlczNEKGZhbHNlKQogICAgICAg
ICAgICAgLCBtYXNrc1RvQm91bmRzKGZhbHNlKQogICAgICAgICAgICAgLCBkcmF3c0NvbnRlbnQo
ZmFsc2UpCkBAIC0xOTIsNiArMjAyLDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICwgY29udGVu
dHNPcGFxdWUoZmFsc2UpCiAgICAgICAgICAgICAsIGJhY2tmYWNlVmlzaWJpbGl0eShmYWxzZSkK
ICAgICAgICAgICAgICwgdmlzaWJsZSh0cnVlKQorICAgICAgICAgICAgLCBzaG93RGVidWdCb3Jk
ZXJzKGZhbHNlKQorICAgICAgICAgICAgLCBzaG93UmVwYWludENvdW50ZXIoZmFsc2UpCiAgICAg
ICAgIHsKICAgICAgICAgfQogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllci5oCmluZGV4IDM4YWYwM2U4OWI2MjQ4MWFiYWYzMjA5OGMzYTgxN2FiNGQwMDBjMWUuLmY0
ODc5NTI2NzY4MDE5MDg1Y2JkZWY4OWU2NmVlNDdkZWY4MTAxMTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oCkBAIC0yNCwxOCArMjQsMjAgQEAKICNpbmNsdWRlICJH
cmFwaGljc1N1cmZhY2UuaCIKICNlbmRpZgogCisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlci5oIgog
I2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgVGV4dHVyZU1hcHBlcjsKLWNsYXNzIEJpdG1hcFRleHR1cmU7Ci0KIGNsYXNzIFRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5UZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllcigpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVy
ZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGZs
b2F0IG9wYWNpdHkgPSAxLjAsIEJpdG1hcFRleHR1cmUqIG1hc2sgPSAwKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHN3YXBCdWZmZXJzKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRyYXdCb3JkZXIo
VGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgQ29sb3ImIGNvbG9yLCBmbG9hdCBi
b3JkZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgdHJhbnNmb3JtKQorICAgIHsKKyAgICAgICAgdGV4dHVyZU1hcHBlci0+ZHJh
d0JvcmRlcihjb2xvciwgYm9yZGVyV2lkdGgsIHRhcmdldFJlY3QsIHRyYW5zZm9ybSk7CisgICAg
fQogI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQogICAgIHZpcnR1YWwgSW50U2l6ZSBwbGF0Zm9y
bUxheWVyU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIEludFNpemUoKTsgfQogICAgIHZpcnR1YWwgdWlu
dDMyX3QgY29weVRvR3JhcGhpY3NTdXJmYWNlKCkgeyByZXR1cm4gMDsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185105</attachid>
            <date>2013-01-28 16:51:59 -0800</date>
            <delta_ts>2013-01-28 22:28:14 -0800</delta_ts>
            <desc>Patch : It is a follow-up patch not to change layout test results.</desc>
            <filename>bug-105787-20130129094824.patch</filename>
            <type>text/plain</type>
            <size>2372</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxMDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2RhYjk3YjVkMTJkY2Rh
NzQzY2I5ZTY1MTVkMDUyYmMxNWZiNzU0Ni4uY2IwMjc0ZWY5ZjU5ZTQyYTRlNTgyN2ZmMTc5MjM4
ZTRjM2FiN2U5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEzLTAxLTI4ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFtUZXhtYXBd
IFJlZmFjdG9yIGNvZGUgcmVsYXRlZCB0byBkZWJ1ZyBib3JkZXIgYW5kIHJlcGFpbnQgY291bnQu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU3ODcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJdCBpcyBh
IGZvbGxvdy11cCBwYXRjaCBub3QgdG8gY2hhbmdlIGxheW91dCB0ZXN0IHJlc3VsdHMuCisKKyAg
ICAgICAgVGhlIHByZXZpb3VzIHBhdGNoIHNldCBHcmFwaGljc0xheWVyOjptX3VzaW5nVGlsZWRM
YXllciB0byB0cnVlIHdoZW4gdXNpbmcgYQorICAgICAgICBiYWNraW5nIHN0b3JlLiBXaGVuIHRo
ZSB2YXJpYWJsZSBpcyB0cnVlLCBkdW1wTGF5ZXIoKSBhZGRzICh1c2luZ1RpbGVkTGF5ZXIgMSks
CisgICAgICAgIGJ1dCBtb3N0IG9mIHBvcnRzIGRvbid0IHNldCBtX3VzaW5nVGlsZWRMYXllciB0
byB0cnVlLiBTbyB3ZSB1c2UKKyAgICAgICAgbV91c2luZ1RpbGVkTGF5ZXIgb25seSB0byBnZXQg
ZGVidWcgaW5kaWNhdG9ycyBmb3IgYSB0aWxlZCBsYXllci4KKworICAgICAgICBObyBuZXcgdGVz
dHMuIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnVwZGF0ZURlYnVnQm9yZGVyQW5kUmVw
YWludENvdW50SWZOZWVkZWQpOgorCiAyMDEzLTAxLTI4ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5y
ZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCBy
MTQwODY5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKaW5kZXgg
YTY3OGNjZjdlODE0YjVmMjY3ZGUyOGQwZTI0YjZkZTRjNGJmNDFjYS4uMTM4YmU3NmI0N2Q3NDkw
Mjc1OGViMjlhNzQyMDgwN2U4NDQ4MjYzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXIuY3BwCkBAIC00MTMsOCArNDEzLDEyIEBAIHZvaWQgR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXI6OnVwZGF0ZURlYnVnQm9yZGVyQW5kUmVwYWludENvdW50SWZOZWVkZWQoKQog
ICAgIGlmICghbV9oYXNPd25CYWNraW5nU3RvcmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
dXNpbmdUaWxlZExheWVyID0gc2hvdWxkSGF2ZUJhY2tpbmdTdG9yZSgpOwotICAgIHVwZGF0ZURl
YnVnSW5kaWNhdG9ycygpOworICAgIGlmIChpc1Nob3dpbmdEZWJ1Z0JvcmRlcigpKSB7CisgICAg
ICAgIC8vIG1fdXNpbmdUaWxlZExheWVyIGFmZmVjdHMgbGF5b3V0IHRlc3QgcmVzdWx0cyBhbmQg
b25seSBNYWMgcG9ydCB1c2VzIHRoaXMgdmFyaWFibGUuCisgICAgICAgIG1fdXNpbmdUaWxlZExh
eWVyID0gc2hvdWxkSGF2ZUJhY2tpbmdTdG9yZSgpOworICAgICAgICB1cGRhdGVEZWJ1Z0luZGlj
YXRvcnMoKTsKKyAgICAgICAgbV91c2luZ1RpbGVkTGF5ZXIgPSBmYWxzZTsKKyAgICB9CiAKICAg
ICAvLyBXaGVuIHRoaXMgaGFzIGl0cyBvd24gYmFja2luZyBzdG9yZSAoZS5nLiBRdCBXSzEpLCB1
cGRhdGUgdGhlIHJlcGFpbnQgY291bnQgYmVmb3JlIGNhbGxpbmcgVGV4dHVyZU1hcHBlckxheWVy
OjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCkuCiAgICAgYm9vbCBuZWVk
c1RvUmVwYWludCA9IHNob3VsZEhhdmVCYWNraW5nU3RvcmUoKSAmJiAobV9uZWVkc0Rpc3BsYXkg
fHwgIW1fbmVlZHNEaXNwbGF5UmVjdC5pc0VtcHR5KCkpOwo=
</data>
<flag name="review"
          id="204048"
          type_id="1"
          status="-"
          setter="noam"
    />
    <flag name="commit-queue"
          id="204049"
          type_id="3"
          status="-"
          setter="noam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185156</attachid>
            <date>2013-01-28 22:27:58 -0800</date>
            <delta_ts>2013-01-28 22:45:33 -0800</delta_ts>
            <desc>Patch : It is a follow-up patch not to change layout test results.</desc>
            <filename>bug-105787-20130129152422.patch</filename>
            <type>text/plain</type>
            <size>2302</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxMDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2RhYjk3YjVkMTJkY2Rh
NzQzY2I5ZTY1MTVkMDUyYmMxNWZiNzU0Ni4uZTZhZDdhYjJmZjY1YTgyOTNkOTE2NDhkMWM2ZjM1
NmQ5YTg3ZDJlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEzLTAxLTI4ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFtUZXhtYXBd
IFJlZmFjdG9yIGNvZGUgcmVsYXRlZCB0byBkZWJ1ZyBib3JkZXIgYW5kIHJlcGFpbnQgY291bnQu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU3ODcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJdCBpcyBh
IGZvbGxvdy11cCBwYXRjaCBub3QgdG8gY2hhbmdlIGxheW91dCB0ZXN0IHJlc3VsdHMuCisKKyAg
ICAgICAgVGhlIHByZXZpb3VzIHBhdGNoIHNldCBHcmFwaGljc0xheWVyOjptX3VzaW5nVGlsZWRM
YXllciB0byB0cnVlIHdoZW4gdXNpbmcgYQorICAgICAgICBiYWNraW5nIHN0b3JlLiBXaGVuIHRo
ZSB2YXJpYWJsZSBpcyB0cnVlLCBkdW1wTGF5ZXIoKSBhZGRzICh1c2luZ1RpbGVkTGF5ZXIgMSks
CisgICAgICAgIGJ1dCBtb3N0IG9mIHBvcnRzIGRvbid0IHNldCBtX3VzaW5nVGlsZWRMYXllciB0
byB0cnVlLiBTbyB3ZSBkb24ndCB1c2UKKyAgICAgICAgbV91c2luZ1RpbGVkTGF5ZXIgdG8gbWF0
Y2ggdGhlIHRlc3QgcmVzdWx0cyBvZiBvdGhlciBwb3J0cy4KKworICAgICAgICBBZnRlciB0aGlz
IHBhdGNoLCBUZXh0dXJlIE1hcHBlciBkcmF3cyBkZWJ1ZyB2aXN1YWxzIGZvciBhIHRpbGVkIGJh
Y2tpbmcKKyAgICAgICAgd2l0aCBkaWZmZXJlbnQgY29sb3IgZnJvbSBzYWZhcmkuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLiBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjp1cGRhdGVEZWJ1
Z0JvcmRlckFuZFJlcGFpbnRDb3VudElmTmVlZGVkKToKKwogMjAxMy0wMS0yOCAgU2hlcmlmZiBC
b3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
cm9sbGluZyBvdXQgcjE0MDg2OS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXIuY3BwCmluZGV4IGE2NzhjY2Y3ZTgxNGI1ZjI2N2RlMjhkMGUyNGI2ZGU0YzRiZjQxY2EuLjg4
YjBlMDA1Mjk3ZmEyOWRhNjkyZjZiMzllNzkzYzI2NGI3MTlhZTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtNDEzLDggKzQxMyw4IEBAIHZvaWQgR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnVwZGF0ZURlYnVnQm9yZGVyQW5kUmVwYWludENvdW50
SWZOZWVkZWQoKQogICAgIGlmICghbV9oYXNPd25CYWNraW5nU3RvcmUpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIG1fdXNpbmdUaWxlZExheWVyID0gc2hvdWxkSGF2ZUJhY2tpbmdTdG9yZSgpOwot
ICAgIHVwZGF0ZURlYnVnSW5kaWNhdG9ycygpOworICAgIGlmIChpc1Nob3dpbmdEZWJ1Z0JvcmRl
cigpKQorICAgICAgICB1cGRhdGVEZWJ1Z0luZGljYXRvcnMoKTsKIAogICAgIC8vIFdoZW4gdGhp
cyBoYXMgaXRzIG93biBiYWNraW5nIHN0b3JlIChlLmcuIFF0IFdLMSksIHVwZGF0ZSB0aGUgcmVw
YWludCBjb3VudCBiZWZvcmUgY2FsbGluZyBUZXh0dXJlTWFwcGVyTGF5ZXI6OmZsdXNoQ29tcG9z
aXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKS4KICAgICBib29sIG5lZWRzVG9SZXBhaW50ID0g
c2hvdWxkSGF2ZUJhY2tpbmdTdG9yZSgpICYmIChtX25lZWRzRGlzcGxheSB8fCAhbV9uZWVkc0Rp
c3BsYXlSZWN0LmlzRW1wdHkoKSk7Cg==
</data>
<flag name="review"
          id="204115"
          type_id="1"
          status="+"
          setter="noam"
    />
    <flag name="commit-queue"
          id="204116"
          type_id="3"
          status="-"
          setter="noam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185163</attachid>
            <date>2013-01-28 22:44:49 -0800</date>
            <delta_ts>2013-01-28 23:50:19 -0800</delta_ts>
            <desc>Patch for landing : It is a follow-up patch not to change layout test results.</desc>
            <filename>bug-105787-20130129154114.patch</filename>
            <type>text/plain</type>
            <size>2313</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxMDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2RhYjk3YjVkMTJkY2Rh
NzQzY2I5ZTY1MTVkMDUyYmMxNWZiNzU0Ni4uZDlkYmM3NTQ3MzM5OTFmOTgwNzA5ODZhMjhlNmY5
Nzg2MjBkZDljOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEzLTAxLTI4ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFtUZXhtYXBd
IFJlZmFjdG9yIGNvZGUgcmVsYXRlZCB0byBkZWJ1ZyBib3JkZXIgYW5kIHJlcGFpbnQgY291bnQu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU3ODcK
KworICAgICAgICBSZXZpZXdlZCBieSBOb2FtIFJvc2VudGhhbC4KKworICAgICAgICBJdCBpcyBh
IGZvbGxvdy11cCBwYXRjaCBub3QgdG8gY2hhbmdlIGxheW91dCB0ZXN0IHJlc3VsdHMuCisKKyAg
ICAgICAgVGhlIHByZXZpb3VzIHBhdGNoIHNldHMgR3JhcGhpY3NMYXllcjo6bV91c2luZ1RpbGVk
TGF5ZXIgdG8gdHJ1ZSB3aGVuIHVzaW5nIGEKKyAgICAgICAgYmFja2luZyBzdG9yZS4gV2hlbiB0
aGUgdmFyaWFibGUgaXMgdHJ1ZSwgZHVtcExheWVyKCkgYWRkcyAodXNpbmdUaWxlZExheWVyIDEp
LAorICAgICAgICBidXQgbW9zdCBvZiBwb3J0cyBkb24ndCBzZXQgbV91c2luZ1RpbGVkTGF5ZXIg
dG8gdHJ1ZS4gU28gd2UgZG9uJ3QgdXNlCisgICAgICAgIG1fdXNpbmdUaWxlZExheWVyIHRvIG1h
dGNoIHRoZSB0ZXN0IHJlc3VsdHMgb2Ygb3RoZXIgcG9ydHMuCisKKyAgICAgICAgQWZ0ZXIgdGhp
cyBwYXRjaCwgVGV4dHVyZSBNYXBwZXIgZHJhd3MgZGVidWcgdmlzdWFscyBmb3IgYSB0aWxlZCBi
YWNraW5nCisgICAgICAgIHdpdGggZGlmZmVyZW50IGNvbG9yIGZyb20gc2FmYXJpLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cy4gRGVidWcgZmVhdHVyZSwgbm90IGNvdmVyZWQgaW4gdGVzdHMuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6
OnVwZGF0ZURlYnVnQm9yZGVyQW5kUmVwYWludENvdW50SWZOZWVkZWQpOgorCiAyMDEzLTAxLTI4
ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLCByb2xsaW5nIG91dCByMTQwODY5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlci5jcHAKaW5kZXggYTY3OGNjZjdlODE0YjVmMjY3ZGUyOGQwZTI0YjZkZTRj
NGJmNDFjYS4uODhiMGUwMDUyOTdmYTI5ZGE2OTJmNmIzOWU3OTNjMjY0YjcxOWFlMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCkBAIC00MTMsOCArNDEzLDgg
QEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6dXBkYXRlRGVidWdCb3JkZXJBbmRS
ZXBhaW50Q291bnRJZk5lZWRlZCgpCiAgICAgaWYgKCFtX2hhc093bkJhY2tpbmdTdG9yZSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV91c2luZ1RpbGVkTGF5ZXIgPSBzaG91bGRIYXZlQmFja2lu
Z1N0b3JlKCk7Ci0gICAgdXBkYXRlRGVidWdJbmRpY2F0b3JzKCk7CisgICAgaWYgKGlzU2hvd2lu
Z0RlYnVnQm9yZGVyKCkpCisgICAgICAgIHVwZGF0ZURlYnVnSW5kaWNhdG9ycygpOwogCiAgICAg
Ly8gV2hlbiB0aGlzIGhhcyBpdHMgb3duIGJhY2tpbmcgc3RvcmUgKGUuZy4gUXQgV0sxKSwgdXBk
YXRlIHRoZSByZXBhaW50IGNvdW50IGJlZm9yZSBjYWxsaW5nIFRleHR1cmVNYXBwZXJMYXllcjo6
Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpLgogICAgIGJvb2wgbmVlZHNU
b1JlcGFpbnQgPSBzaG91bGRIYXZlQmFja2luZ1N0b3JlKCkgJiYgKG1fbmVlZHNEaXNwbGF5IHx8
ICFtX25lZWRzRGlzcGxheVJlY3QuaXNFbXB0eSgpKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>