<?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>104990</bug_id>
          
          <creation_ts>2012-12-13 21:00:07 -0800</creation_ts>
          <short_desc>Coordinated Graphics: Manage the lifecycle of CoordinatedGraphicsLayer explicitly.</short_desc>
          <delta_ts>2012-12-25 18:06:03 -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>103843</dependson>
    
    <dependson>103959</dependson>
          <blocked>103854</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dongseong Hwang">dongseong.hwang</reporter>
          <assigned_to name="Dongseong Hwang">dongseong.hwang</assigned_to>
          <cc>d.nomiyama</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>noam</cc>
    
    <cc>ostap73</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zeno</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>791299</commentid>
    <comment_count>0</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-13 21:00:07 -0800</bug_when>
    <thetext>Currently, Web Process does not send a layer creation message to UI Process, so LayerTreeHost creates GraphicsLayer lazily.
It causes redundant if statements to check if GraphicsLayer is created. This patch manages the lifecycle of layer explicitly, and it increases readability.

This is in preparation for refactoring TextureMapper to work in an actor model (http://webkit.org/b/103854).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791305</commentid>
    <comment_count>1</comment_count>
      <attachid>179412</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-13 21:11:36 -0800</bug_when>
    <thetext>Created attachment 179412
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793103</commentid>
    <comment_count>2</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-17 15:50:29 -0800</bug_when>
    <thetext>ping. Could you review this bug?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793111</commentid>
    <comment_count>3</comment_count>
      <attachid>179412</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-12-17 15:56:17 -0800</bug_when>
    <thetext>Comment on attachment 179412
Patch

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

&gt; Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp:353
&gt; +    OwnPtr&lt;WebCore::GraphicsLayer&gt; newLayer = GraphicsLayer::create(0, this);

What does 0 stand for?

&gt; Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp:592
&gt; +    m_rootLayer = GraphicsLayer::create(0, this);

What does 0 stand for?

&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h:179
&gt; +    Vector&lt;CoordinatedLayerID&gt; m_attachedLayers;
&gt;      Vector&lt;CoordinatedLayerID&gt; m_detachedLayers;

Let&apos;s rename to m_layersToCreate and m_layersToDelete</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793121</commentid>
    <comment_count>4</comment_count>
      <attachid>179412</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-17 16:03:15 -0800</bug_when>
    <thetext>Comment on attachment 179412
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp:592
&gt;&gt; +    m_rootLayer = GraphicsLayer::create(0, this);
&gt; 
&gt; What does 0 stand for?

0 stands for absence of factory.

in GraphicsLayerTextureMapper.
PassOwnPtr&lt;GraphicsLayer&gt; GraphicsLayer::create(GraphicsLayerFactory* factory, GraphicsLayerClient* client)
{
    if (!factory)
        return adoptPtr(new GraphicsLayerTextureMapper(client));

    return factory-&gt;createGraphicsLayer(client);
}

I agree that it is hard to read.

I&apos;ll change adoptPtr(new GraphicsLayerTextureMapper(this)) or GraphicsLayer::create(this) if possible (I need to investigate what is s_graphicsLayerFactory)

PassOwnPtr&lt;GraphicsLayer&gt; GraphicsLayer::create(GraphicsLayerClient* client)
{
    if (s_graphicsLayerFactory)
        return (*s_graphicsLayerFactory)(client);
    return adoptPtr(new GraphicsLayerTextureMapper(client));
}

&gt;&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h:179
&gt;&gt;      Vector&lt;CoordinatedLayerID&gt; m_detachedLayers;
&gt; 
&gt; Let&apos;s rename to m_layersToCreate and m_layersToDelete

Ok, I&apos;ll change!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793122</commentid>
    <comment_count>5</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-12-17 16:04:38 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 179412 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=179412&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp:592
&gt; &gt;&gt; +    m_rootLayer = GraphicsLayer::create(0, this);
&gt; &gt; 
&gt; &gt; What does 0 stand for?
&gt; 
&gt; 0 stands for absence of factory.
&gt; 
&gt; in GraphicsLayerTextureMapper.
&gt; PassOwnPtr&lt;GraphicsLayer&gt; GraphicsLayer::create(GraphicsLayerFactory* factory, GraphicsLayerClient* client)
&gt; {
&gt;     if (!factory)
&gt;         return adoptPtr(new GraphicsLayerTextureMapper(client));
&gt; 
&gt;     return factory-&gt;createGraphicsLayer(client);
&gt; }
&gt; 
&gt; I agree that it is hard to read.
&gt; 
&gt; I&apos;ll change adoptPtr(new GraphicsLayerTextureMapper(this)) or GraphicsLayer::create(this) if possible (I need to investigate what is s_graphicsLayerFactory)
&gt; 
It&apos;s enough to put (0 /* factory */, ...)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793177</commentid>
    <comment_count>6</comment_count>
      <attachid>179837</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-17 16:55:28 -0800</bug_when>
    <thetext>Created attachment 179837
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793178</commentid>
    <comment_count>7</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-17 16:56:50 -0800</bug_when>
    <thetext>This bug depends on Bug 103959 physically, not logically.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793264</commentid>
    <comment_count>8</comment_count>
      <attachid>179858</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-17 19:04:24 -0800</bug_when>
    <thetext>Created attachment 179858
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793996</commentid>
    <comment_count>9</comment_count>
      <attachid>179858</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-12-18 13:33:33 -0800</bug_when>
    <thetext>Comment on attachment 179858
Patch

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

I am a little hesitant to add new IPC messages and overhead just for code readability. I would prefer it if we made sure setLayerInfo is always the first command called.

&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:330
&gt; +void CoordinatedLayerTreeHost::createCompositingLayers()
&gt; +{
&gt; +    if (m_layersToCreate.isEmpty())
&gt; +        return;
&gt; +
&gt; +    for (size_t i = 0; i &lt; m_layersToCreate.size(); ++i)
&gt; +        m_webPage-&gt;send(Messages::CoordinatedLayerTreeHostProxy::CreateCompositingLayer(m_layersToCreate[i]));
&gt; +    m_layersToCreate.clear();
&gt; +    m_shouldSyncFrame = true;
&gt; +}
&gt; +
&gt; +void CoordinatedLayerTreeHost::deleteCompositingLayers()
&gt; +{
&gt; +    if (m_layersToDelete.isEmpty())
&gt; +        return;
&gt; +
&gt; +    if (m_isPurging) {
&gt; +        m_layersToDelete.clear();
&gt; +        return;
&gt; +    }
&gt; +
&gt; +    for (size_t i = 0; i &lt; m_layersToDelete.size(); ++i)
&gt; +        m_webPage-&gt;send(Messages::CoordinatedLayerTreeHostProxy::DeleteCompositingLayer(m_layersToDelete[i]));
&gt; +    m_layersToDelete.clear();
&gt; +    m_shouldSyncFrame = true;

If a layer gets created and deleted in the same cycle, shouldn&apos;t we simply remove it from m_layersToCreate?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794252</commentid>
    <comment_count>10</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-18 18:29:04 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 179858 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=179858&amp;action=review
&gt; 
&gt; I am a little hesitant to add new IPC messages and overhead just for code readability. I would prefer it if we made sure setLayerInfo is always the first command called.

Thank you for review. All are reasonable concerns :)

I think creating Layer in setLayerInfo is one good solution. but there are a bit tricky problem.

1. It is weird that setLayerInfo is prior to setRootCompositingLayer.

2. when we change CoordinatedGraphicsLayer::flushCompositingStateForThisLayer, we always concern it.

We already have a method prior to syncLayerState() although syncImageBacking() does not send any messages.
I think it is a bit burden for future changes if we create layer by piggyback of setLayerInfo.

void CoordinatedGraphicsLayer::flushCompositingStateForThisLayerOnly()
{
    // Sets the values.
    computePixelAlignment(m_adjustedPosition, m_adjustedSize, m_adjustedAnchorPoint, m_pixelAlignmentOffset);

    syncImageBacking();
    syncLayerState();
    ...
}

In addition, IMHO createCompositingLayer message is so light that we should not make premature optimization.


&gt; If a layer gets created and deleted in the same cycle, shouldn&apos;t we simply remove it from m_layersToCreate?

That&apos;s good idea, but there is some tricky issues, too.

For example, following seq is possible in the same cycle.
 - createCompositingLayer
 - setLayerInfo 
 - deleteCompositingLayer

If we skip createCompositingLayer, LayerTreeRenderer can receive setLayerInfo without creating layer.
I&apos;m sure we can handle it but I don&apos;t want to add complex algorithm to optimize it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794296</commentid>
    <comment_count>11</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-18 20:06:51 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; &gt; If a layer gets created and deleted in the same cycle, shouldn&apos;t we simply remove it from m_layersToCreate?
&gt; 
&gt; That&apos;s good idea, but there is some tricky issues, too.
&gt; 
&gt; For example, following seq is possible in the same cycle.
&gt;  - createCompositingLayer
&gt;  - setLayerInfo 
&gt;  - deleteCompositingLayer
&gt; 
&gt; If we skip createCompositingLayer, LayerTreeRenderer can receive setLayerInfo without creating layer.
&gt; I&apos;m sure we can handle it but I don&apos;t want to add complex algorithm to optimize it.

After rethinking about it, I think your suggestion is great. m_layersToDelete stores destructed layer so the layer cannet send any messages.
If a layer gets created and deleted in the same cycle, we can simply remove it from m_layersToCreate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796146</commentid>
    <comment_count>12</comment_count>
      <attachid>180485</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-20 22:44:32 -0800</bug_when>
    <thetext>Created attachment 180485
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796177</commentid>
    <comment_count>13</comment_count>
      <attachid>180485</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-12-21 00:53:04 -0800</bug_when>
    <thetext>Comment on attachment 180485
Patch

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

&gt; Source/WebKit2/ChangeLog:12
&gt; +        Currently, Web Process does not send a layer creation message to UI Process, so
&gt; +        LayerTreeRenderer creates GraphicsLayer lazily. We need to deliberatively decide
&gt; +        when we can create layer lazily, and it is hard to understand the lifecycle of
&gt; +        GraphicsLayer. This patch manages the lifecycle of layer explicitly, and it
&gt; +        increases readability.

Send explicit commands to the UI process to create/delete compositing layers, instead of having the UI process decide lazily when to create them.
Avoid creating a compositing layer at all if it was deleted in the same cycle.

&gt; Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp:321
&gt; +    layer-&gt;setReplicatedByLayer((layerInfo.replica != InvalidCoordinatedLayerID) ? layerByID(layerInfo.replica) : 0);
&gt; +    layer-&gt;setMaskLayer((layerInfo.mask != InvalidCoordinatedLayerID) ? layerByID(layerInfo.mask) : 0);

This is really verbose. I liked the old way better.

&gt; Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.h:126
&gt; +    WebCore::GraphicsLayer* layerByID(CoordinatedLayerID id)
&gt; +    {
&gt; +        ASSERT(m_layers.contains(id));
&gt; +        ASSERT(id != InvalidCoordinatedLayerID);
&gt; +        return m_layers.get(id);

Why are you changing this function? It&apos;s not more readable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796190</commentid>
    <comment_count>14</comment_count>
      <attachid>180485</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-21 01:26:59 -0800</bug_when>
    <thetext>Comment on attachment 180485
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp:321
&gt;&gt; +    layer-&gt;setMaskLayer((layerInfo.mask != InvalidCoordinatedLayerID) ? layerByID(layerInfo.mask) : 0);
&gt; 
&gt; This is really verbose. I liked the old way better.

It is because I want to restrict the pre-condition of layerByID().
Please see below comment.

&gt;&gt; Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.h:126
&gt;&gt; +        return m_layers.get(id);
&gt; 
&gt; Why are you changing this function? It&apos;s not more readable.

I want to restrict the strict condition for layerByID().
What I mean that caller of layerByID(id) ensures id is not InvalidCoordinatedLayerID and m_layers contains id.
If so, we can remove redundant two ASSERT in all sites.

ASSERT(id); &lt;- removable
GraphicsLayer* layer = layerByID(id)
ASSERT(layer); &lt;- removable

I think more strict, more clear.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797187</commentid>
    <comment_count>15</comment_count>
      <attachid>180719</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-25 16:41:23 -0800</bug_when>
    <thetext>Created attachment 180719
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797188</commentid>
    <comment_count>16</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-25 16:42:58 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 180485 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=180485&amp;action=review
&gt; 
&gt; Send explicit commands to the UI process to create/delete compositing layers, instead of having the UI process decide lazily when to create them.
&gt; Avoid creating a compositing layer at all if it was deleted in the same cycle.

Done. Thank you for rephrasing :)

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp:321
&gt; &gt; +    layer-&gt;setReplicatedByLayer((layerInfo.replica != InvalidCoordinatedLayerID) ? layerByID(layerInfo.replica) : 0);
&gt; &gt; +    layer-&gt;setMaskLayer((layerInfo.mask != InvalidCoordinatedLayerID) ? layerByID(layerInfo.mask) : 0);
&gt; 
&gt; This is really verbose. I liked the old way better.

I added layerByIDIfPossible() to preserve readability at this spot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797189</commentid>
    <comment_count>17</comment_count>
      <attachid>180719</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-12-25 16:52:09 -0800</bug_when>
    <thetext>Comment on attachment 180719
Patch

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

LGTM, but let&apos;s rename to getLayerByIDIfExists

&gt; Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp:351
&gt; +GraphicsLayer* LayerTreeRenderer::layerByIDIfPossible(CoordinatedLayerID id)

getLayerByIDIfExists</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797193</commentid>
    <comment_count>18</comment_count>
      <attachid>180720</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-25 17:42:10 -0800</bug_when>
    <thetext>Created attachment 180720
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797194</commentid>
    <comment_count>19</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-25 17:42:54 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 180719 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=180719&amp;action=review
&gt; 
&gt; LGTM, but let&apos;s rename to getLayerByIDIfExists
Thx for review :)

&gt; 
&gt; getLayerByIDIfExists

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797206</commentid>
    <comment_count>20</comment_count>
      <attachid>180720</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-25 18:05:57 -0800</bug_when>
    <thetext>Comment on attachment 180720
Patch

Clearing flags on attachment: 180720

Committed r138468: &lt;http://trac.webkit.org/changeset/138468&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797207</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-25 18:06:03 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179412</attachid>
            <date>2012-12-13 21:11:36 -0800</date>
            <delta_ts>2012-12-17 16:55:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104990-20121214140844.patch</filename>
            <type>text/plain</type>
            <size>18543</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3Njg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNDVhOTUzMDdjMWM3ZGFh
