<?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>63760</bug_id>
          
          <creation_ts>2011-06-30 15:31:03 -0700</creation_ts>
          <short_desc>[chromium] Compositor must reserve all textures before drawing</short_desc>
          <delta_ts>2011-07-01 12:25:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Vangelis Kokkevis">vangelis</reporter>
          <assigned_to name="Vangelis Kokkevis">vangelis</assigned_to>
          <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>430729</commentid>
    <comment_count>0</comment_count>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-06-30 15:31:03 -0700</bug_when>
    <thetext>During layer update and paint the compositor currently only reserves textures for new layer tiles or for existing tiles that don&apos;t have valid textures.  Tiles that have valid textures don&apos;t get their textures reserved until draw time, at which point they may already have been recycled and have no valid contents.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>430771</commentid>
    <comment_count>1</comment_count>
      <attachid>99387</attachid>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-06-30 16:05:39 -0700</bug_when>
    <thetext>Created attachment 99387
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>430795</commentid>
    <comment_count>2</comment_count>
      <attachid>99387</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-06-30 16:21:51 -0700</bug_when>
    <thetext>Comment on attachment 99387
Patch

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

I&apos;m pretty sure this is gonna make us re-upload images on every frame, so r- for that.  Otherwise this seems good but I have questions about some other bits.

&gt; Source/WebCore/platform/graphics/chromium/ImageLayerChromium.cpp:162
&gt; -        m_tiler-&gt;prepareToUpdate(paintRect, m_textureUpdater.get());
&gt;      }
&gt; +    IntRect layerRect = visibleLayerRect(targetSurfaceRect);
&gt; +    if (layerRect.isEmpty())
&gt; +        return;
&gt; +
&gt; +    m_tiler-&gt;prepareToUpdate(layerRect, m_textureUpdater.get());

by moving this out of the if check won&apos;t this reupload the entire image layer every frame?  that seems bad...

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:406
&gt; +                IntRect scissorRect = layer-&gt;ccLayerImpl()-&gt;scissorRect();
&gt;                  targetSurfaceRect.intersect(scissorRect);

nit: you don&apos;t really need a scissorRect local any more

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:-974
&gt; -    bool isLayerVisible = targetSurfaceRect.intersects(layerRect);
&gt; -    if (!isLayerVisible) {
&gt; -        layer-&gt;unreserveContentsTexture();
&gt; -        return;

is this early out not useful any more, not valid, or something else?

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:1073
&gt; +

nit: unnecessary whitespace change here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>430821</commentid>
    <comment_count>3</comment_count>
      <attachid>99395</attachid>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-06-30 16:34:28 -0700</bug_when>
    <thetext>Created attachment 99395
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>430822</commentid>
    <comment_count>4</comment_count>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-06-30 16:35:34 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 99387 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=99387&amp;action=review
&gt; 
&gt; I&apos;m pretty sure this is gonna make us re-upload images on every frame, so r- for that.  Otherwise this seems good but I have questions about some other bits.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/ImageLayerChromium.cpp:162
&gt; &gt; -        m_tiler-&gt;prepareToUpdate(paintRect, m_textureUpdater.get());
&gt; &gt;      }
&gt; &gt; +    IntRect layerRect = visibleLayerRect(targetSurfaceRect);
&gt; &gt; +    if (layerRect.isEmpty())
&gt; &gt; +        return;
&gt; &gt; +
&gt; &gt; +    m_tiler-&gt;prepareToUpdate(layerRect, m_textureUpdater.get());
&gt; 
&gt; by moving this out of the if check won&apos;t this reupload the entire image layer every frame?  that seems bad...

Unless I&apos;m reading the code wrong, updates only happen if tiles are dirty.  Calling prepareToUpdate() doesn&apos;t dirty the tiles, unless their textures have been lost. 

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:406
&gt; &gt; +                IntRect scissorRect = layer-&gt;ccLayerImpl()-&gt;scissorRect();
&gt; &gt;                  targetSurfaceRect.intersect(scissorRect);
&gt; 
&gt; nit: you don&apos;t really need a scissorRect local any more

