<?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>89786</bug_id>
          
          <creation_ts>2012-06-22 14:38:44 -0700</creation_ts>
          <short_desc>[Chromium] RenderPass textures are evicted at the end of every frame</short_desc>
          <delta_ts>2012-06-25 11:50:00 -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>New Bugs</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>0</everconfirmed>
          <reporter>zlieber</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>danakj</cc>
    
    <cc>jamesr</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>655778</commentid>
    <comment_count>0</comment_count>
    <who name="">zlieber</who>
    <bug_when>2012-06-22 14:38:44 -0700</bug_when>
    <thetext>[Chromium] Some textures are evicted at the end of every frame</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655784</commentid>
    <comment_count>1</comment_count>
      <attachid>149107</attachid>
    <who name="">zlieber</who>
    <bug_when>2012-06-22 14:42:14 -0700</bug_when>
    <thetext>Created attachment 149107
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655867</commentid>
    <comment_count>2</comment_count>
      <attachid>149107</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-22 15:57:33 -0700</bug_when>
    <thetext>Comment on attachment 149107
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:-1196
&gt; -    m_implTextureManager-&gt;deleteEvictedTextures(m_implTextureAllocator.get());

So what is actually holding the render surface textures to the limit?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655877</commentid>
    <comment_count>3</comment_count>
      <attachid>149107</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-06-22 16:04:22 -0700</bug_when>
    <thetext>Comment on attachment 149107
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:-1196
&gt;&gt; -    m_implTextureManager-&gt;deleteEvictedTextures(m_implTextureAllocator.get());
&gt; 
&gt; So what is actually holding the render surface textures to the limit?

Hiliariously, I don&apos;t think we actually hold ourselves to the max limit at all during drawing, we evict but don&apos;t delete, and end up allocating and keeping all the surfaces in the frame until the frame is done.

The delete here would be good to drop us back to the max limit. To actually stay below it, we should be deleting evicted textures between every reserve() and allocate() on a managed texture in LRC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655915</commentid>
    <comment_count>4</comment_count>
    <who name="">zlieber</who>
    <bug_when>2012-06-22 16:32:03 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 149107 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=149107&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:-1196
&gt; &gt;&gt; -    m_implTextureManager-&gt;deleteEvictedTextures(m_implTextureAllocator.get());
&gt; &gt; 
&gt; &gt; So what is actually holding the render surface textures to the limit?
&gt; 
&gt; Hiliariously, I don&apos;t think we actually hold ourselves to the max limit at all during drawing, we evict but don&apos;t delete, and end up allocating and keeping all the surfaces in the frame until the frame is done.
&gt; 
&gt; The delete here would be good to drop us back to the max limit. To actually stay below it, we should be deleting evicted textures between every reserve() and allocate() on a managed texture in LRC.

Can evict and delete be one operation?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655919</commentid>
    <comment_count>5</comment_count>
      <attachid>149107</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-06-22 16:34:05 -0700</bug_when>
    <thetext>Comment on attachment 149107
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:-1196
&gt;&gt;&gt;&gt; -    m_implTextureManager-&gt;deleteEvictedTextures(m_implTextureAllocator.get());
&gt;&gt;&gt; 
&gt;&gt;&gt; So what is actually holding the render surface textures to the limit?
&gt;&gt; 
&gt;&gt; Hiliariously, I don&apos;t think we actually hold ourselves to the max limit at all during drawing, we evict but don&apos;t delete, and end up allocating and keeping all the surfaces in the frame until the frame is done.
&gt;&gt; 
&gt;&gt; The delete here would be good to drop us back to the max limit. To actually stay below it, we should be deleting evicted textures between every reserve() and allocate() on a managed texture in LRC.
&gt; 
&gt; Can evict and delete be one operation?

The TextureManager we&apos;re using right now is designed for cross-thread operation, really for a completely different use case. Evict is something done on the main thread so it doesn&apos;t actually do the delete (main thread can&apos;t access the GC3d).

reserve() causes the eviction, so you could call deleteEvictedTextures() after each reserve and that would have the effect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655957</commentid>
    <comment_count>6</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-06-22 17:31:40 -0700</bug_when>
    <thetext>We haven&apos;t been sticking to the max limit since I don&apos;t know when. Personally, I think we should just keep the delete in finishFrame and let the rest of the code be for now, and we&apos;ll fix it in a better way than adding more misuse of TextureManager.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656539</commentid>
    <comment_count>7</comment_count>
      <attachid>149286</attachid>
    <who name="">zlieber</who>
    <bug_when>2012-06-25 07:10:04 -0700</bug_when>
    <thetext>Created attachment 149286
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656658</commentid>
    <comment_count>8</comment_count>
      <attachid>149286</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-06-25 10:01:49 -0700</bug_when>
    <thetext>Comment on attachment 149286
Patch

R=me.  I totally agree that this is a temporary pathc, but I think both caching render surfaces and actually deleting them seems like a positive step.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656764</commentid>
    <comment_count>9</comment_count>
      <attachid>149286</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-25 11:49:55 -0700</bug_when>
    <thetext>Comment on attachment 149286
Patch

Clearing flags on attachment: 149286

Committed r121172: &lt;http://trac.webkit.org/changeset/121172&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656765</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-25 11:50:00 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149107</attachid>
            <date>2012-06-22 14:42:14 -0700</date>
            <delta_ts>2012-06-25 07:09:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89786-20120622174213.patch</filename>
            <type>text/plain</type>
            <size>12088</size>
            <attacher>zlieber</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwOTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWI1NWI4M2YzYzc2MmVk
