<?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>75883</bug_id>
          
          <creation_ts>2012-01-09 12:30:24 -0800</creation_ts>
          <short_desc>[Qt][WK2] WebProcess crashes when composited reflections/masks are present</short_desc>
          <delta_ts>2012-02-09 06:27:33 -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>Qt</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Noam Rosenthal">noam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>hausmann</cc>
    
    <cc>jturcotte</cc>
    
    <cc>kenneth</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>532425</commentid>
    <comment_count>0</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-01-09 12:30:24 -0800</bug_when>
    <thetext>All files in LayoutTests/compositing/reflections cause the web-process to crash.Q</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532566</commentid>
    <comment_count>1</comment_count>
      <attachid>121733</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-01-09 15:31:50 -0800</bug_when>
    <thetext>Created attachment 121733
Patch

Some of the layout tests still don&apos;t render correctly, but that can be fixed in a later patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532982</commentid>
    <comment_count>2</comment_count>
      <attachid>121733</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-01-10 05:11:17 -0800</bug_when>
    <thetext>Comment on attachment 121733
Patch

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

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperNode.cpp:254
&gt; +        HashMap&lt;int, ExternallyManagedTile&gt;::iterator mapEnd = m_externallyManagedTiles.end();
&gt; +        for (HashMap&lt;int, ExternallyManagedTile&gt;::iterator mapIterator = m_externallyManagedTiles.begin(); mapIterator != mapEnd; ++mapIterator) {

I think using &apos;end&apos; and &apos;it&apos; would be sufficient. Very common pattern in webkit

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebGraphicsLayer.cpp:382
&gt; +
&gt; +    if (layer)
&gt; +        toWebGraphicsLayer(layer)-&gt;setLayerTreeTileClient(layerTreeTileClient());

you dont need to setSize here? like in setMaskLayer?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533028</commentid>
    <comment_count>3</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-01-10 06:52:02 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 121733 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=121733&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/texmap/TextureMapperNode.cpp:254
&gt; &gt; +        HashMap&lt;int, ExternallyManagedTile&gt;::iterator mapEnd = m_externallyManagedTiles.end();
&gt; &gt; +        for (HashMap&lt;int, ExternallyManagedTile&gt;::iterator mapIterator = m_externallyManagedTiles.begin(); mapIterator != mapEnd; ++mapIterator) {
&gt; 
&gt; I think using &apos;end&apos; and &apos;it&apos; would be sufficient. Very common pattern in webkit
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebCoreSupport/WebGraphicsLayer.cpp:382
&gt; &gt; +
&gt; &gt; +    if (layer)
&gt; &gt; +        toWebGraphicsLayer(layer)-&gt;setLayerTreeTileClient(layerTreeTileClient());
&gt; 
&gt; you dont need to setSize here? like in setMaskLayer?

No, since reflection layers don&apos;t have content (they always draw their parent&apos;s content).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533050</commentid>
    <comment_count>4</comment_count>
      <attachid>121843</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-01-10 07:21:58 -0800</bug_when>
    <thetext>Created attachment 121843
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533844</commentid>
    <comment_count>5</comment_count>
      <attachid>121843</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-01-11 06:21:46 -0800</bug_when>
    <thetext>Comment on attachment 121843
Patch

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

Most of it makes sense to me, but I have a couple of questions where answers would help me to understand your patch better :)

&gt; Source/WebCore/ChangeLog:13
&gt; +        (WebCore::TextureMapperNode::collectVisibleContentsRects):

Can you elaborate about this part of your change?

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperNode.cpp:257
&gt; +    if (m_state.tileOwnership == ExternallyManagedTiles) {
&gt; +        HashMap&lt;int, ExternallyManagedTile&gt;::iterator end = m_externallyManagedTiles.end();
&gt; +        for (HashMap&lt;int, ExternallyManagedTile&gt;::iterator mapIterator = m_externallyManagedTiles.begin(); mapIterator != end; ++mapIterator) {
&gt; +            if (mapIterator-&gt;second.frontBuffer.texture)
&gt; +                return mapIterator-&gt;second.frontBuffer.texture.get();
&gt; +        }

So this simply returns the texture of the first tile that has one, right?

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebGraphicsLayer.cpp:382
&gt; +    if (layer)
&gt; +        toWebGraphicsLayer(layer)-&gt;setLayerTreeTileClient(layerTreeTileClient());

I notice that setReplicatedByLayer sets the layer tree client before notifyChange() and setMaskLayer() sets it afterwards. Is there any chance that could make a difference? (seems unlikely to me, but you know the code better, so I thought I&apos;d mention it :)

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebGraphicsLayer.cpp:414
&gt; -    if (replicaLayer())
&gt; -        replicaLayer()-&gt;syncCompositingState(rect);
&gt; -    if (maskLayer())
&gt; -        maskLayer()-&gt;syncCompositingState(rect);
&gt; +
&gt; +    if (WebGraphicsLayer* mask = toWebGraphicsLayer(maskLayer()))
&gt; +        mask-&gt;syncCompositingStateForThisLayerOnly();
&gt; +
&gt; +    if (WebGraphicsLayer* replica = toWebGraphicsLayer(replicaLayer()))
&gt; +        replica-&gt;syncCompositingStateForThisLayerOnly();

Aha, is this an optimization based on the fact that mask or replica layers cannot have children?

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebGraphicsLayer.cpp:536
&gt; -    if (m_image)
&gt; +    if (!drawsContent())

This as well as the removal of the comment are subtle ;). Can you explain these two changes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533857</commentid>
    <comment_count>6</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-01-11 06:35:44 -0800</bug_when>
    <thetext>&gt; &gt; Source/WebCore/ChangeLog:13
&gt; &gt; +        (WebCore::TextureMapperNode::collectVisibleContentsRects):
&gt; 
&gt; Can you elaborate about this part of your change?
Replicas don&apos;t have their own content, so we don&apos;t need to check for their visible rect.
Masks always have the same visible rect as the masked item, they don&apos;t have their own visible rect, since they don&apos;t have their own geometry.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/texmap/TextureMapperNode.cpp:257
&gt; &gt; +        }
&gt; 
&gt; So this simply returns the texture of the first tile that has one, right?
Yes.

&gt; I notice that setReplicatedByLayer sets the layer tree client before notifyChange() and setMaskLayer() sets it afterwards. Is there any chance that could make a difference? (seems unlikely to me, but you know the code better, so I thought I&apos;d mention it :)
I don&apos;t think so. But I&apos;ll make it more consistent.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebCoreSupport/WebGraphicsLayer.cpp:414
&gt; &gt; -    if (replicaLayer())
&gt; &gt; -        replicaLayer()-&gt;syncCompositingState(rect);
&gt; &gt; -    if (maskLayer())
&gt; &gt; -        maskLayer()-&gt;syncCompositingState(rect);
&gt; &gt; +
&gt; &gt; +    if (WebGraphicsLayer* mask = toWebGraphicsLayer(maskLayer()))
&gt; &gt; +        mask-&gt;syncCompositingStateForThisLayerOnly();
&gt; &gt; +
&gt; &gt; +    if (WebGraphicsLayer* replica = toWebGraphicsLayer(replicaLayer()))
&gt; &gt; +        replica-&gt;syncCompositingStateForThisLayerOnly();
&gt; 
&gt; Aha, is this an optimization based on the fact that mask or replica layers cannot have children?
Yes.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebCoreSupport/WebGraphicsLayer.cpp:536
&gt; &gt; -    if (m_image)
&gt; &gt; +    if (!drawsContent())
&gt; 
&gt; This as well as the removal of the comment are subtle ;). Can you explain these two changes?
I think 75882 explains it better. I&apos;ll make sure these m_image changes and related comments are all in 75882.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534374</commentid>
    <comment_count>7</comment_count>
      <attachid>122118</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-01-11 16:19:25 -0800</bug_when>
    <thetext>Created attachment 122118
Patch 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534384</commentid>
    <comment_count>8</comment_count>
      <attachid>122123</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-01-11 16:27:07 -0800</bug_when>
    <thetext>Created attachment 122123
atch 1: minor improvements to TextureMapperNode</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534434</commentid>
    <comment_count>9</comment_count>
      <attachid>122137</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-01-11 17:14:28 -0800</bug_when>
    <thetext>Created attachment 122137
Patch 2: Fix mask/reflection handling in Qt WebKit2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534657</commentid>
    <comment_count>10</comment_count>
      <attachid>122123</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-01-12 01:50:22 -0800</bug_when>
    <thetext>Comment on attachment 122123
atch 1: minor improvements to TextureMapperNode

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

&gt; Source/WebCore/ChangeLog:14
&gt; +        2. Rename TextureMapperNode::texture() to getFirstContentTextureForMask(), and allow the
&gt; +           texture to come from the externally-managed tiles.

isn&apos;t the word find* more used for this? like findFirstContentTextureForMask?

&gt; Source/WebCore/platform/graphics/texmap/TextureMapper.cpp:34
&gt; +        // A texture that&apos;s not used would have two references - the reference inside the vector, and the &quot;texture&quot; local variable.

unused? but the comment is confusing as you check for &gt; 2

&gt; Source/WebCore/platform/graphics/texmap/TextureMapper.h:129
&gt; -    virtual void releaseTextureToPool(BitmapTexture* surface);
&gt;      virtual PassRefPtr&lt;BitmapTexture&gt; acquireTextureFromPool(const IntSize&amp;);

Maybe add a comment here about how they are released.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534864</commentid>
    <comment_count>11</comment_count>
      <attachid>122250</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-01-12 08:30:16 -0800</bug_when>
    <thetext>Created attachment 122250
Patch 1: minor improvements to TextureMapperNode

Addressed Kenneth&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534905</commentid>
    <comment_count>12</comment_count>
      <attachid>122137</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-12 09:27:58 -0800</bug_when>
    <thetext>Comment on attachment 122137
Patch 2: Fix mask/reflection handling in Qt WebKit2

Clearing flags on attachment: 122137

Committed r104832: &lt;http://trac.webkit.org/changeset/104832&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536192</commentid>
    <comment_count>13</comment_count>
      <attachid>122250</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-01-14 10:25:50 -0800</bug_when>
    <thetext>Comment on attachment 122250
Patch 1: minor improvements to TextureMapperNode

Filed another bug, 76336</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121733</attachid>
            <date>2012-01-09 15:31:50 -0800</date>
            <delta_ts>2012-01-10 07:22:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>11914</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlOTc1NDg0Li5kNmVhZjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTItMDEtMDkgIE5vJ2FtIFJvc2VudGhhbCAgPG5vYW0ucm9zZW50aGFsQG5va2lhLmNv
