<?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>79317</bug_id>
          
          <creation_ts>2012-02-22 18:47:34 -0800</creation_ts>
          <short_desc>Remove GraphicsContext3D::paintsIntoCanvasBuffer and unify WebGL and canvas 2d logic</short_desc>
          <delta_ts>2012-02-24 10:58:56 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>1</everconfirmed>
          <reporter name="James Robinson">jamesr</reporter>
          <assigned_to name="James Robinson">jamesr</assigned_to>
          <cc>gman</cc>
    
    <cc>kbr</cc>
    
    <cc>mdelaney7</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>vangelis</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>562681</commentid>
    <comment_count>0</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-22 18:47:34 -0800</bug_when>
    <thetext>Remove GraphicsContext3D::paintsIntoCanvasBuffer and unify WebGL and canvas 2d logic</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562690</commentid>
    <comment_count>1</comment_count>
      <attachid>128367</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-22 18:53:22 -0800</bug_when>
    <thetext>Created attachment 128367
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562693</commentid>
    <comment_count>2</comment_count>
      <attachid>128367</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-02-22 19:04:14 -0800</bug_when>
    <thetext>Comment on attachment 128367
Patch

Thumbs up. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562698</commentid>
    <comment_count>3</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-22 19:06:50 -0800</bug_when>
    <thetext>Committed r108597: &lt;http://trac.webkit.org/changeset/108597&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562734</commentid>
    <comment_count>4</comment_count>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2012-02-22 19:54:49 -0800</bug_when>
    <thetext>I believe you left something out. Last I checked, we aren&apos;t using the ACCELERATED_2D_CANVAS flag that was used here: http://trac.webkit.org/changeset/108597/trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp

So, CRC2D.cpp I think should have this full line unless I missed something else in your patch (I&apos;m on a bumpy bus at the moment):
#if ENABLE(ACCELERATED_2D_CANVAS) &amp;&amp; USE(ACCELERATED_COMPOSITING)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562740</commentid>
    <comment_count>5</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-22 19:59:34 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; I believe you left something out. Last I checked, we aren&apos;t using the ACCELERATED_2D_CANVAS flag that was used here: http://trac.webkit.org/changeset/108597/trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp
&gt; 
&gt; So, CRC2D.cpp I think should have this full line unless I missed something else in your patch (I&apos;m on a bumpy bus at the moment):
&gt; #if ENABLE(ACCELERATED_2D_CANVAS) &amp;&amp; USE(ACCELERATED_COMPOSITING)

I believe the existing checks in CanvasRenderingContext2D::isAccelerated() are sufficient for the mac build, which doesn&apos;t set ENABLE(ACCELERATED_2D_CANVAS).  Let me know if that&apos;s not the case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562752</commentid>
    <comment_count>6</comment_count>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2012-02-22 20:09:17 -0800</bug_when>
    <thetext>Ugh, all these poorly named variables. I can hardly view it on here, but if that m_context-&gt;paintsIntoBuffer check was a 2d context, then in our case we want it to return true whether or not it&apos;s accelerated. In the 2D case, we&apos;re always rendering into an intermediary buffer which is what I think that check was for, right? I&apos;ll have to check when I get home though it doesn&apos;t look right at first glance.

I&apos;m all for cleanup there though!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562753</commentid>
    <comment_count>7</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-22 20:17:39 -0800</bug_when>
    <thetext>I see, so you want paintsIntoCanvasBuffer() to return true for accelerated 2d canvases? That&apos;s easy enough to accomplish.  Would you mind expanding a bit on why? I was under the (perhaps mistaken) impression that the Mac accelerated canvas 2d implementation was also constructing a composited layer for the canvas content and thus there is no need to do anything at paint time.

Perhaps the better thing to key this off of is asking the CanvasRenderingContext if it is currently compositing into a layer or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562852</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-02-22 22:49:34 -0800</bug_when>
    <thetext>&gt; I was under the (perhaps mistaken) impression that the Mac accelerated canvas 2d implementation was also constructing a composited layer for the canvas content and thus there is no need to do anything at paint time.

No. We do that for WebGL, but not for normal canvases. For those, we use an IOSurface-backed ImageBuffer, but we still paint that buffer into a CALayer to get the canvas displayed. We do that for synchronization reasons; we have to ensure that the painting into the canvas buffer is flushed somehow, and painting the buffer is equivalent to doing some kind of context flush.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562861</commentid>
    <comment_count>9</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-22 23:09:54 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; &gt; I was under the (perhaps mistaken) impression that the Mac accelerated canvas 2d implementation was also constructing a composited layer for the canvas content and thus there is no need to do anything at paint time.