Fixed

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:-974
&gt; &gt; -    bool isLayerVisible = targetSurfaceRect.intersects(layerRect);
&gt; &gt; -    if (!isLayerVisible) {
&gt; &gt; -        layer-&gt;unreserveContentsTexture();
&gt; &gt; -        return;
&gt; 
&gt; is this early out not useful any more, not valid, or something else?
&gt; 

It could be useful for RenderSurfaces but decided to stay consistent and not try to free up textures half way through drawing (although it&apos;s done for RS&apos;s)

&gt; &gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:1073
&gt; &gt; +
&gt; 
&gt; nit: unnecessary whitespace change here

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>430877</commentid>
    <comment_count>5</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-06-30 17:20:25 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #2)
&gt; &gt; (From update of attachment 99387 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=99387&amp;action=review
&gt; &gt; 
&gt; &gt; I&apos;m pretty sure this is gonna make us re-upload images on every frame, so r- for that.  Otherwise this seems good but I have questions about some other bits.
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/chromium/ImageLayerChromium.cpp:162
&gt; &gt; &gt; -        m_tiler-&gt;prepareToUpdate(paintRect, m_textureUpdater.get());
&gt; &gt; &gt;      }
&gt; &gt; &gt; +    IntRect layerRect = visibleLayerRect(targetSurfaceRect);
&gt; &gt; &gt; +    if (layerRect.isEmpty())
&gt; &gt; &gt; +        return;
&gt; &gt; &gt; +
&gt; &gt; &gt; +    m_tiler-&gt;prepareToUpdate(layerRect, m_textureUpdater.get());
&gt; &gt; 
&gt; &gt; by moving this out of the if check won&apos;t this reupload the entire image layer every frame?  that seems bad...
&gt; 
&gt; Unless I&apos;m reading the code wrong, updates only happen if tiles are dirty.  Calling prepareToUpdate() doesn&apos;t dirty the tiles, unless their textures have been lost. 
&gt; 

LayerTilerChromium::prepareToUpdate() invalidates the passed-in rect:
http://trac.webkit.org/browser/trunk/Source/WebCore/platform/graphics/chromium/LayerTilerChromium.cpp#L238

I think I understand where Vangelis is going here and he&apos;s going to be out of town for a few weeks so I&apos;ll update this patch...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431293</commentid>
    <comment_count>6</comment_count>
      <attachid>99395</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-07-01 11:35:29 -0700</bug_when>
    <thetext>Comment on attachment 99395
Patch

Actually, I was mistaken - prepareToUpdate() calls invalidateTiles(), which doesn&apos;t actually invalidate any tiles.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431336</commentid>
    <comment_count>7</comment_count>
      <attachid>99395</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-01 12:25:14 -0700</bug_when>
    <thetext>Comment on attachment 99395
Patch

Clearing flags on attachment: 99395

Committed r90260: &lt;http://trac.webkit.org/changeset/90260&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431338</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-01 12:25:20 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99387</attachid>
            <date>2011-06-30 16:05:39 -0700</date>
            <delta_ts>2011-06-30 16:34:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-63760-20110630160538.patch</filename>
            <type>text/plain</type>
            <size>14848</size>
            <attacher name="Vangelis Kokkevis">vangelis</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkwMTc0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDQgQEAKKzIwMTEtMDYtMzAgIFZhbmdlbGlz
IEtva2tldmlzICA8dmFuZ2VsaXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtjaHJvbWl1bV0gUmVzZXJ2ZSBhbGwgdGlsZSB0
ZXh0dXJlcyBhdCBsYXllciB1cGRhdGUgdGltZSB0byBndWFyYW50ZWUKKyAgICAgICAgdGhhdCB0
aGV5IHdpbGwgYmUgYXZhaWxhYmxlIGF0IGRyYXcgdGltZS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYzNzYwCisKKyAgICAgICAgSW4gYWRkaXRpb24s
IHRoaXMgcGF0Y2ggdW5yZXNlcnZlcyB0ZXh0dXJlcyB1c2VkIGJ5IFJlbmRlclN1cmZhY2Uncwor
ICAgICAgICByaWdodCBhZnRlciB0aGUgUmVuZGVyU3VyZmFjZSBoYXMgYmVlbiB1c2VkIHRvIGZy
ZWUgdXAgbWVtb3J5IGZvcgorICAgICAgICBzdWJzZXF1ZW50IFJlbmRlclN1cmZhY2VzLgorICAg
ICAgICAKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvICJmaXhlcyIgdGhlIHBhZ2VzIHRoYXQgZGlz
cGxheSBhIGJsdWUgYmFja2dyb3VuZCB3aGVuCisgICAgICAgIHJ1bm5pbmcgb3V0IG9mIHRleHR1
cmUgbWVtb3J5IGFzIHRoZSByb290IGxheWVyIHRpbGVzIGdldCByZXNlcnZlZCBmaXJzdAorICAg
ICAgICBhbmQgYXJlIGd1YXJhbnRlZWQgdG8gZ2V0IHRleHR1cmVzLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW06OkNvbnRlbnRMYXllckNocm9taXVtKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRMYXllckNocm9taXVtOjp2aXNpYmxlTGF5ZXJSZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRMYXllckNocm9taXVtOjpzZXRJc01hc2spOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVt
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9t
aXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250
ZW50c0lmRGlydHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
UmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hy
b21pdW06OnBhaW50TGF5ZXJDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRl
cmVyQ2hyb21pdW06OmRyYXdMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVy
Q2hyb21pdW06OmluaXRpYWxpemVTaGFyZWRPYmplY3RzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJUZXh0dXJlOjp1bnJlc2VydmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyVGV4dHVyZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyVGlsZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRpbGVyQ2hy
b21pdW06OnByZXBhcmVUb1VwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRpbGVyQ2hy
b21pdW06OnVwZGF0ZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVt
OjpkcmF3VGlsZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRl
clN1cmZhY2VDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdXJmYWNlQ2hy
b21pdW06OnJlbGVhc2VDb250ZW50c1RleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlRleHR1cmVNYW5hZ2VyOjp1bnByb3RlY3RUZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5oOgorCiAyMDExLTA2LTMwICBSYWZhZWwg
QnJhbmRhbyAgPHJhZmFlbC5sb2JvQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgQW5kcmVhcyBLbGluZy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5j
cHAJKHJldmlzaW9uIDkwMDc4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Miw2
ICs5Miw3IEBAIFBhc3NSZWZQdHI8Q29udGVudExheWVyQ2hyb21pdW0+IENvbnRlbnQKIENvbnRl
bnRMYXllckNocm9taXVtOjpDb250ZW50TGF5ZXJDaHJvbWl1bShHcmFwaGljc0xheWVyQ2hyb21p
dW0qIG93bmVyKQogICAgIDogTGF5ZXJDaHJvbWl1bShvd25lcikKICAgICAsIG1fdGlsaW5nT3B0
aW9uKENvbnRlbnRMYXllckNocm9taXVtOjpBdXRvVGlsZSkKKyAgICAsIG1faXNNYXNrKGZhbHNl
KQogewogfQogCkBAIC0xNjUsNiArMTY2LDEyIEBAIEludFJlY3QgQ29udGVudExheWVyQ2hyb21p
dW06OnZpc2libGVMYXkKICAgICAgICAgcmV0dXJuIHRhcmdldFN1cmZhY2VSZWN0OwogCiAgICAg
Y29uc3QgSW50UmVjdCBsYXllckJvdW5kUmVjdCA9IGxheWVyQm91bmRzKCk7CisKKyAgICAvLyBN
YXNrIGxheWVycyBkb24ndCBoYXZlIHRoZWlyIG93biBkcmF3IHRyYW5zZm9ybSBzbyB3ZSByZXR1
cm4gdGhlIGVudGlyZQorICAgIC8vIGxheWVyIGJvdW5kcyBhcyB0aGUgdmlzaWJsZSByZWN0Lgor
ICAgIGlmIChtX2lzTWFzaykKKyAgICAgICAgcmV0dXJuIGxheWVyQm91bmRSZWN0OworCiAgICAg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtID0gdGlsaW5nVHJhbnNmb3JtKCk7
CiAKICAgICAvLyBJcyB0aGlzIGxheWVyIGZ1bGx5IGNvbnRhaW5lZCB3aXRoaW4gdGhlIHRhcmdl
dCBzdXJmYWNlPwpAQCAtMjgyLDYgKzI4OSw3IEBAIHZvaWQgQ29udGVudExheWVyQ2hyb21pdW06
OmJpbmRDb250ZW50c1QKIHZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OnNldElzTWFzayhib29s
IGlzTWFzaykKIHsKICAgICBzZXRUaWxpbmdPcHRpb24oaXNNYXNrID8gTmV2ZXJUaWxlIDogQXV0
b1RpbGUpOworICAgIG1faXNNYXNrID0gaXNNYXNrOwogfQogCiBzdGF0aWMgdm9pZCB3cml0ZUlu
ZGVudChUZXh0U3RyZWFtJiB0cywgaW50IGluZGVudCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExh
eWVyQ2hyb21pdW0uaAkocmV2aXNpb24gOTAwNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCSh3b3JraW5nIGNvcHkp
CkBAIC04NSw2ICs4NSw3IEBAIHByb3RlY3RlZDoKICAgICBPd25QdHI8TGF5ZXJUZXh0dXJlVXBk
YXRlcj4gbV90ZXh0dXJlVXBkYXRlcjsKICAgICBPd25QdHI8TGF5ZXJUaWxlckNocm9taXVtPiBt
X3RpbGVyOwogICAgIFRpbGluZ09wdGlvbiBtX3RpbGluZ09wdGlvbjsKKyAgICBib29sIG1faXNN
YXNrOwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCShyZXZp
c2lvbiA5MDA3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MCw3ICsxNDAsNyBA
QCB2b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHMoSW1hCiAgICAgc2V0TmVlZHNE
aXNwbGF5KCk7CiB9CiAKLXZvaWQgSW1hZ2VMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZE
aXJ0eShjb25zdCBJbnRSZWN0JikKK3ZvaWQgSW1hZ2VMYXllckNocm9taXVtOjpwYWludENvbnRl
bnRzSWZEaXJ0eShjb25zdCBJbnRSZWN0JiB0YXJnZXRTdXJmYWNlUmVjdCkKIHsKICAgICBBU1NF
UlQobGF5ZXJSZW5kZXJlcigpKTsKIApAQCAtMTU0LDggKzE1NCwxMiBAQCB2b2lkIEltYWdlTGF5
ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmCiAgICAgICAgICAgICBtX3RpbGVyLT5pbnZhbGlk
YXRlUmVjdChwYWludFJlY3QpOwogICAgICAgICAgICAgbV9kaXJ0eVJlY3QgPSBJbnRSZWN0KCk7
CiAgICAgICAgIH0KLSAgICAgICAgbV90aWxlci0+cHJlcGFyZVRvVXBkYXRlKHBhaW50UmVjdCwg
bV90ZXh0dXJlVXBkYXRlci5nZXQoKSk7CiAgICAgfQorICAgIEludFJlY3QgbGF5ZXJSZWN0ID0g
dmlzaWJsZUxheWVyUmVjdCh0YXJnZXRTdXJmYWNlUmVjdCk7CisgICAgaWYgKGxheWVyUmVjdC5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fdGlsZXItPnByZXBhcmVUb1VwZGF0
ZShsYXllclJlY3QsIG1fdGV4dHVyZVVwZGF0ZXIuZ2V0KCkpOwogfQogCiB2b2lkIEltYWdlTGF5
ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDkwMDc4KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDAxLDkgKzQwMSwxMCBAQCB2b2lkIExheWVyUmVuZGVyZXJD
aHJvbWl1bTo6cGFpbnRMYXllckNvCiAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAg
ICAgICBJbnRSZWN0IHRhcmdldFN1cmZhY2VSZWN0ID0gY2NMYXllckltcGwtPnRhcmdldFJlbmRl
clN1cmZhY2UoKSA/IGNjTGF5ZXJJbXBsLT50YXJnZXRSZW5kZXJTdXJmYWNlKCktPmNvbnRlbnRS
ZWN0KCkgOiBtX2RlZmF1bHRSZW5kZXJTdXJmYWNlLT5jb250ZW50UmVjdCgpOwotICAgICAgICAg
ICAgSW50UmVjdCBzY2lzc29yUmVjdCA9IGxheWVyLT5jY0xheWVySW1wbCgpLT5zY2lzc29yUmVj
dCgpOwotICAgICAgICAgICAgaWYgKCFzY2lzc29yUmVjdC5pc0VtcHR5KCkpCisgICAgICAgICAg
ICBpZiAobGF5ZXItPmNjTGF5ZXJJbXBsKCktPnVzZXNMYXllclNjaXNzb3IoKSkgeworICAgICAg
ICAgICAgICAgIEludFJlY3Qgc2Npc3NvclJlY3QgPSBsYXllci0+Y2NMYXllckltcGwoKS0+c2Np
c3NvclJlY3QoKTsKICAgICAgICAgICAgICAgICB0YXJnZXRTdXJmYWNlUmVjdC5pbnRlcnNlY3Qo
c2Npc3NvclJlY3QpOworICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAobGF5ZXItPmRy
YXdzQ29udGVudCgpKQogICAgICAgICAgICAgICAgIGxheWVyLT5wYWludENvbnRlbnRzSWZEaXJ0
eSh0YXJnZXRTdXJmYWNlUmVjdCk7CkBAIC05NDksMjkgKzk1MCwyNSBAQCB2b2lkIExheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6ZHJhd0xheWVyKENDCiB7CiAgICAgaWYgKGxheWVyLT5yZW5kZXJTdXJm
YWNlKCkgJiYgbGF5ZXItPnJlbmRlclN1cmZhY2UoKSAhPSB0YXJnZXRTdXJmYWNlKSB7CiAgICAg
ICAgIGxheWVyLT5yZW5kZXJTdXJmYWNlKCktPmRyYXcobGF5ZXItPmdldERyYXdSZWN0KCkpOwor
ICAgICAgICBsYXllci0+cmVuZGVyU3VyZmFjZSgpLT5yZWxlYXNlQ29udGVudHNUZXh0dXJlKCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoIWxheWVyLT5kcmF3c0NvbnRlbnQo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGxheWVyLT5ib3VuZHMoKS5pc0VtcHR5KCkp
IHsKLSAgICAgICAgbGF5ZXItPnVucmVzZXJ2ZUNvbnRlbnRzVGV4dHVyZSgpOworICAgIGlmIChs
YXllci0+Ym91bmRzKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCiAgICAg
aWYgKGxheWVyLT51c2VzTGF5ZXJTY2lzc29yKCkpCiAgICAgICAgIHNldFNjaXNzb3JUb1JlY3Qo
bGF5ZXItPnNjaXNzb3JSZWN0KCkpOwogICAgIGVsc2UKICAgICAgICAgR0xDKG1fY29udGV4dC5n
ZXQoKSwgbV9jb250ZXh0LT5kaXNhYmxlKEdyYXBoaWNzQ29udGV4dDNEOjpTQ0lTU09SX1RFU1Qp
KTsKLSAgICBJbnRSZWN0IHRhcmdldFN1cmZhY2VSZWN0ID0gbV9jdXJyZW50UmVuZGVyU3VyZmFj
ZSA/IG1fY3VycmVudFJlbmRlclN1cmZhY2UtPmNvbnRlbnRSZWN0KCkgOiBtX2RlZmF1bHRSZW5k
ZXJTdXJmYWNlLT5jb250ZW50UmVjdCgpOwotCi0gICAgLy8gQ2hlY2sgaWYgdGhlIGxheWVyIGZh
bGxzIHdpdGhpbiB0aGUgdmlzaWJsZSBib3VuZHMgb2YgdGhlIHBhZ2UuCi0gICAgSW50UmVjdCBs
YXllclJlY3QgPSBsYXllci0+Z2V0RHJhd1JlY3QoKTsKLSAgICBib29sIGlzTGF5ZXJWaXNpYmxl
ID0gdGFyZ2V0U3VyZmFjZVJlY3QuaW50ZXJzZWN0cyhsYXllclJlY3QpOwotICAgIGlmICghaXNM
YXllclZpc2libGUpIHsKLSAgICAgICAgbGF5ZXItPnVucmVzZXJ2ZUNvbnRlbnRzVGV4dHVyZSgp
OwotICAgICAgICByZXR1cm47CisgICAgCisgICAgSW50UmVjdCB0YXJnZXRTdXJmYWNlUmVjdCA9
IGxheWVyLT50YXJnZXRSZW5kZXJTdXJmYWNlKCkgPyBsYXllci0+dGFyZ2V0UmVuZGVyU3VyZmFj
ZSgpLT5jb250ZW50UmVjdCgpIDogbV9kZWZhdWx0UmVuZGVyU3VyZmFjZS0+Y29udGVudFJlY3Qo
KTsKKyAgICBpZiAobGF5ZXItPnVzZXNMYXllclNjaXNzb3IoKSkgeworICAgICAgICBJbnRSZWN0
IHNjaXNzb3JSZWN0ID0gbGF5ZXItPnNjaXNzb3JSZWN0KCk7CisgICAgICAgIHRhcmdldFN1cmZh
Y2VSZWN0LmludGVyc2VjdChzY2lzc29yUmVjdCk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IE5l
ZWQgdG8gdGFrZSBpbnRvIGFjY291bnQgdGhlIGNvbW11bGF0aXZlIHJlbmRlciBzdXJmYWNlIHRy
YW5zZm9ybXMgYWxsIHRoZSB3YXkgZnJvbQpAQCAtOTg2LDEwICs5ODMsOCBAQCB2b2lkIExheWVy
UmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0xheWVyKENDCiAgICAgICAgIEZsb2F0UG9pbnQzRCB4QXhp
cyhob3Jpem9udGFsRGlyLndpZHRoKCksIGhvcml6b250YWxEaXIuaGVpZ2h0KCksIDApOwogICAg
ICAgICBGbG9hdFBvaW50M0QgeUF4aXModmVydGljYWxEaXIud2lkdGgoKSwgdmVydGljYWxEaXIu
aGVpZ2h0KCksIDApOwogICAgICAgICBGbG9hdFBvaW50M0QgekF4aXMgPSB4QXhpcy5jcm9zcyh5
QXhpcyk7Ci0gICAgICAgIGlmICh6QXhpcy56KCkgPCAwKSB7Ci0gICAgICAgICAgICBsYXllci0+
dW5yZXNlcnZlQ29udGVudHNUZXh0dXJlKCk7CisgICAgICAgIGlmICh6QXhpcy56KCkgPCAwKQog
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CiAgICAgfQogCiAgICAgbGF5ZXItPmRyYXco
dGFyZ2V0U3VyZmFjZVJlY3QpOwpAQCAtMTA3NSw2ICsxMDcwLDcgQEAgYm9vbCBMYXllclJlbmRl
cmVyQ2hyb21pdW06OmluaXRpYWxpemVTaAogICAgIEdMQyhtX2NvbnRleHQuZ2V0KCksIG1fY29u
dGV4dC0+Zmx1c2goKSk7CiAKICAgICBtX3RleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6
OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCksIHRleHR1cmVNZW1vcnlMaW1pdEJ5dGVzLCBtX21heFRl
eHR1cmVTaXplKTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVy
ZS5jcHAJKHJldmlzaW9uIDkwMDc4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEsNiArNzEs
MTQgQEAgYm9vbCBMYXllclRleHR1cmU6OnJlc2VydmUoY29uc3QgSW50U2l6ZQogICAgIHJldHVy
biBtX3RleHR1cmVJZDsKIH0KIAordm9pZCBMYXllclRleHR1cmU6OnVucmVzZXJ2ZSgpCit7Cisg
ICAgaWYgKCFtX3Rva2VuKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3RleHR1cmVNYW5hZ2Vy
LT51bnByb3RlY3RUZXh0dXJlKG1fdG9rZW4pOworfQorCiB2b2lkIExheWVyVGV4dHVyZTo6Ymlu
ZFRleHR1cmUoKQogewogICAgIEFTU0VSVChtX3RleHR1cmVNYW5hZ2VyLT5oYXNUZXh0dXJlKG1f
dG9rZW4pKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyVGV4dHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZS5oCShyZXZpc2lvbiA5MDA3OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBmb3JtYXQo
KSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdDsgfQogICAgIGJvb2wgaXNWYWxpZChjb25zdCBJbnRT
aXplJiwgdW5zaWduZWQgZm9ybWF0KTsKICAgICBib29sIHJlc2VydmUoY29uc3QgSW50U2l6ZSYs
IHVuc2lnbmVkIGZvcm1hdCk7CisgICAgdm9pZCB1bnJlc2VydmUoKTsKICAgICBib29sIGlzUmVz
ZXJ2ZWQoKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fdGV4dHVyZU1hbmFnZXIpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9t
aXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0uY3BwCShyZXZpc2lvbiA5MDA3OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIyOCw3ICsyMjgsOSBAQCB2b2lkIExheWVyVGlsZXJDaHJv
bWl1bTo6aW52YWxpZGF0ZUVudGlyCiAKIHZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjpwcmVwYXJl
VG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIExheWVyVGV4dHVyZVVwZGF0ZXIq
IHRleHR1cmVVcGRhdGVyKQogewotICAgIGlmIChtX3NraXBzRHJhdyB8fCBjb250ZW50UmVjdC5p
c0VtcHR5KCkpIHsKKyAgICBtX3NraXBzRHJhdyA9IGZhbHNlOworCisgICAgaWYgKGNvbnRlbnRS
ZWN0LmlzRW1wdHkoKSkgewogICAgICAgICBtX3VwZGF0ZVJlY3QgPSBJbnRSZWN0KCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC0yNTUsOCArMjU3LDEzIEBAIHZvaWQgTGF5ZXJUaWxlckNo
cm9taXVtOjpwcmVwYXJlVG9VcGRhdGUKICAgICAgICAgICAgICAgICB0aWxlID0gY3JlYXRlVGls
ZShpLCBqKTsKICAgICAgICAgICAgIGlmICghdGlsZS0+dGV4dHVyZSgpLT5pc1ZhbGlkKG1fdGls
ZVNpemUsIG1fdGV4dHVyZUZvcm1hdCkpCiAgICAgICAgICAgICAgICAgdGlsZS0+bV9kaXJ0eUxh
eWVyUmVjdCA9IHRpbGVMYXllclJlY3QodGlsZSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgdGlsZS0+dGV4dHVyZSgpLT5yZXNlcnZlKG1fdGlsZVNpemUsIG1fdGV4dHVyZUZv
cm1hdCk7CisKKyAgICAgICAgICAgIGlmICghdGlsZS0+dGV4dHVyZSgpLT5yZXNlcnZlKG1fdGls
ZVNpemUsIG1fdGV4dHVyZUZvcm1hdCkpIHsKKyAgICAgICAgICAgICAgICBtX3NraXBzRHJhdyA9
IHRydWU7CisgICAgICAgICAgICAgICAgcmVzZXQoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGRpcnR5TGF5ZXJSZWN0LnVuaXRlKHRpbGUt
Pm1fZGlydHlMYXllclJlY3QpOwogICAgICAgICB9CiAgICAgfQpAQCAtMjc2LDcgKzI4Myw3IEBA
IHZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGUKIHZvaWQgTGF5ZXJUaWxl
ckNocm9taXVtOjp1cGRhdGVSZWN0KExheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVy
KQogewogICAgIC8vIFBhaW50aW5nIGNvdWxkIGNhdXNlIGNvbXBvc2l0aW5nIHRvIGdldCB0dXJu
ZWQgb2ZmLCB3aGljaCBtYXkgY2F1c2UgdGhlIHRpbGVyIHRvIGJlY29tZSBpbnZhbGlkYXRlZCBt
aWQtdXBkYXRlLgotICAgIGlmICghbV90aWxpbmdEYXRhLnRvdGFsU2l6ZVgoKSB8fCAhbV90aWxp
bmdEYXRhLnRvdGFsU2l6ZVkoKSB8fCBtX3VwZGF0ZVJlY3QuaXNFbXB0eSgpIHx8ICFudW1UaWxl
cygpKQorICAgIGlmICghbV90aWxpbmdEYXRhLnRvdGFsU2l6ZVgoKSB8fCAhbV90aWxpbmdEYXRh
LnRvdGFsU2l6ZVkoKSB8fCBtX3VwZGF0ZVJlY3QuaXNFbXB0eSgpIHx8ICFudW1UaWxlcygpIHx8
IG1fc2tpcHNEcmF3KQogICAgICAgICByZXR1cm47CiAKICAgICBHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCA9IGxheWVyUmVuZGVyZXJDb250ZXh0KCk7CkBAIC0zMDEsMTMgKzMwOCw3IEBAIHZv
aWQgTGF5ZXJUaWxlckNocm9taXVtOjp1cGRhdGVSZWN0KExheWUKICAgICAgICAgICAgIGlmIChz
b3VyY2VSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAg
ICAgICAgaWYgKCF0aWxlLT50ZXh0dXJlKCktPmlzUmVzZXJ2ZWQoKSkgewotICAgICAgICAgICAg
ICAgIGlmICghdGlsZS0+dGV4dHVyZSgpLT5yZXNlcnZlKG1fdGlsZVNpemUsIG1fdGV4dHVyZUZv
cm1hdCkpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9za2lwc0RyYXcgPSB0cnVlOwotICAgICAg
ICAgICAgICAgICAgICByZXNldCgpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgfQorICAgICAgICAgICAgQVNTRVJUKHRpbGUtPnRl
eHR1cmUoKS0+aXNSZXNlcnZlZCgpKTsKIAogICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIHRpbGUt
c3BhY2UgcmVjdGFuZ2xlIHRvIHVwbG9hZCBpbnRvLgogICAgICAgICAgICAgSW50UmVjdCBkZXN0
UmVjdChJbnRQb2ludChzb3VyY2VSZWN0LngoKSAtIGFuY2hvci54KCksIHNvdXJjZVJlY3QueSgp
IC0gYW5jaG9yLnkoKSksIHNvdXJjZVJlY3Quc2l6ZSgpKTsKQEAgLTM4OSw2ICszOTAsOCBAQCB2
b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6ZHJhd1RpbGVzKGNvbnN0CiAgICAgICAgICAgICBpZiAo
IXRpbGUpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKKyAgICAgICAgICAgIEFTU0VSVCh0
aWxlLT50ZXh0dXJlKCktPmlzUmVzZXJ2ZWQoKSk7CisKICAgICAgICAgICAgIHRpbGUtPnRleHR1
cmUoKS0+YmluZFRleHR1cmUoKTsKIAogICAgICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgg
dGlsZU1hdHJpeChnbG9iYWxUcmFuc2Zvcm0pOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJm
YWNlQ2hyb21pdW0uY3BwCShyZXZpc2lvbiA5MDA3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTk4LDYgKzk4LDEzIEBAIGJvb2wgUmVuZGVyU3VyZmFjZUNocm9taXVtOjpwcmVw
YXJlQ29udGUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBSZW5kZXJTdXJmYWNlQ2hyb21p
dW06OnJlbGVhc2VDb250ZW50c1RleHR1cmUoKQoreworICAgIGlmIChtX3NraXBzRHJhdyB8fCAh
bV9jb250ZW50c1RleHR1cmUpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRlbnRzVGV4dHVy
ZS0+dW5yZXNlcnZlKCk7Cit9CisKIHZvaWQgUmVuZGVyU3VyZmFjZUNocm9taXVtOjpkcmF3U3Vy
ZmFjZShDQ0xheWVySW1wbCogbWFza0xheWVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
ZHJhd1RyYW5zZm9ybSkKIHsKICAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNEID0gbGF5
ZXJSZW5kZXJlcigpLT5jb250ZXh0KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hy
b21pdW0uaAkocmV2aXNpb24gOTAwNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0uaAkod29ya2luZyBjb3B5KQpAQCAt
NTEsNiArNTEsNyBAQCBwdWJsaWM6CiAgICAgflJlbmRlclN1cmZhY2VDaHJvbWl1bSgpOwogCiAg
ICAgYm9vbCBwcmVwYXJlQ29udGVudHNUZXh0dXJlKCk7CisgICAgdm9pZCByZWxlYXNlQ29udGVu
dHNUZXh0dXJlKCk7CiAgICAgdm9pZCBjbGVhbnVwUmVzb3VyY2VzKCk7CiAgICAgdm9pZCBkcmF3
KGNvbnN0IEludFJlY3QmIHRhcmdldFN1cmZhY2VSZWN0KTsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVN
YW5hZ2VyLmNwcAkocmV2aXNpb24gOTAwNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0
LDYgKzg0LDEzIEBAIHZvaWQgVGV4dHVyZU1hbmFnZXI6OnByb3RlY3RUZXh0dXJlKFRleHQKICAg
ICBtX3RleHR1cmVzLmFkZCh0b2tlbiwgaW5mbyk7CiB9CiAKK3ZvaWQgVGV4dHVyZU1hbmFnZXI6
OnVucHJvdGVjdFRleHR1cmUoVGV4dHVyZVRva2VuIHRva2VuKQoreworICAgIFRleHR1cmVNYXA6
Oml0ZXJhdG9yIGl0ID0gbV90ZXh0dXJlcy5maW5kKHRva2VuKTsKKyAgICBpZiAoaXQgIT0gbV90
ZXh0dXJlcy5lbmQoKSkKKyAgICAgICAgaXQtPnNlY29uZC5pc1Byb3RlY3RlZCA9IGZhbHNlOwor
fQorCiB2b2lkIFRleHR1cmVNYW5hZ2VyOjp1bnByb3RlY3RBbGxUZXh0dXJlcygpCiB7CiAgICAg
Zm9yIChUZXh0dXJlTWFwOjppdGVyYXRvciBpdCA9IG1fdGV4dHVyZXMuYmVnaW4oKTsgaXQgIT0g
bV90ZXh0dXJlcy5lbmQoKTsgKytpdCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuaAkocmV2aXNp
b24gOTAwNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9U
ZXh0dXJlTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw3IEBAIHB1YmxpYzoK
ICAgICB1bnNpZ25lZCByZXF1ZXN0VGV4dHVyZShUZXh0dXJlVG9rZW4sIEludFNpemUsIHVuc2ln
bmVkIHRleHR1cmVGb3JtYXQsIGJvb2wqIG5ld1RleHR1cmUgPSAwKTsKIAogICAgIHZvaWQgcHJv
dGVjdFRleHR1cmUoVGV4dHVyZVRva2VuKTsKKyAgICB2b2lkIHVucHJvdGVjdFRleHR1cmUoVGV4
dHVyZVRva2VuKTsKICAgICB2b2lkIHVucHJvdGVjdEFsbFRleHR1cmVzKCk7CiAgICAgYm9vbCBp
c1Byb3RlY3RlZChUZXh0dXJlVG9rZW4pOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99395</attachid>
            <date>2011-06-30 16:34:28 -0700</date>
            <delta_ts>2011-07-01 12:25:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-63760-20110630163427.patch</filename>
            <type>text/plain</type>
            <size>14592</size>
            <attacher name="Vangelis Kokkevis">vangelis</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkwMTc0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDQgQEAKKzIwMTEtMDYtMzAgIFZhbmdlbGlz
IEtva2tldmlzICA8dmFuZ2VsaXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtjaHJvbWl1bV0gUmVzZXJ2ZSBhbGwgdGlsZSB0
ZXh0dXJlcyBhdCBsYXllciB1cGRhdGUgdGltZSB0byBndWFyYW50ZWUKKyAgICAgICAgdGhhdCB0
aGV5IHdpbGwgYmUgYXZhaWxhYmxlIGF0IGRyYXcgdGltZS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYzNzYwCisKKyAgICAgICAgSW4gYWRkaXRpb24s
IHRoaXMgcGF0Y2ggdW5yZXNlcnZlcyB0ZXh0dXJlcyB1c2VkIGJ5IFJlbmRlclN1cmZhY2Uncwor
ICAgICAgICByaWdodCBhZnRlciB0aGUgUmVuZGVyU3VyZmFjZSBoYXMgYmVlbiB1c2VkIHRvIGZy
ZWUgdXAgbWVtb3J5IGZvcgorICAgICAgICBzdWJzZXF1ZW50IFJlbmRlclN1cmZhY2VzLgorICAg
ICAgICAKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvICJmaXhlcyIgdGhlIHBhZ2VzIHRoYXQgZGlz
cGxheSBhIGJsdWUgYmFja2dyb3VuZCB3aGVuCisgICAgICAgIHJ1bm5pbmcgb3V0IG9mIHRleHR1
cmUgbWVtb3J5IGFzIHRoZSByb290IGxheWVyIHRpbGVzIGdldCByZXNlcnZlZCBmaXJzdAorICAg
ICAgICBhbmQgYXJlIGd1YXJhbnRlZWQgdG8gZ2V0IHRleHR1cmVzLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW06OkNvbnRlbnRMYXllckNocm9taXVtKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRMYXllckNocm9taXVtOjp2aXNpYmxlTGF5ZXJSZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRMYXllckNocm9taXVtOjpzZXRJc01hc2spOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVt
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9t
aXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250
ZW50c0lmRGlydHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
UmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hy
b21pdW06OnBhaW50TGF5ZXJDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRl
cmVyQ2hyb21pdW06OmRyYXdMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVy
Q2hyb21pdW06OmluaXRpYWxpemVTaGFyZWRPYmplY3RzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJUZXh0dXJlOjp1bnJlc2VydmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyVGV4dHVyZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyVGlsZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRpbGVyQ2hy
b21pdW06OnByZXBhcmVUb1VwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRpbGVyQ2hy
b21pdW06OnVwZGF0ZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVt
OjpkcmF3VGlsZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRl
clN1cmZhY2VDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdXJmYWNlQ2hy
b21pdW06OnJlbGVhc2VDb250ZW50c1RleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlRleHR1cmVNYW5hZ2VyOjp1bnByb3RlY3RUZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5oOgorCiAyMDExLTA2LTMwICBSYWZhZWwg
QnJhbmRhbyAgPHJhZmFlbC5sb2JvQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgQW5kcmVhcyBLbGluZy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5j
cHAJKHJldmlzaW9uIDkwMDc4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Miw2
ICs5Miw3IEBAIFBhc3NSZWZQdHI8Q29udGVudExheWVyQ2hyb21pdW0+IENvbnRlbnQKIENvbnRl
bnRMYXllckNocm9taXVtOjpDb250ZW50TGF5ZXJDaHJvbWl1bShHcmFwaGljc0xheWVyQ2hyb21p
dW0qIG93bmVyKQogICAgIDogTGF5ZXJDaHJvbWl1bShvd25lcikKICAgICAsIG1fdGlsaW5nT3B0
aW9uKENvbnRlbnRMYXllckNocm9taXVtOjpBdXRvVGlsZSkKKyAgICAsIG1faXNNYXNrKGZhbHNl
KQogewogfQogCkBAIC0xNjUsNiArMTY2LDEyIEBAIEludFJlY3QgQ29udGVudExheWVyQ2hyb21p
dW06OnZpc2libGVMYXkKICAgICAgICAgcmV0dXJuIHRhcmdldFN1cmZhY2VSZWN0OwogCiAgICAg
Y29uc3QgSW50UmVjdCBsYXllckJvdW5kUmVjdCA9IGxheWVyQm91bmRzKCk7CisKKyAgICAvLyBN
YXNrIGxheWVycyBkb24ndCBoYXZlIHRoZWlyIG93biBkcmF3IHRyYW5zZm9ybSBzbyB3ZSByZXR1
cm4gdGhlIGVudGlyZQorICAgIC8vIGxheWVyIGJvdW5kcyBhcyB0aGUgdmlzaWJsZSByZWN0Lgor
ICAgIGlmIChtX2lzTWFzaykKKyAgICAgICAgcmV0dXJuIGxheWVyQm91bmRSZWN0OworCiAgICAg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtID0gdGlsaW5nVHJhbnNmb3JtKCk7
CiAKICAgICAvLyBJcyB0aGlzIGxheWVyIGZ1bGx5IGNvbnRhaW5lZCB3aXRoaW4gdGhlIHRhcmdl
dCBzdXJmYWNlPwpAQCAtMjgyLDYgKzI4OSw3IEBAIHZvaWQgQ29udGVudExheWVyQ2hyb21pdW06
OmJpbmRDb250ZW50c1QKIHZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OnNldElzTWFzayhib29s
IGlzTWFzaykKIHsKICAgICBzZXRUaWxpbmdPcHRpb24oaXNNYXNrID8gTmV2ZXJUaWxlIDogQXV0
b1RpbGUpOworICAgIG1faXNNYXNrID0gaXNNYXNrOwogfQogCiBzdGF0aWMgdm9pZCB3cml0ZUlu
ZGVudChUZXh0U3RyZWFtJiB0cywgaW50IGluZGVudCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExh
eWVyQ2hyb21pdW0uaAkocmV2aXNpb24gOTAwNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCSh3b3JraW5nIGNvcHkp
CkBAIC04NSw2ICs4NSw3IEBAIHByb3RlY3RlZDoKICAgICBPd25QdHI8TGF5ZXJUZXh0dXJlVXBk
YXRlcj4gbV90ZXh0dXJlVXBkYXRlcjsKICAgICBPd25QdHI8TGF5ZXJUaWxlckNocm9taXVtPiBt
X3RpbGVyOwogICAgIFRpbGluZ09wdGlvbiBtX3RpbGluZ09wdGlvbjsKKyAgICBib29sIG1faXNN
YXNrOwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCShyZXZp
c2lvbiA5MDA3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MCw3ICsxNDAsNyBA
QCB2b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHMoSW1hCiAgICAgc2V0TmVlZHNE
aXNwbGF5KCk7CiB9CiAKLXZvaWQgSW1hZ2VMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZE
aXJ0eShjb25zdCBJbnRSZWN0JikKK3ZvaWQgSW1hZ2VMYXllckNocm9taXVtOjpwYWludENvbnRl
bnRzSWZEaXJ0eShjb25zdCBJbnRSZWN0JiB0YXJnZXRTdXJmYWNlUmVjdCkKIHsKICAgICBBU1NF
UlQobGF5ZXJSZW5kZXJlcigpKTsKIApAQCAtMTU0LDggKzE1NCwxMiBAQCB2b2lkIEltYWdlTGF5
ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmCiAgICAgICAgICAgICBtX3RpbGVyLT5pbnZhbGlk
YXRlUmVjdChwYWludFJlY3QpOwogICAgICAgICAgICAgbV9kaXJ0eVJlY3QgPSBJbnRSZWN0KCk7
CiAgICAgICAgIH0KLSAgICAgICAgbV90aWxlci0+cHJlcGFyZVRvVXBkYXRlKHBhaW50UmVjdCwg
bV90ZXh0dXJlVXBkYXRlci5nZXQoKSk7CiAgICAgfQorICAgIEludFJlY3QgbGF5ZXJSZWN0ID0g
dmlzaWJsZUxheWVyUmVjdCh0YXJnZXRTdXJmYWNlUmVjdCk7CisgICAgaWYgKGxheWVyUmVjdC5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fdGlsZXItPnByZXBhcmVUb1VwZGF0
ZShsYXllclJlY3QsIG1fdGV4dHVyZVVwZGF0ZXIuZ2V0KCkpOwogfQogCiB2b2lkIEltYWdlTGF5
ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDkwMDc4KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDAxLDkgKzQwMSw4IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNo
cm9taXVtOjpwYWludExheWVyQ28KICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAg
ICAgIEludFJlY3QgdGFyZ2V0U3VyZmFjZVJlY3QgPSBjY0xheWVySW1wbC0+dGFyZ2V0UmVuZGVy
U3VyZmFjZSgpID8gY2NMYXllckltcGwtPnRhcmdldFJlbmRlclN1cmZhY2UoKS0+Y29udGVudFJl
Y3QoKSA6IG1fZGVmYXVsdFJlbmRlclN1cmZhY2UtPmNvbnRlbnRSZWN0KCk7Ci0gICAgICAgICAg
ICBJbnRSZWN0IHNjaXNzb3JSZWN0ID0gbGF5ZXItPmNjTGF5ZXJJbXBsKCktPnNjaXNzb3JSZWN0
KCk7Ci0gICAgICAgICAgICBpZiAoIXNjaXNzb3JSZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgICAg
ICAgICB0YXJnZXRTdXJmYWNlUmVjdC5pbnRlcnNlY3Qoc2Npc3NvclJlY3QpOworICAgICAgICAg
ICAgaWYgKGxheWVyLT5jY0xheWVySW1wbCgpLT51c2VzTGF5ZXJTY2lzc29yKCkpCisgICAgICAg
ICAgICAgICAgdGFyZ2V0U3VyZmFjZVJlY3QuaW50ZXJzZWN0KGxheWVyLT5jY0xheWVySW1wbCgp
LT5zY2lzc29yUmVjdCgpKTsKIAogICAgICAgICAgICAgaWYgKGxheWVyLT5kcmF3c0NvbnRlbnQo
KSkKICAgICAgICAgICAgICAgICBsYXllci0+cGFpbnRDb250ZW50c0lmRGlydHkodGFyZ2V0U3Vy
ZmFjZVJlY3QpOwpAQCAtOTQ5LDI5ICs5NDgsMjUgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21p
dW06OmRyYXdMYXllcihDQwogewogICAgIGlmIChsYXllci0+cmVuZGVyU3VyZmFjZSgpICYmIGxh
eWVyLT5yZW5kZXJTdXJmYWNlKCkgIT0gdGFyZ2V0U3VyZmFjZSkgewogICAgICAgICBsYXllci0+
cmVuZGVyU3VyZmFjZSgpLT5kcmF3KGxheWVyLT5nZXREcmF3UmVjdCgpKTsKKyAgICAgICAgbGF5
ZXItPnJlbmRlclN1cmZhY2UoKS0+cmVsZWFzZUNvbnRlbnRzVGV4dHVyZSgpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCiAgICAgaWYgKCFsYXllci0+ZHJhd3NDb250ZW50KCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGlmIChsYXllci0+Ym91bmRzKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAg
IGxheWVyLT51bnJlc2VydmVDb250ZW50c1RleHR1cmUoKTsKKyAgICBpZiAobGF5ZXItPmJvdW5k
cygpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAogICAgIGlmIChsYXllci0+
dXNlc0xheWVyU2Npc3NvcigpKQogICAgICAgICBzZXRTY2lzc29yVG9SZWN0KGxheWVyLT5zY2lz
c29yUmVjdCgpKTsKICAgICBlbHNlCiAgICAgICAgIEdMQyhtX2NvbnRleHQuZ2V0KCksIG1fY29u
dGV4dC0+ZGlzYWJsZShHcmFwaGljc0NvbnRleHQzRDo6U0NJU1NPUl9URVNUKSk7Ci0gICAgSW50
UmVjdCB0YXJnZXRTdXJmYWNlUmVjdCA9IG1fY3VycmVudFJlbmRlclN1cmZhY2UgPyBtX2N1cnJl
bnRSZW5kZXJTdXJmYWNlLT5jb250ZW50UmVjdCgpIDogbV9kZWZhdWx0UmVuZGVyU3VyZmFjZS0+
Y29udGVudFJlY3QoKTsKLQotICAgIC8vIENoZWNrIGlmIHRoZSBsYXllciBmYWxscyB3aXRoaW4g
dGhlIHZpc2libGUgYm91bmRzIG9mIHRoZSBwYWdlLgotICAgIEludFJlY3QgbGF5ZXJSZWN0ID0g
bGF5ZXItPmdldERyYXdSZWN0KCk7Ci0gICAgYm9vbCBpc0xheWVyVmlzaWJsZSA9IHRhcmdldFN1
cmZhY2VSZWN0LmludGVyc2VjdHMobGF5ZXJSZWN0KTsKLSAgICBpZiAoIWlzTGF5ZXJWaXNpYmxl
KSB7Ci0gICAgICAgIGxheWVyLT51bnJlc2VydmVDb250ZW50c1RleHR1cmUoKTsKLSAgICAgICAg
cmV0dXJuOworICAgIAorICAgIEludFJlY3QgdGFyZ2V0U3VyZmFjZVJlY3QgPSBsYXllci0+dGFy
Z2V0UmVuZGVyU3VyZmFjZSgpID8gbGF5ZXItPnRhcmdldFJlbmRlclN1cmZhY2UoKS0+Y29udGVu
dFJlY3QoKSA6IG1fZGVmYXVsdFJlbmRlclN1cmZhY2UtPmNvbnRlbnRSZWN0KCk7CisgICAgaWYg
KGxheWVyLT51c2VzTGF5ZXJTY2lzc29yKCkpIHsKKyAgICAgICAgSW50UmVjdCBzY2lzc29yUmVj
dCA9IGxheWVyLT5zY2lzc29yUmVjdCgpOworICAgICAgICB0YXJnZXRTdXJmYWNlUmVjdC5pbnRl
cnNlY3Qoc2Npc3NvclJlY3QpOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBOZWVkIHRvIHRha2Ug
aW50byBhY2NvdW50IHRoZSBjb21tdWxhdGl2ZSByZW5kZXIgc3VyZmFjZSB0cmFuc2Zvcm1zIGFs
bCB0aGUgd2F5IGZyb20KQEAgLTk4NiwxMCArOTgxLDggQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hy
b21pdW06OmRyYXdMYXllcihDQwogICAgICAgICBGbG9hdFBvaW50M0QgeEF4aXMoaG9yaXpvbnRh
bERpci53aWR0aCgpLCBob3Jpem9udGFsRGlyLmhlaWdodCgpLCAwKTsKICAgICAgICAgRmxvYXRQ
b2ludDNEIHlBeGlzKHZlcnRpY2FsRGlyLndpZHRoKCksIHZlcnRpY2FsRGlyLmhlaWdodCgpLCAw
KTsKICAgICAgICAgRmxvYXRQb2ludDNEIHpBeGlzID0geEF4aXMuY3Jvc3MoeUF4aXMpOwotICAg
ICAgICBpZiAoekF4aXMueigpIDwgMCkgewotICAgICAgICAgICAgbGF5ZXItPnVucmVzZXJ2ZUNv
bnRlbnRzVGV4dHVyZSgpOworICAgICAgICBpZiAoekF4aXMueigpIDwgMCkKICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQogICAgIH0KIAogICAgIGxheWVyLT5kcmF3KHRhcmdldFN1cmZh
Y2VSZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyVGV4dHVyZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlLmNwcAkocmV2aXNpb24gOTAwNzgpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03MSw2ICs3MSwxNCBAQCBib29sIExheWVyVGV4dHVyZTo6cmVz
ZXJ2ZShjb25zdCBJbnRTaXplCiAgICAgcmV0dXJuIG1fdGV4dHVyZUlkOwogfQogCit2b2lkIExh
eWVyVGV4dHVyZTo6dW5yZXNlcnZlKCkKK3sKKyAgICBpZiAoIW1fdG9rZW4pCisgICAgICAgIHJl
dHVybjsKKworICAgIG1fdGV4dHVyZU1hbmFnZXItPnVucHJvdGVjdFRleHR1cmUobV90b2tlbik7
Cit9CisKIHZvaWQgTGF5ZXJUZXh0dXJlOjpiaW5kVGV4dHVyZSgpCiB7CiAgICAgQVNTRVJUKG1f
dGV4dHVyZU1hbmFnZXItPmhhc1RleHR1cmUobV90b2tlbikpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJl
LmgJKHJldmlzaW9uIDkwMDc4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJUZXh0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcgQEAg
cHVibGljOgogICAgIHVuc2lnbmVkIGZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9ybWF0OyB9
CiAgICAgYm9vbCBpc1ZhbGlkKGNvbnN0IEludFNpemUmLCB1bnNpZ25lZCBmb3JtYXQpOwogICAg
IGJvb2wgcmVzZXJ2ZShjb25zdCBJbnRTaXplJiwgdW5zaWduZWQgZm9ybWF0KTsKKyAgICB2b2lk
IHVucmVzZXJ2ZSgpOwogICAgIGJvb2wgaXNSZXNlcnZlZCgpCiAgICAgewogICAgICAgICBBU1NF
UlQobV90ZXh0dXJlTWFuYWdlcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5j
cHAJKHJldmlzaW9uIDkwMDc4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI4LDcg
KzIyOCw5IEBAIHZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjppbnZhbGlkYXRlRW50aXIKIAogdm9p
ZCBMYXllclRpbGVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250
ZW50UmVjdCwgTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIpCiB7Ci0gICAgaWYg
KG1fc2tpcHNEcmF3IHx8IGNvbnRlbnRSZWN0LmlzRW1wdHkoKSkgeworICAgIG1fc2tpcHNEcmF3
ID0gZmFsc2U7CisKKyAgICBpZiAoY29udGVudFJlY3QuaXNFbXB0eSgpKSB7CiAgICAgICAgIG1f
dXBkYXRlUmVjdCA9IEludFJlY3QoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI1NSw4
ICsyNTcsMTMgQEAgdm9pZCBMYXllclRpbGVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZQogICAg
ICAgICAgICAgICAgIHRpbGUgPSBjcmVhdGVUaWxlKGksIGopOwogICAgICAgICAgICAgaWYgKCF0
aWxlLT50ZXh0dXJlKCktPmlzVmFsaWQobV90aWxlU2l6ZSwgbV90ZXh0dXJlRm9ybWF0KSkKICAg
ICAgICAgICAgICAgICB0aWxlLT5tX2RpcnR5TGF5ZXJSZWN0ID0gdGlsZUxheWVyUmVjdCh0aWxl
KTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0aWxlLT50ZXh0dXJlKCktPnJl
c2VydmUobV90aWxlU2l6ZSwgbV90ZXh0dXJlRm9ybWF0KTsKKworICAgICAgICAgICAgaWYgKCF0
aWxlLT50ZXh0dXJlKCktPnJlc2VydmUobV90aWxlU2l6ZSwgbV90ZXh0dXJlRm9ybWF0KSkgewor
ICAgICAgICAgICAgICAgIG1fc2tpcHNEcmF3ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICByZXNl
dCgpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAg
ICAgZGlydHlMYXllclJlY3QudW5pdGUodGlsZS0+bV9kaXJ0eUxheWVyUmVjdCk7CiAgICAgICAg
IH0KICAgICB9CkBAIC0yNzYsNyArMjgzLDcgQEAgdm9pZCBMYXllclRpbGVyQ2hyb21pdW06OnBy
ZXBhcmVUb1VwZGF0ZQogdm9pZCBMYXllclRpbGVyQ2hyb21pdW06OnVwZGF0ZVJlY3QoTGF5ZXJU
ZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIpCiB7CiAgICAgLy8gUGFpbnRpbmcgY291bGQg
Y2F1c2UgY29tcG9zaXRpbmcgdG8gZ2V0IHR1cm5lZCBvZmYsIHdoaWNoIG1heSBjYXVzZSB0aGUg
dGlsZXIgdG8gYmVjb21lIGludmFsaWRhdGVkIG1pZC11cGRhdGUuCi0gICAgaWYgKCFtX3RpbGlu
Z0RhdGEudG90YWxTaXplWCgpIHx8ICFtX3RpbGluZ0RhdGEudG90YWxTaXplWSgpIHx8IG1fdXBk
YXRlUmVjdC5pc0VtcHR5KCkgfHwgIW51bVRpbGVzKCkpCisgICAgaWYgKCFtX3RpbGluZ0RhdGEu
dG90YWxTaXplWCgpIHx8ICFtX3RpbGluZ0RhdGEudG90YWxTaXplWSgpIHx8IG1fdXBkYXRlUmVj
dC5pc0VtcHR5KCkgfHwgIW51bVRpbGVzKCkgfHwgbV9za2lwc0RyYXcpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0ID0gbGF5ZXJSZW5kZXJlckNvbnRl
eHQoKTsKQEAgLTMwMSwxMyArMzA4LDcgQEAgdm9pZCBMYXllclRpbGVyQ2hyb21pdW06OnVwZGF0
ZVJlY3QoTGF5ZQogICAgICAgICAgICAgaWYgKHNvdXJjZVJlY3QuaXNFbXB0eSgpKQogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBpZiAoIXRpbGUtPnRleHR1cmUoKS0+
aXNSZXNlcnZlZCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCF0aWxlLT50ZXh0dXJlKCktPnJl
c2VydmUobV90aWxlU2l6ZSwgbV90ZXh0dXJlRm9ybWF0KSkgewotICAgICAgICAgICAgICAgICAg
ICBtX3NraXBzRHJhdyA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIHJlc2V0KCk7Ci0gICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
CisgICAgICAgICAgICBBU1NFUlQodGlsZS0+dGV4dHVyZSgpLT5pc1Jlc2VydmVkKCkpOwogCiAg
ICAgICAgICAgICAvLyBDYWxjdWxhdGUgdGlsZS1zcGFjZSByZWN0YW5nbGUgdG8gdXBsb2FkIGlu
dG8uCiAgICAgICAgICAgICBJbnRSZWN0IGRlc3RSZWN0KEludFBvaW50KHNvdXJjZVJlY3QueCgp
IC0gYW5jaG9yLngoKSwgc291cmNlUmVjdC55KCkgLSBhbmNob3IueSgpKSwgc291cmNlUmVjdC5z
aXplKCkpOwpAQCAtMzg5LDYgKzM5MCw4IEBAIHZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjpkcmF3
VGlsZXMoY29uc3QKICAgICAgICAgICAgIGlmICghdGlsZSkKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKIAorICAgICAgICAgICAgQVNTRVJUKHRpbGUtPnRleHR1cmUoKS0+aXNSZXNlcnZlZCgp
KTsKKwogICAgICAgICAgICAgdGlsZS0+dGV4dHVyZSgpLT5iaW5kVGV4dHVyZSgpOwogCiAgICAg
ICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0aWxlTWF0cml4KGdsb2JhbFRyYW5zZm9ybSk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJT
dXJmYWNlQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDkw
MDc4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVy
U3VyZmFjZUNocm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTgsNiArOTgsMTMgQEAgYm9v
bCBSZW5kZXJTdXJmYWNlQ2hyb21pdW06OnByZXBhcmVDb250ZQogICAgIHJldHVybiB0cnVlOwog
fQogCit2b2lkIFJlbmRlclN1cmZhY2VDaHJvbWl1bTo6cmVsZWFzZUNvbnRlbnRzVGV4dHVyZSgp
Cit7CisgICAgaWYgKG1fc2tpcHNEcmF3IHx8ICFtX2NvbnRlbnRzVGV4dHVyZSkKKyAgICAgICAg
cmV0dXJuOworICAgIG1fY29udGVudHNUZXh0dXJlLT51bnJlc2VydmUoKTsKK30KKwogdm9pZCBS
ZW5kZXJTdXJmYWNlQ2hyb21pdW06OmRyYXdTdXJmYWNlKENDTGF5ZXJJbXBsKiBtYXNrTGF5ZXIs
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtKQogewogICAgIEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0M0QgPSBsYXllclJlbmRlcmVyKCktPmNvbnRleHQoKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZh
Y2VDaHJvbWl1bS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5oCShyZXZpc2lvbiA5MDA3OCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VD
aHJvbWl1bS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSw3IEBAIHB1YmxpYzoKICAgICB+
UmVuZGVyU3VyZmFjZUNocm9taXVtKCk7CiAKICAgICBib29sIHByZXBhcmVDb250ZW50c1RleHR1
cmUoKTsKKyAgICB2b2lkIHJlbGVhc2VDb250ZW50c1RleHR1cmUoKTsKICAgICB2b2lkIGNsZWFu
dXBSZXNvdXJjZXMoKTsKICAgICB2b2lkIGRyYXcoY29uc3QgSW50UmVjdCYgdGFyZ2V0U3VyZmFj
ZVJlY3QpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9UZXh0dXJlTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuY3BwCShyZXZpc2lvbiA5MDA3OCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5h
Z2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQsNiArODQsMTMgQEAgdm9pZCBUZXh0dXJlTWFu
YWdlcjo6cHJvdGVjdFRleHR1cmUoVGV4dAogICAgIG1fdGV4dHVyZXMuYWRkKHRva2VuLCBpbmZv
KTsKIH0KIAordm9pZCBUZXh0dXJlTWFuYWdlcjo6dW5wcm90ZWN0VGV4dHVyZShUZXh0dXJlVG9r
ZW4gdG9rZW4pCit7CisgICAgVGV4dHVyZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3RleHR1cmVzLmZp
bmQodG9rZW4pOworICAgIGlmIChpdCAhPSBtX3RleHR1cmVzLmVuZCgpKQorICAgICAgICBpdC0+
c2Vjb25kLmlzUHJvdGVjdGVkID0gZmFsc2U7Cit9CisKIHZvaWQgVGV4dHVyZU1hbmFnZXI6OnVu
cHJvdGVjdEFsbFRleHR1cmVzKCkKIHsKICAgICBmb3IgKFRleHR1cmVNYXA6Oml0ZXJhdG9yIGl0
ID0gbV90ZXh0dXJlcy5iZWdpbigpOyBpdCAhPSBtX3RleHR1cmVzLmVuZCgpOyArK2l0KQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFn
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9UZXh0dXJlTWFuYWdlci5oCShyZXZpc2lvbiA5MDA3OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTUyLDYgKzUyLDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIHJlcXVlc3RUZXh0dXJl
KFRleHR1cmVUb2tlbiwgSW50U2l6ZSwgdW5zaWduZWQgdGV4dHVyZUZvcm1hdCwgYm9vbCogbmV3
VGV4dHVyZSA9IDApOwogCiAgICAgdm9pZCBwcm90ZWN0VGV4dHVyZShUZXh0dXJlVG9rZW4pOwor
ICAgIHZvaWQgdW5wcm90ZWN0VGV4dHVyZShUZXh0dXJlVG9rZW4pOwogICAgIHZvaWQgdW5wcm90
ZWN0QWxsVGV4dHVyZXMoKTsKICAgICBib29sIGlzUHJvdGVjdGVkKFRleHR1cmVUb2tlbik7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>