<?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>31879</bug_id>
          
          <creation_ts>2009-11-25 09:51:44 -0800</creation_ts>
          <short_desc>Optimize the hierarchy rebuilding of compositing layers</short_desc>
          <delta_ts>2009-11-29 19:22:31 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>cmarrin</cc>
    
    <cc>mitz</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>166494</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-11-25 09:51:44 -0800</bug_when>
    <thetext>When updating the compositing layer tree, at each compositing layer, we unparent all the child layers, and then re-add them one by one as we find they are composited.

This is inefficient; it also leaves the layers without a parent over some calls, which I need to fix in order to work on reflections.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166497</commentid>
    <comment_count>1</comment_count>
      <attachid>43856</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-11-25 10:02:55 -0800</bug_when>
    <thetext>Created attachment 43856
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166500</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-11-25 10:05:05 -0800</bug_when>
    <thetext>I filed bug 31880 to fix GraphicsLayerCACF.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166962</commentid>
    <comment_count>3</comment_count>
      <attachid>43856</attachid>
    <who name="">mitz</who>
    <bug_when>2009-11-27 15:18:39 -0800</bug_when>
    <thetext>Comment on attachment 43856
Patch

&gt; +        (WebCore::RenderLayerCompositor::rebuildCompositingLayerTree): Changed to
&gt; +        collect child layers into Vectors of GraphicsLayers, which can be set as
&gt; +        layer childen in one go.

Typo: childen.

&gt; +void GraphicsLayer::setChildren(const Vector&lt;GraphicsLayer*&gt;&amp; newChildren)

Perhaps you should use the GraphicsLayerList type here (move its definition if needed).

&gt; +    for (size_t i = 0; i &lt; listSize; ++i)
&gt; +        addChild(newChildren.at(i));

Usually at() is used with a pointer to a vector. Since you have a reference, please use [] notation.

&gt; +    GraphicsLayer::setChildren(children);
&gt; +    noteLayerPropertyChanged(ChildrenChanged);

Would it be more efficient if setChildren() returned a bool saying whether it had actually done anything, so you could skip notLayerPropertyChanged() if it hadn’t? Or is it very uncommon for setChildren() to be called with the same children vector?

&gt;  
&gt; -    // Now create and parent the compositing layers.
&gt; -    {
&gt; +    if (needLayerRebuild) {
&gt; +        // Now updated and parent the compositing layers.
&gt;          CompositingState compState(updateRoot);
&gt; -        rebuildCompositingLayerTree(updateRoot, compState, needLayerRebuild);
&gt; +        GraphicsLayerList childList;
&gt; +        rebuildCompositingLayerTree(updateRoot, compState, childList);
&gt; +
&gt; +        // Host the document layer in the RenderView&apos;s root layer.
&gt; +        if (updateRoot == rootRenderLayer() &amp;&amp; !childList.isEmpty())
&gt; +            m_rootPlatformLayer-&gt;setChildren(childList);
&gt; +    } else {
&gt; +        // We just need to do a geometry update.
&gt; +        updateLayerTreeGeometry(updateRoot);
&gt;      }
&gt;      
&gt;  #if PROFILE_LAYER_REBUILD
&gt; @@ -596,11 +604,13 @@ bool RenderLayerCompositor::canAccelerateVideoRendering(RenderVideo* o) const
&gt;  }
&gt;  #endif
&gt;  
&gt; -void RenderLayerCompositor::rebuildCompositingLayerTree(RenderLayer* layer, struct CompositingState&amp; compositingState, bool updateHierarchy)
&gt; +void RenderLayerCompositor::rebuildCompositingLayerTree(RenderLayer* layer, const CompositingState&amp; compositingState, GraphicsLayerList&amp; enclosingChildList)

In the declaration, you called the last parameter “childList”. I now understand the “enclosing” part, but I don’t think the name is very good. “Enclosing” doesn’t refer to the children in the list. For one, I’d drop the word “list” and work “GraphicsLayer” into the name. I think this argument is a “list of child GraphicsLayer of the enclosing compositing layer”. Maybe “childGraphicsLayersOfEnclosingLayer”?

&gt; +    GraphicsLayerList layerChildren;

Please move this definition down to where it’s first used.

&gt; +// This just updates layer geometry without doing any reparenting.

Can you say something like “changing the hierarchy” instead of “doing any reparenting”?

I think this is good as-is, so r+, but feel free to post an updated version!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167182</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-11-29 19:22:31 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/51476</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43856</attachid>
            <date>2009-11-25 10:02:55 -0800</date>
            <delta_ts>2009-11-27 15:18:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>31879_patch.txt</filename>
            <type>text/plain</type>
            <size>15153</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZjBmYWUwNS4uYTQwMjc4ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAwOS0xMS0yNSAgU2ltb24gRnJhc2Vy
ICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBPcHRpbWl6ZSB0aGUgaGllcmFyY2h5IHJlYnVpbGRpbmcgb2Yg
Y29tcG9zaXRpbmcgbGF5ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zMTg3OQorICAgICAgICAKKyAgICAgICAgV2hlbiB1cGRhdGluZyB0aGUgY29t
cG9zaXRpbmcgbGF5ZXIgaGllcmFyY2h5LCBpbnN0ZWFkIG9mIHJlbW92aW5nIGFsbAorICAgICAg
ICBjaGlsZCBsYXllcnMgYW5kIHRoZW4gcmUtYWRkaW5nIHRoZW0gb25lIGJ5IG9uZSwgYnVpbGQg
YSB2ZWN0b3Igb2YgY2hpbGQKKyAgICAgICAgbGF5ZXJzLCBhbmQgc2V0IHRoZW0gaW4gb25lIGdv
LgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpzZXRDaGlsZHJlbik6IE5ldyBtZXRob2QgdGhhdCB0
YWtlcyBhIFZlY3RvciBvZiBjaGlsZAorICAgICAgICBHcmFwaGljc0xheWVycy4KKyAgICAgICAg
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzTGF5ZXJDQS5oOiBPdmVy
cmlkZSBzZXRDaGlsZHJlbigpLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFw
aGljc0xheWVyQ0FDRi5oOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMv
R3JhcGhpY3NMYXllckNBLm1tOiAKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6
c2V0Q2hpbGRyZW4pOiBJbXBsZW1lbnQgc2V0Q2hpbGRyZW4oKSB0byAKKyAgICAgICAgc2V0IHRo
ZSBiaXQgdGhhdCBub3RlcyB0aGF0IHN1YmxheWVycyBjaGFuZ2VkLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0xheWVyQ0FDRi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyQ0FDRjo6c2V0Q2hpbGRyZW4pOiBJbXBsZW1lbnQgc2V0Q2hpbGRyZW4o
KSB0byAKKyAgICAgICAgdWRwYXRlIHN1YmxheWVycywgd2l0aCBhIG5vdGUgdGhhdCB0aGlzIGlz
IG5vdCBlZmZpY2llbnQuCisgICAgICAgIAorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQ29t
cG9zaXRpbmdMYXllcnMpOgorICAgICAgICBXaGVuIHVwZGF0aW5nIGNvbXBvc2l0aW5nIGxheWVy
cywgdXNlIHRoZSBmYXN0ZXIgdXBkYXRlTGF5ZXJUcmVlR2VvbWV0cnkoKSBpZgorICAgICAgICB3
ZSBrbm93IHRoYXQgbm8gbGF5ZXIgaGllcmFyY2h5IGNoYW5nZXMgYXJlIG5lZWRlZCwgYW5kLCBh
dCB0aGUgcm9vdCwgdXNlCisgICAgICAgIHRoZSB2ZWN0b3IgcmV0dXJuZWQgZnJvbSByZWJ1aWxk
Q29tcG9zaXRpbmdMYXllclRyZWUoKSB0byBhdHRhY2ggdGhlIHJvb3QKKyAgICAgICAgbGF5ZXIu
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlYnVpbGRDb21wb3Np
dGluZ0xheWVyVHJlZSk6IENoYW5nZWQgdG8KKyAgICAgICAgY29sbGVjdCBjaGlsZCBsYXllcnMg
aW50byBWZWN0b3JzIG9mIEdyYXBoaWNzTGF5ZXJzLCB3aGljaCBjYW4gYmUgc2V0IGFzCisgICAg
ICAgIGxheWVyIGNoaWxkZW4gaW4gb25lIGdvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXJDb21wb3NpdG9yOjp1cGRhdGVMYXllclRyZWVHZW9tZXRyeSk6IFNwbGl0IG91dCBmcm9tCisg
ICAgICAgIHJlYnVpbGRDb21wb3NpdGluZ0xheWVyVHJlZSgpIGZvciBzaW1wbGljaXR5LCBhbmQg
Y2FsbGVkIHdoZW4gd2UganVzdCBuZWVkIHRvCisgICAgICAgIHVwZGF0ZSBsYXllciBnZW9tZXRy
eSwgd2l0aG91dCBkb2luZyBhbnkgcmVwYXJlbnRpbmcuCisKIDIwMDktMTEtMjUgIEFsZXhhbmRl
ciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBQ
YXZlbCBGZWxkbWFuLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0xheWVyLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5j
cHAKaW5kZXggYzg1ODJiYi4uY2ZlM2UyZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXIuY3BwCkBAIC05Miw2ICs5MiwxOSBAQCBib29sIEdyYXBoaWNzTGF5ZXI6
Omhhc0FuY2VzdG9yKEdyYXBoaWNzTGF5ZXIqIGFuY2VzdG9yKSBjb25zdAogICAgIHJldHVybiBm
YWxzZTsKIH0KIAordm9pZCBHcmFwaGljc0xheWVyOjpzZXRDaGlsZHJlbihjb25zdCBWZWN0b3I8
R3JhcGhpY3NMYXllcio+JiBuZXdDaGlsZHJlbikKK3sKKyAgICAvLyBJZiB0aGUgY29udGVudHMg
b2YgdGhlIGFycmF5cyBhcmUgdGhlIHNhbWUsIG5vdGhpbmcgdG8gZG8uCisgICAgaWYgKG5ld0No
aWxkcmVuID09IG1fY2hpbGRyZW4pCisgICAgICAgIHJldHVybjsKKworICAgIHJlbW92ZUFsbENo
aWxkcmVuKCk7CisgICAgCisgICAgc2l6ZV90IGxpc3RTaXplID0gbmV3Q2hpbGRyZW4uc2l6ZSgp
OworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdFNpemU7ICsraSkKKyAgICAgICAgYWRk
Q2hpbGQobmV3Q2hpbGRyZW4uYXQoaSkpOworfQorCiB2b2lkIEdyYXBoaWNzTGF5ZXI6OmFkZENo
aWxkKEdyYXBoaWNzTGF5ZXIqIGNoaWxkTGF5ZXIpCiB7CiAgICAgQVNTRVJUKGNoaWxkTGF5ZXIg
IT0gdGhpcyk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
TGF5ZXIuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCmluZGV4
IGNlZDEyMWYuLjVhYTliY2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NMYXllci5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllci5oCkBAIC0xODIsNiArMTgyLDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzQW5jZXN0b3Io
R3JhcGhpY3NMYXllciopIGNvbnN0OwogICAgIAogICAgIGNvbnN0IFZlY3RvcjxHcmFwaGljc0xh
eWVyKj4mIGNoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbjsgfQorICAgIHZpcnR1
YWwgdm9pZCBzZXRDaGlsZHJlbihjb25zdCBWZWN0b3I8R3JhcGhpY3NMYXllcio+Jik7CiAKICAg
ICAvLyBBZGQgY2hpbGQgbGF5ZXJzLiBJZiB0aGUgY2hpbGQgaXMgYWxyZWFkeSBwYXJlbnRlZCwg
aXQgd2lsbCBiZSByZW1vdmVkIGZyb20gaXRzIG9sZCBwYXJlbnQuCiAgICAgdmlydHVhbCB2b2lk
IGFkZENoaWxkKEdyYXBoaWNzTGF5ZXIqKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0dyYXBoaWNzTGF5ZXJDQS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvR3JhcGhpY3NMYXllckNBLmgKaW5kZXggOGNmNTFiNC4uMTU3NzI2MyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NMYXllckNBLmgKKysrIGIv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NMYXllckNBLmgKQEAgLTU0LDYg
KzU0LDcgQEAgcHVibGljOgogICAgIC8vIGZvciBob3N0aW5nIHRoaXMgR3JhcGhpY3NMYXllciBp
biBhIG5hdGl2ZSBsYXllciBoaWVyYXJjaHkKICAgICB2aXJ0dWFsIE5hdGl2ZUxheWVyIG5hdGl2
ZUxheWVyKCkgY29uc3Q7CiAKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2hpbGRyZW4oY29uc3QgVmVj
dG9yPEdyYXBoaWNzTGF5ZXIqPiYpOwogICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChHcmFwaGlj
c0xheWVyKik7CiAgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkQXRJbmRleChHcmFwaGljc0xheWVy
KiwgaW50IGluZGV4KTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGRBYm92ZShHcmFwaGljc0xh
eWVyKiBsYXllciwgR3JhcGhpY3NMYXllciogc2libGluZyk7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0xheWVyQ0EubW0gYi9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0xheWVyQ0EubW0KaW5kZXggZjkzMGI5Yi4uMDc0Mzg4
MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NMYXll
ckNBLm1tCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzTGF5ZXJD
QS5tbQpAQCAtNDEwLDYgKzQxMCwxMiBAQCBOYXRpdmVMYXllciBHcmFwaGljc0xheWVyQ0E6Om5h
dGl2ZUxheWVyKCkgY29uc3QKICAgICByZXR1cm4gbV9sYXllci5nZXQoKTsKIH0KIAordm9pZCBH
cmFwaGljc0xheWVyQ0E6OnNldENoaWxkcmVuKGNvbnN0IFZlY3RvcjxHcmFwaGljc0xheWVyKj4m
IGNoaWxkcmVuKQoreworICAgIEdyYXBoaWNzTGF5ZXI6OnNldENoaWxkcmVuKGNoaWxkcmVuKTsK
KyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQ2hpbGRyZW5DaGFuZ2VkKTsKK30KKwogdm9p
ZCBHcmFwaGljc0xheWVyQ0E6OmFkZENoaWxkKEdyYXBoaWNzTGF5ZXIqIGNoaWxkTGF5ZXIpCiB7
CiAgICAgR3JhcGhpY3NMYXllcjo6YWRkQ2hpbGQoY2hpbGRMYXllcik7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0xheWVyQ0FDRi5jcHAgYi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0xheWVyQ0FDRi5jcHAKaW5kZXggZGQx
NWNlYi4uNTA2MDY4MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
R3JhcGhpY3NMYXllckNBQ0YuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0dyYXBoaWNzTGF5ZXJDQUNGLmNwcApAQCAtMTUxLDYgKzE1MSwxNCBAQCBOYXRpdmVMYXllciBH
cmFwaGljc0xheWVyQ0FDRjo6bmF0aXZlTGF5ZXIoKSBjb25zdAogICAgIHJldHVybiBtX2xheWVy
LmdldCgpOwogfQogCit2b2lkIEdyYXBoaWNzTGF5ZXJDQUNGOjpzZXRDaGlsZHJlbihjb25zdCBW
ZWN0b3I8R3JhcGhpY3NMYXllcio+JiBjaGlsZHJlbikKK3sKKyAgICBHcmFwaGljc0xheWVyOjpz
ZXRDaGlsZHJlbihjaGlsZHJlbik7CisgICAgLy8gRklYTUU6IEdyYXBoaWNzTGF5ZXI6OnNldENo
aWxkcmVuIGNhbGxzIGFkZENoaWxkKCkgZm9yIGVhY2ggc3VibGF5ZXIsIHdoaWNoCisgICAgLy8g
d2lsbCBlbmQgdXAgY2FsbGluZyB1cGRhdGVTdWJsYXllckxpc3QoKSBOIHRpbWVzLgorICAgIHVw
ZGF0ZVN1YmxheWVyTGlzdCgpOworfQorCiB2b2lkIEdyYXBoaWNzTGF5ZXJDQUNGOjphZGRDaGls
ZChHcmFwaGljc0xheWVyKiBjaGlsZExheWVyKQogewogICAgIEdyYXBoaWNzTGF5ZXI6OmFkZENo
aWxkKGNoaWxkTGF5ZXIpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vR3JhcGhpY3NMYXllckNBQ0YuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dy
YXBoaWNzTGF5ZXJDQUNGLmgKaW5kZXggYjA0OGIzNy4uNzc1ZGM3NiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NMYXllckNBQ0YuaAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0xheWVyQ0FDRi5oCkBAIC00Nyw2ICs0
Nyw3IEBAIHB1YmxpYzoKICAgICAvLyBmb3IgaG9zdGluZyB0aGlzIEdyYXBoaWNzTGF5ZXIgaW4g
YSBuYXRpdmUgbGF5ZXIgaGllcmFyY2h5CiAgICAgdmlydHVhbCBOYXRpdmVMYXllciBuYXRpdmVM
YXllcigpIGNvbnN0OwogCisgICAgdmlydHVhbCB2b2lkIHNldENoaWxkcmVuKGNvbnN0IFZlY3Rv
cjxHcmFwaGljc0xheWVyKj4mKTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoR3JhcGhpY3NM
YXllciAqbGF5ZXIpOwogICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZEF0SW5kZXgoR3JhcGhpY3NM
YXllciAqbGF5ZXIsIGludCBpbmRleCk7CiAgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkQWJvdmUo
R3JhcGhpY3NMYXllciAqbGF5ZXIsIEdyYXBoaWNzTGF5ZXIgKnNpYmxpbmcpOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXggODBmZDEzOS4uOWQ1OGUw
ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNw
cAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC0x
ODUsMTAgKzE4NSwxOCBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQ29tcG9z
aXRpbmdMYXllcnMoUmVuZGVyTGF5ZXIqIHVwZGF0ZVJvb3QpCiAgICAgICAgIG5lZWRMYXllclJl
YnVpbGQgfD0gbGF5ZXJzQ2hhbmdlZDsKICAgICB9CiAKLSAgICAvLyBOb3cgY3JlYXRlIGFuZCBw
YXJlbnQgdGhlIGNvbXBvc2l0aW5nIGxheWVycy4KLSAgICB7CisgICAgaWYgKG5lZWRMYXllclJl
YnVpbGQpIHsKKyAgICAgICAgLy8gTm93IHVwZGF0ZWQgYW5kIHBhcmVudCB0aGUgY29tcG9zaXRp
bmcgbGF5ZXJzLgogICAgICAgICBDb21wb3NpdGluZ1N0YXRlIGNvbXBTdGF0ZSh1cGRhdGVSb290
KTsKLSAgICAgICAgcmVidWlsZENvbXBvc2l0aW5nTGF5ZXJUcmVlKHVwZGF0ZVJvb3QsIGNvbXBT
dGF0ZSwgbmVlZExheWVyUmVidWlsZCk7CisgICAgICAgIEdyYXBoaWNzTGF5ZXJMaXN0IGNoaWxk
TGlzdDsKKyAgICAgICAgcmVidWlsZENvbXBvc2l0aW5nTGF5ZXJUcmVlKHVwZGF0ZVJvb3QsIGNv
bXBTdGF0ZSwgY2hpbGRMaXN0KTsKKworICAgICAgICAvLyBIb3N0IHRoZSBkb2N1bWVudCBsYXll
ciBpbiB0aGUgUmVuZGVyVmlldydzIHJvb3QgbGF5ZXIuCisgICAgICAgIGlmICh1cGRhdGVSb290
ID09IHJvb3RSZW5kZXJMYXllcigpICYmICFjaGlsZExpc3QuaXNFbXB0eSgpKQorICAgICAgICAg
ICAgbV9yb290UGxhdGZvcm1MYXllci0+c2V0Q2hpbGRyZW4oY2hpbGRMaXN0KTsKKyAgICB9IGVs
c2UgeworICAgICAgICAvLyBXZSBqdXN0IG5lZWQgdG8gZG8gYSBnZW9tZXRyeSB1cGRhdGUuCisg
ICAgICAgIHVwZGF0ZUxheWVyVHJlZUdlb21ldHJ5KHVwZGF0ZVJvb3QpOwogICAgIH0KICAgICAK
ICNpZiBQUk9GSUxFX0xBWUVSX1JFQlVJTEQKQEAgLTU5NiwxMSArNjA0LDEzIEBAIGJvb2wgUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjpjYW5BY2NlbGVyYXRlVmlkZW9SZW5kZXJpbmcoUmVuZGVyVmlk
ZW8qIG8pIGNvbnN0CiB9CiAjZW5kaWYKIAotdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJl
YnVpbGRDb21wb3NpdGluZ0xheWVyVHJlZShSZW5kZXJMYXllciogbGF5ZXIsIHN0cnVjdCBDb21w
b3NpdGluZ1N0YXRlJiBjb21wb3NpdGluZ1N0YXRlLCBib29sIHVwZGF0ZUhpZXJhcmNoeSkKK3Zv
aWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZWJ1aWxkQ29tcG9zaXRpbmdMYXllclRyZWUoUmVu
ZGVyTGF5ZXIqIGxheWVyLCBjb25zdCBDb21wb3NpdGluZ1N0YXRlJiBjb21wb3NpdGluZ1N0YXRl
LCBHcmFwaGljc0xheWVyTGlzdCYgZW5jbG9zaW5nQ2hpbGRMaXN0KQogewogICAgIC8vIE1ha2Ug
dGhlIGxheWVyIGNvbXBvc2l0aW5nIGlmIG5lY2Vzc2FyeSwgYW5kIHNldCB1cCBjbGlwcGluZyBh
bmQgY29udGVudCBsYXllcnMuCiAgICAgLy8gTm90ZSB0aGF0IHdlIGNhbiBvbmx5IGRvIHdvcmsg
aGVyZSB0aGF0IGlzIGluZGVwZW5kZW50IG9mIHdoZXRoZXIgdGhlIGRlc2NlbmRhbnQgbGF5ZXJz
CiAgICAgLy8gaGF2ZSBiZWVuIHByb2Nlc3NlZC4gY29tcHV0ZUNvbXBvc2l0aW5nUmVxdWlyZW1l
bnRzKCkgd2lsbCBhbHJlYWR5IGhhdmUgZG9uZSB0aGUgcmVwYWludCBpZiBuZWNlc3NhcnkuCisg
ICAgCisgICAgR3JhcGhpY3NMYXllckxpc3QgbGF5ZXJDaGlsZHJlbjsKICAgICBSZW5kZXJMYXll
ckJhY2tpbmcqIGxheWVyQmFja2luZyA9IGxheWVyLT5iYWNraW5nKCk7CiAgICAgaWYgKGxheWVy
QmFja2luZykgewogICAgICAgICAvLyBUaGUgY29tcG9zaXRpbmcgc3RhdGUgb2YgYWxsIG91ciBj
aGlsZHJlbiBoYXMgYmVlbiB1cGRhdGVkIGFscmVhZHksIHNvIG5vdwpAQCAtNjExLDE1ICs2MjEs
MTEgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlYnVpbGRDb21wb3NpdGluZ0xheWVy
VHJlZShSZW5kZXJMYXllciogbGF5ZXIsIHN0cnUKIAogICAgICAgICBpZiAoIWxheWVyLT5wYXJl
bnQoKSkKICAgICAgICAgICAgIHVwZGF0ZVJvb3RMYXllclBvc2l0aW9uKCk7Ci0KLSAgICAgICAg
Ly8gRklYTUU6IG1ha2UgdGhpcyBtb3JlIGluY3JlbWVudGFsCi0gICAgICAgIGlmICh1cGRhdGVI
aWVyYXJjaHkpCi0gICAgICAgICAgICBsYXllckJhY2tpbmctPnBhcmVudEZvclN1YmxheWVycygp
LT5yZW1vdmVBbGxDaGlsZHJlbigpOwogICAgIH0KIAotICAgIC8vIGhvc3QgdGhlIGRvY3VtZW50
IGxheWVyIGluIHRoZSBSZW5kZXJWaWV3J3Mgcm9vdCBsYXllcgotICAgIGlmICh1cGRhdGVIaWVy
YXJjaHkgJiYgbGF5ZXItPmlzUm9vdExheWVyKCkgJiYgbGF5ZXItPmlzQ29tcG9zaXRlZCgpKQot
ICAgICAgICBwYXJlbnRJblJvb3RMYXllcihsYXllcik7CisgICAgLy8gSWYgdGhpcyBsYXllciBo
YXMgYmFja2luZywgdGhlbiB3ZSBhcmUgY29sbGVjdGluZyBpdHMgY2hpbGRyZW4sIG90aGVyd2lz
ZSBhcHBlbmRpbmcKKyAgICAvLyB0byB0aGUgY29tcG9zaXRpbmcgY2hpbGQgbGlzdCBvZiBhbiBl
bmNsb3NpbmcgbGF5ZXIuCisgICAgR3JhcGhpY3NMYXllckxpc3QmIGNoaWxkTGlzdCA9IGxheWVy
QmFja2luZyA/IGxheWVyQ2hpbGRyZW4gOiBlbmNsb3NpbmdDaGlsZExpc3Q7CiAKICAgICBDb21w
b3NpdGluZ1N0YXRlIGNoaWxkU3RhdGUgPSBjb21wb3NpdGluZ1N0YXRlOwogICAgIGlmIChsYXll
ci0+aXNDb21wb3NpdGVkKCkpCkBAIC02NDAsMTkgKzY0NiwxMyBAQCB2b2lkIFJlbmRlckxheWVy
Q29tcG9zaXRvcjo6cmVidWlsZENvbXBvc2l0aW5nTGF5ZXJUcmVlKFJlbmRlckxheWVyKiBsYXll
ciwgc3RydQogICAgICAgICAgICAgc2l6ZV90IGxpc3RTaXplID0gbmVnWk9yZGVyTGlzdC0+c2l6
ZSgpOwogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0U2l6ZTsgKytpKSB7
CiAgICAgICAgICAgICAgICAgUmVuZGVyTGF5ZXIqIGN1ckxheWVyID0gbmVnWk9yZGVyTGlzdC0+
YXQoaSk7Ci0gICAgICAgICAgICAgICAgcmVidWlsZENvbXBvc2l0aW5nTGF5ZXJUcmVlKGN1ckxh
eWVyLCBjaGlsZFN0YXRlLCB1cGRhdGVIaWVyYXJjaHkpOwotICAgICAgICAgICAgICAgIGlmICh1
cGRhdGVIaWVyYXJjaHkgJiYgY3VyTGF5ZXItPmlzQ29tcG9zaXRlZCgpKQotICAgICAgICAgICAg
ICAgICAgICBzZXRDb21wb3NpdGluZ1BhcmVudChjdXJMYXllciwgY2hpbGRTdGF0ZS5tX2NvbXBv
c2l0aW5nQW5jZXN0b3IpOworICAgICAgICAgICAgICAgIHJlYnVpbGRDb21wb3NpdGluZ0xheWVy
VHJlZShjdXJMYXllciwgY2hpbGRTdGF0ZSwgY2hpbGRMaXN0KTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogCi0gICAgICAgIGlmICh1cGRhdGVIaWVyYXJjaHkgJiYgbGF5ZXJCYWNraW5nICYm
IGxheWVyQmFja2luZy0+Zm9yZWdyb3VuZExheWVyKCkpIHsKLSAgICAgICAgICAgIGxheWVyQmFj
a2luZy0+Zm9yZWdyb3VuZExheWVyKCktPnJlbW92ZUZyb21QYXJlbnQoKTsKLSAgICAgICAgICAg
IAotICAgICAgICAgICAgLy8gVGhlIGZvcmVncm91bmQgbGF5ZXIgaGFzIHRvIGJlIGNvcnJlY3Rs
eSBzb3J0ZWQgd2l0aCBjaGlsZCBsYXllcnMsIHNvIG5lZWRzIHRvIGJlY29tZSBhIGNoaWxkIG9m
IHRoZSBjbGlwcGluZyBsYXllci4KLSAgICAgICAgICAgIEdyYXBoaWNzTGF5ZXIqIGhvc3RpbmdM
YXllciA9IGxheWVyQmFja2luZy0+cGFyZW50Rm9yU3VibGF5ZXJzKCk7Ci0gICAgICAgICAgICBo
b3N0aW5nTGF5ZXItPmFkZENoaWxkKGxheWVyQmFja2luZy0+Zm9yZWdyb3VuZExheWVyKCkpOwot
ICAgICAgICB9CisgICAgICAgIC8vIElmIGEgbmVnYXRpdmUgei1vcmRlciBjaGlsZCBpcyBjb21w
b3NpdGluZywgd2UgZ2V0IGEgZm9yZWdyb3VuZCBsYXllciB3aGljaCBuZWVkcyB0byBnZXQgcGFy
ZW50ZWQuCisgICAgICAgIGlmIChsYXllckJhY2tpbmcgJiYgbGF5ZXJCYWNraW5nLT5mb3JlZ3Jv
dW5kTGF5ZXIoKSkKKyAgICAgICAgICAgIGNoaWxkTGlzdC5hcHBlbmQobGF5ZXJCYWNraW5nLT5m
b3JlZ3JvdW5kTGF5ZXIoKSk7CiAgICAgfQogCiAgICAgQVNTRVJUKCFsYXllci0+bV9ub3JtYWxG
bG93TGlzdERpcnR5KTsKQEAgLTY2MCw5ICs2NjAsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9z
aXRvcjo6cmVidWlsZENvbXBvc2l0aW5nTGF5ZXJUcmVlKFJlbmRlckxheWVyKiBsYXllciwgc3Ry
dQogICAgICAgICBzaXplX3QgbGlzdFNpemUgPSBub3JtYWxGbG93TGlzdC0+c2l6ZSgpOwogICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3RTaXplOyArK2kpIHsKICAgICAgICAgICAg
IFJlbmRlckxheWVyKiBjdXJMYXllciA9IG5vcm1hbEZsb3dMaXN0LT5hdChpKTsKLSAgICAgICAg
ICAgIHJlYnVpbGRDb21wb3NpdGluZ0xheWVyVHJlZShjdXJMYXllciwgY2hpbGRTdGF0ZSwgdXBk
YXRlSGllcmFyY2h5KTsKLSAgICAgICAgICAgIGlmICh1cGRhdGVIaWVyYXJjaHkgJiYgY3VyTGF5
ZXItPmlzQ29tcG9zaXRlZCgpKQotICAgICAgICAgICAgICAgIHNldENvbXBvc2l0aW5nUGFyZW50
KGN1ckxheWVyLCBjaGlsZFN0YXRlLm1fY29tcG9zaXRpbmdBbmNlc3Rvcik7CisgICAgICAgICAg
ICByZWJ1aWxkQ29tcG9zaXRpbmdMYXllclRyZWUoY3VyTGF5ZXIsIGNoaWxkU3RhdGUsIGNoaWxk
TGlzdCk7CiAgICAgICAgIH0KICAgICB9CiAgICAgCkBAIC02NzEsMTQgKzY2OSw2MCBAQCB2b2lk
IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVidWlsZENvbXBvc2l0aW5nTGF5ZXJUcmVlKFJlbmRl
ckxheWVyKiBsYXllciwgc3RydQogICAgICAgICAgICAgc2l6ZV90IGxpc3RTaXplID0gcG9zWk9y
ZGVyTGlzdC0+c2l6ZSgpOwogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0
U2l6ZTsgKytpKSB7CiAgICAgICAgICAgICAgICAgUmVuZGVyTGF5ZXIqIGN1ckxheWVyID0gcG9z
Wk9yZGVyTGlzdC0+YXQoaSk7Ci0gICAgICAgICAgICAgICAgcmVidWlsZENvbXBvc2l0aW5nTGF5
ZXJUcmVlKGN1ckxheWVyLCBjaGlsZFN0YXRlLCB1cGRhdGVIaWVyYXJjaHkpOwotICAgICAgICAg
ICAgICAgIGlmICh1cGRhdGVIaWVyYXJjaHkgJiYgY3VyTGF5ZXItPmlzQ29tcG9zaXRlZCgpKQot
ICAgICAgICAgICAgICAgICAgICBzZXRDb21wb3NpdGluZ1BhcmVudChjdXJMYXllciwgY2hpbGRT
dGF0ZS5tX2NvbXBvc2l0aW5nQW5jZXN0b3IpOworICAgICAgICAgICAgICAgIHJlYnVpbGRDb21w
b3NpdGluZ0xheWVyVHJlZShjdXJMYXllciwgY2hpbGRTdGF0ZSwgY2hpbGRMaXN0KTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgIH0KKyAgICAKKyAgICBpZiAobGF5ZXJCYWNraW5nKSB7
CisgICAgICAgIGxheWVyQmFja2luZy0+cGFyZW50Rm9yU3VibGF5ZXJzKCktPnNldENoaWxkcmVu
KGxheWVyQ2hpbGRyZW4pOworICAgICAgICBlbmNsb3NpbmdDaGlsZExpc3QuYXBwZW5kKGxheWVy
QmFja2luZy0+Y2hpbGRGb3JTdXBlcmxheWVycygpKTsKKyAgICB9CiB9CiAKKy8vIFRoaXMganVz
dCB1cGRhdGVzIGxheWVyIGdlb21ldHJ5IHdpdGhvdXQgZG9pbmcgYW55IHJlcGFyZW50aW5nLgor
dm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUxheWVyVHJlZUdlb21ldHJ5KFJlbmRl
ckxheWVyKiBsYXllcikKK3sKKyAgICBpZiAoUmVuZGVyTGF5ZXJCYWNraW5nKiBsYXllckJhY2tp
bmcgPSBsYXllci0+YmFja2luZygpKSB7CisgICAgICAgIC8vIFRoZSBjb21wb3NpdGluZyBzdGF0
ZSBvZiBhbGwgb3VyIGNoaWxkcmVuIGhhcyBiZWVuIHVwZGF0ZWQgYWxyZWFkeSwgc28gbm93Cisg
ICAgICAgIC8vIHdlIGNhbiBjb21wdXRlIGFuZCBjYWNoZSB0aGUgY29tcG9zaXRlZCBib3VuZHMg
Zm9yIHRoaXMgbGF5ZXIuCisgICAgICAgIGxheWVyQmFja2luZy0+dXBkYXRlQ29tcG9zaXRlZEJv
dW5kcygpOworCisgICAgICAgIGlmIChsYXllci0+cmVmbGVjdGlvbkxheWVyKCkpCisgICAgICAg
ICAgICBsYXllci0+cmVmbGVjdGlvbkxheWVyKCktPmJhY2tpbmcoKS0+dXBkYXRlQ29tcG9zaXRl
ZEJvdW5kcygpOworCisgICAgICAgIGxheWVyQmFja2luZy0+dXBkYXRlR3JhcGhpY3NMYXllckNv
bmZpZ3VyYXRpb24oKTsKKyAgICAgICAgbGF5ZXJCYWNraW5nLT51cGRhdGVHcmFwaGljc0xheWVy
R2VvbWV0cnkoKTsKKworICAgICAgICBpZiAoIWxheWVyLT5wYXJlbnQoKSkKKyAgICAgICAgICAg
IHVwZGF0ZVJvb3RMYXllclBvc2l0aW9uKCk7CisgICAgfQorCisgICAgaWYgKGxheWVyLT5pc1N0
YWNraW5nQ29udGV4dCgpKSB7CisgICAgICAgIEFTU0VSVCghbGF5ZXItPm1fek9yZGVyTGlzdHNE
aXJ0eSk7CisKKyAgICAgICAgaWYgKFZlY3RvcjxSZW5kZXJMYXllcio+KiBuZWdaT3JkZXJMaXN0
ID0gbGF5ZXItPm5lZ1pPcmRlckxpc3QoKSkgeworICAgICAgICAgICAgc2l6ZV90IGxpc3RTaXpl
ID0gbmVnWk9yZGVyTGlzdC0+c2l6ZSgpOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBsaXN0U2l6ZTsgKytpKQorICAgICAgICAgICAgICAgIHVwZGF0ZUxheWVyVHJlZUdlb21l
dHJ5KG5lZ1pPcmRlckxpc3QtPmF0KGkpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEFTU0VS
VCghbGF5ZXItPm1fbm9ybWFsRmxvd0xpc3REaXJ0eSk7CisgICAgaWYgKFZlY3RvcjxSZW5kZXJM
YXllcio+KiBub3JtYWxGbG93TGlzdCA9IGxheWVyLT5ub3JtYWxGbG93TGlzdCgpKSB7CisgICAg
ICAgIHNpemVfdCBsaXN0U2l6ZSA9IG5vcm1hbEZsb3dMaXN0LT5zaXplKCk7CisgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdFNpemU7ICsraSkKKyAgICAgICAgICAgIHVwZGF0ZUxh
eWVyVHJlZUdlb21ldHJ5KG5vcm1hbEZsb3dMaXN0LT5hdChpKSk7CisgICAgfQorICAgIAorICAg
IGlmIChsYXllci0+aXNTdGFja2luZ0NvbnRleHQoKSkgeworICAgICAgICBpZiAoVmVjdG9yPFJl
bmRlckxheWVyKj4qIHBvc1pPcmRlckxpc3QgPSBsYXllci0+cG9zWk9yZGVyTGlzdCgpKSB7Cisg
ICAgICAgICAgICBzaXplX3QgbGlzdFNpemUgPSBwb3NaT3JkZXJMaXN0LT5zaXplKCk7CisgICAg
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3RTaXplOyArK2kpCisgICAgICAgICAg
ICAgICAgdXBkYXRlTGF5ZXJUcmVlR2VvbWV0cnkocG9zWk9yZGVyTGlzdC0+YXQoaSkpOworICAg
ICAgICB9CisgICAgfQorfQogCiAvLyBSZWN1cnMgZG93biB0aGUgUmVuZGVyTGF5ZXIgdHJlZSB1
bnRpbCBpdHMgZmluZHMgdGhlIGNvbXBvc2l0aW5nIGRlc2NlbmRhbnRzIG9mIGNvbXBvc2l0aW5n
QW5jZXN0b3IgYW5kIHVwZGF0ZXMgdGhlaXIgZ2VvbWV0cnkuCiB2b2lkIFJlbmRlckxheWVyQ29t
cG9zaXRvcjo6dXBkYXRlQ29tcG9zaXRpbmdEZXNjZW5kYW50R2VvbWV0cnkoUmVuZGVyTGF5ZXIq
IGNvbXBvc2l0aW5nQW5jZXN0b3IsIFJlbmRlckxheWVyKiBsYXllciwgUmVuZGVyTGF5ZXJCYWNr
aW5nOjpVcGRhdGVEZXB0aCB1cGRhdGVEZXB0aCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmgKaW5kZXggYTY1NDM3OC4uZjViYjQzYiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKQEAgLTE1MCw4ICsxNTAsMTQgQEAgcHJpdmF0ZToK
IAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBhbnkgbGF5ZXIncyBjb21wb3NpdGluZyBjaGFuZ2Vk
CiAgICAgdm9pZCBjb21wdXRlQ29tcG9zaXRpbmdSZXF1aXJlbWVudHMoUmVuZGVyTGF5ZXIqLCBP
dmVybGFwTWFwKiwgc3RydWN0IENvbXBvc2l0aW5nU3RhdGUmLCBib29sJiBsYXllcnNDaGFuZ2Vk
KTsKLSAgICB2b2lkIHJlYnVpbGRDb21wb3NpdGluZ0xheWVyVHJlZShSZW5kZXJMYXllciogbGF5
ZXIsIHN0cnVjdCBDb21wb3NpdGluZ1N0YXRlJiwgYm9vbCB1cGRhdGVIaWVyYXJjaHkpOworICAg
IAorICAgIC8vIFJlY3Vyc2VzIGRvd24gdGhlIHRyZWUsIHBhcmVudGluZyBkZXNjZW5kYW50IGNv
bXBvc2l0aW5nIGxheWVycyBhbmQgY29sbGVjdGluZyBhbiBhcnJheSBvZiBjaGlsZCBsYXllcnMg
Zm9yIHRoZSBjdXJyZW50IGNvbXBvc2l0aW5nIGxheWVyLgorICAgIHR5cGVkZWYgVmVjdG9yPEdy
YXBoaWNzTGF5ZXIqPiBHcmFwaGljc0xheWVyTGlzdDsKKyAgICB2b2lkIHJlYnVpbGRDb21wb3Np
dGluZ0xheWVyVHJlZShSZW5kZXJMYXllciogbGF5ZXIsIGNvbnN0IHN0cnVjdCBDb21wb3NpdGlu
Z1N0YXRlJiwgR3JhcGhpY3NMYXllckxpc3QmIGNoaWxkTGlzdCk7CiAKKyAgICAvLyBSZWN1cnNl
cyBkb3duIHRoZSB0cmVlLCB1cGRhdGluZyBsYXllciBnZW9tZXRyeSBvbmx5LgorICAgIHZvaWQg
dXBkYXRlTGF5ZXJUcmVlR2VvbWV0cnkoUmVuZGVyTGF5ZXIqKTsKKyAgICAKICAgICAvLyBIb29r
IGNvbXBvc2l0aW5nIGxheWVycyB0b2dldGhlcgogICAgIHZvaWQgc2V0Q29tcG9zaXRpbmdQYXJl
bnQoUmVuZGVyTGF5ZXIqIGNoaWxkTGF5ZXIsIFJlbmRlckxheWVyKiBwYXJlbnRMYXllcik7CiAg
ICAgdm9pZCByZW1vdmVDb21wb3NpdGVkQ2hpbGRyZW4oUmVuZGVyTGF5ZXIqKTsK
</data>
<flag name="review"
          id="25599"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>