NjgzZTgxMmQ0ODJkZDdiOTQ0MjVmNjQ0ZC4uZTRlMjM4ZGVlMzAwZWZlN2U0OTFlNDk4MDE2YmMx
ZDk1MGI4NWFjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEyLTEyLTEzICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIENvb3JkaW5h
dGVkIEdyYXBoaWNzOiBNYW5hZ2UgdGhlIGxpZmVjeWNsZSBvZiBDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIgZXhwbGljaXRseS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwNDk5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEN1cnJlbnRseSwgV2ViIFByb2Nlc3MgZG9lcyBub3Qgc2VuZCBhIGxheWVyIGNy
ZWF0aW9uIG1lc3NhZ2UgdG8gVUkgUHJvY2Vzcywgc28KKyAgICAgICAgTGF5ZXJUcmVlUmVuZGVy
ZXIgY3JlYXRlcyBHcmFwaGljc0xheWVyIGxhemlseS4gV2UgbmVlZCB0byBkZWxpYmVyYXRpdmVs
eSBkZWNpZGUKKyAgICAgICAgd2hlbiB3ZSBjYW4gY3JlYXRlIGxheWVyIGxhemlseSwgYW5kIGl0
IGlzIGhhcmQgdG8gdW5kZXJzdGFuZCB0aGUgbGlmZWN5Y2xlIG9mCisgICAgICAgIEdyYXBoaWNz
TGF5ZXIuIFRoaXMgcGF0Y2ggbWFuYWdlcyB0aGUgbGlmZWN5Y2xlIG9mIGxheWVyIGV4cGxpY2l0
bHksIGFuZCBpdAorICAgICAgICBpbmNyZWFzZXMgcmVhZGFiaWxpdHkuCisKKyAgICAgICAgVGhp
cyBpcyBpbiBwcmVwYXJhdGlvbiBmb3IgcmVmYWN0b3JpbmcgVGV4dHVyZU1hcHBlciB0byB3b3Jr
IGluIGFuIGFjdG9yIG1vZGVsCisgICAgICAgIChodHRwOi8vd2Via2l0Lm9yZy9iLzEwMzg1NCku
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExh
eWVyVHJlZUhvc3RQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdFByb3h5OjpjcmVhdGVDb21wb3NpdGluZ0xheWVyKToKKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0UHJveHkuaDoKKyAgICAgICAgKENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExh
eWVyVHJlZUhvc3RQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRp
bmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Okxh
eWVyVHJlZVJlbmRlcmVyOjpjcmVhdGVDYW52YXMpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRy
ZWVSZW5kZXJlcjo6ZGVzdHJveUNhbnZhcyk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJl
bmRlcmVyOjpzZXRMYXllckNoaWxkcmVuKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVu
ZGVyZXI6OnNldExheWVyRmlsdGVycyk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRl
cmVyOjpzZXRMYXllclN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6
OmNyZWF0ZUxheWVyKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVy
VHJlZVJlbmRlcmVyOjpkZWxldGVMYXllcik6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJl
bmRlcmVyOjpzZXRSb290TGF5ZXJJRCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRl
cmVyOjpjcmVhdGVUaWxlKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OnJl
bW92ZVRpbGUpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6dXBkYXRlVGls
ZSk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjplbnN1cmVSb290TGF5ZXIp
OgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6c2V0TGF5ZXJBbmltYXRpb25z
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5k
ZXJlci5oOgorICAgICAgICAoTGF5ZXJUcmVlUmVuZGVyZXIpOgorICAgICAgICAoV2ViS2l0OjpM
YXllclRyZWVSZW5kZXJlcjo6bGF5ZXJCeUlEKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmZsdXNoUGVuZGluZ0xheWVy
Q2hhbmdlcyk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y3Jl
YXRlQ29tcG9zaXRpbmdMYXllcnMpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktp
dDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpkZWxldGVDb21wb3NpdGluZ0xheWVycyk6Cisg
ICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6ZGV0YWNoTGF5ZXIpOgor
ICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNyZWF0ZUdyYXBoaWNz
TGF5ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oOgorCiAyMDEyLTEyLTExICBIdWFuZyBEb25nc3Vu
ZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCiAgICAgICAgIENvb3JkaW5hdGVkIEdyYXBo
aWNzOiBSZW1vdmUgdGhlIGRlcGVuZGVuY3kgb2YgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpIYW5k
bGUgZnJvbSBDb29yZGluYXRlZCBHcmFwaGljcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcAppbmRleCBhMTJmNDE0ZDg1YmJhNjcxNWMx
NmEzNzM0N2M0YzA0NWZlMTc5OTJhLi5iYWE4ZjY1MjNkZWJmZGViYmM0ZTUyMmI0NzVlMTRjYzE4
ZmQyZWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0UHJveHkuY3BwCkBAIC05NSw2ICs5NSwxMSBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdFByb3h5OjpyZW1vdmVVcGRhdGVBdGxhcyh1aW50MzJfdCBhdGxhc0lEKQogICAgIG1fc3Vy
ZmFjZXMucmVtb3ZlKGF0bGFzSUQpOwogfQogCit2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dFByb3h5OjpjcmVhdGVDb21wb3NpdGluZ0xheWVyKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCkKK3sK
KyAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZMYXllclRyZWVSZW5kZXJlcjo6Y3JlYXRlTGF5ZXIs
IG1fcmVuZGVyZXIuZ2V0KCksIGlkKSk7Cit9CisKIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0UHJveHk6OmRlbGV0ZUNvbXBvc2l0aW5nTGF5ZXIoQ29vcmRpbmF0ZWRMYXllcklEIGlkKQog
ewogICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQoJkxheWVyVHJlZVJlbmRlcmVyOjpkZWxldGVMYXll
ciwgbV9yZW5kZXJlci5nZXQoKSwgaWQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZExheWVyVHJlZUhvc3RQcm94eS5oCmluZGV4IDE1NWFjMWExMDJiZWUzMjIyNzM0M2FjMzY4
M2VmMDc4M2IwZDQ5YWQuLjlkZmIyN2JiYTRhZDczNTFlNjRiOWVhNjJkYTEwNjRiYTgyMTk3MTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHku
aApAQCAtNjEsNiArNjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjcmVhdGVDdXN0b21GaWx0ZXJQ
cm9ncmFtKGludCBpZCwgY29uc3QgV2ViQ29yZTo6Q3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8mKTsK
ICAgICB2b2lkIHJlbW92ZUN1c3RvbUZpbHRlclByb2dyYW0oaW50IGlkKTsKICNlbmRpZgorICAg
IHZvaWQgY3JlYXRlQ29tcG9zaXRpbmdMYXllcihDb29yZGluYXRlZExheWVySUQpOwogICAgIHZv
aWQgZGVsZXRlQ29tcG9zaXRpbmdMYXllcihDb29yZGluYXRlZExheWVySUQpOwogICAgIHZvaWQg
c2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIoQ29vcmRpbmF0ZWRMYXllcklEKTsKICAgICB2b2lkIHNl
dENvbnRlbnRzU2l6ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdFByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkubWVzc2FnZXMu
aW4KaW5kZXggODFhZDMyYTYzYmQyYTJkMDEzY2Y4M2VmNGZkMjVlZGQxYjhlZDEyMy4uMTM3ZGFk
ODA3NTAwZjU1ZTU5ZDI2YzI3YzFkZWRiYTQ5YzU1MDhhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0UHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkubWVzc2FnZXMuaW4K
QEAgLTI5LDYgKzI5LDcgQEAgbWVzc2FnZXMgLT4gQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJv
eHkgewogICAgIFJlbW92ZUN1c3RvbUZpbHRlclByb2dyYW0oaW50IGlkKQogI2VuZGlmCiAgICAg
U2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIodWludDMyX3QgaWQpCisgICAgQ3JlYXRlQ29tcG9zaXRp
bmdMYXllcih1aW50MzJfdCBpZCkKICAgICBEZWxldGVDb21wb3NpdGluZ0xheWVyKHVpbnQzMl90
IGlkKQogICAgIENyZWF0ZVRpbGVGb3JMYXllcih1aW50MzJfdCBsYXllcklELCB1aW50MzJfdCB0
aWxlSUQsIFdlYkNvcmU6OkludFJlY3QgdGlsZVJlY3QsIFdlYktpdDo6U3VyZmFjZVVwZGF0ZUlu
Zm8gdXBkYXRlSW5mbykKICAgICBVcGRhdGVUaWxlRm9yTGF5ZXIodWludDMyX3QgbGF5ZXJJRCwg
dWludDMyX3QgdGlsZUlELCBXZWJDb3JlOjpJbnRSZWN0IHRpbGVSZWN0LCBXZWJLaXQ6OlN1cmZh
Y2VVcGRhdGVJbmZvIHVwZGF0ZUluZm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5j
cHAKaW5kZXggMWQ1ZTc0ZWJjMDBhYTRkMWJjNjVlNGE2OWFmMDRkMTQ0ZDJhMDQ5Yy4uMWFiYmJl
ZTI4NTVjYjBhNGNmMWIwM2VjZjA4MjA3MTBiMzRhMmVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVy
VHJlZVJlbmRlcmVyLmNwcApAQCAtODksMTMgKzg5LDYgQEAgTGF5ZXJUcmVlUmVuZGVyZXI6On5M
YXllclRyZWVSZW5kZXJlcigpCiB7CiB9CiAKLVBhc3NPd25QdHI8R3JhcGhpY3NMYXllcj4gTGF5
ZXJUcmVlUmVuZGVyZXI6OmNyZWF0ZUxheWVyKENvb3JkaW5hdGVkTGF5ZXJJRCkKLXsKLSAgICBH
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlciogbmV3TGF5ZXIgPSBuZXcgR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXIodGhpcyk7Ci0gICAgbmV3TGF5ZXItPnNldEhhc093bkJhY2tpbmdTdG9yZShm
YWxzZSk7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ld0xheWVyKTsKLX0KLQogdm9pZCBMYXllclRy
ZWVSZW5kZXJlcjo6cGFpbnRUb0N1cnJlbnRHTENvbnRleHQoY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIG1hdHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgRmxvYXRSZWN0JiBjbGlwUmVjdCwg
VGV4dHVyZU1hcHBlcjo6UGFpbnRGbGFncyBQYWludEZsYWdzKQogewogICAgIGlmICghbV90ZXh0
dXJlTWFwcGVyKSB7CkBAIC0yMzEsNyArMjI0LDYgQEAgdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6
Y3JlYXRlQ2FudmFzKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCwgY29uc3QgV2ViQ29yZTo6SW50U2kK
IHsKICAgICBBU1NFUlQobV90ZXh0dXJlTWFwcGVyKTsKICAgICBHcmFwaGljc0xheWVyKiBsYXll
ciA9IGxheWVyQnlJRChpZCk7Ci0gICAgQVNTRVJUKGxheWVyKTsKICAgICBBU1NFUlQoIW1fc3Vy
ZmFjZUJhY2tpbmdTdG9yZXMuY29udGFpbnMoaWQpKTsKIAogICAgIFJlZlB0cjxUZXh0dXJlTWFw
cGVyU3VyZmFjZUJhY2tpbmdTdG9yZT4gY2FudmFzQmFja2luZ1N0b3JlKFRleHR1cmVNYXBwZXJT
dXJmYWNlQmFja2luZ1N0b3JlOjpjcmVhdGUoKSk7CkBAIC0yNTYsNyArMjQ4LDYgQEAgdm9pZCBM
YXllclRyZWVSZW5kZXJlcjo6ZGVzdHJveUNhbnZhcyhDb29yZGluYXRlZExheWVySUQgaWQpCiB7
CiAgICAgQVNTRVJUKG1fdGV4dHVyZU1hcHBlcik7CiAgICAgR3JhcGhpY3NMYXllciogbGF5ZXIg
PSBsYXllckJ5SUQoaWQpOwotICAgIEFTU0VSVChsYXllcik7CiAgICAgQVNTRVJUKG1fc3VyZmFj
ZUJhY2tpbmdTdG9yZXMuY29udGFpbnMoaWQpKTsKIAogICAgIG1fc3VyZmFjZUJhY2tpbmdTdG9y
ZXMucmVtb3ZlKGlkKTsKQEAgLTI2NiwxNyArMjU3LDEyIEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVy
ZXI6OmRlc3Ryb3lDYW52YXMoQ29vcmRpbmF0ZWRMYXllcklEIGlkKQogCiB2b2lkIExheWVyVHJl
ZVJlbmRlcmVyOjpzZXRMYXllckNoaWxkcmVuKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCwgY29uc3Qg
VmVjdG9yPENvb3JkaW5hdGVkTGF5ZXJJRD4mIGNoaWxkSURzKQogewotICAgIEdyYXBoaWNzTGF5
ZXIqIGxheWVyID0gZW5zdXJlTGF5ZXIoaWQpOworICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyID0g
bGF5ZXJCeUlEKGlkKTsKICAgICBWZWN0b3I8R3JhcGhpY3NMYXllcio+IGNoaWxkcmVuOwogCiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjaGlsZElEcy5zaXplKCk7ICsraSkgewogICAgICAg
ICBDb29yZGluYXRlZExheWVySUQgY2hpbGRJRCA9IGNoaWxkSURzW2ldOwogICAgICAgICBHcmFw
aGljc0xheWVyKiBjaGlsZCA9IGxheWVyQnlJRChjaGlsZElEKTsKLSAgICAgICAgaWYgKCFjaGls
ZCkgewotICAgICAgICAgICAgT3duUHRyPEdyYXBoaWNzTGF5ZXIqPiBuZXdDaGlsZCA9IGNyZWF0
ZUxheWVyKGNoaWxkSUQpOwotICAgICAgICAgICAgY2hpbGQgPSBuZXdDaGlsZC5nZXQoKTsKLSAg
ICAgICAgICAgIG1fbGF5ZXJzLmFkZChjaGlsZElELCBuZXdDaGlsZC5yZWxlYXNlKCkpOwotICAg
ICAgICB9CiAgICAgICAgIGNoaWxkcmVuLmFwcGVuZChjaGlsZCk7CiAgICAgfQogICAgIGxheWVy
LT5zZXRDaGlsZHJlbihjaGlsZHJlbik7CkBAIC0yODUsNyArMjcxLDcgQEAgdm9pZCBMYXllclRy
ZWVSZW5kZXJlcjo6c2V0TGF5ZXJDaGlsZHJlbihDb29yZGluYXRlZExheWVySUQgaWQsIGNvbnN0
IFZlY3RvcjxDb28KICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiB2b2lkIExheWVyVHJlZVJlbmRl
cmVyOjpzZXRMYXllckZpbHRlcnMoQ29vcmRpbmF0ZWRMYXllcklEIGlkLCBjb25zdCBGaWx0ZXJP
cGVyYXRpb25zJiBmaWx0ZXJzKQogewotICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyID0gZW5zdXJl
TGF5ZXIoaWQpOworICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyID0gbGF5ZXJCeUlEKGlkKTsKIAog
I2lmIEVOQUJMRShDU1NfU0hBREVSUykKICAgICBpbmplY3RDYWNoZWRDdXN0b21GaWx0ZXJQcm9n
cmFtcyhmaWx0ZXJzKTsKQEAgLTMyOSwxMCArMzE1LDEwIEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVy
ZXI6OnJlbW92ZUN1c3RvbUZpbHRlclByb2dyYW0oaW50IGlkKQogdm9pZCBMYXllclRyZWVSZW5k
ZXJlcjo6c2V0TGF5ZXJTdGF0ZShDb29yZGluYXRlZExheWVySUQgaWQsIGNvbnN0IENvb3JkaW5h
dGVkTGF5ZXJJbmZvJiBsYXllckluZm8pCiB7CiAgICAgQVNTRVJUKG1fcm9vdExheWVySUQgIT0g
SW52YWxpZENvb3JkaW5hdGVkTGF5ZXJJRCk7Ci0gICAgR3JhcGhpY3NMYXllciogbGF5ZXIgPSBl
bnN1cmVMYXllcihpZCk7CisgICAgR3JhcGhpY3NMYXllciogbGF5ZXIgPSBsYXllckJ5SUQoaWQp
OwogCi0gICAgbGF5ZXItPnNldFJlcGxpY2F0ZWRCeUxheWVyKGxheWVyQnlJRChsYXllckluZm8u
cmVwbGljYSkpOwotICAgIGxheWVyLT5zZXRNYXNrTGF5ZXIobGF5ZXJCeUlEKGxheWVySW5mby5t
YXNrKSk7CisgICAgbGF5ZXItPnNldFJlcGxpY2F0ZWRCeUxheWVyKChsYXllckluZm8ucmVwbGlj
YSAhPSBJbnZhbGlkQ29vcmRpbmF0ZWRMYXllcklEKSA/IGxheWVyQnlJRChsYXllckluZm8ucmVw
bGljYSkgOiAwKTsKKyAgICBsYXllci0+c2V0TWFza0xheWVyKChsYXllckluZm8ubWFzayAhPSBJ
bnZhbGlkQ29vcmRpbmF0ZWRMYXllcklEKSA/IGxheWVyQnlJRChsYXllckluZm8ubWFzaykgOiAw
KTsKIAogICAgIGxheWVyLT5zZXRBbmNob3JQb2ludChsYXllckluZm8uYW5jaG9yUG9pbnQpOwog
ICAgIGxheWVyLT5zZXRQb3NpdGlvbihsYXllckluZm8ucG9zKTsKQEAgLTM2MiwxMSArMzQ4LDE3
IEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnNldExheWVyU3RhdGUoQ29vcmRpbmF0ZWRMYXll
cklEIGlkLCBjb25zdCBDb29yZGluYXRlZExhCiAgICAgbGF5ZXItPnNldFByZXNlcnZlczNEKGxh
eWVySW5mby5wcmVzZXJ2ZXMzRCk7CiB9CiAKK3ZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OmNyZWF0
ZUxheWVyKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCkKK3sKKyAgICBPd25QdHI8V2ViQ29yZTo6R3Jh
cGhpY3NMYXllcj4gbmV3TGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUoMCwgdGhpcyk7Cisg
ICAgdG9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcihuZXdMYXllci5nZXQoKSktPnNldEhhc093
bkJhY2tpbmdTdG9yZShmYWxzZSk7CisgICAgbV9sYXllcnMuYWRkKGlkLCBuZXdMYXllci5yZWxl
YXNlKCkpOworfQorCiB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpkZWxldGVMYXllcihDb29yZGlu
YXRlZExheWVySUQgbGF5ZXJJRCkKIHsKICAgICBPd25QdHI8R3JhcGhpY3NMYXllcj4gbGF5ZXIg
PSBtX2xheWVycy50YWtlKGxheWVySUQpOwotICAgIGlmICghbGF5ZXIpCi0gICAgICAgIHJldHVy
bjsKKyAgICBBU1NFUlQobGF5ZXIpOwogCiAgICAgbGF5ZXItPnJlbW92ZUZyb21QYXJlbnQoKTsK
ICAgICBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3Jlcy5yZW1vdmUodG9UZXh0dXJlTWFwcGVyTGF5
ZXIobGF5ZXIuZ2V0KCkpKTsKQEAgLTM3NiwyMCArMzY4LDYgQEAgdm9pZCBMYXllclRyZWVSZW5k
ZXJlcjo6ZGVsZXRlTGF5ZXIoQ29vcmRpbmF0ZWRMYXllcklEIGxheWVySUQpCiAjZW5kaWYKIH0K
IAotCi1XZWJDb3JlOjpHcmFwaGljc0xheWVyKiBMYXllclRyZWVSZW5kZXJlcjo6ZW5zdXJlTGF5
ZXIoQ29vcmRpbmF0ZWRMYXllcklEIGlkKQotewotICAgIExheWVyTWFwOjppdGVyYXRvciBpdCA9
IG1fbGF5ZXJzLmZpbmQoaWQpOwotICAgIGlmIChpdCAhPSBtX2xheWVycy5lbmQoKSkKLSAgICAg
ICAgcmV0dXJuIGl0LT52YWx1ZS5nZXQoKTsKLQotICAgIE93blB0cjxXZWJDb3JlOjpHcmFwaGlj
c0xheWVyPiBuZXdMYXllciA9IGNyZWF0ZUxheWVyKGlkKTsKLSAgICBXZWJDb3JlOjpHcmFwaGlj
c0xheWVyKiBsYXllciA9IG5ld0xheWVyLmdldCgpOwotICAgIG1fbGF5ZXJzLmFkZChpZCwgbmV3
TGF5ZXIucmVsZWFzZSgpKTsKLQotICAgIHJldHVybiBsYXllcjsKLX0KLQogdm9pZCBMYXllclRy
ZWVSZW5kZXJlcjo6c2V0Um9vdExheWVySUQoQ29vcmRpbmF0ZWRMYXllcklEIGxheWVySUQpCiB7
CiAgICAgQVNTRVJUKGxheWVySUQgIT0gSW52YWxpZENvb3JkaW5hdGVkTGF5ZXJJRCk7CkBAIC0z
OTgsNyArMzc2LDcgQEAgdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6c2V0Um9vdExheWVySUQoQ29v
cmRpbmF0ZWRMYXllcklEIGxheWVySUQpCiAgICAgbV9yb290TGF5ZXJJRCA9IGxheWVySUQ7CiAg
ICAgbV9yb290TGF5ZXItPnJlbW92ZUFsbENoaWxkcmVuKCk7CiAKLSAgICBHcmFwaGljc0xheWVy
KiBsYXllciA9IGVuc3VyZUxheWVyKGxheWVySUQpOworICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVy
ID0gbGF5ZXJCeUlEKGxheWVySUQpOwogICAgIG1fcm9vdExheWVyLT5hZGRDaGlsZChsYXllcik7
CiB9CiAKQEAgLTQ4Miw3ICs0NjAsNiBAQCB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpyZXNldEJh
Y2tpbmdTdG9yZVNpemVUb0xheWVyU2l6ZShHcmFwaGljc0xheWVyKiBncmFwaGljcwogdm9pZCBM
YXllclRyZWVSZW5kZXJlcjo6Y3JlYXRlVGlsZShDb29yZGluYXRlZExheWVySUQgbGF5ZXJJRCwg
dWludDMyX3QgdGlsZUlELCBmbG9hdCBzY2FsZSkKIHsKICAgICBHcmFwaGljc0xheWVyKiBsYXll
ciA9IGxheWVyQnlJRChsYXllcklEKTsKLSAgICBBU1NFUlQobGF5ZXIpOwogICAgIENvb3JkaW5h
dGVkQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUgPSBnZXRCYWNraW5nU3RvcmUobGF5ZXIpOwog
ICAgIEFTU0VSVChiYWNraW5nU3RvcmUpOwogICAgIGJhY2tpbmdTdG9yZS0+Y3JlYXRlVGlsZSh0
aWxlSUQsIHNjYWxlKTsKQEAgLTQ5Miw3ICs0NjksNiBAQCB2b2lkIExheWVyVHJlZVJlbmRlcmVy
OjpjcmVhdGVUaWxlKENvb3JkaW5hdGVkTGF5ZXJJRCBsYXllcklELCB1aW50MzJfdCB0aWxlSUQs
CiB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpyZW1vdmVUaWxlKENvb3JkaW5hdGVkTGF5ZXJJRCBs
YXllcklELCB1aW50MzJfdCB0aWxlSUQpCiB7CiAgICAgR3JhcGhpY3NMYXllciogbGF5ZXIgPSBs
YXllckJ5SUQobGF5ZXJJRCk7Ci0gICAgQVNTRVJUKGxheWVyKTsKICAgICBDb29yZGluYXRlZEJh
Y2tpbmdTdG9yZSogYmFja2luZ1N0b3JlID0gZ2V0QmFja2luZ1N0b3JlKGxheWVyKTsKICAgICBp
ZiAoIWJhY2tpbmdTdG9yZSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTA1LDcgKzQ4MSw2IEBAIHZv
aWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnJlbW92ZVRpbGUoQ29vcmRpbmF0ZWRMYXllcklEIGxheWVy
SUQsIHVpbnQzMl90IHRpbGVJRCkKIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnVwZGF0ZVRpbGUo
Q29vcmRpbmF0ZWRMYXllcklEIGxheWVySUQsIHVpbnQzMl90IHRpbGVJRCwgY29uc3QgVGlsZVVw
ZGF0ZSYgdXBkYXRlKQogewogICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyID0gbGF5ZXJCeUlEKGxh
eWVySUQpOwotICAgIEFTU0VSVChsYXllcik7CiAgICAgUmVmUHRyPENvb3JkaW5hdGVkQmFja2lu
Z1N0b3JlPiBiYWNraW5nU3RvcmUgPSBnZXRCYWNraW5nU3RvcmUobGF5ZXIpOwogICAgIEFTU0VS
VChiYWNraW5nU3RvcmUpOwogICAgIGJhY2tpbmdTdG9yZS0+dXBkYXRlVGlsZSh0aWxlSUQsIHVw
ZGF0ZS5zb3VyY2VSZWN0LCB1cGRhdGUudGlsZVJlY3QsIHVwZGF0ZS5zdXJmYWNlLCB1cGRhdGUu
b2Zmc2V0KTsKQEAgLTYxNCw3ICs1ODksNyBAQCB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjplbnN1
cmVSb290TGF5ZXIoKQogICAgIGlmIChtX3Jvb3RMYXllcikKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgbV9yb290TGF5ZXIgPSBjcmVhdGVMYXllcihJbnZhbGlkQ29vcmRpbmF0ZWRMYXllcklEKTsK
KyAgICBtX3Jvb3RMYXllciA9IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZSgwLCB0aGlzKTsKICAgICBt
X3Jvb3RMYXllci0+c2V0TWFza3NUb0JvdW5kcyhmYWxzZSk7CiAgICAgbV9yb290TGF5ZXItPnNl
dERyYXdzQ29udGVudChmYWxzZSk7CiAgICAgbV9yb290TGF5ZXItPnNldEFuY2hvclBvaW50KEZs
b2F0UG9pbnQzRCgwLCAwLCAwKSk7CkBAIC02NzcsOCArNjUyLDYgQEAgdm9pZCBMYXllclRyZWVS
ZW5kZXJlcjo6cHVyZ2VCYWNraW5nU3RvcmVzKCkKIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnNl
dExheWVyQW5pbWF0aW9ucyhDb29yZGluYXRlZExheWVySUQgaWQsIGNvbnN0IEdyYXBoaWNzTGF5
ZXJBbmltYXRpb25zJiBhbmltYXRpb25zKQogewogICAgIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyKiBsYXllciA9IHRvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIobGF5ZXJCeUlEKGlkKSk7
Ci0gICAgaWYgKCFsYXllcikKLSAgICAgICAgcmV0dXJuOwogI2lmIEVOQUJMRShDU1NfU0hBREVS
UykKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFuaW1hdGlvbnMuYW5pbWF0aW9ucygpLnNp
emUoKTsgKytpKSB7CiAgICAgICAgIGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiBrZXlmcmFtZXMg
PSBhbmltYXRpb25zLmFuaW1hdGlvbnMoKS5hdChpKS5rZXlmcmFtZXMoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJl
bmRlcmVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9M
YXllclRyZWVSZW5kZXJlci5oCmluZGV4IDY5YjgxYTQ5YmJiMTE0NzU1NjA0YjdhYmRjYzIxYTU4
ZWU1NDc0ZTMuLjM1MTZkMThiMzMxYTBjMjU0OTNmNmQ1ZDdmMmM2ZWQxYmE3MDFmNjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVy
VHJlZVJlbmRlcmVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaApAQCAtODcsNiArODcsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBwdXJnZUdMUmVzb3VyY2VzKCk7CiAgICAgdm9pZCBzZXRBY3RpdmUoYm9vbCk7CiAK
KyAgICB2b2lkIGNyZWF0ZUxheWVyKENvb3JkaW5hdGVkTGF5ZXJJRCk7CiAgICAgdm9pZCBkZWxl
dGVMYXllcihDb29yZGluYXRlZExheWVySUQpOwogICAgIHZvaWQgc2V0Um9vdExheWVySUQoQ29v
cmRpbmF0ZWRMYXllcklEKTsKICAgICB2b2lkIHNldExheWVyQ2hpbGRyZW4oQ29vcmRpbmF0ZWRM
YXllcklELCBjb25zdCBWZWN0b3I8Q29vcmRpbmF0ZWRMYXllcklEPiYpOwpAQCAtMTE4LDkgKzEx
OSwxMiBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBQYXNzT3duUHRyPFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXI+IGNyZWF0ZUxheWVyKENvb3JkaW5hdGVkTGF5ZXJJRCk7Ci0KLSAg
ICBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiBsYXllckJ5SUQoQ29vcmRpbmF0ZWRMYXllcklEIGlk
KSB7IHJldHVybiAoaWQgPT0gSW52YWxpZENvb3JkaW5hdGVkTGF5ZXJJRCkgPyAwIDogbV9sYXll
cnMuZ2V0KGlkKTsgfQorICAgIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIGxheWVyQnlJRChDb29y
ZGluYXRlZExheWVySUQgaWQpCisgICAgeworICAgICAgICBBU1NFUlQobV9sYXllcnMuY29udGFp
bnMoaWQpKTsKKyAgICAgICAgQVNTRVJUKGlkICE9IEludmFsaWRDb29yZGluYXRlZExheWVySUQp
OworICAgICAgICByZXR1cm4gbV9sYXllcnMuZ2V0KGlkKTsKKyAgICB9CiAgICAgV2ViQ29yZTo6
R3JhcGhpY3NMYXllciogcm9vdExheWVyKCkgeyByZXR1cm4gbV9yb290TGF5ZXIuZ2V0KCk7IH0K
IAogICAgIHZvaWQgc3luY1JlbW90ZUNvbnRlbnQoKTsKQEAgLTE0Miw3ICsxNDYsNiBAQCBwcml2
YXRlOgogICAgIHZvaWQgYXNzaWduSW1hZ2VCYWNraW5nVG9MYXllcihXZWJDb3JlOjpHcmFwaGlj
c0xheWVyKiwgQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCk7CiAgICAgdm9pZCByZW1vdmVSZWxl
YXNlZEltYWdlQmFja2luZ3NJZk5lZWRlZCgpOwogICAgIHZvaWQgZW5zdXJlUm9vdExheWVyKCk7
Ci0gICAgV2ViQ29yZTo6R3JhcGhpY3NMYXllciogZW5zdXJlTGF5ZXIoQ29vcmRpbmF0ZWRMYXll
cklEKTsKICAgICB2b2lkIGNvbW1pdFBlbmRpbmdCYWNraW5nU3RvcmVPcGVyYXRpb25zKCk7CiAK
ICAgICBDb29yZGluYXRlZEJhY2tpbmdTdG9yZSogZ2V0QmFja2luZ1N0b3JlKFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCmluZGV4IGY4YTVhNGI3ZGY5MmFkNGQyODI2MzBkYjhh
YmFkYWE3OTdhNDljOWQuLmI2ZGRjNjRjNzIwNDhlYzQ1MmQzZGMxOTQ0MTkxZWNhNjFiMmU0YWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0LmNwcApAQCAtMjc0LDYgKzI3NCw4IEBAIGJvb2wgQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0OjpmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoKQogCiAgICAgVGVtcG9yYXJ5Q2hhbmdl
PGJvb2w+IHByb3RlY3RvcihtX2lzRmx1c2hpbmdMYXllckNoYW5nZXMsIHRydWUpOwogCisgICAg
Y3JlYXRlQ29tcG9zaXRpbmdMYXllcnMoKTsKKwogICAgIGluaXRpYWxpemVSb290Q29tcG9zaXRp
bmdMYXllcklmTmVlZGVkKCk7CiAKICAgICBtX3Jvb3RMYXllci0+Zmx1c2hDb21wb3NpdGluZ1N0
YXRlRm9yVGhpc0xheWVyT25seSgpOwpAQCAtMjg1LDkgKzI4Nyw3IEBAIGJvb2wgQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0OjpmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoKQogCiAgICAgZmx1c2hQ
ZW5kaW5nSW1hZ2VCYWNraW5nQ2hhbmdlcygpOwogCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtX2RldGFjaGVkTGF5ZXJzLnNpemUoKTsgKytpKQotICAgICAgICBtX3dlYlBhZ2UtPnNlbmQo
TWVzc2FnZXM6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpEZWxldGVDb21wb3NpdGlu
Z0xheWVyKG1fZGV0YWNoZWRMYXllcnNbaV0pKTsKLSAgICBtX2RldGFjaGVkTGF5ZXJzLmNsZWFy
KCk7CisgICAgZGVsZXRlQ29tcG9zaXRpbmdMYXllcnMoKTsKIAogICAgIGlmIChtX3Nob3VsZFN5
bmNGcmFtZSkgewogICAgICAgICBkaWRTeW5jID0gdHJ1ZTsKQEAgLTMwOCw2ICszMDgsMzMgQEAg
Ym9vbCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcygp
CiAgICAgcmV0dXJuIGRpZFN5bmM7CiB9CiAKK3ZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
OjpjcmVhdGVDb21wb3NpdGluZ0xheWVycygpCit7CisgICAgaWYgKG1fYXR0YWNoZWRMYXllcnMu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1fYXR0YWNoZWRMYXllcnMuc2l6ZSgpOyArK2kpCisgICAgICAgIG1fd2ViUGFnZS0+c2VuZChN
ZXNzYWdlczo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OkNyZWF0ZUNvbXBvc2l0aW5n
TGF5ZXIobV9hdHRhY2hlZExheWVyc1tpXSkpOworICAgIG1fYXR0YWNoZWRMYXllcnMuY2xlYXIo
KTsKKyAgICBtX3Nob3VsZFN5bmNGcmFtZSA9IHRydWU7Cit9CisKK3ZvaWQgQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0OjpkZWxldGVDb21wb3NpdGluZ0xheWVycygpCit7CisgICAgaWYgKG1fZGV0
YWNoZWRMYXllcnMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9pc1B1
cmdpbmcpIHsKKyAgICAgICAgbV9kZXRhY2hlZExheWVycy5jbGVhcigpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2RldGFjaGVkTGF5ZXJz
LnNpemUoKTsgKytpKQorICAgICAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OkNvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpEZWxldGVDb21wb3NpdGluZ0xheWVyKG1fZGV0YWNoZWRM
YXllcnNbaV0pKTsKKyAgICBtX2RldGFjaGVkTGF5ZXJzLmNsZWFyKCk7CisgICAgbV9zaG91bGRT
eW5jRnJhbWUgPSB0cnVlOworfQorCiB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6aW5p
dGlhbGl6ZVJvb3RDb21wb3NpdGluZ0xheWVySWZOZWVkZWQoKQogewogICAgIGlmIChtX2RpZElu
aXRpYWxpemVSb290Q29tcG9zaXRpbmdMYXllcikKQEAgLTQyNyw3ICs0NTQsNiBAQCB2b2lkIENv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6ZGlzY29ubmVjdEN1c3RvbUZpbHRlclByb2dyYW1zKCkK
IHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpkZXRhY2hMYXllcihDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXIqIGxheWVyKQogewogICAgIG1fcmVnaXN0ZXJlZExheWVycy5yZW1vdmUobGF5
ZXIpOwotICAgIG1fc2hvdWxkU3luY0ZyYW1lID0gdHJ1ZTsKICAgICBtX2RldGFjaGVkTGF5ZXJz
LmFwcGVuZChsYXllci0+aWQoKSk7CiAgICAgc2NoZWR1bGVMYXllckZsdXNoKCk7CiB9CkBAIC02
NDcsOCArNjczLDEwIEBAIFBhc3NPd25QdHI8R3JhcGhpY3NMYXllcj4gQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0OjpjcmVhdGVHcmFwaGljc0xheWVyKEdyYXBoaWNzCiAgICAgQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyKiBsYXllciA9IG5ldyBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIoY2xpZW50
KTsKICAgICBsYXllci0+c2V0Q29vcmRpbmF0b3IodGhpcyk7CiAgICAgbV9yZWdpc3RlcmVkTGF5
ZXJzLmFkZChsYXllcik7CisgICAgbV9hdHRhY2hlZExheWVycy5hcHBlbmQobGF5ZXItPmlkKCkp
OwogICAgIGxheWVyLT5zZXRDb250ZW50c1NjYWxlKG1fY29udGVudHNTY2FsZSk7CiAgICAgbGF5
ZXItPnNldE5lZWRzVmlzaWJsZVJlY3RBZGp1c3RtZW50KCk7CisgICAgc2NoZWR1bGVMYXllckZs
dXNoKCk7CiAgICAgcmV0dXJuIGFkb3B0UHRyKGxheWVyKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaAppbmRleCA4OGM2
ZWI0YWI2ZDYyNzYxNjlhYWI5OTEwYjQ2M2M0NmVjYTNjY2Q2Li5lNzU5MTZjZDQxNDljYjFiMjJi
ZGRiMmFlZTllNWJmNjY1NTMzNDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3Qu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaApAQCAtMTQwLDYgKzE0MCw4IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBjcmVhdGVQYWdlT3ZlcmxheUxheWVyKCk7CiAgICAgdm9pZCBkZXN0cm95
UGFnZU92ZXJsYXlMYXllcigpOwogICAgIGJvb2wgZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCk7
CisgICAgdm9pZCBjcmVhdGVDb21wb3NpdGluZ0xheWVycygpOworICAgIHZvaWQgZGVsZXRlQ29t
cG9zaXRpbmdMYXllcnMoKTsKICAgICB2b2lkIGNhbmNlbFBlbmRpbmdMYXllckZsdXNoKCk7CiAg
ICAgdm9pZCBwZXJmb3JtU2NoZWR1bGVkTGF5ZXJGbHVzaCgpOwogICAgIHZvaWQgZGlkUGVyZm9y
bVNjaGVkdWxlZExheWVyRmx1c2goKTsKQEAgLTE3Myw2ICsxNzUsNyBAQCBwcml2YXRlOgogICAg
IE93blB0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyPiBtX3BhZ2VPdmVybGF5TGF5ZXI7CiAKICAg
ICBIYXNoU2V0PFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcio+IG1fcmVnaXN0ZXJl
ZExheWVyczsKKyAgICBWZWN0b3I8Q29vcmRpbmF0ZWRMYXllcklEPiBtX2F0dGFjaGVkTGF5ZXJz
OwogICAgIFZlY3RvcjxDb29yZGluYXRlZExheWVySUQ+IG1fZGV0YWNoZWRMYXllcnM7CiAgICAg
dHlwZWRlZiBIYXNoTWFwPENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQsIFJlZlB0cjxDb29yZGlu
YXRlZEltYWdlQmFja2luZz4gPiBJbWFnZUJhY2tpbmdNYXA7CiAgICAgSW1hZ2VCYWNraW5nTWFw
IG1faW1hZ2VCYWNraW5nczsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179837</attachid>
            <date>2012-12-17 16:55:28 -0800</date>
            <delta_ts>2012-12-17 19:04:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104990-20121218095242.patch</filename>
            <type>text/plain</type>
            <size>18696</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3OTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNTBhMDk2Njc5MTAwZjU2