NjBiNDc3NjU5NmZlYjU0OGViNDI3ODlkMC4uNjcyZDNhNDk5MGIzODE4MThlNGIxNzc5NDEzY2U5
OTQ2NDExNzkxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTA2LTIyICBaZWV2
IExpZWJlciAgPHpsaWViZXJAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gU29t
ZSB0ZXh0dXJlcyBhcmUgZXZpY3RlZCBhdCB0aGUgZW5kIG9mIGV2ZXJ5IGZyYW1lCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTc4NgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZWQgY2FsbHMgdG8g
VGV4dHVyZU1hbmFnZXI6OnJlZHVjZU1lbW9yeVRvTGltaXQgaW5zaWRlCisgICAgICAgIGZpbmlz
aERyYXdpbmdGcmFtZSgpIG1ldGhvZC4KKworICAgICAgICBBZGRlZCB1bml0IHRlc3RzIHRvIHZl
cmlmeSBuZXcgYmVoYXZpb3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpmaW5pc2hEcmF3aW5nRnJhbWUpOgorCiAyMDEyLTA2LTIwICBIYW5zIFdl
bm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgU3BlZWNoIEphdmFTY3JpcHQg
QVBJOiBTcGVlY2hSZWNvZ25pdGlvbiBzaG91bGQgaG9vayB1cCB3aXRoIEFjdGl2ZURPTU9iamVj
dCBtb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGY3NTU2YWNjYzAxZjY4YWNkOGU1
NWZkNGZmODhkYWJjZDY1NWNmYjEuLmE4NzNmZWE1ZGYwOWE2OTJlOWZmODY5MDBlN2ZhYTU2Y2Y5
MGZmNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTIt
MDYtMjIgIFplZXYgTGllYmVyICA8emxpZWJlckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0No
cm9taXVtXSBTb21lIHRleHR1cmVzIGFyZSBldmljdGVkIGF0IHRoZSBlbmQgb2YgZXZlcnkgZnJh
bWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5Nzg2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQg
dW5pdCB0ZXN0cyB0byB2ZXJpZnkgbGFyZ2UgdGV4dHVyZXMgYXJlIHN0YXlpbmcgaW4gbWVtb3J5
CisgICAgICAgIGFuZCBhdmFpbGFibGUgZm9yIHJlbmRlciBwYXNzIG9wdGltaXphdGlvbi4KKwor
ICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcDoKKwogMjAxMi0wNi0y
MCAgWmVldiBMaWViZXIgIDx6bGllYmVyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21p
dW1dIERhbWFnZSB0cmFja2VyIGlzIG5vdCB1c2VkIHdpdGhvdXQgcGFydGlhbCBzd2FwLCBjYXVz
aW5nIHZhbGlkIHJlbmRlciBwYXNzZXMgdG8gYmUgcmVtb3ZlZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVt
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVu
ZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXggYjZjYTY3NDQ1N2Y4ZDAzYzk3NjY2NzY5MDNiZmVjNTcz
ZDNhM2ViYi4uOWRhMTc0ZjNlMDNiYTQxZTI5NjE3NDJlMzIwOWM4N2NkZDA4ODE1YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCkBAIC0xMTg3LDEzICsxMTg3LDYgQEAg
dm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmZpbmlzaERyYXdpbmdGcmFtZSgpCiAgICAgR0xD
KG1fY29udGV4dCwgbV9jb250ZXh0LT5kaXNhYmxlKEdyYXBoaWNzQ29udGV4dDNEOjpCTEVORCkp
OwogCiAgICAgbV9pbXBsVGV4dHVyZU1hbmFnZXItPnVucHJvdGVjdEFsbFRleHR1cmVzKCk7Ci0K
LSAgICBzaXplX3QgY29udGVudHNNZW1vcnlVc2VCeXRlcyA9IG1fY29udGVudHNUZXh0dXJlQWxs
b2NhdG9yLT5jdXJyZW50TWVtb3J5VXNlQnl0ZXMoKTsKLSAgICBzaXplX3QgcmVjbGFpbUxpbWl0
ID0gVGV4dHVyZU1hbmFnZXI6OnJlY2xhaW1MaW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSgpKTsKLSAg
ICBzaXplX3QgcHJlZmVycmVkTGltaXQgPSByZWNsYWltTGltaXQgPiBjb250ZW50c01lbW9yeVVz
ZUJ5dGVzID8gcmVjbGFpbUxpbWl0IC0gY29udGVudHNNZW1vcnlVc2VCeXRlcyA6IDA7Ci0gICAg
bV9pbXBsVGV4dHVyZU1hbmFnZXItPnNldFByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMocHJlZmVy
cmVkTGltaXQpOwotICAgIG1faW1wbFRleHR1cmVNYW5hZ2VyLT5yZWR1Y2VNZW1vcnlUb0xpbWl0
KHByZWZlcnJlZExpbWl0KTsKLSAgICBtX2ltcGxUZXh0dXJlTWFuYWdlci0+ZGVsZXRlRXZpY3Rl
ZFRleHR1cmVzKG1faW1wbFRleHR1cmVBbGxvY2F0b3IuZ2V0KCkpOwogfQogCiB2b2lkIExheWVy
UmVuZGVyZXJDaHJvbWl1bTo6dG9HTE1hdHJpeChmbG9hdCogZmxhdHRlbmVkLCBjb25zdCBXZWJU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKaW5kZXggNDk1MzZiYjQ4NzQ0
NDVmMDg1ODE0ZjhhMDg4MDI1ZDg5ODljZGMyOS4uY2E2NGI5NTNlOTI4MzNiZDFlMDUzOWYxM2M3
MDU1ZWY5N2YzMmQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKQEAgLTE4MDUsNiArMTgwNSwxMyBAQCBw
dWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gV2ViU3RyaW5nKCJHTF9DSFJPTUlVTV9wb3N0
X3N1Yl9idWZmZXIiKTsKICAgICB9CisKKyAgICAvLyBVbmxpbWl0ZWQgdGV4dHVyZSBzaXplLgor
ICAgIHZpcnR1YWwgdm9pZCBnZXRJbnRlZ2VydihXR0MzRGVudW0gcG5hbWUsIFdHQzNEaW50KiB2
YWx1ZSkKKyAgICB7CisgICAgICAgIGlmIChwbmFtZSA9PSBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6TUFYX1RFWFRVUkVfU0laRSkKKyAgICAgICAgICAgICp2YWx1ZSA9IDgxOTI7CisgICAg
fQogfTsKIAogc3RhdGljIFBhc3NPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gc2V0dXBMYXll
cnNGb3JPcGFjaXR5KGJvb2wgcGFydGlhbFN3YXAsIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQq
IGNsaWVudCkKQEAgLTI0MTAsMjEgKzI0MTcsMjEgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdElt
cGxUZXN0LCBoYXNUcmFuc3BhcmVudEJhY2tncm91bmQpCiAgICAgTW9jazo6VmVyaWZ5QW5kQ2xl
YXJFeHBlY3RhdGlvbnMoJm1vY2tDb250ZXh0KTsKIH0KIAotc3RhdGljIHZvaWQgc2V0dXBMYXll
cnNGb3JUZXh0dXJlQ2FjaGluZyhDQ0xheWVyVHJlZUhvc3RJbXBsKiBsYXllclRyZWVIb3N0SW1w
bCwgQ0NMYXllckltcGwqJiByb290UHRyLCBDQ0xheWVySW1wbComIGludGVybWVkaWF0ZUxheWVy
UHRyLCBDQ0xheWVySW1wbComIHN1cmZhY2VMYXllclB0ciwgQ0NMYXllckltcGwqJiBjaGlsZFB0
cikKK3N0YXRpYyB2b2lkIHNldHVwTGF5ZXJzRm9yVGV4dHVyZUNhY2hpbmcoQ0NMYXllclRyZWVI
b3N0SW1wbCogbGF5ZXJUcmVlSG9zdEltcGwsIENDTGF5ZXJJbXBsKiYgcm9vdFB0ciwgQ0NMYXll
ckltcGwqJiBpbnRlcm1lZGlhdGVMYXllclB0ciwgQ0NMYXllckltcGwqJiBzdXJmYWNlTGF5ZXJQ
dHIsIENDTGF5ZXJJbXBsKiYgY2hpbGRQdHIsIGNvbnN0IEludFNpemUmIHJvb3RTaXplKQogewog
ICAgIFJlZlB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY29udGV4dCA9IENDR3JhcGhpY3NDb250ZXh0
OjpjcmVhdGUzRChHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4
dEZyb21XZWJDb250ZXh0KGFkb3B0UHRyKG5ldyBQYXJ0aWFsU3dhcENvbnRleHQoKSksIEdyYXBo
aWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdykpOwogCiAgICAgbGF5ZXJU
cmVlSG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQucmVsZWFzZSgpLCBV
bnRocm90dGxlZFVwbG9hZGVyKTsKLSAgICBsYXllclRyZWVIb3N0SW1wbC0+c2V0Vmlld3BvcnRT
aXplKEludFNpemUoMTAwLCAxMDApKTsKKyAgICBsYXllclRyZWVIb3N0SW1wbC0+c2V0Vmlld3Bv
cnRTaXplKHJvb3RTaXplKTsKIAogICAgIE93blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IENDTGF5
ZXJJbXBsOjpjcmVhdGUoMSk7CiAgICAgcm9vdFB0ciA9IHJvb3QuZ2V0KCk7CiAKICAgICByb290
LT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50KDAsIDApKTsKICAgICByb290LT5zZXRQb3NpdGlv
bihGbG9hdFBvaW50KDAsIDApKTsKLSAgICByb290LT5zZXRCb3VuZHMoSW50U2l6ZSgxMDAsIDEw
MCkpOwotICAgIHJvb3QtPnNldENvbnRlbnRCb3VuZHMoSW50U2l6ZSgxMDAsIDEwMCkpOwotICAg
IHJvb3QtPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpOworICAg
IHJvb3QtPnNldEJvdW5kcyhyb290U2l6ZSk7CisgICAgcm9vdC0+c2V0Q29udGVudEJvdW5kcyhy
b290U2l6ZSk7CisgICAgcm9vdC0+c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KEludFBvaW50
KDAsIDApLCByb290U2l6ZSkpOwogICAgIHJvb3QtPnNldERyYXdzQ29udGVudCh0cnVlKTsKICAg
ICBsYXllclRyZWVIb3N0SW1wbC0+c2V0Um9vdExheWVyKHJvb3QucmVsZWFzZSgpKTsKIApAQCAt
MjQzNCw5ICsyNDQxLDkgQEAgc3RhdGljIHZvaWQgc2V0dXBMYXllcnNGb3JUZXh0dXJlQ2FjaGlu
ZyhDQ0xheWVyVHJlZUhvc3RJbXBsKiBsYXllclRyZWVIb3N0SW1wbCwKIAogICAgIGludGVybWVk
aWF0ZUxheWVyUHRyLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50KDAsIDApKTsKICAgICBpbnRl
cm1lZGlhdGVMYXllclB0ci0+c2V0UG9zaXRpb24oRmxvYXRQb2ludCgxMCwgMTApKTsKLSAgICBp
bnRlcm1lZGlhdGVMYXllclB0ci0+c2V0Qm91bmRzKEludFNpemUoMTAwLCAxMDApKTsKLSAgICBp
bnRlcm1lZGlhdGVMYXllclB0ci0+c2V0Q29udGVudEJvdW5kcyhJbnRTaXplKDEwMCwgMTAwKSk7
Ci0gICAgaW50ZXJtZWRpYXRlTGF5ZXJQdHItPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdCgw
LCAwLCAxMDAsIDEwMCkpOworICAgIGludGVybWVkaWF0ZUxheWVyUHRyLT5zZXRCb3VuZHMocm9v
dFNpemUpOworICAgIGludGVybWVkaWF0ZUxheWVyUHRyLT5zZXRDb250ZW50Qm91bmRzKHJvb3RT
aXplKTsKKyAgICBpbnRlcm1lZGlhdGVMYXllclB0ci0+c2V0VmlzaWJsZUxheWVyUmVjdChJbnRS
ZWN0KEludFBvaW50KDAsIDApLCByb290U2l6ZSkpOwogICAgIGludGVybWVkaWF0ZUxheWVyUHRy
LT5zZXREcmF3c0NvbnRlbnQoZmFsc2UpOyAvLyBvbmx5IGNoaWxkcmVuIGRyYXcgY29udGVudAog
ICAgIHJvb3RQdHItPmFkZENoaWxkKGludGVybWVkaWF0ZUxheWVyLnJlbGVhc2UoKSk7CiAKQEAg
LTI0NDUsMTEgKzI0NTIsMTIgQEAgc3RhdGljIHZvaWQgc2V0dXBMYXllcnNGb3JUZXh0dXJlQ2Fj
aGluZyhDQ0xheWVyVHJlZUhvc3RJbXBsKiBsYXllclRyZWVIb3N0SW1wbCwKIAogICAgIC8vIFN1
cmZhY2UgbGF5ZXIgaXMgdGhlIGxheWVyIHRoYXQgY2hhbmdlcyBpdHMgb3BhY2l0eQogICAgIC8v
IEl0IHdpbGwgY29udGFpbiBvdGhlciBsYXllcnMgdGhhdCBkcmF3IGNvbnRlbnQuCisgICAgSW50
U2l6ZSBzdXJmYWNlU2l6ZShyb290U2l6ZS53aWR0aCgpLCByb290U2l6ZS5oZWlnaHQoKSk7CiAg
ICAgc3VyZmFjZUxheWVyUHRyLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50KDAsIDApKTsKICAg
ICBzdXJmYWNlTGF5ZXJQdHItPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQoMTAsIDEwKSk7Ci0gICAg
c3VyZmFjZUxheWVyUHRyLT5zZXRCb3VuZHMoSW50U2l6ZSg1MCwgNTApKTsKLSAgICBzdXJmYWNl
TGF5ZXJQdHItPnNldENvbnRlbnRCb3VuZHMoSW50U2l6ZSg1MCwgNTApKTsKLSAgICBzdXJmYWNl
TGF5ZXJQdHItPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdCgwLCAwLCA1MCwgNTApKTsKKyAg
ICBzdXJmYWNlTGF5ZXJQdHItPnNldEJvdW5kcyhzdXJmYWNlU2l6ZSk7CisgICAgc3VyZmFjZUxh
eWVyUHRyLT5zZXRDb250ZW50Qm91bmRzKHN1cmZhY2VTaXplKTsKKyAgICBzdXJmYWNlTGF5ZXJQ
dHItPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdChJbnRQb2ludCgwLCAwKSwgc3VyZmFjZVNp
emUpKTsKICAgICBzdXJmYWNlTGF5ZXJQdHItPnNldERyYXdzQ29udGVudChmYWxzZSk7IC8vIG9u
bHkgY2hpbGRyZW4gZHJhdyBjb250ZW50CiAgICAgc3VyZmFjZUxheWVyUHRyLT5zZXRPcGFjaXR5
KDAuNWYpOyAvLyBUaGlzIHdpbGwgY2F1c2UgaXQgdG8gaGF2ZSBhIHN1cmZhY2UKICAgICBpbnRl
cm1lZGlhdGVMYXllclB0ci0+YWRkQ2hpbGQoc3VyZmFjZUxheWVyLnJlbGVhc2UoKSk7CkBAIC0y
NDU4LDExICsyNDY2LDEyIEBAIHN0YXRpYyB2b2lkIHNldHVwTGF5ZXJzRm9yVGV4dHVyZUNhY2hp
bmcoQ0NMYXllclRyZWVIb3N0SW1wbCogbGF5ZXJUcmVlSG9zdEltcGwsCiAgICAgT3duUHRyPEZh
a2VMYXllcldpdGhRdWFkcz4gY2hpbGQgPSBGYWtlTGF5ZXJXaXRoUXVhZHM6OmNyZWF0ZSg0KTsK
ICAgICBjaGlsZFB0ciA9IGNoaWxkLmdldCgpOwogCisgICAgSW50U2l6ZSBjaGlsZFNpemUocm9v
dFNpemUud2lkdGgoKSwgcm9vdFNpemUuaGVpZ2h0KCkpOwogICAgIGNoaWxkUHRyLT5zZXRBbmNo
b3JQb2ludChGbG9hdFBvaW50KDAsIDApKTsKICAgICBjaGlsZFB0ci0+c2V0UG9zaXRpb24oRmxv
YXRQb2ludCg1LCA1KSk7Ci0gICAgY2hpbGRQdHItPnNldEJvdW5kcyhJbnRTaXplKDEwLCAxMCkp
OwotICAgIGNoaWxkUHRyLT5zZXRDb250ZW50Qm91bmRzKEludFNpemUoMTAsIDEwKSk7Ci0gICAg
Y2hpbGRQdHItPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdCgwLCAwLCAxMCwgMTApKTsKKyAg
ICBjaGlsZFB0ci0+c2V0Qm91bmRzKGNoaWxkU2l6ZSk7CisgICAgY2hpbGRQdHItPnNldENvbnRl
bnRCb3VuZHMoY2hpbGRTaXplKTsKKyAgICBjaGlsZFB0ci0+c2V0VmlzaWJsZUxheWVyUmVjdChJ
bnRSZWN0KEludFBvaW50KDAsIDApLCBjaGlsZFNpemUpKTsKICAgICBjaGlsZFB0ci0+c2V0RHJh
d3NDb250ZW50KHRydWUpOwogCiAgICAgc3VyZmFjZUxheWVyUHRyLT5hZGRDaGlsZChjaGlsZC5y
ZWxlYXNlKCkpOwpAQCAtMjQ4MCw3ICsyNDg5LDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdElt
cGxUZXN0LCBzdXJmYWNlVGV4dHVyZUNhY2hpbmcpCiAgICAgQ0NMYXllckltcGwqIHN1cmZhY2VM
YXllclB0cjsKICAgICBDQ0xheWVySW1wbCogY2hpbGRQdHI7CiAKLSAgICBzZXR1cExheWVyc0Zv
clRleHR1cmVDYWNoaW5nKG15SG9zdEltcGwuZ2V0KCksIHJvb3RQdHIsIGludGVybWVkaWF0ZUxh
eWVyUHRyLCBzdXJmYWNlTGF5ZXJQdHIsIGNoaWxkUHRyKTsKKyAgICBzZXR1cExheWVyc0ZvclRl
eHR1cmVDYWNoaW5nKG15SG9zdEltcGwuZ2V0KCksIHJvb3RQdHIsIGludGVybWVkaWF0ZUxheWVy
UHRyLCBzdXJmYWNlTGF5ZXJQdHIsIGNoaWxkUHRyLCBJbnRTaXplKDEwMCwgMTAwKSk7CiAKICAg
ICB7CiAgICAgICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6OkZyYW1lRGF0YSBmcmFtZTsKQEAgLTI2
MzcsNyArMjY0Niw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgc3VyZmFjZVRl
eHR1cmVDYWNoaW5nTm9QYXJ0aWFsU3dhcCkKICAgICBDQ0xheWVySW1wbCogc3VyZmFjZUxheWVy
UHRyOwogICAgIENDTGF5ZXJJbXBsKiBjaGlsZFB0cjsKIAotICAgIHNldHVwTGF5ZXJzRm9yVGV4
dHVyZUNhY2hpbmcobXlIb3N0SW1wbC5nZXQoKSwgcm9vdFB0ciwgaW50ZXJtZWRpYXRlTGF5ZXJQ
dHIsIHN1cmZhY2VMYXllclB0ciwgY2hpbGRQdHIpOworICAgIHNldHVwTGF5ZXJzRm9yVGV4dHVy
ZUNhY2hpbmcobXlIb3N0SW1wbC5nZXQoKSwgcm9vdFB0ciwgaW50ZXJtZWRpYXRlTGF5ZXJQdHIs
IHN1cmZhY2VMYXllclB0ciwgY2hpbGRQdHIsIEludFNpemUoMTAwLCAxMDApKTsKIAogICAgIHsK
ICAgICAgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVEYXRhIGZyYW1lOwpAQCAtMjc4NCw2
ICsyNzkzLDgwIEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgc3VyZmFjZVRleHR1
cmVDYWNoaW5nTm9QYXJ0aWFsU3dhcCkKICAgICB9CiB9CiAKKy8vIEZJWE1FOiBUaGlzIHRlc3Qg
aXMgdGVtcG9yYXJ5IHVudGlsIG1lbW9yeSBtYW5hZ2VtZW50IGluIHJlbmRlciBzdXJmYWNlcyBn
ZXRzIHJlZmFjdG9yZWQuCisvLyBJdCBkZXBlbmRzIG9uIGltcGxlbWVudGF0aW9uIG9mIFRleHR1
cmVNYW5hZ2VyIGFuZCBuZWVkcyB0byBnZXQgcmVtb3ZlZCBhcworLy8gaXQgd2lsbCBiZWNvbWUg
bWVhbmluZ2xlc3Mgd2l0aCBhIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbi4KK1RFU1RfRihDQ0xh
eWVyVHJlZUhvc3RJbXBsVGVzdCwgc3VyZmFjZVRleHR1cmVDYWNoaW5nTWVtb3J5TGltaXQpCit7
CisgICAgQ0NTZXR0aW5nczo6c2V0UGFydGlhbFN3YXBFbmFibGVkKHRydWUpOworCisgICAgQ0NM
YXllclRyZWVTZXR0aW5ncyBzZXR0aW5nczsKKyAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1w
bD4gbXlIb3N0SW1wbCA9IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZShzZXR0aW5ncywgdGhp
cyk7CisKKyAgICBDQ0xheWVySW1wbCogcm9vdFB0cjsKKyAgICBDQ0xheWVySW1wbCogaW50ZXJt
ZWRpYXRlTGF5ZXJQdHI7CisgICAgQ0NMYXllckltcGwqIHN1cmZhY2VMYXllclB0cjsKKyAgICBD
Q0xheWVySW1wbCogY2hpbGRQdHI7CisKKyAgICAvLyBGSVhNRTogVGhlIG51bWJlciA0MjAwIGlz
IHRoZSAibWFnaWMiIG51bWJlciB3aGljaCB3aWxsIGNhdXNlIHJlbmRlciBzdXJmYWNlIHNpemUK
KyAgICAvLyB0byBnbyBhYm92ZSA2NE0uIFRoaXMgd2lsbCBicmluZyBpdCBhYm92ZSByZWNsYWlt
TGltaXRCeXRlcygpLgorICAgIC8vIFdlIGNvdWxkIGNvbXB1dGUgdGhpcyBudW1iZXIgZnJvbSBy
ZXR1cm4gdmFsdWUgb2YgcmVjbGFpbUxpbWl0Qnl0ZXMoKSwgaG93ZXZlcgorICAgIC8vIGl0IHRh
a2VzIGEgdmlld3BvcnQsIHNvIGl0J3Mgbm8gYmV0dGVyIGFzIGl0IHN0aWxsIGNvbnRhaW5zIHNh
bWUga2luZCBvZiBhc3N1bXB0aW9uCisgICAgLy8gKG5hbWVseSB0aGF0IHJlY2xhaW1MaW1pdEJ5
dGVzKCkgaWdub3JlcyB2aWV3cG9ydCBzaXplKS4KKyAgICBJbnRTaXplIGxhcmdlU3VyZmFjZVNp
emUoNDIwMCwgNDIwMCk7CisgICAgc2V0dXBMYXllcnNGb3JUZXh0dXJlQ2FjaGluZyhteUhvc3RJ
bXBsLmdldCgpLCByb290UHRyLCBpbnRlcm1lZGlhdGVMYXllclB0ciwgc3VyZmFjZUxheWVyUHRy
LCBjaGlsZFB0ciwgbGFyZ2VTdXJmYWNlU2l6ZSk7CisKKyAgICB7CisgICAgICAgIENDTGF5ZXJU
cmVlSG9zdEltcGw6OkZyYW1lRGF0YSBmcmFtZTsKKyAgICAgICAgRVhQRUNUX1RSVUUobXlIb3N0
SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworCisgICAgICAgIC8vIE11c3QgcmVjZWl2ZSB0
d28gcmVuZGVyIHBhc3NlcywgZWFjaCB3aXRoIG9uZSBxdWFkCisgICAgICAgIEFTU0VSVF9FUSgy
VSwgZnJhbWUucmVuZGVyUGFzc2VzLnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxVSwgZnJh
bWUucmVuZGVyUGFzc2VzWzBdLT5xdWFkTGlzdCgpLnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9F
USgxVSwgZnJhbWUucmVuZGVyUGFzc2VzWzFdLT5xdWFkTGlzdCgpLnNpemUoKSk7CisKKyAgICAg
ICAgRVhQRUNUX0VRKENDRHJhd1F1YWQ6OlJlbmRlclBhc3MsIGZyYW1lLnJlbmRlclBhc3Nlc1sx
XS0+cXVhZExpc3QoKVswXS0+bWF0ZXJpYWwoKSk7CisgICAgICAgIENDUmVuZGVyUGFzc0RyYXdR
dWFkKiBxdWFkID0gc3RhdGljX2Nhc3Q8Q0NSZW5kZXJQYXNzRHJhd1F1YWQqPihmcmFtZS5yZW5k
ZXJQYXNzZXNbMV0tPnF1YWRMaXN0KClbMF0uZ2V0KCkpOworICAgICAgICBFWFBFQ1RfVFJVRShx
dWFkLT5yZW5kZXJQYXNzKCktPnRhcmdldFN1cmZhY2UoKS0+Y29udGVudHNDaGFuZ2VkKCkpOwor
CisgICAgICAgIG15SG9zdEltcGwtPmRyYXdMYXllcnMoZnJhbWUpOworICAgICAgICBteUhvc3RJ
bXBsLT5kaWREcmF3QWxsTGF5ZXJzKGZyYW1lKTsKKyAgICB9CisKKyAgICAvLyBEcmF3IHdpdGhv
dXQgYW55IGNoYW5nZQorICAgIHsKKyAgICAgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVE
YXRhIGZyYW1lOworICAgICAgICBFWFBFQ1RfVFJVRShteUhvc3RJbXBsLT5wcmVwYXJlVG9EcmF3
KGZyYW1lKSk7CisKKyAgICAgICAgLy8gTXVzdCByZWNlaXZlIHR3byBFTVBUWSByZW5kZXIgcGFz
c2VzCisgICAgICAgIEFTU0VSVF9FUSgyVSwgZnJhbWUucmVuZGVyUGFzc2VzLnNpemUoKSk7Cisg
ICAgICAgIEVYUEVDVF9FUSgwVSwgZnJhbWUucmVuZGVyUGFzc2VzWzBdLT5xdWFkTGlzdCgpLnNp
emUoKSk7CisgICAgICAgIEVYUEVDVF9FUSgwVSwgZnJhbWUucmVuZGVyUGFzc2VzWzFdLT5xdWFk
TGlzdCgpLnNpemUoKSk7CisKKyAgICAgICAgbXlIb3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7
CisgICAgICAgIG15SG9zdEltcGwtPmRpZERyYXdBbGxMYXllcnMoZnJhbWUpOworICAgIH0KKwor
ICAgIC8vIENoYW5nZSBvcGFjaXR5IGFuZCBkcmF3LgorICAgIC8vIElmIGFsbCBnb2VzIHdlbGws
IHRoZSB0ZXh0dXJlIG11c3Qgc3RpbGwgYmUgYXZhaWxhYmxlLCBldmVuIHRob3VnaCBpdCdzIHJl
YWxseSBiaWcuCisgICAgc3VyZmFjZUxheWVyUHRyLT5zZXRPcGFjaXR5KDAuNmYpOworICAgIHsK
KyAgICAgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVEYXRhIGZyYW1lOworICAgICAgICBF
WFBFQ1RfVFJVRShteUhvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CisKKyAgICAgICAg
Ly8gTXVzdCByZWNlaXZlIG9uZSByZW5kZXIgcGFzcywgYXMgdGhlIG90aGVyIG9uZSBzaG91bGQg
YmUgY3VsbGVkCisgICAgICAgIEFTU0VSVF9FUSgxVSwgZnJhbWUucmVuZGVyUGFzc2VzLnNpemUo
KSk7CisKKyAgICAgICAgRVhQRUNUX0VRKDFVLCBmcmFtZS5yZW5kZXJQYXNzZXNbMF0tPnF1YWRM
aXN0KCkuc2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKENDRHJhd1F1YWQ6OlJlbmRlclBhc3Ms
IGZyYW1lLnJlbmRlclBhc3Nlc1swXS0+cXVhZExpc3QoKVswXS0+bWF0ZXJpYWwoKSk7CisgICAg
ICAgIENDUmVuZGVyUGFzc0RyYXdRdWFkKiBxdWFkID0gc3RhdGljX2Nhc3Q8Q0NSZW5kZXJQYXNz
RHJhd1F1YWQqPihmcmFtZS5yZW5kZXJQYXNzZXNbMF0tPnF1YWRMaXN0KClbMF0uZ2V0KCkpOwor
ICAgICAgICBFWFBFQ1RfRkFMU0UocXVhZC0+cmVuZGVyUGFzcygpLT50YXJnZXRTdXJmYWNlKCkt
PmNvbnRlbnRzQ2hhbmdlZCgpKTsKKworICAgICAgICBteUhvc3RJbXBsLT5kcmF3TGF5ZXJzKGZy
YW1lKTsKKyAgICAgICAgbXlIb3N0SW1wbC0+ZGlkRHJhd0FsbExheWVycyhmcmFtZSk7CisgICAg
fQorfQorCiBzdHJ1Y3QgUmVuZGVyUGFzc0NhY2hlRW50cnkgewogICAgIG11dGFibGUgT3duUHRy
PENDUmVuZGVyUGFzcz4gcmVuZGVyUGFzc1B0cjsKICAgICBDQ1JlbmRlclBhc3MqIHJlbmRlclBh
c3M7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149286</attachid>
            <date>2012-06-25 07:10:04 -0700</date>
            <delta_ts>2012-06-25 11:49:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89786-20120625101004.patch</filename>
            <type>text/plain</type>
            <size>12008</size>
            <attacher>zlieber</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwOTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWI1NWI4M2YzYzc2MmVk