&gt; 
&gt; No. We do that for WebGL, but not for normal canvases. For those, we use an IOSurface-backed ImageBuffer, but we still paint that buffer into a CALayer to get the canvas displayed. We do that for synchronization reasons; we have to ensure that the painting into the canvas buffer is flushed somehow, and painting the buffer is equivalent to doing some kind of context flush.

Gotcha.  I think</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562862</commentid>
    <comment_count>10</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-22 23:10:47 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562863</commentid>
    <comment_count>11</comment_count>
      <attachid>128402</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-22 23:10:49 -0800</bug_when>
    <thetext>Created attachment 128402
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562866</commentid>
    <comment_count>12</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-22 23:14:40 -0800</bug_when>
    <thetext>Whoops, hit commit too soon.  This completely untested patch should restore the previous behavior for !ENABLE(ACCELERATED_2D_CANVAS) builds - would one of you like to confirm whether this helps?  If not I can test it tomorrow on a Mac Pro with Lion.  The interesting case is a 2d canvas that happens to be composited for other reasons (a 3d transform or the like).

I&apos;m a bit academically curious about how the synchronization is different between canvas and WebGL in CoreAnimation. For instance, I know that some WebGL sites move an DOM element on top of the WebGL content in script and expect them to stay in sync - is that different for webgl and canvas content?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563315</commentid>
    <comment_count>13</comment_count>
      <attachid>128402</attachid>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2012-02-23 11:46:22 -0800</bug_when>
    <thetext>Comment on attachment 128402
Patch

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

I just built ToT and it&apos;s definitely broken, so please commit this asap.

&gt; Source/WebCore/html/HTMLCanvasElement.cpp:277
&gt; +#if !ENABLE(ACCELERATED_2D_CANVAS)

I think USE(IOSURFACE_CANVAS_BACKING_STORE) is more precise</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563328</commentid>
    <comment_count>14</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-23 11:55:29 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 128402 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=128402&amp;action=review
&gt; 
&gt; I just built ToT and it&apos;s definitely broken, so please commit this asap.
&gt; 

Find me a review and sure :)

&gt; &gt; Source/WebCore/html/HTMLCanvasElement.cpp:277
&gt; &gt; +#if !ENABLE(ACCELERATED_2D_CANVAS)
&gt; 
&gt; I think USE(IOSURFACE_CANVAS_BACKING_STORE) is more precise

I think that makes a lot less sense in the context of this function.  The question this is asking is &quot;if the accelerated 2d canvas feature is off, then all 2d contexts paint into the canvas buffer&quot;.  This is the case for IOSURFACE_CANVAS_BACKING_STORE and any other possible canvas 2d rendering model that isn&apos;t ENABLE(ACCELERATED_2D_CANVAS).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563329</commentid>
    <comment_count>15</comment_count>
      <attachid>128522</attachid>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2012-02-23 11:55:44 -0800</bug_when>
    <thetext>Created attachment 128522
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563339</commentid>
    <comment_count>16</comment_count>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2012-02-23 12:00:56 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #13)
&gt; &gt; (From update of attachment 128402 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=128402&amp;action=review
&gt; &gt; 
&gt; &gt; I just built ToT and it&apos;s definitely broken, so please commit this asap.
&gt; &gt; 
&gt; 
&gt; Find me a review and sure :)

Wanna just review mine instead? :-)

&gt; 
&gt; &gt; &gt; Source/WebCore/html/HTMLCanvasElement.cpp:277
&gt; &gt; &gt; +#if !ENABLE(ACCELERATED_2D_CANVAS)
&gt; &gt; 
&gt; &gt; I think USE(IOSURFACE_CANVAS_BACKING_STORE) is more precise
&gt; 
&gt; I think that makes a lot less sense in the context of this function.  The question this is asking is &quot;if the accelerated 2d canvas feature is off, then all 2d contexts paint into the canvas buffer&quot;.  This is the case for IOSURFACE_CANVAS_BACKING_STORE and any other possible canvas 2d rendering model that isn&apos;t ENABLE(ACCELERATED_2D_CANVAS).