MTExOGFjOGI1ZWM1ZmM3ZjI5Y2UxZWU5Yi4uODMzOTE0ZDhjZjFhZGQ1ZDQ2NGExNzRhMTEyMmE0
MzM3ZWRmZGU2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEyLTEyLTE3ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIENvb3JkaW5h
dGVkIEdyYXBoaWNzOiBNYW5hZ2UgdGhlIGxpZmVjeWNsZSBvZiBDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIgZXhwbGljaXRseS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwNDk5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEN1cnJlbnRseSwgV2ViIFByb2Nlc3MgZG9lcyBub3Qgc2VuZCBhIGxheWVyIGNy
ZWF0aW9uIG1lc3NhZ2UgdG8gVUkgUHJvY2Vzcywgc28KKyAgICAgICAgTGF5ZXJUcmVlUmVuZGVy
ZXIgY3JlYXRlcyBHcmFwaGljc0xheWVyIGxhemlseS4gV2UgbmVlZCB0byBkZWxpYmVyYXRpdmVs
eSBkZWNpZGUKKyAgICAgICAgd2hlbiB3ZSBjYW4gY3JlYXRlIGxheWVyIGxhemlseSwgYW5kIGl0
IGlzIGhhcmQgdG8gdW5kZXJzdGFuZCB0aGUgbGlmZWN5Y2xlIG9mCisgICAgICAgIEdyYXBoaWNz
TGF5ZXIuIFRoaXMgcGF0Y2ggbWFuYWdlcyB0aGUgbGlmZWN5Y2xlIG9mIGxheWVyIGV4cGxpY2l0
bHksIGFuZCBpdAorICAgICAgICBpbmNyZWFzZXMgcmVhZGFiaWxpdHkuCisKKyAgICAgICAgVGhp
cyBpcyBpbiBwcmVwYXJhdGlvbiBmb3IgcmVmYWN0b3JpbmcgVGV4dHVyZU1hcHBlciB0byB3b3Jr
IGluIGFuIGFjdG9yIG1vZGVsCisgICAgICAgIChodHRwOi8vd2Via2l0Lm9yZy9iLzEwMzg1NCku
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExh
eWVyVHJlZUhvc3RQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdFByb3h5OjpjcmVhdGVDb21wb3NpdGluZ0xheWVyKToKKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0UHJveHkuaDoKKyAgICAgICAgKENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExh
eWVyVHJlZUhvc3RQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRp
bmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Okxh
eWVyVHJlZVJlbmRlcmVyOjpjcmVhdGVDYW52YXMpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRy
ZWVSZW5kZXJlcjo6ZGVzdHJveUNhbnZhcyk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJl
bmRlcmVyOjpzZXRMYXllckNoaWxkcmVuKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVu
ZGVyZXI6OnNldExheWVyRmlsdGVycyk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRl
cmVyOjpzZXRMYXllclN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6
OmNyZWF0ZUxheWVyKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVy
VHJlZVJlbmRlcmVyOjpkZWxldGVMYXllcik6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJl
bmRlcmVyOjpzZXRSb290TGF5ZXJJRCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRl
cmVyOjpjcmVhdGVUaWxlKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OnJl
bW92ZVRpbGUpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6dXBkYXRlVGls
ZSk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjplbnN1cmVSb290TGF5ZXIp
OgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6c2V0TGF5ZXJBbmltYXRpb25z
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5k
ZXJlci5oOgorICAgICAgICAoTGF5ZXJUcmVlUmVuZGVyZXIpOgorICAgICAgICAoV2ViS2l0OjpM
YXllclRyZWVSZW5kZXJlcjo6bGF5ZXJCeUlEKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmZsdXNoUGVuZGluZ0xheWVy
Q2hhbmdlcyk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y3Jl
YXRlQ29tcG9zaXRpbmdMYXllcnMpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktp
dDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpkZWxldGVDb21wb3NpdGluZ0xheWVycyk6Cisg
ICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6ZGV0YWNoTGF5ZXIpOgor
ICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNyZWF0ZUdyYXBoaWNz
TGF5ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oOgorCiAyMDEyLTEyLTEzICBIdWFuZyBEb25nc3Vu
ZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCiAgICAgICAgIENvb3JkaW5hdGVkIEdyYXBo
aWNzOiBSZWZhY3RvciBUaWxlZEJhY2tpbmdTdG9yZSBjb2RlIGluIENvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dFByb3h5LmNwcAppbmRleCBhMTJmNDE0ZDg1YmJhNjcxNWMxNmEzNzM0N2M0YzA0NWZlMTc5OTJh
Li5iYWE4ZjY1MjNkZWJmZGViYmM0ZTUyMmI0NzVlMTRjYzE4ZmQyZWI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExh
eWVyVHJlZUhvc3RQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3BwCkBAIC05NSw2
ICs5NSwxMSBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpyZW1vdmVVcGRh
dGVBdGxhcyh1aW50MzJfdCBhdGxhc0lEKQogICAgIG1fc3VyZmFjZXMucmVtb3ZlKGF0bGFzSUQp
OwogfQogCit2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpjcmVhdGVDb21wb3Np
dGluZ0xheWVyKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCkKK3sKKyAgICBkaXNwYXRjaFVwZGF0ZShi
aW5kKCZMYXllclRyZWVSZW5kZXJlcjo6Y3JlYXRlTGF5ZXIsIG1fcmVuZGVyZXIuZ2V0KCksIGlk
KSk7Cit9CisKIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OmRlbGV0ZUNvbXBv
c2l0aW5nTGF5ZXIoQ29vcmRpbmF0ZWRMYXllcklEIGlkKQogewogICAgIGRpc3BhdGNoVXBkYXRl
KGJpbmQoJkxheWVyVHJlZVJlbmRlcmVyOjpkZWxldGVMYXllciwgbV9yZW5kZXJlci5nZXQoKSwg
aWQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94
eS5oCmluZGV4IDE1NWFjMWExMDJiZWUzMjIyNzM0M2FjMzY4M2VmMDc4M2IwZDQ5YWQuLjlkZmIy
N2JiYTRhZDczNTFlNjRiOWVhNjJkYTEwNjRiYTgyMTk3MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaApAQCAtNjEsNiArNjEsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBjcmVhdGVDdXN0b21GaWx0ZXJQcm9ncmFtKGludCBpZCwgY29uc3Qg
V2ViQ29yZTo6Q3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8mKTsKICAgICB2b2lkIHJlbW92ZUN1c3Rv
bUZpbHRlclByb2dyYW0oaW50IGlkKTsKICNlbmRpZgorICAgIHZvaWQgY3JlYXRlQ29tcG9zaXRp
bmdMYXllcihDb29yZGluYXRlZExheWVySUQpOwogICAgIHZvaWQgZGVsZXRlQ29tcG9zaXRpbmdM
YXllcihDb29yZGluYXRlZExheWVySUQpOwogICAgIHZvaWQgc2V0Um9vdENvbXBvc2l0aW5nTGF5
ZXIoQ29vcmRpbmF0ZWRMYXllcklEKTsKICAgICB2b2lkIHNldENvbnRlbnRzU2l6ZShjb25zdCBX
ZWJDb3JlOjpGbG9hdFNpemUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5Lm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkubWVzc2FnZXMuaW4KaW5kZXggODFhZDMyYTYzYmQy
YTJkMDEzY2Y4M2VmNGZkMjVlZGQxYjhlZDEyMy4uMTM3ZGFkODA3NTAwZjU1ZTU5ZDI2YzI3YzFk
ZWRiYTQ5YzU1MDhhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0UHJveHkubWVzc2FnZXMuaW4KQEAgLTI5LDYgKzI5LDcgQEAgbWVz
c2FnZXMgLT4gQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkgewogICAgIFJlbW92ZUN1c3Rv
bUZpbHRlclByb2dyYW0oaW50IGlkKQogI2VuZGlmCiAgICAgU2V0Um9vdENvbXBvc2l0aW5nTGF5
ZXIodWludDMyX3QgaWQpCisgICAgQ3JlYXRlQ29tcG9zaXRpbmdMYXllcih1aW50MzJfdCBpZCkK
ICAgICBEZWxldGVDb21wb3NpdGluZ0xheWVyKHVpbnQzMl90IGlkKQogICAgIENyZWF0ZVRpbGVG
b3JMYXllcih1aW50MzJfdCBsYXllcklELCB1aW50MzJfdCB0aWxlSUQsIFdlYkNvcmU6OkludFJl
Y3QgdGlsZVJlY3QsIFdlYktpdDo6U3VyZmFjZVVwZGF0ZUluZm8gdXBkYXRlSW5mbykKICAgICBV
cGRhdGVUaWxlRm9yTGF5ZXIodWludDMyX3QgbGF5ZXJJRCwgdWludDMyX3QgdGlsZUlELCBXZWJD
b3JlOjpJbnRSZWN0IHRpbGVSZWN0LCBXZWJLaXQ6OlN1cmZhY2VVcGRhdGVJbmZvIHVwZGF0ZUlu
Zm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFw
aGljcy9MYXllclRyZWVSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29v
cmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5jcHAKaW5kZXggMWE5ZjUxZGE5N2Fh
ZGQ5NmQ5NWQ0NWJiNGJlZDEwYzU1YTQ0M2IyMi4uMDE2YWMyNDY0YWViNjM1ZmNiZjBlYWQyOTdk
YzU5ZjE4NmM3MDMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcApAQCAt
ODksMTMgKzg5LDYgQEAgTGF5ZXJUcmVlUmVuZGVyZXI6On5MYXllclRyZWVSZW5kZXJlcigpCiB7
CiB9CiAKLVBhc3NPd25QdHI8R3JhcGhpY3NMYXllcj4gTGF5ZXJUcmVlUmVuZGVyZXI6OmNyZWF0
ZUxheWVyKENvb3JkaW5hdGVkTGF5ZXJJRCkKLXsKLSAgICBHcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlciogbmV3TGF5ZXIgPSBuZXcgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIodGhpcyk7Ci0g
ICAgbmV3TGF5ZXItPnNldEhhc093bkJhY2tpbmdTdG9yZShmYWxzZSk7Ci0gICAgcmV0dXJuIGFk
b3B0UHRyKG5ld0xheWVyKTsKLX0KLQogdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6cGFpbnRUb0N1
cnJlbnRHTENvbnRleHQoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgZmxvYXQg
b3BhY2l0eSwgY29uc3QgRmxvYXRSZWN0JiBjbGlwUmVjdCwgVGV4dHVyZU1hcHBlcjo6UGFpbnRG
bGFncyBQYWludEZsYWdzKQogewogICAgIGlmICghbV90ZXh0dXJlTWFwcGVyKSB7CkBAIC0yMzEs
NyArMjI0LDYgQEAgdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6Y3JlYXRlQ2FudmFzKENvb3JkaW5h
dGVkTGF5ZXJJRCBpZCwgY29uc3QgV2ViQ29yZTo6SW50U2kKIHsKICAgICBBU1NFUlQobV90ZXh0
dXJlTWFwcGVyKTsKICAgICBHcmFwaGljc0xheWVyKiBsYXllciA9IGxheWVyQnlJRChpZCk7Ci0g
ICAgQVNTRVJUKGxheWVyKTsKICAgICBBU1NFUlQoIW1fc3VyZmFjZUJhY2tpbmdTdG9yZXMuY29u
dGFpbnMoaWQpKTsKIAogICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9y
ZT4gY2FudmFzQmFja2luZ1N0b3JlKFRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlOjpj
cmVhdGUoKSk7CkBAIC0yNTYsNyArMjQ4LDYgQEAgdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6ZGVz
dHJveUNhbnZhcyhDb29yZGluYXRlZExheWVySUQgaWQpCiB7CiAgICAgQVNTRVJUKG1fdGV4dHVy
ZU1hcHBlcik7CiAgICAgR3JhcGhpY3NMYXllciogbGF5ZXIgPSBsYXllckJ5SUQoaWQpOwotICAg
IEFTU0VSVChsYXllcik7CiAgICAgQVNTRVJUKG1fc3VyZmFjZUJhY2tpbmdTdG9yZXMuY29udGFp
bnMoaWQpKTsKIAogICAgIG1fc3VyZmFjZUJhY2tpbmdTdG9yZXMucmVtb3ZlKGlkKTsKQEAgLTI2
NiwxNyArMjU3LDEyIEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OmRlc3Ryb3lDYW52YXMoQ29v
cmRpbmF0ZWRMYXllcklEIGlkKQogCiB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpzZXRMYXllckNo
aWxkcmVuKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCwgY29uc3QgVmVjdG9yPENvb3JkaW5hdGVkTGF5
ZXJJRD4mIGNoaWxkSURzKQogewotICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyID0gZW5zdXJlTGF5
ZXIoaWQpOworICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyID0gbGF5ZXJCeUlEKGlkKTsKICAgICBW
ZWN0b3I8R3JhcGhpY3NMYXllcio+IGNoaWxkcmVuOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBjaGlsZElEcy5zaXplKCk7ICsraSkgewogICAgICAgICBDb29yZGluYXRlZExheWVySUQg
Y2hpbGRJRCA9IGNoaWxkSURzW2ldOwogICAgICAgICBHcmFwaGljc0xheWVyKiBjaGlsZCA9IGxh
eWVyQnlJRChjaGlsZElEKTsKLSAgICAgICAgaWYgKCFjaGlsZCkgewotICAgICAgICAgICAgT3du
UHRyPEdyYXBoaWNzTGF5ZXIqPiBuZXdDaGlsZCA9IGNyZWF0ZUxheWVyKGNoaWxkSUQpOwotICAg
ICAgICAgICAgY2hpbGQgPSBuZXdDaGlsZC5nZXQoKTsKLSAgICAgICAgICAgIG1fbGF5ZXJzLmFk
ZChjaGlsZElELCBuZXdDaGlsZC5yZWxlYXNlKCkpOwotICAgICAgICB9CiAgICAgICAgIGNoaWxk
cmVuLmFwcGVuZChjaGlsZCk7CiAgICAgfQogICAgIGxheWVyLT5zZXRDaGlsZHJlbihjaGlsZHJl
bik7CkBAIC0yODUsNyArMjcxLDcgQEAgdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6c2V0TGF5ZXJD
aGlsZHJlbihDb29yZGluYXRlZExheWVySUQgaWQsIGNvbnN0IFZlY3RvcjxDb28KICNpZiBFTkFC
TEUoQ1NTX0ZJTFRFUlMpCiB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpzZXRMYXllckZpbHRlcnMo
Q29vcmRpbmF0ZWRMYXllcklEIGlkLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQog
ewotICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyID0gZW5zdXJlTGF5ZXIoaWQpOworICAgIEdyYXBo
aWNzTGF5ZXIqIGxheWVyID0gbGF5ZXJCeUlEKGlkKTsKIAogI2lmIEVOQUJMRShDU1NfU0hBREVS
UykKICAgICBpbmplY3RDYWNoZWRDdXN0b21GaWx0ZXJQcm9ncmFtcyhmaWx0ZXJzKTsKQEAgLTMy
OSwxMCArMzE1LDEwIEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnJlbW92ZUN1c3RvbUZpbHRl
clByb2dyYW0oaW50IGlkKQogdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6c2V0TGF5ZXJTdGF0ZShD
b29yZGluYXRlZExheWVySUQgaWQsIGNvbnN0IENvb3JkaW5hdGVkTGF5ZXJJbmZvJiBsYXllcklu
Zm8pCiB7CiAgICAgQVNTRVJUKG1fcm9vdExheWVySUQgIT0gSW52YWxpZENvb3JkaW5hdGVkTGF5
ZXJJRCk7Ci0gICAgR3JhcGhpY3NMYXllciogbGF5ZXIgPSBlbnN1cmVMYXllcihpZCk7CisgICAg
R3JhcGhpY3NMYXllciogbGF5ZXIgPSBsYXllckJ5SUQoaWQpOwogCi0gICAgbGF5ZXItPnNldFJl
cGxpY2F0ZWRCeUxheWVyKGxheWVyQnlJRChsYXllckluZm8ucmVwbGljYSkpOwotICAgIGxheWVy
LT5zZXRNYXNrTGF5ZXIobGF5ZXJCeUlEKGxheWVySW5mby5tYXNrKSk7CisgICAgbGF5ZXItPnNl
dFJlcGxpY2F0ZWRCeUxheWVyKChsYXllckluZm8ucmVwbGljYSAhPSBJbnZhbGlkQ29vcmRpbmF0
ZWRMYXllcklEKSA/IGxheWVyQnlJRChsYXllckluZm8ucmVwbGljYSkgOiAwKTsKKyAgICBsYXll
ci0+c2V0TWFza0xheWVyKChsYXllckluZm8ubWFzayAhPSBJbnZhbGlkQ29vcmRpbmF0ZWRMYXll
cklEKSA/IGxheWVyQnlJRChsYXllckluZm8ubWFzaykgOiAwKTsKIAogICAgIGxheWVyLT5zZXRB
bmNob3JQb2ludChsYXllckluZm8uYW5jaG9yUG9pbnQpOwogICAgIGxheWVyLT5zZXRQb3NpdGlv
bihsYXllckluZm8ucG9zKTsKQEAgLTM2MiwxMSArMzQ4LDE3IEBAIHZvaWQgTGF5ZXJUcmVlUmVu
ZGVyZXI6OnNldExheWVyU3RhdGUoQ29vcmRpbmF0ZWRMYXllcklEIGlkLCBjb25zdCBDb29yZGlu
YXRlZExhCiAgICAgbGF5ZXItPnNldFByZXNlcnZlczNEKGxheWVySW5mby5wcmVzZXJ2ZXMzRCk7
CiB9CiAKK3ZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OmNyZWF0ZUxheWVyKENvb3JkaW5hdGVkTGF5
ZXJJRCBpZCkKK3sKKyAgICBPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllcj4gbmV3TGF5ZXIg
PSBHcmFwaGljc0xheWVyOjpjcmVhdGUoMCAvKiBmYWN0b3J5ICovLCB0aGlzKTsKKyAgICB0b0dy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKG5ld0xheWVyLmdldCgpKS0+c2V0SGFzT3duQmFja2lu
Z1N0b3JlKGZhbHNlKTsKKyAgICBtX2xheWVycy5hZGQoaWQsIG5ld0xheWVyLnJlbGVhc2UoKSk7
Cit9CisKIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OmRlbGV0ZUxheWVyKENvb3JkaW5hdGVkTGF5
ZXJJRCBsYXllcklEKQogewogICAgIE93blB0cjxHcmFwaGljc0xheWVyPiBsYXllciA9IG1fbGF5
ZXJzLnRha2UobGF5ZXJJRCk7Ci0gICAgaWYgKCFsYXllcikKLSAgICAgICAgcmV0dXJuOworICAg
IEFTU0VSVChsYXllcik7CiAKICAgICBsYXllci0+cmVtb3ZlRnJvbVBhcmVudCgpOwogICAgIG1f
cGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzLnJlbW92ZSh0b1RleHR1cmVNYXBwZXJMYXllcihsYXll
ci5nZXQoKSkpOwpAQCAtMzc2LDIwICszNjgsNiBAQCB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpk
ZWxldGVMYXllcihDb29yZGluYXRlZExheWVySUQgbGF5ZXJJRCkKICNlbmRpZgogfQogCi0KLVdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXIqIExheWVyVHJlZVJlbmRlcmVyOjplbnN1cmVMYXllcihDb29y
ZGluYXRlZExheWVySUQgaWQpCi17Ci0gICAgTGF5ZXJNYXA6Oml0ZXJhdG9yIGl0ID0gbV9sYXll
cnMuZmluZChpZCk7Ci0gICAgaWYgKGl0ICE9IG1fbGF5ZXJzLmVuZCgpKQotICAgICAgICByZXR1
cm4gaXQtPnZhbHVlLmdldCgpOwotCi0gICAgT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI+
IG5ld0xheWVyID0gY3JlYXRlTGF5ZXIoaWQpOwotICAgIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIq
IGxheWVyID0gbmV3TGF5ZXIuZ2V0KCk7Ci0gICAgbV9sYXllcnMuYWRkKGlkLCBuZXdMYXllci5y
ZWxlYXNlKCkpOwotCi0gICAgcmV0dXJuIGxheWVyOwotfQotCiB2b2lkIExheWVyVHJlZVJlbmRl
cmVyOjpzZXRSb290TGF5ZXJJRChDb29yZGluYXRlZExheWVySUQgbGF5ZXJJRCkKIHsKICAgICBB
U1NFUlQobGF5ZXJJRCAhPSBJbnZhbGlkQ29vcmRpbmF0ZWRMYXllcklEKTsKQEAgLTM5OCw3ICsz
NzYsNyBAQCB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpzZXRSb290TGF5ZXJJRChDb29yZGluYXRl
ZExheWVySUQgbGF5ZXJJRCkKICAgICBtX3Jvb3RMYXllcklEID0gbGF5ZXJJRDsKICAgICBtX3Jv
b3RMYXllci0+cmVtb3ZlQWxsQ2hpbGRyZW4oKTsKIAotICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVy
ID0gZW5zdXJlTGF5ZXIobGF5ZXJJRCk7CisgICAgR3JhcGhpY3NMYXllciogbGF5ZXIgPSBsYXll
ckJ5SUQobGF5ZXJJRCk7CiAgICAgbV9yb290TGF5ZXItPmFkZENoaWxkKGxheWVyKTsKIH0KIApA
QCAtNDgyLDcgKzQ2MCw2IEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnJlc2V0QmFja2luZ1N0
b3JlU2l6ZVRvTGF5ZXJTaXplKEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzCiB2b2lkIExheWVyVHJl
ZVJlbmRlcmVyOjpjcmVhdGVUaWxlKENvb3JkaW5hdGVkTGF5ZXJJRCBsYXllcklELCB1aW50MzJf
dCB0aWxlSUQsIGZsb2F0IHNjYWxlKQogewogICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyID0gbGF5
ZXJCeUlEKGxheWVySUQpOwotICAgIEFTU0VSVChsYXllcik7CiAgICAgQ29vcmRpbmF0ZWRCYWNr
aW5nU3RvcmUqIGJhY2tpbmdTdG9yZSA9IGdldEJhY2tpbmdTdG9yZShsYXllcik7CiAgICAgQVNT
RVJUKGJhY2tpbmdTdG9yZSk7CiAgICAgYmFja2luZ1N0b3JlLT5jcmVhdGVUaWxlKHRpbGVJRCwg
c2NhbGUpOwpAQCAtNDkyLDcgKzQ2OSw2IEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OmNyZWF0
ZVRpbGUoQ29vcmRpbmF0ZWRMYXllcklEIGxheWVySUQsIHVpbnQzMl90IHRpbGVJRCwKIHZvaWQg
TGF5ZXJUcmVlUmVuZGVyZXI6OnJlbW92ZVRpbGUoQ29vcmRpbmF0ZWRMYXllcklEIGxheWVySUQs
IHVpbnQzMl90IHRpbGVJRCkKIHsKICAgICBHcmFwaGljc0xheWVyKiBsYXllciA9IGxheWVyQnlJ
RChsYXllcklEKTsKLSAgICBBU1NFUlQobGF5ZXIpOwogICAgIENvb3JkaW5hdGVkQmFja2luZ1N0
b3JlKiBiYWNraW5nU3RvcmUgPSBnZXRCYWNraW5nU3RvcmUobGF5ZXIpOwogICAgIGlmICghYmFj
a2luZ1N0b3JlKQogICAgICAgICByZXR1cm47CkBAIC01MDUsNyArNDgxLDYgQEAgdm9pZCBMYXll
clRyZWVSZW5kZXJlcjo6cmVtb3ZlVGlsZShDb29yZGluYXRlZExheWVySUQgbGF5ZXJJRCwgdWlu
dDMyX3QgdGlsZUlEKQogdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6dXBkYXRlVGlsZShDb29yZGlu
YXRlZExheWVySUQgbGF5ZXJJRCwgdWludDMyX3QgdGlsZUlELCBjb25zdCBUaWxlVXBkYXRlJiB1
cGRhdGUpCiB7CiAgICAgR3JhcGhpY3NMYXllciogbGF5ZXIgPSBsYXllckJ5SUQobGF5ZXJJRCk7
Ci0gICAgQVNTRVJUKGxheWVyKTsKICAgICBSZWZQdHI8Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU+
IGJhY2tpbmdTdG9yZSA9IGdldEJhY2tpbmdTdG9yZShsYXllcik7CiAgICAgQVNTRVJUKGJhY2tp
bmdTdG9yZSk7CiAgICAgYmFja2luZ1N0b3JlLT51cGRhdGVUaWxlKHRpbGVJRCwgdXBkYXRlLnNv
dXJjZVJlY3QsIHVwZGF0ZS50aWxlUmVjdCwgdXBkYXRlLnN1cmZhY2UsIHVwZGF0ZS5vZmZzZXQp
OwpAQCAtNjE0LDcgKzU4OSw3IEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OmVuc3VyZVJvb3RM
YXllcigpCiAgICAgaWYgKG1fcm9vdExheWVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Jv
b3RMYXllciA9IGNyZWF0ZUxheWVyKEludmFsaWRDb29yZGluYXRlZExheWVySUQpOworICAgIG1f
cm9vdExheWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKDAgLyogZmFjdG9yeSAqLywgdGhpcyk7
CiAgICAgbV9yb290TGF5ZXItPnNldE1hc2tzVG9Cb3VuZHMoZmFsc2UpOwogICAgIG1fcm9vdExh
eWVyLT5zZXREcmF3c0NvbnRlbnQoZmFsc2UpOwogICAgIG1fcm9vdExheWVyLT5zZXRBbmNob3JQ
b2ludChGbG9hdFBvaW50M0QoMCwgMCwgMCkpOwpAQCAtNjc3LDggKzY1Miw2IEBAIHZvaWQgTGF5
ZXJUcmVlUmVuZGVyZXI6OnB1cmdlQmFja2luZ1N0b3JlcygpCiB2b2lkIExheWVyVHJlZVJlbmRl
cmVyOjpzZXRMYXllckFuaW1hdGlvbnMoQ29vcmRpbmF0ZWRMYXllcklEIGlkLCBjb25zdCBHcmFw
aGljc0xheWVyQW5pbWF0aW9ucyYgYW5pbWF0aW9ucykKIHsKICAgICBHcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlciogbGF5ZXIgPSB0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKGxheWVyQnlJ
RChpZCkpOwotICAgIGlmICghbGF5ZXIpCi0gICAgICAgIHJldHVybjsKICNpZiBFTkFCTEUoQ1NT
X1NIQURFUlMpCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhbmltYXRpb25zLmFuaW1hdGlv
bnMoKS5zaXplKCk7ICsraSkgewogICAgICAgICBjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYga2V5
ZnJhbWVzID0gYW5pbWF0aW9ucy5hbmltYXRpb25zKCkuYXQoaSkua2V5ZnJhbWVzKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXll
clRyZWVSZW5kZXJlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaAppbmRleCA2OWI4MWE0OWJiYjExNDc1NTYwNGI3YWJk
Y2MyMWE1OGVlNTQ3NGUzLi4zNTE2ZDE4YjMzMWEwYzI1NDkzZjZkNWQ3ZjJjNmVkMWJhNzAxZjYw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9MYXllclRyZWVSZW5kZXJlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29y
ZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmgKQEAgLTg3LDYgKzg3LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgcHVyZ2VHTFJlc291cmNlcygpOwogICAgIHZvaWQgc2V0QWN0aXZlKGJv
b2wpOwogCisgICAgdm9pZCBjcmVhdGVMYXllcihDb29yZGluYXRlZExheWVySUQpOwogICAgIHZv
aWQgZGVsZXRlTGF5ZXIoQ29vcmRpbmF0ZWRMYXllcklEKTsKICAgICB2b2lkIHNldFJvb3RMYXll
cklEKENvb3JkaW5hdGVkTGF5ZXJJRCk7CiAgICAgdm9pZCBzZXRMYXllckNoaWxkcmVuKENvb3Jk
aW5hdGVkTGF5ZXJJRCwgY29uc3QgVmVjdG9yPENvb3JkaW5hdGVkTGF5ZXJJRD4mKTsKQEAgLTEx
OCw5ICsxMTksMTIgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgUGFzc093blB0
cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyPiBjcmVhdGVMYXllcihDb29yZGluYXRlZExheWVySUQp
OwotCi0gICAgV2ViQ29yZTo6R3JhcGhpY3NMYXllciogbGF5ZXJCeUlEKENvb3JkaW5hdGVkTGF5
ZXJJRCBpZCkgeyByZXR1cm4gKGlkID09IEludmFsaWRDb29yZGluYXRlZExheWVySUQpID8gMCA6
IG1fbGF5ZXJzLmdldChpZCk7IH0KKyAgICBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiBsYXllckJ5
SUQoQ29vcmRpbmF0ZWRMYXllcklEIGlkKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fbGF5ZXJz
LmNvbnRhaW5zKGlkKSk7CisgICAgICAgIEFTU0VSVChpZCAhPSBJbnZhbGlkQ29vcmRpbmF0ZWRM
YXllcklEKTsKKyAgICAgICAgcmV0dXJuIG1fbGF5ZXJzLmdldChpZCk7CisgICAgfQogICAgIFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXIqIHJvb3RMYXllcigpIHsgcmV0dXJuIG1fcm9vdExheWVyLmdl
dCgpOyB9CiAKICAgICB2b2lkIHN5bmNSZW1vdGVDb250ZW50KCk7CkBAIC0xNDIsNyArMTQ2LDYg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGFzc2lnbkltYWdlQmFja2luZ1RvTGF5ZXIoV2ViQ29yZTo6
R3JhcGhpY3NMYXllciosIENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQpOwogICAgIHZvaWQgcmVt
b3ZlUmVsZWFzZWRJbWFnZUJhY2tpbmdzSWZOZWVkZWQoKTsKICAgICB2b2lkIGVuc3VyZVJvb3RM
YXllcigpOwotICAgIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIGVuc3VyZUxheWVyKENvb3JkaW5h
dGVkTGF5ZXJJRCk7CiAgICAgdm9pZCBjb21taXRQZW5kaW5nQmFja2luZ1N0b3JlT3BlcmF0aW9u
cygpOwogCiAgICAgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUqIGdldEJhY2tpbmdTdG9yZShXZWJD
b3JlOjpHcmFwaGljc0xheWVyKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3Qu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAppbmRleCA0ODQ0NDUwYzk4Zjk0OTU0MDU3
NWZjNDhlYTBiMTE5MGQzMTA4YTZmLi4wODdmOTRiNjk5OGIyMTQ5MTJkOTZjMWY5NTFjYmMxYmI1
MjlmMDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTI2OSw2ICsyNjksOCBAQCBib29sIENvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdDo6Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCkKIAogICAgIFRlbXBvcmFy
eUNoYW5nZTxib29sPiBwcm90ZWN0b3IobV9pc0ZsdXNoaW5nTGF5ZXJDaGFuZ2VzLCB0cnVlKTsK
IAorICAgIGNyZWF0ZUNvbXBvc2l0aW5nTGF5ZXJzKCk7CisKICAgICBpbml0aWFsaXplUm9vdENv
bXBvc2l0aW5nTGF5ZXJJZk5lZWRlZCgpOwogCiAgICAgbV9yb290TGF5ZXItPmZsdXNoQ29tcG9z
aXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKTsKQEAgLTI4MCw5ICsyODIsNyBAQCBib29sIENv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCkKIAogICAg
IGZsdXNoUGVuZGluZ0ltYWdlQmFja2luZ0NoYW5nZXMoKTsKIAotICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbV9kZXRhY2hlZExheWVycy5zaXplKCk7ICsraSkKLSAgICAgICAgbV93ZWJQYWdl
LT5zZW5kKE1lc3NhZ2VzOjpDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6RGVsZXRlQ29t
cG9zaXRpbmdMYXllcihtX2RldGFjaGVkTGF5ZXJzW2ldKSk7Ci0gICAgbV9kZXRhY2hlZExheWVy
cy5jbGVhcigpOworICAgIGRlbGV0ZUNvbXBvc2l0aW5nTGF5ZXJzKCk7CiAKICAgICBpZiAobV9z
aG91bGRTeW5jRnJhbWUpIHsKICAgICAgICAgZGlkU3luYyA9IHRydWU7CkBAIC0zMDMsNiArMzAz
LDMzIEBAIGJvb2wgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpmbHVzaFBlbmRpbmdMYXllckNo
YW5nZXMoKQogICAgIHJldHVybiBkaWRTeW5jOwogfQogCit2b2lkIENvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdDo6Y3JlYXRlQ29tcG9zaXRpbmdMYXllcnMoKQoreworICAgIGlmIChtX2xheWVyc1Rv
Q3JlYXRlLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtX2xheWVyc1RvQ3JlYXRlLnNpemUoKTsgKytpKQorICAgICAgICBtX3dlYlBhZ2Ut
PnNlbmQoTWVzc2FnZXM6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpDcmVhdGVDb21w
b3NpdGluZ0xheWVyKG1fbGF5ZXJzVG9DcmVhdGVbaV0pKTsKKyAgICBtX2xheWVyc1RvQ3JlYXRl
LmNsZWFyKCk7CisgICAgbV9zaG91bGRTeW5jRnJhbWUgPSB0cnVlOworfQorCit2b2lkIENvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdDo6ZGVsZXRlQ29tcG9zaXRpbmdMYXllcnMoKQoreworICAgIGlm
IChtX2xheWVyc1RvRGVsZXRlLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYg
KG1faXNQdXJnaW5nKSB7CisgICAgICAgIG1fbGF5ZXJzVG9EZWxldGUuY2xlYXIoKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9sYXllcnNU
b0RlbGV0ZS5zaXplKCk7ICsraSkKKyAgICAgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpD
b29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6RGVsZXRlQ29tcG9zaXRpbmdMYXllcihtX2xh
eWVyc1RvRGVsZXRlW2ldKSk7CisgICAgbV9sYXllcnNUb0RlbGV0ZS5jbGVhcigpOworICAgIG1f
c2hvdWxkU3luY0ZyYW1lID0gdHJ1ZTsKK30KKwogdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhv
c3Q6OmluaXRpYWxpemVSb290Q29tcG9zaXRpbmdMYXllcklmTmVlZGVkKCkKIHsKICAgICBpZiAo
bV9kaWRJbml0aWFsaXplUm9vdENvbXBvc2l0aW5nTGF5ZXIpCkBAIC00MjIsOCArNDQ5LDcgQEAg
dm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRpc2Nvbm5lY3RDdXN0b21GaWx0ZXJQcm9n
cmFtcygpCiB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6ZGV0YWNoTGF5ZXIoQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyKiBsYXllcikKIHsKICAgICBtX3JlZ2lzdGVyZWRMYXllcnMucmVt
b3ZlKGxheWVyKTsKLSAgICBtX3Nob3VsZFN5bmNGcmFtZSA9IHRydWU7Ci0gICAgbV9kZXRhY2hl
ZExheWVycy5hcHBlbmQobGF5ZXItPmlkKCkpOworICAgIG1fbGF5ZXJzVG9EZWxldGUuYXBwZW5k
KGxheWVyLT5pZCgpKTsKICAgICBzY2hlZHVsZUxheWVyRmx1c2goKTsKIH0KIApAQCAtNjM3LDgg
KzY2MywxMCBAQCBQYXNzT3duUHRyPEdyYXBoaWNzTGF5ZXI+IENvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdDo6Y3JlYXRlR3JhcGhpY3NMYXllcihHcmFwaGljcwogICAgIENvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllciogbGF5ZXIgPSBuZXcgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKGNsaWVudCk7CiAg
ICAgbGF5ZXItPnNldENvb3JkaW5hdG9yKHRoaXMpOwogICAgIG1fcmVnaXN0ZXJlZExheWVycy5h
ZGQobGF5ZXIpOworICAgIG1fbGF5ZXJzVG9DcmVhdGUuYXBwZW5kKGxheWVyLT5pZCgpKTsKICAg
ICBsYXllci0+c2V0Q29udGVudHNTY2FsZShtX2NvbnRlbnRzU2NhbGUpOwogICAgIGxheWVyLT5z
ZXROZWVkc1Zpc2libGVSZWN0QWRqdXN0bWVudCgpOworICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgp
OwogICAgIHJldHVybiBhZG9wdFB0cihsYXllcik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKaW5kZXggMzNmZWMwN2Vh
YzhjNTNlYjJiZGJiNTg0NWMwNTdkYTM2ZTdmNTE3Zi4uNDgxOGVkOWYwMDBmOWI4NDhkZWFmNmEy
NjMxYjllNzYyMDhhNmJmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKQEAgLTE0MCw2ICsxNDAsOCBAQCBwcml2YXRlOgog
ICAgIHZvaWQgY3JlYXRlUGFnZU92ZXJsYXlMYXllcigpOwogICAgIHZvaWQgZGVzdHJveVBhZ2VP
dmVybGF5TGF5ZXIoKTsKICAgICBib29sIGZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcygpOworICAg
IHZvaWQgY3JlYXRlQ29tcG9zaXRpbmdMYXllcnMoKTsKKyAgICB2b2lkIGRlbGV0ZUNvbXBvc2l0
aW5nTGF5ZXJzKCk7CiAgICAgdm9pZCBjYW5jZWxQZW5kaW5nTGF5ZXJGbHVzaCgpOwogICAgIHZv
aWQgcGVyZm9ybVNjaGVkdWxlZExheWVyRmx1c2goKTsKICAgICB2b2lkIGRpZFBlcmZvcm1TY2hl
ZHVsZWRMYXllckZsdXNoKCk7CkBAIC0xNzMsNyArMTc1LDggQEAgcHJpdmF0ZToKICAgICBPd25Q
dHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllcj4gbV9wYWdlT3ZlcmxheUxheWVyOwogCiAgICAgSGFz
aFNldDxXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqPiBtX3JlZ2lzdGVyZWRMYXll
cnM7Ci0gICAgVmVjdG9yPENvb3JkaW5hdGVkTGF5ZXJJRD4gbV9kZXRhY2hlZExheWVyczsKKyAg
ICBWZWN0b3I8Q29vcmRpbmF0ZWRMYXllcklEPiBtX2xheWVyc1RvQ3JlYXRlOworICAgIFZlY3Rv
cjxDb29yZGluYXRlZExheWVySUQ+IG1fbGF5ZXJzVG9EZWxldGU7CiAgICAgdHlwZWRlZiBIYXNo
TWFwPENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQsIFJlZlB0cjxDb29yZGluYXRlZEltYWdlQmFj
a2luZz4gPiBJbWFnZUJhY2tpbmdNYXA7CiAgICAgSW1hZ2VCYWNraW5nTWFwIG1faW1hZ2VCYWNr
aW5nczsKICAgICBWZWN0b3I8T3duUHRyPFVwZGF0ZUF0bGFzPiA+IG1fdXBkYXRlQXRsYXNlczsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179858</attachid>
            <date>2012-12-17 19:04:24 -0800</date>
            <delta_ts>2012-12-20 22:44:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104990-20121218120138.patch</filename>
            <type>text/plain</type>
            <size>18650</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3OTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNGE4ZjExZTkyYjM1YWJj