NjBiNDc3NjU5NmZlYjU0OGViNDI3ODlkMC4uY2EwMGZmODk5NmJmYjI2NzQyMzI3OTY2ODJlMWQ4
NTQyNTA5M2EwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTA2LTIyICBaZWV2
IExpZWJlciAgPHpsaWViZXJAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gUmVu
ZGVyUGFzcyB0ZXh0dXJlcyBhcmUgZXZpY3RlZCBhdCB0aGUgZW5kIG9mIGV2ZXJ5IGZyYW1lCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTc4NgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZWQgY2Fs
bHMgdG8gVGV4dHVyZU1hbmFnZXI6OnJlZHVjZU1lbW9yeVRvTGltaXQgaW5zaWRlCisgICAgICAg
IGZpbmlzaERyYXdpbmdGcmFtZSgpIG1ldGhvZC4KKworICAgICAgICBBZGRlZCB1bml0IHRlc3Rz
IHRvIHZlcmlmeSBuZXcgYmVoYXZpb3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJSZW5kZXJlckNocm9taXVtOjpmaW5pc2hEcmF3aW5nRnJhbWUpOgorCiAyMDEyLTA2LTIwICBI
YW5zIFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgU3BlZWNoIEphdmFT
Y3JpcHQgQVBJOiBTcGVlY2hSZWNvZ25pdGlvbiBzaG91bGQgaG9vayB1cCB3aXRoIEFjdGl2ZURP
TU9iamVjdCBtb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGY3NTU2YWNjYzAxZjY4
YWNkOGU1NWZkNGZmODhkYWJjZDY1NWNmYjEuLmZiYWM5MzI0ZWE3YzBmOWE0YmU1ZDc4ZDgxZjg4
ODAwODcyZTQ2NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTItMDYtMjIgIFplZXYgTGllYmVyICA8emxpZWJlckBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgW0Nocm9taXVtXSBSZW5kZXJQYXNzIHRleHR1cmVzIGFyZSBldmljdGVkIGF0IHRoZSBlbmQg
b2YgZXZlcnkgZnJhbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTg5Nzg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkZWQgdW5pdCB0ZXN0cyB0byB2ZXJpZnkgbGFyZ2UgdGV4dHVyZXMgYXJlIHN0YXlp
bmcgaW4gbWVtb3J5CisgICAgICAgIGFuZCBhdmFpbGFibGUgZm9yIHJlbmRlciBwYXNzIG9wdGlt
aXphdGlvbi4KKworICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcDoK
KwogMjAxMi0wNi0yMCAgWmVldiBMaWViZXIgIDx6bGllYmVyQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBbQ2hyb21pdW1dIERhbWFnZSB0cmFja2VyIGlzIG5vdCB1c2VkIHdpdGhvdXQgcGFydGlh
bCBzd2FwLCBjYXVzaW5nIHZhbGlkIHJlbmRlciBwYXNzZXMgdG8gYmUgcmVtb3ZlZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXggYjZjYTY3NDQ1N2Y4ZDAzYzk3NjY2
NzY5MDNiZmVjNTczZDNhM2ViYi4uZWVlMmQ0YTNiNDA5NDRlN2IyMTU4NjdiZDQ0ODY5ZDNmYjY4
YTEyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCkBAIC0xMTg3LDEy
ICsxMTg3LDYgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmZpbmlzaERyYXdpbmdGcmFt
ZSgpCiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5kaXNhYmxlKEdyYXBoaWNzQ29udGV4
dDNEOjpCTEVORCkpOwogCiAgICAgbV9pbXBsVGV4dHVyZU1hbmFnZXItPnVucHJvdGVjdEFsbFRl
eHR1cmVzKCk7Ci0KLSAgICBzaXplX3QgY29udGVudHNNZW1vcnlVc2VCeXRlcyA9IG1fY29udGVu
dHNUZXh0dXJlQWxsb2NhdG9yLT5jdXJyZW50TWVtb3J5VXNlQnl0ZXMoKTsKLSAgICBzaXplX3Qg
cmVjbGFpbUxpbWl0ID0gVGV4dHVyZU1hbmFnZXI6OnJlY2xhaW1MaW1pdEJ5dGVzKHZpZXdwb3J0
U2l6ZSgpKTsKLSAgICBzaXplX3QgcHJlZmVycmVkTGltaXQgPSByZWNsYWltTGltaXQgPiBjb250
ZW50c01lbW9yeVVzZUJ5dGVzID8gcmVjbGFpbUxpbWl0IC0gY29udGVudHNNZW1vcnlVc2VCeXRl
cyA6IDA7Ci0gICAgbV9pbXBsVGV4dHVyZU1hbmFnZXItPnNldFByZWZlcnJlZE1lbW9yeUxpbWl0
Qnl0ZXMocHJlZmVycmVkTGltaXQpOwotICAgIG1faW1wbFRleHR1cmVNYW5hZ2VyLT5yZWR1Y2VN
ZW1vcnlUb0xpbWl0KHByZWZlcnJlZExpbWl0KTsKICAgICBtX2ltcGxUZXh0dXJlTWFuYWdlci0+
ZGVsZXRlRXZpY3RlZFRleHR1cmVzKG1faW1wbFRleHR1cmVBbGxvY2F0b3IuZ2V0KCkpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9z
dEltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVI
b3N0SW1wbFRlc3QuY3BwCmluZGV4IDQ5NTM2YmI0ODc0NDQ1ZjA4NTgxNGY4YTA4ODAyNWQ4OTg5
Y2RjMjkuLmNhNjRiOTUzZTkyODMzYmQxZTA1MzlmMTNjNzA1NWVmOTdmMzJkNTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1w
bFRlc3QuY3BwCkBAIC0xODA1LDYgKzE4MDUsMTMgQEAgcHVibGljOgogICAgIHsKICAgICAgICAg
cmV0dXJuIFdlYlN0cmluZygiR0xfQ0hST01JVU1fcG9zdF9zdWJfYnVmZmVyIik7CiAgICAgfQor
CisgICAgLy8gVW5saW1pdGVkIHRleHR1cmUgc2l6ZS4KKyAgICB2aXJ0dWFsIHZvaWQgZ2V0SW50
ZWdlcnYoV0dDM0RlbnVtIHBuYW1lLCBXR0MzRGludCogdmFsdWUpCisgICAgeworICAgICAgICBp
ZiAocG5hbWUgPT0gV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Ok1BWF9URVhUVVJFX1NJWkUp
CisgICAgICAgICAgICAqdmFsdWUgPSA4MTkyOworICAgIH0KIH07CiAKIHN0YXRpYyBQYXNzT3du
UHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IHNldHVwTGF5ZXJzRm9yT3BhY2l0eShib29sIHBhcnRp
YWxTd2FwLCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50KiBjbGllbnQpCkBAIC0yNDEwLDIxICsy
NDE3LDIxIEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgaGFzVHJhbnNwYXJlbnRC
YWNrZ3JvdW5kKQogICAgIE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtb2NrQ29u
dGV4dCk7CiB9CiAKLXN0YXRpYyB2b2lkIHNldHVwTGF5ZXJzRm9yVGV4dHVyZUNhY2hpbmcoQ0NM
YXllclRyZWVIb3N0SW1wbCogbGF5ZXJUcmVlSG9zdEltcGwsIENDTGF5ZXJJbXBsKiYgcm9vdFB0
ciwgQ0NMYXllckltcGwqJiBpbnRlcm1lZGlhdGVMYXllclB0ciwgQ0NMYXllckltcGwqJiBzdXJm
YWNlTGF5ZXJQdHIsIENDTGF5ZXJJbXBsKiYgY2hpbGRQdHIpCitzdGF0aWMgdm9pZCBzZXR1cExh
eWVyc0ZvclRleHR1cmVDYWNoaW5nKENDTGF5ZXJUcmVlSG9zdEltcGwqIGxheWVyVHJlZUhvc3RJ
bXBsLCBDQ0xheWVySW1wbComIHJvb3RQdHIsIENDTGF5ZXJJbXBsKiYgaW50ZXJtZWRpYXRlTGF5
ZXJQdHIsIENDTGF5ZXJJbXBsKiYgc3VyZmFjZUxheWVyUHRyLCBDQ0xheWVySW1wbComIGNoaWxk
UHRyLCBjb25zdCBJbnRTaXplJiByb290U2l6ZSkKIHsKICAgICBSZWZQdHI8Q0NHcmFwaGljc0Nv
bnRleHQ+IGNvbnRleHQgPSBDQ0dyYXBoaWNzQ29udGV4dDo6Y3JlYXRlM0QoR3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0
cihuZXcgUGFydGlhbFN3YXBDb250ZXh0KCkpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGly
ZWN0bHlUb0hvc3RXaW5kb3cpKTsKIAogICAgIGxheWVyVHJlZUhvc3RJbXBsLT5pbml0aWFsaXpl
TGF5ZXJSZW5kZXJlcihjb250ZXh0LnJlbGVhc2UoKSwgVW50aHJvdHRsZWRVcGxvYWRlcik7Ci0g
ICAgbGF5ZXJUcmVlSG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDEwMCwgMTAwKSk7
CisgICAgbGF5ZXJUcmVlSG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShyb290U2l6ZSk7CiAKICAg
ICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDEpOwogICAg
IHJvb3RQdHIgPSByb290LmdldCgpOwogCiAgICAgcm9vdC0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQ
b2ludCgwLCAwKSk7CiAgICAgcm9vdC0+c2V0UG9zaXRpb24oRmxvYXRQb2ludCgwLCAwKSk7Ci0g
ICAgcm9vdC0+c2V0Qm91bmRzKEludFNpemUoMTAwLCAxMDApKTsKLSAgICByb290LT5zZXRDb250
ZW50Qm91bmRzKEludFNpemUoMTAwLCAxMDApKTsKLSAgICByb290LT5zZXRWaXNpYmxlTGF5ZXJS
ZWN0KEludFJlY3QoMCwgMCwgMTAwLCAxMDApKTsKKyAgICByb290LT5zZXRCb3VuZHMocm9vdFNp
emUpOworICAgIHJvb3QtPnNldENvbnRlbnRCb3VuZHMocm9vdFNpemUpOworICAgIHJvb3QtPnNl
dFZpc2libGVMYXllclJlY3QoSW50UmVjdChJbnRQb2ludCgwLCAwKSwgcm9vdFNpemUpKTsKICAg
ICByb290LT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7CiAgICAgbGF5ZXJUcmVlSG9zdEltcGwtPnNl
dFJvb3RMYXllcihyb290LnJlbGVhc2UoKSk7CiAKQEAgLTI0MzQsOSArMjQ0MSw5IEBAIHN0YXRp
YyB2b2lkIHNldHVwTGF5ZXJzRm9yVGV4dHVyZUNhY2hpbmcoQ0NMYXllclRyZWVIb3N0SW1wbCog
bGF5ZXJUcmVlSG9zdEltcGwsCiAKICAgICBpbnRlcm1lZGlhdGVMYXllclB0ci0+c2V0QW5jaG9y
UG9pbnQoRmxvYXRQb2ludCgwLCAwKSk7CiAgICAgaW50ZXJtZWRpYXRlTGF5ZXJQdHItPnNldFBv
c2l0aW9uKEZsb2F0UG9pbnQoMTAsIDEwKSk7Ci0gICAgaW50ZXJtZWRpYXRlTGF5ZXJQdHItPnNl
dEJvdW5kcyhJbnRTaXplKDEwMCwgMTAwKSk7Ci0gICAgaW50ZXJtZWRpYXRlTGF5ZXJQdHItPnNl
dENvbnRlbnRCb3VuZHMoSW50U2l6ZSgxMDAsIDEwMCkpOwotICAgIGludGVybWVkaWF0ZUxheWVy
UHRyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAxMDApKTsKKyAgICBp
bnRlcm1lZGlhdGVMYXllclB0ci0+c2V0Qm91bmRzKHJvb3RTaXplKTsKKyAgICBpbnRlcm1lZGlh
dGVMYXllclB0ci0+c2V0Q29udGVudEJvdW5kcyhyb290U2l6ZSk7CisgICAgaW50ZXJtZWRpYXRl
TGF5ZXJQdHItPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdChJbnRQb2ludCgwLCAwKSwgcm9v
dFNpemUpKTsKICAgICBpbnRlcm1lZGlhdGVMYXllclB0ci0+c2V0RHJhd3NDb250ZW50KGZhbHNl
KTsgLy8gb25seSBjaGlsZHJlbiBkcmF3IGNvbnRlbnQKICAgICByb290UHRyLT5hZGRDaGlsZChp
bnRlcm1lZGlhdGVMYXllci5yZWxlYXNlKCkpOwogCkBAIC0yNDQ1LDExICsyNDUyLDEyIEBAIHN0
YXRpYyB2b2lkIHNldHVwTGF5ZXJzRm9yVGV4dHVyZUNhY2hpbmcoQ0NMYXllclRyZWVIb3N0SW1w
bCogbGF5ZXJUcmVlSG9zdEltcGwsCiAKICAgICAvLyBTdXJmYWNlIGxheWVyIGlzIHRoZSBsYXll
ciB0aGF0IGNoYW5nZXMgaXRzIG9wYWNpdHkKICAgICAvLyBJdCB3aWxsIGNvbnRhaW4gb3RoZXIg
bGF5ZXJzIHRoYXQgZHJhdyBjb250ZW50LgorICAgIEludFNpemUgc3VyZmFjZVNpemUocm9vdFNp
emUud2lkdGgoKSwgcm9vdFNpemUuaGVpZ2h0KCkpOwogICAgIHN1cmZhY2VMYXllclB0ci0+c2V0
QW5jaG9yUG9pbnQoRmxvYXRQb2ludCgwLCAwKSk7CiAgICAgc3VyZmFjZUxheWVyUHRyLT5zZXRQ
b3NpdGlvbihGbG9hdFBvaW50KDEwLCAxMCkpOwotICAgIHN1cmZhY2VMYXllclB0ci0+c2V0Qm91
bmRzKEludFNpemUoNTAsIDUwKSk7Ci0gICAgc3VyZmFjZUxheWVyUHRyLT5zZXRDb250ZW50Qm91
bmRzKEludFNpemUoNTAsIDUwKSk7Ci0gICAgc3VyZmFjZUxheWVyUHRyLT5zZXRWaXNpYmxlTGF5
ZXJSZWN0KEludFJlY3QoMCwgMCwgNTAsIDUwKSk7CisgICAgc3VyZmFjZUxheWVyUHRyLT5zZXRC
b3VuZHMoc3VyZmFjZVNpemUpOworICAgIHN1cmZhY2VMYXllclB0ci0+c2V0Q29udGVudEJvdW5k
cyhzdXJmYWNlU2l6ZSk7CisgICAgc3VyZmFjZUxheWVyUHRyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0
KEludFJlY3QoSW50UG9pbnQoMCwgMCksIHN1cmZhY2VTaXplKSk7CiAgICAgc3VyZmFjZUxheWVy
UHRyLT5zZXREcmF3c0NvbnRlbnQoZmFsc2UpOyAvLyBvbmx5IGNoaWxkcmVuIGRyYXcgY29udGVu
dAogICAgIHN1cmZhY2VMYXllclB0ci0+c2V0T3BhY2l0eSgwLjVmKTsgLy8gVGhpcyB3aWxsIGNh
dXNlIGl0IHRvIGhhdmUgYSBzdXJmYWNlCiAgICAgaW50ZXJtZWRpYXRlTGF5ZXJQdHItPmFkZENo
aWxkKHN1cmZhY2VMYXllci5yZWxlYXNlKCkpOwpAQCAtMjQ1OCwxMSArMjQ2NiwxMiBAQCBzdGF0
aWMgdm9pZCBzZXR1cExheWVyc0ZvclRleHR1cmVDYWNoaW5nKENDTGF5ZXJUcmVlSG9zdEltcGwq
IGxheWVyVHJlZUhvc3RJbXBsLAogICAgIE93blB0cjxGYWtlTGF5ZXJXaXRoUXVhZHM+IGNoaWxk
ID0gRmFrZUxheWVyV2l0aFF1YWRzOjpjcmVhdGUoNCk7CiAgICAgY2hpbGRQdHIgPSBjaGlsZC5n
ZXQoKTsKIAorICAgIEludFNpemUgY2hpbGRTaXplKHJvb3RTaXplLndpZHRoKCksIHJvb3RTaXpl
LmhlaWdodCgpKTsKICAgICBjaGlsZFB0ci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludCgwLCAw
KSk7CiAgICAgY2hpbGRQdHItPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQoNSwgNSkpOwotICAgIGNo
aWxkUHRyLT5zZXRCb3VuZHMoSW50U2l6ZSgxMCwgMTApKTsKLSAgICBjaGlsZFB0ci0+c2V0Q29u
dGVudEJvdW5kcyhJbnRTaXplKDEwLCAxMCkpOwotICAgIGNoaWxkUHRyLT5zZXRWaXNpYmxlTGF5
ZXJSZWN0KEludFJlY3QoMCwgMCwgMTAsIDEwKSk7CisgICAgY2hpbGRQdHItPnNldEJvdW5kcyhj
aGlsZFNpemUpOworICAgIGNoaWxkUHRyLT5zZXRDb250ZW50Qm91bmRzKGNoaWxkU2l6ZSk7Cisg
ICAgY2hpbGRQdHItPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdChJbnRQb2ludCgwLCAwKSwg
Y2hpbGRTaXplKSk7CiAgICAgY2hpbGRQdHItPnNldERyYXdzQ29udGVudCh0cnVlKTsKIAogICAg
IHN1cmZhY2VMYXllclB0ci0+YWRkQ2hpbGQoY2hpbGQucmVsZWFzZSgpKTsKQEAgLTI0ODAsNyAr
MjQ4OSw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgc3VyZmFjZVRleHR1cmVD
YWNoaW5nKQogICAgIENDTGF5ZXJJbXBsKiBzdXJmYWNlTGF5ZXJQdHI7CiAgICAgQ0NMYXllcklt
cGwqIGNoaWxkUHRyOwogCi0gICAgc2V0dXBMYXllcnNGb3JUZXh0dXJlQ2FjaGluZyhteUhvc3RJ
bXBsLmdldCgpLCByb290UHRyLCBpbnRlcm1lZGlhdGVMYXllclB0ciwgc3VyZmFjZUxheWVyUHRy
LCBjaGlsZFB0cik7CisgICAgc2V0dXBMYXllcnNGb3JUZXh0dXJlQ2FjaGluZyhteUhvc3RJbXBs
LmdldCgpLCByb290UHRyLCBpbnRlcm1lZGlhdGVMYXllclB0ciwgc3VyZmFjZUxheWVyUHRyLCBj
aGlsZFB0ciwgSW50U2l6ZSgxMDAsIDEwMCkpOwogCiAgICAgewogICAgICAgICBDQ0xheWVyVHJl
ZUhvc3RJbXBsOjpGcmFtZURhdGEgZnJhbWU7CkBAIC0yNjM3LDcgKzI2NDYsNyBAQCBURVNUX0Yo
Q0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHN1cmZhY2VUZXh0dXJlQ2FjaGluZ05vUGFydGlhbFN3
YXApCiAgICAgQ0NMYXllckltcGwqIHN1cmZhY2VMYXllclB0cjsKICAgICBDQ0xheWVySW1wbCog
Y2hpbGRQdHI7CiAKLSAgICBzZXR1cExheWVyc0ZvclRleHR1cmVDYWNoaW5nKG15SG9zdEltcGwu
Z2V0KCksIHJvb3RQdHIsIGludGVybWVkaWF0ZUxheWVyUHRyLCBzdXJmYWNlTGF5ZXJQdHIsIGNo
aWxkUHRyKTsKKyAgICBzZXR1cExheWVyc0ZvclRleHR1cmVDYWNoaW5nKG15SG9zdEltcGwuZ2V0
KCksIHJvb3RQdHIsIGludGVybWVkaWF0ZUxheWVyUHRyLCBzdXJmYWNlTGF5ZXJQdHIsIGNoaWxk
UHRyLCBJbnRTaXplKDEwMCwgMTAwKSk7CiAKICAgICB7CiAgICAgICAgIENDTGF5ZXJUcmVlSG9z
dEltcGw6OkZyYW1lRGF0YSBmcmFtZTsKQEAgLTI3ODQsNiArMjc5Myw4MCBAQCBURVNUX0YoQ0NM
YXllclRyZWVIb3N0SW1wbFRlc3QsIHN1cmZhY2VUZXh0dXJlQ2FjaGluZ05vUGFydGlhbFN3YXAp
CiAgICAgfQogfQogCisvLyBGSVhNRTogVGhpcyB0ZXN0IGlzIHRlbXBvcmFyeSB1bnRpbCBtZW1v
cnkgbWFuYWdlbWVudCBpbiByZW5kZXIgc3VyZmFjZXMgZ2V0cyByZWZhY3RvcmVkLgorLy8gSXQg
ZGVwZW5kcyBvbiBpbXBsZW1lbnRhdGlvbiBvZiBUZXh0dXJlTWFuYWdlciBhbmQgbmVlZHMgdG8g
Z2V0IHJlbW92ZWQgYXMKKy8vIGl0IHdpbGwgYmVjb21lIG1lYW5pbmdsZXNzIHdpdGggYSBkaWZm
ZXJlbnQgaW1wbGVtZW50YXRpb24uCitURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHN1
cmZhY2VUZXh0dXJlQ2FjaGluZ01lbW9yeUxpbWl0KQoreworICAgIENDU2V0dGluZ3M6OnNldFBh
cnRpYWxTd2FwRW5hYmxlZCh0cnVlKTsKKworICAgIENDTGF5ZXJUcmVlU2V0dGluZ3Mgc2V0dGlu
Z3M7CisgICAgT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IG15SG9zdEltcGwgPSBDQ0xheWVy
VHJlZUhvc3RJbXBsOjpjcmVhdGUoc2V0dGluZ3MsIHRoaXMpOworCisgICAgQ0NMYXllckltcGwq
IHJvb3RQdHI7CisgICAgQ0NMYXllckltcGwqIGludGVybWVkaWF0ZUxheWVyUHRyOworICAgIEND
TGF5ZXJJbXBsKiBzdXJmYWNlTGF5ZXJQdHI7CisgICAgQ0NMYXllckltcGwqIGNoaWxkUHRyOwor
CisgICAgLy8gRklYTUU6IFRoZSBudW1iZXIgNDIwMCBpcyB0aGUgIm1hZ2ljIiBudW1iZXIgd2hp
Y2ggd2lsbCBjYXVzZSByZW5kZXIgc3VyZmFjZSBzaXplCisgICAgLy8gdG8gZ28gYWJvdmUgNjRN
LiBUaGlzIHdpbGwgYnJpbmcgaXQgYWJvdmUgcmVjbGFpbUxpbWl0Qnl0ZXMoKS4KKyAgICAvLyBX
ZSBjb3VsZCBjb21wdXRlIHRoaXMgbnVtYmVyIGZyb20gcmV0dXJuIHZhbHVlIG9mIHJlY2xhaW1M
aW1pdEJ5dGVzKCksIGhvd2V2ZXIKKyAgICAvLyBpdCB0YWtlcyBhIHZpZXdwb3J0LCBzbyBpdCdz
IG5vIGJldHRlciBhcyBpdCBzdGlsbCBjb250YWlucyBzYW1lIGtpbmQgb2YgYXNzdW1wdGlvbgor
ICAgIC8vIChuYW1lbHkgdGhhdCByZWNsYWltTGltaXRCeXRlcygpIGlnbm9yZXMgdmlld3BvcnQg
c2l6ZSkuCisgICAgSW50U2l6ZSBsYXJnZVN1cmZhY2VTaXplKDQyMDAsIDQyMDApOworICAgIHNl
dHVwTGF5ZXJzRm9yVGV4dHVyZUNhY2hpbmcobXlIb3N0SW1wbC5nZXQoKSwgcm9vdFB0ciwgaW50
ZXJtZWRpYXRlTGF5ZXJQdHIsIHN1cmZhY2VMYXllclB0ciwgY2hpbGRQdHIsIGxhcmdlU3VyZmFj
ZVNpemUpOworCisgICAgeworICAgICAgICBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEg
ZnJhbWU7CisgICAgICAgIEVYUEVDVF9UUlVFKG15SG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJh
bWUpKTsKKworICAgICAgICAvLyBNdXN0IHJlY2VpdmUgdHdvIHJlbmRlciBwYXNzZXMsIGVhY2gg
d2l0aCBvbmUgcXVhZAorICAgICAgICBBU1NFUlRfRVEoMlUsIGZyYW1lLnJlbmRlclBhc3Nlcy5z
aXplKCkpOworICAgICAgICBFWFBFQ1RfRVEoMVUsIGZyYW1lLnJlbmRlclBhc3Nlc1swXS0+cXVh
ZExpc3QoKS5zaXplKCkpOworICAgICAgICBFWFBFQ1RfRVEoMVUsIGZyYW1lLnJlbmRlclBhc3Nl
c1sxXS0+cXVhZExpc3QoKS5zaXplKCkpOworCisgICAgICAgIEVYUEVDVF9FUShDQ0RyYXdRdWFk
OjpSZW5kZXJQYXNzLCBmcmFtZS5yZW5kZXJQYXNzZXNbMV0tPnF1YWRMaXN0KClbMF0tPm1hdGVy
aWFsKCkpOworICAgICAgICBDQ1JlbmRlclBhc3NEcmF3UXVhZCogcXVhZCA9IHN0YXRpY19jYXN0
PENDUmVuZGVyUGFzc0RyYXdRdWFkKj4oZnJhbWUucmVuZGVyUGFzc2VzWzFdLT5xdWFkTGlzdCgp
WzBdLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUocXVhZC0+cmVuZGVyUGFzcygpLT50YXJn
ZXRTdXJmYWNlKCktPmNvbnRlbnRzQ2hhbmdlZCgpKTsKKworICAgICAgICBteUhvc3RJbXBsLT5k
cmF3TGF5ZXJzKGZyYW1lKTsKKyAgICAgICAgbXlIb3N0SW1wbC0+ZGlkRHJhd0FsbExheWVycyhm
cmFtZSk7CisgICAgfQorCisgICAgLy8gRHJhdyB3aXRob3V0IGFueSBjaGFuZ2UKKyAgICB7Cisg
ICAgICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6OkZyYW1lRGF0YSBmcmFtZTsKKyAgICAgICAgRVhQ
RUNUX1RSVUUobXlIb3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworCisgICAgICAgIC8v
IE11c3QgcmVjZWl2ZSB0d28gRU1QVFkgcmVuZGVyIHBhc3NlcworICAgICAgICBBU1NFUlRfRVEo
MlUsIGZyYW1lLnJlbmRlclBhc3Nlcy5zaXplKCkpOworICAgICAgICBFWFBFQ1RfRVEoMFUsIGZy
YW1lLnJlbmRlclBhc3Nlc1swXS0+cXVhZExpc3QoKS5zaXplKCkpOworICAgICAgICBFWFBFQ1Rf
RVEoMFUsIGZyYW1lLnJlbmRlclBhc3Nlc1sxXS0+cXVhZExpc3QoKS5zaXplKCkpOworCisgICAg
ICAgIG15SG9zdEltcGwtPmRyYXdMYXllcnMoZnJhbWUpOworICAgICAgICBteUhvc3RJbXBsLT5k
aWREcmF3QWxsTGF5ZXJzKGZyYW1lKTsKKyAgICB9CisKKyAgICAvLyBDaGFuZ2Ugb3BhY2l0eSBh
bmQgZHJhdy4KKyAgICAvLyBJZiBhbGwgZ29lcyB3ZWxsLCB0aGUgdGV4dHVyZSBtdXN0IHN0aWxs
IGJlIGF2YWlsYWJsZSwgZXZlbiB0aG91Z2ggaXQncyByZWFsbHkgYmlnLgorICAgIHN1cmZhY2VM
YXllclB0ci0+c2V0T3BhY2l0eSgwLjZmKTsKKyAgICB7CisgICAgICAgIENDTGF5ZXJUcmVlSG9z
dEltcGw6OkZyYW1lRGF0YSBmcmFtZTsKKyAgICAgICAgRVhQRUNUX1RSVUUobXlIb3N0SW1wbC0+
cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworCisgICAgICAgIC8vIE11c3QgcmVjZWl2ZSBvbmUgcmVu
ZGVyIHBhc3MsIGFzIHRoZSBvdGhlciBvbmUgc2hvdWxkIGJlIGN1bGxlZAorICAgICAgICBBU1NF
UlRfRVEoMVUsIGZyYW1lLnJlbmRlclBhc3Nlcy5zaXplKCkpOworCisgICAgICAgIEVYUEVDVF9F
USgxVSwgZnJhbWUucmVuZGVyUGFzc2VzWzBdLT5xdWFkTGlzdCgpLnNpemUoKSk7CisgICAgICAg
IEVYUEVDVF9FUShDQ0RyYXdRdWFkOjpSZW5kZXJQYXNzLCBmcmFtZS5yZW5kZXJQYXNzZXNbMF0t
PnF1YWRMaXN0KClbMF0tPm1hdGVyaWFsKCkpOworICAgICAgICBDQ1JlbmRlclBhc3NEcmF3UXVh
ZCogcXVhZCA9IHN0YXRpY19jYXN0PENDUmVuZGVyUGFzc0RyYXdRdWFkKj4oZnJhbWUucmVuZGVy
UGFzc2VzWzBdLT5xdWFkTGlzdCgpWzBdLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHF1
YWQtPnJlbmRlclBhc3MoKS0+dGFyZ2V0U3VyZmFjZSgpLT5jb250ZW50c0NoYW5nZWQoKSk7CisK
KyAgICAgICAgbXlIb3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CisgICAgICAgIG15SG9zdElt
cGwtPmRpZERyYXdBbGxMYXllcnMoZnJhbWUpOworICAgIH0KK30KKwogc3RydWN0IFJlbmRlclBh
c3NDYWNoZUVudHJ5IHsKICAgICBtdXRhYmxlIE93blB0cjxDQ1JlbmRlclBhc3M+IHJlbmRlclBh
c3NQdHI7CiAgICAgQ0NSZW5kZXJQYXNzKiByZW5kZXJQYXNzOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>