bT4KKworICAgICAgICBbUXRdW1dLMl0gV2ViUHJvY2Vzc2VzIGNyYXNoZXMgd2hlbiBjb21wb3Np
dGVkIHJlZmxlY3Rpb25zL21hc2tzIGFyZSBwcmVzZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTg4MworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFN1cHBvcnQgVGV4dHVyZU1hcHBlck5vZGU6OnRleHR1
cmUoKSB3aGVuIHdlJ3JlIGluIGV4dGVybmFsbHktbWFuYWdlZCB0aWxlIG1vZGUuCisKKyAgICAg
ICAgVGVzdHMgaW4gTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcmVmbGVjdGlvbnMgYW5kIGRvbid0
IGNyYXNoIGFmdGVyIHRoaXMgcGF0Y2guCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1h
cHBlck5vZGU6OmNvbGxlY3RWaXNpYmxlQ29udGVudHNSZWN0cyk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0dXJlTWFwcGVyTm9kZTo6dGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJOb2RlLmg6CisKIDIwMTItMDEtMDkgIFNoZXJpZmYgQm90
ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJv
bGxpbmcgb3V0IHIxMDQ0MTguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJOb2RlLmNwcAppbmRleCAxNWRmZjVh
Li5lY2Y5N2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTm9kZS5jcHAKQEAgLTIxOSwxMCArMjE5LDYg
QEAgYm9vbCBUZXh0dXJlTWFwcGVyTm9kZTo6Y29sbGVjdFZpc2libGVDb250ZW50c1JlY3RzKE5v
ZGVSZWN0TWFwJiByZWN0TWFwLCBjb25zdAogCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX2No
aWxkcmVuLnNpemUoKTsgKytpKQogICAgICAgICBleGlzdHMgPSBtX2NoaWxkcmVuW2ldLT5jb2xs
ZWN0VmlzaWJsZUNvbnRlbnRzUmVjdHMocmVjdE1hcCwgcm9vdFZpc2libGVSZWN0KSB8fCBleGlz
dHM7Ci0gICAgaWYgKG1fc3RhdGUubWFza0xheWVyKQotICAgICAgICBleGlzdHMgPSBtX3N0YXRl
Lm1hc2tMYXllci0+Y29sbGVjdFZpc2libGVDb250ZW50c1JlY3RzKHJlY3RNYXAsIHJvb3RWaXNp
YmxlUmVjdCkgfHwgZXhpc3RzOwotICAgIGlmIChtX3N0YXRlLnJlcGxpY2FMYXllcikKLSAgICAg
ICAgZXhpc3RzID0gbV9zdGF0ZS5yZXBsaWNhTGF5ZXItPmNvbGxlY3RWaXNpYmxlQ29udGVudHNS
ZWN0cyhyZWN0TWFwLCByb290VmlzaWJsZVJlY3QpIHx8IGV4aXN0czsKIAogICAgIC8vIE5vbi1p
bnZlcnRpYmxlIGxheWVycyBhcmUgbm90IHZpc2libGUuCiAgICAgaWYgKCFtX3RyYW5zZm9ybXMu
dGFyZ2V0LmlzSW52ZXJ0aWJsZSgpKQpAQCAtMjQzLDExICsyMzksMjkgQEAgYm9vbCBUZXh0dXJl
TWFwcGVyTm9kZTo6Y29sbGVjdFZpc2libGVDb250ZW50c1JlY3RzKE5vZGVSZWN0TWFwJiByZWN0
TWFwLCBjb25zdAogCiAgICAgbV9zdGF0ZS52aXNpYmxlUmVjdCA9IHZpc2libGVDb250ZW50c1Jl
Y3Q7CiAgICAgcmVjdE1hcC5hZGQodGhpcywgbV9zdGF0ZS52aXNpYmxlUmVjdCk7CisgICAgaWYg
KG1fc3RhdGUubWFza0xheWVyKQorICAgICAgICByZWN0TWFwLmFkZChtX3N0YXRlLm1hc2tMYXll
ciwgbV9zdGF0ZS52aXNpYmxlUmVjdCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KICNlbmRpZgog
CitCaXRtYXBUZXh0dXJlKiBUZXh0dXJlTWFwcGVyTm9kZTo6dGV4dHVyZSgpCit7CisjaWYgVVNF
KFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisgICAgaWYgKG1fc3RhdGUudGlsZU93bmVyc2hpcCA9PSBF
eHRlcm5hbGx5TWFuYWdlZFRpbGVzKSB7CisgICAgICAgIEhhc2hNYXA8aW50LCBFeHRlcm5hbGx5
TWFuYWdlZFRpbGU+OjppdGVyYXRvciBtYXBFbmQgPSBtX2V4dGVybmFsbHlNYW5hZ2VkVGlsZXMu
ZW5kKCk7CisgICAgICAgIGZvciAoSGFzaE1hcDxpbnQsIEV4dGVybmFsbHlNYW5hZ2VkVGlsZT46
Oml0ZXJhdG9yIG1hcEl0ZXJhdG9yID0gbV9leHRlcm5hbGx5TWFuYWdlZFRpbGVzLmJlZ2luKCk7
IG1hcEl0ZXJhdG9yICE9IG1hcEVuZDsgKyttYXBJdGVyYXRvcikgeworICAgICAgICAgICAgaWYg
KG1hcEl0ZXJhdG9yLT5zZWNvbmQuZnJvbnRCdWZmZXIudGV4dHVyZSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gbWFwSXRlcmF0b3ItPnNlY29uZC5mcm9udEJ1ZmZlci50ZXh0dXJlLmdldCgpOwor
ICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorI2VuZGlmCisgICAgcmV0dXJu
IG1fb3duZWRUaWxlcy5pc0VtcHR5KCkgPyAwIDogbV9vd25lZFRpbGVzWzBdLnRleHR1cmUuZ2V0
KCk7Cit9CisKIHZvaWQgVGV4dHVyZU1hcHBlck5vZGU6OnJlbmRlckNvbnRlbnQoVGV4dHVyZU1h
cHBlciogdGV4dHVyZU1hcHBlciwgR3JhcGhpY3NMYXllciogbGF5ZXIpCiB7CiAjaWYgVVNFKFRJ
TEVEX0JBQ0tJTkdfU1RPUkUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTm9kZS5oCmluZGV4IGI0MGNkNWQuLmI5
MTM1NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTm9kZS5oCkBAIC0xOTEsNyArMTkxLDcgQEAgcHJpdmF0
ZToKICAgICBzdGF0aWMgaW50IGNvbXBhcmVHcmFwaGljc0xheWVyc1pWYWx1ZShjb25zdCB2b2lk
KiBhLCBjb25zdCB2b2lkKiBiKTsKICAgICBzdGF0aWMgdm9pZCBzb3J0QnlaT3JkZXIoVmVjdG9y
PFRleHR1cmVNYXBwZXJOb2RlKiA+JiBhcnJheSwgaW50IGZpcnN0LCBpbnQgbGFzdCk7CiAKLSAg
ICBCaXRtYXBUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbV9vd25lZFRpbGVzLmlzRW1wdHko
KSA/IDAgOiBtX293bmVkVGlsZXNbMF0udGV4dHVyZS5nZXQoKTsgfQorICAgIEJpdG1hcFRleHR1
cmUqIHRleHR1cmUoKTsKIAogICAgIHZvaWQgcGFpbnRSZWN1cnNpdmUoVGV4dHVyZU1hcHBlclBh
aW50T3B0aW9ucyk7CiAgICAgYm9vbCBwYWludFJlZmxlY3Rpb24oY29uc3QgVGV4dHVyZU1hcHBl
clBhaW50T3B0aW9ucyYsIEJpdG1hcFRleHR1cmUqIHN1cmZhY2UpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDQ0
MWZkMzEuLjdjOTliZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxMi0wMS0wOSAg
Tm8nYW0gUm9zZW50aGFsICA8bm9hbS5yb3NlbnRoYWxAbm9raWEuY29tPgorCisgICAgICAgIFtR
dF1bV0syXSBXZWJQcm9jZXNzZXMgY3Jhc2hlcyB3aGVuIGNvbXBvc2l0ZWQgcmVmbGVjdGlvbnMv
bWFza3MgYXJlIHByZXNlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTc1ODgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgRW5zdXJlIHRoYXQgbWFzayBhbmQgcmVwbGljYSBsYXllcnMgY2FuIGFjY2VzcyB0
aGUgbGF5ZXJUcmVlVGlsZUNsaWVudCwgYW5kIHRoYXQgdGhlIG1hc2sKKyAgICAgICAgbGF5ZXIg
aXMgdHJhdmVyc2VkIHRvZ2V0aGVyIHdpdGggdGhlIG90aGVyIGNoaWxkcmVuIHdoZW4gdXBkYXRp
bmcgdGhlIHRpbGVkIGJhY2tpbmcgc3RvcmUuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3Jh
cGhpY3NMYXllcjo6V2ViR3JhcGhpY3NMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFw
aGljc0xheWVyOjpzZXRNYXNrTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NM
YXllcjo6c2V0UmVwbGljYXRlZEJ5TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhp
Y3NMYXllcjo6c3luY0NvbXBvc2l0aW5nU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3Jh
cGhpY3NMYXllcjo6c3luY0NvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzU2NhbGUpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllcjo6dGlsZWRCYWNraW5nU3RvcmVDb250ZW50c1Jl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllcjo6dXBkYXRlVGlsZUJ1ZmZl
cnNSZWN1cnNpdmVseSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjpsYXll
clRyZWVUaWxlQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5ZXI6OnB1
cmdlQmFja2luZ1N0b3Jlcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjpy
ZWNyZWF0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdyYXBo
aWNzTGF5ZXI6OnNldExheWVyVHJlZVRpbGVDbGllbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViR3JhcGhpY3NMYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R3JhcGhpY3NMYXllcjo6bWFza1RhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGlj
c0xheWVyOjpzZXRNYXNrVGFyZ2V0KToKKwogCiAyMDEyLTAxLTA5ICBObydhbSBSb3NlbnRoYWwg
IDxub2FtLnJvc2VudGhhbEBub2tpYS5jb20+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5ZXIuY3BwCmlu
ZGV4IDAzZTU1N2QuLmYxMzU5YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0xheWVyLmNwcApAQCAtNzIs
NiArNzIsNyBAQCB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6Om5vdGlmeUNoYW5nZSgpCiAKIFdlYkdy
YXBoaWNzTGF5ZXI6OldlYkdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllckNsaWVudCogY2xpZW50
KQogICAgIDogR3JhcGhpY3NMYXllcihjbGllbnQpCisgICAgLCBtX21hc2tUYXJnZXQoMCkKICAg
ICAsIG1fbmVlZHNEaXNwbGF5KGZhbHNlKQogICAgICwgbV9tb2RpZmllZCh0cnVlKQogICAgICwg
bV9jb250ZW50TmVlZHNEaXNwbGF5KGZhbHNlKQpAQCAtMzU0LDE0ICszNTUsMzIgQEAgdm9pZCBX
ZWJHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqIGltYWdlKQogCiB2b2lk
IFdlYkdyYXBoaWNzTGF5ZXI6OnNldE1hc2tMYXllcihHcmFwaGljc0xheWVyKiBsYXllcikKIHsK
KyAgICBpZiAobGF5ZXIgPT0gbWFza0xheWVyKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIEdy
YXBoaWNzTGF5ZXI6OnNldE1hc2tMYXllcihsYXllcik7CiAgICAgbm90aWZ5Q2hhbmdlKCk7CisK
KyAgICBpZiAoIWxheWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBsYXllci0+c2V0U2l6ZShz
aXplKCkpOworICAgIFdlYkdyYXBoaWNzTGF5ZXIqIHdlYkdyYXBoaWNzTGF5ZXIgPSB0b1dlYkdy
YXBoaWNzTGF5ZXIobGF5ZXIpOworICAgIHdlYkdyYXBoaWNzTGF5ZXItPnNldExheWVyVHJlZVRp
bGVDbGllbnQobGF5ZXJUcmVlVGlsZUNsaWVudCgpKTsKKyAgICB3ZWJHcmFwaGljc0xheWVyLT5z
ZXRNYXNrVGFyZ2V0KHRoaXMpOworICAgIHdlYkdyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzU2Nh
bGUobV9jb250ZW50c1NjYWxlKTsKKyAgICB3ZWJHcmFwaGljc0xheWVyLT5ub3RpZnlDaGFuZ2Uo
KTsKKwogfQogCiB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnNldFJlcGxpY2F0ZWRCeUxheWVyKEdy
YXBoaWNzTGF5ZXIqIGxheWVyKQogewogICAgIGlmIChsYXllciA9PSByZXBsaWNhTGF5ZXIoKSkK
ICAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGxheWVyKQorICAgICAgICB0b1dlYkdyYXBoaWNz
TGF5ZXIobGF5ZXIpLT5zZXRMYXllclRyZWVUaWxlQ2xpZW50KGxheWVyVHJlZVRpbGVDbGllbnQo
KSk7CisKICAgICBHcmFwaGljc0xheWVyOjpzZXRSZXBsaWNhdGVkQnlMYXllcihsYXllcik7CiAg
ICAgbm90aWZ5Q2hhbmdlKCk7CiB9CkBAIC0zODcsMTAgKzQwNiwxMyBAQCB2b2lkIFdlYkdyYXBo
aWNzTGF5ZXI6OnN5bmNDb21wb3NpdGluZ1N0YXRlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNoaWxkcmVuKCkuc2l6ZSgpOyArK2kpCiAgICAg
ICAgIGNoaWxkcmVuKClbaV0tPnN5bmNDb21wb3NpdGluZ1N0YXRlKHJlY3QpOwotICAgIGlmIChy
ZXBsaWNhTGF5ZXIoKSkKLSAgICAgICAgcmVwbGljYUxheWVyKCktPnN5bmNDb21wb3NpdGluZ1N0
YXRlKHJlY3QpOwotICAgIGlmIChtYXNrTGF5ZXIoKSkKLSAgICAgICAgbWFza0xheWVyKCktPnN5
bmNDb21wb3NpdGluZ1N0YXRlKHJlY3QpOworCisgICAgaWYgKFdlYkdyYXBoaWNzTGF5ZXIqIG1h
c2sgPSB0b1dlYkdyYXBoaWNzTGF5ZXIobWFza0xheWVyKCkpKQorICAgICAgICBtYXNrLT5zeW5j
Q29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKTsKKworICAgIGlmIChXZWJHcmFwaGlj
c0xheWVyKiByZXBsaWNhID0gdG9XZWJHcmFwaGljc0xheWVyKHJlcGxpY2FMYXllcigpKSkKKyAg
ICAgICAgcmVwbGljYS0+c3luY0NvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCk7CisK
ICAgICBzeW5jQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKTsKIH0KIApAQCAtNDE1
LDkgKzQzNyw2IEBAIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6c3luY0NvbXBvc2l0aW5nU3RhdGVG
b3JUaGlzTGF5ZXJPbmx5KCkKICAgICBtX2xheWVySW5mby5jaGlsZHJlblRyYW5zZm9ybSA9IGNo
aWxkcmVuVHJhbnNmb3JtKCk7CiAgICAgbV9sYXllckluZm8uY29udGVudHNPcGFxdWUgPSBjb250
ZW50c09wYXF1ZSgpOwogICAgIG1fbGF5ZXJJbmZvLmNvbnRlbnRzUmVjdCA9IGNvbnRlbnRzUmVj
dCgpOwotCi0gICAgLy8gSW4gdGhlIHNoYWRvdyBsYXllciB0cmVlIHdlIGNyZWF0ZSBpbiB0aGUg
VUkgcHJvY2VzcywgbGF5ZXJzIHdpdGggZGlyZWN0bHkgY29tcG9zaXRlZCBpbWFnZXMgYXJlIGFs
d2F5cyBjb25zaWRlcmVkIHRvIGRyYXcgY29udGVudC4KLSAgICAvLyBPdGhlcndpc2UsIHdlJ2Qg
aGF2ZSB0byBjaGVjayB3aGV0aGVyIGFuIGxheWVyIHdpdGggZHJhd3NDb250ZW50PT1mYWxzZSBo
YXMgYSBkaXJlY3RseSBjb21wb3NpdGVkIGltYWdlIG11bHRpcGxlIHRpbWVzLgogICAgIG1fbGF5
ZXJJbmZvLmRyYXdzQ29udGVudCA9IGRyYXdzQ29udGVudCgpOwogICAgIG1fbGF5ZXJJbmZvLm1h
c2sgPSB0b1dlYkxheWVySUQobWFza0xheWVyKCkpOwogICAgIG1fbGF5ZXJJbmZvLm1hc2tzVG9C
b3VuZHMgPSBtYXNrc1RvQm91bmRzKCk7CkBAIC00NTksNiArNDc4LDkgQEAgdm9pZCBXZWJHcmFw
aGljc0xheWVyOjpzZXRDb250ZW50c1NjYWxlKGZsb2F0IHNjYWxlKQogICAgICAgICBsYXllci0+
c2V0Q29udGVudHNTY2FsZShzY2FsZSk7CiAgICAgfQogCisgICAgaWYgKFdlYkdyYXBoaWNzTGF5
ZXIqIG1hc2sgPSB0b1dlYkdyYXBoaWNzTGF5ZXIobWFza0xheWVyKCkpKQorICAgICAgICBtYXNr
LT5zZXRDb250ZW50c1NjYWxlKHNjYWxlKTsKKwogICAgIG1fY29udGVudHNTY2FsZSA9IHNjYWxl
OwogICAgIGlmIChtX21haW5CYWNraW5nU3RvcmUgJiYgbV9tYWluQmFja2luZ1N0b3JlLT5jb250
ZW50c1NjYWxlKCkgPT0gc2NhbGUpCiAgICAgICAgIHJldHVybjsKQEAgLTUxMSw3ICs1MzMsNyBA
QCBib29sIFdlYkdyYXBoaWNzTGF5ZXI6OnRpbGVkQmFja2luZ1N0b3JlVXBkYXRlc0FsbG93ZWQo
KSBjb25zdAogCiBJbnRSZWN0IFdlYkdyYXBoaWNzTGF5ZXI6OnRpbGVkQmFja2luZ1N0b3JlQ29u
dGVudHNSZWN0KCkKIHsKLSAgICBpZiAobV9pbWFnZSkKKyAgICBpZiAoIWRyYXdzQ29udGVudCgp
KQogICAgICAgICByZXR1cm4gSW50UmVjdCgpOwogICAgIHJldHVybiBJbnRSZWN0KDAsIDAsIHNp
emUoKS53aWR0aCgpLCBzaXplKCkuaGVpZ2h0KCkpOwogfQpAQCAtNTU0LDEzICs1NzYsMjQgQEAg
dm9pZCBXZWJHcmFwaGljc0xheWVyOjp1cGRhdGVUaWxlQnVmZmVyc1JlY3Vyc2l2ZWx5KCkKICAg
ICAgICAgV2ViR3JhcGhpY3NMYXllciogbGF5ZXIgPSB0b1dlYkdyYXBoaWNzTGF5ZXIodGhpcy0+
Y2hpbGRyZW4oKVtpXSk7CiAgICAgICAgIGxheWVyLT51cGRhdGVUaWxlQnVmZmVyc1JlY3Vyc2l2
ZWx5KCk7CiAgICAgfQorCisgICAgaWYgKFdlYkdyYXBoaWNzTGF5ZXIqIG1hc2sgPSB0b1dlYkdy
YXBoaWNzTGF5ZXIobWFza0xheWVyKCkpKQorICAgICAgICBtYXNrLT51cGRhdGVUaWxlQnVmZmVy
c1JlY3Vyc2l2ZWx5KCk7CiB9CiAKIFdlYkxheWVyVHJlZVRpbGVDbGllbnQqIFdlYkdyYXBoaWNz
TGF5ZXI6OmxheWVyVHJlZVRpbGVDbGllbnQoKSBjb25zdAogewogICAgIGlmIChtX2xheWVyVHJl
ZVRpbGVDbGllbnQpCiAgICAgICAgIHJldHVybiBtX2xheWVyVHJlZVRpbGVDbGllbnQ7Ci0gICAg
V2ViR3JhcGhpY3NMYXllciogcGFyZW50ID0gdG9XZWJHcmFwaGljc0xheWVyKHRoaXMtPnBhcmVu
dCgpKTsKKyAgICBXZWJHcmFwaGljc0xheWVyKiBwYXJlbnQ7CisgICAgaWYgKHRoaXMtPnJlcGxp
Y2F0ZWRMYXllcigpKQorICAgICAgICBwYXJlbnQgPSB0b1dlYkdyYXBoaWNzTGF5ZXIodGhpcy0+
cmVwbGljYXRlZExheWVyKCkpOworICAgIGVsc2UgaWYgKHRoaXMtPm1hc2tUYXJnZXQoKSkKKyAg
ICAgICAgcGFyZW50ID0gdG9XZWJHcmFwaGljc0xheWVyKHRoaXMtPm1hc2tUYXJnZXQoKSk7Cisg
ICAgZWxzZQorICAgICAgICBwYXJlbnQgPSB0b1dlYkdyYXBoaWNzTGF5ZXIodGhpcy0+cGFyZW50
KCkpOworCisKICAgICBpZiAoIXBhcmVudCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJu
IHBhcmVudC0+bGF5ZXJUcmVlVGlsZUNsaWVudCgpOwpAQCAtNTg5LDYgKzYyMiw5IEBAIHZvaWQg
V2ViR3JhcGhpY3NMYXllcjo6cHVyZ2VCYWNraW5nU3RvcmVzKCkKICAgICAgICAgbGF5ZXItPnB1
cmdlQmFja2luZ1N0b3JlcygpOwogICAgIH0KIAorICAgIGlmIChXZWJHcmFwaGljc0xheWVyKiBt
YXNrID0gdG9XZWJHcmFwaGljc0xheWVyKG1hc2tMYXllcigpKSkKKyAgICAgICAgbWFzay0+cHVy
Z2VCYWNraW5nU3RvcmVzKCk7CisKICAgICBpZiAobV9tYWluQmFja2luZ1N0b3JlKQogICAgICAg
ICBtX21haW5CYWNraW5nU3RvcmUuY2xlYXIoKTsKIApAQCAtNjA1LDYgKzY0MSw4IEBAIHZvaWQg
V2ViR3JhcGhpY3NMYXllcjo6cmVjcmVhdGVCYWNraW5nU3RvcmVJZk5lZWRlZCgpCiAgICAgICAg
IFdlYkdyYXBoaWNzTGF5ZXIqIGxheWVyID0gdG9XZWJHcmFwaGljc0xheWVyKHRoaXMtPmNoaWxk
cmVuKClbaV0pOwogICAgICAgICBsYXllci0+cmVjcmVhdGVCYWNraW5nU3RvcmVJZk5lZWRlZCgp
OwogICAgIH0KKyAgICBpZiAoV2ViR3JhcGhpY3NMYXllciogbWFzayA9IHRvV2ViR3JhcGhpY3NM
YXllcihtYXNrTGF5ZXIoKSkpCisgICAgICAgIG1hc2stPnJlY3JlYXRlQmFja2luZ1N0b3JlSWZO
ZWVkZWQoKTsKIAogICAgIGlmICghbV9tYWluQmFja2luZ1N0b3JlKSB7CiAgICAgICAgIG1fbWFp
bkJhY2tpbmdTdG9yZSA9IGFkb3B0UHRyKG5ldyBUaWxlZEJhY2tpbmdTdG9yZSh0aGlzLCBUaWxl
ZEJhY2tpbmdTdG9yZVJlbW90ZVRpbGVCYWNrZW5kOjpjcmVhdGUodGhpcykpKTsKQEAgLTYyMCw2
ICs2NTgsMTAgQEAgdm9pZCBXZWJHcmFwaGljc0xheWVyOjpzZXRMYXllclRyZWVUaWxlQ2xpZW50
KFdlYktpdDo6V2ViTGF5ZXJUcmVlVGlsZUNsaWVudCogY2wKICAgICBpZiAobV9sYXllclRyZWVU
aWxlQ2xpZW50ID09IGNsaWVudCkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKFdlYkdyYXBo
aWNzTGF5ZXIqIHJlcGxpY2EgPSB0b1dlYkdyYXBoaWNzTGF5ZXIocmVwbGljYUxheWVyKCkpKQor
ICAgICAgICByZXBsaWNhLT5zZXRMYXllclRyZWVUaWxlQ2xpZW50KGNsaWVudCk7CisgICAgaWYg
KFdlYkdyYXBoaWNzTGF5ZXIqIG1hc2sgPSB0b1dlYkdyYXBoaWNzTGF5ZXIobWFza0xheWVyKCkp
KQorICAgICAgICBtYXNrLT5zZXRMYXllclRyZWVUaWxlQ2xpZW50KGNsaWVudCk7CiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBjaGlsZHJlbigpLnNpemUoKTsgKytpKSB7CiAgICAgICAgIFdl
YkdyYXBoaWNzTGF5ZXIqIGxheWVyID0gdG9XZWJHcmFwaGljc0xheWVyKHRoaXMtPmNoaWxkcmVu
KClbaV0pOwogICAgICAgICBsYXllci0+c2V0TGF5ZXJUcmVlVGlsZUNsaWVudChjbGllbnQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJH
cmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkdyYXBoaWNzTGF5ZXIuaAppbmRleCAzNjFmY2IyLi4yZjhjYjlhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5ZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdyYXBo
aWNzTGF5ZXIuaApAQCAtMTA3LDYgKzEwNyw5IEBAIHB1YmxpYzoKICAgICBJbWFnZSogaW1hZ2Uo
KSB7IHJldHVybiBtX2ltYWdlLmdldCgpOyB9CiAgICAgdm9pZCBub3RpZnlBbmltYXRpb25TdGFy
dGVkKGRvdWJsZSk7CiAKKyAgICBHcmFwaGljc0xheWVyKiBtYXNrVGFyZ2V0KCkgY29uc3QgeyBy
ZXR1cm4gbV9tYXNrVGFyZ2V0OyB9CisgICAgdm9pZCBzZXRNYXNrVGFyZ2V0KEdyYXBoaWNzTGF5
ZXIqIGxheWVyKSB7IG1fbWFza1RhcmdldCA9IGxheWVyOyB9CisKICAgICBzdGF0aWMgdm9pZCBp
bml0RmFjdG9yeSgpOwogCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCkBAIC0xMzcsOCAr
MTQwLDggQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFdlYktpdDo6V2ViTGF5ZXJJbmZvIG1f
bGF5ZXJJbmZvOwotICAgIFdlYktpdDo6V2ViTGF5ZXJUcmVlVGlsZUNsaWVudCogbV9sYXllclRp
bGVDbGllbnQ7CiAgICAgUmVmUHRyPEltYWdlPiBtX2ltYWdlOworICAgIEdyYXBoaWNzTGF5ZXIq
IG1fbWFza1RhcmdldDsKICAgICBGbG9hdFJlY3QgbV9uZWVkc0Rpc3BsYXlSZWN0OwogICAgIElu
dFJlY3QgbV92aXNpYmxlQ29udGVudFJlY3Q7CiAgICAgYm9vbCBtX25lZWRzRGlzcGxheSA6IDE7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121843</attachid>
            <date>2012-01-10 07:21:58 -0800</date>
            <delta_ts>2012-01-11 16:19:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch-75883.diff</filename>
            <type>text/plain</type>
            <size>11908</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlOTc1NDg0Li5kNmVhZjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTItMDEtMDkgIE5vJ2FtIFJvc2VudGhhbCAgPG5vYW0ucm9zZW50aGFsQG5va2lhLmNv