OWVhYjExNWNlMDY1OGE1MWRiMmJkNzRhNy4uYmZiNDkyNTIxNTQ0Y2ZmNDgzZDA5M2ZiZmU2NTIx
NzZjYTgxOTI0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEyLTEyLTE3ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIENvb3JkaW5h
dGVkIEdyYXBoaWNzOiBNYW5hZ2UgdGhlIGxpZmVjeWNsZSBvZiBDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIgZXhwbGljaXRseS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwNDk5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEN1cnJlbnRseSwgV2ViIFByb2Nlc3MgZG9lcyBub3Qgc2VuZCBhIGxheWVyIGNy
ZWF0aW9uIG1lc3NhZ2UgdG8gVUkgUHJvY2Vzcywgc28KKyAgICAgICAgTGF5ZXJUcmVlUmVuZGVy
ZXIgY3JlYXRlcyBHcmFwaGljc0xheWVyIGxhemlseS4gV2UgbmVlZCB0byBkZWxpYmVyYXRpdmVs
eSBkZWNpZGUKKyAgICAgICAgd2hlbiB3ZSBjYW4gY3JlYXRlIGxheWVyIGxhemlseSwgYW5kIGl0
IGlzIGhhcmQgdG8gdW5kZXJzdGFuZCB0aGUgbGlmZWN5Y2xlIG9mCisgICAgICAgIEdyYXBoaWNz
TGF5ZXIuIFRoaXMgcGF0Y2ggbWFuYWdlcyB0aGUgbGlmZWN5Y2xlIG9mIGxheWVyIGV4cGxpY2l0
bHksIGFuZCBpdAorICAgICAgICBpbmNyZWFzZXMgcmVhZGFiaWxpdHkuCisKKyAgICAgICAgVGhp
cyBpcyBpbiBwcmVwYXJhdGlvbiBmb3IgcmVmYWN0b3JpbmcgVGV4dHVyZU1hcHBlciB0byB3b3Jr
IGluIGFuIGFjdG9yIG1vZGVsCisgICAgICAgIChodHRwOi8vd2Via2l0Lm9yZy9iLzEwMzg1NCku
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExh
eWVyVHJlZUhvc3RQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdFByb3h5OjpjcmVhdGVDb21wb3NpdGluZ0xheWVyKToKKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0UHJveHkuaDoKKyAgICAgICAgKENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExh
eWVyVHJlZUhvc3RQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRp
bmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Okxh
eWVyVHJlZVJlbmRlcmVyOjpjcmVhdGVDYW52YXMpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRy
ZWVSZW5kZXJlcjo6ZGVzdHJveUNhbnZhcyk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJl
bmRlcmVyOjpzZXRMYXllckNoaWxkcmVuKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVu
ZGVyZXI6OnNldExheWVyRmlsdGVycyk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRl
cmVyOjpzZXRMYXllclN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6
OmNyZWF0ZUxheWVyKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVy
VHJlZVJlbmRlcmVyOjpkZWxldGVMYXllcik6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJl
bmRlcmVyOjpzZXRSb290TGF5ZXJJRCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRl
cmVyOjpjcmVhdGVUaWxlKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OnJl
bW92ZVRpbGUpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6dXBkYXRlVGls
ZSk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjplbnN1cmVSb290TGF5ZXIp
OgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6c2V0TGF5ZXJBbmltYXRpb25z
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5k
ZXJlci5oOgorICAgICAgICAoTGF5ZXJUcmVlUmVuZGVyZXIpOgorICAgICAgICAoV2ViS2l0OjpM
YXllclRyZWVSZW5kZXJlcjo6bGF5ZXJCeUlEKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmZsdXNoUGVuZGluZ0xheWVy
Q2hhbmdlcyk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y3Jl
YXRlQ29tcG9zaXRpbmdMYXllcnMpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktp
dDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpkZWxldGVDb21wb3NpdGluZ0xheWVycyk6Cisg
ICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6ZGV0YWNoTGF5ZXIpOgor
ICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNyZWF0ZUdyYXBoaWNz
TGF5ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oOgorCiAyMDEyLTEyLTE3ICBIYWx0b24gSHVvICA8
aGFsdG9uLmh1b0BpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF0gQWRkIGVjb3JlX2ltZl9ldmFz
IHRvIEZpbmRFY29yZS5jbWFrZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0UHJveHkuY3BwCmluZGV4IGExMmY0MTRkODViYmE2NzE1YzE2YTM3MzQ3YzRj
MDQ1ZmUxNzk5MmEuLmJhYThmNjUyM2RlYmZkZWJiYzRlNTIyYjQ3NWUxNGNjMThmZDJlYjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5j
cHAKQEAgLTk1LDYgKzk1LDExIEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6
OnJlbW92ZVVwZGF0ZUF0bGFzKHVpbnQzMl90IGF0bGFzSUQpCiAgICAgbV9zdXJmYWNlcy5yZW1v
dmUoYXRsYXNJRCk7CiB9CiAKK3ZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OmNy
ZWF0ZUNvbXBvc2l0aW5nTGF5ZXIoQ29vcmRpbmF0ZWRMYXllcklEIGlkKQoreworICAgIGRpc3Bh
dGNoVXBkYXRlKGJpbmQoJkxheWVyVHJlZVJlbmRlcmVyOjpjcmVhdGVMYXllciwgbV9yZW5kZXJl
ci5nZXQoKSwgaWQpKTsKK30KKwogdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6
ZGVsZXRlQ29tcG9zaXRpbmdMYXllcihDb29yZGluYXRlZExheWVySUQgaWQpCiB7CiAgICAgZGlz
cGF0Y2hVcGRhdGUoYmluZCgmTGF5ZXJUcmVlUmVuZGVyZXI6OmRlbGV0ZUxheWVyLCBtX3JlbmRl
cmVyLmdldCgpLCBpZCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdFByb3h5LmgKaW5kZXggMTU1YWMxYTEwMmJlZTMyMjI3MzQzYWMzNjgzZWYwNzgzYjBk
NDlhZC4uOWRmYjI3YmJhNGFkNzM1MWU2NGI5ZWE2MmRhMTA2NGJhODIxOTcxMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oCkBAIC02MSw2
ICs2MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNyZWF0ZUN1c3RvbUZpbHRlclByb2dyYW0oaW50
IGlkLCBjb25zdCBXZWJDb3JlOjpDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyYpOwogICAgIHZvaWQg
cmVtb3ZlQ3VzdG9tRmlsdGVyUHJvZ3JhbShpbnQgaWQpOwogI2VuZGlmCisgICAgdm9pZCBjcmVh
dGVDb21wb3NpdGluZ0xheWVyKENvb3JkaW5hdGVkTGF5ZXJJRCk7CiAgICAgdm9pZCBkZWxldGVD
b21wb3NpdGluZ0xheWVyKENvb3JkaW5hdGVkTGF5ZXJJRCk7CiAgICAgdm9pZCBzZXRSb290Q29t
cG9zaXRpbmdMYXllcihDb29yZGluYXRlZExheWVySUQpOwogICAgIHZvaWQgc2V0Q29udGVudHNT
aXplKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
UHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5tZXNzYWdlcy5pbgppbmRleCA4
MWFkMzJhNjNiZDJhMmQwMTNjZjgzZWY0ZmQyNWVkZDFiOGVkMTIzLi4xMzdkYWQ4MDc1MDBmNTVl
NTlkMjZjMjdjMWRlZGJhNDljNTUwOGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjksNiAr
MjksNyBAQCBtZXNzYWdlcyAtPiBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eSB7CiAgICAg
UmVtb3ZlQ3VzdG9tRmlsdGVyUHJvZ3JhbShpbnQgaWQpCiAjZW5kaWYKICAgICBTZXRSb290Q29t
cG9zaXRpbmdMYXllcih1aW50MzJfdCBpZCkKKyAgICBDcmVhdGVDb21wb3NpdGluZ0xheWVyKHVp
bnQzMl90IGlkKQogICAgIERlbGV0ZUNvbXBvc2l0aW5nTGF5ZXIodWludDMyX3QgaWQpCiAgICAg
Q3JlYXRlVGlsZUZvckxheWVyKHVpbnQzMl90IGxheWVySUQsIHVpbnQzMl90IHRpbGVJRCwgV2Vi
Q29yZTo6SW50UmVjdCB0aWxlUmVjdCwgV2ViS2l0OjpTdXJmYWNlVXBkYXRlSW5mbyB1cGRhdGVJ
bmZvKQogICAgIFVwZGF0ZVRpbGVGb3JMYXllcih1aW50MzJfdCBsYXllcklELCB1aW50MzJfdCB0
aWxlSUQsIFdlYkNvcmU6OkludFJlY3QgdGlsZVJlY3QsIFdlYktpdDo6U3VyZmFjZVVwZGF0ZUlu
Zm8gdXBkYXRlSW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29y
ZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcAppbmRleCAx
YTlmNTFkYTk3YWFkZDk2ZDk1ZDQ1YmI0YmVkMTBjNTVhNDQzYjIyLi4wMTZhYzI0NjRhZWI2MzVm
Y2JmMGVhZDI5N2RjNTlmMTg2YzcwMzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVy
ZXIuY3BwCkBAIC04OSwxMyArODksNiBAQCBMYXllclRyZWVSZW5kZXJlcjo6fkxheWVyVHJlZVJl
bmRlcmVyKCkKIHsKIH0KIAotUGFzc093blB0cjxHcmFwaGljc0xheWVyPiBMYXllclRyZWVSZW5k
ZXJlcjo6Y3JlYXRlTGF5ZXIoQ29vcmRpbmF0ZWRMYXllcklEKQotewotICAgIEdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyKiBuZXdMYXllciA9IG5ldyBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
cih0aGlzKTsKLSAgICBuZXdMYXllci0+c2V0SGFzT3duQmFja2luZ1N0b3JlKGZhbHNlKTsKLSAg
ICByZXR1cm4gYWRvcHRQdHIobmV3TGF5ZXIpOwotfQotCiB2b2lkIExheWVyVHJlZVJlbmRlcmVy
OjpwYWludFRvQ3VycmVudEdMQ29udGV4dChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0
cml4LCBmbG9hdCBvcGFjaXR5LCBjb25zdCBGbG9hdFJlY3QmIGNsaXBSZWN0LCBUZXh0dXJlTWFw
cGVyOjpQYWludEZsYWdzIFBhaW50RmxhZ3MpCiB7CiAgICAgaWYgKCFtX3RleHR1cmVNYXBwZXIp
IHsKQEAgLTIzMSw3ICsyMjQsNiBAQCB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpjcmVhdGVDYW52
YXMoQ29vcmRpbmF0ZWRMYXllcklEIGlkLCBjb25zdCBXZWJDb3JlOjpJbnRTaQogewogICAgIEFT
U0VSVChtX3RleHR1cmVNYXBwZXIpOwogICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyID0gbGF5ZXJC
eUlEKGlkKTsKLSAgICBBU1NFUlQobGF5ZXIpOwogICAgIEFTU0VSVCghbV9zdXJmYWNlQmFja2lu
Z1N0b3Jlcy5jb250YWlucyhpZCkpOwogCiAgICAgUmVmUHRyPFRleHR1cmVNYXBwZXJTdXJmYWNl
QmFja2luZ1N0b3JlPiBjYW52YXNCYWNraW5nU3RvcmUoVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNr
aW5nU3RvcmU6OmNyZWF0ZSgpKTsKQEAgLTI1Niw3ICsyNDgsNiBAQCB2b2lkIExheWVyVHJlZVJl
bmRlcmVyOjpkZXN0cm95Q2FudmFzKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCkKIHsKICAgICBBU1NF
UlQobV90ZXh0dXJlTWFwcGVyKTsKICAgICBHcmFwaGljc0xheWVyKiBsYXllciA9IGxheWVyQnlJ
RChpZCk7Ci0gICAgQVNTRVJUKGxheWVyKTsKICAgICBBU1NFUlQobV9zdXJmYWNlQmFja2luZ1N0
b3Jlcy5jb250YWlucyhpZCkpOwogCiAgICAgbV9zdXJmYWNlQmFja2luZ1N0b3Jlcy5yZW1vdmUo
aWQpOwpAQCAtMjY2LDE3ICsyNTcsMTIgQEAgdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6ZGVzdHJv
eUNhbnZhcyhDb29yZGluYXRlZExheWVySUQgaWQpCiAKIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6
OnNldExheWVyQ2hpbGRyZW4oQ29vcmRpbmF0ZWRMYXllcklEIGlkLCBjb25zdCBWZWN0b3I8Q29v
cmRpbmF0ZWRMYXllcklEPiYgY2hpbGRJRHMpCiB7Ci0gICAgR3JhcGhpY3NMYXllciogbGF5ZXIg
PSBlbnN1cmVMYXllcihpZCk7CisgICAgR3JhcGhpY3NMYXllciogbGF5ZXIgPSBsYXllckJ5SUQo
aWQpOwogICAgIFZlY3RvcjxHcmFwaGljc0xheWVyKj4gY2hpbGRyZW47CiAKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGNoaWxkSURzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIENvb3JkaW5h
dGVkTGF5ZXJJRCBjaGlsZElEID0gY2hpbGRJRHNbaV07CiAgICAgICAgIEdyYXBoaWNzTGF5ZXIq
IGNoaWxkID0gbGF5ZXJCeUlEKGNoaWxkSUQpOwotICAgICAgICBpZiAoIWNoaWxkKSB7Ci0gICAg
ICAgICAgICBPd25QdHI8R3JhcGhpY3NMYXllcio+IG5ld0NoaWxkID0gY3JlYXRlTGF5ZXIoY2hp
bGRJRCk7Ci0gICAgICAgICAgICBjaGlsZCA9IG5ld0NoaWxkLmdldCgpOwotICAgICAgICAgICAg
bV9sYXllcnMuYWRkKGNoaWxkSUQsIG5ld0NoaWxkLnJlbGVhc2UoKSk7Ci0gICAgICAgIH0KICAg
ICAgICAgY2hpbGRyZW4uYXBwZW5kKGNoaWxkKTsKICAgICB9CiAgICAgbGF5ZXItPnNldENoaWxk
cmVuKGNoaWxkcmVuKTsKQEAgLTI4NSw3ICsyNzEsNyBAQCB2b2lkIExheWVyVHJlZVJlbmRlcmVy
OjpzZXRMYXllckNoaWxkcmVuKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCwgY29uc3QgVmVjdG9yPENv
bwogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnNldExh
eWVyRmlsdGVycyhDb29yZGluYXRlZExheWVySUQgaWQsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMm
IGZpbHRlcnMpCiB7Ci0gICAgR3JhcGhpY3NMYXllciogbGF5ZXIgPSBlbnN1cmVMYXllcihpZCk7
CisgICAgR3JhcGhpY3NMYXllciogbGF5ZXIgPSBsYXllckJ5SUQoaWQpOwogCiAjaWYgRU5BQkxF
KENTU19TSEFERVJTKQogICAgIGluamVjdENhY2hlZEN1c3RvbUZpbHRlclByb2dyYW1zKGZpbHRl
cnMpOwpAQCAtMzI5LDEwICszMTUsMTAgQEAgdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6cmVtb3Zl
Q3VzdG9tRmlsdGVyUHJvZ3JhbShpbnQgaWQpCiB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpzZXRM
YXllclN0YXRlKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCwgY29uc3QgQ29vcmRpbmF0ZWRMYXllcklu
Zm8mIGxheWVySW5mbykKIHsKICAgICBBU1NFUlQobV9yb290TGF5ZXJJRCAhPSBJbnZhbGlkQ29v
cmRpbmF0ZWRMYXllcklEKTsKLSAgICBHcmFwaGljc0xheWVyKiBsYXllciA9IGVuc3VyZUxheWVy
KGlkKTsKKyAgICBHcmFwaGljc0xheWVyKiBsYXllciA9IGxheWVyQnlJRChpZCk7CiAKLSAgICBs
YXllci0+c2V0UmVwbGljYXRlZEJ5TGF5ZXIobGF5ZXJCeUlEKGxheWVySW5mby5yZXBsaWNhKSk7
Ci0gICAgbGF5ZXItPnNldE1hc2tMYXllcihsYXllckJ5SUQobGF5ZXJJbmZvLm1hc2spKTsKKyAg
ICBsYXllci0+c2V0UmVwbGljYXRlZEJ5TGF5ZXIoKGxheWVySW5mby5yZXBsaWNhICE9IEludmFs
aWRDb29yZGluYXRlZExheWVySUQpID8gbGF5ZXJCeUlEKGxheWVySW5mby5yZXBsaWNhKSA6IDAp
OworICAgIGxheWVyLT5zZXRNYXNrTGF5ZXIoKGxheWVySW5mby5tYXNrICE9IEludmFsaWRDb29y
ZGluYXRlZExheWVySUQpID8gbGF5ZXJCeUlEKGxheWVySW5mby5tYXNrKSA6IDApOwogCiAgICAg
bGF5ZXItPnNldEFuY2hvclBvaW50KGxheWVySW5mby5hbmNob3JQb2ludCk7CiAgICAgbGF5ZXIt
PnNldFBvc2l0aW9uKGxheWVySW5mby5wb3MpOwpAQCAtMzYyLDExICszNDgsMTcgQEAgdm9pZCBM
YXllclRyZWVSZW5kZXJlcjo6c2V0TGF5ZXJTdGF0ZShDb29yZGluYXRlZExheWVySUQgaWQsIGNv
bnN0IENvb3JkaW5hdGVkTGEKICAgICBsYXllci0+c2V0UHJlc2VydmVzM0QobGF5ZXJJbmZvLnBy
ZXNlcnZlczNEKTsKIH0KIAordm9pZCBMYXllclRyZWVSZW5kZXJlcjo6Y3JlYXRlTGF5ZXIoQ29v
cmRpbmF0ZWRMYXllcklEIGlkKQoreworICAgIE93blB0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVy
PiBuZXdMYXllciA9IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZSgwIC8qIGZhY3RvcnkgKi8sIHRoaXMp
OworICAgIHRvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIobmV3TGF5ZXIuZ2V0KCkpLT5zZXRI
YXNPd25CYWNraW5nU3RvcmUoZmFsc2UpOworICAgIG1fbGF5ZXJzLmFkZChpZCwgbmV3TGF5ZXIu
cmVsZWFzZSgpKTsKK30KKwogdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6ZGVsZXRlTGF5ZXIoQ29v
cmRpbmF0ZWRMYXllcklEIGxheWVySUQpCiB7CiAgICAgT3duUHRyPEdyYXBoaWNzTGF5ZXI+IGxh
eWVyID0gbV9sYXllcnMudGFrZShsYXllcklEKTsKLSAgICBpZiAoIWxheWVyKQotICAgICAgICBy
ZXR1cm47CisgICAgQVNTRVJUKGxheWVyKTsKIAogICAgIGxheWVyLT5yZW1vdmVGcm9tUGFyZW50
KCk7CiAgICAgbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMucmVtb3ZlKHRvVGV4dHVyZU1hcHBl
ckxheWVyKGxheWVyLmdldCgpKSk7CkBAIC0zNzYsMjAgKzM2OCw2IEBAIHZvaWQgTGF5ZXJUcmVl
UmVuZGVyZXI6OmRlbGV0ZUxheWVyKENvb3JkaW5hdGVkTGF5ZXJJRCBsYXllcklEKQogI2VuZGlm
CiB9CiAKLQotV2ViQ29yZTo6R3JhcGhpY3NMYXllciogTGF5ZXJUcmVlUmVuZGVyZXI6OmVuc3Vy
ZUxheWVyKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCkKLXsKLSAgICBMYXllck1hcDo6aXRlcmF0b3Ig
aXQgPSBtX2xheWVycy5maW5kKGlkKTsKLSAgICBpZiAoaXQgIT0gbV9sYXllcnMuZW5kKCkpCi0g
ICAgICAgIHJldHVybiBpdC0+dmFsdWUuZ2V0KCk7Ci0KLSAgICBPd25QdHI8V2ViQ29yZTo6R3Jh
cGhpY3NMYXllcj4gbmV3TGF5ZXIgPSBjcmVhdGVMYXllcihpZCk7Ci0gICAgV2ViQ29yZTo6R3Jh
cGhpY3NMYXllciogbGF5ZXIgPSBuZXdMYXllci5nZXQoKTsKLSAgICBtX2xheWVycy5hZGQoaWQs
IG5ld0xheWVyLnJlbGVhc2UoKSk7Ci0KLSAgICByZXR1cm4gbGF5ZXI7Ci19Ci0KIHZvaWQgTGF5
ZXJUcmVlUmVuZGVyZXI6OnNldFJvb3RMYXllcklEKENvb3JkaW5hdGVkTGF5ZXJJRCBsYXllcklE
KQogewogICAgIEFTU0VSVChsYXllcklEICE9IEludmFsaWRDb29yZGluYXRlZExheWVySUQpOwpA
QCAtMzk4LDcgKzM3Niw3IEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnNldFJvb3RMYXllcklE
KENvb3JkaW5hdGVkTGF5ZXJJRCBsYXllcklEKQogICAgIG1fcm9vdExheWVySUQgPSBsYXllcklE
OwogICAgIG1fcm9vdExheWVyLT5yZW1vdmVBbGxDaGlsZHJlbigpOwogCi0gICAgR3JhcGhpY3NM
YXllciogbGF5ZXIgPSBlbnN1cmVMYXllcihsYXllcklEKTsKKyAgICBHcmFwaGljc0xheWVyKiBs
YXllciA9IGxheWVyQnlJRChsYXllcklEKTsKICAgICBtX3Jvb3RMYXllci0+YWRkQ2hpbGQobGF5
ZXIpOwogfQogCkBAIC00ODIsNyArNDYwLDYgQEAgdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6cmVz
ZXRCYWNraW5nU3RvcmVTaXplVG9MYXllclNpemUoR3JhcGhpY3NMYXllciogZ3JhcGhpY3MKIHZv
aWQgTGF5ZXJUcmVlUmVuZGVyZXI6OmNyZWF0ZVRpbGUoQ29vcmRpbmF0ZWRMYXllcklEIGxheWVy
SUQsIHVpbnQzMl90IHRpbGVJRCwgZmxvYXQgc2NhbGUpCiB7CiAgICAgR3JhcGhpY3NMYXllciog
bGF5ZXIgPSBsYXllckJ5SUQobGF5ZXJJRCk7Ci0gICAgQVNTRVJUKGxheWVyKTsKICAgICBDb29y
ZGluYXRlZEJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlID0gZ2V0QmFja2luZ1N0b3JlKGxheWVy
KTsKICAgICBBU1NFUlQoYmFja2luZ1N0b3JlKTsKICAgICBiYWNraW5nU3RvcmUtPmNyZWF0ZVRp
bGUodGlsZUlELCBzY2FsZSk7CkBAIC00OTIsNyArNDY5LDYgQEAgdm9pZCBMYXllclRyZWVSZW5k
ZXJlcjo6Y3JlYXRlVGlsZShDb29yZGluYXRlZExheWVySUQgbGF5ZXJJRCwgdWludDMyX3QgdGls
ZUlELAogdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6cmVtb3ZlVGlsZShDb29yZGluYXRlZExheWVy
SUQgbGF5ZXJJRCwgdWludDMyX3QgdGlsZUlEKQogewogICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVy
ID0gbGF5ZXJCeUlEKGxheWVySUQpOwotICAgIEFTU0VSVChsYXllcik7CiAgICAgQ29vcmRpbmF0
ZWRCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSA9IGdldEJhY2tpbmdTdG9yZShsYXllcik7CiAg
ICAgaWYgKCFiYWNraW5nU3RvcmUpCiAgICAgICAgIHJldHVybjsKQEAgLTUwNSw3ICs0ODEsNiBA
QCB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpyZW1vdmVUaWxlKENvb3JkaW5hdGVkTGF5ZXJJRCBs
YXllcklELCB1aW50MzJfdCB0aWxlSUQpCiB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjp1cGRhdGVU
aWxlKENvb3JkaW5hdGVkTGF5ZXJJRCBsYXllcklELCB1aW50MzJfdCB0aWxlSUQsIGNvbnN0IFRp
bGVVcGRhdGUmIHVwZGF0ZSkKIHsKICAgICBHcmFwaGljc0xheWVyKiBsYXllciA9IGxheWVyQnlJ
RChsYXllcklEKTsKLSAgICBBU1NFUlQobGF5ZXIpOwogICAgIFJlZlB0cjxDb29yZGluYXRlZEJh
Y2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlID0gZ2V0QmFja2luZ1N0b3JlKGxheWVyKTsKICAgICBB
U1NFUlQoYmFja2luZ1N0b3JlKTsKICAgICBiYWNraW5nU3RvcmUtPnVwZGF0ZVRpbGUodGlsZUlE
LCB1cGRhdGUuc291cmNlUmVjdCwgdXBkYXRlLnRpbGVSZWN0LCB1cGRhdGUuc3VyZmFjZSwgdXBk
YXRlLm9mZnNldCk7CkBAIC02MTQsNyArNTg5LDcgQEAgdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6
ZW5zdXJlUm9vdExheWVyKCkKICAgICBpZiAobV9yb290TGF5ZXIpCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1fcm9vdExheWVyID0gY3JlYXRlTGF5ZXIoSW52YWxpZENvb3JkaW5hdGVkTGF5ZXJJ
RCk7CisgICAgbV9yb290TGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUoMCAvKiBmYWN0b3J5
ICovLCB0aGlzKTsKICAgICBtX3Jvb3RMYXllci0+c2V0TWFza3NUb0JvdW5kcyhmYWxzZSk7CiAg
ICAgbV9yb290TGF5ZXItPnNldERyYXdzQ29udGVudChmYWxzZSk7CiAgICAgbV9yb290TGF5ZXIt
PnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQzRCgwLCAwLCAwKSk7CkBAIC02NzcsOCArNjUyLDYg
QEAgdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6cHVyZ2VCYWNraW5nU3RvcmVzKCkKIHZvaWQgTGF5
ZXJUcmVlUmVuZGVyZXI6OnNldExheWVyQW5pbWF0aW9ucyhDb29yZGluYXRlZExheWVySUQgaWQs
IGNvbnN0IEdyYXBoaWNzTGF5ZXJBbmltYXRpb25zJiBhbmltYXRpb25zKQogewogICAgIEdyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyKiBsYXllciA9IHRvR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXIobGF5ZXJCeUlEKGlkKSk7Ci0gICAgaWYgKCFsYXllcikKLSAgICAgICAgcmV0dXJuOwogI2lm
IEVOQUJMRShDU1NfU0hBREVSUykKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFuaW1hdGlv
bnMuYW5pbWF0aW9ucygpLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGNvbnN0IEtleWZyYW1lVmFs
dWVMaXN0JiBrZXlmcmFtZXMgPSBhbmltYXRpb25zLmFuaW1hdGlvbnMoKS5hdChpKS5rZXlmcmFt
ZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdy
YXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29v
cmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5oCmluZGV4IDY5YjgxYTQ5YmJiMTE0
NzU1NjA0YjdhYmRjYzIxYTU4ZWU1NDc0ZTMuLjM1MTZkMThiMzMxYTBjMjU0OTNmNmQ1ZDdmMmM2
ZWQxYmE3MDFmNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGlu
YXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaApAQCAtODcsNiAr
ODcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwdXJnZUdMUmVzb3VyY2VzKCk7CiAgICAgdm9pZCBz
ZXRBY3RpdmUoYm9vbCk7CiAKKyAgICB2b2lkIGNyZWF0ZUxheWVyKENvb3JkaW5hdGVkTGF5ZXJJ
RCk7CiAgICAgdm9pZCBkZWxldGVMYXllcihDb29yZGluYXRlZExheWVySUQpOwogICAgIHZvaWQg
c2V0Um9vdExheWVySUQoQ29vcmRpbmF0ZWRMYXllcklEKTsKICAgICB2b2lkIHNldExheWVyQ2hp
bGRyZW4oQ29vcmRpbmF0ZWRMYXllcklELCBjb25zdCBWZWN0b3I8Q29vcmRpbmF0ZWRMYXllcklE
PiYpOwpAQCAtMTE4LDkgKzExOSwxMiBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAg
ICBQYXNzT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI+IGNyZWF0ZUxheWVyKENvb3JkaW5h
dGVkTGF5ZXJJRCk7Ci0KLSAgICBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiBsYXllckJ5SUQoQ29v
cmRpbmF0ZWRMYXllcklEIGlkKSB7IHJldHVybiAoaWQgPT0gSW52YWxpZENvb3JkaW5hdGVkTGF5
ZXJJRCkgPyAwIDogbV9sYXllcnMuZ2V0KGlkKTsgfQorICAgIFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXIqIGxheWVyQnlJRChDb29yZGluYXRlZExheWVySUQgaWQpCisgICAgeworICAgICAgICBBU1NF
UlQobV9sYXllcnMuY29udGFpbnMoaWQpKTsKKyAgICAgICAgQVNTRVJUKGlkICE9IEludmFsaWRD
b29yZGluYXRlZExheWVySUQpOworICAgICAgICByZXR1cm4gbV9sYXllcnMuZ2V0KGlkKTsKKyAg
ICB9CiAgICAgV2ViQ29yZTo6R3JhcGhpY3NMYXllciogcm9vdExheWVyKCkgeyByZXR1cm4gbV9y
b290TGF5ZXIuZ2V0KCk7IH0KIAogICAgIHZvaWQgc3luY1JlbW90ZUNvbnRlbnQoKTsKQEAgLTE0
Miw3ICsxNDYsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgYXNzaWduSW1hZ2VCYWNraW5nVG9MYXll
cihXZWJDb3JlOjpHcmFwaGljc0xheWVyKiwgQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCk7CiAg
ICAgdm9pZCByZW1vdmVSZWxlYXNlZEltYWdlQmFja2luZ3NJZk5lZWRlZCgpOwogICAgIHZvaWQg
ZW5zdXJlUm9vdExheWVyKCk7Ci0gICAgV2ViQ29yZTo6R3JhcGhpY3NMYXllciogZW5zdXJlTGF5
ZXIoQ29vcmRpbmF0ZWRMYXllcklEKTsKICAgICB2b2lkIGNvbW1pdFBlbmRpbmdCYWNraW5nU3Rv
cmVPcGVyYXRpb25zKCk7CiAKICAgICBDb29yZGluYXRlZEJhY2tpbmdTdG9yZSogZ2V0QmFja2lu
Z1N0b3JlKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCmluZGV4IDQ4NDQ0NTBj
OThmOTQ5NTQwNTc1ZmM0OGVhMGIxMTkwZDMxMDhhNmYuLjA4N2Y5NGI2OTk4YjIxNDkxMmQ5NmMx
Zjk1MWNiYzFiYjUyOWYwMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcApAQCAtMjY5LDYgKzI2OSw4IEBAIGJvb2wg
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoKQogCiAg
ICAgVGVtcG9yYXJ5Q2hhbmdlPGJvb2w+IHByb3RlY3RvcihtX2lzRmx1c2hpbmdMYXllckNoYW5n
ZXMsIHRydWUpOwogCisgICAgY3JlYXRlQ29tcG9zaXRpbmdMYXllcnMoKTsKKwogICAgIGluaXRp
YWxpemVSb290Q29tcG9zaXRpbmdMYXllcklmTmVlZGVkKCk7CiAKICAgICBtX3Jvb3RMYXllci0+
Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpOwpAQCAtMjgwLDkgKzI4Miw3
IEBAIGJvb2wgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpmbHVzaFBlbmRpbmdMYXllckNoYW5n
ZXMoKQogCiAgICAgZmx1c2hQZW5kaW5nSW1hZ2VCYWNraW5nQ2hhbmdlcygpOwogCi0gICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX2RldGFjaGVkTGF5ZXJzLnNpemUoKTsgKytpKQotICAgICAg
ICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5
OjpEZWxldGVDb21wb3NpdGluZ0xheWVyKG1fZGV0YWNoZWRMYXllcnNbaV0pKTsKLSAgICBtX2Rl
dGFjaGVkTGF5ZXJzLmNsZWFyKCk7CisgICAgZGVsZXRlQ29tcG9zaXRpbmdMYXllcnMoKTsKIAog
ICAgIGlmIChtX3Nob3VsZFN5bmNGcmFtZSkgewogICAgICAgICBkaWRTeW5jID0gdHJ1ZTsKQEAg
LTMwMyw2ICszMDMsMzMgQEAgYm9vbCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmZsdXNoUGVu
ZGluZ0xheWVyQ2hhbmdlcygpCiAgICAgcmV0dXJuIGRpZFN5bmM7CiB9CiAKK3ZvaWQgQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0OjpjcmVhdGVDb21wb3NpdGluZ0xheWVycygpCit7CisgICAgaWYg
KG1fbGF5ZXJzVG9DcmVhdGUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1fbGF5ZXJzVG9DcmVhdGUuc2l6ZSgpOyArK2kpCisgICAgICAg
IG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6
OkNyZWF0ZUNvbXBvc2l0aW5nTGF5ZXIobV9sYXllcnNUb0NyZWF0ZVtpXSkpOworICAgIG1fbGF5
ZXJzVG9DcmVhdGUuY2xlYXIoKTsKKyAgICBtX3Nob3VsZFN5bmNGcmFtZSA9IHRydWU7Cit9CisK
K3ZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpkZWxldGVDb21wb3NpdGluZ0xheWVycygp
Cit7CisgICAgaWYgKG1fbGF5ZXJzVG9EZWxldGUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBpZiAobV9pc1B1cmdpbmcpIHsKKyAgICAgICAgbV9sYXllcnNUb0RlbGV0ZS5jbGVh
cigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtX2xheWVyc1RvRGVsZXRlLnNpemUoKTsgKytpKQorICAgICAgICBtX3dlYlBhZ2UtPnNlbmQo
TWVzc2FnZXM6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpEZWxldGVDb21wb3NpdGlu
Z0xheWVyKG1fbGF5ZXJzVG9EZWxldGVbaV0pKTsKKyAgICBtX2xheWVyc1RvRGVsZXRlLmNsZWFy
KCk7CisgICAgbV9zaG91bGRTeW5jRnJhbWUgPSB0cnVlOworfQorCiB2b2lkIENvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdDo6aW5pdGlhbGl6ZVJvb3RDb21wb3NpdGluZ0xheWVySWZOZWVkZWQoKQog
ewogICAgIGlmIChtX2RpZEluaXRpYWxpemVSb290Q29tcG9zaXRpbmdMYXllcikKQEAgLTQyMiw4
ICs0NDksNyBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6ZGlzY29ubmVjdEN1c3Rv
bUZpbHRlclByb2dyYW1zKCkKIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpkZXRhY2hM
YXllcihDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqIGxheWVyKQogewogICAgIG1fcmVnaXN0ZXJl
ZExheWVycy5yZW1vdmUobGF5ZXIpOwotICAgIG1fc2hvdWxkU3luY0ZyYW1lID0gdHJ1ZTsKLSAg
ICBtX2RldGFjaGVkTGF5ZXJzLmFwcGVuZChsYXllci0+aWQoKSk7CisgICAgbV9sYXllcnNUb0Rl
bGV0ZS5hcHBlbmQobGF5ZXItPmlkKCkpOwogICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOwogfQog
CkBAIC02MzcsOCArNjYzLDEwIEBAIFBhc3NPd25QdHI8R3JhcGhpY3NMYXllcj4gQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0OjpjcmVhdGVHcmFwaGljc0xheWVyKEdyYXBoaWNzCiAgICAgQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyKiBsYXllciA9IG5ldyBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIo
Y2xpZW50KTsKICAgICBsYXllci0+c2V0Q29vcmRpbmF0b3IodGhpcyk7CiAgICAgbV9yZWdpc3Rl
cmVkTGF5ZXJzLmFkZChsYXllcik7CisgICAgbV9sYXllcnNUb0NyZWF0ZS5hcHBlbmQobGF5ZXIt
PmlkKCkpOwogICAgIGxheWVyLT5zZXRDb250ZW50c1NjYWxlKG1fY29udGVudHNTY2FsZSk7CiAg
ICAgbGF5ZXItPnNldE5lZWRzVmlzaWJsZVJlY3RBZGp1c3RtZW50KCk7CisgICAgc2NoZWR1bGVM
YXllckZsdXNoKCk7CiAgICAgcmV0dXJuIGFkb3B0UHRyKGxheWVyKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaAppbmRl
eCAzM2ZlYzA3ZWFjOGM1M2ViMmJkYmI1ODQ1YzA1N2RhMzZlN2Y1MTdmLi40ODE4ZWQ5ZjAwMGY5
Yjg0OGRlYWY2YTI2MzFiOWU3NjIwOGE2YmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJl
ZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaApAQCAtMTQwLDYgKzE0MCw4IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVQYWdlT3ZlcmxheUxheWVyKCk7CiAgICAgdm9pZCBk
ZXN0cm95UGFnZU92ZXJsYXlMYXllcigpOwogICAgIGJvb2wgZmx1c2hQZW5kaW5nTGF5ZXJDaGFu
Z2VzKCk7CisgICAgdm9pZCBjcmVhdGVDb21wb3NpdGluZ0xheWVycygpOworICAgIHZvaWQgZGVs
ZXRlQ29tcG9zaXRpbmdMYXllcnMoKTsKICAgICB2b2lkIGNhbmNlbFBlbmRpbmdMYXllckZsdXNo
KCk7CiAgICAgdm9pZCBwZXJmb3JtU2NoZWR1bGVkTGF5ZXJGbHVzaCgpOwogICAgIHZvaWQgZGlk
UGVyZm9ybVNjaGVkdWxlZExheWVyRmx1c2goKTsKQEAgLTE3Myw3ICsxNzUsOCBAQCBwcml2YXRl
OgogICAgIE93blB0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyPiBtX3BhZ2VPdmVybGF5TGF5ZXI7
CiAKICAgICBIYXNoU2V0PFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcio+IG1fcmVn
aXN0ZXJlZExheWVyczsKLSAgICBWZWN0b3I8Q29vcmRpbmF0ZWRMYXllcklEPiBtX2RldGFjaGVk
TGF5ZXJzOworICAgIFZlY3RvcjxDb29yZGluYXRlZExheWVySUQ+IG1fbGF5ZXJzVG9DcmVhdGU7
CisgICAgVmVjdG9yPENvb3JkaW5hdGVkTGF5ZXJJRD4gbV9sYXllcnNUb0RlbGV0ZTsKICAgICB0
eXBlZGVmIEhhc2hNYXA8Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwgUmVmUHRyPENvb3JkaW5h
dGVkSW1hZ2VCYWNraW5nPiA+IEltYWdlQmFja2luZ01hcDsKICAgICBJbWFnZUJhY2tpbmdNYXAg
bV9pbWFnZUJhY2tpbmdzOwogICAgIFZlY3RvcjxPd25QdHI8VXBkYXRlQXRsYXM+ID4gbV91cGRh
dGVBdGxhc2VzOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180485</attachid>
            <date>2012-12-20 22:44:32 -0800</date>
            <delta_ts>2012-12-25 16:41:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104990-20121221154143.patch</filename>
            <type>text/plain</type>
            <size>18992</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4MjQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNDg4NGY2MjRlY2M2YTJh