I think this logic is a bit misplaced in general. The confusing part is that we have multiple flags that say &quot;accelerated canvas&quot; of which the iosurface backing store one is probably the most confusing. I&apos;ll just clean this up in a separate patch, but it&apos;s still true that for now my having the iosurface flag is more precise here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563351</commentid>
    <comment_count>17</comment_count>
      <attachid>128522</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-23 12:15:48 -0800</bug_when>
    <thetext>Comment on attachment 128522
Patch

Won&apos;t this break WebGL?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563352</commentid>
    <comment_count>18</comment_count>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2012-02-23 12:16:51 -0800</bug_when>
    <thetext>Committed r108657: &lt;http://trac.webkit.org/changeset/108657&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563356</commentid>
    <comment_count>19</comment_count>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2012-02-23 12:18:18 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 128522 [details])
&gt; Won&apos;t this break WebGL?

Damn, you&apos;re right. Not sure your original path is going to work then...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563366</commentid>
    <comment_count>20</comment_count>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2012-02-23 12:25:37 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #17)
&gt; &gt; (From update of attachment 128522 [details] [details])
&gt; &gt; Won&apos;t this break WebGL?
&gt; 
&gt; Damn, you&apos;re right. Not sure your original path is going to work then...

I see, I forgot the is2d() here. Adding that in now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563369</commentid>
    <comment_count>21</comment_count>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2012-02-23 12:29:07 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; (In reply to comment #19)
&gt; &gt; (In reply to comment #17)
&gt; &gt; &gt; (From update of attachment 128522 [details] [details] [details])
&gt; &gt; &gt; Won&apos;t this break WebGL?
&gt; &gt; 
&gt; &gt; Damn, you&apos;re right. Not sure your original path is going to work then...
&gt; 
&gt; I see, I forgot the is2d() here. Adding that in now.

Committed that quick fix here: http://trac.webkit.org/changeset/108658</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563946</commentid>
    <comment_count>22</comment_count>
      <attachid>128367</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-02-23 22:43:22 -0800</bug_when>
    <thetext>Comment on attachment 128367
Patch

Post-hoc drive-by:  this is great to see.  Now if we could get rid of its use in GraphicsContext3DPrivate::platformTexture(), we could get rid of m_webViewImpl altogether.  (Kind of weird the way  it&apos;s grabbing the onscreen context at that point, actually.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564463</commentid>
    <comment_count>23</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-24 10:58:56 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; (From update of attachment 128367 [details])
&gt; Post-hoc drive-by:  this is great to see.  Now if we could get rid of its use in GraphicsContext3DPrivate::platformTexture(), we could get rid of m_webViewImpl altogether.  (Kind of weird the way  it&apos;s grabbing the onscreen context at that point, actually.)

http://trac.webkit.org/changeset/108706/trunk/Source/WebKit/chromium/src/GraphicsContext3DChromium.cpp

:)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128367</attachid>
            <date>2012-02-22 18:53:22 -0800</date>
            <delta_ts>2012-02-23 22:43:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79317-20120222185321.patch</filename>
            <type>text/plain</type>
            <size>11047</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4NTc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTQ0MmMyYWMxOTc4OTEy
MTYyOWQ2OTcwMTUwZGM5M2MyZmViMGQ3OC4uMDhmMGU1YjNiZTQ5MjJjNDNkZjZjNTBkZmJjMTk0
NmNmMjUxYTVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTAyLTIyICBKYW1l
cyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVtb3ZlIEdyYXBo
aWNzQ29udGV4dDNEOjpwYWludHNJbnRvQ2FudmFzQnVmZmVyIGFuZCB1bmlmeSBXZWJHTCBhbmQg
Y2FudmFzIDJkIGxvZ2ljCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03OTMxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEhUTUxDYW52YXNFbGVtZW50OjpwYWludCBuZWVkcyB0byBrbm93IHdoZXRoZXIgdG8g
YXR0ZW1wdCB0byBwYWludCB0aGUgY2FudmFzIGJ1ZmZlciBmb3IgaXRzIGNvbnRleHQuIEluIHRo
ZQorICAgICAgICBjYXNlIG9mIGFuIGFjY2VsZXJhdGVkIGNhbnZhcyBvciBXZWJHTCBjb250ZXh0
LCB1bmxlc3Mgd2UgYXJlIHByaW50aW5nIGl0IGlzIHR5cGljYWxseSB0aGUgY29tcG9zaXRlZCBs
YXllcidzCisgICAgICAgIHJlc3BvbnNpYmlsaXR5IHRvIHByZXNlbnQgdGhlIGNvbnRlbnRzIGFu
ZCB0aGUgZWxlbWVudCBpdHNlbGYgaXMgb25seSByZXNwb25zaWJsZSBmb3IgYmFja2dyb3VuZHMs
IGJvcmRlcnMgYW5kCisgICAgICAgIHRoZSBsaWtlLiAgVGhpcyByZW1vdmVzIGEgcmF0aGVyIGlu
ZGlyZWN0IHBhdGggdGhhdCBXZWJHTCBjb250ZW50IHVzZWQgdG8gdGFrZSB0byBhY2NvbXBsaXNo
IHRoaXMgYW5kIHVuaWZpZXMKKyAgICAgICAgdGhlIGxvZ2ljIHdpdGggQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEJ3MsIHdoaWNoIGhhcyB0aGUgZXhhY3Qgc2FtZSBuZWVkcy4KKworICAgICAgICBD
b3ZlcmVkIGJ5IGV4aXN0aW5nIGNhbnZhcyBsYXlvdXQgdGVzdHMuCisKKyAgICAgICAgKiBodG1s
L0hUTUxDYW52YXNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVt
ZW50OjpwYWludHNJbnRvQ2FudmFzQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OnBhaW50KToKKyAgICAgICAgKiBodG1sL0hU
TUxDYW52YXNFbGVtZW50Lmg6CisgICAgICAgIChIVE1MQ2FudmFzRWxlbWVudCk6CisgICAgICAg
ICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgICogaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGh0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6CisKIDIwMTItMDItMjIgIE5hdGUgQ2hhcGluICA8
amFwaGV0QGNocm9taXVtLm9yZz4KIAogICAgICAgICBDYWNoZWRSZXNvdXJjZUxvYWRlciBpZ25v
cmVzIHRoZSBSYW5nZSBoZWFkZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggN2RmODhh
MzExMzM5OWJkMTEzN2NjOWRjN2I1ZWZlMzNkODczNWJlNC4uNjhlYjIzNjNmMzgxYmYxNjI0ZjVk
Y2JiNTAwN2ExZmJjNWNkOGFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNiBAQAorMjAxMi0wMi0yMiAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJlbW92ZSBHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRzSW50b0NhbnZhc0J1
ZmZlciBhbmQgdW5pZnkgV2ViR0wgYW5kIGNhbnZhcyAyZCBsb2dpYworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzkzMTcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgcGFpbnRzSW50b0NhbnZhc0J1
ZmZlcigpIGltcGxlbWVudGF0aW9ucy4KKworICAgICAgICAqIHNyYy9HcmFwaGljc0NvbnRleHQz
RENocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHNyYy9HcmFwaGlj
c0NvbnRleHQzRFByaXZhdGUuaDoKKwogMjAxMi0wMi0yMSAgUnlvc3VrZSBOaXdhICA8cm5pd2FA
d2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgdGhlIHJlbWFpbmluZyB1c2VzIG9mIENTU1N0
eWxlRGVjbGFyYXRpb24gaW4gRWRpdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxDYW52YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0Vs
ZW1lbnQuY3BwCmluZGV4IGJlY2NiNjBlY2NlZTNjYzhkMGFhMTlkN2NlN2U0NjE4NjI1N2JjNzUu
LjdhNDRkNzI5NjAzMDNhY2VkNjE0NTBiODAyMGM5ZjhhZjhhZjBlZGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVk
ZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZW5k
ZXJIVE1MQ2FudmFzLmgiCisjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJTZXR0
aW5ncy5oIgogI2luY2x1ZGUgPG1hdGguaD4KICNpbmNsdWRlIDxzdGRpby5oPgpAQCAtMjY5LDYg
KzI3MCwyMCBAQCB2b2lkIEhUTUxDYW52YXNFbGVtZW50OjpyZXNldCgpCiAgICAgICAgICgqaXQp
LT5jYW52YXNSZXNpemVkKHRoaXMpOwogfQogCitib29sIEhUTUxDYW52YXNFbGVtZW50OjpwYWlu
dHNJbnRvQ2FudmFzQnVmZmVyKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9jb250ZXh0KTsKKyNp
ZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgaWYgKCFtX2NvbnRleHQtPmlzQWNj
ZWxlcmF0ZWQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAocmVuZGVyQm94KCkg
JiYgcmVuZGVyQm94KCktPmhhc0xheWVyKCkgJiYgcmVuZGVyQm94KCktPmxheWVyKCktPmhhc0Fj
Y2VsZXJhdGVkQ29tcG9zaXRpbmcoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKKwogdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6cGFpbnQoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiByLCBib29sIHVzZUxvd1F1
YWxpdHlTY2FsZSkKIHsKICAgICAvLyBDbGVhciB0aGUgZGlydHkgcmVjdApAQCAtMjc4LDcgKzI5
Myw3IEBAIHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgciwgYm9vCiAgICAgICAgIHJldHVybjsKICAgICAKICAg
ICBpZiAobV9jb250ZXh0KSB7Ci0gICAgICAgIGlmICghbV9jb250ZXh0LT5wYWludHNJbnRvQ2Fu
dmFzQnVmZmVyKCkgJiYgIWRvY3VtZW50KCktPnByaW50aW5nKCkpCisgICAgICAgIGlmICghcGFp
bnRzSW50b0NhbnZhc0J1ZmZlcigpICYmICFkb2N1bWVudCgpLT5wcmludGluZygpKQogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICBtX2NvbnRleHQtPnBhaW50UmVuZGVyaW5nUmVzdWx0c1Rv
Q2FudmFzKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2Fu
dmFzRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oCmlu
ZGV4IDk2NzQ0NGQwYzhjZGUwODk0N2RlMzUxMzgwMjA2NjgyY2ZjZDJmMWIuLmUyYzQ4ODhlNWI0
YjY0NTY1NGZhZDRhZTk4MjhiZGVhZjQwNTZjYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmgKQEAgLTE0OCw2ICsxNDgsOCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBz
aG91bGREZWZlcigpIGNvbnN0OwogCisgICAgYm9vbCBwYWludHNJbnRvQ2FudmFzQnVmZmVyKCkg
Y29uc3Q7CisKICAgICBIYXNoU2V0PENhbnZhc09ic2VydmVyKj4gbV9vYnNlcnZlcnM7CiAKICAg
ICBJbnRTaXplIG1fc2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQuaAppbmRleCA1MzI3ODc4OGQ0OWExY2IzMTI5N2Y1ZjBmMWJk
N2JmMDhmMTFjMWMxLi4xMjQ3MjljYmVlN2QwMDg4MmNkMzkyNGM5YzBmMzk0M2UzNGY2ODRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dC5oCkBAIC01NSw3ICs1NSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nl
bGVyYXRlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoKSB7fQotICAgIHZpcnR1YWwgYm9vbCBwYWludHNJ
bnRvQ2FudmFzQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAjaWYgVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1M
YXllcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IDU1ZTIwODlmY2Rk
MmUyNGM3NTAwNmQ1N2I2ODc4NWVlYTEwYjY5ZDYuLjBkMTk1YWM1MDNhMTU0Y2FkZjU1NTJlNDE0
Y2I4MDIwN2I5M2Q0YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtMTU1LDIwICsxNTUsNiBAQCBib29s
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6aXNBY2NlbGVyYXRlZCgpIGNvbnN0CiAjZW5kaWYK
IH0KIAotYm9vbCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnBhaW50c0ludG9DYW52YXNCdWZm
ZXIoKSBjb25zdAotewotI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICYmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICBpZiAoIWlzQWNjZWxlcmF0ZWQoKSkKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0KLSAgICBSZW5kZXJCb3gqIHJlbmRlckJveCA9IGNhbnZhcygpLT5y
ZW5kZXJCb3goKTsKLSAgICBpZiAocmVuZGVyQm94ICYmIHJlbmRlckJveC0+aGFzTGF5ZXIoKSAm
JiByZW5kZXJCb3gtPmxheWVyKCktPmhhc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLQogdm9pZCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnJlc2V0KCkKIHsKICAgICB1bndpbmRTdGF0ZVN0YWNr
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5oCmluZGV4IDFmNDgxYjc1NTkwZWRjMmFkNTE2YjQzMDI4ZDNlNTcyMjFkOWY2
ZjcuLjU1ODFlZTlkNWI5MDdiODYwNmE1ODM1MmIxNDVlNTY4MDFkYTk2NmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5o
CkBAIC02Nyw3ICs2Nyw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBpczJkKCkgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0FjY2VsZXJhdGVkKCkgY29u
c3Q7Ci0gICAgdmlydHVhbCBib29sIHBhaW50c0ludG9DYW52YXNCdWZmZXIoKSBjb25zdDsKIAog
ICAgIENhbnZhc1N0eWxlKiBzdHJva2VTdHlsZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0U3Ryb2tl
U3R5bGUoUGFzc1JlZlB0cjxDYW52YXNTdHlsZT4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggYmQ2YjUwODU4Njhl
NDM1OWE4ODM0YmYzMWYzMTk4MTQxOWYxMWNhOS4uY2ZiNjUwNWE5OTg2MzY3YTI5MWRmOTA2MzA2
ZWNkY2VjYmRjZjhkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC03MTksMTEgKzcxOSw2IEBAIFBhc3NSZWZQdHI8
SW1hZ2VEYXRhPiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1Rv
SW1hZ2VEYXRhKCkKICAgICByZXR1cm4gaW1hZ2VEYXRhOwogfQogCi1ib29sIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6cGFpbnRzSW50b0NhbnZhc0J1ZmZlcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG1fY29udGV4dC0+cGFpbnRzSW50b0NhbnZhc0J1ZmZlcigpOwotfQotCiB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCiB7CiAgICAgLy8g
VGhpcyBpcyBhbiBhcHByb3hpbWF0aW9uIGJlY2F1c2UgYXQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
IGxldmVsIHdlIGRvbid0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDA0NDllYWRlMWIwMGNkNWQ5ZTJjZDU4YTUwM2I2NWE3
ZGNkNWNmYWQuLmJlOWM4Y2YzY2Y2NjU1MGViNzUzM2JlZDEyOTViNTY1N2M4Mjg1MDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5o
CkBAIC03Nyw3ICs3Nyw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBpczNkKCkgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0FjY2VsZXJhdGVkKCkgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBwYWludHNJbnRvQ2FudmFzQnVm
ZmVyKCkgY29uc3Q7CiAKICAgICBpbnQgZHJhd2luZ0J1ZmZlcldpZHRoKCkgY29uc3Q7CiAgICAg
aW50IGRyYXdpbmdCdWZmZXJIZWlnaHQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCmluZGV4IGNmMzJiNTkzZjlj
YjRjZGRiN2M1MzUwNjk3ODkzNWI5Y2IxN2MyZTIuLjE3YWU5ODQ1ZjAwYmNiYmQyM2M0MjZiYjU1
YzQyNWJiMDkwOWY5MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dDNELmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaApAQCAtODE0LDE4ICs4MTQsNiBAQCBwdWJsaWM6CiAg
ICAgUGFzc1JlZlB0cjxJbWFnZURhdGE+IHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRh
KERyYXdpbmdCdWZmZXIqKTsKICAgICBib29sIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZh
cyhDYW52YXNSZW5kZXJpbmdDb250ZXh0Kik7CiAKLSNpZiBQTEFURk9STShRVCkKLSAgICBib29s
IHBhaW50c0ludG9DYW52YXNCdWZmZXIoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0jZWxpZiBQ
TEFURk9STShDSFJPTUlVTSkKLSAgICBib29sIHBhaW50c0ludG9DYW52YXNCdWZmZXIoKSBjb25z
dDsKLSNlbGlmIFBMQVRGT1JNKEdUSykKLSAgICBib29sIHBhaW50c0ludG9DYW52YXNCdWZmZXIo
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0jZWxpZiBQTEFURk9STShFRkwpCi0gICAgYm9vbCBw
YWludHNJbnRvQ2FudmFzQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotI2Vsc2UKLSAg
ICBib29sIHBhaW50c0ludG9DYW52YXNCdWZmZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQot
I2VuZGlmCi0KICAgICAvLyBTdXBwb3J0IGZvciBidWZmZXIgY3JlYXRpb24gYW5kIGRlbGV0aW9u
CiAgICAgUGxhdGZvcm0zRE9iamVjdCBjcmVhdGVCdWZmZXIoKTsKICAgICBQbGF0Zm9ybTNET2Jq
ZWN0IGNyZWF0ZUZyYW1lYnVmZmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21pdW0uY3BwCmluZGV4IGExZGViMjNmMmU5
Y2FkYzJmOWNlZjcxZGNiZjU4ZmQxMTFkNTgwN2EuLjE0MmExYjEzNjA5YjFiYzBjNjQzMDUzZmIx
YjE2YmUzNmZkZmJiYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dy
YXBoaWNzQ29udGV4dDNEQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21pdW0uY3BwCkBAIC0zNDUsMTMgKzM0NSw2IEBAIFBh
c3NSZWZQdHI8SW1hZ2VEYXRhPiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBhaW50UmVuZGVy
aW5nUmVzdWx0c1RvSW1hZ2VEYXRhCiAgICAgcmV0dXJuIGltYWdlRGF0YS5yZWxlYXNlKCk7CiB9
CiAKLWJvb2wgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludHNJbnRvQ2FudmFzQnVmZmVy
KCkgY29uc3QKLXsKLSAgICAvLyBJZiB0aGUgZ3B1IGNvbXBvc2l0b3IgaXMgb24gdGhlbiBza2lw
IHRoZSByZWFkYmFjayBhbmQgc29mdHdhcmUgcmVuZGVyaW5nIHBhdGguCi0gICAgQVNTRVJUKG1f
d2ViVmlld0ltcGwpOwotICAgIHJldHVybiAhbV93ZWJWaWV3SW1wbC0+aXNBY2NlbGVyYXRlZENv
bXBvc2l0aW5nQWN0aXZlKCk7Ci19Ci0KIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpy
ZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkKIHsKICAgICBpZiAod2lkdGggPT0gbV9pbXBs
LT53aWR0aCgpICYmIGhlaWdodCA9PSBtX2ltcGwtPmhlaWdodCgpKQpAQCAtMTI0OCwxMSArMTI0
MSw2IEBAIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRSZW5k
ZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEoRHJhd2luCiAKIERFTEVHQVRFX1RPX0lOVEVSTkFMXzFS
KHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcywgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCos
IGJvb2wpCiAKLWJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50c0ludG9DYW52YXNCdWZmZXIo
KSBjb25zdAotewotICAgIHJldHVybiBtX3ByaXZhdGUtPnBhaW50c0ludG9DYW52YXNCdWZmZXIo
KTsKLX0KLQogREVMRUdBVEVfVE9fSU5URVJOQUxfUihjcmVhdGVCdWZmZXIsIFBsYXRmb3JtM0RP
YmplY3QpCiBERUxFR0FURV9UT19JTlRFUk5BTF9SKGNyZWF0ZUZyYW1lYnVmZmVyLCBQbGF0Zm9y
bTNET2JqZWN0KQogREVMRUdBVEVfVE9fSU5URVJOQUxfUihjcmVhdGVQcm9ncmFtLCBQbGF0Zm9y
bTNET2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGlj
c0NvbnRleHQzRFByaXZhdGUuaAppbmRleCBjNmM3ZDdmMTNhYzY0MWVhMTQ3MmMxYTI2YTU0Njlj
OTY4ZmQxYjQ4Li5mMDhiYTU4ZWU2MzBkYTJmMTUxMDFhNGJmZjg1NTVlMTRiMGU5MmE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRFByaXZh
dGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRFBy
aXZhdGUuaApAQCAtOTgsNyArOTgsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBwYWludFJlbmRlcmlu
Z1Jlc3VsdHNUb0NhbnZhcyhDYW52YXNSZW5kZXJpbmdDb250ZXh0KiwgRHJhd2luZ0J1ZmZlciop
OwogICAgIHZvaWQgcGFpbnRGcmFtZWJ1ZmZlclRvQ2FudmFzKGludCBmcmFtZWJ1ZmZlciwgaW50
IHdpZHRoLCBpbnQgaGVpZ2h0LCBib29sIHByZW11bHRpcGx5QWxwaGEsIEltYWdlQnVmZmVyKik7
CiAgICAgUGFzc1JlZlB0cjxJbWFnZURhdGE+IHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VE
YXRhKERyYXdpbmdCdWZmZXIqKTsKLSAgICBib29sIHBhaW50c0ludG9DYW52YXNCdWZmZXIoKSBj
b25zdDsKICAgICBib29sIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhDYW52YXNSZW5k
ZXJpbmdDb250ZXh0Kik7CiAKICAgICB2b2lkIHByZXBhcmVUZXh0dXJlKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128402</attachid>
            <date>2012-02-22 23:10:49 -0800</date>
            <delta_ts>2012-02-23 11:55:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79317-20120222231048.patch</filename>
            <type>text/plain</type>
            <size>1471</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4NjEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTY2MTU0NTU4YzRlYzZh
NzdhYTA3Y2M4ZjYxYmY2MWUwNGQ4MjIxMC4uZGFmNjY2NzM0YWQ1MGY4MjkzMjJkM2RjN2JmZWE3
MWEyNjFiOGY2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTAyLTIyICBKYW1l
cyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVtb3ZlIEdyYXBo
aWNzQ29udGV4dDNEOjpwYWludHNJbnRvQ2FudmFzQnVmZmVyIGFuZCB1bmlmeSBXZWJHTCBhbmQg
Y2FudmFzIDJkIGxvZ2ljCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03OTMxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFdoZW4gRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykgaXMgbm90IHNldCwgcGFp
bnRzSW50b0NhbnZhc0J1ZmZlcgorICAgICAgICBpcyBhbHdheXMgdHJ1ZSBmb3IgMmQgY2FudmFz
ZXMuCisKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpwYWludHNJbnRvQ2FudmFzQnVmZmVyKToKKwogMjAx
Mi0wMi0yMiAgRG1pdHJ5IExvbW92ICA8ZHNsb21vdkBnb29nbGUuY29tPgogCiAgICAgICAgIFtD
aHJvbWl1bV1bVjhdIFN1cHBvcnQgVWludDhDbGFtcGVkQXJyYXkgaW4gcG9zdE1lc3NhZ2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKaW5kZXggN2E0NGQ3Mjk2MDMw
M2FjZWQ2MTQ1MGI4MDIwYzlmOGFmOGFmMGVkYS4uZmYzN2M3MzQwM2Q5MjY3ZDg5OWYzNDI0OTVh
YTg1NzVlYjBkNjgyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFz
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5j
cHAKQEAgLTI3Myw2ICsyNzMsMTIgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6cmVzZXQoKQog
Ym9vbCBIVE1MQ2FudmFzRWxlbWVudDo6cGFpbnRzSW50b0NhbnZhc0J1ZmZlcigpIGNvbnN0CiB7
CiAgICAgQVNTRVJUKG1fY29udGV4dCk7CisKKyNpZiAhRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NB
TlZBUykKKyAgICBpZiAobV9jb250ZXh0LT5pczJkKCkpCisgICAgICAgIHJldHVybiB0cnVlOwor
I2VuZGlmCisKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgaWYgKCFtX2Nv
bnRleHQtPmlzQWNjZWxlcmF0ZWQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128522</attachid>
            <date>2012-02-23 11:55:44 -0800</date>
            <delta_ts>2012-02-23 12:15:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79317-20120223115543.patch</filename>
            <type>text/plain</type>
            <size>1235</size>
            <attacher name="Matthew Delaney">mdelaney7</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwODY1MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEyLTAyLTIzICBNYXR0aGV3
IERlbGFuZXkgIDxtZGVsYW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgRml4IGZvciBjYW52YXMg
YnJlYWthZ2UgY2F1c2VkIGJ5IHIxMDg1OTcgZnJvbSB0aGUgZm9sbG93aW5nOgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzkzMTcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BT
ISkKKworICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OnBhaW50c0ludG9DYW52YXNCdWZmZXIpOgorCiAyMDEy
LTAyLTIzICBUb20gU2VwZXogIDx0c2VwZXpAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJv
bWl1bV0gWFNTIEF1ZGl0b3IgYnlwYXNzIHZpYSBqYXZhc2NyaXB0IHVybCBhbmQgY29udHJvbCBj
aGFyYWN0ZXJzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNw
cAkocmV2aXNpb24gMTA4NjQ5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3Myw2ICsyNzMsMTAgQEAgdm9pZCBIVE1MQ2Fu
dmFzRWxlbWVudDo6cmVzZXQoKQogYm9vbCBIVE1MQ2FudmFzRWxlbWVudDo6cGFpbnRzSW50b0Nh
bnZhc0J1ZmZlcigpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1fY29udGV4dCk7CisjaWYgVVNFKElP
U1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKKyAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgor
CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIGlmICghbV9jb250ZXh0LT5p
c0FjY2VsZXJhdGVkKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwo=
</data>
<flag name="review"
          id="130932"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>