bT4KKworICAgICAgICBbUXRdW1dLMl0gV2ViUHJvY2Vzc2VzIGNyYXNoZXMgd2hlbiBjb21wb3Np
dGVkIHJlZmxlY3Rpb25zL21hc2tzIGFyZSBwcmVzZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTg4MworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFN1cHBvcnQgVGV4dHVyZU1hcHBlck5vZGU6OnRleHR1
cmUoKSB3aGVuIHdlJ3JlIGluIGV4dGVybmFsbHktbWFuYWdlZCB0aWxlIG1vZGUuCisKKyAgICAg
ICAgVGVzdHMgaW4gTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcmVmbGVjdGlvbnMgYW5kIGRvbid0
IGNyYXNoIGFmdGVyIHRoaXMgcGF0Y2guCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1h
cHBlck5vZGU6OmNvbGxlY3RWaXNpYmxlQ29udGVudHNSZWN0cyk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0dXJlTWFwcGVyTm9kZTo6dGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJOb2RlLmg6CisKIDIwMTItMDEtMDkgIFNoZXJpZmYgQm90
ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJv
bGxpbmcgb3V0IHIxMDQ0MTguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJOb2RlLmNwcAppbmRleCAxNWRmZjVh
Li5lY2Y5N2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTm9kZS5jcHAKQEAgLTIxOSwxMCArMjE5LDYg
QEAgYm9vbCBUZXh0dXJlTWFwcGVyTm9kZTo6Y29sbGVjdFZpc2libGVDb250ZW50c1JlY3RzKE5v
ZGVSZWN0TWFwJiByZWN0TWFwLCBjb25zdAogCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX2No
aWxkcmVuLnNpemUoKTsgKytpKQogICAgICAgICBleGlzdHMgPSBtX2NoaWxkcmVuW2ldLT5jb2xs
ZWN0VmlzaWJsZUNvbnRlbnRzUmVjdHMocmVjdE1hcCwgcm9vdFZpc2libGVSZWN0KSB8fCBleGlz
dHM7Ci0gICAgaWYgKG1fc3RhdGUubWFza0xheWVyKQotICAgICAgICBleGlzdHMgPSBtX3N0YXRl
Lm1hc2tMYXllci0+Y29sbGVjdFZpc2libGVDb250ZW50c1JlY3RzKHJlY3RNYXAsIHJvb3RWaXNp
YmxlUmVjdCkgfHwgZXhpc3RzOwotICAgIGlmIChtX3N0YXRlLnJlcGxpY2FMYXllcikKLSAgICAg
ICAgZXhpc3RzID0gbV9zdGF0ZS5yZXBsaWNhTGF5ZXItPmNvbGxlY3RWaXNpYmxlQ29udGVudHNS
ZWN0cyhyZWN0TWFwLCByb290VmlzaWJsZVJlY3QpIHx8IGV4aXN0czsKIAogICAgIC8vIE5vbi1p
bnZlcnRpYmxlIGxheWVycyBhcmUgbm90IHZpc2libGUuCiAgICAgaWYgKCFtX3RyYW5zZm9ybXMu
dGFyZ2V0LmlzSW52ZXJ0aWJsZSgpKQpAQCAtMjQzLDExICsyMzksMjkgQEAgYm9vbCBUZXh0dXJl
TWFwcGVyTm9kZTo6Y29sbGVjdFZpc2libGVDb250ZW50c1JlY3RzKE5vZGVSZWN0TWFwJiByZWN0
TWFwLCBjb25zdAogCiAgICAgbV9zdGF0ZS52aXNpYmxlUmVjdCA9IHZpc2libGVDb250ZW50c1Jl
Y3Q7CiAgICAgcmVjdE1hcC5hZGQodGhpcywgbV9zdGF0ZS52aXNpYmxlUmVjdCk7CisgICAgaWYg
KG1fc3RhdGUubWFza0xheWVyKQorICAgICAgICByZWN0TWFwLmFkZChtX3N0YXRlLm1hc2tMYXll
ciwgbV9zdGF0ZS52aXNpYmxlUmVjdCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KICNlbmRpZgog
CitCaXRtYXBUZXh0dXJlKiBUZXh0dXJlTWFwcGVyTm9kZTo6dGV4dHVyZSgpCit7CisjaWYgVVNF
KFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisgICAgaWYgKG1fc3RhdGUudGlsZU93bmVyc2hpcCA9PSBF
eHRlcm5hbGx5TWFuYWdlZFRpbGVzKSB7CisgICAgICAgIEhhc2hNYXA8aW50LCBFeHRlcm5hbGx5
TWFuYWdlZFRpbGU+OjppdGVyYXRvciBlbmQgPSBtX2V4dGVybmFsbHlNYW5hZ2VkVGlsZXMuZW5k
KCk7CisgICAgICAgIGZvciAoSGFzaE1hcDxpbnQsIEV4dGVybmFsbHlNYW5hZ2VkVGlsZT46Oml0
ZXJhdG9yIG1hcEl0ZXJhdG9yID0gbV9leHRlcm5hbGx5TWFuYWdlZFRpbGVzLmJlZ2luKCk7IG1h
cEl0ZXJhdG9yICE9IGVuZDsgKyttYXBJdGVyYXRvcikgeworICAgICAgICAgICAgaWYgKG1hcEl0
ZXJhdG9yLT5zZWNvbmQuZnJvbnRCdWZmZXIudGV4dHVyZSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gbWFwSXRlcmF0b3ItPnNlY29uZC5mcm9udEJ1ZmZlci50ZXh0dXJlLmdldCgpOworICAgICAg
ICB9CisKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorI2VuZGlmCisgICAgcmV0dXJuIG1fb3du
ZWRUaWxlcy5pc0VtcHR5KCkgPyAwIDogbV9vd25lZFRpbGVzWzBdLnRleHR1cmUuZ2V0KCk7Cit9
CisKIHZvaWQgVGV4dHVyZU1hcHBlck5vZGU6OnJlbmRlckNvbnRlbnQoVGV4dHVyZU1hcHBlciog
dGV4dHVyZU1hcHBlciwgR3JhcGhpY3NMYXllciogbGF5ZXIpCiB7CiAjaWYgVVNFKFRJTEVEX0JB
Q0tJTkdfU1RPUkUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTm9kZS5oCmluZGV4IGI0MGNkNWQuLmI5MTM1NzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyTm9kZS5oCkBAIC0xOTEsNyArMTkxLDcgQEAgcHJpdmF0ZToKICAg
ICBzdGF0aWMgaW50IGNvbXBhcmVHcmFwaGljc0xheWVyc1pWYWx1ZShjb25zdCB2b2lkKiBhLCBj
b25zdCB2b2lkKiBiKTsKICAgICBzdGF0aWMgdm9pZCBzb3J0QnlaT3JkZXIoVmVjdG9yPFRleHR1
cmVNYXBwZXJOb2RlKiA+JiBhcnJheSwgaW50IGZpcnN0LCBpbnQgbGFzdCk7CiAKLSAgICBCaXRt
YXBUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbV9vd25lZFRpbGVzLmlzRW1wdHkoKSA/IDAg
OiBtX293bmVkVGlsZXNbMF0udGV4dHVyZS5nZXQoKTsgfQorICAgIEJpdG1hcFRleHR1cmUqIHRl
eHR1cmUoKTsKIAogICAgIHZvaWQgcGFpbnRSZWN1cnNpdmUoVGV4dHVyZU1hcHBlclBhaW50T3B0
aW9ucyk7CiAgICAgYm9vbCBwYWludFJlZmxlY3Rpb24oY29uc3QgVGV4dHVyZU1hcHBlclBhaW50
T3B0aW9ucyYsIEJpdG1hcFRleHR1cmUqIHN1cmZhY2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDQ0MWZkMzEu
LjdjOTliZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxMi0wMS0wOSAgTm8nYW0g
Um9zZW50aGFsICA8bm9hbS5yb3NlbnRoYWxAbm9raWEuY29tPgorCisgICAgICAgIFtRdF1bV0sy
XSBXZWJQcm9jZXNzZXMgY3Jhc2hlcyB3aGVuIGNvbXBvc2l0ZWQgcmVmbGVjdGlvbnMvbWFza3Mg
YXJlIHByZXNlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTc1ODgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgRW5zdXJlIHRoYXQgbWFzayBhbmQgcmVwbGljYSBsYXllcnMgY2FuIGFjY2VzcyB0aGUgbGF5
ZXJUcmVlVGlsZUNsaWVudCwgYW5kIHRoYXQgdGhlIG1hc2sKKyAgICAgICAgbGF5ZXIgaXMgdHJh
dmVyc2VkIHRvZ2V0aGVyIHdpdGggdGhlIG90aGVyIGNoaWxkcmVuIHdoZW4gdXBkYXRpbmcgdGhl
IHRpbGVkIGJhY2tpbmcgc3RvcmUuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkdyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NM
YXllcjo6V2ViR3JhcGhpY3NMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xh
eWVyOjpzZXRNYXNrTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllcjo6
c2V0UmVwbGljYXRlZEJ5TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXll
cjo6c3luY0NvbXBvc2l0aW5nU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NM
YXllcjo6c3luY0NvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzU2NhbGUpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR3JhcGhpY3NMYXllcjo6dGlsZWRCYWNraW5nU3RvcmVDb250ZW50c1JlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllcjo6dXBkYXRlVGlsZUJ1ZmZlcnNSZWN1
cnNpdmVseSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjpsYXllclRyZWVU
aWxlQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5ZXI6OnB1cmdlQmFj
a2luZ1N0b3Jlcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjpyZWNyZWF0
ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5
ZXI6OnNldExheWVyVHJlZVRpbGVDbGllbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViR3JhcGhpY3NMYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhp
Y3NMYXllcjo6bWFza1RhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVy
OjpzZXRNYXNrVGFyZ2V0KToKKwogCiAyMDEyLTAxLTA5ICBObydhbSBSb3NlbnRoYWwgIDxub2Ft
LnJvc2VudGhhbEBub2tpYS5jb20+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IDAz
ZTU1N2QuLmYxMzU5YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0xheWVyLmNwcApAQCAtNzIsNiArNzIs
NyBAQCB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6Om5vdGlmeUNoYW5nZSgpCiAKIFdlYkdyYXBoaWNz
TGF5ZXI6OldlYkdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllckNsaWVudCogY2xpZW50KQogICAg
IDogR3JhcGhpY3NMYXllcihjbGllbnQpCisgICAgLCBtX21hc2tUYXJnZXQoMCkKICAgICAsIG1f
bmVlZHNEaXNwbGF5KGZhbHNlKQogICAgICwgbV9tb2RpZmllZCh0cnVlKQogICAgICwgbV9jb250
ZW50TmVlZHNEaXNwbGF5KGZhbHNlKQpAQCAtMzU0LDE0ICszNTUsMzIgQEAgdm9pZCBXZWJHcmFw
aGljc0xheWVyOjpzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqIGltYWdlKQogCiB2b2lkIFdlYkdy
YXBoaWNzTGF5ZXI6OnNldE1hc2tMYXllcihHcmFwaGljc0xheWVyKiBsYXllcikKIHsKKyAgICBp
ZiAobGF5ZXIgPT0gbWFza0xheWVyKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIEdyYXBoaWNz
TGF5ZXI6OnNldE1hc2tMYXllcihsYXllcik7CiAgICAgbm90aWZ5Q2hhbmdlKCk7CisKKyAgICBp
ZiAoIWxheWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBsYXllci0+c2V0U2l6ZShzaXplKCkp
OworICAgIFdlYkdyYXBoaWNzTGF5ZXIqIHdlYkdyYXBoaWNzTGF5ZXIgPSB0b1dlYkdyYXBoaWNz
TGF5ZXIobGF5ZXIpOworICAgIHdlYkdyYXBoaWNzTGF5ZXItPnNldExheWVyVHJlZVRpbGVDbGll
bnQobGF5ZXJUcmVlVGlsZUNsaWVudCgpKTsKKyAgICB3ZWJHcmFwaGljc0xheWVyLT5zZXRNYXNr
VGFyZ2V0KHRoaXMpOworICAgIHdlYkdyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzU2NhbGUobV9j
b250ZW50c1NjYWxlKTsKKyAgICB3ZWJHcmFwaGljc0xheWVyLT5ub3RpZnlDaGFuZ2UoKTsKKwog
fQogCiB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnNldFJlcGxpY2F0ZWRCeUxheWVyKEdyYXBoaWNz
TGF5ZXIqIGxheWVyKQogewogICAgIGlmIChsYXllciA9PSByZXBsaWNhTGF5ZXIoKSkKICAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKGxheWVyKQorICAgICAgICB0b1dlYkdyYXBoaWNzTGF5ZXIo
bGF5ZXIpLT5zZXRMYXllclRyZWVUaWxlQ2xpZW50KGxheWVyVHJlZVRpbGVDbGllbnQoKSk7CisK
ICAgICBHcmFwaGljc0xheWVyOjpzZXRSZXBsaWNhdGVkQnlMYXllcihsYXllcik7CiAgICAgbm90
aWZ5Q2hhbmdlKCk7CiB9CkBAIC0zODcsMTAgKzQwNiwxMyBAQCB2b2lkIFdlYkdyYXBoaWNzTGF5
ZXI6OnN5bmNDb21wb3NpdGluZ1N0YXRlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGNoaWxkcmVuKCkuc2l6ZSgpOyArK2kpCiAgICAgICAgIGNo
aWxkcmVuKClbaV0tPnN5bmNDb21wb3NpdGluZ1N0YXRlKHJlY3QpOwotICAgIGlmIChyZXBsaWNh
TGF5ZXIoKSkKLSAgICAgICAgcmVwbGljYUxheWVyKCktPnN5bmNDb21wb3NpdGluZ1N0YXRlKHJl
Y3QpOwotICAgIGlmIChtYXNrTGF5ZXIoKSkKLSAgICAgICAgbWFza0xheWVyKCktPnN5bmNDb21w
b3NpdGluZ1N0YXRlKHJlY3QpOworCisgICAgaWYgKFdlYkdyYXBoaWNzTGF5ZXIqIG1hc2sgPSB0
b1dlYkdyYXBoaWNzTGF5ZXIobWFza0xheWVyKCkpKQorICAgICAgICBtYXNrLT5zeW5jQ29tcG9z
aXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKTsKKworICAgIGlmIChXZWJHcmFwaGljc0xheWVy
KiByZXBsaWNhID0gdG9XZWJHcmFwaGljc0xheWVyKHJlcGxpY2FMYXllcigpKSkKKyAgICAgICAg
cmVwbGljYS0+c3luY0NvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCk7CisKICAgICBz
eW5jQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKTsKIH0KIApAQCAtNDE1LDkgKzQz
Nyw2IEBAIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6c3luY0NvbXBvc2l0aW5nU3RhdGVGb3JUaGlz
TGF5ZXJPbmx5KCkKICAgICBtX2xheWVySW5mby5jaGlsZHJlblRyYW5zZm9ybSA9IGNoaWxkcmVu
VHJhbnNmb3JtKCk7CiAgICAgbV9sYXllckluZm8uY29udGVudHNPcGFxdWUgPSBjb250ZW50c09w
YXF1ZSgpOwogICAgIG1fbGF5ZXJJbmZvLmNvbnRlbnRzUmVjdCA9IGNvbnRlbnRzUmVjdCgpOwot
Ci0gICAgLy8gSW4gdGhlIHNoYWRvdyBsYXllciB0cmVlIHdlIGNyZWF0ZSBpbiB0aGUgVUkgcHJv
Y2VzcywgbGF5ZXJzIHdpdGggZGlyZWN0bHkgY29tcG9zaXRlZCBpbWFnZXMgYXJlIGFsd2F5cyBj
b25zaWRlcmVkIHRvIGRyYXcgY29udGVudC4KLSAgICAvLyBPdGhlcndpc2UsIHdlJ2QgaGF2ZSB0
byBjaGVjayB3aGV0aGVyIGFuIGxheWVyIHdpdGggZHJhd3NDb250ZW50PT1mYWxzZSBoYXMgYSBk
aXJlY3RseSBjb21wb3NpdGVkIGltYWdlIG11bHRpcGxlIHRpbWVzLgogICAgIG1fbGF5ZXJJbmZv
LmRyYXdzQ29udGVudCA9IGRyYXdzQ29udGVudCgpOwogICAgIG1fbGF5ZXJJbmZvLm1hc2sgPSB0
b1dlYkxheWVySUQobWFza0xheWVyKCkpOwogICAgIG1fbGF5ZXJJbmZvLm1hc2tzVG9Cb3VuZHMg
PSBtYXNrc1RvQm91bmRzKCk7CkBAIC00NTksNiArNDc4LDkgQEAgdm9pZCBXZWJHcmFwaGljc0xh
eWVyOjpzZXRDb250ZW50c1NjYWxlKGZsb2F0IHNjYWxlKQogICAgICAgICBsYXllci0+c2V0Q29u
dGVudHNTY2FsZShzY2FsZSk7CiAgICAgfQogCisgICAgaWYgKFdlYkdyYXBoaWNzTGF5ZXIqIG1h
c2sgPSB0b1dlYkdyYXBoaWNzTGF5ZXIobWFza0xheWVyKCkpKQorICAgICAgICBtYXNrLT5zZXRD
b250ZW50c1NjYWxlKHNjYWxlKTsKKwogICAgIG1fY29udGVudHNTY2FsZSA9IHNjYWxlOwogICAg
IGlmIChtX21haW5CYWNraW5nU3RvcmUgJiYgbV9tYWluQmFja2luZ1N0b3JlLT5jb250ZW50c1Nj
YWxlKCkgPT0gc2NhbGUpCiAgICAgICAgIHJldHVybjsKQEAgLTUxMSw3ICs1MzMsNyBAQCBib29s
IFdlYkdyYXBoaWNzTGF5ZXI6OnRpbGVkQmFja2luZ1N0b3JlVXBkYXRlc0FsbG93ZWQoKSBjb25z
dAogCiBJbnRSZWN0IFdlYkdyYXBoaWNzTGF5ZXI6OnRpbGVkQmFja2luZ1N0b3JlQ29udGVudHNS
ZWN0KCkKIHsKLSAgICBpZiAobV9pbWFnZSkKKyAgICBpZiAoIWRyYXdzQ29udGVudCgpKQogICAg
ICAgICByZXR1cm4gSW50UmVjdCgpOwogICAgIHJldHVybiBJbnRSZWN0KDAsIDAsIHNpemUoKS53
aWR0aCgpLCBzaXplKCkuaGVpZ2h0KCkpOwogfQpAQCAtNTU0LDEzICs1NzYsMjQgQEAgdm9pZCBX
ZWJHcmFwaGljc0xheWVyOjp1cGRhdGVUaWxlQnVmZmVyc1JlY3Vyc2l2ZWx5KCkKICAgICAgICAg
V2ViR3JhcGhpY3NMYXllciogbGF5ZXIgPSB0b1dlYkdyYXBoaWNzTGF5ZXIodGhpcy0+Y2hpbGRy
ZW4oKVtpXSk7CiAgICAgICAgIGxheWVyLT51cGRhdGVUaWxlQnVmZmVyc1JlY3Vyc2l2ZWx5KCk7
CiAgICAgfQorCisgICAgaWYgKFdlYkdyYXBoaWNzTGF5ZXIqIG1hc2sgPSB0b1dlYkdyYXBoaWNz
TGF5ZXIobWFza0xheWVyKCkpKQorICAgICAgICBtYXNrLT51cGRhdGVUaWxlQnVmZmVyc1JlY3Vy
c2l2ZWx5KCk7CiB9CiAKIFdlYkxheWVyVHJlZVRpbGVDbGllbnQqIFdlYkdyYXBoaWNzTGF5ZXI6
OmxheWVyVHJlZVRpbGVDbGllbnQoKSBjb25zdAogewogICAgIGlmIChtX2xheWVyVHJlZVRpbGVD
bGllbnQpCiAgICAgICAgIHJldHVybiBtX2xheWVyVHJlZVRpbGVDbGllbnQ7Ci0gICAgV2ViR3Jh
cGhpY3NMYXllciogcGFyZW50ID0gdG9XZWJHcmFwaGljc0xheWVyKHRoaXMtPnBhcmVudCgpKTsK
KyAgICBXZWJHcmFwaGljc0xheWVyKiBwYXJlbnQ7CisgICAgaWYgKHRoaXMtPnJlcGxpY2F0ZWRM
YXllcigpKQorICAgICAgICBwYXJlbnQgPSB0b1dlYkdyYXBoaWNzTGF5ZXIodGhpcy0+cmVwbGlj
YXRlZExheWVyKCkpOworICAgIGVsc2UgaWYgKHRoaXMtPm1hc2tUYXJnZXQoKSkKKyAgICAgICAg
cGFyZW50ID0gdG9XZWJHcmFwaGljc0xheWVyKHRoaXMtPm1hc2tUYXJnZXQoKSk7CisgICAgZWxz
ZQorICAgICAgICBwYXJlbnQgPSB0b1dlYkdyYXBoaWNzTGF5ZXIodGhpcy0+cGFyZW50KCkpOwor
CisKICAgICBpZiAoIXBhcmVudCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIHBhcmVu
dC0+bGF5ZXJUcmVlVGlsZUNsaWVudCgpOwpAQCAtNTg5LDYgKzYyMiw5IEBAIHZvaWQgV2ViR3Jh
cGhpY3NMYXllcjo6cHVyZ2VCYWNraW5nU3RvcmVzKCkKICAgICAgICAgbGF5ZXItPnB1cmdlQmFj
a2luZ1N0b3JlcygpOwogICAgIH0KIAorICAgIGlmIChXZWJHcmFwaGljc0xheWVyKiBtYXNrID0g
dG9XZWJHcmFwaGljc0xheWVyKG1hc2tMYXllcigpKSkKKyAgICAgICAgbWFzay0+cHVyZ2VCYWNr
aW5nU3RvcmVzKCk7CisKICAgICBpZiAobV9tYWluQmFja2luZ1N0b3JlKQogICAgICAgICBtX21h
aW5CYWNraW5nU3RvcmUuY2xlYXIoKTsKIApAQCAtNjA1LDYgKzY0MSw4IEBAIHZvaWQgV2ViR3Jh
cGhpY3NMYXllcjo6cmVjcmVhdGVCYWNraW5nU3RvcmVJZk5lZWRlZCgpCiAgICAgICAgIFdlYkdy
YXBoaWNzTGF5ZXIqIGxheWVyID0gdG9XZWJHcmFwaGljc0xheWVyKHRoaXMtPmNoaWxkcmVuKClb
aV0pOwogICAgICAgICBsYXllci0+cmVjcmVhdGVCYWNraW5nU3RvcmVJZk5lZWRlZCgpOwogICAg
IH0KKyAgICBpZiAoV2ViR3JhcGhpY3NMYXllciogbWFzayA9IHRvV2ViR3JhcGhpY3NMYXllciht
YXNrTGF5ZXIoKSkpCisgICAgICAgIG1hc2stPnJlY3JlYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQo
KTsKIAogICAgIGlmICghbV9tYWluQmFja2luZ1N0b3JlKSB7CiAgICAgICAgIG1fbWFpbkJhY2tp
bmdTdG9yZSA9IGFkb3B0UHRyKG5ldyBUaWxlZEJhY2tpbmdTdG9yZSh0aGlzLCBUaWxlZEJhY2tp
bmdTdG9yZVJlbW90ZVRpbGVCYWNrZW5kOjpjcmVhdGUodGhpcykpKTsKQEAgLTYyMCw2ICs2NTgs
MTAgQEAgdm9pZCBXZWJHcmFwaGljc0xheWVyOjpzZXRMYXllclRyZWVUaWxlQ2xpZW50KFdlYktp
dDo6V2ViTGF5ZXJUcmVlVGlsZUNsaWVudCogY2wKICAgICBpZiAobV9sYXllclRyZWVUaWxlQ2xp
ZW50ID09IGNsaWVudCkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKFdlYkdyYXBoaWNzTGF5
ZXIqIHJlcGxpY2EgPSB0b1dlYkdyYXBoaWNzTGF5ZXIocmVwbGljYUxheWVyKCkpKQorICAgICAg
ICByZXBsaWNhLT5zZXRMYXllclRyZWVUaWxlQ2xpZW50KGNsaWVudCk7CisgICAgaWYgKFdlYkdy
YXBoaWNzTGF5ZXIqIG1hc2sgPSB0b1dlYkdyYXBoaWNzTGF5ZXIobWFza0xheWVyKCkpKQorICAg
ICAgICBtYXNrLT5zZXRMYXllclRyZWVUaWxlQ2xpZW50KGNsaWVudCk7CiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBjaGlsZHJlbigpLnNpemUoKTsgKytpKSB7CiAgICAgICAgIFdlYkdyYXBo
aWNzTGF5ZXIqIGxheWVyID0gdG9XZWJHcmFwaGljc0xheWVyKHRoaXMtPmNoaWxkcmVuKClbaV0p
OwogICAgICAgICBsYXllci0+c2V0TGF5ZXJUcmVlVGlsZUNsaWVudChjbGllbnQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGlj
c0xheWVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdy
YXBoaWNzTGF5ZXIuaAppbmRleCAzNjFmY2IyLi4yZjhjYjlhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5
ZXIuaApAQCAtMTA3LDYgKzEwNyw5IEBAIHB1YmxpYzoKICAgICBJbWFnZSogaW1hZ2UoKSB7IHJl
dHVybiBtX2ltYWdlLmdldCgpOyB9CiAgICAgdm9pZCBub3RpZnlBbmltYXRpb25TdGFydGVkKGRv
dWJsZSk7CiAKKyAgICBHcmFwaGljc0xheWVyKiBtYXNrVGFyZ2V0KCkgY29uc3QgeyByZXR1cm4g
bV9tYXNrVGFyZ2V0OyB9CisgICAgdm9pZCBzZXRNYXNrVGFyZ2V0KEdyYXBoaWNzTGF5ZXIqIGxh
eWVyKSB7IG1fbWFza1RhcmdldCA9IGxheWVyOyB9CisKICAgICBzdGF0aWMgdm9pZCBpbml0RmFj
dG9yeSgpOwogCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCkBAIC0xMzcsOCArMTQwLDgg
QEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFdlYktpdDo6V2ViTGF5ZXJJbmZvIG1fbGF5ZXJJ
bmZvOwotICAgIFdlYktpdDo6V2ViTGF5ZXJUcmVlVGlsZUNsaWVudCogbV9sYXllclRpbGVDbGll
bnQ7CiAgICAgUmVmUHRyPEltYWdlPiBtX2ltYWdlOworICAgIEdyYXBoaWNzTGF5ZXIqIG1fbWFz
a1RhcmdldDsKICAgICBGbG9hdFJlY3QgbV9uZWVkc0Rpc3BsYXlSZWN0OwogICAgIEludFJlY3Qg
bV92aXNpYmxlQ29udGVudFJlY3Q7CiAgICAgYm9vbCBtX25lZWRzRGlzcGxheSA6IDE7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122118</attachid>
            <date>2012-01-11 16:19:25 -0800</date>
            <delta_ts>2012-01-11 16:27:07 -0800</delta_ts>
            <desc>Patch 1</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>11910</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmMGJlZWFhLi41ZDYzNWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUg
QEAKKzIwMTItMDEtMTEgIE5vJ2FtIFJvc2VudGhhbCAgPG5vYW0ucm9zZW50aGFsQG5va2lhLmNv
bT4KKworICAgICAgICBbUXRdW1dLMl0gV2ViUHJvY2Vzc2VzIGNyYXNoZXMgd2hlbiBjb21wb3Np
dGVkIHJlZmxlY3Rpb25zL21hc2tzIGFyZSBwcmVzZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTg4MworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZG9lcyBub3QgZml4IHRoZSBidWcg
eWV0LCBidXQgcHJlcGFyZXMgVGV4dHVyZU1hcHBlciBmb3IgdGhlIHJlcXVpcmVkIGZpeC4KKwor
ICAgICAgICBTaW1wbGlmeSByZWZsZWN0aW9uLCBtYXNrIGFuZCBpbnRlcm1lZGlhdGUgc3VyZmFj
ZSBjb2RlIGluIFdlYkNvcmUuCisgICAgICAgIDEuIEluc3RlYWQgb2YgZXhwbGljaXRseSByZWxl
YXNpbmcgaW50ZXJtZWRpYXRlIHN1cmZhY2VzIHRvIHRoZSBwb29sLCB0aGV5IGJlY29tZSByZWxl
YXNlZAorICAgICAgICAgICB3aGVuIHRoZXkncmUgZGVyZWZlcmVuY2VkLiBXZSBkbyB0aGF0IGJ5
IGNoZWNraW5nIHRoZSByZWZDb3VudCBvZiB0aGUgdGV4dHVyZSB3aGVuIHJlcXVlc3RlZC4KKyAg
ICAgICAgMi4gUmVuYW1lIFRleHR1cmVNYXBwZXJOb2RlOjp0ZXh0dXJlKCkgdG8gZ2V0Rmlyc3RD
b250ZW50VGV4dHVyZUZvck1hc2soKSwgYW5kIGFsbG93IHRoZQorICAgICAgICAgICB0ZXh0dXJl
IHRvIGNvbWUgZnJvbSB0aGUgZXh0ZXJuYWxseS1tYW5hZ2VkIHRpbGVzLgorICAgICAgICAzLiBS
ZXR1cm4gYSB2aXNpYmxlIHJlY3QgZm9yIGEgbWFzayBsYXllciBiYXNlZCBvbiBpdHMgcGFyZW50
LCBzaW5jZSBhIG1hc2sgbGF5ZXIgZG9lc24ndAorICAgICAgICAgICBoYXZlIGdlb21ldHJ5LiBU
aGVyZSdzIG5vIG5lZWQgdG8gcmV0dXJuIGEgdmlzaWJsZSByZWN0IGZvciByZXBsaWNhIGxheWVy
cywgc2luY2UgdGhleQorICAgICAgICAgICBkb24ndCBoYXZlIHRoZWlyIG93biBjb250ZW50Lgor
CisgICAgICAgIGNvbXBvc2l0aW5nL3JlZmxlY3Rpb25zIGFuZCBjb21wb3NpdGluZy9tYXNrcyB0
ZXN0IHRoaXMgY29kZSBwYXRoLiBUaGV5IHN0aWxsIGNyYXNoIGluIFdlYktpdDIsCisgICAgICAg
IGJ1dCB3b3JrIGZpbmUgd2l0aCBXZWJLaXQxIGFmdGVyIHRoaXMgY2hhbmdlLgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dHVyZU1hcHBlcjo6YWNxdWlyZVRleHR1cmVGcm9tUG9vbCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlck5vZGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dHVyZU1hcHBlck5vZGU6OmNvbGxlY3RWaXNpYmxlQ29udGVudHNSZWN0cyk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTm9kZTo6Z2V0Rmlyc3RDb250ZW50VGV4
dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTm9kZTo6cGFpbnRTZWxmKToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJOb2RlOjpwYWludFJlZmxlY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlck5vZGU6OnBhaW50UmVjdXJzaXZlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlck5vZGUuaDoKKwog
MjAxMi0wMS0xMSAgQWRhbSBUcmVhdCAgPGF0cmVhdEByaW0uY29tPgogCiAgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjA4OApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuY3Bw
CmluZGV4IDI2MjJkMjEuLjVhZjFiNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5jcHAKQEAgLTI2LDE5ICsy
NiwyMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4g
VGV4dHVyZU1hcHBlcjo6YWNxdWlyZVRleHR1cmVGcm9tUG9vbChjb25zdCBJbnRTaXplJiBzaXpl
KQogewotICAgIGlmIChtX3RleHR1cmVQb29sLmlzRW1wdHkoKSkgewotICAgICAgICBSZWZQdHI8
Qml0bWFwVGV4dHVyZT4gc2VsZWN0ZWRUZXh0dXJlID0gY3JlYXRlVGV4dHVyZSgpOwotICAgICAg
ICBzZWxlY3RlZFRleHR1cmUtPnJlc2V0KHNpemUsIGZhbHNlKTsKLSAgICAgICAgc2VsZWN0ZWRU
ZXh0dXJlLT5sb2NrKCk7Ci0gICAgICAgIHJldHVybiBzZWxlY3RlZFRleHR1cmU7Ci0gICAgfQot
Ci0gICAgc2l6ZV90IGluZGV4ID0gMDsKLSAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gc2VsZWN0
ZWRUZXh0dXJlID0gbV90ZXh0dXJlUG9vbFswXTsKKyAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4g
c2VsZWN0ZWRUZXh0dXJlOwogCi0gICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBtX3RleHR1cmVQ
b29sLnNpemUoKTsgKytpKSB7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3RleHR1cmVQ
b29sLnNpemUoKTsgKytpKSB7CiAgICAgICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJl
ID0gbV90ZXh0dXJlUG9vbFtpXTsKIAorICAgICAgICAvLyBBIHRleHR1cmUgdGhhdCdzIG5vdCB1
c2VkIHdvdWxkIGhhdmUgdG8gcmVmZXJlbmNlcyAtIHRoZSByZWZlcmVuY2UgaW5zaWRlIHRoZSB2
ZWN0b3IsIGFuZCB0aGUgInRleHR1cmUiIGxvY2FsIHZhcmlhYmxlLgorICAgICAgICBpZiAodGV4
dHVyZS0+cmVmQ291bnQoKSA+IDIpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBp
ZiAoIXNlbGVjdGVkVGV4dHVyZSkgeworICAgICAgICAgICAgc2VsZWN0ZWRUZXh0dXJlID0gdGV4
dHVyZTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKICAgICAgICAgSW50U2l6
ZSB0ZXh0dXJlU2l6ZSA9IHRleHR1cmUtPnNpemUoKTsKICAgICAgICAgSW50U2l6ZSBzZWxlY3Rl
ZFRleHR1cmVTaXplID0gc2VsZWN0ZWRUZXh0dXJlLT5zaXplKCk7CiAKQEAgLTU4LDIyICs1OSwx
NyBAQCBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IFRleHR1cmVNYXBwZXI6OmFjcXVpcmVUZXh0
dXJlRnJvbVBvb2woY29uc3QgSW50U2l6ZSYgcwogICAgICAgICAgICAgY29udGludWU7CiAKICAg
ICAgICAgc2VsZWN0ZWRUZXh0dXJlID0gdGV4dHVyZTsKLSAgICAgICAgaW5kZXggPSBpOwogICAg
IH0KIAotICAgIG1fdGV4dHVyZVBvb2wucmVtb3ZlKGluZGV4KTsKKyAgICBpZiAoIXNlbGVjdGVk
VGV4dHVyZSkgeworICAgICAgICBwcmludGYoIkNyZWF0aW5nIGludGVybWVkaWF0ZSBzdXJmYWNl
LlxuIik7CisgICAgICAgIHNlbGVjdGVkVGV4dHVyZSA9IGNyZWF0ZVRleHR1cmUoKTsKKyAgICAg
ICAgbV90ZXh0dXJlUG9vbC5hcHBlbmQoc2VsZWN0ZWRUZXh0dXJlKTsKKyAgICB9CisKICAgICBz
ZWxlY3RlZFRleHR1cmUtPnJlc2V0KHNpemUsIGZhbHNlKTsKLSAgICBzZWxlY3RlZFRleHR1cmUt
PmxvY2soKTsKICAgICByZXR1cm4gc2VsZWN0ZWRUZXh0dXJlOwogfQogCi12b2lkIFRleHR1cmVN
YXBwZXI6OnJlbGVhc2VUZXh0dXJlVG9Qb29sKEJpdG1hcFRleHR1cmUqIHRleHR1cmUpCi17Ci0g
ICAgaWYgKCF0ZXh0dXJlKQotICAgICAgICByZXR1cm47Ci0gICAgbV90ZXh0dXJlUG9vbC5hcHBl
bmQodGV4dHVyZSk7Ci0gICAgdGV4dHVyZS0+dW5sb2NrKCk7Ci19Ci0KIH0KICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyLmgKaW5kZXggZDgxMzMzZC4uMGNmM2E0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oCkBAIC0xMjYs
MTAgKzEyNiw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5QYWludGluZygpIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBlbmRQYWludGluZygpIHsgfQogCi0gICAgdmlydHVhbCB2b2lk
IHJlbGVhc2VUZXh0dXJlVG9Qb29sKEJpdG1hcFRleHR1cmUqIHN1cmZhY2UpOwogICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBhY3F1aXJlVGV4dHVyZUZyb21Qb29sKGNvbnN0
IEludFNpemUmKTsKIAotCiBwcm90ZWN0ZWQ6CiAgICAgVGV4dHVyZU1hcHBlcigpCiAgICAgICAg
IDogbV9pbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uRGVmYXVsdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlck5vZGUuY3BwCmluZGV4IDYyMzE0YWQuLjc1NmNmYjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTm9kZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJOb2RlLmNwcApAQCAtMjIwLDEwICsyMjAsNiBAQCBib29sIFRleHR1cmVNYXBwZXJOb2RlOjpj
b2xsZWN0VmlzaWJsZUNvbnRlbnRzUmVjdHMoTm9kZVJlY3RNYXAmIHJlY3RNYXAsIGNvbnN0CiAK
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fY2hpbGRyZW4uc2l6ZSgpOyArK2kpCiAgICAgICAg
IGV4aXN0cyA9IG1fY2hpbGRyZW5baV0tPmNvbGxlY3RWaXNpYmxlQ29udGVudHNSZWN0cyhyZWN0
TWFwLCByb290VmlzaWJsZVJlY3QpIHx8IGV4aXN0czsKLSAgICBpZiAobV9zdGF0ZS5tYXNrTGF5
ZXIpCi0gICAgICAgIGV4aXN0cyA9IG1fc3RhdGUubWFza0xheWVyLT5jb2xsZWN0VmlzaWJsZUNv
bnRlbnRzUmVjdHMocmVjdE1hcCwgcm9vdFZpc2libGVSZWN0KSB8fCBleGlzdHM7Ci0gICAgaWYg
KG1fc3RhdGUucmVwbGljYUxheWVyKQotICAgICAgICBleGlzdHMgPSBtX3N0YXRlLnJlcGxpY2FM
YXllci0+Y29sbGVjdFZpc2libGVDb250ZW50c1JlY3RzKHJlY3RNYXAsIHJvb3RWaXNpYmxlUmVj
dCkgfHwgZXhpc3RzOwogCiAgICAgLy8gTm9uLWludmVydGlibGUgbGF5ZXJzIGFyZSBub3Qgdmlz
aWJsZS4KICAgICBpZiAoIW1fdHJhbnNmb3Jtcy50YXJnZXQuaXNJbnZlcnRpYmxlKCkpCkBAIC0y
MzksNiArMjM1LDEwIEBAIGJvb2wgVGV4dHVyZU1hcHBlck5vZGU6OmNvbGxlY3RWaXNpYmxlQ29u
dGVudHNSZWN0cyhOb2RlUmVjdE1hcCYgcmVjdE1hcCwgY29uc3QKICAgICAgICAgdmlzaWJsZUNv
bnRlbnRzUmVjdC5pbnRlcnNlY3QodmlzaWJsZVJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMpOwogICAg
IH0KIAorICAgIC8vIFRoZSB2aXNpYmxlIHJlY3QgZm9yIGEgbWFzayBsYXllciBpcyBhbHdheXMg
ZXF1YWwgdG8gdGhlIHZpc2libGUgcmVjdCBvZiB0aGUgbWFza2VkIGxheWVyLgorICAgIGlmICht
X3N0YXRlLm1hc2tMYXllcikKKyAgICAgICAgcmVjdE1hcC5hZGQobV9zdGF0ZS5tYXNrTGF5ZXIs
IG1fc3RhdGUudmlzaWJsZVJlY3QpOworCiAgICAgaWYgKHZpc2libGVDb250ZW50c1JlY3QuaXNF
bXB0eSgpIHx8IHZpc2libGVDb250ZW50c1JlY3QgPT0gbV9zdGF0ZS52aXNpYmxlUmVjdCkKICAg
ICAgICAgcmV0dXJuIGV4aXN0czsKIApAQCAtMzU3LDYgKzM1NywyMyBAQCBGbG9hdFJlY3QgVGV4
dHVyZU1hcHBlck5vZGU6OnRhcmdldFJlY3RGb3JUaWxlUmVjdChjb25zdCBGbG9hdFJlY3QmIHRh
cmdldFJlY3QsCiAgICAgICAgICAgICAgICAgdGlsZVJlY3QuaGVpZ2h0KCkpOwogfQogCitCaXRt
YXBUZXh0dXJlKiBUZXh0dXJlTWFwcGVyTm9kZTo6Z2V0Rmlyc3RDb250ZW50VGV4dHVyZUZvck1h
c2soKQoreworI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQorICAgIGlmIChtX3N0YXRlLnRp
bGVPd25lcnNoaXAgPT0gRXh0ZXJuYWxseU1hbmFnZWRUaWxlcykgeworICAgICAgICBIYXNoTWFw
PGludCwgRXh0ZXJuYWxseU1hbmFnZWRUaWxlPjo6aXRlcmF0b3IgZW5kID0gbV9leHRlcm5hbGx5
TWFuYWdlZFRpbGVzLmVuZCgpOworICAgICAgICBmb3IgKEhhc2hNYXA8aW50LCBFeHRlcm5hbGx5
TWFuYWdlZFRpbGU+OjppdGVyYXRvciBtYXBJdGVyYXRvciA9IG1fZXh0ZXJuYWxseU1hbmFnZWRU
aWxlcy5iZWdpbigpOyBtYXBJdGVyYXRvciAhPSBlbmQ7ICsrbWFwSXRlcmF0b3IpIHsKKyAgICAg
ICAgICAgIGlmIChCaXRtYXBUZXh0dXJlKiB0ZXh0dXJlID0gbWFwSXRlcmF0b3ItPnNlY29uZC5m
cm9udEJ1ZmZlci50ZXh0dXJlLmdldCgpKQorICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0dXJl
OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorI2VuZGlmCisgICAgcmV0
dXJuIG1fb3duZWRUaWxlcy5pc0VtcHR5KCkgPyAwIDogbV9vd25lZFRpbGVzWzBdLnRleHR1cmUu
Z2V0KCk7Cit9CisKKwogdm9pZCBUZXh0dXJlTWFwcGVyTm9kZTo6cGFpbnRTZWxmKGNvbnN0IFRl
eHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKG1fc2l6ZS5pc0Vt
cHR5KCkgfHwgKCFtX3N0YXRlLmRyYXdzQ29udGVudCAmJiBtX2N1cnJlbnRDb250ZW50LmNvbnRl
bnRUeXBlID09IEhUTUxDb250ZW50VHlwZSkpCkBAIC0zNjYsOSArMzgzLDkgQEAgdm9pZCBUZXh0
dXJlTWFwcGVyTm9kZTo6cGFpbnRTZWxmKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMm
IG9wdGlvbnMpCiAgICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHJlcGxpY2FNYXNrVGV4dHVyZTsK
IAogICAgIGlmIChtX3N0YXRlLm1hc2tMYXllcikKLSAgICAgICAgbWFza1RleHR1cmUgPSBtX3N0
YXRlLm1hc2tMYXllci0+dGV4dHVyZSgpOworICAgICAgICBtYXNrVGV4dHVyZSA9IG1fc3RhdGUu
bWFza0xheWVyLT5nZXRGaXJzdENvbnRlbnRUZXh0dXJlRm9yTWFzaygpOwogICAgIGlmIChtX3N0
YXRlLnJlcGxpY2FMYXllciAmJiBtX3N0YXRlLnJlcGxpY2FMYXllci0+bV9zdGF0ZS5tYXNrTGF5
ZXIpCi0gICAgICAgIHJlcGxpY2FNYXNrVGV4dHVyZSA9IG1fc3RhdGUucmVwbGljYUxheWVyLT5t
X3N0YXRlLm1hc2tMYXllci0+dGV4dHVyZSgpOworICAgICAgICByZXBsaWNhTWFza1RleHR1cmUg
PSBtX3N0YXRlLnJlcGxpY2FMYXllci0+bV9zdGF0ZS5tYXNrTGF5ZXItPmdldEZpcnN0Q29udGVu
dFRleHR1cmVGb3JNYXNrKCk7CiAKICAgICBmbG9hdCBvcGFjaXR5ID0gb3B0aW9ucy5pc1N1cmZh
Y2UgPyAxIDogb3B0aW9ucy5vcGFjaXR5OwogICAgIEZsb2F0UmVjdCB0YXJnZXRSZWN0ID0gdGhp
cy0+dGFyZ2V0UmVjdCgpOwpAQCAtNDcwLDE2ICs0ODcsMTMgQEAgYm9vbCBUZXh0dXJlTWFwcGVy
Tm9kZTo6cGFpbnRSZWZsZWN0aW9uKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG9w
dGlvbnMKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+
IHN1cmZhY2UoY29udGVudFN1cmZhY2UpOworICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBtYXNr
VGV4dHVyZSA9IG1fc3RhdGUubWFza0xheWVyID8gbV9zdGF0ZS5tYXNrTGF5ZXItPmdldEZpcnN0
Q29udGVudFRleHR1cmVGb3JNYXNrKCkgOiAwOwogICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBt
YXNrU3VyZmFjZTsKICAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gcmVwbGljYU1hc2tTdXJmYWNl
OwogICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiByZXBsaWNhTWFza1RleHR1cmU7CiAKICAgICBp
ZiAoVGV4dHVyZU1hcHBlck5vZGUqIHJlcGxpY2FNYXNrID0gbV9zdGF0ZS5yZXBsaWNhTGF5ZXIt
Pm1fc3RhdGUubWFza0xheWVyKQotICAgICAgICByZXBsaWNhTWFza1RleHR1cmUgPSByZXBsaWNh
TWFzay0+dGV4dHVyZSgpOwotCi0gICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IG1hc2tUZXh0dXJl
OwotICAgIGlmIChUZXh0dXJlTWFwcGVyTm9kZSogbWFzayA9IG1fc3RhdGUubWFza0xheWVyKQot
ICAgICAgICBtYXNrVGV4dHVyZSA9IG1hc2stPnRleHR1cmUoKTsKKyAgICAgICAgcmVwbGljYU1h
c2tUZXh0dXJlID0gcmVwbGljYU1hc2stPmdldEZpcnN0Q29udGVudFRleHR1cmVGb3JNYXNrKCk7
CiAKICAgICBjb25zdCBJbnRTaXplIHZpZXdwb3J0U2l6ZSA9IG9wdGlvbnMudGV4dHVyZU1hcHBl
ci0+dmlld3BvcnRTaXplKCk7CiAgICAgY29uc3QgYm9vbCB1c2VJbnRlcm1lZGlhdGVCdWZmZXJG
b3JSZXBsaWNhID0gbV9zdGF0ZS5yZXBsaWNhTGF5ZXIgJiYgb3B0aW9ucy5vcGFjaXR5IDwgMC45
OTsKQEAgLTUwNyw3ICs1MjEsNiBAQCBib29sIFRleHR1cmVNYXBwZXJOb2RlOjpwYWludFJlZmxl
Y3Rpb24oY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucwogICAgICAgICBS
ZWZQdHI8Qml0bWFwVGV4dHVyZT4gbWFza1N1cmZhY2UgPSBvcHRpb25zLnRleHR1cmVNYXBwZXIt
PmFjcXVpcmVUZXh0dXJlRnJvbVBvb2wob3B0aW9ucy50ZXh0dXJlTWFwcGVyLT52aWV3cG9ydFNp
emUoKSk7CiAgICAgICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+YmluZFN1cmZhY2UobWFza1N1
cmZhY2UuZ2V0KCkpOwogICAgICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmRyYXdUZXh0dXJl
KCpzdXJmYWNlLmdldCgpLCB2aWV3cG9ydFJlY3QsIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIDEs
IG1hc2tUZXh0dXJlLmdldCgpKTsKLSAgICAgICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5yZWxl
YXNlVGV4dHVyZVRvUG9vbChzdXJmYWNlLmdldCgpKTsKICAgICAgICAgc3VyZmFjZSA9IG1hc2tT
dXJmYWNlOwogICAgICAgICBtYXNrVGV4dHVyZS5jbGVhcigpOwogICAgIH0KQEAgLTUxOCw3ICs1
MzEsNiBAQCBib29sIFRleHR1cmVNYXBwZXJOb2RlOjpwYWludFJlZmxlY3Rpb24oY29uc3QgVGV4
dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucwogICAgICAgICBvcHRpb25zLnRleHR1cmVN
YXBwZXItPmJpbmRTdXJmYWNlKHJlcGxpY2FTdXJmYWNlLmdldCgpKTsKICAgICAgICAgb3B0aW9u
cy50ZXh0dXJlTWFwcGVyLT5kcmF3VGV4dHVyZSgqc3VyZmFjZS5nZXQoKSwgdmlld3BvcnRSZWN0
LCBtX3RyYW5zZm9ybXMucmVwbGljYSwgbV9zdGF0ZS5yZXBsaWNhTGF5ZXItPm1fb3BhY2l0eSwg
cmVwbGljYU1hc2tUZXh0dXJlLmdldCgpKTsKICAgICAgICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVy
LT5kcmF3VGV4dHVyZSgqc3VyZmFjZS5nZXQoKSwgdmlld3BvcnRSZWN0LCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCgpLCAxLCBtYXNrVGV4dHVyZS5nZXQoKSk7Ci0gICAgICAgIG9wdGlvbnMudGV4dHVy
ZU1hcHBlci0+cmVsZWFzZVRleHR1cmVUb1Bvb2woc3VyZmFjZS5nZXQoKSk7CiAgICAgICAgIHN1
cmZhY2UgPSByZXBsaWNhU3VyZmFjZTsKICAgICB9CiAKQEAgLTUzMCwxMCArNTQyLDYgQEAgYm9v
bCBUZXh0dXJlTWFwcGVyTm9kZTo6cGFpbnRSZWZsZWN0aW9uKGNvbnN0IFRleHR1cmVNYXBwZXJQ
YWludE9wdGlvbnMmIG9wdGlvbnMKIAogICAgIC8vIERyYXcgdGhlIG9yaWdpbmFsLgogICAgIG9w
dGlvbnMudGV4dHVyZU1hcHBlci0+ZHJhd1RleHR1cmUoKnN1cmZhY2UuZ2V0KCksIHZpZXdwb3J0
UmVjdCwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgb3B0aW9ucy5vcGFjaXR5LCBtYXNrVGV4dHVy
ZS5nZXQoKSk7Ci0KLSAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPnJlbGVhc2VUZXh0dXJlVG9Q
b29sKG1hc2tTdXJmYWNlLmdldCgpKTsKLSAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPnJlbGVh
c2VUZXh0dXJlVG9Qb29sKHJlcGxpY2FNYXNrU3VyZmFjZS5nZXQoKSk7Ci0KICAgICByZXR1cm4g
dHJ1ZTsKIH0KIApAQCAtNTgyLDEzICs1OTAsMTEgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTm9kZTo6
cGFpbnRSZWN1cnNpdmUoVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyBvcHRpb25zKQogCiAgICAg
cGFpbnRTZWxmQW5kQ2hpbGRyZW4ob3B0aW9ucywgb3B0aW9uc0ZvckRlc2NlbmRhbnRzKTsKIAot
ICAgIGlmICghcGFpbnRSZWZsZWN0aW9uKG9wdGlvbnMsIHN1cmZhY2UuZ2V0KCkpKSB7Ci0gICAg
ICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+YmluZFN1cmZhY2Uob3B0aW9ucy5zdXJmYWNlKTsK
LSAgICAgICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5kcmF3VGV4dHVyZSgqc3VyZmFjZS5nZXQo
KSwgdmlld3BvcnRSZWN0LCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBvcHRpb25zLm9wYWNpdHks
IG1hc2tTdXJmYWNlLmdldCgpKTsKLSAgICB9CisgICAgaWYgKHBhaW50UmVmbGVjdGlvbihvcHRp
b25zLCBzdXJmYWNlLmdldCgpKSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgb3B0aW9ucy50ZXh0
dXJlTWFwcGVyLT5yZWxlYXNlVGV4dHVyZVRvUG9vbChzdXJmYWNlLmdldCgpKTsKLSAgICBvcHRp
b25zLnRleHR1cmVNYXBwZXItPnJlbGVhc2VUZXh0dXJlVG9Qb29sKG1hc2tTdXJmYWNlLmdldCgp
KTsKKyAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmJpbmRTdXJmYWNlKG9wdGlvbnMuc3VyZmFj
ZSk7CisgICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5kcmF3VGV4dHVyZSgqc3VyZmFjZS5nZXQo
KSwgdmlld3BvcnRSZWN0LCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBvcHRpb25zLm9wYWNpdHks
IG1hc2tTdXJmYWNlLmdldCgpKTsKIH0KIAogVGV4dHVyZU1hcHBlck5vZGU6On5UZXh0dXJlTWFw
cGVyTm9kZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTm9kZS5oCmluZGV4IDRlZTM3NTcuLmVkM2I3NmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyTm9kZS5oCkBAIC0xOTEsNyArMTkxLDcgQEAgcHJpdmF0ZToKICAgICBz
dGF0aWMgaW50IGNvbXBhcmVHcmFwaGljc0xheWVyc1pWYWx1ZShjb25zdCB2b2lkKiBhLCBjb25z
dCB2b2lkKiBiKTsKICAgICBzdGF0aWMgdm9pZCBzb3J0QnlaT3JkZXIoVmVjdG9yPFRleHR1cmVN
YXBwZXJOb2RlKiA+JiBhcnJheSwgaW50IGZpcnN0LCBpbnQgbGFzdCk7CiAKLSAgICBCaXRtYXBU
ZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbV9vd25lZFRpbGVzLmlzRW1wdHkoKSA/IDAgOiBt
X293bmVkVGlsZXNbMF0udGV4dHVyZS5nZXQoKTsgfQorICAgIEJpdG1hcFRleHR1cmUqIGdldEZp
cnN0Q29udGVudFRleHR1cmVGb3JNYXNrKCk7CiAKICAgICB2b2lkIHBhaW50UmVjdXJzaXZlKFRl
eHR1cmVNYXBwZXJQYWludE9wdGlvbnMpOwogICAgIGJvb2wgcGFpbnRSZWZsZWN0aW9uKGNvbnN0
IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmLCBCaXRtYXBUZXh0dXJlKiBzdXJmYWNlKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122123</attachid>
            <date>2012-01-11 16:27:07 -0800</date>
            <delta_ts>2012-01-12 08:30:16 -0800</delta_ts>
            <desc>atch 1: minor improvements to TextureMapperNode</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>11858</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmMGJlZWFhLi41ZDYzNWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUg
QEAKKzIwMTItMDEtMTEgIE5vJ2FtIFJvc2VudGhhbCAgPG5vYW0ucm9zZW50aGFsQG5va2lhLmNv
bT4KKworICAgICAgICBbUXRdW1dLMl0gV2ViUHJvY2Vzc2VzIGNyYXNoZXMgd2hlbiBjb21wb3Np
dGVkIHJlZmxlY3Rpb25zL21hc2tzIGFyZSBwcmVzZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTg4MworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZG9lcyBub3QgZml4IHRoZSBidWcg
eWV0LCBidXQgcHJlcGFyZXMgVGV4dHVyZU1hcHBlciBmb3IgdGhlIHJlcXVpcmVkIGZpeC4KKwor
ICAgICAgICBTaW1wbGlmeSByZWZsZWN0aW9uLCBtYXNrIGFuZCBpbnRlcm1lZGlhdGUgc3VyZmFj
ZSBjb2RlIGluIFdlYkNvcmUuCisgICAgICAgIDEuIEluc3RlYWQgb2YgZXhwbGljaXRseSByZWxl
YXNpbmcgaW50ZXJtZWRpYXRlIHN1cmZhY2VzIHRvIHRoZSBwb29sLCB0aGV5IGJlY29tZSByZWxl
YXNlZAorICAgICAgICAgICB3aGVuIHRoZXkncmUgZGVyZWZlcmVuY2VkLiBXZSBkbyB0aGF0IGJ5
IGNoZWNraW5nIHRoZSByZWZDb3VudCBvZiB0aGUgdGV4dHVyZSB3aGVuIHJlcXVlc3RlZC4KKyAg
ICAgICAgMi4gUmVuYW1lIFRleHR1cmVNYXBwZXJOb2RlOjp0ZXh0dXJlKCkgdG8gZ2V0Rmlyc3RD
b250ZW50VGV4dHVyZUZvck1hc2soKSwgYW5kIGFsbG93IHRoZQorICAgICAgICAgICB0ZXh0dXJl
IHRvIGNvbWUgZnJvbSB0aGUgZXh0ZXJuYWxseS1tYW5hZ2VkIHRpbGVzLgorICAgICAgICAzLiBS
ZXR1cm4gYSB2aXNpYmxlIHJlY3QgZm9yIGEgbWFzayBsYXllciBiYXNlZCBvbiBpdHMgcGFyZW50
LCBzaW5jZSBhIG1hc2sgbGF5ZXIgZG9lc24ndAorICAgICAgICAgICBoYXZlIGdlb21ldHJ5LiBU
aGVyZSdzIG5vIG5lZWQgdG8gcmV0dXJuIGEgdmlzaWJsZSByZWN0IGZvciByZXBsaWNhIGxheWVy
cywgc2luY2UgdGhleQorICAgICAgICAgICBkb24ndCBoYXZlIHRoZWlyIG93biBjb250ZW50Lgor
CisgICAgICAgIGNvbXBvc2l0aW5nL3JlZmxlY3Rpb25zIGFuZCBjb21wb3NpdGluZy9tYXNrcyB0
ZXN0IHRoaXMgY29kZSBwYXRoLiBUaGV5IHN0aWxsIGNyYXNoIGluIFdlYktpdDIsCisgICAgICAg
IGJ1dCB3b3JrIGZpbmUgd2l0aCBXZWJLaXQxIGFmdGVyIHRoaXMgY2hhbmdlLgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dHVyZU1hcHBlcjo6YWNxdWlyZVRleHR1cmVGcm9tUG9vbCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlck5vZGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dHVyZU1hcHBlck5vZGU6OmNvbGxlY3RWaXNpYmxlQ29udGVudHNSZWN0cyk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTm9kZTo6Z2V0Rmlyc3RDb250ZW50VGV4
dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTm9kZTo6cGFpbnRTZWxmKToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJOb2RlOjpwYWludFJlZmxlY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlck5vZGU6OnBhaW50UmVjdXJzaXZlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlck5vZGUuaDoKKwog
MjAxMi0wMS0xMSAgQWRhbSBUcmVhdCAgPGF0cmVhdEByaW0uY29tPgogCiAgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjA4OApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuY3Bw
CmluZGV4IDI2MjJkMjEuLjM0NmVjN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5jcHAKQEAgLTI2LDE5ICsy
NiwyMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4g
VGV4dHVyZU1hcHBlcjo6YWNxdWlyZVRleHR1cmVGcm9tUG9vbChjb25zdCBJbnRTaXplJiBzaXpl
KQogewotICAgIGlmIChtX3RleHR1cmVQb29sLmlzRW1wdHkoKSkgewotICAgICAgICBSZWZQdHI8
Qml0bWFwVGV4dHVyZT4gc2VsZWN0ZWRUZXh0dXJlID0gY3JlYXRlVGV4dHVyZSgpOwotICAgICAg
ICBzZWxlY3RlZFRleHR1cmUtPnJlc2V0KHNpemUsIGZhbHNlKTsKLSAgICAgICAgc2VsZWN0ZWRU
ZXh0dXJlLT5sb2NrKCk7Ci0gICAgICAgIHJldHVybiBzZWxlY3RlZFRleHR1cmU7Ci0gICAgfQot
Ci0gICAgc2l6ZV90IGluZGV4ID0gMDsKLSAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gc2VsZWN0
ZWRUZXh0dXJlID0gbV90ZXh0dXJlUG9vbFswXTsKKyAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4g
c2VsZWN0ZWRUZXh0dXJlOwogCi0gICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBtX3RleHR1cmVQ
b29sLnNpemUoKTsgKytpKSB7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3RleHR1cmVQ
b29sLnNpemUoKTsgKytpKSB7CiAgICAgICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJl
ID0gbV90ZXh0dXJlUG9vbFtpXTsKIAorICAgICAgICAvLyBBIHRleHR1cmUgdGhhdCdzIG5vdCB1
c2VkIHdvdWxkIGhhdmUgdHdvIHJlZmVyZW5jZXMgLSB0aGUgcmVmZXJlbmNlIGluc2lkZSB0aGUg
dmVjdG9yLCBhbmQgdGhlICJ0ZXh0dXJlIiBsb2NhbCB2YXJpYWJsZS4KKyAgICAgICAgaWYgKHRl
eHR1cmUtPnJlZkNvdW50KCkgPiAyKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAg
aWYgKCFzZWxlY3RlZFRleHR1cmUpIHsKKyAgICAgICAgICAgIHNlbGVjdGVkVGV4dHVyZSA9IHRl
eHR1cmU7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCiAgICAgICAgIEludFNp
emUgdGV4dHVyZVNpemUgPSB0ZXh0dXJlLT5zaXplKCk7CiAgICAgICAgIEludFNpemUgc2VsZWN0
ZWRUZXh0dXJlU2l6ZSA9IHNlbGVjdGVkVGV4dHVyZS0+c2l6ZSgpOwogCkBAIC01OCwyMiArNTks
MTYgQEAgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBUZXh0dXJlTWFwcGVyOjphY3F1aXJlVGV4
dHVyZUZyb21Qb29sKGNvbnN0IEludFNpemUmIHMKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAg
ICAgICAgIHNlbGVjdGVkVGV4dHVyZSA9IHRleHR1cmU7Ci0gICAgICAgIGluZGV4ID0gaTsKICAg
ICB9CiAKLSAgICBtX3RleHR1cmVQb29sLnJlbW92ZShpbmRleCk7CisgICAgaWYgKCFzZWxlY3Rl
ZFRleHR1cmUpIHsKKyAgICAgICAgc2VsZWN0ZWRUZXh0dXJlID0gY3JlYXRlVGV4dHVyZSgpOwor
ICAgICAgICBtX3RleHR1cmVQb29sLmFwcGVuZChzZWxlY3RlZFRleHR1cmUpOworICAgIH0KKwog
ICAgIHNlbGVjdGVkVGV4dHVyZS0+cmVzZXQoc2l6ZSwgZmFsc2UpOwotICAgIHNlbGVjdGVkVGV4
dHVyZS0+bG9jaygpOwogICAgIHJldHVybiBzZWxlY3RlZFRleHR1cmU7CiB9CiAKLXZvaWQgVGV4
dHVyZU1hcHBlcjo6cmVsZWFzZVRleHR1cmVUb1Bvb2woQml0bWFwVGV4dHVyZSogdGV4dHVyZSkK
LXsKLSAgICBpZiAoIXRleHR1cmUpCi0gICAgICAgIHJldHVybjsKLSAgICBtX3RleHR1cmVQb29s
LmFwcGVuZCh0ZXh0dXJlKTsKLSAgICB0ZXh0dXJlLT51bmxvY2soKTsKLX0KLQogfQogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXIuaAppbmRleCBkODEzMzNkLi4wY2YzYTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmgKQEAg
LTEyNiwxMCArMTI2LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBiZWdpblBhaW50aW5n
KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGVuZFBhaW50aW5nKCkgeyB9CiAKLSAgICB2aXJ0dWFs
IHZvaWQgcmVsZWFzZVRleHR1cmVUb1Bvb2woQml0bWFwVGV4dHVyZSogc3VyZmFjZSk7CiAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IGFjcXVpcmVUZXh0dXJlRnJvbVBvb2wo
Y29uc3QgSW50U2l6ZSYpOwogCi0KIHByb3RlY3RlZDoKICAgICBUZXh0dXJlTWFwcGVyKCkKICAg
ICAgICAgOiBtX2ludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25EZWZhdWx0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyTm9kZS5jcHAKaW5kZXggNjIzMTRhZC4uNzU2Y2ZiMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJOb2Rl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlck5vZGUuY3BwCkBAIC0yMjAsMTAgKzIyMCw2IEBAIGJvb2wgVGV4dHVyZU1hcHBlck5v
ZGU6OmNvbGxlY3RWaXNpYmxlQ29udGVudHNSZWN0cyhOb2RlUmVjdE1hcCYgcmVjdE1hcCwgY29u
c3QKIAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9jaGlsZHJlbi5zaXplKCk7ICsraSkKICAg
ICAgICAgZXhpc3RzID0gbV9jaGlsZHJlbltpXS0+Y29sbGVjdFZpc2libGVDb250ZW50c1JlY3Rz
KHJlY3RNYXAsIHJvb3RWaXNpYmxlUmVjdCkgfHwgZXhpc3RzOwotICAgIGlmIChtX3N0YXRlLm1h
c2tMYXllcikKLSAgICAgICAgZXhpc3RzID0gbV9zdGF0ZS5tYXNrTGF5ZXItPmNvbGxlY3RWaXNp
YmxlQ29udGVudHNSZWN0cyhyZWN0TWFwLCByb290VmlzaWJsZVJlY3QpIHx8IGV4aXN0czsKLSAg
ICBpZiAobV9zdGF0ZS5yZXBsaWNhTGF5ZXIpCi0gICAgICAgIGV4aXN0cyA9IG1fc3RhdGUucmVw
bGljYUxheWVyLT5jb2xsZWN0VmlzaWJsZUNvbnRlbnRzUmVjdHMocmVjdE1hcCwgcm9vdFZpc2li
bGVSZWN0KSB8fCBleGlzdHM7CiAKICAgICAvLyBOb24taW52ZXJ0aWJsZSBsYXllcnMgYXJlIG5v
dCB2aXNpYmxlLgogICAgIGlmICghbV90cmFuc2Zvcm1zLnRhcmdldC5pc0ludmVydGlibGUoKSkK
QEAgLTIzOSw2ICsyMzUsMTAgQEAgYm9vbCBUZXh0dXJlTWFwcGVyTm9kZTo6Y29sbGVjdFZpc2li
bGVDb250ZW50c1JlY3RzKE5vZGVSZWN0TWFwJiByZWN0TWFwLCBjb25zdAogICAgICAgICB2aXNp
YmxlQ29udGVudHNSZWN0LmludGVyc2VjdCh2aXNpYmxlUmVjdEluTG9jYWxDb29yZGluYXRlcyk7
CiAgICAgfQogCisgICAgLy8gVGhlIHZpc2libGUgcmVjdCBmb3IgYSBtYXNrIGxheWVyIGlzIGFs
d2F5cyBlcXVhbCB0byB0aGUgdmlzaWJsZSByZWN0IG9mIHRoZSBtYXNrZWQgbGF5ZXIuCisgICAg
aWYgKG1fc3RhdGUubWFza0xheWVyKQorICAgICAgICByZWN0TWFwLmFkZChtX3N0YXRlLm1hc2tM
YXllciwgbV9zdGF0ZS52aXNpYmxlUmVjdCk7CisKICAgICBpZiAodmlzaWJsZUNvbnRlbnRzUmVj
dC5pc0VtcHR5KCkgfHwgdmlzaWJsZUNvbnRlbnRzUmVjdCA9PSBtX3N0YXRlLnZpc2libGVSZWN0
KQogICAgICAgICByZXR1cm4gZXhpc3RzOwogCkBAIC0zNTcsNiArMzU3LDIzIEBAIEZsb2F0UmVj
dCBUZXh0dXJlTWFwcGVyTm9kZTo6dGFyZ2V0UmVjdEZvclRpbGVSZWN0KGNvbnN0IEZsb2F0UmVj
dCYgdGFyZ2V0UmVjdCwKICAgICAgICAgICAgICAgICB0aWxlUmVjdC5oZWlnaHQoKSk7CiB9CiAK
K0JpdG1hcFRleHR1cmUqIFRleHR1cmVNYXBwZXJOb2RlOjpnZXRGaXJzdENvbnRlbnRUZXh0dXJl
Rm9yTWFzaygpCit7CisjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisgICAgaWYgKG1fc3Rh
dGUudGlsZU93bmVyc2hpcCA9PSBFeHRlcm5hbGx5TWFuYWdlZFRpbGVzKSB7CisgICAgICAgIEhh
c2hNYXA8aW50LCBFeHRlcm5hbGx5TWFuYWdlZFRpbGU+OjppdGVyYXRvciBlbmQgPSBtX2V4dGVy
bmFsbHlNYW5hZ2VkVGlsZXMuZW5kKCk7CisgICAgICAgIGZvciAoSGFzaE1hcDxpbnQsIEV4dGVy
bmFsbHlNYW5hZ2VkVGlsZT46Oml0ZXJhdG9yIG1hcEl0ZXJhdG9yID0gbV9leHRlcm5hbGx5TWFu
YWdlZFRpbGVzLmJlZ2luKCk7IG1hcEl0ZXJhdG9yICE9IGVuZDsgKyttYXBJdGVyYXRvcikgewor
ICAgICAgICAgICAgaWYgKEJpdG1hcFRleHR1cmUqIHRleHR1cmUgPSBtYXBJdGVyYXRvci0+c2Vj
b25kLmZyb250QnVmZmVyLnRleHR1cmUuZ2V0KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRl
eHR1cmU7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisjZW5kaWYKKyAg
ICByZXR1cm4gbV9vd25lZFRpbGVzLmlzRW1wdHkoKSA/IDAgOiBtX293bmVkVGlsZXNbMF0udGV4
dHVyZS5nZXQoKTsKK30KKworCiB2b2lkIFRleHR1cmVNYXBwZXJOb2RlOjpwYWludFNlbGYoY29u
c3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAobV9zaXpl
LmlzRW1wdHkoKSB8fCAoIW1fc3RhdGUuZHJhd3NDb250ZW50ICYmIG1fY3VycmVudENvbnRlbnQu
Y29udGVudFR5cGUgPT0gSFRNTENvbnRlbnRUeXBlKSkKQEAgLTM2Niw5ICszODMsOSBAQCB2b2lk
IFRleHR1cmVNYXBwZXJOb2RlOjpwYWludFNlbGYoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0
aW9ucyYgb3B0aW9ucykKICAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gcmVwbGljYU1hc2tUZXh0
dXJlOwogCiAgICAgaWYgKG1fc3RhdGUubWFza0xheWVyKQotICAgICAgICBtYXNrVGV4dHVyZSA9
IG1fc3RhdGUubWFza0xheWVyLT50ZXh0dXJlKCk7CisgICAgICAgIG1hc2tUZXh0dXJlID0gbV9z
dGF0ZS5tYXNrTGF5ZXItPmdldEZpcnN0Q29udGVudFRleHR1cmVGb3JNYXNrKCk7CiAgICAgaWYg
KG1fc3RhdGUucmVwbGljYUxheWVyICYmIG1fc3RhdGUucmVwbGljYUxheWVyLT5tX3N0YXRlLm1h
c2tMYXllcikKLSAgICAgICAgcmVwbGljYU1hc2tUZXh0dXJlID0gbV9zdGF0ZS5yZXBsaWNhTGF5
ZXItPm1fc3RhdGUubWFza0xheWVyLT50ZXh0dXJlKCk7CisgICAgICAgIHJlcGxpY2FNYXNrVGV4
dHVyZSA9IG1fc3RhdGUucmVwbGljYUxheWVyLT5tX3N0YXRlLm1hc2tMYXllci0+Z2V0Rmlyc3RD
b250ZW50VGV4dHVyZUZvck1hc2soKTsKIAogICAgIGZsb2F0IG9wYWNpdHkgPSBvcHRpb25zLmlz
U3VyZmFjZSA/IDEgOiBvcHRpb25zLm9wYWNpdHk7CiAgICAgRmxvYXRSZWN0IHRhcmdldFJlY3Qg
PSB0aGlzLT50YXJnZXRSZWN0KCk7CkBAIC00NzAsMTYgKzQ4NywxMyBAQCBib29sIFRleHR1cmVN
YXBwZXJOb2RlOjpwYWludFJlZmxlY3Rpb24oY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9u
cyYgb3B0aW9ucwogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBSZWZQdHI8Qml0bWFwVGV4
dHVyZT4gc3VyZmFjZShjb250ZW50U3VyZmFjZSk7CisgICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+
IG1hc2tUZXh0dXJlID0gbV9zdGF0ZS5tYXNrTGF5ZXIgPyBtX3N0YXRlLm1hc2tMYXllci0+Z2V0
Rmlyc3RDb250ZW50VGV4dHVyZUZvck1hc2soKSA6IDA7CiAgICAgUmVmUHRyPEJpdG1hcFRleHR1
cmU+IG1hc2tTdXJmYWNlOwogICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiByZXBsaWNhTWFza1N1
cmZhY2U7CiAgICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHJlcGxpY2FNYXNrVGV4dHVyZTsKIAog
ICAgIGlmIChUZXh0dXJlTWFwcGVyTm9kZSogcmVwbGljYU1hc2sgPSBtX3N0YXRlLnJlcGxpY2FM
YXllci0+bV9zdGF0ZS5tYXNrTGF5ZXIpCi0gICAgICAgIHJlcGxpY2FNYXNrVGV4dHVyZSA9IHJl
cGxpY2FNYXNrLT50ZXh0dXJlKCk7Ci0KLSAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gbWFza1Rl
eHR1cmU7Ci0gICAgaWYgKFRleHR1cmVNYXBwZXJOb2RlKiBtYXNrID0gbV9zdGF0ZS5tYXNrTGF5
ZXIpCi0gICAgICAgIG1hc2tUZXh0dXJlID0gbWFzay0+dGV4dHVyZSgpOworICAgICAgICByZXBs
aWNhTWFza1RleHR1cmUgPSByZXBsaWNhTWFzay0+Z2V0Rmlyc3RDb250ZW50VGV4dHVyZUZvck1h
c2soKTsKIAogICAgIGNvbnN0IEludFNpemUgdmlld3BvcnRTaXplID0gb3B0aW9ucy50ZXh0dXJl
TWFwcGVyLT52aWV3cG9ydFNpemUoKTsKICAgICBjb25zdCBib29sIHVzZUludGVybWVkaWF0ZUJ1
ZmZlckZvclJlcGxpY2EgPSBtX3N0YXRlLnJlcGxpY2FMYXllciAmJiBvcHRpb25zLm9wYWNpdHkg
PCAwLjk5OwpAQCAtNTA3LDcgKzUyMSw2IEBAIGJvb2wgVGV4dHVyZU1hcHBlck5vZGU6OnBhaW50
UmVmbGVjdGlvbihjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBvcHRpb25zCiAgICAg
ICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBtYXNrU3VyZmFjZSA9IG9wdGlvbnMudGV4dHVyZU1h
cHBlci0+YWNxdWlyZVRleHR1cmVGcm9tUG9vbChvcHRpb25zLnRleHR1cmVNYXBwZXItPnZpZXdw
b3J0U2l6ZSgpKTsKICAgICAgICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5iaW5kU3VyZmFjZSht
YXNrU3VyZmFjZS5nZXQoKSk7CiAgICAgICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+ZHJhd1Rl
eHR1cmUoKnN1cmZhY2UuZ2V0KCksIHZpZXdwb3J0UmVjdCwgVHJhbnNmb3JtYXRpb25NYXRyaXgo
KSwgMSwgbWFza1RleHR1cmUuZ2V0KCkpOwotICAgICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXIt
PnJlbGVhc2VUZXh0dXJlVG9Qb29sKHN1cmZhY2UuZ2V0KCkpOwogICAgICAgICBzdXJmYWNlID0g
bWFza1N1cmZhY2U7CiAgICAgICAgIG1hc2tUZXh0dXJlLmNsZWFyKCk7CiAgICAgfQpAQCAtNTE4
LDcgKzUzMSw2IEBAIGJvb2wgVGV4dHVyZU1hcHBlck5vZGU6OnBhaW50UmVmbGVjdGlvbihjb25z
dCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBvcHRpb25zCiAgICAgICAgIG9wdGlvbnMudGV4
dHVyZU1hcHBlci0+YmluZFN1cmZhY2UocmVwbGljYVN1cmZhY2UuZ2V0KCkpOwogICAgICAgICBv
cHRpb25zLnRleHR1cmVNYXBwZXItPmRyYXdUZXh0dXJlKCpzdXJmYWNlLmdldCgpLCB2aWV3cG9y
dFJlY3QsIG1fdHJhbnNmb3Jtcy5yZXBsaWNhLCBtX3N0YXRlLnJlcGxpY2FMYXllci0+bV9vcGFj
aXR5LCByZXBsaWNhTWFza1RleHR1cmUuZ2V0KCkpOwogICAgICAgICBvcHRpb25zLnRleHR1cmVN
YXBwZXItPmRyYXdUZXh0dXJlKCpzdXJmYWNlLmdldCgpLCB2aWV3cG9ydFJlY3QsIFRyYW5zZm9y
bWF0aW9uTWF0cml4KCksIDEsIG1hc2tUZXh0dXJlLmdldCgpKTsKLSAgICAgICAgb3B0aW9ucy50
ZXh0dXJlTWFwcGVyLT5yZWxlYXNlVGV4dHVyZVRvUG9vbChzdXJmYWNlLmdldCgpKTsKICAgICAg
ICAgc3VyZmFjZSA9IHJlcGxpY2FTdXJmYWNlOwogICAgIH0KIApAQCAtNTMwLDEwICs1NDIsNiBA
QCBib29sIFRleHR1cmVNYXBwZXJOb2RlOjpwYWludFJlZmxlY3Rpb24oY29uc3QgVGV4dHVyZU1h
cHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucwogCiAgICAgLy8gRHJhdyB0aGUgb3JpZ2luYWwuCiAg
ICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5kcmF3VGV4dHVyZSgqc3VyZmFjZS5nZXQoKSwgdmll
d3BvcnRSZWN0LCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBvcHRpb25zLm9wYWNpdHksIG1hc2tU
ZXh0dXJlLmdldCgpKTsKLQotICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+cmVsZWFzZVRleHR1
cmVUb1Bvb2wobWFza1N1cmZhY2UuZ2V0KCkpOwotICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+
cmVsZWFzZVRleHR1cmVUb1Bvb2wocmVwbGljYU1hc2tTdXJmYWNlLmdldCgpKTsKLQogICAgIHJl
dHVybiB0cnVlOwogfQogCkBAIC01ODIsMTMgKzU5MCwxMSBAQCB2b2lkIFRleHR1cmVNYXBwZXJO
b2RlOjpwYWludFJlY3Vyc2l2ZShUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zIG9wdGlvbnMpCiAK
ICAgICBwYWludFNlbGZBbmRDaGlsZHJlbihvcHRpb25zLCBvcHRpb25zRm9yRGVzY2VuZGFudHMp
OwogCi0gICAgaWYgKCFwYWludFJlZmxlY3Rpb24ob3B0aW9ucywgc3VyZmFjZS5nZXQoKSkpIHsK
LSAgICAgICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5iaW5kU3VyZmFjZShvcHRpb25zLnN1cmZh
Y2UpOwotICAgICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmRyYXdUZXh0dXJlKCpzdXJmYWNl
LmdldCgpLCB2aWV3cG9ydFJlY3QsIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIG9wdGlvbnMub3Bh
Y2l0eSwgbWFza1N1cmZhY2UuZ2V0KCkpOwotICAgIH0KKyAgICBpZiAocGFpbnRSZWZsZWN0aW9u
KG9wdGlvbnMsIHN1cmZhY2UuZ2V0KCkpKQorICAgICAgICByZXR1cm47CiAKLSAgICBvcHRpb25z
LnRleHR1cmVNYXBwZXItPnJlbGVhc2VUZXh0dXJlVG9Qb29sKHN1cmZhY2UuZ2V0KCkpOwotICAg
IG9wdGlvbnMudGV4dHVyZU1hcHBlci0+cmVsZWFzZVRleHR1cmVUb1Bvb2wobWFza1N1cmZhY2Uu
Z2V0KCkpOworICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+YmluZFN1cmZhY2Uob3B0aW9ucy5z
dXJmYWNlKTsKKyAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmRyYXdUZXh0dXJlKCpzdXJmYWNl
LmdldCgpLCB2aWV3cG9ydFJlY3QsIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIG9wdGlvbnMub3Bh
Y2l0eSwgbWFza1N1cmZhY2UuZ2V0KCkpOwogfQogCiBUZXh0dXJlTWFwcGVyTm9kZTo6flRleHR1
cmVNYXBwZXJOb2RlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJOb2RlLmgKaW5kZXggNGVlMzc1Ny4uZWQzYjc2
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJOb2RlLmgKQEAgLTE5MSw3ICsxOTEsNyBAQCBwcml2YXRlOgog
ICAgIHN0YXRpYyBpbnQgY29tcGFyZUdyYXBoaWNzTGF5ZXJzWlZhbHVlKGNvbnN0IHZvaWQqIGEs
IGNvbnN0IHZvaWQqIGIpOwogICAgIHN0YXRpYyB2b2lkIHNvcnRCeVpPcmRlcihWZWN0b3I8VGV4
dHVyZU1hcHBlck5vZGUqID4mIGFycmF5LCBpbnQgZmlyc3QsIGludCBsYXN0KTsKIAotICAgIEJp
dG1hcFRleHR1cmUqIHRleHR1cmUoKSB7IHJldHVybiBtX293bmVkVGlsZXMuaXNFbXB0eSgpID8g
MCA6IG1fb3duZWRUaWxlc1swXS50ZXh0dXJlLmdldCgpOyB9CisgICAgQml0bWFwVGV4dHVyZSog
Z2V0Rmlyc3RDb250ZW50VGV4dHVyZUZvck1hc2soKTsKIAogICAgIHZvaWQgcGFpbnRSZWN1cnNp
dmUoVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyk7CiAgICAgYm9vbCBwYWludFJlZmxlY3Rpb24o
Y29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYsIEJpdG1hcFRleHR1cmUqIHN1cmZhY2Up
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122137</attachid>
            <date>2012-01-11 17:14:28 -0800</date>
            <delta_ts>2012-01-12 09:27:58 -0800</delta_ts>
            <desc>Patch 2: Fix mask/reflection handling in Qt WebKit2</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>8650</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBkNmFhNWVmLi43Mjg3NWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIg
QEAKKzIwMTItMDEtMTEgIE5vJ2FtIFJvc2VudGhhbCAgPG5vYW0ucm9zZW50aGFsQG5va2lhLmNv
bT4KKworICAgICAgICBbUXRdW1dLMl0gV2ViUHJvY2Vzc2VzIGNyYXNoZXMgd2hlbiBjb21wb3Np
dGVkIHJlZmxlY3Rpb25zL21hc2tzIGFyZSBwcmVzZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTg4MworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2Ugc3VyZSBtYXNrcyBhbmQgcmVwbGljYSBsYXll
cnMgY2FuIGFjY2VzcyBsYXllclRyZWVUaWxlQ2xpZW50LiBMZXQgbWFza3MKKyAgICAgICAgaGF2
ZSB0aGUgcmlnaHQgY29udGVudHMvdmlzaWJsZSByZWN0IHNvIHRoYXQgdGhleSBjYW4gcmVuZGVy
IGNvbnRlbnQgdGlsZXMuCisgICAgICAgIERlZmF1bHQgdGhlIG1hc2sncyBzaXplIHRvIGJlIHRo
ZSBsYXllcidzIHNpemUuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkdyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllcjo6
V2ViR3JhcGhpY3NMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjpz
ZXRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5ZXI6OnNldE1hc2tMYXll
cik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjpzZXRSZXBsaWNhdGVkQnlM
YXllcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjpzeW5jQ29tcG9zaXRp
bmdTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjpzZXRDb250ZW50
c1NjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5ZXI6OnNldFZpc2libGVD
b250ZW50UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjp0aWxlZEJh
Y2tpbmdTdG9yZUNvbnRlbnRzUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xh
eWVyOjp1cGRhdGVUaWxlQnVmZmVyc1JlY3Vyc2l2ZWx5KToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdyYXBoaWNzTGF5ZXI6OmxheWVyVHJlZVRpbGVDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR3JhcGhpY3NMYXllcjo6cHVyZ2VCYWNraW5nU3RvcmVzKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdyYXBoaWNzTGF5ZXI6OnJlY3JlYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllcjo6c2V0TGF5ZXJUcmVlVGlsZUNsaWVudCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0xheWVyLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjptYXNrVGFyZ2V0KToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5ZXI6OnNldE1hc2tUYXJnZXQpOgorCiAyMDEyLTAxLTEx
ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBXaW5DYWly
byBidWlsZCBjb3JyZWN0aW9uLgpAQCAtMTA5MzMsNyArMTA5NjIsNyBAQAogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEFkYW0gUm9iZW4uCiAKLSAgICAgICAgVGhpcyBhdm9pZHMgY2FsbGluZyBpbnRv
IHRoZSBwbHVnLWluwqB3aGVuIG9ubHkgdGhlIHBsdWctaW4gcG9zaXRpb24gcmVsYXRpdmUgdG8g
dGhlIHdpbmRvdyBjaGFuZ2VzLgorICAgICAgICBUaGlzIGF2b2lkcyBjYWxsaW5nIGludG8gdGhl
IHBsdWctaW4gd2hlbiBvbmx5IHRoZSBwbHVnLWluIHBvc2l0aW9uIHJlbGF0aXZlIHRvIHRoZSB3
aW5kb3cgY2hhbmdlcy4KICAgICAKICAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTmV0c2NhcGVQbHVnaW4uY3BwOgogICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6
Z2VvbWV0cnlEaWRDaGFuZ2UpOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR3JhcGhpY3NMYXllci5jcHAKaW5kZXggYmFmZTJh
ZS4uYTNhMDFmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5ZXIuY3BwCkBAIC03Miw2ICs3Miw3IEBA
IHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6bm90aWZ5Q2hhbmdlKCkKIAogV2ViR3JhcGhpY3NMYXll
cjo6V2ViR3JhcGhpY3NMYXllcihHcmFwaGljc0xheWVyQ2xpZW50KiBjbGllbnQpCiAgICAgOiBH
cmFwaGljc0xheWVyKGNsaWVudCkKKyAgICAsIG1fbWFza1RhcmdldCgwKQogICAgICwgbV9uZWVk
c0Rpc3BsYXkoZmFsc2UpCiAgICAgLCBtX21vZGlmaWVkKHRydWUpCiAgICAgLCBtX2NvbnRlbnRO
ZWVkc0Rpc3BsYXkoZmFsc2UpCkBAIC0xOTIsNiArMTkzLDggQEAgdm9pZCBXZWJHcmFwaGljc0xh
eWVyOjpzZXRTaXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKIAogICAgIEdyYXBoaWNzTGF5ZXI6
OnNldFNpemUoc2l6ZSk7CiAgICAgc2V0TmVlZHNEaXNwbGF5KCk7CisgICAgaWYgKG1hc2tMYXll
cigpKQorICAgICAgICBtYXNrTGF5ZXIoKS0+c2V0U2l6ZShzaXplKTsKICAgICBub3RpZnlDaGFu
Z2UoKTsKIH0KIApAQCAtMzU0LDE0ICszNTcsMzIgQEAgdm9pZCBXZWJHcmFwaGljc0xheWVyOjpz
ZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqIGltYWdlKQogCiB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6
OnNldE1hc2tMYXllcihHcmFwaGljc0xheWVyKiBsYXllcikKIHsKKyAgICBpZiAobGF5ZXIgPT0g
bWFza0xheWVyKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIEdyYXBoaWNzTGF5ZXI6OnNldE1h
c2tMYXllcihsYXllcik7CisKKyAgICBpZiAoIWxheWVyKQorICAgICAgICByZXR1cm47CisKKyAg
ICBsYXllci0+c2V0U2l6ZShzaXplKCkpOworICAgIFdlYkdyYXBoaWNzTGF5ZXIqIHdlYkdyYXBo
aWNzTGF5ZXIgPSB0b1dlYkdyYXBoaWNzTGF5ZXIobGF5ZXIpOworICAgIHdlYkdyYXBoaWNzTGF5
ZXItPnNldExheWVyVHJlZVRpbGVDbGllbnQobGF5ZXJUcmVlVGlsZUNsaWVudCgpKTsKKyAgICB3
ZWJHcmFwaGljc0xheWVyLT5zZXRNYXNrVGFyZ2V0KHRoaXMpOworICAgIHdlYkdyYXBoaWNzTGF5
ZXItPnNldENvbnRlbnRzU2NhbGUobV9jb250ZW50c1NjYWxlKTsKKyAgICB3ZWJHcmFwaGljc0xh
eWVyLT5ub3RpZnlDaGFuZ2UoKTsKICAgICBub3RpZnlDaGFuZ2UoKTsKKwogfQogCiB2b2lkIFdl
YkdyYXBoaWNzTGF5ZXI6OnNldFJlcGxpY2F0ZWRCeUxheWVyKEdyYXBoaWNzTGF5ZXIqIGxheWVy
KQogewogICAgIGlmIChsYXllciA9PSByZXBsaWNhTGF5ZXIoKSkKICAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKGxheWVyKQorICAgICAgICB0b1dlYkdyYXBoaWNzTGF5ZXIobGF5ZXIpLT5zZXRM
YXllclRyZWVUaWxlQ2xpZW50KGxheWVyVHJlZVRpbGVDbGllbnQoKSk7CisKICAgICBHcmFwaGlj
c0xheWVyOjpzZXRSZXBsaWNhdGVkQnlMYXllcihsYXllcik7CiAgICAgbm90aWZ5Q2hhbmdlKCk7
CiB9CkBAIC0zODcsMTAgKzQwOCwxMyBAQCB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnN5bmNDb21w
b3NpdGluZ1N0YXRlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGNoaWxkcmVuKCkuc2l6ZSgpOyArK2kpCiAgICAgICAgIGNoaWxkcmVuKClbaV0t
PnN5bmNDb21wb3NpdGluZ1N0YXRlKHJlY3QpOwotICAgIGlmIChyZXBsaWNhTGF5ZXIoKSkKLSAg
ICAgICAgcmVwbGljYUxheWVyKCktPnN5bmNDb21wb3NpdGluZ1N0YXRlKHJlY3QpOwotICAgIGlm
IChtYXNrTGF5ZXIoKSkKLSAgICAgICAgbWFza0xheWVyKCktPnN5bmNDb21wb3NpdGluZ1N0YXRl
KHJlY3QpOworCisgICAgaWYgKFdlYkdyYXBoaWNzTGF5ZXIqIG1hc2sgPSB0b1dlYkdyYXBoaWNz
TGF5ZXIobWFza0xheWVyKCkpKQorICAgICAgICBtYXNrLT5zeW5jQ29tcG9zaXRpbmdTdGF0ZUZv
clRoaXNMYXllck9ubHkoKTsKKworICAgIGlmIChXZWJHcmFwaGljc0xheWVyKiByZXBsaWNhID0g
dG9XZWJHcmFwaGljc0xheWVyKHJlcGxpY2FMYXllcigpKSkKKyAgICAgICAgcmVwbGljYS0+c3lu
Y0NvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCk7CisKICAgICBzeW5jQ29tcG9zaXRp
bmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKTsKIH0KIApAQCAtNDU2LDYgKzQ4MCw5IEBAIHZvaWQg
V2ViR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNTY2FsZShmbG9hdCBzY2FsZSkKICAgICAgICAg
bGF5ZXItPnNldENvbnRlbnRzU2NhbGUoc2NhbGUpOwogICAgIH0KIAorICAgIGlmIChXZWJHcmFw
aGljc0xheWVyKiBtYXNrID0gdG9XZWJHcmFwaGljc0xheWVyKG1hc2tMYXllcigpKSkKKyAgICAg
ICAgbWFzay0+c2V0Q29udGVudHNTY2FsZShzY2FsZSk7CisKICAgICBtX2NvbnRlbnRzU2NhbGUg
PSBzY2FsZTsKICAgICBpZiAobV9tYWluQmFja2luZ1N0b3JlICYmIG1fbWFpbkJhY2tpbmdTdG9y
ZS0+Y29udGVudHNTY2FsZSgpID09IHNjYWxlKQogICAgICAgICByZXR1cm47CkBAIC00ODMsNiAr
NTEwLDggQEAgdm9pZCBXZWJHcmFwaGljc0xheWVyOjpzZXRWaXNpYmxlQ29udGVudFJlY3QoY29u
c3QgSW50UmVjdCYgcmVjdCkKICAgICBtX3Zpc2libGVDb250ZW50UmVjdCA9IHJlY3Q7CiAgICAg
bm90aWZ5Q2hhbmdlKCk7CiAgICAgbV9tYWluQmFja2luZ1N0b3JlLT5hZGp1c3RWaXNpYmxlUmVj
dCgpOworICAgIGlmIChtYXNrTGF5ZXIoKSkKKyAgICAgICAgdG9XZWJHcmFwaGljc0xheWVyKG1h
c2tMYXllcigpKS0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0KHJlY3QpOwogfQogCiB2b2lkIFdlYkdy
YXBoaWNzTGF5ZXI6OnRpbGVkQmFja2luZ1N0b3JlUGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQpAQCAtNTA4LDcgKzUzNyw3IEBAIGJvb2wgV2ViR3Jh
cGhpY3NMYXllcjo6dGlsZWRCYWNraW5nU3RvcmVVcGRhdGVzQWxsb3dlZCgpIGNvbnN0CiAKIElu
dFJlY3QgV2ViR3JhcGhpY3NMYXllcjo6dGlsZWRCYWNraW5nU3RvcmVDb250ZW50c1JlY3QoKQog
ewotICAgIGlmIChtX2ltYWdlKQorICAgIGlmICghZHJhd3NDb250ZW50KCkpCiAgICAgICAgIHJl
dHVybiBJbnRSZWN0KCk7CiAgICAgcmV0dXJuIEludFJlY3QoMCwgMCwgc2l6ZSgpLndpZHRoKCks
IHNpemUoKS5oZWlnaHQoKSk7CiB9CkBAIC01NTEsMTMgKzU4MCwyMyBAQCB2b2lkIFdlYkdyYXBo
aWNzTGF5ZXI6OnVwZGF0ZVRpbGVCdWZmZXJzUmVjdXJzaXZlbHkoKQogICAgICAgICBXZWJHcmFw
aGljc0xheWVyKiBsYXllciA9IHRvV2ViR3JhcGhpY3NMYXllcih0aGlzLT5jaGlsZHJlbigpW2ld
KTsKICAgICAgICAgbGF5ZXItPnVwZGF0ZVRpbGVCdWZmZXJzUmVjdXJzaXZlbHkoKTsKICAgICB9
CisKKyAgICBpZiAoV2ViR3JhcGhpY3NMYXllciogbWFzayA9IHRvV2ViR3JhcGhpY3NMYXllciht
YXNrTGF5ZXIoKSkpCisgICAgICAgIG1hc2stPnVwZGF0ZVRpbGVCdWZmZXJzUmVjdXJzaXZlbHko
KTsKIH0KIAogV2ViTGF5ZXJUcmVlVGlsZUNsaWVudCogV2ViR3JhcGhpY3NMYXllcjo6bGF5ZXJU
cmVlVGlsZUNsaWVudCgpIGNvbnN0CiB7CiAgICAgaWYgKG1fbGF5ZXJUcmVlVGlsZUNsaWVudCkK
ICAgICAgICAgcmV0dXJuIG1fbGF5ZXJUcmVlVGlsZUNsaWVudDsKLSAgICBXZWJHcmFwaGljc0xh
eWVyKiBwYXJlbnQgPSB0b1dlYkdyYXBoaWNzTGF5ZXIodGhpcy0+cGFyZW50KCkpOworICAgIFdl
YkdyYXBoaWNzTGF5ZXIqIHBhcmVudDsKKyAgICBpZiAodGhpcy0+cmVwbGljYXRlZExheWVyKCkp
CisgICAgICAgIHBhcmVudCA9IHRvV2ViR3JhcGhpY3NMYXllcih0aGlzLT5yZXBsaWNhdGVkTGF5
ZXIoKSk7CisgICAgZWxzZSBpZiAodGhpcy0+bWFza1RhcmdldCgpKQorICAgICAgICBwYXJlbnQg
PSB0b1dlYkdyYXBoaWNzTGF5ZXIodGhpcy0+bWFza1RhcmdldCgpKTsKKyAgICBlbHNlCisgICAg
ICAgIHBhcmVudCA9IHRvV2ViR3JhcGhpY3NMYXllcih0aGlzLT5wYXJlbnQoKSk7CisKICAgICBp
ZiAoIXBhcmVudCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIHBhcmVudC0+bGF5ZXJU
cmVlVGlsZUNsaWVudCgpOwpAQCAtNTg2LDYgKzYyNSw5IEBAIHZvaWQgV2ViR3JhcGhpY3NMYXll
cjo6cHVyZ2VCYWNraW5nU3RvcmVzKCkKICAgICAgICAgbGF5ZXItPnB1cmdlQmFja2luZ1N0b3Jl
cygpOwogICAgIH0KIAorICAgIGlmIChXZWJHcmFwaGljc0xheWVyKiBtYXNrID0gdG9XZWJHcmFw
aGljc0xheWVyKG1hc2tMYXllcigpKSkKKyAgICAgICAgbWFzay0+cHVyZ2VCYWNraW5nU3RvcmVz
KCk7CisKICAgICBpZiAobV9tYWluQmFja2luZ1N0b3JlKQogICAgICAgICBtX21haW5CYWNraW5n
U3RvcmUuY2xlYXIoKTsKIApAQCAtNjAyLDYgKzY0NCw4IEBAIHZvaWQgV2ViR3JhcGhpY3NMYXll
cjo6cmVjcmVhdGVCYWNraW5nU3RvcmVJZk5lZWRlZCgpCiAgICAgICAgIFdlYkdyYXBoaWNzTGF5
ZXIqIGxheWVyID0gdG9XZWJHcmFwaGljc0xheWVyKHRoaXMtPmNoaWxkcmVuKClbaV0pOwogICAg
ICAgICBsYXllci0+cmVjcmVhdGVCYWNraW5nU3RvcmVJZk5lZWRlZCgpOwogICAgIH0KKyAgICBp
ZiAoV2ViR3JhcGhpY3NMYXllciogbWFzayA9IHRvV2ViR3JhcGhpY3NMYXllcihtYXNrTGF5ZXIo
KSkpCisgICAgICAgIG1hc2stPnJlY3JlYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQoKTsKIAogICAg
IGlmICghbV9tYWluQmFja2luZ1N0b3JlKSB7CiAgICAgICAgIG1fbWFpbkJhY2tpbmdTdG9yZSA9
IGFkb3B0UHRyKG5ldyBUaWxlZEJhY2tpbmdTdG9yZSh0aGlzLCBUaWxlZEJhY2tpbmdTdG9yZVJl
bW90ZVRpbGVCYWNrZW5kOjpjcmVhdGUodGhpcykpKTsKQEAgLTYxNyw2ICs2NjEsMTAgQEAgdm9p
ZCBXZWJHcmFwaGljc0xheWVyOjpzZXRMYXllclRyZWVUaWxlQ2xpZW50KFdlYktpdDo6V2ViTGF5
ZXJUcmVlVGlsZUNsaWVudCogY2wKICAgICBpZiAobV9sYXllclRyZWVUaWxlQ2xpZW50ID09IGNs
aWVudCkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKFdlYkdyYXBoaWNzTGF5ZXIqIHJlcGxp
Y2EgPSB0b1dlYkdyYXBoaWNzTGF5ZXIocmVwbGljYUxheWVyKCkpKQorICAgICAgICByZXBsaWNh
LT5zZXRMYXllclRyZWVUaWxlQ2xpZW50KGNsaWVudCk7CisgICAgaWYgKFdlYkdyYXBoaWNzTGF5
ZXIqIG1hc2sgPSB0b1dlYkdyYXBoaWNzTGF5ZXIobWFza0xheWVyKCkpKQorICAgICAgICBtYXNr
LT5zZXRMYXllclRyZWVUaWxlQ2xpZW50KGNsaWVudCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBjaGlsZHJlbigpLnNpemUoKTsgKytpKSB7CiAgICAgICAgIFdlYkdyYXBoaWNzTGF5ZXIq
IGxheWVyID0gdG9XZWJHcmFwaGljc0xheWVyKHRoaXMtPmNoaWxkcmVuKClbaV0pOwogICAgICAg
ICBsYXllci0+c2V0TGF5ZXJUcmVlVGlsZUNsaWVudChjbGllbnQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0xheWVyLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5
ZXIuaAppbmRleCAzNjFmY2IyLi4yZjhjYjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5ZXIuaApAQCAt
MTA3LDYgKzEwNyw5IEBAIHB1YmxpYzoKICAgICBJbWFnZSogaW1hZ2UoKSB7IHJldHVybiBtX2lt
YWdlLmdldCgpOyB9CiAgICAgdm9pZCBub3RpZnlBbmltYXRpb25TdGFydGVkKGRvdWJsZSk7CiAK
KyAgICBHcmFwaGljc0xheWVyKiBtYXNrVGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9tYXNrVGFy
Z2V0OyB9CisgICAgdm9pZCBzZXRNYXNrVGFyZ2V0KEdyYXBoaWNzTGF5ZXIqIGxheWVyKSB7IG1f
bWFza1RhcmdldCA9IGxheWVyOyB9CisKICAgICBzdGF0aWMgdm9pZCBpbml0RmFjdG9yeSgpOwog
CiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCkBAIC0xMzcsOCArMTQwLDggQEAgcHVibGlj
OgogCiBwcml2YXRlOgogICAgIFdlYktpdDo6V2ViTGF5ZXJJbmZvIG1fbGF5ZXJJbmZvOwotICAg
IFdlYktpdDo6V2ViTGF5ZXJUcmVlVGlsZUNsaWVudCogbV9sYXllclRpbGVDbGllbnQ7CiAgICAg
UmVmUHRyPEltYWdlPiBtX2ltYWdlOworICAgIEdyYXBoaWNzTGF5ZXIqIG1fbWFza1RhcmdldDsK
ICAgICBGbG9hdFJlY3QgbV9uZWVkc0Rpc3BsYXlSZWN0OwogICAgIEludFJlY3QgbV92aXNpYmxl
Q29udGVudFJlY3Q7CiAgICAgYm9vbCBtX25lZWRzRGlzcGxheSA6IDE7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122250</attachid>
            <date>2012-01-12 08:30:16 -0800</date>
            <delta_ts>2012-01-14 10:26:04 -0800</delta_ts>
            <desc>Patch 1: minor improvements to TextureMapperNode</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>11977</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmMGJlZWFhLi41ZDYzNWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUg
QEAKKzIwMTItMDEtMTEgIE5vJ2FtIFJvc2VudGhhbCAgPG5vYW0ucm9zZW50aGFsQG5va2lhLmNv
bT4KKworICAgICAgICBbUXRdW1dLMl0gV2ViUHJvY2VzcyBjcmFzaGVzIHdoZW4gY29tcG9zaXRl
ZCByZWZsZWN0aW9ucy9tYXNrcyBhcmUgcHJlc2VudAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4ODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGRvZXMgbm90IGZpeCB0aGUgYnVnIHll
dCwgYnV0IHByZXBhcmVzIFRleHR1cmVNYXBwZXIgZm9yIHRoZSByZXF1aXJlZCBmaXguCisKKyAg
ICAgICAgU2ltcGxpZnkgcmVmbGVjdGlvbiwgbWFzayBhbmQgaW50ZXJtZWRpYXRlIHN1cmZhY2Ug
Y29kZSBpbiBXZWJDb3JlLgorICAgICAgICAxLiBJbnN0ZWFkIG9mIGV4cGxpY2l0bHkgcmVsZWFz
aW5nIGludGVybWVkaWF0ZSBzdXJmYWNlcyB0byB0aGUgcG9vbCwgdGhleSBiZWNvbWUgcmVsZWFz
ZWQKKyAgICAgICAgICAgd2hlbiB0aGV5J3JlIGRlcmVmZXJlbmNlZC4gV2UgZG8gdGhhdCBieSBj
aGVja2luZyB0aGUgcmVmQ291bnQgb2YgdGhlIHRleHR1cmUgd2hlbiByZXF1ZXN0ZWQuCisgICAg
ICAgIDIuIFJlbmFtZSBUZXh0dXJlTWFwcGVyTm9kZTo6dGV4dHVyZSgpIHRvIGZpbmRGaXJzdENv
bnRlbnRUZXh0dXJlRm9yTWFzaygpLCBhbmQgYWxsb3cgdGhlCisgICAgICAgICAgIHRleHR1cmUg
dG8gY29tZSBmcm9tIHRoZSBleHRlcm5hbGx5LW1hbmFnZWQgdGlsZXMuCisgICAgICAgIDMuIFJl
dHVybiBhIHZpc2libGUgcmVjdCBmb3IgYSBtYXNrIGxheWVyIGJhc2VkIG9uIGl0cyBwYXJlbnQs
IHNpbmNlIGEgbWFzayBsYXllciBkb2Vzbid0CisgICAgICAgICAgIGhhdmUgZ2VvbWV0cnkuIFRo
ZXJlJ3Mgbm8gbmVlZCB0byByZXR1cm4gYSB2aXNpYmxlIHJlY3QgZm9yIHJlcGxpY2EgbGF5ZXJz
LCBzaW5jZSB0aGV5CisgICAgICAgICAgIGRvbid0IGhhdmUgdGhlaXIgb3duIGNvbnRlbnQuCisK
KyAgICAgICAgY29tcG9zaXRpbmcvcmVmbGVjdGlvbnMgYW5kIGNvbXBvc2l0aW5nL21hc2tzIHRl
c3QgdGhpcyBjb2RlIHBhdGguIFRoZXkgc3RpbGwgY3Jhc2ggaW4gV2ViS2l0MiwKKyAgICAgICAg
YnV0IHdvcmsgZmluZSB3aXRoIFdlYktpdDEgYWZ0ZXIgdGhpcyBjaGFuZ2UuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0dXJlTWFwcGVyOjphY3F1aXJlVGV4dHVyZUZyb21Qb29sKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTm9kZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0dXJlTWFwcGVyTm9kZTo6Y29sbGVjdFZpc2libGVDb250ZW50c1JlY3RzKToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJOb2RlOjpmaW5kRmlyc3RDb250ZW50VGV4
dHVyZUZvck1hc2spOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlck5vZGU6OnBhaW50
U2VsZik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTm9kZTo6cGFpbnRSZWZsZWN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJOb2RlOjpwYWludFJlY3Vyc2l2
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJOb2Rl
Lmg6CisKIDIwMTItMDEtMTEgIEFkYW0gVHJlYXQgIDxhdHJlYXRAcmltLmNvbT4KIAogICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwODgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyLmNwcAppbmRleCAyNjIyZDIxLi4zNDZlYzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuY3BwCkBAIC0y
NiwxOSArMjYsMjAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNzUmVmUHRyPEJpdG1hcFRl
eHR1cmU+IFRleHR1cmVNYXBwZXI6OmFjcXVpcmVUZXh0dXJlRnJvbVBvb2woY29uc3QgSW50U2l6
ZSYgc2l6ZSkKIHsKLSAgICBpZiAobV90ZXh0dXJlUG9vbC5pc0VtcHR5KCkpIHsKLSAgICAgICAg
UmVmUHRyPEJpdG1hcFRleHR1cmU+IHNlbGVjdGVkVGV4dHVyZSA9IGNyZWF0ZVRleHR1cmUoKTsK
LSAgICAgICAgc2VsZWN0ZWRUZXh0dXJlLT5yZXNldChzaXplLCBmYWxzZSk7Ci0gICAgICAgIHNl
bGVjdGVkVGV4dHVyZS0+bG9jaygpOwotICAgICAgICByZXR1cm4gc2VsZWN0ZWRUZXh0dXJlOwot
ICAgIH0KLQotICAgIHNpemVfdCBpbmRleCA9IDA7Ci0gICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+
IHNlbGVjdGVkVGV4dHVyZSA9IG1fdGV4dHVyZVBvb2xbMF07CisgICAgUmVmUHRyPEJpdG1hcFRl
eHR1cmU+IHNlbGVjdGVkVGV4dHVyZTsKIAotICAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgbV90
ZXh0dXJlUG9vbC5zaXplKCk7ICsraSkgeworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90
ZXh0dXJlUG9vbC5zaXplKCk7ICsraSkgewogICAgICAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4g
dGV4dHVyZSA9IG1fdGV4dHVyZVBvb2xbaV07CiAKKyAgICAgICAgLy8gQSB0ZXh0dXJlIHRoYXQn
cyB1c2VkIHdvdWxkIGhhdmUgbW9yZSB0aGFuIHR3byByZWZlcmVuY2VzIC0gdGhlIHJlZmVyZW5j
ZSBpbnNpZGUgdGhlIHZlY3RvciwgYW5kIHRoZSAidGV4dHVyZSIgbG9jYWwgdmFyaWFibGUuCisg
ICAgICAgIGlmICh0ZXh0dXJlLT5yZWZDb3VudCgpID4gMikKKyAgICAgICAgICAgIGNvbnRpbnVl
OworCisgICAgICAgIGlmICghc2VsZWN0ZWRUZXh0dXJlKSB7CisgICAgICAgICAgICBzZWxlY3Rl
ZFRleHR1cmUgPSB0ZXh0dXJlOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKwog
ICAgICAgICBJbnRTaXplIHRleHR1cmVTaXplID0gdGV4dHVyZS0+c2l6ZSgpOwogICAgICAgICBJ
bnRTaXplIHNlbGVjdGVkVGV4dHVyZVNpemUgPSBzZWxlY3RlZFRleHR1cmUtPnNpemUoKTsKIApA
QCAtNTgsMjIgKzU5LDE2IEBAIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gVGV4dHVyZU1hcHBl
cjo6YWNxdWlyZVRleHR1cmVGcm9tUG9vbChjb25zdCBJbnRTaXplJiBzCiAgICAgICAgICAgICBj
b250aW51ZTsKIAogICAgICAgICBzZWxlY3RlZFRleHR1cmUgPSB0ZXh0dXJlOwotICAgICAgICBp
bmRleCA9IGk7CiAgICAgfQogCi0gICAgbV90ZXh0dXJlUG9vbC5yZW1vdmUoaW5kZXgpOworICAg
IGlmICghc2VsZWN0ZWRUZXh0dXJlKSB7CisgICAgICAgIHNlbGVjdGVkVGV4dHVyZSA9IGNyZWF0
ZVRleHR1cmUoKTsKKyAgICAgICAgbV90ZXh0dXJlUG9vbC5hcHBlbmQoc2VsZWN0ZWRUZXh0dXJl
KTsKKyAgICB9CisKICAgICBzZWxlY3RlZFRleHR1cmUtPnJlc2V0KHNpemUsIGZhbHNlKTsKLSAg
ICBzZWxlY3RlZFRleHR1cmUtPmxvY2soKTsKICAgICByZXR1cm4gc2VsZWN0ZWRUZXh0dXJlOwog
fQogCi12b2lkIFRleHR1cmVNYXBwZXI6OnJlbGVhc2VUZXh0dXJlVG9Qb29sKEJpdG1hcFRleHR1
cmUqIHRleHR1cmUpCi17Ci0gICAgaWYgKCF0ZXh0dXJlKQotICAgICAgICByZXR1cm47Ci0gICAg
bV90ZXh0dXJlUG9vbC5hcHBlbmQodGV4dHVyZSk7Ci0gICAgdGV4dHVyZS0+dW5sb2NrKCk7Ci19
Ci0KIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmgKaW5kZXggZDgxMzMzZC4uMGNmM2E0NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlci5oCkBAIC0xMjYsMTAgKzEyNiw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
YmVnaW5QYWludGluZygpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBlbmRQYWludGluZygpIHsgfQog
Ci0gICAgdmlydHVhbCB2b2lkIHJlbGVhc2VUZXh0dXJlVG9Qb29sKEJpdG1hcFRleHR1cmUqIHN1
cmZhY2UpOworICAgIC8vIEEgdGV4dHVyZSBhY3F1aXJlZCBmcm9tIHRoZSBwb29sIHdpbGwgYmVj
b21lIGF2YWlsYWJsZSBmb3Igb3RoZXIgY2xpZW50cyB3aGVuIGRlcmVmZXJlbmNlZC4KICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gYWNxdWlyZVRleHR1cmVGcm9tUG9vbChj
b25zdCBJbnRTaXplJik7CiAKLQogcHJvdGVjdGVkOgogICAgIFRleHR1cmVNYXBwZXIoKQogICAg
ICAgICA6IG1faW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvbkRlZmF1bHQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJOb2RlLmNwcAppbmRleCA2MjMxNGFkLi43NTZjZmIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlck5vZGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyTm9kZS5jcHAKQEAgLTIyMCwxMCArMjIwLDYgQEAgYm9vbCBUZXh0dXJlTWFwcGVyTm9k
ZTo6Y29sbGVjdFZpc2libGVDb250ZW50c1JlY3RzKE5vZGVSZWN0TWFwJiByZWN0TWFwLCBjb25z
dAogCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX2NoaWxkcmVuLnNpemUoKTsgKytpKQogICAg
ICAgICBleGlzdHMgPSBtX2NoaWxkcmVuW2ldLT5jb2xsZWN0VmlzaWJsZUNvbnRlbnRzUmVjdHMo
cmVjdE1hcCwgcm9vdFZpc2libGVSZWN0KSB8fCBleGlzdHM7Ci0gICAgaWYgKG1fc3RhdGUubWFz
a0xheWVyKQotICAgICAgICBleGlzdHMgPSBtX3N0YXRlLm1hc2tMYXllci0+Y29sbGVjdFZpc2li
bGVDb250ZW50c1JlY3RzKHJlY3RNYXAsIHJvb3RWaXNpYmxlUmVjdCkgfHwgZXhpc3RzOwotICAg
IGlmIChtX3N0YXRlLnJlcGxpY2FMYXllcikKLSAgICAgICAgZXhpc3RzID0gbV9zdGF0ZS5yZXBs
aWNhTGF5ZXItPmNvbGxlY3RWaXNpYmxlQ29udGVudHNSZWN0cyhyZWN0TWFwLCByb290VmlzaWJs
ZVJlY3QpIHx8IGV4aXN0czsKIAogICAgIC8vIE5vbi1pbnZlcnRpYmxlIGxheWVycyBhcmUgbm90
IHZpc2libGUuCiAgICAgaWYgKCFtX3RyYW5zZm9ybXMudGFyZ2V0LmlzSW52ZXJ0aWJsZSgpKQpA
QCAtMjM5LDYgKzIzNSwxMCBAQCBib29sIFRleHR1cmVNYXBwZXJOb2RlOjpjb2xsZWN0VmlzaWJs
ZUNvbnRlbnRzUmVjdHMoTm9kZVJlY3RNYXAmIHJlY3RNYXAsIGNvbnN0CiAgICAgICAgIHZpc2li
bGVDb250ZW50c1JlY3QuaW50ZXJzZWN0KHZpc2libGVSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKTsK
ICAgICB9CiAKKyAgICAvLyBUaGUgdmlzaWJsZSByZWN0IGZvciBhIG1hc2sgbGF5ZXIgaXMgYWx3
YXlzIGVxdWFsIHRvIHRoZSB2aXNpYmxlIHJlY3Qgb2YgdGhlIG1hc2tlZCBsYXllci4KKyAgICBp
ZiAobV9zdGF0ZS5tYXNrTGF5ZXIpCisgICAgICAgIHJlY3RNYXAuYWRkKG1fc3RhdGUubWFza0xh
eWVyLCBtX3N0YXRlLnZpc2libGVSZWN0KTsKKwogICAgIGlmICh2aXNpYmxlQ29udGVudHNSZWN0
LmlzRW1wdHkoKSB8fCB2aXNpYmxlQ29udGVudHNSZWN0ID09IG1fc3RhdGUudmlzaWJsZVJlY3Qp
CiAgICAgICAgIHJldHVybiBleGlzdHM7CiAKQEAgLTM1Nyw2ICszNTcsMjMgQEAgRmxvYXRSZWN0
IFRleHR1cmVNYXBwZXJOb2RlOjp0YXJnZXRSZWN0Rm9yVGlsZVJlY3QoY29uc3QgRmxvYXRSZWN0
JiB0YXJnZXRSZWN0LAogICAgICAgICAgICAgICAgIHRpbGVSZWN0LmhlaWdodCgpKTsKIH0KIAor
Qml0bWFwVGV4dHVyZSogVGV4dHVyZU1hcHBlck5vZGU6OmZpbmRGaXJzdENvbnRlbnRUZXh0dXJl
Rm9yTWFzaygpCit7CisjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisgICAgaWYgKG1fc3Rh
dGUudGlsZU93bmVyc2hpcCA9PSBFeHRlcm5hbGx5TWFuYWdlZFRpbGVzKSB7CisgICAgICAgIEhh
c2hNYXA8aW50LCBFeHRlcm5hbGx5TWFuYWdlZFRpbGU+OjppdGVyYXRvciBlbmQgPSBtX2V4dGVy
bmFsbHlNYW5hZ2VkVGlsZXMuZW5kKCk7CisgICAgICAgIGZvciAoSGFzaE1hcDxpbnQsIEV4dGVy
bmFsbHlNYW5hZ2VkVGlsZT46Oml0ZXJhdG9yIG1hcEl0ZXJhdG9yID0gbV9leHRlcm5hbGx5TWFu
YWdlZFRpbGVzLmJlZ2luKCk7IG1hcEl0ZXJhdG9yICE9IGVuZDsgKyttYXBJdGVyYXRvcikgewor
ICAgICAgICAgICAgaWYgKEJpdG1hcFRleHR1cmUqIHRleHR1cmUgPSBtYXBJdGVyYXRvci0+c2Vj
b25kLmZyb250QnVmZmVyLnRleHR1cmUuZ2V0KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRl
eHR1cmU7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisjZW5kaWYKKyAg
ICByZXR1cm4gbV9vd25lZFRpbGVzLmlzRW1wdHkoKSA/IDAgOiBtX293bmVkVGlsZXNbMF0udGV4
dHVyZS5nZXQoKTsKK30KKworCiB2b2lkIFRleHR1cmVNYXBwZXJOb2RlOjpwYWludFNlbGYoY29u
c3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAobV9zaXpl
LmlzRW1wdHkoKSB8fCAoIW1fc3RhdGUuZHJhd3NDb250ZW50ICYmIG1fY3VycmVudENvbnRlbnQu
Y29udGVudFR5cGUgPT0gSFRNTENvbnRlbnRUeXBlKSkKQEAgLTM2Niw5ICszODMsOSBAQCB2b2lk
IFRleHR1cmVNYXBwZXJOb2RlOjpwYWludFNlbGYoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0
aW9ucyYgb3B0aW9ucykKICAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gcmVwbGljYU1hc2tUZXh0
dXJlOwogCiAgICAgaWYgKG1fc3RhdGUubWFza0xheWVyKQotICAgICAgICBtYXNrVGV4dHVyZSA9
IG1fc3RhdGUubWFza0xheWVyLT50ZXh0dXJlKCk7CisgICAgICAgIG1hc2tUZXh0dXJlID0gbV9z
dGF0ZS5tYXNrTGF5ZXItPmZpbmRGaXJzdENvbnRlbnRUZXh0dXJlRm9yTWFzaygpOwogICAgIGlm
IChtX3N0YXRlLnJlcGxpY2FMYXllciAmJiBtX3N0YXRlLnJlcGxpY2FMYXllci0+bV9zdGF0ZS5t
YXNrTGF5ZXIpCi0gICAgICAgIHJlcGxpY2FNYXNrVGV4dHVyZSA9IG1fc3RhdGUucmVwbGljYUxh
eWVyLT5tX3N0YXRlLm1hc2tMYXllci0+dGV4dHVyZSgpOworICAgICAgICByZXBsaWNhTWFza1Rl
eHR1cmUgPSBtX3N0YXRlLnJlcGxpY2FMYXllci0+bV9zdGF0ZS5tYXNrTGF5ZXItPmZpbmRGaXJz
dENvbnRlbnRUZXh0dXJlRm9yTWFzaygpOwogCiAgICAgZmxvYXQgb3BhY2l0eSA9IG9wdGlvbnMu
aXNTdXJmYWNlID8gMSA6IG9wdGlvbnMub3BhY2l0eTsKICAgICBGbG9hdFJlY3QgdGFyZ2V0UmVj
dCA9IHRoaXMtPnRhcmdldFJlY3QoKTsKQEAgLTQ3MCwxNiArNDg3LDEzIEBAIGJvb2wgVGV4dHVy
ZU1hcHBlck5vZGU6OnBhaW50UmVmbGVjdGlvbihjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRp
b25zJiBvcHRpb25zCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFJlZlB0cjxCaXRtYXBU
ZXh0dXJlPiBzdXJmYWNlKGNvbnRlbnRTdXJmYWNlKTsKKyAgICBSZWZQdHI8Qml0bWFwVGV4dHVy
ZT4gbWFza1RleHR1cmUgPSBtX3N0YXRlLm1hc2tMYXllciA/IG1fc3RhdGUubWFza0xheWVyLT5m
aW5kRmlyc3RDb250ZW50VGV4dHVyZUZvck1hc2soKSA6IDA7CiAgICAgUmVmUHRyPEJpdG1hcFRl
eHR1cmU+IG1hc2tTdXJmYWNlOwogICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiByZXBsaWNhTWFz
a1N1cmZhY2U7CiAgICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHJlcGxpY2FNYXNrVGV4dHVyZTsK
IAogICAgIGlmIChUZXh0dXJlTWFwcGVyTm9kZSogcmVwbGljYU1hc2sgPSBtX3N0YXRlLnJlcGxp
Y2FMYXllci0+bV9zdGF0ZS5tYXNrTGF5ZXIpCi0gICAgICAgIHJlcGxpY2FNYXNrVGV4dHVyZSA9
IHJlcGxpY2FNYXNrLT50ZXh0dXJlKCk7Ci0KLSAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gbWFz
a1RleHR1cmU7Ci0gICAgaWYgKFRleHR1cmVNYXBwZXJOb2RlKiBtYXNrID0gbV9zdGF0ZS5tYXNr
TGF5ZXIpCi0gICAgICAgIG1hc2tUZXh0dXJlID0gbWFzay0+dGV4dHVyZSgpOworICAgICAgICBy
ZXBsaWNhTWFza1RleHR1cmUgPSByZXBsaWNhTWFzay0+ZmluZEZpcnN0Q29udGVudFRleHR1cmVG
b3JNYXNrKCk7CiAKICAgICBjb25zdCBJbnRTaXplIHZpZXdwb3J0U2l6ZSA9IG9wdGlvbnMudGV4
dHVyZU1hcHBlci0+dmlld3BvcnRTaXplKCk7CiAgICAgY29uc3QgYm9vbCB1c2VJbnRlcm1lZGlh
dGVCdWZmZXJGb3JSZXBsaWNhID0gbV9zdGF0ZS5yZXBsaWNhTGF5ZXIgJiYgb3B0aW9ucy5vcGFj
aXR5IDwgMC45OTsKQEAgLTUwNyw3ICs1MjEsNiBAQCBib29sIFRleHR1cmVNYXBwZXJOb2RlOjpw
YWludFJlZmxlY3Rpb24oY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucwog
ICAgICAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gbWFza1N1cmZhY2UgPSBvcHRpb25zLnRleHR1
cmVNYXBwZXItPmFjcXVpcmVUZXh0dXJlRnJvbVBvb2wob3B0aW9ucy50ZXh0dXJlTWFwcGVyLT52
aWV3cG9ydFNpemUoKSk7CiAgICAgICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+YmluZFN1cmZh
Y2UobWFza1N1cmZhY2UuZ2V0KCkpOwogICAgICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmRy
YXdUZXh0dXJlKCpzdXJmYWNlLmdldCgpLCB2aWV3cG9ydFJlY3QsIFRyYW5zZm9ybWF0aW9uTWF0
cml4KCksIDEsIG1hc2tUZXh0dXJlLmdldCgpKTsKLSAgICAgICAgb3B0aW9ucy50ZXh0dXJlTWFw
cGVyLT5yZWxlYXNlVGV4dHVyZVRvUG9vbChzdXJmYWNlLmdldCgpKTsKICAgICAgICAgc3VyZmFj
ZSA9IG1hc2tTdXJmYWNlOwogICAgICAgICBtYXNrVGV4dHVyZS5jbGVhcigpOwogICAgIH0KQEAg
LTUxOCw3ICs1MzEsNiBAQCBib29sIFRleHR1cmVNYXBwZXJOb2RlOjpwYWludFJlZmxlY3Rpb24o
Y29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucwogICAgICAgICBvcHRpb25z
LnRleHR1cmVNYXBwZXItPmJpbmRTdXJmYWNlKHJlcGxpY2FTdXJmYWNlLmdldCgpKTsKICAgICAg
ICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5kcmF3VGV4dHVyZSgqc3VyZmFjZS5nZXQoKSwgdmll
d3BvcnRSZWN0LCBtX3RyYW5zZm9ybXMucmVwbGljYSwgbV9zdGF0ZS5yZXBsaWNhTGF5ZXItPm1f
b3BhY2l0eSwgcmVwbGljYU1hc2tUZXh0dXJlLmdldCgpKTsKICAgICAgICAgb3B0aW9ucy50ZXh0
dXJlTWFwcGVyLT5kcmF3VGV4dHVyZSgqc3VyZmFjZS5nZXQoKSwgdmlld3BvcnRSZWN0LCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCgpLCAxLCBtYXNrVGV4dHVyZS5nZXQoKSk7Ci0gICAgICAgIG9wdGlv
bnMudGV4dHVyZU1hcHBlci0+cmVsZWFzZVRleHR1cmVUb1Bvb2woc3VyZmFjZS5nZXQoKSk7CiAg
ICAgICAgIHN1cmZhY2UgPSByZXBsaWNhU3VyZmFjZTsKICAgICB9CiAKQEAgLTUzMCwxMCArNTQy
LDYgQEAgYm9vbCBUZXh0dXJlTWFwcGVyTm9kZTo6cGFpbnRSZWZsZWN0aW9uKGNvbnN0IFRleHR1
cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlvbnMKIAogICAgIC8vIERyYXcgdGhlIG9yaWdpbmFs
LgogICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+ZHJhd1RleHR1cmUoKnN1cmZhY2UuZ2V0KCks
IHZpZXdwb3J0UmVjdCwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgb3B0aW9ucy5vcGFjaXR5LCBt
YXNrVGV4dHVyZS5nZXQoKSk7Ci0KLSAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPnJlbGVhc2VU
ZXh0dXJlVG9Qb29sKG1hc2tTdXJmYWNlLmdldCgpKTsKLSAgICBvcHRpb25zLnRleHR1cmVNYXBw
ZXItPnJlbGVhc2VUZXh0dXJlVG9Qb29sKHJlcGxpY2FNYXNrU3VyZmFjZS5nZXQoKSk7Ci0KICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNTgyLDEzICs1OTAsMTEgQEAgdm9pZCBUZXh0dXJlTWFw
cGVyTm9kZTo6cGFpbnRSZWN1cnNpdmUoVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyBvcHRpb25z
KQogCiAgICAgcGFpbnRTZWxmQW5kQ2hpbGRyZW4ob3B0aW9ucywgb3B0aW9uc0ZvckRlc2NlbmRh
bnRzKTsKIAotICAgIGlmICghcGFpbnRSZWZsZWN0aW9uKG9wdGlvbnMsIHN1cmZhY2UuZ2V0KCkp
KSB7Ci0gICAgICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+YmluZFN1cmZhY2Uob3B0aW9ucy5z
dXJmYWNlKTsKLSAgICAgICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5kcmF3VGV4dHVyZSgqc3Vy
ZmFjZS5nZXQoKSwgdmlld3BvcnRSZWN0LCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBvcHRpb25z
Lm9wYWNpdHksIG1hc2tTdXJmYWNlLmdldCgpKTsKLSAgICB9CisgICAgaWYgKHBhaW50UmVmbGVj
dGlvbihvcHRpb25zLCBzdXJmYWNlLmdldCgpKSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgb3B0
aW9ucy50ZXh0dXJlTWFwcGVyLT5yZWxlYXNlVGV4dHVyZVRvUG9vbChzdXJmYWNlLmdldCgpKTsK
LSAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPnJlbGVhc2VUZXh0dXJlVG9Qb29sKG1hc2tTdXJm
YWNlLmdldCgpKTsKKyAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmJpbmRTdXJmYWNlKG9wdGlv
bnMuc3VyZmFjZSk7CisgICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5kcmF3VGV4dHVyZSgqc3Vy
ZmFjZS5nZXQoKSwgdmlld3BvcnRSZWN0LCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBvcHRpb25z
Lm9wYWNpdHksIG1hc2tTdXJmYWNlLmdldCgpKTsKIH0KIAogVGV4dHVyZU1hcHBlck5vZGU6On5U
ZXh0dXJlTWFwcGVyTm9kZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTm9kZS5oCmluZGV4IDRlZTM3NTcuLmVk
M2I3NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTm9kZS5oCkBAIC0xOTEsNyArMTkxLDcgQEAgcHJpdmF0
ZToKICAgICBzdGF0aWMgaW50IGNvbXBhcmVHcmFwaGljc0xheWVyc1pWYWx1ZShjb25zdCB2b2lk
KiBhLCBjb25zdCB2b2lkKiBiKTsKICAgICBzdGF0aWMgdm9pZCBzb3J0QnlaT3JkZXIoVmVjdG9y
PFRleHR1cmVNYXBwZXJOb2RlKiA+JiBhcnJheSwgaW50IGZpcnN0LCBpbnQgbGFzdCk7CiAKLSAg
ICBCaXRtYXBUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbV9vd25lZFRpbGVzLmlzRW1wdHko
KSA/IDAgOiBtX293bmVkVGlsZXNbMF0udGV4dHVyZS5nZXQoKTsgfQorICAgIEJpdG1hcFRleHR1
cmUqIGZpbmRGaXJzdENvbnRlbnRUZXh0dXJlRm9yTWFzaygpOwogCiAgICAgdm9pZCBwYWludFJl
Y3Vyc2l2ZShUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zKTsKICAgICBib29sIHBhaW50UmVmbGVj
dGlvbihjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiwgQml0bWFwVGV4dHVyZSogc3Vy
ZmFjZSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>