MTBmMmJjMmJmYWJlY2VhMzdhNjFiZjNiMi4uYzYwMjY2M2ZiY2Y5ODhhOGY4MDAzYWE1ZGVlY2E5
ZWNjMmIzNmQyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUxIEBACiAyMDEyLTEyLTIwICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCisgICAgICAgIENvb3JkaW5h
dGVkIEdyYXBoaWNzOiBNYW5hZ2UgdGhlIGxpZmVjeWNsZSBvZiBDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIgZXhwbGljaXRseS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwNDk5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEN1cnJlbnRseSwgV2ViIFByb2Nlc3MgZG9lcyBub3Qgc2VuZCBhIGxheWVyIGNy
ZWF0aW9uIG1lc3NhZ2UgdG8gVUkgUHJvY2Vzcywgc28KKyAgICAgICAgTGF5ZXJUcmVlUmVuZGVy
ZXIgY3JlYXRlcyBHcmFwaGljc0xheWVyIGxhemlseS4gV2UgbmVlZCB0byBkZWxpYmVyYXRpdmVs
eSBkZWNpZGUKKyAgICAgICAgd2hlbiB3ZSBjYW4gY3JlYXRlIGxheWVyIGxhemlseSwgYW5kIGl0
IGlzIGhhcmQgdG8gdW5kZXJzdGFuZCB0aGUgbGlmZWN5Y2xlIG9mCisgICAgICAgIEdyYXBoaWNz
TGF5ZXIuIFRoaXMgcGF0Y2ggbWFuYWdlcyB0aGUgbGlmZWN5Y2xlIG9mIGxheWVyIGV4cGxpY2l0
bHksIGFuZCBpdAorICAgICAgICBpbmNyZWFzZXMgcmVhZGFiaWxpdHkuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5Ojpj
cmVhdGVDb21wb3NpdGluZ0xheWVyKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHku
aDoKKyAgICAgICAgKENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94
eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9M
YXllclRyZWVSZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVy
OjpjcmVhdGVDYW52YXMpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6ZGVz
dHJveUNhbnZhcyk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjpzZXRMYXll
ckNoaWxkcmVuKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OnNldExheWVy
RmlsdGVycyk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjpzZXRMYXllclN0
YXRlKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OmNyZWF0ZUxheWVyKToK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjpk
ZWxldGVMYXllcik6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjpzZXRSb290
TGF5ZXJJRCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjpjcmVhdGVUaWxl
KToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OnJlbW92ZVRpbGUpOgorICAg
ICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6dXBkYXRlVGlsZSk6CisgICAgICAgIChX
ZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjplbnN1cmVSb290TGF5ZXIpOgorICAgICAgICAoV2Vi
S2l0OjpMYXllclRyZWVSZW5kZXJlcjo6c2V0TGF5ZXJBbmltYXRpb25zKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5oOgorICAgICAg
ICAoTGF5ZXJUcmVlUmVuZGVyZXIpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJl
cjo6bGF5ZXJCeUlEKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpD
b29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcyk6CisgICAg
ICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlQ29tcG9zaXRpbmdM
YXllcnMpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0OjpkZWxldGVDb21wb3NpdGluZ0xheWVycyk6CisgICAgICAgIChXZWJLaXQ6
OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6ZGV0YWNoTGF5ZXIpOgorICAgICAgICAoV2ViS2l0
OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNyZWF0ZUdyYXBoaWNzTGF5ZXIpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdC5oOgorCisyMDEyLTEyLTIwICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNv
bXBhbnkxMDAubmV0PgorCiAgICAgICAgIFJlbW92ZSBHcmFwaGljc0xheWVyOjpzZXRHcmFwaGlj
c0xheWVyRmFjdG9yeSgpLgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTA1NTAzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdFByb3h5LmNwcAppbmRleCBhMTJmNDE0ZDg1YmJhNjcxNWMxNmEzNzM0N2M0YzA0
NWZlMTc5OTJhLi5iYWE4ZjY1MjNkZWJmZGViYmM0ZTUyMmI0NzVlMTRjYzE4ZmQyZWI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3Bw
CkBAIC05NSw2ICs5NSwxMSBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5Ojpy
ZW1vdmVVcGRhdGVBdGxhcyh1aW50MzJfdCBhdGxhc0lEKQogICAgIG1fc3VyZmFjZXMucmVtb3Zl
KGF0bGFzSUQpOwogfQogCit2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpjcmVh
dGVDb21wb3NpdGluZ0xheWVyKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCkKK3sKKyAgICBkaXNwYXRj
aFVwZGF0ZShiaW5kKCZMYXllclRyZWVSZW5kZXJlcjo6Y3JlYXRlTGF5ZXIsIG1fcmVuZGVyZXIu
Z2V0KCksIGlkKSk7Cit9CisKIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OmRl
bGV0ZUNvbXBvc2l0aW5nTGF5ZXIoQ29vcmRpbmF0ZWRMYXllcklEIGlkKQogewogICAgIGRpc3Bh
dGNoVXBkYXRlKGJpbmQoJkxheWVyVHJlZVJlbmRlcmVyOjpkZWxldGVMYXllciwgbV9yZW5kZXJl
ci5nZXQoKSwgaWQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJl
ZUhvc3RQcm94eS5oCmluZGV4IDE1NWFjMWExMDJiZWUzMjIyNzM0M2FjMzY4M2VmMDc4M2IwZDQ5
YWQuLjlkZmIyN2JiYTRhZDczNTFlNjRiOWVhNjJkYTEwNjRiYTgyMTk3MTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaApAQCAtNjEsNiAr
NjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjcmVhdGVDdXN0b21GaWx0ZXJQcm9ncmFtKGludCBp
ZCwgY29uc3QgV2ViQ29yZTo6Q3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8mKTsKICAgICB2b2lkIHJl
bW92ZUN1c3RvbUZpbHRlclByb2dyYW0oaW50IGlkKTsKICNlbmRpZgorICAgIHZvaWQgY3JlYXRl
Q29tcG9zaXRpbmdMYXllcihDb29yZGluYXRlZExheWVySUQpOwogICAgIHZvaWQgZGVsZXRlQ29t
cG9zaXRpbmdMYXllcihDb29yZGluYXRlZExheWVySUQpOwogICAgIHZvaWQgc2V0Um9vdENvbXBv
c2l0aW5nTGF5ZXIoQ29vcmRpbmF0ZWRMYXllcklEKTsKICAgICB2b2lkIHNldENvbnRlbnRzU2l6
ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFBy
b3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkubWVzc2FnZXMuaW4KaW5kZXggODFh
ZDMyYTYzYmQyYTJkMDEzY2Y4M2VmNGZkMjVlZGQxYjhlZDEyMy4uMTM3ZGFkODA3NTAwZjU1ZTU5
ZDI2YzI3YzFkZWRiYTQ5YzU1MDhhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkubWVzc2FnZXMuaW4KQEAgLTI5LDYgKzI5
LDcgQEAgbWVzc2FnZXMgLT4gQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkgewogICAgIFJl
bW92ZUN1c3RvbUZpbHRlclByb2dyYW0oaW50IGlkKQogI2VuZGlmCiAgICAgU2V0Um9vdENvbXBv
c2l0aW5nTGF5ZXIodWludDMyX3QgaWQpCisgICAgQ3JlYXRlQ29tcG9zaXRpbmdMYXllcih1aW50
MzJfdCBpZCkKICAgICBEZWxldGVDb21wb3NpdGluZ0xheWVyKHVpbnQzMl90IGlkKQogICAgIENy
ZWF0ZVRpbGVGb3JMYXllcih1aW50MzJfdCBsYXllcklELCB1aW50MzJfdCB0aWxlSUQsIFdlYkNv
cmU6OkludFJlY3QgdGlsZVJlY3QsIFdlYktpdDo6U3VyZmFjZVVwZGF0ZUluZm8gdXBkYXRlSW5m
bykKICAgICBVcGRhdGVUaWxlRm9yTGF5ZXIodWludDMyX3QgbGF5ZXJJRCwgdWludDMyX3QgdGls
ZUlELCBXZWJDb3JlOjpJbnRSZWN0IHRpbGVSZWN0LCBXZWJLaXQ6OlN1cmZhY2VVcGRhdGVJbmZv
IHVwZGF0ZUluZm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRp
bmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5jcHAKaW5kZXggMWE5
ZjUxZGE5N2FhZGQ5NmQ5NWQ0NWJiNGJlZDEwYzU1YTQ0M2IyMi4uMDE2YWMyNDY0YWViNjM1ZmNi
ZjBlYWQyOTdkYzU5ZjE4NmM3MDMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVy
LmNwcApAQCAtODksMTMgKzg5LDYgQEAgTGF5ZXJUcmVlUmVuZGVyZXI6On5MYXllclRyZWVSZW5k
ZXJlcigpCiB7CiB9CiAKLVBhc3NPd25QdHI8R3JhcGhpY3NMYXllcj4gTGF5ZXJUcmVlUmVuZGVy
ZXI6OmNyZWF0ZUxheWVyKENvb3JkaW5hdGVkTGF5ZXJJRCkKLXsKLSAgICBHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlciogbmV3TGF5ZXIgPSBuZXcgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIo
dGhpcyk7Ci0gICAgbmV3TGF5ZXItPnNldEhhc093bkJhY2tpbmdTdG9yZShmYWxzZSk7Ci0gICAg
cmV0dXJuIGFkb3B0UHRyKG5ld0xheWVyKTsKLX0KLQogdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6
cGFpbnRUb0N1cnJlbnRHTENvbnRleHQoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJp
eCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgRmxvYXRSZWN0JiBjbGlwUmVjdCwgVGV4dHVyZU1hcHBl
cjo6UGFpbnRGbGFncyBQYWludEZsYWdzKQogewogICAgIGlmICghbV90ZXh0dXJlTWFwcGVyKSB7
CkBAIC0yMzEsNyArMjI0LDYgQEAgdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6Y3JlYXRlQ2FudmFz
KENvb3JkaW5hdGVkTGF5ZXJJRCBpZCwgY29uc3QgV2ViQ29yZTo6SW50U2kKIHsKICAgICBBU1NF
UlQobV90ZXh0dXJlTWFwcGVyKTsKICAgICBHcmFwaGljc0xheWVyKiBsYXllciA9IGxheWVyQnlJ
RChpZCk7Ci0gICAgQVNTRVJUKGxheWVyKTsKICAgICBBU1NFUlQoIW1fc3VyZmFjZUJhY2tpbmdT
dG9yZXMuY29udGFpbnMoaWQpKTsKIAogICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVyU3VyZmFjZUJh
Y2tpbmdTdG9yZT4gY2FudmFzQmFja2luZ1N0b3JlKFRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2lu
Z1N0b3JlOjpjcmVhdGUoKSk7CkBAIC0yNTYsNyArMjQ4LDYgQEAgdm9pZCBMYXllclRyZWVSZW5k
ZXJlcjo6ZGVzdHJveUNhbnZhcyhDb29yZGluYXRlZExheWVySUQgaWQpCiB7CiAgICAgQVNTRVJU
KG1fdGV4dHVyZU1hcHBlcik7CiAgICAgR3JhcGhpY3NMYXllciogbGF5ZXIgPSBsYXllckJ5SUQo
aWQpOwotICAgIEFTU0VSVChsYXllcik7CiAgICAgQVNTRVJUKG1fc3VyZmFjZUJhY2tpbmdTdG9y
ZXMuY29udGFpbnMoaWQpKTsKIAogICAgIG1fc3VyZmFjZUJhY2tpbmdTdG9yZXMucmVtb3ZlKGlk
KTsKQEAgLTI2NiwxNyArMjU3LDEyIEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OmRlc3Ryb3lD
YW52YXMoQ29vcmRpbmF0ZWRMYXllcklEIGlkKQogCiB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpz
ZXRMYXllckNoaWxkcmVuKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCwgY29uc3QgVmVjdG9yPENvb3Jk
aW5hdGVkTGF5ZXJJRD4mIGNoaWxkSURzKQogewotICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyID0g
ZW5zdXJlTGF5ZXIoaWQpOworICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyID0gbGF5ZXJCeUlEKGlk
KTsKICAgICBWZWN0b3I8R3JhcGhpY3NMYXllcio+IGNoaWxkcmVuOwogCiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBjaGlsZElEcy5zaXplKCk7ICsraSkgewogICAgICAgICBDb29yZGluYXRl
ZExheWVySUQgY2hpbGRJRCA9IGNoaWxkSURzW2ldOwogICAgICAgICBHcmFwaGljc0xheWVyKiBj
aGlsZCA9IGxheWVyQnlJRChjaGlsZElEKTsKLSAgICAgICAgaWYgKCFjaGlsZCkgewotICAgICAg
ICAgICAgT3duUHRyPEdyYXBoaWNzTGF5ZXIqPiBuZXdDaGlsZCA9IGNyZWF0ZUxheWVyKGNoaWxk
SUQpOwotICAgICAgICAgICAgY2hpbGQgPSBuZXdDaGlsZC5nZXQoKTsKLSAgICAgICAgICAgIG1f
bGF5ZXJzLmFkZChjaGlsZElELCBuZXdDaGlsZC5yZWxlYXNlKCkpOwotICAgICAgICB9CiAgICAg
ICAgIGNoaWxkcmVuLmFwcGVuZChjaGlsZCk7CiAgICAgfQogICAgIGxheWVyLT5zZXRDaGlsZHJl
bihjaGlsZHJlbik7CkBAIC0yODUsNyArMjcxLDcgQEAgdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6
c2V0TGF5ZXJDaGlsZHJlbihDb29yZGluYXRlZExheWVySUQgaWQsIGNvbnN0IFZlY3RvcjxDb28K
ICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpzZXRMYXll
ckZpbHRlcnMoQ29vcmRpbmF0ZWRMYXllcklEIGlkLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBm
aWx0ZXJzKQogewotICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyID0gZW5zdXJlTGF5ZXIoaWQpOwor
ICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyID0gbGF5ZXJCeUlEKGlkKTsKIAogI2lmIEVOQUJMRShD
U1NfU0hBREVSUykKICAgICBpbmplY3RDYWNoZWRDdXN0b21GaWx0ZXJQcm9ncmFtcyhmaWx0ZXJz
KTsKQEAgLTMyOSwxMCArMzE1LDEwIEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnJlbW92ZUN1
c3RvbUZpbHRlclByb2dyYW0oaW50IGlkKQogdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6c2V0TGF5
ZXJTdGF0ZShDb29yZGluYXRlZExheWVySUQgaWQsIGNvbnN0IENvb3JkaW5hdGVkTGF5ZXJJbmZv
JiBsYXllckluZm8pCiB7CiAgICAgQVNTRVJUKG1fcm9vdExheWVySUQgIT0gSW52YWxpZENvb3Jk
aW5hdGVkTGF5ZXJJRCk7Ci0gICAgR3JhcGhpY3NMYXllciogbGF5ZXIgPSBlbnN1cmVMYXllcihp
ZCk7CisgICAgR3JhcGhpY3NMYXllciogbGF5ZXIgPSBsYXllckJ5SUQoaWQpOwogCi0gICAgbGF5
ZXItPnNldFJlcGxpY2F0ZWRCeUxheWVyKGxheWVyQnlJRChsYXllckluZm8ucmVwbGljYSkpOwot
ICAgIGxheWVyLT5zZXRNYXNrTGF5ZXIobGF5ZXJCeUlEKGxheWVySW5mby5tYXNrKSk7CisgICAg
bGF5ZXItPnNldFJlcGxpY2F0ZWRCeUxheWVyKChsYXllckluZm8ucmVwbGljYSAhPSBJbnZhbGlk
Q29vcmRpbmF0ZWRMYXllcklEKSA/IGxheWVyQnlJRChsYXllckluZm8ucmVwbGljYSkgOiAwKTsK
KyAgICBsYXllci0+c2V0TWFza0xheWVyKChsYXllckluZm8ubWFzayAhPSBJbnZhbGlkQ29vcmRp
bmF0ZWRMYXllcklEKSA/IGxheWVyQnlJRChsYXllckluZm8ubWFzaykgOiAwKTsKIAogICAgIGxh
eWVyLT5zZXRBbmNob3JQb2ludChsYXllckluZm8uYW5jaG9yUG9pbnQpOwogICAgIGxheWVyLT5z
ZXRQb3NpdGlvbihsYXllckluZm8ucG9zKTsKQEAgLTM2MiwxMSArMzQ4LDE3IEBAIHZvaWQgTGF5
ZXJUcmVlUmVuZGVyZXI6OnNldExheWVyU3RhdGUoQ29vcmRpbmF0ZWRMYXllcklEIGlkLCBjb25z
dCBDb29yZGluYXRlZExhCiAgICAgbGF5ZXItPnNldFByZXNlcnZlczNEKGxheWVySW5mby5wcmVz
ZXJ2ZXMzRCk7CiB9CiAKK3ZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OmNyZWF0ZUxheWVyKENvb3Jk
aW5hdGVkTGF5ZXJJRCBpZCkKK3sKKyAgICBPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllcj4g
bmV3TGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUoMCAvKiBmYWN0b3J5ICovLCB0aGlzKTsK
KyAgICB0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKG5ld0xheWVyLmdldCgpKS0+c2V0SGFz
T3duQmFja2luZ1N0b3JlKGZhbHNlKTsKKyAgICBtX2xheWVycy5hZGQoaWQsIG5ld0xheWVyLnJl
bGVhc2UoKSk7Cit9CisKIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OmRlbGV0ZUxheWVyKENvb3Jk
aW5hdGVkTGF5ZXJJRCBsYXllcklEKQogewogICAgIE93blB0cjxHcmFwaGljc0xheWVyPiBsYXll
ciA9IG1fbGF5ZXJzLnRha2UobGF5ZXJJRCk7Ci0gICAgaWYgKCFsYXllcikKLSAgICAgICAgcmV0
dXJuOworICAgIEFTU0VSVChsYXllcik7CiAKICAgICBsYXllci0+cmVtb3ZlRnJvbVBhcmVudCgp
OwogICAgIG1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzLnJlbW92ZSh0b1RleHR1cmVNYXBwZXJM
YXllcihsYXllci5nZXQoKSkpOwpAQCAtMzc2LDIwICszNjgsNiBAQCB2b2lkIExheWVyVHJlZVJl
bmRlcmVyOjpkZWxldGVMYXllcihDb29yZGluYXRlZExheWVySUQgbGF5ZXJJRCkKICNlbmRpZgog
fQogCi0KLVdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIExheWVyVHJlZVJlbmRlcmVyOjplbnN1cmVM
YXllcihDb29yZGluYXRlZExheWVySUQgaWQpCi17Ci0gICAgTGF5ZXJNYXA6Oml0ZXJhdG9yIGl0
ID0gbV9sYXllcnMuZmluZChpZCk7Ci0gICAgaWYgKGl0ICE9IG1fbGF5ZXJzLmVuZCgpKQotICAg
ICAgICByZXR1cm4gaXQtPnZhbHVlLmdldCgpOwotCi0gICAgT3duUHRyPFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXI+IG5ld0xheWVyID0gY3JlYXRlTGF5ZXIoaWQpOwotICAgIFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXIqIGxheWVyID0gbmV3TGF5ZXIuZ2V0KCk7Ci0gICAgbV9sYXllcnMuYWRkKGlkLCBu
ZXdMYXllci5yZWxlYXNlKCkpOwotCi0gICAgcmV0dXJuIGxheWVyOwotfQotCiB2b2lkIExheWVy
VHJlZVJlbmRlcmVyOjpzZXRSb290TGF5ZXJJRChDb29yZGluYXRlZExheWVySUQgbGF5ZXJJRCkK
IHsKICAgICBBU1NFUlQobGF5ZXJJRCAhPSBJbnZhbGlkQ29vcmRpbmF0ZWRMYXllcklEKTsKQEAg
LTM5OCw3ICszNzYsNyBAQCB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpzZXRSb290TGF5ZXJJRChD
b29yZGluYXRlZExheWVySUQgbGF5ZXJJRCkKICAgICBtX3Jvb3RMYXllcklEID0gbGF5ZXJJRDsK
ICAgICBtX3Jvb3RMYXllci0+cmVtb3ZlQWxsQ2hpbGRyZW4oKTsKIAotICAgIEdyYXBoaWNzTGF5
ZXIqIGxheWVyID0gZW5zdXJlTGF5ZXIobGF5ZXJJRCk7CisgICAgR3JhcGhpY3NMYXllciogbGF5
ZXIgPSBsYXllckJ5SUQobGF5ZXJJRCk7CiAgICAgbV9yb290TGF5ZXItPmFkZENoaWxkKGxheWVy
KTsKIH0KIApAQCAtNDgyLDcgKzQ2MCw2IEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnJlc2V0
QmFja2luZ1N0b3JlU2l6ZVRvTGF5ZXJTaXplKEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzCiB2b2lk
IExheWVyVHJlZVJlbmRlcmVyOjpjcmVhdGVUaWxlKENvb3JkaW5hdGVkTGF5ZXJJRCBsYXllcklE
LCB1aW50MzJfdCB0aWxlSUQsIGZsb2F0IHNjYWxlKQogewogICAgIEdyYXBoaWNzTGF5ZXIqIGxh
eWVyID0gbGF5ZXJCeUlEKGxheWVySUQpOwotICAgIEFTU0VSVChsYXllcik7CiAgICAgQ29vcmRp
bmF0ZWRCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSA9IGdldEJhY2tpbmdTdG9yZShsYXllcik7
CiAgICAgQVNTRVJUKGJhY2tpbmdTdG9yZSk7CiAgICAgYmFja2luZ1N0b3JlLT5jcmVhdGVUaWxl
KHRpbGVJRCwgc2NhbGUpOwpAQCAtNDkyLDcgKzQ2OSw2IEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVy
ZXI6OmNyZWF0ZVRpbGUoQ29vcmRpbmF0ZWRMYXllcklEIGxheWVySUQsIHVpbnQzMl90IHRpbGVJ
RCwKIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnJlbW92ZVRpbGUoQ29vcmRpbmF0ZWRMYXllcklE
IGxheWVySUQsIHVpbnQzMl90IHRpbGVJRCkKIHsKICAgICBHcmFwaGljc0xheWVyKiBsYXllciA9
IGxheWVyQnlJRChsYXllcklEKTsKLSAgICBBU1NFUlQobGF5ZXIpOwogICAgIENvb3JkaW5hdGVk
QmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUgPSBnZXRCYWNraW5nU3RvcmUobGF5ZXIpOwogICAg
IGlmICghYmFja2luZ1N0b3JlKQogICAgICAgICByZXR1cm47CkBAIC01MDUsNyArNDgxLDYgQEAg
dm9pZCBMYXllclRyZWVSZW5kZXJlcjo6cmVtb3ZlVGlsZShDb29yZGluYXRlZExheWVySUQgbGF5
ZXJJRCwgdWludDMyX3QgdGlsZUlEKQogdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6dXBkYXRlVGls
ZShDb29yZGluYXRlZExheWVySUQgbGF5ZXJJRCwgdWludDMyX3QgdGlsZUlELCBjb25zdCBUaWxl
VXBkYXRlJiB1cGRhdGUpCiB7CiAgICAgR3JhcGhpY3NMYXllciogbGF5ZXIgPSBsYXllckJ5SUQo
bGF5ZXJJRCk7Ci0gICAgQVNTRVJUKGxheWVyKTsKICAgICBSZWZQdHI8Q29vcmRpbmF0ZWRCYWNr
aW5nU3RvcmU+IGJhY2tpbmdTdG9yZSA9IGdldEJhY2tpbmdTdG9yZShsYXllcik7CiAgICAgQVNT
RVJUKGJhY2tpbmdTdG9yZSk7CiAgICAgYmFja2luZ1N0b3JlLT51cGRhdGVUaWxlKHRpbGVJRCwg
dXBkYXRlLnNvdXJjZVJlY3QsIHVwZGF0ZS50aWxlUmVjdCwgdXBkYXRlLnN1cmZhY2UsIHVwZGF0
ZS5vZmZzZXQpOwpAQCAtNjE0LDcgKzU4OSw3IEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OmVu
c3VyZVJvb3RMYXllcigpCiAgICAgaWYgKG1fcm9vdExheWVyKQogICAgICAgICByZXR1cm47CiAK
LSAgICBtX3Jvb3RMYXllciA9IGNyZWF0ZUxheWVyKEludmFsaWRDb29yZGluYXRlZExheWVySUQp
OworICAgIG1fcm9vdExheWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKDAgLyogZmFjdG9yeSAq
LywgdGhpcyk7CiAgICAgbV9yb290TGF5ZXItPnNldE1hc2tzVG9Cb3VuZHMoZmFsc2UpOwogICAg
IG1fcm9vdExheWVyLT5zZXREcmF3c0NvbnRlbnQoZmFsc2UpOwogICAgIG1fcm9vdExheWVyLT5z
ZXRBbmNob3JQb2ludChGbG9hdFBvaW50M0QoMCwgMCwgMCkpOwpAQCAtNjc3LDggKzY1Miw2IEBA
IHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnB1cmdlQmFja2luZ1N0b3JlcygpCiB2b2lkIExheWVy
VHJlZVJlbmRlcmVyOjpzZXRMYXllckFuaW1hdGlvbnMoQ29vcmRpbmF0ZWRMYXllcklEIGlkLCBj
b25zdCBHcmFwaGljc0xheWVyQW5pbWF0aW9ucyYgYW5pbWF0aW9ucykKIHsKICAgICBHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlciogbGF5ZXIgPSB0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
KGxheWVyQnlJRChpZCkpOwotICAgIGlmICghbGF5ZXIpCi0gICAgICAgIHJldHVybjsKICNpZiBF
TkFCTEUoQ1NTX1NIQURFUlMpCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhbmltYXRpb25z
LmFuaW1hdGlvbnMoKS5zaXplKCk7ICsraSkgewogICAgICAgICBjb25zdCBLZXlmcmFtZVZhbHVl
TGlzdCYga2V5ZnJhbWVzID0gYW5pbWF0aW9ucy5hbmltYXRpb25zKCkuYXQoaSkua2V5ZnJhbWVz
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFw
aGljcy9MYXllclRyZWVSZW5kZXJlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaAppbmRleCA2OWI4MWE0OWJiYjExNDc1
NTYwNGI3YWJkY2MyMWE1OGVlNTQ3NGUzLi4zNTE2ZDE4YjMzMWEwYzI1NDkzZjZkNWQ3ZjJjNmVk
MWJhNzAxZjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0
ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmgKQEAgLTg3LDYgKzg3
LDcgQEAgcHVibGljOgogICAgIHZvaWQgcHVyZ2VHTFJlc291cmNlcygpOwogICAgIHZvaWQgc2V0
QWN0aXZlKGJvb2wpOwogCisgICAgdm9pZCBjcmVhdGVMYXllcihDb29yZGluYXRlZExheWVySUQp
OwogICAgIHZvaWQgZGVsZXRlTGF5ZXIoQ29vcmRpbmF0ZWRMYXllcklEKTsKICAgICB2b2lkIHNl
dFJvb3RMYXllcklEKENvb3JkaW5hdGVkTGF5ZXJJRCk7CiAgICAgdm9pZCBzZXRMYXllckNoaWxk
cmVuKENvb3JkaW5hdGVkTGF5ZXJJRCwgY29uc3QgVmVjdG9yPENvb3JkaW5hdGVkTGF5ZXJJRD4m
KTsKQEAgLTExOCw5ICsxMTksMTIgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAg
UGFzc093blB0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyPiBjcmVhdGVMYXllcihDb29yZGluYXRl
ZExheWVySUQpOwotCi0gICAgV2ViQ29yZTo6R3JhcGhpY3NMYXllciogbGF5ZXJCeUlEKENvb3Jk
aW5hdGVkTGF5ZXJJRCBpZCkgeyByZXR1cm4gKGlkID09IEludmFsaWRDb29yZGluYXRlZExheWVy
SUQpID8gMCA6IG1fbGF5ZXJzLmdldChpZCk7IH0KKyAgICBXZWJDb3JlOjpHcmFwaGljc0xheWVy
KiBsYXllckJ5SUQoQ29vcmRpbmF0ZWRMYXllcklEIGlkKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KG1fbGF5ZXJzLmNvbnRhaW5zKGlkKSk7CisgICAgICAgIEFTU0VSVChpZCAhPSBJbnZhbGlkQ29v
cmRpbmF0ZWRMYXllcklEKTsKKyAgICAgICAgcmV0dXJuIG1fbGF5ZXJzLmdldChpZCk7CisgICAg
fQogICAgIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIHJvb3RMYXllcigpIHsgcmV0dXJuIG1fcm9v
dExheWVyLmdldCgpOyB9CiAKICAgICB2b2lkIHN5bmNSZW1vdGVDb250ZW50KCk7CkBAIC0xNDIs
NyArMTQ2LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFzc2lnbkltYWdlQmFja2luZ1RvTGF5ZXIo
V2ViQ29yZTo6R3JhcGhpY3NMYXllciosIENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQpOwogICAg
IHZvaWQgcmVtb3ZlUmVsZWFzZWRJbWFnZUJhY2tpbmdzSWZOZWVkZWQoKTsKICAgICB2b2lkIGVu
c3VyZVJvb3RMYXllcigpOwotICAgIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIGVuc3VyZUxheWVy
KENvb3JkaW5hdGVkTGF5ZXJJRCk7CiAgICAgdm9pZCBjb21taXRQZW5kaW5nQmFja2luZ1N0b3Jl
T3BlcmF0aW9ucygpOwogCiAgICAgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUqIGdldEJhY2tpbmdT
dG9yZShXZWJDb3JlOjpHcmFwaGljc0xheWVyKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVy
VHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAppbmRleCA0ODQ0NDUwYzk4
Zjk0OTU0MDU3NWZjNDhlYTBiMTE5MGQzMTA4YTZmLi5iYjk5NTVlZDgwYmQ0MzUzMTQyMWJkZDE1
NGVmOGMyMWI2YzdiZmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTI2OSw2ICsyNjksOCBAQCBib29sIENv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCkKIAogICAg
IFRlbXBvcmFyeUNoYW5nZTxib29sPiBwcm90ZWN0b3IobV9pc0ZsdXNoaW5nTGF5ZXJDaGFuZ2Vz
LCB0cnVlKTsKIAorICAgIGNyZWF0ZUNvbXBvc2l0aW5nTGF5ZXJzKCk7CisKICAgICBpbml0aWFs
aXplUm9vdENvbXBvc2l0aW5nTGF5ZXJJZk5lZWRlZCgpOwogCiAgICAgbV9yb290TGF5ZXItPmZs
dXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKTsKQEAgLTI4MCw5ICsyODIsNyBA
QCBib29sIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2Vz
KCkKIAogICAgIGZsdXNoUGVuZGluZ0ltYWdlQmFja2luZ0NoYW5nZXMoKTsKIAotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbV9kZXRhY2hlZExheWVycy5zaXplKCk7ICsraSkKLSAgICAgICAg
bV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6
RGVsZXRlQ29tcG9zaXRpbmdMYXllcihtX2RldGFjaGVkTGF5ZXJzW2ldKSk7Ci0gICAgbV9kZXRh
Y2hlZExheWVycy5jbGVhcigpOworICAgIGRlbGV0ZUNvbXBvc2l0aW5nTGF5ZXJzKCk7CiAKICAg
ICBpZiAobV9zaG91bGRTeW5jRnJhbWUpIHsKICAgICAgICAgZGlkU3luYyA9IHRydWU7CkBAIC0z
MDMsNiArMzAzLDQyIEBAIGJvb2wgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpmbHVzaFBlbmRp
bmdMYXllckNoYW5nZXMoKQogICAgIHJldHVybiBkaWRTeW5jOwogfQogCit2b2lkIENvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlQ29tcG9zaXRpbmdMYXllcnMoKQoreworICAgIGlmICht
X2xheWVyc1RvQ3JlYXRlLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gSWYg
YSBsYXllciBnZXRzIGNyZWF0ZWQgYW5kIGRlbGV0ZWQgaW4gdGhlIHNhbWUgY3ljbGUsIHdlIGNh
biBzaW1wbHkgcmVtb3ZlIGl0IGZyb20gbV9sYXllcnNUb0NyZWF0ZSBhbmQgbV9sYXllcnNUb0Rl
bGV0ZS4KKyAgICBmb3IgKGludCBpID0gbV9sYXllcnNUb0NyZWF0ZS5zaXplKCkgLSAxOyBpID49
IDA7IC0taSkgeworICAgICAgICBzaXplX3QgaW5kZXggPSBtX2xheWVyc1RvRGVsZXRlLmZpbmQo
bV9sYXllcnNUb0NyZWF0ZVtpXSk7CisgICAgICAgIGlmIChpbmRleCAhPSBub3RGb3VuZCkgewor
ICAgICAgICAgICAgbV9sYXllcnNUb0NyZWF0ZS5yZW1vdmUoaSk7CisgICAgICAgICAgICBtX2xh
eWVyc1RvRGVsZXRlLnJlbW92ZShpbmRleCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1fbGF5ZXJzVG9DcmVhdGUuc2l6ZSgpOyArK2kpCisgICAgICAg
IG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6
OkNyZWF0ZUNvbXBvc2l0aW5nTGF5ZXIobV9sYXllcnNUb0NyZWF0ZVtpXSkpOworICAgIG1fbGF5
ZXJzVG9DcmVhdGUuY2xlYXIoKTsKKyAgICBtX3Nob3VsZFN5bmNGcmFtZSA9IHRydWU7Cit9CisK
K3ZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpkZWxldGVDb21wb3NpdGluZ0xheWVycygp
Cit7CisgICAgaWYgKG1fbGF5ZXJzVG9EZWxldGUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBpZiAobV9pc1B1cmdpbmcpIHsKKyAgICAgICAgbV9sYXllcnNUb0RlbGV0ZS5jbGVh
cigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtX2xheWVyc1RvRGVsZXRlLnNpemUoKTsgKytpKQorICAgICAgICBtX3dlYlBhZ2UtPnNlbmQo
TWVzc2FnZXM6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpEZWxldGVDb21wb3NpdGlu
Z0xheWVyKG1fbGF5ZXJzVG9EZWxldGVbaV0pKTsKKyAgICBtX2xheWVyc1RvRGVsZXRlLmNsZWFy
KCk7CisgICAgbV9zaG91bGRTeW5jRnJhbWUgPSB0cnVlOworfQorCiB2b2lkIENvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdDo6aW5pdGlhbGl6ZVJvb3RDb21wb3NpdGluZ0xheWVySWZOZWVkZWQoKQog
ewogICAgIGlmIChtX2RpZEluaXRpYWxpemVSb290Q29tcG9zaXRpbmdMYXllcikKQEAgLTQyMiw4
ICs0NTgsNyBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6ZGlzY29ubmVjdEN1c3Rv
bUZpbHRlclByb2dyYW1zKCkKIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpkZXRhY2hM
YXllcihDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqIGxheWVyKQogewogICAgIG1fcmVnaXN0ZXJl
ZExheWVycy5yZW1vdmUobGF5ZXIpOwotICAgIG1fc2hvdWxkU3luY0ZyYW1lID0gdHJ1ZTsKLSAg
ICBtX2RldGFjaGVkTGF5ZXJzLmFwcGVuZChsYXllci0+aWQoKSk7CisgICAgbV9sYXllcnNUb0Rl
bGV0ZS5hcHBlbmQobGF5ZXItPmlkKCkpOwogICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOwogfQog
CkBAIC02MzcsOCArNjcyLDEwIEBAIFBhc3NPd25QdHI8R3JhcGhpY3NMYXllcj4gQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0OjpjcmVhdGVHcmFwaGljc0xheWVyKEdyYXBoaWNzCiAgICAgQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyKiBsYXllciA9IG5ldyBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIo
Y2xpZW50KTsKICAgICBsYXllci0+c2V0Q29vcmRpbmF0b3IodGhpcyk7CiAgICAgbV9yZWdpc3Rl
cmVkTGF5ZXJzLmFkZChsYXllcik7CisgICAgbV9sYXllcnNUb0NyZWF0ZS5hcHBlbmQobGF5ZXIt
PmlkKCkpOwogICAgIGxheWVyLT5zZXRDb250ZW50c1NjYWxlKG1fY29udGVudHNTY2FsZSk7CiAg
ICAgbGF5ZXItPnNldE5lZWRzVmlzaWJsZVJlY3RBZGp1c3RtZW50KCk7CisgICAgc2NoZWR1bGVM
YXllckZsdXNoKCk7CiAgICAgcmV0dXJuIGFkb3B0UHRyKGxheWVyKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaAppbmRl
eCAzM2ZlYzA3ZWFjOGM1M2ViMmJkYmI1ODQ1YzA1N2RhMzZlN2Y1MTdmLi40ODE4ZWQ5ZjAwMGY5
Yjg0OGRlYWY2YTI2MzFiOWU3NjIwOGE2YmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJl
ZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaApAQCAtMTQwLDYgKzE0MCw4IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVQYWdlT3ZlcmxheUxheWVyKCk7CiAgICAgdm9pZCBk
ZXN0cm95UGFnZU92ZXJsYXlMYXllcigpOwogICAgIGJvb2wgZmx1c2hQZW5kaW5nTGF5ZXJDaGFu
Z2VzKCk7CisgICAgdm9pZCBjcmVhdGVDb21wb3NpdGluZ0xheWVycygpOworICAgIHZvaWQgZGVs
ZXRlQ29tcG9zaXRpbmdMYXllcnMoKTsKICAgICB2b2lkIGNhbmNlbFBlbmRpbmdMYXllckZsdXNo
KCk7CiAgICAgdm9pZCBwZXJmb3JtU2NoZWR1bGVkTGF5ZXJGbHVzaCgpOwogICAgIHZvaWQgZGlk
UGVyZm9ybVNjaGVkdWxlZExheWVyRmx1c2goKTsKQEAgLTE3Myw3ICsxNzUsOCBAQCBwcml2YXRl
OgogICAgIE93blB0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyPiBtX3BhZ2VPdmVybGF5TGF5ZXI7
CiAKICAgICBIYXNoU2V0PFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcio+IG1fcmVn
aXN0ZXJlZExheWVyczsKLSAgICBWZWN0b3I8Q29vcmRpbmF0ZWRMYXllcklEPiBtX2RldGFjaGVk
TGF5ZXJzOworICAgIFZlY3RvcjxDb29yZGluYXRlZExheWVySUQ+IG1fbGF5ZXJzVG9DcmVhdGU7
CisgICAgVmVjdG9yPENvb3JkaW5hdGVkTGF5ZXJJRD4gbV9sYXllcnNUb0RlbGV0ZTsKICAgICB0
eXBlZGVmIEhhc2hNYXA8Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwgUmVmUHRyPENvb3JkaW5h
dGVkSW1hZ2VCYWNraW5nPiA+IEltYWdlQmFja2luZ01hcDsKICAgICBJbWFnZUJhY2tpbmdNYXAg
bV9pbWFnZUJhY2tpbmdzOwogICAgIFZlY3RvcjxPd25QdHI8VXBkYXRlQXRsYXM+ID4gbV91cGRh
dGVBdGxhc2VzOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180719</attachid>
            <date>2012-12-25 16:41:23 -0800</date>
            <delta_ts>2012-12-25 17:42:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104990-20121226093835.patch</filename>
            <type>text/plain</type>
            <size>19018</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4NDY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYjE3Y2ZjMzk3YWNkM2Qw
NzliMDVhNTg4NzQzMjQ5NDhiNDgyNDhlNS4uNThmZjMyN2Y2MDRmMzg1YmQ1ODVjZDA0MzYzMjUx
YzNiZTFlMWNhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEyLTEyLTI1ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIENvb3JkaW5h
dGVkIEdyYXBoaWNzOiBNYW5hZ2UgdGhlIGxpZmVjeWNsZSBvZiBDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIgZXhwbGljaXRseS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwNDk5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFNlbmQgZXhwbGljaXQgY29tbWFuZHMgdG8gdGhlIFVJIHByb2Nlc3MgdG8gY3Jl
YXRlL2RlbGV0ZSBjb21wb3NpdGluZworICAgICAgICBsYXllcnMsIGluc3RlYWQgb2YgaGF2aW5n
IHRoZSBVSSBwcm9jZXNzIGRlY2lkZSBsYXppbHkgd2hlbiB0byBjcmVhdGUKKyAgICAgICAgdGhl
bS4KKworICAgICAgICBBdm9pZCBjcmVhdGluZyBhIGNvbXBvc2l0aW5nIGxheWVyIGF0IGFsbCBp
ZiBpdCB3YXMgZGVsZXRlZCBpbiB0aGUgc2FtZQorICAgICAgICBjeWNsZS4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6
OmNyZWF0ZUNvbXBvc2l0aW5nTGF5ZXIpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94
eS5oOgorICAgICAgICAoQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFBy
b3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNz
L0xheWVyVHJlZVJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVy
ZXI6OmNyZWF0ZUNhbnZhcyk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjpk
ZXN0cm95Q2FudmFzKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OnNldExh
eWVyQ2hpbGRyZW4pOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6c2V0TGF5
ZXJGaWx0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OnNldExheWVy
U3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6bGF5ZXJCeUlESWZQ
b3NzaWJsZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVS
ZW5kZXJlcjo6Y3JlYXRlTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJl
cjo6ZGVsZXRlTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6c2V0
Um9vdExheWVySUQpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6Y3JlYXRl
VGlsZSk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjpyZW1vdmVUaWxlKToK
KyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OnVwZGF0ZVRpbGUpOgorICAgICAg
ICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6ZW5zdXJlUm9vdExheWVyKToKKyAgICAgICAg
KFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OnNldExheWVyQW5pbWF0aW9ucyk6CisgICAgICAg
ICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaDoKKyAg
ICAgICAgKExheWVyVHJlZVJlbmRlcmVyKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVu
ZGVyZXI6OmxheWVyQnlJRCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMpOgor
ICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNyZWF0ZUNvbXBvc2l0
aW5nTGF5ZXJzKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdDo6ZGVsZXRlQ29tcG9zaXRpbmdMYXllcnMpOgorICAgICAgICAoV2Vi
S2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRldGFjaExheWVyKToKKyAgICAgICAgKFdl
YktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpjcmVhdGVHcmFwaGljc0xheWVyKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZExheWVyVHJlZUhvc3QuaDoKKwogMjAxMi0xMi0yNSAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0Bh
cHBsZS5jb20+CiAKICAgICAgICAgW1dLMl1bTWFjXSBDYWxsIENhcmJvbiByZXNvdXJjZSBBUElz
IG9uIG1haW4gdGhyZWFkIG9ubHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZExheWVyVHJlZUhvc3RQcm94eS5jcHAKaW5kZXggYTEyZjQxNGQ4NWJiYTY3MTVjMTZhMzczNDdj
NGMwNDVmZTE3OTkyYS4uYmFhOGY2NTIzZGViZmRlYmJjNGU1MjJiNDc1ZTE0Y2MxOGZkMmViNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5
LmNwcApAQCAtOTUsNiArOTUsMTEgQEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94
eTo6cmVtb3ZlVXBkYXRlQXRsYXModWludDMyX3QgYXRsYXNJRCkKICAgICBtX3N1cmZhY2VzLnJl
bW92ZShhdGxhc0lEKTsKIH0KIAordm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6
Y3JlYXRlQ29tcG9zaXRpbmdMYXllcihDb29yZGluYXRlZExheWVySUQgaWQpCit7CisgICAgZGlz
cGF0Y2hVcGRhdGUoYmluZCgmTGF5ZXJUcmVlUmVuZGVyZXI6OmNyZWF0ZUxheWVyLCBtX3JlbmRl
cmVyLmdldCgpLCBpZCkpOworfQorCiB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5
OjpkZWxldGVDb21wb3NpdGluZ0xheWVyKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCkKIHsKICAgICBk
aXNwYXRjaFVwZGF0ZShiaW5kKCZMYXllclRyZWVSZW5kZXJlcjo6ZGVsZXRlTGF5ZXIsIG1fcmVu
ZGVyZXIuZ2V0KCksIGlkKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0UHJveHkuaAppbmRleCBjMTViZjY1NTI0ZTM3NzM4MjNkNDlhOGQ2YjMzNjc3ZGU2
Mzc4MGIzLi43NTkxYjg0ODVkMzk4ODZlZDdlZDJjZDA1ZDExNjEzZmU2N2ZhY2QzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZExheWVyVHJlZUhvc3RQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmgKQEAgLTYw
LDYgKzYwLDcgQEAgcHVibGljOgogICAgIHZvaWQgY3JlYXRlQ3VzdG9tRmlsdGVyUHJvZ3JhbShp
bnQgaWQsIGNvbnN0IFdlYkNvcmU6OkN1c3RvbUZpbHRlclByb2dyYW1JbmZvJik7CiAgICAgdm9p
ZCByZW1vdmVDdXN0b21GaWx0ZXJQcm9ncmFtKGludCBpZCk7CiAjZW5kaWYKKyAgICB2b2lkIGNy
ZWF0ZUNvbXBvc2l0aW5nTGF5ZXIoQ29vcmRpbmF0ZWRMYXllcklEKTsKICAgICB2b2lkIGRlbGV0
ZUNvbXBvc2l0aW5nTGF5ZXIoQ29vcmRpbmF0ZWRMYXllcklEKTsKICAgICB2b2lkIHNldFJvb3RD
b21wb3NpdGluZ0xheWVyKENvb3JkaW5hdGVkTGF5ZXJJRCk7CiAgICAgdm9pZCBzZXRDb250ZW50
c1NpemUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhv
c3RQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5Lm1lc3NhZ2VzLmluCmluZGV4
IDgxYWQzMmE2M2JkMmEyZDAxM2NmODNlZjRmZDI1ZWRkMWI4ZWQxMjMuLjEzN2RhZDgwNzUwMGY1
NWU1OWQyNmMyN2MxZGVkYmE0OWM1NTA4YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yOSw2
ICsyOSw3IEBAIG1lc3NhZ2VzIC0+IENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5IHsKICAg
ICBSZW1vdmVDdXN0b21GaWx0ZXJQcm9ncmFtKGludCBpZCkKICNlbmRpZgogICAgIFNldFJvb3RD
b21wb3NpdGluZ0xheWVyKHVpbnQzMl90IGlkKQorICAgIENyZWF0ZUNvbXBvc2l0aW5nTGF5ZXIo
dWludDMyX3QgaWQpCiAgICAgRGVsZXRlQ29tcG9zaXRpbmdMYXllcih1aW50MzJfdCBpZCkKICAg
ICBDcmVhdGVUaWxlRm9yTGF5ZXIodWludDMyX3QgbGF5ZXJJRCwgdWludDMyX3QgdGlsZUlELCBX
ZWJDb3JlOjpJbnRSZWN0IHRpbGVSZWN0LCBXZWJLaXQ6OlN1cmZhY2VVcGRhdGVJbmZvIHVwZGF0
ZUluZm8pCiAgICAgVXBkYXRlVGlsZUZvckxheWVyKHVpbnQzMl90IGxheWVySUQsIHVpbnQzMl90
IHRpbGVJRCwgV2ViQ29yZTo6SW50UmVjdCB0aWxlUmVjdCwgV2ViS2l0OjpTdXJmYWNlVXBkYXRl
SW5mbyB1cGRhdGVJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwCmluZGV4
IDFhOWY1MWRhOTdhYWRkOTZkOTVkNDViYjRiZWQxMGM1NWE0NDNiMjIuLjgyNzQ3OTdjNzAwMGQ3
N2RkMjgyZGQxZmE4MmJjMGZmNDJiNmE3NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5k
ZXJlci5jcHAKQEAgLTg5LDEzICs4OSw2IEBAIExheWVyVHJlZVJlbmRlcmVyOjp+TGF5ZXJUcmVl
UmVuZGVyZXIoKQogewogfQogCi1QYXNzT3duUHRyPEdyYXBoaWNzTGF5ZXI+IExheWVyVHJlZVJl
bmRlcmVyOjpjcmVhdGVMYXllcihDb29yZGluYXRlZExheWVySUQpCi17Ci0gICAgR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXIqIG5ld0xheWVyID0gbmV3IEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyKHRoaXMpOwotICAgIG5ld0xheWVyLT5zZXRIYXNPd25CYWNraW5nU3RvcmUoZmFsc2UpOwot
ICAgIHJldHVybiBhZG9wdFB0cihuZXdMYXllcik7Ci19Ci0KIHZvaWQgTGF5ZXJUcmVlUmVuZGVy
ZXI6OnBhaW50VG9DdXJyZW50R0xDb250ZXh0KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBt
YXRyaXgsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEZsb2F0UmVjdCYgY2xpcFJlY3QsIFRleHR1cmVN
YXBwZXI6OlBhaW50RmxhZ3MgUGFpbnRGbGFncykKIHsKICAgICBpZiAoIW1fdGV4dHVyZU1hcHBl
cikgewpAQCAtMjMxLDcgKzIyNCw2IEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OmNyZWF0ZUNh
bnZhcyhDb29yZGluYXRlZExheWVySUQgaWQsIGNvbnN0IFdlYkNvcmU6OkludFNpCiB7CiAgICAg
QVNTRVJUKG1fdGV4dHVyZU1hcHBlcik7CiAgICAgR3JhcGhpY3NMYXllciogbGF5ZXIgPSBsYXll
ckJ5SUQoaWQpOwotICAgIEFTU0VSVChsYXllcik7CiAgICAgQVNTRVJUKCFtX3N1cmZhY2VCYWNr
aW5nU3RvcmVzLmNvbnRhaW5zKGlkKSk7CiAKICAgICBSZWZQdHI8VGV4dHVyZU1hcHBlclN1cmZh
Y2VCYWNraW5nU3RvcmU+IGNhbnZhc0JhY2tpbmdTdG9yZShUZXh0dXJlTWFwcGVyU3VyZmFjZUJh
Y2tpbmdTdG9yZTo6Y3JlYXRlKCkpOwpAQCAtMjU2LDcgKzI0OCw2IEBAIHZvaWQgTGF5ZXJUcmVl
UmVuZGVyZXI6OmRlc3Ryb3lDYW52YXMoQ29vcmRpbmF0ZWRMYXllcklEIGlkKQogewogICAgIEFT
U0VSVChtX3RleHR1cmVNYXBwZXIpOwogICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyID0gbGF5ZXJC
eUlEKGlkKTsKLSAgICBBU1NFUlQobGF5ZXIpOwogICAgIEFTU0VSVChtX3N1cmZhY2VCYWNraW5n
U3RvcmVzLmNvbnRhaW5zKGlkKSk7CiAKICAgICBtX3N1cmZhY2VCYWNraW5nU3RvcmVzLnJlbW92
ZShpZCk7CkBAIC0yNjYsMTcgKzI1NywxMiBAQCB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpkZXN0
cm95Q2FudmFzKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCkKIAogdm9pZCBMYXllclRyZWVSZW5kZXJl
cjo6c2V0TGF5ZXJDaGlsZHJlbihDb29yZGluYXRlZExheWVySUQgaWQsIGNvbnN0IFZlY3RvcjxD
b29yZGluYXRlZExheWVySUQ+JiBjaGlsZElEcykKIHsKLSAgICBHcmFwaGljc0xheWVyKiBsYXll
ciA9IGVuc3VyZUxheWVyKGlkKTsKKyAgICBHcmFwaGljc0xheWVyKiBsYXllciA9IGxheWVyQnlJ
RChpZCk7CiAgICAgVmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiBjaGlsZHJlbjsKIAogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgY2hpbGRJRHMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgQ29vcmRp
bmF0ZWRMYXllcklEIGNoaWxkSUQgPSBjaGlsZElEc1tpXTsKICAgICAgICAgR3JhcGhpY3NMYXll
ciogY2hpbGQgPSBsYXllckJ5SUQoY2hpbGRJRCk7Ci0gICAgICAgIGlmICghY2hpbGQpIHsKLSAg
ICAgICAgICAgIE93blB0cjxHcmFwaGljc0xheWVyKj4gbmV3Q2hpbGQgPSBjcmVhdGVMYXllcihj
aGlsZElEKTsKLSAgICAgICAgICAgIGNoaWxkID0gbmV3Q2hpbGQuZ2V0KCk7Ci0gICAgICAgICAg
ICBtX2xheWVycy5hZGQoY2hpbGRJRCwgbmV3Q2hpbGQucmVsZWFzZSgpKTsKLSAgICAgICAgfQog
ICAgICAgICBjaGlsZHJlbi5hcHBlbmQoY2hpbGQpOwogICAgIH0KICAgICBsYXllci0+c2V0Q2hp
bGRyZW4oY2hpbGRyZW4pOwpAQCAtMjg1LDcgKzI3MSw3IEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVy
ZXI6OnNldExheWVyQ2hpbGRyZW4oQ29vcmRpbmF0ZWRMYXllcklEIGlkLCBjb25zdCBWZWN0b3I8
Q29vCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6c2V0
TGF5ZXJGaWx0ZXJzKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCwgY29uc3QgRmlsdGVyT3BlcmF0aW9u
cyYgZmlsdGVycykKIHsKLSAgICBHcmFwaGljc0xheWVyKiBsYXllciA9IGVuc3VyZUxheWVyKGlk
KTsKKyAgICBHcmFwaGljc0xheWVyKiBsYXllciA9IGxheWVyQnlJRChpZCk7CiAKICNpZiBFTkFC
TEUoQ1NTX1NIQURFUlMpCiAgICAgaW5qZWN0Q2FjaGVkQ3VzdG9tRmlsdGVyUHJvZ3JhbXMoZmls
dGVycyk7CkBAIC0zMjksMTAgKzMxNSwxMCBAQCB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpyZW1v
dmVDdXN0b21GaWx0ZXJQcm9ncmFtKGludCBpZCkKIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnNl
dExheWVyU3RhdGUoQ29vcmRpbmF0ZWRMYXllcklEIGlkLCBjb25zdCBDb29yZGluYXRlZExheWVy
SW5mbyYgbGF5ZXJJbmZvKQogewogICAgIEFTU0VSVChtX3Jvb3RMYXllcklEICE9IEludmFsaWRD
b29yZGluYXRlZExheWVySUQpOwotICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyID0gZW5zdXJlTGF5
ZXIoaWQpOworICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyID0gbGF5ZXJCeUlEKGlkKTsKIAotICAg
IGxheWVyLT5zZXRSZXBsaWNhdGVkQnlMYXllcihsYXllckJ5SUQobGF5ZXJJbmZvLnJlcGxpY2Ep
KTsKLSAgICBsYXllci0+c2V0TWFza0xheWVyKGxheWVyQnlJRChsYXllckluZm8ubWFzaykpOwor
ICAgIGxheWVyLT5zZXRSZXBsaWNhdGVkQnlMYXllcihsYXllckJ5SURJZlBvc3NpYmxlKGxheWVy
SW5mby5yZXBsaWNhKSk7CisgICAgbGF5ZXItPnNldE1hc2tMYXllcihsYXllckJ5SURJZlBvc3Np
YmxlKGxheWVySW5mby5tYXNrKSk7CiAKICAgICBsYXllci0+c2V0QW5jaG9yUG9pbnQobGF5ZXJJ
bmZvLmFuY2hvclBvaW50KTsKICAgICBsYXllci0+c2V0UG9zaXRpb24obGF5ZXJJbmZvLnBvcyk7
CkBAIC0zNjIsMTEgKzM0OCwyMiBAQCB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpzZXRMYXllclN0
YXRlKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCwgY29uc3QgQ29vcmRpbmF0ZWRMYQogICAgIGxheWVy
LT5zZXRQcmVzZXJ2ZXMzRChsYXllckluZm8ucHJlc2VydmVzM0QpOwogfQogCitHcmFwaGljc0xh
eWVyKiBMYXllclRyZWVSZW5kZXJlcjo6bGF5ZXJCeUlESWZQb3NzaWJsZShDb29yZGluYXRlZExh
eWVySUQgaWQpCit7CisgICAgcmV0dXJuIChpZCAhPSBJbnZhbGlkQ29vcmRpbmF0ZWRMYXllcklE
KSA/IGxheWVyQnlJRChpZCkgOiAwOworfQorCit2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpjcmVh
dGVMYXllcihDb29yZGluYXRlZExheWVySUQgaWQpCit7CisgICAgT3duUHRyPFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXI+IG5ld0xheWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKDAgLyogZmFjdG9y
eSAqLywgdGhpcyk7CisgICAgdG9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcihuZXdMYXllci5n
ZXQoKSktPnNldEhhc093bkJhY2tpbmdTdG9yZShmYWxzZSk7CisgICAgbV9sYXllcnMuYWRkKGlk
LCBuZXdMYXllci5yZWxlYXNlKCkpOworfQorCiB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpkZWxl
dGVMYXllcihDb29yZGluYXRlZExheWVySUQgbGF5ZXJJRCkKIHsKICAgICBPd25QdHI8R3JhcGhp
Y3NMYXllcj4gbGF5ZXIgPSBtX2xheWVycy50YWtlKGxheWVySUQpOwotICAgIGlmICghbGF5ZXIp
Ci0gICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQobGF5ZXIpOwogCiAgICAgbGF5ZXItPnJlbW92
ZUZyb21QYXJlbnQoKTsKICAgICBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3Jlcy5yZW1vdmUodG9U
ZXh0dXJlTWFwcGVyTGF5ZXIobGF5ZXIuZ2V0KCkpKTsKQEAgLTM3NiwyMCArMzczLDYgQEAgdm9p
ZCBMYXllclRyZWVSZW5kZXJlcjo6ZGVsZXRlTGF5ZXIoQ29vcmRpbmF0ZWRMYXllcklEIGxheWVy
SUQpCiAjZW5kaWYKIH0KIAotCi1XZWJDb3JlOjpHcmFwaGljc0xheWVyKiBMYXllclRyZWVSZW5k
ZXJlcjo6ZW5zdXJlTGF5ZXIoQ29vcmRpbmF0ZWRMYXllcklEIGlkKQotewotICAgIExheWVyTWFw
OjppdGVyYXRvciBpdCA9IG1fbGF5ZXJzLmZpbmQoaWQpOwotICAgIGlmIChpdCAhPSBtX2xheWVy
cy5lbmQoKSkKLSAgICAgICAgcmV0dXJuIGl0LT52YWx1ZS5nZXQoKTsKLQotICAgIE93blB0cjxX
ZWJDb3JlOjpHcmFwaGljc0xheWVyPiBuZXdMYXllciA9IGNyZWF0ZUxheWVyKGlkKTsKLSAgICBX
ZWJDb3JlOjpHcmFwaGljc0xheWVyKiBsYXllciA9IG5ld0xheWVyLmdldCgpOwotICAgIG1fbGF5
ZXJzLmFkZChpZCwgbmV3TGF5ZXIucmVsZWFzZSgpKTsKLQotICAgIHJldHVybiBsYXllcjsKLX0K
LQogdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6c2V0Um9vdExheWVySUQoQ29vcmRpbmF0ZWRMYXll
cklEIGxheWVySUQpCiB7CiAgICAgQVNTRVJUKGxheWVySUQgIT0gSW52YWxpZENvb3JkaW5hdGVk
TGF5ZXJJRCk7CkBAIC0zOTgsNyArMzgxLDcgQEAgdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6c2V0
Um9vdExheWVySUQoQ29vcmRpbmF0ZWRMYXllcklEIGxheWVySUQpCiAgICAgbV9yb290TGF5ZXJJ
RCA9IGxheWVySUQ7CiAgICAgbV9yb290TGF5ZXItPnJlbW92ZUFsbENoaWxkcmVuKCk7CiAKLSAg
ICBHcmFwaGljc0xheWVyKiBsYXllciA9IGVuc3VyZUxheWVyKGxheWVySUQpOworICAgIEdyYXBo
aWNzTGF5ZXIqIGxheWVyID0gbGF5ZXJCeUlEKGxheWVySUQpOwogICAgIG1fcm9vdExheWVyLT5h
ZGRDaGlsZChsYXllcik7CiB9CiAKQEAgLTQ4Miw3ICs0NjUsNiBAQCB2b2lkIExheWVyVHJlZVJl
bmRlcmVyOjpyZXNldEJhY2tpbmdTdG9yZVNpemVUb0xheWVyU2l6ZShHcmFwaGljc0xheWVyKiBn
cmFwaGljcwogdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6Y3JlYXRlVGlsZShDb29yZGluYXRlZExh
eWVySUQgbGF5ZXJJRCwgdWludDMyX3QgdGlsZUlELCBmbG9hdCBzY2FsZSkKIHsKICAgICBHcmFw
aGljc0xheWVyKiBsYXllciA9IGxheWVyQnlJRChsYXllcklEKTsKLSAgICBBU1NFUlQobGF5ZXIp
OwogICAgIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUgPSBnZXRCYWNraW5n
U3RvcmUobGF5ZXIpOwogICAgIEFTU0VSVChiYWNraW5nU3RvcmUpOwogICAgIGJhY2tpbmdTdG9y
ZS0+Y3JlYXRlVGlsZSh0aWxlSUQsIHNjYWxlKTsKQEAgLTQ5Miw3ICs0NzQsNiBAQCB2b2lkIExh
eWVyVHJlZVJlbmRlcmVyOjpjcmVhdGVUaWxlKENvb3JkaW5hdGVkTGF5ZXJJRCBsYXllcklELCB1
aW50MzJfdCB0aWxlSUQsCiB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpyZW1vdmVUaWxlKENvb3Jk
aW5hdGVkTGF5ZXJJRCBsYXllcklELCB1aW50MzJfdCB0aWxlSUQpCiB7CiAgICAgR3JhcGhpY3NM
YXllciogbGF5ZXIgPSBsYXllckJ5SUQobGF5ZXJJRCk7Ci0gICAgQVNTRVJUKGxheWVyKTsKICAg
ICBDb29yZGluYXRlZEJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlID0gZ2V0QmFja2luZ1N0b3Jl
KGxheWVyKTsKICAgICBpZiAoIWJhY2tpbmdTdG9yZSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTA1
LDcgKzQ4Niw2IEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnJlbW92ZVRpbGUoQ29vcmRpbmF0
ZWRMYXllcklEIGxheWVySUQsIHVpbnQzMl90IHRpbGVJRCkKIHZvaWQgTGF5ZXJUcmVlUmVuZGVy
ZXI6OnVwZGF0ZVRpbGUoQ29vcmRpbmF0ZWRMYXllcklEIGxheWVySUQsIHVpbnQzMl90IHRpbGVJ
RCwgY29uc3QgVGlsZVVwZGF0ZSYgdXBkYXRlKQogewogICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVy
ID0gbGF5ZXJCeUlEKGxheWVySUQpOwotICAgIEFTU0VSVChsYXllcik7CiAgICAgUmVmUHRyPENv
b3JkaW5hdGVkQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUgPSBnZXRCYWNraW5nU3RvcmUobGF5
ZXIpOwogICAgIEFTU0VSVChiYWNraW5nU3RvcmUpOwogICAgIGJhY2tpbmdTdG9yZS0+dXBkYXRl
VGlsZSh0aWxlSUQsIHVwZGF0ZS5zb3VyY2VSZWN0LCB1cGRhdGUudGlsZVJlY3QsIHVwZGF0ZS5z
dXJmYWNlLCB1cGRhdGUub2Zmc2V0KTsKQEAgLTYxNCw3ICs1OTQsNyBAQCB2b2lkIExheWVyVHJl
ZVJlbmRlcmVyOjplbnN1cmVSb290TGF5ZXIoKQogICAgIGlmIChtX3Jvb3RMYXllcikKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV9yb290TGF5ZXIgPSBjcmVhdGVMYXllcihJbnZhbGlkQ29vcmRp
bmF0ZWRMYXllcklEKTsKKyAgICBtX3Jvb3RMYXllciA9IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZSgw
IC8qIGZhY3RvcnkgKi8sIHRoaXMpOwogICAgIG1fcm9vdExheWVyLT5zZXRNYXNrc1RvQm91bmRz
KGZhbHNlKTsKICAgICBtX3Jvb3RMYXllci0+c2V0RHJhd3NDb250ZW50KGZhbHNlKTsKICAgICBt
X3Jvb3RMYXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDNEKDAsIDAsIDApKTsKQEAgLTY3
Nyw4ICs2NTcsNiBAQCB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpwdXJnZUJhY2tpbmdTdG9yZXMo
KQogdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6c2V0TGF5ZXJBbmltYXRpb25zKENvb3JkaW5hdGVk
TGF5ZXJJRCBpZCwgY29uc3QgR3JhcGhpY3NMYXllckFuaW1hdGlvbnMmIGFuaW1hdGlvbnMpCiB7
CiAgICAgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIqIGxheWVyID0gdG9HcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlcihsYXllckJ5SUQoaWQpKTsKLSAgICBpZiAoIWxheWVyKQotICAgICAgICBy
ZXR1cm47CiAjaWYgRU5BQkxFKENTU19TSEFERVJTKQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgYW5pbWF0aW9ucy5hbmltYXRpb25zKCkuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgY29uc3Qg
S2V5ZnJhbWVWYWx1ZUxpc3QmIGtleWZyYW1lcyA9IGFuaW1hdGlvbnMuYW5pbWF0aW9ucygpLmF0
KGkpLmtleWZyYW1lcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmgKaW5kZXggY2Jj
NGVmMWY2Y2ViYWY4NGM4ODAxODk1ZjM2YzhmZjFkOGI5ZTBlYS4uZjlkODQwNjVkOTA1YmZmM2Iw
MjkyMTI2Y2Q2MjUyOTMwMDE0NGEzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5o
CkBAIC04Niw2ICs4Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHB1cmdlR0xSZXNvdXJjZXMoKTsK
ICAgICB2b2lkIHNldEFjdGl2ZShib29sKTsKIAorICAgIHZvaWQgY3JlYXRlTGF5ZXIoQ29vcmRp
bmF0ZWRMYXllcklEKTsKICAgICB2b2lkIGRlbGV0ZUxheWVyKENvb3JkaW5hdGVkTGF5ZXJJRCk7
CiAgICAgdm9pZCBzZXRSb290TGF5ZXJJRChDb29yZGluYXRlZExheWVySUQpOwogICAgIHZvaWQg
c2V0TGF5ZXJDaGlsZHJlbihDb29yZGluYXRlZExheWVySUQsIGNvbnN0IFZlY3RvcjxDb29yZGlu
YXRlZExheWVySUQ+Jik7CkBAIC0xMTcsOSArMTE4LDEzIEBAIHB1YmxpYzoKICNlbmRpZgogCiBw
cml2YXRlOgotICAgIFBhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllcj4gY3JlYXRlTGF5
ZXIoQ29vcmRpbmF0ZWRMYXllcklEKTsKLQotICAgIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIGxh
eWVyQnlJRChDb29yZGluYXRlZExheWVySUQgaWQpIHsgcmV0dXJuIChpZCA9PSBJbnZhbGlkQ29v
cmRpbmF0ZWRMYXllcklEKSA/IDAgOiBtX2xheWVycy5nZXQoaWQpOyB9CisgICAgV2ViQ29yZTo6
R3JhcGhpY3NMYXllciogbGF5ZXJCeUlEKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChtX2xheWVycy5jb250YWlucyhpZCkpOworICAgICAgICBBU1NFUlQoaWQg
IT0gSW52YWxpZENvb3JkaW5hdGVkTGF5ZXJJRCk7CisgICAgICAgIHJldHVybiBtX2xheWVycy5n
ZXQoaWQpOworICAgIH0KKyAgICBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiBsYXllckJ5SURJZlBv
c3NpYmxlKENvb3JkaW5hdGVkTGF5ZXJJRCk7CiAgICAgV2ViQ29yZTo6R3JhcGhpY3NMYXllciog
cm9vdExheWVyKCkgeyByZXR1cm4gbV9yb290TGF5ZXIuZ2V0KCk7IH0KIAogICAgIHZvaWQgc3lu
Y1JlbW90ZUNvbnRlbnQoKTsKQEAgLTE0MSw3ICsxNDYsNiBAQCBwcml2YXRlOgogICAgIHZvaWQg
YXNzaWduSW1hZ2VCYWNraW5nVG9MYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyKiwgQ29vcmRp
bmF0ZWRJbWFnZUJhY2tpbmdJRCk7CiAgICAgdm9pZCByZW1vdmVSZWxlYXNlZEltYWdlQmFja2lu
Z3NJZk5lZWRlZCgpOwogICAgIHZvaWQgZW5zdXJlUm9vdExheWVyKCk7Ci0gICAgV2ViQ29yZTo6
R3JhcGhpY3NMYXllciogZW5zdXJlTGF5ZXIoQ29vcmRpbmF0ZWRMYXllcklEKTsKICAgICB2b2lk
IGNvbW1pdFBlbmRpbmdCYWNraW5nU3RvcmVPcGVyYXRpb25zKCk7CiAKICAgICBDb29yZGluYXRl
ZEJhY2tpbmdTdG9yZSogZ2V0QmFja2luZ1N0b3JlKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJl
ZUhvc3QuY3BwCmluZGV4IDQ4NDQ0NTBjOThmOTQ5NTQwNTc1ZmM0OGVhMGIxMTkwZDMxMDhhNmYu
LmJiOTk1NWVkODBiZDQzNTMxNDIxYmRkMTU0ZWY4YzIxYjZjN2JmY2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcApA
QCAtMjY5LDYgKzI2OSw4IEBAIGJvb2wgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpmbHVzaFBl
bmRpbmdMYXllckNoYW5nZXMoKQogCiAgICAgVGVtcG9yYXJ5Q2hhbmdlPGJvb2w+IHByb3RlY3Rv
cihtX2lzRmx1c2hpbmdMYXllckNoYW5nZXMsIHRydWUpOwogCisgICAgY3JlYXRlQ29tcG9zaXRp
bmdMYXllcnMoKTsKKwogICAgIGluaXRpYWxpemVSb290Q29tcG9zaXRpbmdMYXllcklmTmVlZGVk
KCk7CiAKICAgICBtX3Jvb3RMYXllci0+Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVy
T25seSgpOwpAQCAtMjgwLDkgKzI4Miw3IEBAIGJvb2wgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
OjpmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoKQogCiAgICAgZmx1c2hQZW5kaW5nSW1hZ2VCYWNr
aW5nQ2hhbmdlcygpOwogCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2RldGFjaGVkTGF5
ZXJzLnNpemUoKTsgKytpKQotICAgICAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OkNvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpEZWxldGVDb21wb3NpdGluZ0xheWVyKG1fZGV0YWNo
ZWRMYXllcnNbaV0pKTsKLSAgICBtX2RldGFjaGVkTGF5ZXJzLmNsZWFyKCk7CisgICAgZGVsZXRl
Q29tcG9zaXRpbmdMYXllcnMoKTsKIAogICAgIGlmIChtX3Nob3VsZFN5bmNGcmFtZSkgewogICAg
ICAgICBkaWRTeW5jID0gdHJ1ZTsKQEAgLTMwMyw2ICszMDMsNDIgQEAgYm9vbCBDb29yZGluYXRl
ZExheWVyVHJlZUhvc3Q6OmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcygpCiAgICAgcmV0dXJuIGRp
ZFN5bmM7CiB9CiAKK3ZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpjcmVhdGVDb21wb3Np
dGluZ0xheWVycygpCit7CisgICAgaWYgKG1fbGF5ZXJzVG9DcmVhdGUuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICAvLyBJZiBhIGxheWVyIGdldHMgY3JlYXRlZCBhbmQgZGVsZXRl
ZCBpbiB0aGUgc2FtZSBjeWNsZSwgd2UgY2FuIHNpbXBseSByZW1vdmUgaXQgZnJvbSBtX2xheWVy
c1RvQ3JlYXRlIGFuZCBtX2xheWVyc1RvRGVsZXRlLgorICAgIGZvciAoaW50IGkgPSBtX2xheWVy
c1RvQ3JlYXRlLnNpemUoKSAtIDE7IGkgPj0gMDsgLS1pKSB7CisgICAgICAgIHNpemVfdCBpbmRl
eCA9IG1fbGF5ZXJzVG9EZWxldGUuZmluZChtX2xheWVyc1RvQ3JlYXRlW2ldKTsKKyAgICAgICAg
aWYgKGluZGV4ICE9IG5vdEZvdW5kKSB7CisgICAgICAgICAgICBtX2xheWVyc1RvQ3JlYXRlLnJl
bW92ZShpKTsKKyAgICAgICAgICAgIG1fbGF5ZXJzVG9EZWxldGUucmVtb3ZlKGluZGV4KTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9sYXllcnNUb0Ny
ZWF0ZS5zaXplKCk7ICsraSkKKyAgICAgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpDb29y
ZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6Q3JlYXRlQ29tcG9zaXRpbmdMYXllcihtX2xheWVy
c1RvQ3JlYXRlW2ldKSk7CisgICAgbV9sYXllcnNUb0NyZWF0ZS5jbGVhcigpOworICAgIG1fc2hv
dWxkU3luY0ZyYW1lID0gdHJ1ZTsKK30KKwordm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6
OmRlbGV0ZUNvbXBvc2l0aW5nTGF5ZXJzKCkKK3sKKyAgICBpZiAobV9sYXllcnNUb0RlbGV0ZS5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX2lzUHVyZ2luZykgeworICAg
ICAgICBtX2xheWVyc1RvRGVsZXRlLmNsZWFyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fbGF5ZXJzVG9EZWxldGUuc2l6ZSgpOyArK2kp
CisgICAgICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6Q29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0UHJveHk6OkRlbGV0ZUNvbXBvc2l0aW5nTGF5ZXIobV9sYXllcnNUb0RlbGV0ZVtpXSkpOwor
ICAgIG1fbGF5ZXJzVG9EZWxldGUuY2xlYXIoKTsKKyAgICBtX3Nob3VsZFN5bmNGcmFtZSA9IHRy
dWU7Cit9CisKIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojppbml0aWFsaXplUm9vdENv
bXBvc2l0aW5nTGF5ZXJJZk5lZWRlZCgpCiB7CiAgICAgaWYgKG1fZGlkSW5pdGlhbGl6ZVJvb3RD
b21wb3NpdGluZ0xheWVyKQpAQCAtNDIyLDggKzQ1OCw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0OjpkaXNjb25uZWN0Q3VzdG9tRmlsdGVyUHJvZ3JhbXMoKQogdm9pZCBDb29yZGlu
YXRlZExheWVyVHJlZUhvc3Q6OmRldGFjaExheWVyKENvb3JkaW5hdGVkR3JhcGhpY3NMYXllciog
bGF5ZXIpCiB7CiAgICAgbV9yZWdpc3RlcmVkTGF5ZXJzLnJlbW92ZShsYXllcik7Ci0gICAgbV9z
aG91bGRTeW5jRnJhbWUgPSB0cnVlOwotICAgIG1fZGV0YWNoZWRMYXllcnMuYXBwZW5kKGxheWVy
LT5pZCgpKTsKKyAgICBtX2xheWVyc1RvRGVsZXRlLmFwcGVuZChsYXllci0+aWQoKSk7CiAgICAg
c2NoZWR1bGVMYXllckZsdXNoKCk7CiB9CiAKQEAgLTYzNyw4ICs2NzIsMTAgQEAgUGFzc093blB0
cjxHcmFwaGljc0xheWVyPiBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNyZWF0ZUdyYXBoaWNz
TGF5ZXIoR3JhcGhpY3MKICAgICBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqIGxheWVyID0gbmV3
IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcihjbGllbnQpOwogICAgIGxheWVyLT5zZXRDb29yZGlu
YXRvcih0aGlzKTsKICAgICBtX3JlZ2lzdGVyZWRMYXllcnMuYWRkKGxheWVyKTsKKyAgICBtX2xh
eWVyc1RvQ3JlYXRlLmFwcGVuZChsYXllci0+aWQoKSk7CiAgICAgbGF5ZXItPnNldENvbnRlbnRz
U2NhbGUobV9jb250ZW50c1NjYWxlKTsKICAgICBsYXllci0+c2V0TmVlZHNWaXNpYmxlUmVjdEFk
anVzdG1lbnQoKTsKKyAgICBzY2hlZHVsZUxheWVyRmx1c2goKTsKICAgICByZXR1cm4gYWRvcHRQ
dHIobGF5ZXIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdC5oCmluZGV4IDMzZmVjMDdlYWM4YzUzZWIyYmRiYjU4NDVjMDU3
ZGEzNmU3ZjUxN2YuLjQ4MThlZDlmMDAwZjliODQ4ZGVhZjZhMjYzMWI5ZTc2MjA4YTZiZjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdC5oCkBAIC0xNDAsNiArMTQwLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZVBhZ2VP
dmVybGF5TGF5ZXIoKTsKICAgICB2b2lkIGRlc3Ryb3lQYWdlT3ZlcmxheUxheWVyKCk7CiAgICAg
Ym9vbCBmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoKTsKKyAgICB2b2lkIGNyZWF0ZUNvbXBvc2l0
aW5nTGF5ZXJzKCk7CisgICAgdm9pZCBkZWxldGVDb21wb3NpdGluZ0xheWVycygpOwogICAgIHZv
aWQgY2FuY2VsUGVuZGluZ0xheWVyRmx1c2goKTsKICAgICB2b2lkIHBlcmZvcm1TY2hlZHVsZWRM
YXllckZsdXNoKCk7CiAgICAgdm9pZCBkaWRQZXJmb3JtU2NoZWR1bGVkTGF5ZXJGbHVzaCgpOwpA
QCAtMTczLDcgKzE3NSw4IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXI+IG1fcGFnZU92ZXJsYXlMYXllcjsKIAogICAgIEhhc2hTZXQ8V2ViQ29yZTo6Q29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyKj4gbV9yZWdpc3RlcmVkTGF5ZXJzOwotICAgIFZlY3RvcjxDb29y
ZGluYXRlZExheWVySUQ+IG1fZGV0YWNoZWRMYXllcnM7CisgICAgVmVjdG9yPENvb3JkaW5hdGVk
TGF5ZXJJRD4gbV9sYXllcnNUb0NyZWF0ZTsKKyAgICBWZWN0b3I8Q29vcmRpbmF0ZWRMYXllcklE
PiBtX2xheWVyc1RvRGVsZXRlOwogICAgIHR5cGVkZWYgSGFzaE1hcDxDb29yZGluYXRlZEltYWdl
QmFja2luZ0lELCBSZWZQdHI8Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc+ID4gSW1hZ2VCYWNraW5n
TWFwOwogICAgIEltYWdlQmFja2luZ01hcCBtX2ltYWdlQmFja2luZ3M7CiAgICAgVmVjdG9yPE93
blB0cjxVcGRhdGVBdGxhcz4gPiBtX3VwZGF0ZUF0bGFzZXM7Cg==
</data>
<flag name="review"
          id="198083"
          type_id="1"
          status="+"
          setter="noam"
    />
    <flag name="commit-queue"
          id="198084"
          type_id="3"
          status="-"
          setter="noam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180720</attachid>
            <date>2012-12-25 17:42:10 -0800</date>
            <delta_ts>2012-12-25 18:05:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104990-20121226103922.patch</filename>
            <type>text/plain</type>
            <size>19023</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4NDY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYjE3Y2ZjMzk3YWNkM2Qw
NzliMDVhNTg4NzQzMjQ5NDhiNDgyNDhlNS4uNDNiNTcyYzc5NGM1YjQyMTMwOGIzYjBjNjVmMDNj
ZjFiMTMzZGEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEyLTEyLTI1ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIENvb3JkaW5h
dGVkIEdyYXBoaWNzOiBNYW5hZ2UgdGhlIGxpZmVjeWNsZSBvZiBDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIgZXhwbGljaXRseS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwNDk5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5vYW0gUm9zZW50aGFsLgor
CisgICAgICAgIFNlbmQgZXhwbGljaXQgY29tbWFuZHMgdG8gdGhlIFVJIHByb2Nlc3MgdG8gY3Jl
YXRlL2RlbGV0ZSBjb21wb3NpdGluZworICAgICAgICBsYXllcnMsIGluc3RlYWQgb2YgaGF2aW5n
IHRoZSBVSSBwcm9jZXNzIGRlY2lkZSBsYXppbHkgd2hlbiB0byBjcmVhdGUKKyAgICAgICAgdGhl
bS4KKworICAgICAgICBBdm9pZCBjcmVhdGluZyBhIGNvbXBvc2l0aW5nIGxheWVyIGF0IGFsbCBp
ZiBpdCB3YXMgZGVsZXRlZCBpbiB0aGUgc2FtZQorICAgICAgICBjeWNsZS4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6
OmNyZWF0ZUNvbXBvc2l0aW5nTGF5ZXIpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94
eS5oOgorICAgICAgICAoQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFBy
b3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNz
L0xheWVyVHJlZVJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVy
ZXI6OmNyZWF0ZUNhbnZhcyk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjpk
ZXN0cm95Q2FudmFzKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OnNldExh
eWVyQ2hpbGRyZW4pOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6c2V0TGF5
ZXJGaWx0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OnNldExheWVy
U3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6Z2V0TGF5ZXJCeUlE
SWZFeGlzdHMpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVl
UmVuZGVyZXI6OmNyZWF0ZUxheWVyKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVy
ZXI6OmRlbGV0ZUxheWVyKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OnNl
dFJvb3RMYXllcklEKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OmNyZWF0
ZVRpbGUpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6cmVtb3ZlVGlsZSk6
CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjp1cGRhdGVUaWxlKToKKyAgICAg
ICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OmVuc3VyZVJvb3RMYXllcik6CisgICAgICAg
IChXZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjpzZXRMYXllckFuaW1hdGlvbnMpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmg6Cisg
ICAgICAgIChMYXllclRyZWVSZW5kZXJlcik6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJl
bmRlcmVyOjpsYXllckJ5SUQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKToK
KyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpjcmVhdGVDb21wb3Np
dGluZ0xheWVycyk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGlu
YXRlZExheWVyVHJlZUhvc3Q6OmRlbGV0ZUNvbXBvc2l0aW5nTGF5ZXJzKToKKyAgICAgICAgKFdl
YktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpkZXRhY2hMYXllcik6CisgICAgICAgIChX
ZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlR3JhcGhpY3NMYXllcik6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0Lmg6CisKIDIwMTItMTItMjUgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdA
YXBwbGUuY29tPgogCiAgICAgICAgIFtXSzJdW01hY10gQ2FsbCBDYXJib24gcmVzb3VyY2UgQVBJ
cyBvbiBtYWluIHRocmVhZCBvbmx5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0UHJveHkuY3BwCmluZGV4IGExMmY0MTRkODViYmE2NzE1YzE2YTM3MzQ3
YzRjMDQ1ZmUxNzk5MmEuLmJhYThmNjUyM2RlYmZkZWJiYzRlNTIyYjQ3NWUxNGNjMThmZDJlYjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94
eS5jcHAKQEAgLTk1LDYgKzk1LDExIEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJv
eHk6OnJlbW92ZVVwZGF0ZUF0bGFzKHVpbnQzMl90IGF0bGFzSUQpCiAgICAgbV9zdXJmYWNlcy5y
ZW1vdmUoYXRsYXNJRCk7CiB9CiAKK3ZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6
OmNyZWF0ZUNvbXBvc2l0aW5nTGF5ZXIoQ29vcmRpbmF0ZWRMYXllcklEIGlkKQoreworICAgIGRp
c3BhdGNoVXBkYXRlKGJpbmQoJkxheWVyVHJlZVJlbmRlcmVyOjpjcmVhdGVMYXllciwgbV9yZW5k
ZXJlci5nZXQoKSwgaWQpKTsKK30KKwogdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94
eTo6ZGVsZXRlQ29tcG9zaXRpbmdMYXllcihDb29yZGluYXRlZExheWVySUQgaWQpCiB7CiAgICAg
ZGlzcGF0Y2hVcGRhdGUoYmluZCgmTGF5ZXJUcmVlUmVuZGVyZXI6OmRlbGV0ZUxheWVyLCBtX3Jl
bmRlcmVyLmdldCgpLCBpZCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdFByb3h5LmgKaW5kZXggYzE1YmY2NTUyNGUzNzczODIzZDQ5YThkNmIzMzY3N2Rl
NjM3ODBiMy4uNzU5MWI4NDg1ZDM5ODg2ZWQ3ZWQyY2QwNWQxMTYxM2ZlNjdmYWNkMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oCkBAIC02
MCw2ICs2MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNyZWF0ZUN1c3RvbUZpbHRlclByb2dyYW0o
aW50IGlkLCBjb25zdCBXZWJDb3JlOjpDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyYpOwogICAgIHZv
aWQgcmVtb3ZlQ3VzdG9tRmlsdGVyUHJvZ3JhbShpbnQgaWQpOwogI2VuZGlmCisgICAgdm9pZCBj
cmVhdGVDb21wb3NpdGluZ0xheWVyKENvb3JkaW5hdGVkTGF5ZXJJRCk7CiAgICAgdm9pZCBkZWxl
dGVDb21wb3NpdGluZ0xheWVyKENvb3JkaW5hdGVkTGF5ZXJJRCk7CiAgICAgdm9pZCBzZXRSb290
Q29tcG9zaXRpbmdMYXllcihDb29yZGluYXRlZExheWVySUQpOwogICAgIHZvaWQgc2V0Q29udGVu
dHNTaXplKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0UHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5tZXNzYWdlcy5pbgppbmRl
eCA4MWFkMzJhNjNiZDJhMmQwMTNjZjgzZWY0ZmQyNWVkZDFiOGVkMTIzLi4xMzdkYWQ4MDc1MDBm
NTVlNTlkMjZjMjdjMWRlZGJhNDljNTUwOGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94
eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjks
NiArMjksNyBAQCBtZXNzYWdlcyAtPiBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eSB7CiAg
ICAgUmVtb3ZlQ3VzdG9tRmlsdGVyUHJvZ3JhbShpbnQgaWQpCiAjZW5kaWYKICAgICBTZXRSb290
Q29tcG9zaXRpbmdMYXllcih1aW50MzJfdCBpZCkKKyAgICBDcmVhdGVDb21wb3NpdGluZ0xheWVy
KHVpbnQzMl90IGlkKQogICAgIERlbGV0ZUNvbXBvc2l0aW5nTGF5ZXIodWludDMyX3QgaWQpCiAg
ICAgQ3JlYXRlVGlsZUZvckxheWVyKHVpbnQzMl90IGxheWVySUQsIHVpbnQzMl90IHRpbGVJRCwg
V2ViQ29yZTo6SW50UmVjdCB0aWxlUmVjdCwgV2ViS2l0OjpTdXJmYWNlVXBkYXRlSW5mbyB1cGRh
dGVJbmZvKQogICAgIFVwZGF0ZVRpbGVGb3JMYXllcih1aW50MzJfdCBsYXllcklELCB1aW50MzJf
dCB0aWxlSUQsIFdlYkNvcmU6OkludFJlY3QgdGlsZVJlY3QsIFdlYktpdDo6U3VyZmFjZVVwZGF0
ZUluZm8gdXBkYXRlSW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
b29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcAppbmRl
eCAxYTlmNTFkYTk3YWFkZDk2ZDk1ZDQ1YmI0YmVkMTBjNTVhNDQzYjIyLi42ZTk3MzAyMTY2MmI0
MGQzNmEyODRjM2ZkMWQwNDlhYjY2YTI1OTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVu
ZGVyZXIuY3BwCkBAIC04OSwxMyArODksNiBAQCBMYXllclRyZWVSZW5kZXJlcjo6fkxheWVyVHJl
ZVJlbmRlcmVyKCkKIHsKIH0KIAotUGFzc093blB0cjxHcmFwaGljc0xheWVyPiBMYXllclRyZWVS
ZW5kZXJlcjo6Y3JlYXRlTGF5ZXIoQ29vcmRpbmF0ZWRMYXllcklEKQotewotICAgIEdyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyKiBuZXdMYXllciA9IG5ldyBHcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlcih0aGlzKTsKLSAgICBuZXdMYXllci0+c2V0SGFzT3duQmFja2luZ1N0b3JlKGZhbHNlKTsK
LSAgICByZXR1cm4gYWRvcHRQdHIobmV3TGF5ZXIpOwotfQotCiB2b2lkIExheWVyVHJlZVJlbmRl
cmVyOjpwYWludFRvQ3VycmVudEdMQ29udGV4dChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
bWF0cml4LCBmbG9hdCBvcGFjaXR5LCBjb25zdCBGbG9hdFJlY3QmIGNsaXBSZWN0LCBUZXh0dXJl
TWFwcGVyOjpQYWludEZsYWdzIFBhaW50RmxhZ3MpCiB7CiAgICAgaWYgKCFtX3RleHR1cmVNYXBw
ZXIpIHsKQEAgLTIzMSw3ICsyMjQsNiBAQCB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpjcmVhdGVD
YW52YXMoQ29vcmRpbmF0ZWRMYXllcklEIGlkLCBjb25zdCBXZWJDb3JlOjpJbnRTaQogewogICAg
IEFTU0VSVChtX3RleHR1cmVNYXBwZXIpOwogICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyID0gbGF5
ZXJCeUlEKGlkKTsKLSAgICBBU1NFUlQobGF5ZXIpOwogICAgIEFTU0VSVCghbV9zdXJmYWNlQmFj
a2luZ1N0b3Jlcy5jb250YWlucyhpZCkpOwogCiAgICAgUmVmUHRyPFRleHR1cmVNYXBwZXJTdXJm
YWNlQmFja2luZ1N0b3JlPiBjYW52YXNCYWNraW5nU3RvcmUoVGV4dHVyZU1hcHBlclN1cmZhY2VC
YWNraW5nU3RvcmU6OmNyZWF0ZSgpKTsKQEAgLTI1Niw3ICsyNDgsNiBAQCB2b2lkIExheWVyVHJl
ZVJlbmRlcmVyOjpkZXN0cm95Q2FudmFzKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCkKIHsKICAgICBB
U1NFUlQobV90ZXh0dXJlTWFwcGVyKTsKICAgICBHcmFwaGljc0xheWVyKiBsYXllciA9IGxheWVy
QnlJRChpZCk7Ci0gICAgQVNTRVJUKGxheWVyKTsKICAgICBBU1NFUlQobV9zdXJmYWNlQmFja2lu
Z1N0b3Jlcy5jb250YWlucyhpZCkpOwogCiAgICAgbV9zdXJmYWNlQmFja2luZ1N0b3Jlcy5yZW1v
dmUoaWQpOwpAQCAtMjY2LDE3ICsyNTcsMTIgQEAgdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6ZGVz
dHJveUNhbnZhcyhDb29yZGluYXRlZExheWVySUQgaWQpCiAKIHZvaWQgTGF5ZXJUcmVlUmVuZGVy
ZXI6OnNldExheWVyQ2hpbGRyZW4oQ29vcmRpbmF0ZWRMYXllcklEIGlkLCBjb25zdCBWZWN0b3I8
Q29vcmRpbmF0ZWRMYXllcklEPiYgY2hpbGRJRHMpCiB7Ci0gICAgR3JhcGhpY3NMYXllciogbGF5
ZXIgPSBlbnN1cmVMYXllcihpZCk7CisgICAgR3JhcGhpY3NMYXllciogbGF5ZXIgPSBsYXllckJ5
SUQoaWQpOwogICAgIFZlY3RvcjxHcmFwaGljc0xheWVyKj4gY2hpbGRyZW47CiAKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGNoaWxkSURzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIENvb3Jk
aW5hdGVkTGF5ZXJJRCBjaGlsZElEID0gY2hpbGRJRHNbaV07CiAgICAgICAgIEdyYXBoaWNzTGF5
ZXIqIGNoaWxkID0gbGF5ZXJCeUlEKGNoaWxkSUQpOwotICAgICAgICBpZiAoIWNoaWxkKSB7Ci0g
ICAgICAgICAgICBPd25QdHI8R3JhcGhpY3NMYXllcio+IG5ld0NoaWxkID0gY3JlYXRlTGF5ZXIo
Y2hpbGRJRCk7Ci0gICAgICAgICAgICBjaGlsZCA9IG5ld0NoaWxkLmdldCgpOwotICAgICAgICAg
ICAgbV9sYXllcnMuYWRkKGNoaWxkSUQsIG5ld0NoaWxkLnJlbGVhc2UoKSk7Ci0gICAgICAgIH0K
ICAgICAgICAgY2hpbGRyZW4uYXBwZW5kKGNoaWxkKTsKICAgICB9CiAgICAgbGF5ZXItPnNldENo
aWxkcmVuKGNoaWxkcmVuKTsKQEAgLTI4NSw3ICsyNzEsNyBAQCB2b2lkIExheWVyVHJlZVJlbmRl
cmVyOjpzZXRMYXllckNoaWxkcmVuKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCwgY29uc3QgVmVjdG9y
PENvbwogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnNl
dExheWVyRmlsdGVycyhDb29yZGluYXRlZExheWVySUQgaWQsIGNvbnN0IEZpbHRlck9wZXJhdGlv
bnMmIGZpbHRlcnMpCiB7Ci0gICAgR3JhcGhpY3NMYXllciogbGF5ZXIgPSBlbnN1cmVMYXllcihp
ZCk7CisgICAgR3JhcGhpY3NMYXllciogbGF5ZXIgPSBsYXllckJ5SUQoaWQpOwogCiAjaWYgRU5B
QkxFKENTU19TSEFERVJTKQogICAgIGluamVjdENhY2hlZEN1c3RvbUZpbHRlclByb2dyYW1zKGZp
bHRlcnMpOwpAQCAtMzI5LDEwICszMTUsMTAgQEAgdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6cmVt
b3ZlQ3VzdG9tRmlsdGVyUHJvZ3JhbShpbnQgaWQpCiB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpz
ZXRMYXllclN0YXRlKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCwgY29uc3QgQ29vcmRpbmF0ZWRMYXll
ckluZm8mIGxheWVySW5mbykKIHsKICAgICBBU1NFUlQobV9yb290TGF5ZXJJRCAhPSBJbnZhbGlk
Q29vcmRpbmF0ZWRMYXllcklEKTsKLSAgICBHcmFwaGljc0xheWVyKiBsYXllciA9IGVuc3VyZUxh
eWVyKGlkKTsKKyAgICBHcmFwaGljc0xheWVyKiBsYXllciA9IGxheWVyQnlJRChpZCk7CiAKLSAg
ICBsYXllci0+c2V0UmVwbGljYXRlZEJ5TGF5ZXIobGF5ZXJCeUlEKGxheWVySW5mby5yZXBsaWNh
KSk7Ci0gICAgbGF5ZXItPnNldE1hc2tMYXllcihsYXllckJ5SUQobGF5ZXJJbmZvLm1hc2spKTsK
KyAgICBsYXllci0+c2V0UmVwbGljYXRlZEJ5TGF5ZXIoZ2V0TGF5ZXJCeUlESWZFeGlzdHMobGF5
ZXJJbmZvLnJlcGxpY2EpKTsKKyAgICBsYXllci0+c2V0TWFza0xheWVyKGdldExheWVyQnlJRElm
RXhpc3RzKGxheWVySW5mby5tYXNrKSk7CiAKICAgICBsYXllci0+c2V0QW5jaG9yUG9pbnQobGF5
ZXJJbmZvLmFuY2hvclBvaW50KTsKICAgICBsYXllci0+c2V0UG9zaXRpb24obGF5ZXJJbmZvLnBv
cyk7CkBAIC0zNjIsMTEgKzM0OCwyMiBAQCB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpzZXRMYXll
clN0YXRlKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCwgY29uc3QgQ29vcmRpbmF0ZWRMYQogICAgIGxh
eWVyLT5zZXRQcmVzZXJ2ZXMzRChsYXllckluZm8ucHJlc2VydmVzM0QpOwogfQogCitHcmFwaGlj
c0xheWVyKiBMYXllclRyZWVSZW5kZXJlcjo6Z2V0TGF5ZXJCeUlESWZFeGlzdHMoQ29vcmRpbmF0
ZWRMYXllcklEIGlkKQoreworICAgIHJldHVybiAoaWQgIT0gSW52YWxpZENvb3JkaW5hdGVkTGF5
ZXJJRCkgPyBsYXllckJ5SUQoaWQpIDogMDsKK30KKwordm9pZCBMYXllclRyZWVSZW5kZXJlcjo6
Y3JlYXRlTGF5ZXIoQ29vcmRpbmF0ZWRMYXllcklEIGlkKQoreworICAgIE93blB0cjxXZWJDb3Jl
OjpHcmFwaGljc0xheWVyPiBuZXdMYXllciA9IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZSgwIC8qIGZh
Y3RvcnkgKi8sIHRoaXMpOworICAgIHRvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIobmV3TGF5
ZXIuZ2V0KCkpLT5zZXRIYXNPd25CYWNraW5nU3RvcmUoZmFsc2UpOworICAgIG1fbGF5ZXJzLmFk
ZChpZCwgbmV3TGF5ZXIucmVsZWFzZSgpKTsKK30KKwogdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6
ZGVsZXRlTGF5ZXIoQ29vcmRpbmF0ZWRMYXllcklEIGxheWVySUQpCiB7CiAgICAgT3duUHRyPEdy
YXBoaWNzTGF5ZXI+IGxheWVyID0gbV9sYXllcnMudGFrZShsYXllcklEKTsKLSAgICBpZiAoIWxh
eWVyKQotICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKGxheWVyKTsKIAogICAgIGxheWVyLT5y
ZW1vdmVGcm9tUGFyZW50KCk7CiAgICAgbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMucmVtb3Zl
KHRvVGV4dHVyZU1hcHBlckxheWVyKGxheWVyLmdldCgpKSk7CkBAIC0zNzYsMjAgKzM3Myw2IEBA
IHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OmRlbGV0ZUxheWVyKENvb3JkaW5hdGVkTGF5ZXJJRCBs
YXllcklEKQogI2VuZGlmCiB9CiAKLQotV2ViQ29yZTo6R3JhcGhpY3NMYXllciogTGF5ZXJUcmVl
UmVuZGVyZXI6OmVuc3VyZUxheWVyKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCkKLXsKLSAgICBMYXll
ck1hcDo6aXRlcmF0b3IgaXQgPSBtX2xheWVycy5maW5kKGlkKTsKLSAgICBpZiAoaXQgIT0gbV9s
YXllcnMuZW5kKCkpCi0gICAgICAgIHJldHVybiBpdC0+dmFsdWUuZ2V0KCk7Ci0KLSAgICBPd25Q
dHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllcj4gbmV3TGF5ZXIgPSBjcmVhdGVMYXllcihpZCk7Ci0g
ICAgV2ViQ29yZTo6R3JhcGhpY3NMYXllciogbGF5ZXIgPSBuZXdMYXllci5nZXQoKTsKLSAgICBt
X2xheWVycy5hZGQoaWQsIG5ld0xheWVyLnJlbGVhc2UoKSk7Ci0KLSAgICByZXR1cm4gbGF5ZXI7
Ci19Ci0KIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnNldFJvb3RMYXllcklEKENvb3JkaW5hdGVk
TGF5ZXJJRCBsYXllcklEKQogewogICAgIEFTU0VSVChsYXllcklEICE9IEludmFsaWRDb29yZGlu
YXRlZExheWVySUQpOwpAQCAtMzk4LDcgKzM4MSw3IEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6
OnNldFJvb3RMYXllcklEKENvb3JkaW5hdGVkTGF5ZXJJRCBsYXllcklEKQogICAgIG1fcm9vdExh
eWVySUQgPSBsYXllcklEOwogICAgIG1fcm9vdExheWVyLT5yZW1vdmVBbGxDaGlsZHJlbigpOwog
Ci0gICAgR3JhcGhpY3NMYXllciogbGF5ZXIgPSBlbnN1cmVMYXllcihsYXllcklEKTsKKyAgICBH
cmFwaGljc0xheWVyKiBsYXllciA9IGxheWVyQnlJRChsYXllcklEKTsKICAgICBtX3Jvb3RMYXll
ci0+YWRkQ2hpbGQobGF5ZXIpOwogfQogCkBAIC00ODIsNyArNDY1LDYgQEAgdm9pZCBMYXllclRy
ZWVSZW5kZXJlcjo6cmVzZXRCYWNraW5nU3RvcmVTaXplVG9MYXllclNpemUoR3JhcGhpY3NMYXll
ciogZ3JhcGhpY3MKIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OmNyZWF0ZVRpbGUoQ29vcmRpbmF0
ZWRMYXllcklEIGxheWVySUQsIHVpbnQzMl90IHRpbGVJRCwgZmxvYXQgc2NhbGUpCiB7CiAgICAg
R3JhcGhpY3NMYXllciogbGF5ZXIgPSBsYXllckJ5SUQobGF5ZXJJRCk7Ci0gICAgQVNTRVJUKGxh
eWVyKTsKICAgICBDb29yZGluYXRlZEJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlID0gZ2V0QmFj
a2luZ1N0b3JlKGxheWVyKTsKICAgICBBU1NFUlQoYmFja2luZ1N0b3JlKTsKICAgICBiYWNraW5n
U3RvcmUtPmNyZWF0ZVRpbGUodGlsZUlELCBzY2FsZSk7CkBAIC00OTIsNyArNDc0LDYgQEAgdm9p
ZCBMYXllclRyZWVSZW5kZXJlcjo6Y3JlYXRlVGlsZShDb29yZGluYXRlZExheWVySUQgbGF5ZXJJ
RCwgdWludDMyX3QgdGlsZUlELAogdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6cmVtb3ZlVGlsZShD
b29yZGluYXRlZExheWVySUQgbGF5ZXJJRCwgdWludDMyX3QgdGlsZUlEKQogewogICAgIEdyYXBo
aWNzTGF5ZXIqIGxheWVyID0gbGF5ZXJCeUlEKGxheWVySUQpOwotICAgIEFTU0VSVChsYXllcik7
CiAgICAgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSA9IGdldEJhY2tpbmdT
dG9yZShsYXllcik7CiAgICAgaWYgKCFiYWNraW5nU3RvcmUpCiAgICAgICAgIHJldHVybjsKQEAg
LTUwNSw3ICs0ODYsNiBAQCB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpyZW1vdmVUaWxlKENvb3Jk
aW5hdGVkTGF5ZXJJRCBsYXllcklELCB1aW50MzJfdCB0aWxlSUQpCiB2b2lkIExheWVyVHJlZVJl
bmRlcmVyOjp1cGRhdGVUaWxlKENvb3JkaW5hdGVkTGF5ZXJJRCBsYXllcklELCB1aW50MzJfdCB0
aWxlSUQsIGNvbnN0IFRpbGVVcGRhdGUmIHVwZGF0ZSkKIHsKICAgICBHcmFwaGljc0xheWVyKiBs
YXllciA9IGxheWVyQnlJRChsYXllcklEKTsKLSAgICBBU1NFUlQobGF5ZXIpOwogICAgIFJlZlB0
cjxDb29yZGluYXRlZEJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlID0gZ2V0QmFja2luZ1N0b3Jl
KGxheWVyKTsKICAgICBBU1NFUlQoYmFja2luZ1N0b3JlKTsKICAgICBiYWNraW5nU3RvcmUtPnVw
ZGF0ZVRpbGUodGlsZUlELCB1cGRhdGUuc291cmNlUmVjdCwgdXBkYXRlLnRpbGVSZWN0LCB1cGRh
dGUuc3VyZmFjZSwgdXBkYXRlLm9mZnNldCk7CkBAIC02MTQsNyArNTk0LDcgQEAgdm9pZCBMYXll
clRyZWVSZW5kZXJlcjo6ZW5zdXJlUm9vdExheWVyKCkKICAgICBpZiAobV9yb290TGF5ZXIpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fcm9vdExheWVyID0gY3JlYXRlTGF5ZXIoSW52YWxpZENv
b3JkaW5hdGVkTGF5ZXJJRCk7CisgICAgbV9yb290TGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVh
dGUoMCAvKiBmYWN0b3J5ICovLCB0aGlzKTsKICAgICBtX3Jvb3RMYXllci0+c2V0TWFza3NUb0Jv
dW5kcyhmYWxzZSk7CiAgICAgbV9yb290TGF5ZXItPnNldERyYXdzQ29udGVudChmYWxzZSk7CiAg
ICAgbV9yb290TGF5ZXItPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQzRCgwLCAwLCAwKSk7CkBA
IC02NzcsOCArNjU3LDYgQEAgdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6cHVyZ2VCYWNraW5nU3Rv
cmVzKCkKIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnNldExheWVyQW5pbWF0aW9ucyhDb29yZGlu
YXRlZExheWVySUQgaWQsIGNvbnN0IEdyYXBoaWNzTGF5ZXJBbmltYXRpb25zJiBhbmltYXRpb25z
KQogewogICAgIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKiBsYXllciA9IHRvR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXIobGF5ZXJCeUlEKGlkKSk7Ci0gICAgaWYgKCFsYXllcikKLSAgICAg
ICAgcmV0dXJuOwogI2lmIEVOQUJMRShDU1NfU0hBREVSUykKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGFuaW1hdGlvbnMuYW5pbWF0aW9ucygpLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGNv
bnN0IEtleWZyYW1lVmFsdWVMaXN0JiBrZXlmcmFtZXMgPSBhbmltYXRpb25zLmFuaW1hdGlvbnMo
KS5hdChpKS5rZXlmcmFtZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5oCmluZGV4
IGNiYzRlZjFmNmNlYmFmODRjODgwMTg5NWYzNmM4ZmYxZDhiOWUwZWEuLjUzZWNiZTM5NDk4MTg5
OWQyYWJiZTBmMjFkNDQ0MzQ0MjM5MzY0ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVy
ZXIuaApAQCAtODYsNiArODYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwdXJnZUdMUmVzb3VyY2Vz
KCk7CiAgICAgdm9pZCBzZXRBY3RpdmUoYm9vbCk7CiAKKyAgICB2b2lkIGNyZWF0ZUxheWVyKENv
b3JkaW5hdGVkTGF5ZXJJRCk7CiAgICAgdm9pZCBkZWxldGVMYXllcihDb29yZGluYXRlZExheWVy
SUQpOwogICAgIHZvaWQgc2V0Um9vdExheWVySUQoQ29vcmRpbmF0ZWRMYXllcklEKTsKICAgICB2
b2lkIHNldExheWVyQ2hpbGRyZW4oQ29vcmRpbmF0ZWRMYXllcklELCBjb25zdCBWZWN0b3I8Q29v
cmRpbmF0ZWRMYXllcklEPiYpOwpAQCAtMTE3LDkgKzExOCwxMyBAQCBwdWJsaWM6CiAjZW5kaWYK
IAogcHJpdmF0ZToKLSAgICBQYXNzT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI+IGNyZWF0
ZUxheWVyKENvb3JkaW5hdGVkTGF5ZXJJRCk7Ci0KLSAgICBXZWJDb3JlOjpHcmFwaGljc0xheWVy
KiBsYXllckJ5SUQoQ29vcmRpbmF0ZWRMYXllcklEIGlkKSB7IHJldHVybiAoaWQgPT0gSW52YWxp
ZENvb3JkaW5hdGVkTGF5ZXJJRCkgPyAwIDogbV9sYXllcnMuZ2V0KGlkKTsgfQorICAgIFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXIqIGxheWVyQnlJRChDb29yZGluYXRlZExheWVySUQgaWQpCisgICAg
eworICAgICAgICBBU1NFUlQobV9sYXllcnMuY29udGFpbnMoaWQpKTsKKyAgICAgICAgQVNTRVJU
KGlkICE9IEludmFsaWRDb29yZGluYXRlZExheWVySUQpOworICAgICAgICByZXR1cm4gbV9sYXll
cnMuZ2V0KGlkKTsKKyAgICB9CisgICAgV2ViQ29yZTo6R3JhcGhpY3NMYXllciogZ2V0TGF5ZXJC
eUlESWZFeGlzdHMoQ29vcmRpbmF0ZWRMYXllcklEKTsKICAgICBXZWJDb3JlOjpHcmFwaGljc0xh
eWVyKiByb290TGF5ZXIoKSB7IHJldHVybiBtX3Jvb3RMYXllci5nZXQoKTsgfQogCiAgICAgdm9p
ZCBzeW5jUmVtb3RlQ29udGVudCgpOwpAQCAtMTQxLDcgKzE0Niw2IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBhc3NpZ25JbWFnZUJhY2tpbmdUb0xheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqLCBD
b29yZGluYXRlZEltYWdlQmFja2luZ0lEKTsKICAgICB2b2lkIHJlbW92ZVJlbGVhc2VkSW1hZ2VC
YWNraW5nc0lmTmVlZGVkKCk7CiAgICAgdm9pZCBlbnN1cmVSb290TGF5ZXIoKTsKLSAgICBXZWJD
b3JlOjpHcmFwaGljc0xheWVyKiBlbnN1cmVMYXllcihDb29yZGluYXRlZExheWVySUQpOwogICAg
IHZvaWQgY29tbWl0UGVuZGluZ0JhY2tpbmdTdG9yZU9wZXJhdGlvbnMoKTsKIAogICAgIENvb3Jk
aW5hdGVkQmFja2luZ1N0b3JlKiBnZXRCYWNraW5nU3RvcmUoV2ViQ29yZTo6R3JhcGhpY3NMYXll
ciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdC5jcHAKaW5kZXggNDg0NDQ1MGM5OGY5NDk1NDA1NzVmYzQ4ZWEwYjExOTBkMzEw
OGE2Zi4uYmI5OTU1ZWQ4MGJkNDM1MzE0MjFiZGQxNTRlZjhjMjFiNmM3YmZjYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3Qu
Y3BwCkBAIC0yNjksNiArMjY5LDggQEAgYm9vbCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmZs
dXNoUGVuZGluZ0xheWVyQ2hhbmdlcygpCiAKICAgICBUZW1wb3JhcnlDaGFuZ2U8Ym9vbD4gcHJv
dGVjdG9yKG1faXNGbHVzaGluZ0xheWVyQ2hhbmdlcywgdHJ1ZSk7CiAKKyAgICBjcmVhdGVDb21w
b3NpdGluZ0xheWVycygpOworCiAgICAgaW5pdGlhbGl6ZVJvb3RDb21wb3NpdGluZ0xheWVySWZO
ZWVkZWQoKTsKIAogICAgIG1fcm9vdExheWVyLT5mbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlz
TGF5ZXJPbmx5KCk7CkBAIC0yODAsOSArMjgyLDcgQEAgYm9vbCBDb29yZGluYXRlZExheWVyVHJl
ZUhvc3Q6OmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcygpCiAKICAgICBmbHVzaFBlbmRpbmdJbWFn
ZUJhY2tpbmdDaGFuZ2VzKCk7CiAKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZGV0YWNo
ZWRMYXllcnMuc2l6ZSgpOyArK2kpCi0gICAgICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OkRlbGV0ZUNvbXBvc2l0aW5nTGF5ZXIobV9k
ZXRhY2hlZExheWVyc1tpXSkpOwotICAgIG1fZGV0YWNoZWRMYXllcnMuY2xlYXIoKTsKKyAgICBk
ZWxldGVDb21wb3NpdGluZ0xheWVycygpOwogCiAgICAgaWYgKG1fc2hvdWxkU3luY0ZyYW1lKSB7
CiAgICAgICAgIGRpZFN5bmMgPSB0cnVlOwpAQCAtMzAzLDYgKzMwMyw0MiBAQCBib29sIENvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdDo6Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCkKICAgICByZXR1
cm4gZGlkU3luYzsKIH0KIAordm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNyZWF0ZUNv
bXBvc2l0aW5nTGF5ZXJzKCkKK3sKKyAgICBpZiAobV9sYXllcnNUb0NyZWF0ZS5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybjsKKworICAgIC8vIElmIGEgbGF5ZXIgZ2V0cyBjcmVhdGVkIGFuZCBk
ZWxldGVkIGluIHRoZSBzYW1lIGN5Y2xlLCB3ZSBjYW4gc2ltcGx5IHJlbW92ZSBpdCBmcm9tIG1f
bGF5ZXJzVG9DcmVhdGUgYW5kIG1fbGF5ZXJzVG9EZWxldGUuCisgICAgZm9yIChpbnQgaSA9IG1f
bGF5ZXJzVG9DcmVhdGUuc2l6ZSgpIC0gMTsgaSA+PSAwOyAtLWkpIHsKKyAgICAgICAgc2l6ZV90
IGluZGV4ID0gbV9sYXllcnNUb0RlbGV0ZS5maW5kKG1fbGF5ZXJzVG9DcmVhdGVbaV0pOworICAg
ICAgICBpZiAoaW5kZXggIT0gbm90Rm91bmQpIHsKKyAgICAgICAgICAgIG1fbGF5ZXJzVG9DcmVh
dGUucmVtb3ZlKGkpOworICAgICAgICAgICAgbV9sYXllcnNUb0RlbGV0ZS5yZW1vdmUoaW5kZXgp
OworICAgICAgICB9CisgICAgfQorCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2xheWVy
c1RvQ3JlYXRlLnNpemUoKTsgKytpKQorICAgICAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6
OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpDcmVhdGVDb21wb3NpdGluZ0xheWVyKG1f
bGF5ZXJzVG9DcmVhdGVbaV0pKTsKKyAgICBtX2xheWVyc1RvQ3JlYXRlLmNsZWFyKCk7CisgICAg
bV9zaG91bGRTeW5jRnJhbWUgPSB0cnVlOworfQorCit2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdDo6ZGVsZXRlQ29tcG9zaXRpbmdMYXllcnMoKQoreworICAgIGlmIChtX2xheWVyc1RvRGVs
ZXRlLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1faXNQdXJnaW5nKSB7
CisgICAgICAgIG1fbGF5ZXJzVG9EZWxldGUuY2xlYXIoKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9sYXllcnNUb0RlbGV0ZS5zaXplKCk7
ICsraSkKKyAgICAgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpDb29yZGluYXRlZExheWVy
VHJlZUhvc3RQcm94eTo6RGVsZXRlQ29tcG9zaXRpbmdMYXllcihtX2xheWVyc1RvRGVsZXRlW2ld
KSk7CisgICAgbV9sYXllcnNUb0RlbGV0ZS5jbGVhcigpOworICAgIG1fc2hvdWxkU3luY0ZyYW1l
ID0gdHJ1ZTsKK30KKwogdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmluaXRpYWxpemVS
b290Q29tcG9zaXRpbmdMYXllcklmTmVlZGVkKCkKIHsKICAgICBpZiAobV9kaWRJbml0aWFsaXpl
Um9vdENvbXBvc2l0aW5nTGF5ZXIpCkBAIC00MjIsOCArNDU4LDcgQEAgdm9pZCBDb29yZGluYXRl
ZExheWVyVHJlZUhvc3Q6OmRpc2Nvbm5lY3RDdXN0b21GaWx0ZXJQcm9ncmFtcygpCiB2b2lkIENv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6ZGV0YWNoTGF5ZXIoQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyKiBsYXllcikKIHsKICAgICBtX3JlZ2lzdGVyZWRMYXllcnMucmVtb3ZlKGxheWVyKTsKLSAg
ICBtX3Nob3VsZFN5bmNGcmFtZSA9IHRydWU7Ci0gICAgbV9kZXRhY2hlZExheWVycy5hcHBlbmQo
bGF5ZXItPmlkKCkpOworICAgIG1fbGF5ZXJzVG9EZWxldGUuYXBwZW5kKGxheWVyLT5pZCgpKTsK
ICAgICBzY2hlZHVsZUxheWVyRmx1c2goKTsKIH0KIApAQCAtNjM3LDggKzY3MiwxMCBAQCBQYXNz
T3duUHRyPEdyYXBoaWNzTGF5ZXI+IENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlR3Jh
cGhpY3NMYXllcihHcmFwaGljcwogICAgIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllciogbGF5ZXIg
PSBuZXcgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKGNsaWVudCk7CiAgICAgbGF5ZXItPnNldENv
b3JkaW5hdG9yKHRoaXMpOwogICAgIG1fcmVnaXN0ZXJlZExheWVycy5hZGQobGF5ZXIpOworICAg
IG1fbGF5ZXJzVG9DcmVhdGUuYXBwZW5kKGxheWVyLT5pZCgpKTsKICAgICBsYXllci0+c2V0Q29u
dGVudHNTY2FsZShtX2NvbnRlbnRzU2NhbGUpOwogICAgIGxheWVyLT5zZXROZWVkc1Zpc2libGVS
ZWN0QWRqdXN0bWVudCgpOworICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOwogICAgIHJldHVybiBh
ZG9wdFB0cihsYXllcik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKaW5kZXggMzNmZWMwN2VhYzhjNTNlYjJiZGJiNTg0
NWMwNTdkYTM2ZTdmNTE3Zi4uNDgxOGVkOWYwMDBmOWI4NDhkZWFmNmEyNjMxYjllNzYyMDhhNmJm
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0LmgKQEAgLTE0MCw2ICsxNDAsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRl
UGFnZU92ZXJsYXlMYXllcigpOwogICAgIHZvaWQgZGVzdHJveVBhZ2VPdmVybGF5TGF5ZXIoKTsK
ICAgICBib29sIGZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcygpOworICAgIHZvaWQgY3JlYXRlQ29t
cG9zaXRpbmdMYXllcnMoKTsKKyAgICB2b2lkIGRlbGV0ZUNvbXBvc2l0aW5nTGF5ZXJzKCk7CiAg
ICAgdm9pZCBjYW5jZWxQZW5kaW5nTGF5ZXJGbHVzaCgpOwogICAgIHZvaWQgcGVyZm9ybVNjaGVk
dWxlZExheWVyRmx1c2goKTsKICAgICB2b2lkIGRpZFBlcmZvcm1TY2hlZHVsZWRMYXllckZsdXNo
KCk7CkBAIC0xNzMsNyArMTc1LDggQEAgcHJpdmF0ZToKICAgICBPd25QdHI8V2ViQ29yZTo6R3Jh
cGhpY3NMYXllcj4gbV9wYWdlT3ZlcmxheUxheWVyOwogCiAgICAgSGFzaFNldDxXZWJDb3JlOjpD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqPiBtX3JlZ2lzdGVyZWRMYXllcnM7Ci0gICAgVmVjdG9y
PENvb3JkaW5hdGVkTGF5ZXJJRD4gbV9kZXRhY2hlZExheWVyczsKKyAgICBWZWN0b3I8Q29vcmRp
bmF0ZWRMYXllcklEPiBtX2xheWVyc1RvQ3JlYXRlOworICAgIFZlY3RvcjxDb29yZGluYXRlZExh
eWVySUQ+IG1fbGF5ZXJzVG9EZWxldGU7CiAgICAgdHlwZWRlZiBIYXNoTWFwPENvb3JkaW5hdGVk
SW1hZ2VCYWNraW5nSUQsIFJlZlB0cjxDb29yZGluYXRlZEltYWdlQmFja2luZz4gPiBJbWFnZUJh
Y2tpbmdNYXA7CiAgICAgSW1hZ2VCYWNraW5nTWFwIG1faW1hZ2VCYWNraW5nczsKICAgICBWZWN0
b3I8T3duUHRyPFVwZGF0ZUF0bGFzPiA+IG1fdXBkYXRlQXRsYXNlczsK
</data>

          </attachment>
      

    </bug>

</bugzilla>